glcore/
glcore.rs

1
2#![allow(dead_code)]
3#![allow(non_snake_case)]
4#![allow(non_camel_case_types)]
5#![allow(non_upper_case_globals)]
6#![allow(unpredictable_function_pointer_comparisons)]
7#![allow(clippy::too_many_arguments)]
8#![allow(clippy::upper_case_acronyms)]
9#![allow(clippy::missing_transmute_annotations)]
10use std::{
11	mem::transmute,
12	ffi::{c_void, CStr},
13	fmt::{self, Debug, Formatter},
14	ptr::null,
15};
16
17#[cfg(feature = "catch_nullptr")]
18use std::panic::catch_unwind;
19
20/// The OpenGL error type
21#[derive(Debug, Clone, Copy)]
22pub enum GLCoreError {
23	NullFunctionPointer(&'static str),
24	InvalidEnum(&'static str),
25	InvalidValue(&'static str),
26	InvalidOperation(&'static str),
27	InvalidFramebufferOperation(&'static str),
28	OutOfMemory(&'static str),
29	StackUnderflow(&'static str),
30	StackOverflow(&'static str),
31	UnknownError((GLenum, &'static str)),
32}
33
34/// The result returns from this crate. It's the alias of `Result<T, GLCoreError>`
35type Result<T> = std::result::Result<T, GLCoreError>;
36
37/// Convert the constants returns from `glGetError()` to `Result<T>`
38pub fn to_result<T>(funcname: &'static str, ret: T, gl_error: GLenum) -> Result<T> {
39	match gl_error {
40		GL_NO_ERROR => Ok(ret),
41		GL_INVALID_ENUM => Err(GLCoreError::InvalidEnum(funcname)),
42		GL_INVALID_VALUE => Err(GLCoreError::InvalidValue(funcname)),
43		GL_INVALID_OPERATION => Err(GLCoreError::InvalidOperation(funcname)),
44		GL_INVALID_FRAMEBUFFER_OPERATION => Err(GLCoreError::InvalidFramebufferOperation(funcname)),
45		GL_OUT_OF_MEMORY => Err(GLCoreError::OutOfMemory(funcname)),
46		GL_STACK_UNDERFLOW => Err(GLCoreError::StackUnderflow(funcname)),
47		GL_STACK_OVERFLOW => Err(GLCoreError::StackOverflow(funcname)),
48		_ => Err(GLCoreError::UnknownError((gl_error, funcname))),
49	}
50}
51
52/// Translate the returned `Result<T>` from `std::panic::catch_unwind()` to our `Result<T>`
53pub fn process_catch<T>(funcname: &'static str, ret: std::thread::Result<T>) -> Result<T> {
54	match ret {
55		Ok(ret) => Ok(ret),
56		Err(_) => {
57			Err(GLCoreError::NullFunctionPointer(funcname))
58		}
59	}
60}
61
62/// Alias to `f32`
63pub type khronos_float_t = f32;
64
65/// Alias to `usize`
66pub type khronos_ssize_t = usize;
67
68/// Alias to `usize`
69pub type khronos_intptr_t = usize;
70
71/// Alias to `i16`
72pub type khronos_int16_t = i16;
73
74/// Alias to `i8`
75pub type khronos_int8_t = i8;
76
77/// Alias to `u8`
78pub type khronos_uint8_t = u8;
79
80/// Alias to `i32`
81pub type khronos_int32_t = i32;
82
83/// Alias to `u16`
84pub type khronos_uint16_t = u16;
85
86/// Alias to `i64`
87pub type khronos_int64_t = i64;
88
89/// Alias to `u64`
90pub type khronos_uint64_t = u64;
91/// The prototype to the OpenGL callback function `GLDEBUGPROC`
92pub type GLDEBUGPROC = extern "system" fn(GLenum, GLenum, GLuint, GLenum, GLsizei, *const GLchar, *const c_void);
93/// Alias to `c_void`
94pub type GLvoid = c_void;
95
96/// Alias to `u32`
97pub type GLenum = u32;
98
99/// Alias to `u32`
100pub type GLbitfield = u32;
101
102/// Alias to `u32`
103pub type GLuint = u32;
104
105/// Alias to `f32`
106pub type GLfloat = f32;
107
108/// Alias to `i32`
109pub type GLint = i32;
110
111/// Alias to `i32`
112pub type GLsizei = i32;
113
114/// Alias to `f64`
115pub type GLdouble = f64;
116
117/// Alias to `u8`
118pub type GLboolean = u8;
119
120/// Alias to `u8`
121pub type GLubyte = u8;
122
123/// Alias to `i16`
124pub type GLshort = i16;
125
126/// Alias to `i8`
127pub type GLbyte = i8;
128
129/// Alias to `u16`
130pub type GLushort = u16;
131
132/// The prototype to the OpenGL function `CullFace`
133type PFNGLCULLFACEPROC = extern "system" fn(GLenum);
134
135/// The prototype to the OpenGL function `FrontFace`
136type PFNGLFRONTFACEPROC = extern "system" fn(GLenum);
137
138/// The prototype to the OpenGL function `Hint`
139type PFNGLHINTPROC = extern "system" fn(GLenum, GLenum);
140
141/// The prototype to the OpenGL function `LineWidth`
142type PFNGLLINEWIDTHPROC = extern "system" fn(GLfloat);
143
144/// The prototype to the OpenGL function `PointSize`
145type PFNGLPOINTSIZEPROC = extern "system" fn(GLfloat);
146
147/// The prototype to the OpenGL function `PolygonMode`
148type PFNGLPOLYGONMODEPROC = extern "system" fn(GLenum, GLenum);
149
150/// The prototype to the OpenGL function `Scissor`
151type PFNGLSCISSORPROC = extern "system" fn(GLint, GLint, GLsizei, GLsizei);
152
153/// The prototype to the OpenGL function `TexParameterf`
154type PFNGLTEXPARAMETERFPROC = extern "system" fn(GLenum, GLenum, GLfloat);
155
156/// The prototype to the OpenGL function `TexParameterfv`
157type PFNGLTEXPARAMETERFVPROC = extern "system" fn(GLenum, GLenum, *const GLfloat);
158
159/// The prototype to the OpenGL function `TexParameteri`
160type PFNGLTEXPARAMETERIPROC = extern "system" fn(GLenum, GLenum, GLint);
161
162/// The prototype to the OpenGL function `TexParameteriv`
163type PFNGLTEXPARAMETERIVPROC = extern "system" fn(GLenum, GLenum, *const GLint);
164
165/// The prototype to the OpenGL function `TexImage1D`
166type PFNGLTEXIMAGE1DPROC = extern "system" fn(GLenum, GLint, GLint, GLsizei, GLint, GLenum, GLenum, *const c_void);
167
168/// The prototype to the OpenGL function `TexImage2D`
169type PFNGLTEXIMAGE2DPROC = extern "system" fn(GLenum, GLint, GLint, GLsizei, GLsizei, GLint, GLenum, GLenum, *const c_void);
170
171/// The prototype to the OpenGL function `DrawBuffer`
172type PFNGLDRAWBUFFERPROC = extern "system" fn(GLenum);
173
174/// The prototype to the OpenGL function `Clear`
175type PFNGLCLEARPROC = extern "system" fn(GLbitfield);
176
177/// The prototype to the OpenGL function `ClearColor`
178type PFNGLCLEARCOLORPROC = extern "system" fn(GLfloat, GLfloat, GLfloat, GLfloat);
179
180/// The prototype to the OpenGL function `ClearStencil`
181type PFNGLCLEARSTENCILPROC = extern "system" fn(GLint);
182
183/// The prototype to the OpenGL function `ClearDepth`
184type PFNGLCLEARDEPTHPROC = extern "system" fn(GLdouble);
185
186/// The prototype to the OpenGL function `StencilMask`
187type PFNGLSTENCILMASKPROC = extern "system" fn(GLuint);
188
189/// The prototype to the OpenGL function `ColorMask`
190type PFNGLCOLORMASKPROC = extern "system" fn(GLboolean, GLboolean, GLboolean, GLboolean);
191
192/// The prototype to the OpenGL function `DepthMask`
193type PFNGLDEPTHMASKPROC = extern "system" fn(GLboolean);
194
195/// The prototype to the OpenGL function `Disable`
196type PFNGLDISABLEPROC = extern "system" fn(GLenum);
197
198/// The prototype to the OpenGL function `Enable`
199type PFNGLENABLEPROC = extern "system" fn(GLenum);
200
201/// The prototype to the OpenGL function `Finish`
202type PFNGLFINISHPROC = extern "system" fn();
203
204/// The prototype to the OpenGL function `Flush`
205type PFNGLFLUSHPROC = extern "system" fn();
206
207/// The prototype to the OpenGL function `BlendFunc`
208type PFNGLBLENDFUNCPROC = extern "system" fn(GLenum, GLenum);
209
210/// The prototype to the OpenGL function `LogicOp`
211type PFNGLLOGICOPPROC = extern "system" fn(GLenum);
212
213/// The prototype to the OpenGL function `StencilFunc`
214type PFNGLSTENCILFUNCPROC = extern "system" fn(GLenum, GLint, GLuint);
215
216/// The prototype to the OpenGL function `StencilOp`
217type PFNGLSTENCILOPPROC = extern "system" fn(GLenum, GLenum, GLenum);
218
219/// The prototype to the OpenGL function `DepthFunc`
220type PFNGLDEPTHFUNCPROC = extern "system" fn(GLenum);
221
222/// The prototype to the OpenGL function `PixelStoref`
223type PFNGLPIXELSTOREFPROC = extern "system" fn(GLenum, GLfloat);
224
225/// The prototype to the OpenGL function `PixelStorei`
226type PFNGLPIXELSTOREIPROC = extern "system" fn(GLenum, GLint);
227
228/// The prototype to the OpenGL function `ReadBuffer`
229type PFNGLREADBUFFERPROC = extern "system" fn(GLenum);
230
231/// The prototype to the OpenGL function `ReadPixels`
232type PFNGLREADPIXELSPROC = extern "system" fn(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, *mut c_void);
233
234/// The prototype to the OpenGL function `GetBooleanv`
235type PFNGLGETBOOLEANVPROC = extern "system" fn(GLenum, *mut GLboolean);
236
237/// The prototype to the OpenGL function `GetDoublev`
238type PFNGLGETDOUBLEVPROC = extern "system" fn(GLenum, *mut GLdouble);
239
240/// The prototype to the OpenGL function `GetError`
241type PFNGLGETERRORPROC = extern "system" fn() -> GLenum;
242
243/// The prototype to the OpenGL function `GetFloatv`
244type PFNGLGETFLOATVPROC = extern "system" fn(GLenum, *mut GLfloat);
245
246/// The prototype to the OpenGL function `GetIntegerv`
247type PFNGLGETINTEGERVPROC = extern "system" fn(GLenum, *mut GLint);
248
249/// The prototype to the OpenGL function `GetString`
250type PFNGLGETSTRINGPROC = extern "system" fn(GLenum) -> *const GLubyte;
251
252/// The prototype to the OpenGL function `GetTexImage`
253type PFNGLGETTEXIMAGEPROC = extern "system" fn(GLenum, GLint, GLenum, GLenum, *mut c_void);
254
255/// The prototype to the OpenGL function `GetTexParameterfv`
256type PFNGLGETTEXPARAMETERFVPROC = extern "system" fn(GLenum, GLenum, *mut GLfloat);
257
258/// The prototype to the OpenGL function `GetTexParameteriv`
259type PFNGLGETTEXPARAMETERIVPROC = extern "system" fn(GLenum, GLenum, *mut GLint);
260
261/// The prototype to the OpenGL function `GetTexLevelParameterfv`
262type PFNGLGETTEXLEVELPARAMETERFVPROC = extern "system" fn(GLenum, GLint, GLenum, *mut GLfloat);
263
264/// The prototype to the OpenGL function `GetTexLevelParameteriv`
265type PFNGLGETTEXLEVELPARAMETERIVPROC = extern "system" fn(GLenum, GLint, GLenum, *mut GLint);
266
267/// The prototype to the OpenGL function `IsEnabled`
268type PFNGLISENABLEDPROC = extern "system" fn(GLenum) -> GLboolean;
269
270/// The prototype to the OpenGL function `DepthRange`
271type PFNGLDEPTHRANGEPROC = extern "system" fn(GLdouble, GLdouble);
272
273/// The prototype to the OpenGL function `Viewport`
274type PFNGLVIEWPORTPROC = extern "system" fn(GLint, GLint, GLsizei, GLsizei);
275
276/// The dummy function of `CullFace()`
277extern "system" fn dummy_pfnglcullfaceproc (_: GLenum) {
278	panic!("OpenGL function pointer `glCullFace()` is null.")
279}
280
281/// The dummy function of `FrontFace()`
282extern "system" fn dummy_pfnglfrontfaceproc (_: GLenum) {
283	panic!("OpenGL function pointer `glFrontFace()` is null.")
284}
285
286/// The dummy function of `Hint()`
287extern "system" fn dummy_pfnglhintproc (_: GLenum, _: GLenum) {
288	panic!("OpenGL function pointer `glHint()` is null.")
289}
290
291/// The dummy function of `LineWidth()`
292extern "system" fn dummy_pfngllinewidthproc (_: GLfloat) {
293	panic!("OpenGL function pointer `glLineWidth()` is null.")
294}
295
296/// The dummy function of `PointSize()`
297extern "system" fn dummy_pfnglpointsizeproc (_: GLfloat) {
298	panic!("OpenGL function pointer `glPointSize()` is null.")
299}
300
301/// The dummy function of `PolygonMode()`
302extern "system" fn dummy_pfnglpolygonmodeproc (_: GLenum, _: GLenum) {
303	panic!("OpenGL function pointer `glPolygonMode()` is null.")
304}
305
306/// The dummy function of `Scissor()`
307extern "system" fn dummy_pfnglscissorproc (_: GLint, _: GLint, _: GLsizei, _: GLsizei) {
308	panic!("OpenGL function pointer `glScissor()` is null.")
309}
310
311/// The dummy function of `TexParameterf()`
312extern "system" fn dummy_pfngltexparameterfproc (_: GLenum, _: GLenum, _: GLfloat) {
313	panic!("OpenGL function pointer `glTexParameterf()` is null.")
314}
315
316/// The dummy function of `TexParameterfv()`
317extern "system" fn dummy_pfngltexparameterfvproc (_: GLenum, _: GLenum, _: *const GLfloat) {
318	panic!("OpenGL function pointer `glTexParameterfv()` is null.")
319}
320
321/// The dummy function of `TexParameteri()`
322extern "system" fn dummy_pfngltexparameteriproc (_: GLenum, _: GLenum, _: GLint) {
323	panic!("OpenGL function pointer `glTexParameteri()` is null.")
324}
325
326/// The dummy function of `TexParameteriv()`
327extern "system" fn dummy_pfngltexparameterivproc (_: GLenum, _: GLenum, _: *const GLint) {
328	panic!("OpenGL function pointer `glTexParameteriv()` is null.")
329}
330
331/// The dummy function of `TexImage1D()`
332extern "system" fn dummy_pfnglteximage1dproc (_: GLenum, _: GLint, _: GLint, _: GLsizei, _: GLint, _: GLenum, _: GLenum, _: *const c_void) {
333	panic!("OpenGL function pointer `glTexImage1D()` is null.")
334}
335
336/// The dummy function of `TexImage2D()`
337extern "system" fn dummy_pfnglteximage2dproc (_: GLenum, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLint, _: GLenum, _: GLenum, _: *const c_void) {
338	panic!("OpenGL function pointer `glTexImage2D()` is null.")
339}
340
341/// The dummy function of `DrawBuffer()`
342extern "system" fn dummy_pfngldrawbufferproc (_: GLenum) {
343	panic!("OpenGL function pointer `glDrawBuffer()` is null.")
344}
345
346/// The dummy function of `Clear()`
347extern "system" fn dummy_pfnglclearproc (_: GLbitfield) {
348	panic!("OpenGL function pointer `glClear()` is null.")
349}
350
351/// The dummy function of `ClearColor()`
352extern "system" fn dummy_pfnglclearcolorproc (_: GLfloat, _: GLfloat, _: GLfloat, _: GLfloat) {
353	panic!("OpenGL function pointer `glClearColor()` is null.")
354}
355
356/// The dummy function of `ClearStencil()`
357extern "system" fn dummy_pfnglclearstencilproc (_: GLint) {
358	panic!("OpenGL function pointer `glClearStencil()` is null.")
359}
360
361/// The dummy function of `ClearDepth()`
362extern "system" fn dummy_pfnglcleardepthproc (_: GLdouble) {
363	panic!("OpenGL function pointer `glClearDepth()` is null.")
364}
365
366/// The dummy function of `StencilMask()`
367extern "system" fn dummy_pfnglstencilmaskproc (_: GLuint) {
368	panic!("OpenGL function pointer `glStencilMask()` is null.")
369}
370
371/// The dummy function of `ColorMask()`
372extern "system" fn dummy_pfnglcolormaskproc (_: GLboolean, _: GLboolean, _: GLboolean, _: GLboolean) {
373	panic!("OpenGL function pointer `glColorMask()` is null.")
374}
375
376/// The dummy function of `DepthMask()`
377extern "system" fn dummy_pfngldepthmaskproc (_: GLboolean) {
378	panic!("OpenGL function pointer `glDepthMask()` is null.")
379}
380
381/// The dummy function of `Disable()`
382extern "system" fn dummy_pfngldisableproc (_: GLenum) {
383	panic!("OpenGL function pointer `glDisable()` is null.")
384}
385
386/// The dummy function of `Enable()`
387extern "system" fn dummy_pfnglenableproc (_: GLenum) {
388	panic!("OpenGL function pointer `glEnable()` is null.")
389}
390
391/// The dummy function of `Finish()`
392extern "system" fn dummy_pfnglfinishproc () {
393	panic!("OpenGL function pointer `glFinish()` is null.")
394}
395
396/// The dummy function of `Flush()`
397extern "system" fn dummy_pfnglflushproc () {
398	panic!("OpenGL function pointer `glFlush()` is null.")
399}
400
401/// The dummy function of `BlendFunc()`
402extern "system" fn dummy_pfnglblendfuncproc (_: GLenum, _: GLenum) {
403	panic!("OpenGL function pointer `glBlendFunc()` is null.")
404}
405
406/// The dummy function of `LogicOp()`
407extern "system" fn dummy_pfngllogicopproc (_: GLenum) {
408	panic!("OpenGL function pointer `glLogicOp()` is null.")
409}
410
411/// The dummy function of `StencilFunc()`
412extern "system" fn dummy_pfnglstencilfuncproc (_: GLenum, _: GLint, _: GLuint) {
413	panic!("OpenGL function pointer `glStencilFunc()` is null.")
414}
415
416/// The dummy function of `StencilOp()`
417extern "system" fn dummy_pfnglstencilopproc (_: GLenum, _: GLenum, _: GLenum) {
418	panic!("OpenGL function pointer `glStencilOp()` is null.")
419}
420
421/// The dummy function of `DepthFunc()`
422extern "system" fn dummy_pfngldepthfuncproc (_: GLenum) {
423	panic!("OpenGL function pointer `glDepthFunc()` is null.")
424}
425
426/// The dummy function of `PixelStoref()`
427extern "system" fn dummy_pfnglpixelstorefproc (_: GLenum, _: GLfloat) {
428	panic!("OpenGL function pointer `glPixelStoref()` is null.")
429}
430
431/// The dummy function of `PixelStorei()`
432extern "system" fn dummy_pfnglpixelstoreiproc (_: GLenum, _: GLint) {
433	panic!("OpenGL function pointer `glPixelStorei()` is null.")
434}
435
436/// The dummy function of `ReadBuffer()`
437extern "system" fn dummy_pfnglreadbufferproc (_: GLenum) {
438	panic!("OpenGL function pointer `glReadBuffer()` is null.")
439}
440
441/// The dummy function of `ReadPixels()`
442extern "system" fn dummy_pfnglreadpixelsproc (_: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLenum, _: GLenum, _: *mut c_void) {
443	panic!("OpenGL function pointer `glReadPixels()` is null.")
444}
445
446/// The dummy function of `GetBooleanv()`
447extern "system" fn dummy_pfnglgetbooleanvproc (_: GLenum, _: *mut GLboolean) {
448	panic!("OpenGL function pointer `glGetBooleanv()` is null.")
449}
450
451/// The dummy function of `GetDoublev()`
452extern "system" fn dummy_pfnglgetdoublevproc (_: GLenum, _: *mut GLdouble) {
453	panic!("OpenGL function pointer `glGetDoublev()` is null.")
454}
455
456/// The dummy function of `GetError()`
457extern "system" fn dummy_pfnglgeterrorproc () -> GLenum {
458	panic!("OpenGL function pointer `glGetError()` is null.")
459}
460
461/// The dummy function of `GetFloatv()`
462extern "system" fn dummy_pfnglgetfloatvproc (_: GLenum, _: *mut GLfloat) {
463	panic!("OpenGL function pointer `glGetFloatv()` is null.")
464}
465
466/// The dummy function of `GetIntegerv()`
467extern "system" fn dummy_pfnglgetintegervproc (_: GLenum, _: *mut GLint) {
468	panic!("OpenGL function pointer `glGetIntegerv()` is null.")
469}
470
471/// The dummy function of `GetString()`
472extern "system" fn dummy_pfnglgetstringproc (_: GLenum) -> *const GLubyte {
473	panic!("OpenGL function pointer `glGetString()` is null.")
474}
475
476/// The dummy function of `GetTexImage()`
477extern "system" fn dummy_pfnglgetteximageproc (_: GLenum, _: GLint, _: GLenum, _: GLenum, _: *mut c_void) {
478	panic!("OpenGL function pointer `glGetTexImage()` is null.")
479}
480
481/// The dummy function of `GetTexParameterfv()`
482extern "system" fn dummy_pfnglgettexparameterfvproc (_: GLenum, _: GLenum, _: *mut GLfloat) {
483	panic!("OpenGL function pointer `glGetTexParameterfv()` is null.")
484}
485
486/// The dummy function of `GetTexParameteriv()`
487extern "system" fn dummy_pfnglgettexparameterivproc (_: GLenum, _: GLenum, _: *mut GLint) {
488	panic!("OpenGL function pointer `glGetTexParameteriv()` is null.")
489}
490
491/// The dummy function of `GetTexLevelParameterfv()`
492extern "system" fn dummy_pfnglgettexlevelparameterfvproc (_: GLenum, _: GLint, _: GLenum, _: *mut GLfloat) {
493	panic!("OpenGL function pointer `glGetTexLevelParameterfv()` is null.")
494}
495
496/// The dummy function of `GetTexLevelParameteriv()`
497extern "system" fn dummy_pfnglgettexlevelparameterivproc (_: GLenum, _: GLint, _: GLenum, _: *mut GLint) {
498	panic!("OpenGL function pointer `glGetTexLevelParameteriv()` is null.")
499}
500
501/// The dummy function of `IsEnabled()`
502extern "system" fn dummy_pfnglisenabledproc (_: GLenum) -> GLboolean {
503	panic!("OpenGL function pointer `glIsEnabled()` is null.")
504}
505
506/// The dummy function of `DepthRange()`
507extern "system" fn dummy_pfngldepthrangeproc (_: GLdouble, _: GLdouble) {
508	panic!("OpenGL function pointer `glDepthRange()` is null.")
509}
510
511/// The dummy function of `Viewport()`
512extern "system" fn dummy_pfnglviewportproc (_: GLint, _: GLint, _: GLsizei, _: GLsizei) {
513	panic!("OpenGL function pointer `glViewport()` is null.")
514}
515/// Constant value defined from OpenGL 1.0
516pub const GL_DEPTH_BUFFER_BIT: GLbitfield = 0x00000100;
517
518/// Constant value defined from OpenGL 1.0
519pub const GL_STENCIL_BUFFER_BIT: GLbitfield = 0x00000400;
520
521/// Constant value defined from OpenGL 1.0
522pub const GL_COLOR_BUFFER_BIT: GLbitfield = 0x00004000;
523
524/// Constant value defined from OpenGL 1.0
525pub const GL_FALSE: GLenum = 0;
526
527/// Constant value defined from OpenGL 1.0
528pub const GL_TRUE: GLenum = 1;
529
530/// Constant value defined from OpenGL 1.0
531pub const GL_POINTS: GLenum = 0x0000;
532
533/// Constant value defined from OpenGL 1.0
534pub const GL_LINES: GLenum = 0x0001;
535
536/// Constant value defined from OpenGL 1.0
537pub const GL_LINE_LOOP: GLenum = 0x0002;
538
539/// Constant value defined from OpenGL 1.0
540pub const GL_LINE_STRIP: GLenum = 0x0003;
541
542/// Constant value defined from OpenGL 1.0
543pub const GL_TRIANGLES: GLenum = 0x0004;
544
545/// Constant value defined from OpenGL 1.0
546pub const GL_TRIANGLE_STRIP: GLenum = 0x0005;
547
548/// Constant value defined from OpenGL 1.0
549pub const GL_TRIANGLE_FAN: GLenum = 0x0006;
550
551/// Constant value defined from OpenGL 1.0
552pub const GL_QUADS: GLenum = 0x0007;
553
554/// Constant value defined from OpenGL 1.0
555pub const GL_NEVER: GLenum = 0x0200;
556
557/// Constant value defined from OpenGL 1.0
558pub const GL_LESS: GLenum = 0x0201;
559
560/// Constant value defined from OpenGL 1.0
561pub const GL_EQUAL: GLenum = 0x0202;
562
563/// Constant value defined from OpenGL 1.0
564pub const GL_LEQUAL: GLenum = 0x0203;
565
566/// Constant value defined from OpenGL 1.0
567pub const GL_GREATER: GLenum = 0x0204;
568
569/// Constant value defined from OpenGL 1.0
570pub const GL_NOTEQUAL: GLenum = 0x0205;
571
572/// Constant value defined from OpenGL 1.0
573pub const GL_GEQUAL: GLenum = 0x0206;
574
575/// Constant value defined from OpenGL 1.0
576pub const GL_ALWAYS: GLenum = 0x0207;
577
578/// Constant value defined from OpenGL 1.0
579pub const GL_ZERO: GLenum = 0;
580
581/// Constant value defined from OpenGL 1.0
582pub const GL_ONE: GLenum = 1;
583
584/// Constant value defined from OpenGL 1.0
585pub const GL_SRC_COLOR: GLenum = 0x0300;
586
587/// Constant value defined from OpenGL 1.0
588pub const GL_ONE_MINUS_SRC_COLOR: GLenum = 0x0301;
589
590/// Constant value defined from OpenGL 1.0
591pub const GL_SRC_ALPHA: GLenum = 0x0302;
592
593/// Constant value defined from OpenGL 1.0
594pub const GL_ONE_MINUS_SRC_ALPHA: GLenum = 0x0303;
595
596/// Constant value defined from OpenGL 1.0
597pub const GL_DST_ALPHA: GLenum = 0x0304;
598
599/// Constant value defined from OpenGL 1.0
600pub const GL_ONE_MINUS_DST_ALPHA: GLenum = 0x0305;
601
602/// Constant value defined from OpenGL 1.0
603pub const GL_DST_COLOR: GLenum = 0x0306;
604
605/// Constant value defined from OpenGL 1.0
606pub const GL_ONE_MINUS_DST_COLOR: GLenum = 0x0307;
607
608/// Constant value defined from OpenGL 1.0
609pub const GL_SRC_ALPHA_SATURATE: GLenum = 0x0308;
610
611/// Constant value defined from OpenGL 1.0
612pub const GL_NONE: GLenum = 0;
613
614/// Constant value defined from OpenGL 1.0
615pub const GL_FRONT_LEFT: GLenum = 0x0400;
616
617/// Constant value defined from OpenGL 1.0
618pub const GL_FRONT_RIGHT: GLenum = 0x0401;
619
620/// Constant value defined from OpenGL 1.0
621pub const GL_BACK_LEFT: GLenum = 0x0402;
622
623/// Constant value defined from OpenGL 1.0
624pub const GL_BACK_RIGHT: GLenum = 0x0403;
625
626/// Constant value defined from OpenGL 1.0
627pub const GL_FRONT: GLenum = 0x0404;
628
629/// Constant value defined from OpenGL 1.0
630pub const GL_BACK: GLenum = 0x0405;
631
632/// Constant value defined from OpenGL 1.0
633pub const GL_LEFT: GLenum = 0x0406;
634
635/// Constant value defined from OpenGL 1.0
636pub const GL_RIGHT: GLenum = 0x0407;
637
638/// Constant value defined from OpenGL 1.0
639pub const GL_FRONT_AND_BACK: GLenum = 0x0408;
640
641/// Constant value defined from OpenGL 1.0
642pub const GL_NO_ERROR: GLenum = 0;
643
644/// Constant value defined from OpenGL 1.0
645pub const GL_INVALID_ENUM: GLenum = 0x0500;
646
647/// Constant value defined from OpenGL 1.0
648pub const GL_INVALID_VALUE: GLenum = 0x0501;
649
650/// Constant value defined from OpenGL 1.0
651pub const GL_INVALID_OPERATION: GLenum = 0x0502;
652
653/// Constant value defined from OpenGL 1.0
654pub const GL_OUT_OF_MEMORY: GLenum = 0x0505;
655
656/// Constant value defined from OpenGL 1.0
657pub const GL_CW: GLenum = 0x0900;
658
659/// Constant value defined from OpenGL 1.0
660pub const GL_CCW: GLenum = 0x0901;
661
662/// Constant value defined from OpenGL 1.0
663pub const GL_POINT_SIZE: GLenum = 0x0B11;
664
665/// Constant value defined from OpenGL 1.0
666pub const GL_POINT_SIZE_RANGE: GLenum = 0x0B12;
667
668/// Constant value defined from OpenGL 1.0
669pub const GL_POINT_SIZE_GRANULARITY: GLenum = 0x0B13;
670
671/// Constant value defined from OpenGL 1.0
672pub const GL_LINE_SMOOTH: GLenum = 0x0B20;
673
674/// Constant value defined from OpenGL 1.0
675pub const GL_LINE_WIDTH: GLenum = 0x0B21;
676
677/// Constant value defined from OpenGL 1.0
678pub const GL_LINE_WIDTH_RANGE: GLenum = 0x0B22;
679
680/// Constant value defined from OpenGL 1.0
681pub const GL_LINE_WIDTH_GRANULARITY: GLenum = 0x0B23;
682
683/// Constant value defined from OpenGL 1.0
684pub const GL_POLYGON_MODE: GLenum = 0x0B40;
685
686/// Constant value defined from OpenGL 1.0
687pub const GL_POLYGON_SMOOTH: GLenum = 0x0B41;
688
689/// Constant value defined from OpenGL 1.0
690pub const GL_CULL_FACE: GLenum = 0x0B44;
691
692/// Constant value defined from OpenGL 1.0
693pub const GL_CULL_FACE_MODE: GLenum = 0x0B45;
694
695/// Constant value defined from OpenGL 1.0
696pub const GL_FRONT_FACE: GLenum = 0x0B46;
697
698/// Constant value defined from OpenGL 1.0
699pub const GL_DEPTH_RANGE: GLenum = 0x0B70;
700
701/// Constant value defined from OpenGL 1.0
702pub const GL_DEPTH_TEST: GLenum = 0x0B71;
703
704/// Constant value defined from OpenGL 1.0
705pub const GL_DEPTH_WRITEMASK: GLenum = 0x0B72;
706
707/// Constant value defined from OpenGL 1.0
708pub const GL_DEPTH_CLEAR_VALUE: GLenum = 0x0B73;
709
710/// Constant value defined from OpenGL 1.0
711pub const GL_DEPTH_FUNC: GLenum = 0x0B74;
712
713/// Constant value defined from OpenGL 1.0
714pub const GL_STENCIL_TEST: GLenum = 0x0B90;
715
716/// Constant value defined from OpenGL 1.0
717pub const GL_STENCIL_CLEAR_VALUE: GLenum = 0x0B91;
718
719/// Constant value defined from OpenGL 1.0
720pub const GL_STENCIL_FUNC: GLenum = 0x0B92;
721
722/// Constant value defined from OpenGL 1.0
723pub const GL_STENCIL_VALUE_MASK: GLenum = 0x0B93;
724
725/// Constant value defined from OpenGL 1.0
726pub const GL_STENCIL_FAIL: GLenum = 0x0B94;
727
728/// Constant value defined from OpenGL 1.0
729pub const GL_STENCIL_PASS_DEPTH_FAIL: GLenum = 0x0B95;
730
731/// Constant value defined from OpenGL 1.0
732pub const GL_STENCIL_PASS_DEPTH_PASS: GLenum = 0x0B96;
733
734/// Constant value defined from OpenGL 1.0
735pub const GL_STENCIL_REF: GLenum = 0x0B97;
736
737/// Constant value defined from OpenGL 1.0
738pub const GL_STENCIL_WRITEMASK: GLenum = 0x0B98;
739
740/// Constant value defined from OpenGL 1.0
741pub const GL_VIEWPORT: GLenum = 0x0BA2;
742
743/// Constant value defined from OpenGL 1.0
744pub const GL_DITHER: GLenum = 0x0BD0;
745
746/// Constant value defined from OpenGL 1.0
747pub const GL_BLEND_DST: GLenum = 0x0BE0;
748
749/// Constant value defined from OpenGL 1.0
750pub const GL_BLEND_SRC: GLenum = 0x0BE1;
751
752/// Constant value defined from OpenGL 1.0
753pub const GL_BLEND: GLenum = 0x0BE2;
754
755/// Constant value defined from OpenGL 1.0
756pub const GL_LOGIC_OP_MODE: GLenum = 0x0BF0;
757
758/// Constant value defined from OpenGL 1.0
759pub const GL_DRAW_BUFFER: GLenum = 0x0C01;
760
761/// Constant value defined from OpenGL 1.0
762pub const GL_READ_BUFFER: GLenum = 0x0C02;
763
764/// Constant value defined from OpenGL 1.0
765pub const GL_SCISSOR_BOX: GLenum = 0x0C10;
766
767/// Constant value defined from OpenGL 1.0
768pub const GL_SCISSOR_TEST: GLenum = 0x0C11;
769
770/// Constant value defined from OpenGL 1.0
771pub const GL_COLOR_CLEAR_VALUE: GLenum = 0x0C22;
772
773/// Constant value defined from OpenGL 1.0
774pub const GL_COLOR_WRITEMASK: GLenum = 0x0C23;
775
776/// Constant value defined from OpenGL 1.0
777pub const GL_DOUBLEBUFFER: GLenum = 0x0C32;
778
779/// Constant value defined from OpenGL 1.0
780pub const GL_STEREO: GLenum = 0x0C33;
781
782/// Constant value defined from OpenGL 1.0
783pub const GL_LINE_SMOOTH_HINT: GLenum = 0x0C52;
784
785/// Constant value defined from OpenGL 1.0
786pub const GL_POLYGON_SMOOTH_HINT: GLenum = 0x0C53;
787
788/// Constant value defined from OpenGL 1.0
789pub const GL_UNPACK_SWAP_BYTES: GLenum = 0x0CF0;
790
791/// Constant value defined from OpenGL 1.0
792pub const GL_UNPACK_LSB_FIRST: GLenum = 0x0CF1;
793
794/// Constant value defined from OpenGL 1.0
795pub const GL_UNPACK_ROW_LENGTH: GLenum = 0x0CF2;
796
797/// Constant value defined from OpenGL 1.0
798pub const GL_UNPACK_SKIP_ROWS: GLenum = 0x0CF3;
799
800/// Constant value defined from OpenGL 1.0
801pub const GL_UNPACK_SKIP_PIXELS: GLenum = 0x0CF4;
802
803/// Constant value defined from OpenGL 1.0
804pub const GL_UNPACK_ALIGNMENT: GLenum = 0x0CF5;
805
806/// Constant value defined from OpenGL 1.0
807pub const GL_PACK_SWAP_BYTES: GLenum = 0x0D00;
808
809/// Constant value defined from OpenGL 1.0
810pub const GL_PACK_LSB_FIRST: GLenum = 0x0D01;
811
812/// Constant value defined from OpenGL 1.0
813pub const GL_PACK_ROW_LENGTH: GLenum = 0x0D02;
814
815/// Constant value defined from OpenGL 1.0
816pub const GL_PACK_SKIP_ROWS: GLenum = 0x0D03;
817
818/// Constant value defined from OpenGL 1.0
819pub const GL_PACK_SKIP_PIXELS: GLenum = 0x0D04;
820
821/// Constant value defined from OpenGL 1.0
822pub const GL_PACK_ALIGNMENT: GLenum = 0x0D05;
823
824/// Constant value defined from OpenGL 1.0
825pub const GL_MAX_TEXTURE_SIZE: GLenum = 0x0D33;
826
827/// Constant value defined from OpenGL 1.0
828pub const GL_MAX_VIEWPORT_DIMS: GLenum = 0x0D3A;
829
830/// Constant value defined from OpenGL 1.0
831pub const GL_SUBPIXEL_BITS: GLenum = 0x0D50;
832
833/// Constant value defined from OpenGL 1.0
834pub const GL_TEXTURE_1D: GLenum = 0x0DE0;
835
836/// Constant value defined from OpenGL 1.0
837pub const GL_TEXTURE_2D: GLenum = 0x0DE1;
838
839/// Constant value defined from OpenGL 1.0
840pub const GL_TEXTURE_WIDTH: GLenum = 0x1000;
841
842/// Constant value defined from OpenGL 1.0
843pub const GL_TEXTURE_HEIGHT: GLenum = 0x1001;
844
845/// Constant value defined from OpenGL 1.0
846pub const GL_TEXTURE_BORDER_COLOR: GLenum = 0x1004;
847
848/// Constant value defined from OpenGL 1.0
849pub const GL_DONT_CARE: GLenum = 0x1100;
850
851/// Constant value defined from OpenGL 1.0
852pub const GL_FASTEST: GLenum = 0x1101;
853
854/// Constant value defined from OpenGL 1.0
855pub const GL_NICEST: GLenum = 0x1102;
856
857/// Constant value defined from OpenGL 1.0
858pub const GL_BYTE: GLenum = 0x1400;
859
860/// Constant value defined from OpenGL 1.0
861pub const GL_UNSIGNED_BYTE: GLenum = 0x1401;
862
863/// Constant value defined from OpenGL 1.0
864pub const GL_SHORT: GLenum = 0x1402;
865
866/// Constant value defined from OpenGL 1.0
867pub const GL_UNSIGNED_SHORT: GLenum = 0x1403;
868
869/// Constant value defined from OpenGL 1.0
870pub const GL_INT: GLenum = 0x1404;
871
872/// Constant value defined from OpenGL 1.0
873pub const GL_UNSIGNED_INT: GLenum = 0x1405;
874
875/// Constant value defined from OpenGL 1.0
876pub const GL_FLOAT: GLenum = 0x1406;
877
878/// Constant value defined from OpenGL 1.0
879pub const GL_STACK_OVERFLOW: GLenum = 0x0503;
880
881/// Constant value defined from OpenGL 1.0
882pub const GL_STACK_UNDERFLOW: GLenum = 0x0504;
883
884/// Constant value defined from OpenGL 1.0
885pub const GL_CLEAR: GLenum = 0x1500;
886
887/// Constant value defined from OpenGL 1.0
888pub const GL_AND: GLenum = 0x1501;
889
890/// Constant value defined from OpenGL 1.0
891pub const GL_AND_REVERSE: GLenum = 0x1502;
892
893/// Constant value defined from OpenGL 1.0
894pub const GL_COPY: GLenum = 0x1503;
895
896/// Constant value defined from OpenGL 1.0
897pub const GL_AND_INVERTED: GLenum = 0x1504;
898
899/// Constant value defined from OpenGL 1.0
900pub const GL_NOOP: GLenum = 0x1505;
901
902/// Constant value defined from OpenGL 1.0
903pub const GL_XOR: GLenum = 0x1506;
904
905/// Constant value defined from OpenGL 1.0
906pub const GL_OR: GLenum = 0x1507;
907
908/// Constant value defined from OpenGL 1.0
909pub const GL_NOR: GLenum = 0x1508;
910
911/// Constant value defined from OpenGL 1.0
912pub const GL_EQUIV: GLenum = 0x1509;
913
914/// Constant value defined from OpenGL 1.0
915pub const GL_INVERT: GLenum = 0x150A;
916
917/// Constant value defined from OpenGL 1.0
918pub const GL_OR_REVERSE: GLenum = 0x150B;
919
920/// Constant value defined from OpenGL 1.0
921pub const GL_COPY_INVERTED: GLenum = 0x150C;
922
923/// Constant value defined from OpenGL 1.0
924pub const GL_OR_INVERTED: GLenum = 0x150D;
925
926/// Constant value defined from OpenGL 1.0
927pub const GL_NAND: GLenum = 0x150E;
928
929/// Constant value defined from OpenGL 1.0
930pub const GL_SET: GLenum = 0x150F;
931
932/// Constant value defined from OpenGL 1.0
933pub const GL_TEXTURE: GLenum = 0x1702;
934
935/// Constant value defined from OpenGL 1.0
936pub const GL_COLOR: GLenum = 0x1800;
937
938/// Constant value defined from OpenGL 1.0
939pub const GL_DEPTH: GLenum = 0x1801;
940
941/// Constant value defined from OpenGL 1.0
942pub const GL_STENCIL: GLenum = 0x1802;
943
944/// Constant value defined from OpenGL 1.0
945pub const GL_STENCIL_INDEX: GLenum = 0x1901;
946
947/// Constant value defined from OpenGL 1.0
948pub const GL_DEPTH_COMPONENT: GLenum = 0x1902;
949
950/// Constant value defined from OpenGL 1.0
951pub const GL_RED: GLenum = 0x1903;
952
953/// Constant value defined from OpenGL 1.0
954pub const GL_GREEN: GLenum = 0x1904;
955
956/// Constant value defined from OpenGL 1.0
957pub const GL_BLUE: GLenum = 0x1905;
958
959/// Constant value defined from OpenGL 1.0
960pub const GL_ALPHA: GLenum = 0x1906;
961
962/// Constant value defined from OpenGL 1.0
963pub const GL_RGB: GLenum = 0x1907;
964
965/// Constant value defined from OpenGL 1.0
966pub const GL_RGBA: GLenum = 0x1908;
967
968/// Constant value defined from OpenGL 1.0
969pub const GL_POINT: GLenum = 0x1B00;
970
971/// Constant value defined from OpenGL 1.0
972pub const GL_LINE: GLenum = 0x1B01;
973
974/// Constant value defined from OpenGL 1.0
975pub const GL_FILL: GLenum = 0x1B02;
976
977/// Constant value defined from OpenGL 1.0
978pub const GL_KEEP: GLenum = 0x1E00;
979
980/// Constant value defined from OpenGL 1.0
981pub const GL_REPLACE: GLenum = 0x1E01;
982
983/// Constant value defined from OpenGL 1.0
984pub const GL_INCR: GLenum = 0x1E02;
985
986/// Constant value defined from OpenGL 1.0
987pub const GL_DECR: GLenum = 0x1E03;
988
989/// Constant value defined from OpenGL 1.0
990pub const GL_VENDOR: GLenum = 0x1F00;
991
992/// Constant value defined from OpenGL 1.0
993pub const GL_RENDERER: GLenum = 0x1F01;
994
995/// Constant value defined from OpenGL 1.0
996pub const GL_VERSION: GLenum = 0x1F02;
997
998/// Constant value defined from OpenGL 1.0
999pub const GL_EXTENSIONS: GLenum = 0x1F03;
1000
1001/// Constant value defined from OpenGL 1.0
1002pub const GL_NEAREST: GLint = 0x2600;
1003
1004/// Constant value defined from OpenGL 1.0
1005pub const GL_LINEAR: GLint = 0x2601;
1006
1007/// Constant value defined from OpenGL 1.0
1008pub const GL_NEAREST_MIPMAP_NEAREST: GLint = 0x2700;
1009
1010/// Constant value defined from OpenGL 1.0
1011pub const GL_LINEAR_MIPMAP_NEAREST: GLint = 0x2701;
1012
1013/// Constant value defined from OpenGL 1.0
1014pub const GL_NEAREST_MIPMAP_LINEAR: GLint = 0x2702;
1015
1016/// Constant value defined from OpenGL 1.0
1017pub const GL_LINEAR_MIPMAP_LINEAR: GLint = 0x2703;
1018
1019/// Constant value defined from OpenGL 1.0
1020pub const GL_TEXTURE_MAG_FILTER: GLenum = 0x2800;
1021
1022/// Constant value defined from OpenGL 1.0
1023pub const GL_TEXTURE_MIN_FILTER: GLenum = 0x2801;
1024
1025/// Constant value defined from OpenGL 1.0
1026pub const GL_TEXTURE_WRAP_S: GLenum = 0x2802;
1027
1028/// Constant value defined from OpenGL 1.0
1029pub const GL_TEXTURE_WRAP_T: GLenum = 0x2803;
1030
1031/// Constant value defined from OpenGL 1.0
1032pub const GL_REPEAT: GLint = 0x2901;
1033
1034/// Functions from OpenGL version 1.0
1035pub trait GL_1_0 {
1036
1037	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCullFace.xhtml>
1038	fn glCullFace(&self, mode: GLenum) -> Result<()>;
1039
1040	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFrontFace.xhtml>
1041	fn glFrontFace(&self, mode: GLenum) -> Result<()>;
1042
1043	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glHint.xhtml>
1044	fn glHint(&self, target: GLenum, mode: GLenum) -> Result<()>;
1045
1046	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glLineWidth.xhtml>
1047	fn glLineWidth(&self, width: GLfloat) -> Result<()>;
1048
1049	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPointSize.xhtml>
1050	fn glPointSize(&self, size: GLfloat) -> Result<()>;
1051
1052	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPolygonMode.xhtml>
1053	fn glPolygonMode(&self, face: GLenum, mode: GLenum) -> Result<()>;
1054
1055	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glScissor.xhtml>
1056	fn glScissor(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
1057
1058	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameterf.xhtml>
1059	fn glTexParameterf(&self, target: GLenum, pname: GLenum, param: GLfloat) -> Result<()>;
1060
1061	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameterfv.xhtml>
1062	fn glTexParameterfv(&self, target: GLenum, pname: GLenum, params: *const GLfloat) -> Result<()>;
1063
1064	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameteri.xhtml>
1065	fn glTexParameteri(&self, target: GLenum, pname: GLenum, param: GLint) -> Result<()>;
1066
1067	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameteriv.xhtml>
1068	fn glTexParameteriv(&self, target: GLenum, pname: GLenum, params: *const GLint) -> Result<()>;
1069
1070	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexImage1D.xhtml>
1071	fn glTexImage1D(&self, target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, border: GLint, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
1072
1073	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexImage2D.xhtml>
1074	fn glTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
1075
1076	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawBuffer.xhtml>
1077	fn glDrawBuffer(&self, buf: GLenum) -> Result<()>;
1078
1079	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClear.xhtml>
1080	fn glClear(&self, mask: GLbitfield) -> Result<()>;
1081
1082	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearColor.xhtml>
1083	fn glClearColor(&self, red: GLfloat, green: GLfloat, blue: GLfloat, alpha: GLfloat) -> Result<()>;
1084
1085	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearStencil.xhtml>
1086	fn glClearStencil(&self, s: GLint) -> Result<()>;
1087
1088	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearDepth.xhtml>
1089	fn glClearDepth(&self, depth: GLdouble) -> Result<()>;
1090
1091	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilMask.xhtml>
1092	fn glStencilMask(&self, mask: GLuint) -> Result<()>;
1093
1094	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorMask.xhtml>
1095	fn glColorMask(&self, red: GLboolean, green: GLboolean, blue: GLboolean, alpha: GLboolean) -> Result<()>;
1096
1097	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthMask.xhtml>
1098	fn glDepthMask(&self, flag: GLboolean) -> Result<()>;
1099
1100	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDisable.xhtml>
1101	fn glDisable(&self, cap: GLenum) -> Result<()>;
1102
1103	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEnable.xhtml>
1104	fn glEnable(&self, cap: GLenum) -> Result<()>;
1105
1106	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFinish.xhtml>
1107	fn glFinish(&self) -> Result<()>;
1108
1109	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFlush.xhtml>
1110	fn glFlush(&self) -> Result<()>;
1111
1112	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendFunc.xhtml>
1113	fn glBlendFunc(&self, sfactor: GLenum, dfactor: GLenum) -> Result<()>;
1114
1115	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glLogicOp.xhtml>
1116	fn glLogicOp(&self, opcode: GLenum) -> Result<()>;
1117
1118	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilFunc.xhtml>
1119	fn glStencilFunc(&self, func: GLenum, ref_: GLint, mask: GLuint) -> Result<()>;
1120
1121	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilOp.xhtml>
1122	fn glStencilOp(&self, fail: GLenum, zfail: GLenum, zpass: GLenum) -> Result<()>;
1123
1124	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthFunc.xhtml>
1125	fn glDepthFunc(&self, func: GLenum) -> Result<()>;
1126
1127	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPixelStoref.xhtml>
1128	fn glPixelStoref(&self, pname: GLenum, param: GLfloat) -> Result<()>;
1129
1130	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPixelStorei.xhtml>
1131	fn glPixelStorei(&self, pname: GLenum, param: GLint) -> Result<()>;
1132
1133	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glReadBuffer.xhtml>
1134	fn glReadBuffer(&self, src: GLenum) -> Result<()>;
1135
1136	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glReadPixels.xhtml>
1137	fn glReadPixels(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, pixels: *mut c_void) -> Result<()>;
1138
1139	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBooleanv.xhtml>
1140	fn glGetBooleanv(&self, pname: GLenum, data: *mut GLboolean) -> Result<()>;
1141
1142	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetDoublev.xhtml>
1143	fn glGetDoublev(&self, pname: GLenum, data: *mut GLdouble) -> Result<()>;
1144
1145	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
1146	fn glGetError(&self) -> GLenum;
1147
1148	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFloatv.xhtml>
1149	fn glGetFloatv(&self, pname: GLenum, data: *mut GLfloat) -> Result<()>;
1150
1151	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetIntegerv.xhtml>
1152	fn glGetIntegerv(&self, pname: GLenum, data: *mut GLint) -> Result<()>;
1153
1154	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetString.xhtml>
1155	fn glGetString(&self, name: GLenum) -> Result<&'static str>;
1156
1157	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexImage.xhtml>
1158	fn glGetTexImage(&self, target: GLenum, level: GLint, format: GLenum, type_: GLenum, pixels: *mut c_void) -> Result<()>;
1159
1160	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexParameterfv.xhtml>
1161	fn glGetTexParameterfv(&self, target: GLenum, pname: GLenum, params: *mut GLfloat) -> Result<()>;
1162
1163	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexParameteriv.xhtml>
1164	fn glGetTexParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
1165
1166	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexLevelParameterfv.xhtml>
1167	fn glGetTexLevelParameterfv(&self, target: GLenum, level: GLint, pname: GLenum, params: *mut GLfloat) -> Result<()>;
1168
1169	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexLevelParameteriv.xhtml>
1170	fn glGetTexLevelParameteriv(&self, target: GLenum, level: GLint, pname: GLenum, params: *mut GLint) -> Result<()>;
1171
1172	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsEnabled.xhtml>
1173	fn glIsEnabled(&self, cap: GLenum) -> Result<GLboolean>;
1174
1175	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthRange.xhtml>
1176	fn glDepthRange(&self, n: GLdouble, f: GLdouble) -> Result<()>;
1177
1178	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glViewport.xhtml>
1179	fn glViewport(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
1180	/// Get the OpenGL backend version (string_version, major, minor, release)
1181	fn get_version(&self) -> (&'static str, u32, u32, u32);
1182	/// Get the OpenGL vendor string
1183	fn get_vendor(&self) -> &'static str;
1184	/// Get the OpenGL renderer string
1185	fn get_renderer(&self) -> &'static str;
1186	/// Get the OpenGL version string
1187	fn get_versionstr(&self) -> &'static str;
1188}
1189/// Functions from OpenGL version 1.0
1190#[derive(Clone, Copy, PartialEq, Eq, Hash)]
1191pub struct Version10 {
1192	spec: &'static str,
1193	major_version: u32,
1194	minor_version: u32,
1195	release_version: u32,
1196	vendor: &'static str,
1197	renderer: &'static str,
1198	version: &'static str,
1199	/// Is OpenGL version 1.0 available
1200	available: bool,
1201	/// The function pointer to `glCullFace()`
1202	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCullFace.xhtml>
1203	pub cullface: PFNGLCULLFACEPROC,
1204
1205	/// The function pointer to `glFrontFace()`
1206	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFrontFace.xhtml>
1207	pub frontface: PFNGLFRONTFACEPROC,
1208
1209	/// The function pointer to `glHint()`
1210	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glHint.xhtml>
1211	pub hint: PFNGLHINTPROC,
1212
1213	/// The function pointer to `glLineWidth()`
1214	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glLineWidth.xhtml>
1215	pub linewidth: PFNGLLINEWIDTHPROC,
1216
1217	/// The function pointer to `glPointSize()`
1218	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPointSize.xhtml>
1219	pub pointsize: PFNGLPOINTSIZEPROC,
1220
1221	/// The function pointer to `glPolygonMode()`
1222	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPolygonMode.xhtml>
1223	pub polygonmode: PFNGLPOLYGONMODEPROC,
1224
1225	/// The function pointer to `glScissor()`
1226	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glScissor.xhtml>
1227	pub scissor: PFNGLSCISSORPROC,
1228
1229	/// The function pointer to `glTexParameterf()`
1230	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameterf.xhtml>
1231	pub texparameterf: PFNGLTEXPARAMETERFPROC,
1232
1233	/// The function pointer to `glTexParameterfv()`
1234	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameterfv.xhtml>
1235	pub texparameterfv: PFNGLTEXPARAMETERFVPROC,
1236
1237	/// The function pointer to `glTexParameteri()`
1238	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameteri.xhtml>
1239	pub texparameteri: PFNGLTEXPARAMETERIPROC,
1240
1241	/// The function pointer to `glTexParameteriv()`
1242	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameteriv.xhtml>
1243	pub texparameteriv: PFNGLTEXPARAMETERIVPROC,
1244
1245	/// The function pointer to `glTexImage1D()`
1246	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexImage1D.xhtml>
1247	pub teximage1d: PFNGLTEXIMAGE1DPROC,
1248
1249	/// The function pointer to `glTexImage2D()`
1250	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexImage2D.xhtml>
1251	pub teximage2d: PFNGLTEXIMAGE2DPROC,
1252
1253	/// The function pointer to `glDrawBuffer()`
1254	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawBuffer.xhtml>
1255	pub drawbuffer: PFNGLDRAWBUFFERPROC,
1256
1257	/// The function pointer to `glClear()`
1258	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClear.xhtml>
1259	pub clear: PFNGLCLEARPROC,
1260
1261	/// The function pointer to `glClearColor()`
1262	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearColor.xhtml>
1263	pub clearcolor: PFNGLCLEARCOLORPROC,
1264
1265	/// The function pointer to `glClearStencil()`
1266	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearStencil.xhtml>
1267	pub clearstencil: PFNGLCLEARSTENCILPROC,
1268
1269	/// The function pointer to `glClearDepth()`
1270	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearDepth.xhtml>
1271	pub cleardepth: PFNGLCLEARDEPTHPROC,
1272
1273	/// The function pointer to `glStencilMask()`
1274	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilMask.xhtml>
1275	pub stencilmask: PFNGLSTENCILMASKPROC,
1276
1277	/// The function pointer to `glColorMask()`
1278	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorMask.xhtml>
1279	pub colormask: PFNGLCOLORMASKPROC,
1280
1281	/// The function pointer to `glDepthMask()`
1282	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthMask.xhtml>
1283	pub depthmask: PFNGLDEPTHMASKPROC,
1284
1285	/// The function pointer to `glDisable()`
1286	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDisable.xhtml>
1287	pub disable: PFNGLDISABLEPROC,
1288
1289	/// The function pointer to `glEnable()`
1290	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEnable.xhtml>
1291	pub enable: PFNGLENABLEPROC,
1292
1293	/// The function pointer to `glFinish()`
1294	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFinish.xhtml>
1295	pub finish: PFNGLFINISHPROC,
1296
1297	/// The function pointer to `glFlush()`
1298	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFlush.xhtml>
1299	pub flush: PFNGLFLUSHPROC,
1300
1301	/// The function pointer to `glBlendFunc()`
1302	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendFunc.xhtml>
1303	pub blendfunc: PFNGLBLENDFUNCPROC,
1304
1305	/// The function pointer to `glLogicOp()`
1306	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glLogicOp.xhtml>
1307	pub logicop: PFNGLLOGICOPPROC,
1308
1309	/// The function pointer to `glStencilFunc()`
1310	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilFunc.xhtml>
1311	pub stencilfunc: PFNGLSTENCILFUNCPROC,
1312
1313	/// The function pointer to `glStencilOp()`
1314	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilOp.xhtml>
1315	pub stencilop: PFNGLSTENCILOPPROC,
1316
1317	/// The function pointer to `glDepthFunc()`
1318	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthFunc.xhtml>
1319	pub depthfunc: PFNGLDEPTHFUNCPROC,
1320
1321	/// The function pointer to `glPixelStoref()`
1322	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPixelStoref.xhtml>
1323	pub pixelstoref: PFNGLPIXELSTOREFPROC,
1324
1325	/// The function pointer to `glPixelStorei()`
1326	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPixelStorei.xhtml>
1327	pub pixelstorei: PFNGLPIXELSTOREIPROC,
1328
1329	/// The function pointer to `glReadBuffer()`
1330	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glReadBuffer.xhtml>
1331	pub readbuffer: PFNGLREADBUFFERPROC,
1332
1333	/// The function pointer to `glReadPixels()`
1334	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glReadPixels.xhtml>
1335	pub readpixels: PFNGLREADPIXELSPROC,
1336
1337	/// The function pointer to `glGetBooleanv()`
1338	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBooleanv.xhtml>
1339	pub getbooleanv: PFNGLGETBOOLEANVPROC,
1340
1341	/// The function pointer to `glGetDoublev()`
1342	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetDoublev.xhtml>
1343	pub getdoublev: PFNGLGETDOUBLEVPROC,
1344
1345	/// The function pointer to `glGetError()`
1346	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
1347	pub geterror: PFNGLGETERRORPROC,
1348
1349	/// The function pointer to `glGetFloatv()`
1350	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFloatv.xhtml>
1351	pub getfloatv: PFNGLGETFLOATVPROC,
1352
1353	/// The function pointer to `glGetIntegerv()`
1354	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetIntegerv.xhtml>
1355	pub getintegerv: PFNGLGETINTEGERVPROC,
1356
1357	/// The function pointer to `glGetString()`
1358	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetString.xhtml>
1359	pub getstring: PFNGLGETSTRINGPROC,
1360
1361	/// The function pointer to `glGetTexImage()`
1362	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexImage.xhtml>
1363	pub getteximage: PFNGLGETTEXIMAGEPROC,
1364
1365	/// The function pointer to `glGetTexParameterfv()`
1366	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexParameterfv.xhtml>
1367	pub gettexparameterfv: PFNGLGETTEXPARAMETERFVPROC,
1368
1369	/// The function pointer to `glGetTexParameteriv()`
1370	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexParameteriv.xhtml>
1371	pub gettexparameteriv: PFNGLGETTEXPARAMETERIVPROC,
1372
1373	/// The function pointer to `glGetTexLevelParameterfv()`
1374	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexLevelParameterfv.xhtml>
1375	pub gettexlevelparameterfv: PFNGLGETTEXLEVELPARAMETERFVPROC,
1376
1377	/// The function pointer to `glGetTexLevelParameteriv()`
1378	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexLevelParameteriv.xhtml>
1379	pub gettexlevelparameteriv: PFNGLGETTEXLEVELPARAMETERIVPROC,
1380
1381	/// The function pointer to `glIsEnabled()`
1382	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsEnabled.xhtml>
1383	pub isenabled: PFNGLISENABLEDPROC,
1384
1385	/// The function pointer to `glDepthRange()`
1386	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthRange.xhtml>
1387	pub depthrange: PFNGLDEPTHRANGEPROC,
1388
1389	/// The function pointer to `glViewport()`
1390	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glViewport.xhtml>
1391	pub viewport: PFNGLVIEWPORTPROC,
1392}
1393
1394impl GL_1_0 for Version10 {
1395	#[inline(always)]
1396	fn glCullFace(&self, mode: GLenum) -> Result<()> {
1397		#[cfg(feature = "catch_nullptr")]
1398		let ret = process_catch("glCullFace", catch_unwind(||(self.cullface)(mode)));
1399		#[cfg(not(feature = "catch_nullptr"))]
1400		let ret = {(self.cullface)(mode); Ok(())};
1401		#[cfg(feature = "diagnose")]
1402		if let Ok(ret) = ret {
1403			return to_result("glCullFace", ret, self.glGetError());
1404		} else {
1405			return ret
1406		}
1407		#[cfg(not(feature = "diagnose"))]
1408		return ret;
1409	}
1410	#[inline(always)]
1411	fn glFrontFace(&self, mode: GLenum) -> Result<()> {
1412		#[cfg(feature = "catch_nullptr")]
1413		let ret = process_catch("glFrontFace", catch_unwind(||(self.frontface)(mode)));
1414		#[cfg(not(feature = "catch_nullptr"))]
1415		let ret = {(self.frontface)(mode); Ok(())};
1416		#[cfg(feature = "diagnose")]
1417		if let Ok(ret) = ret {
1418			return to_result("glFrontFace", ret, self.glGetError());
1419		} else {
1420			return ret
1421		}
1422		#[cfg(not(feature = "diagnose"))]
1423		return ret;
1424	}
1425	#[inline(always)]
1426	fn glHint(&self, target: GLenum, mode: GLenum) -> Result<()> {
1427		#[cfg(feature = "catch_nullptr")]
1428		let ret = process_catch("glHint", catch_unwind(||(self.hint)(target, mode)));
1429		#[cfg(not(feature = "catch_nullptr"))]
1430		let ret = {(self.hint)(target, mode); Ok(())};
1431		#[cfg(feature = "diagnose")]
1432		if let Ok(ret) = ret {
1433			return to_result("glHint", ret, self.glGetError());
1434		} else {
1435			return ret
1436		}
1437		#[cfg(not(feature = "diagnose"))]
1438		return ret;
1439	}
1440	#[inline(always)]
1441	fn glLineWidth(&self, width: GLfloat) -> Result<()> {
1442		#[cfg(feature = "catch_nullptr")]
1443		let ret = process_catch("glLineWidth", catch_unwind(||(self.linewidth)(width)));
1444		#[cfg(not(feature = "catch_nullptr"))]
1445		let ret = {(self.linewidth)(width); Ok(())};
1446		#[cfg(feature = "diagnose")]
1447		if let Ok(ret) = ret {
1448			return to_result("glLineWidth", ret, self.glGetError());
1449		} else {
1450			return ret
1451		}
1452		#[cfg(not(feature = "diagnose"))]
1453		return ret;
1454	}
1455	#[inline(always)]
1456	fn glPointSize(&self, size: GLfloat) -> Result<()> {
1457		#[cfg(feature = "catch_nullptr")]
1458		let ret = process_catch("glPointSize", catch_unwind(||(self.pointsize)(size)));
1459		#[cfg(not(feature = "catch_nullptr"))]
1460		let ret = {(self.pointsize)(size); Ok(())};
1461		#[cfg(feature = "diagnose")]
1462		if let Ok(ret) = ret {
1463			return to_result("glPointSize", ret, self.glGetError());
1464		} else {
1465			return ret
1466		}
1467		#[cfg(not(feature = "diagnose"))]
1468		return ret;
1469	}
1470	#[inline(always)]
1471	fn glPolygonMode(&self, face: GLenum, mode: GLenum) -> Result<()> {
1472		#[cfg(feature = "catch_nullptr")]
1473		let ret = process_catch("glPolygonMode", catch_unwind(||(self.polygonmode)(face, mode)));
1474		#[cfg(not(feature = "catch_nullptr"))]
1475		let ret = {(self.polygonmode)(face, mode); Ok(())};
1476		#[cfg(feature = "diagnose")]
1477		if let Ok(ret) = ret {
1478			return to_result("glPolygonMode", ret, self.glGetError());
1479		} else {
1480			return ret
1481		}
1482		#[cfg(not(feature = "diagnose"))]
1483		return ret;
1484	}
1485	#[inline(always)]
1486	fn glScissor(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
1487		#[cfg(feature = "catch_nullptr")]
1488		let ret = process_catch("glScissor", catch_unwind(||(self.scissor)(x, y, width, height)));
1489		#[cfg(not(feature = "catch_nullptr"))]
1490		let ret = {(self.scissor)(x, y, width, height); Ok(())};
1491		#[cfg(feature = "diagnose")]
1492		if let Ok(ret) = ret {
1493			return to_result("glScissor", ret, self.glGetError());
1494		} else {
1495			return ret
1496		}
1497		#[cfg(not(feature = "diagnose"))]
1498		return ret;
1499	}
1500	#[inline(always)]
1501	fn glTexParameterf(&self, target: GLenum, pname: GLenum, param: GLfloat) -> Result<()> {
1502		#[cfg(feature = "catch_nullptr")]
1503		let ret = process_catch("glTexParameterf", catch_unwind(||(self.texparameterf)(target, pname, param)));
1504		#[cfg(not(feature = "catch_nullptr"))]
1505		let ret = {(self.texparameterf)(target, pname, param); Ok(())};
1506		#[cfg(feature = "diagnose")]
1507		if let Ok(ret) = ret {
1508			return to_result("glTexParameterf", ret, self.glGetError());
1509		} else {
1510			return ret
1511		}
1512		#[cfg(not(feature = "diagnose"))]
1513		return ret;
1514	}
1515	#[inline(always)]
1516	fn glTexParameterfv(&self, target: GLenum, pname: GLenum, params: *const GLfloat) -> Result<()> {
1517		#[cfg(feature = "catch_nullptr")]
1518		let ret = process_catch("glTexParameterfv", catch_unwind(||(self.texparameterfv)(target, pname, params)));
1519		#[cfg(not(feature = "catch_nullptr"))]
1520		let ret = {(self.texparameterfv)(target, pname, params); Ok(())};
1521		#[cfg(feature = "diagnose")]
1522		if let Ok(ret) = ret {
1523			return to_result("glTexParameterfv", ret, self.glGetError());
1524		} else {
1525			return ret
1526		}
1527		#[cfg(not(feature = "diagnose"))]
1528		return ret;
1529	}
1530	#[inline(always)]
1531	fn glTexParameteri(&self, target: GLenum, pname: GLenum, param: GLint) -> Result<()> {
1532		#[cfg(feature = "catch_nullptr")]
1533		let ret = process_catch("glTexParameteri", catch_unwind(||(self.texparameteri)(target, pname, param)));
1534		#[cfg(not(feature = "catch_nullptr"))]
1535		let ret = {(self.texparameteri)(target, pname, param); Ok(())};
1536		#[cfg(feature = "diagnose")]
1537		if let Ok(ret) = ret {
1538			return to_result("glTexParameteri", ret, self.glGetError());
1539		} else {
1540			return ret
1541		}
1542		#[cfg(not(feature = "diagnose"))]
1543		return ret;
1544	}
1545	#[inline(always)]
1546	fn glTexParameteriv(&self, target: GLenum, pname: GLenum, params: *const GLint) -> Result<()> {
1547		#[cfg(feature = "catch_nullptr")]
1548		let ret = process_catch("glTexParameteriv", catch_unwind(||(self.texparameteriv)(target, pname, params)));
1549		#[cfg(not(feature = "catch_nullptr"))]
1550		let ret = {(self.texparameteriv)(target, pname, params); Ok(())};
1551		#[cfg(feature = "diagnose")]
1552		if let Ok(ret) = ret {
1553			return to_result("glTexParameteriv", ret, self.glGetError());
1554		} else {
1555			return ret
1556		}
1557		#[cfg(not(feature = "diagnose"))]
1558		return ret;
1559	}
1560	#[inline(always)]
1561	fn glTexImage1D(&self, target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, border: GLint, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
1562		#[cfg(feature = "catch_nullptr")]
1563		let ret = process_catch("glTexImage1D", catch_unwind(||(self.teximage1d)(target, level, internalformat, width, border, format, type_, pixels)));
1564		#[cfg(not(feature = "catch_nullptr"))]
1565		let ret = {(self.teximage1d)(target, level, internalformat, width, border, format, type_, pixels); Ok(())};
1566		#[cfg(feature = "diagnose")]
1567		if let Ok(ret) = ret {
1568			return to_result("glTexImage1D", ret, self.glGetError());
1569		} else {
1570			return ret
1571		}
1572		#[cfg(not(feature = "diagnose"))]
1573		return ret;
1574	}
1575	#[inline(always)]
1576	fn glTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
1577		#[cfg(feature = "catch_nullptr")]
1578		let ret = process_catch("glTexImage2D", catch_unwind(||(self.teximage2d)(target, level, internalformat, width, height, border, format, type_, pixels)));
1579		#[cfg(not(feature = "catch_nullptr"))]
1580		let ret = {(self.teximage2d)(target, level, internalformat, width, height, border, format, type_, pixels); Ok(())};
1581		#[cfg(feature = "diagnose")]
1582		if let Ok(ret) = ret {
1583			return to_result("glTexImage2D", ret, self.glGetError());
1584		} else {
1585			return ret
1586		}
1587		#[cfg(not(feature = "diagnose"))]
1588		return ret;
1589	}
1590	#[inline(always)]
1591	fn glDrawBuffer(&self, buf: GLenum) -> Result<()> {
1592		#[cfg(feature = "catch_nullptr")]
1593		let ret = process_catch("glDrawBuffer", catch_unwind(||(self.drawbuffer)(buf)));
1594		#[cfg(not(feature = "catch_nullptr"))]
1595		let ret = {(self.drawbuffer)(buf); Ok(())};
1596		#[cfg(feature = "diagnose")]
1597		if let Ok(ret) = ret {
1598			return to_result("glDrawBuffer", ret, self.glGetError());
1599		} else {
1600			return ret
1601		}
1602		#[cfg(not(feature = "diagnose"))]
1603		return ret;
1604	}
1605	#[inline(always)]
1606	fn glClear(&self, mask: GLbitfield) -> Result<()> {
1607		#[cfg(feature = "catch_nullptr")]
1608		let ret = process_catch("glClear", catch_unwind(||(self.clear)(mask)));
1609		#[cfg(not(feature = "catch_nullptr"))]
1610		let ret = {(self.clear)(mask); Ok(())};
1611		#[cfg(feature = "diagnose")]
1612		if let Ok(ret) = ret {
1613			return to_result("glClear", ret, self.glGetError());
1614		} else {
1615			return ret
1616		}
1617		#[cfg(not(feature = "diagnose"))]
1618		return ret;
1619	}
1620	#[inline(always)]
1621	fn glClearColor(&self, red: GLfloat, green: GLfloat, blue: GLfloat, alpha: GLfloat) -> Result<()> {
1622		#[cfg(feature = "catch_nullptr")]
1623		let ret = process_catch("glClearColor", catch_unwind(||(self.clearcolor)(red, green, blue, alpha)));
1624		#[cfg(not(feature = "catch_nullptr"))]
1625		let ret = {(self.clearcolor)(red, green, blue, alpha); Ok(())};
1626		#[cfg(feature = "diagnose")]
1627		if let Ok(ret) = ret {
1628			return to_result("glClearColor", ret, self.glGetError());
1629		} else {
1630			return ret
1631		}
1632		#[cfg(not(feature = "diagnose"))]
1633		return ret;
1634	}
1635	#[inline(always)]
1636	fn glClearStencil(&self, s: GLint) -> Result<()> {
1637		#[cfg(feature = "catch_nullptr")]
1638		let ret = process_catch("glClearStencil", catch_unwind(||(self.clearstencil)(s)));
1639		#[cfg(not(feature = "catch_nullptr"))]
1640		let ret = {(self.clearstencil)(s); Ok(())};
1641		#[cfg(feature = "diagnose")]
1642		if let Ok(ret) = ret {
1643			return to_result("glClearStencil", ret, self.glGetError());
1644		} else {
1645			return ret
1646		}
1647		#[cfg(not(feature = "diagnose"))]
1648		return ret;
1649	}
1650	#[inline(always)]
1651	fn glClearDepth(&self, depth: GLdouble) -> Result<()> {
1652		#[cfg(feature = "catch_nullptr")]
1653		let ret = process_catch("glClearDepth", catch_unwind(||(self.cleardepth)(depth)));
1654		#[cfg(not(feature = "catch_nullptr"))]
1655		let ret = {(self.cleardepth)(depth); Ok(())};
1656		#[cfg(feature = "diagnose")]
1657		if let Ok(ret) = ret {
1658			return to_result("glClearDepth", ret, self.glGetError());
1659		} else {
1660			return ret
1661		}
1662		#[cfg(not(feature = "diagnose"))]
1663		return ret;
1664	}
1665	#[inline(always)]
1666	fn glStencilMask(&self, mask: GLuint) -> Result<()> {
1667		#[cfg(feature = "catch_nullptr")]
1668		let ret = process_catch("glStencilMask", catch_unwind(||(self.stencilmask)(mask)));
1669		#[cfg(not(feature = "catch_nullptr"))]
1670		let ret = {(self.stencilmask)(mask); Ok(())};
1671		#[cfg(feature = "diagnose")]
1672		if let Ok(ret) = ret {
1673			return to_result("glStencilMask", ret, self.glGetError());
1674		} else {
1675			return ret
1676		}
1677		#[cfg(not(feature = "diagnose"))]
1678		return ret;
1679	}
1680	#[inline(always)]
1681	fn glColorMask(&self, red: GLboolean, green: GLboolean, blue: GLboolean, alpha: GLboolean) -> Result<()> {
1682		#[cfg(feature = "catch_nullptr")]
1683		let ret = process_catch("glColorMask", catch_unwind(||(self.colormask)(red, green, blue, alpha)));
1684		#[cfg(not(feature = "catch_nullptr"))]
1685		let ret = {(self.colormask)(red, green, blue, alpha); Ok(())};
1686		#[cfg(feature = "diagnose")]
1687		if let Ok(ret) = ret {
1688			return to_result("glColorMask", ret, self.glGetError());
1689		} else {
1690			return ret
1691		}
1692		#[cfg(not(feature = "diagnose"))]
1693		return ret;
1694	}
1695	#[inline(always)]
1696	fn glDepthMask(&self, flag: GLboolean) -> Result<()> {
1697		#[cfg(feature = "catch_nullptr")]
1698		let ret = process_catch("glDepthMask", catch_unwind(||(self.depthmask)(flag)));
1699		#[cfg(not(feature = "catch_nullptr"))]
1700		let ret = {(self.depthmask)(flag); Ok(())};
1701		#[cfg(feature = "diagnose")]
1702		if let Ok(ret) = ret {
1703			return to_result("glDepthMask", ret, self.glGetError());
1704		} else {
1705			return ret
1706		}
1707		#[cfg(not(feature = "diagnose"))]
1708		return ret;
1709	}
1710	#[inline(always)]
1711	fn glDisable(&self, cap: GLenum) -> Result<()> {
1712		#[cfg(feature = "catch_nullptr")]
1713		let ret = process_catch("glDisable", catch_unwind(||(self.disable)(cap)));
1714		#[cfg(not(feature = "catch_nullptr"))]
1715		let ret = {(self.disable)(cap); Ok(())};
1716		#[cfg(feature = "diagnose")]
1717		if let Ok(ret) = ret {
1718			return to_result("glDisable", ret, self.glGetError());
1719		} else {
1720			return ret
1721		}
1722		#[cfg(not(feature = "diagnose"))]
1723		return ret;
1724	}
1725	#[inline(always)]
1726	fn glEnable(&self, cap: GLenum) -> Result<()> {
1727		#[cfg(feature = "catch_nullptr")]
1728		let ret = process_catch("glEnable", catch_unwind(||(self.enable)(cap)));
1729		#[cfg(not(feature = "catch_nullptr"))]
1730		let ret = {(self.enable)(cap); Ok(())};
1731		#[cfg(feature = "diagnose")]
1732		if let Ok(ret) = ret {
1733			return to_result("glEnable", ret, self.glGetError());
1734		} else {
1735			return ret
1736		}
1737		#[cfg(not(feature = "diagnose"))]
1738		return ret;
1739	}
1740	#[inline(always)]
1741	fn glFinish(&self) -> Result<()> {
1742		#[cfg(feature = "catch_nullptr")]
1743		let ret = process_catch("glFinish", catch_unwind(||(self.finish)()));
1744		#[cfg(not(feature = "catch_nullptr"))]
1745		let ret = {(self.finish)(); Ok(())};
1746		#[cfg(feature = "diagnose")]
1747		if let Ok(ret) = ret {
1748			return to_result("glFinish", ret, self.glGetError());
1749		} else {
1750			return ret
1751		}
1752		#[cfg(not(feature = "diagnose"))]
1753		return ret;
1754	}
1755	#[inline(always)]
1756	fn glFlush(&self) -> Result<()> {
1757		#[cfg(feature = "catch_nullptr")]
1758		let ret = process_catch("glFlush", catch_unwind(||(self.flush)()));
1759		#[cfg(not(feature = "catch_nullptr"))]
1760		let ret = {(self.flush)(); Ok(())};
1761		#[cfg(feature = "diagnose")]
1762		if let Ok(ret) = ret {
1763			return to_result("glFlush", ret, self.glGetError());
1764		} else {
1765			return ret
1766		}
1767		#[cfg(not(feature = "diagnose"))]
1768		return ret;
1769	}
1770	#[inline(always)]
1771	fn glBlendFunc(&self, sfactor: GLenum, dfactor: GLenum) -> Result<()> {
1772		#[cfg(feature = "catch_nullptr")]
1773		let ret = process_catch("glBlendFunc", catch_unwind(||(self.blendfunc)(sfactor, dfactor)));
1774		#[cfg(not(feature = "catch_nullptr"))]
1775		let ret = {(self.blendfunc)(sfactor, dfactor); Ok(())};
1776		#[cfg(feature = "diagnose")]
1777		if let Ok(ret) = ret {
1778			return to_result("glBlendFunc", ret, self.glGetError());
1779		} else {
1780			return ret
1781		}
1782		#[cfg(not(feature = "diagnose"))]
1783		return ret;
1784	}
1785	#[inline(always)]
1786	fn glLogicOp(&self, opcode: GLenum) -> Result<()> {
1787		#[cfg(feature = "catch_nullptr")]
1788		let ret = process_catch("glLogicOp", catch_unwind(||(self.logicop)(opcode)));
1789		#[cfg(not(feature = "catch_nullptr"))]
1790		let ret = {(self.logicop)(opcode); Ok(())};
1791		#[cfg(feature = "diagnose")]
1792		if let Ok(ret) = ret {
1793			return to_result("glLogicOp", ret, self.glGetError());
1794		} else {
1795			return ret
1796		}
1797		#[cfg(not(feature = "diagnose"))]
1798		return ret;
1799	}
1800	#[inline(always)]
1801	fn glStencilFunc(&self, func: GLenum, ref_: GLint, mask: GLuint) -> Result<()> {
1802		#[cfg(feature = "catch_nullptr")]
1803		let ret = process_catch("glStencilFunc", catch_unwind(||(self.stencilfunc)(func, ref_, mask)));
1804		#[cfg(not(feature = "catch_nullptr"))]
1805		let ret = {(self.stencilfunc)(func, ref_, mask); Ok(())};
1806		#[cfg(feature = "diagnose")]
1807		if let Ok(ret) = ret {
1808			return to_result("glStencilFunc", ret, self.glGetError());
1809		} else {
1810			return ret
1811		}
1812		#[cfg(not(feature = "diagnose"))]
1813		return ret;
1814	}
1815	#[inline(always)]
1816	fn glStencilOp(&self, fail: GLenum, zfail: GLenum, zpass: GLenum) -> Result<()> {
1817		#[cfg(feature = "catch_nullptr")]
1818		let ret = process_catch("glStencilOp", catch_unwind(||(self.stencilop)(fail, zfail, zpass)));
1819		#[cfg(not(feature = "catch_nullptr"))]
1820		let ret = {(self.stencilop)(fail, zfail, zpass); Ok(())};
1821		#[cfg(feature = "diagnose")]
1822		if let Ok(ret) = ret {
1823			return to_result("glStencilOp", ret, self.glGetError());
1824		} else {
1825			return ret
1826		}
1827		#[cfg(not(feature = "diagnose"))]
1828		return ret;
1829	}
1830	#[inline(always)]
1831	fn glDepthFunc(&self, func: GLenum) -> Result<()> {
1832		#[cfg(feature = "catch_nullptr")]
1833		let ret = process_catch("glDepthFunc", catch_unwind(||(self.depthfunc)(func)));
1834		#[cfg(not(feature = "catch_nullptr"))]
1835		let ret = {(self.depthfunc)(func); Ok(())};
1836		#[cfg(feature = "diagnose")]
1837		if let Ok(ret) = ret {
1838			return to_result("glDepthFunc", ret, self.glGetError());
1839		} else {
1840			return ret
1841		}
1842		#[cfg(not(feature = "diagnose"))]
1843		return ret;
1844	}
1845	#[inline(always)]
1846	fn glPixelStoref(&self, pname: GLenum, param: GLfloat) -> Result<()> {
1847		#[cfg(feature = "catch_nullptr")]
1848		let ret = process_catch("glPixelStoref", catch_unwind(||(self.pixelstoref)(pname, param)));
1849		#[cfg(not(feature = "catch_nullptr"))]
1850		let ret = {(self.pixelstoref)(pname, param); Ok(())};
1851		#[cfg(feature = "diagnose")]
1852		if let Ok(ret) = ret {
1853			return to_result("glPixelStoref", ret, self.glGetError());
1854		} else {
1855			return ret
1856		}
1857		#[cfg(not(feature = "diagnose"))]
1858		return ret;
1859	}
1860	#[inline(always)]
1861	fn glPixelStorei(&self, pname: GLenum, param: GLint) -> Result<()> {
1862		#[cfg(feature = "catch_nullptr")]
1863		let ret = process_catch("glPixelStorei", catch_unwind(||(self.pixelstorei)(pname, param)));
1864		#[cfg(not(feature = "catch_nullptr"))]
1865		let ret = {(self.pixelstorei)(pname, param); Ok(())};
1866		#[cfg(feature = "diagnose")]
1867		if let Ok(ret) = ret {
1868			return to_result("glPixelStorei", ret, self.glGetError());
1869		} else {
1870			return ret
1871		}
1872		#[cfg(not(feature = "diagnose"))]
1873		return ret;
1874	}
1875	#[inline(always)]
1876	fn glReadBuffer(&self, src: GLenum) -> Result<()> {
1877		#[cfg(feature = "catch_nullptr")]
1878		let ret = process_catch("glReadBuffer", catch_unwind(||(self.readbuffer)(src)));
1879		#[cfg(not(feature = "catch_nullptr"))]
1880		let ret = {(self.readbuffer)(src); Ok(())};
1881		#[cfg(feature = "diagnose")]
1882		if let Ok(ret) = ret {
1883			return to_result("glReadBuffer", ret, self.glGetError());
1884		} else {
1885			return ret
1886		}
1887		#[cfg(not(feature = "diagnose"))]
1888		return ret;
1889	}
1890	#[inline(always)]
1891	fn glReadPixels(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, pixels: *mut c_void) -> Result<()> {
1892		#[cfg(feature = "catch_nullptr")]
1893		let ret = process_catch("glReadPixels", catch_unwind(||(self.readpixels)(x, y, width, height, format, type_, pixels)));
1894		#[cfg(not(feature = "catch_nullptr"))]
1895		let ret = {(self.readpixels)(x, y, width, height, format, type_, pixels); Ok(())};
1896		#[cfg(feature = "diagnose")]
1897		if let Ok(ret) = ret {
1898			return to_result("glReadPixels", ret, self.glGetError());
1899		} else {
1900			return ret
1901		}
1902		#[cfg(not(feature = "diagnose"))]
1903		return ret;
1904	}
1905	#[inline(always)]
1906	fn glGetBooleanv(&self, pname: GLenum, data: *mut GLboolean) -> Result<()> {
1907		#[cfg(feature = "catch_nullptr")]
1908		let ret = process_catch("glGetBooleanv", catch_unwind(||(self.getbooleanv)(pname, data)));
1909		#[cfg(not(feature = "catch_nullptr"))]
1910		let ret = {(self.getbooleanv)(pname, data); Ok(())};
1911		#[cfg(feature = "diagnose")]
1912		if let Ok(ret) = ret {
1913			return to_result("glGetBooleanv", ret, self.glGetError());
1914		} else {
1915			return ret
1916		}
1917		#[cfg(not(feature = "diagnose"))]
1918		return ret;
1919	}
1920	#[inline(always)]
1921	fn glGetDoublev(&self, pname: GLenum, data: *mut GLdouble) -> Result<()> {
1922		#[cfg(feature = "catch_nullptr")]
1923		let ret = process_catch("glGetDoublev", catch_unwind(||(self.getdoublev)(pname, data)));
1924		#[cfg(not(feature = "catch_nullptr"))]
1925		let ret = {(self.getdoublev)(pname, data); Ok(())};
1926		#[cfg(feature = "diagnose")]
1927		if let Ok(ret) = ret {
1928			return to_result("glGetDoublev", ret, self.glGetError());
1929		} else {
1930			return ret
1931		}
1932		#[cfg(not(feature = "diagnose"))]
1933		return ret;
1934	}
1935	#[inline(always)]
1936	fn glGetError(&self) -> GLenum {
1937		(self.geterror)()
1938	}
1939	#[inline(always)]
1940	fn glGetFloatv(&self, pname: GLenum, data: *mut GLfloat) -> Result<()> {
1941		#[cfg(feature = "catch_nullptr")]
1942		let ret = process_catch("glGetFloatv", catch_unwind(||(self.getfloatv)(pname, data)));
1943		#[cfg(not(feature = "catch_nullptr"))]
1944		let ret = {(self.getfloatv)(pname, data); Ok(())};
1945		#[cfg(feature = "diagnose")]
1946		if let Ok(ret) = ret {
1947			return to_result("glGetFloatv", ret, self.glGetError());
1948		} else {
1949			return ret
1950		}
1951		#[cfg(not(feature = "diagnose"))]
1952		return ret;
1953	}
1954	#[inline(always)]
1955	fn glGetIntegerv(&self, pname: GLenum, data: *mut GLint) -> Result<()> {
1956		#[cfg(feature = "catch_nullptr")]
1957		let ret = process_catch("glGetIntegerv", catch_unwind(||(self.getintegerv)(pname, data)));
1958		#[cfg(not(feature = "catch_nullptr"))]
1959		let ret = {(self.getintegerv)(pname, data); Ok(())};
1960		#[cfg(feature = "diagnose")]
1961		if let Ok(ret) = ret {
1962			return to_result("glGetIntegerv", ret, self.glGetError());
1963		} else {
1964			return ret
1965		}
1966		#[cfg(not(feature = "diagnose"))]
1967		return ret;
1968	}
1969	#[inline(always)]
1970	fn glGetString(&self, name: GLenum) -> Result<&'static str> {
1971		#[cfg(feature = "catch_nullptr")]
1972		let ret = process_catch("glGetString", catch_unwind(||unsafe{CStr::from_ptr((self.getstring)(name) as *const i8)}.to_str().unwrap()));
1973		#[cfg(not(feature = "catch_nullptr"))]
1974		let ret = Ok(unsafe{CStr::from_ptr((self.getstring)(name) as *const i8)}.to_str().unwrap());
1975		#[cfg(feature = "diagnose")]
1976		if let Ok(ret) = ret {
1977			return to_result("glGetString", ret, self.glGetError());
1978		} else {
1979			return ret
1980		}
1981		#[cfg(not(feature = "diagnose"))]
1982		return ret;
1983	}
1984	#[inline(always)]
1985	fn glGetTexImage(&self, target: GLenum, level: GLint, format: GLenum, type_: GLenum, pixels: *mut c_void) -> Result<()> {
1986		#[cfg(feature = "catch_nullptr")]
1987		let ret = process_catch("glGetTexImage", catch_unwind(||(self.getteximage)(target, level, format, type_, pixels)));
1988		#[cfg(not(feature = "catch_nullptr"))]
1989		let ret = {(self.getteximage)(target, level, format, type_, pixels); Ok(())};
1990		#[cfg(feature = "diagnose")]
1991		if let Ok(ret) = ret {
1992			return to_result("glGetTexImage", ret, self.glGetError());
1993		} else {
1994			return ret
1995		}
1996		#[cfg(not(feature = "diagnose"))]
1997		return ret;
1998	}
1999	#[inline(always)]
2000	fn glGetTexParameterfv(&self, target: GLenum, pname: GLenum, params: *mut GLfloat) -> Result<()> {
2001		#[cfg(feature = "catch_nullptr")]
2002		let ret = process_catch("glGetTexParameterfv", catch_unwind(||(self.gettexparameterfv)(target, pname, params)));
2003		#[cfg(not(feature = "catch_nullptr"))]
2004		let ret = {(self.gettexparameterfv)(target, pname, params); Ok(())};
2005		#[cfg(feature = "diagnose")]
2006		if let Ok(ret) = ret {
2007			return to_result("glGetTexParameterfv", ret, self.glGetError());
2008		} else {
2009			return ret
2010		}
2011		#[cfg(not(feature = "diagnose"))]
2012		return ret;
2013	}
2014	#[inline(always)]
2015	fn glGetTexParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
2016		#[cfg(feature = "catch_nullptr")]
2017		let ret = process_catch("glGetTexParameteriv", catch_unwind(||(self.gettexparameteriv)(target, pname, params)));
2018		#[cfg(not(feature = "catch_nullptr"))]
2019		let ret = {(self.gettexparameteriv)(target, pname, params); Ok(())};
2020		#[cfg(feature = "diagnose")]
2021		if let Ok(ret) = ret {
2022			return to_result("glGetTexParameteriv", ret, self.glGetError());
2023		} else {
2024			return ret
2025		}
2026		#[cfg(not(feature = "diagnose"))]
2027		return ret;
2028	}
2029	#[inline(always)]
2030	fn glGetTexLevelParameterfv(&self, target: GLenum, level: GLint, pname: GLenum, params: *mut GLfloat) -> Result<()> {
2031		#[cfg(feature = "catch_nullptr")]
2032		let ret = process_catch("glGetTexLevelParameterfv", catch_unwind(||(self.gettexlevelparameterfv)(target, level, pname, params)));
2033		#[cfg(not(feature = "catch_nullptr"))]
2034		let ret = {(self.gettexlevelparameterfv)(target, level, pname, params); Ok(())};
2035		#[cfg(feature = "diagnose")]
2036		if let Ok(ret) = ret {
2037			return to_result("glGetTexLevelParameterfv", ret, self.glGetError());
2038		} else {
2039			return ret
2040		}
2041		#[cfg(not(feature = "diagnose"))]
2042		return ret;
2043	}
2044	#[inline(always)]
2045	fn glGetTexLevelParameteriv(&self, target: GLenum, level: GLint, pname: GLenum, params: *mut GLint) -> Result<()> {
2046		#[cfg(feature = "catch_nullptr")]
2047		let ret = process_catch("glGetTexLevelParameteriv", catch_unwind(||(self.gettexlevelparameteriv)(target, level, pname, params)));
2048		#[cfg(not(feature = "catch_nullptr"))]
2049		let ret = {(self.gettexlevelparameteriv)(target, level, pname, params); Ok(())};
2050		#[cfg(feature = "diagnose")]
2051		if let Ok(ret) = ret {
2052			return to_result("glGetTexLevelParameteriv", ret, self.glGetError());
2053		} else {
2054			return ret
2055		}
2056		#[cfg(not(feature = "diagnose"))]
2057		return ret;
2058	}
2059	#[inline(always)]
2060	fn glIsEnabled(&self, cap: GLenum) -> Result<GLboolean> {
2061		#[cfg(feature = "catch_nullptr")]
2062		let ret = process_catch("glIsEnabled", catch_unwind(||(self.isenabled)(cap)));
2063		#[cfg(not(feature = "catch_nullptr"))]
2064		let ret = Ok((self.isenabled)(cap));
2065		#[cfg(feature = "diagnose")]
2066		if let Ok(ret) = ret {
2067			return to_result("glIsEnabled", ret, self.glGetError());
2068		} else {
2069			return ret
2070		}
2071		#[cfg(not(feature = "diagnose"))]
2072		return ret;
2073	}
2074	#[inline(always)]
2075	fn glDepthRange(&self, n: GLdouble, f: GLdouble) -> Result<()> {
2076		#[cfg(feature = "catch_nullptr")]
2077		let ret = process_catch("glDepthRange", catch_unwind(||(self.depthrange)(n, f)));
2078		#[cfg(not(feature = "catch_nullptr"))]
2079		let ret = {(self.depthrange)(n, f); Ok(())};
2080		#[cfg(feature = "diagnose")]
2081		if let Ok(ret) = ret {
2082			return to_result("glDepthRange", ret, self.glGetError());
2083		} else {
2084			return ret
2085		}
2086		#[cfg(not(feature = "diagnose"))]
2087		return ret;
2088	}
2089	#[inline(always)]
2090	fn glViewport(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
2091		#[cfg(feature = "catch_nullptr")]
2092		let ret = process_catch("glViewport", catch_unwind(||(self.viewport)(x, y, width, height)));
2093		#[cfg(not(feature = "catch_nullptr"))]
2094		let ret = {(self.viewport)(x, y, width, height); Ok(())};
2095		#[cfg(feature = "diagnose")]
2096		if let Ok(ret) = ret {
2097			return to_result("glViewport", ret, self.glGetError());
2098		} else {
2099			return ret
2100		}
2101		#[cfg(not(feature = "diagnose"))]
2102		return ret;
2103	}
2104	#[inline(always)]
2105	fn get_version(&self) -> (&'static str, u32, u32, u32) {
2106		(self.spec, self.major_version, self.minor_version, self.release_version)
2107	}
2108	#[inline(always)]
2109	fn get_vendor(&self) -> &'static str {
2110		self.vendor
2111	}
2112	#[inline(always)]
2113	fn get_renderer(&self) -> &'static str {
2114		self.renderer
2115	}
2116	#[inline(always)]
2117	fn get_versionstr(&self) -> &'static str {
2118		self.version
2119	}
2120}
2121
2122impl Version10 {
2123	pub fn new(mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Result<Self> {
2124		let mut ret = Self {
2125			available: true,
2126			spec: "unknown",
2127			major_version: 0,
2128			minor_version: 0,
2129			release_version: 0,
2130			vendor: "unknown",
2131			renderer: "unknown",
2132			version: "unknown",
2133			cullface: {let proc = get_proc_address("glCullFace"); if proc.is_null() {dummy_pfnglcullfaceproc} else {unsafe{transmute(proc)}}},
2134			frontface: {let proc = get_proc_address("glFrontFace"); if proc.is_null() {dummy_pfnglfrontfaceproc} else {unsafe{transmute(proc)}}},
2135			hint: {let proc = get_proc_address("glHint"); if proc.is_null() {dummy_pfnglhintproc} else {unsafe{transmute(proc)}}},
2136			linewidth: {let proc = get_proc_address("glLineWidth"); if proc.is_null() {dummy_pfngllinewidthproc} else {unsafe{transmute(proc)}}},
2137			pointsize: {let proc = get_proc_address("glPointSize"); if proc.is_null() {dummy_pfnglpointsizeproc} else {unsafe{transmute(proc)}}},
2138			polygonmode: {let proc = get_proc_address("glPolygonMode"); if proc.is_null() {dummy_pfnglpolygonmodeproc} else {unsafe{transmute(proc)}}},
2139			scissor: {let proc = get_proc_address("glScissor"); if proc.is_null() {dummy_pfnglscissorproc} else {unsafe{transmute(proc)}}},
2140			texparameterf: {let proc = get_proc_address("glTexParameterf"); if proc.is_null() {dummy_pfngltexparameterfproc} else {unsafe{transmute(proc)}}},
2141			texparameterfv: {let proc = get_proc_address("glTexParameterfv"); if proc.is_null() {dummy_pfngltexparameterfvproc} else {unsafe{transmute(proc)}}},
2142			texparameteri: {let proc = get_proc_address("glTexParameteri"); if proc.is_null() {dummy_pfngltexparameteriproc} else {unsafe{transmute(proc)}}},
2143			texparameteriv: {let proc = get_proc_address("glTexParameteriv"); if proc.is_null() {dummy_pfngltexparameterivproc} else {unsafe{transmute(proc)}}},
2144			teximage1d: {let proc = get_proc_address("glTexImage1D"); if proc.is_null() {dummy_pfnglteximage1dproc} else {unsafe{transmute(proc)}}},
2145			teximage2d: {let proc = get_proc_address("glTexImage2D"); if proc.is_null() {dummy_pfnglteximage2dproc} else {unsafe{transmute(proc)}}},
2146			drawbuffer: {let proc = get_proc_address("glDrawBuffer"); if proc.is_null() {dummy_pfngldrawbufferproc} else {unsafe{transmute(proc)}}},
2147			clear: {let proc = get_proc_address("glClear"); if proc.is_null() {dummy_pfnglclearproc} else {unsafe{transmute(proc)}}},
2148			clearcolor: {let proc = get_proc_address("glClearColor"); if proc.is_null() {dummy_pfnglclearcolorproc} else {unsafe{transmute(proc)}}},
2149			clearstencil: {let proc = get_proc_address("glClearStencil"); if proc.is_null() {dummy_pfnglclearstencilproc} else {unsafe{transmute(proc)}}},
2150			cleardepth: {let proc = get_proc_address("glClearDepth"); if proc.is_null() {dummy_pfnglcleardepthproc} else {unsafe{transmute(proc)}}},
2151			stencilmask: {let proc = get_proc_address("glStencilMask"); if proc.is_null() {dummy_pfnglstencilmaskproc} else {unsafe{transmute(proc)}}},
2152			colormask: {let proc = get_proc_address("glColorMask"); if proc.is_null() {dummy_pfnglcolormaskproc} else {unsafe{transmute(proc)}}},
2153			depthmask: {let proc = get_proc_address("glDepthMask"); if proc.is_null() {dummy_pfngldepthmaskproc} else {unsafe{transmute(proc)}}},
2154			disable: {let proc = get_proc_address("glDisable"); if proc.is_null() {dummy_pfngldisableproc} else {unsafe{transmute(proc)}}},
2155			enable: {let proc = get_proc_address("glEnable"); if proc.is_null() {dummy_pfnglenableproc} else {unsafe{transmute(proc)}}},
2156			finish: {let proc = get_proc_address("glFinish"); if proc.is_null() {dummy_pfnglfinishproc} else {unsafe{transmute(proc)}}},
2157			flush: {let proc = get_proc_address("glFlush"); if proc.is_null() {dummy_pfnglflushproc} else {unsafe{transmute(proc)}}},
2158			blendfunc: {let proc = get_proc_address("glBlendFunc"); if proc.is_null() {dummy_pfnglblendfuncproc} else {unsafe{transmute(proc)}}},
2159			logicop: {let proc = get_proc_address("glLogicOp"); if proc.is_null() {dummy_pfngllogicopproc} else {unsafe{transmute(proc)}}},
2160			stencilfunc: {let proc = get_proc_address("glStencilFunc"); if proc.is_null() {dummy_pfnglstencilfuncproc} else {unsafe{transmute(proc)}}},
2161			stencilop: {let proc = get_proc_address("glStencilOp"); if proc.is_null() {dummy_pfnglstencilopproc} else {unsafe{transmute(proc)}}},
2162			depthfunc: {let proc = get_proc_address("glDepthFunc"); if proc.is_null() {dummy_pfngldepthfuncproc} else {unsafe{transmute(proc)}}},
2163			pixelstoref: {let proc = get_proc_address("glPixelStoref"); if proc.is_null() {dummy_pfnglpixelstorefproc} else {unsafe{transmute(proc)}}},
2164			pixelstorei: {let proc = get_proc_address("glPixelStorei"); if proc.is_null() {dummy_pfnglpixelstoreiproc} else {unsafe{transmute(proc)}}},
2165			readbuffer: {let proc = get_proc_address("glReadBuffer"); if proc.is_null() {dummy_pfnglreadbufferproc} else {unsafe{transmute(proc)}}},
2166			readpixels: {let proc = get_proc_address("glReadPixels"); if proc.is_null() {dummy_pfnglreadpixelsproc} else {unsafe{transmute(proc)}}},
2167			getbooleanv: {let proc = get_proc_address("glGetBooleanv"); if proc.is_null() {dummy_pfnglgetbooleanvproc} else {unsafe{transmute(proc)}}},
2168			getdoublev: {let proc = get_proc_address("glGetDoublev"); if proc.is_null() {dummy_pfnglgetdoublevproc} else {unsafe{transmute(proc)}}},
2169			geterror: {let proc = get_proc_address("glGetError"); if proc.is_null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
2170			getfloatv: {let proc = get_proc_address("glGetFloatv"); if proc.is_null() {dummy_pfnglgetfloatvproc} else {unsafe{transmute(proc)}}},
2171			getintegerv: {let proc = get_proc_address("glGetIntegerv"); if proc.is_null() {dummy_pfnglgetintegervproc} else {unsafe{transmute(proc)}}},
2172			getstring: {let proc = get_proc_address("glGetString"); if proc.is_null() {dummy_pfnglgetstringproc} else {unsafe{transmute(proc)}}},
2173			getteximage: {let proc = get_proc_address("glGetTexImage"); if proc.is_null() {dummy_pfnglgetteximageproc} else {unsafe{transmute(proc)}}},
2174			gettexparameterfv: {let proc = get_proc_address("glGetTexParameterfv"); if proc.is_null() {dummy_pfnglgettexparameterfvproc} else {unsafe{transmute(proc)}}},
2175			gettexparameteriv: {let proc = get_proc_address("glGetTexParameteriv"); if proc.is_null() {dummy_pfnglgettexparameterivproc} else {unsafe{transmute(proc)}}},
2176			gettexlevelparameterfv: {let proc = get_proc_address("glGetTexLevelParameterfv"); if proc.is_null() {dummy_pfnglgettexlevelparameterfvproc} else {unsafe{transmute(proc)}}},
2177			gettexlevelparameteriv: {let proc = get_proc_address("glGetTexLevelParameteriv"); if proc.is_null() {dummy_pfnglgettexlevelparameterivproc} else {unsafe{transmute(proc)}}},
2178			isenabled: {let proc = get_proc_address("glIsEnabled"); if proc.is_null() {dummy_pfnglisenabledproc} else {unsafe{transmute(proc)}}},
2179			depthrange: {let proc = get_proc_address("glDepthRange"); if proc.is_null() {dummy_pfngldepthrangeproc} else {unsafe{transmute(proc)}}},
2180			viewport: {let proc = get_proc_address("glViewport"); if proc.is_null() {dummy_pfnglviewportproc} else {unsafe{transmute(proc)}}},
2181		};
2182		ret.fetch_version()?;
2183		Ok(ret)
2184	}
2185	#[inline(always)]
2186	fn fetch_version(&mut self) -> Result<()> {
2187		self.vendor = self.glGetString(GL_VENDOR)?;
2188		self.renderer = self.glGetString(GL_RENDERER)?;
2189		self.version = self.glGetString(GL_VERSION)?;
2190		self.spec = "OpenGL";
2191		let mut verstr = self.version;
2192		if verstr.starts_with("OpenGL ES ") {
2193			verstr = &verstr["OpenGL ES ".len()..];
2194			self.spec = "OpenGL ES ";
2195		} else if let Some((left, right)) = verstr.split_once(' ') {
2196			verstr = left;
2197			self.spec = right;
2198		}
2199		let mut v: Vec<&str> = verstr.split('.').collect();
2200		v.resize(3, "0");
2201		v = v.into_iter().map(|x|if x.is_empty() {"0"} else {x}).collect();
2202		self.major_version = v[0].parse().unwrap();
2203		self.minor_version = v[1].parse().unwrap();
2204		self.release_version = v[2].parse().unwrap();
2205		Ok(())
2206	}
2207	#[inline(always)]
2208	pub fn get_available(&self) -> bool {
2209		self.available
2210	}
2211}
2212
2213impl Default for Version10 {
2214	fn default() -> Self {
2215		Self {
2216			available: false,
2217			spec: "unknown",
2218			major_version: 0,
2219			minor_version: 0,
2220			release_version: 0,
2221			vendor: "unknown",
2222			renderer: "unknown",
2223			version: "unknown",
2224			cullface: dummy_pfnglcullfaceproc,
2225			frontface: dummy_pfnglfrontfaceproc,
2226			hint: dummy_pfnglhintproc,
2227			linewidth: dummy_pfngllinewidthproc,
2228			pointsize: dummy_pfnglpointsizeproc,
2229			polygonmode: dummy_pfnglpolygonmodeproc,
2230			scissor: dummy_pfnglscissorproc,
2231			texparameterf: dummy_pfngltexparameterfproc,
2232			texparameterfv: dummy_pfngltexparameterfvproc,
2233			texparameteri: dummy_pfngltexparameteriproc,
2234			texparameteriv: dummy_pfngltexparameterivproc,
2235			teximage1d: dummy_pfnglteximage1dproc,
2236			teximage2d: dummy_pfnglteximage2dproc,
2237			drawbuffer: dummy_pfngldrawbufferproc,
2238			clear: dummy_pfnglclearproc,
2239			clearcolor: dummy_pfnglclearcolorproc,
2240			clearstencil: dummy_pfnglclearstencilproc,
2241			cleardepth: dummy_pfnglcleardepthproc,
2242			stencilmask: dummy_pfnglstencilmaskproc,
2243			colormask: dummy_pfnglcolormaskproc,
2244			depthmask: dummy_pfngldepthmaskproc,
2245			disable: dummy_pfngldisableproc,
2246			enable: dummy_pfnglenableproc,
2247			finish: dummy_pfnglfinishproc,
2248			flush: dummy_pfnglflushproc,
2249			blendfunc: dummy_pfnglblendfuncproc,
2250			logicop: dummy_pfngllogicopproc,
2251			stencilfunc: dummy_pfnglstencilfuncproc,
2252			stencilop: dummy_pfnglstencilopproc,
2253			depthfunc: dummy_pfngldepthfuncproc,
2254			pixelstoref: dummy_pfnglpixelstorefproc,
2255			pixelstorei: dummy_pfnglpixelstoreiproc,
2256			readbuffer: dummy_pfnglreadbufferproc,
2257			readpixels: dummy_pfnglreadpixelsproc,
2258			getbooleanv: dummy_pfnglgetbooleanvproc,
2259			getdoublev: dummy_pfnglgetdoublevproc,
2260			geterror: dummy_pfnglgeterrorproc,
2261			getfloatv: dummy_pfnglgetfloatvproc,
2262			getintegerv: dummy_pfnglgetintegervproc,
2263			getstring: dummy_pfnglgetstringproc,
2264			getteximage: dummy_pfnglgetteximageproc,
2265			gettexparameterfv: dummy_pfnglgettexparameterfvproc,
2266			gettexparameteriv: dummy_pfnglgettexparameterivproc,
2267			gettexlevelparameterfv: dummy_pfnglgettexlevelparameterfvproc,
2268			gettexlevelparameteriv: dummy_pfnglgettexlevelparameterivproc,
2269			isenabled: dummy_pfnglisenabledproc,
2270			depthrange: dummy_pfngldepthrangeproc,
2271			viewport: dummy_pfnglviewportproc,
2272		}
2273	}
2274}
2275impl Debug for Version10 {
2276	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
2277		if self.available {
2278			f.debug_struct("Version10")
2279			.field("available", &self.available)
2280			.field("spec", &self.spec)
2281			.field("major_version", &self.major_version)
2282			.field("minor_version", &self.minor_version)
2283			.field("release_version", &self.release_version)
2284			.field("vendor", &self.vendor)
2285			.field("renderer", &self.renderer)
2286			.field("version", &self.version)
2287			.field("cullface", unsafe{if transmute::<_, *const c_void>(self.cullface) == (dummy_pfnglcullfaceproc as *const c_void) {&null::<PFNGLCULLFACEPROC>()} else {&self.cullface}})
2288			.field("frontface", unsafe{if transmute::<_, *const c_void>(self.frontface) == (dummy_pfnglfrontfaceproc as *const c_void) {&null::<PFNGLFRONTFACEPROC>()} else {&self.frontface}})
2289			.field("hint", unsafe{if transmute::<_, *const c_void>(self.hint) == (dummy_pfnglhintproc as *const c_void) {&null::<PFNGLHINTPROC>()} else {&self.hint}})
2290			.field("linewidth", unsafe{if transmute::<_, *const c_void>(self.linewidth) == (dummy_pfngllinewidthproc as *const c_void) {&null::<PFNGLLINEWIDTHPROC>()} else {&self.linewidth}})
2291			.field("pointsize", unsafe{if transmute::<_, *const c_void>(self.pointsize) == (dummy_pfnglpointsizeproc as *const c_void) {&null::<PFNGLPOINTSIZEPROC>()} else {&self.pointsize}})
2292			.field("polygonmode", unsafe{if transmute::<_, *const c_void>(self.polygonmode) == (dummy_pfnglpolygonmodeproc as *const c_void) {&null::<PFNGLPOLYGONMODEPROC>()} else {&self.polygonmode}})
2293			.field("scissor", unsafe{if transmute::<_, *const c_void>(self.scissor) == (dummy_pfnglscissorproc as *const c_void) {&null::<PFNGLSCISSORPROC>()} else {&self.scissor}})
2294			.field("texparameterf", unsafe{if transmute::<_, *const c_void>(self.texparameterf) == (dummy_pfngltexparameterfproc as *const c_void) {&null::<PFNGLTEXPARAMETERFPROC>()} else {&self.texparameterf}})
2295			.field("texparameterfv", unsafe{if transmute::<_, *const c_void>(self.texparameterfv) == (dummy_pfngltexparameterfvproc as *const c_void) {&null::<PFNGLTEXPARAMETERFVPROC>()} else {&self.texparameterfv}})
2296			.field("texparameteri", unsafe{if transmute::<_, *const c_void>(self.texparameteri) == (dummy_pfngltexparameteriproc as *const c_void) {&null::<PFNGLTEXPARAMETERIPROC>()} else {&self.texparameteri}})
2297			.field("texparameteriv", unsafe{if transmute::<_, *const c_void>(self.texparameteriv) == (dummy_pfngltexparameterivproc as *const c_void) {&null::<PFNGLTEXPARAMETERIVPROC>()} else {&self.texparameteriv}})
2298			.field("teximage1d", unsafe{if transmute::<_, *const c_void>(self.teximage1d) == (dummy_pfnglteximage1dproc as *const c_void) {&null::<PFNGLTEXIMAGE1DPROC>()} else {&self.teximage1d}})
2299			.field("teximage2d", unsafe{if transmute::<_, *const c_void>(self.teximage2d) == (dummy_pfnglteximage2dproc as *const c_void) {&null::<PFNGLTEXIMAGE2DPROC>()} else {&self.teximage2d}})
2300			.field("drawbuffer", unsafe{if transmute::<_, *const c_void>(self.drawbuffer) == (dummy_pfngldrawbufferproc as *const c_void) {&null::<PFNGLDRAWBUFFERPROC>()} else {&self.drawbuffer}})
2301			.field("clear", unsafe{if transmute::<_, *const c_void>(self.clear) == (dummy_pfnglclearproc as *const c_void) {&null::<PFNGLCLEARPROC>()} else {&self.clear}})
2302			.field("clearcolor", unsafe{if transmute::<_, *const c_void>(self.clearcolor) == (dummy_pfnglclearcolorproc as *const c_void) {&null::<PFNGLCLEARCOLORPROC>()} else {&self.clearcolor}})
2303			.field("clearstencil", unsafe{if transmute::<_, *const c_void>(self.clearstencil) == (dummy_pfnglclearstencilproc as *const c_void) {&null::<PFNGLCLEARSTENCILPROC>()} else {&self.clearstencil}})
2304			.field("cleardepth", unsafe{if transmute::<_, *const c_void>(self.cleardepth) == (dummy_pfnglcleardepthproc as *const c_void) {&null::<PFNGLCLEARDEPTHPROC>()} else {&self.cleardepth}})
2305			.field("stencilmask", unsafe{if transmute::<_, *const c_void>(self.stencilmask) == (dummy_pfnglstencilmaskproc as *const c_void) {&null::<PFNGLSTENCILMASKPROC>()} else {&self.stencilmask}})
2306			.field("colormask", unsafe{if transmute::<_, *const c_void>(self.colormask) == (dummy_pfnglcolormaskproc as *const c_void) {&null::<PFNGLCOLORMASKPROC>()} else {&self.colormask}})
2307			.field("depthmask", unsafe{if transmute::<_, *const c_void>(self.depthmask) == (dummy_pfngldepthmaskproc as *const c_void) {&null::<PFNGLDEPTHMASKPROC>()} else {&self.depthmask}})
2308			.field("disable", unsafe{if transmute::<_, *const c_void>(self.disable) == (dummy_pfngldisableproc as *const c_void) {&null::<PFNGLDISABLEPROC>()} else {&self.disable}})
2309			.field("enable", unsafe{if transmute::<_, *const c_void>(self.enable) == (dummy_pfnglenableproc as *const c_void) {&null::<PFNGLENABLEPROC>()} else {&self.enable}})
2310			.field("finish", unsafe{if transmute::<_, *const c_void>(self.finish) == (dummy_pfnglfinishproc as *const c_void) {&null::<PFNGLFINISHPROC>()} else {&self.finish}})
2311			.field("flush", unsafe{if transmute::<_, *const c_void>(self.flush) == (dummy_pfnglflushproc as *const c_void) {&null::<PFNGLFLUSHPROC>()} else {&self.flush}})
2312			.field("blendfunc", unsafe{if transmute::<_, *const c_void>(self.blendfunc) == (dummy_pfnglblendfuncproc as *const c_void) {&null::<PFNGLBLENDFUNCPROC>()} else {&self.blendfunc}})
2313			.field("logicop", unsafe{if transmute::<_, *const c_void>(self.logicop) == (dummy_pfngllogicopproc as *const c_void) {&null::<PFNGLLOGICOPPROC>()} else {&self.logicop}})
2314			.field("stencilfunc", unsafe{if transmute::<_, *const c_void>(self.stencilfunc) == (dummy_pfnglstencilfuncproc as *const c_void) {&null::<PFNGLSTENCILFUNCPROC>()} else {&self.stencilfunc}})
2315			.field("stencilop", unsafe{if transmute::<_, *const c_void>(self.stencilop) == (dummy_pfnglstencilopproc as *const c_void) {&null::<PFNGLSTENCILOPPROC>()} else {&self.stencilop}})
2316			.field("depthfunc", unsafe{if transmute::<_, *const c_void>(self.depthfunc) == (dummy_pfngldepthfuncproc as *const c_void) {&null::<PFNGLDEPTHFUNCPROC>()} else {&self.depthfunc}})
2317			.field("pixelstoref", unsafe{if transmute::<_, *const c_void>(self.pixelstoref) == (dummy_pfnglpixelstorefproc as *const c_void) {&null::<PFNGLPIXELSTOREFPROC>()} else {&self.pixelstoref}})
2318			.field("pixelstorei", unsafe{if transmute::<_, *const c_void>(self.pixelstorei) == (dummy_pfnglpixelstoreiproc as *const c_void) {&null::<PFNGLPIXELSTOREIPROC>()} else {&self.pixelstorei}})
2319			.field("readbuffer", unsafe{if transmute::<_, *const c_void>(self.readbuffer) == (dummy_pfnglreadbufferproc as *const c_void) {&null::<PFNGLREADBUFFERPROC>()} else {&self.readbuffer}})
2320			.field("readpixels", unsafe{if transmute::<_, *const c_void>(self.readpixels) == (dummy_pfnglreadpixelsproc as *const c_void) {&null::<PFNGLREADPIXELSPROC>()} else {&self.readpixels}})
2321			.field("getbooleanv", unsafe{if transmute::<_, *const c_void>(self.getbooleanv) == (dummy_pfnglgetbooleanvproc as *const c_void) {&null::<PFNGLGETBOOLEANVPROC>()} else {&self.getbooleanv}})
2322			.field("getdoublev", unsafe{if transmute::<_, *const c_void>(self.getdoublev) == (dummy_pfnglgetdoublevproc as *const c_void) {&null::<PFNGLGETDOUBLEVPROC>()} else {&self.getdoublev}})
2323			.field("geterror", unsafe{if transmute::<_, *const c_void>(self.geterror) == (dummy_pfnglgeterrorproc as *const c_void) {&null::<PFNGLGETERRORPROC>()} else {&self.geterror}})
2324			.field("getfloatv", unsafe{if transmute::<_, *const c_void>(self.getfloatv) == (dummy_pfnglgetfloatvproc as *const c_void) {&null::<PFNGLGETFLOATVPROC>()} else {&self.getfloatv}})
2325			.field("getintegerv", unsafe{if transmute::<_, *const c_void>(self.getintegerv) == (dummy_pfnglgetintegervproc as *const c_void) {&null::<PFNGLGETINTEGERVPROC>()} else {&self.getintegerv}})
2326			.field("getstring", unsafe{if transmute::<_, *const c_void>(self.getstring) == (dummy_pfnglgetstringproc as *const c_void) {&null::<PFNGLGETSTRINGPROC>()} else {&self.getstring}})
2327			.field("getteximage", unsafe{if transmute::<_, *const c_void>(self.getteximage) == (dummy_pfnglgetteximageproc as *const c_void) {&null::<PFNGLGETTEXIMAGEPROC>()} else {&self.getteximage}})
2328			.field("gettexparameterfv", unsafe{if transmute::<_, *const c_void>(self.gettexparameterfv) == (dummy_pfnglgettexparameterfvproc as *const c_void) {&null::<PFNGLGETTEXPARAMETERFVPROC>()} else {&self.gettexparameterfv}})
2329			.field("gettexparameteriv", unsafe{if transmute::<_, *const c_void>(self.gettexparameteriv) == (dummy_pfnglgettexparameterivproc as *const c_void) {&null::<PFNGLGETTEXPARAMETERIVPROC>()} else {&self.gettexparameteriv}})
2330			.field("gettexlevelparameterfv", unsafe{if transmute::<_, *const c_void>(self.gettexlevelparameterfv) == (dummy_pfnglgettexlevelparameterfvproc as *const c_void) {&null::<PFNGLGETTEXLEVELPARAMETERFVPROC>()} else {&self.gettexlevelparameterfv}})
2331			.field("gettexlevelparameteriv", unsafe{if transmute::<_, *const c_void>(self.gettexlevelparameteriv) == (dummy_pfnglgettexlevelparameterivproc as *const c_void) {&null::<PFNGLGETTEXLEVELPARAMETERIVPROC>()} else {&self.gettexlevelparameteriv}})
2332			.field("isenabled", unsafe{if transmute::<_, *const c_void>(self.isenabled) == (dummy_pfnglisenabledproc as *const c_void) {&null::<PFNGLISENABLEDPROC>()} else {&self.isenabled}})
2333			.field("depthrange", unsafe{if transmute::<_, *const c_void>(self.depthrange) == (dummy_pfngldepthrangeproc as *const c_void) {&null::<PFNGLDEPTHRANGEPROC>()} else {&self.depthrange}})
2334			.field("viewport", unsafe{if transmute::<_, *const c_void>(self.viewport) == (dummy_pfnglviewportproc as *const c_void) {&null::<PFNGLVIEWPORTPROC>()} else {&self.viewport}})
2335			.finish()
2336		} else {
2337			f.debug_struct("Version10")
2338			.field("available", &self.available)
2339			.finish_non_exhaustive()
2340		}
2341	}
2342}
2343
2344/// Alias to `khronos_float_t`
2345pub type GLclampf = khronos_float_t;
2346
2347/// Alias to `f64`
2348pub type GLclampd = f64;
2349
2350/// The prototype to the OpenGL function `DrawArrays`
2351type PFNGLDRAWARRAYSPROC = extern "system" fn(GLenum, GLint, GLsizei);
2352
2353/// The prototype to the OpenGL function `DrawElements`
2354type PFNGLDRAWELEMENTSPROC = extern "system" fn(GLenum, GLsizei, GLenum, *const c_void);
2355
2356/// The prototype to the OpenGL function `GetPointerv`
2357type PFNGLGETPOINTERVPROC = extern "system" fn(GLenum, *mut *mut c_void);
2358
2359/// The prototype to the OpenGL function `PolygonOffset`
2360type PFNGLPOLYGONOFFSETPROC = extern "system" fn(GLfloat, GLfloat);
2361
2362/// The prototype to the OpenGL function `CopyTexImage1D`
2363type PFNGLCOPYTEXIMAGE1DPROC = extern "system" fn(GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint);
2364
2365/// The prototype to the OpenGL function `CopyTexImage2D`
2366type PFNGLCOPYTEXIMAGE2DPROC = extern "system" fn(GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint);
2367
2368/// The prototype to the OpenGL function `CopyTexSubImage1D`
2369type PFNGLCOPYTEXSUBIMAGE1DPROC = extern "system" fn(GLenum, GLint, GLint, GLint, GLint, GLsizei);
2370
2371/// The prototype to the OpenGL function `CopyTexSubImage2D`
2372type PFNGLCOPYTEXSUBIMAGE2DPROC = extern "system" fn(GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
2373
2374/// The prototype to the OpenGL function `TexSubImage1D`
2375type PFNGLTEXSUBIMAGE1DPROC = extern "system" fn(GLenum, GLint, GLint, GLsizei, GLenum, GLenum, *const c_void);
2376
2377/// The prototype to the OpenGL function `TexSubImage2D`
2378type PFNGLTEXSUBIMAGE2DPROC = extern "system" fn(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, *const c_void);
2379
2380/// The prototype to the OpenGL function `BindTexture`
2381type PFNGLBINDTEXTUREPROC = extern "system" fn(GLenum, GLuint);
2382
2383/// The prototype to the OpenGL function `DeleteTextures`
2384type PFNGLDELETETEXTURESPROC = extern "system" fn(GLsizei, *const GLuint);
2385
2386/// The prototype to the OpenGL function `GenTextures`
2387type PFNGLGENTEXTURESPROC = extern "system" fn(GLsizei, *mut GLuint);
2388
2389/// The prototype to the OpenGL function `IsTexture`
2390type PFNGLISTEXTUREPROC = extern "system" fn(GLuint) -> GLboolean;
2391
2392/// The dummy function of `DrawArrays()`
2393extern "system" fn dummy_pfngldrawarraysproc (_: GLenum, _: GLint, _: GLsizei) {
2394	panic!("OpenGL function pointer `glDrawArrays()` is null.")
2395}
2396
2397/// The dummy function of `DrawElements()`
2398extern "system" fn dummy_pfngldrawelementsproc (_: GLenum, _: GLsizei, _: GLenum, _: *const c_void) {
2399	panic!("OpenGL function pointer `glDrawElements()` is null.")
2400}
2401
2402/// The dummy function of `GetPointerv()`
2403extern "system" fn dummy_pfnglgetpointervproc (_: GLenum, _: *mut *mut c_void) {
2404	panic!("OpenGL function pointer `glGetPointerv()` is null.")
2405}
2406
2407/// The dummy function of `PolygonOffset()`
2408extern "system" fn dummy_pfnglpolygonoffsetproc (_: GLfloat, _: GLfloat) {
2409	panic!("OpenGL function pointer `glPolygonOffset()` is null.")
2410}
2411
2412/// The dummy function of `CopyTexImage1D()`
2413extern "system" fn dummy_pfnglcopyteximage1dproc (_: GLenum, _: GLint, _: GLenum, _: GLint, _: GLint, _: GLsizei, _: GLint) {
2414	panic!("OpenGL function pointer `glCopyTexImage1D()` is null.")
2415}
2416
2417/// The dummy function of `CopyTexImage2D()`
2418extern "system" fn dummy_pfnglcopyteximage2dproc (_: GLenum, _: GLint, _: GLenum, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLint) {
2419	panic!("OpenGL function pointer `glCopyTexImage2D()` is null.")
2420}
2421
2422/// The dummy function of `CopyTexSubImage1D()`
2423extern "system" fn dummy_pfnglcopytexsubimage1dproc (_: GLenum, _: GLint, _: GLint, _: GLint, _: GLint, _: GLsizei) {
2424	panic!("OpenGL function pointer `glCopyTexSubImage1D()` is null.")
2425}
2426
2427/// The dummy function of `CopyTexSubImage2D()`
2428extern "system" fn dummy_pfnglcopytexsubimage2dproc (_: GLenum, _: GLint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei) {
2429	panic!("OpenGL function pointer `glCopyTexSubImage2D()` is null.")
2430}
2431
2432/// The dummy function of `TexSubImage1D()`
2433extern "system" fn dummy_pfngltexsubimage1dproc (_: GLenum, _: GLint, _: GLint, _: GLsizei, _: GLenum, _: GLenum, _: *const c_void) {
2434	panic!("OpenGL function pointer `glTexSubImage1D()` is null.")
2435}
2436
2437/// The dummy function of `TexSubImage2D()`
2438extern "system" fn dummy_pfngltexsubimage2dproc (_: GLenum, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLenum, _: GLenum, _: *const c_void) {
2439	panic!("OpenGL function pointer `glTexSubImage2D()` is null.")
2440}
2441
2442/// The dummy function of `BindTexture()`
2443extern "system" fn dummy_pfnglbindtextureproc (_: GLenum, _: GLuint) {
2444	panic!("OpenGL function pointer `glBindTexture()` is null.")
2445}
2446
2447/// The dummy function of `DeleteTextures()`
2448extern "system" fn dummy_pfngldeletetexturesproc (_: GLsizei, _: *const GLuint) {
2449	panic!("OpenGL function pointer `glDeleteTextures()` is null.")
2450}
2451
2452/// The dummy function of `GenTextures()`
2453extern "system" fn dummy_pfnglgentexturesproc (_: GLsizei, _: *mut GLuint) {
2454	panic!("OpenGL function pointer `glGenTextures()` is null.")
2455}
2456
2457/// The dummy function of `IsTexture()`
2458extern "system" fn dummy_pfnglistextureproc (_: GLuint) -> GLboolean {
2459	panic!("OpenGL function pointer `glIsTexture()` is null.")
2460}
2461/// Constant value defined from OpenGL 1.1
2462pub const GL_COLOR_LOGIC_OP: GLenum = 0x0BF2;
2463
2464/// Constant value defined from OpenGL 1.1
2465pub const GL_POLYGON_OFFSET_UNITS: GLenum = 0x2A00;
2466
2467/// Constant value defined from OpenGL 1.1
2468pub const GL_POLYGON_OFFSET_POINT: GLenum = 0x2A01;
2469
2470/// Constant value defined from OpenGL 1.1
2471pub const GL_POLYGON_OFFSET_LINE: GLenum = 0x2A02;
2472
2473/// Constant value defined from OpenGL 1.1
2474pub const GL_POLYGON_OFFSET_FILL: GLenum = 0x8037;
2475
2476/// Constant value defined from OpenGL 1.1
2477pub const GL_POLYGON_OFFSET_FACTOR: GLenum = 0x8038;
2478
2479/// Constant value defined from OpenGL 1.1
2480pub const GL_TEXTURE_BINDING_1D: GLenum = 0x8068;
2481
2482/// Constant value defined from OpenGL 1.1
2483pub const GL_TEXTURE_BINDING_2D: GLenum = 0x8069;
2484
2485/// Constant value defined from OpenGL 1.1
2486pub const GL_TEXTURE_INTERNAL_FORMAT: GLenum = 0x1003;
2487
2488/// Constant value defined from OpenGL 1.1
2489pub const GL_TEXTURE_RED_SIZE: GLenum = 0x805C;
2490
2491/// Constant value defined from OpenGL 1.1
2492pub const GL_TEXTURE_GREEN_SIZE: GLenum = 0x805D;
2493
2494/// Constant value defined from OpenGL 1.1
2495pub const GL_TEXTURE_BLUE_SIZE: GLenum = 0x805E;
2496
2497/// Constant value defined from OpenGL 1.1
2498pub const GL_TEXTURE_ALPHA_SIZE: GLenum = 0x805F;
2499
2500/// Constant value defined from OpenGL 1.1
2501pub const GL_DOUBLE: GLenum = 0x140A;
2502
2503/// Constant value defined from OpenGL 1.1
2504pub const GL_PROXY_TEXTURE_1D: GLenum = 0x8063;
2505
2506/// Constant value defined from OpenGL 1.1
2507pub const GL_PROXY_TEXTURE_2D: GLenum = 0x8064;
2508
2509/// Constant value defined from OpenGL 1.1
2510pub const GL_R3_G3_B2: GLenum = 0x2A10;
2511
2512/// Constant value defined from OpenGL 1.1
2513pub const GL_RGB4: GLenum = 0x804F;
2514
2515/// Constant value defined from OpenGL 1.1
2516pub const GL_RGB5: GLenum = 0x8050;
2517
2518/// Constant value defined from OpenGL 1.1
2519pub const GL_RGB8: GLenum = 0x8051;
2520
2521/// Constant value defined from OpenGL 1.1
2522pub const GL_RGB10: GLenum = 0x8052;
2523
2524/// Constant value defined from OpenGL 1.1
2525pub const GL_RGB12: GLenum = 0x8053;
2526
2527/// Constant value defined from OpenGL 1.1
2528pub const GL_RGB16: GLenum = 0x8054;
2529
2530/// Constant value defined from OpenGL 1.1
2531pub const GL_RGBA2: GLenum = 0x8055;
2532
2533/// Constant value defined from OpenGL 1.1
2534pub const GL_RGBA4: GLenum = 0x8056;
2535
2536/// Constant value defined from OpenGL 1.1
2537pub const GL_RGB5_A1: GLenum = 0x8057;
2538
2539/// Constant value defined from OpenGL 1.1
2540pub const GL_RGBA8: GLenum = 0x8058;
2541
2542/// Constant value defined from OpenGL 1.1
2543pub const GL_RGB10_A2: GLenum = 0x8059;
2544
2545/// Constant value defined from OpenGL 1.1
2546pub const GL_RGBA12: GLenum = 0x805A;
2547
2548/// Constant value defined from OpenGL 1.1
2549pub const GL_RGBA16: GLenum = 0x805B;
2550
2551/// Constant value defined from OpenGL 1.1
2552pub const GL_VERTEX_ARRAY: GLenum = 0x8074;
2553
2554/// Functions from OpenGL version 1.1
2555pub trait GL_1_1 {
2556	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
2557	fn glGetError(&self) -> GLenum;
2558
2559	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawArrays.xhtml>
2560	fn glDrawArrays(&self, mode: GLenum, first: GLint, count: GLsizei) -> Result<()>;
2561
2562	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElements.xhtml>
2563	fn glDrawElements(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void) -> Result<()>;
2564
2565	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetPointerv.xhtml>
2566	fn glGetPointerv(&self, pname: GLenum, params: *mut *mut c_void) -> Result<()>;
2567
2568	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPolygonOffset.xhtml>
2569	fn glPolygonOffset(&self, factor: GLfloat, units: GLfloat) -> Result<()>;
2570
2571	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTexImage1D.xhtml>
2572	fn glCopyTexImage1D(&self, target: GLenum, level: GLint, internalformat: GLenum, x: GLint, y: GLint, width: GLsizei, border: GLint) -> Result<()>;
2573
2574	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTexImage2D.xhtml>
2575	fn glCopyTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei, border: GLint) -> Result<()>;
2576
2577	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTexSubImage1D.xhtml>
2578	fn glCopyTexSubImage1D(&self, target: GLenum, level: GLint, xoffset: GLint, x: GLint, y: GLint, width: GLsizei) -> Result<()>;
2579
2580	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTexSubImage2D.xhtml>
2581	fn glCopyTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
2582
2583	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexSubImage1D.xhtml>
2584	fn glTexSubImage1D(&self, target: GLenum, level: GLint, xoffset: GLint, width: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
2585
2586	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexSubImage2D.xhtml>
2587	fn glTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
2588
2589	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindTexture.xhtml>
2590	fn glBindTexture(&self, target: GLenum, texture: GLuint) -> Result<()>;
2591
2592	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteTextures.xhtml>
2593	fn glDeleteTextures(&self, n: GLsizei, textures: *const GLuint) -> Result<()>;
2594
2595	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenTextures.xhtml>
2596	fn glGenTextures(&self, n: GLsizei, textures: *mut GLuint) -> Result<()>;
2597
2598	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsTexture.xhtml>
2599	fn glIsTexture(&self, texture: GLuint) -> Result<GLboolean>;
2600}
2601/// Functions from OpenGL version 1.1
2602#[derive(Clone, Copy, PartialEq, Eq, Hash)]
2603pub struct Version11 {
2604	/// Is OpenGL version 1.1 available
2605	available: bool,
2606
2607	/// The function pointer to `glGetError()`
2608	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
2609	pub geterror: PFNGLGETERRORPROC,
2610
2611	/// The function pointer to `glDrawArrays()`
2612	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawArrays.xhtml>
2613	pub drawarrays: PFNGLDRAWARRAYSPROC,
2614
2615	/// The function pointer to `glDrawElements()`
2616	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElements.xhtml>
2617	pub drawelements: PFNGLDRAWELEMENTSPROC,
2618
2619	/// The function pointer to `glGetPointerv()`
2620	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetPointerv.xhtml>
2621	pub getpointerv: PFNGLGETPOINTERVPROC,
2622
2623	/// The function pointer to `glPolygonOffset()`
2624	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPolygonOffset.xhtml>
2625	pub polygonoffset: PFNGLPOLYGONOFFSETPROC,
2626
2627	/// The function pointer to `glCopyTexImage1D()`
2628	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTexImage1D.xhtml>
2629	pub copyteximage1d: PFNGLCOPYTEXIMAGE1DPROC,
2630
2631	/// The function pointer to `glCopyTexImage2D()`
2632	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTexImage2D.xhtml>
2633	pub copyteximage2d: PFNGLCOPYTEXIMAGE2DPROC,
2634
2635	/// The function pointer to `glCopyTexSubImage1D()`
2636	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTexSubImage1D.xhtml>
2637	pub copytexsubimage1d: PFNGLCOPYTEXSUBIMAGE1DPROC,
2638
2639	/// The function pointer to `glCopyTexSubImage2D()`
2640	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTexSubImage2D.xhtml>
2641	pub copytexsubimage2d: PFNGLCOPYTEXSUBIMAGE2DPROC,
2642
2643	/// The function pointer to `glTexSubImage1D()`
2644	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexSubImage1D.xhtml>
2645	pub texsubimage1d: PFNGLTEXSUBIMAGE1DPROC,
2646
2647	/// The function pointer to `glTexSubImage2D()`
2648	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexSubImage2D.xhtml>
2649	pub texsubimage2d: PFNGLTEXSUBIMAGE2DPROC,
2650
2651	/// The function pointer to `glBindTexture()`
2652	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindTexture.xhtml>
2653	pub bindtexture: PFNGLBINDTEXTUREPROC,
2654
2655	/// The function pointer to `glDeleteTextures()`
2656	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteTextures.xhtml>
2657	pub deletetextures: PFNGLDELETETEXTURESPROC,
2658
2659	/// The function pointer to `glGenTextures()`
2660	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenTextures.xhtml>
2661	pub gentextures: PFNGLGENTEXTURESPROC,
2662
2663	/// The function pointer to `glIsTexture()`
2664	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsTexture.xhtml>
2665	pub istexture: PFNGLISTEXTUREPROC,
2666}
2667
2668impl GL_1_1 for Version11 {
2669	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
2670	#[inline(always)]
2671	fn glGetError(&self) -> GLenum {
2672		(self.geterror)()
2673	}
2674	#[inline(always)]
2675	fn glDrawArrays(&self, mode: GLenum, first: GLint, count: GLsizei) -> Result<()> {
2676		#[cfg(feature = "catch_nullptr")]
2677		let ret = process_catch("glDrawArrays", catch_unwind(||(self.drawarrays)(mode, first, count)));
2678		#[cfg(not(feature = "catch_nullptr"))]
2679		let ret = {(self.drawarrays)(mode, first, count); Ok(())};
2680		#[cfg(feature = "diagnose")]
2681		if let Ok(ret) = ret {
2682			return to_result("glDrawArrays", ret, self.glGetError());
2683		} else {
2684			return ret
2685		}
2686		#[cfg(not(feature = "diagnose"))]
2687		return ret;
2688	}
2689	#[inline(always)]
2690	fn glDrawElements(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void) -> Result<()> {
2691		#[cfg(feature = "catch_nullptr")]
2692		let ret = process_catch("glDrawElements", catch_unwind(||(self.drawelements)(mode, count, type_, indices)));
2693		#[cfg(not(feature = "catch_nullptr"))]
2694		let ret = {(self.drawelements)(mode, count, type_, indices); Ok(())};
2695		#[cfg(feature = "diagnose")]
2696		if let Ok(ret) = ret {
2697			return to_result("glDrawElements", ret, self.glGetError());
2698		} else {
2699			return ret
2700		}
2701		#[cfg(not(feature = "diagnose"))]
2702		return ret;
2703	}
2704	#[inline(always)]
2705	fn glGetPointerv(&self, pname: GLenum, params: *mut *mut c_void) -> Result<()> {
2706		#[cfg(feature = "catch_nullptr")]
2707		let ret = process_catch("glGetPointerv", catch_unwind(||(self.getpointerv)(pname, params)));
2708		#[cfg(not(feature = "catch_nullptr"))]
2709		let ret = {(self.getpointerv)(pname, params); Ok(())};
2710		#[cfg(feature = "diagnose")]
2711		if let Ok(ret) = ret {
2712			return to_result("glGetPointerv", ret, self.glGetError());
2713		} else {
2714			return ret
2715		}
2716		#[cfg(not(feature = "diagnose"))]
2717		return ret;
2718	}
2719	#[inline(always)]
2720	fn glPolygonOffset(&self, factor: GLfloat, units: GLfloat) -> Result<()> {
2721		#[cfg(feature = "catch_nullptr")]
2722		let ret = process_catch("glPolygonOffset", catch_unwind(||(self.polygonoffset)(factor, units)));
2723		#[cfg(not(feature = "catch_nullptr"))]
2724		let ret = {(self.polygonoffset)(factor, units); Ok(())};
2725		#[cfg(feature = "diagnose")]
2726		if let Ok(ret) = ret {
2727			return to_result("glPolygonOffset", ret, self.glGetError());
2728		} else {
2729			return ret
2730		}
2731		#[cfg(not(feature = "diagnose"))]
2732		return ret;
2733	}
2734	#[inline(always)]
2735	fn glCopyTexImage1D(&self, target: GLenum, level: GLint, internalformat: GLenum, x: GLint, y: GLint, width: GLsizei, border: GLint) -> Result<()> {
2736		#[cfg(feature = "catch_nullptr")]
2737		let ret = process_catch("glCopyTexImage1D", catch_unwind(||(self.copyteximage1d)(target, level, internalformat, x, y, width, border)));
2738		#[cfg(not(feature = "catch_nullptr"))]
2739		let ret = {(self.copyteximage1d)(target, level, internalformat, x, y, width, border); Ok(())};
2740		#[cfg(feature = "diagnose")]
2741		if let Ok(ret) = ret {
2742			return to_result("glCopyTexImage1D", ret, self.glGetError());
2743		} else {
2744			return ret
2745		}
2746		#[cfg(not(feature = "diagnose"))]
2747		return ret;
2748	}
2749	#[inline(always)]
2750	fn glCopyTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei, border: GLint) -> Result<()> {
2751		#[cfg(feature = "catch_nullptr")]
2752		let ret = process_catch("glCopyTexImage2D", catch_unwind(||(self.copyteximage2d)(target, level, internalformat, x, y, width, height, border)));
2753		#[cfg(not(feature = "catch_nullptr"))]
2754		let ret = {(self.copyteximage2d)(target, level, internalformat, x, y, width, height, border); Ok(())};
2755		#[cfg(feature = "diagnose")]
2756		if let Ok(ret) = ret {
2757			return to_result("glCopyTexImage2D", ret, self.glGetError());
2758		} else {
2759			return ret
2760		}
2761		#[cfg(not(feature = "diagnose"))]
2762		return ret;
2763	}
2764	#[inline(always)]
2765	fn glCopyTexSubImage1D(&self, target: GLenum, level: GLint, xoffset: GLint, x: GLint, y: GLint, width: GLsizei) -> Result<()> {
2766		#[cfg(feature = "catch_nullptr")]
2767		let ret = process_catch("glCopyTexSubImage1D", catch_unwind(||(self.copytexsubimage1d)(target, level, xoffset, x, y, width)));
2768		#[cfg(not(feature = "catch_nullptr"))]
2769		let ret = {(self.copytexsubimage1d)(target, level, xoffset, x, y, width); Ok(())};
2770		#[cfg(feature = "diagnose")]
2771		if let Ok(ret) = ret {
2772			return to_result("glCopyTexSubImage1D", ret, self.glGetError());
2773		} else {
2774			return ret
2775		}
2776		#[cfg(not(feature = "diagnose"))]
2777		return ret;
2778	}
2779	#[inline(always)]
2780	fn glCopyTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
2781		#[cfg(feature = "catch_nullptr")]
2782		let ret = process_catch("glCopyTexSubImage2D", catch_unwind(||(self.copytexsubimage2d)(target, level, xoffset, yoffset, x, y, width, height)));
2783		#[cfg(not(feature = "catch_nullptr"))]
2784		let ret = {(self.copytexsubimage2d)(target, level, xoffset, yoffset, x, y, width, height); Ok(())};
2785		#[cfg(feature = "diagnose")]
2786		if let Ok(ret) = ret {
2787			return to_result("glCopyTexSubImage2D", ret, self.glGetError());
2788		} else {
2789			return ret
2790		}
2791		#[cfg(not(feature = "diagnose"))]
2792		return ret;
2793	}
2794	#[inline(always)]
2795	fn glTexSubImage1D(&self, target: GLenum, level: GLint, xoffset: GLint, width: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
2796		#[cfg(feature = "catch_nullptr")]
2797		let ret = process_catch("glTexSubImage1D", catch_unwind(||(self.texsubimage1d)(target, level, xoffset, width, format, type_, pixels)));
2798		#[cfg(not(feature = "catch_nullptr"))]
2799		let ret = {(self.texsubimage1d)(target, level, xoffset, width, format, type_, pixels); Ok(())};
2800		#[cfg(feature = "diagnose")]
2801		if let Ok(ret) = ret {
2802			return to_result("glTexSubImage1D", ret, self.glGetError());
2803		} else {
2804			return ret
2805		}
2806		#[cfg(not(feature = "diagnose"))]
2807		return ret;
2808	}
2809	#[inline(always)]
2810	fn glTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
2811		#[cfg(feature = "catch_nullptr")]
2812		let ret = process_catch("glTexSubImage2D", catch_unwind(||(self.texsubimage2d)(target, level, xoffset, yoffset, width, height, format, type_, pixels)));
2813		#[cfg(not(feature = "catch_nullptr"))]
2814		let ret = {(self.texsubimage2d)(target, level, xoffset, yoffset, width, height, format, type_, pixels); Ok(())};
2815		#[cfg(feature = "diagnose")]
2816		if let Ok(ret) = ret {
2817			return to_result("glTexSubImage2D", ret, self.glGetError());
2818		} else {
2819			return ret
2820		}
2821		#[cfg(not(feature = "diagnose"))]
2822		return ret;
2823	}
2824	#[inline(always)]
2825	fn glBindTexture(&self, target: GLenum, texture: GLuint) -> Result<()> {
2826		#[cfg(feature = "catch_nullptr")]
2827		let ret = process_catch("glBindTexture", catch_unwind(||(self.bindtexture)(target, texture)));
2828		#[cfg(not(feature = "catch_nullptr"))]
2829		let ret = {(self.bindtexture)(target, texture); Ok(())};
2830		#[cfg(feature = "diagnose")]
2831		if let Ok(ret) = ret {
2832			return to_result("glBindTexture", ret, self.glGetError());
2833		} else {
2834			return ret
2835		}
2836		#[cfg(not(feature = "diagnose"))]
2837		return ret;
2838	}
2839	#[inline(always)]
2840	fn glDeleteTextures(&self, n: GLsizei, textures: *const GLuint) -> Result<()> {
2841		#[cfg(feature = "catch_nullptr")]
2842		let ret = process_catch("glDeleteTextures", catch_unwind(||(self.deletetextures)(n, textures)));
2843		#[cfg(not(feature = "catch_nullptr"))]
2844		let ret = {(self.deletetextures)(n, textures); Ok(())};
2845		#[cfg(feature = "diagnose")]
2846		if let Ok(ret) = ret {
2847			return to_result("glDeleteTextures", ret, self.glGetError());
2848		} else {
2849			return ret
2850		}
2851		#[cfg(not(feature = "diagnose"))]
2852		return ret;
2853	}
2854	#[inline(always)]
2855	fn glGenTextures(&self, n: GLsizei, textures: *mut GLuint) -> Result<()> {
2856		#[cfg(feature = "catch_nullptr")]
2857		let ret = process_catch("glGenTextures", catch_unwind(||(self.gentextures)(n, textures)));
2858		#[cfg(not(feature = "catch_nullptr"))]
2859		let ret = {(self.gentextures)(n, textures); Ok(())};
2860		#[cfg(feature = "diagnose")]
2861		if let Ok(ret) = ret {
2862			return to_result("glGenTextures", ret, self.glGetError());
2863		} else {
2864			return ret
2865		}
2866		#[cfg(not(feature = "diagnose"))]
2867		return ret;
2868	}
2869	#[inline(always)]
2870	fn glIsTexture(&self, texture: GLuint) -> Result<GLboolean> {
2871		#[cfg(feature = "catch_nullptr")]
2872		let ret = process_catch("glIsTexture", catch_unwind(||(self.istexture)(texture)));
2873		#[cfg(not(feature = "catch_nullptr"))]
2874		let ret = Ok((self.istexture)(texture));
2875		#[cfg(feature = "diagnose")]
2876		if let Ok(ret) = ret {
2877			return to_result("glIsTexture", ret, self.glGetError());
2878		} else {
2879			return ret
2880		}
2881		#[cfg(not(feature = "diagnose"))]
2882		return ret;
2883	}
2884}
2885
2886impl Version11 {
2887	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
2888		let (_spec, major, minor, release) = base.get_version();
2889		if (major, minor, release) < (1, 1, 0) {
2890			return Self::default();
2891		}
2892		Self {
2893			available: true,
2894			geterror: {let proc = get_proc_address("glGetError"); if proc.is_null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
2895			drawarrays: {let proc = get_proc_address("glDrawArrays"); if proc.is_null() {dummy_pfngldrawarraysproc} else {unsafe{transmute(proc)}}},
2896			drawelements: {let proc = get_proc_address("glDrawElements"); if proc.is_null() {dummy_pfngldrawelementsproc} else {unsafe{transmute(proc)}}},
2897			getpointerv: {let proc = get_proc_address("glGetPointerv"); if proc.is_null() {dummy_pfnglgetpointervproc} else {unsafe{transmute(proc)}}},
2898			polygonoffset: {let proc = get_proc_address("glPolygonOffset"); if proc.is_null() {dummy_pfnglpolygonoffsetproc} else {unsafe{transmute(proc)}}},
2899			copyteximage1d: {let proc = get_proc_address("glCopyTexImage1D"); if proc.is_null() {dummy_pfnglcopyteximage1dproc} else {unsafe{transmute(proc)}}},
2900			copyteximage2d: {let proc = get_proc_address("glCopyTexImage2D"); if proc.is_null() {dummy_pfnglcopyteximage2dproc} else {unsafe{transmute(proc)}}},
2901			copytexsubimage1d: {let proc = get_proc_address("glCopyTexSubImage1D"); if proc.is_null() {dummy_pfnglcopytexsubimage1dproc} else {unsafe{transmute(proc)}}},
2902			copytexsubimage2d: {let proc = get_proc_address("glCopyTexSubImage2D"); if proc.is_null() {dummy_pfnglcopytexsubimage2dproc} else {unsafe{transmute(proc)}}},
2903			texsubimage1d: {let proc = get_proc_address("glTexSubImage1D"); if proc.is_null() {dummy_pfngltexsubimage1dproc} else {unsafe{transmute(proc)}}},
2904			texsubimage2d: {let proc = get_proc_address("glTexSubImage2D"); if proc.is_null() {dummy_pfngltexsubimage2dproc} else {unsafe{transmute(proc)}}},
2905			bindtexture: {let proc = get_proc_address("glBindTexture"); if proc.is_null() {dummy_pfnglbindtextureproc} else {unsafe{transmute(proc)}}},
2906			deletetextures: {let proc = get_proc_address("glDeleteTextures"); if proc.is_null() {dummy_pfngldeletetexturesproc} else {unsafe{transmute(proc)}}},
2907			gentextures: {let proc = get_proc_address("glGenTextures"); if proc.is_null() {dummy_pfnglgentexturesproc} else {unsafe{transmute(proc)}}},
2908			istexture: {let proc = get_proc_address("glIsTexture"); if proc.is_null() {dummy_pfnglistextureproc} else {unsafe{transmute(proc)}}},
2909		}
2910	}
2911	#[inline(always)]
2912	pub fn get_available(&self) -> bool {
2913		self.available
2914	}
2915}
2916
2917impl Default for Version11 {
2918	fn default() -> Self {
2919		Self {
2920			available: false,
2921			geterror: dummy_pfnglgeterrorproc,
2922			drawarrays: dummy_pfngldrawarraysproc,
2923			drawelements: dummy_pfngldrawelementsproc,
2924			getpointerv: dummy_pfnglgetpointervproc,
2925			polygonoffset: dummy_pfnglpolygonoffsetproc,
2926			copyteximage1d: dummy_pfnglcopyteximage1dproc,
2927			copyteximage2d: dummy_pfnglcopyteximage2dproc,
2928			copytexsubimage1d: dummy_pfnglcopytexsubimage1dproc,
2929			copytexsubimage2d: dummy_pfnglcopytexsubimage2dproc,
2930			texsubimage1d: dummy_pfngltexsubimage1dproc,
2931			texsubimage2d: dummy_pfngltexsubimage2dproc,
2932			bindtexture: dummy_pfnglbindtextureproc,
2933			deletetextures: dummy_pfngldeletetexturesproc,
2934			gentextures: dummy_pfnglgentexturesproc,
2935			istexture: dummy_pfnglistextureproc,
2936		}
2937	}
2938}
2939impl Debug for Version11 {
2940	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
2941		if self.available {
2942			f.debug_struct("Version11")
2943			.field("available", &self.available)
2944			.field("drawarrays", unsafe{if transmute::<_, *const c_void>(self.drawarrays) == (dummy_pfngldrawarraysproc as *const c_void) {&null::<PFNGLDRAWARRAYSPROC>()} else {&self.drawarrays}})
2945			.field("drawelements", unsafe{if transmute::<_, *const c_void>(self.drawelements) == (dummy_pfngldrawelementsproc as *const c_void) {&null::<PFNGLDRAWELEMENTSPROC>()} else {&self.drawelements}})
2946			.field("getpointerv", unsafe{if transmute::<_, *const c_void>(self.getpointerv) == (dummy_pfnglgetpointervproc as *const c_void) {&null::<PFNGLGETPOINTERVPROC>()} else {&self.getpointerv}})
2947			.field("polygonoffset", unsafe{if transmute::<_, *const c_void>(self.polygonoffset) == (dummy_pfnglpolygonoffsetproc as *const c_void) {&null::<PFNGLPOLYGONOFFSETPROC>()} else {&self.polygonoffset}})
2948			.field("copyteximage1d", unsafe{if transmute::<_, *const c_void>(self.copyteximage1d) == (dummy_pfnglcopyteximage1dproc as *const c_void) {&null::<PFNGLCOPYTEXIMAGE1DPROC>()} else {&self.copyteximage1d}})
2949			.field("copyteximage2d", unsafe{if transmute::<_, *const c_void>(self.copyteximage2d) == (dummy_pfnglcopyteximage2dproc as *const c_void) {&null::<PFNGLCOPYTEXIMAGE2DPROC>()} else {&self.copyteximage2d}})
2950			.field("copytexsubimage1d", unsafe{if transmute::<_, *const c_void>(self.copytexsubimage1d) == (dummy_pfnglcopytexsubimage1dproc as *const c_void) {&null::<PFNGLCOPYTEXSUBIMAGE1DPROC>()} else {&self.copytexsubimage1d}})
2951			.field("copytexsubimage2d", unsafe{if transmute::<_, *const c_void>(self.copytexsubimage2d) == (dummy_pfnglcopytexsubimage2dproc as *const c_void) {&null::<PFNGLCOPYTEXSUBIMAGE2DPROC>()} else {&self.copytexsubimage2d}})
2952			.field("texsubimage1d", unsafe{if transmute::<_, *const c_void>(self.texsubimage1d) == (dummy_pfngltexsubimage1dproc as *const c_void) {&null::<PFNGLTEXSUBIMAGE1DPROC>()} else {&self.texsubimage1d}})
2953			.field("texsubimage2d", unsafe{if transmute::<_, *const c_void>(self.texsubimage2d) == (dummy_pfngltexsubimage2dproc as *const c_void) {&null::<PFNGLTEXSUBIMAGE2DPROC>()} else {&self.texsubimage2d}})
2954			.field("bindtexture", unsafe{if transmute::<_, *const c_void>(self.bindtexture) == (dummy_pfnglbindtextureproc as *const c_void) {&null::<PFNGLBINDTEXTUREPROC>()} else {&self.bindtexture}})
2955			.field("deletetextures", unsafe{if transmute::<_, *const c_void>(self.deletetextures) == (dummy_pfngldeletetexturesproc as *const c_void) {&null::<PFNGLDELETETEXTURESPROC>()} else {&self.deletetextures}})
2956			.field("gentextures", unsafe{if transmute::<_, *const c_void>(self.gentextures) == (dummy_pfnglgentexturesproc as *const c_void) {&null::<PFNGLGENTEXTURESPROC>()} else {&self.gentextures}})
2957			.field("istexture", unsafe{if transmute::<_, *const c_void>(self.istexture) == (dummy_pfnglistextureproc as *const c_void) {&null::<PFNGLISTEXTUREPROC>()} else {&self.istexture}})
2958			.finish()
2959		} else {
2960			f.debug_struct("Version11")
2961			.field("available", &self.available)
2962			.finish_non_exhaustive()
2963		}
2964	}
2965}
2966
2967/// The prototype to the OpenGL function `DrawRangeElements`
2968type PFNGLDRAWRANGEELEMENTSPROC = extern "system" fn(GLenum, GLuint, GLuint, GLsizei, GLenum, *const c_void);
2969
2970/// The prototype to the OpenGL function `TexImage3D`
2971type PFNGLTEXIMAGE3DPROC = extern "system" fn(GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, *const c_void);
2972
2973/// The prototype to the OpenGL function `TexSubImage3D`
2974type PFNGLTEXSUBIMAGE3DPROC = extern "system" fn(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, *const c_void);
2975
2976/// The prototype to the OpenGL function `CopyTexSubImage3D`
2977type PFNGLCOPYTEXSUBIMAGE3DPROC = extern "system" fn(GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
2978
2979/// The dummy function of `DrawRangeElements()`
2980extern "system" fn dummy_pfngldrawrangeelementsproc (_: GLenum, _: GLuint, _: GLuint, _: GLsizei, _: GLenum, _: *const c_void) {
2981	panic!("OpenGL function pointer `glDrawRangeElements()` is null.")
2982}
2983
2984/// The dummy function of `TexImage3D()`
2985extern "system" fn dummy_pfnglteximage3dproc (_: GLenum, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLsizei, _: GLint, _: GLenum, _: GLenum, _: *const c_void) {
2986	panic!("OpenGL function pointer `glTexImage3D()` is null.")
2987}
2988
2989/// The dummy function of `TexSubImage3D()`
2990extern "system" fn dummy_pfngltexsubimage3dproc (_: GLenum, _: GLint, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLsizei, _: GLenum, _: GLenum, _: *const c_void) {
2991	panic!("OpenGL function pointer `glTexSubImage3D()` is null.")
2992}
2993
2994/// The dummy function of `CopyTexSubImage3D()`
2995extern "system" fn dummy_pfnglcopytexsubimage3dproc (_: GLenum, _: GLint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei) {
2996	panic!("OpenGL function pointer `glCopyTexSubImage3D()` is null.")
2997}
2998/// Constant value defined from OpenGL 1.2
2999pub const GL_UNSIGNED_BYTE_3_3_2: GLenum = 0x8032;
3000
3001/// Constant value defined from OpenGL 1.2
3002pub const GL_UNSIGNED_SHORT_4_4_4_4: GLenum = 0x8033;
3003
3004/// Constant value defined from OpenGL 1.2
3005pub const GL_UNSIGNED_SHORT_5_5_5_1: GLenum = 0x8034;
3006
3007/// Constant value defined from OpenGL 1.2
3008pub const GL_UNSIGNED_INT_8_8_8_8: GLenum = 0x8035;
3009
3010/// Constant value defined from OpenGL 1.2
3011pub const GL_UNSIGNED_INT_10_10_10_2: GLenum = 0x8036;
3012
3013/// Constant value defined from OpenGL 1.2
3014pub const GL_TEXTURE_BINDING_3D: GLenum = 0x806A;
3015
3016/// Constant value defined from OpenGL 1.2
3017pub const GL_PACK_SKIP_IMAGES: GLenum = 0x806B;
3018
3019/// Constant value defined from OpenGL 1.2
3020pub const GL_PACK_IMAGE_HEIGHT: GLenum = 0x806C;
3021
3022/// Constant value defined from OpenGL 1.2
3023pub const GL_UNPACK_SKIP_IMAGES: GLenum = 0x806D;
3024
3025/// Constant value defined from OpenGL 1.2
3026pub const GL_UNPACK_IMAGE_HEIGHT: GLenum = 0x806E;
3027
3028/// Constant value defined from OpenGL 1.2
3029pub const GL_TEXTURE_3D: GLenum = 0x806F;
3030
3031/// Constant value defined from OpenGL 1.2
3032pub const GL_PROXY_TEXTURE_3D: GLenum = 0x8070;
3033
3034/// Constant value defined from OpenGL 1.2
3035pub const GL_TEXTURE_DEPTH: GLenum = 0x8071;
3036
3037/// Constant value defined from OpenGL 1.2
3038pub const GL_TEXTURE_WRAP_R: GLenum = 0x8072;
3039
3040/// Constant value defined from OpenGL 1.2
3041pub const GL_MAX_3D_TEXTURE_SIZE: GLenum = 0x8073;
3042
3043/// Constant value defined from OpenGL 1.2
3044pub const GL_UNSIGNED_BYTE_2_3_3_REV: GLenum = 0x8362;
3045
3046/// Constant value defined from OpenGL 1.2
3047pub const GL_UNSIGNED_SHORT_5_6_5: GLenum = 0x8363;
3048
3049/// Constant value defined from OpenGL 1.2
3050pub const GL_UNSIGNED_SHORT_5_6_5_REV: GLenum = 0x8364;
3051
3052/// Constant value defined from OpenGL 1.2
3053pub const GL_UNSIGNED_SHORT_4_4_4_4_REV: GLenum = 0x8365;
3054
3055/// Constant value defined from OpenGL 1.2
3056pub const GL_UNSIGNED_SHORT_1_5_5_5_REV: GLenum = 0x8366;
3057
3058/// Constant value defined from OpenGL 1.2
3059pub const GL_UNSIGNED_INT_8_8_8_8_REV: GLenum = 0x8367;
3060
3061/// Constant value defined from OpenGL 1.2
3062pub const GL_UNSIGNED_INT_2_10_10_10_REV: GLenum = 0x8368;
3063
3064/// Constant value defined from OpenGL 1.2
3065pub const GL_BGR: GLenum = 0x80E0;
3066
3067/// Constant value defined from OpenGL 1.2
3068pub const GL_BGRA: GLenum = 0x80E1;
3069
3070/// Constant value defined from OpenGL 1.2
3071pub const GL_MAX_ELEMENTS_VERTICES: GLenum = 0x80E8;
3072
3073/// Constant value defined from OpenGL 1.2
3074pub const GL_MAX_ELEMENTS_INDICES: GLenum = 0x80E9;
3075
3076/// Constant value defined from OpenGL 1.2
3077pub const GL_CLAMP_TO_EDGE: GLint = 0x812F;
3078
3079/// Constant value defined from OpenGL 1.2
3080pub const GL_TEXTURE_MIN_LOD: GLenum = 0x813A;
3081
3082/// Constant value defined from OpenGL 1.2
3083pub const GL_TEXTURE_MAX_LOD: GLenum = 0x813B;
3084
3085/// Constant value defined from OpenGL 1.2
3086pub const GL_TEXTURE_BASE_LEVEL: GLenum = 0x813C;
3087
3088/// Constant value defined from OpenGL 1.2
3089pub const GL_TEXTURE_MAX_LEVEL: GLenum = 0x813D;
3090
3091/// Constant value defined from OpenGL 1.2
3092pub const GL_SMOOTH_POINT_SIZE_RANGE: GLenum = 0x0B12;
3093
3094/// Constant value defined from OpenGL 1.2
3095pub const GL_SMOOTH_POINT_SIZE_GRANULARITY: GLenum = 0x0B13;
3096
3097/// Constant value defined from OpenGL 1.2
3098pub const GL_SMOOTH_LINE_WIDTH_RANGE: GLenum = 0x0B22;
3099
3100/// Constant value defined from OpenGL 1.2
3101pub const GL_SMOOTH_LINE_WIDTH_GRANULARITY: GLenum = 0x0B23;
3102
3103/// Constant value defined from OpenGL 1.2
3104pub const GL_ALIASED_LINE_WIDTH_RANGE: GLenum = 0x846E;
3105
3106/// Constant value defined from OpenGL 1.2
3107pub const GL_RESCALE_NORMAL: GLenum = 0x803A;
3108
3109/// Constant value defined from OpenGL 1.2
3110pub const GL_LIGHT_MODEL_COLOR_CONTROL: GLenum = 0x81F8;
3111
3112/// Constant value defined from OpenGL 1.2
3113pub const GL_SINGLE_COLOR: GLenum = 0x81F9;
3114
3115/// Constant value defined from OpenGL 1.2
3116pub const GL_SEPARATE_SPECULAR_COLOR: GLenum = 0x81FA;
3117
3118/// Constant value defined from OpenGL 1.2
3119pub const GL_ALIASED_POINT_SIZE_RANGE: GLenum = 0x846D;
3120
3121/// Functions from OpenGL version 1.2
3122pub trait GL_1_2 {
3123	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
3124	fn glGetError(&self) -> GLenum;
3125
3126	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawRangeElements.xhtml>
3127	fn glDrawRangeElements(&self, mode: GLenum, start: GLuint, end: GLuint, count: GLsizei, type_: GLenum, indices: *const c_void) -> Result<()>;
3128
3129	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexImage3D.xhtml>
3130	fn glTexImage3D(&self, target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
3131
3132	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexSubImage3D.xhtml>
3133	fn glTexSubImage3D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
3134
3135	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTexSubImage3D.xhtml>
3136	fn glCopyTexSubImage3D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
3137}
3138/// Functions from OpenGL version 1.2
3139#[derive(Clone, Copy, PartialEq, Eq, Hash)]
3140pub struct Version12 {
3141	/// Is OpenGL version 1.2 available
3142	available: bool,
3143
3144	/// The function pointer to `glGetError()`
3145	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
3146	pub geterror: PFNGLGETERRORPROC,
3147
3148	/// The function pointer to `glDrawRangeElements()`
3149	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawRangeElements.xhtml>
3150	pub drawrangeelements: PFNGLDRAWRANGEELEMENTSPROC,
3151
3152	/// The function pointer to `glTexImage3D()`
3153	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexImage3D.xhtml>
3154	pub teximage3d: PFNGLTEXIMAGE3DPROC,
3155
3156	/// The function pointer to `glTexSubImage3D()`
3157	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexSubImage3D.xhtml>
3158	pub texsubimage3d: PFNGLTEXSUBIMAGE3DPROC,
3159
3160	/// The function pointer to `glCopyTexSubImage3D()`
3161	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTexSubImage3D.xhtml>
3162	pub copytexsubimage3d: PFNGLCOPYTEXSUBIMAGE3DPROC,
3163}
3164
3165impl GL_1_2 for Version12 {
3166	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
3167	#[inline(always)]
3168	fn glGetError(&self) -> GLenum {
3169		(self.geterror)()
3170	}
3171	#[inline(always)]
3172	fn glDrawRangeElements(&self, mode: GLenum, start: GLuint, end: GLuint, count: GLsizei, type_: GLenum, indices: *const c_void) -> Result<()> {
3173		#[cfg(feature = "catch_nullptr")]
3174		let ret = process_catch("glDrawRangeElements", catch_unwind(||(self.drawrangeelements)(mode, start, end, count, type_, indices)));
3175		#[cfg(not(feature = "catch_nullptr"))]
3176		let ret = {(self.drawrangeelements)(mode, start, end, count, type_, indices); Ok(())};
3177		#[cfg(feature = "diagnose")]
3178		if let Ok(ret) = ret {
3179			return to_result("glDrawRangeElements", ret, self.glGetError());
3180		} else {
3181			return ret
3182		}
3183		#[cfg(not(feature = "diagnose"))]
3184		return ret;
3185	}
3186	#[inline(always)]
3187	fn glTexImage3D(&self, target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
3188		#[cfg(feature = "catch_nullptr")]
3189		let ret = process_catch("glTexImage3D", catch_unwind(||(self.teximage3d)(target, level, internalformat, width, height, depth, border, format, type_, pixels)));
3190		#[cfg(not(feature = "catch_nullptr"))]
3191		let ret = {(self.teximage3d)(target, level, internalformat, width, height, depth, border, format, type_, pixels); Ok(())};
3192		#[cfg(feature = "diagnose")]
3193		if let Ok(ret) = ret {
3194			return to_result("glTexImage3D", ret, self.glGetError());
3195		} else {
3196			return ret
3197		}
3198		#[cfg(not(feature = "diagnose"))]
3199		return ret;
3200	}
3201	#[inline(always)]
3202	fn glTexSubImage3D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
3203		#[cfg(feature = "catch_nullptr")]
3204		let ret = process_catch("glTexSubImage3D", catch_unwind(||(self.texsubimage3d)(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, pixels)));
3205		#[cfg(not(feature = "catch_nullptr"))]
3206		let ret = {(self.texsubimage3d)(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, pixels); Ok(())};
3207		#[cfg(feature = "diagnose")]
3208		if let Ok(ret) = ret {
3209			return to_result("glTexSubImage3D", ret, self.glGetError());
3210		} else {
3211			return ret
3212		}
3213		#[cfg(not(feature = "diagnose"))]
3214		return ret;
3215	}
3216	#[inline(always)]
3217	fn glCopyTexSubImage3D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
3218		#[cfg(feature = "catch_nullptr")]
3219		let ret = process_catch("glCopyTexSubImage3D", catch_unwind(||(self.copytexsubimage3d)(target, level, xoffset, yoffset, zoffset, x, y, width, height)));
3220		#[cfg(not(feature = "catch_nullptr"))]
3221		let ret = {(self.copytexsubimage3d)(target, level, xoffset, yoffset, zoffset, x, y, width, height); Ok(())};
3222		#[cfg(feature = "diagnose")]
3223		if let Ok(ret) = ret {
3224			return to_result("glCopyTexSubImage3D", ret, self.glGetError());
3225		} else {
3226			return ret
3227		}
3228		#[cfg(not(feature = "diagnose"))]
3229		return ret;
3230	}
3231}
3232
3233impl Version12 {
3234	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
3235		let (_spec, major, minor, release) = base.get_version();
3236		if (major, minor, release) < (1, 2, 0) {
3237			return Self::default();
3238		}
3239		Self {
3240			available: true,
3241			geterror: {let proc = get_proc_address("glGetError"); if proc.is_null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
3242			drawrangeelements: {let proc = get_proc_address("glDrawRangeElements"); if proc.is_null() {dummy_pfngldrawrangeelementsproc} else {unsafe{transmute(proc)}}},
3243			teximage3d: {let proc = get_proc_address("glTexImage3D"); if proc.is_null() {dummy_pfnglteximage3dproc} else {unsafe{transmute(proc)}}},
3244			texsubimage3d: {let proc = get_proc_address("glTexSubImage3D"); if proc.is_null() {dummy_pfngltexsubimage3dproc} else {unsafe{transmute(proc)}}},
3245			copytexsubimage3d: {let proc = get_proc_address("glCopyTexSubImage3D"); if proc.is_null() {dummy_pfnglcopytexsubimage3dproc} else {unsafe{transmute(proc)}}},
3246		}
3247	}
3248	#[inline(always)]
3249	pub fn get_available(&self) -> bool {
3250		self.available
3251	}
3252}
3253
3254impl Default for Version12 {
3255	fn default() -> Self {
3256		Self {
3257			available: false,
3258			geterror: dummy_pfnglgeterrorproc,
3259			drawrangeelements: dummy_pfngldrawrangeelementsproc,
3260			teximage3d: dummy_pfnglteximage3dproc,
3261			texsubimage3d: dummy_pfngltexsubimage3dproc,
3262			copytexsubimage3d: dummy_pfnglcopytexsubimage3dproc,
3263		}
3264	}
3265}
3266impl Debug for Version12 {
3267	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
3268		if self.available {
3269			f.debug_struct("Version12")
3270			.field("available", &self.available)
3271			.field("drawrangeelements", unsafe{if transmute::<_, *const c_void>(self.drawrangeelements) == (dummy_pfngldrawrangeelementsproc as *const c_void) {&null::<PFNGLDRAWRANGEELEMENTSPROC>()} else {&self.drawrangeelements}})
3272			.field("teximage3d", unsafe{if transmute::<_, *const c_void>(self.teximage3d) == (dummy_pfnglteximage3dproc as *const c_void) {&null::<PFNGLTEXIMAGE3DPROC>()} else {&self.teximage3d}})
3273			.field("texsubimage3d", unsafe{if transmute::<_, *const c_void>(self.texsubimage3d) == (dummy_pfngltexsubimage3dproc as *const c_void) {&null::<PFNGLTEXSUBIMAGE3DPROC>()} else {&self.texsubimage3d}})
3274			.field("copytexsubimage3d", unsafe{if transmute::<_, *const c_void>(self.copytexsubimage3d) == (dummy_pfnglcopytexsubimage3dproc as *const c_void) {&null::<PFNGLCOPYTEXSUBIMAGE3DPROC>()} else {&self.copytexsubimage3d}})
3275			.finish()
3276		} else {
3277			f.debug_struct("Version12")
3278			.field("available", &self.available)
3279			.finish_non_exhaustive()
3280		}
3281	}
3282}
3283
3284/// The prototype to the OpenGL function `ActiveTexture`
3285type PFNGLACTIVETEXTUREPROC = extern "system" fn(GLenum);
3286
3287/// The prototype to the OpenGL function `SampleCoverage`
3288type PFNGLSAMPLECOVERAGEPROC = extern "system" fn(GLfloat, GLboolean);
3289
3290/// The prototype to the OpenGL function `CompressedTexImage3D`
3291type PFNGLCOMPRESSEDTEXIMAGE3DPROC = extern "system" fn(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, *const c_void);
3292
3293/// The prototype to the OpenGL function `CompressedTexImage2D`
3294type PFNGLCOMPRESSEDTEXIMAGE2DPROC = extern "system" fn(GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, *const c_void);
3295
3296/// The prototype to the OpenGL function `CompressedTexImage1D`
3297type PFNGLCOMPRESSEDTEXIMAGE1DPROC = extern "system" fn(GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, *const c_void);
3298
3299/// The prototype to the OpenGL function `CompressedTexSubImage3D`
3300type PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC = extern "system" fn(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, *const c_void);
3301
3302/// The prototype to the OpenGL function `CompressedTexSubImage2D`
3303type PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC = extern "system" fn(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, *const c_void);
3304
3305/// The prototype to the OpenGL function `CompressedTexSubImage1D`
3306type PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC = extern "system" fn(GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, *const c_void);
3307
3308/// The prototype to the OpenGL function `GetCompressedTexImage`
3309type PFNGLGETCOMPRESSEDTEXIMAGEPROC = extern "system" fn(GLenum, GLint, *mut c_void);
3310
3311/// The prototype to the OpenGL function `ClientActiveTexture`
3312type PFNGLCLIENTACTIVETEXTUREPROC = extern "system" fn(GLenum);
3313
3314/// The prototype to the OpenGL function `MultiTexCoord1d`
3315type PFNGLMULTITEXCOORD1DPROC = extern "system" fn(GLenum, GLdouble);
3316
3317/// The prototype to the OpenGL function `MultiTexCoord1dv`
3318type PFNGLMULTITEXCOORD1DVPROC = extern "system" fn(GLenum, *const GLdouble);
3319
3320/// The prototype to the OpenGL function `MultiTexCoord1f`
3321type PFNGLMULTITEXCOORD1FPROC = extern "system" fn(GLenum, GLfloat);
3322
3323/// The prototype to the OpenGL function `MultiTexCoord1fv`
3324type PFNGLMULTITEXCOORD1FVPROC = extern "system" fn(GLenum, *const GLfloat);
3325
3326/// The prototype to the OpenGL function `MultiTexCoord1i`
3327type PFNGLMULTITEXCOORD1IPROC = extern "system" fn(GLenum, GLint);
3328
3329/// The prototype to the OpenGL function `MultiTexCoord1iv`
3330type PFNGLMULTITEXCOORD1IVPROC = extern "system" fn(GLenum, *const GLint);
3331
3332/// The prototype to the OpenGL function `MultiTexCoord1s`
3333type PFNGLMULTITEXCOORD1SPROC = extern "system" fn(GLenum, GLshort);
3334
3335/// The prototype to the OpenGL function `MultiTexCoord1sv`
3336type PFNGLMULTITEXCOORD1SVPROC = extern "system" fn(GLenum, *const GLshort);
3337
3338/// The prototype to the OpenGL function `MultiTexCoord2d`
3339type PFNGLMULTITEXCOORD2DPROC = extern "system" fn(GLenum, GLdouble, GLdouble);
3340
3341/// The prototype to the OpenGL function `MultiTexCoord2dv`
3342type PFNGLMULTITEXCOORD2DVPROC = extern "system" fn(GLenum, *const GLdouble);
3343
3344/// The prototype to the OpenGL function `MultiTexCoord2f`
3345type PFNGLMULTITEXCOORD2FPROC = extern "system" fn(GLenum, GLfloat, GLfloat);
3346
3347/// The prototype to the OpenGL function `MultiTexCoord2fv`
3348type PFNGLMULTITEXCOORD2FVPROC = extern "system" fn(GLenum, *const GLfloat);
3349
3350/// The prototype to the OpenGL function `MultiTexCoord2i`
3351type PFNGLMULTITEXCOORD2IPROC = extern "system" fn(GLenum, GLint, GLint);
3352
3353/// The prototype to the OpenGL function `MultiTexCoord2iv`
3354type PFNGLMULTITEXCOORD2IVPROC = extern "system" fn(GLenum, *const GLint);
3355
3356/// The prototype to the OpenGL function `MultiTexCoord2s`
3357type PFNGLMULTITEXCOORD2SPROC = extern "system" fn(GLenum, GLshort, GLshort);
3358
3359/// The prototype to the OpenGL function `MultiTexCoord2sv`
3360type PFNGLMULTITEXCOORD2SVPROC = extern "system" fn(GLenum, *const GLshort);
3361
3362/// The prototype to the OpenGL function `MultiTexCoord3d`
3363type PFNGLMULTITEXCOORD3DPROC = extern "system" fn(GLenum, GLdouble, GLdouble, GLdouble);
3364
3365/// The prototype to the OpenGL function `MultiTexCoord3dv`
3366type PFNGLMULTITEXCOORD3DVPROC = extern "system" fn(GLenum, *const GLdouble);
3367
3368/// The prototype to the OpenGL function `MultiTexCoord3f`
3369type PFNGLMULTITEXCOORD3FPROC = extern "system" fn(GLenum, GLfloat, GLfloat, GLfloat);
3370
3371/// The prototype to the OpenGL function `MultiTexCoord3fv`
3372type PFNGLMULTITEXCOORD3FVPROC = extern "system" fn(GLenum, *const GLfloat);
3373
3374/// The prototype to the OpenGL function `MultiTexCoord3i`
3375type PFNGLMULTITEXCOORD3IPROC = extern "system" fn(GLenum, GLint, GLint, GLint);
3376
3377/// The prototype to the OpenGL function `MultiTexCoord3iv`
3378type PFNGLMULTITEXCOORD3IVPROC = extern "system" fn(GLenum, *const GLint);
3379
3380/// The prototype to the OpenGL function `MultiTexCoord3s`
3381type PFNGLMULTITEXCOORD3SPROC = extern "system" fn(GLenum, GLshort, GLshort, GLshort);
3382
3383/// The prototype to the OpenGL function `MultiTexCoord3sv`
3384type PFNGLMULTITEXCOORD3SVPROC = extern "system" fn(GLenum, *const GLshort);
3385
3386/// The prototype to the OpenGL function `MultiTexCoord4d`
3387type PFNGLMULTITEXCOORD4DPROC = extern "system" fn(GLenum, GLdouble, GLdouble, GLdouble, GLdouble);
3388
3389/// The prototype to the OpenGL function `MultiTexCoord4dv`
3390type PFNGLMULTITEXCOORD4DVPROC = extern "system" fn(GLenum, *const GLdouble);
3391
3392/// The prototype to the OpenGL function `MultiTexCoord4f`
3393type PFNGLMULTITEXCOORD4FPROC = extern "system" fn(GLenum, GLfloat, GLfloat, GLfloat, GLfloat);
3394
3395/// The prototype to the OpenGL function `MultiTexCoord4fv`
3396type PFNGLMULTITEXCOORD4FVPROC = extern "system" fn(GLenum, *const GLfloat);
3397
3398/// The prototype to the OpenGL function `MultiTexCoord4i`
3399type PFNGLMULTITEXCOORD4IPROC = extern "system" fn(GLenum, GLint, GLint, GLint, GLint);
3400
3401/// The prototype to the OpenGL function `MultiTexCoord4iv`
3402type PFNGLMULTITEXCOORD4IVPROC = extern "system" fn(GLenum, *const GLint);
3403
3404/// The prototype to the OpenGL function `MultiTexCoord4s`
3405type PFNGLMULTITEXCOORD4SPROC = extern "system" fn(GLenum, GLshort, GLshort, GLshort, GLshort);
3406
3407/// The prototype to the OpenGL function `MultiTexCoord4sv`
3408type PFNGLMULTITEXCOORD4SVPROC = extern "system" fn(GLenum, *const GLshort);
3409
3410/// The prototype to the OpenGL function `LoadTransposeMatrixf`
3411type PFNGLLOADTRANSPOSEMATRIXFPROC = extern "system" fn(*const GLfloat);
3412
3413/// The prototype to the OpenGL function `LoadTransposeMatrixd`
3414type PFNGLLOADTRANSPOSEMATRIXDPROC = extern "system" fn(*const GLdouble);
3415
3416/// The prototype to the OpenGL function `MultTransposeMatrixf`
3417type PFNGLMULTTRANSPOSEMATRIXFPROC = extern "system" fn(*const GLfloat);
3418
3419/// The prototype to the OpenGL function `MultTransposeMatrixd`
3420type PFNGLMULTTRANSPOSEMATRIXDPROC = extern "system" fn(*const GLdouble);
3421
3422/// The dummy function of `ActiveTexture()`
3423extern "system" fn dummy_pfnglactivetextureproc (_: GLenum) {
3424	panic!("OpenGL function pointer `glActiveTexture()` is null.")
3425}
3426
3427/// The dummy function of `SampleCoverage()`
3428extern "system" fn dummy_pfnglsamplecoverageproc (_: GLfloat, _: GLboolean) {
3429	panic!("OpenGL function pointer `glSampleCoverage()` is null.")
3430}
3431
3432/// The dummy function of `CompressedTexImage3D()`
3433extern "system" fn dummy_pfnglcompressedteximage3dproc (_: GLenum, _: GLint, _: GLenum, _: GLsizei, _: GLsizei, _: GLsizei, _: GLint, _: GLsizei, _: *const c_void) {
3434	panic!("OpenGL function pointer `glCompressedTexImage3D()` is null.")
3435}
3436
3437/// The dummy function of `CompressedTexImage2D()`
3438extern "system" fn dummy_pfnglcompressedteximage2dproc (_: GLenum, _: GLint, _: GLenum, _: GLsizei, _: GLsizei, _: GLint, _: GLsizei, _: *const c_void) {
3439	panic!("OpenGL function pointer `glCompressedTexImage2D()` is null.")
3440}
3441
3442/// The dummy function of `CompressedTexImage1D()`
3443extern "system" fn dummy_pfnglcompressedteximage1dproc (_: GLenum, _: GLint, _: GLenum, _: GLsizei, _: GLint, _: GLsizei, _: *const c_void) {
3444	panic!("OpenGL function pointer `glCompressedTexImage1D()` is null.")
3445}
3446
3447/// The dummy function of `CompressedTexSubImage3D()`
3448extern "system" fn dummy_pfnglcompressedtexsubimage3dproc (_: GLenum, _: GLint, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLsizei, _: GLenum, _: GLsizei, _: *const c_void) {
3449	panic!("OpenGL function pointer `glCompressedTexSubImage3D()` is null.")
3450}
3451
3452/// The dummy function of `CompressedTexSubImage2D()`
3453extern "system" fn dummy_pfnglcompressedtexsubimage2dproc (_: GLenum, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLenum, _: GLsizei, _: *const c_void) {
3454	panic!("OpenGL function pointer `glCompressedTexSubImage2D()` is null.")
3455}
3456
3457/// The dummy function of `CompressedTexSubImage1D()`
3458extern "system" fn dummy_pfnglcompressedtexsubimage1dproc (_: GLenum, _: GLint, _: GLint, _: GLsizei, _: GLenum, _: GLsizei, _: *const c_void) {
3459	panic!("OpenGL function pointer `glCompressedTexSubImage1D()` is null.")
3460}
3461
3462/// The dummy function of `GetCompressedTexImage()`
3463extern "system" fn dummy_pfnglgetcompressedteximageproc (_: GLenum, _: GLint, _: *mut c_void) {
3464	panic!("OpenGL function pointer `glGetCompressedTexImage()` is null.")
3465}
3466
3467/// The dummy function of `ClientActiveTexture()`
3468extern "system" fn dummy_pfnglclientactivetextureproc (_: GLenum) {
3469	panic!("OpenGL function pointer `glClientActiveTexture()` is null.")
3470}
3471
3472/// The dummy function of `MultiTexCoord1d()`
3473extern "system" fn dummy_pfnglmultitexcoord1dproc (_: GLenum, _: GLdouble) {
3474	panic!("OpenGL function pointer `glMultiTexCoord1d()` is null.")
3475}
3476
3477/// The dummy function of `MultiTexCoord1dv()`
3478extern "system" fn dummy_pfnglmultitexcoord1dvproc (_: GLenum, _: *const GLdouble) {
3479	panic!("OpenGL function pointer `glMultiTexCoord1dv()` is null.")
3480}
3481
3482/// The dummy function of `MultiTexCoord1f()`
3483extern "system" fn dummy_pfnglmultitexcoord1fproc (_: GLenum, _: GLfloat) {
3484	panic!("OpenGL function pointer `glMultiTexCoord1f()` is null.")
3485}
3486
3487/// The dummy function of `MultiTexCoord1fv()`
3488extern "system" fn dummy_pfnglmultitexcoord1fvproc (_: GLenum, _: *const GLfloat) {
3489	panic!("OpenGL function pointer `glMultiTexCoord1fv()` is null.")
3490}
3491
3492/// The dummy function of `MultiTexCoord1i()`
3493extern "system" fn dummy_pfnglmultitexcoord1iproc (_: GLenum, _: GLint) {
3494	panic!("OpenGL function pointer `glMultiTexCoord1i()` is null.")
3495}
3496
3497/// The dummy function of `MultiTexCoord1iv()`
3498extern "system" fn dummy_pfnglmultitexcoord1ivproc (_: GLenum, _: *const GLint) {
3499	panic!("OpenGL function pointer `glMultiTexCoord1iv()` is null.")
3500}
3501
3502/// The dummy function of `MultiTexCoord1s()`
3503extern "system" fn dummy_pfnglmultitexcoord1sproc (_: GLenum, _: GLshort) {
3504	panic!("OpenGL function pointer `glMultiTexCoord1s()` is null.")
3505}
3506
3507/// The dummy function of `MultiTexCoord1sv()`
3508extern "system" fn dummy_pfnglmultitexcoord1svproc (_: GLenum, _: *const GLshort) {
3509	panic!("OpenGL function pointer `glMultiTexCoord1sv()` is null.")
3510}
3511
3512/// The dummy function of `MultiTexCoord2d()`
3513extern "system" fn dummy_pfnglmultitexcoord2dproc (_: GLenum, _: GLdouble, _: GLdouble) {
3514	panic!("OpenGL function pointer `glMultiTexCoord2d()` is null.")
3515}
3516
3517/// The dummy function of `MultiTexCoord2dv()`
3518extern "system" fn dummy_pfnglmultitexcoord2dvproc (_: GLenum, _: *const GLdouble) {
3519	panic!("OpenGL function pointer `glMultiTexCoord2dv()` is null.")
3520}
3521
3522/// The dummy function of `MultiTexCoord2f()`
3523extern "system" fn dummy_pfnglmultitexcoord2fproc (_: GLenum, _: GLfloat, _: GLfloat) {
3524	panic!("OpenGL function pointer `glMultiTexCoord2f()` is null.")
3525}
3526
3527/// The dummy function of `MultiTexCoord2fv()`
3528extern "system" fn dummy_pfnglmultitexcoord2fvproc (_: GLenum, _: *const GLfloat) {
3529	panic!("OpenGL function pointer `glMultiTexCoord2fv()` is null.")
3530}
3531
3532/// The dummy function of `MultiTexCoord2i()`
3533extern "system" fn dummy_pfnglmultitexcoord2iproc (_: GLenum, _: GLint, _: GLint) {
3534	panic!("OpenGL function pointer `glMultiTexCoord2i()` is null.")
3535}
3536
3537/// The dummy function of `MultiTexCoord2iv()`
3538extern "system" fn dummy_pfnglmultitexcoord2ivproc (_: GLenum, _: *const GLint) {
3539	panic!("OpenGL function pointer `glMultiTexCoord2iv()` is null.")
3540}
3541
3542/// The dummy function of `MultiTexCoord2s()`
3543extern "system" fn dummy_pfnglmultitexcoord2sproc (_: GLenum, _: GLshort, _: GLshort) {
3544	panic!("OpenGL function pointer `glMultiTexCoord2s()` is null.")
3545}
3546
3547/// The dummy function of `MultiTexCoord2sv()`
3548extern "system" fn dummy_pfnglmultitexcoord2svproc (_: GLenum, _: *const GLshort) {
3549	panic!("OpenGL function pointer `glMultiTexCoord2sv()` is null.")
3550}
3551
3552/// The dummy function of `MultiTexCoord3d()`
3553extern "system" fn dummy_pfnglmultitexcoord3dproc (_: GLenum, _: GLdouble, _: GLdouble, _: GLdouble) {
3554	panic!("OpenGL function pointer `glMultiTexCoord3d()` is null.")
3555}
3556
3557/// The dummy function of `MultiTexCoord3dv()`
3558extern "system" fn dummy_pfnglmultitexcoord3dvproc (_: GLenum, _: *const GLdouble) {
3559	panic!("OpenGL function pointer `glMultiTexCoord3dv()` is null.")
3560}
3561
3562/// The dummy function of `MultiTexCoord3f()`
3563extern "system" fn dummy_pfnglmultitexcoord3fproc (_: GLenum, _: GLfloat, _: GLfloat, _: GLfloat) {
3564	panic!("OpenGL function pointer `glMultiTexCoord3f()` is null.")
3565}
3566
3567/// The dummy function of `MultiTexCoord3fv()`
3568extern "system" fn dummy_pfnglmultitexcoord3fvproc (_: GLenum, _: *const GLfloat) {
3569	panic!("OpenGL function pointer `glMultiTexCoord3fv()` is null.")
3570}
3571
3572/// The dummy function of `MultiTexCoord3i()`
3573extern "system" fn dummy_pfnglmultitexcoord3iproc (_: GLenum, _: GLint, _: GLint, _: GLint) {
3574	panic!("OpenGL function pointer `glMultiTexCoord3i()` is null.")
3575}
3576
3577/// The dummy function of `MultiTexCoord3iv()`
3578extern "system" fn dummy_pfnglmultitexcoord3ivproc (_: GLenum, _: *const GLint) {
3579	panic!("OpenGL function pointer `glMultiTexCoord3iv()` is null.")
3580}
3581
3582/// The dummy function of `MultiTexCoord3s()`
3583extern "system" fn dummy_pfnglmultitexcoord3sproc (_: GLenum, _: GLshort, _: GLshort, _: GLshort) {
3584	panic!("OpenGL function pointer `glMultiTexCoord3s()` is null.")
3585}
3586
3587/// The dummy function of `MultiTexCoord3sv()`
3588extern "system" fn dummy_pfnglmultitexcoord3svproc (_: GLenum, _: *const GLshort) {
3589	panic!("OpenGL function pointer `glMultiTexCoord3sv()` is null.")
3590}
3591
3592/// The dummy function of `MultiTexCoord4d()`
3593extern "system" fn dummy_pfnglmultitexcoord4dproc (_: GLenum, _: GLdouble, _: GLdouble, _: GLdouble, _: GLdouble) {
3594	panic!("OpenGL function pointer `glMultiTexCoord4d()` is null.")
3595}
3596
3597/// The dummy function of `MultiTexCoord4dv()`
3598extern "system" fn dummy_pfnglmultitexcoord4dvproc (_: GLenum, _: *const GLdouble) {
3599	panic!("OpenGL function pointer `glMultiTexCoord4dv()` is null.")
3600}
3601
3602/// The dummy function of `MultiTexCoord4f()`
3603extern "system" fn dummy_pfnglmultitexcoord4fproc (_: GLenum, _: GLfloat, _: GLfloat, _: GLfloat, _: GLfloat) {
3604	panic!("OpenGL function pointer `glMultiTexCoord4f()` is null.")
3605}
3606
3607/// The dummy function of `MultiTexCoord4fv()`
3608extern "system" fn dummy_pfnglmultitexcoord4fvproc (_: GLenum, _: *const GLfloat) {
3609	panic!("OpenGL function pointer `glMultiTexCoord4fv()` is null.")
3610}
3611
3612/// The dummy function of `MultiTexCoord4i()`
3613extern "system" fn dummy_pfnglmultitexcoord4iproc (_: GLenum, _: GLint, _: GLint, _: GLint, _: GLint) {
3614	panic!("OpenGL function pointer `glMultiTexCoord4i()` is null.")
3615}
3616
3617/// The dummy function of `MultiTexCoord4iv()`
3618extern "system" fn dummy_pfnglmultitexcoord4ivproc (_: GLenum, _: *const GLint) {
3619	panic!("OpenGL function pointer `glMultiTexCoord4iv()` is null.")
3620}
3621
3622/// The dummy function of `MultiTexCoord4s()`
3623extern "system" fn dummy_pfnglmultitexcoord4sproc (_: GLenum, _: GLshort, _: GLshort, _: GLshort, _: GLshort) {
3624	panic!("OpenGL function pointer `glMultiTexCoord4s()` is null.")
3625}
3626
3627/// The dummy function of `MultiTexCoord4sv()`
3628extern "system" fn dummy_pfnglmultitexcoord4svproc (_: GLenum, _: *const GLshort) {
3629	panic!("OpenGL function pointer `glMultiTexCoord4sv()` is null.")
3630}
3631
3632/// The dummy function of `LoadTransposeMatrixf()`
3633extern "system" fn dummy_pfnglloadtransposematrixfproc (_: *const GLfloat) {
3634	panic!("OpenGL function pointer `glLoadTransposeMatrixf()` is null.")
3635}
3636
3637/// The dummy function of `LoadTransposeMatrixd()`
3638extern "system" fn dummy_pfnglloadtransposematrixdproc (_: *const GLdouble) {
3639	panic!("OpenGL function pointer `glLoadTransposeMatrixd()` is null.")
3640}
3641
3642/// The dummy function of `MultTransposeMatrixf()`
3643extern "system" fn dummy_pfnglmulttransposematrixfproc (_: *const GLfloat) {
3644	panic!("OpenGL function pointer `glMultTransposeMatrixf()` is null.")
3645}
3646
3647/// The dummy function of `MultTransposeMatrixd()`
3648extern "system" fn dummy_pfnglmulttransposematrixdproc (_: *const GLdouble) {
3649	panic!("OpenGL function pointer `glMultTransposeMatrixd()` is null.")
3650}
3651/// Constant value defined from OpenGL 1.3
3652pub const GL_TEXTURE0: GLenum = 0x84C0;
3653
3654/// Constant value defined from OpenGL 1.3
3655pub const GL_TEXTURE1: GLenum = 0x84C1;
3656
3657/// Constant value defined from OpenGL 1.3
3658pub const GL_TEXTURE2: GLenum = 0x84C2;
3659
3660/// Constant value defined from OpenGL 1.3
3661pub const GL_TEXTURE3: GLenum = 0x84C3;
3662
3663/// Constant value defined from OpenGL 1.3
3664pub const GL_TEXTURE4: GLenum = 0x84C4;
3665
3666/// Constant value defined from OpenGL 1.3
3667pub const GL_TEXTURE5: GLenum = 0x84C5;
3668
3669/// Constant value defined from OpenGL 1.3
3670pub const GL_TEXTURE6: GLenum = 0x84C6;
3671
3672/// Constant value defined from OpenGL 1.3
3673pub const GL_TEXTURE7: GLenum = 0x84C7;
3674
3675/// Constant value defined from OpenGL 1.3
3676pub const GL_TEXTURE8: GLenum = 0x84C8;
3677
3678/// Constant value defined from OpenGL 1.3
3679pub const GL_TEXTURE9: GLenum = 0x84C9;
3680
3681/// Constant value defined from OpenGL 1.3
3682pub const GL_TEXTURE10: GLenum = 0x84CA;
3683
3684/// Constant value defined from OpenGL 1.3
3685pub const GL_TEXTURE11: GLenum = 0x84CB;
3686
3687/// Constant value defined from OpenGL 1.3
3688pub const GL_TEXTURE12: GLenum = 0x84CC;
3689
3690/// Constant value defined from OpenGL 1.3
3691pub const GL_TEXTURE13: GLenum = 0x84CD;
3692
3693/// Constant value defined from OpenGL 1.3
3694pub const GL_TEXTURE14: GLenum = 0x84CE;
3695
3696/// Constant value defined from OpenGL 1.3
3697pub const GL_TEXTURE15: GLenum = 0x84CF;
3698
3699/// Constant value defined from OpenGL 1.3
3700pub const GL_TEXTURE16: GLenum = 0x84D0;
3701
3702/// Constant value defined from OpenGL 1.3
3703pub const GL_TEXTURE17: GLenum = 0x84D1;
3704
3705/// Constant value defined from OpenGL 1.3
3706pub const GL_TEXTURE18: GLenum = 0x84D2;
3707
3708/// Constant value defined from OpenGL 1.3
3709pub const GL_TEXTURE19: GLenum = 0x84D3;
3710
3711/// Constant value defined from OpenGL 1.3
3712pub const GL_TEXTURE20: GLenum = 0x84D4;
3713
3714/// Constant value defined from OpenGL 1.3
3715pub const GL_TEXTURE21: GLenum = 0x84D5;
3716
3717/// Constant value defined from OpenGL 1.3
3718pub const GL_TEXTURE22: GLenum = 0x84D6;
3719
3720/// Constant value defined from OpenGL 1.3
3721pub const GL_TEXTURE23: GLenum = 0x84D7;
3722
3723/// Constant value defined from OpenGL 1.3
3724pub const GL_TEXTURE24: GLenum = 0x84D8;
3725
3726/// Constant value defined from OpenGL 1.3
3727pub const GL_TEXTURE25: GLenum = 0x84D9;
3728
3729/// Constant value defined from OpenGL 1.3
3730pub const GL_TEXTURE26: GLenum = 0x84DA;
3731
3732/// Constant value defined from OpenGL 1.3
3733pub const GL_TEXTURE27: GLenum = 0x84DB;
3734
3735/// Constant value defined from OpenGL 1.3
3736pub const GL_TEXTURE28: GLenum = 0x84DC;
3737
3738/// Constant value defined from OpenGL 1.3
3739pub const GL_TEXTURE29: GLenum = 0x84DD;
3740
3741/// Constant value defined from OpenGL 1.3
3742pub const GL_TEXTURE30: GLenum = 0x84DE;
3743
3744/// Constant value defined from OpenGL 1.3
3745pub const GL_TEXTURE31: GLenum = 0x84DF;
3746
3747/// Constant value defined from OpenGL 1.3
3748pub const GL_ACTIVE_TEXTURE: GLenum = 0x84E0;
3749
3750/// Constant value defined from OpenGL 1.3
3751pub const GL_MULTISAMPLE: GLenum = 0x809D;
3752
3753/// Constant value defined from OpenGL 1.3
3754pub const GL_SAMPLE_ALPHA_TO_COVERAGE: GLenum = 0x809E;
3755
3756/// Constant value defined from OpenGL 1.3
3757pub const GL_SAMPLE_ALPHA_TO_ONE: GLenum = 0x809F;
3758
3759/// Constant value defined from OpenGL 1.3
3760pub const GL_SAMPLE_COVERAGE: GLenum = 0x80A0;
3761
3762/// Constant value defined from OpenGL 1.3
3763pub const GL_SAMPLE_BUFFERS: GLenum = 0x80A8;
3764
3765/// Constant value defined from OpenGL 1.3
3766pub const GL_SAMPLES: GLenum = 0x80A9;
3767
3768/// Constant value defined from OpenGL 1.3
3769pub const GL_SAMPLE_COVERAGE_VALUE: GLenum = 0x80AA;
3770
3771/// Constant value defined from OpenGL 1.3
3772pub const GL_SAMPLE_COVERAGE_INVERT: GLenum = 0x80AB;
3773
3774/// Constant value defined from OpenGL 1.3
3775pub const GL_TEXTURE_CUBE_MAP: GLenum = 0x8513;
3776
3777/// Constant value defined from OpenGL 1.3
3778pub const GL_TEXTURE_BINDING_CUBE_MAP: GLenum = 0x8514;
3779
3780/// Constant value defined from OpenGL 1.3
3781pub const GL_TEXTURE_CUBE_MAP_POSITIVE_X: GLenum = 0x8515;
3782
3783/// Constant value defined from OpenGL 1.3
3784pub const GL_TEXTURE_CUBE_MAP_NEGATIVE_X: GLenum = 0x8516;
3785
3786/// Constant value defined from OpenGL 1.3
3787pub const GL_TEXTURE_CUBE_MAP_POSITIVE_Y: GLenum = 0x8517;
3788
3789/// Constant value defined from OpenGL 1.3
3790pub const GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: GLenum = 0x8518;
3791
3792/// Constant value defined from OpenGL 1.3
3793pub const GL_TEXTURE_CUBE_MAP_POSITIVE_Z: GLenum = 0x8519;
3794
3795/// Constant value defined from OpenGL 1.3
3796pub const GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: GLenum = 0x851A;
3797
3798/// Constant value defined from OpenGL 1.3
3799pub const GL_PROXY_TEXTURE_CUBE_MAP: GLenum = 0x851B;
3800
3801/// Constant value defined from OpenGL 1.3
3802pub const GL_MAX_CUBE_MAP_TEXTURE_SIZE: GLenum = 0x851C;
3803
3804/// Constant value defined from OpenGL 1.3
3805pub const GL_COMPRESSED_RGB: GLenum = 0x84ED;
3806
3807/// Constant value defined from OpenGL 1.3
3808pub const GL_COMPRESSED_RGBA: GLenum = 0x84EE;
3809
3810/// Constant value defined from OpenGL 1.3
3811pub const GL_TEXTURE_COMPRESSION_HINT: GLenum = 0x84EF;
3812
3813/// Constant value defined from OpenGL 1.3
3814pub const GL_TEXTURE_COMPRESSED_IMAGE_SIZE: GLenum = 0x86A0;
3815
3816/// Constant value defined from OpenGL 1.3
3817pub const GL_TEXTURE_COMPRESSED: GLenum = 0x86A1;
3818
3819/// Constant value defined from OpenGL 1.3
3820pub const GL_NUM_COMPRESSED_TEXTURE_FORMATS: GLenum = 0x86A2;
3821
3822/// Constant value defined from OpenGL 1.3
3823pub const GL_COMPRESSED_TEXTURE_FORMATS: GLenum = 0x86A3;
3824
3825/// Constant value defined from OpenGL 1.3
3826pub const GL_CLAMP_TO_BORDER: GLint = 0x812D;
3827
3828/// Constant value defined from OpenGL 1.3
3829pub const GL_CLIENT_ACTIVE_TEXTURE: GLenum = 0x84E1;
3830
3831/// Constant value defined from OpenGL 1.3
3832pub const GL_MAX_TEXTURE_UNITS: GLenum = 0x84E2;
3833
3834/// Constant value defined from OpenGL 1.3
3835pub const GL_TRANSPOSE_MODELVIEW_MATRIX: GLenum = 0x84E3;
3836
3837/// Constant value defined from OpenGL 1.3
3838pub const GL_TRANSPOSE_PROJECTION_MATRIX: GLenum = 0x84E4;
3839
3840/// Constant value defined from OpenGL 1.3
3841pub const GL_TRANSPOSE_TEXTURE_MATRIX: GLenum = 0x84E5;
3842
3843/// Constant value defined from OpenGL 1.3
3844pub const GL_TRANSPOSE_COLOR_MATRIX: GLenum = 0x84E6;
3845
3846/// Constant value defined from OpenGL 1.3
3847pub const GL_MULTISAMPLE_BIT: GLbitfield = 0x20000000;
3848
3849/// Constant value defined from OpenGL 1.3
3850pub const GL_NORMAL_MAP: GLenum = 0x8511;
3851
3852/// Constant value defined from OpenGL 1.3
3853pub const GL_REFLECTION_MAP: GLenum = 0x8512;
3854
3855/// Constant value defined from OpenGL 1.3
3856pub const GL_COMPRESSED_ALPHA: GLenum = 0x84E9;
3857
3858/// Constant value defined from OpenGL 1.3
3859pub const GL_COMPRESSED_LUMINANCE: GLenum = 0x84EA;
3860
3861/// Constant value defined from OpenGL 1.3
3862pub const GL_COMPRESSED_LUMINANCE_ALPHA: GLenum = 0x84EB;
3863
3864/// Constant value defined from OpenGL 1.3
3865pub const GL_COMPRESSED_INTENSITY: GLenum = 0x84EC;
3866
3867/// Constant value defined from OpenGL 1.3
3868pub const GL_COMBINE: GLenum = 0x8570;
3869
3870/// Constant value defined from OpenGL 1.3
3871pub const GL_COMBINE_RGB: GLenum = 0x8571;
3872
3873/// Constant value defined from OpenGL 1.3
3874pub const GL_COMBINE_ALPHA: GLenum = 0x8572;
3875
3876/// Constant value defined from OpenGL 1.3
3877pub const GL_SOURCE0_RGB: GLenum = 0x8580;
3878
3879/// Constant value defined from OpenGL 1.3
3880pub const GL_SOURCE1_RGB: GLenum = 0x8581;
3881
3882/// Constant value defined from OpenGL 1.3
3883pub const GL_SOURCE2_RGB: GLenum = 0x8582;
3884
3885/// Constant value defined from OpenGL 1.3
3886pub const GL_SOURCE0_ALPHA: GLenum = 0x8588;
3887
3888/// Constant value defined from OpenGL 1.3
3889pub const GL_SOURCE1_ALPHA: GLenum = 0x8589;
3890
3891/// Constant value defined from OpenGL 1.3
3892pub const GL_SOURCE2_ALPHA: GLenum = 0x858A;
3893
3894/// Constant value defined from OpenGL 1.3
3895pub const GL_OPERAND0_RGB: GLenum = 0x8590;
3896
3897/// Constant value defined from OpenGL 1.3
3898pub const GL_OPERAND1_RGB: GLenum = 0x8591;
3899
3900/// Constant value defined from OpenGL 1.3
3901pub const GL_OPERAND2_RGB: GLenum = 0x8592;
3902
3903/// Constant value defined from OpenGL 1.3
3904pub const GL_OPERAND0_ALPHA: GLenum = 0x8598;
3905
3906/// Constant value defined from OpenGL 1.3
3907pub const GL_OPERAND1_ALPHA: GLenum = 0x8599;
3908
3909/// Constant value defined from OpenGL 1.3
3910pub const GL_OPERAND2_ALPHA: GLenum = 0x859A;
3911
3912/// Constant value defined from OpenGL 1.3
3913pub const GL_RGB_SCALE: GLenum = 0x8573;
3914
3915/// Constant value defined from OpenGL 1.3
3916pub const GL_ADD_SIGNED: GLenum = 0x8574;
3917
3918/// Constant value defined from OpenGL 1.3
3919pub const GL_INTERPOLATE: GLenum = 0x8575;
3920
3921/// Constant value defined from OpenGL 1.3
3922pub const GL_SUBTRACT: GLenum = 0x84E7;
3923
3924/// Constant value defined from OpenGL 1.3
3925pub const GL_CONSTANT: GLenum = 0x8576;
3926
3927/// Constant value defined from OpenGL 1.3
3928pub const GL_PRIMARY_COLOR: GLenum = 0x8577;
3929
3930/// Constant value defined from OpenGL 1.3
3931pub const GL_PREVIOUS: GLenum = 0x8578;
3932
3933/// Constant value defined from OpenGL 1.3
3934pub const GL_DOT3_RGB: GLenum = 0x86AE;
3935
3936/// Constant value defined from OpenGL 1.3
3937pub const GL_DOT3_RGBA: GLenum = 0x86AF;
3938
3939/// Functions from OpenGL version 1.3
3940pub trait GL_1_3 {
3941	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
3942	fn glGetError(&self) -> GLenum;
3943
3944	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glActiveTexture.xhtml>
3945	fn glActiveTexture(&self, texture: GLenum) -> Result<()>;
3946
3947	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSampleCoverage.xhtml>
3948	fn glSampleCoverage(&self, value: GLfloat, invert: GLboolean) -> Result<()>;
3949
3950	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexImage3D.xhtml>
3951	fn glCompressedTexImage3D(&self, target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, imageSize: GLsizei, data: *const c_void) -> Result<()>;
3952
3953	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexImage2D.xhtml>
3954	fn glCompressedTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, border: GLint, imageSize: GLsizei, data: *const c_void) -> Result<()>;
3955
3956	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexImage1D.xhtml>
3957	fn glCompressedTexImage1D(&self, target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, border: GLint, imageSize: GLsizei, data: *const c_void) -> Result<()>;
3958
3959	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexSubImage3D.xhtml>
3960	fn glCompressedTexSubImage3D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()>;
3961
3962	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexSubImage2D.xhtml>
3963	fn glCompressedTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()>;
3964
3965	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexSubImage1D.xhtml>
3966	fn glCompressedTexSubImage1D(&self, target: GLenum, level: GLint, xoffset: GLint, width: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()>;
3967
3968	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetCompressedTexImage.xhtml>
3969	fn glGetCompressedTexImage(&self, target: GLenum, level: GLint, img: *mut c_void) -> Result<()>;
3970
3971	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClientActiveTexture.xhtml>
3972	fn glClientActiveTexture(&self, texture: GLenum) -> Result<()>;
3973
3974	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1d.xhtml>
3975	fn glMultiTexCoord1d(&self, target: GLenum, s: GLdouble) -> Result<()>;
3976
3977	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1dv.xhtml>
3978	fn glMultiTexCoord1dv(&self, target: GLenum, v: *const GLdouble) -> Result<()>;
3979
3980	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1f.xhtml>
3981	fn glMultiTexCoord1f(&self, target: GLenum, s: GLfloat) -> Result<()>;
3982
3983	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1fv.xhtml>
3984	fn glMultiTexCoord1fv(&self, target: GLenum, v: *const GLfloat) -> Result<()>;
3985
3986	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1i.xhtml>
3987	fn glMultiTexCoord1i(&self, target: GLenum, s: GLint) -> Result<()>;
3988
3989	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1iv.xhtml>
3990	fn glMultiTexCoord1iv(&self, target: GLenum, v: *const GLint) -> Result<()>;
3991
3992	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1s.xhtml>
3993	fn glMultiTexCoord1s(&self, target: GLenum, s: GLshort) -> Result<()>;
3994
3995	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1sv.xhtml>
3996	fn glMultiTexCoord1sv(&self, target: GLenum, v: *const GLshort) -> Result<()>;
3997
3998	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2d.xhtml>
3999	fn glMultiTexCoord2d(&self, target: GLenum, s: GLdouble, t: GLdouble) -> Result<()>;
4000
4001	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2dv.xhtml>
4002	fn glMultiTexCoord2dv(&self, target: GLenum, v: *const GLdouble) -> Result<()>;
4003
4004	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2f.xhtml>
4005	fn glMultiTexCoord2f(&self, target: GLenum, s: GLfloat, t: GLfloat) -> Result<()>;
4006
4007	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2fv.xhtml>
4008	fn glMultiTexCoord2fv(&self, target: GLenum, v: *const GLfloat) -> Result<()>;
4009
4010	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2i.xhtml>
4011	fn glMultiTexCoord2i(&self, target: GLenum, s: GLint, t: GLint) -> Result<()>;
4012
4013	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2iv.xhtml>
4014	fn glMultiTexCoord2iv(&self, target: GLenum, v: *const GLint) -> Result<()>;
4015
4016	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2s.xhtml>
4017	fn glMultiTexCoord2s(&self, target: GLenum, s: GLshort, t: GLshort) -> Result<()>;
4018
4019	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2sv.xhtml>
4020	fn glMultiTexCoord2sv(&self, target: GLenum, v: *const GLshort) -> Result<()>;
4021
4022	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3d.xhtml>
4023	fn glMultiTexCoord3d(&self, target: GLenum, s: GLdouble, t: GLdouble, r: GLdouble) -> Result<()>;
4024
4025	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3dv.xhtml>
4026	fn glMultiTexCoord3dv(&self, target: GLenum, v: *const GLdouble) -> Result<()>;
4027
4028	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3f.xhtml>
4029	fn glMultiTexCoord3f(&self, target: GLenum, s: GLfloat, t: GLfloat, r: GLfloat) -> Result<()>;
4030
4031	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3fv.xhtml>
4032	fn glMultiTexCoord3fv(&self, target: GLenum, v: *const GLfloat) -> Result<()>;
4033
4034	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3i.xhtml>
4035	fn glMultiTexCoord3i(&self, target: GLenum, s: GLint, t: GLint, r: GLint) -> Result<()>;
4036
4037	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3iv.xhtml>
4038	fn glMultiTexCoord3iv(&self, target: GLenum, v: *const GLint) -> Result<()>;
4039
4040	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3s.xhtml>
4041	fn glMultiTexCoord3s(&self, target: GLenum, s: GLshort, t: GLshort, r: GLshort) -> Result<()>;
4042
4043	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3sv.xhtml>
4044	fn glMultiTexCoord3sv(&self, target: GLenum, v: *const GLshort) -> Result<()>;
4045
4046	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4d.xhtml>
4047	fn glMultiTexCoord4d(&self, target: GLenum, s: GLdouble, t: GLdouble, r: GLdouble, q: GLdouble) -> Result<()>;
4048
4049	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4dv.xhtml>
4050	fn glMultiTexCoord4dv(&self, target: GLenum, v: *const GLdouble) -> Result<()>;
4051
4052	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4f.xhtml>
4053	fn glMultiTexCoord4f(&self, target: GLenum, s: GLfloat, t: GLfloat, r: GLfloat, q: GLfloat) -> Result<()>;
4054
4055	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4fv.xhtml>
4056	fn glMultiTexCoord4fv(&self, target: GLenum, v: *const GLfloat) -> Result<()>;
4057
4058	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4i.xhtml>
4059	fn glMultiTexCoord4i(&self, target: GLenum, s: GLint, t: GLint, r: GLint, q: GLint) -> Result<()>;
4060
4061	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4iv.xhtml>
4062	fn glMultiTexCoord4iv(&self, target: GLenum, v: *const GLint) -> Result<()>;
4063
4064	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4s.xhtml>
4065	fn glMultiTexCoord4s(&self, target: GLenum, s: GLshort, t: GLshort, r: GLshort, q: GLshort) -> Result<()>;
4066
4067	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4sv.xhtml>
4068	fn glMultiTexCoord4sv(&self, target: GLenum, v: *const GLshort) -> Result<()>;
4069
4070	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glLoadTransposeMatrixf.xhtml>
4071	fn glLoadTransposeMatrixf(&self, m: *const GLfloat) -> Result<()>;
4072
4073	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glLoadTransposeMatrixd.xhtml>
4074	fn glLoadTransposeMatrixd(&self, m: *const GLdouble) -> Result<()>;
4075
4076	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultTransposeMatrixf.xhtml>
4077	fn glMultTransposeMatrixf(&self, m: *const GLfloat) -> Result<()>;
4078
4079	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultTransposeMatrixd.xhtml>
4080	fn glMultTransposeMatrixd(&self, m: *const GLdouble) -> Result<()>;
4081}
4082/// Functions from OpenGL version 1.3
4083#[derive(Clone, Copy, PartialEq, Eq, Hash)]
4084pub struct Version13 {
4085	/// Is OpenGL version 1.3 available
4086	available: bool,
4087
4088	/// The function pointer to `glGetError()`
4089	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
4090	pub geterror: PFNGLGETERRORPROC,
4091
4092	/// The function pointer to `glActiveTexture()`
4093	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glActiveTexture.xhtml>
4094	pub activetexture: PFNGLACTIVETEXTUREPROC,
4095
4096	/// The function pointer to `glSampleCoverage()`
4097	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSampleCoverage.xhtml>
4098	pub samplecoverage: PFNGLSAMPLECOVERAGEPROC,
4099
4100	/// The function pointer to `glCompressedTexImage3D()`
4101	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexImage3D.xhtml>
4102	pub compressedteximage3d: PFNGLCOMPRESSEDTEXIMAGE3DPROC,
4103
4104	/// The function pointer to `glCompressedTexImage2D()`
4105	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexImage2D.xhtml>
4106	pub compressedteximage2d: PFNGLCOMPRESSEDTEXIMAGE2DPROC,
4107
4108	/// The function pointer to `glCompressedTexImage1D()`
4109	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexImage1D.xhtml>
4110	pub compressedteximage1d: PFNGLCOMPRESSEDTEXIMAGE1DPROC,
4111
4112	/// The function pointer to `glCompressedTexSubImage3D()`
4113	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexSubImage3D.xhtml>
4114	pub compressedtexsubimage3d: PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC,
4115
4116	/// The function pointer to `glCompressedTexSubImage2D()`
4117	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexSubImage2D.xhtml>
4118	pub compressedtexsubimage2d: PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC,
4119
4120	/// The function pointer to `glCompressedTexSubImage1D()`
4121	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexSubImage1D.xhtml>
4122	pub compressedtexsubimage1d: PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC,
4123
4124	/// The function pointer to `glGetCompressedTexImage()`
4125	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetCompressedTexImage.xhtml>
4126	pub getcompressedteximage: PFNGLGETCOMPRESSEDTEXIMAGEPROC,
4127
4128	/// The function pointer to `glClientActiveTexture()`
4129	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClientActiveTexture.xhtml>
4130	pub clientactivetexture: PFNGLCLIENTACTIVETEXTUREPROC,
4131
4132	/// The function pointer to `glMultiTexCoord1d()`
4133	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1d.xhtml>
4134	pub multitexcoord1d: PFNGLMULTITEXCOORD1DPROC,
4135
4136	/// The function pointer to `glMultiTexCoord1dv()`
4137	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1dv.xhtml>
4138	pub multitexcoord1dv: PFNGLMULTITEXCOORD1DVPROC,
4139
4140	/// The function pointer to `glMultiTexCoord1f()`
4141	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1f.xhtml>
4142	pub multitexcoord1f: PFNGLMULTITEXCOORD1FPROC,
4143
4144	/// The function pointer to `glMultiTexCoord1fv()`
4145	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1fv.xhtml>
4146	pub multitexcoord1fv: PFNGLMULTITEXCOORD1FVPROC,
4147
4148	/// The function pointer to `glMultiTexCoord1i()`
4149	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1i.xhtml>
4150	pub multitexcoord1i: PFNGLMULTITEXCOORD1IPROC,
4151
4152	/// The function pointer to `glMultiTexCoord1iv()`
4153	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1iv.xhtml>
4154	pub multitexcoord1iv: PFNGLMULTITEXCOORD1IVPROC,
4155
4156	/// The function pointer to `glMultiTexCoord1s()`
4157	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1s.xhtml>
4158	pub multitexcoord1s: PFNGLMULTITEXCOORD1SPROC,
4159
4160	/// The function pointer to `glMultiTexCoord1sv()`
4161	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1sv.xhtml>
4162	pub multitexcoord1sv: PFNGLMULTITEXCOORD1SVPROC,
4163
4164	/// The function pointer to `glMultiTexCoord2d()`
4165	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2d.xhtml>
4166	pub multitexcoord2d: PFNGLMULTITEXCOORD2DPROC,
4167
4168	/// The function pointer to `glMultiTexCoord2dv()`
4169	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2dv.xhtml>
4170	pub multitexcoord2dv: PFNGLMULTITEXCOORD2DVPROC,
4171
4172	/// The function pointer to `glMultiTexCoord2f()`
4173	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2f.xhtml>
4174	pub multitexcoord2f: PFNGLMULTITEXCOORD2FPROC,
4175
4176	/// The function pointer to `glMultiTexCoord2fv()`
4177	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2fv.xhtml>
4178	pub multitexcoord2fv: PFNGLMULTITEXCOORD2FVPROC,
4179
4180	/// The function pointer to `glMultiTexCoord2i()`
4181	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2i.xhtml>
4182	pub multitexcoord2i: PFNGLMULTITEXCOORD2IPROC,
4183
4184	/// The function pointer to `glMultiTexCoord2iv()`
4185	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2iv.xhtml>
4186	pub multitexcoord2iv: PFNGLMULTITEXCOORD2IVPROC,
4187
4188	/// The function pointer to `glMultiTexCoord2s()`
4189	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2s.xhtml>
4190	pub multitexcoord2s: PFNGLMULTITEXCOORD2SPROC,
4191
4192	/// The function pointer to `glMultiTexCoord2sv()`
4193	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2sv.xhtml>
4194	pub multitexcoord2sv: PFNGLMULTITEXCOORD2SVPROC,
4195
4196	/// The function pointer to `glMultiTexCoord3d()`
4197	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3d.xhtml>
4198	pub multitexcoord3d: PFNGLMULTITEXCOORD3DPROC,
4199
4200	/// The function pointer to `glMultiTexCoord3dv()`
4201	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3dv.xhtml>
4202	pub multitexcoord3dv: PFNGLMULTITEXCOORD3DVPROC,
4203
4204	/// The function pointer to `glMultiTexCoord3f()`
4205	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3f.xhtml>
4206	pub multitexcoord3f: PFNGLMULTITEXCOORD3FPROC,
4207
4208	/// The function pointer to `glMultiTexCoord3fv()`
4209	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3fv.xhtml>
4210	pub multitexcoord3fv: PFNGLMULTITEXCOORD3FVPROC,
4211
4212	/// The function pointer to `glMultiTexCoord3i()`
4213	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3i.xhtml>
4214	pub multitexcoord3i: PFNGLMULTITEXCOORD3IPROC,
4215
4216	/// The function pointer to `glMultiTexCoord3iv()`
4217	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3iv.xhtml>
4218	pub multitexcoord3iv: PFNGLMULTITEXCOORD3IVPROC,
4219
4220	/// The function pointer to `glMultiTexCoord3s()`
4221	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3s.xhtml>
4222	pub multitexcoord3s: PFNGLMULTITEXCOORD3SPROC,
4223
4224	/// The function pointer to `glMultiTexCoord3sv()`
4225	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3sv.xhtml>
4226	pub multitexcoord3sv: PFNGLMULTITEXCOORD3SVPROC,
4227
4228	/// The function pointer to `glMultiTexCoord4d()`
4229	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4d.xhtml>
4230	pub multitexcoord4d: PFNGLMULTITEXCOORD4DPROC,
4231
4232	/// The function pointer to `glMultiTexCoord4dv()`
4233	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4dv.xhtml>
4234	pub multitexcoord4dv: PFNGLMULTITEXCOORD4DVPROC,
4235
4236	/// The function pointer to `glMultiTexCoord4f()`
4237	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4f.xhtml>
4238	pub multitexcoord4f: PFNGLMULTITEXCOORD4FPROC,
4239
4240	/// The function pointer to `glMultiTexCoord4fv()`
4241	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4fv.xhtml>
4242	pub multitexcoord4fv: PFNGLMULTITEXCOORD4FVPROC,
4243
4244	/// The function pointer to `glMultiTexCoord4i()`
4245	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4i.xhtml>
4246	pub multitexcoord4i: PFNGLMULTITEXCOORD4IPROC,
4247
4248	/// The function pointer to `glMultiTexCoord4iv()`
4249	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4iv.xhtml>
4250	pub multitexcoord4iv: PFNGLMULTITEXCOORD4IVPROC,
4251
4252	/// The function pointer to `glMultiTexCoord4s()`
4253	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4s.xhtml>
4254	pub multitexcoord4s: PFNGLMULTITEXCOORD4SPROC,
4255
4256	/// The function pointer to `glMultiTexCoord4sv()`
4257	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4sv.xhtml>
4258	pub multitexcoord4sv: PFNGLMULTITEXCOORD4SVPROC,
4259
4260	/// The function pointer to `glLoadTransposeMatrixf()`
4261	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glLoadTransposeMatrixf.xhtml>
4262	pub loadtransposematrixf: PFNGLLOADTRANSPOSEMATRIXFPROC,
4263
4264	/// The function pointer to `glLoadTransposeMatrixd()`
4265	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glLoadTransposeMatrixd.xhtml>
4266	pub loadtransposematrixd: PFNGLLOADTRANSPOSEMATRIXDPROC,
4267
4268	/// The function pointer to `glMultTransposeMatrixf()`
4269	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultTransposeMatrixf.xhtml>
4270	pub multtransposematrixf: PFNGLMULTTRANSPOSEMATRIXFPROC,
4271
4272	/// The function pointer to `glMultTransposeMatrixd()`
4273	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultTransposeMatrixd.xhtml>
4274	pub multtransposematrixd: PFNGLMULTTRANSPOSEMATRIXDPROC,
4275}
4276
4277impl GL_1_3 for Version13 {
4278	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
4279	#[inline(always)]
4280	fn glGetError(&self) -> GLenum {
4281		(self.geterror)()
4282	}
4283	#[inline(always)]
4284	fn glActiveTexture(&self, texture: GLenum) -> Result<()> {
4285		#[cfg(feature = "catch_nullptr")]
4286		let ret = process_catch("glActiveTexture", catch_unwind(||(self.activetexture)(texture)));
4287		#[cfg(not(feature = "catch_nullptr"))]
4288		let ret = {(self.activetexture)(texture); Ok(())};
4289		#[cfg(feature = "diagnose")]
4290		if let Ok(ret) = ret {
4291			return to_result("glActiveTexture", ret, self.glGetError());
4292		} else {
4293			return ret
4294		}
4295		#[cfg(not(feature = "diagnose"))]
4296		return ret;
4297	}
4298	#[inline(always)]
4299	fn glSampleCoverage(&self, value: GLfloat, invert: GLboolean) -> Result<()> {
4300		#[cfg(feature = "catch_nullptr")]
4301		let ret = process_catch("glSampleCoverage", catch_unwind(||(self.samplecoverage)(value, invert)));
4302		#[cfg(not(feature = "catch_nullptr"))]
4303		let ret = {(self.samplecoverage)(value, invert); Ok(())};
4304		#[cfg(feature = "diagnose")]
4305		if let Ok(ret) = ret {
4306			return to_result("glSampleCoverage", ret, self.glGetError());
4307		} else {
4308			return ret
4309		}
4310		#[cfg(not(feature = "diagnose"))]
4311		return ret;
4312	}
4313	#[inline(always)]
4314	fn glCompressedTexImage3D(&self, target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, imageSize: GLsizei, data: *const c_void) -> Result<()> {
4315		#[cfg(feature = "catch_nullptr")]
4316		let ret = process_catch("glCompressedTexImage3D", catch_unwind(||(self.compressedteximage3d)(target, level, internalformat, width, height, depth, border, imageSize, data)));
4317		#[cfg(not(feature = "catch_nullptr"))]
4318		let ret = {(self.compressedteximage3d)(target, level, internalformat, width, height, depth, border, imageSize, data); Ok(())};
4319		#[cfg(feature = "diagnose")]
4320		if let Ok(ret) = ret {
4321			return to_result("glCompressedTexImage3D", ret, self.glGetError());
4322		} else {
4323			return ret
4324		}
4325		#[cfg(not(feature = "diagnose"))]
4326		return ret;
4327	}
4328	#[inline(always)]
4329	fn glCompressedTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, border: GLint, imageSize: GLsizei, data: *const c_void) -> Result<()> {
4330		#[cfg(feature = "catch_nullptr")]
4331		let ret = process_catch("glCompressedTexImage2D", catch_unwind(||(self.compressedteximage2d)(target, level, internalformat, width, height, border, imageSize, data)));
4332		#[cfg(not(feature = "catch_nullptr"))]
4333		let ret = {(self.compressedteximage2d)(target, level, internalformat, width, height, border, imageSize, data); Ok(())};
4334		#[cfg(feature = "diagnose")]
4335		if let Ok(ret) = ret {
4336			return to_result("glCompressedTexImage2D", ret, self.glGetError());
4337		} else {
4338			return ret
4339		}
4340		#[cfg(not(feature = "diagnose"))]
4341		return ret;
4342	}
4343	#[inline(always)]
4344	fn glCompressedTexImage1D(&self, target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, border: GLint, imageSize: GLsizei, data: *const c_void) -> Result<()> {
4345		#[cfg(feature = "catch_nullptr")]
4346		let ret = process_catch("glCompressedTexImage1D", catch_unwind(||(self.compressedteximage1d)(target, level, internalformat, width, border, imageSize, data)));
4347		#[cfg(not(feature = "catch_nullptr"))]
4348		let ret = {(self.compressedteximage1d)(target, level, internalformat, width, border, imageSize, data); Ok(())};
4349		#[cfg(feature = "diagnose")]
4350		if let Ok(ret) = ret {
4351			return to_result("glCompressedTexImage1D", ret, self.glGetError());
4352		} else {
4353			return ret
4354		}
4355		#[cfg(not(feature = "diagnose"))]
4356		return ret;
4357	}
4358	#[inline(always)]
4359	fn glCompressedTexSubImage3D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()> {
4360		#[cfg(feature = "catch_nullptr")]
4361		let ret = process_catch("glCompressedTexSubImage3D", catch_unwind(||(self.compressedtexsubimage3d)(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data)));
4362		#[cfg(not(feature = "catch_nullptr"))]
4363		let ret = {(self.compressedtexsubimage3d)(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); Ok(())};
4364		#[cfg(feature = "diagnose")]
4365		if let Ok(ret) = ret {
4366			return to_result("glCompressedTexSubImage3D", ret, self.glGetError());
4367		} else {
4368			return ret
4369		}
4370		#[cfg(not(feature = "diagnose"))]
4371		return ret;
4372	}
4373	#[inline(always)]
4374	fn glCompressedTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()> {
4375		#[cfg(feature = "catch_nullptr")]
4376		let ret = process_catch("glCompressedTexSubImage2D", catch_unwind(||(self.compressedtexsubimage2d)(target, level, xoffset, yoffset, width, height, format, imageSize, data)));
4377		#[cfg(not(feature = "catch_nullptr"))]
4378		let ret = {(self.compressedtexsubimage2d)(target, level, xoffset, yoffset, width, height, format, imageSize, data); Ok(())};
4379		#[cfg(feature = "diagnose")]
4380		if let Ok(ret) = ret {
4381			return to_result("glCompressedTexSubImage2D", ret, self.glGetError());
4382		} else {
4383			return ret
4384		}
4385		#[cfg(not(feature = "diagnose"))]
4386		return ret;
4387	}
4388	#[inline(always)]
4389	fn glCompressedTexSubImage1D(&self, target: GLenum, level: GLint, xoffset: GLint, width: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()> {
4390		#[cfg(feature = "catch_nullptr")]
4391		let ret = process_catch("glCompressedTexSubImage1D", catch_unwind(||(self.compressedtexsubimage1d)(target, level, xoffset, width, format, imageSize, data)));
4392		#[cfg(not(feature = "catch_nullptr"))]
4393		let ret = {(self.compressedtexsubimage1d)(target, level, xoffset, width, format, imageSize, data); Ok(())};
4394		#[cfg(feature = "diagnose")]
4395		if let Ok(ret) = ret {
4396			return to_result("glCompressedTexSubImage1D", ret, self.glGetError());
4397		} else {
4398			return ret
4399		}
4400		#[cfg(not(feature = "diagnose"))]
4401		return ret;
4402	}
4403	#[inline(always)]
4404	fn glGetCompressedTexImage(&self, target: GLenum, level: GLint, img: *mut c_void) -> Result<()> {
4405		#[cfg(feature = "catch_nullptr")]
4406		let ret = process_catch("glGetCompressedTexImage", catch_unwind(||(self.getcompressedteximage)(target, level, img)));
4407		#[cfg(not(feature = "catch_nullptr"))]
4408		let ret = {(self.getcompressedteximage)(target, level, img); Ok(())};
4409		#[cfg(feature = "diagnose")]
4410		if let Ok(ret) = ret {
4411			return to_result("glGetCompressedTexImage", ret, self.glGetError());
4412		} else {
4413			return ret
4414		}
4415		#[cfg(not(feature = "diagnose"))]
4416		return ret;
4417	}
4418	#[inline(always)]
4419	fn glClientActiveTexture(&self, texture: GLenum) -> Result<()> {
4420		#[cfg(feature = "catch_nullptr")]
4421		let ret = process_catch("glClientActiveTexture", catch_unwind(||(self.clientactivetexture)(texture)));
4422		#[cfg(not(feature = "catch_nullptr"))]
4423		let ret = {(self.clientactivetexture)(texture); Ok(())};
4424		#[cfg(feature = "diagnose")]
4425		if let Ok(ret) = ret {
4426			return to_result("glClientActiveTexture", ret, self.glGetError());
4427		} else {
4428			return ret
4429		}
4430		#[cfg(not(feature = "diagnose"))]
4431		return ret;
4432	}
4433	#[inline(always)]
4434	fn glMultiTexCoord1d(&self, target: GLenum, s: GLdouble) -> Result<()> {
4435		#[cfg(feature = "catch_nullptr")]
4436		let ret = process_catch("glMultiTexCoord1d", catch_unwind(||(self.multitexcoord1d)(target, s)));
4437		#[cfg(not(feature = "catch_nullptr"))]
4438		let ret = {(self.multitexcoord1d)(target, s); Ok(())};
4439		#[cfg(feature = "diagnose")]
4440		if let Ok(ret) = ret {
4441			return to_result("glMultiTexCoord1d", ret, self.glGetError());
4442		} else {
4443			return ret
4444		}
4445		#[cfg(not(feature = "diagnose"))]
4446		return ret;
4447	}
4448	#[inline(always)]
4449	fn glMultiTexCoord1dv(&self, target: GLenum, v: *const GLdouble) -> Result<()> {
4450		#[cfg(feature = "catch_nullptr")]
4451		let ret = process_catch("glMultiTexCoord1dv", catch_unwind(||(self.multitexcoord1dv)(target, v)));
4452		#[cfg(not(feature = "catch_nullptr"))]
4453		let ret = {(self.multitexcoord1dv)(target, v); Ok(())};
4454		#[cfg(feature = "diagnose")]
4455		if let Ok(ret) = ret {
4456			return to_result("glMultiTexCoord1dv", ret, self.glGetError());
4457		} else {
4458			return ret
4459		}
4460		#[cfg(not(feature = "diagnose"))]
4461		return ret;
4462	}
4463	#[inline(always)]
4464	fn glMultiTexCoord1f(&self, target: GLenum, s: GLfloat) -> Result<()> {
4465		#[cfg(feature = "catch_nullptr")]
4466		let ret = process_catch("glMultiTexCoord1f", catch_unwind(||(self.multitexcoord1f)(target, s)));
4467		#[cfg(not(feature = "catch_nullptr"))]
4468		let ret = {(self.multitexcoord1f)(target, s); Ok(())};
4469		#[cfg(feature = "diagnose")]
4470		if let Ok(ret) = ret {
4471			return to_result("glMultiTexCoord1f", ret, self.glGetError());
4472		} else {
4473			return ret
4474		}
4475		#[cfg(not(feature = "diagnose"))]
4476		return ret;
4477	}
4478	#[inline(always)]
4479	fn glMultiTexCoord1fv(&self, target: GLenum, v: *const GLfloat) -> Result<()> {
4480		#[cfg(feature = "catch_nullptr")]
4481		let ret = process_catch("glMultiTexCoord1fv", catch_unwind(||(self.multitexcoord1fv)(target, v)));
4482		#[cfg(not(feature = "catch_nullptr"))]
4483		let ret = {(self.multitexcoord1fv)(target, v); Ok(())};
4484		#[cfg(feature = "diagnose")]
4485		if let Ok(ret) = ret {
4486			return to_result("glMultiTexCoord1fv", ret, self.glGetError());
4487		} else {
4488			return ret
4489		}
4490		#[cfg(not(feature = "diagnose"))]
4491		return ret;
4492	}
4493	#[inline(always)]
4494	fn glMultiTexCoord1i(&self, target: GLenum, s: GLint) -> Result<()> {
4495		#[cfg(feature = "catch_nullptr")]
4496		let ret = process_catch("glMultiTexCoord1i", catch_unwind(||(self.multitexcoord1i)(target, s)));
4497		#[cfg(not(feature = "catch_nullptr"))]
4498		let ret = {(self.multitexcoord1i)(target, s); Ok(())};
4499		#[cfg(feature = "diagnose")]
4500		if let Ok(ret) = ret {
4501			return to_result("glMultiTexCoord1i", ret, self.glGetError());
4502		} else {
4503			return ret
4504		}
4505		#[cfg(not(feature = "diagnose"))]
4506		return ret;
4507	}
4508	#[inline(always)]
4509	fn glMultiTexCoord1iv(&self, target: GLenum, v: *const GLint) -> Result<()> {
4510		#[cfg(feature = "catch_nullptr")]
4511		let ret = process_catch("glMultiTexCoord1iv", catch_unwind(||(self.multitexcoord1iv)(target, v)));
4512		#[cfg(not(feature = "catch_nullptr"))]
4513		let ret = {(self.multitexcoord1iv)(target, v); Ok(())};
4514		#[cfg(feature = "diagnose")]
4515		if let Ok(ret) = ret {
4516			return to_result("glMultiTexCoord1iv", ret, self.glGetError());
4517		} else {
4518			return ret
4519		}
4520		#[cfg(not(feature = "diagnose"))]
4521		return ret;
4522	}
4523	#[inline(always)]
4524	fn glMultiTexCoord1s(&self, target: GLenum, s: GLshort) -> Result<()> {
4525		#[cfg(feature = "catch_nullptr")]
4526		let ret = process_catch("glMultiTexCoord1s", catch_unwind(||(self.multitexcoord1s)(target, s)));
4527		#[cfg(not(feature = "catch_nullptr"))]
4528		let ret = {(self.multitexcoord1s)(target, s); Ok(())};
4529		#[cfg(feature = "diagnose")]
4530		if let Ok(ret) = ret {
4531			return to_result("glMultiTexCoord1s", ret, self.glGetError());
4532		} else {
4533			return ret
4534		}
4535		#[cfg(not(feature = "diagnose"))]
4536		return ret;
4537	}
4538	#[inline(always)]
4539	fn glMultiTexCoord1sv(&self, target: GLenum, v: *const GLshort) -> Result<()> {
4540		#[cfg(feature = "catch_nullptr")]
4541		let ret = process_catch("glMultiTexCoord1sv", catch_unwind(||(self.multitexcoord1sv)(target, v)));
4542		#[cfg(not(feature = "catch_nullptr"))]
4543		let ret = {(self.multitexcoord1sv)(target, v); Ok(())};
4544		#[cfg(feature = "diagnose")]
4545		if let Ok(ret) = ret {
4546			return to_result("glMultiTexCoord1sv", ret, self.glGetError());
4547		} else {
4548			return ret
4549		}
4550		#[cfg(not(feature = "diagnose"))]
4551		return ret;
4552	}
4553	#[inline(always)]
4554	fn glMultiTexCoord2d(&self, target: GLenum, s: GLdouble, t: GLdouble) -> Result<()> {
4555		#[cfg(feature = "catch_nullptr")]
4556		let ret = process_catch("glMultiTexCoord2d", catch_unwind(||(self.multitexcoord2d)(target, s, t)));
4557		#[cfg(not(feature = "catch_nullptr"))]
4558		let ret = {(self.multitexcoord2d)(target, s, t); Ok(())};
4559		#[cfg(feature = "diagnose")]
4560		if let Ok(ret) = ret {
4561			return to_result("glMultiTexCoord2d", ret, self.glGetError());
4562		} else {
4563			return ret
4564		}
4565		#[cfg(not(feature = "diagnose"))]
4566		return ret;
4567	}
4568	#[inline(always)]
4569	fn glMultiTexCoord2dv(&self, target: GLenum, v: *const GLdouble) -> Result<()> {
4570		#[cfg(feature = "catch_nullptr")]
4571		let ret = process_catch("glMultiTexCoord2dv", catch_unwind(||(self.multitexcoord2dv)(target, v)));
4572		#[cfg(not(feature = "catch_nullptr"))]
4573		let ret = {(self.multitexcoord2dv)(target, v); Ok(())};
4574		#[cfg(feature = "diagnose")]
4575		if let Ok(ret) = ret {
4576			return to_result("glMultiTexCoord2dv", ret, self.glGetError());
4577		} else {
4578			return ret
4579		}
4580		#[cfg(not(feature = "diagnose"))]
4581		return ret;
4582	}
4583	#[inline(always)]
4584	fn glMultiTexCoord2f(&self, target: GLenum, s: GLfloat, t: GLfloat) -> Result<()> {
4585		#[cfg(feature = "catch_nullptr")]
4586		let ret = process_catch("glMultiTexCoord2f", catch_unwind(||(self.multitexcoord2f)(target, s, t)));
4587		#[cfg(not(feature = "catch_nullptr"))]
4588		let ret = {(self.multitexcoord2f)(target, s, t); Ok(())};
4589		#[cfg(feature = "diagnose")]
4590		if let Ok(ret) = ret {
4591			return to_result("glMultiTexCoord2f", ret, self.glGetError());
4592		} else {
4593			return ret
4594		}
4595		#[cfg(not(feature = "diagnose"))]
4596		return ret;
4597	}
4598	#[inline(always)]
4599	fn glMultiTexCoord2fv(&self, target: GLenum, v: *const GLfloat) -> Result<()> {
4600		#[cfg(feature = "catch_nullptr")]
4601		let ret = process_catch("glMultiTexCoord2fv", catch_unwind(||(self.multitexcoord2fv)(target, v)));
4602		#[cfg(not(feature = "catch_nullptr"))]
4603		let ret = {(self.multitexcoord2fv)(target, v); Ok(())};
4604		#[cfg(feature = "diagnose")]
4605		if let Ok(ret) = ret {
4606			return to_result("glMultiTexCoord2fv", ret, self.glGetError());
4607		} else {
4608			return ret
4609		}
4610		#[cfg(not(feature = "diagnose"))]
4611		return ret;
4612	}
4613	#[inline(always)]
4614	fn glMultiTexCoord2i(&self, target: GLenum, s: GLint, t: GLint) -> Result<()> {
4615		#[cfg(feature = "catch_nullptr")]
4616		let ret = process_catch("glMultiTexCoord2i", catch_unwind(||(self.multitexcoord2i)(target, s, t)));
4617		#[cfg(not(feature = "catch_nullptr"))]
4618		let ret = {(self.multitexcoord2i)(target, s, t); Ok(())};
4619		#[cfg(feature = "diagnose")]
4620		if let Ok(ret) = ret {
4621			return to_result("glMultiTexCoord2i", ret, self.glGetError());
4622		} else {
4623			return ret
4624		}
4625		#[cfg(not(feature = "diagnose"))]
4626		return ret;
4627	}
4628	#[inline(always)]
4629	fn glMultiTexCoord2iv(&self, target: GLenum, v: *const GLint) -> Result<()> {
4630		#[cfg(feature = "catch_nullptr")]
4631		let ret = process_catch("glMultiTexCoord2iv", catch_unwind(||(self.multitexcoord2iv)(target, v)));
4632		#[cfg(not(feature = "catch_nullptr"))]
4633		let ret = {(self.multitexcoord2iv)(target, v); Ok(())};
4634		#[cfg(feature = "diagnose")]
4635		if let Ok(ret) = ret {
4636			return to_result("glMultiTexCoord2iv", ret, self.glGetError());
4637		} else {
4638			return ret
4639		}
4640		#[cfg(not(feature = "diagnose"))]
4641		return ret;
4642	}
4643	#[inline(always)]
4644	fn glMultiTexCoord2s(&self, target: GLenum, s: GLshort, t: GLshort) -> Result<()> {
4645		#[cfg(feature = "catch_nullptr")]
4646		let ret = process_catch("glMultiTexCoord2s", catch_unwind(||(self.multitexcoord2s)(target, s, t)));
4647		#[cfg(not(feature = "catch_nullptr"))]
4648		let ret = {(self.multitexcoord2s)(target, s, t); Ok(())};
4649		#[cfg(feature = "diagnose")]
4650		if let Ok(ret) = ret {
4651			return to_result("glMultiTexCoord2s", ret, self.glGetError());
4652		} else {
4653			return ret
4654		}
4655		#[cfg(not(feature = "diagnose"))]
4656		return ret;
4657	}
4658	#[inline(always)]
4659	fn glMultiTexCoord2sv(&self, target: GLenum, v: *const GLshort) -> Result<()> {
4660		#[cfg(feature = "catch_nullptr")]
4661		let ret = process_catch("glMultiTexCoord2sv", catch_unwind(||(self.multitexcoord2sv)(target, v)));
4662		#[cfg(not(feature = "catch_nullptr"))]
4663		let ret = {(self.multitexcoord2sv)(target, v); Ok(())};
4664		#[cfg(feature = "diagnose")]
4665		if let Ok(ret) = ret {
4666			return to_result("glMultiTexCoord2sv", ret, self.glGetError());
4667		} else {
4668			return ret
4669		}
4670		#[cfg(not(feature = "diagnose"))]
4671		return ret;
4672	}
4673	#[inline(always)]
4674	fn glMultiTexCoord3d(&self, target: GLenum, s: GLdouble, t: GLdouble, r: GLdouble) -> Result<()> {
4675		#[cfg(feature = "catch_nullptr")]
4676		let ret = process_catch("glMultiTexCoord3d", catch_unwind(||(self.multitexcoord3d)(target, s, t, r)));
4677		#[cfg(not(feature = "catch_nullptr"))]
4678		let ret = {(self.multitexcoord3d)(target, s, t, r); Ok(())};
4679		#[cfg(feature = "diagnose")]
4680		if let Ok(ret) = ret {
4681			return to_result("glMultiTexCoord3d", ret, self.glGetError());
4682		} else {
4683			return ret
4684		}
4685		#[cfg(not(feature = "diagnose"))]
4686		return ret;
4687	}
4688	#[inline(always)]
4689	fn glMultiTexCoord3dv(&self, target: GLenum, v: *const GLdouble) -> Result<()> {
4690		#[cfg(feature = "catch_nullptr")]
4691		let ret = process_catch("glMultiTexCoord3dv", catch_unwind(||(self.multitexcoord3dv)(target, v)));
4692		#[cfg(not(feature = "catch_nullptr"))]
4693		let ret = {(self.multitexcoord3dv)(target, v); Ok(())};
4694		#[cfg(feature = "diagnose")]
4695		if let Ok(ret) = ret {
4696			return to_result("glMultiTexCoord3dv", ret, self.glGetError());
4697		} else {
4698			return ret
4699		}
4700		#[cfg(not(feature = "diagnose"))]
4701		return ret;
4702	}
4703	#[inline(always)]
4704	fn glMultiTexCoord3f(&self, target: GLenum, s: GLfloat, t: GLfloat, r: GLfloat) -> Result<()> {
4705		#[cfg(feature = "catch_nullptr")]
4706		let ret = process_catch("glMultiTexCoord3f", catch_unwind(||(self.multitexcoord3f)(target, s, t, r)));
4707		#[cfg(not(feature = "catch_nullptr"))]
4708		let ret = {(self.multitexcoord3f)(target, s, t, r); Ok(())};
4709		#[cfg(feature = "diagnose")]
4710		if let Ok(ret) = ret {
4711			return to_result("glMultiTexCoord3f", ret, self.glGetError());
4712		} else {
4713			return ret
4714		}
4715		#[cfg(not(feature = "diagnose"))]
4716		return ret;
4717	}
4718	#[inline(always)]
4719	fn glMultiTexCoord3fv(&self, target: GLenum, v: *const GLfloat) -> Result<()> {
4720		#[cfg(feature = "catch_nullptr")]
4721		let ret = process_catch("glMultiTexCoord3fv", catch_unwind(||(self.multitexcoord3fv)(target, v)));
4722		#[cfg(not(feature = "catch_nullptr"))]
4723		let ret = {(self.multitexcoord3fv)(target, v); Ok(())};
4724		#[cfg(feature = "diagnose")]
4725		if let Ok(ret) = ret {
4726			return to_result("glMultiTexCoord3fv", ret, self.glGetError());
4727		} else {
4728			return ret
4729		}
4730		#[cfg(not(feature = "diagnose"))]
4731		return ret;
4732	}
4733	#[inline(always)]
4734	fn glMultiTexCoord3i(&self, target: GLenum, s: GLint, t: GLint, r: GLint) -> Result<()> {
4735		#[cfg(feature = "catch_nullptr")]
4736		let ret = process_catch("glMultiTexCoord3i", catch_unwind(||(self.multitexcoord3i)(target, s, t, r)));
4737		#[cfg(not(feature = "catch_nullptr"))]
4738		let ret = {(self.multitexcoord3i)(target, s, t, r); Ok(())};
4739		#[cfg(feature = "diagnose")]
4740		if let Ok(ret) = ret {
4741			return to_result("glMultiTexCoord3i", ret, self.glGetError());
4742		} else {
4743			return ret
4744		}
4745		#[cfg(not(feature = "diagnose"))]
4746		return ret;
4747	}
4748	#[inline(always)]
4749	fn glMultiTexCoord3iv(&self, target: GLenum, v: *const GLint) -> Result<()> {
4750		#[cfg(feature = "catch_nullptr")]
4751		let ret = process_catch("glMultiTexCoord3iv", catch_unwind(||(self.multitexcoord3iv)(target, v)));
4752		#[cfg(not(feature = "catch_nullptr"))]
4753		let ret = {(self.multitexcoord3iv)(target, v); Ok(())};
4754		#[cfg(feature = "diagnose")]
4755		if let Ok(ret) = ret {
4756			return to_result("glMultiTexCoord3iv", ret, self.glGetError());
4757		} else {
4758			return ret
4759		}
4760		#[cfg(not(feature = "diagnose"))]
4761		return ret;
4762	}
4763	#[inline(always)]
4764	fn glMultiTexCoord3s(&self, target: GLenum, s: GLshort, t: GLshort, r: GLshort) -> Result<()> {
4765		#[cfg(feature = "catch_nullptr")]
4766		let ret = process_catch("glMultiTexCoord3s", catch_unwind(||(self.multitexcoord3s)(target, s, t, r)));
4767		#[cfg(not(feature = "catch_nullptr"))]
4768		let ret = {(self.multitexcoord3s)(target, s, t, r); Ok(())};
4769		#[cfg(feature = "diagnose")]
4770		if let Ok(ret) = ret {
4771			return to_result("glMultiTexCoord3s", ret, self.glGetError());
4772		} else {
4773			return ret
4774		}
4775		#[cfg(not(feature = "diagnose"))]
4776		return ret;
4777	}
4778	#[inline(always)]
4779	fn glMultiTexCoord3sv(&self, target: GLenum, v: *const GLshort) -> Result<()> {
4780		#[cfg(feature = "catch_nullptr")]
4781		let ret = process_catch("glMultiTexCoord3sv", catch_unwind(||(self.multitexcoord3sv)(target, v)));
4782		#[cfg(not(feature = "catch_nullptr"))]
4783		let ret = {(self.multitexcoord3sv)(target, v); Ok(())};
4784		#[cfg(feature = "diagnose")]
4785		if let Ok(ret) = ret {
4786			return to_result("glMultiTexCoord3sv", ret, self.glGetError());
4787		} else {
4788			return ret
4789		}
4790		#[cfg(not(feature = "diagnose"))]
4791		return ret;
4792	}
4793	#[inline(always)]
4794	fn glMultiTexCoord4d(&self, target: GLenum, s: GLdouble, t: GLdouble, r: GLdouble, q: GLdouble) -> Result<()> {
4795		#[cfg(feature = "catch_nullptr")]
4796		let ret = process_catch("glMultiTexCoord4d", catch_unwind(||(self.multitexcoord4d)(target, s, t, r, q)));
4797		#[cfg(not(feature = "catch_nullptr"))]
4798		let ret = {(self.multitexcoord4d)(target, s, t, r, q); Ok(())};
4799		#[cfg(feature = "diagnose")]
4800		if let Ok(ret) = ret {
4801			return to_result("glMultiTexCoord4d", ret, self.glGetError());
4802		} else {
4803			return ret
4804		}
4805		#[cfg(not(feature = "diagnose"))]
4806		return ret;
4807	}
4808	#[inline(always)]
4809	fn glMultiTexCoord4dv(&self, target: GLenum, v: *const GLdouble) -> Result<()> {
4810		#[cfg(feature = "catch_nullptr")]
4811		let ret = process_catch("glMultiTexCoord4dv", catch_unwind(||(self.multitexcoord4dv)(target, v)));
4812		#[cfg(not(feature = "catch_nullptr"))]
4813		let ret = {(self.multitexcoord4dv)(target, v); Ok(())};
4814		#[cfg(feature = "diagnose")]
4815		if let Ok(ret) = ret {
4816			return to_result("glMultiTexCoord4dv", ret, self.glGetError());
4817		} else {
4818			return ret
4819		}
4820		#[cfg(not(feature = "diagnose"))]
4821		return ret;
4822	}
4823	#[inline(always)]
4824	fn glMultiTexCoord4f(&self, target: GLenum, s: GLfloat, t: GLfloat, r: GLfloat, q: GLfloat) -> Result<()> {
4825		#[cfg(feature = "catch_nullptr")]
4826		let ret = process_catch("glMultiTexCoord4f", catch_unwind(||(self.multitexcoord4f)(target, s, t, r, q)));
4827		#[cfg(not(feature = "catch_nullptr"))]
4828		let ret = {(self.multitexcoord4f)(target, s, t, r, q); Ok(())};
4829		#[cfg(feature = "diagnose")]
4830		if let Ok(ret) = ret {
4831			return to_result("glMultiTexCoord4f", ret, self.glGetError());
4832		} else {
4833			return ret
4834		}
4835		#[cfg(not(feature = "diagnose"))]
4836		return ret;
4837	}
4838	#[inline(always)]
4839	fn glMultiTexCoord4fv(&self, target: GLenum, v: *const GLfloat) -> Result<()> {
4840		#[cfg(feature = "catch_nullptr")]
4841		let ret = process_catch("glMultiTexCoord4fv", catch_unwind(||(self.multitexcoord4fv)(target, v)));
4842		#[cfg(not(feature = "catch_nullptr"))]
4843		let ret = {(self.multitexcoord4fv)(target, v); Ok(())};
4844		#[cfg(feature = "diagnose")]
4845		if let Ok(ret) = ret {
4846			return to_result("glMultiTexCoord4fv", ret, self.glGetError());
4847		} else {
4848			return ret
4849		}
4850		#[cfg(not(feature = "diagnose"))]
4851		return ret;
4852	}
4853	#[inline(always)]
4854	fn glMultiTexCoord4i(&self, target: GLenum, s: GLint, t: GLint, r: GLint, q: GLint) -> Result<()> {
4855		#[cfg(feature = "catch_nullptr")]
4856		let ret = process_catch("glMultiTexCoord4i", catch_unwind(||(self.multitexcoord4i)(target, s, t, r, q)));
4857		#[cfg(not(feature = "catch_nullptr"))]
4858		let ret = {(self.multitexcoord4i)(target, s, t, r, q); Ok(())};
4859		#[cfg(feature = "diagnose")]
4860		if let Ok(ret) = ret {
4861			return to_result("glMultiTexCoord4i", ret, self.glGetError());
4862		} else {
4863			return ret
4864		}
4865		#[cfg(not(feature = "diagnose"))]
4866		return ret;
4867	}
4868	#[inline(always)]
4869	fn glMultiTexCoord4iv(&self, target: GLenum, v: *const GLint) -> Result<()> {
4870		#[cfg(feature = "catch_nullptr")]
4871		let ret = process_catch("glMultiTexCoord4iv", catch_unwind(||(self.multitexcoord4iv)(target, v)));
4872		#[cfg(not(feature = "catch_nullptr"))]
4873		let ret = {(self.multitexcoord4iv)(target, v); Ok(())};
4874		#[cfg(feature = "diagnose")]
4875		if let Ok(ret) = ret {
4876			return to_result("glMultiTexCoord4iv", ret, self.glGetError());
4877		} else {
4878			return ret
4879		}
4880		#[cfg(not(feature = "diagnose"))]
4881		return ret;
4882	}
4883	#[inline(always)]
4884	fn glMultiTexCoord4s(&self, target: GLenum, s: GLshort, t: GLshort, r: GLshort, q: GLshort) -> Result<()> {
4885		#[cfg(feature = "catch_nullptr")]
4886		let ret = process_catch("glMultiTexCoord4s", catch_unwind(||(self.multitexcoord4s)(target, s, t, r, q)));
4887		#[cfg(not(feature = "catch_nullptr"))]
4888		let ret = {(self.multitexcoord4s)(target, s, t, r, q); Ok(())};
4889		#[cfg(feature = "diagnose")]
4890		if let Ok(ret) = ret {
4891			return to_result("glMultiTexCoord4s", ret, self.glGetError());
4892		} else {
4893			return ret
4894		}
4895		#[cfg(not(feature = "diagnose"))]
4896		return ret;
4897	}
4898	#[inline(always)]
4899	fn glMultiTexCoord4sv(&self, target: GLenum, v: *const GLshort) -> Result<()> {
4900		#[cfg(feature = "catch_nullptr")]
4901		let ret = process_catch("glMultiTexCoord4sv", catch_unwind(||(self.multitexcoord4sv)(target, v)));
4902		#[cfg(not(feature = "catch_nullptr"))]
4903		let ret = {(self.multitexcoord4sv)(target, v); Ok(())};
4904		#[cfg(feature = "diagnose")]
4905		if let Ok(ret) = ret {
4906			return to_result("glMultiTexCoord4sv", ret, self.glGetError());
4907		} else {
4908			return ret
4909		}
4910		#[cfg(not(feature = "diagnose"))]
4911		return ret;
4912	}
4913	#[inline(always)]
4914	fn glLoadTransposeMatrixf(&self, m: *const GLfloat) -> Result<()> {
4915		#[cfg(feature = "catch_nullptr")]
4916		let ret = process_catch("glLoadTransposeMatrixf", catch_unwind(||(self.loadtransposematrixf)(m)));
4917		#[cfg(not(feature = "catch_nullptr"))]
4918		let ret = {(self.loadtransposematrixf)(m); Ok(())};
4919		#[cfg(feature = "diagnose")]
4920		if let Ok(ret) = ret {
4921			return to_result("glLoadTransposeMatrixf", ret, self.glGetError());
4922		} else {
4923			return ret
4924		}
4925		#[cfg(not(feature = "diagnose"))]
4926		return ret;
4927	}
4928	#[inline(always)]
4929	fn glLoadTransposeMatrixd(&self, m: *const GLdouble) -> Result<()> {
4930		#[cfg(feature = "catch_nullptr")]
4931		let ret = process_catch("glLoadTransposeMatrixd", catch_unwind(||(self.loadtransposematrixd)(m)));
4932		#[cfg(not(feature = "catch_nullptr"))]
4933		let ret = {(self.loadtransposematrixd)(m); Ok(())};
4934		#[cfg(feature = "diagnose")]
4935		if let Ok(ret) = ret {
4936			return to_result("glLoadTransposeMatrixd", ret, self.glGetError());
4937		} else {
4938			return ret
4939		}
4940		#[cfg(not(feature = "diagnose"))]
4941		return ret;
4942	}
4943	#[inline(always)]
4944	fn glMultTransposeMatrixf(&self, m: *const GLfloat) -> Result<()> {
4945		#[cfg(feature = "catch_nullptr")]
4946		let ret = process_catch("glMultTransposeMatrixf", catch_unwind(||(self.multtransposematrixf)(m)));
4947		#[cfg(not(feature = "catch_nullptr"))]
4948		let ret = {(self.multtransposematrixf)(m); Ok(())};
4949		#[cfg(feature = "diagnose")]
4950		if let Ok(ret) = ret {
4951			return to_result("glMultTransposeMatrixf", ret, self.glGetError());
4952		} else {
4953			return ret
4954		}
4955		#[cfg(not(feature = "diagnose"))]
4956		return ret;
4957	}
4958	#[inline(always)]
4959	fn glMultTransposeMatrixd(&self, m: *const GLdouble) -> Result<()> {
4960		#[cfg(feature = "catch_nullptr")]
4961		let ret = process_catch("glMultTransposeMatrixd", catch_unwind(||(self.multtransposematrixd)(m)));
4962		#[cfg(not(feature = "catch_nullptr"))]
4963		let ret = {(self.multtransposematrixd)(m); Ok(())};
4964		#[cfg(feature = "diagnose")]
4965		if let Ok(ret) = ret {
4966			return to_result("glMultTransposeMatrixd", ret, self.glGetError());
4967		} else {
4968			return ret
4969		}
4970		#[cfg(not(feature = "diagnose"))]
4971		return ret;
4972	}
4973}
4974
4975impl Version13 {
4976	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
4977		let (_spec, major, minor, release) = base.get_version();
4978		if (major, minor, release) < (1, 3, 0) {
4979			return Self::default();
4980		}
4981		Self {
4982			available: true,
4983			geterror: {let proc = get_proc_address("glGetError"); if proc.is_null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
4984			activetexture: {let proc = get_proc_address("glActiveTexture"); if proc.is_null() {dummy_pfnglactivetextureproc} else {unsafe{transmute(proc)}}},
4985			samplecoverage: {let proc = get_proc_address("glSampleCoverage"); if proc.is_null() {dummy_pfnglsamplecoverageproc} else {unsafe{transmute(proc)}}},
4986			compressedteximage3d: {let proc = get_proc_address("glCompressedTexImage3D"); if proc.is_null() {dummy_pfnglcompressedteximage3dproc} else {unsafe{transmute(proc)}}},
4987			compressedteximage2d: {let proc = get_proc_address("glCompressedTexImage2D"); if proc.is_null() {dummy_pfnglcompressedteximage2dproc} else {unsafe{transmute(proc)}}},
4988			compressedteximage1d: {let proc = get_proc_address("glCompressedTexImage1D"); if proc.is_null() {dummy_pfnglcompressedteximage1dproc} else {unsafe{transmute(proc)}}},
4989			compressedtexsubimage3d: {let proc = get_proc_address("glCompressedTexSubImage3D"); if proc.is_null() {dummy_pfnglcompressedtexsubimage3dproc} else {unsafe{transmute(proc)}}},
4990			compressedtexsubimage2d: {let proc = get_proc_address("glCompressedTexSubImage2D"); if proc.is_null() {dummy_pfnglcompressedtexsubimage2dproc} else {unsafe{transmute(proc)}}},
4991			compressedtexsubimage1d: {let proc = get_proc_address("glCompressedTexSubImage1D"); if proc.is_null() {dummy_pfnglcompressedtexsubimage1dproc} else {unsafe{transmute(proc)}}},
4992			getcompressedteximage: {let proc = get_proc_address("glGetCompressedTexImage"); if proc.is_null() {dummy_pfnglgetcompressedteximageproc} else {unsafe{transmute(proc)}}},
4993			clientactivetexture: {let proc = get_proc_address("glClientActiveTexture"); if proc.is_null() {dummy_pfnglclientactivetextureproc} else {unsafe{transmute(proc)}}},
4994			multitexcoord1d: {let proc = get_proc_address("glMultiTexCoord1d"); if proc.is_null() {dummy_pfnglmultitexcoord1dproc} else {unsafe{transmute(proc)}}},
4995			multitexcoord1dv: {let proc = get_proc_address("glMultiTexCoord1dv"); if proc.is_null() {dummy_pfnglmultitexcoord1dvproc} else {unsafe{transmute(proc)}}},
4996			multitexcoord1f: {let proc = get_proc_address("glMultiTexCoord1f"); if proc.is_null() {dummy_pfnglmultitexcoord1fproc} else {unsafe{transmute(proc)}}},
4997			multitexcoord1fv: {let proc = get_proc_address("glMultiTexCoord1fv"); if proc.is_null() {dummy_pfnglmultitexcoord1fvproc} else {unsafe{transmute(proc)}}},
4998			multitexcoord1i: {let proc = get_proc_address("glMultiTexCoord1i"); if proc.is_null() {dummy_pfnglmultitexcoord1iproc} else {unsafe{transmute(proc)}}},
4999			multitexcoord1iv: {let proc = get_proc_address("glMultiTexCoord1iv"); if proc.is_null() {dummy_pfnglmultitexcoord1ivproc} else {unsafe{transmute(proc)}}},
5000			multitexcoord1s: {let proc = get_proc_address("glMultiTexCoord1s"); if proc.is_null() {dummy_pfnglmultitexcoord1sproc} else {unsafe{transmute(proc)}}},
5001			multitexcoord1sv: {let proc = get_proc_address("glMultiTexCoord1sv"); if proc.is_null() {dummy_pfnglmultitexcoord1svproc} else {unsafe{transmute(proc)}}},
5002			multitexcoord2d: {let proc = get_proc_address("glMultiTexCoord2d"); if proc.is_null() {dummy_pfnglmultitexcoord2dproc} else {unsafe{transmute(proc)}}},
5003			multitexcoord2dv: {let proc = get_proc_address("glMultiTexCoord2dv"); if proc.is_null() {dummy_pfnglmultitexcoord2dvproc} else {unsafe{transmute(proc)}}},
5004			multitexcoord2f: {let proc = get_proc_address("glMultiTexCoord2f"); if proc.is_null() {dummy_pfnglmultitexcoord2fproc} else {unsafe{transmute(proc)}}},
5005			multitexcoord2fv: {let proc = get_proc_address("glMultiTexCoord2fv"); if proc.is_null() {dummy_pfnglmultitexcoord2fvproc} else {unsafe{transmute(proc)}}},
5006			multitexcoord2i: {let proc = get_proc_address("glMultiTexCoord2i"); if proc.is_null() {dummy_pfnglmultitexcoord2iproc} else {unsafe{transmute(proc)}}},
5007			multitexcoord2iv: {let proc = get_proc_address("glMultiTexCoord2iv"); if proc.is_null() {dummy_pfnglmultitexcoord2ivproc} else {unsafe{transmute(proc)}}},
5008			multitexcoord2s: {let proc = get_proc_address("glMultiTexCoord2s"); if proc.is_null() {dummy_pfnglmultitexcoord2sproc} else {unsafe{transmute(proc)}}},
5009			multitexcoord2sv: {let proc = get_proc_address("glMultiTexCoord2sv"); if proc.is_null() {dummy_pfnglmultitexcoord2svproc} else {unsafe{transmute(proc)}}},
5010			multitexcoord3d: {let proc = get_proc_address("glMultiTexCoord3d"); if proc.is_null() {dummy_pfnglmultitexcoord3dproc} else {unsafe{transmute(proc)}}},
5011			multitexcoord3dv: {let proc = get_proc_address("glMultiTexCoord3dv"); if proc.is_null() {dummy_pfnglmultitexcoord3dvproc} else {unsafe{transmute(proc)}}},
5012			multitexcoord3f: {let proc = get_proc_address("glMultiTexCoord3f"); if proc.is_null() {dummy_pfnglmultitexcoord3fproc} else {unsafe{transmute(proc)}}},
5013			multitexcoord3fv: {let proc = get_proc_address("glMultiTexCoord3fv"); if proc.is_null() {dummy_pfnglmultitexcoord3fvproc} else {unsafe{transmute(proc)}}},
5014			multitexcoord3i: {let proc = get_proc_address("glMultiTexCoord3i"); if proc.is_null() {dummy_pfnglmultitexcoord3iproc} else {unsafe{transmute(proc)}}},
5015			multitexcoord3iv: {let proc = get_proc_address("glMultiTexCoord3iv"); if proc.is_null() {dummy_pfnglmultitexcoord3ivproc} else {unsafe{transmute(proc)}}},
5016			multitexcoord3s: {let proc = get_proc_address("glMultiTexCoord3s"); if proc.is_null() {dummy_pfnglmultitexcoord3sproc} else {unsafe{transmute(proc)}}},
5017			multitexcoord3sv: {let proc = get_proc_address("glMultiTexCoord3sv"); if proc.is_null() {dummy_pfnglmultitexcoord3svproc} else {unsafe{transmute(proc)}}},
5018			multitexcoord4d: {let proc = get_proc_address("glMultiTexCoord4d"); if proc.is_null() {dummy_pfnglmultitexcoord4dproc} else {unsafe{transmute(proc)}}},
5019			multitexcoord4dv: {let proc = get_proc_address("glMultiTexCoord4dv"); if proc.is_null() {dummy_pfnglmultitexcoord4dvproc} else {unsafe{transmute(proc)}}},
5020			multitexcoord4f: {let proc = get_proc_address("glMultiTexCoord4f"); if proc.is_null() {dummy_pfnglmultitexcoord4fproc} else {unsafe{transmute(proc)}}},
5021			multitexcoord4fv: {let proc = get_proc_address("glMultiTexCoord4fv"); if proc.is_null() {dummy_pfnglmultitexcoord4fvproc} else {unsafe{transmute(proc)}}},
5022			multitexcoord4i: {let proc = get_proc_address("glMultiTexCoord4i"); if proc.is_null() {dummy_pfnglmultitexcoord4iproc} else {unsafe{transmute(proc)}}},
5023			multitexcoord4iv: {let proc = get_proc_address("glMultiTexCoord4iv"); if proc.is_null() {dummy_pfnglmultitexcoord4ivproc} else {unsafe{transmute(proc)}}},
5024			multitexcoord4s: {let proc = get_proc_address("glMultiTexCoord4s"); if proc.is_null() {dummy_pfnglmultitexcoord4sproc} else {unsafe{transmute(proc)}}},
5025			multitexcoord4sv: {let proc = get_proc_address("glMultiTexCoord4sv"); if proc.is_null() {dummy_pfnglmultitexcoord4svproc} else {unsafe{transmute(proc)}}},
5026			loadtransposematrixf: {let proc = get_proc_address("glLoadTransposeMatrixf"); if proc.is_null() {dummy_pfnglloadtransposematrixfproc} else {unsafe{transmute(proc)}}},
5027			loadtransposematrixd: {let proc = get_proc_address("glLoadTransposeMatrixd"); if proc.is_null() {dummy_pfnglloadtransposematrixdproc} else {unsafe{transmute(proc)}}},
5028			multtransposematrixf: {let proc = get_proc_address("glMultTransposeMatrixf"); if proc.is_null() {dummy_pfnglmulttransposematrixfproc} else {unsafe{transmute(proc)}}},
5029			multtransposematrixd: {let proc = get_proc_address("glMultTransposeMatrixd"); if proc.is_null() {dummy_pfnglmulttransposematrixdproc} else {unsafe{transmute(proc)}}},
5030		}
5031	}
5032	#[inline(always)]
5033	pub fn get_available(&self) -> bool {
5034		self.available
5035	}
5036}
5037
5038impl Default for Version13 {
5039	fn default() -> Self {
5040		Self {
5041			available: false,
5042			geterror: dummy_pfnglgeterrorproc,
5043			activetexture: dummy_pfnglactivetextureproc,
5044			samplecoverage: dummy_pfnglsamplecoverageproc,
5045			compressedteximage3d: dummy_pfnglcompressedteximage3dproc,
5046			compressedteximage2d: dummy_pfnglcompressedteximage2dproc,
5047			compressedteximage1d: dummy_pfnglcompressedteximage1dproc,
5048			compressedtexsubimage3d: dummy_pfnglcompressedtexsubimage3dproc,
5049			compressedtexsubimage2d: dummy_pfnglcompressedtexsubimage2dproc,
5050			compressedtexsubimage1d: dummy_pfnglcompressedtexsubimage1dproc,
5051			getcompressedteximage: dummy_pfnglgetcompressedteximageproc,
5052			clientactivetexture: dummy_pfnglclientactivetextureproc,
5053			multitexcoord1d: dummy_pfnglmultitexcoord1dproc,
5054			multitexcoord1dv: dummy_pfnglmultitexcoord1dvproc,
5055			multitexcoord1f: dummy_pfnglmultitexcoord1fproc,
5056			multitexcoord1fv: dummy_pfnglmultitexcoord1fvproc,
5057			multitexcoord1i: dummy_pfnglmultitexcoord1iproc,
5058			multitexcoord1iv: dummy_pfnglmultitexcoord1ivproc,
5059			multitexcoord1s: dummy_pfnglmultitexcoord1sproc,
5060			multitexcoord1sv: dummy_pfnglmultitexcoord1svproc,
5061			multitexcoord2d: dummy_pfnglmultitexcoord2dproc,
5062			multitexcoord2dv: dummy_pfnglmultitexcoord2dvproc,
5063			multitexcoord2f: dummy_pfnglmultitexcoord2fproc,
5064			multitexcoord2fv: dummy_pfnglmultitexcoord2fvproc,
5065			multitexcoord2i: dummy_pfnglmultitexcoord2iproc,
5066			multitexcoord2iv: dummy_pfnglmultitexcoord2ivproc,
5067			multitexcoord2s: dummy_pfnglmultitexcoord2sproc,
5068			multitexcoord2sv: dummy_pfnglmultitexcoord2svproc,
5069			multitexcoord3d: dummy_pfnglmultitexcoord3dproc,
5070			multitexcoord3dv: dummy_pfnglmultitexcoord3dvproc,
5071			multitexcoord3f: dummy_pfnglmultitexcoord3fproc,
5072			multitexcoord3fv: dummy_pfnglmultitexcoord3fvproc,
5073			multitexcoord3i: dummy_pfnglmultitexcoord3iproc,
5074			multitexcoord3iv: dummy_pfnglmultitexcoord3ivproc,
5075			multitexcoord3s: dummy_pfnglmultitexcoord3sproc,
5076			multitexcoord3sv: dummy_pfnglmultitexcoord3svproc,
5077			multitexcoord4d: dummy_pfnglmultitexcoord4dproc,
5078			multitexcoord4dv: dummy_pfnglmultitexcoord4dvproc,
5079			multitexcoord4f: dummy_pfnglmultitexcoord4fproc,
5080			multitexcoord4fv: dummy_pfnglmultitexcoord4fvproc,
5081			multitexcoord4i: dummy_pfnglmultitexcoord4iproc,
5082			multitexcoord4iv: dummy_pfnglmultitexcoord4ivproc,
5083			multitexcoord4s: dummy_pfnglmultitexcoord4sproc,
5084			multitexcoord4sv: dummy_pfnglmultitexcoord4svproc,
5085			loadtransposematrixf: dummy_pfnglloadtransposematrixfproc,
5086			loadtransposematrixd: dummy_pfnglloadtransposematrixdproc,
5087			multtransposematrixf: dummy_pfnglmulttransposematrixfproc,
5088			multtransposematrixd: dummy_pfnglmulttransposematrixdproc,
5089		}
5090	}
5091}
5092impl Debug for Version13 {
5093	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
5094		if self.available {
5095			f.debug_struct("Version13")
5096			.field("available", &self.available)
5097			.field("activetexture", unsafe{if transmute::<_, *const c_void>(self.activetexture) == (dummy_pfnglactivetextureproc as *const c_void) {&null::<PFNGLACTIVETEXTUREPROC>()} else {&self.activetexture}})
5098			.field("samplecoverage", unsafe{if transmute::<_, *const c_void>(self.samplecoverage) == (dummy_pfnglsamplecoverageproc as *const c_void) {&null::<PFNGLSAMPLECOVERAGEPROC>()} else {&self.samplecoverage}})
5099			.field("compressedteximage3d", unsafe{if transmute::<_, *const c_void>(self.compressedteximage3d) == (dummy_pfnglcompressedteximage3dproc as *const c_void) {&null::<PFNGLCOMPRESSEDTEXIMAGE3DPROC>()} else {&self.compressedteximage3d}})
5100			.field("compressedteximage2d", unsafe{if transmute::<_, *const c_void>(self.compressedteximage2d) == (dummy_pfnglcompressedteximage2dproc as *const c_void) {&null::<PFNGLCOMPRESSEDTEXIMAGE2DPROC>()} else {&self.compressedteximage2d}})
5101			.field("compressedteximage1d", unsafe{if transmute::<_, *const c_void>(self.compressedteximage1d) == (dummy_pfnglcompressedteximage1dproc as *const c_void) {&null::<PFNGLCOMPRESSEDTEXIMAGE1DPROC>()} else {&self.compressedteximage1d}})
5102			.field("compressedtexsubimage3d", unsafe{if transmute::<_, *const c_void>(self.compressedtexsubimage3d) == (dummy_pfnglcompressedtexsubimage3dproc as *const c_void) {&null::<PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC>()} else {&self.compressedtexsubimage3d}})
5103			.field("compressedtexsubimage2d", unsafe{if transmute::<_, *const c_void>(self.compressedtexsubimage2d) == (dummy_pfnglcompressedtexsubimage2dproc as *const c_void) {&null::<PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC>()} else {&self.compressedtexsubimage2d}})
5104			.field("compressedtexsubimage1d", unsafe{if transmute::<_, *const c_void>(self.compressedtexsubimage1d) == (dummy_pfnglcompressedtexsubimage1dproc as *const c_void) {&null::<PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC>()} else {&self.compressedtexsubimage1d}})
5105			.field("getcompressedteximage", unsafe{if transmute::<_, *const c_void>(self.getcompressedteximage) == (dummy_pfnglgetcompressedteximageproc as *const c_void) {&null::<PFNGLGETCOMPRESSEDTEXIMAGEPROC>()} else {&self.getcompressedteximage}})
5106			.field("clientactivetexture", unsafe{if transmute::<_, *const c_void>(self.clientactivetexture) == (dummy_pfnglclientactivetextureproc as *const c_void) {&null::<PFNGLCLIENTACTIVETEXTUREPROC>()} else {&self.clientactivetexture}})
5107			.field("multitexcoord1d", unsafe{if transmute::<_, *const c_void>(self.multitexcoord1d) == (dummy_pfnglmultitexcoord1dproc as *const c_void) {&null::<PFNGLMULTITEXCOORD1DPROC>()} else {&self.multitexcoord1d}})
5108			.field("multitexcoord1dv", unsafe{if transmute::<_, *const c_void>(self.multitexcoord1dv) == (dummy_pfnglmultitexcoord1dvproc as *const c_void) {&null::<PFNGLMULTITEXCOORD1DVPROC>()} else {&self.multitexcoord1dv}})
5109			.field("multitexcoord1f", unsafe{if transmute::<_, *const c_void>(self.multitexcoord1f) == (dummy_pfnglmultitexcoord1fproc as *const c_void) {&null::<PFNGLMULTITEXCOORD1FPROC>()} else {&self.multitexcoord1f}})
5110			.field("multitexcoord1fv", unsafe{if transmute::<_, *const c_void>(self.multitexcoord1fv) == (dummy_pfnglmultitexcoord1fvproc as *const c_void) {&null::<PFNGLMULTITEXCOORD1FVPROC>()} else {&self.multitexcoord1fv}})
5111			.field("multitexcoord1i", unsafe{if transmute::<_, *const c_void>(self.multitexcoord1i) == (dummy_pfnglmultitexcoord1iproc as *const c_void) {&null::<PFNGLMULTITEXCOORD1IPROC>()} else {&self.multitexcoord1i}})
5112			.field("multitexcoord1iv", unsafe{if transmute::<_, *const c_void>(self.multitexcoord1iv) == (dummy_pfnglmultitexcoord1ivproc as *const c_void) {&null::<PFNGLMULTITEXCOORD1IVPROC>()} else {&self.multitexcoord1iv}})
5113			.field("multitexcoord1s", unsafe{if transmute::<_, *const c_void>(self.multitexcoord1s) == (dummy_pfnglmultitexcoord1sproc as *const c_void) {&null::<PFNGLMULTITEXCOORD1SPROC>()} else {&self.multitexcoord1s}})
5114			.field("multitexcoord1sv", unsafe{if transmute::<_, *const c_void>(self.multitexcoord1sv) == (dummy_pfnglmultitexcoord1svproc as *const c_void) {&null::<PFNGLMULTITEXCOORD1SVPROC>()} else {&self.multitexcoord1sv}})
5115			.field("multitexcoord2d", unsafe{if transmute::<_, *const c_void>(self.multitexcoord2d) == (dummy_pfnglmultitexcoord2dproc as *const c_void) {&null::<PFNGLMULTITEXCOORD2DPROC>()} else {&self.multitexcoord2d}})
5116			.field("multitexcoord2dv", unsafe{if transmute::<_, *const c_void>(self.multitexcoord2dv) == (dummy_pfnglmultitexcoord2dvproc as *const c_void) {&null::<PFNGLMULTITEXCOORD2DVPROC>()} else {&self.multitexcoord2dv}})
5117			.field("multitexcoord2f", unsafe{if transmute::<_, *const c_void>(self.multitexcoord2f) == (dummy_pfnglmultitexcoord2fproc as *const c_void) {&null::<PFNGLMULTITEXCOORD2FPROC>()} else {&self.multitexcoord2f}})
5118			.field("multitexcoord2fv", unsafe{if transmute::<_, *const c_void>(self.multitexcoord2fv) == (dummy_pfnglmultitexcoord2fvproc as *const c_void) {&null::<PFNGLMULTITEXCOORD2FVPROC>()} else {&self.multitexcoord2fv}})
5119			.field("multitexcoord2i", unsafe{if transmute::<_, *const c_void>(self.multitexcoord2i) == (dummy_pfnglmultitexcoord2iproc as *const c_void) {&null::<PFNGLMULTITEXCOORD2IPROC>()} else {&self.multitexcoord2i}})
5120			.field("multitexcoord2iv", unsafe{if transmute::<_, *const c_void>(self.multitexcoord2iv) == (dummy_pfnglmultitexcoord2ivproc as *const c_void) {&null::<PFNGLMULTITEXCOORD2IVPROC>()} else {&self.multitexcoord2iv}})
5121			.field("multitexcoord2s", unsafe{if transmute::<_, *const c_void>(self.multitexcoord2s) == (dummy_pfnglmultitexcoord2sproc as *const c_void) {&null::<PFNGLMULTITEXCOORD2SPROC>()} else {&self.multitexcoord2s}})
5122			.field("multitexcoord2sv", unsafe{if transmute::<_, *const c_void>(self.multitexcoord2sv) == (dummy_pfnglmultitexcoord2svproc as *const c_void) {&null::<PFNGLMULTITEXCOORD2SVPROC>()} else {&self.multitexcoord2sv}})
5123			.field("multitexcoord3d", unsafe{if transmute::<_, *const c_void>(self.multitexcoord3d) == (dummy_pfnglmultitexcoord3dproc as *const c_void) {&null::<PFNGLMULTITEXCOORD3DPROC>()} else {&self.multitexcoord3d}})
5124			.field("multitexcoord3dv", unsafe{if transmute::<_, *const c_void>(self.multitexcoord3dv) == (dummy_pfnglmultitexcoord3dvproc as *const c_void) {&null::<PFNGLMULTITEXCOORD3DVPROC>()} else {&self.multitexcoord3dv}})
5125			.field("multitexcoord3f", unsafe{if transmute::<_, *const c_void>(self.multitexcoord3f) == (dummy_pfnglmultitexcoord3fproc as *const c_void) {&null::<PFNGLMULTITEXCOORD3FPROC>()} else {&self.multitexcoord3f}})
5126			.field("multitexcoord3fv", unsafe{if transmute::<_, *const c_void>(self.multitexcoord3fv) == (dummy_pfnglmultitexcoord3fvproc as *const c_void) {&null::<PFNGLMULTITEXCOORD3FVPROC>()} else {&self.multitexcoord3fv}})
5127			.field("multitexcoord3i", unsafe{if transmute::<_, *const c_void>(self.multitexcoord3i) == (dummy_pfnglmultitexcoord3iproc as *const c_void) {&null::<PFNGLMULTITEXCOORD3IPROC>()} else {&self.multitexcoord3i}})
5128			.field("multitexcoord3iv", unsafe{if transmute::<_, *const c_void>(self.multitexcoord3iv) == (dummy_pfnglmultitexcoord3ivproc as *const c_void) {&null::<PFNGLMULTITEXCOORD3IVPROC>()} else {&self.multitexcoord3iv}})
5129			.field("multitexcoord3s", unsafe{if transmute::<_, *const c_void>(self.multitexcoord3s) == (dummy_pfnglmultitexcoord3sproc as *const c_void) {&null::<PFNGLMULTITEXCOORD3SPROC>()} else {&self.multitexcoord3s}})
5130			.field("multitexcoord3sv", unsafe{if transmute::<_, *const c_void>(self.multitexcoord3sv) == (dummy_pfnglmultitexcoord3svproc as *const c_void) {&null::<PFNGLMULTITEXCOORD3SVPROC>()} else {&self.multitexcoord3sv}})
5131			.field("multitexcoord4d", unsafe{if transmute::<_, *const c_void>(self.multitexcoord4d) == (dummy_pfnglmultitexcoord4dproc as *const c_void) {&null::<PFNGLMULTITEXCOORD4DPROC>()} else {&self.multitexcoord4d}})
5132			.field("multitexcoord4dv", unsafe{if transmute::<_, *const c_void>(self.multitexcoord4dv) == (dummy_pfnglmultitexcoord4dvproc as *const c_void) {&null::<PFNGLMULTITEXCOORD4DVPROC>()} else {&self.multitexcoord4dv}})
5133			.field("multitexcoord4f", unsafe{if transmute::<_, *const c_void>(self.multitexcoord4f) == (dummy_pfnglmultitexcoord4fproc as *const c_void) {&null::<PFNGLMULTITEXCOORD4FPROC>()} else {&self.multitexcoord4f}})
5134			.field("multitexcoord4fv", unsafe{if transmute::<_, *const c_void>(self.multitexcoord4fv) == (dummy_pfnglmultitexcoord4fvproc as *const c_void) {&null::<PFNGLMULTITEXCOORD4FVPROC>()} else {&self.multitexcoord4fv}})
5135			.field("multitexcoord4i", unsafe{if transmute::<_, *const c_void>(self.multitexcoord4i) == (dummy_pfnglmultitexcoord4iproc as *const c_void) {&null::<PFNGLMULTITEXCOORD4IPROC>()} else {&self.multitexcoord4i}})
5136			.field("multitexcoord4iv", unsafe{if transmute::<_, *const c_void>(self.multitexcoord4iv) == (dummy_pfnglmultitexcoord4ivproc as *const c_void) {&null::<PFNGLMULTITEXCOORD4IVPROC>()} else {&self.multitexcoord4iv}})
5137			.field("multitexcoord4s", unsafe{if transmute::<_, *const c_void>(self.multitexcoord4s) == (dummy_pfnglmultitexcoord4sproc as *const c_void) {&null::<PFNGLMULTITEXCOORD4SPROC>()} else {&self.multitexcoord4s}})
5138			.field("multitexcoord4sv", unsafe{if transmute::<_, *const c_void>(self.multitexcoord4sv) == (dummy_pfnglmultitexcoord4svproc as *const c_void) {&null::<PFNGLMULTITEXCOORD4SVPROC>()} else {&self.multitexcoord4sv}})
5139			.field("loadtransposematrixf", unsafe{if transmute::<_, *const c_void>(self.loadtransposematrixf) == (dummy_pfnglloadtransposematrixfproc as *const c_void) {&null::<PFNGLLOADTRANSPOSEMATRIXFPROC>()} else {&self.loadtransposematrixf}})
5140			.field("loadtransposematrixd", unsafe{if transmute::<_, *const c_void>(self.loadtransposematrixd) == (dummy_pfnglloadtransposematrixdproc as *const c_void) {&null::<PFNGLLOADTRANSPOSEMATRIXDPROC>()} else {&self.loadtransposematrixd}})
5141			.field("multtransposematrixf", unsafe{if transmute::<_, *const c_void>(self.multtransposematrixf) == (dummy_pfnglmulttransposematrixfproc as *const c_void) {&null::<PFNGLMULTTRANSPOSEMATRIXFPROC>()} else {&self.multtransposematrixf}})
5142			.field("multtransposematrixd", unsafe{if transmute::<_, *const c_void>(self.multtransposematrixd) == (dummy_pfnglmulttransposematrixdproc as *const c_void) {&null::<PFNGLMULTTRANSPOSEMATRIXDPROC>()} else {&self.multtransposematrixd}})
5143			.finish()
5144		} else {
5145			f.debug_struct("Version13")
5146			.field("available", &self.available)
5147			.finish_non_exhaustive()
5148		}
5149	}
5150}
5151
5152/// The prototype to the OpenGL function `BlendFuncSeparate`
5153type PFNGLBLENDFUNCSEPARATEPROC = extern "system" fn(GLenum, GLenum, GLenum, GLenum);
5154
5155/// The prototype to the OpenGL function `MultiDrawArrays`
5156type PFNGLMULTIDRAWARRAYSPROC = extern "system" fn(GLenum, *const GLint, *const GLsizei, GLsizei);
5157
5158/// The prototype to the OpenGL function `MultiDrawElements`
5159type PFNGLMULTIDRAWELEMENTSPROC = extern "system" fn(GLenum, *const GLsizei, GLenum, *const *const c_void, GLsizei);
5160
5161/// The prototype to the OpenGL function `PointParameterf`
5162type PFNGLPOINTPARAMETERFPROC = extern "system" fn(GLenum, GLfloat);
5163
5164/// The prototype to the OpenGL function `PointParameterfv`
5165type PFNGLPOINTPARAMETERFVPROC = extern "system" fn(GLenum, *const GLfloat);
5166
5167/// The prototype to the OpenGL function `PointParameteri`
5168type PFNGLPOINTPARAMETERIPROC = extern "system" fn(GLenum, GLint);
5169
5170/// The prototype to the OpenGL function `PointParameteriv`
5171type PFNGLPOINTPARAMETERIVPROC = extern "system" fn(GLenum, *const GLint);
5172
5173/// The prototype to the OpenGL function `FogCoordf`
5174type PFNGLFOGCOORDFPROC = extern "system" fn(GLfloat);
5175
5176/// The prototype to the OpenGL function `FogCoordfv`
5177type PFNGLFOGCOORDFVPROC = extern "system" fn(*const GLfloat);
5178
5179/// The prototype to the OpenGL function `FogCoordd`
5180type PFNGLFOGCOORDDPROC = extern "system" fn(GLdouble);
5181
5182/// The prototype to the OpenGL function `FogCoorddv`
5183type PFNGLFOGCOORDDVPROC = extern "system" fn(*const GLdouble);
5184
5185/// The prototype to the OpenGL function `FogCoordPointer`
5186type PFNGLFOGCOORDPOINTERPROC = extern "system" fn(GLenum, GLsizei, *const c_void);
5187
5188/// The prototype to the OpenGL function `SecondaryColor3b`
5189type PFNGLSECONDARYCOLOR3BPROC = extern "system" fn(GLbyte, GLbyte, GLbyte);
5190
5191/// The prototype to the OpenGL function `SecondaryColor3bv`
5192type PFNGLSECONDARYCOLOR3BVPROC = extern "system" fn(*const GLbyte);
5193
5194/// The prototype to the OpenGL function `SecondaryColor3d`
5195type PFNGLSECONDARYCOLOR3DPROC = extern "system" fn(GLdouble, GLdouble, GLdouble);
5196
5197/// The prototype to the OpenGL function `SecondaryColor3dv`
5198type PFNGLSECONDARYCOLOR3DVPROC = extern "system" fn(*const GLdouble);
5199
5200/// The prototype to the OpenGL function `SecondaryColor3f`
5201type PFNGLSECONDARYCOLOR3FPROC = extern "system" fn(GLfloat, GLfloat, GLfloat);
5202
5203/// The prototype to the OpenGL function `SecondaryColor3fv`
5204type PFNGLSECONDARYCOLOR3FVPROC = extern "system" fn(*const GLfloat);
5205
5206/// The prototype to the OpenGL function `SecondaryColor3i`
5207type PFNGLSECONDARYCOLOR3IPROC = extern "system" fn(GLint, GLint, GLint);
5208
5209/// The prototype to the OpenGL function `SecondaryColor3iv`
5210type PFNGLSECONDARYCOLOR3IVPROC = extern "system" fn(*const GLint);
5211
5212/// The prototype to the OpenGL function `SecondaryColor3s`
5213type PFNGLSECONDARYCOLOR3SPROC = extern "system" fn(GLshort, GLshort, GLshort);
5214
5215/// The prototype to the OpenGL function `SecondaryColor3sv`
5216type PFNGLSECONDARYCOLOR3SVPROC = extern "system" fn(*const GLshort);
5217
5218/// The prototype to the OpenGL function `SecondaryColor3ub`
5219type PFNGLSECONDARYCOLOR3UBPROC = extern "system" fn(GLubyte, GLubyte, GLubyte);
5220
5221/// The prototype to the OpenGL function `SecondaryColor3ubv`
5222type PFNGLSECONDARYCOLOR3UBVPROC = extern "system" fn(*const GLubyte);
5223
5224/// The prototype to the OpenGL function `SecondaryColor3ui`
5225type PFNGLSECONDARYCOLOR3UIPROC = extern "system" fn(GLuint, GLuint, GLuint);
5226
5227/// The prototype to the OpenGL function `SecondaryColor3uiv`
5228type PFNGLSECONDARYCOLOR3UIVPROC = extern "system" fn(*const GLuint);
5229
5230/// The prototype to the OpenGL function `SecondaryColor3us`
5231type PFNGLSECONDARYCOLOR3USPROC = extern "system" fn(GLushort, GLushort, GLushort);
5232
5233/// The prototype to the OpenGL function `SecondaryColor3usv`
5234type PFNGLSECONDARYCOLOR3USVPROC = extern "system" fn(*const GLushort);
5235
5236/// The prototype to the OpenGL function `SecondaryColorPointer`
5237type PFNGLSECONDARYCOLORPOINTERPROC = extern "system" fn(GLint, GLenum, GLsizei, *const c_void);
5238
5239/// The prototype to the OpenGL function `WindowPos2d`
5240type PFNGLWINDOWPOS2DPROC = extern "system" fn(GLdouble, GLdouble);
5241
5242/// The prototype to the OpenGL function `WindowPos2dv`
5243type PFNGLWINDOWPOS2DVPROC = extern "system" fn(*const GLdouble);
5244
5245/// The prototype to the OpenGL function `WindowPos2f`
5246type PFNGLWINDOWPOS2FPROC = extern "system" fn(GLfloat, GLfloat);
5247
5248/// The prototype to the OpenGL function `WindowPos2fv`
5249type PFNGLWINDOWPOS2FVPROC = extern "system" fn(*const GLfloat);
5250
5251/// The prototype to the OpenGL function `WindowPos2i`
5252type PFNGLWINDOWPOS2IPROC = extern "system" fn(GLint, GLint);
5253
5254/// The prototype to the OpenGL function `WindowPos2iv`
5255type PFNGLWINDOWPOS2IVPROC = extern "system" fn(*const GLint);
5256
5257/// The prototype to the OpenGL function `WindowPos2s`
5258type PFNGLWINDOWPOS2SPROC = extern "system" fn(GLshort, GLshort);
5259
5260/// The prototype to the OpenGL function `WindowPos2sv`
5261type PFNGLWINDOWPOS2SVPROC = extern "system" fn(*const GLshort);
5262
5263/// The prototype to the OpenGL function `WindowPos3d`
5264type PFNGLWINDOWPOS3DPROC = extern "system" fn(GLdouble, GLdouble, GLdouble);
5265
5266/// The prototype to the OpenGL function `WindowPos3dv`
5267type PFNGLWINDOWPOS3DVPROC = extern "system" fn(*const GLdouble);
5268
5269/// The prototype to the OpenGL function `WindowPos3f`
5270type PFNGLWINDOWPOS3FPROC = extern "system" fn(GLfloat, GLfloat, GLfloat);
5271
5272/// The prototype to the OpenGL function `WindowPos3fv`
5273type PFNGLWINDOWPOS3FVPROC = extern "system" fn(*const GLfloat);
5274
5275/// The prototype to the OpenGL function `WindowPos3i`
5276type PFNGLWINDOWPOS3IPROC = extern "system" fn(GLint, GLint, GLint);
5277
5278/// The prototype to the OpenGL function `WindowPos3iv`
5279type PFNGLWINDOWPOS3IVPROC = extern "system" fn(*const GLint);
5280
5281/// The prototype to the OpenGL function `WindowPos3s`
5282type PFNGLWINDOWPOS3SPROC = extern "system" fn(GLshort, GLshort, GLshort);
5283
5284/// The prototype to the OpenGL function `WindowPos3sv`
5285type PFNGLWINDOWPOS3SVPROC = extern "system" fn(*const GLshort);
5286
5287/// The prototype to the OpenGL function `BlendColor`
5288type PFNGLBLENDCOLORPROC = extern "system" fn(GLfloat, GLfloat, GLfloat, GLfloat);
5289
5290/// The prototype to the OpenGL function `BlendEquation`
5291type PFNGLBLENDEQUATIONPROC = extern "system" fn(GLenum);
5292
5293/// The dummy function of `BlendFuncSeparate()`
5294extern "system" fn dummy_pfnglblendfuncseparateproc (_: GLenum, _: GLenum, _: GLenum, _: GLenum) {
5295	panic!("OpenGL function pointer `glBlendFuncSeparate()` is null.")
5296}
5297
5298/// The dummy function of `MultiDrawArrays()`
5299extern "system" fn dummy_pfnglmultidrawarraysproc (_: GLenum, _: *const GLint, _: *const GLsizei, _: GLsizei) {
5300	panic!("OpenGL function pointer `glMultiDrawArrays()` is null.")
5301}
5302
5303/// The dummy function of `MultiDrawElements()`
5304extern "system" fn dummy_pfnglmultidrawelementsproc (_: GLenum, _: *const GLsizei, _: GLenum, _: *const *const c_void, _: GLsizei) {
5305	panic!("OpenGL function pointer `glMultiDrawElements()` is null.")
5306}
5307
5308/// The dummy function of `PointParameterf()`
5309extern "system" fn dummy_pfnglpointparameterfproc (_: GLenum, _: GLfloat) {
5310	panic!("OpenGL function pointer `glPointParameterf()` is null.")
5311}
5312
5313/// The dummy function of `PointParameterfv()`
5314extern "system" fn dummy_pfnglpointparameterfvproc (_: GLenum, _: *const GLfloat) {
5315	panic!("OpenGL function pointer `glPointParameterfv()` is null.")
5316}
5317
5318/// The dummy function of `PointParameteri()`
5319extern "system" fn dummy_pfnglpointparameteriproc (_: GLenum, _: GLint) {
5320	panic!("OpenGL function pointer `glPointParameteri()` is null.")
5321}
5322
5323/// The dummy function of `PointParameteriv()`
5324extern "system" fn dummy_pfnglpointparameterivproc (_: GLenum, _: *const GLint) {
5325	panic!("OpenGL function pointer `glPointParameteriv()` is null.")
5326}
5327
5328/// The dummy function of `FogCoordf()`
5329extern "system" fn dummy_pfnglfogcoordfproc (_: GLfloat) {
5330	panic!("OpenGL function pointer `glFogCoordf()` is null.")
5331}
5332
5333/// The dummy function of `FogCoordfv()`
5334extern "system" fn dummy_pfnglfogcoordfvproc (_: *const GLfloat) {
5335	panic!("OpenGL function pointer `glFogCoordfv()` is null.")
5336}
5337
5338/// The dummy function of `FogCoordd()`
5339extern "system" fn dummy_pfnglfogcoorddproc (_: GLdouble) {
5340	panic!("OpenGL function pointer `glFogCoordd()` is null.")
5341}
5342
5343/// The dummy function of `FogCoorddv()`
5344extern "system" fn dummy_pfnglfogcoorddvproc (_: *const GLdouble) {
5345	panic!("OpenGL function pointer `glFogCoorddv()` is null.")
5346}
5347
5348/// The dummy function of `FogCoordPointer()`
5349extern "system" fn dummy_pfnglfogcoordpointerproc (_: GLenum, _: GLsizei, _: *const c_void) {
5350	panic!("OpenGL function pointer `glFogCoordPointer()` is null.")
5351}
5352
5353/// The dummy function of `SecondaryColor3b()`
5354extern "system" fn dummy_pfnglsecondarycolor3bproc (_: GLbyte, _: GLbyte, _: GLbyte) {
5355	panic!("OpenGL function pointer `glSecondaryColor3b()` is null.")
5356}
5357
5358/// The dummy function of `SecondaryColor3bv()`
5359extern "system" fn dummy_pfnglsecondarycolor3bvproc (_: *const GLbyte) {
5360	panic!("OpenGL function pointer `glSecondaryColor3bv()` is null.")
5361}
5362
5363/// The dummy function of `SecondaryColor3d()`
5364extern "system" fn dummy_pfnglsecondarycolor3dproc (_: GLdouble, _: GLdouble, _: GLdouble) {
5365	panic!("OpenGL function pointer `glSecondaryColor3d()` is null.")
5366}
5367
5368/// The dummy function of `SecondaryColor3dv()`
5369extern "system" fn dummy_pfnglsecondarycolor3dvproc (_: *const GLdouble) {
5370	panic!("OpenGL function pointer `glSecondaryColor3dv()` is null.")
5371}
5372
5373/// The dummy function of `SecondaryColor3f()`
5374extern "system" fn dummy_pfnglsecondarycolor3fproc (_: GLfloat, _: GLfloat, _: GLfloat) {
5375	panic!("OpenGL function pointer `glSecondaryColor3f()` is null.")
5376}
5377
5378/// The dummy function of `SecondaryColor3fv()`
5379extern "system" fn dummy_pfnglsecondarycolor3fvproc (_: *const GLfloat) {
5380	panic!("OpenGL function pointer `glSecondaryColor3fv()` is null.")
5381}
5382
5383/// The dummy function of `SecondaryColor3i()`
5384extern "system" fn dummy_pfnglsecondarycolor3iproc (_: GLint, _: GLint, _: GLint) {
5385	panic!("OpenGL function pointer `glSecondaryColor3i()` is null.")
5386}
5387
5388/// The dummy function of `SecondaryColor3iv()`
5389extern "system" fn dummy_pfnglsecondarycolor3ivproc (_: *const GLint) {
5390	panic!("OpenGL function pointer `glSecondaryColor3iv()` is null.")
5391}
5392
5393/// The dummy function of `SecondaryColor3s()`
5394extern "system" fn dummy_pfnglsecondarycolor3sproc (_: GLshort, _: GLshort, _: GLshort) {
5395	panic!("OpenGL function pointer `glSecondaryColor3s()` is null.")
5396}
5397
5398/// The dummy function of `SecondaryColor3sv()`
5399extern "system" fn dummy_pfnglsecondarycolor3svproc (_: *const GLshort) {
5400	panic!("OpenGL function pointer `glSecondaryColor3sv()` is null.")
5401}
5402
5403/// The dummy function of `SecondaryColor3ub()`
5404extern "system" fn dummy_pfnglsecondarycolor3ubproc (_: GLubyte, _: GLubyte, _: GLubyte) {
5405	panic!("OpenGL function pointer `glSecondaryColor3ub()` is null.")
5406}
5407
5408/// The dummy function of `SecondaryColor3ubv()`
5409extern "system" fn dummy_pfnglsecondarycolor3ubvproc (_: *const GLubyte) {
5410	panic!("OpenGL function pointer `glSecondaryColor3ubv()` is null.")
5411}
5412
5413/// The dummy function of `SecondaryColor3ui()`
5414extern "system" fn dummy_pfnglsecondarycolor3uiproc (_: GLuint, _: GLuint, _: GLuint) {
5415	panic!("OpenGL function pointer `glSecondaryColor3ui()` is null.")
5416}
5417
5418/// The dummy function of `SecondaryColor3uiv()`
5419extern "system" fn dummy_pfnglsecondarycolor3uivproc (_: *const GLuint) {
5420	panic!("OpenGL function pointer `glSecondaryColor3uiv()` is null.")
5421}
5422
5423/// The dummy function of `SecondaryColor3us()`
5424extern "system" fn dummy_pfnglsecondarycolor3usproc (_: GLushort, _: GLushort, _: GLushort) {
5425	panic!("OpenGL function pointer `glSecondaryColor3us()` is null.")
5426}
5427
5428/// The dummy function of `SecondaryColor3usv()`
5429extern "system" fn dummy_pfnglsecondarycolor3usvproc (_: *const GLushort) {
5430	panic!("OpenGL function pointer `glSecondaryColor3usv()` is null.")
5431}
5432
5433/// The dummy function of `SecondaryColorPointer()`
5434extern "system" fn dummy_pfnglsecondarycolorpointerproc (_: GLint, _: GLenum, _: GLsizei, _: *const c_void) {
5435	panic!("OpenGL function pointer `glSecondaryColorPointer()` is null.")
5436}
5437
5438/// The dummy function of `WindowPos2d()`
5439extern "system" fn dummy_pfnglwindowpos2dproc (_: GLdouble, _: GLdouble) {
5440	panic!("OpenGL function pointer `glWindowPos2d()` is null.")
5441}
5442
5443/// The dummy function of `WindowPos2dv()`
5444extern "system" fn dummy_pfnglwindowpos2dvproc (_: *const GLdouble) {
5445	panic!("OpenGL function pointer `glWindowPos2dv()` is null.")
5446}
5447
5448/// The dummy function of `WindowPos2f()`
5449extern "system" fn dummy_pfnglwindowpos2fproc (_: GLfloat, _: GLfloat) {
5450	panic!("OpenGL function pointer `glWindowPos2f()` is null.")
5451}
5452
5453/// The dummy function of `WindowPos2fv()`
5454extern "system" fn dummy_pfnglwindowpos2fvproc (_: *const GLfloat) {
5455	panic!("OpenGL function pointer `glWindowPos2fv()` is null.")
5456}
5457
5458/// The dummy function of `WindowPos2i()`
5459extern "system" fn dummy_pfnglwindowpos2iproc (_: GLint, _: GLint) {
5460	panic!("OpenGL function pointer `glWindowPos2i()` is null.")
5461}
5462
5463/// The dummy function of `WindowPos2iv()`
5464extern "system" fn dummy_pfnglwindowpos2ivproc (_: *const GLint) {
5465	panic!("OpenGL function pointer `glWindowPos2iv()` is null.")
5466}
5467
5468/// The dummy function of `WindowPos2s()`
5469extern "system" fn dummy_pfnglwindowpos2sproc (_: GLshort, _: GLshort) {
5470	panic!("OpenGL function pointer `glWindowPos2s()` is null.")
5471}
5472
5473/// The dummy function of `WindowPos2sv()`
5474extern "system" fn dummy_pfnglwindowpos2svproc (_: *const GLshort) {
5475	panic!("OpenGL function pointer `glWindowPos2sv()` is null.")
5476}
5477
5478/// The dummy function of `WindowPos3d()`
5479extern "system" fn dummy_pfnglwindowpos3dproc (_: GLdouble, _: GLdouble, _: GLdouble) {
5480	panic!("OpenGL function pointer `glWindowPos3d()` is null.")
5481}
5482
5483/// The dummy function of `WindowPos3dv()`
5484extern "system" fn dummy_pfnglwindowpos3dvproc (_: *const GLdouble) {
5485	panic!("OpenGL function pointer `glWindowPos3dv()` is null.")
5486}
5487
5488/// The dummy function of `WindowPos3f()`
5489extern "system" fn dummy_pfnglwindowpos3fproc (_: GLfloat, _: GLfloat, _: GLfloat) {
5490	panic!("OpenGL function pointer `glWindowPos3f()` is null.")
5491}
5492
5493/// The dummy function of `WindowPos3fv()`
5494extern "system" fn dummy_pfnglwindowpos3fvproc (_: *const GLfloat) {
5495	panic!("OpenGL function pointer `glWindowPos3fv()` is null.")
5496}
5497
5498/// The dummy function of `WindowPos3i()`
5499extern "system" fn dummy_pfnglwindowpos3iproc (_: GLint, _: GLint, _: GLint) {
5500	panic!("OpenGL function pointer `glWindowPos3i()` is null.")
5501}
5502
5503/// The dummy function of `WindowPos3iv()`
5504extern "system" fn dummy_pfnglwindowpos3ivproc (_: *const GLint) {
5505	panic!("OpenGL function pointer `glWindowPos3iv()` is null.")
5506}
5507
5508/// The dummy function of `WindowPos3s()`
5509extern "system" fn dummy_pfnglwindowpos3sproc (_: GLshort, _: GLshort, _: GLshort) {
5510	panic!("OpenGL function pointer `glWindowPos3s()` is null.")
5511}
5512
5513/// The dummy function of `WindowPos3sv()`
5514extern "system" fn dummy_pfnglwindowpos3svproc (_: *const GLshort) {
5515	panic!("OpenGL function pointer `glWindowPos3sv()` is null.")
5516}
5517
5518/// The dummy function of `BlendColor()`
5519extern "system" fn dummy_pfnglblendcolorproc (_: GLfloat, _: GLfloat, _: GLfloat, _: GLfloat) {
5520	panic!("OpenGL function pointer `glBlendColor()` is null.")
5521}
5522
5523/// The dummy function of `BlendEquation()`
5524extern "system" fn dummy_pfnglblendequationproc (_: GLenum) {
5525	panic!("OpenGL function pointer `glBlendEquation()` is null.")
5526}
5527/// Constant value defined from OpenGL 1.4
5528pub const GL_BLEND_DST_RGB: GLenum = 0x80C8;
5529
5530/// Constant value defined from OpenGL 1.4
5531pub const GL_BLEND_SRC_RGB: GLenum = 0x80C9;
5532
5533/// Constant value defined from OpenGL 1.4
5534pub const GL_BLEND_DST_ALPHA: GLenum = 0x80CA;
5535
5536/// Constant value defined from OpenGL 1.4
5537pub const GL_BLEND_SRC_ALPHA: GLenum = 0x80CB;
5538
5539/// Constant value defined from OpenGL 1.4
5540pub const GL_POINT_FADE_THRESHOLD_SIZE: GLenum = 0x8128;
5541
5542/// Constant value defined from OpenGL 1.4
5543pub const GL_DEPTH_COMPONENT16: GLenum = 0x81A5;
5544
5545/// Constant value defined from OpenGL 1.4
5546pub const GL_DEPTH_COMPONENT24: GLenum = 0x81A6;
5547
5548/// Constant value defined from OpenGL 1.4
5549pub const GL_DEPTH_COMPONENT32: GLenum = 0x81A7;
5550
5551/// Constant value defined from OpenGL 1.4
5552pub const GL_MIRRORED_REPEAT: GLint = 0x8370;
5553
5554/// Constant value defined from OpenGL 1.4
5555pub const GL_MAX_TEXTURE_LOD_BIAS: GLenum = 0x84FD;
5556
5557/// Constant value defined from OpenGL 1.4
5558pub const GL_TEXTURE_LOD_BIAS: GLenum = 0x8501;
5559
5560/// Constant value defined from OpenGL 1.4
5561pub const GL_INCR_WRAP: GLenum = 0x8507;
5562
5563/// Constant value defined from OpenGL 1.4
5564pub const GL_DECR_WRAP: GLenum = 0x8508;
5565
5566/// Constant value defined from OpenGL 1.4
5567pub const GL_TEXTURE_DEPTH_SIZE: GLenum = 0x884A;
5568
5569/// Constant value defined from OpenGL 1.4
5570pub const GL_TEXTURE_COMPARE_MODE: GLenum = 0x884C;
5571
5572/// Constant value defined from OpenGL 1.4
5573pub const GL_TEXTURE_COMPARE_FUNC: GLenum = 0x884D;
5574
5575/// Constant value defined from OpenGL 1.4
5576pub const GL_POINT_SIZE_MIN: GLenum = 0x8126;
5577
5578/// Constant value defined from OpenGL 1.4
5579pub const GL_POINT_SIZE_MAX: GLenum = 0x8127;
5580
5581/// Constant value defined from OpenGL 1.4
5582pub const GL_POINT_DISTANCE_ATTENUATION: GLenum = 0x8129;
5583
5584/// Constant value defined from OpenGL 1.4
5585pub const GL_GENERATE_MIPMAP: GLenum = 0x8191;
5586
5587/// Constant value defined from OpenGL 1.4
5588pub const GL_GENERATE_MIPMAP_HINT: GLenum = 0x8192;
5589
5590/// Constant value defined from OpenGL 1.4
5591pub const GL_FOG_COORDINATE_SOURCE: GLenum = 0x8450;
5592
5593/// Constant value defined from OpenGL 1.4
5594pub const GL_FOG_COORDINATE: GLenum = 0x8451;
5595
5596/// Constant value defined from OpenGL 1.4
5597pub const GL_FRAGMENT_DEPTH: GLenum = 0x8452;
5598
5599/// Constant value defined from OpenGL 1.4
5600pub const GL_CURRENT_FOG_COORDINATE: GLenum = 0x8453;
5601
5602/// Constant value defined from OpenGL 1.4
5603pub const GL_FOG_COORDINATE_ARRAY_TYPE: GLenum = 0x8454;
5604
5605/// Constant value defined from OpenGL 1.4
5606pub const GL_FOG_COORDINATE_ARRAY_STRIDE: GLenum = 0x8455;
5607
5608/// Constant value defined from OpenGL 1.4
5609pub const GL_FOG_COORDINATE_ARRAY_POINTER: GLenum = 0x8456;
5610
5611/// Constant value defined from OpenGL 1.4
5612pub const GL_FOG_COORDINATE_ARRAY: GLenum = 0x8457;
5613
5614/// Constant value defined from OpenGL 1.4
5615pub const GL_COLOR_SUM: GLenum = 0x8458;
5616
5617/// Constant value defined from OpenGL 1.4
5618pub const GL_CURRENT_SECONDARY_COLOR: GLenum = 0x8459;
5619
5620/// Constant value defined from OpenGL 1.4
5621pub const GL_SECONDARY_COLOR_ARRAY_SIZE: GLenum = 0x845A;
5622
5623/// Constant value defined from OpenGL 1.4
5624pub const GL_SECONDARY_COLOR_ARRAY_TYPE: GLenum = 0x845B;
5625
5626/// Constant value defined from OpenGL 1.4
5627pub const GL_SECONDARY_COLOR_ARRAY_STRIDE: GLenum = 0x845C;
5628
5629/// Constant value defined from OpenGL 1.4
5630pub const GL_SECONDARY_COLOR_ARRAY_POINTER: GLenum = 0x845D;
5631
5632/// Constant value defined from OpenGL 1.4
5633pub const GL_SECONDARY_COLOR_ARRAY: GLenum = 0x845E;
5634
5635/// Constant value defined from OpenGL 1.4
5636pub const GL_TEXTURE_FILTER_CONTROL: GLenum = 0x8500;
5637
5638/// Constant value defined from OpenGL 1.4
5639pub const GL_DEPTH_TEXTURE_MODE: GLenum = 0x884B;
5640
5641/// Constant value defined from OpenGL 1.4
5642pub const GL_COMPARE_R_TO_TEXTURE: GLenum = 0x884E;
5643
5644/// Constant value defined from OpenGL 1.4
5645pub const GL_BLEND_COLOR: GLenum = 0x8005;
5646
5647/// Constant value defined from OpenGL 1.4
5648pub const GL_BLEND_EQUATION: GLenum = 0x8009;
5649
5650/// Constant value defined from OpenGL 1.4
5651pub const GL_CONSTANT_COLOR: GLenum = 0x8001;
5652
5653/// Constant value defined from OpenGL 1.4
5654pub const GL_ONE_MINUS_CONSTANT_COLOR: GLenum = 0x8002;
5655
5656/// Constant value defined from OpenGL 1.4
5657pub const GL_CONSTANT_ALPHA: GLenum = 0x8003;
5658
5659/// Constant value defined from OpenGL 1.4
5660pub const GL_ONE_MINUS_CONSTANT_ALPHA: GLenum = 0x8004;
5661
5662/// Constant value defined from OpenGL 1.4
5663pub const GL_FUNC_ADD: GLenum = 0x8006;
5664
5665/// Constant value defined from OpenGL 1.4
5666pub const GL_FUNC_REVERSE_SUBTRACT: GLenum = 0x800B;
5667
5668/// Constant value defined from OpenGL 1.4
5669pub const GL_FUNC_SUBTRACT: GLenum = 0x800A;
5670
5671/// Constant value defined from OpenGL 1.4
5672pub const GL_MIN: GLenum = 0x8007;
5673
5674/// Constant value defined from OpenGL 1.4
5675pub const GL_MAX: GLenum = 0x8008;
5676
5677/// Functions from OpenGL version 1.4
5678pub trait GL_1_4 {
5679	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
5680	fn glGetError(&self) -> GLenum;
5681
5682	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendFuncSeparate.xhtml>
5683	fn glBlendFuncSeparate(&self, sfactorRGB: GLenum, dfactorRGB: GLenum, sfactorAlpha: GLenum, dfactorAlpha: GLenum) -> Result<()>;
5684
5685	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawArrays.xhtml>
5686	fn glMultiDrawArrays(&self, mode: GLenum, first: *const GLint, count: *const GLsizei, drawcount: GLsizei) -> Result<()>;
5687
5688	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawElements.xhtml>
5689	fn glMultiDrawElements(&self, mode: GLenum, count: *const GLsizei, type_: GLenum, indices: *const *const c_void, drawcount: GLsizei) -> Result<()>;
5690
5691	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPointParameterf.xhtml>
5692	fn glPointParameterf(&self, pname: GLenum, param: GLfloat) -> Result<()>;
5693
5694	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPointParameterfv.xhtml>
5695	fn glPointParameterfv(&self, pname: GLenum, params: *const GLfloat) -> Result<()>;
5696
5697	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPointParameteri.xhtml>
5698	fn glPointParameteri(&self, pname: GLenum, param: GLint) -> Result<()>;
5699
5700	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPointParameteriv.xhtml>
5701	fn glPointParameteriv(&self, pname: GLenum, params: *const GLint) -> Result<()>;
5702
5703	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFogCoordf.xhtml>
5704	fn glFogCoordf(&self, coord: GLfloat) -> Result<()>;
5705
5706	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFogCoordfv.xhtml>
5707	fn glFogCoordfv(&self, coord: *const GLfloat) -> Result<()>;
5708
5709	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFogCoordd.xhtml>
5710	fn glFogCoordd(&self, coord: GLdouble) -> Result<()>;
5711
5712	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFogCoorddv.xhtml>
5713	fn glFogCoorddv(&self, coord: *const GLdouble) -> Result<()>;
5714
5715	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFogCoordPointer.xhtml>
5716	fn glFogCoordPointer(&self, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()>;
5717
5718	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3b.xhtml>
5719	fn glSecondaryColor3b(&self, red: GLbyte, green: GLbyte, blue: GLbyte) -> Result<()>;
5720
5721	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3bv.xhtml>
5722	fn glSecondaryColor3bv(&self, v: *const GLbyte) -> Result<()>;
5723
5724	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3d.xhtml>
5725	fn glSecondaryColor3d(&self, red: GLdouble, green: GLdouble, blue: GLdouble) -> Result<()>;
5726
5727	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3dv.xhtml>
5728	fn glSecondaryColor3dv(&self, v: *const GLdouble) -> Result<()>;
5729
5730	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3f.xhtml>
5731	fn glSecondaryColor3f(&self, red: GLfloat, green: GLfloat, blue: GLfloat) -> Result<()>;
5732
5733	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3fv.xhtml>
5734	fn glSecondaryColor3fv(&self, v: *const GLfloat) -> Result<()>;
5735
5736	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3i.xhtml>
5737	fn glSecondaryColor3i(&self, red: GLint, green: GLint, blue: GLint) -> Result<()>;
5738
5739	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3iv.xhtml>
5740	fn glSecondaryColor3iv(&self, v: *const GLint) -> Result<()>;
5741
5742	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3s.xhtml>
5743	fn glSecondaryColor3s(&self, red: GLshort, green: GLshort, blue: GLshort) -> Result<()>;
5744
5745	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3sv.xhtml>
5746	fn glSecondaryColor3sv(&self, v: *const GLshort) -> Result<()>;
5747
5748	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3ub.xhtml>
5749	fn glSecondaryColor3ub(&self, red: GLubyte, green: GLubyte, blue: GLubyte) -> Result<()>;
5750
5751	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3ubv.xhtml>
5752	fn glSecondaryColor3ubv(&self, v: *const GLubyte) -> Result<()>;
5753
5754	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3ui.xhtml>
5755	fn glSecondaryColor3ui(&self, red: GLuint, green: GLuint, blue: GLuint) -> Result<()>;
5756
5757	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3uiv.xhtml>
5758	fn glSecondaryColor3uiv(&self, v: *const GLuint) -> Result<()>;
5759
5760	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3us.xhtml>
5761	fn glSecondaryColor3us(&self, red: GLushort, green: GLushort, blue: GLushort) -> Result<()>;
5762
5763	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3usv.xhtml>
5764	fn glSecondaryColor3usv(&self, v: *const GLushort) -> Result<()>;
5765
5766	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColorPointer.xhtml>
5767	fn glSecondaryColorPointer(&self, size: GLint, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()>;
5768
5769	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2d.xhtml>
5770	fn glWindowPos2d(&self, x: GLdouble, y: GLdouble) -> Result<()>;
5771
5772	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2dv.xhtml>
5773	fn glWindowPos2dv(&self, v: *const GLdouble) -> Result<()>;
5774
5775	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2f.xhtml>
5776	fn glWindowPos2f(&self, x: GLfloat, y: GLfloat) -> Result<()>;
5777
5778	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2fv.xhtml>
5779	fn glWindowPos2fv(&self, v: *const GLfloat) -> Result<()>;
5780
5781	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2i.xhtml>
5782	fn glWindowPos2i(&self, x: GLint, y: GLint) -> Result<()>;
5783
5784	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2iv.xhtml>
5785	fn glWindowPos2iv(&self, v: *const GLint) -> Result<()>;
5786
5787	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2s.xhtml>
5788	fn glWindowPos2s(&self, x: GLshort, y: GLshort) -> Result<()>;
5789
5790	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2sv.xhtml>
5791	fn glWindowPos2sv(&self, v: *const GLshort) -> Result<()>;
5792
5793	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3d.xhtml>
5794	fn glWindowPos3d(&self, x: GLdouble, y: GLdouble, z: GLdouble) -> Result<()>;
5795
5796	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3dv.xhtml>
5797	fn glWindowPos3dv(&self, v: *const GLdouble) -> Result<()>;
5798
5799	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3f.xhtml>
5800	fn glWindowPos3f(&self, x: GLfloat, y: GLfloat, z: GLfloat) -> Result<()>;
5801
5802	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3fv.xhtml>
5803	fn glWindowPos3fv(&self, v: *const GLfloat) -> Result<()>;
5804
5805	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3i.xhtml>
5806	fn glWindowPos3i(&self, x: GLint, y: GLint, z: GLint) -> Result<()>;
5807
5808	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3iv.xhtml>
5809	fn glWindowPos3iv(&self, v: *const GLint) -> Result<()>;
5810
5811	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3s.xhtml>
5812	fn glWindowPos3s(&self, x: GLshort, y: GLshort, z: GLshort) -> Result<()>;
5813
5814	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3sv.xhtml>
5815	fn glWindowPos3sv(&self, v: *const GLshort) -> Result<()>;
5816
5817	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendColor.xhtml>
5818	fn glBlendColor(&self, red: GLfloat, green: GLfloat, blue: GLfloat, alpha: GLfloat) -> Result<()>;
5819
5820	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendEquation.xhtml>
5821	fn glBlendEquation(&self, mode: GLenum) -> Result<()>;
5822}
5823/// Functions from OpenGL version 1.4
5824#[derive(Clone, Copy, PartialEq, Eq, Hash)]
5825pub struct Version14 {
5826	/// Is OpenGL version 1.4 available
5827	available: bool,
5828
5829	/// The function pointer to `glGetError()`
5830	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
5831	pub geterror: PFNGLGETERRORPROC,
5832
5833	/// The function pointer to `glBlendFuncSeparate()`
5834	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendFuncSeparate.xhtml>
5835	pub blendfuncseparate: PFNGLBLENDFUNCSEPARATEPROC,
5836
5837	/// The function pointer to `glMultiDrawArrays()`
5838	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawArrays.xhtml>
5839	pub multidrawarrays: PFNGLMULTIDRAWARRAYSPROC,
5840
5841	/// The function pointer to `glMultiDrawElements()`
5842	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawElements.xhtml>
5843	pub multidrawelements: PFNGLMULTIDRAWELEMENTSPROC,
5844
5845	/// The function pointer to `glPointParameterf()`
5846	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPointParameterf.xhtml>
5847	pub pointparameterf: PFNGLPOINTPARAMETERFPROC,
5848
5849	/// The function pointer to `glPointParameterfv()`
5850	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPointParameterfv.xhtml>
5851	pub pointparameterfv: PFNGLPOINTPARAMETERFVPROC,
5852
5853	/// The function pointer to `glPointParameteri()`
5854	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPointParameteri.xhtml>
5855	pub pointparameteri: PFNGLPOINTPARAMETERIPROC,
5856
5857	/// The function pointer to `glPointParameteriv()`
5858	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPointParameteriv.xhtml>
5859	pub pointparameteriv: PFNGLPOINTPARAMETERIVPROC,
5860
5861	/// The function pointer to `glFogCoordf()`
5862	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFogCoordf.xhtml>
5863	pub fogcoordf: PFNGLFOGCOORDFPROC,
5864
5865	/// The function pointer to `glFogCoordfv()`
5866	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFogCoordfv.xhtml>
5867	pub fogcoordfv: PFNGLFOGCOORDFVPROC,
5868
5869	/// The function pointer to `glFogCoordd()`
5870	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFogCoordd.xhtml>
5871	pub fogcoordd: PFNGLFOGCOORDDPROC,
5872
5873	/// The function pointer to `glFogCoorddv()`
5874	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFogCoorddv.xhtml>
5875	pub fogcoorddv: PFNGLFOGCOORDDVPROC,
5876
5877	/// The function pointer to `glFogCoordPointer()`
5878	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFogCoordPointer.xhtml>
5879	pub fogcoordpointer: PFNGLFOGCOORDPOINTERPROC,
5880
5881	/// The function pointer to `glSecondaryColor3b()`
5882	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3b.xhtml>
5883	pub secondarycolor3b: PFNGLSECONDARYCOLOR3BPROC,
5884
5885	/// The function pointer to `glSecondaryColor3bv()`
5886	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3bv.xhtml>
5887	pub secondarycolor3bv: PFNGLSECONDARYCOLOR3BVPROC,
5888
5889	/// The function pointer to `glSecondaryColor3d()`
5890	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3d.xhtml>
5891	pub secondarycolor3d: PFNGLSECONDARYCOLOR3DPROC,
5892
5893	/// The function pointer to `glSecondaryColor3dv()`
5894	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3dv.xhtml>
5895	pub secondarycolor3dv: PFNGLSECONDARYCOLOR3DVPROC,
5896
5897	/// The function pointer to `glSecondaryColor3f()`
5898	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3f.xhtml>
5899	pub secondarycolor3f: PFNGLSECONDARYCOLOR3FPROC,
5900
5901	/// The function pointer to `glSecondaryColor3fv()`
5902	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3fv.xhtml>
5903	pub secondarycolor3fv: PFNGLSECONDARYCOLOR3FVPROC,
5904
5905	/// The function pointer to `glSecondaryColor3i()`
5906	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3i.xhtml>
5907	pub secondarycolor3i: PFNGLSECONDARYCOLOR3IPROC,
5908
5909	/// The function pointer to `glSecondaryColor3iv()`
5910	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3iv.xhtml>
5911	pub secondarycolor3iv: PFNGLSECONDARYCOLOR3IVPROC,
5912
5913	/// The function pointer to `glSecondaryColor3s()`
5914	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3s.xhtml>
5915	pub secondarycolor3s: PFNGLSECONDARYCOLOR3SPROC,
5916
5917	/// The function pointer to `glSecondaryColor3sv()`
5918	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3sv.xhtml>
5919	pub secondarycolor3sv: PFNGLSECONDARYCOLOR3SVPROC,
5920
5921	/// The function pointer to `glSecondaryColor3ub()`
5922	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3ub.xhtml>
5923	pub secondarycolor3ub: PFNGLSECONDARYCOLOR3UBPROC,
5924
5925	/// The function pointer to `glSecondaryColor3ubv()`
5926	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3ubv.xhtml>
5927	pub secondarycolor3ubv: PFNGLSECONDARYCOLOR3UBVPROC,
5928
5929	/// The function pointer to `glSecondaryColor3ui()`
5930	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3ui.xhtml>
5931	pub secondarycolor3ui: PFNGLSECONDARYCOLOR3UIPROC,
5932
5933	/// The function pointer to `glSecondaryColor3uiv()`
5934	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3uiv.xhtml>
5935	pub secondarycolor3uiv: PFNGLSECONDARYCOLOR3UIVPROC,
5936
5937	/// The function pointer to `glSecondaryColor3us()`
5938	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3us.xhtml>
5939	pub secondarycolor3us: PFNGLSECONDARYCOLOR3USPROC,
5940
5941	/// The function pointer to `glSecondaryColor3usv()`
5942	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3usv.xhtml>
5943	pub secondarycolor3usv: PFNGLSECONDARYCOLOR3USVPROC,
5944
5945	/// The function pointer to `glSecondaryColorPointer()`
5946	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColorPointer.xhtml>
5947	pub secondarycolorpointer: PFNGLSECONDARYCOLORPOINTERPROC,
5948
5949	/// The function pointer to `glWindowPos2d()`
5950	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2d.xhtml>
5951	pub windowpos2d: PFNGLWINDOWPOS2DPROC,
5952
5953	/// The function pointer to `glWindowPos2dv()`
5954	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2dv.xhtml>
5955	pub windowpos2dv: PFNGLWINDOWPOS2DVPROC,
5956
5957	/// The function pointer to `glWindowPos2f()`
5958	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2f.xhtml>
5959	pub windowpos2f: PFNGLWINDOWPOS2FPROC,
5960
5961	/// The function pointer to `glWindowPos2fv()`
5962	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2fv.xhtml>
5963	pub windowpos2fv: PFNGLWINDOWPOS2FVPROC,
5964
5965	/// The function pointer to `glWindowPos2i()`
5966	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2i.xhtml>
5967	pub windowpos2i: PFNGLWINDOWPOS2IPROC,
5968
5969	/// The function pointer to `glWindowPos2iv()`
5970	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2iv.xhtml>
5971	pub windowpos2iv: PFNGLWINDOWPOS2IVPROC,
5972
5973	/// The function pointer to `glWindowPos2s()`
5974	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2s.xhtml>
5975	pub windowpos2s: PFNGLWINDOWPOS2SPROC,
5976
5977	/// The function pointer to `glWindowPos2sv()`
5978	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2sv.xhtml>
5979	pub windowpos2sv: PFNGLWINDOWPOS2SVPROC,
5980
5981	/// The function pointer to `glWindowPos3d()`
5982	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3d.xhtml>
5983	pub windowpos3d: PFNGLWINDOWPOS3DPROC,
5984
5985	/// The function pointer to `glWindowPos3dv()`
5986	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3dv.xhtml>
5987	pub windowpos3dv: PFNGLWINDOWPOS3DVPROC,
5988
5989	/// The function pointer to `glWindowPos3f()`
5990	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3f.xhtml>
5991	pub windowpos3f: PFNGLWINDOWPOS3FPROC,
5992
5993	/// The function pointer to `glWindowPos3fv()`
5994	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3fv.xhtml>
5995	pub windowpos3fv: PFNGLWINDOWPOS3FVPROC,
5996
5997	/// The function pointer to `glWindowPos3i()`
5998	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3i.xhtml>
5999	pub windowpos3i: PFNGLWINDOWPOS3IPROC,
6000
6001	/// The function pointer to `glWindowPos3iv()`
6002	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3iv.xhtml>
6003	pub windowpos3iv: PFNGLWINDOWPOS3IVPROC,
6004
6005	/// The function pointer to `glWindowPos3s()`
6006	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3s.xhtml>
6007	pub windowpos3s: PFNGLWINDOWPOS3SPROC,
6008
6009	/// The function pointer to `glWindowPos3sv()`
6010	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3sv.xhtml>
6011	pub windowpos3sv: PFNGLWINDOWPOS3SVPROC,
6012
6013	/// The function pointer to `glBlendColor()`
6014	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendColor.xhtml>
6015	pub blendcolor: PFNGLBLENDCOLORPROC,
6016
6017	/// The function pointer to `glBlendEquation()`
6018	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendEquation.xhtml>
6019	pub blendequation: PFNGLBLENDEQUATIONPROC,
6020}
6021
6022impl GL_1_4 for Version14 {
6023	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
6024	#[inline(always)]
6025	fn glGetError(&self) -> GLenum {
6026		(self.geterror)()
6027	}
6028	#[inline(always)]
6029	fn glBlendFuncSeparate(&self, sfactorRGB: GLenum, dfactorRGB: GLenum, sfactorAlpha: GLenum, dfactorAlpha: GLenum) -> Result<()> {
6030		#[cfg(feature = "catch_nullptr")]
6031		let ret = process_catch("glBlendFuncSeparate", catch_unwind(||(self.blendfuncseparate)(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha)));
6032		#[cfg(not(feature = "catch_nullptr"))]
6033		let ret = {(self.blendfuncseparate)(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); Ok(())};
6034		#[cfg(feature = "diagnose")]
6035		if let Ok(ret) = ret {
6036			return to_result("glBlendFuncSeparate", ret, self.glGetError());
6037		} else {
6038			return ret
6039		}
6040		#[cfg(not(feature = "diagnose"))]
6041		return ret;
6042	}
6043	#[inline(always)]
6044	fn glMultiDrawArrays(&self, mode: GLenum, first: *const GLint, count: *const GLsizei, drawcount: GLsizei) -> Result<()> {
6045		#[cfg(feature = "catch_nullptr")]
6046		let ret = process_catch("glMultiDrawArrays", catch_unwind(||(self.multidrawarrays)(mode, first, count, drawcount)));
6047		#[cfg(not(feature = "catch_nullptr"))]
6048		let ret = {(self.multidrawarrays)(mode, first, count, drawcount); Ok(())};
6049		#[cfg(feature = "diagnose")]
6050		if let Ok(ret) = ret {
6051			return to_result("glMultiDrawArrays", ret, self.glGetError());
6052		} else {
6053			return ret
6054		}
6055		#[cfg(not(feature = "diagnose"))]
6056		return ret;
6057	}
6058	#[inline(always)]
6059	fn glMultiDrawElements(&self, mode: GLenum, count: *const GLsizei, type_: GLenum, indices: *const *const c_void, drawcount: GLsizei) -> Result<()> {
6060		#[cfg(feature = "catch_nullptr")]
6061		let ret = process_catch("glMultiDrawElements", catch_unwind(||(self.multidrawelements)(mode, count, type_, indices, drawcount)));
6062		#[cfg(not(feature = "catch_nullptr"))]
6063		let ret = {(self.multidrawelements)(mode, count, type_, indices, drawcount); Ok(())};
6064		#[cfg(feature = "diagnose")]
6065		if let Ok(ret) = ret {
6066			return to_result("glMultiDrawElements", ret, self.glGetError());
6067		} else {
6068			return ret
6069		}
6070		#[cfg(not(feature = "diagnose"))]
6071		return ret;
6072	}
6073	#[inline(always)]
6074	fn glPointParameterf(&self, pname: GLenum, param: GLfloat) -> Result<()> {
6075		#[cfg(feature = "catch_nullptr")]
6076		let ret = process_catch("glPointParameterf", catch_unwind(||(self.pointparameterf)(pname, param)));
6077		#[cfg(not(feature = "catch_nullptr"))]
6078		let ret = {(self.pointparameterf)(pname, param); Ok(())};
6079		#[cfg(feature = "diagnose")]
6080		if let Ok(ret) = ret {
6081			return to_result("glPointParameterf", ret, self.glGetError());
6082		} else {
6083			return ret
6084		}
6085		#[cfg(not(feature = "diagnose"))]
6086		return ret;
6087	}
6088	#[inline(always)]
6089	fn glPointParameterfv(&self, pname: GLenum, params: *const GLfloat) -> Result<()> {
6090		#[cfg(feature = "catch_nullptr")]
6091		let ret = process_catch("glPointParameterfv", catch_unwind(||(self.pointparameterfv)(pname, params)));
6092		#[cfg(not(feature = "catch_nullptr"))]
6093		let ret = {(self.pointparameterfv)(pname, params); Ok(())};
6094		#[cfg(feature = "diagnose")]
6095		if let Ok(ret) = ret {
6096			return to_result("glPointParameterfv", ret, self.glGetError());
6097		} else {
6098			return ret
6099		}
6100		#[cfg(not(feature = "diagnose"))]
6101		return ret;
6102	}
6103	#[inline(always)]
6104	fn glPointParameteri(&self, pname: GLenum, param: GLint) -> Result<()> {
6105		#[cfg(feature = "catch_nullptr")]
6106		let ret = process_catch("glPointParameteri", catch_unwind(||(self.pointparameteri)(pname, param)));
6107		#[cfg(not(feature = "catch_nullptr"))]
6108		let ret = {(self.pointparameteri)(pname, param); Ok(())};
6109		#[cfg(feature = "diagnose")]
6110		if let Ok(ret) = ret {
6111			return to_result("glPointParameteri", ret, self.glGetError());
6112		} else {
6113			return ret
6114		}
6115		#[cfg(not(feature = "diagnose"))]
6116		return ret;
6117	}
6118	#[inline(always)]
6119	fn glPointParameteriv(&self, pname: GLenum, params: *const GLint) -> Result<()> {
6120		#[cfg(feature = "catch_nullptr")]
6121		let ret = process_catch("glPointParameteriv", catch_unwind(||(self.pointparameteriv)(pname, params)));
6122		#[cfg(not(feature = "catch_nullptr"))]
6123		let ret = {(self.pointparameteriv)(pname, params); Ok(())};
6124		#[cfg(feature = "diagnose")]
6125		if let Ok(ret) = ret {
6126			return to_result("glPointParameteriv", ret, self.glGetError());
6127		} else {
6128			return ret
6129		}
6130		#[cfg(not(feature = "diagnose"))]
6131		return ret;
6132	}
6133	#[inline(always)]
6134	fn glFogCoordf(&self, coord: GLfloat) -> Result<()> {
6135		#[cfg(feature = "catch_nullptr")]
6136		let ret = process_catch("glFogCoordf", catch_unwind(||(self.fogcoordf)(coord)));
6137		#[cfg(not(feature = "catch_nullptr"))]
6138		let ret = {(self.fogcoordf)(coord); Ok(())};
6139		#[cfg(feature = "diagnose")]
6140		if let Ok(ret) = ret {
6141			return to_result("glFogCoordf", ret, self.glGetError());
6142		} else {
6143			return ret
6144		}
6145		#[cfg(not(feature = "diagnose"))]
6146		return ret;
6147	}
6148	#[inline(always)]
6149	fn glFogCoordfv(&self, coord: *const GLfloat) -> Result<()> {
6150		#[cfg(feature = "catch_nullptr")]
6151		let ret = process_catch("glFogCoordfv", catch_unwind(||(self.fogcoordfv)(coord)));
6152		#[cfg(not(feature = "catch_nullptr"))]
6153		let ret = {(self.fogcoordfv)(coord); Ok(())};
6154		#[cfg(feature = "diagnose")]
6155		if let Ok(ret) = ret {
6156			return to_result("glFogCoordfv", ret, self.glGetError());
6157		} else {
6158			return ret
6159		}
6160		#[cfg(not(feature = "diagnose"))]
6161		return ret;
6162	}
6163	#[inline(always)]
6164	fn glFogCoordd(&self, coord: GLdouble) -> Result<()> {
6165		#[cfg(feature = "catch_nullptr")]
6166		let ret = process_catch("glFogCoordd", catch_unwind(||(self.fogcoordd)(coord)));
6167		#[cfg(not(feature = "catch_nullptr"))]
6168		let ret = {(self.fogcoordd)(coord); Ok(())};
6169		#[cfg(feature = "diagnose")]
6170		if let Ok(ret) = ret {
6171			return to_result("glFogCoordd", ret, self.glGetError());
6172		} else {
6173			return ret
6174		}
6175		#[cfg(not(feature = "diagnose"))]
6176		return ret;
6177	}
6178	#[inline(always)]
6179	fn glFogCoorddv(&self, coord: *const GLdouble) -> Result<()> {
6180		#[cfg(feature = "catch_nullptr")]
6181		let ret = process_catch("glFogCoorddv", catch_unwind(||(self.fogcoorddv)(coord)));
6182		#[cfg(not(feature = "catch_nullptr"))]
6183		let ret = {(self.fogcoorddv)(coord); Ok(())};
6184		#[cfg(feature = "diagnose")]
6185		if let Ok(ret) = ret {
6186			return to_result("glFogCoorddv", ret, self.glGetError());
6187		} else {
6188			return ret
6189		}
6190		#[cfg(not(feature = "diagnose"))]
6191		return ret;
6192	}
6193	#[inline(always)]
6194	fn glFogCoordPointer(&self, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()> {
6195		#[cfg(feature = "catch_nullptr")]
6196		let ret = process_catch("glFogCoordPointer", catch_unwind(||(self.fogcoordpointer)(type_, stride, pointer)));
6197		#[cfg(not(feature = "catch_nullptr"))]
6198		let ret = {(self.fogcoordpointer)(type_, stride, pointer); Ok(())};
6199		#[cfg(feature = "diagnose")]
6200		if let Ok(ret) = ret {
6201			return to_result("glFogCoordPointer", ret, self.glGetError());
6202		} else {
6203			return ret
6204		}
6205		#[cfg(not(feature = "diagnose"))]
6206		return ret;
6207	}
6208	#[inline(always)]
6209	fn glSecondaryColor3b(&self, red: GLbyte, green: GLbyte, blue: GLbyte) -> Result<()> {
6210		#[cfg(feature = "catch_nullptr")]
6211		let ret = process_catch("glSecondaryColor3b", catch_unwind(||(self.secondarycolor3b)(red, green, blue)));
6212		#[cfg(not(feature = "catch_nullptr"))]
6213		let ret = {(self.secondarycolor3b)(red, green, blue); Ok(())};
6214		#[cfg(feature = "diagnose")]
6215		if let Ok(ret) = ret {
6216			return to_result("glSecondaryColor3b", ret, self.glGetError());
6217		} else {
6218			return ret
6219		}
6220		#[cfg(not(feature = "diagnose"))]
6221		return ret;
6222	}
6223	#[inline(always)]
6224	fn glSecondaryColor3bv(&self, v: *const GLbyte) -> Result<()> {
6225		#[cfg(feature = "catch_nullptr")]
6226		let ret = process_catch("glSecondaryColor3bv", catch_unwind(||(self.secondarycolor3bv)(v)));
6227		#[cfg(not(feature = "catch_nullptr"))]
6228		let ret = {(self.secondarycolor3bv)(v); Ok(())};
6229		#[cfg(feature = "diagnose")]
6230		if let Ok(ret) = ret {
6231			return to_result("glSecondaryColor3bv", ret, self.glGetError());
6232		} else {
6233			return ret
6234		}
6235		#[cfg(not(feature = "diagnose"))]
6236		return ret;
6237	}
6238	#[inline(always)]
6239	fn glSecondaryColor3d(&self, red: GLdouble, green: GLdouble, blue: GLdouble) -> Result<()> {
6240		#[cfg(feature = "catch_nullptr")]
6241		let ret = process_catch("glSecondaryColor3d", catch_unwind(||(self.secondarycolor3d)(red, green, blue)));
6242		#[cfg(not(feature = "catch_nullptr"))]
6243		let ret = {(self.secondarycolor3d)(red, green, blue); Ok(())};
6244		#[cfg(feature = "diagnose")]
6245		if let Ok(ret) = ret {
6246			return to_result("glSecondaryColor3d", ret, self.glGetError());
6247		} else {
6248			return ret
6249		}
6250		#[cfg(not(feature = "diagnose"))]
6251		return ret;
6252	}
6253	#[inline(always)]
6254	fn glSecondaryColor3dv(&self, v: *const GLdouble) -> Result<()> {
6255		#[cfg(feature = "catch_nullptr")]
6256		let ret = process_catch("glSecondaryColor3dv", catch_unwind(||(self.secondarycolor3dv)(v)));
6257		#[cfg(not(feature = "catch_nullptr"))]
6258		let ret = {(self.secondarycolor3dv)(v); Ok(())};
6259		#[cfg(feature = "diagnose")]
6260		if let Ok(ret) = ret {
6261			return to_result("glSecondaryColor3dv", ret, self.glGetError());
6262		} else {
6263			return ret
6264		}
6265		#[cfg(not(feature = "diagnose"))]
6266		return ret;
6267	}
6268	#[inline(always)]
6269	fn glSecondaryColor3f(&self, red: GLfloat, green: GLfloat, blue: GLfloat) -> Result<()> {
6270		#[cfg(feature = "catch_nullptr")]
6271		let ret = process_catch("glSecondaryColor3f", catch_unwind(||(self.secondarycolor3f)(red, green, blue)));
6272		#[cfg(not(feature = "catch_nullptr"))]
6273		let ret = {(self.secondarycolor3f)(red, green, blue); Ok(())};
6274		#[cfg(feature = "diagnose")]
6275		if let Ok(ret) = ret {
6276			return to_result("glSecondaryColor3f", ret, self.glGetError());
6277		} else {
6278			return ret
6279		}
6280		#[cfg(not(feature = "diagnose"))]
6281		return ret;
6282	}
6283	#[inline(always)]
6284	fn glSecondaryColor3fv(&self, v: *const GLfloat) -> Result<()> {
6285		#[cfg(feature = "catch_nullptr")]
6286		let ret = process_catch("glSecondaryColor3fv", catch_unwind(||(self.secondarycolor3fv)(v)));
6287		#[cfg(not(feature = "catch_nullptr"))]
6288		let ret = {(self.secondarycolor3fv)(v); Ok(())};
6289		#[cfg(feature = "diagnose")]
6290		if let Ok(ret) = ret {
6291			return to_result("glSecondaryColor3fv", ret, self.glGetError());
6292		} else {
6293			return ret
6294		}
6295		#[cfg(not(feature = "diagnose"))]
6296		return ret;
6297	}
6298	#[inline(always)]
6299	fn glSecondaryColor3i(&self, red: GLint, green: GLint, blue: GLint) -> Result<()> {
6300		#[cfg(feature = "catch_nullptr")]
6301		let ret = process_catch("glSecondaryColor3i", catch_unwind(||(self.secondarycolor3i)(red, green, blue)));
6302		#[cfg(not(feature = "catch_nullptr"))]
6303		let ret = {(self.secondarycolor3i)(red, green, blue); Ok(())};
6304		#[cfg(feature = "diagnose")]
6305		if let Ok(ret) = ret {
6306			return to_result("glSecondaryColor3i", ret, self.glGetError());
6307		} else {
6308			return ret
6309		}
6310		#[cfg(not(feature = "diagnose"))]
6311		return ret;
6312	}
6313	#[inline(always)]
6314	fn glSecondaryColor3iv(&self, v: *const GLint) -> Result<()> {
6315		#[cfg(feature = "catch_nullptr")]
6316		let ret = process_catch("glSecondaryColor3iv", catch_unwind(||(self.secondarycolor3iv)(v)));
6317		#[cfg(not(feature = "catch_nullptr"))]
6318		let ret = {(self.secondarycolor3iv)(v); Ok(())};
6319		#[cfg(feature = "diagnose")]
6320		if let Ok(ret) = ret {
6321			return to_result("glSecondaryColor3iv", ret, self.glGetError());
6322		} else {
6323			return ret
6324		}
6325		#[cfg(not(feature = "diagnose"))]
6326		return ret;
6327	}
6328	#[inline(always)]
6329	fn glSecondaryColor3s(&self, red: GLshort, green: GLshort, blue: GLshort) -> Result<()> {
6330		#[cfg(feature = "catch_nullptr")]
6331		let ret = process_catch("glSecondaryColor3s", catch_unwind(||(self.secondarycolor3s)(red, green, blue)));
6332		#[cfg(not(feature = "catch_nullptr"))]
6333		let ret = {(self.secondarycolor3s)(red, green, blue); Ok(())};
6334		#[cfg(feature = "diagnose")]
6335		if let Ok(ret) = ret {
6336			return to_result("glSecondaryColor3s", ret, self.glGetError());
6337		} else {
6338			return ret
6339		}
6340		#[cfg(not(feature = "diagnose"))]
6341		return ret;
6342	}
6343	#[inline(always)]
6344	fn glSecondaryColor3sv(&self, v: *const GLshort) -> Result<()> {
6345		#[cfg(feature = "catch_nullptr")]
6346		let ret = process_catch("glSecondaryColor3sv", catch_unwind(||(self.secondarycolor3sv)(v)));
6347		#[cfg(not(feature = "catch_nullptr"))]
6348		let ret = {(self.secondarycolor3sv)(v); Ok(())};
6349		#[cfg(feature = "diagnose")]
6350		if let Ok(ret) = ret {
6351			return to_result("glSecondaryColor3sv", ret, self.glGetError());
6352		} else {
6353			return ret
6354		}
6355		#[cfg(not(feature = "diagnose"))]
6356		return ret;
6357	}
6358	#[inline(always)]
6359	fn glSecondaryColor3ub(&self, red: GLubyte, green: GLubyte, blue: GLubyte) -> Result<()> {
6360		#[cfg(feature = "catch_nullptr")]
6361		let ret = process_catch("glSecondaryColor3ub", catch_unwind(||(self.secondarycolor3ub)(red, green, blue)));
6362		#[cfg(not(feature = "catch_nullptr"))]
6363		let ret = {(self.secondarycolor3ub)(red, green, blue); Ok(())};
6364		#[cfg(feature = "diagnose")]
6365		if let Ok(ret) = ret {
6366			return to_result("glSecondaryColor3ub", ret, self.glGetError());
6367		} else {
6368			return ret
6369		}
6370		#[cfg(not(feature = "diagnose"))]
6371		return ret;
6372	}
6373	#[inline(always)]
6374	fn glSecondaryColor3ubv(&self, v: *const GLubyte) -> Result<()> {
6375		#[cfg(feature = "catch_nullptr")]
6376		let ret = process_catch("glSecondaryColor3ubv", catch_unwind(||(self.secondarycolor3ubv)(v)));
6377		#[cfg(not(feature = "catch_nullptr"))]
6378		let ret = {(self.secondarycolor3ubv)(v); Ok(())};
6379		#[cfg(feature = "diagnose")]
6380		if let Ok(ret) = ret {
6381			return to_result("glSecondaryColor3ubv", ret, self.glGetError());
6382		} else {
6383			return ret
6384		}
6385		#[cfg(not(feature = "diagnose"))]
6386		return ret;
6387	}
6388	#[inline(always)]
6389	fn glSecondaryColor3ui(&self, red: GLuint, green: GLuint, blue: GLuint) -> Result<()> {
6390		#[cfg(feature = "catch_nullptr")]
6391		let ret = process_catch("glSecondaryColor3ui", catch_unwind(||(self.secondarycolor3ui)(red, green, blue)));
6392		#[cfg(not(feature = "catch_nullptr"))]
6393		let ret = {(self.secondarycolor3ui)(red, green, blue); Ok(())};
6394		#[cfg(feature = "diagnose")]
6395		if let Ok(ret) = ret {
6396			return to_result("glSecondaryColor3ui", ret, self.glGetError());
6397		} else {
6398			return ret
6399		}
6400		#[cfg(not(feature = "diagnose"))]
6401		return ret;
6402	}
6403	#[inline(always)]
6404	fn glSecondaryColor3uiv(&self, v: *const GLuint) -> Result<()> {
6405		#[cfg(feature = "catch_nullptr")]
6406		let ret = process_catch("glSecondaryColor3uiv", catch_unwind(||(self.secondarycolor3uiv)(v)));
6407		#[cfg(not(feature = "catch_nullptr"))]
6408		let ret = {(self.secondarycolor3uiv)(v); Ok(())};
6409		#[cfg(feature = "diagnose")]
6410		if let Ok(ret) = ret {
6411			return to_result("glSecondaryColor3uiv", ret, self.glGetError());
6412		} else {
6413			return ret
6414		}
6415		#[cfg(not(feature = "diagnose"))]
6416		return ret;
6417	}
6418	#[inline(always)]
6419	fn glSecondaryColor3us(&self, red: GLushort, green: GLushort, blue: GLushort) -> Result<()> {
6420		#[cfg(feature = "catch_nullptr")]
6421		let ret = process_catch("glSecondaryColor3us", catch_unwind(||(self.secondarycolor3us)(red, green, blue)));
6422		#[cfg(not(feature = "catch_nullptr"))]
6423		let ret = {(self.secondarycolor3us)(red, green, blue); Ok(())};
6424		#[cfg(feature = "diagnose")]
6425		if let Ok(ret) = ret {
6426			return to_result("glSecondaryColor3us", ret, self.glGetError());
6427		} else {
6428			return ret
6429		}
6430		#[cfg(not(feature = "diagnose"))]
6431		return ret;
6432	}
6433	#[inline(always)]
6434	fn glSecondaryColor3usv(&self, v: *const GLushort) -> Result<()> {
6435		#[cfg(feature = "catch_nullptr")]
6436		let ret = process_catch("glSecondaryColor3usv", catch_unwind(||(self.secondarycolor3usv)(v)));
6437		#[cfg(not(feature = "catch_nullptr"))]
6438		let ret = {(self.secondarycolor3usv)(v); Ok(())};
6439		#[cfg(feature = "diagnose")]
6440		if let Ok(ret) = ret {
6441			return to_result("glSecondaryColor3usv", ret, self.glGetError());
6442		} else {
6443			return ret
6444		}
6445		#[cfg(not(feature = "diagnose"))]
6446		return ret;
6447	}
6448	#[inline(always)]
6449	fn glSecondaryColorPointer(&self, size: GLint, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()> {
6450		#[cfg(feature = "catch_nullptr")]
6451		let ret = process_catch("glSecondaryColorPointer", catch_unwind(||(self.secondarycolorpointer)(size, type_, stride, pointer)));
6452		#[cfg(not(feature = "catch_nullptr"))]
6453		let ret = {(self.secondarycolorpointer)(size, type_, stride, pointer); Ok(())};
6454		#[cfg(feature = "diagnose")]
6455		if let Ok(ret) = ret {
6456			return to_result("glSecondaryColorPointer", ret, self.glGetError());
6457		} else {
6458			return ret
6459		}
6460		#[cfg(not(feature = "diagnose"))]
6461		return ret;
6462	}
6463	#[inline(always)]
6464	fn glWindowPos2d(&self, x: GLdouble, y: GLdouble) -> Result<()> {
6465		#[cfg(feature = "catch_nullptr")]
6466		let ret = process_catch("glWindowPos2d", catch_unwind(||(self.windowpos2d)(x, y)));
6467		#[cfg(not(feature = "catch_nullptr"))]
6468		let ret = {(self.windowpos2d)(x, y); Ok(())};
6469		#[cfg(feature = "diagnose")]
6470		if let Ok(ret) = ret {
6471			return to_result("glWindowPos2d", ret, self.glGetError());
6472		} else {
6473			return ret
6474		}
6475		#[cfg(not(feature = "diagnose"))]
6476		return ret;
6477	}
6478	#[inline(always)]
6479	fn glWindowPos2dv(&self, v: *const GLdouble) -> Result<()> {
6480		#[cfg(feature = "catch_nullptr")]
6481		let ret = process_catch("glWindowPos2dv", catch_unwind(||(self.windowpos2dv)(v)));
6482		#[cfg(not(feature = "catch_nullptr"))]
6483		let ret = {(self.windowpos2dv)(v); Ok(())};
6484		#[cfg(feature = "diagnose")]
6485		if let Ok(ret) = ret {
6486			return to_result("glWindowPos2dv", ret, self.glGetError());
6487		} else {
6488			return ret
6489		}
6490		#[cfg(not(feature = "diagnose"))]
6491		return ret;
6492	}
6493	#[inline(always)]
6494	fn glWindowPos2f(&self, x: GLfloat, y: GLfloat) -> Result<()> {
6495		#[cfg(feature = "catch_nullptr")]
6496		let ret = process_catch("glWindowPos2f", catch_unwind(||(self.windowpos2f)(x, y)));
6497		#[cfg(not(feature = "catch_nullptr"))]
6498		let ret = {(self.windowpos2f)(x, y); Ok(())};
6499		#[cfg(feature = "diagnose")]
6500		if let Ok(ret) = ret {
6501			return to_result("glWindowPos2f", ret, self.glGetError());
6502		} else {
6503			return ret
6504		}
6505		#[cfg(not(feature = "diagnose"))]
6506		return ret;
6507	}
6508	#[inline(always)]
6509	fn glWindowPos2fv(&self, v: *const GLfloat) -> Result<()> {
6510		#[cfg(feature = "catch_nullptr")]
6511		let ret = process_catch("glWindowPos2fv", catch_unwind(||(self.windowpos2fv)(v)));
6512		#[cfg(not(feature = "catch_nullptr"))]
6513		let ret = {(self.windowpos2fv)(v); Ok(())};
6514		#[cfg(feature = "diagnose")]
6515		if let Ok(ret) = ret {
6516			return to_result("glWindowPos2fv", ret, self.glGetError());
6517		} else {
6518			return ret
6519		}
6520		#[cfg(not(feature = "diagnose"))]
6521		return ret;
6522	}
6523	#[inline(always)]
6524	fn glWindowPos2i(&self, x: GLint, y: GLint) -> Result<()> {
6525		#[cfg(feature = "catch_nullptr")]
6526		let ret = process_catch("glWindowPos2i", catch_unwind(||(self.windowpos2i)(x, y)));
6527		#[cfg(not(feature = "catch_nullptr"))]
6528		let ret = {(self.windowpos2i)(x, y); Ok(())};
6529		#[cfg(feature = "diagnose")]
6530		if let Ok(ret) = ret {
6531			return to_result("glWindowPos2i", ret, self.glGetError());
6532		} else {
6533			return ret
6534		}
6535		#[cfg(not(feature = "diagnose"))]
6536		return ret;
6537	}
6538	#[inline(always)]
6539	fn glWindowPos2iv(&self, v: *const GLint) -> Result<()> {
6540		#[cfg(feature = "catch_nullptr")]
6541		let ret = process_catch("glWindowPos2iv", catch_unwind(||(self.windowpos2iv)(v)));
6542		#[cfg(not(feature = "catch_nullptr"))]
6543		let ret = {(self.windowpos2iv)(v); Ok(())};
6544		#[cfg(feature = "diagnose")]
6545		if let Ok(ret) = ret {
6546			return to_result("glWindowPos2iv", ret, self.glGetError());
6547		} else {
6548			return ret
6549		}
6550		#[cfg(not(feature = "diagnose"))]
6551		return ret;
6552	}
6553	#[inline(always)]
6554	fn glWindowPos2s(&self, x: GLshort, y: GLshort) -> Result<()> {
6555		#[cfg(feature = "catch_nullptr")]
6556		let ret = process_catch("glWindowPos2s", catch_unwind(||(self.windowpos2s)(x, y)));
6557		#[cfg(not(feature = "catch_nullptr"))]
6558		let ret = {(self.windowpos2s)(x, y); Ok(())};
6559		#[cfg(feature = "diagnose")]
6560		if let Ok(ret) = ret {
6561			return to_result("glWindowPos2s", ret, self.glGetError());
6562		} else {
6563			return ret
6564		}
6565		#[cfg(not(feature = "diagnose"))]
6566		return ret;
6567	}
6568	#[inline(always)]
6569	fn glWindowPos2sv(&self, v: *const GLshort) -> Result<()> {
6570		#[cfg(feature = "catch_nullptr")]
6571		let ret = process_catch("glWindowPos2sv", catch_unwind(||(self.windowpos2sv)(v)));
6572		#[cfg(not(feature = "catch_nullptr"))]
6573		let ret = {(self.windowpos2sv)(v); Ok(())};
6574		#[cfg(feature = "diagnose")]
6575		if let Ok(ret) = ret {
6576			return to_result("glWindowPos2sv", ret, self.glGetError());
6577		} else {
6578			return ret
6579		}
6580		#[cfg(not(feature = "diagnose"))]
6581		return ret;
6582	}
6583	#[inline(always)]
6584	fn glWindowPos3d(&self, x: GLdouble, y: GLdouble, z: GLdouble) -> Result<()> {
6585		#[cfg(feature = "catch_nullptr")]
6586		let ret = process_catch("glWindowPos3d", catch_unwind(||(self.windowpos3d)(x, y, z)));
6587		#[cfg(not(feature = "catch_nullptr"))]
6588		let ret = {(self.windowpos3d)(x, y, z); Ok(())};
6589		#[cfg(feature = "diagnose")]
6590		if let Ok(ret) = ret {
6591			return to_result("glWindowPos3d", ret, self.glGetError());
6592		} else {
6593			return ret
6594		}
6595		#[cfg(not(feature = "diagnose"))]
6596		return ret;
6597	}
6598	#[inline(always)]
6599	fn glWindowPos3dv(&self, v: *const GLdouble) -> Result<()> {
6600		#[cfg(feature = "catch_nullptr")]
6601		let ret = process_catch("glWindowPos3dv", catch_unwind(||(self.windowpos3dv)(v)));
6602		#[cfg(not(feature = "catch_nullptr"))]
6603		let ret = {(self.windowpos3dv)(v); Ok(())};
6604		#[cfg(feature = "diagnose")]
6605		if let Ok(ret) = ret {
6606			return to_result("glWindowPos3dv", ret, self.glGetError());
6607		} else {
6608			return ret
6609		}
6610		#[cfg(not(feature = "diagnose"))]
6611		return ret;
6612	}
6613	#[inline(always)]
6614	fn glWindowPos3f(&self, x: GLfloat, y: GLfloat, z: GLfloat) -> Result<()> {
6615		#[cfg(feature = "catch_nullptr")]
6616		let ret = process_catch("glWindowPos3f", catch_unwind(||(self.windowpos3f)(x, y, z)));
6617		#[cfg(not(feature = "catch_nullptr"))]
6618		let ret = {(self.windowpos3f)(x, y, z); Ok(())};
6619		#[cfg(feature = "diagnose")]
6620		if let Ok(ret) = ret {
6621			return to_result("glWindowPos3f", ret, self.glGetError());
6622		} else {
6623			return ret
6624		}
6625		#[cfg(not(feature = "diagnose"))]
6626		return ret;
6627	}
6628	#[inline(always)]
6629	fn glWindowPos3fv(&self, v: *const GLfloat) -> Result<()> {
6630		#[cfg(feature = "catch_nullptr")]
6631		let ret = process_catch("glWindowPos3fv", catch_unwind(||(self.windowpos3fv)(v)));
6632		#[cfg(not(feature = "catch_nullptr"))]
6633		let ret = {(self.windowpos3fv)(v); Ok(())};
6634		#[cfg(feature = "diagnose")]
6635		if let Ok(ret) = ret {
6636			return to_result("glWindowPos3fv", ret, self.glGetError());
6637		} else {
6638			return ret
6639		}
6640		#[cfg(not(feature = "diagnose"))]
6641		return ret;
6642	}
6643	#[inline(always)]
6644	fn glWindowPos3i(&self, x: GLint, y: GLint, z: GLint) -> Result<()> {
6645		#[cfg(feature = "catch_nullptr")]
6646		let ret = process_catch("glWindowPos3i", catch_unwind(||(self.windowpos3i)(x, y, z)));
6647		#[cfg(not(feature = "catch_nullptr"))]
6648		let ret = {(self.windowpos3i)(x, y, z); Ok(())};
6649		#[cfg(feature = "diagnose")]
6650		if let Ok(ret) = ret {
6651			return to_result("glWindowPos3i", ret, self.glGetError());
6652		} else {
6653			return ret
6654		}
6655		#[cfg(not(feature = "diagnose"))]
6656		return ret;
6657	}
6658	#[inline(always)]
6659	fn glWindowPos3iv(&self, v: *const GLint) -> Result<()> {
6660		#[cfg(feature = "catch_nullptr")]
6661		let ret = process_catch("glWindowPos3iv", catch_unwind(||(self.windowpos3iv)(v)));
6662		#[cfg(not(feature = "catch_nullptr"))]
6663		let ret = {(self.windowpos3iv)(v); Ok(())};
6664		#[cfg(feature = "diagnose")]
6665		if let Ok(ret) = ret {
6666			return to_result("glWindowPos3iv", ret, self.glGetError());
6667		} else {
6668			return ret
6669		}
6670		#[cfg(not(feature = "diagnose"))]
6671		return ret;
6672	}
6673	#[inline(always)]
6674	fn glWindowPos3s(&self, x: GLshort, y: GLshort, z: GLshort) -> Result<()> {
6675		#[cfg(feature = "catch_nullptr")]
6676		let ret = process_catch("glWindowPos3s", catch_unwind(||(self.windowpos3s)(x, y, z)));
6677		#[cfg(not(feature = "catch_nullptr"))]
6678		let ret = {(self.windowpos3s)(x, y, z); Ok(())};
6679		#[cfg(feature = "diagnose")]
6680		if let Ok(ret) = ret {
6681			return to_result("glWindowPos3s", ret, self.glGetError());
6682		} else {
6683			return ret
6684		}
6685		#[cfg(not(feature = "diagnose"))]
6686		return ret;
6687	}
6688	#[inline(always)]
6689	fn glWindowPos3sv(&self, v: *const GLshort) -> Result<()> {
6690		#[cfg(feature = "catch_nullptr")]
6691		let ret = process_catch("glWindowPos3sv", catch_unwind(||(self.windowpos3sv)(v)));
6692		#[cfg(not(feature = "catch_nullptr"))]
6693		let ret = {(self.windowpos3sv)(v); Ok(())};
6694		#[cfg(feature = "diagnose")]
6695		if let Ok(ret) = ret {
6696			return to_result("glWindowPos3sv", ret, self.glGetError());
6697		} else {
6698			return ret
6699		}
6700		#[cfg(not(feature = "diagnose"))]
6701		return ret;
6702	}
6703	#[inline(always)]
6704	fn glBlendColor(&self, red: GLfloat, green: GLfloat, blue: GLfloat, alpha: GLfloat) -> Result<()> {
6705		#[cfg(feature = "catch_nullptr")]
6706		let ret = process_catch("glBlendColor", catch_unwind(||(self.blendcolor)(red, green, blue, alpha)));
6707		#[cfg(not(feature = "catch_nullptr"))]
6708		let ret = {(self.blendcolor)(red, green, blue, alpha); Ok(())};
6709		#[cfg(feature = "diagnose")]
6710		if let Ok(ret) = ret {
6711			return to_result("glBlendColor", ret, self.glGetError());
6712		} else {
6713			return ret
6714		}
6715		#[cfg(not(feature = "diagnose"))]
6716		return ret;
6717	}
6718	#[inline(always)]
6719	fn glBlendEquation(&self, mode: GLenum) -> Result<()> {
6720		#[cfg(feature = "catch_nullptr")]
6721		let ret = process_catch("glBlendEquation", catch_unwind(||(self.blendequation)(mode)));
6722		#[cfg(not(feature = "catch_nullptr"))]
6723		let ret = {(self.blendequation)(mode); Ok(())};
6724		#[cfg(feature = "diagnose")]
6725		if let Ok(ret) = ret {
6726			return to_result("glBlendEquation", ret, self.glGetError());
6727		} else {
6728			return ret
6729		}
6730		#[cfg(not(feature = "diagnose"))]
6731		return ret;
6732	}
6733}
6734
6735impl Version14 {
6736	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
6737		let (_spec, major, minor, release) = base.get_version();
6738		if (major, minor, release) < (1, 4, 0) {
6739			return Self::default();
6740		}
6741		Self {
6742			available: true,
6743			geterror: {let proc = get_proc_address("glGetError"); if proc.is_null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
6744			blendfuncseparate: {let proc = get_proc_address("glBlendFuncSeparate"); if proc.is_null() {dummy_pfnglblendfuncseparateproc} else {unsafe{transmute(proc)}}},
6745			multidrawarrays: {let proc = get_proc_address("glMultiDrawArrays"); if proc.is_null() {dummy_pfnglmultidrawarraysproc} else {unsafe{transmute(proc)}}},
6746			multidrawelements: {let proc = get_proc_address("glMultiDrawElements"); if proc.is_null() {dummy_pfnglmultidrawelementsproc} else {unsafe{transmute(proc)}}},
6747			pointparameterf: {let proc = get_proc_address("glPointParameterf"); if proc.is_null() {dummy_pfnglpointparameterfproc} else {unsafe{transmute(proc)}}},
6748			pointparameterfv: {let proc = get_proc_address("glPointParameterfv"); if proc.is_null() {dummy_pfnglpointparameterfvproc} else {unsafe{transmute(proc)}}},
6749			pointparameteri: {let proc = get_proc_address("glPointParameteri"); if proc.is_null() {dummy_pfnglpointparameteriproc} else {unsafe{transmute(proc)}}},
6750			pointparameteriv: {let proc = get_proc_address("glPointParameteriv"); if proc.is_null() {dummy_pfnglpointparameterivproc} else {unsafe{transmute(proc)}}},
6751			fogcoordf: {let proc = get_proc_address("glFogCoordf"); if proc.is_null() {dummy_pfnglfogcoordfproc} else {unsafe{transmute(proc)}}},
6752			fogcoordfv: {let proc = get_proc_address("glFogCoordfv"); if proc.is_null() {dummy_pfnglfogcoordfvproc} else {unsafe{transmute(proc)}}},
6753			fogcoordd: {let proc = get_proc_address("glFogCoordd"); if proc.is_null() {dummy_pfnglfogcoorddproc} else {unsafe{transmute(proc)}}},
6754			fogcoorddv: {let proc = get_proc_address("glFogCoorddv"); if proc.is_null() {dummy_pfnglfogcoorddvproc} else {unsafe{transmute(proc)}}},
6755			fogcoordpointer: {let proc = get_proc_address("glFogCoordPointer"); if proc.is_null() {dummy_pfnglfogcoordpointerproc} else {unsafe{transmute(proc)}}},
6756			secondarycolor3b: {let proc = get_proc_address("glSecondaryColor3b"); if proc.is_null() {dummy_pfnglsecondarycolor3bproc} else {unsafe{transmute(proc)}}},
6757			secondarycolor3bv: {let proc = get_proc_address("glSecondaryColor3bv"); if proc.is_null() {dummy_pfnglsecondarycolor3bvproc} else {unsafe{transmute(proc)}}},
6758			secondarycolor3d: {let proc = get_proc_address("glSecondaryColor3d"); if proc.is_null() {dummy_pfnglsecondarycolor3dproc} else {unsafe{transmute(proc)}}},
6759			secondarycolor3dv: {let proc = get_proc_address("glSecondaryColor3dv"); if proc.is_null() {dummy_pfnglsecondarycolor3dvproc} else {unsafe{transmute(proc)}}},
6760			secondarycolor3f: {let proc = get_proc_address("glSecondaryColor3f"); if proc.is_null() {dummy_pfnglsecondarycolor3fproc} else {unsafe{transmute(proc)}}},
6761			secondarycolor3fv: {let proc = get_proc_address("glSecondaryColor3fv"); if proc.is_null() {dummy_pfnglsecondarycolor3fvproc} else {unsafe{transmute(proc)}}},
6762			secondarycolor3i: {let proc = get_proc_address("glSecondaryColor3i"); if proc.is_null() {dummy_pfnglsecondarycolor3iproc} else {unsafe{transmute(proc)}}},
6763			secondarycolor3iv: {let proc = get_proc_address("glSecondaryColor3iv"); if proc.is_null() {dummy_pfnglsecondarycolor3ivproc} else {unsafe{transmute(proc)}}},
6764			secondarycolor3s: {let proc = get_proc_address("glSecondaryColor3s"); if proc.is_null() {dummy_pfnglsecondarycolor3sproc} else {unsafe{transmute(proc)}}},
6765			secondarycolor3sv: {let proc = get_proc_address("glSecondaryColor3sv"); if proc.is_null() {dummy_pfnglsecondarycolor3svproc} else {unsafe{transmute(proc)}}},
6766			secondarycolor3ub: {let proc = get_proc_address("glSecondaryColor3ub"); if proc.is_null() {dummy_pfnglsecondarycolor3ubproc} else {unsafe{transmute(proc)}}},
6767			secondarycolor3ubv: {let proc = get_proc_address("glSecondaryColor3ubv"); if proc.is_null() {dummy_pfnglsecondarycolor3ubvproc} else {unsafe{transmute(proc)}}},
6768			secondarycolor3ui: {let proc = get_proc_address("glSecondaryColor3ui"); if proc.is_null() {dummy_pfnglsecondarycolor3uiproc} else {unsafe{transmute(proc)}}},
6769			secondarycolor3uiv: {let proc = get_proc_address("glSecondaryColor3uiv"); if proc.is_null() {dummy_pfnglsecondarycolor3uivproc} else {unsafe{transmute(proc)}}},
6770			secondarycolor3us: {let proc = get_proc_address("glSecondaryColor3us"); if proc.is_null() {dummy_pfnglsecondarycolor3usproc} else {unsafe{transmute(proc)}}},
6771			secondarycolor3usv: {let proc = get_proc_address("glSecondaryColor3usv"); if proc.is_null() {dummy_pfnglsecondarycolor3usvproc} else {unsafe{transmute(proc)}}},
6772			secondarycolorpointer: {let proc = get_proc_address("glSecondaryColorPointer"); if proc.is_null() {dummy_pfnglsecondarycolorpointerproc} else {unsafe{transmute(proc)}}},
6773			windowpos2d: {let proc = get_proc_address("glWindowPos2d"); if proc.is_null() {dummy_pfnglwindowpos2dproc} else {unsafe{transmute(proc)}}},
6774			windowpos2dv: {let proc = get_proc_address("glWindowPos2dv"); if proc.is_null() {dummy_pfnglwindowpos2dvproc} else {unsafe{transmute(proc)}}},
6775			windowpos2f: {let proc = get_proc_address("glWindowPos2f"); if proc.is_null() {dummy_pfnglwindowpos2fproc} else {unsafe{transmute(proc)}}},
6776			windowpos2fv: {let proc = get_proc_address("glWindowPos2fv"); if proc.is_null() {dummy_pfnglwindowpos2fvproc} else {unsafe{transmute(proc)}}},
6777			windowpos2i: {let proc = get_proc_address("glWindowPos2i"); if proc.is_null() {dummy_pfnglwindowpos2iproc} else {unsafe{transmute(proc)}}},
6778			windowpos2iv: {let proc = get_proc_address("glWindowPos2iv"); if proc.is_null() {dummy_pfnglwindowpos2ivproc} else {unsafe{transmute(proc)}}},
6779			windowpos2s: {let proc = get_proc_address("glWindowPos2s"); if proc.is_null() {dummy_pfnglwindowpos2sproc} else {unsafe{transmute(proc)}}},
6780			windowpos2sv: {let proc = get_proc_address("glWindowPos2sv"); if proc.is_null() {dummy_pfnglwindowpos2svproc} else {unsafe{transmute(proc)}}},
6781			windowpos3d: {let proc = get_proc_address("glWindowPos3d"); if proc.is_null() {dummy_pfnglwindowpos3dproc} else {unsafe{transmute(proc)}}},
6782			windowpos3dv: {let proc = get_proc_address("glWindowPos3dv"); if proc.is_null() {dummy_pfnglwindowpos3dvproc} else {unsafe{transmute(proc)}}},
6783			windowpos3f: {let proc = get_proc_address("glWindowPos3f"); if proc.is_null() {dummy_pfnglwindowpos3fproc} else {unsafe{transmute(proc)}}},
6784			windowpos3fv: {let proc = get_proc_address("glWindowPos3fv"); if proc.is_null() {dummy_pfnglwindowpos3fvproc} else {unsafe{transmute(proc)}}},
6785			windowpos3i: {let proc = get_proc_address("glWindowPos3i"); if proc.is_null() {dummy_pfnglwindowpos3iproc} else {unsafe{transmute(proc)}}},
6786			windowpos3iv: {let proc = get_proc_address("glWindowPos3iv"); if proc.is_null() {dummy_pfnglwindowpos3ivproc} else {unsafe{transmute(proc)}}},
6787			windowpos3s: {let proc = get_proc_address("glWindowPos3s"); if proc.is_null() {dummy_pfnglwindowpos3sproc} else {unsafe{transmute(proc)}}},
6788			windowpos3sv: {let proc = get_proc_address("glWindowPos3sv"); if proc.is_null() {dummy_pfnglwindowpos3svproc} else {unsafe{transmute(proc)}}},
6789			blendcolor: {let proc = get_proc_address("glBlendColor"); if proc.is_null() {dummy_pfnglblendcolorproc} else {unsafe{transmute(proc)}}},
6790			blendequation: {let proc = get_proc_address("glBlendEquation"); if proc.is_null() {dummy_pfnglblendequationproc} else {unsafe{transmute(proc)}}},
6791		}
6792	}
6793	#[inline(always)]
6794	pub fn get_available(&self) -> bool {
6795		self.available
6796	}
6797}
6798
6799impl Default for Version14 {
6800	fn default() -> Self {
6801		Self {
6802			available: false,
6803			geterror: dummy_pfnglgeterrorproc,
6804			blendfuncseparate: dummy_pfnglblendfuncseparateproc,
6805			multidrawarrays: dummy_pfnglmultidrawarraysproc,
6806			multidrawelements: dummy_pfnglmultidrawelementsproc,
6807			pointparameterf: dummy_pfnglpointparameterfproc,
6808			pointparameterfv: dummy_pfnglpointparameterfvproc,
6809			pointparameteri: dummy_pfnglpointparameteriproc,
6810			pointparameteriv: dummy_pfnglpointparameterivproc,
6811			fogcoordf: dummy_pfnglfogcoordfproc,
6812			fogcoordfv: dummy_pfnglfogcoordfvproc,
6813			fogcoordd: dummy_pfnglfogcoorddproc,
6814			fogcoorddv: dummy_pfnglfogcoorddvproc,
6815			fogcoordpointer: dummy_pfnglfogcoordpointerproc,
6816			secondarycolor3b: dummy_pfnglsecondarycolor3bproc,
6817			secondarycolor3bv: dummy_pfnglsecondarycolor3bvproc,
6818			secondarycolor3d: dummy_pfnglsecondarycolor3dproc,
6819			secondarycolor3dv: dummy_pfnglsecondarycolor3dvproc,
6820			secondarycolor3f: dummy_pfnglsecondarycolor3fproc,
6821			secondarycolor3fv: dummy_pfnglsecondarycolor3fvproc,
6822			secondarycolor3i: dummy_pfnglsecondarycolor3iproc,
6823			secondarycolor3iv: dummy_pfnglsecondarycolor3ivproc,
6824			secondarycolor3s: dummy_pfnglsecondarycolor3sproc,
6825			secondarycolor3sv: dummy_pfnglsecondarycolor3svproc,
6826			secondarycolor3ub: dummy_pfnglsecondarycolor3ubproc,
6827			secondarycolor3ubv: dummy_pfnglsecondarycolor3ubvproc,
6828			secondarycolor3ui: dummy_pfnglsecondarycolor3uiproc,
6829			secondarycolor3uiv: dummy_pfnglsecondarycolor3uivproc,
6830			secondarycolor3us: dummy_pfnglsecondarycolor3usproc,
6831			secondarycolor3usv: dummy_pfnglsecondarycolor3usvproc,
6832			secondarycolorpointer: dummy_pfnglsecondarycolorpointerproc,
6833			windowpos2d: dummy_pfnglwindowpos2dproc,
6834			windowpos2dv: dummy_pfnglwindowpos2dvproc,
6835			windowpos2f: dummy_pfnglwindowpos2fproc,
6836			windowpos2fv: dummy_pfnglwindowpos2fvproc,
6837			windowpos2i: dummy_pfnglwindowpos2iproc,
6838			windowpos2iv: dummy_pfnglwindowpos2ivproc,
6839			windowpos2s: dummy_pfnglwindowpos2sproc,
6840			windowpos2sv: dummy_pfnglwindowpos2svproc,
6841			windowpos3d: dummy_pfnglwindowpos3dproc,
6842			windowpos3dv: dummy_pfnglwindowpos3dvproc,
6843			windowpos3f: dummy_pfnglwindowpos3fproc,
6844			windowpos3fv: dummy_pfnglwindowpos3fvproc,
6845			windowpos3i: dummy_pfnglwindowpos3iproc,
6846			windowpos3iv: dummy_pfnglwindowpos3ivproc,
6847			windowpos3s: dummy_pfnglwindowpos3sproc,
6848			windowpos3sv: dummy_pfnglwindowpos3svproc,
6849			blendcolor: dummy_pfnglblendcolorproc,
6850			blendequation: dummy_pfnglblendequationproc,
6851		}
6852	}
6853}
6854impl Debug for Version14 {
6855	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
6856		if self.available {
6857			f.debug_struct("Version14")
6858			.field("available", &self.available)
6859			.field("blendfuncseparate", unsafe{if transmute::<_, *const c_void>(self.blendfuncseparate) == (dummy_pfnglblendfuncseparateproc as *const c_void) {&null::<PFNGLBLENDFUNCSEPARATEPROC>()} else {&self.blendfuncseparate}})
6860			.field("multidrawarrays", unsafe{if transmute::<_, *const c_void>(self.multidrawarrays) == (dummy_pfnglmultidrawarraysproc as *const c_void) {&null::<PFNGLMULTIDRAWARRAYSPROC>()} else {&self.multidrawarrays}})
6861			.field("multidrawelements", unsafe{if transmute::<_, *const c_void>(self.multidrawelements) == (dummy_pfnglmultidrawelementsproc as *const c_void) {&null::<PFNGLMULTIDRAWELEMENTSPROC>()} else {&self.multidrawelements}})
6862			.field("pointparameterf", unsafe{if transmute::<_, *const c_void>(self.pointparameterf) == (dummy_pfnglpointparameterfproc as *const c_void) {&null::<PFNGLPOINTPARAMETERFPROC>()} else {&self.pointparameterf}})
6863			.field("pointparameterfv", unsafe{if transmute::<_, *const c_void>(self.pointparameterfv) == (dummy_pfnglpointparameterfvproc as *const c_void) {&null::<PFNGLPOINTPARAMETERFVPROC>()} else {&self.pointparameterfv}})
6864			.field("pointparameteri", unsafe{if transmute::<_, *const c_void>(self.pointparameteri) == (dummy_pfnglpointparameteriproc as *const c_void) {&null::<PFNGLPOINTPARAMETERIPROC>()} else {&self.pointparameteri}})
6865			.field("pointparameteriv", unsafe{if transmute::<_, *const c_void>(self.pointparameteriv) == (dummy_pfnglpointparameterivproc as *const c_void) {&null::<PFNGLPOINTPARAMETERIVPROC>()} else {&self.pointparameteriv}})
6866			.field("fogcoordf", unsafe{if transmute::<_, *const c_void>(self.fogcoordf) == (dummy_pfnglfogcoordfproc as *const c_void) {&null::<PFNGLFOGCOORDFPROC>()} else {&self.fogcoordf}})
6867			.field("fogcoordfv", unsafe{if transmute::<_, *const c_void>(self.fogcoordfv) == (dummy_pfnglfogcoordfvproc as *const c_void) {&null::<PFNGLFOGCOORDFVPROC>()} else {&self.fogcoordfv}})
6868			.field("fogcoordd", unsafe{if transmute::<_, *const c_void>(self.fogcoordd) == (dummy_pfnglfogcoorddproc as *const c_void) {&null::<PFNGLFOGCOORDDPROC>()} else {&self.fogcoordd}})
6869			.field("fogcoorddv", unsafe{if transmute::<_, *const c_void>(self.fogcoorddv) == (dummy_pfnglfogcoorddvproc as *const c_void) {&null::<PFNGLFOGCOORDDVPROC>()} else {&self.fogcoorddv}})
6870			.field("fogcoordpointer", unsafe{if transmute::<_, *const c_void>(self.fogcoordpointer) == (dummy_pfnglfogcoordpointerproc as *const c_void) {&null::<PFNGLFOGCOORDPOINTERPROC>()} else {&self.fogcoordpointer}})
6871			.field("secondarycolor3b", unsafe{if transmute::<_, *const c_void>(self.secondarycolor3b) == (dummy_pfnglsecondarycolor3bproc as *const c_void) {&null::<PFNGLSECONDARYCOLOR3BPROC>()} else {&self.secondarycolor3b}})
6872			.field("secondarycolor3bv", unsafe{if transmute::<_, *const c_void>(self.secondarycolor3bv) == (dummy_pfnglsecondarycolor3bvproc as *const c_void) {&null::<PFNGLSECONDARYCOLOR3BVPROC>()} else {&self.secondarycolor3bv}})
6873			.field("secondarycolor3d", unsafe{if transmute::<_, *const c_void>(self.secondarycolor3d) == (dummy_pfnglsecondarycolor3dproc as *const c_void) {&null::<PFNGLSECONDARYCOLOR3DPROC>()} else {&self.secondarycolor3d}})
6874			.field("secondarycolor3dv", unsafe{if transmute::<_, *const c_void>(self.secondarycolor3dv) == (dummy_pfnglsecondarycolor3dvproc as *const c_void) {&null::<PFNGLSECONDARYCOLOR3DVPROC>()} else {&self.secondarycolor3dv}})
6875			.field("secondarycolor3f", unsafe{if transmute::<_, *const c_void>(self.secondarycolor3f) == (dummy_pfnglsecondarycolor3fproc as *const c_void) {&null::<PFNGLSECONDARYCOLOR3FPROC>()} else {&self.secondarycolor3f}})
6876			.field("secondarycolor3fv", unsafe{if transmute::<_, *const c_void>(self.secondarycolor3fv) == (dummy_pfnglsecondarycolor3fvproc as *const c_void) {&null::<PFNGLSECONDARYCOLOR3FVPROC>()} else {&self.secondarycolor3fv}})
6877			.field("secondarycolor3i", unsafe{if transmute::<_, *const c_void>(self.secondarycolor3i) == (dummy_pfnglsecondarycolor3iproc as *const c_void) {&null::<PFNGLSECONDARYCOLOR3IPROC>()} else {&self.secondarycolor3i}})
6878			.field("secondarycolor3iv", unsafe{if transmute::<_, *const c_void>(self.secondarycolor3iv) == (dummy_pfnglsecondarycolor3ivproc as *const c_void) {&null::<PFNGLSECONDARYCOLOR3IVPROC>()} else {&self.secondarycolor3iv}})
6879			.field("secondarycolor3s", unsafe{if transmute::<_, *const c_void>(self.secondarycolor3s) == (dummy_pfnglsecondarycolor3sproc as *const c_void) {&null::<PFNGLSECONDARYCOLOR3SPROC>()} else {&self.secondarycolor3s}})
6880			.field("secondarycolor3sv", unsafe{if transmute::<_, *const c_void>(self.secondarycolor3sv) == (dummy_pfnglsecondarycolor3svproc as *const c_void) {&null::<PFNGLSECONDARYCOLOR3SVPROC>()} else {&self.secondarycolor3sv}})
6881			.field("secondarycolor3ub", unsafe{if transmute::<_, *const c_void>(self.secondarycolor3ub) == (dummy_pfnglsecondarycolor3ubproc as *const c_void) {&null::<PFNGLSECONDARYCOLOR3UBPROC>()} else {&self.secondarycolor3ub}})
6882			.field("secondarycolor3ubv", unsafe{if transmute::<_, *const c_void>(self.secondarycolor3ubv) == (dummy_pfnglsecondarycolor3ubvproc as *const c_void) {&null::<PFNGLSECONDARYCOLOR3UBVPROC>()} else {&self.secondarycolor3ubv}})
6883			.field("secondarycolor3ui", unsafe{if transmute::<_, *const c_void>(self.secondarycolor3ui) == (dummy_pfnglsecondarycolor3uiproc as *const c_void) {&null::<PFNGLSECONDARYCOLOR3UIPROC>()} else {&self.secondarycolor3ui}})
6884			.field("secondarycolor3uiv", unsafe{if transmute::<_, *const c_void>(self.secondarycolor3uiv) == (dummy_pfnglsecondarycolor3uivproc as *const c_void) {&null::<PFNGLSECONDARYCOLOR3UIVPROC>()} else {&self.secondarycolor3uiv}})
6885			.field("secondarycolor3us", unsafe{if transmute::<_, *const c_void>(self.secondarycolor3us) == (dummy_pfnglsecondarycolor3usproc as *const c_void) {&null::<PFNGLSECONDARYCOLOR3USPROC>()} else {&self.secondarycolor3us}})
6886			.field("secondarycolor3usv", unsafe{if transmute::<_, *const c_void>(self.secondarycolor3usv) == (dummy_pfnglsecondarycolor3usvproc as *const c_void) {&null::<PFNGLSECONDARYCOLOR3USVPROC>()} else {&self.secondarycolor3usv}})
6887			.field("secondarycolorpointer", unsafe{if transmute::<_, *const c_void>(self.secondarycolorpointer) == (dummy_pfnglsecondarycolorpointerproc as *const c_void) {&null::<PFNGLSECONDARYCOLORPOINTERPROC>()} else {&self.secondarycolorpointer}})
6888			.field("windowpos2d", unsafe{if transmute::<_, *const c_void>(self.windowpos2d) == (dummy_pfnglwindowpos2dproc as *const c_void) {&null::<PFNGLWINDOWPOS2DPROC>()} else {&self.windowpos2d}})
6889			.field("windowpos2dv", unsafe{if transmute::<_, *const c_void>(self.windowpos2dv) == (dummy_pfnglwindowpos2dvproc as *const c_void) {&null::<PFNGLWINDOWPOS2DVPROC>()} else {&self.windowpos2dv}})
6890			.field("windowpos2f", unsafe{if transmute::<_, *const c_void>(self.windowpos2f) == (dummy_pfnglwindowpos2fproc as *const c_void) {&null::<PFNGLWINDOWPOS2FPROC>()} else {&self.windowpos2f}})
6891			.field("windowpos2fv", unsafe{if transmute::<_, *const c_void>(self.windowpos2fv) == (dummy_pfnglwindowpos2fvproc as *const c_void) {&null::<PFNGLWINDOWPOS2FVPROC>()} else {&self.windowpos2fv}})
6892			.field("windowpos2i", unsafe{if transmute::<_, *const c_void>(self.windowpos2i) == (dummy_pfnglwindowpos2iproc as *const c_void) {&null::<PFNGLWINDOWPOS2IPROC>()} else {&self.windowpos2i}})
6893			.field("windowpos2iv", unsafe{if transmute::<_, *const c_void>(self.windowpos2iv) == (dummy_pfnglwindowpos2ivproc as *const c_void) {&null::<PFNGLWINDOWPOS2IVPROC>()} else {&self.windowpos2iv}})
6894			.field("windowpos2s", unsafe{if transmute::<_, *const c_void>(self.windowpos2s) == (dummy_pfnglwindowpos2sproc as *const c_void) {&null::<PFNGLWINDOWPOS2SPROC>()} else {&self.windowpos2s}})
6895			.field("windowpos2sv", unsafe{if transmute::<_, *const c_void>(self.windowpos2sv) == (dummy_pfnglwindowpos2svproc as *const c_void) {&null::<PFNGLWINDOWPOS2SVPROC>()} else {&self.windowpos2sv}})
6896			.field("windowpos3d", unsafe{if transmute::<_, *const c_void>(self.windowpos3d) == (dummy_pfnglwindowpos3dproc as *const c_void) {&null::<PFNGLWINDOWPOS3DPROC>()} else {&self.windowpos3d}})
6897			.field("windowpos3dv", unsafe{if transmute::<_, *const c_void>(self.windowpos3dv) == (dummy_pfnglwindowpos3dvproc as *const c_void) {&null::<PFNGLWINDOWPOS3DVPROC>()} else {&self.windowpos3dv}})
6898			.field("windowpos3f", unsafe{if transmute::<_, *const c_void>(self.windowpos3f) == (dummy_pfnglwindowpos3fproc as *const c_void) {&null::<PFNGLWINDOWPOS3FPROC>()} else {&self.windowpos3f}})
6899			.field("windowpos3fv", unsafe{if transmute::<_, *const c_void>(self.windowpos3fv) == (dummy_pfnglwindowpos3fvproc as *const c_void) {&null::<PFNGLWINDOWPOS3FVPROC>()} else {&self.windowpos3fv}})
6900			.field("windowpos3i", unsafe{if transmute::<_, *const c_void>(self.windowpos3i) == (dummy_pfnglwindowpos3iproc as *const c_void) {&null::<PFNGLWINDOWPOS3IPROC>()} else {&self.windowpos3i}})
6901			.field("windowpos3iv", unsafe{if transmute::<_, *const c_void>(self.windowpos3iv) == (dummy_pfnglwindowpos3ivproc as *const c_void) {&null::<PFNGLWINDOWPOS3IVPROC>()} else {&self.windowpos3iv}})
6902			.field("windowpos3s", unsafe{if transmute::<_, *const c_void>(self.windowpos3s) == (dummy_pfnglwindowpos3sproc as *const c_void) {&null::<PFNGLWINDOWPOS3SPROC>()} else {&self.windowpos3s}})
6903			.field("windowpos3sv", unsafe{if transmute::<_, *const c_void>(self.windowpos3sv) == (dummy_pfnglwindowpos3svproc as *const c_void) {&null::<PFNGLWINDOWPOS3SVPROC>()} else {&self.windowpos3sv}})
6904			.field("blendcolor", unsafe{if transmute::<_, *const c_void>(self.blendcolor) == (dummy_pfnglblendcolorproc as *const c_void) {&null::<PFNGLBLENDCOLORPROC>()} else {&self.blendcolor}})
6905			.field("blendequation", unsafe{if transmute::<_, *const c_void>(self.blendequation) == (dummy_pfnglblendequationproc as *const c_void) {&null::<PFNGLBLENDEQUATIONPROC>()} else {&self.blendequation}})
6906			.finish()
6907		} else {
6908			f.debug_struct("Version14")
6909			.field("available", &self.available)
6910			.finish_non_exhaustive()
6911		}
6912	}
6913}
6914
6915/// Alias to `khronos_ssize_t`
6916pub type GLsizeiptr = khronos_ssize_t;
6917
6918/// Alias to `khronos_intptr_t`
6919pub type GLintptr = khronos_intptr_t;
6920
6921/// The prototype to the OpenGL function `GenQueries`
6922type PFNGLGENQUERIESPROC = extern "system" fn(GLsizei, *mut GLuint);
6923
6924/// The prototype to the OpenGL function `DeleteQueries`
6925type PFNGLDELETEQUERIESPROC = extern "system" fn(GLsizei, *const GLuint);
6926
6927/// The prototype to the OpenGL function `IsQuery`
6928type PFNGLISQUERYPROC = extern "system" fn(GLuint) -> GLboolean;
6929
6930/// The prototype to the OpenGL function `BeginQuery`
6931type PFNGLBEGINQUERYPROC = extern "system" fn(GLenum, GLuint);
6932
6933/// The prototype to the OpenGL function `EndQuery`
6934type PFNGLENDQUERYPROC = extern "system" fn(GLenum);
6935
6936/// The prototype to the OpenGL function `GetQueryiv`
6937type PFNGLGETQUERYIVPROC = extern "system" fn(GLenum, GLenum, *mut GLint);
6938
6939/// The prototype to the OpenGL function `GetQueryObjectiv`
6940type PFNGLGETQUERYOBJECTIVPROC = extern "system" fn(GLuint, GLenum, *mut GLint);
6941
6942/// The prototype to the OpenGL function `GetQueryObjectuiv`
6943type PFNGLGETQUERYOBJECTUIVPROC = extern "system" fn(GLuint, GLenum, *mut GLuint);
6944
6945/// The prototype to the OpenGL function `BindBuffer`
6946type PFNGLBINDBUFFERPROC = extern "system" fn(GLenum, GLuint);
6947
6948/// The prototype to the OpenGL function `DeleteBuffers`
6949type PFNGLDELETEBUFFERSPROC = extern "system" fn(GLsizei, *const GLuint);
6950
6951/// The prototype to the OpenGL function `GenBuffers`
6952type PFNGLGENBUFFERSPROC = extern "system" fn(GLsizei, *mut GLuint);
6953
6954/// The prototype to the OpenGL function `IsBuffer`
6955type PFNGLISBUFFERPROC = extern "system" fn(GLuint) -> GLboolean;
6956
6957/// The prototype to the OpenGL function `BufferData`
6958type PFNGLBUFFERDATAPROC = extern "system" fn(GLenum, GLsizeiptr, *const c_void, GLenum);
6959
6960/// The prototype to the OpenGL function `BufferSubData`
6961type PFNGLBUFFERSUBDATAPROC = extern "system" fn(GLenum, GLintptr, GLsizeiptr, *const c_void);
6962
6963/// The prototype to the OpenGL function `GetBufferSubData`
6964type PFNGLGETBUFFERSUBDATAPROC = extern "system" fn(GLenum, GLintptr, GLsizeiptr, *mut c_void);
6965
6966/// The prototype to the OpenGL function `MapBuffer`
6967type PFNGLMAPBUFFERPROC = extern "system" fn(GLenum, GLenum) -> *mut c_void;
6968
6969/// The prototype to the OpenGL function `UnmapBuffer`
6970type PFNGLUNMAPBUFFERPROC = extern "system" fn(GLenum) -> GLboolean;
6971
6972/// The prototype to the OpenGL function `GetBufferParameteriv`
6973type PFNGLGETBUFFERPARAMETERIVPROC = extern "system" fn(GLenum, GLenum, *mut GLint);
6974
6975/// The prototype to the OpenGL function `GetBufferPointerv`
6976type PFNGLGETBUFFERPOINTERVPROC = extern "system" fn(GLenum, GLenum, *mut *mut c_void);
6977
6978/// The dummy function of `GenQueries()`
6979extern "system" fn dummy_pfnglgenqueriesproc (_: GLsizei, _: *mut GLuint) {
6980	panic!("OpenGL function pointer `glGenQueries()` is null.")
6981}
6982
6983/// The dummy function of `DeleteQueries()`
6984extern "system" fn dummy_pfngldeletequeriesproc (_: GLsizei, _: *const GLuint) {
6985	panic!("OpenGL function pointer `glDeleteQueries()` is null.")
6986}
6987
6988/// The dummy function of `IsQuery()`
6989extern "system" fn dummy_pfnglisqueryproc (_: GLuint) -> GLboolean {
6990	panic!("OpenGL function pointer `glIsQuery()` is null.")
6991}
6992
6993/// The dummy function of `BeginQuery()`
6994extern "system" fn dummy_pfnglbeginqueryproc (_: GLenum, _: GLuint) {
6995	panic!("OpenGL function pointer `glBeginQuery()` is null.")
6996}
6997
6998/// The dummy function of `EndQuery()`
6999extern "system" fn dummy_pfnglendqueryproc (_: GLenum) {
7000	panic!("OpenGL function pointer `glEndQuery()` is null.")
7001}
7002
7003/// The dummy function of `GetQueryiv()`
7004extern "system" fn dummy_pfnglgetqueryivproc (_: GLenum, _: GLenum, _: *mut GLint) {
7005	panic!("OpenGL function pointer `glGetQueryiv()` is null.")
7006}
7007
7008/// The dummy function of `GetQueryObjectiv()`
7009extern "system" fn dummy_pfnglgetqueryobjectivproc (_: GLuint, _: GLenum, _: *mut GLint) {
7010	panic!("OpenGL function pointer `glGetQueryObjectiv()` is null.")
7011}
7012
7013/// The dummy function of `GetQueryObjectuiv()`
7014extern "system" fn dummy_pfnglgetqueryobjectuivproc (_: GLuint, _: GLenum, _: *mut GLuint) {
7015	panic!("OpenGL function pointer `glGetQueryObjectuiv()` is null.")
7016}
7017
7018/// The dummy function of `BindBuffer()`
7019extern "system" fn dummy_pfnglbindbufferproc (_: GLenum, _: GLuint) {
7020	panic!("OpenGL function pointer `glBindBuffer()` is null.")
7021}
7022
7023/// The dummy function of `DeleteBuffers()`
7024extern "system" fn dummy_pfngldeletebuffersproc (_: GLsizei, _: *const GLuint) {
7025	panic!("OpenGL function pointer `glDeleteBuffers()` is null.")
7026}
7027
7028/// The dummy function of `GenBuffers()`
7029extern "system" fn dummy_pfnglgenbuffersproc (_: GLsizei, _: *mut GLuint) {
7030	panic!("OpenGL function pointer `glGenBuffers()` is null.")
7031}
7032
7033/// The dummy function of `IsBuffer()`
7034extern "system" fn dummy_pfnglisbufferproc (_: GLuint) -> GLboolean {
7035	panic!("OpenGL function pointer `glIsBuffer()` is null.")
7036}
7037
7038/// The dummy function of `BufferData()`
7039extern "system" fn dummy_pfnglbufferdataproc (_: GLenum, _: GLsizeiptr, _: *const c_void, _: GLenum) {
7040	panic!("OpenGL function pointer `glBufferData()` is null.")
7041}
7042
7043/// The dummy function of `BufferSubData()`
7044extern "system" fn dummy_pfnglbuffersubdataproc (_: GLenum, _: GLintptr, _: GLsizeiptr, _: *const c_void) {
7045	panic!("OpenGL function pointer `glBufferSubData()` is null.")
7046}
7047
7048/// The dummy function of `GetBufferSubData()`
7049extern "system" fn dummy_pfnglgetbuffersubdataproc (_: GLenum, _: GLintptr, _: GLsizeiptr, _: *mut c_void) {
7050	panic!("OpenGL function pointer `glGetBufferSubData()` is null.")
7051}
7052
7053/// The dummy function of `MapBuffer()`
7054extern "system" fn dummy_pfnglmapbufferproc (_: GLenum, _: GLenum) -> *mut c_void {
7055	panic!("OpenGL function pointer `glMapBuffer()` is null.")
7056}
7057
7058/// The dummy function of `UnmapBuffer()`
7059extern "system" fn dummy_pfnglunmapbufferproc (_: GLenum) -> GLboolean {
7060	panic!("OpenGL function pointer `glUnmapBuffer()` is null.")
7061}
7062
7063/// The dummy function of `GetBufferParameteriv()`
7064extern "system" fn dummy_pfnglgetbufferparameterivproc (_: GLenum, _: GLenum, _: *mut GLint) {
7065	panic!("OpenGL function pointer `glGetBufferParameteriv()` is null.")
7066}
7067
7068/// The dummy function of `GetBufferPointerv()`
7069extern "system" fn dummy_pfnglgetbufferpointervproc (_: GLenum, _: GLenum, _: *mut *mut c_void) {
7070	panic!("OpenGL function pointer `glGetBufferPointerv()` is null.")
7071}
7072/// Constant value defined from OpenGL 1.5
7073pub const GL_BUFFER_SIZE: GLenum = 0x8764;
7074
7075/// Constant value defined from OpenGL 1.5
7076pub const GL_BUFFER_USAGE: GLenum = 0x8765;
7077
7078/// Constant value defined from OpenGL 1.5
7079pub const GL_QUERY_COUNTER_BITS: GLenum = 0x8864;
7080
7081/// Constant value defined from OpenGL 1.5
7082pub const GL_CURRENT_QUERY: GLenum = 0x8865;
7083
7084/// Constant value defined from OpenGL 1.5
7085pub const GL_QUERY_RESULT: GLenum = 0x8866;
7086
7087/// Constant value defined from OpenGL 1.5
7088pub const GL_QUERY_RESULT_AVAILABLE: GLenum = 0x8867;
7089
7090/// Constant value defined from OpenGL 1.5
7091pub const GL_ARRAY_BUFFER: GLenum = 0x8892;
7092
7093/// Constant value defined from OpenGL 1.5
7094pub const GL_ELEMENT_ARRAY_BUFFER: GLenum = 0x8893;
7095
7096/// Constant value defined from OpenGL 1.5
7097pub const GL_ARRAY_BUFFER_BINDING: GLenum = 0x8894;
7098
7099/// Constant value defined from OpenGL 1.5
7100pub const GL_ELEMENT_ARRAY_BUFFER_BINDING: GLenum = 0x8895;
7101
7102/// Constant value defined from OpenGL 1.5
7103pub const GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: GLenum = 0x889F;
7104
7105/// Constant value defined from OpenGL 1.5
7106pub const GL_READ_ONLY: GLenum = 0x88B8;
7107
7108/// Constant value defined from OpenGL 1.5
7109pub const GL_WRITE_ONLY: GLenum = 0x88B9;
7110
7111/// Constant value defined from OpenGL 1.5
7112pub const GL_READ_WRITE: GLenum = 0x88BA;
7113
7114/// Constant value defined from OpenGL 1.5
7115pub const GL_BUFFER_ACCESS: GLenum = 0x88BB;
7116
7117/// Constant value defined from OpenGL 1.5
7118pub const GL_BUFFER_MAPPED: GLenum = 0x88BC;
7119
7120/// Constant value defined from OpenGL 1.5
7121pub const GL_BUFFER_MAP_POINTER: GLenum = 0x88BD;
7122
7123/// Constant value defined from OpenGL 1.5
7124pub const GL_STREAM_DRAW: GLenum = 0x88E0;
7125
7126/// Constant value defined from OpenGL 1.5
7127pub const GL_STREAM_READ: GLenum = 0x88E1;
7128
7129/// Constant value defined from OpenGL 1.5
7130pub const GL_STREAM_COPY: GLenum = 0x88E2;
7131
7132/// Constant value defined from OpenGL 1.5
7133pub const GL_STATIC_DRAW: GLenum = 0x88E4;
7134
7135/// Constant value defined from OpenGL 1.5
7136pub const GL_STATIC_READ: GLenum = 0x88E5;
7137
7138/// Constant value defined from OpenGL 1.5
7139pub const GL_STATIC_COPY: GLenum = 0x88E6;
7140
7141/// Constant value defined from OpenGL 1.5
7142pub const GL_DYNAMIC_DRAW: GLenum = 0x88E8;
7143
7144/// Constant value defined from OpenGL 1.5
7145pub const GL_DYNAMIC_READ: GLenum = 0x88E9;
7146
7147/// Constant value defined from OpenGL 1.5
7148pub const GL_DYNAMIC_COPY: GLenum = 0x88EA;
7149
7150/// Constant value defined from OpenGL 1.5
7151pub const GL_SAMPLES_PASSED: GLenum = 0x8914;
7152
7153/// Constant value defined from OpenGL 1.5
7154pub const GL_SRC1_ALPHA: GLenum = 0x8589;
7155
7156/// Constant value defined from OpenGL 1.5
7157pub const GL_VERTEX_ARRAY_BUFFER_BINDING: GLenum = 0x8896;
7158
7159/// Constant value defined from OpenGL 1.5
7160pub const GL_NORMAL_ARRAY_BUFFER_BINDING: GLenum = 0x8897;
7161
7162/// Constant value defined from OpenGL 1.5
7163pub const GL_COLOR_ARRAY_BUFFER_BINDING: GLenum = 0x8898;
7164
7165/// Constant value defined from OpenGL 1.5
7166pub const GL_INDEX_ARRAY_BUFFER_BINDING: GLenum = 0x8899;
7167
7168/// Constant value defined from OpenGL 1.5
7169pub const GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING: GLenum = 0x889A;
7170
7171/// Constant value defined from OpenGL 1.5
7172pub const GL_EDGE_FLAG_ARRAY_BUFFER_BINDING: GLenum = 0x889B;
7173
7174/// Constant value defined from OpenGL 1.5
7175pub const GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING: GLenum = 0x889C;
7176
7177/// Constant value defined from OpenGL 1.5
7178pub const GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING: GLenum = 0x889D;
7179
7180/// Constant value defined from OpenGL 1.5
7181pub const GL_WEIGHT_ARRAY_BUFFER_BINDING: GLenum = 0x889E;
7182
7183/// Constant value defined from OpenGL 1.5
7184pub const GL_FOG_COORD_SRC: GLenum = 0x8450;
7185
7186/// Constant value defined from OpenGL 1.5
7187pub const GL_FOG_COORD: GLenum = 0x8451;
7188
7189/// Constant value defined from OpenGL 1.5
7190pub const GL_CURRENT_FOG_COORD: GLenum = 0x8453;
7191
7192/// Constant value defined from OpenGL 1.5
7193pub const GL_FOG_COORD_ARRAY_TYPE: GLenum = 0x8454;
7194
7195/// Constant value defined from OpenGL 1.5
7196pub const GL_FOG_COORD_ARRAY_STRIDE: GLenum = 0x8455;
7197
7198/// Constant value defined from OpenGL 1.5
7199pub const GL_FOG_COORD_ARRAY_POINTER: GLenum = 0x8456;
7200
7201/// Constant value defined from OpenGL 1.5
7202pub const GL_FOG_COORD_ARRAY: GLenum = 0x8457;
7203
7204/// Constant value defined from OpenGL 1.5
7205pub const GL_FOG_COORD_ARRAY_BUFFER_BINDING: GLenum = 0x889D;
7206
7207/// Constant value defined from OpenGL 1.5
7208pub const GL_SRC0_RGB: GLenum = 0x8580;
7209
7210/// Constant value defined from OpenGL 1.5
7211pub const GL_SRC1_RGB: GLenum = 0x8581;
7212
7213/// Constant value defined from OpenGL 1.5
7214pub const GL_SRC2_RGB: GLenum = 0x8582;
7215
7216/// Constant value defined from OpenGL 1.5
7217pub const GL_SRC0_ALPHA: GLenum = 0x8588;
7218
7219/// Constant value defined from OpenGL 1.5
7220pub const GL_SRC2_ALPHA: GLenum = 0x858A;
7221
7222/// Functions from OpenGL version 1.5
7223pub trait GL_1_5 {
7224	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
7225	fn glGetError(&self) -> GLenum;
7226
7227	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenQueries.xhtml>
7228	fn glGenQueries(&self, n: GLsizei, ids: *mut GLuint) -> Result<()>;
7229
7230	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteQueries.xhtml>
7231	fn glDeleteQueries(&self, n: GLsizei, ids: *const GLuint) -> Result<()>;
7232
7233	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsQuery.xhtml>
7234	fn glIsQuery(&self, id: GLuint) -> Result<GLboolean>;
7235
7236	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBeginQuery.xhtml>
7237	fn glBeginQuery(&self, target: GLenum, id: GLuint) -> Result<()>;
7238
7239	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEndQuery.xhtml>
7240	fn glEndQuery(&self, target: GLenum) -> Result<()>;
7241
7242	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryiv.xhtml>
7243	fn glGetQueryiv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
7244
7245	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryObjectiv.xhtml>
7246	fn glGetQueryObjectiv(&self, id: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
7247
7248	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryObjectuiv.xhtml>
7249	fn glGetQueryObjectuiv(&self, id: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()>;
7250
7251	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindBuffer.xhtml>
7252	fn glBindBuffer(&self, target: GLenum, buffer: GLuint) -> Result<()>;
7253
7254	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteBuffers.xhtml>
7255	fn glDeleteBuffers(&self, n: GLsizei, buffers: *const GLuint) -> Result<()>;
7256
7257	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenBuffers.xhtml>
7258	fn glGenBuffers(&self, n: GLsizei, buffers: *mut GLuint) -> Result<()>;
7259
7260	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsBuffer.xhtml>
7261	fn glIsBuffer(&self, buffer: GLuint) -> Result<GLboolean>;
7262
7263	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBufferData.xhtml>
7264	fn glBufferData(&self, target: GLenum, size: GLsizeiptr, data: *const c_void, usage: GLenum) -> Result<()>;
7265
7266	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBufferSubData.xhtml>
7267	fn glBufferSubData(&self, target: GLenum, offset: GLintptr, size: GLsizeiptr, data: *const c_void) -> Result<()>;
7268
7269	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBufferSubData.xhtml>
7270	fn glGetBufferSubData(&self, target: GLenum, offset: GLintptr, size: GLsizeiptr, data: *mut c_void) -> Result<()>;
7271
7272	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMapBuffer.xhtml>
7273	fn glMapBuffer(&self, target: GLenum, access: GLenum) -> Result<*mut c_void>;
7274
7275	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUnmapBuffer.xhtml>
7276	fn glUnmapBuffer(&self, target: GLenum) -> Result<GLboolean>;
7277
7278	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBufferParameteriv.xhtml>
7279	fn glGetBufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
7280
7281	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBufferPointerv.xhtml>
7282	fn glGetBufferPointerv(&self, target: GLenum, pname: GLenum, params: *mut *mut c_void) -> Result<()>;
7283}
7284/// Functions from OpenGL version 1.5
7285#[derive(Clone, Copy, PartialEq, Eq, Hash)]
7286pub struct Version15 {
7287	/// Is OpenGL version 1.5 available
7288	available: bool,
7289
7290	/// The function pointer to `glGetError()`
7291	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
7292	pub geterror: PFNGLGETERRORPROC,
7293
7294	/// The function pointer to `glGenQueries()`
7295	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenQueries.xhtml>
7296	pub genqueries: PFNGLGENQUERIESPROC,
7297
7298	/// The function pointer to `glDeleteQueries()`
7299	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteQueries.xhtml>
7300	pub deletequeries: PFNGLDELETEQUERIESPROC,
7301
7302	/// The function pointer to `glIsQuery()`
7303	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsQuery.xhtml>
7304	pub isquery: PFNGLISQUERYPROC,
7305
7306	/// The function pointer to `glBeginQuery()`
7307	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBeginQuery.xhtml>
7308	pub beginquery: PFNGLBEGINQUERYPROC,
7309
7310	/// The function pointer to `glEndQuery()`
7311	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEndQuery.xhtml>
7312	pub endquery: PFNGLENDQUERYPROC,
7313
7314	/// The function pointer to `glGetQueryiv()`
7315	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryiv.xhtml>
7316	pub getqueryiv: PFNGLGETQUERYIVPROC,
7317
7318	/// The function pointer to `glGetQueryObjectiv()`
7319	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryObjectiv.xhtml>
7320	pub getqueryobjectiv: PFNGLGETQUERYOBJECTIVPROC,
7321
7322	/// The function pointer to `glGetQueryObjectuiv()`
7323	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryObjectuiv.xhtml>
7324	pub getqueryobjectuiv: PFNGLGETQUERYOBJECTUIVPROC,
7325
7326	/// The function pointer to `glBindBuffer()`
7327	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindBuffer.xhtml>
7328	pub bindbuffer: PFNGLBINDBUFFERPROC,
7329
7330	/// The function pointer to `glDeleteBuffers()`
7331	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteBuffers.xhtml>
7332	pub deletebuffers: PFNGLDELETEBUFFERSPROC,
7333
7334	/// The function pointer to `glGenBuffers()`
7335	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenBuffers.xhtml>
7336	pub genbuffers: PFNGLGENBUFFERSPROC,
7337
7338	/// The function pointer to `glIsBuffer()`
7339	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsBuffer.xhtml>
7340	pub isbuffer: PFNGLISBUFFERPROC,
7341
7342	/// The function pointer to `glBufferData()`
7343	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBufferData.xhtml>
7344	pub bufferdata: PFNGLBUFFERDATAPROC,
7345
7346	/// The function pointer to `glBufferSubData()`
7347	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBufferSubData.xhtml>
7348	pub buffersubdata: PFNGLBUFFERSUBDATAPROC,
7349
7350	/// The function pointer to `glGetBufferSubData()`
7351	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBufferSubData.xhtml>
7352	pub getbuffersubdata: PFNGLGETBUFFERSUBDATAPROC,
7353
7354	/// The function pointer to `glMapBuffer()`
7355	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMapBuffer.xhtml>
7356	pub mapbuffer: PFNGLMAPBUFFERPROC,
7357
7358	/// The function pointer to `glUnmapBuffer()`
7359	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUnmapBuffer.xhtml>
7360	pub unmapbuffer: PFNGLUNMAPBUFFERPROC,
7361
7362	/// The function pointer to `glGetBufferParameteriv()`
7363	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBufferParameteriv.xhtml>
7364	pub getbufferparameteriv: PFNGLGETBUFFERPARAMETERIVPROC,
7365
7366	/// The function pointer to `glGetBufferPointerv()`
7367	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBufferPointerv.xhtml>
7368	pub getbufferpointerv: PFNGLGETBUFFERPOINTERVPROC,
7369}
7370
7371impl GL_1_5 for Version15 {
7372	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
7373	#[inline(always)]
7374	fn glGetError(&self) -> GLenum {
7375		(self.geterror)()
7376	}
7377	#[inline(always)]
7378	fn glGenQueries(&self, n: GLsizei, ids: *mut GLuint) -> Result<()> {
7379		#[cfg(feature = "catch_nullptr")]
7380		let ret = process_catch("glGenQueries", catch_unwind(||(self.genqueries)(n, ids)));
7381		#[cfg(not(feature = "catch_nullptr"))]
7382		let ret = {(self.genqueries)(n, ids); Ok(())};
7383		#[cfg(feature = "diagnose")]
7384		if let Ok(ret) = ret {
7385			return to_result("glGenQueries", ret, self.glGetError());
7386		} else {
7387			return ret
7388		}
7389		#[cfg(not(feature = "diagnose"))]
7390		return ret;
7391	}
7392	#[inline(always)]
7393	fn glDeleteQueries(&self, n: GLsizei, ids: *const GLuint) -> Result<()> {
7394		#[cfg(feature = "catch_nullptr")]
7395		let ret = process_catch("glDeleteQueries", catch_unwind(||(self.deletequeries)(n, ids)));
7396		#[cfg(not(feature = "catch_nullptr"))]
7397		let ret = {(self.deletequeries)(n, ids); Ok(())};
7398		#[cfg(feature = "diagnose")]
7399		if let Ok(ret) = ret {
7400			return to_result("glDeleteQueries", ret, self.glGetError());
7401		} else {
7402			return ret
7403		}
7404		#[cfg(not(feature = "diagnose"))]
7405		return ret;
7406	}
7407	#[inline(always)]
7408	fn glIsQuery(&self, id: GLuint) -> Result<GLboolean> {
7409		#[cfg(feature = "catch_nullptr")]
7410		let ret = process_catch("glIsQuery", catch_unwind(||(self.isquery)(id)));
7411		#[cfg(not(feature = "catch_nullptr"))]
7412		let ret = Ok((self.isquery)(id));
7413		#[cfg(feature = "diagnose")]
7414		if let Ok(ret) = ret {
7415			return to_result("glIsQuery", ret, self.glGetError());
7416		} else {
7417			return ret
7418		}
7419		#[cfg(not(feature = "diagnose"))]
7420		return ret;
7421	}
7422	#[inline(always)]
7423	fn glBeginQuery(&self, target: GLenum, id: GLuint) -> Result<()> {
7424		#[cfg(feature = "catch_nullptr")]
7425		let ret = process_catch("glBeginQuery", catch_unwind(||(self.beginquery)(target, id)));
7426		#[cfg(not(feature = "catch_nullptr"))]
7427		let ret = {(self.beginquery)(target, id); Ok(())};
7428		#[cfg(feature = "diagnose")]
7429		if let Ok(ret) = ret {
7430			return to_result("glBeginQuery", ret, self.glGetError());
7431		} else {
7432			return ret
7433		}
7434		#[cfg(not(feature = "diagnose"))]
7435		return ret;
7436	}
7437	#[inline(always)]
7438	fn glEndQuery(&self, target: GLenum) -> Result<()> {
7439		#[cfg(feature = "catch_nullptr")]
7440		let ret = process_catch("glEndQuery", catch_unwind(||(self.endquery)(target)));
7441		#[cfg(not(feature = "catch_nullptr"))]
7442		let ret = {(self.endquery)(target); Ok(())};
7443		#[cfg(feature = "diagnose")]
7444		if let Ok(ret) = ret {
7445			return to_result("glEndQuery", ret, self.glGetError());
7446		} else {
7447			return ret
7448		}
7449		#[cfg(not(feature = "diagnose"))]
7450		return ret;
7451	}
7452	#[inline(always)]
7453	fn glGetQueryiv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
7454		#[cfg(feature = "catch_nullptr")]
7455		let ret = process_catch("glGetQueryiv", catch_unwind(||(self.getqueryiv)(target, pname, params)));
7456		#[cfg(not(feature = "catch_nullptr"))]
7457		let ret = {(self.getqueryiv)(target, pname, params); Ok(())};
7458		#[cfg(feature = "diagnose")]
7459		if let Ok(ret) = ret {
7460			return to_result("glGetQueryiv", ret, self.glGetError());
7461		} else {
7462			return ret
7463		}
7464		#[cfg(not(feature = "diagnose"))]
7465		return ret;
7466	}
7467	#[inline(always)]
7468	fn glGetQueryObjectiv(&self, id: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
7469		#[cfg(feature = "catch_nullptr")]
7470		let ret = process_catch("glGetQueryObjectiv", catch_unwind(||(self.getqueryobjectiv)(id, pname, params)));
7471		#[cfg(not(feature = "catch_nullptr"))]
7472		let ret = {(self.getqueryobjectiv)(id, pname, params); Ok(())};
7473		#[cfg(feature = "diagnose")]
7474		if let Ok(ret) = ret {
7475			return to_result("glGetQueryObjectiv", ret, self.glGetError());
7476		} else {
7477			return ret
7478		}
7479		#[cfg(not(feature = "diagnose"))]
7480		return ret;
7481	}
7482	#[inline(always)]
7483	fn glGetQueryObjectuiv(&self, id: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()> {
7484		#[cfg(feature = "catch_nullptr")]
7485		let ret = process_catch("glGetQueryObjectuiv", catch_unwind(||(self.getqueryobjectuiv)(id, pname, params)));
7486		#[cfg(not(feature = "catch_nullptr"))]
7487		let ret = {(self.getqueryobjectuiv)(id, pname, params); Ok(())};
7488		#[cfg(feature = "diagnose")]
7489		if let Ok(ret) = ret {
7490			return to_result("glGetQueryObjectuiv", ret, self.glGetError());
7491		} else {
7492			return ret
7493		}
7494		#[cfg(not(feature = "diagnose"))]
7495		return ret;
7496	}
7497	#[inline(always)]
7498	fn glBindBuffer(&self, target: GLenum, buffer: GLuint) -> Result<()> {
7499		#[cfg(feature = "catch_nullptr")]
7500		let ret = process_catch("glBindBuffer", catch_unwind(||(self.bindbuffer)(target, buffer)));
7501		#[cfg(not(feature = "catch_nullptr"))]
7502		let ret = {(self.bindbuffer)(target, buffer); Ok(())};
7503		#[cfg(feature = "diagnose")]
7504		if let Ok(ret) = ret {
7505			return to_result("glBindBuffer", ret, self.glGetError());
7506		} else {
7507			return ret
7508		}
7509		#[cfg(not(feature = "diagnose"))]
7510		return ret;
7511	}
7512	#[inline(always)]
7513	fn glDeleteBuffers(&self, n: GLsizei, buffers: *const GLuint) -> Result<()> {
7514		#[cfg(feature = "catch_nullptr")]
7515		let ret = process_catch("glDeleteBuffers", catch_unwind(||(self.deletebuffers)(n, buffers)));
7516		#[cfg(not(feature = "catch_nullptr"))]
7517		let ret = {(self.deletebuffers)(n, buffers); Ok(())};
7518		#[cfg(feature = "diagnose")]
7519		if let Ok(ret) = ret {
7520			return to_result("glDeleteBuffers", ret, self.glGetError());
7521		} else {
7522			return ret
7523		}
7524		#[cfg(not(feature = "diagnose"))]
7525		return ret;
7526	}
7527	#[inline(always)]
7528	fn glGenBuffers(&self, n: GLsizei, buffers: *mut GLuint) -> Result<()> {
7529		#[cfg(feature = "catch_nullptr")]
7530		let ret = process_catch("glGenBuffers", catch_unwind(||(self.genbuffers)(n, buffers)));
7531		#[cfg(not(feature = "catch_nullptr"))]
7532		let ret = {(self.genbuffers)(n, buffers); Ok(())};
7533		#[cfg(feature = "diagnose")]
7534		if let Ok(ret) = ret {
7535			return to_result("glGenBuffers", ret, self.glGetError());
7536		} else {
7537			return ret
7538		}
7539		#[cfg(not(feature = "diagnose"))]
7540		return ret;
7541	}
7542	#[inline(always)]
7543	fn glIsBuffer(&self, buffer: GLuint) -> Result<GLboolean> {
7544		#[cfg(feature = "catch_nullptr")]
7545		let ret = process_catch("glIsBuffer", catch_unwind(||(self.isbuffer)(buffer)));
7546		#[cfg(not(feature = "catch_nullptr"))]
7547		let ret = Ok((self.isbuffer)(buffer));
7548		#[cfg(feature = "diagnose")]
7549		if let Ok(ret) = ret {
7550			return to_result("glIsBuffer", ret, self.glGetError());
7551		} else {
7552			return ret
7553		}
7554		#[cfg(not(feature = "diagnose"))]
7555		return ret;
7556	}
7557	#[inline(always)]
7558	fn glBufferData(&self, target: GLenum, size: GLsizeiptr, data: *const c_void, usage: GLenum) -> Result<()> {
7559		#[cfg(feature = "catch_nullptr")]
7560		let ret = process_catch("glBufferData", catch_unwind(||(self.bufferdata)(target, size, data, usage)));
7561		#[cfg(not(feature = "catch_nullptr"))]
7562		let ret = {(self.bufferdata)(target, size, data, usage); Ok(())};
7563		#[cfg(feature = "diagnose")]
7564		if let Ok(ret) = ret {
7565			return to_result("glBufferData", ret, self.glGetError());
7566		} else {
7567			return ret
7568		}
7569		#[cfg(not(feature = "diagnose"))]
7570		return ret;
7571	}
7572	#[inline(always)]
7573	fn glBufferSubData(&self, target: GLenum, offset: GLintptr, size: GLsizeiptr, data: *const c_void) -> Result<()> {
7574		#[cfg(feature = "catch_nullptr")]
7575		let ret = process_catch("glBufferSubData", catch_unwind(||(self.buffersubdata)(target, offset, size, data)));
7576		#[cfg(not(feature = "catch_nullptr"))]
7577		let ret = {(self.buffersubdata)(target, offset, size, data); Ok(())};
7578		#[cfg(feature = "diagnose")]
7579		if let Ok(ret) = ret {
7580			return to_result("glBufferSubData", ret, self.glGetError());
7581		} else {
7582			return ret
7583		}
7584		#[cfg(not(feature = "diagnose"))]
7585		return ret;
7586	}
7587	#[inline(always)]
7588	fn glGetBufferSubData(&self, target: GLenum, offset: GLintptr, size: GLsizeiptr, data: *mut c_void) -> Result<()> {
7589		#[cfg(feature = "catch_nullptr")]
7590		let ret = process_catch("glGetBufferSubData", catch_unwind(||(self.getbuffersubdata)(target, offset, size, data)));
7591		#[cfg(not(feature = "catch_nullptr"))]
7592		let ret = {(self.getbuffersubdata)(target, offset, size, data); Ok(())};
7593		#[cfg(feature = "diagnose")]
7594		if let Ok(ret) = ret {
7595			return to_result("glGetBufferSubData", ret, self.glGetError());
7596		} else {
7597			return ret
7598		}
7599		#[cfg(not(feature = "diagnose"))]
7600		return ret;
7601	}
7602	#[inline(always)]
7603	fn glMapBuffer(&self, target: GLenum, access: GLenum) -> Result<*mut c_void> {
7604		#[cfg(feature = "catch_nullptr")]
7605		let ret = process_catch("glMapBuffer", catch_unwind(||(self.mapbuffer)(target, access)));
7606		#[cfg(not(feature = "catch_nullptr"))]
7607		let ret = Ok((self.mapbuffer)(target, access));
7608		#[cfg(feature = "diagnose")]
7609		if let Ok(ret) = ret {
7610			return to_result("glMapBuffer", ret, self.glGetError());
7611		} else {
7612			return ret
7613		}
7614		#[cfg(not(feature = "diagnose"))]
7615		return ret;
7616	}
7617	#[inline(always)]
7618	fn glUnmapBuffer(&self, target: GLenum) -> Result<GLboolean> {
7619		#[cfg(feature = "catch_nullptr")]
7620		let ret = process_catch("glUnmapBuffer", catch_unwind(||(self.unmapbuffer)(target)));
7621		#[cfg(not(feature = "catch_nullptr"))]
7622		let ret = Ok((self.unmapbuffer)(target));
7623		#[cfg(feature = "diagnose")]
7624		if let Ok(ret) = ret {
7625			return to_result("glUnmapBuffer", ret, self.glGetError());
7626		} else {
7627			return ret
7628		}
7629		#[cfg(not(feature = "diagnose"))]
7630		return ret;
7631	}
7632	#[inline(always)]
7633	fn glGetBufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
7634		#[cfg(feature = "catch_nullptr")]
7635		let ret = process_catch("glGetBufferParameteriv", catch_unwind(||(self.getbufferparameteriv)(target, pname, params)));
7636		#[cfg(not(feature = "catch_nullptr"))]
7637		let ret = {(self.getbufferparameteriv)(target, pname, params); Ok(())};
7638		#[cfg(feature = "diagnose")]
7639		if let Ok(ret) = ret {
7640			return to_result("glGetBufferParameteriv", ret, self.glGetError());
7641		} else {
7642			return ret
7643		}
7644		#[cfg(not(feature = "diagnose"))]
7645		return ret;
7646	}
7647	#[inline(always)]
7648	fn glGetBufferPointerv(&self, target: GLenum, pname: GLenum, params: *mut *mut c_void) -> Result<()> {
7649		#[cfg(feature = "catch_nullptr")]
7650		let ret = process_catch("glGetBufferPointerv", catch_unwind(||(self.getbufferpointerv)(target, pname, params)));
7651		#[cfg(not(feature = "catch_nullptr"))]
7652		let ret = {(self.getbufferpointerv)(target, pname, params); Ok(())};
7653		#[cfg(feature = "diagnose")]
7654		if let Ok(ret) = ret {
7655			return to_result("glGetBufferPointerv", ret, self.glGetError());
7656		} else {
7657			return ret
7658		}
7659		#[cfg(not(feature = "diagnose"))]
7660		return ret;
7661	}
7662}
7663
7664impl Version15 {
7665	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
7666		let (_spec, major, minor, release) = base.get_version();
7667		if (major, minor, release) < (1, 5, 0) {
7668			return Self::default();
7669		}
7670		Self {
7671			available: true,
7672			geterror: {let proc = get_proc_address("glGetError"); if proc.is_null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
7673			genqueries: {let proc = get_proc_address("glGenQueries"); if proc.is_null() {dummy_pfnglgenqueriesproc} else {unsafe{transmute(proc)}}},
7674			deletequeries: {let proc = get_proc_address("glDeleteQueries"); if proc.is_null() {dummy_pfngldeletequeriesproc} else {unsafe{transmute(proc)}}},
7675			isquery: {let proc = get_proc_address("glIsQuery"); if proc.is_null() {dummy_pfnglisqueryproc} else {unsafe{transmute(proc)}}},
7676			beginquery: {let proc = get_proc_address("glBeginQuery"); if proc.is_null() {dummy_pfnglbeginqueryproc} else {unsafe{transmute(proc)}}},
7677			endquery: {let proc = get_proc_address("glEndQuery"); if proc.is_null() {dummy_pfnglendqueryproc} else {unsafe{transmute(proc)}}},
7678			getqueryiv: {let proc = get_proc_address("glGetQueryiv"); if proc.is_null() {dummy_pfnglgetqueryivproc} else {unsafe{transmute(proc)}}},
7679			getqueryobjectiv: {let proc = get_proc_address("glGetQueryObjectiv"); if proc.is_null() {dummy_pfnglgetqueryobjectivproc} else {unsafe{transmute(proc)}}},
7680			getqueryobjectuiv: {let proc = get_proc_address("glGetQueryObjectuiv"); if proc.is_null() {dummy_pfnglgetqueryobjectuivproc} else {unsafe{transmute(proc)}}},
7681			bindbuffer: {let proc = get_proc_address("glBindBuffer"); if proc.is_null() {dummy_pfnglbindbufferproc} else {unsafe{transmute(proc)}}},
7682			deletebuffers: {let proc = get_proc_address("glDeleteBuffers"); if proc.is_null() {dummy_pfngldeletebuffersproc} else {unsafe{transmute(proc)}}},
7683			genbuffers: {let proc = get_proc_address("glGenBuffers"); if proc.is_null() {dummy_pfnglgenbuffersproc} else {unsafe{transmute(proc)}}},
7684			isbuffer: {let proc = get_proc_address("glIsBuffer"); if proc.is_null() {dummy_pfnglisbufferproc} else {unsafe{transmute(proc)}}},
7685			bufferdata: {let proc = get_proc_address("glBufferData"); if proc.is_null() {dummy_pfnglbufferdataproc} else {unsafe{transmute(proc)}}},
7686			buffersubdata: {let proc = get_proc_address("glBufferSubData"); if proc.is_null() {dummy_pfnglbuffersubdataproc} else {unsafe{transmute(proc)}}},
7687			getbuffersubdata: {let proc = get_proc_address("glGetBufferSubData"); if proc.is_null() {dummy_pfnglgetbuffersubdataproc} else {unsafe{transmute(proc)}}},
7688			mapbuffer: {let proc = get_proc_address("glMapBuffer"); if proc.is_null() {dummy_pfnglmapbufferproc} else {unsafe{transmute(proc)}}},
7689			unmapbuffer: {let proc = get_proc_address("glUnmapBuffer"); if proc.is_null() {dummy_pfnglunmapbufferproc} else {unsafe{transmute(proc)}}},
7690			getbufferparameteriv: {let proc = get_proc_address("glGetBufferParameteriv"); if proc.is_null() {dummy_pfnglgetbufferparameterivproc} else {unsafe{transmute(proc)}}},
7691			getbufferpointerv: {let proc = get_proc_address("glGetBufferPointerv"); if proc.is_null() {dummy_pfnglgetbufferpointervproc} else {unsafe{transmute(proc)}}},
7692		}
7693	}
7694	#[inline(always)]
7695	pub fn get_available(&self) -> bool {
7696		self.available
7697	}
7698}
7699
7700impl Default for Version15 {
7701	fn default() -> Self {
7702		Self {
7703			available: false,
7704			geterror: dummy_pfnglgeterrorproc,
7705			genqueries: dummy_pfnglgenqueriesproc,
7706			deletequeries: dummy_pfngldeletequeriesproc,
7707			isquery: dummy_pfnglisqueryproc,
7708			beginquery: dummy_pfnglbeginqueryproc,
7709			endquery: dummy_pfnglendqueryproc,
7710			getqueryiv: dummy_pfnglgetqueryivproc,
7711			getqueryobjectiv: dummy_pfnglgetqueryobjectivproc,
7712			getqueryobjectuiv: dummy_pfnglgetqueryobjectuivproc,
7713			bindbuffer: dummy_pfnglbindbufferproc,
7714			deletebuffers: dummy_pfngldeletebuffersproc,
7715			genbuffers: dummy_pfnglgenbuffersproc,
7716			isbuffer: dummy_pfnglisbufferproc,
7717			bufferdata: dummy_pfnglbufferdataproc,
7718			buffersubdata: dummy_pfnglbuffersubdataproc,
7719			getbuffersubdata: dummy_pfnglgetbuffersubdataproc,
7720			mapbuffer: dummy_pfnglmapbufferproc,
7721			unmapbuffer: dummy_pfnglunmapbufferproc,
7722			getbufferparameteriv: dummy_pfnglgetbufferparameterivproc,
7723			getbufferpointerv: dummy_pfnglgetbufferpointervproc,
7724		}
7725	}
7726}
7727impl Debug for Version15 {
7728	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
7729		if self.available {
7730			f.debug_struct("Version15")
7731			.field("available", &self.available)
7732			.field("genqueries", unsafe{if transmute::<_, *const c_void>(self.genqueries) == (dummy_pfnglgenqueriesproc as *const c_void) {&null::<PFNGLGENQUERIESPROC>()} else {&self.genqueries}})
7733			.field("deletequeries", unsafe{if transmute::<_, *const c_void>(self.deletequeries) == (dummy_pfngldeletequeriesproc as *const c_void) {&null::<PFNGLDELETEQUERIESPROC>()} else {&self.deletequeries}})
7734			.field("isquery", unsafe{if transmute::<_, *const c_void>(self.isquery) == (dummy_pfnglisqueryproc as *const c_void) {&null::<PFNGLISQUERYPROC>()} else {&self.isquery}})
7735			.field("beginquery", unsafe{if transmute::<_, *const c_void>(self.beginquery) == (dummy_pfnglbeginqueryproc as *const c_void) {&null::<PFNGLBEGINQUERYPROC>()} else {&self.beginquery}})
7736			.field("endquery", unsafe{if transmute::<_, *const c_void>(self.endquery) == (dummy_pfnglendqueryproc as *const c_void) {&null::<PFNGLENDQUERYPROC>()} else {&self.endquery}})
7737			.field("getqueryiv", unsafe{if transmute::<_, *const c_void>(self.getqueryiv) == (dummy_pfnglgetqueryivproc as *const c_void) {&null::<PFNGLGETQUERYIVPROC>()} else {&self.getqueryiv}})
7738			.field("getqueryobjectiv", unsafe{if transmute::<_, *const c_void>(self.getqueryobjectiv) == (dummy_pfnglgetqueryobjectivproc as *const c_void) {&null::<PFNGLGETQUERYOBJECTIVPROC>()} else {&self.getqueryobjectiv}})
7739			.field("getqueryobjectuiv", unsafe{if transmute::<_, *const c_void>(self.getqueryobjectuiv) == (dummy_pfnglgetqueryobjectuivproc as *const c_void) {&null::<PFNGLGETQUERYOBJECTUIVPROC>()} else {&self.getqueryobjectuiv}})
7740			.field("bindbuffer", unsafe{if transmute::<_, *const c_void>(self.bindbuffer) == (dummy_pfnglbindbufferproc as *const c_void) {&null::<PFNGLBINDBUFFERPROC>()} else {&self.bindbuffer}})
7741			.field("deletebuffers", unsafe{if transmute::<_, *const c_void>(self.deletebuffers) == (dummy_pfngldeletebuffersproc as *const c_void) {&null::<PFNGLDELETEBUFFERSPROC>()} else {&self.deletebuffers}})
7742			.field("genbuffers", unsafe{if transmute::<_, *const c_void>(self.genbuffers) == (dummy_pfnglgenbuffersproc as *const c_void) {&null::<PFNGLGENBUFFERSPROC>()} else {&self.genbuffers}})
7743			.field("isbuffer", unsafe{if transmute::<_, *const c_void>(self.isbuffer) == (dummy_pfnglisbufferproc as *const c_void) {&null::<PFNGLISBUFFERPROC>()} else {&self.isbuffer}})
7744			.field("bufferdata", unsafe{if transmute::<_, *const c_void>(self.bufferdata) == (dummy_pfnglbufferdataproc as *const c_void) {&null::<PFNGLBUFFERDATAPROC>()} else {&self.bufferdata}})
7745			.field("buffersubdata", unsafe{if transmute::<_, *const c_void>(self.buffersubdata) == (dummy_pfnglbuffersubdataproc as *const c_void) {&null::<PFNGLBUFFERSUBDATAPROC>()} else {&self.buffersubdata}})
7746			.field("getbuffersubdata", unsafe{if transmute::<_, *const c_void>(self.getbuffersubdata) == (dummy_pfnglgetbuffersubdataproc as *const c_void) {&null::<PFNGLGETBUFFERSUBDATAPROC>()} else {&self.getbuffersubdata}})
7747			.field("mapbuffer", unsafe{if transmute::<_, *const c_void>(self.mapbuffer) == (dummy_pfnglmapbufferproc as *const c_void) {&null::<PFNGLMAPBUFFERPROC>()} else {&self.mapbuffer}})
7748			.field("unmapbuffer", unsafe{if transmute::<_, *const c_void>(self.unmapbuffer) == (dummy_pfnglunmapbufferproc as *const c_void) {&null::<PFNGLUNMAPBUFFERPROC>()} else {&self.unmapbuffer}})
7749			.field("getbufferparameteriv", unsafe{if transmute::<_, *const c_void>(self.getbufferparameteriv) == (dummy_pfnglgetbufferparameterivproc as *const c_void) {&null::<PFNGLGETBUFFERPARAMETERIVPROC>()} else {&self.getbufferparameteriv}})
7750			.field("getbufferpointerv", unsafe{if transmute::<_, *const c_void>(self.getbufferpointerv) == (dummy_pfnglgetbufferpointervproc as *const c_void) {&null::<PFNGLGETBUFFERPOINTERVPROC>()} else {&self.getbufferpointerv}})
7751			.finish()
7752		} else {
7753			f.debug_struct("Version15")
7754			.field("available", &self.available)
7755			.finish_non_exhaustive()
7756		}
7757	}
7758}
7759
7760/// Alias to `i8`
7761pub type GLchar = i8;
7762
7763/// The prototype to the OpenGL function `BlendEquationSeparate`
7764type PFNGLBLENDEQUATIONSEPARATEPROC = extern "system" fn(GLenum, GLenum);
7765
7766/// The prototype to the OpenGL function `DrawBuffers`
7767type PFNGLDRAWBUFFERSPROC = extern "system" fn(GLsizei, *const GLenum);
7768
7769/// The prototype to the OpenGL function `StencilOpSeparate`
7770type PFNGLSTENCILOPSEPARATEPROC = extern "system" fn(GLenum, GLenum, GLenum, GLenum);
7771
7772/// The prototype to the OpenGL function `StencilFuncSeparate`
7773type PFNGLSTENCILFUNCSEPARATEPROC = extern "system" fn(GLenum, GLenum, GLint, GLuint);
7774
7775/// The prototype to the OpenGL function `StencilMaskSeparate`
7776type PFNGLSTENCILMASKSEPARATEPROC = extern "system" fn(GLenum, GLuint);
7777
7778/// The prototype to the OpenGL function `AttachShader`
7779type PFNGLATTACHSHADERPROC = extern "system" fn(GLuint, GLuint);
7780
7781/// The prototype to the OpenGL function `BindAttribLocation`
7782type PFNGLBINDATTRIBLOCATIONPROC = extern "system" fn(GLuint, GLuint, *const GLchar);
7783
7784/// The prototype to the OpenGL function `CompileShader`
7785type PFNGLCOMPILESHADERPROC = extern "system" fn(GLuint);
7786
7787/// The prototype to the OpenGL function `CreateProgram`
7788type PFNGLCREATEPROGRAMPROC = extern "system" fn() -> GLuint;
7789
7790/// The prototype to the OpenGL function `CreateShader`
7791type PFNGLCREATESHADERPROC = extern "system" fn(GLenum) -> GLuint;
7792
7793/// The prototype to the OpenGL function `DeleteProgram`
7794type PFNGLDELETEPROGRAMPROC = extern "system" fn(GLuint);
7795
7796/// The prototype to the OpenGL function `DeleteShader`
7797type PFNGLDELETESHADERPROC = extern "system" fn(GLuint);
7798
7799/// The prototype to the OpenGL function `DetachShader`
7800type PFNGLDETACHSHADERPROC = extern "system" fn(GLuint, GLuint);
7801
7802/// The prototype to the OpenGL function `DisableVertexAttribArray`
7803type PFNGLDISABLEVERTEXATTRIBARRAYPROC = extern "system" fn(GLuint);
7804
7805/// The prototype to the OpenGL function `EnableVertexAttribArray`
7806type PFNGLENABLEVERTEXATTRIBARRAYPROC = extern "system" fn(GLuint);
7807
7808/// The prototype to the OpenGL function `GetActiveAttrib`
7809type PFNGLGETACTIVEATTRIBPROC = extern "system" fn(GLuint, GLuint, GLsizei, *mut GLsizei, *mut GLint, *mut GLenum, *mut GLchar);
7810
7811/// The prototype to the OpenGL function `GetActiveUniform`
7812type PFNGLGETACTIVEUNIFORMPROC = extern "system" fn(GLuint, GLuint, GLsizei, *mut GLsizei, *mut GLint, *mut GLenum, *mut GLchar);
7813
7814/// The prototype to the OpenGL function `GetAttachedShaders`
7815type PFNGLGETATTACHEDSHADERSPROC = extern "system" fn(GLuint, GLsizei, *mut GLsizei, *mut GLuint);
7816
7817/// The prototype to the OpenGL function `GetAttribLocation`
7818type PFNGLGETATTRIBLOCATIONPROC = extern "system" fn(GLuint, *const GLchar) -> GLint;
7819
7820/// The prototype to the OpenGL function `GetProgramiv`
7821type PFNGLGETPROGRAMIVPROC = extern "system" fn(GLuint, GLenum, *mut GLint);
7822
7823/// The prototype to the OpenGL function `GetProgramInfoLog`
7824type PFNGLGETPROGRAMINFOLOGPROC = extern "system" fn(GLuint, GLsizei, *mut GLsizei, *mut GLchar);
7825
7826/// The prototype to the OpenGL function `GetShaderiv`
7827type PFNGLGETSHADERIVPROC = extern "system" fn(GLuint, GLenum, *mut GLint);
7828
7829/// The prototype to the OpenGL function `GetShaderInfoLog`
7830type PFNGLGETSHADERINFOLOGPROC = extern "system" fn(GLuint, GLsizei, *mut GLsizei, *mut GLchar);
7831
7832/// The prototype to the OpenGL function `GetShaderSource`
7833type PFNGLGETSHADERSOURCEPROC = extern "system" fn(GLuint, GLsizei, *mut GLsizei, *mut GLchar);
7834
7835/// The prototype to the OpenGL function `GetUniformLocation`
7836type PFNGLGETUNIFORMLOCATIONPROC = extern "system" fn(GLuint, *const GLchar) -> GLint;
7837
7838/// The prototype to the OpenGL function `GetUniformfv`
7839type PFNGLGETUNIFORMFVPROC = extern "system" fn(GLuint, GLint, *mut GLfloat);
7840
7841/// The prototype to the OpenGL function `GetUniformiv`
7842type PFNGLGETUNIFORMIVPROC = extern "system" fn(GLuint, GLint, *mut GLint);
7843
7844/// The prototype to the OpenGL function `GetVertexAttribdv`
7845type PFNGLGETVERTEXATTRIBDVPROC = extern "system" fn(GLuint, GLenum, *mut GLdouble);
7846
7847/// The prototype to the OpenGL function `GetVertexAttribfv`
7848type PFNGLGETVERTEXATTRIBFVPROC = extern "system" fn(GLuint, GLenum, *mut GLfloat);
7849
7850/// The prototype to the OpenGL function `GetVertexAttribiv`
7851type PFNGLGETVERTEXATTRIBIVPROC = extern "system" fn(GLuint, GLenum, *mut GLint);
7852
7853/// The prototype to the OpenGL function `GetVertexAttribPointerv`
7854type PFNGLGETVERTEXATTRIBPOINTERVPROC = extern "system" fn(GLuint, GLenum, *mut *mut c_void);
7855
7856/// The prototype to the OpenGL function `IsProgram`
7857type PFNGLISPROGRAMPROC = extern "system" fn(GLuint) -> GLboolean;
7858
7859/// The prototype to the OpenGL function `IsShader`
7860type PFNGLISSHADERPROC = extern "system" fn(GLuint) -> GLboolean;
7861
7862/// The prototype to the OpenGL function `LinkProgram`
7863type PFNGLLINKPROGRAMPROC = extern "system" fn(GLuint);
7864
7865/// The prototype to the OpenGL function `ShaderSource`
7866type PFNGLSHADERSOURCEPROC = extern "system" fn(GLuint, GLsizei, *const *const GLchar, *const GLint);
7867
7868/// The prototype to the OpenGL function `UseProgram`
7869type PFNGLUSEPROGRAMPROC = extern "system" fn(GLuint);
7870
7871/// The prototype to the OpenGL function `Uniform1f`
7872type PFNGLUNIFORM1FPROC = extern "system" fn(GLint, GLfloat);
7873
7874/// The prototype to the OpenGL function `Uniform2f`
7875type PFNGLUNIFORM2FPROC = extern "system" fn(GLint, GLfloat, GLfloat);
7876
7877/// The prototype to the OpenGL function `Uniform3f`
7878type PFNGLUNIFORM3FPROC = extern "system" fn(GLint, GLfloat, GLfloat, GLfloat);
7879
7880/// The prototype to the OpenGL function `Uniform4f`
7881type PFNGLUNIFORM4FPROC = extern "system" fn(GLint, GLfloat, GLfloat, GLfloat, GLfloat);
7882
7883/// The prototype to the OpenGL function `Uniform1i`
7884type PFNGLUNIFORM1IPROC = extern "system" fn(GLint, GLint);
7885
7886/// The prototype to the OpenGL function `Uniform2i`
7887type PFNGLUNIFORM2IPROC = extern "system" fn(GLint, GLint, GLint);
7888
7889/// The prototype to the OpenGL function `Uniform3i`
7890type PFNGLUNIFORM3IPROC = extern "system" fn(GLint, GLint, GLint, GLint);
7891
7892/// The prototype to the OpenGL function `Uniform4i`
7893type PFNGLUNIFORM4IPROC = extern "system" fn(GLint, GLint, GLint, GLint, GLint);
7894
7895/// The prototype to the OpenGL function `Uniform1fv`
7896type PFNGLUNIFORM1FVPROC = extern "system" fn(GLint, GLsizei, *const GLfloat);
7897
7898/// The prototype to the OpenGL function `Uniform2fv`
7899type PFNGLUNIFORM2FVPROC = extern "system" fn(GLint, GLsizei, *const GLfloat);
7900
7901/// The prototype to the OpenGL function `Uniform3fv`
7902type PFNGLUNIFORM3FVPROC = extern "system" fn(GLint, GLsizei, *const GLfloat);
7903
7904/// The prototype to the OpenGL function `Uniform4fv`
7905type PFNGLUNIFORM4FVPROC = extern "system" fn(GLint, GLsizei, *const GLfloat);
7906
7907/// The prototype to the OpenGL function `Uniform1iv`
7908type PFNGLUNIFORM1IVPROC = extern "system" fn(GLint, GLsizei, *const GLint);
7909
7910/// The prototype to the OpenGL function `Uniform2iv`
7911type PFNGLUNIFORM2IVPROC = extern "system" fn(GLint, GLsizei, *const GLint);
7912
7913/// The prototype to the OpenGL function `Uniform3iv`
7914type PFNGLUNIFORM3IVPROC = extern "system" fn(GLint, GLsizei, *const GLint);
7915
7916/// The prototype to the OpenGL function `Uniform4iv`
7917type PFNGLUNIFORM4IVPROC = extern "system" fn(GLint, GLsizei, *const GLint);
7918
7919/// The prototype to the OpenGL function `UniformMatrix2fv`
7920type PFNGLUNIFORMMATRIX2FVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLfloat);
7921
7922/// The prototype to the OpenGL function `UniformMatrix3fv`
7923type PFNGLUNIFORMMATRIX3FVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLfloat);
7924
7925/// The prototype to the OpenGL function `UniformMatrix4fv`
7926type PFNGLUNIFORMMATRIX4FVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLfloat);
7927
7928/// The prototype to the OpenGL function `ValidateProgram`
7929type PFNGLVALIDATEPROGRAMPROC = extern "system" fn(GLuint);
7930
7931/// The prototype to the OpenGL function `VertexAttrib1d`
7932type PFNGLVERTEXATTRIB1DPROC = extern "system" fn(GLuint, GLdouble);
7933
7934/// The prototype to the OpenGL function `VertexAttrib1dv`
7935type PFNGLVERTEXATTRIB1DVPROC = extern "system" fn(GLuint, *const GLdouble);
7936
7937/// The prototype to the OpenGL function `VertexAttrib1f`
7938type PFNGLVERTEXATTRIB1FPROC = extern "system" fn(GLuint, GLfloat);
7939
7940/// The prototype to the OpenGL function `VertexAttrib1fv`
7941type PFNGLVERTEXATTRIB1FVPROC = extern "system" fn(GLuint, *const GLfloat);
7942
7943/// The prototype to the OpenGL function `VertexAttrib1s`
7944type PFNGLVERTEXATTRIB1SPROC = extern "system" fn(GLuint, GLshort);
7945
7946/// The prototype to the OpenGL function `VertexAttrib1sv`
7947type PFNGLVERTEXATTRIB1SVPROC = extern "system" fn(GLuint, *const GLshort);
7948
7949/// The prototype to the OpenGL function `VertexAttrib2d`
7950type PFNGLVERTEXATTRIB2DPROC = extern "system" fn(GLuint, GLdouble, GLdouble);
7951
7952/// The prototype to the OpenGL function `VertexAttrib2dv`
7953type PFNGLVERTEXATTRIB2DVPROC = extern "system" fn(GLuint, *const GLdouble);
7954
7955/// The prototype to the OpenGL function `VertexAttrib2f`
7956type PFNGLVERTEXATTRIB2FPROC = extern "system" fn(GLuint, GLfloat, GLfloat);
7957
7958/// The prototype to the OpenGL function `VertexAttrib2fv`
7959type PFNGLVERTEXATTRIB2FVPROC = extern "system" fn(GLuint, *const GLfloat);
7960
7961/// The prototype to the OpenGL function `VertexAttrib2s`
7962type PFNGLVERTEXATTRIB2SPROC = extern "system" fn(GLuint, GLshort, GLshort);
7963
7964/// The prototype to the OpenGL function `VertexAttrib2sv`
7965type PFNGLVERTEXATTRIB2SVPROC = extern "system" fn(GLuint, *const GLshort);
7966
7967/// The prototype to the OpenGL function `VertexAttrib3d`
7968type PFNGLVERTEXATTRIB3DPROC = extern "system" fn(GLuint, GLdouble, GLdouble, GLdouble);
7969
7970/// The prototype to the OpenGL function `VertexAttrib3dv`
7971type PFNGLVERTEXATTRIB3DVPROC = extern "system" fn(GLuint, *const GLdouble);
7972
7973/// The prototype to the OpenGL function `VertexAttrib3f`
7974type PFNGLVERTEXATTRIB3FPROC = extern "system" fn(GLuint, GLfloat, GLfloat, GLfloat);
7975
7976/// The prototype to the OpenGL function `VertexAttrib3fv`
7977type PFNGLVERTEXATTRIB3FVPROC = extern "system" fn(GLuint, *const GLfloat);
7978
7979/// The prototype to the OpenGL function `VertexAttrib3s`
7980type PFNGLVERTEXATTRIB3SPROC = extern "system" fn(GLuint, GLshort, GLshort, GLshort);
7981
7982/// The prototype to the OpenGL function `VertexAttrib3sv`
7983type PFNGLVERTEXATTRIB3SVPROC = extern "system" fn(GLuint, *const GLshort);
7984
7985/// The prototype to the OpenGL function `VertexAttrib4Nbv`
7986type PFNGLVERTEXATTRIB4NBVPROC = extern "system" fn(GLuint, *const GLbyte);
7987
7988/// The prototype to the OpenGL function `VertexAttrib4Niv`
7989type PFNGLVERTEXATTRIB4NIVPROC = extern "system" fn(GLuint, *const GLint);
7990
7991/// The prototype to the OpenGL function `VertexAttrib4Nsv`
7992type PFNGLVERTEXATTRIB4NSVPROC = extern "system" fn(GLuint, *const GLshort);
7993
7994/// The prototype to the OpenGL function `VertexAttrib4Nub`
7995type PFNGLVERTEXATTRIB4NUBPROC = extern "system" fn(GLuint, GLubyte, GLubyte, GLubyte, GLubyte);
7996
7997/// The prototype to the OpenGL function `VertexAttrib4Nubv`
7998type PFNGLVERTEXATTRIB4NUBVPROC = extern "system" fn(GLuint, *const GLubyte);
7999
8000/// The prototype to the OpenGL function `VertexAttrib4Nuiv`
8001type PFNGLVERTEXATTRIB4NUIVPROC = extern "system" fn(GLuint, *const GLuint);
8002
8003/// The prototype to the OpenGL function `VertexAttrib4Nusv`
8004type PFNGLVERTEXATTRIB4NUSVPROC = extern "system" fn(GLuint, *const GLushort);
8005
8006/// The prototype to the OpenGL function `VertexAttrib4bv`
8007type PFNGLVERTEXATTRIB4BVPROC = extern "system" fn(GLuint, *const GLbyte);
8008
8009/// The prototype to the OpenGL function `VertexAttrib4d`
8010type PFNGLVERTEXATTRIB4DPROC = extern "system" fn(GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
8011
8012/// The prototype to the OpenGL function `VertexAttrib4dv`
8013type PFNGLVERTEXATTRIB4DVPROC = extern "system" fn(GLuint, *const GLdouble);
8014
8015/// The prototype to the OpenGL function `VertexAttrib4f`
8016type PFNGLVERTEXATTRIB4FPROC = extern "system" fn(GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
8017
8018/// The prototype to the OpenGL function `VertexAttrib4fv`
8019type PFNGLVERTEXATTRIB4FVPROC = extern "system" fn(GLuint, *const GLfloat);
8020
8021/// The prototype to the OpenGL function `VertexAttrib4iv`
8022type PFNGLVERTEXATTRIB4IVPROC = extern "system" fn(GLuint, *const GLint);
8023
8024/// The prototype to the OpenGL function `VertexAttrib4s`
8025type PFNGLVERTEXATTRIB4SPROC = extern "system" fn(GLuint, GLshort, GLshort, GLshort, GLshort);
8026
8027/// The prototype to the OpenGL function `VertexAttrib4sv`
8028type PFNGLVERTEXATTRIB4SVPROC = extern "system" fn(GLuint, *const GLshort);
8029
8030/// The prototype to the OpenGL function `VertexAttrib4ubv`
8031type PFNGLVERTEXATTRIB4UBVPROC = extern "system" fn(GLuint, *const GLubyte);
8032
8033/// The prototype to the OpenGL function `VertexAttrib4uiv`
8034type PFNGLVERTEXATTRIB4UIVPROC = extern "system" fn(GLuint, *const GLuint);
8035
8036/// The prototype to the OpenGL function `VertexAttrib4usv`
8037type PFNGLVERTEXATTRIB4USVPROC = extern "system" fn(GLuint, *const GLushort);
8038
8039/// The prototype to the OpenGL function `VertexAttribPointer`
8040type PFNGLVERTEXATTRIBPOINTERPROC = extern "system" fn(GLuint, GLint, GLenum, GLboolean, GLsizei, *const c_void);
8041
8042/// The dummy function of `BlendEquationSeparate()`
8043extern "system" fn dummy_pfnglblendequationseparateproc (_: GLenum, _: GLenum) {
8044	panic!("OpenGL function pointer `glBlendEquationSeparate()` is null.")
8045}
8046
8047/// The dummy function of `DrawBuffers()`
8048extern "system" fn dummy_pfngldrawbuffersproc (_: GLsizei, _: *const GLenum) {
8049	panic!("OpenGL function pointer `glDrawBuffers()` is null.")
8050}
8051
8052/// The dummy function of `StencilOpSeparate()`
8053extern "system" fn dummy_pfnglstencilopseparateproc (_: GLenum, _: GLenum, _: GLenum, _: GLenum) {
8054	panic!("OpenGL function pointer `glStencilOpSeparate()` is null.")
8055}
8056
8057/// The dummy function of `StencilFuncSeparate()`
8058extern "system" fn dummy_pfnglstencilfuncseparateproc (_: GLenum, _: GLenum, _: GLint, _: GLuint) {
8059	panic!("OpenGL function pointer `glStencilFuncSeparate()` is null.")
8060}
8061
8062/// The dummy function of `StencilMaskSeparate()`
8063extern "system" fn dummy_pfnglstencilmaskseparateproc (_: GLenum, _: GLuint) {
8064	panic!("OpenGL function pointer `glStencilMaskSeparate()` is null.")
8065}
8066
8067/// The dummy function of `AttachShader()`
8068extern "system" fn dummy_pfnglattachshaderproc (_: GLuint, _: GLuint) {
8069	panic!("OpenGL function pointer `glAttachShader()` is null.")
8070}
8071
8072/// The dummy function of `BindAttribLocation()`
8073extern "system" fn dummy_pfnglbindattriblocationproc (_: GLuint, _: GLuint, _: *const GLchar) {
8074	panic!("OpenGL function pointer `glBindAttribLocation()` is null.")
8075}
8076
8077/// The dummy function of `CompileShader()`
8078extern "system" fn dummy_pfnglcompileshaderproc (_: GLuint) {
8079	panic!("OpenGL function pointer `glCompileShader()` is null.")
8080}
8081
8082/// The dummy function of `CreateProgram()`
8083extern "system" fn dummy_pfnglcreateprogramproc () -> GLuint {
8084	panic!("OpenGL function pointer `glCreateProgram()` is null.")
8085}
8086
8087/// The dummy function of `CreateShader()`
8088extern "system" fn dummy_pfnglcreateshaderproc (_: GLenum) -> GLuint {
8089	panic!("OpenGL function pointer `glCreateShader()` is null.")
8090}
8091
8092/// The dummy function of `DeleteProgram()`
8093extern "system" fn dummy_pfngldeleteprogramproc (_: GLuint) {
8094	panic!("OpenGL function pointer `glDeleteProgram()` is null.")
8095}
8096
8097/// The dummy function of `DeleteShader()`
8098extern "system" fn dummy_pfngldeleteshaderproc (_: GLuint) {
8099	panic!("OpenGL function pointer `glDeleteShader()` is null.")
8100}
8101
8102/// The dummy function of `DetachShader()`
8103extern "system" fn dummy_pfngldetachshaderproc (_: GLuint, _: GLuint) {
8104	panic!("OpenGL function pointer `glDetachShader()` is null.")
8105}
8106
8107/// The dummy function of `DisableVertexAttribArray()`
8108extern "system" fn dummy_pfngldisablevertexattribarrayproc (_: GLuint) {
8109	panic!("OpenGL function pointer `glDisableVertexAttribArray()` is null.")
8110}
8111
8112/// The dummy function of `EnableVertexAttribArray()`
8113extern "system" fn dummy_pfnglenablevertexattribarrayproc (_: GLuint) {
8114	panic!("OpenGL function pointer `glEnableVertexAttribArray()` is null.")
8115}
8116
8117/// The dummy function of `GetActiveAttrib()`
8118extern "system" fn dummy_pfnglgetactiveattribproc (_: GLuint, _: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLint, _: *mut GLenum, _: *mut GLchar) {
8119	panic!("OpenGL function pointer `glGetActiveAttrib()` is null.")
8120}
8121
8122/// The dummy function of `GetActiveUniform()`
8123extern "system" fn dummy_pfnglgetactiveuniformproc (_: GLuint, _: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLint, _: *mut GLenum, _: *mut GLchar) {
8124	panic!("OpenGL function pointer `glGetActiveUniform()` is null.")
8125}
8126
8127/// The dummy function of `GetAttachedShaders()`
8128extern "system" fn dummy_pfnglgetattachedshadersproc (_: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLuint) {
8129	panic!("OpenGL function pointer `glGetAttachedShaders()` is null.")
8130}
8131
8132/// The dummy function of `GetAttribLocation()`
8133extern "system" fn dummy_pfnglgetattriblocationproc (_: GLuint, _: *const GLchar) -> GLint {
8134	panic!("OpenGL function pointer `glGetAttribLocation()` is null.")
8135}
8136
8137/// The dummy function of `GetProgramiv()`
8138extern "system" fn dummy_pfnglgetprogramivproc (_: GLuint, _: GLenum, _: *mut GLint) {
8139	panic!("OpenGL function pointer `glGetProgramiv()` is null.")
8140}
8141
8142/// The dummy function of `GetProgramInfoLog()`
8143extern "system" fn dummy_pfnglgetprograminfologproc (_: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLchar) {
8144	panic!("OpenGL function pointer `glGetProgramInfoLog()` is null.")
8145}
8146
8147/// The dummy function of `GetShaderiv()`
8148extern "system" fn dummy_pfnglgetshaderivproc (_: GLuint, _: GLenum, _: *mut GLint) {
8149	panic!("OpenGL function pointer `glGetShaderiv()` is null.")
8150}
8151
8152/// The dummy function of `GetShaderInfoLog()`
8153extern "system" fn dummy_pfnglgetshaderinfologproc (_: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLchar) {
8154	panic!("OpenGL function pointer `glGetShaderInfoLog()` is null.")
8155}
8156
8157/// The dummy function of `GetShaderSource()`
8158extern "system" fn dummy_pfnglgetshadersourceproc (_: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLchar) {
8159	panic!("OpenGL function pointer `glGetShaderSource()` is null.")
8160}
8161
8162/// The dummy function of `GetUniformLocation()`
8163extern "system" fn dummy_pfnglgetuniformlocationproc (_: GLuint, _: *const GLchar) -> GLint {
8164	panic!("OpenGL function pointer `glGetUniformLocation()` is null.")
8165}
8166
8167/// The dummy function of `GetUniformfv()`
8168extern "system" fn dummy_pfnglgetuniformfvproc (_: GLuint, _: GLint, _: *mut GLfloat) {
8169	panic!("OpenGL function pointer `glGetUniformfv()` is null.")
8170}
8171
8172/// The dummy function of `GetUniformiv()`
8173extern "system" fn dummy_pfnglgetuniformivproc (_: GLuint, _: GLint, _: *mut GLint) {
8174	panic!("OpenGL function pointer `glGetUniformiv()` is null.")
8175}
8176
8177/// The dummy function of `GetVertexAttribdv()`
8178extern "system" fn dummy_pfnglgetvertexattribdvproc (_: GLuint, _: GLenum, _: *mut GLdouble) {
8179	panic!("OpenGL function pointer `glGetVertexAttribdv()` is null.")
8180}
8181
8182/// The dummy function of `GetVertexAttribfv()`
8183extern "system" fn dummy_pfnglgetvertexattribfvproc (_: GLuint, _: GLenum, _: *mut GLfloat) {
8184	panic!("OpenGL function pointer `glGetVertexAttribfv()` is null.")
8185}
8186
8187/// The dummy function of `GetVertexAttribiv()`
8188extern "system" fn dummy_pfnglgetvertexattribivproc (_: GLuint, _: GLenum, _: *mut GLint) {
8189	panic!("OpenGL function pointer `glGetVertexAttribiv()` is null.")
8190}
8191
8192/// The dummy function of `GetVertexAttribPointerv()`
8193extern "system" fn dummy_pfnglgetvertexattribpointervproc (_: GLuint, _: GLenum, _: *mut *mut c_void) {
8194	panic!("OpenGL function pointer `glGetVertexAttribPointerv()` is null.")
8195}
8196
8197/// The dummy function of `IsProgram()`
8198extern "system" fn dummy_pfnglisprogramproc (_: GLuint) -> GLboolean {
8199	panic!("OpenGL function pointer `glIsProgram()` is null.")
8200}
8201
8202/// The dummy function of `IsShader()`
8203extern "system" fn dummy_pfnglisshaderproc (_: GLuint) -> GLboolean {
8204	panic!("OpenGL function pointer `glIsShader()` is null.")
8205}
8206
8207/// The dummy function of `LinkProgram()`
8208extern "system" fn dummy_pfngllinkprogramproc (_: GLuint) {
8209	panic!("OpenGL function pointer `glLinkProgram()` is null.")
8210}
8211
8212/// The dummy function of `ShaderSource()`
8213extern "system" fn dummy_pfnglshadersourceproc (_: GLuint, _: GLsizei, _: *const *const GLchar, _: *const GLint) {
8214	panic!("OpenGL function pointer `glShaderSource()` is null.")
8215}
8216
8217/// The dummy function of `UseProgram()`
8218extern "system" fn dummy_pfngluseprogramproc (_: GLuint) {
8219	panic!("OpenGL function pointer `glUseProgram()` is null.")
8220}
8221
8222/// The dummy function of `Uniform1f()`
8223extern "system" fn dummy_pfngluniform1fproc (_: GLint, _: GLfloat) {
8224	panic!("OpenGL function pointer `glUniform1f()` is null.")
8225}
8226
8227/// The dummy function of `Uniform2f()`
8228extern "system" fn dummy_pfngluniform2fproc (_: GLint, _: GLfloat, _: GLfloat) {
8229	panic!("OpenGL function pointer `glUniform2f()` is null.")
8230}
8231
8232/// The dummy function of `Uniform3f()`
8233extern "system" fn dummy_pfngluniform3fproc (_: GLint, _: GLfloat, _: GLfloat, _: GLfloat) {
8234	panic!("OpenGL function pointer `glUniform3f()` is null.")
8235}
8236
8237/// The dummy function of `Uniform4f()`
8238extern "system" fn dummy_pfngluniform4fproc (_: GLint, _: GLfloat, _: GLfloat, _: GLfloat, _: GLfloat) {
8239	panic!("OpenGL function pointer `glUniform4f()` is null.")
8240}
8241
8242/// The dummy function of `Uniform1i()`
8243extern "system" fn dummy_pfngluniform1iproc (_: GLint, _: GLint) {
8244	panic!("OpenGL function pointer `glUniform1i()` is null.")
8245}
8246
8247/// The dummy function of `Uniform2i()`
8248extern "system" fn dummy_pfngluniform2iproc (_: GLint, _: GLint, _: GLint) {
8249	panic!("OpenGL function pointer `glUniform2i()` is null.")
8250}
8251
8252/// The dummy function of `Uniform3i()`
8253extern "system" fn dummy_pfngluniform3iproc (_: GLint, _: GLint, _: GLint, _: GLint) {
8254	panic!("OpenGL function pointer `glUniform3i()` is null.")
8255}
8256
8257/// The dummy function of `Uniform4i()`
8258extern "system" fn dummy_pfngluniform4iproc (_: GLint, _: GLint, _: GLint, _: GLint, _: GLint) {
8259	panic!("OpenGL function pointer `glUniform4i()` is null.")
8260}
8261
8262/// The dummy function of `Uniform1fv()`
8263extern "system" fn dummy_pfngluniform1fvproc (_: GLint, _: GLsizei, _: *const GLfloat) {
8264	panic!("OpenGL function pointer `glUniform1fv()` is null.")
8265}
8266
8267/// The dummy function of `Uniform2fv()`
8268extern "system" fn dummy_pfngluniform2fvproc (_: GLint, _: GLsizei, _: *const GLfloat) {
8269	panic!("OpenGL function pointer `glUniform2fv()` is null.")
8270}
8271
8272/// The dummy function of `Uniform3fv()`
8273extern "system" fn dummy_pfngluniform3fvproc (_: GLint, _: GLsizei, _: *const GLfloat) {
8274	panic!("OpenGL function pointer `glUniform3fv()` is null.")
8275}
8276
8277/// The dummy function of `Uniform4fv()`
8278extern "system" fn dummy_pfngluniform4fvproc (_: GLint, _: GLsizei, _: *const GLfloat) {
8279	panic!("OpenGL function pointer `glUniform4fv()` is null.")
8280}
8281
8282/// The dummy function of `Uniform1iv()`
8283extern "system" fn dummy_pfngluniform1ivproc (_: GLint, _: GLsizei, _: *const GLint) {
8284	panic!("OpenGL function pointer `glUniform1iv()` is null.")
8285}
8286
8287/// The dummy function of `Uniform2iv()`
8288extern "system" fn dummy_pfngluniform2ivproc (_: GLint, _: GLsizei, _: *const GLint) {
8289	panic!("OpenGL function pointer `glUniform2iv()` is null.")
8290}
8291
8292/// The dummy function of `Uniform3iv()`
8293extern "system" fn dummy_pfngluniform3ivproc (_: GLint, _: GLsizei, _: *const GLint) {
8294	panic!("OpenGL function pointer `glUniform3iv()` is null.")
8295}
8296
8297/// The dummy function of `Uniform4iv()`
8298extern "system" fn dummy_pfngluniform4ivproc (_: GLint, _: GLsizei, _: *const GLint) {
8299	panic!("OpenGL function pointer `glUniform4iv()` is null.")
8300}
8301
8302/// The dummy function of `UniformMatrix2fv()`
8303extern "system" fn dummy_pfngluniformmatrix2fvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
8304	panic!("OpenGL function pointer `glUniformMatrix2fv()` is null.")
8305}
8306
8307/// The dummy function of `UniformMatrix3fv()`
8308extern "system" fn dummy_pfngluniformmatrix3fvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
8309	panic!("OpenGL function pointer `glUniformMatrix3fv()` is null.")
8310}
8311
8312/// The dummy function of `UniformMatrix4fv()`
8313extern "system" fn dummy_pfngluniformmatrix4fvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
8314	panic!("OpenGL function pointer `glUniformMatrix4fv()` is null.")
8315}
8316
8317/// The dummy function of `ValidateProgram()`
8318extern "system" fn dummy_pfnglvalidateprogramproc (_: GLuint) {
8319	panic!("OpenGL function pointer `glValidateProgram()` is null.")
8320}
8321
8322/// The dummy function of `VertexAttrib1d()`
8323extern "system" fn dummy_pfnglvertexattrib1dproc (_: GLuint, _: GLdouble) {
8324	panic!("OpenGL function pointer `glVertexAttrib1d()` is null.")
8325}
8326
8327/// The dummy function of `VertexAttrib1dv()`
8328extern "system" fn dummy_pfnglvertexattrib1dvproc (_: GLuint, _: *const GLdouble) {
8329	panic!("OpenGL function pointer `glVertexAttrib1dv()` is null.")
8330}
8331
8332/// The dummy function of `VertexAttrib1f()`
8333extern "system" fn dummy_pfnglvertexattrib1fproc (_: GLuint, _: GLfloat) {
8334	panic!("OpenGL function pointer `glVertexAttrib1f()` is null.")
8335}
8336
8337/// The dummy function of `VertexAttrib1fv()`
8338extern "system" fn dummy_pfnglvertexattrib1fvproc (_: GLuint, _: *const GLfloat) {
8339	panic!("OpenGL function pointer `glVertexAttrib1fv()` is null.")
8340}
8341
8342/// The dummy function of `VertexAttrib1s()`
8343extern "system" fn dummy_pfnglvertexattrib1sproc (_: GLuint, _: GLshort) {
8344	panic!("OpenGL function pointer `glVertexAttrib1s()` is null.")
8345}
8346
8347/// The dummy function of `VertexAttrib1sv()`
8348extern "system" fn dummy_pfnglvertexattrib1svproc (_: GLuint, _: *const GLshort) {
8349	panic!("OpenGL function pointer `glVertexAttrib1sv()` is null.")
8350}
8351
8352/// The dummy function of `VertexAttrib2d()`
8353extern "system" fn dummy_pfnglvertexattrib2dproc (_: GLuint, _: GLdouble, _: GLdouble) {
8354	panic!("OpenGL function pointer `glVertexAttrib2d()` is null.")
8355}
8356
8357/// The dummy function of `VertexAttrib2dv()`
8358extern "system" fn dummy_pfnglvertexattrib2dvproc (_: GLuint, _: *const GLdouble) {
8359	panic!("OpenGL function pointer `glVertexAttrib2dv()` is null.")
8360}
8361
8362/// The dummy function of `VertexAttrib2f()`
8363extern "system" fn dummy_pfnglvertexattrib2fproc (_: GLuint, _: GLfloat, _: GLfloat) {
8364	panic!("OpenGL function pointer `glVertexAttrib2f()` is null.")
8365}
8366
8367/// The dummy function of `VertexAttrib2fv()`
8368extern "system" fn dummy_pfnglvertexattrib2fvproc (_: GLuint, _: *const GLfloat) {
8369	panic!("OpenGL function pointer `glVertexAttrib2fv()` is null.")
8370}
8371
8372/// The dummy function of `VertexAttrib2s()`
8373extern "system" fn dummy_pfnglvertexattrib2sproc (_: GLuint, _: GLshort, _: GLshort) {
8374	panic!("OpenGL function pointer `glVertexAttrib2s()` is null.")
8375}
8376
8377/// The dummy function of `VertexAttrib2sv()`
8378extern "system" fn dummy_pfnglvertexattrib2svproc (_: GLuint, _: *const GLshort) {
8379	panic!("OpenGL function pointer `glVertexAttrib2sv()` is null.")
8380}
8381
8382/// The dummy function of `VertexAttrib3d()`
8383extern "system" fn dummy_pfnglvertexattrib3dproc (_: GLuint, _: GLdouble, _: GLdouble, _: GLdouble) {
8384	panic!("OpenGL function pointer `glVertexAttrib3d()` is null.")
8385}
8386
8387/// The dummy function of `VertexAttrib3dv()`
8388extern "system" fn dummy_pfnglvertexattrib3dvproc (_: GLuint, _: *const GLdouble) {
8389	panic!("OpenGL function pointer `glVertexAttrib3dv()` is null.")
8390}
8391
8392/// The dummy function of `VertexAttrib3f()`
8393extern "system" fn dummy_pfnglvertexattrib3fproc (_: GLuint, _: GLfloat, _: GLfloat, _: GLfloat) {
8394	panic!("OpenGL function pointer `glVertexAttrib3f()` is null.")
8395}
8396
8397/// The dummy function of `VertexAttrib3fv()`
8398extern "system" fn dummy_pfnglvertexattrib3fvproc (_: GLuint, _: *const GLfloat) {
8399	panic!("OpenGL function pointer `glVertexAttrib3fv()` is null.")
8400}
8401
8402/// The dummy function of `VertexAttrib3s()`
8403extern "system" fn dummy_pfnglvertexattrib3sproc (_: GLuint, _: GLshort, _: GLshort, _: GLshort) {
8404	panic!("OpenGL function pointer `glVertexAttrib3s()` is null.")
8405}
8406
8407/// The dummy function of `VertexAttrib3sv()`
8408extern "system" fn dummy_pfnglvertexattrib3svproc (_: GLuint, _: *const GLshort) {
8409	panic!("OpenGL function pointer `glVertexAttrib3sv()` is null.")
8410}
8411
8412/// The dummy function of `VertexAttrib4Nbv()`
8413extern "system" fn dummy_pfnglvertexattrib4nbvproc (_: GLuint, _: *const GLbyte) {
8414	panic!("OpenGL function pointer `glVertexAttrib4Nbv()` is null.")
8415}
8416
8417/// The dummy function of `VertexAttrib4Niv()`
8418extern "system" fn dummy_pfnglvertexattrib4nivproc (_: GLuint, _: *const GLint) {
8419	panic!("OpenGL function pointer `glVertexAttrib4Niv()` is null.")
8420}
8421
8422/// The dummy function of `VertexAttrib4Nsv()`
8423extern "system" fn dummy_pfnglvertexattrib4nsvproc (_: GLuint, _: *const GLshort) {
8424	panic!("OpenGL function pointer `glVertexAttrib4Nsv()` is null.")
8425}
8426
8427/// The dummy function of `VertexAttrib4Nub()`
8428extern "system" fn dummy_pfnglvertexattrib4nubproc (_: GLuint, _: GLubyte, _: GLubyte, _: GLubyte, _: GLubyte) {
8429	panic!("OpenGL function pointer `glVertexAttrib4Nub()` is null.")
8430}
8431
8432/// The dummy function of `VertexAttrib4Nubv()`
8433extern "system" fn dummy_pfnglvertexattrib4nubvproc (_: GLuint, _: *const GLubyte) {
8434	panic!("OpenGL function pointer `glVertexAttrib4Nubv()` is null.")
8435}
8436
8437/// The dummy function of `VertexAttrib4Nuiv()`
8438extern "system" fn dummy_pfnglvertexattrib4nuivproc (_: GLuint, _: *const GLuint) {
8439	panic!("OpenGL function pointer `glVertexAttrib4Nuiv()` is null.")
8440}
8441
8442/// The dummy function of `VertexAttrib4Nusv()`
8443extern "system" fn dummy_pfnglvertexattrib4nusvproc (_: GLuint, _: *const GLushort) {
8444	panic!("OpenGL function pointer `glVertexAttrib4Nusv()` is null.")
8445}
8446
8447/// The dummy function of `VertexAttrib4bv()`
8448extern "system" fn dummy_pfnglvertexattrib4bvproc (_: GLuint, _: *const GLbyte) {
8449	panic!("OpenGL function pointer `glVertexAttrib4bv()` is null.")
8450}
8451
8452/// The dummy function of `VertexAttrib4d()`
8453extern "system" fn dummy_pfnglvertexattrib4dproc (_: GLuint, _: GLdouble, _: GLdouble, _: GLdouble, _: GLdouble) {
8454	panic!("OpenGL function pointer `glVertexAttrib4d()` is null.")
8455}
8456
8457/// The dummy function of `VertexAttrib4dv()`
8458extern "system" fn dummy_pfnglvertexattrib4dvproc (_: GLuint, _: *const GLdouble) {
8459	panic!("OpenGL function pointer `glVertexAttrib4dv()` is null.")
8460}
8461
8462/// The dummy function of `VertexAttrib4f()`
8463extern "system" fn dummy_pfnglvertexattrib4fproc (_: GLuint, _: GLfloat, _: GLfloat, _: GLfloat, _: GLfloat) {
8464	panic!("OpenGL function pointer `glVertexAttrib4f()` is null.")
8465}
8466
8467/// The dummy function of `VertexAttrib4fv()`
8468extern "system" fn dummy_pfnglvertexattrib4fvproc (_: GLuint, _: *const GLfloat) {
8469	panic!("OpenGL function pointer `glVertexAttrib4fv()` is null.")
8470}
8471
8472/// The dummy function of `VertexAttrib4iv()`
8473extern "system" fn dummy_pfnglvertexattrib4ivproc (_: GLuint, _: *const GLint) {
8474	panic!("OpenGL function pointer `glVertexAttrib4iv()` is null.")
8475}
8476
8477/// The dummy function of `VertexAttrib4s()`
8478extern "system" fn dummy_pfnglvertexattrib4sproc (_: GLuint, _: GLshort, _: GLshort, _: GLshort, _: GLshort) {
8479	panic!("OpenGL function pointer `glVertexAttrib4s()` is null.")
8480}
8481
8482/// The dummy function of `VertexAttrib4sv()`
8483extern "system" fn dummy_pfnglvertexattrib4svproc (_: GLuint, _: *const GLshort) {
8484	panic!("OpenGL function pointer `glVertexAttrib4sv()` is null.")
8485}
8486
8487/// The dummy function of `VertexAttrib4ubv()`
8488extern "system" fn dummy_pfnglvertexattrib4ubvproc (_: GLuint, _: *const GLubyte) {
8489	panic!("OpenGL function pointer `glVertexAttrib4ubv()` is null.")
8490}
8491
8492/// The dummy function of `VertexAttrib4uiv()`
8493extern "system" fn dummy_pfnglvertexattrib4uivproc (_: GLuint, _: *const GLuint) {
8494	panic!("OpenGL function pointer `glVertexAttrib4uiv()` is null.")
8495}
8496
8497/// The dummy function of `VertexAttrib4usv()`
8498extern "system" fn dummy_pfnglvertexattrib4usvproc (_: GLuint, _: *const GLushort) {
8499	panic!("OpenGL function pointer `glVertexAttrib4usv()` is null.")
8500}
8501
8502/// The dummy function of `VertexAttribPointer()`
8503extern "system" fn dummy_pfnglvertexattribpointerproc (_: GLuint, _: GLint, _: GLenum, _: GLboolean, _: GLsizei, _: *const c_void) {
8504	panic!("OpenGL function pointer `glVertexAttribPointer()` is null.")
8505}
8506/// Constant value defined from OpenGL 2.0
8507pub const GL_BLEND_EQUATION_RGB: GLenum = 0x8009;
8508
8509/// Constant value defined from OpenGL 2.0
8510pub const GL_VERTEX_ATTRIB_ARRAY_ENABLED: GLenum = 0x8622;
8511
8512/// Constant value defined from OpenGL 2.0
8513pub const GL_VERTEX_ATTRIB_ARRAY_SIZE: GLenum = 0x8623;
8514
8515/// Constant value defined from OpenGL 2.0
8516pub const GL_VERTEX_ATTRIB_ARRAY_STRIDE: GLenum = 0x8624;
8517
8518/// Constant value defined from OpenGL 2.0
8519pub const GL_VERTEX_ATTRIB_ARRAY_TYPE: GLenum = 0x8625;
8520
8521/// Constant value defined from OpenGL 2.0
8522pub const GL_CURRENT_VERTEX_ATTRIB: GLenum = 0x8626;
8523
8524/// Constant value defined from OpenGL 2.0
8525pub const GL_VERTEX_PROGRAM_POINT_SIZE: GLenum = 0x8642;
8526
8527/// Constant value defined from OpenGL 2.0
8528pub const GL_VERTEX_ATTRIB_ARRAY_POINTER: GLenum = 0x8645;
8529
8530/// Constant value defined from OpenGL 2.0
8531pub const GL_STENCIL_BACK_FUNC: GLenum = 0x8800;
8532
8533/// Constant value defined from OpenGL 2.0
8534pub const GL_STENCIL_BACK_FAIL: GLenum = 0x8801;
8535
8536/// Constant value defined from OpenGL 2.0
8537pub const GL_STENCIL_BACK_PASS_DEPTH_FAIL: GLenum = 0x8802;
8538
8539/// Constant value defined from OpenGL 2.0
8540pub const GL_STENCIL_BACK_PASS_DEPTH_PASS: GLenum = 0x8803;
8541
8542/// Constant value defined from OpenGL 2.0
8543pub const GL_MAX_DRAW_BUFFERS: GLenum = 0x8824;
8544
8545/// Constant value defined from OpenGL 2.0
8546pub const GL_DRAW_BUFFER0: GLenum = 0x8825;
8547
8548/// Constant value defined from OpenGL 2.0
8549pub const GL_DRAW_BUFFER1: GLenum = 0x8826;
8550
8551/// Constant value defined from OpenGL 2.0
8552pub const GL_DRAW_BUFFER2: GLenum = 0x8827;
8553
8554/// Constant value defined from OpenGL 2.0
8555pub const GL_DRAW_BUFFER3: GLenum = 0x8828;
8556
8557/// Constant value defined from OpenGL 2.0
8558pub const GL_DRAW_BUFFER4: GLenum = 0x8829;
8559
8560/// Constant value defined from OpenGL 2.0
8561pub const GL_DRAW_BUFFER5: GLenum = 0x882A;
8562
8563/// Constant value defined from OpenGL 2.0
8564pub const GL_DRAW_BUFFER6: GLenum = 0x882B;
8565
8566/// Constant value defined from OpenGL 2.0
8567pub const GL_DRAW_BUFFER7: GLenum = 0x882C;
8568
8569/// Constant value defined from OpenGL 2.0
8570pub const GL_DRAW_BUFFER8: GLenum = 0x882D;
8571
8572/// Constant value defined from OpenGL 2.0
8573pub const GL_DRAW_BUFFER9: GLenum = 0x882E;
8574
8575/// Constant value defined from OpenGL 2.0
8576pub const GL_DRAW_BUFFER10: GLenum = 0x882F;
8577
8578/// Constant value defined from OpenGL 2.0
8579pub const GL_DRAW_BUFFER11: GLenum = 0x8830;
8580
8581/// Constant value defined from OpenGL 2.0
8582pub const GL_DRAW_BUFFER12: GLenum = 0x8831;
8583
8584/// Constant value defined from OpenGL 2.0
8585pub const GL_DRAW_BUFFER13: GLenum = 0x8832;
8586
8587/// Constant value defined from OpenGL 2.0
8588pub const GL_DRAW_BUFFER14: GLenum = 0x8833;
8589
8590/// Constant value defined from OpenGL 2.0
8591pub const GL_DRAW_BUFFER15: GLenum = 0x8834;
8592
8593/// Constant value defined from OpenGL 2.0
8594pub const GL_BLEND_EQUATION_ALPHA: GLenum = 0x883D;
8595
8596/// Constant value defined from OpenGL 2.0
8597pub const GL_MAX_VERTEX_ATTRIBS: GLenum = 0x8869;
8598
8599/// Constant value defined from OpenGL 2.0
8600pub const GL_VERTEX_ATTRIB_ARRAY_NORMALIZED: GLenum = 0x886A;
8601
8602/// Constant value defined from OpenGL 2.0
8603pub const GL_MAX_TEXTURE_IMAGE_UNITS: GLenum = 0x8872;
8604
8605/// Constant value defined from OpenGL 2.0
8606pub const GL_FRAGMENT_SHADER: GLenum = 0x8B30;
8607
8608/// Constant value defined from OpenGL 2.0
8609pub const GL_VERTEX_SHADER: GLenum = 0x8B31;
8610
8611/// Constant value defined from OpenGL 2.0
8612pub const GL_MAX_FRAGMENT_UNIFORM_COMPONENTS: GLenum = 0x8B49;
8613
8614/// Constant value defined from OpenGL 2.0
8615pub const GL_MAX_VERTEX_UNIFORM_COMPONENTS: GLenum = 0x8B4A;
8616
8617/// Constant value defined from OpenGL 2.0
8618pub const GL_MAX_VARYING_FLOATS: GLenum = 0x8B4B;
8619
8620/// Constant value defined from OpenGL 2.0
8621pub const GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS: GLenum = 0x8B4C;
8622
8623/// Constant value defined from OpenGL 2.0
8624pub const GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS: GLenum = 0x8B4D;
8625
8626/// Constant value defined from OpenGL 2.0
8627pub const GL_SHADER_TYPE: GLenum = 0x8B4F;
8628
8629/// Constant value defined from OpenGL 2.0
8630pub const GL_FLOAT_VEC2: GLenum = 0x8B50;
8631
8632/// Constant value defined from OpenGL 2.0
8633pub const GL_FLOAT_VEC3: GLenum = 0x8B51;
8634
8635/// Constant value defined from OpenGL 2.0
8636pub const GL_FLOAT_VEC4: GLenum = 0x8B52;
8637
8638/// Constant value defined from OpenGL 2.0
8639pub const GL_INT_VEC2: GLenum = 0x8B53;
8640
8641/// Constant value defined from OpenGL 2.0
8642pub const GL_INT_VEC3: GLenum = 0x8B54;
8643
8644/// Constant value defined from OpenGL 2.0
8645pub const GL_INT_VEC4: GLenum = 0x8B55;
8646
8647/// Constant value defined from OpenGL 2.0
8648pub const GL_BOOL: GLenum = 0x8B56;
8649
8650/// Constant value defined from OpenGL 2.0
8651pub const GL_BOOL_VEC2: GLenum = 0x8B57;
8652
8653/// Constant value defined from OpenGL 2.0
8654pub const GL_BOOL_VEC3: GLenum = 0x8B58;
8655
8656/// Constant value defined from OpenGL 2.0
8657pub const GL_BOOL_VEC4: GLenum = 0x8B59;
8658
8659/// Constant value defined from OpenGL 2.0
8660pub const GL_FLOAT_MAT2: GLenum = 0x8B5A;
8661
8662/// Constant value defined from OpenGL 2.0
8663pub const GL_FLOAT_MAT3: GLenum = 0x8B5B;
8664
8665/// Constant value defined from OpenGL 2.0
8666pub const GL_FLOAT_MAT4: GLenum = 0x8B5C;
8667
8668/// Constant value defined from OpenGL 2.0
8669pub const GL_SAMPLER_1D: GLenum = 0x8B5D;
8670
8671/// Constant value defined from OpenGL 2.0
8672pub const GL_SAMPLER_2D: GLenum = 0x8B5E;
8673
8674/// Constant value defined from OpenGL 2.0
8675pub const GL_SAMPLER_3D: GLenum = 0x8B5F;
8676
8677/// Constant value defined from OpenGL 2.0
8678pub const GL_SAMPLER_CUBE: GLenum = 0x8B60;
8679
8680/// Constant value defined from OpenGL 2.0
8681pub const GL_SAMPLER_1D_SHADOW: GLenum = 0x8B61;
8682
8683/// Constant value defined from OpenGL 2.0
8684pub const GL_SAMPLER_2D_SHADOW: GLenum = 0x8B62;
8685
8686/// Constant value defined from OpenGL 2.0
8687pub const GL_DELETE_STATUS: GLenum = 0x8B80;
8688
8689/// Constant value defined from OpenGL 2.0
8690pub const GL_COMPILE_STATUS: GLenum = 0x8B81;
8691
8692/// Constant value defined from OpenGL 2.0
8693pub const GL_LINK_STATUS: GLenum = 0x8B82;
8694
8695/// Constant value defined from OpenGL 2.0
8696pub const GL_VALIDATE_STATUS: GLenum = 0x8B83;
8697
8698/// Constant value defined from OpenGL 2.0
8699pub const GL_INFO_LOG_LENGTH: GLenum = 0x8B84;
8700
8701/// Constant value defined from OpenGL 2.0
8702pub const GL_ATTACHED_SHADERS: GLenum = 0x8B85;
8703
8704/// Constant value defined from OpenGL 2.0
8705pub const GL_ACTIVE_UNIFORMS: GLenum = 0x8B86;
8706
8707/// Constant value defined from OpenGL 2.0
8708pub const GL_ACTIVE_UNIFORM_MAX_LENGTH: GLenum = 0x8B87;
8709
8710/// Constant value defined from OpenGL 2.0
8711pub const GL_SHADER_SOURCE_LENGTH: GLenum = 0x8B88;
8712
8713/// Constant value defined from OpenGL 2.0
8714pub const GL_ACTIVE_ATTRIBUTES: GLenum = 0x8B89;
8715
8716/// Constant value defined from OpenGL 2.0
8717pub const GL_ACTIVE_ATTRIBUTE_MAX_LENGTH: GLenum = 0x8B8A;
8718
8719/// Constant value defined from OpenGL 2.0
8720pub const GL_FRAGMENT_SHADER_DERIVATIVE_HINT: GLenum = 0x8B8B;
8721
8722/// Constant value defined from OpenGL 2.0
8723pub const GL_SHADING_LANGUAGE_VERSION: GLenum = 0x8B8C;
8724
8725/// Constant value defined from OpenGL 2.0
8726pub const GL_CURRENT_PROGRAM: GLenum = 0x8B8D;
8727
8728/// Constant value defined from OpenGL 2.0
8729pub const GL_POINT_SPRITE_COORD_ORIGIN: GLenum = 0x8CA0;
8730
8731/// Constant value defined from OpenGL 2.0
8732pub const GL_LOWER_LEFT: GLenum = 0x8CA1;
8733
8734/// Constant value defined from OpenGL 2.0
8735pub const GL_UPPER_LEFT: GLenum = 0x8CA2;
8736
8737/// Constant value defined from OpenGL 2.0
8738pub const GL_STENCIL_BACK_REF: GLenum = 0x8CA3;
8739
8740/// Constant value defined from OpenGL 2.0
8741pub const GL_STENCIL_BACK_VALUE_MASK: GLenum = 0x8CA4;
8742
8743/// Constant value defined from OpenGL 2.0
8744pub const GL_STENCIL_BACK_WRITEMASK: GLenum = 0x8CA5;
8745
8746/// Constant value defined from OpenGL 2.0
8747pub const GL_VERTEX_PROGRAM_TWO_SIDE: GLenum = 0x8643;
8748
8749/// Constant value defined from OpenGL 2.0
8750pub const GL_POINT_SPRITE: GLenum = 0x8861;
8751
8752/// Constant value defined from OpenGL 2.0
8753pub const GL_COORD_REPLACE: GLenum = 0x8862;
8754
8755/// Constant value defined from OpenGL 2.0
8756pub const GL_MAX_TEXTURE_COORDS: GLenum = 0x8871;
8757
8758/// Functions from OpenGL version 2.0
8759pub trait GL_2_0 {
8760	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
8761	fn glGetError(&self) -> GLenum;
8762
8763	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendEquationSeparate.xhtml>
8764	fn glBlendEquationSeparate(&self, modeRGB: GLenum, modeAlpha: GLenum) -> Result<()>;
8765
8766	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawBuffers.xhtml>
8767	fn glDrawBuffers(&self, n: GLsizei, bufs: *const GLenum) -> Result<()>;
8768
8769	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilOpSeparate.xhtml>
8770	fn glStencilOpSeparate(&self, face: GLenum, sfail: GLenum, dpfail: GLenum, dppass: GLenum) -> Result<()>;
8771
8772	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilFuncSeparate.xhtml>
8773	fn glStencilFuncSeparate(&self, face: GLenum, func: GLenum, ref_: GLint, mask: GLuint) -> Result<()>;
8774
8775	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilMaskSeparate.xhtml>
8776	fn glStencilMaskSeparate(&self, face: GLenum, mask: GLuint) -> Result<()>;
8777
8778	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glAttachShader.xhtml>
8779	fn glAttachShader(&self, program: GLuint, shader: GLuint) -> Result<()>;
8780
8781	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindAttribLocation.xhtml>
8782	fn glBindAttribLocation(&self, program: GLuint, index: GLuint, name: *const GLchar) -> Result<()>;
8783
8784	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompileShader.xhtml>
8785	fn glCompileShader(&self, shader: GLuint) -> Result<()>;
8786
8787	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateProgram.xhtml>
8788	fn glCreateProgram(&self) -> Result<GLuint>;
8789
8790	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateShader.xhtml>
8791	fn glCreateShader(&self, type_: GLenum) -> Result<GLuint>;
8792
8793	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteProgram.xhtml>
8794	fn glDeleteProgram(&self, program: GLuint) -> Result<()>;
8795
8796	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteShader.xhtml>
8797	fn glDeleteShader(&self, shader: GLuint) -> Result<()>;
8798
8799	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDetachShader.xhtml>
8800	fn glDetachShader(&self, program: GLuint, shader: GLuint) -> Result<()>;
8801
8802	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDisableVertexAttribArray.xhtml>
8803	fn glDisableVertexAttribArray(&self, index: GLuint) -> Result<()>;
8804
8805	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEnableVertexAttribArray.xhtml>
8806	fn glEnableVertexAttribArray(&self, index: GLuint) -> Result<()>;
8807
8808	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveAttrib.xhtml>
8809	fn glGetActiveAttrib(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLint, type_: *mut GLenum, name: *mut GLchar) -> Result<()>;
8810
8811	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveUniform.xhtml>
8812	fn glGetActiveUniform(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLint, type_: *mut GLenum, name: *mut GLchar) -> Result<()>;
8813
8814	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetAttachedShaders.xhtml>
8815	fn glGetAttachedShaders(&self, program: GLuint, maxCount: GLsizei, count: *mut GLsizei, shaders: *mut GLuint) -> Result<()>;
8816
8817	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetAttribLocation.xhtml>
8818	fn glGetAttribLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint>;
8819
8820	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramiv.xhtml>
8821	fn glGetProgramiv(&self, program: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
8822
8823	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramInfoLog.xhtml>
8824	fn glGetProgramInfoLog(&self, program: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()>;
8825
8826	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetShaderiv.xhtml>
8827	fn glGetShaderiv(&self, shader: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
8828
8829	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetShaderInfoLog.xhtml>
8830	fn glGetShaderInfoLog(&self, shader: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()>;
8831
8832	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetShaderSource.xhtml>
8833	fn glGetShaderSource(&self, shader: GLuint, bufSize: GLsizei, length: *mut GLsizei, source: *mut GLchar) -> Result<()>;
8834
8835	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformLocation.xhtml>
8836	fn glGetUniformLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint>;
8837
8838	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformfv.xhtml>
8839	fn glGetUniformfv(&self, program: GLuint, location: GLint, params: *mut GLfloat) -> Result<()>;
8840
8841	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformiv.xhtml>
8842	fn glGetUniformiv(&self, program: GLuint, location: GLint, params: *mut GLint) -> Result<()>;
8843
8844	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribdv.xhtml>
8845	fn glGetVertexAttribdv(&self, index: GLuint, pname: GLenum, params: *mut GLdouble) -> Result<()>;
8846
8847	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribfv.xhtml>
8848	fn glGetVertexAttribfv(&self, index: GLuint, pname: GLenum, params: *mut GLfloat) -> Result<()>;
8849
8850	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribiv.xhtml>
8851	fn glGetVertexAttribiv(&self, index: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
8852
8853	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribPointerv.xhtml>
8854	fn glGetVertexAttribPointerv(&self, index: GLuint, pname: GLenum, pointer: *mut *mut c_void) -> Result<()>;
8855
8856	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsProgram.xhtml>
8857	fn glIsProgram(&self, program: GLuint) -> Result<GLboolean>;
8858
8859	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsShader.xhtml>
8860	fn glIsShader(&self, shader: GLuint) -> Result<GLboolean>;
8861
8862	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glLinkProgram.xhtml>
8863	fn glLinkProgram(&self, program: GLuint) -> Result<()>;
8864
8865	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glShaderSource.xhtml>
8866	fn glShaderSource(&self, shader: GLuint, count: GLsizei, string_: *const *const GLchar, length: *const GLint) -> Result<()>;
8867
8868	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUseProgram.xhtml>
8869	fn glUseProgram(&self, program: GLuint) -> Result<()>;
8870
8871	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1f.xhtml>
8872	fn glUniform1f(&self, location: GLint, v0: GLfloat) -> Result<()>;
8873
8874	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2f.xhtml>
8875	fn glUniform2f(&self, location: GLint, v0: GLfloat, v1: GLfloat) -> Result<()>;
8876
8877	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3f.xhtml>
8878	fn glUniform3f(&self, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat) -> Result<()>;
8879
8880	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4f.xhtml>
8881	fn glUniform4f(&self, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat, v3: GLfloat) -> Result<()>;
8882
8883	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1i.xhtml>
8884	fn glUniform1i(&self, location: GLint, v0: GLint) -> Result<()>;
8885
8886	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2i.xhtml>
8887	fn glUniform2i(&self, location: GLint, v0: GLint, v1: GLint) -> Result<()>;
8888
8889	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3i.xhtml>
8890	fn glUniform3i(&self, location: GLint, v0: GLint, v1: GLint, v2: GLint) -> Result<()>;
8891
8892	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4i.xhtml>
8893	fn glUniform4i(&self, location: GLint, v0: GLint, v1: GLint, v2: GLint, v3: GLint) -> Result<()>;
8894
8895	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1fv.xhtml>
8896	fn glUniform1fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
8897
8898	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2fv.xhtml>
8899	fn glUniform2fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
8900
8901	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3fv.xhtml>
8902	fn glUniform3fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
8903
8904	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4fv.xhtml>
8905	fn glUniform4fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
8906
8907	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1iv.xhtml>
8908	fn glUniform1iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
8909
8910	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2iv.xhtml>
8911	fn glUniform2iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
8912
8913	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3iv.xhtml>
8914	fn glUniform3iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
8915
8916	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4iv.xhtml>
8917	fn glUniform4iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
8918
8919	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2fv.xhtml>
8920	fn glUniformMatrix2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
8921
8922	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3fv.xhtml>
8923	fn glUniformMatrix3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
8924
8925	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4fv.xhtml>
8926	fn glUniformMatrix4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
8927
8928	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glValidateProgram.xhtml>
8929	fn glValidateProgram(&self, program: GLuint) -> Result<()>;
8930
8931	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1d.xhtml>
8932	fn glVertexAttrib1d(&self, index: GLuint, x: GLdouble) -> Result<()>;
8933
8934	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1dv.xhtml>
8935	fn glVertexAttrib1dv(&self, index: GLuint, v: *const GLdouble) -> Result<()>;
8936
8937	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1f.xhtml>
8938	fn glVertexAttrib1f(&self, index: GLuint, x: GLfloat) -> Result<()>;
8939
8940	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1fv.xhtml>
8941	fn glVertexAttrib1fv(&self, index: GLuint, v: *const GLfloat) -> Result<()>;
8942
8943	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1s.xhtml>
8944	fn glVertexAttrib1s(&self, index: GLuint, x: GLshort) -> Result<()>;
8945
8946	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1sv.xhtml>
8947	fn glVertexAttrib1sv(&self, index: GLuint, v: *const GLshort) -> Result<()>;
8948
8949	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2d.xhtml>
8950	fn glVertexAttrib2d(&self, index: GLuint, x: GLdouble, y: GLdouble) -> Result<()>;
8951
8952	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2dv.xhtml>
8953	fn glVertexAttrib2dv(&self, index: GLuint, v: *const GLdouble) -> Result<()>;
8954
8955	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2f.xhtml>
8956	fn glVertexAttrib2f(&self, index: GLuint, x: GLfloat, y: GLfloat) -> Result<()>;
8957
8958	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2fv.xhtml>
8959	fn glVertexAttrib2fv(&self, index: GLuint, v: *const GLfloat) -> Result<()>;
8960
8961	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2s.xhtml>
8962	fn glVertexAttrib2s(&self, index: GLuint, x: GLshort, y: GLshort) -> Result<()>;
8963
8964	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2sv.xhtml>
8965	fn glVertexAttrib2sv(&self, index: GLuint, v: *const GLshort) -> Result<()>;
8966
8967	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3d.xhtml>
8968	fn glVertexAttrib3d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble) -> Result<()>;
8969
8970	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3dv.xhtml>
8971	fn glVertexAttrib3dv(&self, index: GLuint, v: *const GLdouble) -> Result<()>;
8972
8973	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3f.xhtml>
8974	fn glVertexAttrib3f(&self, index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat) -> Result<()>;
8975
8976	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3fv.xhtml>
8977	fn glVertexAttrib3fv(&self, index: GLuint, v: *const GLfloat) -> Result<()>;
8978
8979	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3s.xhtml>
8980	fn glVertexAttrib3s(&self, index: GLuint, x: GLshort, y: GLshort, z: GLshort) -> Result<()>;
8981
8982	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3sv.xhtml>
8983	fn glVertexAttrib3sv(&self, index: GLuint, v: *const GLshort) -> Result<()>;
8984
8985	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nbv.xhtml>
8986	fn glVertexAttrib4Nbv(&self, index: GLuint, v: *const GLbyte) -> Result<()>;
8987
8988	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Niv.xhtml>
8989	fn glVertexAttrib4Niv(&self, index: GLuint, v: *const GLint) -> Result<()>;
8990
8991	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nsv.xhtml>
8992	fn glVertexAttrib4Nsv(&self, index: GLuint, v: *const GLshort) -> Result<()>;
8993
8994	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nub.xhtml>
8995	fn glVertexAttrib4Nub(&self, index: GLuint, x: GLubyte, y: GLubyte, z: GLubyte, w: GLubyte) -> Result<()>;
8996
8997	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nubv.xhtml>
8998	fn glVertexAttrib4Nubv(&self, index: GLuint, v: *const GLubyte) -> Result<()>;
8999
9000	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nuiv.xhtml>
9001	fn glVertexAttrib4Nuiv(&self, index: GLuint, v: *const GLuint) -> Result<()>;
9002
9003	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nusv.xhtml>
9004	fn glVertexAttrib4Nusv(&self, index: GLuint, v: *const GLushort) -> Result<()>;
9005
9006	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4bv.xhtml>
9007	fn glVertexAttrib4bv(&self, index: GLuint, v: *const GLbyte) -> Result<()>;
9008
9009	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4d.xhtml>
9010	fn glVertexAttrib4d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble, w: GLdouble) -> Result<()>;
9011
9012	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4dv.xhtml>
9013	fn glVertexAttrib4dv(&self, index: GLuint, v: *const GLdouble) -> Result<()>;
9014
9015	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4f.xhtml>
9016	fn glVertexAttrib4f(&self, index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat, w: GLfloat) -> Result<()>;
9017
9018	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4fv.xhtml>
9019	fn glVertexAttrib4fv(&self, index: GLuint, v: *const GLfloat) -> Result<()>;
9020
9021	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4iv.xhtml>
9022	fn glVertexAttrib4iv(&self, index: GLuint, v: *const GLint) -> Result<()>;
9023
9024	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4s.xhtml>
9025	fn glVertexAttrib4s(&self, index: GLuint, x: GLshort, y: GLshort, z: GLshort, w: GLshort) -> Result<()>;
9026
9027	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4sv.xhtml>
9028	fn glVertexAttrib4sv(&self, index: GLuint, v: *const GLshort) -> Result<()>;
9029
9030	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4ubv.xhtml>
9031	fn glVertexAttrib4ubv(&self, index: GLuint, v: *const GLubyte) -> Result<()>;
9032
9033	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4uiv.xhtml>
9034	fn glVertexAttrib4uiv(&self, index: GLuint, v: *const GLuint) -> Result<()>;
9035
9036	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4usv.xhtml>
9037	fn glVertexAttrib4usv(&self, index: GLuint, v: *const GLushort) -> Result<()>;
9038
9039	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribPointer.xhtml>
9040	fn glVertexAttribPointer(&self, index: GLuint, size: GLint, type_: GLenum, normalized: GLboolean, stride: GLsizei, pointer: *const c_void) -> Result<()>;
9041	fn get_shading_language_version(&self) -> &'static str;
9042}
9043/// Functions from OpenGL version 2.0
9044#[derive(Clone, Copy, PartialEq, Eq, Hash)]
9045pub struct Version20 {
9046	/// The version of the OpenGL shading language
9047	shading_language_version: &'static str,
9048
9049	/// Is OpenGL version 2.0 available
9050	available: bool,
9051
9052	/// The function pointer to `glGetError()`
9053	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
9054	pub geterror: PFNGLGETERRORPROC,
9055
9056	/// The function pointer to `glBlendEquationSeparate()`
9057	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendEquationSeparate.xhtml>
9058	pub blendequationseparate: PFNGLBLENDEQUATIONSEPARATEPROC,
9059
9060	/// The function pointer to `glDrawBuffers()`
9061	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawBuffers.xhtml>
9062	pub drawbuffers: PFNGLDRAWBUFFERSPROC,
9063
9064	/// The function pointer to `glStencilOpSeparate()`
9065	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilOpSeparate.xhtml>
9066	pub stencilopseparate: PFNGLSTENCILOPSEPARATEPROC,
9067
9068	/// The function pointer to `glStencilFuncSeparate()`
9069	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilFuncSeparate.xhtml>
9070	pub stencilfuncseparate: PFNGLSTENCILFUNCSEPARATEPROC,
9071
9072	/// The function pointer to `glStencilMaskSeparate()`
9073	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilMaskSeparate.xhtml>
9074	pub stencilmaskseparate: PFNGLSTENCILMASKSEPARATEPROC,
9075
9076	/// The function pointer to `glAttachShader()`
9077	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glAttachShader.xhtml>
9078	pub attachshader: PFNGLATTACHSHADERPROC,
9079
9080	/// The function pointer to `glBindAttribLocation()`
9081	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindAttribLocation.xhtml>
9082	pub bindattriblocation: PFNGLBINDATTRIBLOCATIONPROC,
9083
9084	/// The function pointer to `glCompileShader()`
9085	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompileShader.xhtml>
9086	pub compileshader: PFNGLCOMPILESHADERPROC,
9087
9088	/// The function pointer to `glCreateProgram()`
9089	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateProgram.xhtml>
9090	pub createprogram: PFNGLCREATEPROGRAMPROC,
9091
9092	/// The function pointer to `glCreateShader()`
9093	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateShader.xhtml>
9094	pub createshader: PFNGLCREATESHADERPROC,
9095
9096	/// The function pointer to `glDeleteProgram()`
9097	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteProgram.xhtml>
9098	pub deleteprogram: PFNGLDELETEPROGRAMPROC,
9099
9100	/// The function pointer to `glDeleteShader()`
9101	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteShader.xhtml>
9102	pub deleteshader: PFNGLDELETESHADERPROC,
9103
9104	/// The function pointer to `glDetachShader()`
9105	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDetachShader.xhtml>
9106	pub detachshader: PFNGLDETACHSHADERPROC,
9107
9108	/// The function pointer to `glDisableVertexAttribArray()`
9109	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDisableVertexAttribArray.xhtml>
9110	pub disablevertexattribarray: PFNGLDISABLEVERTEXATTRIBARRAYPROC,
9111
9112	/// The function pointer to `glEnableVertexAttribArray()`
9113	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEnableVertexAttribArray.xhtml>
9114	pub enablevertexattribarray: PFNGLENABLEVERTEXATTRIBARRAYPROC,
9115
9116	/// The function pointer to `glGetActiveAttrib()`
9117	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveAttrib.xhtml>
9118	pub getactiveattrib: PFNGLGETACTIVEATTRIBPROC,
9119
9120	/// The function pointer to `glGetActiveUniform()`
9121	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveUniform.xhtml>
9122	pub getactiveuniform: PFNGLGETACTIVEUNIFORMPROC,
9123
9124	/// The function pointer to `glGetAttachedShaders()`
9125	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetAttachedShaders.xhtml>
9126	pub getattachedshaders: PFNGLGETATTACHEDSHADERSPROC,
9127
9128	/// The function pointer to `glGetAttribLocation()`
9129	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetAttribLocation.xhtml>
9130	pub getattriblocation: PFNGLGETATTRIBLOCATIONPROC,
9131
9132	/// The function pointer to `glGetProgramiv()`
9133	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramiv.xhtml>
9134	pub getprogramiv: PFNGLGETPROGRAMIVPROC,
9135
9136	/// The function pointer to `glGetProgramInfoLog()`
9137	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramInfoLog.xhtml>
9138	pub getprograminfolog: PFNGLGETPROGRAMINFOLOGPROC,
9139
9140	/// The function pointer to `glGetShaderiv()`
9141	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetShaderiv.xhtml>
9142	pub getshaderiv: PFNGLGETSHADERIVPROC,
9143
9144	/// The function pointer to `glGetShaderInfoLog()`
9145	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetShaderInfoLog.xhtml>
9146	pub getshaderinfolog: PFNGLGETSHADERINFOLOGPROC,
9147
9148	/// The function pointer to `glGetShaderSource()`
9149	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetShaderSource.xhtml>
9150	pub getshadersource: PFNGLGETSHADERSOURCEPROC,
9151
9152	/// The function pointer to `glGetUniformLocation()`
9153	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformLocation.xhtml>
9154	pub getuniformlocation: PFNGLGETUNIFORMLOCATIONPROC,
9155
9156	/// The function pointer to `glGetUniformfv()`
9157	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformfv.xhtml>
9158	pub getuniformfv: PFNGLGETUNIFORMFVPROC,
9159
9160	/// The function pointer to `glGetUniformiv()`
9161	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformiv.xhtml>
9162	pub getuniformiv: PFNGLGETUNIFORMIVPROC,
9163
9164	/// The function pointer to `glGetVertexAttribdv()`
9165	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribdv.xhtml>
9166	pub getvertexattribdv: PFNGLGETVERTEXATTRIBDVPROC,
9167
9168	/// The function pointer to `glGetVertexAttribfv()`
9169	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribfv.xhtml>
9170	pub getvertexattribfv: PFNGLGETVERTEXATTRIBFVPROC,
9171
9172	/// The function pointer to `glGetVertexAttribiv()`
9173	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribiv.xhtml>
9174	pub getvertexattribiv: PFNGLGETVERTEXATTRIBIVPROC,
9175
9176	/// The function pointer to `glGetVertexAttribPointerv()`
9177	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribPointerv.xhtml>
9178	pub getvertexattribpointerv: PFNGLGETVERTEXATTRIBPOINTERVPROC,
9179
9180	/// The function pointer to `glIsProgram()`
9181	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsProgram.xhtml>
9182	pub isprogram: PFNGLISPROGRAMPROC,
9183
9184	/// The function pointer to `glIsShader()`
9185	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsShader.xhtml>
9186	pub isshader: PFNGLISSHADERPROC,
9187
9188	/// The function pointer to `glLinkProgram()`
9189	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glLinkProgram.xhtml>
9190	pub linkprogram: PFNGLLINKPROGRAMPROC,
9191
9192	/// The function pointer to `glShaderSource()`
9193	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glShaderSource.xhtml>
9194	pub shadersource: PFNGLSHADERSOURCEPROC,
9195
9196	/// The function pointer to `glUseProgram()`
9197	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUseProgram.xhtml>
9198	pub useprogram: PFNGLUSEPROGRAMPROC,
9199
9200	/// The function pointer to `glUniform1f()`
9201	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1f.xhtml>
9202	pub uniform1f: PFNGLUNIFORM1FPROC,
9203
9204	/// The function pointer to `glUniform2f()`
9205	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2f.xhtml>
9206	pub uniform2f: PFNGLUNIFORM2FPROC,
9207
9208	/// The function pointer to `glUniform3f()`
9209	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3f.xhtml>
9210	pub uniform3f: PFNGLUNIFORM3FPROC,
9211
9212	/// The function pointer to `glUniform4f()`
9213	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4f.xhtml>
9214	pub uniform4f: PFNGLUNIFORM4FPROC,
9215
9216	/// The function pointer to `glUniform1i()`
9217	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1i.xhtml>
9218	pub uniform1i: PFNGLUNIFORM1IPROC,
9219
9220	/// The function pointer to `glUniform2i()`
9221	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2i.xhtml>
9222	pub uniform2i: PFNGLUNIFORM2IPROC,
9223
9224	/// The function pointer to `glUniform3i()`
9225	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3i.xhtml>
9226	pub uniform3i: PFNGLUNIFORM3IPROC,
9227
9228	/// The function pointer to `glUniform4i()`
9229	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4i.xhtml>
9230	pub uniform4i: PFNGLUNIFORM4IPROC,
9231
9232	/// The function pointer to `glUniform1fv()`
9233	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1fv.xhtml>
9234	pub uniform1fv: PFNGLUNIFORM1FVPROC,
9235
9236	/// The function pointer to `glUniform2fv()`
9237	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2fv.xhtml>
9238	pub uniform2fv: PFNGLUNIFORM2FVPROC,
9239
9240	/// The function pointer to `glUniform3fv()`
9241	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3fv.xhtml>
9242	pub uniform3fv: PFNGLUNIFORM3FVPROC,
9243
9244	/// The function pointer to `glUniform4fv()`
9245	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4fv.xhtml>
9246	pub uniform4fv: PFNGLUNIFORM4FVPROC,
9247
9248	/// The function pointer to `glUniform1iv()`
9249	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1iv.xhtml>
9250	pub uniform1iv: PFNGLUNIFORM1IVPROC,
9251
9252	/// The function pointer to `glUniform2iv()`
9253	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2iv.xhtml>
9254	pub uniform2iv: PFNGLUNIFORM2IVPROC,
9255
9256	/// The function pointer to `glUniform3iv()`
9257	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3iv.xhtml>
9258	pub uniform3iv: PFNGLUNIFORM3IVPROC,
9259
9260	/// The function pointer to `glUniform4iv()`
9261	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4iv.xhtml>
9262	pub uniform4iv: PFNGLUNIFORM4IVPROC,
9263
9264	/// The function pointer to `glUniformMatrix2fv()`
9265	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2fv.xhtml>
9266	pub uniformmatrix2fv: PFNGLUNIFORMMATRIX2FVPROC,
9267
9268	/// The function pointer to `glUniformMatrix3fv()`
9269	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3fv.xhtml>
9270	pub uniformmatrix3fv: PFNGLUNIFORMMATRIX3FVPROC,
9271
9272	/// The function pointer to `glUniformMatrix4fv()`
9273	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4fv.xhtml>
9274	pub uniformmatrix4fv: PFNGLUNIFORMMATRIX4FVPROC,
9275
9276	/// The function pointer to `glValidateProgram()`
9277	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glValidateProgram.xhtml>
9278	pub validateprogram: PFNGLVALIDATEPROGRAMPROC,
9279
9280	/// The function pointer to `glVertexAttrib1d()`
9281	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1d.xhtml>
9282	pub vertexattrib1d: PFNGLVERTEXATTRIB1DPROC,
9283
9284	/// The function pointer to `glVertexAttrib1dv()`
9285	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1dv.xhtml>
9286	pub vertexattrib1dv: PFNGLVERTEXATTRIB1DVPROC,
9287
9288	/// The function pointer to `glVertexAttrib1f()`
9289	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1f.xhtml>
9290	pub vertexattrib1f: PFNGLVERTEXATTRIB1FPROC,
9291
9292	/// The function pointer to `glVertexAttrib1fv()`
9293	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1fv.xhtml>
9294	pub vertexattrib1fv: PFNGLVERTEXATTRIB1FVPROC,
9295
9296	/// The function pointer to `glVertexAttrib1s()`
9297	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1s.xhtml>
9298	pub vertexattrib1s: PFNGLVERTEXATTRIB1SPROC,
9299
9300	/// The function pointer to `glVertexAttrib1sv()`
9301	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1sv.xhtml>
9302	pub vertexattrib1sv: PFNGLVERTEXATTRIB1SVPROC,
9303
9304	/// The function pointer to `glVertexAttrib2d()`
9305	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2d.xhtml>
9306	pub vertexattrib2d: PFNGLVERTEXATTRIB2DPROC,
9307
9308	/// The function pointer to `glVertexAttrib2dv()`
9309	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2dv.xhtml>
9310	pub vertexattrib2dv: PFNGLVERTEXATTRIB2DVPROC,
9311
9312	/// The function pointer to `glVertexAttrib2f()`
9313	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2f.xhtml>
9314	pub vertexattrib2f: PFNGLVERTEXATTRIB2FPROC,
9315
9316	/// The function pointer to `glVertexAttrib2fv()`
9317	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2fv.xhtml>
9318	pub vertexattrib2fv: PFNGLVERTEXATTRIB2FVPROC,
9319
9320	/// The function pointer to `glVertexAttrib2s()`
9321	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2s.xhtml>
9322	pub vertexattrib2s: PFNGLVERTEXATTRIB2SPROC,
9323
9324	/// The function pointer to `glVertexAttrib2sv()`
9325	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2sv.xhtml>
9326	pub vertexattrib2sv: PFNGLVERTEXATTRIB2SVPROC,
9327
9328	/// The function pointer to `glVertexAttrib3d()`
9329	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3d.xhtml>
9330	pub vertexattrib3d: PFNGLVERTEXATTRIB3DPROC,
9331
9332	/// The function pointer to `glVertexAttrib3dv()`
9333	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3dv.xhtml>
9334	pub vertexattrib3dv: PFNGLVERTEXATTRIB3DVPROC,
9335
9336	/// The function pointer to `glVertexAttrib3f()`
9337	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3f.xhtml>
9338	pub vertexattrib3f: PFNGLVERTEXATTRIB3FPROC,
9339
9340	/// The function pointer to `glVertexAttrib3fv()`
9341	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3fv.xhtml>
9342	pub vertexattrib3fv: PFNGLVERTEXATTRIB3FVPROC,
9343
9344	/// The function pointer to `glVertexAttrib3s()`
9345	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3s.xhtml>
9346	pub vertexattrib3s: PFNGLVERTEXATTRIB3SPROC,
9347
9348	/// The function pointer to `glVertexAttrib3sv()`
9349	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3sv.xhtml>
9350	pub vertexattrib3sv: PFNGLVERTEXATTRIB3SVPROC,
9351
9352	/// The function pointer to `glVertexAttrib4Nbv()`
9353	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nbv.xhtml>
9354	pub vertexattrib4nbv: PFNGLVERTEXATTRIB4NBVPROC,
9355
9356	/// The function pointer to `glVertexAttrib4Niv()`
9357	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Niv.xhtml>
9358	pub vertexattrib4niv: PFNGLVERTEXATTRIB4NIVPROC,
9359
9360	/// The function pointer to `glVertexAttrib4Nsv()`
9361	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nsv.xhtml>
9362	pub vertexattrib4nsv: PFNGLVERTEXATTRIB4NSVPROC,
9363
9364	/// The function pointer to `glVertexAttrib4Nub()`
9365	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nub.xhtml>
9366	pub vertexattrib4nub: PFNGLVERTEXATTRIB4NUBPROC,
9367
9368	/// The function pointer to `glVertexAttrib4Nubv()`
9369	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nubv.xhtml>
9370	pub vertexattrib4nubv: PFNGLVERTEXATTRIB4NUBVPROC,
9371
9372	/// The function pointer to `glVertexAttrib4Nuiv()`
9373	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nuiv.xhtml>
9374	pub vertexattrib4nuiv: PFNGLVERTEXATTRIB4NUIVPROC,
9375
9376	/// The function pointer to `glVertexAttrib4Nusv()`
9377	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nusv.xhtml>
9378	pub vertexattrib4nusv: PFNGLVERTEXATTRIB4NUSVPROC,
9379
9380	/// The function pointer to `glVertexAttrib4bv()`
9381	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4bv.xhtml>
9382	pub vertexattrib4bv: PFNGLVERTEXATTRIB4BVPROC,
9383
9384	/// The function pointer to `glVertexAttrib4d()`
9385	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4d.xhtml>
9386	pub vertexattrib4d: PFNGLVERTEXATTRIB4DPROC,
9387
9388	/// The function pointer to `glVertexAttrib4dv()`
9389	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4dv.xhtml>
9390	pub vertexattrib4dv: PFNGLVERTEXATTRIB4DVPROC,
9391
9392	/// The function pointer to `glVertexAttrib4f()`
9393	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4f.xhtml>
9394	pub vertexattrib4f: PFNGLVERTEXATTRIB4FPROC,
9395
9396	/// The function pointer to `glVertexAttrib4fv()`
9397	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4fv.xhtml>
9398	pub vertexattrib4fv: PFNGLVERTEXATTRIB4FVPROC,
9399
9400	/// The function pointer to `glVertexAttrib4iv()`
9401	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4iv.xhtml>
9402	pub vertexattrib4iv: PFNGLVERTEXATTRIB4IVPROC,
9403
9404	/// The function pointer to `glVertexAttrib4s()`
9405	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4s.xhtml>
9406	pub vertexattrib4s: PFNGLVERTEXATTRIB4SPROC,
9407
9408	/// The function pointer to `glVertexAttrib4sv()`
9409	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4sv.xhtml>
9410	pub vertexattrib4sv: PFNGLVERTEXATTRIB4SVPROC,
9411
9412	/// The function pointer to `glVertexAttrib4ubv()`
9413	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4ubv.xhtml>
9414	pub vertexattrib4ubv: PFNGLVERTEXATTRIB4UBVPROC,
9415
9416	/// The function pointer to `glVertexAttrib4uiv()`
9417	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4uiv.xhtml>
9418	pub vertexattrib4uiv: PFNGLVERTEXATTRIB4UIVPROC,
9419
9420	/// The function pointer to `glVertexAttrib4usv()`
9421	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4usv.xhtml>
9422	pub vertexattrib4usv: PFNGLVERTEXATTRIB4USVPROC,
9423
9424	/// The function pointer to `glVertexAttribPointer()`
9425	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribPointer.xhtml>
9426	pub vertexattribpointer: PFNGLVERTEXATTRIBPOINTERPROC,
9427}
9428
9429impl GL_2_0 for Version20 {
9430	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
9431	#[inline(always)]
9432	fn glGetError(&self) -> GLenum {
9433		(self.geterror)()
9434	}
9435	#[inline(always)]
9436	fn glBlendEquationSeparate(&self, modeRGB: GLenum, modeAlpha: GLenum) -> Result<()> {
9437		#[cfg(feature = "catch_nullptr")]
9438		let ret = process_catch("glBlendEquationSeparate", catch_unwind(||(self.blendequationseparate)(modeRGB, modeAlpha)));
9439		#[cfg(not(feature = "catch_nullptr"))]
9440		let ret = {(self.blendequationseparate)(modeRGB, modeAlpha); Ok(())};
9441		#[cfg(feature = "diagnose")]
9442		if let Ok(ret) = ret {
9443			return to_result("glBlendEquationSeparate", ret, self.glGetError());
9444		} else {
9445			return ret
9446		}
9447		#[cfg(not(feature = "diagnose"))]
9448		return ret;
9449	}
9450	#[inline(always)]
9451	fn glDrawBuffers(&self, n: GLsizei, bufs: *const GLenum) -> Result<()> {
9452		#[cfg(feature = "catch_nullptr")]
9453		let ret = process_catch("glDrawBuffers", catch_unwind(||(self.drawbuffers)(n, bufs)));
9454		#[cfg(not(feature = "catch_nullptr"))]
9455		let ret = {(self.drawbuffers)(n, bufs); Ok(())};
9456		#[cfg(feature = "diagnose")]
9457		if let Ok(ret) = ret {
9458			return to_result("glDrawBuffers", ret, self.glGetError());
9459		} else {
9460			return ret
9461		}
9462		#[cfg(not(feature = "diagnose"))]
9463		return ret;
9464	}
9465	#[inline(always)]
9466	fn glStencilOpSeparate(&self, face: GLenum, sfail: GLenum, dpfail: GLenum, dppass: GLenum) -> Result<()> {
9467		#[cfg(feature = "catch_nullptr")]
9468		let ret = process_catch("glStencilOpSeparate", catch_unwind(||(self.stencilopseparate)(face, sfail, dpfail, dppass)));
9469		#[cfg(not(feature = "catch_nullptr"))]
9470		let ret = {(self.stencilopseparate)(face, sfail, dpfail, dppass); Ok(())};
9471		#[cfg(feature = "diagnose")]
9472		if let Ok(ret) = ret {
9473			return to_result("glStencilOpSeparate", ret, self.glGetError());
9474		} else {
9475			return ret
9476		}
9477		#[cfg(not(feature = "diagnose"))]
9478		return ret;
9479	}
9480	#[inline(always)]
9481	fn glStencilFuncSeparate(&self, face: GLenum, func: GLenum, ref_: GLint, mask: GLuint) -> Result<()> {
9482		#[cfg(feature = "catch_nullptr")]
9483		let ret = process_catch("glStencilFuncSeparate", catch_unwind(||(self.stencilfuncseparate)(face, func, ref_, mask)));
9484		#[cfg(not(feature = "catch_nullptr"))]
9485		let ret = {(self.stencilfuncseparate)(face, func, ref_, mask); Ok(())};
9486		#[cfg(feature = "diagnose")]
9487		if let Ok(ret) = ret {
9488			return to_result("glStencilFuncSeparate", ret, self.glGetError());
9489		} else {
9490			return ret
9491		}
9492		#[cfg(not(feature = "diagnose"))]
9493		return ret;
9494	}
9495	#[inline(always)]
9496	fn glStencilMaskSeparate(&self, face: GLenum, mask: GLuint) -> Result<()> {
9497		#[cfg(feature = "catch_nullptr")]
9498		let ret = process_catch("glStencilMaskSeparate", catch_unwind(||(self.stencilmaskseparate)(face, mask)));
9499		#[cfg(not(feature = "catch_nullptr"))]
9500		let ret = {(self.stencilmaskseparate)(face, mask); Ok(())};
9501		#[cfg(feature = "diagnose")]
9502		if let Ok(ret) = ret {
9503			return to_result("glStencilMaskSeparate", ret, self.glGetError());
9504		} else {
9505			return ret
9506		}
9507		#[cfg(not(feature = "diagnose"))]
9508		return ret;
9509	}
9510	#[inline(always)]
9511	fn glAttachShader(&self, program: GLuint, shader: GLuint) -> Result<()> {
9512		#[cfg(feature = "catch_nullptr")]
9513		let ret = process_catch("glAttachShader", catch_unwind(||(self.attachshader)(program, shader)));
9514		#[cfg(not(feature = "catch_nullptr"))]
9515		let ret = {(self.attachshader)(program, shader); Ok(())};
9516		#[cfg(feature = "diagnose")]
9517		if let Ok(ret) = ret {
9518			return to_result("glAttachShader", ret, self.glGetError());
9519		} else {
9520			return ret
9521		}
9522		#[cfg(not(feature = "diagnose"))]
9523		return ret;
9524	}
9525	#[inline(always)]
9526	fn glBindAttribLocation(&self, program: GLuint, index: GLuint, name: *const GLchar) -> Result<()> {
9527		#[cfg(feature = "catch_nullptr")]
9528		let ret = process_catch("glBindAttribLocation", catch_unwind(||(self.bindattriblocation)(program, index, name)));
9529		#[cfg(not(feature = "catch_nullptr"))]
9530		let ret = {(self.bindattriblocation)(program, index, name); Ok(())};
9531		#[cfg(feature = "diagnose")]
9532		if let Ok(ret) = ret {
9533			return to_result("glBindAttribLocation", ret, self.glGetError());
9534		} else {
9535			return ret
9536		}
9537		#[cfg(not(feature = "diagnose"))]
9538		return ret;
9539	}
9540	#[inline(always)]
9541	fn glCompileShader(&self, shader: GLuint) -> Result<()> {
9542		#[cfg(feature = "catch_nullptr")]
9543		let ret = process_catch("glCompileShader", catch_unwind(||(self.compileshader)(shader)));
9544		#[cfg(not(feature = "catch_nullptr"))]
9545		let ret = {(self.compileshader)(shader); Ok(())};
9546		#[cfg(feature = "diagnose")]
9547		if let Ok(ret) = ret {
9548			return to_result("glCompileShader", ret, self.glGetError());
9549		} else {
9550			return ret
9551		}
9552		#[cfg(not(feature = "diagnose"))]
9553		return ret;
9554	}
9555	#[inline(always)]
9556	fn glCreateProgram(&self) -> Result<GLuint> {
9557		#[cfg(feature = "catch_nullptr")]
9558		let ret = process_catch("glCreateProgram", catch_unwind(||(self.createprogram)()));
9559		#[cfg(not(feature = "catch_nullptr"))]
9560		let ret = Ok((self.createprogram)());
9561		#[cfg(feature = "diagnose")]
9562		if let Ok(ret) = ret {
9563			return to_result("glCreateProgram", ret, self.glGetError());
9564		} else {
9565			return ret
9566		}
9567		#[cfg(not(feature = "diagnose"))]
9568		return ret;
9569	}
9570	#[inline(always)]
9571	fn glCreateShader(&self, type_: GLenum) -> Result<GLuint> {
9572		#[cfg(feature = "catch_nullptr")]
9573		let ret = process_catch("glCreateShader", catch_unwind(||(self.createshader)(type_)));
9574		#[cfg(not(feature = "catch_nullptr"))]
9575		let ret = Ok((self.createshader)(type_));
9576		#[cfg(feature = "diagnose")]
9577		if let Ok(ret) = ret {
9578			return to_result("glCreateShader", ret, self.glGetError());
9579		} else {
9580			return ret
9581		}
9582		#[cfg(not(feature = "diagnose"))]
9583		return ret;
9584	}
9585	#[inline(always)]
9586	fn glDeleteProgram(&self, program: GLuint) -> Result<()> {
9587		#[cfg(feature = "catch_nullptr")]
9588		let ret = process_catch("glDeleteProgram", catch_unwind(||(self.deleteprogram)(program)));
9589		#[cfg(not(feature = "catch_nullptr"))]
9590		let ret = {(self.deleteprogram)(program); Ok(())};
9591		#[cfg(feature = "diagnose")]
9592		if let Ok(ret) = ret {
9593			return to_result("glDeleteProgram", ret, self.glGetError());
9594		} else {
9595			return ret
9596		}
9597		#[cfg(not(feature = "diagnose"))]
9598		return ret;
9599	}
9600	#[inline(always)]
9601	fn glDeleteShader(&self, shader: GLuint) -> Result<()> {
9602		#[cfg(feature = "catch_nullptr")]
9603		let ret = process_catch("glDeleteShader", catch_unwind(||(self.deleteshader)(shader)));
9604		#[cfg(not(feature = "catch_nullptr"))]
9605		let ret = {(self.deleteshader)(shader); Ok(())};
9606		#[cfg(feature = "diagnose")]
9607		if let Ok(ret) = ret {
9608			return to_result("glDeleteShader", ret, self.glGetError());
9609		} else {
9610			return ret
9611		}
9612		#[cfg(not(feature = "diagnose"))]
9613		return ret;
9614	}
9615	#[inline(always)]
9616	fn glDetachShader(&self, program: GLuint, shader: GLuint) -> Result<()> {
9617		#[cfg(feature = "catch_nullptr")]
9618		let ret = process_catch("glDetachShader", catch_unwind(||(self.detachshader)(program, shader)));
9619		#[cfg(not(feature = "catch_nullptr"))]
9620		let ret = {(self.detachshader)(program, shader); Ok(())};
9621		#[cfg(feature = "diagnose")]
9622		if let Ok(ret) = ret {
9623			return to_result("glDetachShader", ret, self.glGetError());
9624		} else {
9625			return ret
9626		}
9627		#[cfg(not(feature = "diagnose"))]
9628		return ret;
9629	}
9630	#[inline(always)]
9631	fn glDisableVertexAttribArray(&self, index: GLuint) -> Result<()> {
9632		#[cfg(feature = "catch_nullptr")]
9633		let ret = process_catch("glDisableVertexAttribArray", catch_unwind(||(self.disablevertexattribarray)(index)));
9634		#[cfg(not(feature = "catch_nullptr"))]
9635		let ret = {(self.disablevertexattribarray)(index); Ok(())};
9636		#[cfg(feature = "diagnose")]
9637		if let Ok(ret) = ret {
9638			return to_result("glDisableVertexAttribArray", ret, self.glGetError());
9639		} else {
9640			return ret
9641		}
9642		#[cfg(not(feature = "diagnose"))]
9643		return ret;
9644	}
9645	#[inline(always)]
9646	fn glEnableVertexAttribArray(&self, index: GLuint) -> Result<()> {
9647		#[cfg(feature = "catch_nullptr")]
9648		let ret = process_catch("glEnableVertexAttribArray", catch_unwind(||(self.enablevertexattribarray)(index)));
9649		#[cfg(not(feature = "catch_nullptr"))]
9650		let ret = {(self.enablevertexattribarray)(index); Ok(())};
9651		#[cfg(feature = "diagnose")]
9652		if let Ok(ret) = ret {
9653			return to_result("glEnableVertexAttribArray", ret, self.glGetError());
9654		} else {
9655			return ret
9656		}
9657		#[cfg(not(feature = "diagnose"))]
9658		return ret;
9659	}
9660	#[inline(always)]
9661	fn glGetActiveAttrib(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLint, type_: *mut GLenum, name: *mut GLchar) -> Result<()> {
9662		#[cfg(feature = "catch_nullptr")]
9663		let ret = process_catch("glGetActiveAttrib", catch_unwind(||(self.getactiveattrib)(program, index, bufSize, length, size, type_, name)));
9664		#[cfg(not(feature = "catch_nullptr"))]
9665		let ret = {(self.getactiveattrib)(program, index, bufSize, length, size, type_, name); Ok(())};
9666		#[cfg(feature = "diagnose")]
9667		if let Ok(ret) = ret {
9668			return to_result("glGetActiveAttrib", ret, self.glGetError());
9669		} else {
9670			return ret
9671		}
9672		#[cfg(not(feature = "diagnose"))]
9673		return ret;
9674	}
9675	#[inline(always)]
9676	fn glGetActiveUniform(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLint, type_: *mut GLenum, name: *mut GLchar) -> Result<()> {
9677		#[cfg(feature = "catch_nullptr")]
9678		let ret = process_catch("glGetActiveUniform", catch_unwind(||(self.getactiveuniform)(program, index, bufSize, length, size, type_, name)));
9679		#[cfg(not(feature = "catch_nullptr"))]
9680		let ret = {(self.getactiveuniform)(program, index, bufSize, length, size, type_, name); Ok(())};
9681		#[cfg(feature = "diagnose")]
9682		if let Ok(ret) = ret {
9683			return to_result("glGetActiveUniform", ret, self.glGetError());
9684		} else {
9685			return ret
9686		}
9687		#[cfg(not(feature = "diagnose"))]
9688		return ret;
9689	}
9690	#[inline(always)]
9691	fn glGetAttachedShaders(&self, program: GLuint, maxCount: GLsizei, count: *mut GLsizei, shaders: *mut GLuint) -> Result<()> {
9692		#[cfg(feature = "catch_nullptr")]
9693		let ret = process_catch("glGetAttachedShaders", catch_unwind(||(self.getattachedshaders)(program, maxCount, count, shaders)));
9694		#[cfg(not(feature = "catch_nullptr"))]
9695		let ret = {(self.getattachedshaders)(program, maxCount, count, shaders); Ok(())};
9696		#[cfg(feature = "diagnose")]
9697		if let Ok(ret) = ret {
9698			return to_result("glGetAttachedShaders", ret, self.glGetError());
9699		} else {
9700			return ret
9701		}
9702		#[cfg(not(feature = "diagnose"))]
9703		return ret;
9704	}
9705	#[inline(always)]
9706	fn glGetAttribLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint> {
9707		#[cfg(feature = "catch_nullptr")]
9708		let ret = process_catch("glGetAttribLocation", catch_unwind(||(self.getattriblocation)(program, name)));
9709		#[cfg(not(feature = "catch_nullptr"))]
9710		let ret = Ok((self.getattriblocation)(program, name));
9711		#[cfg(feature = "diagnose")]
9712		if let Ok(ret) = ret {
9713			return to_result("glGetAttribLocation", ret, self.glGetError());
9714		} else {
9715			return ret
9716		}
9717		#[cfg(not(feature = "diagnose"))]
9718		return ret;
9719	}
9720	#[inline(always)]
9721	fn glGetProgramiv(&self, program: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
9722		#[cfg(feature = "catch_nullptr")]
9723		let ret = process_catch("glGetProgramiv", catch_unwind(||(self.getprogramiv)(program, pname, params)));
9724		#[cfg(not(feature = "catch_nullptr"))]
9725		let ret = {(self.getprogramiv)(program, pname, params); Ok(())};
9726		#[cfg(feature = "diagnose")]
9727		if let Ok(ret) = ret {
9728			return to_result("glGetProgramiv", ret, self.glGetError());
9729		} else {
9730			return ret
9731		}
9732		#[cfg(not(feature = "diagnose"))]
9733		return ret;
9734	}
9735	#[inline(always)]
9736	fn glGetProgramInfoLog(&self, program: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()> {
9737		#[cfg(feature = "catch_nullptr")]
9738		let ret = process_catch("glGetProgramInfoLog", catch_unwind(||(self.getprograminfolog)(program, bufSize, length, infoLog)));
9739		#[cfg(not(feature = "catch_nullptr"))]
9740		let ret = {(self.getprograminfolog)(program, bufSize, length, infoLog); Ok(())};
9741		#[cfg(feature = "diagnose")]
9742		if let Ok(ret) = ret {
9743			return to_result("glGetProgramInfoLog", ret, self.glGetError());
9744		} else {
9745			return ret
9746		}
9747		#[cfg(not(feature = "diagnose"))]
9748		return ret;
9749	}
9750	#[inline(always)]
9751	fn glGetShaderiv(&self, shader: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
9752		#[cfg(feature = "catch_nullptr")]
9753		let ret = process_catch("glGetShaderiv", catch_unwind(||(self.getshaderiv)(shader, pname, params)));
9754		#[cfg(not(feature = "catch_nullptr"))]
9755		let ret = {(self.getshaderiv)(shader, pname, params); Ok(())};
9756		#[cfg(feature = "diagnose")]
9757		if let Ok(ret) = ret {
9758			return to_result("glGetShaderiv", ret, self.glGetError());
9759		} else {
9760			return ret
9761		}
9762		#[cfg(not(feature = "diagnose"))]
9763		return ret;
9764	}
9765	#[inline(always)]
9766	fn glGetShaderInfoLog(&self, shader: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()> {
9767		#[cfg(feature = "catch_nullptr")]
9768		let ret = process_catch("glGetShaderInfoLog", catch_unwind(||(self.getshaderinfolog)(shader, bufSize, length, infoLog)));
9769		#[cfg(not(feature = "catch_nullptr"))]
9770		let ret = {(self.getshaderinfolog)(shader, bufSize, length, infoLog); Ok(())};
9771		#[cfg(feature = "diagnose")]
9772		if let Ok(ret) = ret {
9773			return to_result("glGetShaderInfoLog", ret, self.glGetError());
9774		} else {
9775			return ret
9776		}
9777		#[cfg(not(feature = "diagnose"))]
9778		return ret;
9779	}
9780	#[inline(always)]
9781	fn glGetShaderSource(&self, shader: GLuint, bufSize: GLsizei, length: *mut GLsizei, source: *mut GLchar) -> Result<()> {
9782		#[cfg(feature = "catch_nullptr")]
9783		let ret = process_catch("glGetShaderSource", catch_unwind(||(self.getshadersource)(shader, bufSize, length, source)));
9784		#[cfg(not(feature = "catch_nullptr"))]
9785		let ret = {(self.getshadersource)(shader, bufSize, length, source); Ok(())};
9786		#[cfg(feature = "diagnose")]
9787		if let Ok(ret) = ret {
9788			return to_result("glGetShaderSource", ret, self.glGetError());
9789		} else {
9790			return ret
9791		}
9792		#[cfg(not(feature = "diagnose"))]
9793		return ret;
9794	}
9795	#[inline(always)]
9796	fn glGetUniformLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint> {
9797		#[cfg(feature = "catch_nullptr")]
9798		let ret = process_catch("glGetUniformLocation", catch_unwind(||(self.getuniformlocation)(program, name)));
9799		#[cfg(not(feature = "catch_nullptr"))]
9800		let ret = Ok((self.getuniformlocation)(program, name));
9801		#[cfg(feature = "diagnose")]
9802		if let Ok(ret) = ret {
9803			return to_result("glGetUniformLocation", ret, self.glGetError());
9804		} else {
9805			return ret
9806		}
9807		#[cfg(not(feature = "diagnose"))]
9808		return ret;
9809	}
9810	#[inline(always)]
9811	fn glGetUniformfv(&self, program: GLuint, location: GLint, params: *mut GLfloat) -> Result<()> {
9812		#[cfg(feature = "catch_nullptr")]
9813		let ret = process_catch("glGetUniformfv", catch_unwind(||(self.getuniformfv)(program, location, params)));
9814		#[cfg(not(feature = "catch_nullptr"))]
9815		let ret = {(self.getuniformfv)(program, location, params); Ok(())};
9816		#[cfg(feature = "diagnose")]
9817		if let Ok(ret) = ret {
9818			return to_result("glGetUniformfv", ret, self.glGetError());
9819		} else {
9820			return ret
9821		}
9822		#[cfg(not(feature = "diagnose"))]
9823		return ret;
9824	}
9825	#[inline(always)]
9826	fn glGetUniformiv(&self, program: GLuint, location: GLint, params: *mut GLint) -> Result<()> {
9827		#[cfg(feature = "catch_nullptr")]
9828		let ret = process_catch("glGetUniformiv", catch_unwind(||(self.getuniformiv)(program, location, params)));
9829		#[cfg(not(feature = "catch_nullptr"))]
9830		let ret = {(self.getuniformiv)(program, location, params); Ok(())};
9831		#[cfg(feature = "diagnose")]
9832		if let Ok(ret) = ret {
9833			return to_result("glGetUniformiv", ret, self.glGetError());
9834		} else {
9835			return ret
9836		}
9837		#[cfg(not(feature = "diagnose"))]
9838		return ret;
9839	}
9840	#[inline(always)]
9841	fn glGetVertexAttribdv(&self, index: GLuint, pname: GLenum, params: *mut GLdouble) -> Result<()> {
9842		#[cfg(feature = "catch_nullptr")]
9843		let ret = process_catch("glGetVertexAttribdv", catch_unwind(||(self.getvertexattribdv)(index, pname, params)));
9844		#[cfg(not(feature = "catch_nullptr"))]
9845		let ret = {(self.getvertexattribdv)(index, pname, params); Ok(())};
9846		#[cfg(feature = "diagnose")]
9847		if let Ok(ret) = ret {
9848			return to_result("glGetVertexAttribdv", ret, self.glGetError());
9849		} else {
9850			return ret
9851		}
9852		#[cfg(not(feature = "diagnose"))]
9853		return ret;
9854	}
9855	#[inline(always)]
9856	fn glGetVertexAttribfv(&self, index: GLuint, pname: GLenum, params: *mut GLfloat) -> Result<()> {
9857		#[cfg(feature = "catch_nullptr")]
9858		let ret = process_catch("glGetVertexAttribfv", catch_unwind(||(self.getvertexattribfv)(index, pname, params)));
9859		#[cfg(not(feature = "catch_nullptr"))]
9860		let ret = {(self.getvertexattribfv)(index, pname, params); Ok(())};
9861		#[cfg(feature = "diagnose")]
9862		if let Ok(ret) = ret {
9863			return to_result("glGetVertexAttribfv", ret, self.glGetError());
9864		} else {
9865			return ret
9866		}
9867		#[cfg(not(feature = "diagnose"))]
9868		return ret;
9869	}
9870	#[inline(always)]
9871	fn glGetVertexAttribiv(&self, index: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
9872		#[cfg(feature = "catch_nullptr")]
9873		let ret = process_catch("glGetVertexAttribiv", catch_unwind(||(self.getvertexattribiv)(index, pname, params)));
9874		#[cfg(not(feature = "catch_nullptr"))]
9875		let ret = {(self.getvertexattribiv)(index, pname, params); Ok(())};
9876		#[cfg(feature = "diagnose")]
9877		if let Ok(ret) = ret {
9878			return to_result("glGetVertexAttribiv", ret, self.glGetError());
9879		} else {
9880			return ret
9881		}
9882		#[cfg(not(feature = "diagnose"))]
9883		return ret;
9884	}
9885	#[inline(always)]
9886	fn glGetVertexAttribPointerv(&self, index: GLuint, pname: GLenum, pointer: *mut *mut c_void) -> Result<()> {
9887		#[cfg(feature = "catch_nullptr")]
9888		let ret = process_catch("glGetVertexAttribPointerv", catch_unwind(||(self.getvertexattribpointerv)(index, pname, pointer)));
9889		#[cfg(not(feature = "catch_nullptr"))]
9890		let ret = {(self.getvertexattribpointerv)(index, pname, pointer); Ok(())};
9891		#[cfg(feature = "diagnose")]
9892		if let Ok(ret) = ret {
9893			return to_result("glGetVertexAttribPointerv", ret, self.glGetError());
9894		} else {
9895			return ret
9896		}
9897		#[cfg(not(feature = "diagnose"))]
9898		return ret;
9899	}
9900	#[inline(always)]
9901	fn glIsProgram(&self, program: GLuint) -> Result<GLboolean> {
9902		#[cfg(feature = "catch_nullptr")]
9903		let ret = process_catch("glIsProgram", catch_unwind(||(self.isprogram)(program)));
9904		#[cfg(not(feature = "catch_nullptr"))]
9905		let ret = Ok((self.isprogram)(program));
9906		#[cfg(feature = "diagnose")]
9907		if let Ok(ret) = ret {
9908			return to_result("glIsProgram", ret, self.glGetError());
9909		} else {
9910			return ret
9911		}
9912		#[cfg(not(feature = "diagnose"))]
9913		return ret;
9914	}
9915	#[inline(always)]
9916	fn glIsShader(&self, shader: GLuint) -> Result<GLboolean> {
9917		#[cfg(feature = "catch_nullptr")]
9918		let ret = process_catch("glIsShader", catch_unwind(||(self.isshader)(shader)));
9919		#[cfg(not(feature = "catch_nullptr"))]
9920		let ret = Ok((self.isshader)(shader));
9921		#[cfg(feature = "diagnose")]
9922		if let Ok(ret) = ret {
9923			return to_result("glIsShader", ret, self.glGetError());
9924		} else {
9925			return ret
9926		}
9927		#[cfg(not(feature = "diagnose"))]
9928		return ret;
9929	}
9930	#[inline(always)]
9931	fn glLinkProgram(&self, program: GLuint) -> Result<()> {
9932		#[cfg(feature = "catch_nullptr")]
9933		let ret = process_catch("glLinkProgram", catch_unwind(||(self.linkprogram)(program)));
9934		#[cfg(not(feature = "catch_nullptr"))]
9935		let ret = {(self.linkprogram)(program); Ok(())};
9936		#[cfg(feature = "diagnose")]
9937		if let Ok(ret) = ret {
9938			return to_result("glLinkProgram", ret, self.glGetError());
9939		} else {
9940			return ret
9941		}
9942		#[cfg(not(feature = "diagnose"))]
9943		return ret;
9944	}
9945	#[inline(always)]
9946	fn glShaderSource(&self, shader: GLuint, count: GLsizei, string_: *const *const GLchar, length: *const GLint) -> Result<()> {
9947		#[cfg(feature = "catch_nullptr")]
9948		let ret = process_catch("glShaderSource", catch_unwind(||(self.shadersource)(shader, count, string_, length)));
9949		#[cfg(not(feature = "catch_nullptr"))]
9950		let ret = {(self.shadersource)(shader, count, string_, length); Ok(())};
9951		#[cfg(feature = "diagnose")]
9952		if let Ok(ret) = ret {
9953			return to_result("glShaderSource", ret, self.glGetError());
9954		} else {
9955			return ret
9956		}
9957		#[cfg(not(feature = "diagnose"))]
9958		return ret;
9959	}
9960	#[inline(always)]
9961	fn glUseProgram(&self, program: GLuint) -> Result<()> {
9962		#[cfg(feature = "catch_nullptr")]
9963		let ret = process_catch("glUseProgram", catch_unwind(||(self.useprogram)(program)));
9964		#[cfg(not(feature = "catch_nullptr"))]
9965		let ret = {(self.useprogram)(program); Ok(())};
9966		#[cfg(feature = "diagnose")]
9967		if let Ok(ret) = ret {
9968			return to_result("glUseProgram", ret, self.glGetError());
9969		} else {
9970			return ret
9971		}
9972		#[cfg(not(feature = "diagnose"))]
9973		return ret;
9974	}
9975	#[inline(always)]
9976	fn glUniform1f(&self, location: GLint, v0: GLfloat) -> Result<()> {
9977		#[cfg(feature = "catch_nullptr")]
9978		let ret = process_catch("glUniform1f", catch_unwind(||(self.uniform1f)(location, v0)));
9979		#[cfg(not(feature = "catch_nullptr"))]
9980		let ret = {(self.uniform1f)(location, v0); Ok(())};
9981		#[cfg(feature = "diagnose")]
9982		if let Ok(ret) = ret {
9983			return to_result("glUniform1f", ret, self.glGetError());
9984		} else {
9985			return ret
9986		}
9987		#[cfg(not(feature = "diagnose"))]
9988		return ret;
9989	}
9990	#[inline(always)]
9991	fn glUniform2f(&self, location: GLint, v0: GLfloat, v1: GLfloat) -> Result<()> {
9992		#[cfg(feature = "catch_nullptr")]
9993		let ret = process_catch("glUniform2f", catch_unwind(||(self.uniform2f)(location, v0, v1)));
9994		#[cfg(not(feature = "catch_nullptr"))]
9995		let ret = {(self.uniform2f)(location, v0, v1); Ok(())};
9996		#[cfg(feature = "diagnose")]
9997		if let Ok(ret) = ret {
9998			return to_result("glUniform2f", ret, self.glGetError());
9999		} else {
10000			return ret
10001		}
10002		#[cfg(not(feature = "diagnose"))]
10003		return ret;
10004	}
10005	#[inline(always)]
10006	fn glUniform3f(&self, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat) -> Result<()> {
10007		#[cfg(feature = "catch_nullptr")]
10008		let ret = process_catch("glUniform3f", catch_unwind(||(self.uniform3f)(location, v0, v1, v2)));
10009		#[cfg(not(feature = "catch_nullptr"))]
10010		let ret = {(self.uniform3f)(location, v0, v1, v2); Ok(())};
10011		#[cfg(feature = "diagnose")]
10012		if let Ok(ret) = ret {
10013			return to_result("glUniform3f", ret, self.glGetError());
10014		} else {
10015			return ret
10016		}
10017		#[cfg(not(feature = "diagnose"))]
10018		return ret;
10019	}
10020	#[inline(always)]
10021	fn glUniform4f(&self, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat, v3: GLfloat) -> Result<()> {
10022		#[cfg(feature = "catch_nullptr")]
10023		let ret = process_catch("glUniform4f", catch_unwind(||(self.uniform4f)(location, v0, v1, v2, v3)));
10024		#[cfg(not(feature = "catch_nullptr"))]
10025		let ret = {(self.uniform4f)(location, v0, v1, v2, v3); Ok(())};
10026		#[cfg(feature = "diagnose")]
10027		if let Ok(ret) = ret {
10028			return to_result("glUniform4f", ret, self.glGetError());
10029		} else {
10030			return ret
10031		}
10032		#[cfg(not(feature = "diagnose"))]
10033		return ret;
10034	}
10035	#[inline(always)]
10036	fn glUniform1i(&self, location: GLint, v0: GLint) -> Result<()> {
10037		#[cfg(feature = "catch_nullptr")]
10038		let ret = process_catch("glUniform1i", catch_unwind(||(self.uniform1i)(location, v0)));
10039		#[cfg(not(feature = "catch_nullptr"))]
10040		let ret = {(self.uniform1i)(location, v0); Ok(())};
10041		#[cfg(feature = "diagnose")]
10042		if let Ok(ret) = ret {
10043			return to_result("glUniform1i", ret, self.glGetError());
10044		} else {
10045			return ret
10046		}
10047		#[cfg(not(feature = "diagnose"))]
10048		return ret;
10049	}
10050	#[inline(always)]
10051	fn glUniform2i(&self, location: GLint, v0: GLint, v1: GLint) -> Result<()> {
10052		#[cfg(feature = "catch_nullptr")]
10053		let ret = process_catch("glUniform2i", catch_unwind(||(self.uniform2i)(location, v0, v1)));
10054		#[cfg(not(feature = "catch_nullptr"))]
10055		let ret = {(self.uniform2i)(location, v0, v1); Ok(())};
10056		#[cfg(feature = "diagnose")]
10057		if let Ok(ret) = ret {
10058			return to_result("glUniform2i", ret, self.glGetError());
10059		} else {
10060			return ret
10061		}
10062		#[cfg(not(feature = "diagnose"))]
10063		return ret;
10064	}
10065	#[inline(always)]
10066	fn glUniform3i(&self, location: GLint, v0: GLint, v1: GLint, v2: GLint) -> Result<()> {
10067		#[cfg(feature = "catch_nullptr")]
10068		let ret = process_catch("glUniform3i", catch_unwind(||(self.uniform3i)(location, v0, v1, v2)));
10069		#[cfg(not(feature = "catch_nullptr"))]
10070		let ret = {(self.uniform3i)(location, v0, v1, v2); Ok(())};
10071		#[cfg(feature = "diagnose")]
10072		if let Ok(ret) = ret {
10073			return to_result("glUniform3i", ret, self.glGetError());
10074		} else {
10075			return ret
10076		}
10077		#[cfg(not(feature = "diagnose"))]
10078		return ret;
10079	}
10080	#[inline(always)]
10081	fn glUniform4i(&self, location: GLint, v0: GLint, v1: GLint, v2: GLint, v3: GLint) -> Result<()> {
10082		#[cfg(feature = "catch_nullptr")]
10083		let ret = process_catch("glUniform4i", catch_unwind(||(self.uniform4i)(location, v0, v1, v2, v3)));
10084		#[cfg(not(feature = "catch_nullptr"))]
10085		let ret = {(self.uniform4i)(location, v0, v1, v2, v3); Ok(())};
10086		#[cfg(feature = "diagnose")]
10087		if let Ok(ret) = ret {
10088			return to_result("glUniform4i", ret, self.glGetError());
10089		} else {
10090			return ret
10091		}
10092		#[cfg(not(feature = "diagnose"))]
10093		return ret;
10094	}
10095	#[inline(always)]
10096	fn glUniform1fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
10097		#[cfg(feature = "catch_nullptr")]
10098		let ret = process_catch("glUniform1fv", catch_unwind(||(self.uniform1fv)(location, count, value)));
10099		#[cfg(not(feature = "catch_nullptr"))]
10100		let ret = {(self.uniform1fv)(location, count, value); Ok(())};
10101		#[cfg(feature = "diagnose")]
10102		if let Ok(ret) = ret {
10103			return to_result("glUniform1fv", ret, self.glGetError());
10104		} else {
10105			return ret
10106		}
10107		#[cfg(not(feature = "diagnose"))]
10108		return ret;
10109	}
10110	#[inline(always)]
10111	fn glUniform2fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
10112		#[cfg(feature = "catch_nullptr")]
10113		let ret = process_catch("glUniform2fv", catch_unwind(||(self.uniform2fv)(location, count, value)));
10114		#[cfg(not(feature = "catch_nullptr"))]
10115		let ret = {(self.uniform2fv)(location, count, value); Ok(())};
10116		#[cfg(feature = "diagnose")]
10117		if let Ok(ret) = ret {
10118			return to_result("glUniform2fv", ret, self.glGetError());
10119		} else {
10120			return ret
10121		}
10122		#[cfg(not(feature = "diagnose"))]
10123		return ret;
10124	}
10125	#[inline(always)]
10126	fn glUniform3fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
10127		#[cfg(feature = "catch_nullptr")]
10128		let ret = process_catch("glUniform3fv", catch_unwind(||(self.uniform3fv)(location, count, value)));
10129		#[cfg(not(feature = "catch_nullptr"))]
10130		let ret = {(self.uniform3fv)(location, count, value); Ok(())};
10131		#[cfg(feature = "diagnose")]
10132		if let Ok(ret) = ret {
10133			return to_result("glUniform3fv", ret, self.glGetError());
10134		} else {
10135			return ret
10136		}
10137		#[cfg(not(feature = "diagnose"))]
10138		return ret;
10139	}
10140	#[inline(always)]
10141	fn glUniform4fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
10142		#[cfg(feature = "catch_nullptr")]
10143		let ret = process_catch("glUniform4fv", catch_unwind(||(self.uniform4fv)(location, count, value)));
10144		#[cfg(not(feature = "catch_nullptr"))]
10145		let ret = {(self.uniform4fv)(location, count, value); Ok(())};
10146		#[cfg(feature = "diagnose")]
10147		if let Ok(ret) = ret {
10148			return to_result("glUniform4fv", ret, self.glGetError());
10149		} else {
10150			return ret
10151		}
10152		#[cfg(not(feature = "diagnose"))]
10153		return ret;
10154	}
10155	#[inline(always)]
10156	fn glUniform1iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
10157		#[cfg(feature = "catch_nullptr")]
10158		let ret = process_catch("glUniform1iv", catch_unwind(||(self.uniform1iv)(location, count, value)));
10159		#[cfg(not(feature = "catch_nullptr"))]
10160		let ret = {(self.uniform1iv)(location, count, value); Ok(())};
10161		#[cfg(feature = "diagnose")]
10162		if let Ok(ret) = ret {
10163			return to_result("glUniform1iv", ret, self.glGetError());
10164		} else {
10165			return ret
10166		}
10167		#[cfg(not(feature = "diagnose"))]
10168		return ret;
10169	}
10170	#[inline(always)]
10171	fn glUniform2iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
10172		#[cfg(feature = "catch_nullptr")]
10173		let ret = process_catch("glUniform2iv", catch_unwind(||(self.uniform2iv)(location, count, value)));
10174		#[cfg(not(feature = "catch_nullptr"))]
10175		let ret = {(self.uniform2iv)(location, count, value); Ok(())};
10176		#[cfg(feature = "diagnose")]
10177		if let Ok(ret) = ret {
10178			return to_result("glUniform2iv", ret, self.glGetError());
10179		} else {
10180			return ret
10181		}
10182		#[cfg(not(feature = "diagnose"))]
10183		return ret;
10184	}
10185	#[inline(always)]
10186	fn glUniform3iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
10187		#[cfg(feature = "catch_nullptr")]
10188		let ret = process_catch("glUniform3iv", catch_unwind(||(self.uniform3iv)(location, count, value)));
10189		#[cfg(not(feature = "catch_nullptr"))]
10190		let ret = {(self.uniform3iv)(location, count, value); Ok(())};
10191		#[cfg(feature = "diagnose")]
10192		if let Ok(ret) = ret {
10193			return to_result("glUniform3iv", ret, self.glGetError());
10194		} else {
10195			return ret
10196		}
10197		#[cfg(not(feature = "diagnose"))]
10198		return ret;
10199	}
10200	#[inline(always)]
10201	fn glUniform4iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
10202		#[cfg(feature = "catch_nullptr")]
10203		let ret = process_catch("glUniform4iv", catch_unwind(||(self.uniform4iv)(location, count, value)));
10204		#[cfg(not(feature = "catch_nullptr"))]
10205		let ret = {(self.uniform4iv)(location, count, value); Ok(())};
10206		#[cfg(feature = "diagnose")]
10207		if let Ok(ret) = ret {
10208			return to_result("glUniform4iv", ret, self.glGetError());
10209		} else {
10210			return ret
10211		}
10212		#[cfg(not(feature = "diagnose"))]
10213		return ret;
10214	}
10215	#[inline(always)]
10216	fn glUniformMatrix2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
10217		#[cfg(feature = "catch_nullptr")]
10218		let ret = process_catch("glUniformMatrix2fv", catch_unwind(||(self.uniformmatrix2fv)(location, count, transpose, value)));
10219		#[cfg(not(feature = "catch_nullptr"))]
10220		let ret = {(self.uniformmatrix2fv)(location, count, transpose, value); Ok(())};
10221		#[cfg(feature = "diagnose")]
10222		if let Ok(ret) = ret {
10223			return to_result("glUniformMatrix2fv", ret, self.glGetError());
10224		} else {
10225			return ret
10226		}
10227		#[cfg(not(feature = "diagnose"))]
10228		return ret;
10229	}
10230	#[inline(always)]
10231	fn glUniformMatrix3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
10232		#[cfg(feature = "catch_nullptr")]
10233		let ret = process_catch("glUniformMatrix3fv", catch_unwind(||(self.uniformmatrix3fv)(location, count, transpose, value)));
10234		#[cfg(not(feature = "catch_nullptr"))]
10235		let ret = {(self.uniformmatrix3fv)(location, count, transpose, value); Ok(())};
10236		#[cfg(feature = "diagnose")]
10237		if let Ok(ret) = ret {
10238			return to_result("glUniformMatrix3fv", ret, self.glGetError());
10239		} else {
10240			return ret
10241		}
10242		#[cfg(not(feature = "diagnose"))]
10243		return ret;
10244	}
10245	#[inline(always)]
10246	fn glUniformMatrix4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
10247		#[cfg(feature = "catch_nullptr")]
10248		let ret = process_catch("glUniformMatrix4fv", catch_unwind(||(self.uniformmatrix4fv)(location, count, transpose, value)));
10249		#[cfg(not(feature = "catch_nullptr"))]
10250		let ret = {(self.uniformmatrix4fv)(location, count, transpose, value); Ok(())};
10251		#[cfg(feature = "diagnose")]
10252		if let Ok(ret) = ret {
10253			return to_result("glUniformMatrix4fv", ret, self.glGetError());
10254		} else {
10255			return ret
10256		}
10257		#[cfg(not(feature = "diagnose"))]
10258		return ret;
10259	}
10260	#[inline(always)]
10261	fn glValidateProgram(&self, program: GLuint) -> Result<()> {
10262		#[cfg(feature = "catch_nullptr")]
10263		let ret = process_catch("glValidateProgram", catch_unwind(||(self.validateprogram)(program)));
10264		#[cfg(not(feature = "catch_nullptr"))]
10265		let ret = {(self.validateprogram)(program); Ok(())};
10266		#[cfg(feature = "diagnose")]
10267		if let Ok(ret) = ret {
10268			return to_result("glValidateProgram", ret, self.glGetError());
10269		} else {
10270			return ret
10271		}
10272		#[cfg(not(feature = "diagnose"))]
10273		return ret;
10274	}
10275	#[inline(always)]
10276	fn glVertexAttrib1d(&self, index: GLuint, x: GLdouble) -> Result<()> {
10277		#[cfg(feature = "catch_nullptr")]
10278		let ret = process_catch("glVertexAttrib1d", catch_unwind(||(self.vertexattrib1d)(index, x)));
10279		#[cfg(not(feature = "catch_nullptr"))]
10280		let ret = {(self.vertexattrib1d)(index, x); Ok(())};
10281		#[cfg(feature = "diagnose")]
10282		if let Ok(ret) = ret {
10283			return to_result("glVertexAttrib1d", ret, self.glGetError());
10284		} else {
10285			return ret
10286		}
10287		#[cfg(not(feature = "diagnose"))]
10288		return ret;
10289	}
10290	#[inline(always)]
10291	fn glVertexAttrib1dv(&self, index: GLuint, v: *const GLdouble) -> Result<()> {
10292		#[cfg(feature = "catch_nullptr")]
10293		let ret = process_catch("glVertexAttrib1dv", catch_unwind(||(self.vertexattrib1dv)(index, v)));
10294		#[cfg(not(feature = "catch_nullptr"))]
10295		let ret = {(self.vertexattrib1dv)(index, v); Ok(())};
10296		#[cfg(feature = "diagnose")]
10297		if let Ok(ret) = ret {
10298			return to_result("glVertexAttrib1dv", ret, self.glGetError());
10299		} else {
10300			return ret
10301		}
10302		#[cfg(not(feature = "diagnose"))]
10303		return ret;
10304	}
10305	#[inline(always)]
10306	fn glVertexAttrib1f(&self, index: GLuint, x: GLfloat) -> Result<()> {
10307		#[cfg(feature = "catch_nullptr")]
10308		let ret = process_catch("glVertexAttrib1f", catch_unwind(||(self.vertexattrib1f)(index, x)));
10309		#[cfg(not(feature = "catch_nullptr"))]
10310		let ret = {(self.vertexattrib1f)(index, x); Ok(())};
10311		#[cfg(feature = "diagnose")]
10312		if let Ok(ret) = ret {
10313			return to_result("glVertexAttrib1f", ret, self.glGetError());
10314		} else {
10315			return ret
10316		}
10317		#[cfg(not(feature = "diagnose"))]
10318		return ret;
10319	}
10320	#[inline(always)]
10321	fn glVertexAttrib1fv(&self, index: GLuint, v: *const GLfloat) -> Result<()> {
10322		#[cfg(feature = "catch_nullptr")]
10323		let ret = process_catch("glVertexAttrib1fv", catch_unwind(||(self.vertexattrib1fv)(index, v)));
10324		#[cfg(not(feature = "catch_nullptr"))]
10325		let ret = {(self.vertexattrib1fv)(index, v); Ok(())};
10326		#[cfg(feature = "diagnose")]
10327		if let Ok(ret) = ret {
10328			return to_result("glVertexAttrib1fv", ret, self.glGetError());
10329		} else {
10330			return ret
10331		}
10332		#[cfg(not(feature = "diagnose"))]
10333		return ret;
10334	}
10335	#[inline(always)]
10336	fn glVertexAttrib1s(&self, index: GLuint, x: GLshort) -> Result<()> {
10337		#[cfg(feature = "catch_nullptr")]
10338		let ret = process_catch("glVertexAttrib1s", catch_unwind(||(self.vertexattrib1s)(index, x)));
10339		#[cfg(not(feature = "catch_nullptr"))]
10340		let ret = {(self.vertexattrib1s)(index, x); Ok(())};
10341		#[cfg(feature = "diagnose")]
10342		if let Ok(ret) = ret {
10343			return to_result("glVertexAttrib1s", ret, self.glGetError());
10344		} else {
10345			return ret
10346		}
10347		#[cfg(not(feature = "diagnose"))]
10348		return ret;
10349	}
10350	#[inline(always)]
10351	fn glVertexAttrib1sv(&self, index: GLuint, v: *const GLshort) -> Result<()> {
10352		#[cfg(feature = "catch_nullptr")]
10353		let ret = process_catch("glVertexAttrib1sv", catch_unwind(||(self.vertexattrib1sv)(index, v)));
10354		#[cfg(not(feature = "catch_nullptr"))]
10355		let ret = {(self.vertexattrib1sv)(index, v); Ok(())};
10356		#[cfg(feature = "diagnose")]
10357		if let Ok(ret) = ret {
10358			return to_result("glVertexAttrib1sv", ret, self.glGetError());
10359		} else {
10360			return ret
10361		}
10362		#[cfg(not(feature = "diagnose"))]
10363		return ret;
10364	}
10365	#[inline(always)]
10366	fn glVertexAttrib2d(&self, index: GLuint, x: GLdouble, y: GLdouble) -> Result<()> {
10367		#[cfg(feature = "catch_nullptr")]
10368		let ret = process_catch("glVertexAttrib2d", catch_unwind(||(self.vertexattrib2d)(index, x, y)));
10369		#[cfg(not(feature = "catch_nullptr"))]
10370		let ret = {(self.vertexattrib2d)(index, x, y); Ok(())};
10371		#[cfg(feature = "diagnose")]
10372		if let Ok(ret) = ret {
10373			return to_result("glVertexAttrib2d", ret, self.glGetError());
10374		} else {
10375			return ret
10376		}
10377		#[cfg(not(feature = "diagnose"))]
10378		return ret;
10379	}
10380	#[inline(always)]
10381	fn glVertexAttrib2dv(&self, index: GLuint, v: *const GLdouble) -> Result<()> {
10382		#[cfg(feature = "catch_nullptr")]
10383		let ret = process_catch("glVertexAttrib2dv", catch_unwind(||(self.vertexattrib2dv)(index, v)));
10384		#[cfg(not(feature = "catch_nullptr"))]
10385		let ret = {(self.vertexattrib2dv)(index, v); Ok(())};
10386		#[cfg(feature = "diagnose")]
10387		if let Ok(ret) = ret {
10388			return to_result("glVertexAttrib2dv", ret, self.glGetError());
10389		} else {
10390			return ret
10391		}
10392		#[cfg(not(feature = "diagnose"))]
10393		return ret;
10394	}
10395	#[inline(always)]
10396	fn glVertexAttrib2f(&self, index: GLuint, x: GLfloat, y: GLfloat) -> Result<()> {
10397		#[cfg(feature = "catch_nullptr")]
10398		let ret = process_catch("glVertexAttrib2f", catch_unwind(||(self.vertexattrib2f)(index, x, y)));
10399		#[cfg(not(feature = "catch_nullptr"))]
10400		let ret = {(self.vertexattrib2f)(index, x, y); Ok(())};
10401		#[cfg(feature = "diagnose")]
10402		if let Ok(ret) = ret {
10403			return to_result("glVertexAttrib2f", ret, self.glGetError());
10404		} else {
10405			return ret
10406		}
10407		#[cfg(not(feature = "diagnose"))]
10408		return ret;
10409	}
10410	#[inline(always)]
10411	fn glVertexAttrib2fv(&self, index: GLuint, v: *const GLfloat) -> Result<()> {
10412		#[cfg(feature = "catch_nullptr")]
10413		let ret = process_catch("glVertexAttrib2fv", catch_unwind(||(self.vertexattrib2fv)(index, v)));
10414		#[cfg(not(feature = "catch_nullptr"))]
10415		let ret = {(self.vertexattrib2fv)(index, v); Ok(())};
10416		#[cfg(feature = "diagnose")]
10417		if let Ok(ret) = ret {
10418			return to_result("glVertexAttrib2fv", ret, self.glGetError());
10419		} else {
10420			return ret
10421		}
10422		#[cfg(not(feature = "diagnose"))]
10423		return ret;
10424	}
10425	#[inline(always)]
10426	fn glVertexAttrib2s(&self, index: GLuint, x: GLshort, y: GLshort) -> Result<()> {
10427		#[cfg(feature = "catch_nullptr")]
10428		let ret = process_catch("glVertexAttrib2s", catch_unwind(||(self.vertexattrib2s)(index, x, y)));
10429		#[cfg(not(feature = "catch_nullptr"))]
10430		let ret = {(self.vertexattrib2s)(index, x, y); Ok(())};
10431		#[cfg(feature = "diagnose")]
10432		if let Ok(ret) = ret {
10433			return to_result("glVertexAttrib2s", ret, self.glGetError());
10434		} else {
10435			return ret
10436		}
10437		#[cfg(not(feature = "diagnose"))]
10438		return ret;
10439	}
10440	#[inline(always)]
10441	fn glVertexAttrib2sv(&self, index: GLuint, v: *const GLshort) -> Result<()> {
10442		#[cfg(feature = "catch_nullptr")]
10443		let ret = process_catch("glVertexAttrib2sv", catch_unwind(||(self.vertexattrib2sv)(index, v)));
10444		#[cfg(not(feature = "catch_nullptr"))]
10445		let ret = {(self.vertexattrib2sv)(index, v); Ok(())};
10446		#[cfg(feature = "diagnose")]
10447		if let Ok(ret) = ret {
10448			return to_result("glVertexAttrib2sv", ret, self.glGetError());
10449		} else {
10450			return ret
10451		}
10452		#[cfg(not(feature = "diagnose"))]
10453		return ret;
10454	}
10455	#[inline(always)]
10456	fn glVertexAttrib3d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble) -> Result<()> {
10457		#[cfg(feature = "catch_nullptr")]
10458		let ret = process_catch("glVertexAttrib3d", catch_unwind(||(self.vertexattrib3d)(index, x, y, z)));
10459		#[cfg(not(feature = "catch_nullptr"))]
10460		let ret = {(self.vertexattrib3d)(index, x, y, z); Ok(())};
10461		#[cfg(feature = "diagnose")]
10462		if let Ok(ret) = ret {
10463			return to_result("glVertexAttrib3d", ret, self.glGetError());
10464		} else {
10465			return ret
10466		}
10467		#[cfg(not(feature = "diagnose"))]
10468		return ret;
10469	}
10470	#[inline(always)]
10471	fn glVertexAttrib3dv(&self, index: GLuint, v: *const GLdouble) -> Result<()> {
10472		#[cfg(feature = "catch_nullptr")]
10473		let ret = process_catch("glVertexAttrib3dv", catch_unwind(||(self.vertexattrib3dv)(index, v)));
10474		#[cfg(not(feature = "catch_nullptr"))]
10475		let ret = {(self.vertexattrib3dv)(index, v); Ok(())};
10476		#[cfg(feature = "diagnose")]
10477		if let Ok(ret) = ret {
10478			return to_result("glVertexAttrib3dv", ret, self.glGetError());
10479		} else {
10480			return ret
10481		}
10482		#[cfg(not(feature = "diagnose"))]
10483		return ret;
10484	}
10485	#[inline(always)]
10486	fn glVertexAttrib3f(&self, index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat) -> Result<()> {
10487		#[cfg(feature = "catch_nullptr")]
10488		let ret = process_catch("glVertexAttrib3f", catch_unwind(||(self.vertexattrib3f)(index, x, y, z)));
10489		#[cfg(not(feature = "catch_nullptr"))]
10490		let ret = {(self.vertexattrib3f)(index, x, y, z); Ok(())};
10491		#[cfg(feature = "diagnose")]
10492		if let Ok(ret) = ret {
10493			return to_result("glVertexAttrib3f", ret, self.glGetError());
10494		} else {
10495			return ret
10496		}
10497		#[cfg(not(feature = "diagnose"))]
10498		return ret;
10499	}
10500	#[inline(always)]
10501	fn glVertexAttrib3fv(&self, index: GLuint, v: *const GLfloat) -> Result<()> {
10502		#[cfg(feature = "catch_nullptr")]
10503		let ret = process_catch("glVertexAttrib3fv", catch_unwind(||(self.vertexattrib3fv)(index, v)));
10504		#[cfg(not(feature = "catch_nullptr"))]
10505		let ret = {(self.vertexattrib3fv)(index, v); Ok(())};
10506		#[cfg(feature = "diagnose")]
10507		if let Ok(ret) = ret {
10508			return to_result("glVertexAttrib3fv", ret, self.glGetError());
10509		} else {
10510			return ret
10511		}
10512		#[cfg(not(feature = "diagnose"))]
10513		return ret;
10514	}
10515	#[inline(always)]
10516	fn glVertexAttrib3s(&self, index: GLuint, x: GLshort, y: GLshort, z: GLshort) -> Result<()> {
10517		#[cfg(feature = "catch_nullptr")]
10518		let ret = process_catch("glVertexAttrib3s", catch_unwind(||(self.vertexattrib3s)(index, x, y, z)));
10519		#[cfg(not(feature = "catch_nullptr"))]
10520		let ret = {(self.vertexattrib3s)(index, x, y, z); Ok(())};
10521		#[cfg(feature = "diagnose")]
10522		if let Ok(ret) = ret {
10523			return to_result("glVertexAttrib3s", ret, self.glGetError());
10524		} else {
10525			return ret
10526		}
10527		#[cfg(not(feature = "diagnose"))]
10528		return ret;
10529	}
10530	#[inline(always)]
10531	fn glVertexAttrib3sv(&self, index: GLuint, v: *const GLshort) -> Result<()> {
10532		#[cfg(feature = "catch_nullptr")]
10533		let ret = process_catch("glVertexAttrib3sv", catch_unwind(||(self.vertexattrib3sv)(index, v)));
10534		#[cfg(not(feature = "catch_nullptr"))]
10535		let ret = {(self.vertexattrib3sv)(index, v); Ok(())};
10536		#[cfg(feature = "diagnose")]
10537		if let Ok(ret) = ret {
10538			return to_result("glVertexAttrib3sv", ret, self.glGetError());
10539		} else {
10540			return ret
10541		}
10542		#[cfg(not(feature = "diagnose"))]
10543		return ret;
10544	}
10545	#[inline(always)]
10546	fn glVertexAttrib4Nbv(&self, index: GLuint, v: *const GLbyte) -> Result<()> {
10547		#[cfg(feature = "catch_nullptr")]
10548		let ret = process_catch("glVertexAttrib4Nbv", catch_unwind(||(self.vertexattrib4nbv)(index, v)));
10549		#[cfg(not(feature = "catch_nullptr"))]
10550		let ret = {(self.vertexattrib4nbv)(index, v); Ok(())};
10551		#[cfg(feature = "diagnose")]
10552		if let Ok(ret) = ret {
10553			return to_result("glVertexAttrib4Nbv", ret, self.glGetError());
10554		} else {
10555			return ret
10556		}
10557		#[cfg(not(feature = "diagnose"))]
10558		return ret;
10559	}
10560	#[inline(always)]
10561	fn glVertexAttrib4Niv(&self, index: GLuint, v: *const GLint) -> Result<()> {
10562		#[cfg(feature = "catch_nullptr")]
10563		let ret = process_catch("glVertexAttrib4Niv", catch_unwind(||(self.vertexattrib4niv)(index, v)));
10564		#[cfg(not(feature = "catch_nullptr"))]
10565		let ret = {(self.vertexattrib4niv)(index, v); Ok(())};
10566		#[cfg(feature = "diagnose")]
10567		if let Ok(ret) = ret {
10568			return to_result("glVertexAttrib4Niv", ret, self.glGetError());
10569		} else {
10570			return ret
10571		}
10572		#[cfg(not(feature = "diagnose"))]
10573		return ret;
10574	}
10575	#[inline(always)]
10576	fn glVertexAttrib4Nsv(&self, index: GLuint, v: *const GLshort) -> Result<()> {
10577		#[cfg(feature = "catch_nullptr")]
10578		let ret = process_catch("glVertexAttrib4Nsv", catch_unwind(||(self.vertexattrib4nsv)(index, v)));
10579		#[cfg(not(feature = "catch_nullptr"))]
10580		let ret = {(self.vertexattrib4nsv)(index, v); Ok(())};
10581		#[cfg(feature = "diagnose")]
10582		if let Ok(ret) = ret {
10583			return to_result("glVertexAttrib4Nsv", ret, self.glGetError());
10584		} else {
10585			return ret
10586		}
10587		#[cfg(not(feature = "diagnose"))]
10588		return ret;
10589	}
10590	#[inline(always)]
10591	fn glVertexAttrib4Nub(&self, index: GLuint, x: GLubyte, y: GLubyte, z: GLubyte, w: GLubyte) -> Result<()> {
10592		#[cfg(feature = "catch_nullptr")]
10593		let ret = process_catch("glVertexAttrib4Nub", catch_unwind(||(self.vertexattrib4nub)(index, x, y, z, w)));
10594		#[cfg(not(feature = "catch_nullptr"))]
10595		let ret = {(self.vertexattrib4nub)(index, x, y, z, w); Ok(())};
10596		#[cfg(feature = "diagnose")]
10597		if let Ok(ret) = ret {
10598			return to_result("glVertexAttrib4Nub", ret, self.glGetError());
10599		} else {
10600			return ret
10601		}
10602		#[cfg(not(feature = "diagnose"))]
10603		return ret;
10604	}
10605	#[inline(always)]
10606	fn glVertexAttrib4Nubv(&self, index: GLuint, v: *const GLubyte) -> Result<()> {
10607		#[cfg(feature = "catch_nullptr")]
10608		let ret = process_catch("glVertexAttrib4Nubv", catch_unwind(||(self.vertexattrib4nubv)(index, v)));
10609		#[cfg(not(feature = "catch_nullptr"))]
10610		let ret = {(self.vertexattrib4nubv)(index, v); Ok(())};
10611		#[cfg(feature = "diagnose")]
10612		if let Ok(ret) = ret {
10613			return to_result("glVertexAttrib4Nubv", ret, self.glGetError());
10614		} else {
10615			return ret
10616		}
10617		#[cfg(not(feature = "diagnose"))]
10618		return ret;
10619	}
10620	#[inline(always)]
10621	fn glVertexAttrib4Nuiv(&self, index: GLuint, v: *const GLuint) -> Result<()> {
10622		#[cfg(feature = "catch_nullptr")]
10623		let ret = process_catch("glVertexAttrib4Nuiv", catch_unwind(||(self.vertexattrib4nuiv)(index, v)));
10624		#[cfg(not(feature = "catch_nullptr"))]
10625		let ret = {(self.vertexattrib4nuiv)(index, v); Ok(())};
10626		#[cfg(feature = "diagnose")]
10627		if let Ok(ret) = ret {
10628			return to_result("glVertexAttrib4Nuiv", ret, self.glGetError());
10629		} else {
10630			return ret
10631		}
10632		#[cfg(not(feature = "diagnose"))]
10633		return ret;
10634	}
10635	#[inline(always)]
10636	fn glVertexAttrib4Nusv(&self, index: GLuint, v: *const GLushort) -> Result<()> {
10637		#[cfg(feature = "catch_nullptr")]
10638		let ret = process_catch("glVertexAttrib4Nusv", catch_unwind(||(self.vertexattrib4nusv)(index, v)));
10639		#[cfg(not(feature = "catch_nullptr"))]
10640		let ret = {(self.vertexattrib4nusv)(index, v); Ok(())};
10641		#[cfg(feature = "diagnose")]
10642		if let Ok(ret) = ret {
10643			return to_result("glVertexAttrib4Nusv", ret, self.glGetError());
10644		} else {
10645			return ret
10646		}
10647		#[cfg(not(feature = "diagnose"))]
10648		return ret;
10649	}
10650	#[inline(always)]
10651	fn glVertexAttrib4bv(&self, index: GLuint, v: *const GLbyte) -> Result<()> {
10652		#[cfg(feature = "catch_nullptr")]
10653		let ret = process_catch("glVertexAttrib4bv", catch_unwind(||(self.vertexattrib4bv)(index, v)));
10654		#[cfg(not(feature = "catch_nullptr"))]
10655		let ret = {(self.vertexattrib4bv)(index, v); Ok(())};
10656		#[cfg(feature = "diagnose")]
10657		if let Ok(ret) = ret {
10658			return to_result("glVertexAttrib4bv", ret, self.glGetError());
10659		} else {
10660			return ret
10661		}
10662		#[cfg(not(feature = "diagnose"))]
10663		return ret;
10664	}
10665	#[inline(always)]
10666	fn glVertexAttrib4d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble, w: GLdouble) -> Result<()> {
10667		#[cfg(feature = "catch_nullptr")]
10668		let ret = process_catch("glVertexAttrib4d", catch_unwind(||(self.vertexattrib4d)(index, x, y, z, w)));
10669		#[cfg(not(feature = "catch_nullptr"))]
10670		let ret = {(self.vertexattrib4d)(index, x, y, z, w); Ok(())};
10671		#[cfg(feature = "diagnose")]
10672		if let Ok(ret) = ret {
10673			return to_result("glVertexAttrib4d", ret, self.glGetError());
10674		} else {
10675			return ret
10676		}
10677		#[cfg(not(feature = "diagnose"))]
10678		return ret;
10679	}
10680	#[inline(always)]
10681	fn glVertexAttrib4dv(&self, index: GLuint, v: *const GLdouble) -> Result<()> {
10682		#[cfg(feature = "catch_nullptr")]
10683		let ret = process_catch("glVertexAttrib4dv", catch_unwind(||(self.vertexattrib4dv)(index, v)));
10684		#[cfg(not(feature = "catch_nullptr"))]
10685		let ret = {(self.vertexattrib4dv)(index, v); Ok(())};
10686		#[cfg(feature = "diagnose")]
10687		if let Ok(ret) = ret {
10688			return to_result("glVertexAttrib4dv", ret, self.glGetError());
10689		} else {
10690			return ret
10691		}
10692		#[cfg(not(feature = "diagnose"))]
10693		return ret;
10694	}
10695	#[inline(always)]
10696	fn glVertexAttrib4f(&self, index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat, w: GLfloat) -> Result<()> {
10697		#[cfg(feature = "catch_nullptr")]
10698		let ret = process_catch("glVertexAttrib4f", catch_unwind(||(self.vertexattrib4f)(index, x, y, z, w)));
10699		#[cfg(not(feature = "catch_nullptr"))]
10700		let ret = {(self.vertexattrib4f)(index, x, y, z, w); Ok(())};
10701		#[cfg(feature = "diagnose")]
10702		if let Ok(ret) = ret {
10703			return to_result("glVertexAttrib4f", ret, self.glGetError());
10704		} else {
10705			return ret
10706		}
10707		#[cfg(not(feature = "diagnose"))]
10708		return ret;
10709	}
10710	#[inline(always)]
10711	fn glVertexAttrib4fv(&self, index: GLuint, v: *const GLfloat) -> Result<()> {
10712		#[cfg(feature = "catch_nullptr")]
10713		let ret = process_catch("glVertexAttrib4fv", catch_unwind(||(self.vertexattrib4fv)(index, v)));
10714		#[cfg(not(feature = "catch_nullptr"))]
10715		let ret = {(self.vertexattrib4fv)(index, v); Ok(())};
10716		#[cfg(feature = "diagnose")]
10717		if let Ok(ret) = ret {
10718			return to_result("glVertexAttrib4fv", ret, self.glGetError());
10719		} else {
10720			return ret
10721		}
10722		#[cfg(not(feature = "diagnose"))]
10723		return ret;
10724	}
10725	#[inline(always)]
10726	fn glVertexAttrib4iv(&self, index: GLuint, v: *const GLint) -> Result<()> {
10727		#[cfg(feature = "catch_nullptr")]
10728		let ret = process_catch("glVertexAttrib4iv", catch_unwind(||(self.vertexattrib4iv)(index, v)));
10729		#[cfg(not(feature = "catch_nullptr"))]
10730		let ret = {(self.vertexattrib4iv)(index, v); Ok(())};
10731		#[cfg(feature = "diagnose")]
10732		if let Ok(ret) = ret {
10733			return to_result("glVertexAttrib4iv", ret, self.glGetError());
10734		} else {
10735			return ret
10736		}
10737		#[cfg(not(feature = "diagnose"))]
10738		return ret;
10739	}
10740	#[inline(always)]
10741	fn glVertexAttrib4s(&self, index: GLuint, x: GLshort, y: GLshort, z: GLshort, w: GLshort) -> Result<()> {
10742		#[cfg(feature = "catch_nullptr")]
10743		let ret = process_catch("glVertexAttrib4s", catch_unwind(||(self.vertexattrib4s)(index, x, y, z, w)));
10744		#[cfg(not(feature = "catch_nullptr"))]
10745		let ret = {(self.vertexattrib4s)(index, x, y, z, w); Ok(())};
10746		#[cfg(feature = "diagnose")]
10747		if let Ok(ret) = ret {
10748			return to_result("glVertexAttrib4s", ret, self.glGetError());
10749		} else {
10750			return ret
10751		}
10752		#[cfg(not(feature = "diagnose"))]
10753		return ret;
10754	}
10755	#[inline(always)]
10756	fn glVertexAttrib4sv(&self, index: GLuint, v: *const GLshort) -> Result<()> {
10757		#[cfg(feature = "catch_nullptr")]
10758		let ret = process_catch("glVertexAttrib4sv", catch_unwind(||(self.vertexattrib4sv)(index, v)));
10759		#[cfg(not(feature = "catch_nullptr"))]
10760		let ret = {(self.vertexattrib4sv)(index, v); Ok(())};
10761		#[cfg(feature = "diagnose")]
10762		if let Ok(ret) = ret {
10763			return to_result("glVertexAttrib4sv", ret, self.glGetError());
10764		} else {
10765			return ret
10766		}
10767		#[cfg(not(feature = "diagnose"))]
10768		return ret;
10769	}
10770	#[inline(always)]
10771	fn glVertexAttrib4ubv(&self, index: GLuint, v: *const GLubyte) -> Result<()> {
10772		#[cfg(feature = "catch_nullptr")]
10773		let ret = process_catch("glVertexAttrib4ubv", catch_unwind(||(self.vertexattrib4ubv)(index, v)));
10774		#[cfg(not(feature = "catch_nullptr"))]
10775		let ret = {(self.vertexattrib4ubv)(index, v); Ok(())};
10776		#[cfg(feature = "diagnose")]
10777		if let Ok(ret) = ret {
10778			return to_result("glVertexAttrib4ubv", ret, self.glGetError());
10779		} else {
10780			return ret
10781		}
10782		#[cfg(not(feature = "diagnose"))]
10783		return ret;
10784	}
10785	#[inline(always)]
10786	fn glVertexAttrib4uiv(&self, index: GLuint, v: *const GLuint) -> Result<()> {
10787		#[cfg(feature = "catch_nullptr")]
10788		let ret = process_catch("glVertexAttrib4uiv", catch_unwind(||(self.vertexattrib4uiv)(index, v)));
10789		#[cfg(not(feature = "catch_nullptr"))]
10790		let ret = {(self.vertexattrib4uiv)(index, v); Ok(())};
10791		#[cfg(feature = "diagnose")]
10792		if let Ok(ret) = ret {
10793			return to_result("glVertexAttrib4uiv", ret, self.glGetError());
10794		} else {
10795			return ret
10796		}
10797		#[cfg(not(feature = "diagnose"))]
10798		return ret;
10799	}
10800	#[inline(always)]
10801	fn glVertexAttrib4usv(&self, index: GLuint, v: *const GLushort) -> Result<()> {
10802		#[cfg(feature = "catch_nullptr")]
10803		let ret = process_catch("glVertexAttrib4usv", catch_unwind(||(self.vertexattrib4usv)(index, v)));
10804		#[cfg(not(feature = "catch_nullptr"))]
10805		let ret = {(self.vertexattrib4usv)(index, v); Ok(())};
10806		#[cfg(feature = "diagnose")]
10807		if let Ok(ret) = ret {
10808			return to_result("glVertexAttrib4usv", ret, self.glGetError());
10809		} else {
10810			return ret
10811		}
10812		#[cfg(not(feature = "diagnose"))]
10813		return ret;
10814	}
10815	#[inline(always)]
10816	fn glVertexAttribPointer(&self, index: GLuint, size: GLint, type_: GLenum, normalized: GLboolean, stride: GLsizei, pointer: *const c_void) -> Result<()> {
10817		#[cfg(feature = "catch_nullptr")]
10818		let ret = process_catch("glVertexAttribPointer", catch_unwind(||(self.vertexattribpointer)(index, size, type_, normalized, stride, pointer)));
10819		#[cfg(not(feature = "catch_nullptr"))]
10820		let ret = {(self.vertexattribpointer)(index, size, type_, normalized, stride, pointer); Ok(())};
10821		#[cfg(feature = "diagnose")]
10822		if let Ok(ret) = ret {
10823			return to_result("glVertexAttribPointer", ret, self.glGetError());
10824		} else {
10825			return ret
10826		}
10827		#[cfg(not(feature = "diagnose"))]
10828		return ret;
10829	}
10830	#[inline(always)]
10831	fn get_shading_language_version(&self) -> &'static str {
10832		self.shading_language_version
10833	}
10834}
10835
10836impl Version20 {
10837	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
10838		let (_spec, major, minor, release) = base.get_version();
10839		if (major, minor, release) < (2, 0, 0) {
10840			return Self::default();
10841		}
10842		Self {
10843			available: true,
10844			geterror: {let proc = get_proc_address("glGetError"); if proc.is_null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
10845			blendequationseparate: {let proc = get_proc_address("glBlendEquationSeparate"); if proc.is_null() {dummy_pfnglblendequationseparateproc} else {unsafe{transmute(proc)}}},
10846			drawbuffers: {let proc = get_proc_address("glDrawBuffers"); if proc.is_null() {dummy_pfngldrawbuffersproc} else {unsafe{transmute(proc)}}},
10847			stencilopseparate: {let proc = get_proc_address("glStencilOpSeparate"); if proc.is_null() {dummy_pfnglstencilopseparateproc} else {unsafe{transmute(proc)}}},
10848			stencilfuncseparate: {let proc = get_proc_address("glStencilFuncSeparate"); if proc.is_null() {dummy_pfnglstencilfuncseparateproc} else {unsafe{transmute(proc)}}},
10849			stencilmaskseparate: {let proc = get_proc_address("glStencilMaskSeparate"); if proc.is_null() {dummy_pfnglstencilmaskseparateproc} else {unsafe{transmute(proc)}}},
10850			attachshader: {let proc = get_proc_address("glAttachShader"); if proc.is_null() {dummy_pfnglattachshaderproc} else {unsafe{transmute(proc)}}},
10851			bindattriblocation: {let proc = get_proc_address("glBindAttribLocation"); if proc.is_null() {dummy_pfnglbindattriblocationproc} else {unsafe{transmute(proc)}}},
10852			compileshader: {let proc = get_proc_address("glCompileShader"); if proc.is_null() {dummy_pfnglcompileshaderproc} else {unsafe{transmute(proc)}}},
10853			createprogram: {let proc = get_proc_address("glCreateProgram"); if proc.is_null() {dummy_pfnglcreateprogramproc} else {unsafe{transmute(proc)}}},
10854			createshader: {let proc = get_proc_address("glCreateShader"); if proc.is_null() {dummy_pfnglcreateshaderproc} else {unsafe{transmute(proc)}}},
10855			deleteprogram: {let proc = get_proc_address("glDeleteProgram"); if proc.is_null() {dummy_pfngldeleteprogramproc} else {unsafe{transmute(proc)}}},
10856			deleteshader: {let proc = get_proc_address("glDeleteShader"); if proc.is_null() {dummy_pfngldeleteshaderproc} else {unsafe{transmute(proc)}}},
10857			detachshader: {let proc = get_proc_address("glDetachShader"); if proc.is_null() {dummy_pfngldetachshaderproc} else {unsafe{transmute(proc)}}},
10858			disablevertexattribarray: {let proc = get_proc_address("glDisableVertexAttribArray"); if proc.is_null() {dummy_pfngldisablevertexattribarrayproc} else {unsafe{transmute(proc)}}},
10859			enablevertexattribarray: {let proc = get_proc_address("glEnableVertexAttribArray"); if proc.is_null() {dummy_pfnglenablevertexattribarrayproc} else {unsafe{transmute(proc)}}},
10860			getactiveattrib: {let proc = get_proc_address("glGetActiveAttrib"); if proc.is_null() {dummy_pfnglgetactiveattribproc} else {unsafe{transmute(proc)}}},
10861			getactiveuniform: {let proc = get_proc_address("glGetActiveUniform"); if proc.is_null() {dummy_pfnglgetactiveuniformproc} else {unsafe{transmute(proc)}}},
10862			getattachedshaders: {let proc = get_proc_address("glGetAttachedShaders"); if proc.is_null() {dummy_pfnglgetattachedshadersproc} else {unsafe{transmute(proc)}}},
10863			getattriblocation: {let proc = get_proc_address("glGetAttribLocation"); if proc.is_null() {dummy_pfnglgetattriblocationproc} else {unsafe{transmute(proc)}}},
10864			getprogramiv: {let proc = get_proc_address("glGetProgramiv"); if proc.is_null() {dummy_pfnglgetprogramivproc} else {unsafe{transmute(proc)}}},
10865			getprograminfolog: {let proc = get_proc_address("glGetProgramInfoLog"); if proc.is_null() {dummy_pfnglgetprograminfologproc} else {unsafe{transmute(proc)}}},
10866			getshaderiv: {let proc = get_proc_address("glGetShaderiv"); if proc.is_null() {dummy_pfnglgetshaderivproc} else {unsafe{transmute(proc)}}},
10867			getshaderinfolog: {let proc = get_proc_address("glGetShaderInfoLog"); if proc.is_null() {dummy_pfnglgetshaderinfologproc} else {unsafe{transmute(proc)}}},
10868			getshadersource: {let proc = get_proc_address("glGetShaderSource"); if proc.is_null() {dummy_pfnglgetshadersourceproc} else {unsafe{transmute(proc)}}},
10869			getuniformlocation: {let proc = get_proc_address("glGetUniformLocation"); if proc.is_null() {dummy_pfnglgetuniformlocationproc} else {unsafe{transmute(proc)}}},
10870			getuniformfv: {let proc = get_proc_address("glGetUniformfv"); if proc.is_null() {dummy_pfnglgetuniformfvproc} else {unsafe{transmute(proc)}}},
10871			getuniformiv: {let proc = get_proc_address("glGetUniformiv"); if proc.is_null() {dummy_pfnglgetuniformivproc} else {unsafe{transmute(proc)}}},
10872			getvertexattribdv: {let proc = get_proc_address("glGetVertexAttribdv"); if proc.is_null() {dummy_pfnglgetvertexattribdvproc} else {unsafe{transmute(proc)}}},
10873			getvertexattribfv: {let proc = get_proc_address("glGetVertexAttribfv"); if proc.is_null() {dummy_pfnglgetvertexattribfvproc} else {unsafe{transmute(proc)}}},
10874			getvertexattribiv: {let proc = get_proc_address("glGetVertexAttribiv"); if proc.is_null() {dummy_pfnglgetvertexattribivproc} else {unsafe{transmute(proc)}}},
10875			getvertexattribpointerv: {let proc = get_proc_address("glGetVertexAttribPointerv"); if proc.is_null() {dummy_pfnglgetvertexattribpointervproc} else {unsafe{transmute(proc)}}},
10876			isprogram: {let proc = get_proc_address("glIsProgram"); if proc.is_null() {dummy_pfnglisprogramproc} else {unsafe{transmute(proc)}}},
10877			isshader: {let proc = get_proc_address("glIsShader"); if proc.is_null() {dummy_pfnglisshaderproc} else {unsafe{transmute(proc)}}},
10878			linkprogram: {let proc = get_proc_address("glLinkProgram"); if proc.is_null() {dummy_pfngllinkprogramproc} else {unsafe{transmute(proc)}}},
10879			shadersource: {let proc = get_proc_address("glShaderSource"); if proc.is_null() {dummy_pfnglshadersourceproc} else {unsafe{transmute(proc)}}},
10880			useprogram: {let proc = get_proc_address("glUseProgram"); if proc.is_null() {dummy_pfngluseprogramproc} else {unsafe{transmute(proc)}}},
10881			uniform1f: {let proc = get_proc_address("glUniform1f"); if proc.is_null() {dummy_pfngluniform1fproc} else {unsafe{transmute(proc)}}},
10882			uniform2f: {let proc = get_proc_address("glUniform2f"); if proc.is_null() {dummy_pfngluniform2fproc} else {unsafe{transmute(proc)}}},
10883			uniform3f: {let proc = get_proc_address("glUniform3f"); if proc.is_null() {dummy_pfngluniform3fproc} else {unsafe{transmute(proc)}}},
10884			uniform4f: {let proc = get_proc_address("glUniform4f"); if proc.is_null() {dummy_pfngluniform4fproc} else {unsafe{transmute(proc)}}},
10885			uniform1i: {let proc = get_proc_address("glUniform1i"); if proc.is_null() {dummy_pfngluniform1iproc} else {unsafe{transmute(proc)}}},
10886			uniform2i: {let proc = get_proc_address("glUniform2i"); if proc.is_null() {dummy_pfngluniform2iproc} else {unsafe{transmute(proc)}}},
10887			uniform3i: {let proc = get_proc_address("glUniform3i"); if proc.is_null() {dummy_pfngluniform3iproc} else {unsafe{transmute(proc)}}},
10888			uniform4i: {let proc = get_proc_address("glUniform4i"); if proc.is_null() {dummy_pfngluniform4iproc} else {unsafe{transmute(proc)}}},
10889			uniform1fv: {let proc = get_proc_address("glUniform1fv"); if proc.is_null() {dummy_pfngluniform1fvproc} else {unsafe{transmute(proc)}}},
10890			uniform2fv: {let proc = get_proc_address("glUniform2fv"); if proc.is_null() {dummy_pfngluniform2fvproc} else {unsafe{transmute(proc)}}},
10891			uniform3fv: {let proc = get_proc_address("glUniform3fv"); if proc.is_null() {dummy_pfngluniform3fvproc} else {unsafe{transmute(proc)}}},
10892			uniform4fv: {let proc = get_proc_address("glUniform4fv"); if proc.is_null() {dummy_pfngluniform4fvproc} else {unsafe{transmute(proc)}}},
10893			uniform1iv: {let proc = get_proc_address("glUniform1iv"); if proc.is_null() {dummy_pfngluniform1ivproc} else {unsafe{transmute(proc)}}},
10894			uniform2iv: {let proc = get_proc_address("glUniform2iv"); if proc.is_null() {dummy_pfngluniform2ivproc} else {unsafe{transmute(proc)}}},
10895			uniform3iv: {let proc = get_proc_address("glUniform3iv"); if proc.is_null() {dummy_pfngluniform3ivproc} else {unsafe{transmute(proc)}}},
10896			uniform4iv: {let proc = get_proc_address("glUniform4iv"); if proc.is_null() {dummy_pfngluniform4ivproc} else {unsafe{transmute(proc)}}},
10897			uniformmatrix2fv: {let proc = get_proc_address("glUniformMatrix2fv"); if proc.is_null() {dummy_pfngluniformmatrix2fvproc} else {unsafe{transmute(proc)}}},
10898			uniformmatrix3fv: {let proc = get_proc_address("glUniformMatrix3fv"); if proc.is_null() {dummy_pfngluniformmatrix3fvproc} else {unsafe{transmute(proc)}}},
10899			uniformmatrix4fv: {let proc = get_proc_address("glUniformMatrix4fv"); if proc.is_null() {dummy_pfngluniformmatrix4fvproc} else {unsafe{transmute(proc)}}},
10900			validateprogram: {let proc = get_proc_address("glValidateProgram"); if proc.is_null() {dummy_pfnglvalidateprogramproc} else {unsafe{transmute(proc)}}},
10901			vertexattrib1d: {let proc = get_proc_address("glVertexAttrib1d"); if proc.is_null() {dummy_pfnglvertexattrib1dproc} else {unsafe{transmute(proc)}}},
10902			vertexattrib1dv: {let proc = get_proc_address("glVertexAttrib1dv"); if proc.is_null() {dummy_pfnglvertexattrib1dvproc} else {unsafe{transmute(proc)}}},
10903			vertexattrib1f: {let proc = get_proc_address("glVertexAttrib1f"); if proc.is_null() {dummy_pfnglvertexattrib1fproc} else {unsafe{transmute(proc)}}},
10904			vertexattrib1fv: {let proc = get_proc_address("glVertexAttrib1fv"); if proc.is_null() {dummy_pfnglvertexattrib1fvproc} else {unsafe{transmute(proc)}}},
10905			vertexattrib1s: {let proc = get_proc_address("glVertexAttrib1s"); if proc.is_null() {dummy_pfnglvertexattrib1sproc} else {unsafe{transmute(proc)}}},
10906			vertexattrib1sv: {let proc = get_proc_address("glVertexAttrib1sv"); if proc.is_null() {dummy_pfnglvertexattrib1svproc} else {unsafe{transmute(proc)}}},
10907			vertexattrib2d: {let proc = get_proc_address("glVertexAttrib2d"); if proc.is_null() {dummy_pfnglvertexattrib2dproc} else {unsafe{transmute(proc)}}},
10908			vertexattrib2dv: {let proc = get_proc_address("glVertexAttrib2dv"); if proc.is_null() {dummy_pfnglvertexattrib2dvproc} else {unsafe{transmute(proc)}}},
10909			vertexattrib2f: {let proc = get_proc_address("glVertexAttrib2f"); if proc.is_null() {dummy_pfnglvertexattrib2fproc} else {unsafe{transmute(proc)}}},
10910			vertexattrib2fv: {let proc = get_proc_address("glVertexAttrib2fv"); if proc.is_null() {dummy_pfnglvertexattrib2fvproc} else {unsafe{transmute(proc)}}},
10911			vertexattrib2s: {let proc = get_proc_address("glVertexAttrib2s"); if proc.is_null() {dummy_pfnglvertexattrib2sproc} else {unsafe{transmute(proc)}}},
10912			vertexattrib2sv: {let proc = get_proc_address("glVertexAttrib2sv"); if proc.is_null() {dummy_pfnglvertexattrib2svproc} else {unsafe{transmute(proc)}}},
10913			vertexattrib3d: {let proc = get_proc_address("glVertexAttrib3d"); if proc.is_null() {dummy_pfnglvertexattrib3dproc} else {unsafe{transmute(proc)}}},
10914			vertexattrib3dv: {let proc = get_proc_address("glVertexAttrib3dv"); if proc.is_null() {dummy_pfnglvertexattrib3dvproc} else {unsafe{transmute(proc)}}},
10915			vertexattrib3f: {let proc = get_proc_address("glVertexAttrib3f"); if proc.is_null() {dummy_pfnglvertexattrib3fproc} else {unsafe{transmute(proc)}}},
10916			vertexattrib3fv: {let proc = get_proc_address("glVertexAttrib3fv"); if proc.is_null() {dummy_pfnglvertexattrib3fvproc} else {unsafe{transmute(proc)}}},
10917			vertexattrib3s: {let proc = get_proc_address("glVertexAttrib3s"); if proc.is_null() {dummy_pfnglvertexattrib3sproc} else {unsafe{transmute(proc)}}},
10918			vertexattrib3sv: {let proc = get_proc_address("glVertexAttrib3sv"); if proc.is_null() {dummy_pfnglvertexattrib3svproc} else {unsafe{transmute(proc)}}},
10919			vertexattrib4nbv: {let proc = get_proc_address("glVertexAttrib4Nbv"); if proc.is_null() {dummy_pfnglvertexattrib4nbvproc} else {unsafe{transmute(proc)}}},
10920			vertexattrib4niv: {let proc = get_proc_address("glVertexAttrib4Niv"); if proc.is_null() {dummy_pfnglvertexattrib4nivproc} else {unsafe{transmute(proc)}}},
10921			vertexattrib4nsv: {let proc = get_proc_address("glVertexAttrib4Nsv"); if proc.is_null() {dummy_pfnglvertexattrib4nsvproc} else {unsafe{transmute(proc)}}},
10922			vertexattrib4nub: {let proc = get_proc_address("glVertexAttrib4Nub"); if proc.is_null() {dummy_pfnglvertexattrib4nubproc} else {unsafe{transmute(proc)}}},
10923			vertexattrib4nubv: {let proc = get_proc_address("glVertexAttrib4Nubv"); if proc.is_null() {dummy_pfnglvertexattrib4nubvproc} else {unsafe{transmute(proc)}}},
10924			vertexattrib4nuiv: {let proc = get_proc_address("glVertexAttrib4Nuiv"); if proc.is_null() {dummy_pfnglvertexattrib4nuivproc} else {unsafe{transmute(proc)}}},
10925			vertexattrib4nusv: {let proc = get_proc_address("glVertexAttrib4Nusv"); if proc.is_null() {dummy_pfnglvertexattrib4nusvproc} else {unsafe{transmute(proc)}}},
10926			vertexattrib4bv: {let proc = get_proc_address("glVertexAttrib4bv"); if proc.is_null() {dummy_pfnglvertexattrib4bvproc} else {unsafe{transmute(proc)}}},
10927			vertexattrib4d: {let proc = get_proc_address("glVertexAttrib4d"); if proc.is_null() {dummy_pfnglvertexattrib4dproc} else {unsafe{transmute(proc)}}},
10928			vertexattrib4dv: {let proc = get_proc_address("glVertexAttrib4dv"); if proc.is_null() {dummy_pfnglvertexattrib4dvproc} else {unsafe{transmute(proc)}}},
10929			vertexattrib4f: {let proc = get_proc_address("glVertexAttrib4f"); if proc.is_null() {dummy_pfnglvertexattrib4fproc} else {unsafe{transmute(proc)}}},
10930			vertexattrib4fv: {let proc = get_proc_address("glVertexAttrib4fv"); if proc.is_null() {dummy_pfnglvertexattrib4fvproc} else {unsafe{transmute(proc)}}},
10931			vertexattrib4iv: {let proc = get_proc_address("glVertexAttrib4iv"); if proc.is_null() {dummy_pfnglvertexattrib4ivproc} else {unsafe{transmute(proc)}}},
10932			vertexattrib4s: {let proc = get_proc_address("glVertexAttrib4s"); if proc.is_null() {dummy_pfnglvertexattrib4sproc} else {unsafe{transmute(proc)}}},
10933			vertexattrib4sv: {let proc = get_proc_address("glVertexAttrib4sv"); if proc.is_null() {dummy_pfnglvertexattrib4svproc} else {unsafe{transmute(proc)}}},
10934			vertexattrib4ubv: {let proc = get_proc_address("glVertexAttrib4ubv"); if proc.is_null() {dummy_pfnglvertexattrib4ubvproc} else {unsafe{transmute(proc)}}},
10935			vertexattrib4uiv: {let proc = get_proc_address("glVertexAttrib4uiv"); if proc.is_null() {dummy_pfnglvertexattrib4uivproc} else {unsafe{transmute(proc)}}},
10936			vertexattrib4usv: {let proc = get_proc_address("glVertexAttrib4usv"); if proc.is_null() {dummy_pfnglvertexattrib4usvproc} else {unsafe{transmute(proc)}}},
10937			vertexattribpointer: {let proc = get_proc_address("glVertexAttribPointer"); if proc.is_null() {dummy_pfnglvertexattribpointerproc} else {unsafe{transmute(proc)}}},
10938			shading_language_version: base.glGetString(GL_SHADING_LANGUAGE_VERSION).unwrap(),
10939		}
10940	}
10941	#[inline(always)]
10942	pub fn get_available(&self) -> bool {
10943		self.available
10944	}
10945}
10946
10947impl Default for Version20 {
10948	fn default() -> Self {
10949		Self {
10950			available: false,
10951			geterror: dummy_pfnglgeterrorproc,
10952			blendequationseparate: dummy_pfnglblendequationseparateproc,
10953			drawbuffers: dummy_pfngldrawbuffersproc,
10954			stencilopseparate: dummy_pfnglstencilopseparateproc,
10955			stencilfuncseparate: dummy_pfnglstencilfuncseparateproc,
10956			stencilmaskseparate: dummy_pfnglstencilmaskseparateproc,
10957			attachshader: dummy_pfnglattachshaderproc,
10958			bindattriblocation: dummy_pfnglbindattriblocationproc,
10959			compileshader: dummy_pfnglcompileshaderproc,
10960			createprogram: dummy_pfnglcreateprogramproc,
10961			createshader: dummy_pfnglcreateshaderproc,
10962			deleteprogram: dummy_pfngldeleteprogramproc,
10963			deleteshader: dummy_pfngldeleteshaderproc,
10964			detachshader: dummy_pfngldetachshaderproc,
10965			disablevertexattribarray: dummy_pfngldisablevertexattribarrayproc,
10966			enablevertexattribarray: dummy_pfnglenablevertexattribarrayproc,
10967			getactiveattrib: dummy_pfnglgetactiveattribproc,
10968			getactiveuniform: dummy_pfnglgetactiveuniformproc,
10969			getattachedshaders: dummy_pfnglgetattachedshadersproc,
10970			getattriblocation: dummy_pfnglgetattriblocationproc,
10971			getprogramiv: dummy_pfnglgetprogramivproc,
10972			getprograminfolog: dummy_pfnglgetprograminfologproc,
10973			getshaderiv: dummy_pfnglgetshaderivproc,
10974			getshaderinfolog: dummy_pfnglgetshaderinfologproc,
10975			getshadersource: dummy_pfnglgetshadersourceproc,
10976			getuniformlocation: dummy_pfnglgetuniformlocationproc,
10977			getuniformfv: dummy_pfnglgetuniformfvproc,
10978			getuniformiv: dummy_pfnglgetuniformivproc,
10979			getvertexattribdv: dummy_pfnglgetvertexattribdvproc,
10980			getvertexattribfv: dummy_pfnglgetvertexattribfvproc,
10981			getvertexattribiv: dummy_pfnglgetvertexattribivproc,
10982			getvertexattribpointerv: dummy_pfnglgetvertexattribpointervproc,
10983			isprogram: dummy_pfnglisprogramproc,
10984			isshader: dummy_pfnglisshaderproc,
10985			linkprogram: dummy_pfngllinkprogramproc,
10986			shadersource: dummy_pfnglshadersourceproc,
10987			useprogram: dummy_pfngluseprogramproc,
10988			uniform1f: dummy_pfngluniform1fproc,
10989			uniform2f: dummy_pfngluniform2fproc,
10990			uniform3f: dummy_pfngluniform3fproc,
10991			uniform4f: dummy_pfngluniform4fproc,
10992			uniform1i: dummy_pfngluniform1iproc,
10993			uniform2i: dummy_pfngluniform2iproc,
10994			uniform3i: dummy_pfngluniform3iproc,
10995			uniform4i: dummy_pfngluniform4iproc,
10996			uniform1fv: dummy_pfngluniform1fvproc,
10997			uniform2fv: dummy_pfngluniform2fvproc,
10998			uniform3fv: dummy_pfngluniform3fvproc,
10999			uniform4fv: dummy_pfngluniform4fvproc,
11000			uniform1iv: dummy_pfngluniform1ivproc,
11001			uniform2iv: dummy_pfngluniform2ivproc,
11002			uniform3iv: dummy_pfngluniform3ivproc,
11003			uniform4iv: dummy_pfngluniform4ivproc,
11004			uniformmatrix2fv: dummy_pfngluniformmatrix2fvproc,
11005			uniformmatrix3fv: dummy_pfngluniformmatrix3fvproc,
11006			uniformmatrix4fv: dummy_pfngluniformmatrix4fvproc,
11007			validateprogram: dummy_pfnglvalidateprogramproc,
11008			vertexattrib1d: dummy_pfnglvertexattrib1dproc,
11009			vertexattrib1dv: dummy_pfnglvertexattrib1dvproc,
11010			vertexattrib1f: dummy_pfnglvertexattrib1fproc,
11011			vertexattrib1fv: dummy_pfnglvertexattrib1fvproc,
11012			vertexattrib1s: dummy_pfnglvertexattrib1sproc,
11013			vertexattrib1sv: dummy_pfnglvertexattrib1svproc,
11014			vertexattrib2d: dummy_pfnglvertexattrib2dproc,
11015			vertexattrib2dv: dummy_pfnglvertexattrib2dvproc,
11016			vertexattrib2f: dummy_pfnglvertexattrib2fproc,
11017			vertexattrib2fv: dummy_pfnglvertexattrib2fvproc,
11018			vertexattrib2s: dummy_pfnglvertexattrib2sproc,
11019			vertexattrib2sv: dummy_pfnglvertexattrib2svproc,
11020			vertexattrib3d: dummy_pfnglvertexattrib3dproc,
11021			vertexattrib3dv: dummy_pfnglvertexattrib3dvproc,
11022			vertexattrib3f: dummy_pfnglvertexattrib3fproc,
11023			vertexattrib3fv: dummy_pfnglvertexattrib3fvproc,
11024			vertexattrib3s: dummy_pfnglvertexattrib3sproc,
11025			vertexattrib3sv: dummy_pfnglvertexattrib3svproc,
11026			vertexattrib4nbv: dummy_pfnglvertexattrib4nbvproc,
11027			vertexattrib4niv: dummy_pfnglvertexattrib4nivproc,
11028			vertexattrib4nsv: dummy_pfnglvertexattrib4nsvproc,
11029			vertexattrib4nub: dummy_pfnglvertexattrib4nubproc,
11030			vertexattrib4nubv: dummy_pfnglvertexattrib4nubvproc,
11031			vertexattrib4nuiv: dummy_pfnglvertexattrib4nuivproc,
11032			vertexattrib4nusv: dummy_pfnglvertexattrib4nusvproc,
11033			vertexattrib4bv: dummy_pfnglvertexattrib4bvproc,
11034			vertexattrib4d: dummy_pfnglvertexattrib4dproc,
11035			vertexattrib4dv: dummy_pfnglvertexattrib4dvproc,
11036			vertexattrib4f: dummy_pfnglvertexattrib4fproc,
11037			vertexattrib4fv: dummy_pfnglvertexattrib4fvproc,
11038			vertexattrib4iv: dummy_pfnglvertexattrib4ivproc,
11039			vertexattrib4s: dummy_pfnglvertexattrib4sproc,
11040			vertexattrib4sv: dummy_pfnglvertexattrib4svproc,
11041			vertexattrib4ubv: dummy_pfnglvertexattrib4ubvproc,
11042			vertexattrib4uiv: dummy_pfnglvertexattrib4uivproc,
11043			vertexattrib4usv: dummy_pfnglvertexattrib4usvproc,
11044			vertexattribpointer: dummy_pfnglvertexattribpointerproc,
11045			shading_language_version: "unknown",
11046		}
11047	}
11048}
11049impl Debug for Version20 {
11050	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
11051		if self.available {
11052			f.debug_struct("Version20")
11053			.field("available", &self.available)
11054			.field("shading_language_version", &self.shading_language_version)
11055			.field("blendequationseparate", unsafe{if transmute::<_, *const c_void>(self.blendequationseparate) == (dummy_pfnglblendequationseparateproc as *const c_void) {&null::<PFNGLBLENDEQUATIONSEPARATEPROC>()} else {&self.blendequationseparate}})
11056			.field("drawbuffers", unsafe{if transmute::<_, *const c_void>(self.drawbuffers) == (dummy_pfngldrawbuffersproc as *const c_void) {&null::<PFNGLDRAWBUFFERSPROC>()} else {&self.drawbuffers}})
11057			.field("stencilopseparate", unsafe{if transmute::<_, *const c_void>(self.stencilopseparate) == (dummy_pfnglstencilopseparateproc as *const c_void) {&null::<PFNGLSTENCILOPSEPARATEPROC>()} else {&self.stencilopseparate}})
11058			.field("stencilfuncseparate", unsafe{if transmute::<_, *const c_void>(self.stencilfuncseparate) == (dummy_pfnglstencilfuncseparateproc as *const c_void) {&null::<PFNGLSTENCILFUNCSEPARATEPROC>()} else {&self.stencilfuncseparate}})
11059			.field("stencilmaskseparate", unsafe{if transmute::<_, *const c_void>(self.stencilmaskseparate) == (dummy_pfnglstencilmaskseparateproc as *const c_void) {&null::<PFNGLSTENCILMASKSEPARATEPROC>()} else {&self.stencilmaskseparate}})
11060			.field("attachshader", unsafe{if transmute::<_, *const c_void>(self.attachshader) == (dummy_pfnglattachshaderproc as *const c_void) {&null::<PFNGLATTACHSHADERPROC>()} else {&self.attachshader}})
11061			.field("bindattriblocation", unsafe{if transmute::<_, *const c_void>(self.bindattriblocation) == (dummy_pfnglbindattriblocationproc as *const c_void) {&null::<PFNGLBINDATTRIBLOCATIONPROC>()} else {&self.bindattriblocation}})
11062			.field("compileshader", unsafe{if transmute::<_, *const c_void>(self.compileshader) == (dummy_pfnglcompileshaderproc as *const c_void) {&null::<PFNGLCOMPILESHADERPROC>()} else {&self.compileshader}})
11063			.field("createprogram", unsafe{if transmute::<_, *const c_void>(self.createprogram) == (dummy_pfnglcreateprogramproc as *const c_void) {&null::<PFNGLCREATEPROGRAMPROC>()} else {&self.createprogram}})
11064			.field("createshader", unsafe{if transmute::<_, *const c_void>(self.createshader) == (dummy_pfnglcreateshaderproc as *const c_void) {&null::<PFNGLCREATESHADERPROC>()} else {&self.createshader}})
11065			.field("deleteprogram", unsafe{if transmute::<_, *const c_void>(self.deleteprogram) == (dummy_pfngldeleteprogramproc as *const c_void) {&null::<PFNGLDELETEPROGRAMPROC>()} else {&self.deleteprogram}})
11066			.field("deleteshader", unsafe{if transmute::<_, *const c_void>(self.deleteshader) == (dummy_pfngldeleteshaderproc as *const c_void) {&null::<PFNGLDELETESHADERPROC>()} else {&self.deleteshader}})
11067			.field("detachshader", unsafe{if transmute::<_, *const c_void>(self.detachshader) == (dummy_pfngldetachshaderproc as *const c_void) {&null::<PFNGLDETACHSHADERPROC>()} else {&self.detachshader}})
11068			.field("disablevertexattribarray", unsafe{if transmute::<_, *const c_void>(self.disablevertexattribarray) == (dummy_pfngldisablevertexattribarrayproc as *const c_void) {&null::<PFNGLDISABLEVERTEXATTRIBARRAYPROC>()} else {&self.disablevertexattribarray}})
11069			.field("enablevertexattribarray", unsafe{if transmute::<_, *const c_void>(self.enablevertexattribarray) == (dummy_pfnglenablevertexattribarrayproc as *const c_void) {&null::<PFNGLENABLEVERTEXATTRIBARRAYPROC>()} else {&self.enablevertexattribarray}})
11070			.field("getactiveattrib", unsafe{if transmute::<_, *const c_void>(self.getactiveattrib) == (dummy_pfnglgetactiveattribproc as *const c_void) {&null::<PFNGLGETACTIVEATTRIBPROC>()} else {&self.getactiveattrib}})
11071			.field("getactiveuniform", unsafe{if transmute::<_, *const c_void>(self.getactiveuniform) == (dummy_pfnglgetactiveuniformproc as *const c_void) {&null::<PFNGLGETACTIVEUNIFORMPROC>()} else {&self.getactiveuniform}})
11072			.field("getattachedshaders", unsafe{if transmute::<_, *const c_void>(self.getattachedshaders) == (dummy_pfnglgetattachedshadersproc as *const c_void) {&null::<PFNGLGETATTACHEDSHADERSPROC>()} else {&self.getattachedshaders}})
11073			.field("getattriblocation", unsafe{if transmute::<_, *const c_void>(self.getattriblocation) == (dummy_pfnglgetattriblocationproc as *const c_void) {&null::<PFNGLGETATTRIBLOCATIONPROC>()} else {&self.getattriblocation}})
11074			.field("getprogramiv", unsafe{if transmute::<_, *const c_void>(self.getprogramiv) == (dummy_pfnglgetprogramivproc as *const c_void) {&null::<PFNGLGETPROGRAMIVPROC>()} else {&self.getprogramiv}})
11075			.field("getprograminfolog", unsafe{if transmute::<_, *const c_void>(self.getprograminfolog) == (dummy_pfnglgetprograminfologproc as *const c_void) {&null::<PFNGLGETPROGRAMINFOLOGPROC>()} else {&self.getprograminfolog}})
11076			.field("getshaderiv", unsafe{if transmute::<_, *const c_void>(self.getshaderiv) == (dummy_pfnglgetshaderivproc as *const c_void) {&null::<PFNGLGETSHADERIVPROC>()} else {&self.getshaderiv}})
11077			.field("getshaderinfolog", unsafe{if transmute::<_, *const c_void>(self.getshaderinfolog) == (dummy_pfnglgetshaderinfologproc as *const c_void) {&null::<PFNGLGETSHADERINFOLOGPROC>()} else {&self.getshaderinfolog}})
11078			.field("getshadersource", unsafe{if transmute::<_, *const c_void>(self.getshadersource) == (dummy_pfnglgetshadersourceproc as *const c_void) {&null::<PFNGLGETSHADERSOURCEPROC>()} else {&self.getshadersource}})
11079			.field("getuniformlocation", unsafe{if transmute::<_, *const c_void>(self.getuniformlocation) == (dummy_pfnglgetuniformlocationproc as *const c_void) {&null::<PFNGLGETUNIFORMLOCATIONPROC>()} else {&self.getuniformlocation}})
11080			.field("getuniformfv", unsafe{if transmute::<_, *const c_void>(self.getuniformfv) == (dummy_pfnglgetuniformfvproc as *const c_void) {&null::<PFNGLGETUNIFORMFVPROC>()} else {&self.getuniformfv}})
11081			.field("getuniformiv", unsafe{if transmute::<_, *const c_void>(self.getuniformiv) == (dummy_pfnglgetuniformivproc as *const c_void) {&null::<PFNGLGETUNIFORMIVPROC>()} else {&self.getuniformiv}})
11082			.field("getvertexattribdv", unsafe{if transmute::<_, *const c_void>(self.getvertexattribdv) == (dummy_pfnglgetvertexattribdvproc as *const c_void) {&null::<PFNGLGETVERTEXATTRIBDVPROC>()} else {&self.getvertexattribdv}})
11083			.field("getvertexattribfv", unsafe{if transmute::<_, *const c_void>(self.getvertexattribfv) == (dummy_pfnglgetvertexattribfvproc as *const c_void) {&null::<PFNGLGETVERTEXATTRIBFVPROC>()} else {&self.getvertexattribfv}})
11084			.field("getvertexattribiv", unsafe{if transmute::<_, *const c_void>(self.getvertexattribiv) == (dummy_pfnglgetvertexattribivproc as *const c_void) {&null::<PFNGLGETVERTEXATTRIBIVPROC>()} else {&self.getvertexattribiv}})
11085			.field("getvertexattribpointerv", unsafe{if transmute::<_, *const c_void>(self.getvertexattribpointerv) == (dummy_pfnglgetvertexattribpointervproc as *const c_void) {&null::<PFNGLGETVERTEXATTRIBPOINTERVPROC>()} else {&self.getvertexattribpointerv}})
11086			.field("isprogram", unsafe{if transmute::<_, *const c_void>(self.isprogram) == (dummy_pfnglisprogramproc as *const c_void) {&null::<PFNGLISPROGRAMPROC>()} else {&self.isprogram}})
11087			.field("isshader", unsafe{if transmute::<_, *const c_void>(self.isshader) == (dummy_pfnglisshaderproc as *const c_void) {&null::<PFNGLISSHADERPROC>()} else {&self.isshader}})
11088			.field("linkprogram", unsafe{if transmute::<_, *const c_void>(self.linkprogram) == (dummy_pfngllinkprogramproc as *const c_void) {&null::<PFNGLLINKPROGRAMPROC>()} else {&self.linkprogram}})
11089			.field("shadersource", unsafe{if transmute::<_, *const c_void>(self.shadersource) == (dummy_pfnglshadersourceproc as *const c_void) {&null::<PFNGLSHADERSOURCEPROC>()} else {&self.shadersource}})
11090			.field("useprogram", unsafe{if transmute::<_, *const c_void>(self.useprogram) == (dummy_pfngluseprogramproc as *const c_void) {&null::<PFNGLUSEPROGRAMPROC>()} else {&self.useprogram}})
11091			.field("uniform1f", unsafe{if transmute::<_, *const c_void>(self.uniform1f) == (dummy_pfngluniform1fproc as *const c_void) {&null::<PFNGLUNIFORM1FPROC>()} else {&self.uniform1f}})
11092			.field("uniform2f", unsafe{if transmute::<_, *const c_void>(self.uniform2f) == (dummy_pfngluniform2fproc as *const c_void) {&null::<PFNGLUNIFORM2FPROC>()} else {&self.uniform2f}})
11093			.field("uniform3f", unsafe{if transmute::<_, *const c_void>(self.uniform3f) == (dummy_pfngluniform3fproc as *const c_void) {&null::<PFNGLUNIFORM3FPROC>()} else {&self.uniform3f}})
11094			.field("uniform4f", unsafe{if transmute::<_, *const c_void>(self.uniform4f) == (dummy_pfngluniform4fproc as *const c_void) {&null::<PFNGLUNIFORM4FPROC>()} else {&self.uniform4f}})
11095			.field("uniform1i", unsafe{if transmute::<_, *const c_void>(self.uniform1i) == (dummy_pfngluniform1iproc as *const c_void) {&null::<PFNGLUNIFORM1IPROC>()} else {&self.uniform1i}})
11096			.field("uniform2i", unsafe{if transmute::<_, *const c_void>(self.uniform2i) == (dummy_pfngluniform2iproc as *const c_void) {&null::<PFNGLUNIFORM2IPROC>()} else {&self.uniform2i}})
11097			.field("uniform3i", unsafe{if transmute::<_, *const c_void>(self.uniform3i) == (dummy_pfngluniform3iproc as *const c_void) {&null::<PFNGLUNIFORM3IPROC>()} else {&self.uniform3i}})
11098			.field("uniform4i", unsafe{if transmute::<_, *const c_void>(self.uniform4i) == (dummy_pfngluniform4iproc as *const c_void) {&null::<PFNGLUNIFORM4IPROC>()} else {&self.uniform4i}})
11099			.field("uniform1fv", unsafe{if transmute::<_, *const c_void>(self.uniform1fv) == (dummy_pfngluniform1fvproc as *const c_void) {&null::<PFNGLUNIFORM1FVPROC>()} else {&self.uniform1fv}})
11100			.field("uniform2fv", unsafe{if transmute::<_, *const c_void>(self.uniform2fv) == (dummy_pfngluniform2fvproc as *const c_void) {&null::<PFNGLUNIFORM2FVPROC>()} else {&self.uniform2fv}})
11101			.field("uniform3fv", unsafe{if transmute::<_, *const c_void>(self.uniform3fv) == (dummy_pfngluniform3fvproc as *const c_void) {&null::<PFNGLUNIFORM3FVPROC>()} else {&self.uniform3fv}})
11102			.field("uniform4fv", unsafe{if transmute::<_, *const c_void>(self.uniform4fv) == (dummy_pfngluniform4fvproc as *const c_void) {&null::<PFNGLUNIFORM4FVPROC>()} else {&self.uniform4fv}})
11103			.field("uniform1iv", unsafe{if transmute::<_, *const c_void>(self.uniform1iv) == (dummy_pfngluniform1ivproc as *const c_void) {&null::<PFNGLUNIFORM1IVPROC>()} else {&self.uniform1iv}})
11104			.field("uniform2iv", unsafe{if transmute::<_, *const c_void>(self.uniform2iv) == (dummy_pfngluniform2ivproc as *const c_void) {&null::<PFNGLUNIFORM2IVPROC>()} else {&self.uniform2iv}})
11105			.field("uniform3iv", unsafe{if transmute::<_, *const c_void>(self.uniform3iv) == (dummy_pfngluniform3ivproc as *const c_void) {&null::<PFNGLUNIFORM3IVPROC>()} else {&self.uniform3iv}})
11106			.field("uniform4iv", unsafe{if transmute::<_, *const c_void>(self.uniform4iv) == (dummy_pfngluniform4ivproc as *const c_void) {&null::<PFNGLUNIFORM4IVPROC>()} else {&self.uniform4iv}})
11107			.field("uniformmatrix2fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix2fv) == (dummy_pfngluniformmatrix2fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX2FVPROC>()} else {&self.uniformmatrix2fv}})
11108			.field("uniformmatrix3fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix3fv) == (dummy_pfngluniformmatrix3fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX3FVPROC>()} else {&self.uniformmatrix3fv}})
11109			.field("uniformmatrix4fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix4fv) == (dummy_pfngluniformmatrix4fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX4FVPROC>()} else {&self.uniformmatrix4fv}})
11110			.field("validateprogram", unsafe{if transmute::<_, *const c_void>(self.validateprogram) == (dummy_pfnglvalidateprogramproc as *const c_void) {&null::<PFNGLVALIDATEPROGRAMPROC>()} else {&self.validateprogram}})
11111			.field("vertexattrib1d", unsafe{if transmute::<_, *const c_void>(self.vertexattrib1d) == (dummy_pfnglvertexattrib1dproc as *const c_void) {&null::<PFNGLVERTEXATTRIB1DPROC>()} else {&self.vertexattrib1d}})
11112			.field("vertexattrib1dv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib1dv) == (dummy_pfnglvertexattrib1dvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB1DVPROC>()} else {&self.vertexattrib1dv}})
11113			.field("vertexattrib1f", unsafe{if transmute::<_, *const c_void>(self.vertexattrib1f) == (dummy_pfnglvertexattrib1fproc as *const c_void) {&null::<PFNGLVERTEXATTRIB1FPROC>()} else {&self.vertexattrib1f}})
11114			.field("vertexattrib1fv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib1fv) == (dummy_pfnglvertexattrib1fvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB1FVPROC>()} else {&self.vertexattrib1fv}})
11115			.field("vertexattrib1s", unsafe{if transmute::<_, *const c_void>(self.vertexattrib1s) == (dummy_pfnglvertexattrib1sproc as *const c_void) {&null::<PFNGLVERTEXATTRIB1SPROC>()} else {&self.vertexattrib1s}})
11116			.field("vertexattrib1sv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib1sv) == (dummy_pfnglvertexattrib1svproc as *const c_void) {&null::<PFNGLVERTEXATTRIB1SVPROC>()} else {&self.vertexattrib1sv}})
11117			.field("vertexattrib2d", unsafe{if transmute::<_, *const c_void>(self.vertexattrib2d) == (dummy_pfnglvertexattrib2dproc as *const c_void) {&null::<PFNGLVERTEXATTRIB2DPROC>()} else {&self.vertexattrib2d}})
11118			.field("vertexattrib2dv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib2dv) == (dummy_pfnglvertexattrib2dvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB2DVPROC>()} else {&self.vertexattrib2dv}})
11119			.field("vertexattrib2f", unsafe{if transmute::<_, *const c_void>(self.vertexattrib2f) == (dummy_pfnglvertexattrib2fproc as *const c_void) {&null::<PFNGLVERTEXATTRIB2FPROC>()} else {&self.vertexattrib2f}})
11120			.field("vertexattrib2fv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib2fv) == (dummy_pfnglvertexattrib2fvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB2FVPROC>()} else {&self.vertexattrib2fv}})
11121			.field("vertexattrib2s", unsafe{if transmute::<_, *const c_void>(self.vertexattrib2s) == (dummy_pfnglvertexattrib2sproc as *const c_void) {&null::<PFNGLVERTEXATTRIB2SPROC>()} else {&self.vertexattrib2s}})
11122			.field("vertexattrib2sv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib2sv) == (dummy_pfnglvertexattrib2svproc as *const c_void) {&null::<PFNGLVERTEXATTRIB2SVPROC>()} else {&self.vertexattrib2sv}})
11123			.field("vertexattrib3d", unsafe{if transmute::<_, *const c_void>(self.vertexattrib3d) == (dummy_pfnglvertexattrib3dproc as *const c_void) {&null::<PFNGLVERTEXATTRIB3DPROC>()} else {&self.vertexattrib3d}})
11124			.field("vertexattrib3dv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib3dv) == (dummy_pfnglvertexattrib3dvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB3DVPROC>()} else {&self.vertexattrib3dv}})
11125			.field("vertexattrib3f", unsafe{if transmute::<_, *const c_void>(self.vertexattrib3f) == (dummy_pfnglvertexattrib3fproc as *const c_void) {&null::<PFNGLVERTEXATTRIB3FPROC>()} else {&self.vertexattrib3f}})
11126			.field("vertexattrib3fv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib3fv) == (dummy_pfnglvertexattrib3fvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB3FVPROC>()} else {&self.vertexattrib3fv}})
11127			.field("vertexattrib3s", unsafe{if transmute::<_, *const c_void>(self.vertexattrib3s) == (dummy_pfnglvertexattrib3sproc as *const c_void) {&null::<PFNGLVERTEXATTRIB3SPROC>()} else {&self.vertexattrib3s}})
11128			.field("vertexattrib3sv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib3sv) == (dummy_pfnglvertexattrib3svproc as *const c_void) {&null::<PFNGLVERTEXATTRIB3SVPROC>()} else {&self.vertexattrib3sv}})
11129			.field("vertexattrib4nbv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4nbv) == (dummy_pfnglvertexattrib4nbvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4NBVPROC>()} else {&self.vertexattrib4nbv}})
11130			.field("vertexattrib4niv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4niv) == (dummy_pfnglvertexattrib4nivproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4NIVPROC>()} else {&self.vertexattrib4niv}})
11131			.field("vertexattrib4nsv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4nsv) == (dummy_pfnglvertexattrib4nsvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4NSVPROC>()} else {&self.vertexattrib4nsv}})
11132			.field("vertexattrib4nub", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4nub) == (dummy_pfnglvertexattrib4nubproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4NUBPROC>()} else {&self.vertexattrib4nub}})
11133			.field("vertexattrib4nubv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4nubv) == (dummy_pfnglvertexattrib4nubvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4NUBVPROC>()} else {&self.vertexattrib4nubv}})
11134			.field("vertexattrib4nuiv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4nuiv) == (dummy_pfnglvertexattrib4nuivproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4NUIVPROC>()} else {&self.vertexattrib4nuiv}})
11135			.field("vertexattrib4nusv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4nusv) == (dummy_pfnglvertexattrib4nusvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4NUSVPROC>()} else {&self.vertexattrib4nusv}})
11136			.field("vertexattrib4bv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4bv) == (dummy_pfnglvertexattrib4bvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4BVPROC>()} else {&self.vertexattrib4bv}})
11137			.field("vertexattrib4d", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4d) == (dummy_pfnglvertexattrib4dproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4DPROC>()} else {&self.vertexattrib4d}})
11138			.field("vertexattrib4dv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4dv) == (dummy_pfnglvertexattrib4dvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4DVPROC>()} else {&self.vertexattrib4dv}})
11139			.field("vertexattrib4f", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4f) == (dummy_pfnglvertexattrib4fproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4FPROC>()} else {&self.vertexattrib4f}})
11140			.field("vertexattrib4fv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4fv) == (dummy_pfnglvertexattrib4fvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4FVPROC>()} else {&self.vertexattrib4fv}})
11141			.field("vertexattrib4iv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4iv) == (dummy_pfnglvertexattrib4ivproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4IVPROC>()} else {&self.vertexattrib4iv}})
11142			.field("vertexattrib4s", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4s) == (dummy_pfnglvertexattrib4sproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4SPROC>()} else {&self.vertexattrib4s}})
11143			.field("vertexattrib4sv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4sv) == (dummy_pfnglvertexattrib4svproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4SVPROC>()} else {&self.vertexattrib4sv}})
11144			.field("vertexattrib4ubv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4ubv) == (dummy_pfnglvertexattrib4ubvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4UBVPROC>()} else {&self.vertexattrib4ubv}})
11145			.field("vertexattrib4uiv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4uiv) == (dummy_pfnglvertexattrib4uivproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4UIVPROC>()} else {&self.vertexattrib4uiv}})
11146			.field("vertexattrib4usv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4usv) == (dummy_pfnglvertexattrib4usvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4USVPROC>()} else {&self.vertexattrib4usv}})
11147			.field("vertexattribpointer", unsafe{if transmute::<_, *const c_void>(self.vertexattribpointer) == (dummy_pfnglvertexattribpointerproc as *const c_void) {&null::<PFNGLVERTEXATTRIBPOINTERPROC>()} else {&self.vertexattribpointer}})
11148			.finish()
11149		} else {
11150			f.debug_struct("Version20")
11151			.field("available", &self.available)
11152			.finish_non_exhaustive()
11153		}
11154	}
11155}
11156
11157/// The prototype to the OpenGL function `UniformMatrix2x3fv`
11158type PFNGLUNIFORMMATRIX2X3FVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLfloat);
11159
11160/// The prototype to the OpenGL function `UniformMatrix3x2fv`
11161type PFNGLUNIFORMMATRIX3X2FVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLfloat);
11162
11163/// The prototype to the OpenGL function `UniformMatrix2x4fv`
11164type PFNGLUNIFORMMATRIX2X4FVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLfloat);
11165
11166/// The prototype to the OpenGL function `UniformMatrix4x2fv`
11167type PFNGLUNIFORMMATRIX4X2FVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLfloat);
11168
11169/// The prototype to the OpenGL function `UniformMatrix3x4fv`
11170type PFNGLUNIFORMMATRIX3X4FVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLfloat);
11171
11172/// The prototype to the OpenGL function `UniformMatrix4x3fv`
11173type PFNGLUNIFORMMATRIX4X3FVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLfloat);
11174
11175/// The dummy function of `UniformMatrix2x3fv()`
11176extern "system" fn dummy_pfngluniformmatrix2x3fvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
11177	panic!("OpenGL function pointer `glUniformMatrix2x3fv()` is null.")
11178}
11179
11180/// The dummy function of `UniformMatrix3x2fv()`
11181extern "system" fn dummy_pfngluniformmatrix3x2fvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
11182	panic!("OpenGL function pointer `glUniformMatrix3x2fv()` is null.")
11183}
11184
11185/// The dummy function of `UniformMatrix2x4fv()`
11186extern "system" fn dummy_pfngluniformmatrix2x4fvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
11187	panic!("OpenGL function pointer `glUniformMatrix2x4fv()` is null.")
11188}
11189
11190/// The dummy function of `UniformMatrix4x2fv()`
11191extern "system" fn dummy_pfngluniformmatrix4x2fvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
11192	panic!("OpenGL function pointer `glUniformMatrix4x2fv()` is null.")
11193}
11194
11195/// The dummy function of `UniformMatrix3x4fv()`
11196extern "system" fn dummy_pfngluniformmatrix3x4fvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
11197	panic!("OpenGL function pointer `glUniformMatrix3x4fv()` is null.")
11198}
11199
11200/// The dummy function of `UniformMatrix4x3fv()`
11201extern "system" fn dummy_pfngluniformmatrix4x3fvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
11202	panic!("OpenGL function pointer `glUniformMatrix4x3fv()` is null.")
11203}
11204/// Constant value defined from OpenGL 2.1
11205pub const GL_PIXEL_PACK_BUFFER: GLenum = 0x88EB;
11206
11207/// Constant value defined from OpenGL 2.1
11208pub const GL_PIXEL_UNPACK_BUFFER: GLenum = 0x88EC;
11209
11210/// Constant value defined from OpenGL 2.1
11211pub const GL_PIXEL_PACK_BUFFER_BINDING: GLenum = 0x88ED;
11212
11213/// Constant value defined from OpenGL 2.1
11214pub const GL_PIXEL_UNPACK_BUFFER_BINDING: GLenum = 0x88EF;
11215
11216/// Constant value defined from OpenGL 2.1
11217pub const GL_FLOAT_MAT2x3: GLenum = 0x8B65;
11218
11219/// Constant value defined from OpenGL 2.1
11220pub const GL_FLOAT_MAT2x4: GLenum = 0x8B66;
11221
11222/// Constant value defined from OpenGL 2.1
11223pub const GL_FLOAT_MAT3x2: GLenum = 0x8B67;
11224
11225/// Constant value defined from OpenGL 2.1
11226pub const GL_FLOAT_MAT3x4: GLenum = 0x8B68;
11227
11228/// Constant value defined from OpenGL 2.1
11229pub const GL_FLOAT_MAT4x2: GLenum = 0x8B69;
11230
11231/// Constant value defined from OpenGL 2.1
11232pub const GL_FLOAT_MAT4x3: GLenum = 0x8B6A;
11233
11234/// Constant value defined from OpenGL 2.1
11235pub const GL_SRGB: GLenum = 0x8C40;
11236
11237/// Constant value defined from OpenGL 2.1
11238pub const GL_SRGB8: GLenum = 0x8C41;
11239
11240/// Constant value defined from OpenGL 2.1
11241pub const GL_SRGB_ALPHA: GLenum = 0x8C42;
11242
11243/// Constant value defined from OpenGL 2.1
11244pub const GL_SRGB8_ALPHA8: GLenum = 0x8C43;
11245
11246/// Constant value defined from OpenGL 2.1
11247pub const GL_COMPRESSED_SRGB: GLenum = 0x8C48;
11248
11249/// Constant value defined from OpenGL 2.1
11250pub const GL_COMPRESSED_SRGB_ALPHA: GLenum = 0x8C49;
11251
11252/// Constant value defined from OpenGL 2.1
11253pub const GL_CURRENT_RASTER_SECONDARY_COLOR: GLenum = 0x845F;
11254
11255/// Constant value defined from OpenGL 2.1
11256pub const GL_SLUMINANCE_ALPHA: GLenum = 0x8C44;
11257
11258/// Constant value defined from OpenGL 2.1
11259pub const GL_SLUMINANCE8_ALPHA8: GLenum = 0x8C45;
11260
11261/// Constant value defined from OpenGL 2.1
11262pub const GL_SLUMINANCE: GLenum = 0x8C46;
11263
11264/// Constant value defined from OpenGL 2.1
11265pub const GL_SLUMINANCE8: GLenum = 0x8C47;
11266
11267/// Constant value defined from OpenGL 2.1
11268pub const GL_COMPRESSED_SLUMINANCE: GLenum = 0x8C4A;
11269
11270/// Constant value defined from OpenGL 2.1
11271pub const GL_COMPRESSED_SLUMINANCE_ALPHA: GLenum = 0x8C4B;
11272
11273/// Functions from OpenGL version 2.1
11274pub trait GL_2_1 {
11275	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
11276	fn glGetError(&self) -> GLenum;
11277
11278	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2x3fv.xhtml>
11279	fn glUniformMatrix2x3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
11280
11281	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3x2fv.xhtml>
11282	fn glUniformMatrix3x2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
11283
11284	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2x4fv.xhtml>
11285	fn glUniformMatrix2x4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
11286
11287	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4x2fv.xhtml>
11288	fn glUniformMatrix4x2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
11289
11290	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3x4fv.xhtml>
11291	fn glUniformMatrix3x4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
11292
11293	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4x3fv.xhtml>
11294	fn glUniformMatrix4x3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
11295}
11296/// Functions from OpenGL version 2.1
11297#[derive(Clone, Copy, PartialEq, Eq, Hash)]
11298pub struct Version21 {
11299	/// Is OpenGL version 2.1 available
11300	available: bool,
11301
11302	/// The function pointer to `glGetError()`
11303	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
11304	pub geterror: PFNGLGETERRORPROC,
11305
11306	/// The function pointer to `glUniformMatrix2x3fv()`
11307	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2x3fv.xhtml>
11308	pub uniformmatrix2x3fv: PFNGLUNIFORMMATRIX2X3FVPROC,
11309
11310	/// The function pointer to `glUniformMatrix3x2fv()`
11311	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3x2fv.xhtml>
11312	pub uniformmatrix3x2fv: PFNGLUNIFORMMATRIX3X2FVPROC,
11313
11314	/// The function pointer to `glUniformMatrix2x4fv()`
11315	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2x4fv.xhtml>
11316	pub uniformmatrix2x4fv: PFNGLUNIFORMMATRIX2X4FVPROC,
11317
11318	/// The function pointer to `glUniformMatrix4x2fv()`
11319	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4x2fv.xhtml>
11320	pub uniformmatrix4x2fv: PFNGLUNIFORMMATRIX4X2FVPROC,
11321
11322	/// The function pointer to `glUniformMatrix3x4fv()`
11323	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3x4fv.xhtml>
11324	pub uniformmatrix3x4fv: PFNGLUNIFORMMATRIX3X4FVPROC,
11325
11326	/// The function pointer to `glUniformMatrix4x3fv()`
11327	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4x3fv.xhtml>
11328	pub uniformmatrix4x3fv: PFNGLUNIFORMMATRIX4X3FVPROC,
11329}
11330
11331impl GL_2_1 for Version21 {
11332	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
11333	#[inline(always)]
11334	fn glGetError(&self) -> GLenum {
11335		(self.geterror)()
11336	}
11337	#[inline(always)]
11338	fn glUniformMatrix2x3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
11339		#[cfg(feature = "catch_nullptr")]
11340		let ret = process_catch("glUniformMatrix2x3fv", catch_unwind(||(self.uniformmatrix2x3fv)(location, count, transpose, value)));
11341		#[cfg(not(feature = "catch_nullptr"))]
11342		let ret = {(self.uniformmatrix2x3fv)(location, count, transpose, value); Ok(())};
11343		#[cfg(feature = "diagnose")]
11344		if let Ok(ret) = ret {
11345			return to_result("glUniformMatrix2x3fv", ret, self.glGetError());
11346		} else {
11347			return ret
11348		}
11349		#[cfg(not(feature = "diagnose"))]
11350		return ret;
11351	}
11352	#[inline(always)]
11353	fn glUniformMatrix3x2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
11354		#[cfg(feature = "catch_nullptr")]
11355		let ret = process_catch("glUniformMatrix3x2fv", catch_unwind(||(self.uniformmatrix3x2fv)(location, count, transpose, value)));
11356		#[cfg(not(feature = "catch_nullptr"))]
11357		let ret = {(self.uniformmatrix3x2fv)(location, count, transpose, value); Ok(())};
11358		#[cfg(feature = "diagnose")]
11359		if let Ok(ret) = ret {
11360			return to_result("glUniformMatrix3x2fv", ret, self.glGetError());
11361		} else {
11362			return ret
11363		}
11364		#[cfg(not(feature = "diagnose"))]
11365		return ret;
11366	}
11367	#[inline(always)]
11368	fn glUniformMatrix2x4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
11369		#[cfg(feature = "catch_nullptr")]
11370		let ret = process_catch("glUniformMatrix2x4fv", catch_unwind(||(self.uniformmatrix2x4fv)(location, count, transpose, value)));
11371		#[cfg(not(feature = "catch_nullptr"))]
11372		let ret = {(self.uniformmatrix2x4fv)(location, count, transpose, value); Ok(())};
11373		#[cfg(feature = "diagnose")]
11374		if let Ok(ret) = ret {
11375			return to_result("glUniformMatrix2x4fv", ret, self.glGetError());
11376		} else {
11377			return ret
11378		}
11379		#[cfg(not(feature = "diagnose"))]
11380		return ret;
11381	}
11382	#[inline(always)]
11383	fn glUniformMatrix4x2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
11384		#[cfg(feature = "catch_nullptr")]
11385		let ret = process_catch("glUniformMatrix4x2fv", catch_unwind(||(self.uniformmatrix4x2fv)(location, count, transpose, value)));
11386		#[cfg(not(feature = "catch_nullptr"))]
11387		let ret = {(self.uniformmatrix4x2fv)(location, count, transpose, value); Ok(())};
11388		#[cfg(feature = "diagnose")]
11389		if let Ok(ret) = ret {
11390			return to_result("glUniformMatrix4x2fv", ret, self.glGetError());
11391		} else {
11392			return ret
11393		}
11394		#[cfg(not(feature = "diagnose"))]
11395		return ret;
11396	}
11397	#[inline(always)]
11398	fn glUniformMatrix3x4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
11399		#[cfg(feature = "catch_nullptr")]
11400		let ret = process_catch("glUniformMatrix3x4fv", catch_unwind(||(self.uniformmatrix3x4fv)(location, count, transpose, value)));
11401		#[cfg(not(feature = "catch_nullptr"))]
11402		let ret = {(self.uniformmatrix3x4fv)(location, count, transpose, value); Ok(())};
11403		#[cfg(feature = "diagnose")]
11404		if let Ok(ret) = ret {
11405			return to_result("glUniformMatrix3x4fv", ret, self.glGetError());
11406		} else {
11407			return ret
11408		}
11409		#[cfg(not(feature = "diagnose"))]
11410		return ret;
11411	}
11412	#[inline(always)]
11413	fn glUniformMatrix4x3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
11414		#[cfg(feature = "catch_nullptr")]
11415		let ret = process_catch("glUniformMatrix4x3fv", catch_unwind(||(self.uniformmatrix4x3fv)(location, count, transpose, value)));
11416		#[cfg(not(feature = "catch_nullptr"))]
11417		let ret = {(self.uniformmatrix4x3fv)(location, count, transpose, value); Ok(())};
11418		#[cfg(feature = "diagnose")]
11419		if let Ok(ret) = ret {
11420			return to_result("glUniformMatrix4x3fv", ret, self.glGetError());
11421		} else {
11422			return ret
11423		}
11424		#[cfg(not(feature = "diagnose"))]
11425		return ret;
11426	}
11427}
11428
11429impl Version21 {
11430	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
11431		let (_spec, major, minor, release) = base.get_version();
11432		if (major, minor, release) < (2, 1, 0) {
11433			return Self::default();
11434		}
11435		Self {
11436			available: true,
11437			geterror: {let proc = get_proc_address("glGetError"); if proc.is_null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
11438			uniformmatrix2x3fv: {let proc = get_proc_address("glUniformMatrix2x3fv"); if proc.is_null() {dummy_pfngluniformmatrix2x3fvproc} else {unsafe{transmute(proc)}}},
11439			uniformmatrix3x2fv: {let proc = get_proc_address("glUniformMatrix3x2fv"); if proc.is_null() {dummy_pfngluniformmatrix3x2fvproc} else {unsafe{transmute(proc)}}},
11440			uniformmatrix2x4fv: {let proc = get_proc_address("glUniformMatrix2x4fv"); if proc.is_null() {dummy_pfngluniformmatrix2x4fvproc} else {unsafe{transmute(proc)}}},
11441			uniformmatrix4x2fv: {let proc = get_proc_address("glUniformMatrix4x2fv"); if proc.is_null() {dummy_pfngluniformmatrix4x2fvproc} else {unsafe{transmute(proc)}}},
11442			uniformmatrix3x4fv: {let proc = get_proc_address("glUniformMatrix3x4fv"); if proc.is_null() {dummy_pfngluniformmatrix3x4fvproc} else {unsafe{transmute(proc)}}},
11443			uniformmatrix4x3fv: {let proc = get_proc_address("glUniformMatrix4x3fv"); if proc.is_null() {dummy_pfngluniformmatrix4x3fvproc} else {unsafe{transmute(proc)}}},
11444		}
11445	}
11446	#[inline(always)]
11447	pub fn get_available(&self) -> bool {
11448		self.available
11449	}
11450}
11451
11452impl Default for Version21 {
11453	fn default() -> Self {
11454		Self {
11455			available: false,
11456			geterror: dummy_pfnglgeterrorproc,
11457			uniformmatrix2x3fv: dummy_pfngluniformmatrix2x3fvproc,
11458			uniformmatrix3x2fv: dummy_pfngluniformmatrix3x2fvproc,
11459			uniformmatrix2x4fv: dummy_pfngluniformmatrix2x4fvproc,
11460			uniformmatrix4x2fv: dummy_pfngluniformmatrix4x2fvproc,
11461			uniformmatrix3x4fv: dummy_pfngluniformmatrix3x4fvproc,
11462			uniformmatrix4x3fv: dummy_pfngluniformmatrix4x3fvproc,
11463		}
11464	}
11465}
11466impl Debug for Version21 {
11467	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
11468		if self.available {
11469			f.debug_struct("Version21")
11470			.field("available", &self.available)
11471			.field("uniformmatrix2x3fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix2x3fv) == (dummy_pfngluniformmatrix2x3fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX2X3FVPROC>()} else {&self.uniformmatrix2x3fv}})
11472			.field("uniformmatrix3x2fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix3x2fv) == (dummy_pfngluniformmatrix3x2fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX3X2FVPROC>()} else {&self.uniformmatrix3x2fv}})
11473			.field("uniformmatrix2x4fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix2x4fv) == (dummy_pfngluniformmatrix2x4fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX2X4FVPROC>()} else {&self.uniformmatrix2x4fv}})
11474			.field("uniformmatrix4x2fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix4x2fv) == (dummy_pfngluniformmatrix4x2fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX4X2FVPROC>()} else {&self.uniformmatrix4x2fv}})
11475			.field("uniformmatrix3x4fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix3x4fv) == (dummy_pfngluniformmatrix3x4fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX3X4FVPROC>()} else {&self.uniformmatrix3x4fv}})
11476			.field("uniformmatrix4x3fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix4x3fv) == (dummy_pfngluniformmatrix4x3fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX4X3FVPROC>()} else {&self.uniformmatrix4x3fv}})
11477			.finish()
11478		} else {
11479			f.debug_struct("Version21")
11480			.field("available", &self.available)
11481			.finish_non_exhaustive()
11482		}
11483	}
11484}
11485
11486/// Alias to `khronos_uint16_t`
11487pub type GLhalf = khronos_uint16_t;
11488
11489/// The prototype to the OpenGL function `ColorMaski`
11490type PFNGLCOLORMASKIPROC = extern "system" fn(GLuint, GLboolean, GLboolean, GLboolean, GLboolean);
11491
11492/// The prototype to the OpenGL function `GetBooleani_v`
11493type PFNGLGETBOOLEANI_VPROC = extern "system" fn(GLenum, GLuint, *mut GLboolean);
11494
11495/// The prototype to the OpenGL function `GetIntegeri_v`
11496type PFNGLGETINTEGERI_VPROC = extern "system" fn(GLenum, GLuint, *mut GLint);
11497
11498/// The prototype to the OpenGL function `Enablei`
11499type PFNGLENABLEIPROC = extern "system" fn(GLenum, GLuint);
11500
11501/// The prototype to the OpenGL function `Disablei`
11502type PFNGLDISABLEIPROC = extern "system" fn(GLenum, GLuint);
11503
11504/// The prototype to the OpenGL function `IsEnabledi`
11505type PFNGLISENABLEDIPROC = extern "system" fn(GLenum, GLuint) -> GLboolean;
11506
11507/// The prototype to the OpenGL function `BeginTransformFeedback`
11508type PFNGLBEGINTRANSFORMFEEDBACKPROC = extern "system" fn(GLenum);
11509
11510/// The prototype to the OpenGL function `EndTransformFeedback`
11511type PFNGLENDTRANSFORMFEEDBACKPROC = extern "system" fn();
11512
11513/// The prototype to the OpenGL function `BindBufferRange`
11514type PFNGLBINDBUFFERRANGEPROC = extern "system" fn(GLenum, GLuint, GLuint, GLintptr, GLsizeiptr);
11515
11516/// The prototype to the OpenGL function `BindBufferBase`
11517type PFNGLBINDBUFFERBASEPROC = extern "system" fn(GLenum, GLuint, GLuint);
11518
11519/// The prototype to the OpenGL function `TransformFeedbackVaryings`
11520type PFNGLTRANSFORMFEEDBACKVARYINGSPROC = extern "system" fn(GLuint, GLsizei, *const *const GLchar, GLenum);
11521
11522/// The prototype to the OpenGL function `GetTransformFeedbackVarying`
11523type PFNGLGETTRANSFORMFEEDBACKVARYINGPROC = extern "system" fn(GLuint, GLuint, GLsizei, *mut GLsizei, *mut GLsizei, *mut GLenum, *mut GLchar);
11524
11525/// The prototype to the OpenGL function `ClampColor`
11526type PFNGLCLAMPCOLORPROC = extern "system" fn(GLenum, GLenum);
11527
11528/// The prototype to the OpenGL function `BeginConditionalRender`
11529type PFNGLBEGINCONDITIONALRENDERPROC = extern "system" fn(GLuint, GLenum);
11530
11531/// The prototype to the OpenGL function `EndConditionalRender`
11532type PFNGLENDCONDITIONALRENDERPROC = extern "system" fn();
11533
11534/// The prototype to the OpenGL function `VertexAttribIPointer`
11535type PFNGLVERTEXATTRIBIPOINTERPROC = extern "system" fn(GLuint, GLint, GLenum, GLsizei, *const c_void);
11536
11537/// The prototype to the OpenGL function `GetVertexAttribIiv`
11538type PFNGLGETVERTEXATTRIBIIVPROC = extern "system" fn(GLuint, GLenum, *mut GLint);
11539
11540/// The prototype to the OpenGL function `GetVertexAttribIuiv`
11541type PFNGLGETVERTEXATTRIBIUIVPROC = extern "system" fn(GLuint, GLenum, *mut GLuint);
11542
11543/// The prototype to the OpenGL function `VertexAttribI1i`
11544type PFNGLVERTEXATTRIBI1IPROC = extern "system" fn(GLuint, GLint);
11545
11546/// The prototype to the OpenGL function `VertexAttribI2i`
11547type PFNGLVERTEXATTRIBI2IPROC = extern "system" fn(GLuint, GLint, GLint);
11548
11549/// The prototype to the OpenGL function `VertexAttribI3i`
11550type PFNGLVERTEXATTRIBI3IPROC = extern "system" fn(GLuint, GLint, GLint, GLint);
11551
11552/// The prototype to the OpenGL function `VertexAttribI4i`
11553type PFNGLVERTEXATTRIBI4IPROC = extern "system" fn(GLuint, GLint, GLint, GLint, GLint);
11554
11555/// The prototype to the OpenGL function `VertexAttribI1ui`
11556type PFNGLVERTEXATTRIBI1UIPROC = extern "system" fn(GLuint, GLuint);
11557
11558/// The prototype to the OpenGL function `VertexAttribI2ui`
11559type PFNGLVERTEXATTRIBI2UIPROC = extern "system" fn(GLuint, GLuint, GLuint);
11560
11561/// The prototype to the OpenGL function `VertexAttribI3ui`
11562type PFNGLVERTEXATTRIBI3UIPROC = extern "system" fn(GLuint, GLuint, GLuint, GLuint);
11563
11564/// The prototype to the OpenGL function `VertexAttribI4ui`
11565type PFNGLVERTEXATTRIBI4UIPROC = extern "system" fn(GLuint, GLuint, GLuint, GLuint, GLuint);
11566
11567/// The prototype to the OpenGL function `VertexAttribI1iv`
11568type PFNGLVERTEXATTRIBI1IVPROC = extern "system" fn(GLuint, *const GLint);
11569
11570/// The prototype to the OpenGL function `VertexAttribI2iv`
11571type PFNGLVERTEXATTRIBI2IVPROC = extern "system" fn(GLuint, *const GLint);
11572
11573/// The prototype to the OpenGL function `VertexAttribI3iv`
11574type PFNGLVERTEXATTRIBI3IVPROC = extern "system" fn(GLuint, *const GLint);
11575
11576/// The prototype to the OpenGL function `VertexAttribI4iv`
11577type PFNGLVERTEXATTRIBI4IVPROC = extern "system" fn(GLuint, *const GLint);
11578
11579/// The prototype to the OpenGL function `VertexAttribI1uiv`
11580type PFNGLVERTEXATTRIBI1UIVPROC = extern "system" fn(GLuint, *const GLuint);
11581
11582/// The prototype to the OpenGL function `VertexAttribI2uiv`
11583type PFNGLVERTEXATTRIBI2UIVPROC = extern "system" fn(GLuint, *const GLuint);
11584
11585/// The prototype to the OpenGL function `VertexAttribI3uiv`
11586type PFNGLVERTEXATTRIBI3UIVPROC = extern "system" fn(GLuint, *const GLuint);
11587
11588/// The prototype to the OpenGL function `VertexAttribI4uiv`
11589type PFNGLVERTEXATTRIBI4UIVPROC = extern "system" fn(GLuint, *const GLuint);
11590
11591/// The prototype to the OpenGL function `VertexAttribI4bv`
11592type PFNGLVERTEXATTRIBI4BVPROC = extern "system" fn(GLuint, *const GLbyte);
11593
11594/// The prototype to the OpenGL function `VertexAttribI4sv`
11595type PFNGLVERTEXATTRIBI4SVPROC = extern "system" fn(GLuint, *const GLshort);
11596
11597/// The prototype to the OpenGL function `VertexAttribI4ubv`
11598type PFNGLVERTEXATTRIBI4UBVPROC = extern "system" fn(GLuint, *const GLubyte);
11599
11600/// The prototype to the OpenGL function `VertexAttribI4usv`
11601type PFNGLVERTEXATTRIBI4USVPROC = extern "system" fn(GLuint, *const GLushort);
11602
11603/// The prototype to the OpenGL function `GetUniformuiv`
11604type PFNGLGETUNIFORMUIVPROC = extern "system" fn(GLuint, GLint, *mut GLuint);
11605
11606/// The prototype to the OpenGL function `BindFragDataLocation`
11607type PFNGLBINDFRAGDATALOCATIONPROC = extern "system" fn(GLuint, GLuint, *const GLchar);
11608
11609/// The prototype to the OpenGL function `GetFragDataLocation`
11610type PFNGLGETFRAGDATALOCATIONPROC = extern "system" fn(GLuint, *const GLchar) -> GLint;
11611
11612/// The prototype to the OpenGL function `Uniform1ui`
11613type PFNGLUNIFORM1UIPROC = extern "system" fn(GLint, GLuint);
11614
11615/// The prototype to the OpenGL function `Uniform2ui`
11616type PFNGLUNIFORM2UIPROC = extern "system" fn(GLint, GLuint, GLuint);
11617
11618/// The prototype to the OpenGL function `Uniform3ui`
11619type PFNGLUNIFORM3UIPROC = extern "system" fn(GLint, GLuint, GLuint, GLuint);
11620
11621/// The prototype to the OpenGL function `Uniform4ui`
11622type PFNGLUNIFORM4UIPROC = extern "system" fn(GLint, GLuint, GLuint, GLuint, GLuint);
11623
11624/// The prototype to the OpenGL function `Uniform1uiv`
11625type PFNGLUNIFORM1UIVPROC = extern "system" fn(GLint, GLsizei, *const GLuint);
11626
11627/// The prototype to the OpenGL function `Uniform2uiv`
11628type PFNGLUNIFORM2UIVPROC = extern "system" fn(GLint, GLsizei, *const GLuint);
11629
11630/// The prototype to the OpenGL function `Uniform3uiv`
11631type PFNGLUNIFORM3UIVPROC = extern "system" fn(GLint, GLsizei, *const GLuint);
11632
11633/// The prototype to the OpenGL function `Uniform4uiv`
11634type PFNGLUNIFORM4UIVPROC = extern "system" fn(GLint, GLsizei, *const GLuint);
11635
11636/// The prototype to the OpenGL function `TexParameterIiv`
11637type PFNGLTEXPARAMETERIIVPROC = extern "system" fn(GLenum, GLenum, *const GLint);
11638
11639/// The prototype to the OpenGL function `TexParameterIuiv`
11640type PFNGLTEXPARAMETERIUIVPROC = extern "system" fn(GLenum, GLenum, *const GLuint);
11641
11642/// The prototype to the OpenGL function `GetTexParameterIiv`
11643type PFNGLGETTEXPARAMETERIIVPROC = extern "system" fn(GLenum, GLenum, *mut GLint);
11644
11645/// The prototype to the OpenGL function `GetTexParameterIuiv`
11646type PFNGLGETTEXPARAMETERIUIVPROC = extern "system" fn(GLenum, GLenum, *mut GLuint);
11647
11648/// The prototype to the OpenGL function `ClearBufferiv`
11649type PFNGLCLEARBUFFERIVPROC = extern "system" fn(GLenum, GLint, *const GLint);
11650
11651/// The prototype to the OpenGL function `ClearBufferuiv`
11652type PFNGLCLEARBUFFERUIVPROC = extern "system" fn(GLenum, GLint, *const GLuint);
11653
11654/// The prototype to the OpenGL function `ClearBufferfv`
11655type PFNGLCLEARBUFFERFVPROC = extern "system" fn(GLenum, GLint, *const GLfloat);
11656
11657/// The prototype to the OpenGL function `ClearBufferfi`
11658type PFNGLCLEARBUFFERFIPROC = extern "system" fn(GLenum, GLint, GLfloat, GLint);
11659
11660/// The prototype to the OpenGL function `GetStringi`
11661type PFNGLGETSTRINGIPROC = extern "system" fn(GLenum, GLuint) -> *const GLubyte;
11662
11663/// The prototype to the OpenGL function `IsRenderbuffer`
11664type PFNGLISRENDERBUFFERPROC = extern "system" fn(GLuint) -> GLboolean;
11665
11666/// The prototype to the OpenGL function `BindRenderbuffer`
11667type PFNGLBINDRENDERBUFFERPROC = extern "system" fn(GLenum, GLuint);
11668
11669/// The prototype to the OpenGL function `DeleteRenderbuffers`
11670type PFNGLDELETERENDERBUFFERSPROC = extern "system" fn(GLsizei, *const GLuint);
11671
11672/// The prototype to the OpenGL function `GenRenderbuffers`
11673type PFNGLGENRENDERBUFFERSPROC = extern "system" fn(GLsizei, *mut GLuint);
11674
11675/// The prototype to the OpenGL function `RenderbufferStorage`
11676type PFNGLRENDERBUFFERSTORAGEPROC = extern "system" fn(GLenum, GLenum, GLsizei, GLsizei);
11677
11678/// The prototype to the OpenGL function `GetRenderbufferParameteriv`
11679type PFNGLGETRENDERBUFFERPARAMETERIVPROC = extern "system" fn(GLenum, GLenum, *mut GLint);
11680
11681/// The prototype to the OpenGL function `IsFramebuffer`
11682type PFNGLISFRAMEBUFFERPROC = extern "system" fn(GLuint) -> GLboolean;
11683
11684/// The prototype to the OpenGL function `BindFramebuffer`
11685type PFNGLBINDFRAMEBUFFERPROC = extern "system" fn(GLenum, GLuint);
11686
11687/// The prototype to the OpenGL function `DeleteFramebuffers`
11688type PFNGLDELETEFRAMEBUFFERSPROC = extern "system" fn(GLsizei, *const GLuint);
11689
11690/// The prototype to the OpenGL function `GenFramebuffers`
11691type PFNGLGENFRAMEBUFFERSPROC = extern "system" fn(GLsizei, *mut GLuint);
11692
11693/// The prototype to the OpenGL function `CheckFramebufferStatus`
11694type PFNGLCHECKFRAMEBUFFERSTATUSPROC = extern "system" fn(GLenum) -> GLenum;
11695
11696/// The prototype to the OpenGL function `FramebufferTexture1D`
11697type PFNGLFRAMEBUFFERTEXTURE1DPROC = extern "system" fn(GLenum, GLenum, GLenum, GLuint, GLint);
11698
11699/// The prototype to the OpenGL function `FramebufferTexture2D`
11700type PFNGLFRAMEBUFFERTEXTURE2DPROC = extern "system" fn(GLenum, GLenum, GLenum, GLuint, GLint);
11701
11702/// The prototype to the OpenGL function `FramebufferTexture3D`
11703type PFNGLFRAMEBUFFERTEXTURE3DPROC = extern "system" fn(GLenum, GLenum, GLenum, GLuint, GLint, GLint);
11704
11705/// The prototype to the OpenGL function `FramebufferRenderbuffer`
11706type PFNGLFRAMEBUFFERRENDERBUFFERPROC = extern "system" fn(GLenum, GLenum, GLenum, GLuint);
11707
11708/// The prototype to the OpenGL function `GetFramebufferAttachmentParameteriv`
11709type PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC = extern "system" fn(GLenum, GLenum, GLenum, *mut GLint);
11710
11711/// The prototype to the OpenGL function `GenerateMipmap`
11712type PFNGLGENERATEMIPMAPPROC = extern "system" fn(GLenum);
11713
11714/// The prototype to the OpenGL function `BlitFramebuffer`
11715type PFNGLBLITFRAMEBUFFERPROC = extern "system" fn(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum);
11716
11717/// The prototype to the OpenGL function `RenderbufferStorageMultisample`
11718type PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC = extern "system" fn(GLenum, GLsizei, GLenum, GLsizei, GLsizei);
11719
11720/// The prototype to the OpenGL function `FramebufferTextureLayer`
11721type PFNGLFRAMEBUFFERTEXTURELAYERPROC = extern "system" fn(GLenum, GLenum, GLuint, GLint, GLint);
11722
11723/// The prototype to the OpenGL function `MapBufferRange`
11724type PFNGLMAPBUFFERRANGEPROC = extern "system" fn(GLenum, GLintptr, GLsizeiptr, GLbitfield) -> *mut c_void;
11725
11726/// The prototype to the OpenGL function `FlushMappedBufferRange`
11727type PFNGLFLUSHMAPPEDBUFFERRANGEPROC = extern "system" fn(GLenum, GLintptr, GLsizeiptr);
11728
11729/// The prototype to the OpenGL function `BindVertexArray`
11730type PFNGLBINDVERTEXARRAYPROC = extern "system" fn(GLuint);
11731
11732/// The prototype to the OpenGL function `DeleteVertexArrays`
11733type PFNGLDELETEVERTEXARRAYSPROC = extern "system" fn(GLsizei, *const GLuint);
11734
11735/// The prototype to the OpenGL function `GenVertexArrays`
11736type PFNGLGENVERTEXARRAYSPROC = extern "system" fn(GLsizei, *mut GLuint);
11737
11738/// The prototype to the OpenGL function `IsVertexArray`
11739type PFNGLISVERTEXARRAYPROC = extern "system" fn(GLuint) -> GLboolean;
11740
11741/// The dummy function of `ColorMaski()`
11742extern "system" fn dummy_pfnglcolormaskiproc (_: GLuint, _: GLboolean, _: GLboolean, _: GLboolean, _: GLboolean) {
11743	panic!("OpenGL function pointer `glColorMaski()` is null.")
11744}
11745
11746/// The dummy function of `GetBooleani_v()`
11747extern "system" fn dummy_pfnglgetbooleani_vproc (_: GLenum, _: GLuint, _: *mut GLboolean) {
11748	panic!("OpenGL function pointer `glGetBooleani_v()` is null.")
11749}
11750
11751/// The dummy function of `GetIntegeri_v()`
11752extern "system" fn dummy_pfnglgetintegeri_vproc (_: GLenum, _: GLuint, _: *mut GLint) {
11753	panic!("OpenGL function pointer `glGetIntegeri_v()` is null.")
11754}
11755
11756/// The dummy function of `Enablei()`
11757extern "system" fn dummy_pfnglenableiproc (_: GLenum, _: GLuint) {
11758	panic!("OpenGL function pointer `glEnablei()` is null.")
11759}
11760
11761/// The dummy function of `Disablei()`
11762extern "system" fn dummy_pfngldisableiproc (_: GLenum, _: GLuint) {
11763	panic!("OpenGL function pointer `glDisablei()` is null.")
11764}
11765
11766/// The dummy function of `IsEnabledi()`
11767extern "system" fn dummy_pfnglisenablediproc (_: GLenum, _: GLuint) -> GLboolean {
11768	panic!("OpenGL function pointer `glIsEnabledi()` is null.")
11769}
11770
11771/// The dummy function of `BeginTransformFeedback()`
11772extern "system" fn dummy_pfnglbegintransformfeedbackproc (_: GLenum) {
11773	panic!("OpenGL function pointer `glBeginTransformFeedback()` is null.")
11774}
11775
11776/// The dummy function of `EndTransformFeedback()`
11777extern "system" fn dummy_pfnglendtransformfeedbackproc () {
11778	panic!("OpenGL function pointer `glEndTransformFeedback()` is null.")
11779}
11780
11781/// The dummy function of `BindBufferRange()`
11782extern "system" fn dummy_pfnglbindbufferrangeproc (_: GLenum, _: GLuint, _: GLuint, _: GLintptr, _: GLsizeiptr) {
11783	panic!("OpenGL function pointer `glBindBufferRange()` is null.")
11784}
11785
11786/// The dummy function of `BindBufferBase()`
11787extern "system" fn dummy_pfnglbindbufferbaseproc (_: GLenum, _: GLuint, _: GLuint) {
11788	panic!("OpenGL function pointer `glBindBufferBase()` is null.")
11789}
11790
11791/// The dummy function of `TransformFeedbackVaryings()`
11792extern "system" fn dummy_pfngltransformfeedbackvaryingsproc (_: GLuint, _: GLsizei, _: *const *const GLchar, _: GLenum) {
11793	panic!("OpenGL function pointer `glTransformFeedbackVaryings()` is null.")
11794}
11795
11796/// The dummy function of `GetTransformFeedbackVarying()`
11797extern "system" fn dummy_pfnglgettransformfeedbackvaryingproc (_: GLuint, _: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLsizei, _: *mut GLenum, _: *mut GLchar) {
11798	panic!("OpenGL function pointer `glGetTransformFeedbackVarying()` is null.")
11799}
11800
11801/// The dummy function of `ClampColor()`
11802extern "system" fn dummy_pfnglclampcolorproc (_: GLenum, _: GLenum) {
11803	panic!("OpenGL function pointer `glClampColor()` is null.")
11804}
11805
11806/// The dummy function of `BeginConditionalRender()`
11807extern "system" fn dummy_pfnglbeginconditionalrenderproc (_: GLuint, _: GLenum) {
11808	panic!("OpenGL function pointer `glBeginConditionalRender()` is null.")
11809}
11810
11811/// The dummy function of `EndConditionalRender()`
11812extern "system" fn dummy_pfnglendconditionalrenderproc () {
11813	panic!("OpenGL function pointer `glEndConditionalRender()` is null.")
11814}
11815
11816/// The dummy function of `VertexAttribIPointer()`
11817extern "system" fn dummy_pfnglvertexattribipointerproc (_: GLuint, _: GLint, _: GLenum, _: GLsizei, _: *const c_void) {
11818	panic!("OpenGL function pointer `glVertexAttribIPointer()` is null.")
11819}
11820
11821/// The dummy function of `GetVertexAttribIiv()`
11822extern "system" fn dummy_pfnglgetvertexattribiivproc (_: GLuint, _: GLenum, _: *mut GLint) {
11823	panic!("OpenGL function pointer `glGetVertexAttribIiv()` is null.")
11824}
11825
11826/// The dummy function of `GetVertexAttribIuiv()`
11827extern "system" fn dummy_pfnglgetvertexattribiuivproc (_: GLuint, _: GLenum, _: *mut GLuint) {
11828	panic!("OpenGL function pointer `glGetVertexAttribIuiv()` is null.")
11829}
11830
11831/// The dummy function of `VertexAttribI1i()`
11832extern "system" fn dummy_pfnglvertexattribi1iproc (_: GLuint, _: GLint) {
11833	panic!("OpenGL function pointer `glVertexAttribI1i()` is null.")
11834}
11835
11836/// The dummy function of `VertexAttribI2i()`
11837extern "system" fn dummy_pfnglvertexattribi2iproc (_: GLuint, _: GLint, _: GLint) {
11838	panic!("OpenGL function pointer `glVertexAttribI2i()` is null.")
11839}
11840
11841/// The dummy function of `VertexAttribI3i()`
11842extern "system" fn dummy_pfnglvertexattribi3iproc (_: GLuint, _: GLint, _: GLint, _: GLint) {
11843	panic!("OpenGL function pointer `glVertexAttribI3i()` is null.")
11844}
11845
11846/// The dummy function of `VertexAttribI4i()`
11847extern "system" fn dummy_pfnglvertexattribi4iproc (_: GLuint, _: GLint, _: GLint, _: GLint, _: GLint) {
11848	panic!("OpenGL function pointer `glVertexAttribI4i()` is null.")
11849}
11850
11851/// The dummy function of `VertexAttribI1ui()`
11852extern "system" fn dummy_pfnglvertexattribi1uiproc (_: GLuint, _: GLuint) {
11853	panic!("OpenGL function pointer `glVertexAttribI1ui()` is null.")
11854}
11855
11856/// The dummy function of `VertexAttribI2ui()`
11857extern "system" fn dummy_pfnglvertexattribi2uiproc (_: GLuint, _: GLuint, _: GLuint) {
11858	panic!("OpenGL function pointer `glVertexAttribI2ui()` is null.")
11859}
11860
11861/// The dummy function of `VertexAttribI3ui()`
11862extern "system" fn dummy_pfnglvertexattribi3uiproc (_: GLuint, _: GLuint, _: GLuint, _: GLuint) {
11863	panic!("OpenGL function pointer `glVertexAttribI3ui()` is null.")
11864}
11865
11866/// The dummy function of `VertexAttribI4ui()`
11867extern "system" fn dummy_pfnglvertexattribi4uiproc (_: GLuint, _: GLuint, _: GLuint, _: GLuint, _: GLuint) {
11868	panic!("OpenGL function pointer `glVertexAttribI4ui()` is null.")
11869}
11870
11871/// The dummy function of `VertexAttribI1iv()`
11872extern "system" fn dummy_pfnglvertexattribi1ivproc (_: GLuint, _: *const GLint) {
11873	panic!("OpenGL function pointer `glVertexAttribI1iv()` is null.")
11874}
11875
11876/// The dummy function of `VertexAttribI2iv()`
11877extern "system" fn dummy_pfnglvertexattribi2ivproc (_: GLuint, _: *const GLint) {
11878	panic!("OpenGL function pointer `glVertexAttribI2iv()` is null.")
11879}
11880
11881/// The dummy function of `VertexAttribI3iv()`
11882extern "system" fn dummy_pfnglvertexattribi3ivproc (_: GLuint, _: *const GLint) {
11883	panic!("OpenGL function pointer `glVertexAttribI3iv()` is null.")
11884}
11885
11886/// The dummy function of `VertexAttribI4iv()`
11887extern "system" fn dummy_pfnglvertexattribi4ivproc (_: GLuint, _: *const GLint) {
11888	panic!("OpenGL function pointer `glVertexAttribI4iv()` is null.")
11889}
11890
11891/// The dummy function of `VertexAttribI1uiv()`
11892extern "system" fn dummy_pfnglvertexattribi1uivproc (_: GLuint, _: *const GLuint) {
11893	panic!("OpenGL function pointer `glVertexAttribI1uiv()` is null.")
11894}
11895
11896/// The dummy function of `VertexAttribI2uiv()`
11897extern "system" fn dummy_pfnglvertexattribi2uivproc (_: GLuint, _: *const GLuint) {
11898	panic!("OpenGL function pointer `glVertexAttribI2uiv()` is null.")
11899}
11900
11901/// The dummy function of `VertexAttribI3uiv()`
11902extern "system" fn dummy_pfnglvertexattribi3uivproc (_: GLuint, _: *const GLuint) {
11903	panic!("OpenGL function pointer `glVertexAttribI3uiv()` is null.")
11904}
11905
11906/// The dummy function of `VertexAttribI4uiv()`
11907extern "system" fn dummy_pfnglvertexattribi4uivproc (_: GLuint, _: *const GLuint) {
11908	panic!("OpenGL function pointer `glVertexAttribI4uiv()` is null.")
11909}
11910
11911/// The dummy function of `VertexAttribI4bv()`
11912extern "system" fn dummy_pfnglvertexattribi4bvproc (_: GLuint, _: *const GLbyte) {
11913	panic!("OpenGL function pointer `glVertexAttribI4bv()` is null.")
11914}
11915
11916/// The dummy function of `VertexAttribI4sv()`
11917extern "system" fn dummy_pfnglvertexattribi4svproc (_: GLuint, _: *const GLshort) {
11918	panic!("OpenGL function pointer `glVertexAttribI4sv()` is null.")
11919}
11920
11921/// The dummy function of `VertexAttribI4ubv()`
11922extern "system" fn dummy_pfnglvertexattribi4ubvproc (_: GLuint, _: *const GLubyte) {
11923	panic!("OpenGL function pointer `glVertexAttribI4ubv()` is null.")
11924}
11925
11926/// The dummy function of `VertexAttribI4usv()`
11927extern "system" fn dummy_pfnglvertexattribi4usvproc (_: GLuint, _: *const GLushort) {
11928	panic!("OpenGL function pointer `glVertexAttribI4usv()` is null.")
11929}
11930
11931/// The dummy function of `GetUniformuiv()`
11932extern "system" fn dummy_pfnglgetuniformuivproc (_: GLuint, _: GLint, _: *mut GLuint) {
11933	panic!("OpenGL function pointer `glGetUniformuiv()` is null.")
11934}
11935
11936/// The dummy function of `BindFragDataLocation()`
11937extern "system" fn dummy_pfnglbindfragdatalocationproc (_: GLuint, _: GLuint, _: *const GLchar) {
11938	panic!("OpenGL function pointer `glBindFragDataLocation()` is null.")
11939}
11940
11941/// The dummy function of `GetFragDataLocation()`
11942extern "system" fn dummy_pfnglgetfragdatalocationproc (_: GLuint, _: *const GLchar) -> GLint {
11943	panic!("OpenGL function pointer `glGetFragDataLocation()` is null.")
11944}
11945
11946/// The dummy function of `Uniform1ui()`
11947extern "system" fn dummy_pfngluniform1uiproc (_: GLint, _: GLuint) {
11948	panic!("OpenGL function pointer `glUniform1ui()` is null.")
11949}
11950
11951/// The dummy function of `Uniform2ui()`
11952extern "system" fn dummy_pfngluniform2uiproc (_: GLint, _: GLuint, _: GLuint) {
11953	panic!("OpenGL function pointer `glUniform2ui()` is null.")
11954}
11955
11956/// The dummy function of `Uniform3ui()`
11957extern "system" fn dummy_pfngluniform3uiproc (_: GLint, _: GLuint, _: GLuint, _: GLuint) {
11958	panic!("OpenGL function pointer `glUniform3ui()` is null.")
11959}
11960
11961/// The dummy function of `Uniform4ui()`
11962extern "system" fn dummy_pfngluniform4uiproc (_: GLint, _: GLuint, _: GLuint, _: GLuint, _: GLuint) {
11963	panic!("OpenGL function pointer `glUniform4ui()` is null.")
11964}
11965
11966/// The dummy function of `Uniform1uiv()`
11967extern "system" fn dummy_pfngluniform1uivproc (_: GLint, _: GLsizei, _: *const GLuint) {
11968	panic!("OpenGL function pointer `glUniform1uiv()` is null.")
11969}
11970
11971/// The dummy function of `Uniform2uiv()`
11972extern "system" fn dummy_pfngluniform2uivproc (_: GLint, _: GLsizei, _: *const GLuint) {
11973	panic!("OpenGL function pointer `glUniform2uiv()` is null.")
11974}
11975
11976/// The dummy function of `Uniform3uiv()`
11977extern "system" fn dummy_pfngluniform3uivproc (_: GLint, _: GLsizei, _: *const GLuint) {
11978	panic!("OpenGL function pointer `glUniform3uiv()` is null.")
11979}
11980
11981/// The dummy function of `Uniform4uiv()`
11982extern "system" fn dummy_pfngluniform4uivproc (_: GLint, _: GLsizei, _: *const GLuint) {
11983	panic!("OpenGL function pointer `glUniform4uiv()` is null.")
11984}
11985
11986/// The dummy function of `TexParameterIiv()`
11987extern "system" fn dummy_pfngltexparameteriivproc (_: GLenum, _: GLenum, _: *const GLint) {
11988	panic!("OpenGL function pointer `glTexParameterIiv()` is null.")
11989}
11990
11991/// The dummy function of `TexParameterIuiv()`
11992extern "system" fn dummy_pfngltexparameteriuivproc (_: GLenum, _: GLenum, _: *const GLuint) {
11993	panic!("OpenGL function pointer `glTexParameterIuiv()` is null.")
11994}
11995
11996/// The dummy function of `GetTexParameterIiv()`
11997extern "system" fn dummy_pfnglgettexparameteriivproc (_: GLenum, _: GLenum, _: *mut GLint) {
11998	panic!("OpenGL function pointer `glGetTexParameterIiv()` is null.")
11999}
12000
12001/// The dummy function of `GetTexParameterIuiv()`
12002extern "system" fn dummy_pfnglgettexparameteriuivproc (_: GLenum, _: GLenum, _: *mut GLuint) {
12003	panic!("OpenGL function pointer `glGetTexParameterIuiv()` is null.")
12004}
12005
12006/// The dummy function of `ClearBufferiv()`
12007extern "system" fn dummy_pfnglclearbufferivproc (_: GLenum, _: GLint, _: *const GLint) {
12008	panic!("OpenGL function pointer `glClearBufferiv()` is null.")
12009}
12010
12011/// The dummy function of `ClearBufferuiv()`
12012extern "system" fn dummy_pfnglclearbufferuivproc (_: GLenum, _: GLint, _: *const GLuint) {
12013	panic!("OpenGL function pointer `glClearBufferuiv()` is null.")
12014}
12015
12016/// The dummy function of `ClearBufferfv()`
12017extern "system" fn dummy_pfnglclearbufferfvproc (_: GLenum, _: GLint, _: *const GLfloat) {
12018	panic!("OpenGL function pointer `glClearBufferfv()` is null.")
12019}
12020
12021/// The dummy function of `ClearBufferfi()`
12022extern "system" fn dummy_pfnglclearbufferfiproc (_: GLenum, _: GLint, _: GLfloat, _: GLint) {
12023	panic!("OpenGL function pointer `glClearBufferfi()` is null.")
12024}
12025
12026/// The dummy function of `GetStringi()`
12027extern "system" fn dummy_pfnglgetstringiproc (_: GLenum, _: GLuint) -> *const GLubyte {
12028	panic!("OpenGL function pointer `glGetStringi()` is null.")
12029}
12030
12031/// The dummy function of `IsRenderbuffer()`
12032extern "system" fn dummy_pfnglisrenderbufferproc (_: GLuint) -> GLboolean {
12033	panic!("OpenGL function pointer `glIsRenderbuffer()` is null.")
12034}
12035
12036/// The dummy function of `BindRenderbuffer()`
12037extern "system" fn dummy_pfnglbindrenderbufferproc (_: GLenum, _: GLuint) {
12038	panic!("OpenGL function pointer `glBindRenderbuffer()` is null.")
12039}
12040
12041/// The dummy function of `DeleteRenderbuffers()`
12042extern "system" fn dummy_pfngldeleterenderbuffersproc (_: GLsizei, _: *const GLuint) {
12043	panic!("OpenGL function pointer `glDeleteRenderbuffers()` is null.")
12044}
12045
12046/// The dummy function of `GenRenderbuffers()`
12047extern "system" fn dummy_pfnglgenrenderbuffersproc (_: GLsizei, _: *mut GLuint) {
12048	panic!("OpenGL function pointer `glGenRenderbuffers()` is null.")
12049}
12050
12051/// The dummy function of `RenderbufferStorage()`
12052extern "system" fn dummy_pfnglrenderbufferstorageproc (_: GLenum, _: GLenum, _: GLsizei, _: GLsizei) {
12053	panic!("OpenGL function pointer `glRenderbufferStorage()` is null.")
12054}
12055
12056/// The dummy function of `GetRenderbufferParameteriv()`
12057extern "system" fn dummy_pfnglgetrenderbufferparameterivproc (_: GLenum, _: GLenum, _: *mut GLint) {
12058	panic!("OpenGL function pointer `glGetRenderbufferParameteriv()` is null.")
12059}
12060
12061/// The dummy function of `IsFramebuffer()`
12062extern "system" fn dummy_pfnglisframebufferproc (_: GLuint) -> GLboolean {
12063	panic!("OpenGL function pointer `glIsFramebuffer()` is null.")
12064}
12065
12066/// The dummy function of `BindFramebuffer()`
12067extern "system" fn dummy_pfnglbindframebufferproc (_: GLenum, _: GLuint) {
12068	panic!("OpenGL function pointer `glBindFramebuffer()` is null.")
12069}
12070
12071/// The dummy function of `DeleteFramebuffers()`
12072extern "system" fn dummy_pfngldeleteframebuffersproc (_: GLsizei, _: *const GLuint) {
12073	panic!("OpenGL function pointer `glDeleteFramebuffers()` is null.")
12074}
12075
12076/// The dummy function of `GenFramebuffers()`
12077extern "system" fn dummy_pfnglgenframebuffersproc (_: GLsizei, _: *mut GLuint) {
12078	panic!("OpenGL function pointer `glGenFramebuffers()` is null.")
12079}
12080
12081/// The dummy function of `CheckFramebufferStatus()`
12082extern "system" fn dummy_pfnglcheckframebufferstatusproc (_: GLenum) -> GLenum {
12083	panic!("OpenGL function pointer `glCheckFramebufferStatus()` is null.")
12084}
12085
12086/// The dummy function of `FramebufferTexture1D()`
12087extern "system" fn dummy_pfnglframebuffertexture1dproc (_: GLenum, _: GLenum, _: GLenum, _: GLuint, _: GLint) {
12088	panic!("OpenGL function pointer `glFramebufferTexture1D()` is null.")
12089}
12090
12091/// The dummy function of `FramebufferTexture2D()`
12092extern "system" fn dummy_pfnglframebuffertexture2dproc (_: GLenum, _: GLenum, _: GLenum, _: GLuint, _: GLint) {
12093	panic!("OpenGL function pointer `glFramebufferTexture2D()` is null.")
12094}
12095
12096/// The dummy function of `FramebufferTexture3D()`
12097extern "system" fn dummy_pfnglframebuffertexture3dproc (_: GLenum, _: GLenum, _: GLenum, _: GLuint, _: GLint, _: GLint) {
12098	panic!("OpenGL function pointer `glFramebufferTexture3D()` is null.")
12099}
12100
12101/// The dummy function of `FramebufferRenderbuffer()`
12102extern "system" fn dummy_pfnglframebufferrenderbufferproc (_: GLenum, _: GLenum, _: GLenum, _: GLuint) {
12103	panic!("OpenGL function pointer `glFramebufferRenderbuffer()` is null.")
12104}
12105
12106/// The dummy function of `GetFramebufferAttachmentParameteriv()`
12107extern "system" fn dummy_pfnglgetframebufferattachmentparameterivproc (_: GLenum, _: GLenum, _: GLenum, _: *mut GLint) {
12108	panic!("OpenGL function pointer `glGetFramebufferAttachmentParameteriv()` is null.")
12109}
12110
12111/// The dummy function of `GenerateMipmap()`
12112extern "system" fn dummy_pfnglgeneratemipmapproc (_: GLenum) {
12113	panic!("OpenGL function pointer `glGenerateMipmap()` is null.")
12114}
12115
12116/// The dummy function of `BlitFramebuffer()`
12117extern "system" fn dummy_pfnglblitframebufferproc (_: GLint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLbitfield, _: GLenum) {
12118	panic!("OpenGL function pointer `glBlitFramebuffer()` is null.")
12119}
12120
12121/// The dummy function of `RenderbufferStorageMultisample()`
12122extern "system" fn dummy_pfnglrenderbufferstoragemultisampleproc (_: GLenum, _: GLsizei, _: GLenum, _: GLsizei, _: GLsizei) {
12123	panic!("OpenGL function pointer `glRenderbufferStorageMultisample()` is null.")
12124}
12125
12126/// The dummy function of `FramebufferTextureLayer()`
12127extern "system" fn dummy_pfnglframebuffertexturelayerproc (_: GLenum, _: GLenum, _: GLuint, _: GLint, _: GLint) {
12128	panic!("OpenGL function pointer `glFramebufferTextureLayer()` is null.")
12129}
12130
12131/// The dummy function of `MapBufferRange()`
12132extern "system" fn dummy_pfnglmapbufferrangeproc (_: GLenum, _: GLintptr, _: GLsizeiptr, _: GLbitfield) -> *mut c_void {
12133	panic!("OpenGL function pointer `glMapBufferRange()` is null.")
12134}
12135
12136/// The dummy function of `FlushMappedBufferRange()`
12137extern "system" fn dummy_pfnglflushmappedbufferrangeproc (_: GLenum, _: GLintptr, _: GLsizeiptr) {
12138	panic!("OpenGL function pointer `glFlushMappedBufferRange()` is null.")
12139}
12140
12141/// The dummy function of `BindVertexArray()`
12142extern "system" fn dummy_pfnglbindvertexarrayproc (_: GLuint) {
12143	panic!("OpenGL function pointer `glBindVertexArray()` is null.")
12144}
12145
12146/// The dummy function of `DeleteVertexArrays()`
12147extern "system" fn dummy_pfngldeletevertexarraysproc (_: GLsizei, _: *const GLuint) {
12148	panic!("OpenGL function pointer `glDeleteVertexArrays()` is null.")
12149}
12150
12151/// The dummy function of `GenVertexArrays()`
12152extern "system" fn dummy_pfnglgenvertexarraysproc (_: GLsizei, _: *mut GLuint) {
12153	panic!("OpenGL function pointer `glGenVertexArrays()` is null.")
12154}
12155
12156/// The dummy function of `IsVertexArray()`
12157extern "system" fn dummy_pfnglisvertexarrayproc (_: GLuint) -> GLboolean {
12158	panic!("OpenGL function pointer `glIsVertexArray()` is null.")
12159}
12160/// Constant value defined from OpenGL 3.0
12161pub const GL_COMPARE_REF_TO_TEXTURE: GLenum = 0x884E;
12162
12163/// Constant value defined from OpenGL 3.0
12164pub const GL_CLIP_DISTANCE0: GLenum = 0x3000;
12165
12166/// Constant value defined from OpenGL 3.0
12167pub const GL_CLIP_DISTANCE1: GLenum = 0x3001;
12168
12169/// Constant value defined from OpenGL 3.0
12170pub const GL_CLIP_DISTANCE2: GLenum = 0x3002;
12171
12172/// Constant value defined from OpenGL 3.0
12173pub const GL_CLIP_DISTANCE3: GLenum = 0x3003;
12174
12175/// Constant value defined from OpenGL 3.0
12176pub const GL_CLIP_DISTANCE4: GLenum = 0x3004;
12177
12178/// Constant value defined from OpenGL 3.0
12179pub const GL_CLIP_DISTANCE5: GLenum = 0x3005;
12180
12181/// Constant value defined from OpenGL 3.0
12182pub const GL_CLIP_DISTANCE6: GLenum = 0x3006;
12183
12184/// Constant value defined from OpenGL 3.0
12185pub const GL_CLIP_DISTANCE7: GLenum = 0x3007;
12186
12187/// Constant value defined from OpenGL 3.0
12188pub const GL_MAX_CLIP_DISTANCES: GLenum = 0x0D32;
12189
12190/// Constant value defined from OpenGL 3.0
12191pub const GL_MAJOR_VERSION: GLenum = 0x821B;
12192
12193/// Constant value defined from OpenGL 3.0
12194pub const GL_MINOR_VERSION: GLenum = 0x821C;
12195
12196/// Constant value defined from OpenGL 3.0
12197pub const GL_NUM_EXTENSIONS: GLenum = 0x821D;
12198
12199/// Constant value defined from OpenGL 3.0
12200pub const GL_CONTEXT_FLAGS: GLenum = 0x821E;
12201
12202/// Constant value defined from OpenGL 3.0
12203pub const GL_COMPRESSED_RED: GLenum = 0x8225;
12204
12205/// Constant value defined from OpenGL 3.0
12206pub const GL_COMPRESSED_RG: GLenum = 0x8226;
12207
12208/// Constant value defined from OpenGL 3.0
12209pub const GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT: GLbitfield = 0x00000001;
12210
12211/// Constant value defined from OpenGL 3.0
12212pub const GL_RGBA32F: GLenum = 0x8814;
12213
12214/// Constant value defined from OpenGL 3.0
12215pub const GL_RGB32F: GLenum = 0x8815;
12216
12217/// Constant value defined from OpenGL 3.0
12218pub const GL_RGBA16F: GLenum = 0x881A;
12219
12220/// Constant value defined from OpenGL 3.0
12221pub const GL_RGB16F: GLenum = 0x881B;
12222
12223/// Constant value defined from OpenGL 3.0
12224pub const GL_VERTEX_ATTRIB_ARRAY_INTEGER: GLenum = 0x88FD;
12225
12226/// Constant value defined from OpenGL 3.0
12227pub const GL_MAX_ARRAY_TEXTURE_LAYERS: GLenum = 0x88FF;
12228
12229/// Constant value defined from OpenGL 3.0
12230pub const GL_MIN_PROGRAM_TEXEL_OFFSET: GLenum = 0x8904;
12231
12232/// Constant value defined from OpenGL 3.0
12233pub const GL_MAX_PROGRAM_TEXEL_OFFSET: GLenum = 0x8905;
12234
12235/// Constant value defined from OpenGL 3.0
12236pub const GL_CLAMP_READ_COLOR: GLenum = 0x891C;
12237
12238/// Constant value defined from OpenGL 3.0
12239pub const GL_FIXED_ONLY: GLenum = 0x891D;
12240
12241/// Constant value defined from OpenGL 3.0
12242pub const GL_MAX_VARYING_COMPONENTS: GLenum = 0x8B4B;
12243
12244/// Constant value defined from OpenGL 3.0
12245pub const GL_TEXTURE_1D_ARRAY: GLenum = 0x8C18;
12246
12247/// Constant value defined from OpenGL 3.0
12248pub const GL_PROXY_TEXTURE_1D_ARRAY: GLenum = 0x8C19;
12249
12250/// Constant value defined from OpenGL 3.0
12251pub const GL_TEXTURE_2D_ARRAY: GLenum = 0x8C1A;
12252
12253/// Constant value defined from OpenGL 3.0
12254pub const GL_PROXY_TEXTURE_2D_ARRAY: GLenum = 0x8C1B;
12255
12256/// Constant value defined from OpenGL 3.0
12257pub const GL_TEXTURE_BINDING_1D_ARRAY: GLenum = 0x8C1C;
12258
12259/// Constant value defined from OpenGL 3.0
12260pub const GL_TEXTURE_BINDING_2D_ARRAY: GLenum = 0x8C1D;
12261
12262/// Constant value defined from OpenGL 3.0
12263pub const GL_R11F_G11F_B10F: GLenum = 0x8C3A;
12264
12265/// Constant value defined from OpenGL 3.0
12266pub const GL_UNSIGNED_INT_10F_11F_11F_REV: GLenum = 0x8C3B;
12267
12268/// Constant value defined from OpenGL 3.0
12269pub const GL_RGB9_E5: GLenum = 0x8C3D;
12270
12271/// Constant value defined from OpenGL 3.0
12272pub const GL_UNSIGNED_INT_5_9_9_9_REV: GLenum = 0x8C3E;
12273
12274/// Constant value defined from OpenGL 3.0
12275pub const GL_TEXTURE_SHARED_SIZE: GLenum = 0x8C3F;
12276
12277/// Constant value defined from OpenGL 3.0
12278pub const GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH: GLenum = 0x8C76;
12279
12280/// Constant value defined from OpenGL 3.0
12281pub const GL_TRANSFORM_FEEDBACK_BUFFER_MODE: GLenum = 0x8C7F;
12282
12283/// Constant value defined from OpenGL 3.0
12284pub const GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: GLenum = 0x8C80;
12285
12286/// Constant value defined from OpenGL 3.0
12287pub const GL_TRANSFORM_FEEDBACK_VARYINGS: GLenum = 0x8C83;
12288
12289/// Constant value defined from OpenGL 3.0
12290pub const GL_TRANSFORM_FEEDBACK_BUFFER_START: GLenum = 0x8C84;
12291
12292/// Constant value defined from OpenGL 3.0
12293pub const GL_TRANSFORM_FEEDBACK_BUFFER_SIZE: GLenum = 0x8C85;
12294
12295/// Constant value defined from OpenGL 3.0
12296pub const GL_PRIMITIVES_GENERATED: GLenum = 0x8C87;
12297
12298/// Constant value defined from OpenGL 3.0
12299pub const GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: GLenum = 0x8C88;
12300
12301/// Constant value defined from OpenGL 3.0
12302pub const GL_RASTERIZER_DISCARD: GLenum = 0x8C89;
12303
12304/// Constant value defined from OpenGL 3.0
12305pub const GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: GLenum = 0x8C8A;
12306
12307/// Constant value defined from OpenGL 3.0
12308pub const GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: GLenum = 0x8C8B;
12309
12310/// Constant value defined from OpenGL 3.0
12311pub const GL_INTERLEAVED_ATTRIBS: GLenum = 0x8C8C;
12312
12313/// Constant value defined from OpenGL 3.0
12314pub const GL_SEPARATE_ATTRIBS: GLenum = 0x8C8D;
12315
12316/// Constant value defined from OpenGL 3.0
12317pub const GL_TRANSFORM_FEEDBACK_BUFFER: GLenum = 0x8C8E;
12318
12319/// Constant value defined from OpenGL 3.0
12320pub const GL_TRANSFORM_FEEDBACK_BUFFER_BINDING: GLenum = 0x8C8F;
12321
12322/// Constant value defined from OpenGL 3.0
12323pub const GL_RGBA32UI: GLenum = 0x8D70;
12324
12325/// Constant value defined from OpenGL 3.0
12326pub const GL_RGB32UI: GLenum = 0x8D71;
12327
12328/// Constant value defined from OpenGL 3.0
12329pub const GL_RGBA16UI: GLenum = 0x8D76;
12330
12331/// Constant value defined from OpenGL 3.0
12332pub const GL_RGB16UI: GLenum = 0x8D77;
12333
12334/// Constant value defined from OpenGL 3.0
12335pub const GL_RGBA8UI: GLenum = 0x8D7C;
12336
12337/// Constant value defined from OpenGL 3.0
12338pub const GL_RGB8UI: GLenum = 0x8D7D;
12339
12340/// Constant value defined from OpenGL 3.0
12341pub const GL_RGBA32I: GLenum = 0x8D82;
12342
12343/// Constant value defined from OpenGL 3.0
12344pub const GL_RGB32I: GLenum = 0x8D83;
12345
12346/// Constant value defined from OpenGL 3.0
12347pub const GL_RGBA16I: GLenum = 0x8D88;
12348
12349/// Constant value defined from OpenGL 3.0
12350pub const GL_RGB16I: GLenum = 0x8D89;
12351
12352/// Constant value defined from OpenGL 3.0
12353pub const GL_RGBA8I: GLenum = 0x8D8E;
12354
12355/// Constant value defined from OpenGL 3.0
12356pub const GL_RGB8I: GLenum = 0x8D8F;
12357
12358/// Constant value defined from OpenGL 3.0
12359pub const GL_RED_INTEGER: GLenum = 0x8D94;
12360
12361/// Constant value defined from OpenGL 3.0
12362pub const GL_GREEN_INTEGER: GLenum = 0x8D95;
12363
12364/// Constant value defined from OpenGL 3.0
12365pub const GL_BLUE_INTEGER: GLenum = 0x8D96;
12366
12367/// Constant value defined from OpenGL 3.0
12368pub const GL_RGB_INTEGER: GLenum = 0x8D98;
12369
12370/// Constant value defined from OpenGL 3.0
12371pub const GL_RGBA_INTEGER: GLenum = 0x8D99;
12372
12373/// Constant value defined from OpenGL 3.0
12374pub const GL_BGR_INTEGER: GLenum = 0x8D9A;
12375
12376/// Constant value defined from OpenGL 3.0
12377pub const GL_BGRA_INTEGER: GLenum = 0x8D9B;
12378
12379/// Constant value defined from OpenGL 3.0
12380pub const GL_SAMPLER_1D_ARRAY: GLenum = 0x8DC0;
12381
12382/// Constant value defined from OpenGL 3.0
12383pub const GL_SAMPLER_2D_ARRAY: GLenum = 0x8DC1;
12384
12385/// Constant value defined from OpenGL 3.0
12386pub const GL_SAMPLER_1D_ARRAY_SHADOW: GLenum = 0x8DC3;
12387
12388/// Constant value defined from OpenGL 3.0
12389pub const GL_SAMPLER_2D_ARRAY_SHADOW: GLenum = 0x8DC4;
12390
12391/// Constant value defined from OpenGL 3.0
12392pub const GL_SAMPLER_CUBE_SHADOW: GLenum = 0x8DC5;
12393
12394/// Constant value defined from OpenGL 3.0
12395pub const GL_UNSIGNED_INT_VEC2: GLenum = 0x8DC6;
12396
12397/// Constant value defined from OpenGL 3.0
12398pub const GL_UNSIGNED_INT_VEC3: GLenum = 0x8DC7;
12399
12400/// Constant value defined from OpenGL 3.0
12401pub const GL_UNSIGNED_INT_VEC4: GLenum = 0x8DC8;
12402
12403/// Constant value defined from OpenGL 3.0
12404pub const GL_INT_SAMPLER_1D: GLenum = 0x8DC9;
12405
12406/// Constant value defined from OpenGL 3.0
12407pub const GL_INT_SAMPLER_2D: GLenum = 0x8DCA;
12408
12409/// Constant value defined from OpenGL 3.0
12410pub const GL_INT_SAMPLER_3D: GLenum = 0x8DCB;
12411
12412/// Constant value defined from OpenGL 3.0
12413pub const GL_INT_SAMPLER_CUBE: GLenum = 0x8DCC;
12414
12415/// Constant value defined from OpenGL 3.0
12416pub const GL_INT_SAMPLER_1D_ARRAY: GLenum = 0x8DCE;
12417
12418/// Constant value defined from OpenGL 3.0
12419pub const GL_INT_SAMPLER_2D_ARRAY: GLenum = 0x8DCF;
12420
12421/// Constant value defined from OpenGL 3.0
12422pub const GL_UNSIGNED_INT_SAMPLER_1D: GLenum = 0x8DD1;
12423
12424/// Constant value defined from OpenGL 3.0
12425pub const GL_UNSIGNED_INT_SAMPLER_2D: GLenum = 0x8DD2;
12426
12427/// Constant value defined from OpenGL 3.0
12428pub const GL_UNSIGNED_INT_SAMPLER_3D: GLenum = 0x8DD3;
12429
12430/// Constant value defined from OpenGL 3.0
12431pub const GL_UNSIGNED_INT_SAMPLER_CUBE: GLenum = 0x8DD4;
12432
12433/// Constant value defined from OpenGL 3.0
12434pub const GL_UNSIGNED_INT_SAMPLER_1D_ARRAY: GLenum = 0x8DD6;
12435
12436/// Constant value defined from OpenGL 3.0
12437pub const GL_UNSIGNED_INT_SAMPLER_2D_ARRAY: GLenum = 0x8DD7;
12438
12439/// Constant value defined from OpenGL 3.0
12440pub const GL_QUERY_WAIT: GLenum = 0x8E13;
12441
12442/// Constant value defined from OpenGL 3.0
12443pub const GL_QUERY_NO_WAIT: GLenum = 0x8E14;
12444
12445/// Constant value defined from OpenGL 3.0
12446pub const GL_QUERY_BY_REGION_WAIT: GLenum = 0x8E15;
12447
12448/// Constant value defined from OpenGL 3.0
12449pub const GL_QUERY_BY_REGION_NO_WAIT: GLenum = 0x8E16;
12450
12451/// Constant value defined from OpenGL 3.0
12452pub const GL_BUFFER_ACCESS_FLAGS: GLenum = 0x911F;
12453
12454/// Constant value defined from OpenGL 3.0
12455pub const GL_BUFFER_MAP_LENGTH: GLenum = 0x9120;
12456
12457/// Constant value defined from OpenGL 3.0
12458pub const GL_BUFFER_MAP_OFFSET: GLenum = 0x9121;
12459
12460/// Constant value defined from OpenGL 3.0
12461pub const GL_DEPTH_COMPONENT32F: GLenum = 0x8CAC;
12462
12463/// Constant value defined from OpenGL 3.0
12464pub const GL_DEPTH32F_STENCIL8: GLenum = 0x8CAD;
12465
12466/// Constant value defined from OpenGL 3.0
12467pub const GL_FLOAT_32_UNSIGNED_INT_24_8_REV: GLenum = 0x8DAD;
12468
12469/// Constant value defined from OpenGL 3.0
12470pub const GL_INVALID_FRAMEBUFFER_OPERATION: GLenum = 0x0506;
12471
12472/// Constant value defined from OpenGL 3.0
12473pub const GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: GLenum = 0x8210;
12474
12475/// Constant value defined from OpenGL 3.0
12476pub const GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: GLenum = 0x8211;
12477
12478/// Constant value defined from OpenGL 3.0
12479pub const GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE: GLenum = 0x8212;
12480
12481/// Constant value defined from OpenGL 3.0
12482pub const GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: GLenum = 0x8213;
12483
12484/// Constant value defined from OpenGL 3.0
12485pub const GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: GLenum = 0x8214;
12486
12487/// Constant value defined from OpenGL 3.0
12488pub const GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: GLenum = 0x8215;
12489
12490/// Constant value defined from OpenGL 3.0
12491pub const GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: GLenum = 0x8216;
12492
12493/// Constant value defined from OpenGL 3.0
12494pub const GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: GLenum = 0x8217;
12495
12496/// Constant value defined from OpenGL 3.0
12497pub const GL_FRAMEBUFFER_DEFAULT: GLenum = 0x8218;
12498
12499/// Constant value defined from OpenGL 3.0
12500pub const GL_FRAMEBUFFER_UNDEFINED: GLenum = 0x8219;
12501
12502/// Constant value defined from OpenGL 3.0
12503pub const GL_DEPTH_STENCIL_ATTACHMENT: GLenum = 0x821A;
12504
12505/// Constant value defined from OpenGL 3.0
12506pub const GL_MAX_RENDERBUFFER_SIZE: GLenum = 0x84E8;
12507
12508/// Constant value defined from OpenGL 3.0
12509pub const GL_DEPTH_STENCIL: GLenum = 0x84F9;
12510
12511/// Constant value defined from OpenGL 3.0
12512pub const GL_UNSIGNED_INT_24_8: GLenum = 0x84FA;
12513
12514/// Constant value defined from OpenGL 3.0
12515pub const GL_DEPTH24_STENCIL8: GLenum = 0x88F0;
12516
12517/// Constant value defined from OpenGL 3.0
12518pub const GL_TEXTURE_STENCIL_SIZE: GLenum = 0x88F1;
12519
12520/// Constant value defined from OpenGL 3.0
12521pub const GL_TEXTURE_RED_TYPE: GLenum = 0x8C10;
12522
12523/// Constant value defined from OpenGL 3.0
12524pub const GL_TEXTURE_GREEN_TYPE: GLenum = 0x8C11;
12525
12526/// Constant value defined from OpenGL 3.0
12527pub const GL_TEXTURE_BLUE_TYPE: GLenum = 0x8C12;
12528
12529/// Constant value defined from OpenGL 3.0
12530pub const GL_TEXTURE_ALPHA_TYPE: GLenum = 0x8C13;
12531
12532/// Constant value defined from OpenGL 3.0
12533pub const GL_TEXTURE_DEPTH_TYPE: GLenum = 0x8C16;
12534
12535/// Constant value defined from OpenGL 3.0
12536pub const GL_UNSIGNED_NORMALIZED: GLenum = 0x8C17;
12537
12538/// Constant value defined from OpenGL 3.0
12539pub const GL_FRAMEBUFFER_BINDING: GLenum = 0x8CA6;
12540
12541/// Constant value defined from OpenGL 3.0
12542pub const GL_DRAW_FRAMEBUFFER_BINDING: GLenum = 0x8CA6;
12543
12544/// Constant value defined from OpenGL 3.0
12545pub const GL_RENDERBUFFER_BINDING: GLenum = 0x8CA7;
12546
12547/// Constant value defined from OpenGL 3.0
12548pub const GL_READ_FRAMEBUFFER: GLenum = 0x8CA8;
12549
12550/// Constant value defined from OpenGL 3.0
12551pub const GL_DRAW_FRAMEBUFFER: GLenum = 0x8CA9;
12552
12553/// Constant value defined from OpenGL 3.0
12554pub const GL_READ_FRAMEBUFFER_BINDING: GLenum = 0x8CAA;
12555
12556/// Constant value defined from OpenGL 3.0
12557pub const GL_RENDERBUFFER_SAMPLES: GLenum = 0x8CAB;
12558
12559/// Constant value defined from OpenGL 3.0
12560pub const GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: GLenum = 0x8CD0;
12561
12562/// Constant value defined from OpenGL 3.0
12563pub const GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: GLenum = 0x8CD1;
12564
12565/// Constant value defined from OpenGL 3.0
12566pub const GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: GLenum = 0x8CD2;
12567
12568/// Constant value defined from OpenGL 3.0
12569pub const GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: GLenum = 0x8CD3;
12570
12571/// Constant value defined from OpenGL 3.0
12572pub const GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: GLenum = 0x8CD4;
12573
12574/// Constant value defined from OpenGL 3.0
12575pub const GL_FRAMEBUFFER_COMPLETE: GLenum = 0x8CD5;
12576
12577/// Constant value defined from OpenGL 3.0
12578pub const GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: GLenum = 0x8CD6;
12579
12580/// Constant value defined from OpenGL 3.0
12581pub const GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: GLenum = 0x8CD7;
12582
12583/// Constant value defined from OpenGL 3.0
12584pub const GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER: GLenum = 0x8CDB;
12585
12586/// Constant value defined from OpenGL 3.0
12587pub const GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER: GLenum = 0x8CDC;
12588
12589/// Constant value defined from OpenGL 3.0
12590pub const GL_FRAMEBUFFER_UNSUPPORTED: GLenum = 0x8CDD;
12591
12592/// Constant value defined from OpenGL 3.0
12593pub const GL_MAX_COLOR_ATTACHMENTS: GLenum = 0x8CDF;
12594
12595/// Constant value defined from OpenGL 3.0
12596pub const GL_COLOR_ATTACHMENT0: GLenum = 0x8CE0;
12597
12598/// Constant value defined from OpenGL 3.0
12599pub const GL_COLOR_ATTACHMENT1: GLenum = 0x8CE1;
12600
12601/// Constant value defined from OpenGL 3.0
12602pub const GL_COLOR_ATTACHMENT2: GLenum = 0x8CE2;
12603
12604/// Constant value defined from OpenGL 3.0
12605pub const GL_COLOR_ATTACHMENT3: GLenum = 0x8CE3;
12606
12607/// Constant value defined from OpenGL 3.0
12608pub const GL_COLOR_ATTACHMENT4: GLenum = 0x8CE4;
12609
12610/// Constant value defined from OpenGL 3.0
12611pub const GL_COLOR_ATTACHMENT5: GLenum = 0x8CE5;
12612
12613/// Constant value defined from OpenGL 3.0
12614pub const GL_COLOR_ATTACHMENT6: GLenum = 0x8CE6;
12615
12616/// Constant value defined from OpenGL 3.0
12617pub const GL_COLOR_ATTACHMENT7: GLenum = 0x8CE7;
12618
12619/// Constant value defined from OpenGL 3.0
12620pub const GL_COLOR_ATTACHMENT8: GLenum = 0x8CE8;
12621
12622/// Constant value defined from OpenGL 3.0
12623pub const GL_COLOR_ATTACHMENT9: GLenum = 0x8CE9;
12624
12625/// Constant value defined from OpenGL 3.0
12626pub const GL_COLOR_ATTACHMENT10: GLenum = 0x8CEA;
12627
12628/// Constant value defined from OpenGL 3.0
12629pub const GL_COLOR_ATTACHMENT11: GLenum = 0x8CEB;
12630
12631/// Constant value defined from OpenGL 3.0
12632pub const GL_COLOR_ATTACHMENT12: GLenum = 0x8CEC;
12633
12634/// Constant value defined from OpenGL 3.0
12635pub const GL_COLOR_ATTACHMENT13: GLenum = 0x8CED;
12636
12637/// Constant value defined from OpenGL 3.0
12638pub const GL_COLOR_ATTACHMENT14: GLenum = 0x8CEE;
12639
12640/// Constant value defined from OpenGL 3.0
12641pub const GL_COLOR_ATTACHMENT15: GLenum = 0x8CEF;
12642
12643/// Constant value defined from OpenGL 3.0
12644pub const GL_COLOR_ATTACHMENT16: GLenum = 0x8CF0;
12645
12646/// Constant value defined from OpenGL 3.0
12647pub const GL_COLOR_ATTACHMENT17: GLenum = 0x8CF1;
12648
12649/// Constant value defined from OpenGL 3.0
12650pub const GL_COLOR_ATTACHMENT18: GLenum = 0x8CF2;
12651
12652/// Constant value defined from OpenGL 3.0
12653pub const GL_COLOR_ATTACHMENT19: GLenum = 0x8CF3;
12654
12655/// Constant value defined from OpenGL 3.0
12656pub const GL_COLOR_ATTACHMENT20: GLenum = 0x8CF4;
12657
12658/// Constant value defined from OpenGL 3.0
12659pub const GL_COLOR_ATTACHMENT21: GLenum = 0x8CF5;
12660
12661/// Constant value defined from OpenGL 3.0
12662pub const GL_COLOR_ATTACHMENT22: GLenum = 0x8CF6;
12663
12664/// Constant value defined from OpenGL 3.0
12665pub const GL_COLOR_ATTACHMENT23: GLenum = 0x8CF7;
12666
12667/// Constant value defined from OpenGL 3.0
12668pub const GL_COLOR_ATTACHMENT24: GLenum = 0x8CF8;
12669
12670/// Constant value defined from OpenGL 3.0
12671pub const GL_COLOR_ATTACHMENT25: GLenum = 0x8CF9;
12672
12673/// Constant value defined from OpenGL 3.0
12674pub const GL_COLOR_ATTACHMENT26: GLenum = 0x8CFA;
12675
12676/// Constant value defined from OpenGL 3.0
12677pub const GL_COLOR_ATTACHMENT27: GLenum = 0x8CFB;
12678
12679/// Constant value defined from OpenGL 3.0
12680pub const GL_COLOR_ATTACHMENT28: GLenum = 0x8CFC;
12681
12682/// Constant value defined from OpenGL 3.0
12683pub const GL_COLOR_ATTACHMENT29: GLenum = 0x8CFD;
12684
12685/// Constant value defined from OpenGL 3.0
12686pub const GL_COLOR_ATTACHMENT30: GLenum = 0x8CFE;
12687
12688/// Constant value defined from OpenGL 3.0
12689pub const GL_COLOR_ATTACHMENT31: GLenum = 0x8CFF;
12690
12691/// Constant value defined from OpenGL 3.0
12692pub const GL_DEPTH_ATTACHMENT: GLenum = 0x8D00;
12693
12694/// Constant value defined from OpenGL 3.0
12695pub const GL_STENCIL_ATTACHMENT: GLenum = 0x8D20;
12696
12697/// Constant value defined from OpenGL 3.0
12698pub const GL_FRAMEBUFFER: GLenum = 0x8D40;
12699
12700/// Constant value defined from OpenGL 3.0
12701pub const GL_RENDERBUFFER: GLenum = 0x8D41;
12702
12703/// Constant value defined from OpenGL 3.0
12704pub const GL_RENDERBUFFER_WIDTH: GLenum = 0x8D42;
12705
12706/// Constant value defined from OpenGL 3.0
12707pub const GL_RENDERBUFFER_HEIGHT: GLenum = 0x8D43;
12708
12709/// Constant value defined from OpenGL 3.0
12710pub const GL_RENDERBUFFER_INTERNAL_FORMAT: GLenum = 0x8D44;
12711
12712/// Constant value defined from OpenGL 3.0
12713pub const GL_STENCIL_INDEX1: GLenum = 0x8D46;
12714
12715/// Constant value defined from OpenGL 3.0
12716pub const GL_STENCIL_INDEX4: GLenum = 0x8D47;
12717
12718/// Constant value defined from OpenGL 3.0
12719pub const GL_STENCIL_INDEX8: GLenum = 0x8D48;
12720
12721/// Constant value defined from OpenGL 3.0
12722pub const GL_STENCIL_INDEX16: GLenum = 0x8D49;
12723
12724/// Constant value defined from OpenGL 3.0
12725pub const GL_RENDERBUFFER_RED_SIZE: GLenum = 0x8D50;
12726
12727/// Constant value defined from OpenGL 3.0
12728pub const GL_RENDERBUFFER_GREEN_SIZE: GLenum = 0x8D51;
12729
12730/// Constant value defined from OpenGL 3.0
12731pub const GL_RENDERBUFFER_BLUE_SIZE: GLenum = 0x8D52;
12732
12733/// Constant value defined from OpenGL 3.0
12734pub const GL_RENDERBUFFER_ALPHA_SIZE: GLenum = 0x8D53;
12735
12736/// Constant value defined from OpenGL 3.0
12737pub const GL_RENDERBUFFER_DEPTH_SIZE: GLenum = 0x8D54;
12738
12739/// Constant value defined from OpenGL 3.0
12740pub const GL_RENDERBUFFER_STENCIL_SIZE: GLenum = 0x8D55;
12741
12742/// Constant value defined from OpenGL 3.0
12743pub const GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: GLenum = 0x8D56;
12744
12745/// Constant value defined from OpenGL 3.0
12746pub const GL_MAX_SAMPLES: GLenum = 0x8D57;
12747
12748/// Constant value defined from OpenGL 3.0
12749pub const GL_INDEX: GLenum = 0x8222;
12750
12751/// Constant value defined from OpenGL 3.0
12752pub const GL_TEXTURE_LUMINANCE_TYPE: GLenum = 0x8C14;
12753
12754/// Constant value defined from OpenGL 3.0
12755pub const GL_TEXTURE_INTENSITY_TYPE: GLenum = 0x8C15;
12756
12757/// Constant value defined from OpenGL 3.0
12758pub const GL_FRAMEBUFFER_SRGB: GLenum = 0x8DB9;
12759
12760/// Constant value defined from OpenGL 3.0
12761pub const GL_HALF_FLOAT: GLenum = 0x140B;
12762
12763/// Constant value defined from OpenGL 3.0
12764pub const GL_MAP_READ_BIT: GLbitfield = 0x0001;
12765
12766/// Constant value defined from OpenGL 3.0
12767pub const GL_MAP_WRITE_BIT: GLbitfield = 0x0002;
12768
12769/// Constant value defined from OpenGL 3.0
12770pub const GL_MAP_INVALIDATE_RANGE_BIT: GLbitfield = 0x0004;
12771
12772/// Constant value defined from OpenGL 3.0
12773pub const GL_MAP_INVALIDATE_BUFFER_BIT: GLbitfield = 0x0008;
12774
12775/// Constant value defined from OpenGL 3.0
12776pub const GL_MAP_FLUSH_EXPLICIT_BIT: GLbitfield = 0x0010;
12777
12778/// Constant value defined from OpenGL 3.0
12779pub const GL_MAP_UNSYNCHRONIZED_BIT: GLbitfield = 0x0020;
12780
12781/// Constant value defined from OpenGL 3.0
12782pub const GL_COMPRESSED_RED_RGTC1: GLenum = 0x8DBB;
12783
12784/// Constant value defined from OpenGL 3.0
12785pub const GL_COMPRESSED_SIGNED_RED_RGTC1: GLenum = 0x8DBC;
12786
12787/// Constant value defined from OpenGL 3.0
12788pub const GL_COMPRESSED_RG_RGTC2: GLenum = 0x8DBD;
12789
12790/// Constant value defined from OpenGL 3.0
12791pub const GL_COMPRESSED_SIGNED_RG_RGTC2: GLenum = 0x8DBE;
12792
12793/// Constant value defined from OpenGL 3.0
12794pub const GL_RG: GLenum = 0x8227;
12795
12796/// Constant value defined from OpenGL 3.0
12797pub const GL_RG_INTEGER: GLenum = 0x8228;
12798
12799/// Constant value defined from OpenGL 3.0
12800pub const GL_R8: GLenum = 0x8229;
12801
12802/// Constant value defined from OpenGL 3.0
12803pub const GL_R16: GLenum = 0x822A;
12804
12805/// Constant value defined from OpenGL 3.0
12806pub const GL_RG8: GLenum = 0x822B;
12807
12808/// Constant value defined from OpenGL 3.0
12809pub const GL_RG16: GLenum = 0x822C;
12810
12811/// Constant value defined from OpenGL 3.0
12812pub const GL_R16F: GLenum = 0x822D;
12813
12814/// Constant value defined from OpenGL 3.0
12815pub const GL_R32F: GLenum = 0x822E;
12816
12817/// Constant value defined from OpenGL 3.0
12818pub const GL_RG16F: GLenum = 0x822F;
12819
12820/// Constant value defined from OpenGL 3.0
12821pub const GL_RG32F: GLenum = 0x8230;
12822
12823/// Constant value defined from OpenGL 3.0
12824pub const GL_R8I: GLenum = 0x8231;
12825
12826/// Constant value defined from OpenGL 3.0
12827pub const GL_R8UI: GLenum = 0x8232;
12828
12829/// Constant value defined from OpenGL 3.0
12830pub const GL_R16I: GLenum = 0x8233;
12831
12832/// Constant value defined from OpenGL 3.0
12833pub const GL_R16UI: GLenum = 0x8234;
12834
12835/// Constant value defined from OpenGL 3.0
12836pub const GL_R32I: GLenum = 0x8235;
12837
12838/// Constant value defined from OpenGL 3.0
12839pub const GL_R32UI: GLenum = 0x8236;
12840
12841/// Constant value defined from OpenGL 3.0
12842pub const GL_RG8I: GLenum = 0x8237;
12843
12844/// Constant value defined from OpenGL 3.0
12845pub const GL_RG8UI: GLenum = 0x8238;
12846
12847/// Constant value defined from OpenGL 3.0
12848pub const GL_RG16I: GLenum = 0x8239;
12849
12850/// Constant value defined from OpenGL 3.0
12851pub const GL_RG16UI: GLenum = 0x823A;
12852
12853/// Constant value defined from OpenGL 3.0
12854pub const GL_RG32I: GLenum = 0x823B;
12855
12856/// Constant value defined from OpenGL 3.0
12857pub const GL_RG32UI: GLenum = 0x823C;
12858
12859/// Constant value defined from OpenGL 3.0
12860pub const GL_VERTEX_ARRAY_BINDING: GLenum = 0x85B5;
12861
12862/// Constant value defined from OpenGL 3.0
12863pub const GL_CLAMP_VERTEX_COLOR: GLenum = 0x891A;
12864
12865/// Constant value defined from OpenGL 3.0
12866pub const GL_CLAMP_FRAGMENT_COLOR: GLenum = 0x891B;
12867
12868/// Constant value defined from OpenGL 3.0
12869pub const GL_ALPHA_INTEGER: GLenum = 0x8D97;
12870
12871/// Functions from OpenGL version 3.0
12872pub trait GL_3_0 {
12873	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
12874	fn glGetError(&self) -> GLenum;
12875
12876	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorMaski.xhtml>
12877	fn glColorMaski(&self, index: GLuint, r: GLboolean, g: GLboolean, b: GLboolean, a: GLboolean) -> Result<()>;
12878
12879	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBooleani_v.xhtml>
12880	fn glGetBooleani_v(&self, target: GLenum, index: GLuint, data: *mut GLboolean) -> Result<()>;
12881
12882	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetIntegeri_v.xhtml>
12883	fn glGetIntegeri_v(&self, target: GLenum, index: GLuint, data: *mut GLint) -> Result<()>;
12884
12885	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEnablei.xhtml>
12886	fn glEnablei(&self, target: GLenum, index: GLuint) -> Result<()>;
12887
12888	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDisablei.xhtml>
12889	fn glDisablei(&self, target: GLenum, index: GLuint) -> Result<()>;
12890
12891	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsEnabledi.xhtml>
12892	fn glIsEnabledi(&self, target: GLenum, index: GLuint) -> Result<GLboolean>;
12893
12894	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBeginTransformFeedback.xhtml>
12895	fn glBeginTransformFeedback(&self, primitiveMode: GLenum) -> Result<()>;
12896
12897	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEndTransformFeedback.xhtml>
12898	fn glEndTransformFeedback(&self) -> Result<()>;
12899
12900	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindBufferRange.xhtml>
12901	fn glBindBufferRange(&self, target: GLenum, index: GLuint, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()>;
12902
12903	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindBufferBase.xhtml>
12904	fn glBindBufferBase(&self, target: GLenum, index: GLuint, buffer: GLuint) -> Result<()>;
12905
12906	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTransformFeedbackVaryings.xhtml>
12907	fn glTransformFeedbackVaryings(&self, program: GLuint, count: GLsizei, varyings: *const *const GLchar, bufferMode: GLenum) -> Result<()>;
12908
12909	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTransformFeedbackVarying.xhtml>
12910	fn glGetTransformFeedbackVarying(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLsizei, type_: *mut GLenum, name: *mut GLchar) -> Result<()>;
12911
12912	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClampColor.xhtml>
12913	fn glClampColor(&self, target: GLenum, clamp: GLenum) -> Result<()>;
12914
12915	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBeginConditionalRender.xhtml>
12916	fn glBeginConditionalRender(&self, id: GLuint, mode: GLenum) -> Result<()>;
12917
12918	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEndConditionalRender.xhtml>
12919	fn glEndConditionalRender(&self) -> Result<()>;
12920
12921	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribIPointer.xhtml>
12922	fn glVertexAttribIPointer(&self, index: GLuint, size: GLint, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()>;
12923
12924	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribIiv.xhtml>
12925	fn glGetVertexAttribIiv(&self, index: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
12926
12927	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribIuiv.xhtml>
12928	fn glGetVertexAttribIuiv(&self, index: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()>;
12929
12930	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI1i.xhtml>
12931	fn glVertexAttribI1i(&self, index: GLuint, x: GLint) -> Result<()>;
12932
12933	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI2i.xhtml>
12934	fn glVertexAttribI2i(&self, index: GLuint, x: GLint, y: GLint) -> Result<()>;
12935
12936	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI3i.xhtml>
12937	fn glVertexAttribI3i(&self, index: GLuint, x: GLint, y: GLint, z: GLint) -> Result<()>;
12938
12939	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4i.xhtml>
12940	fn glVertexAttribI4i(&self, index: GLuint, x: GLint, y: GLint, z: GLint, w: GLint) -> Result<()>;
12941
12942	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI1ui.xhtml>
12943	fn glVertexAttribI1ui(&self, index: GLuint, x: GLuint) -> Result<()>;
12944
12945	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI2ui.xhtml>
12946	fn glVertexAttribI2ui(&self, index: GLuint, x: GLuint, y: GLuint) -> Result<()>;
12947
12948	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI3ui.xhtml>
12949	fn glVertexAttribI3ui(&self, index: GLuint, x: GLuint, y: GLuint, z: GLuint) -> Result<()>;
12950
12951	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4ui.xhtml>
12952	fn glVertexAttribI4ui(&self, index: GLuint, x: GLuint, y: GLuint, z: GLuint, w: GLuint) -> Result<()>;
12953
12954	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI1iv.xhtml>
12955	fn glVertexAttribI1iv(&self, index: GLuint, v: *const GLint) -> Result<()>;
12956
12957	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI2iv.xhtml>
12958	fn glVertexAttribI2iv(&self, index: GLuint, v: *const GLint) -> Result<()>;
12959
12960	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI3iv.xhtml>
12961	fn glVertexAttribI3iv(&self, index: GLuint, v: *const GLint) -> Result<()>;
12962
12963	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4iv.xhtml>
12964	fn glVertexAttribI4iv(&self, index: GLuint, v: *const GLint) -> Result<()>;
12965
12966	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI1uiv.xhtml>
12967	fn glVertexAttribI1uiv(&self, index: GLuint, v: *const GLuint) -> Result<()>;
12968
12969	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI2uiv.xhtml>
12970	fn glVertexAttribI2uiv(&self, index: GLuint, v: *const GLuint) -> Result<()>;
12971
12972	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI3uiv.xhtml>
12973	fn glVertexAttribI3uiv(&self, index: GLuint, v: *const GLuint) -> Result<()>;
12974
12975	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4uiv.xhtml>
12976	fn glVertexAttribI4uiv(&self, index: GLuint, v: *const GLuint) -> Result<()>;
12977
12978	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4bv.xhtml>
12979	fn glVertexAttribI4bv(&self, index: GLuint, v: *const GLbyte) -> Result<()>;
12980
12981	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4sv.xhtml>
12982	fn glVertexAttribI4sv(&self, index: GLuint, v: *const GLshort) -> Result<()>;
12983
12984	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4ubv.xhtml>
12985	fn glVertexAttribI4ubv(&self, index: GLuint, v: *const GLubyte) -> Result<()>;
12986
12987	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4usv.xhtml>
12988	fn glVertexAttribI4usv(&self, index: GLuint, v: *const GLushort) -> Result<()>;
12989
12990	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformuiv.xhtml>
12991	fn glGetUniformuiv(&self, program: GLuint, location: GLint, params: *mut GLuint) -> Result<()>;
12992
12993	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindFragDataLocation.xhtml>
12994	fn glBindFragDataLocation(&self, program: GLuint, color: GLuint, name: *const GLchar) -> Result<()>;
12995
12996	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFragDataLocation.xhtml>
12997	fn glGetFragDataLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint>;
12998
12999	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1ui.xhtml>
13000	fn glUniform1ui(&self, location: GLint, v0: GLuint) -> Result<()>;
13001
13002	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2ui.xhtml>
13003	fn glUniform2ui(&self, location: GLint, v0: GLuint, v1: GLuint) -> Result<()>;
13004
13005	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3ui.xhtml>
13006	fn glUniform3ui(&self, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint) -> Result<()>;
13007
13008	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4ui.xhtml>
13009	fn glUniform4ui(&self, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint, v3: GLuint) -> Result<()>;
13010
13011	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1uiv.xhtml>
13012	fn glUniform1uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
13013
13014	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2uiv.xhtml>
13015	fn glUniform2uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
13016
13017	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3uiv.xhtml>
13018	fn glUniform3uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
13019
13020	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4uiv.xhtml>
13021	fn glUniform4uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
13022
13023	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameterIiv.xhtml>
13024	fn glTexParameterIiv(&self, target: GLenum, pname: GLenum, params: *const GLint) -> Result<()>;
13025
13026	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameterIuiv.xhtml>
13027	fn glTexParameterIuiv(&self, target: GLenum, pname: GLenum, params: *const GLuint) -> Result<()>;
13028
13029	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexParameterIiv.xhtml>
13030	fn glGetTexParameterIiv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
13031
13032	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexParameterIuiv.xhtml>
13033	fn glGetTexParameterIuiv(&self, target: GLenum, pname: GLenum, params: *mut GLuint) -> Result<()>;
13034
13035	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferiv.xhtml>
13036	fn glClearBufferiv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLint) -> Result<()>;
13037
13038	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferuiv.xhtml>
13039	fn glClearBufferuiv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLuint) -> Result<()>;
13040
13041	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferfv.xhtml>
13042	fn glClearBufferfv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLfloat) -> Result<()>;
13043
13044	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferfi.xhtml>
13045	fn glClearBufferfi(&self, buffer: GLenum, drawbuffer: GLint, depth: GLfloat, stencil: GLint) -> Result<()>;
13046
13047	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetStringi.xhtml>
13048	fn glGetStringi(&self, name: GLenum, index: GLuint) -> Result<&'static str>;
13049
13050	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsRenderbuffer.xhtml>
13051	fn glIsRenderbuffer(&self, renderbuffer: GLuint) -> Result<GLboolean>;
13052
13053	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindRenderbuffer.xhtml>
13054	fn glBindRenderbuffer(&self, target: GLenum, renderbuffer: GLuint) -> Result<()>;
13055
13056	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteRenderbuffers.xhtml>
13057	fn glDeleteRenderbuffers(&self, n: GLsizei, renderbuffers: *const GLuint) -> Result<()>;
13058
13059	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenRenderbuffers.xhtml>
13060	fn glGenRenderbuffers(&self, n: GLsizei, renderbuffers: *mut GLuint) -> Result<()>;
13061
13062	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glRenderbufferStorage.xhtml>
13063	fn glRenderbufferStorage(&self, target: GLenum, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()>;
13064
13065	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetRenderbufferParameteriv.xhtml>
13066	fn glGetRenderbufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
13067
13068	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsFramebuffer.xhtml>
13069	fn glIsFramebuffer(&self, framebuffer: GLuint) -> Result<GLboolean>;
13070
13071	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindFramebuffer.xhtml>
13072	fn glBindFramebuffer(&self, target: GLenum, framebuffer: GLuint) -> Result<()>;
13073
13074	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteFramebuffers.xhtml>
13075	fn glDeleteFramebuffers(&self, n: GLsizei, framebuffers: *const GLuint) -> Result<()>;
13076
13077	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenFramebuffers.xhtml>
13078	fn glGenFramebuffers(&self, n: GLsizei, framebuffers: *mut GLuint) -> Result<()>;
13079
13080	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCheckFramebufferStatus.xhtml>
13081	fn glCheckFramebufferStatus(&self, target: GLenum) -> Result<GLenum>;
13082
13083	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferTexture1D.xhtml>
13084	fn glFramebufferTexture1D(&self, target: GLenum, attachment: GLenum, textarget: GLenum, texture: GLuint, level: GLint) -> Result<()>;
13085
13086	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferTexture2D.xhtml>
13087	fn glFramebufferTexture2D(&self, target: GLenum, attachment: GLenum, textarget: GLenum, texture: GLuint, level: GLint) -> Result<()>;
13088
13089	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferTexture3D.xhtml>
13090	fn glFramebufferTexture3D(&self, target: GLenum, attachment: GLenum, textarget: GLenum, texture: GLuint, level: GLint, zoffset: GLint) -> Result<()>;
13091
13092	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferRenderbuffer.xhtml>
13093	fn glFramebufferRenderbuffer(&self, target: GLenum, attachment: GLenum, renderbuffertarget: GLenum, renderbuffer: GLuint) -> Result<()>;
13094
13095	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFramebufferAttachmentParameteriv.xhtml>
13096	fn glGetFramebufferAttachmentParameteriv(&self, target: GLenum, attachment: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
13097
13098	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenerateMipmap.xhtml>
13099	fn glGenerateMipmap(&self, target: GLenum) -> Result<()>;
13100
13101	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlitFramebuffer.xhtml>
13102	fn glBlitFramebuffer(&self, srcX0: GLint, srcY0: GLint, srcX1: GLint, srcY1: GLint, dstX0: GLint, dstY0: GLint, dstX1: GLint, dstY1: GLint, mask: GLbitfield, filter: GLenum) -> Result<()>;
13103
13104	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glRenderbufferStorageMultisample.xhtml>
13105	fn glRenderbufferStorageMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()>;
13106
13107	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferTextureLayer.xhtml>
13108	fn glFramebufferTextureLayer(&self, target: GLenum, attachment: GLenum, texture: GLuint, level: GLint, layer: GLint) -> Result<()>;
13109
13110	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMapBufferRange.xhtml>
13111	fn glMapBufferRange(&self, target: GLenum, offset: GLintptr, length: GLsizeiptr, access: GLbitfield) -> Result<*mut c_void>;
13112
13113	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFlushMappedBufferRange.xhtml>
13114	fn glFlushMappedBufferRange(&self, target: GLenum, offset: GLintptr, length: GLsizeiptr) -> Result<()>;
13115
13116	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindVertexArray.xhtml>
13117	fn glBindVertexArray(&self, array: GLuint) -> Result<()>;
13118
13119	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteVertexArrays.xhtml>
13120	fn glDeleteVertexArrays(&self, n: GLsizei, arrays: *const GLuint) -> Result<()>;
13121
13122	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenVertexArrays.xhtml>
13123	fn glGenVertexArrays(&self, n: GLsizei, arrays: *mut GLuint) -> Result<()>;
13124
13125	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsVertexArray.xhtml>
13126	fn glIsVertexArray(&self, array: GLuint) -> Result<GLboolean>;
13127}
13128/// Functions from OpenGL version 3.0
13129#[derive(Clone, Copy, PartialEq, Eq, Hash)]
13130pub struct Version30 {
13131	/// Is OpenGL version 3.0 available
13132	available: bool,
13133
13134	/// The function pointer to `glGetError()`
13135	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
13136	pub geterror: PFNGLGETERRORPROC,
13137
13138	/// The function pointer to `glColorMaski()`
13139	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorMaski.xhtml>
13140	pub colormaski: PFNGLCOLORMASKIPROC,
13141
13142	/// The function pointer to `glGetBooleani_v()`
13143	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBooleani_v.xhtml>
13144	pub getbooleani_v: PFNGLGETBOOLEANI_VPROC,
13145
13146	/// The function pointer to `glGetIntegeri_v()`
13147	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetIntegeri_v.xhtml>
13148	pub getintegeri_v: PFNGLGETINTEGERI_VPROC,
13149
13150	/// The function pointer to `glEnablei()`
13151	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEnablei.xhtml>
13152	pub enablei: PFNGLENABLEIPROC,
13153
13154	/// The function pointer to `glDisablei()`
13155	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDisablei.xhtml>
13156	pub disablei: PFNGLDISABLEIPROC,
13157
13158	/// The function pointer to `glIsEnabledi()`
13159	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsEnabledi.xhtml>
13160	pub isenabledi: PFNGLISENABLEDIPROC,
13161
13162	/// The function pointer to `glBeginTransformFeedback()`
13163	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBeginTransformFeedback.xhtml>
13164	pub begintransformfeedback: PFNGLBEGINTRANSFORMFEEDBACKPROC,
13165
13166	/// The function pointer to `glEndTransformFeedback()`
13167	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEndTransformFeedback.xhtml>
13168	pub endtransformfeedback: PFNGLENDTRANSFORMFEEDBACKPROC,
13169
13170	/// The function pointer to `glBindBufferRange()`
13171	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindBufferRange.xhtml>
13172	pub bindbufferrange: PFNGLBINDBUFFERRANGEPROC,
13173
13174	/// The function pointer to `glBindBufferBase()`
13175	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindBufferBase.xhtml>
13176	pub bindbufferbase: PFNGLBINDBUFFERBASEPROC,
13177
13178	/// The function pointer to `glTransformFeedbackVaryings()`
13179	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTransformFeedbackVaryings.xhtml>
13180	pub transformfeedbackvaryings: PFNGLTRANSFORMFEEDBACKVARYINGSPROC,
13181
13182	/// The function pointer to `glGetTransformFeedbackVarying()`
13183	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTransformFeedbackVarying.xhtml>
13184	pub gettransformfeedbackvarying: PFNGLGETTRANSFORMFEEDBACKVARYINGPROC,
13185
13186	/// The function pointer to `glClampColor()`
13187	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClampColor.xhtml>
13188	pub clampcolor: PFNGLCLAMPCOLORPROC,
13189
13190	/// The function pointer to `glBeginConditionalRender()`
13191	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBeginConditionalRender.xhtml>
13192	pub beginconditionalrender: PFNGLBEGINCONDITIONALRENDERPROC,
13193
13194	/// The function pointer to `glEndConditionalRender()`
13195	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEndConditionalRender.xhtml>
13196	pub endconditionalrender: PFNGLENDCONDITIONALRENDERPROC,
13197
13198	/// The function pointer to `glVertexAttribIPointer()`
13199	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribIPointer.xhtml>
13200	pub vertexattribipointer: PFNGLVERTEXATTRIBIPOINTERPROC,
13201
13202	/// The function pointer to `glGetVertexAttribIiv()`
13203	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribIiv.xhtml>
13204	pub getvertexattribiiv: PFNGLGETVERTEXATTRIBIIVPROC,
13205
13206	/// The function pointer to `glGetVertexAttribIuiv()`
13207	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribIuiv.xhtml>
13208	pub getvertexattribiuiv: PFNGLGETVERTEXATTRIBIUIVPROC,
13209
13210	/// The function pointer to `glVertexAttribI1i()`
13211	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI1i.xhtml>
13212	pub vertexattribi1i: PFNGLVERTEXATTRIBI1IPROC,
13213
13214	/// The function pointer to `glVertexAttribI2i()`
13215	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI2i.xhtml>
13216	pub vertexattribi2i: PFNGLVERTEXATTRIBI2IPROC,
13217
13218	/// The function pointer to `glVertexAttribI3i()`
13219	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI3i.xhtml>
13220	pub vertexattribi3i: PFNGLVERTEXATTRIBI3IPROC,
13221
13222	/// The function pointer to `glVertexAttribI4i()`
13223	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4i.xhtml>
13224	pub vertexattribi4i: PFNGLVERTEXATTRIBI4IPROC,
13225
13226	/// The function pointer to `glVertexAttribI1ui()`
13227	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI1ui.xhtml>
13228	pub vertexattribi1ui: PFNGLVERTEXATTRIBI1UIPROC,
13229
13230	/// The function pointer to `glVertexAttribI2ui()`
13231	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI2ui.xhtml>
13232	pub vertexattribi2ui: PFNGLVERTEXATTRIBI2UIPROC,
13233
13234	/// The function pointer to `glVertexAttribI3ui()`
13235	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI3ui.xhtml>
13236	pub vertexattribi3ui: PFNGLVERTEXATTRIBI3UIPROC,
13237
13238	/// The function pointer to `glVertexAttribI4ui()`
13239	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4ui.xhtml>
13240	pub vertexattribi4ui: PFNGLVERTEXATTRIBI4UIPROC,
13241
13242	/// The function pointer to `glVertexAttribI1iv()`
13243	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI1iv.xhtml>
13244	pub vertexattribi1iv: PFNGLVERTEXATTRIBI1IVPROC,
13245
13246	/// The function pointer to `glVertexAttribI2iv()`
13247	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI2iv.xhtml>
13248	pub vertexattribi2iv: PFNGLVERTEXATTRIBI2IVPROC,
13249
13250	/// The function pointer to `glVertexAttribI3iv()`
13251	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI3iv.xhtml>
13252	pub vertexattribi3iv: PFNGLVERTEXATTRIBI3IVPROC,
13253
13254	/// The function pointer to `glVertexAttribI4iv()`
13255	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4iv.xhtml>
13256	pub vertexattribi4iv: PFNGLVERTEXATTRIBI4IVPROC,
13257
13258	/// The function pointer to `glVertexAttribI1uiv()`
13259	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI1uiv.xhtml>
13260	pub vertexattribi1uiv: PFNGLVERTEXATTRIBI1UIVPROC,
13261
13262	/// The function pointer to `glVertexAttribI2uiv()`
13263	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI2uiv.xhtml>
13264	pub vertexattribi2uiv: PFNGLVERTEXATTRIBI2UIVPROC,
13265
13266	/// The function pointer to `glVertexAttribI3uiv()`
13267	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI3uiv.xhtml>
13268	pub vertexattribi3uiv: PFNGLVERTEXATTRIBI3UIVPROC,
13269
13270	/// The function pointer to `glVertexAttribI4uiv()`
13271	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4uiv.xhtml>
13272	pub vertexattribi4uiv: PFNGLVERTEXATTRIBI4UIVPROC,
13273
13274	/// The function pointer to `glVertexAttribI4bv()`
13275	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4bv.xhtml>
13276	pub vertexattribi4bv: PFNGLVERTEXATTRIBI4BVPROC,
13277
13278	/// The function pointer to `glVertexAttribI4sv()`
13279	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4sv.xhtml>
13280	pub vertexattribi4sv: PFNGLVERTEXATTRIBI4SVPROC,
13281
13282	/// The function pointer to `glVertexAttribI4ubv()`
13283	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4ubv.xhtml>
13284	pub vertexattribi4ubv: PFNGLVERTEXATTRIBI4UBVPROC,
13285
13286	/// The function pointer to `glVertexAttribI4usv()`
13287	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4usv.xhtml>
13288	pub vertexattribi4usv: PFNGLVERTEXATTRIBI4USVPROC,
13289
13290	/// The function pointer to `glGetUniformuiv()`
13291	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformuiv.xhtml>
13292	pub getuniformuiv: PFNGLGETUNIFORMUIVPROC,
13293
13294	/// The function pointer to `glBindFragDataLocation()`
13295	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindFragDataLocation.xhtml>
13296	pub bindfragdatalocation: PFNGLBINDFRAGDATALOCATIONPROC,
13297
13298	/// The function pointer to `glGetFragDataLocation()`
13299	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFragDataLocation.xhtml>
13300	pub getfragdatalocation: PFNGLGETFRAGDATALOCATIONPROC,
13301
13302	/// The function pointer to `glUniform1ui()`
13303	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1ui.xhtml>
13304	pub uniform1ui: PFNGLUNIFORM1UIPROC,
13305
13306	/// The function pointer to `glUniform2ui()`
13307	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2ui.xhtml>
13308	pub uniform2ui: PFNGLUNIFORM2UIPROC,
13309
13310	/// The function pointer to `glUniform3ui()`
13311	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3ui.xhtml>
13312	pub uniform3ui: PFNGLUNIFORM3UIPROC,
13313
13314	/// The function pointer to `glUniform4ui()`
13315	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4ui.xhtml>
13316	pub uniform4ui: PFNGLUNIFORM4UIPROC,
13317
13318	/// The function pointer to `glUniform1uiv()`
13319	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1uiv.xhtml>
13320	pub uniform1uiv: PFNGLUNIFORM1UIVPROC,
13321
13322	/// The function pointer to `glUniform2uiv()`
13323	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2uiv.xhtml>
13324	pub uniform2uiv: PFNGLUNIFORM2UIVPROC,
13325
13326	/// The function pointer to `glUniform3uiv()`
13327	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3uiv.xhtml>
13328	pub uniform3uiv: PFNGLUNIFORM3UIVPROC,
13329
13330	/// The function pointer to `glUniform4uiv()`
13331	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4uiv.xhtml>
13332	pub uniform4uiv: PFNGLUNIFORM4UIVPROC,
13333
13334	/// The function pointer to `glTexParameterIiv()`
13335	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameterIiv.xhtml>
13336	pub texparameteriiv: PFNGLTEXPARAMETERIIVPROC,
13337
13338	/// The function pointer to `glTexParameterIuiv()`
13339	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameterIuiv.xhtml>
13340	pub texparameteriuiv: PFNGLTEXPARAMETERIUIVPROC,
13341
13342	/// The function pointer to `glGetTexParameterIiv()`
13343	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexParameterIiv.xhtml>
13344	pub gettexparameteriiv: PFNGLGETTEXPARAMETERIIVPROC,
13345
13346	/// The function pointer to `glGetTexParameterIuiv()`
13347	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexParameterIuiv.xhtml>
13348	pub gettexparameteriuiv: PFNGLGETTEXPARAMETERIUIVPROC,
13349
13350	/// The function pointer to `glClearBufferiv()`
13351	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferiv.xhtml>
13352	pub clearbufferiv: PFNGLCLEARBUFFERIVPROC,
13353
13354	/// The function pointer to `glClearBufferuiv()`
13355	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferuiv.xhtml>
13356	pub clearbufferuiv: PFNGLCLEARBUFFERUIVPROC,
13357
13358	/// The function pointer to `glClearBufferfv()`
13359	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferfv.xhtml>
13360	pub clearbufferfv: PFNGLCLEARBUFFERFVPROC,
13361
13362	/// The function pointer to `glClearBufferfi()`
13363	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferfi.xhtml>
13364	pub clearbufferfi: PFNGLCLEARBUFFERFIPROC,
13365
13366	/// The function pointer to `glGetStringi()`
13367	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetStringi.xhtml>
13368	pub getstringi: PFNGLGETSTRINGIPROC,
13369
13370	/// The function pointer to `glIsRenderbuffer()`
13371	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsRenderbuffer.xhtml>
13372	pub isrenderbuffer: PFNGLISRENDERBUFFERPROC,
13373
13374	/// The function pointer to `glBindRenderbuffer()`
13375	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindRenderbuffer.xhtml>
13376	pub bindrenderbuffer: PFNGLBINDRENDERBUFFERPROC,
13377
13378	/// The function pointer to `glDeleteRenderbuffers()`
13379	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteRenderbuffers.xhtml>
13380	pub deleterenderbuffers: PFNGLDELETERENDERBUFFERSPROC,
13381
13382	/// The function pointer to `glGenRenderbuffers()`
13383	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenRenderbuffers.xhtml>
13384	pub genrenderbuffers: PFNGLGENRENDERBUFFERSPROC,
13385
13386	/// The function pointer to `glRenderbufferStorage()`
13387	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glRenderbufferStorage.xhtml>
13388	pub renderbufferstorage: PFNGLRENDERBUFFERSTORAGEPROC,
13389
13390	/// The function pointer to `glGetRenderbufferParameteriv()`
13391	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetRenderbufferParameteriv.xhtml>
13392	pub getrenderbufferparameteriv: PFNGLGETRENDERBUFFERPARAMETERIVPROC,
13393
13394	/// The function pointer to `glIsFramebuffer()`
13395	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsFramebuffer.xhtml>
13396	pub isframebuffer: PFNGLISFRAMEBUFFERPROC,
13397
13398	/// The function pointer to `glBindFramebuffer()`
13399	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindFramebuffer.xhtml>
13400	pub bindframebuffer: PFNGLBINDFRAMEBUFFERPROC,
13401
13402	/// The function pointer to `glDeleteFramebuffers()`
13403	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteFramebuffers.xhtml>
13404	pub deleteframebuffers: PFNGLDELETEFRAMEBUFFERSPROC,
13405
13406	/// The function pointer to `glGenFramebuffers()`
13407	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenFramebuffers.xhtml>
13408	pub genframebuffers: PFNGLGENFRAMEBUFFERSPROC,
13409
13410	/// The function pointer to `glCheckFramebufferStatus()`
13411	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCheckFramebufferStatus.xhtml>
13412	pub checkframebufferstatus: PFNGLCHECKFRAMEBUFFERSTATUSPROC,
13413
13414	/// The function pointer to `glFramebufferTexture1D()`
13415	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferTexture1D.xhtml>
13416	pub framebuffertexture1d: PFNGLFRAMEBUFFERTEXTURE1DPROC,
13417
13418	/// The function pointer to `glFramebufferTexture2D()`
13419	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferTexture2D.xhtml>
13420	pub framebuffertexture2d: PFNGLFRAMEBUFFERTEXTURE2DPROC,
13421
13422	/// The function pointer to `glFramebufferTexture3D()`
13423	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferTexture3D.xhtml>
13424	pub framebuffertexture3d: PFNGLFRAMEBUFFERTEXTURE3DPROC,
13425
13426	/// The function pointer to `glFramebufferRenderbuffer()`
13427	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferRenderbuffer.xhtml>
13428	pub framebufferrenderbuffer: PFNGLFRAMEBUFFERRENDERBUFFERPROC,
13429
13430	/// The function pointer to `glGetFramebufferAttachmentParameteriv()`
13431	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFramebufferAttachmentParameteriv.xhtml>
13432	pub getframebufferattachmentparameteriv: PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC,
13433
13434	/// The function pointer to `glGenerateMipmap()`
13435	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenerateMipmap.xhtml>
13436	pub generatemipmap: PFNGLGENERATEMIPMAPPROC,
13437
13438	/// The function pointer to `glBlitFramebuffer()`
13439	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlitFramebuffer.xhtml>
13440	pub blitframebuffer: PFNGLBLITFRAMEBUFFERPROC,
13441
13442	/// The function pointer to `glRenderbufferStorageMultisample()`
13443	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glRenderbufferStorageMultisample.xhtml>
13444	pub renderbufferstoragemultisample: PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC,
13445
13446	/// The function pointer to `glFramebufferTextureLayer()`
13447	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferTextureLayer.xhtml>
13448	pub framebuffertexturelayer: PFNGLFRAMEBUFFERTEXTURELAYERPROC,
13449
13450	/// The function pointer to `glMapBufferRange()`
13451	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMapBufferRange.xhtml>
13452	pub mapbufferrange: PFNGLMAPBUFFERRANGEPROC,
13453
13454	/// The function pointer to `glFlushMappedBufferRange()`
13455	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFlushMappedBufferRange.xhtml>
13456	pub flushmappedbufferrange: PFNGLFLUSHMAPPEDBUFFERRANGEPROC,
13457
13458	/// The function pointer to `glBindVertexArray()`
13459	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindVertexArray.xhtml>
13460	pub bindvertexarray: PFNGLBINDVERTEXARRAYPROC,
13461
13462	/// The function pointer to `glDeleteVertexArrays()`
13463	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteVertexArrays.xhtml>
13464	pub deletevertexarrays: PFNGLDELETEVERTEXARRAYSPROC,
13465
13466	/// The function pointer to `glGenVertexArrays()`
13467	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenVertexArrays.xhtml>
13468	pub genvertexarrays: PFNGLGENVERTEXARRAYSPROC,
13469
13470	/// The function pointer to `glIsVertexArray()`
13471	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsVertexArray.xhtml>
13472	pub isvertexarray: PFNGLISVERTEXARRAYPROC,
13473}
13474
13475impl GL_3_0 for Version30 {
13476	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
13477	#[inline(always)]
13478	fn glGetError(&self) -> GLenum {
13479		(self.geterror)()
13480	}
13481	#[inline(always)]
13482	fn glColorMaski(&self, index: GLuint, r: GLboolean, g: GLboolean, b: GLboolean, a: GLboolean) -> Result<()> {
13483		#[cfg(feature = "catch_nullptr")]
13484		let ret = process_catch("glColorMaski", catch_unwind(||(self.colormaski)(index, r, g, b, a)));
13485		#[cfg(not(feature = "catch_nullptr"))]
13486		let ret = {(self.colormaski)(index, r, g, b, a); Ok(())};
13487		#[cfg(feature = "diagnose")]
13488		if let Ok(ret) = ret {
13489			return to_result("glColorMaski", ret, self.glGetError());
13490		} else {
13491			return ret
13492		}
13493		#[cfg(not(feature = "diagnose"))]
13494		return ret;
13495	}
13496	#[inline(always)]
13497	fn glGetBooleani_v(&self, target: GLenum, index: GLuint, data: *mut GLboolean) -> Result<()> {
13498		#[cfg(feature = "catch_nullptr")]
13499		let ret = process_catch("glGetBooleani_v", catch_unwind(||(self.getbooleani_v)(target, index, data)));
13500		#[cfg(not(feature = "catch_nullptr"))]
13501		let ret = {(self.getbooleani_v)(target, index, data); Ok(())};
13502		#[cfg(feature = "diagnose")]
13503		if let Ok(ret) = ret {
13504			return to_result("glGetBooleani_v", ret, self.glGetError());
13505		} else {
13506			return ret
13507		}
13508		#[cfg(not(feature = "diagnose"))]
13509		return ret;
13510	}
13511	#[inline(always)]
13512	fn glGetIntegeri_v(&self, target: GLenum, index: GLuint, data: *mut GLint) -> Result<()> {
13513		#[cfg(feature = "catch_nullptr")]
13514		let ret = process_catch("glGetIntegeri_v", catch_unwind(||(self.getintegeri_v)(target, index, data)));
13515		#[cfg(not(feature = "catch_nullptr"))]
13516		let ret = {(self.getintegeri_v)(target, index, data); Ok(())};
13517		#[cfg(feature = "diagnose")]
13518		if let Ok(ret) = ret {
13519			return to_result("glGetIntegeri_v", ret, self.glGetError());
13520		} else {
13521			return ret
13522		}
13523		#[cfg(not(feature = "diagnose"))]
13524		return ret;
13525	}
13526	#[inline(always)]
13527	fn glEnablei(&self, target: GLenum, index: GLuint) -> Result<()> {
13528		#[cfg(feature = "catch_nullptr")]
13529		let ret = process_catch("glEnablei", catch_unwind(||(self.enablei)(target, index)));
13530		#[cfg(not(feature = "catch_nullptr"))]
13531		let ret = {(self.enablei)(target, index); Ok(())};
13532		#[cfg(feature = "diagnose")]
13533		if let Ok(ret) = ret {
13534			return to_result("glEnablei", ret, self.glGetError());
13535		} else {
13536			return ret
13537		}
13538		#[cfg(not(feature = "diagnose"))]
13539		return ret;
13540	}
13541	#[inline(always)]
13542	fn glDisablei(&self, target: GLenum, index: GLuint) -> Result<()> {
13543		#[cfg(feature = "catch_nullptr")]
13544		let ret = process_catch("glDisablei", catch_unwind(||(self.disablei)(target, index)));
13545		#[cfg(not(feature = "catch_nullptr"))]
13546		let ret = {(self.disablei)(target, index); Ok(())};
13547		#[cfg(feature = "diagnose")]
13548		if let Ok(ret) = ret {
13549			return to_result("glDisablei", ret, self.glGetError());
13550		} else {
13551			return ret
13552		}
13553		#[cfg(not(feature = "diagnose"))]
13554		return ret;
13555	}
13556	#[inline(always)]
13557	fn glIsEnabledi(&self, target: GLenum, index: GLuint) -> Result<GLboolean> {
13558		#[cfg(feature = "catch_nullptr")]
13559		let ret = process_catch("glIsEnabledi", catch_unwind(||(self.isenabledi)(target, index)));
13560		#[cfg(not(feature = "catch_nullptr"))]
13561		let ret = Ok((self.isenabledi)(target, index));
13562		#[cfg(feature = "diagnose")]
13563		if let Ok(ret) = ret {
13564			return to_result("glIsEnabledi", ret, self.glGetError());
13565		} else {
13566			return ret
13567		}
13568		#[cfg(not(feature = "diagnose"))]
13569		return ret;
13570	}
13571	#[inline(always)]
13572	fn glBeginTransformFeedback(&self, primitiveMode: GLenum) -> Result<()> {
13573		#[cfg(feature = "catch_nullptr")]
13574		let ret = process_catch("glBeginTransformFeedback", catch_unwind(||(self.begintransformfeedback)(primitiveMode)));
13575		#[cfg(not(feature = "catch_nullptr"))]
13576		let ret = {(self.begintransformfeedback)(primitiveMode); Ok(())};
13577		#[cfg(feature = "diagnose")]
13578		if let Ok(ret) = ret {
13579			return to_result("glBeginTransformFeedback", ret, self.glGetError());
13580		} else {
13581			return ret
13582		}
13583		#[cfg(not(feature = "diagnose"))]
13584		return ret;
13585	}
13586	#[inline(always)]
13587	fn glEndTransformFeedback(&self) -> Result<()> {
13588		#[cfg(feature = "catch_nullptr")]
13589		let ret = process_catch("glEndTransformFeedback", catch_unwind(||(self.endtransformfeedback)()));
13590		#[cfg(not(feature = "catch_nullptr"))]
13591		let ret = {(self.endtransformfeedback)(); Ok(())};
13592		#[cfg(feature = "diagnose")]
13593		if let Ok(ret) = ret {
13594			return to_result("glEndTransformFeedback", ret, self.glGetError());
13595		} else {
13596			return ret
13597		}
13598		#[cfg(not(feature = "diagnose"))]
13599		return ret;
13600	}
13601	#[inline(always)]
13602	fn glBindBufferRange(&self, target: GLenum, index: GLuint, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()> {
13603		#[cfg(feature = "catch_nullptr")]
13604		let ret = process_catch("glBindBufferRange", catch_unwind(||(self.bindbufferrange)(target, index, buffer, offset, size)));
13605		#[cfg(not(feature = "catch_nullptr"))]
13606		let ret = {(self.bindbufferrange)(target, index, buffer, offset, size); Ok(())};
13607		#[cfg(feature = "diagnose")]
13608		if let Ok(ret) = ret {
13609			return to_result("glBindBufferRange", ret, self.glGetError());
13610		} else {
13611			return ret
13612		}
13613		#[cfg(not(feature = "diagnose"))]
13614		return ret;
13615	}
13616	#[inline(always)]
13617	fn glBindBufferBase(&self, target: GLenum, index: GLuint, buffer: GLuint) -> Result<()> {
13618		#[cfg(feature = "catch_nullptr")]
13619		let ret = process_catch("glBindBufferBase", catch_unwind(||(self.bindbufferbase)(target, index, buffer)));
13620		#[cfg(not(feature = "catch_nullptr"))]
13621		let ret = {(self.bindbufferbase)(target, index, buffer); Ok(())};
13622		#[cfg(feature = "diagnose")]
13623		if let Ok(ret) = ret {
13624			return to_result("glBindBufferBase", ret, self.glGetError());
13625		} else {
13626			return ret
13627		}
13628		#[cfg(not(feature = "diagnose"))]
13629		return ret;
13630	}
13631	#[inline(always)]
13632	fn glTransformFeedbackVaryings(&self, program: GLuint, count: GLsizei, varyings: *const *const GLchar, bufferMode: GLenum) -> Result<()> {
13633		#[cfg(feature = "catch_nullptr")]
13634		let ret = process_catch("glTransformFeedbackVaryings", catch_unwind(||(self.transformfeedbackvaryings)(program, count, varyings, bufferMode)));
13635		#[cfg(not(feature = "catch_nullptr"))]
13636		let ret = {(self.transformfeedbackvaryings)(program, count, varyings, bufferMode); Ok(())};
13637		#[cfg(feature = "diagnose")]
13638		if let Ok(ret) = ret {
13639			return to_result("glTransformFeedbackVaryings", ret, self.glGetError());
13640		} else {
13641			return ret
13642		}
13643		#[cfg(not(feature = "diagnose"))]
13644		return ret;
13645	}
13646	#[inline(always)]
13647	fn glGetTransformFeedbackVarying(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLsizei, type_: *mut GLenum, name: *mut GLchar) -> Result<()> {
13648		#[cfg(feature = "catch_nullptr")]
13649		let ret = process_catch("glGetTransformFeedbackVarying", catch_unwind(||(self.gettransformfeedbackvarying)(program, index, bufSize, length, size, type_, name)));
13650		#[cfg(not(feature = "catch_nullptr"))]
13651		let ret = {(self.gettransformfeedbackvarying)(program, index, bufSize, length, size, type_, name); Ok(())};
13652		#[cfg(feature = "diagnose")]
13653		if let Ok(ret) = ret {
13654			return to_result("glGetTransformFeedbackVarying", ret, self.glGetError());
13655		} else {
13656			return ret
13657		}
13658		#[cfg(not(feature = "diagnose"))]
13659		return ret;
13660	}
13661	#[inline(always)]
13662	fn glClampColor(&self, target: GLenum, clamp: GLenum) -> Result<()> {
13663		#[cfg(feature = "catch_nullptr")]
13664		let ret = process_catch("glClampColor", catch_unwind(||(self.clampcolor)(target, clamp)));
13665		#[cfg(not(feature = "catch_nullptr"))]
13666		let ret = {(self.clampcolor)(target, clamp); Ok(())};
13667		#[cfg(feature = "diagnose")]
13668		if let Ok(ret) = ret {
13669			return to_result("glClampColor", ret, self.glGetError());
13670		} else {
13671			return ret
13672		}
13673		#[cfg(not(feature = "diagnose"))]
13674		return ret;
13675	}
13676	#[inline(always)]
13677	fn glBeginConditionalRender(&self, id: GLuint, mode: GLenum) -> Result<()> {
13678		#[cfg(feature = "catch_nullptr")]
13679		let ret = process_catch("glBeginConditionalRender", catch_unwind(||(self.beginconditionalrender)(id, mode)));
13680		#[cfg(not(feature = "catch_nullptr"))]
13681		let ret = {(self.beginconditionalrender)(id, mode); Ok(())};
13682		#[cfg(feature = "diagnose")]
13683		if let Ok(ret) = ret {
13684			return to_result("glBeginConditionalRender", ret, self.glGetError());
13685		} else {
13686			return ret
13687		}
13688		#[cfg(not(feature = "diagnose"))]
13689		return ret;
13690	}
13691	#[inline(always)]
13692	fn glEndConditionalRender(&self) -> Result<()> {
13693		#[cfg(feature = "catch_nullptr")]
13694		let ret = process_catch("glEndConditionalRender", catch_unwind(||(self.endconditionalrender)()));
13695		#[cfg(not(feature = "catch_nullptr"))]
13696		let ret = {(self.endconditionalrender)(); Ok(())};
13697		#[cfg(feature = "diagnose")]
13698		if let Ok(ret) = ret {
13699			return to_result("glEndConditionalRender", ret, self.glGetError());
13700		} else {
13701			return ret
13702		}
13703		#[cfg(not(feature = "diagnose"))]
13704		return ret;
13705	}
13706	#[inline(always)]
13707	fn glVertexAttribIPointer(&self, index: GLuint, size: GLint, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()> {
13708		#[cfg(feature = "catch_nullptr")]
13709		let ret = process_catch("glVertexAttribIPointer", catch_unwind(||(self.vertexattribipointer)(index, size, type_, stride, pointer)));
13710		#[cfg(not(feature = "catch_nullptr"))]
13711		let ret = {(self.vertexattribipointer)(index, size, type_, stride, pointer); Ok(())};
13712		#[cfg(feature = "diagnose")]
13713		if let Ok(ret) = ret {
13714			return to_result("glVertexAttribIPointer", ret, self.glGetError());
13715		} else {
13716			return ret
13717		}
13718		#[cfg(not(feature = "diagnose"))]
13719		return ret;
13720	}
13721	#[inline(always)]
13722	fn glGetVertexAttribIiv(&self, index: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
13723		#[cfg(feature = "catch_nullptr")]
13724		let ret = process_catch("glGetVertexAttribIiv", catch_unwind(||(self.getvertexattribiiv)(index, pname, params)));
13725		#[cfg(not(feature = "catch_nullptr"))]
13726		let ret = {(self.getvertexattribiiv)(index, pname, params); Ok(())};
13727		#[cfg(feature = "diagnose")]
13728		if let Ok(ret) = ret {
13729			return to_result("glGetVertexAttribIiv", ret, self.glGetError());
13730		} else {
13731			return ret
13732		}
13733		#[cfg(not(feature = "diagnose"))]
13734		return ret;
13735	}
13736	#[inline(always)]
13737	fn glGetVertexAttribIuiv(&self, index: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()> {
13738		#[cfg(feature = "catch_nullptr")]
13739		let ret = process_catch("glGetVertexAttribIuiv", catch_unwind(||(self.getvertexattribiuiv)(index, pname, params)));
13740		#[cfg(not(feature = "catch_nullptr"))]
13741		let ret = {(self.getvertexattribiuiv)(index, pname, params); Ok(())};
13742		#[cfg(feature = "diagnose")]
13743		if let Ok(ret) = ret {
13744			return to_result("glGetVertexAttribIuiv", ret, self.glGetError());
13745		} else {
13746			return ret
13747		}
13748		#[cfg(not(feature = "diagnose"))]
13749		return ret;
13750	}
13751	#[inline(always)]
13752	fn glVertexAttribI1i(&self, index: GLuint, x: GLint) -> Result<()> {
13753		#[cfg(feature = "catch_nullptr")]
13754		let ret = process_catch("glVertexAttribI1i", catch_unwind(||(self.vertexattribi1i)(index, x)));
13755		#[cfg(not(feature = "catch_nullptr"))]
13756		let ret = {(self.vertexattribi1i)(index, x); Ok(())};
13757		#[cfg(feature = "diagnose")]
13758		if let Ok(ret) = ret {
13759			return to_result("glVertexAttribI1i", ret, self.glGetError());
13760		} else {
13761			return ret
13762		}
13763		#[cfg(not(feature = "diagnose"))]
13764		return ret;
13765	}
13766	#[inline(always)]
13767	fn glVertexAttribI2i(&self, index: GLuint, x: GLint, y: GLint) -> Result<()> {
13768		#[cfg(feature = "catch_nullptr")]
13769		let ret = process_catch("glVertexAttribI2i", catch_unwind(||(self.vertexattribi2i)(index, x, y)));
13770		#[cfg(not(feature = "catch_nullptr"))]
13771		let ret = {(self.vertexattribi2i)(index, x, y); Ok(())};
13772		#[cfg(feature = "diagnose")]
13773		if let Ok(ret) = ret {
13774			return to_result("glVertexAttribI2i", ret, self.glGetError());
13775		} else {
13776			return ret
13777		}
13778		#[cfg(not(feature = "diagnose"))]
13779		return ret;
13780	}
13781	#[inline(always)]
13782	fn glVertexAttribI3i(&self, index: GLuint, x: GLint, y: GLint, z: GLint) -> Result<()> {
13783		#[cfg(feature = "catch_nullptr")]
13784		let ret = process_catch("glVertexAttribI3i", catch_unwind(||(self.vertexattribi3i)(index, x, y, z)));
13785		#[cfg(not(feature = "catch_nullptr"))]
13786		let ret = {(self.vertexattribi3i)(index, x, y, z); Ok(())};
13787		#[cfg(feature = "diagnose")]
13788		if let Ok(ret) = ret {
13789			return to_result("glVertexAttribI3i", ret, self.glGetError());
13790		} else {
13791			return ret
13792		}
13793		#[cfg(not(feature = "diagnose"))]
13794		return ret;
13795	}
13796	#[inline(always)]
13797	fn glVertexAttribI4i(&self, index: GLuint, x: GLint, y: GLint, z: GLint, w: GLint) -> Result<()> {
13798		#[cfg(feature = "catch_nullptr")]
13799		let ret = process_catch("glVertexAttribI4i", catch_unwind(||(self.vertexattribi4i)(index, x, y, z, w)));
13800		#[cfg(not(feature = "catch_nullptr"))]
13801		let ret = {(self.vertexattribi4i)(index, x, y, z, w); Ok(())};
13802		#[cfg(feature = "diagnose")]
13803		if let Ok(ret) = ret {
13804			return to_result("glVertexAttribI4i", ret, self.glGetError());
13805		} else {
13806			return ret
13807		}
13808		#[cfg(not(feature = "diagnose"))]
13809		return ret;
13810	}
13811	#[inline(always)]
13812	fn glVertexAttribI1ui(&self, index: GLuint, x: GLuint) -> Result<()> {
13813		#[cfg(feature = "catch_nullptr")]
13814		let ret = process_catch("glVertexAttribI1ui", catch_unwind(||(self.vertexattribi1ui)(index, x)));
13815		#[cfg(not(feature = "catch_nullptr"))]
13816		let ret = {(self.vertexattribi1ui)(index, x); Ok(())};
13817		#[cfg(feature = "diagnose")]
13818		if let Ok(ret) = ret {
13819			return to_result("glVertexAttribI1ui", ret, self.glGetError());
13820		} else {
13821			return ret
13822		}
13823		#[cfg(not(feature = "diagnose"))]
13824		return ret;
13825	}
13826	#[inline(always)]
13827	fn glVertexAttribI2ui(&self, index: GLuint, x: GLuint, y: GLuint) -> Result<()> {
13828		#[cfg(feature = "catch_nullptr")]
13829		let ret = process_catch("glVertexAttribI2ui", catch_unwind(||(self.vertexattribi2ui)(index, x, y)));
13830		#[cfg(not(feature = "catch_nullptr"))]
13831		let ret = {(self.vertexattribi2ui)(index, x, y); Ok(())};
13832		#[cfg(feature = "diagnose")]
13833		if let Ok(ret) = ret {
13834			return to_result("glVertexAttribI2ui", ret, self.glGetError());
13835		} else {
13836			return ret
13837		}
13838		#[cfg(not(feature = "diagnose"))]
13839		return ret;
13840	}
13841	#[inline(always)]
13842	fn glVertexAttribI3ui(&self, index: GLuint, x: GLuint, y: GLuint, z: GLuint) -> Result<()> {
13843		#[cfg(feature = "catch_nullptr")]
13844		let ret = process_catch("glVertexAttribI3ui", catch_unwind(||(self.vertexattribi3ui)(index, x, y, z)));
13845		#[cfg(not(feature = "catch_nullptr"))]
13846		let ret = {(self.vertexattribi3ui)(index, x, y, z); Ok(())};
13847		#[cfg(feature = "diagnose")]
13848		if let Ok(ret) = ret {
13849			return to_result("glVertexAttribI3ui", ret, self.glGetError());
13850		} else {
13851			return ret
13852		}
13853		#[cfg(not(feature = "diagnose"))]
13854		return ret;
13855	}
13856	#[inline(always)]
13857	fn glVertexAttribI4ui(&self, index: GLuint, x: GLuint, y: GLuint, z: GLuint, w: GLuint) -> Result<()> {
13858		#[cfg(feature = "catch_nullptr")]
13859		let ret = process_catch("glVertexAttribI4ui", catch_unwind(||(self.vertexattribi4ui)(index, x, y, z, w)));
13860		#[cfg(not(feature = "catch_nullptr"))]
13861		let ret = {(self.vertexattribi4ui)(index, x, y, z, w); Ok(())};
13862		#[cfg(feature = "diagnose")]
13863		if let Ok(ret) = ret {
13864			return to_result("glVertexAttribI4ui", ret, self.glGetError());
13865		} else {
13866			return ret
13867		}
13868		#[cfg(not(feature = "diagnose"))]
13869		return ret;
13870	}
13871	#[inline(always)]
13872	fn glVertexAttribI1iv(&self, index: GLuint, v: *const GLint) -> Result<()> {
13873		#[cfg(feature = "catch_nullptr")]
13874		let ret = process_catch("glVertexAttribI1iv", catch_unwind(||(self.vertexattribi1iv)(index, v)));
13875		#[cfg(not(feature = "catch_nullptr"))]
13876		let ret = {(self.vertexattribi1iv)(index, v); Ok(())};
13877		#[cfg(feature = "diagnose")]
13878		if let Ok(ret) = ret {
13879			return to_result("glVertexAttribI1iv", ret, self.glGetError());
13880		} else {
13881			return ret
13882		}
13883		#[cfg(not(feature = "diagnose"))]
13884		return ret;
13885	}
13886	#[inline(always)]
13887	fn glVertexAttribI2iv(&self, index: GLuint, v: *const GLint) -> Result<()> {
13888		#[cfg(feature = "catch_nullptr")]
13889		let ret = process_catch("glVertexAttribI2iv", catch_unwind(||(self.vertexattribi2iv)(index, v)));
13890		#[cfg(not(feature = "catch_nullptr"))]
13891		let ret = {(self.vertexattribi2iv)(index, v); Ok(())};
13892		#[cfg(feature = "diagnose")]
13893		if let Ok(ret) = ret {
13894			return to_result("glVertexAttribI2iv", ret, self.glGetError());
13895		} else {
13896			return ret
13897		}
13898		#[cfg(not(feature = "diagnose"))]
13899		return ret;
13900	}
13901	#[inline(always)]
13902	fn glVertexAttribI3iv(&self, index: GLuint, v: *const GLint) -> Result<()> {
13903		#[cfg(feature = "catch_nullptr")]
13904		let ret = process_catch("glVertexAttribI3iv", catch_unwind(||(self.vertexattribi3iv)(index, v)));
13905		#[cfg(not(feature = "catch_nullptr"))]
13906		let ret = {(self.vertexattribi3iv)(index, v); Ok(())};
13907		#[cfg(feature = "diagnose")]
13908		if let Ok(ret) = ret {
13909			return to_result("glVertexAttribI3iv", ret, self.glGetError());
13910		} else {
13911			return ret
13912		}
13913		#[cfg(not(feature = "diagnose"))]
13914		return ret;
13915	}
13916	#[inline(always)]
13917	fn glVertexAttribI4iv(&self, index: GLuint, v: *const GLint) -> Result<()> {
13918		#[cfg(feature = "catch_nullptr")]
13919		let ret = process_catch("glVertexAttribI4iv", catch_unwind(||(self.vertexattribi4iv)(index, v)));
13920		#[cfg(not(feature = "catch_nullptr"))]
13921		let ret = {(self.vertexattribi4iv)(index, v); Ok(())};
13922		#[cfg(feature = "diagnose")]
13923		if let Ok(ret) = ret {
13924			return to_result("glVertexAttribI4iv", ret, self.glGetError());
13925		} else {
13926			return ret
13927		}
13928		#[cfg(not(feature = "diagnose"))]
13929		return ret;
13930	}
13931	#[inline(always)]
13932	fn glVertexAttribI1uiv(&self, index: GLuint, v: *const GLuint) -> Result<()> {
13933		#[cfg(feature = "catch_nullptr")]
13934		let ret = process_catch("glVertexAttribI1uiv", catch_unwind(||(self.vertexattribi1uiv)(index, v)));
13935		#[cfg(not(feature = "catch_nullptr"))]
13936		let ret = {(self.vertexattribi1uiv)(index, v); Ok(())};
13937		#[cfg(feature = "diagnose")]
13938		if let Ok(ret) = ret {
13939			return to_result("glVertexAttribI1uiv", ret, self.glGetError());
13940		} else {
13941			return ret
13942		}
13943		#[cfg(not(feature = "diagnose"))]
13944		return ret;
13945	}
13946	#[inline(always)]
13947	fn glVertexAttribI2uiv(&self, index: GLuint, v: *const GLuint) -> Result<()> {
13948		#[cfg(feature = "catch_nullptr")]
13949		let ret = process_catch("glVertexAttribI2uiv", catch_unwind(||(self.vertexattribi2uiv)(index, v)));
13950		#[cfg(not(feature = "catch_nullptr"))]
13951		let ret = {(self.vertexattribi2uiv)(index, v); Ok(())};
13952		#[cfg(feature = "diagnose")]
13953		if let Ok(ret) = ret {
13954			return to_result("glVertexAttribI2uiv", ret, self.glGetError());
13955		} else {
13956			return ret
13957		}
13958		#[cfg(not(feature = "diagnose"))]
13959		return ret;
13960	}
13961	#[inline(always)]
13962	fn glVertexAttribI3uiv(&self, index: GLuint, v: *const GLuint) -> Result<()> {
13963		#[cfg(feature = "catch_nullptr")]
13964		let ret = process_catch("glVertexAttribI3uiv", catch_unwind(||(self.vertexattribi3uiv)(index, v)));
13965		#[cfg(not(feature = "catch_nullptr"))]
13966		let ret = {(self.vertexattribi3uiv)(index, v); Ok(())};
13967		#[cfg(feature = "diagnose")]
13968		if let Ok(ret) = ret {
13969			return to_result("glVertexAttribI3uiv", ret, self.glGetError());
13970		} else {
13971			return ret
13972		}
13973		#[cfg(not(feature = "diagnose"))]
13974		return ret;
13975	}
13976	#[inline(always)]
13977	fn glVertexAttribI4uiv(&self, index: GLuint, v: *const GLuint) -> Result<()> {
13978		#[cfg(feature = "catch_nullptr")]
13979		let ret = process_catch("glVertexAttribI4uiv", catch_unwind(||(self.vertexattribi4uiv)(index, v)));
13980		#[cfg(not(feature = "catch_nullptr"))]
13981		let ret = {(self.vertexattribi4uiv)(index, v); Ok(())};
13982		#[cfg(feature = "diagnose")]
13983		if let Ok(ret) = ret {
13984			return to_result("glVertexAttribI4uiv", ret, self.glGetError());
13985		} else {
13986			return ret
13987		}
13988		#[cfg(not(feature = "diagnose"))]
13989		return ret;
13990	}
13991	#[inline(always)]
13992	fn glVertexAttribI4bv(&self, index: GLuint, v: *const GLbyte) -> Result<()> {
13993		#[cfg(feature = "catch_nullptr")]
13994		let ret = process_catch("glVertexAttribI4bv", catch_unwind(||(self.vertexattribi4bv)(index, v)));
13995		#[cfg(not(feature = "catch_nullptr"))]
13996		let ret = {(self.vertexattribi4bv)(index, v); Ok(())};
13997		#[cfg(feature = "diagnose")]
13998		if let Ok(ret) = ret {
13999			return to_result("glVertexAttribI4bv", ret, self.glGetError());
14000		} else {
14001			return ret
14002		}
14003		#[cfg(not(feature = "diagnose"))]
14004		return ret;
14005	}
14006	#[inline(always)]
14007	fn glVertexAttribI4sv(&self, index: GLuint, v: *const GLshort) -> Result<()> {
14008		#[cfg(feature = "catch_nullptr")]
14009		let ret = process_catch("glVertexAttribI4sv", catch_unwind(||(self.vertexattribi4sv)(index, v)));
14010		#[cfg(not(feature = "catch_nullptr"))]
14011		let ret = {(self.vertexattribi4sv)(index, v); Ok(())};
14012		#[cfg(feature = "diagnose")]
14013		if let Ok(ret) = ret {
14014			return to_result("glVertexAttribI4sv", ret, self.glGetError());
14015		} else {
14016			return ret
14017		}
14018		#[cfg(not(feature = "diagnose"))]
14019		return ret;
14020	}
14021	#[inline(always)]
14022	fn glVertexAttribI4ubv(&self, index: GLuint, v: *const GLubyte) -> Result<()> {
14023		#[cfg(feature = "catch_nullptr")]
14024		let ret = process_catch("glVertexAttribI4ubv", catch_unwind(||(self.vertexattribi4ubv)(index, v)));
14025		#[cfg(not(feature = "catch_nullptr"))]
14026		let ret = {(self.vertexattribi4ubv)(index, v); Ok(())};
14027		#[cfg(feature = "diagnose")]
14028		if let Ok(ret) = ret {
14029			return to_result("glVertexAttribI4ubv", ret, self.glGetError());
14030		} else {
14031			return ret
14032		}
14033		#[cfg(not(feature = "diagnose"))]
14034		return ret;
14035	}
14036	#[inline(always)]
14037	fn glVertexAttribI4usv(&self, index: GLuint, v: *const GLushort) -> Result<()> {
14038		#[cfg(feature = "catch_nullptr")]
14039		let ret = process_catch("glVertexAttribI4usv", catch_unwind(||(self.vertexattribi4usv)(index, v)));
14040		#[cfg(not(feature = "catch_nullptr"))]
14041		let ret = {(self.vertexattribi4usv)(index, v); Ok(())};
14042		#[cfg(feature = "diagnose")]
14043		if let Ok(ret) = ret {
14044			return to_result("glVertexAttribI4usv", ret, self.glGetError());
14045		} else {
14046			return ret
14047		}
14048		#[cfg(not(feature = "diagnose"))]
14049		return ret;
14050	}
14051	#[inline(always)]
14052	fn glGetUniformuiv(&self, program: GLuint, location: GLint, params: *mut GLuint) -> Result<()> {
14053		#[cfg(feature = "catch_nullptr")]
14054		let ret = process_catch("glGetUniformuiv", catch_unwind(||(self.getuniformuiv)(program, location, params)));
14055		#[cfg(not(feature = "catch_nullptr"))]
14056		let ret = {(self.getuniformuiv)(program, location, params); Ok(())};
14057		#[cfg(feature = "diagnose")]
14058		if let Ok(ret) = ret {
14059			return to_result("glGetUniformuiv", ret, self.glGetError());
14060		} else {
14061			return ret
14062		}
14063		#[cfg(not(feature = "diagnose"))]
14064		return ret;
14065	}
14066	#[inline(always)]
14067	fn glBindFragDataLocation(&self, program: GLuint, color: GLuint, name: *const GLchar) -> Result<()> {
14068		#[cfg(feature = "catch_nullptr")]
14069		let ret = process_catch("glBindFragDataLocation", catch_unwind(||(self.bindfragdatalocation)(program, color, name)));
14070		#[cfg(not(feature = "catch_nullptr"))]
14071		let ret = {(self.bindfragdatalocation)(program, color, name); Ok(())};
14072		#[cfg(feature = "diagnose")]
14073		if let Ok(ret) = ret {
14074			return to_result("glBindFragDataLocation", ret, self.glGetError());
14075		} else {
14076			return ret
14077		}
14078		#[cfg(not(feature = "diagnose"))]
14079		return ret;
14080	}
14081	#[inline(always)]
14082	fn glGetFragDataLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint> {
14083		#[cfg(feature = "catch_nullptr")]
14084		let ret = process_catch("glGetFragDataLocation", catch_unwind(||(self.getfragdatalocation)(program, name)));
14085		#[cfg(not(feature = "catch_nullptr"))]
14086		let ret = Ok((self.getfragdatalocation)(program, name));
14087		#[cfg(feature = "diagnose")]
14088		if let Ok(ret) = ret {
14089			return to_result("glGetFragDataLocation", ret, self.glGetError());
14090		} else {
14091			return ret
14092		}
14093		#[cfg(not(feature = "diagnose"))]
14094		return ret;
14095	}
14096	#[inline(always)]
14097	fn glUniform1ui(&self, location: GLint, v0: GLuint) -> Result<()> {
14098		#[cfg(feature = "catch_nullptr")]
14099		let ret = process_catch("glUniform1ui", catch_unwind(||(self.uniform1ui)(location, v0)));
14100		#[cfg(not(feature = "catch_nullptr"))]
14101		let ret = {(self.uniform1ui)(location, v0); Ok(())};
14102		#[cfg(feature = "diagnose")]
14103		if let Ok(ret) = ret {
14104			return to_result("glUniform1ui", ret, self.glGetError());
14105		} else {
14106			return ret
14107		}
14108		#[cfg(not(feature = "diagnose"))]
14109		return ret;
14110	}
14111	#[inline(always)]
14112	fn glUniform2ui(&self, location: GLint, v0: GLuint, v1: GLuint) -> Result<()> {
14113		#[cfg(feature = "catch_nullptr")]
14114		let ret = process_catch("glUniform2ui", catch_unwind(||(self.uniform2ui)(location, v0, v1)));
14115		#[cfg(not(feature = "catch_nullptr"))]
14116		let ret = {(self.uniform2ui)(location, v0, v1); Ok(())};
14117		#[cfg(feature = "diagnose")]
14118		if let Ok(ret) = ret {
14119			return to_result("glUniform2ui", ret, self.glGetError());
14120		} else {
14121			return ret
14122		}
14123		#[cfg(not(feature = "diagnose"))]
14124		return ret;
14125	}
14126	#[inline(always)]
14127	fn glUniform3ui(&self, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint) -> Result<()> {
14128		#[cfg(feature = "catch_nullptr")]
14129		let ret = process_catch("glUniform3ui", catch_unwind(||(self.uniform3ui)(location, v0, v1, v2)));
14130		#[cfg(not(feature = "catch_nullptr"))]
14131		let ret = {(self.uniform3ui)(location, v0, v1, v2); Ok(())};
14132		#[cfg(feature = "diagnose")]
14133		if let Ok(ret) = ret {
14134			return to_result("glUniform3ui", ret, self.glGetError());
14135		} else {
14136			return ret
14137		}
14138		#[cfg(not(feature = "diagnose"))]
14139		return ret;
14140	}
14141	#[inline(always)]
14142	fn glUniform4ui(&self, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint, v3: GLuint) -> Result<()> {
14143		#[cfg(feature = "catch_nullptr")]
14144		let ret = process_catch("glUniform4ui", catch_unwind(||(self.uniform4ui)(location, v0, v1, v2, v3)));
14145		#[cfg(not(feature = "catch_nullptr"))]
14146		let ret = {(self.uniform4ui)(location, v0, v1, v2, v3); Ok(())};
14147		#[cfg(feature = "diagnose")]
14148		if let Ok(ret) = ret {
14149			return to_result("glUniform4ui", ret, self.glGetError());
14150		} else {
14151			return ret
14152		}
14153		#[cfg(not(feature = "diagnose"))]
14154		return ret;
14155	}
14156	#[inline(always)]
14157	fn glUniform1uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
14158		#[cfg(feature = "catch_nullptr")]
14159		let ret = process_catch("glUniform1uiv", catch_unwind(||(self.uniform1uiv)(location, count, value)));
14160		#[cfg(not(feature = "catch_nullptr"))]
14161		let ret = {(self.uniform1uiv)(location, count, value); Ok(())};
14162		#[cfg(feature = "diagnose")]
14163		if let Ok(ret) = ret {
14164			return to_result("glUniform1uiv", ret, self.glGetError());
14165		} else {
14166			return ret
14167		}
14168		#[cfg(not(feature = "diagnose"))]
14169		return ret;
14170	}
14171	#[inline(always)]
14172	fn glUniform2uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
14173		#[cfg(feature = "catch_nullptr")]
14174		let ret = process_catch("glUniform2uiv", catch_unwind(||(self.uniform2uiv)(location, count, value)));
14175		#[cfg(not(feature = "catch_nullptr"))]
14176		let ret = {(self.uniform2uiv)(location, count, value); Ok(())};
14177		#[cfg(feature = "diagnose")]
14178		if let Ok(ret) = ret {
14179			return to_result("glUniform2uiv", ret, self.glGetError());
14180		} else {
14181			return ret
14182		}
14183		#[cfg(not(feature = "diagnose"))]
14184		return ret;
14185	}
14186	#[inline(always)]
14187	fn glUniform3uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
14188		#[cfg(feature = "catch_nullptr")]
14189		let ret = process_catch("glUniform3uiv", catch_unwind(||(self.uniform3uiv)(location, count, value)));
14190		#[cfg(not(feature = "catch_nullptr"))]
14191		let ret = {(self.uniform3uiv)(location, count, value); Ok(())};
14192		#[cfg(feature = "diagnose")]
14193		if let Ok(ret) = ret {
14194			return to_result("glUniform3uiv", ret, self.glGetError());
14195		} else {
14196			return ret
14197		}
14198		#[cfg(not(feature = "diagnose"))]
14199		return ret;
14200	}
14201	#[inline(always)]
14202	fn glUniform4uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
14203		#[cfg(feature = "catch_nullptr")]
14204		let ret = process_catch("glUniform4uiv", catch_unwind(||(self.uniform4uiv)(location, count, value)));
14205		#[cfg(not(feature = "catch_nullptr"))]
14206		let ret = {(self.uniform4uiv)(location, count, value); Ok(())};
14207		#[cfg(feature = "diagnose")]
14208		if let Ok(ret) = ret {
14209			return to_result("glUniform4uiv", ret, self.glGetError());
14210		} else {
14211			return ret
14212		}
14213		#[cfg(not(feature = "diagnose"))]
14214		return ret;
14215	}
14216	#[inline(always)]
14217	fn glTexParameterIiv(&self, target: GLenum, pname: GLenum, params: *const GLint) -> Result<()> {
14218		#[cfg(feature = "catch_nullptr")]
14219		let ret = process_catch("glTexParameterIiv", catch_unwind(||(self.texparameteriiv)(target, pname, params)));
14220		#[cfg(not(feature = "catch_nullptr"))]
14221		let ret = {(self.texparameteriiv)(target, pname, params); Ok(())};
14222		#[cfg(feature = "diagnose")]
14223		if let Ok(ret) = ret {
14224			return to_result("glTexParameterIiv", ret, self.glGetError());
14225		} else {
14226			return ret
14227		}
14228		#[cfg(not(feature = "diagnose"))]
14229		return ret;
14230	}
14231	#[inline(always)]
14232	fn glTexParameterIuiv(&self, target: GLenum, pname: GLenum, params: *const GLuint) -> Result<()> {
14233		#[cfg(feature = "catch_nullptr")]
14234		let ret = process_catch("glTexParameterIuiv", catch_unwind(||(self.texparameteriuiv)(target, pname, params)));
14235		#[cfg(not(feature = "catch_nullptr"))]
14236		let ret = {(self.texparameteriuiv)(target, pname, params); Ok(())};
14237		#[cfg(feature = "diagnose")]
14238		if let Ok(ret) = ret {
14239			return to_result("glTexParameterIuiv", ret, self.glGetError());
14240		} else {
14241			return ret
14242		}
14243		#[cfg(not(feature = "diagnose"))]
14244		return ret;
14245	}
14246	#[inline(always)]
14247	fn glGetTexParameterIiv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
14248		#[cfg(feature = "catch_nullptr")]
14249		let ret = process_catch("glGetTexParameterIiv", catch_unwind(||(self.gettexparameteriiv)(target, pname, params)));
14250		#[cfg(not(feature = "catch_nullptr"))]
14251		let ret = {(self.gettexparameteriiv)(target, pname, params); Ok(())};
14252		#[cfg(feature = "diagnose")]
14253		if let Ok(ret) = ret {
14254			return to_result("glGetTexParameterIiv", ret, self.glGetError());
14255		} else {
14256			return ret
14257		}
14258		#[cfg(not(feature = "diagnose"))]
14259		return ret;
14260	}
14261	#[inline(always)]
14262	fn glGetTexParameterIuiv(&self, target: GLenum, pname: GLenum, params: *mut GLuint) -> Result<()> {
14263		#[cfg(feature = "catch_nullptr")]
14264		let ret = process_catch("glGetTexParameterIuiv", catch_unwind(||(self.gettexparameteriuiv)(target, pname, params)));
14265		#[cfg(not(feature = "catch_nullptr"))]
14266		let ret = {(self.gettexparameteriuiv)(target, pname, params); Ok(())};
14267		#[cfg(feature = "diagnose")]
14268		if let Ok(ret) = ret {
14269			return to_result("glGetTexParameterIuiv", ret, self.glGetError());
14270		} else {
14271			return ret
14272		}
14273		#[cfg(not(feature = "diagnose"))]
14274		return ret;
14275	}
14276	#[inline(always)]
14277	fn glClearBufferiv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLint) -> Result<()> {
14278		#[cfg(feature = "catch_nullptr")]
14279		let ret = process_catch("glClearBufferiv", catch_unwind(||(self.clearbufferiv)(buffer, drawbuffer, value)));
14280		#[cfg(not(feature = "catch_nullptr"))]
14281		let ret = {(self.clearbufferiv)(buffer, drawbuffer, value); Ok(())};
14282		#[cfg(feature = "diagnose")]
14283		if let Ok(ret) = ret {
14284			return to_result("glClearBufferiv", ret, self.glGetError());
14285		} else {
14286			return ret
14287		}
14288		#[cfg(not(feature = "diagnose"))]
14289		return ret;
14290	}
14291	#[inline(always)]
14292	fn glClearBufferuiv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLuint) -> Result<()> {
14293		#[cfg(feature = "catch_nullptr")]
14294		let ret = process_catch("glClearBufferuiv", catch_unwind(||(self.clearbufferuiv)(buffer, drawbuffer, value)));
14295		#[cfg(not(feature = "catch_nullptr"))]
14296		let ret = {(self.clearbufferuiv)(buffer, drawbuffer, value); Ok(())};
14297		#[cfg(feature = "diagnose")]
14298		if let Ok(ret) = ret {
14299			return to_result("glClearBufferuiv", ret, self.glGetError());
14300		} else {
14301			return ret
14302		}
14303		#[cfg(not(feature = "diagnose"))]
14304		return ret;
14305	}
14306	#[inline(always)]
14307	fn glClearBufferfv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLfloat) -> Result<()> {
14308		#[cfg(feature = "catch_nullptr")]
14309		let ret = process_catch("glClearBufferfv", catch_unwind(||(self.clearbufferfv)(buffer, drawbuffer, value)));
14310		#[cfg(not(feature = "catch_nullptr"))]
14311		let ret = {(self.clearbufferfv)(buffer, drawbuffer, value); Ok(())};
14312		#[cfg(feature = "diagnose")]
14313		if let Ok(ret) = ret {
14314			return to_result("glClearBufferfv", ret, self.glGetError());
14315		} else {
14316			return ret
14317		}
14318		#[cfg(not(feature = "diagnose"))]
14319		return ret;
14320	}
14321	#[inline(always)]
14322	fn glClearBufferfi(&self, buffer: GLenum, drawbuffer: GLint, depth: GLfloat, stencil: GLint) -> Result<()> {
14323		#[cfg(feature = "catch_nullptr")]
14324		let ret = process_catch("glClearBufferfi", catch_unwind(||(self.clearbufferfi)(buffer, drawbuffer, depth, stencil)));
14325		#[cfg(not(feature = "catch_nullptr"))]
14326		let ret = {(self.clearbufferfi)(buffer, drawbuffer, depth, stencil); Ok(())};
14327		#[cfg(feature = "diagnose")]
14328		if let Ok(ret) = ret {
14329			return to_result("glClearBufferfi", ret, self.glGetError());
14330		} else {
14331			return ret
14332		}
14333		#[cfg(not(feature = "diagnose"))]
14334		return ret;
14335	}
14336	#[inline(always)]
14337	fn glGetStringi(&self, name: GLenum, index: GLuint) -> Result<&'static str> {
14338		#[cfg(feature = "catch_nullptr")]
14339		let ret = process_catch("glGetStringi", catch_unwind(||unsafe{CStr::from_ptr((self.getstringi)(name, index) as *const i8)}.to_str().unwrap()));
14340		#[cfg(not(feature = "catch_nullptr"))]
14341		let ret = Ok(unsafe{CStr::from_ptr((self.getstringi)(name, index) as *const i8)}.to_str().unwrap());
14342		#[cfg(feature = "diagnose")]
14343		if let Ok(ret) = ret {
14344			return to_result("glGetStringi", ret, self.glGetError());
14345		} else {
14346			return ret
14347		}
14348		#[cfg(not(feature = "diagnose"))]
14349		return ret;
14350	}
14351	#[inline(always)]
14352	fn glIsRenderbuffer(&self, renderbuffer: GLuint) -> Result<GLboolean> {
14353		#[cfg(feature = "catch_nullptr")]
14354		let ret = process_catch("glIsRenderbuffer", catch_unwind(||(self.isrenderbuffer)(renderbuffer)));
14355		#[cfg(not(feature = "catch_nullptr"))]
14356		let ret = Ok((self.isrenderbuffer)(renderbuffer));
14357		#[cfg(feature = "diagnose")]
14358		if let Ok(ret) = ret {
14359			return to_result("glIsRenderbuffer", ret, self.glGetError());
14360		} else {
14361			return ret
14362		}
14363		#[cfg(not(feature = "diagnose"))]
14364		return ret;
14365	}
14366	#[inline(always)]
14367	fn glBindRenderbuffer(&self, target: GLenum, renderbuffer: GLuint) -> Result<()> {
14368		#[cfg(feature = "catch_nullptr")]
14369		let ret = process_catch("glBindRenderbuffer", catch_unwind(||(self.bindrenderbuffer)(target, renderbuffer)));
14370		#[cfg(not(feature = "catch_nullptr"))]
14371		let ret = {(self.bindrenderbuffer)(target, renderbuffer); Ok(())};
14372		#[cfg(feature = "diagnose")]
14373		if let Ok(ret) = ret {
14374			return to_result("glBindRenderbuffer", ret, self.glGetError());
14375		} else {
14376			return ret
14377		}
14378		#[cfg(not(feature = "diagnose"))]
14379		return ret;
14380	}
14381	#[inline(always)]
14382	fn glDeleteRenderbuffers(&self, n: GLsizei, renderbuffers: *const GLuint) -> Result<()> {
14383		#[cfg(feature = "catch_nullptr")]
14384		let ret = process_catch("glDeleteRenderbuffers", catch_unwind(||(self.deleterenderbuffers)(n, renderbuffers)));
14385		#[cfg(not(feature = "catch_nullptr"))]
14386		let ret = {(self.deleterenderbuffers)(n, renderbuffers); Ok(())};
14387		#[cfg(feature = "diagnose")]
14388		if let Ok(ret) = ret {
14389			return to_result("glDeleteRenderbuffers", ret, self.glGetError());
14390		} else {
14391			return ret
14392		}
14393		#[cfg(not(feature = "diagnose"))]
14394		return ret;
14395	}
14396	#[inline(always)]
14397	fn glGenRenderbuffers(&self, n: GLsizei, renderbuffers: *mut GLuint) -> Result<()> {
14398		#[cfg(feature = "catch_nullptr")]
14399		let ret = process_catch("glGenRenderbuffers", catch_unwind(||(self.genrenderbuffers)(n, renderbuffers)));
14400		#[cfg(not(feature = "catch_nullptr"))]
14401		let ret = {(self.genrenderbuffers)(n, renderbuffers); Ok(())};
14402		#[cfg(feature = "diagnose")]
14403		if let Ok(ret) = ret {
14404			return to_result("glGenRenderbuffers", ret, self.glGetError());
14405		} else {
14406			return ret
14407		}
14408		#[cfg(not(feature = "diagnose"))]
14409		return ret;
14410	}
14411	#[inline(always)]
14412	fn glRenderbufferStorage(&self, target: GLenum, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()> {
14413		#[cfg(feature = "catch_nullptr")]
14414		let ret = process_catch("glRenderbufferStorage", catch_unwind(||(self.renderbufferstorage)(target, internalformat, width, height)));
14415		#[cfg(not(feature = "catch_nullptr"))]
14416		let ret = {(self.renderbufferstorage)(target, internalformat, width, height); Ok(())};
14417		#[cfg(feature = "diagnose")]
14418		if let Ok(ret) = ret {
14419			return to_result("glRenderbufferStorage", ret, self.glGetError());
14420		} else {
14421			return ret
14422		}
14423		#[cfg(not(feature = "diagnose"))]
14424		return ret;
14425	}
14426	#[inline(always)]
14427	fn glGetRenderbufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
14428		#[cfg(feature = "catch_nullptr")]
14429		let ret = process_catch("glGetRenderbufferParameteriv", catch_unwind(||(self.getrenderbufferparameteriv)(target, pname, params)));
14430		#[cfg(not(feature = "catch_nullptr"))]
14431		let ret = {(self.getrenderbufferparameteriv)(target, pname, params); Ok(())};
14432		#[cfg(feature = "diagnose")]
14433		if let Ok(ret) = ret {
14434			return to_result("glGetRenderbufferParameteriv", ret, self.glGetError());
14435		} else {
14436			return ret
14437		}
14438		#[cfg(not(feature = "diagnose"))]
14439		return ret;
14440	}
14441	#[inline(always)]
14442	fn glIsFramebuffer(&self, framebuffer: GLuint) -> Result<GLboolean> {
14443		#[cfg(feature = "catch_nullptr")]
14444		let ret = process_catch("glIsFramebuffer", catch_unwind(||(self.isframebuffer)(framebuffer)));
14445		#[cfg(not(feature = "catch_nullptr"))]
14446		let ret = Ok((self.isframebuffer)(framebuffer));
14447		#[cfg(feature = "diagnose")]
14448		if let Ok(ret) = ret {
14449			return to_result("glIsFramebuffer", ret, self.glGetError());
14450		} else {
14451			return ret
14452		}
14453		#[cfg(not(feature = "diagnose"))]
14454		return ret;
14455	}
14456	#[inline(always)]
14457	fn glBindFramebuffer(&self, target: GLenum, framebuffer: GLuint) -> Result<()> {
14458		#[cfg(feature = "catch_nullptr")]
14459		let ret = process_catch("glBindFramebuffer", catch_unwind(||(self.bindframebuffer)(target, framebuffer)));
14460		#[cfg(not(feature = "catch_nullptr"))]
14461		let ret = {(self.bindframebuffer)(target, framebuffer); Ok(())};
14462		#[cfg(feature = "diagnose")]
14463		if let Ok(ret) = ret {
14464			return to_result("glBindFramebuffer", ret, self.glGetError());
14465		} else {
14466			return ret
14467		}
14468		#[cfg(not(feature = "diagnose"))]
14469		return ret;
14470	}
14471	#[inline(always)]
14472	fn glDeleteFramebuffers(&self, n: GLsizei, framebuffers: *const GLuint) -> Result<()> {
14473		#[cfg(feature = "catch_nullptr")]
14474		let ret = process_catch("glDeleteFramebuffers", catch_unwind(||(self.deleteframebuffers)(n, framebuffers)));
14475		#[cfg(not(feature = "catch_nullptr"))]
14476		let ret = {(self.deleteframebuffers)(n, framebuffers); Ok(())};
14477		#[cfg(feature = "diagnose")]
14478		if let Ok(ret) = ret {
14479			return to_result("glDeleteFramebuffers", ret, self.glGetError());
14480		} else {
14481			return ret
14482		}
14483		#[cfg(not(feature = "diagnose"))]
14484		return ret;
14485	}
14486	#[inline(always)]
14487	fn glGenFramebuffers(&self, n: GLsizei, framebuffers: *mut GLuint) -> Result<()> {
14488		#[cfg(feature = "catch_nullptr")]
14489		let ret = process_catch("glGenFramebuffers", catch_unwind(||(self.genframebuffers)(n, framebuffers)));
14490		#[cfg(not(feature = "catch_nullptr"))]
14491		let ret = {(self.genframebuffers)(n, framebuffers); Ok(())};
14492		#[cfg(feature = "diagnose")]
14493		if let Ok(ret) = ret {
14494			return to_result("glGenFramebuffers", ret, self.glGetError());
14495		} else {
14496			return ret
14497		}
14498		#[cfg(not(feature = "diagnose"))]
14499		return ret;
14500	}
14501	#[inline(always)]
14502	fn glCheckFramebufferStatus(&self, target: GLenum) -> Result<GLenum> {
14503		#[cfg(feature = "catch_nullptr")]
14504		let ret = process_catch("glCheckFramebufferStatus", catch_unwind(||(self.checkframebufferstatus)(target)));
14505		#[cfg(not(feature = "catch_nullptr"))]
14506		let ret = Ok((self.checkframebufferstatus)(target));
14507		#[cfg(feature = "diagnose")]
14508		if let Ok(ret) = ret {
14509			return to_result("glCheckFramebufferStatus", ret, self.glGetError());
14510		} else {
14511			return ret
14512		}
14513		#[cfg(not(feature = "diagnose"))]
14514		return ret;
14515	}
14516	#[inline(always)]
14517	fn glFramebufferTexture1D(&self, target: GLenum, attachment: GLenum, textarget: GLenum, texture: GLuint, level: GLint) -> Result<()> {
14518		#[cfg(feature = "catch_nullptr")]
14519		let ret = process_catch("glFramebufferTexture1D", catch_unwind(||(self.framebuffertexture1d)(target, attachment, textarget, texture, level)));
14520		#[cfg(not(feature = "catch_nullptr"))]
14521		let ret = {(self.framebuffertexture1d)(target, attachment, textarget, texture, level); Ok(())};
14522		#[cfg(feature = "diagnose")]
14523		if let Ok(ret) = ret {
14524			return to_result("glFramebufferTexture1D", ret, self.glGetError());
14525		} else {
14526			return ret
14527		}
14528		#[cfg(not(feature = "diagnose"))]
14529		return ret;
14530	}
14531	#[inline(always)]
14532	fn glFramebufferTexture2D(&self, target: GLenum, attachment: GLenum, textarget: GLenum, texture: GLuint, level: GLint) -> Result<()> {
14533		#[cfg(feature = "catch_nullptr")]
14534		let ret = process_catch("glFramebufferTexture2D", catch_unwind(||(self.framebuffertexture2d)(target, attachment, textarget, texture, level)));
14535		#[cfg(not(feature = "catch_nullptr"))]
14536		let ret = {(self.framebuffertexture2d)(target, attachment, textarget, texture, level); Ok(())};
14537		#[cfg(feature = "diagnose")]
14538		if let Ok(ret) = ret {
14539			return to_result("glFramebufferTexture2D", ret, self.glGetError());
14540		} else {
14541			return ret
14542		}
14543		#[cfg(not(feature = "diagnose"))]
14544		return ret;
14545	}
14546	#[inline(always)]
14547	fn glFramebufferTexture3D(&self, target: GLenum, attachment: GLenum, textarget: GLenum, texture: GLuint, level: GLint, zoffset: GLint) -> Result<()> {
14548		#[cfg(feature = "catch_nullptr")]
14549		let ret = process_catch("glFramebufferTexture3D", catch_unwind(||(self.framebuffertexture3d)(target, attachment, textarget, texture, level, zoffset)));
14550		#[cfg(not(feature = "catch_nullptr"))]
14551		let ret = {(self.framebuffertexture3d)(target, attachment, textarget, texture, level, zoffset); Ok(())};
14552		#[cfg(feature = "diagnose")]
14553		if let Ok(ret) = ret {
14554			return to_result("glFramebufferTexture3D", ret, self.glGetError());
14555		} else {
14556			return ret
14557		}
14558		#[cfg(not(feature = "diagnose"))]
14559		return ret;
14560	}
14561	#[inline(always)]
14562	fn glFramebufferRenderbuffer(&self, target: GLenum, attachment: GLenum, renderbuffertarget: GLenum, renderbuffer: GLuint) -> Result<()> {
14563		#[cfg(feature = "catch_nullptr")]
14564		let ret = process_catch("glFramebufferRenderbuffer", catch_unwind(||(self.framebufferrenderbuffer)(target, attachment, renderbuffertarget, renderbuffer)));
14565		#[cfg(not(feature = "catch_nullptr"))]
14566		let ret = {(self.framebufferrenderbuffer)(target, attachment, renderbuffertarget, renderbuffer); Ok(())};
14567		#[cfg(feature = "diagnose")]
14568		if let Ok(ret) = ret {
14569			return to_result("glFramebufferRenderbuffer", ret, self.glGetError());
14570		} else {
14571			return ret
14572		}
14573		#[cfg(not(feature = "diagnose"))]
14574		return ret;
14575	}
14576	#[inline(always)]
14577	fn glGetFramebufferAttachmentParameteriv(&self, target: GLenum, attachment: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
14578		#[cfg(feature = "catch_nullptr")]
14579		let ret = process_catch("glGetFramebufferAttachmentParameteriv", catch_unwind(||(self.getframebufferattachmentparameteriv)(target, attachment, pname, params)));
14580		#[cfg(not(feature = "catch_nullptr"))]
14581		let ret = {(self.getframebufferattachmentparameteriv)(target, attachment, pname, params); Ok(())};
14582		#[cfg(feature = "diagnose")]
14583		if let Ok(ret) = ret {
14584			return to_result("glGetFramebufferAttachmentParameteriv", ret, self.glGetError());
14585		} else {
14586			return ret
14587		}
14588		#[cfg(not(feature = "diagnose"))]
14589		return ret;
14590	}
14591	#[inline(always)]
14592	fn glGenerateMipmap(&self, target: GLenum) -> Result<()> {
14593		#[cfg(feature = "catch_nullptr")]
14594		let ret = process_catch("glGenerateMipmap", catch_unwind(||(self.generatemipmap)(target)));
14595		#[cfg(not(feature = "catch_nullptr"))]
14596		let ret = {(self.generatemipmap)(target); Ok(())};
14597		#[cfg(feature = "diagnose")]
14598		if let Ok(ret) = ret {
14599			return to_result("glGenerateMipmap", ret, self.glGetError());
14600		} else {
14601			return ret
14602		}
14603		#[cfg(not(feature = "diagnose"))]
14604		return ret;
14605	}
14606	#[inline(always)]
14607	fn glBlitFramebuffer(&self, srcX0: GLint, srcY0: GLint, srcX1: GLint, srcY1: GLint, dstX0: GLint, dstY0: GLint, dstX1: GLint, dstY1: GLint, mask: GLbitfield, filter: GLenum) -> Result<()> {
14608		#[cfg(feature = "catch_nullptr")]
14609		let ret = process_catch("glBlitFramebuffer", catch_unwind(||(self.blitframebuffer)(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter)));
14610		#[cfg(not(feature = "catch_nullptr"))]
14611		let ret = {(self.blitframebuffer)(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); Ok(())};
14612		#[cfg(feature = "diagnose")]
14613		if let Ok(ret) = ret {
14614			return to_result("glBlitFramebuffer", ret, self.glGetError());
14615		} else {
14616			return ret
14617		}
14618		#[cfg(not(feature = "diagnose"))]
14619		return ret;
14620	}
14621	#[inline(always)]
14622	fn glRenderbufferStorageMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()> {
14623		#[cfg(feature = "catch_nullptr")]
14624		let ret = process_catch("glRenderbufferStorageMultisample", catch_unwind(||(self.renderbufferstoragemultisample)(target, samples, internalformat, width, height)));
14625		#[cfg(not(feature = "catch_nullptr"))]
14626		let ret = {(self.renderbufferstoragemultisample)(target, samples, internalformat, width, height); Ok(())};
14627		#[cfg(feature = "diagnose")]
14628		if let Ok(ret) = ret {
14629			return to_result("glRenderbufferStorageMultisample", ret, self.glGetError());
14630		} else {
14631			return ret
14632		}
14633		#[cfg(not(feature = "diagnose"))]
14634		return ret;
14635	}
14636	#[inline(always)]
14637	fn glFramebufferTextureLayer(&self, target: GLenum, attachment: GLenum, texture: GLuint, level: GLint, layer: GLint) -> Result<()> {
14638		#[cfg(feature = "catch_nullptr")]
14639		let ret = process_catch("glFramebufferTextureLayer", catch_unwind(||(self.framebuffertexturelayer)(target, attachment, texture, level, layer)));
14640		#[cfg(not(feature = "catch_nullptr"))]
14641		let ret = {(self.framebuffertexturelayer)(target, attachment, texture, level, layer); Ok(())};
14642		#[cfg(feature = "diagnose")]
14643		if let Ok(ret) = ret {
14644			return to_result("glFramebufferTextureLayer", ret, self.glGetError());
14645		} else {
14646			return ret
14647		}
14648		#[cfg(not(feature = "diagnose"))]
14649		return ret;
14650	}
14651	#[inline(always)]
14652	fn glMapBufferRange(&self, target: GLenum, offset: GLintptr, length: GLsizeiptr, access: GLbitfield) -> Result<*mut c_void> {
14653		#[cfg(feature = "catch_nullptr")]
14654		let ret = process_catch("glMapBufferRange", catch_unwind(||(self.mapbufferrange)(target, offset, length, access)));
14655		#[cfg(not(feature = "catch_nullptr"))]
14656		let ret = Ok((self.mapbufferrange)(target, offset, length, access));
14657		#[cfg(feature = "diagnose")]
14658		if let Ok(ret) = ret {
14659			return to_result("glMapBufferRange", ret, self.glGetError());
14660		} else {
14661			return ret
14662		}
14663		#[cfg(not(feature = "diagnose"))]
14664		return ret;
14665	}
14666	#[inline(always)]
14667	fn glFlushMappedBufferRange(&self, target: GLenum, offset: GLintptr, length: GLsizeiptr) -> Result<()> {
14668		#[cfg(feature = "catch_nullptr")]
14669		let ret = process_catch("glFlushMappedBufferRange", catch_unwind(||(self.flushmappedbufferrange)(target, offset, length)));
14670		#[cfg(not(feature = "catch_nullptr"))]
14671		let ret = {(self.flushmappedbufferrange)(target, offset, length); Ok(())};
14672		#[cfg(feature = "diagnose")]
14673		if let Ok(ret) = ret {
14674			return to_result("glFlushMappedBufferRange", ret, self.glGetError());
14675		} else {
14676			return ret
14677		}
14678		#[cfg(not(feature = "diagnose"))]
14679		return ret;
14680	}
14681	#[inline(always)]
14682	fn glBindVertexArray(&self, array: GLuint) -> Result<()> {
14683		#[cfg(feature = "catch_nullptr")]
14684		let ret = process_catch("glBindVertexArray", catch_unwind(||(self.bindvertexarray)(array)));
14685		#[cfg(not(feature = "catch_nullptr"))]
14686		let ret = {(self.bindvertexarray)(array); Ok(())};
14687		#[cfg(feature = "diagnose")]
14688		if let Ok(ret) = ret {
14689			return to_result("glBindVertexArray", ret, self.glGetError());
14690		} else {
14691			return ret
14692		}
14693		#[cfg(not(feature = "diagnose"))]
14694		return ret;
14695	}
14696	#[inline(always)]
14697	fn glDeleteVertexArrays(&self, n: GLsizei, arrays: *const GLuint) -> Result<()> {
14698		#[cfg(feature = "catch_nullptr")]
14699		let ret = process_catch("glDeleteVertexArrays", catch_unwind(||(self.deletevertexarrays)(n, arrays)));
14700		#[cfg(not(feature = "catch_nullptr"))]
14701		let ret = {(self.deletevertexarrays)(n, arrays); Ok(())};
14702		#[cfg(feature = "diagnose")]
14703		if let Ok(ret) = ret {
14704			return to_result("glDeleteVertexArrays", ret, self.glGetError());
14705		} else {
14706			return ret
14707		}
14708		#[cfg(not(feature = "diagnose"))]
14709		return ret;
14710	}
14711	#[inline(always)]
14712	fn glGenVertexArrays(&self, n: GLsizei, arrays: *mut GLuint) -> Result<()> {
14713		#[cfg(feature = "catch_nullptr")]
14714		let ret = process_catch("glGenVertexArrays", catch_unwind(||(self.genvertexarrays)(n, arrays)));
14715		#[cfg(not(feature = "catch_nullptr"))]
14716		let ret = {(self.genvertexarrays)(n, arrays); Ok(())};
14717		#[cfg(feature = "diagnose")]
14718		if let Ok(ret) = ret {
14719			return to_result("glGenVertexArrays", ret, self.glGetError());
14720		} else {
14721			return ret
14722		}
14723		#[cfg(not(feature = "diagnose"))]
14724		return ret;
14725	}
14726	#[inline(always)]
14727	fn glIsVertexArray(&self, array: GLuint) -> Result<GLboolean> {
14728		#[cfg(feature = "catch_nullptr")]
14729		let ret = process_catch("glIsVertexArray", catch_unwind(||(self.isvertexarray)(array)));
14730		#[cfg(not(feature = "catch_nullptr"))]
14731		let ret = Ok((self.isvertexarray)(array));
14732		#[cfg(feature = "diagnose")]
14733		if let Ok(ret) = ret {
14734			return to_result("glIsVertexArray", ret, self.glGetError());
14735		} else {
14736			return ret
14737		}
14738		#[cfg(not(feature = "diagnose"))]
14739		return ret;
14740	}
14741}
14742
14743impl Version30 {
14744	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
14745		let (_spec, major, minor, release) = base.get_version();
14746		if (major, minor, release) < (3, 0, 0) {
14747			return Self::default();
14748		}
14749		Self {
14750			available: true,
14751			geterror: {let proc = get_proc_address("glGetError"); if proc.is_null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
14752			colormaski: {let proc = get_proc_address("glColorMaski"); if proc.is_null() {dummy_pfnglcolormaskiproc} else {unsafe{transmute(proc)}}},
14753			getbooleani_v: {let proc = get_proc_address("glGetBooleani_v"); if proc.is_null() {dummy_pfnglgetbooleani_vproc} else {unsafe{transmute(proc)}}},
14754			getintegeri_v: {let proc = get_proc_address("glGetIntegeri_v"); if proc.is_null() {dummy_pfnglgetintegeri_vproc} else {unsafe{transmute(proc)}}},
14755			enablei: {let proc = get_proc_address("glEnablei"); if proc.is_null() {dummy_pfnglenableiproc} else {unsafe{transmute(proc)}}},
14756			disablei: {let proc = get_proc_address("glDisablei"); if proc.is_null() {dummy_pfngldisableiproc} else {unsafe{transmute(proc)}}},
14757			isenabledi: {let proc = get_proc_address("glIsEnabledi"); if proc.is_null() {dummy_pfnglisenablediproc} else {unsafe{transmute(proc)}}},
14758			begintransformfeedback: {let proc = get_proc_address("glBeginTransformFeedback"); if proc.is_null() {dummy_pfnglbegintransformfeedbackproc} else {unsafe{transmute(proc)}}},
14759			endtransformfeedback: {let proc = get_proc_address("glEndTransformFeedback"); if proc.is_null() {dummy_pfnglendtransformfeedbackproc} else {unsafe{transmute(proc)}}},
14760			bindbufferrange: {let proc = get_proc_address("glBindBufferRange"); if proc.is_null() {dummy_pfnglbindbufferrangeproc} else {unsafe{transmute(proc)}}},
14761			bindbufferbase: {let proc = get_proc_address("glBindBufferBase"); if proc.is_null() {dummy_pfnglbindbufferbaseproc} else {unsafe{transmute(proc)}}},
14762			transformfeedbackvaryings: {let proc = get_proc_address("glTransformFeedbackVaryings"); if proc.is_null() {dummy_pfngltransformfeedbackvaryingsproc} else {unsafe{transmute(proc)}}},
14763			gettransformfeedbackvarying: {let proc = get_proc_address("glGetTransformFeedbackVarying"); if proc.is_null() {dummy_pfnglgettransformfeedbackvaryingproc} else {unsafe{transmute(proc)}}},
14764			clampcolor: {let proc = get_proc_address("glClampColor"); if proc.is_null() {dummy_pfnglclampcolorproc} else {unsafe{transmute(proc)}}},
14765			beginconditionalrender: {let proc = get_proc_address("glBeginConditionalRender"); if proc.is_null() {dummy_pfnglbeginconditionalrenderproc} else {unsafe{transmute(proc)}}},
14766			endconditionalrender: {let proc = get_proc_address("glEndConditionalRender"); if proc.is_null() {dummy_pfnglendconditionalrenderproc} else {unsafe{transmute(proc)}}},
14767			vertexattribipointer: {let proc = get_proc_address("glVertexAttribIPointer"); if proc.is_null() {dummy_pfnglvertexattribipointerproc} else {unsafe{transmute(proc)}}},
14768			getvertexattribiiv: {let proc = get_proc_address("glGetVertexAttribIiv"); if proc.is_null() {dummy_pfnglgetvertexattribiivproc} else {unsafe{transmute(proc)}}},
14769			getvertexattribiuiv: {let proc = get_proc_address("glGetVertexAttribIuiv"); if proc.is_null() {dummy_pfnglgetvertexattribiuivproc} else {unsafe{transmute(proc)}}},
14770			vertexattribi1i: {let proc = get_proc_address("glVertexAttribI1i"); if proc.is_null() {dummy_pfnglvertexattribi1iproc} else {unsafe{transmute(proc)}}},
14771			vertexattribi2i: {let proc = get_proc_address("glVertexAttribI2i"); if proc.is_null() {dummy_pfnglvertexattribi2iproc} else {unsafe{transmute(proc)}}},
14772			vertexattribi3i: {let proc = get_proc_address("glVertexAttribI3i"); if proc.is_null() {dummy_pfnglvertexattribi3iproc} else {unsafe{transmute(proc)}}},
14773			vertexattribi4i: {let proc = get_proc_address("glVertexAttribI4i"); if proc.is_null() {dummy_pfnglvertexattribi4iproc} else {unsafe{transmute(proc)}}},
14774			vertexattribi1ui: {let proc = get_proc_address("glVertexAttribI1ui"); if proc.is_null() {dummy_pfnglvertexattribi1uiproc} else {unsafe{transmute(proc)}}},
14775			vertexattribi2ui: {let proc = get_proc_address("glVertexAttribI2ui"); if proc.is_null() {dummy_pfnglvertexattribi2uiproc} else {unsafe{transmute(proc)}}},
14776			vertexattribi3ui: {let proc = get_proc_address("glVertexAttribI3ui"); if proc.is_null() {dummy_pfnglvertexattribi3uiproc} else {unsafe{transmute(proc)}}},
14777			vertexattribi4ui: {let proc = get_proc_address("glVertexAttribI4ui"); if proc.is_null() {dummy_pfnglvertexattribi4uiproc} else {unsafe{transmute(proc)}}},
14778			vertexattribi1iv: {let proc = get_proc_address("glVertexAttribI1iv"); if proc.is_null() {dummy_pfnglvertexattribi1ivproc} else {unsafe{transmute(proc)}}},
14779			vertexattribi2iv: {let proc = get_proc_address("glVertexAttribI2iv"); if proc.is_null() {dummy_pfnglvertexattribi2ivproc} else {unsafe{transmute(proc)}}},
14780			vertexattribi3iv: {let proc = get_proc_address("glVertexAttribI3iv"); if proc.is_null() {dummy_pfnglvertexattribi3ivproc} else {unsafe{transmute(proc)}}},
14781			vertexattribi4iv: {let proc = get_proc_address("glVertexAttribI4iv"); if proc.is_null() {dummy_pfnglvertexattribi4ivproc} else {unsafe{transmute(proc)}}},
14782			vertexattribi1uiv: {let proc = get_proc_address("glVertexAttribI1uiv"); if proc.is_null() {dummy_pfnglvertexattribi1uivproc} else {unsafe{transmute(proc)}}},
14783			vertexattribi2uiv: {let proc = get_proc_address("glVertexAttribI2uiv"); if proc.is_null() {dummy_pfnglvertexattribi2uivproc} else {unsafe{transmute(proc)}}},
14784			vertexattribi3uiv: {let proc = get_proc_address("glVertexAttribI3uiv"); if proc.is_null() {dummy_pfnglvertexattribi3uivproc} else {unsafe{transmute(proc)}}},
14785			vertexattribi4uiv: {let proc = get_proc_address("glVertexAttribI4uiv"); if proc.is_null() {dummy_pfnglvertexattribi4uivproc} else {unsafe{transmute(proc)}}},
14786			vertexattribi4bv: {let proc = get_proc_address("glVertexAttribI4bv"); if proc.is_null() {dummy_pfnglvertexattribi4bvproc} else {unsafe{transmute(proc)}}},
14787			vertexattribi4sv: {let proc = get_proc_address("glVertexAttribI4sv"); if proc.is_null() {dummy_pfnglvertexattribi4svproc} else {unsafe{transmute(proc)}}},
14788			vertexattribi4ubv: {let proc = get_proc_address("glVertexAttribI4ubv"); if proc.is_null() {dummy_pfnglvertexattribi4ubvproc} else {unsafe{transmute(proc)}}},
14789			vertexattribi4usv: {let proc = get_proc_address("glVertexAttribI4usv"); if proc.is_null() {dummy_pfnglvertexattribi4usvproc} else {unsafe{transmute(proc)}}},
14790			getuniformuiv: {let proc = get_proc_address("glGetUniformuiv"); if proc.is_null() {dummy_pfnglgetuniformuivproc} else {unsafe{transmute(proc)}}},
14791			bindfragdatalocation: {let proc = get_proc_address("glBindFragDataLocation"); if proc.is_null() {dummy_pfnglbindfragdatalocationproc} else {unsafe{transmute(proc)}}},
14792			getfragdatalocation: {let proc = get_proc_address("glGetFragDataLocation"); if proc.is_null() {dummy_pfnglgetfragdatalocationproc} else {unsafe{transmute(proc)}}},
14793			uniform1ui: {let proc = get_proc_address("glUniform1ui"); if proc.is_null() {dummy_pfngluniform1uiproc} else {unsafe{transmute(proc)}}},
14794			uniform2ui: {let proc = get_proc_address("glUniform2ui"); if proc.is_null() {dummy_pfngluniform2uiproc} else {unsafe{transmute(proc)}}},
14795			uniform3ui: {let proc = get_proc_address("glUniform3ui"); if proc.is_null() {dummy_pfngluniform3uiproc} else {unsafe{transmute(proc)}}},
14796			uniform4ui: {let proc = get_proc_address("glUniform4ui"); if proc.is_null() {dummy_pfngluniform4uiproc} else {unsafe{transmute(proc)}}},
14797			uniform1uiv: {let proc = get_proc_address("glUniform1uiv"); if proc.is_null() {dummy_pfngluniform1uivproc} else {unsafe{transmute(proc)}}},
14798			uniform2uiv: {let proc = get_proc_address("glUniform2uiv"); if proc.is_null() {dummy_pfngluniform2uivproc} else {unsafe{transmute(proc)}}},
14799			uniform3uiv: {let proc = get_proc_address("glUniform3uiv"); if proc.is_null() {dummy_pfngluniform3uivproc} else {unsafe{transmute(proc)}}},
14800			uniform4uiv: {let proc = get_proc_address("glUniform4uiv"); if proc.is_null() {dummy_pfngluniform4uivproc} else {unsafe{transmute(proc)}}},
14801			texparameteriiv: {let proc = get_proc_address("glTexParameterIiv"); if proc.is_null() {dummy_pfngltexparameteriivproc} else {unsafe{transmute(proc)}}},
14802			texparameteriuiv: {let proc = get_proc_address("glTexParameterIuiv"); if proc.is_null() {dummy_pfngltexparameteriuivproc} else {unsafe{transmute(proc)}}},
14803			gettexparameteriiv: {let proc = get_proc_address("glGetTexParameterIiv"); if proc.is_null() {dummy_pfnglgettexparameteriivproc} else {unsafe{transmute(proc)}}},
14804			gettexparameteriuiv: {let proc = get_proc_address("glGetTexParameterIuiv"); if proc.is_null() {dummy_pfnglgettexparameteriuivproc} else {unsafe{transmute(proc)}}},
14805			clearbufferiv: {let proc = get_proc_address("glClearBufferiv"); if proc.is_null() {dummy_pfnglclearbufferivproc} else {unsafe{transmute(proc)}}},
14806			clearbufferuiv: {let proc = get_proc_address("glClearBufferuiv"); if proc.is_null() {dummy_pfnglclearbufferuivproc} else {unsafe{transmute(proc)}}},
14807			clearbufferfv: {let proc = get_proc_address("glClearBufferfv"); if proc.is_null() {dummy_pfnglclearbufferfvproc} else {unsafe{transmute(proc)}}},
14808			clearbufferfi: {let proc = get_proc_address("glClearBufferfi"); if proc.is_null() {dummy_pfnglclearbufferfiproc} else {unsafe{transmute(proc)}}},
14809			getstringi: {let proc = get_proc_address("glGetStringi"); if proc.is_null() {dummy_pfnglgetstringiproc} else {unsafe{transmute(proc)}}},
14810			isrenderbuffer: {let proc = get_proc_address("glIsRenderbuffer"); if proc.is_null() {dummy_pfnglisrenderbufferproc} else {unsafe{transmute(proc)}}},
14811			bindrenderbuffer: {let proc = get_proc_address("glBindRenderbuffer"); if proc.is_null() {dummy_pfnglbindrenderbufferproc} else {unsafe{transmute(proc)}}},
14812			deleterenderbuffers: {let proc = get_proc_address("glDeleteRenderbuffers"); if proc.is_null() {dummy_pfngldeleterenderbuffersproc} else {unsafe{transmute(proc)}}},
14813			genrenderbuffers: {let proc = get_proc_address("glGenRenderbuffers"); if proc.is_null() {dummy_pfnglgenrenderbuffersproc} else {unsafe{transmute(proc)}}},
14814			renderbufferstorage: {let proc = get_proc_address("glRenderbufferStorage"); if proc.is_null() {dummy_pfnglrenderbufferstorageproc} else {unsafe{transmute(proc)}}},
14815			getrenderbufferparameteriv: {let proc = get_proc_address("glGetRenderbufferParameteriv"); if proc.is_null() {dummy_pfnglgetrenderbufferparameterivproc} else {unsafe{transmute(proc)}}},
14816			isframebuffer: {let proc = get_proc_address("glIsFramebuffer"); if proc.is_null() {dummy_pfnglisframebufferproc} else {unsafe{transmute(proc)}}},
14817			bindframebuffer: {let proc = get_proc_address("glBindFramebuffer"); if proc.is_null() {dummy_pfnglbindframebufferproc} else {unsafe{transmute(proc)}}},
14818			deleteframebuffers: {let proc = get_proc_address("glDeleteFramebuffers"); if proc.is_null() {dummy_pfngldeleteframebuffersproc} else {unsafe{transmute(proc)}}},
14819			genframebuffers: {let proc = get_proc_address("glGenFramebuffers"); if proc.is_null() {dummy_pfnglgenframebuffersproc} else {unsafe{transmute(proc)}}},
14820			checkframebufferstatus: {let proc = get_proc_address("glCheckFramebufferStatus"); if proc.is_null() {dummy_pfnglcheckframebufferstatusproc} else {unsafe{transmute(proc)}}},
14821			framebuffertexture1d: {let proc = get_proc_address("glFramebufferTexture1D"); if proc.is_null() {dummy_pfnglframebuffertexture1dproc} else {unsafe{transmute(proc)}}},
14822			framebuffertexture2d: {let proc = get_proc_address("glFramebufferTexture2D"); if proc.is_null() {dummy_pfnglframebuffertexture2dproc} else {unsafe{transmute(proc)}}},
14823			framebuffertexture3d: {let proc = get_proc_address("glFramebufferTexture3D"); if proc.is_null() {dummy_pfnglframebuffertexture3dproc} else {unsafe{transmute(proc)}}},
14824			framebufferrenderbuffer: {let proc = get_proc_address("glFramebufferRenderbuffer"); if proc.is_null() {dummy_pfnglframebufferrenderbufferproc} else {unsafe{transmute(proc)}}},
14825			getframebufferattachmentparameteriv: {let proc = get_proc_address("glGetFramebufferAttachmentParameteriv"); if proc.is_null() {dummy_pfnglgetframebufferattachmentparameterivproc} else {unsafe{transmute(proc)}}},
14826			generatemipmap: {let proc = get_proc_address("glGenerateMipmap"); if proc.is_null() {dummy_pfnglgeneratemipmapproc} else {unsafe{transmute(proc)}}},
14827			blitframebuffer: {let proc = get_proc_address("glBlitFramebuffer"); if proc.is_null() {dummy_pfnglblitframebufferproc} else {unsafe{transmute(proc)}}},
14828			renderbufferstoragemultisample: {let proc = get_proc_address("glRenderbufferStorageMultisample"); if proc.is_null() {dummy_pfnglrenderbufferstoragemultisampleproc} else {unsafe{transmute(proc)}}},
14829			framebuffertexturelayer: {let proc = get_proc_address("glFramebufferTextureLayer"); if proc.is_null() {dummy_pfnglframebuffertexturelayerproc} else {unsafe{transmute(proc)}}},
14830			mapbufferrange: {let proc = get_proc_address("glMapBufferRange"); if proc.is_null() {dummy_pfnglmapbufferrangeproc} else {unsafe{transmute(proc)}}},
14831			flushmappedbufferrange: {let proc = get_proc_address("glFlushMappedBufferRange"); if proc.is_null() {dummy_pfnglflushmappedbufferrangeproc} else {unsafe{transmute(proc)}}},
14832			bindvertexarray: {let proc = get_proc_address("glBindVertexArray"); if proc.is_null() {dummy_pfnglbindvertexarrayproc} else {unsafe{transmute(proc)}}},
14833			deletevertexarrays: {let proc = get_proc_address("glDeleteVertexArrays"); if proc.is_null() {dummy_pfngldeletevertexarraysproc} else {unsafe{transmute(proc)}}},
14834			genvertexarrays: {let proc = get_proc_address("glGenVertexArrays"); if proc.is_null() {dummy_pfnglgenvertexarraysproc} else {unsafe{transmute(proc)}}},
14835			isvertexarray: {let proc = get_proc_address("glIsVertexArray"); if proc.is_null() {dummy_pfnglisvertexarrayproc} else {unsafe{transmute(proc)}}},
14836		}
14837	}
14838	#[inline(always)]
14839	pub fn get_available(&self) -> bool {
14840		self.available
14841	}
14842}
14843
14844impl Default for Version30 {
14845	fn default() -> Self {
14846		Self {
14847			available: false,
14848			geterror: dummy_pfnglgeterrorproc,
14849			colormaski: dummy_pfnglcolormaskiproc,
14850			getbooleani_v: dummy_pfnglgetbooleani_vproc,
14851			getintegeri_v: dummy_pfnglgetintegeri_vproc,
14852			enablei: dummy_pfnglenableiproc,
14853			disablei: dummy_pfngldisableiproc,
14854			isenabledi: dummy_pfnglisenablediproc,
14855			begintransformfeedback: dummy_pfnglbegintransformfeedbackproc,
14856			endtransformfeedback: dummy_pfnglendtransformfeedbackproc,
14857			bindbufferrange: dummy_pfnglbindbufferrangeproc,
14858			bindbufferbase: dummy_pfnglbindbufferbaseproc,
14859			transformfeedbackvaryings: dummy_pfngltransformfeedbackvaryingsproc,
14860			gettransformfeedbackvarying: dummy_pfnglgettransformfeedbackvaryingproc,
14861			clampcolor: dummy_pfnglclampcolorproc,
14862			beginconditionalrender: dummy_pfnglbeginconditionalrenderproc,
14863			endconditionalrender: dummy_pfnglendconditionalrenderproc,
14864			vertexattribipointer: dummy_pfnglvertexattribipointerproc,
14865			getvertexattribiiv: dummy_pfnglgetvertexattribiivproc,
14866			getvertexattribiuiv: dummy_pfnglgetvertexattribiuivproc,
14867			vertexattribi1i: dummy_pfnglvertexattribi1iproc,
14868			vertexattribi2i: dummy_pfnglvertexattribi2iproc,
14869			vertexattribi3i: dummy_pfnglvertexattribi3iproc,
14870			vertexattribi4i: dummy_pfnglvertexattribi4iproc,
14871			vertexattribi1ui: dummy_pfnglvertexattribi1uiproc,
14872			vertexattribi2ui: dummy_pfnglvertexattribi2uiproc,
14873			vertexattribi3ui: dummy_pfnglvertexattribi3uiproc,
14874			vertexattribi4ui: dummy_pfnglvertexattribi4uiproc,
14875			vertexattribi1iv: dummy_pfnglvertexattribi1ivproc,
14876			vertexattribi2iv: dummy_pfnglvertexattribi2ivproc,
14877			vertexattribi3iv: dummy_pfnglvertexattribi3ivproc,
14878			vertexattribi4iv: dummy_pfnglvertexattribi4ivproc,
14879			vertexattribi1uiv: dummy_pfnglvertexattribi1uivproc,
14880			vertexattribi2uiv: dummy_pfnglvertexattribi2uivproc,
14881			vertexattribi3uiv: dummy_pfnglvertexattribi3uivproc,
14882			vertexattribi4uiv: dummy_pfnglvertexattribi4uivproc,
14883			vertexattribi4bv: dummy_pfnglvertexattribi4bvproc,
14884			vertexattribi4sv: dummy_pfnglvertexattribi4svproc,
14885			vertexattribi4ubv: dummy_pfnglvertexattribi4ubvproc,
14886			vertexattribi4usv: dummy_pfnglvertexattribi4usvproc,
14887			getuniformuiv: dummy_pfnglgetuniformuivproc,
14888			bindfragdatalocation: dummy_pfnglbindfragdatalocationproc,
14889			getfragdatalocation: dummy_pfnglgetfragdatalocationproc,
14890			uniform1ui: dummy_pfngluniform1uiproc,
14891			uniform2ui: dummy_pfngluniform2uiproc,
14892			uniform3ui: dummy_pfngluniform3uiproc,
14893			uniform4ui: dummy_pfngluniform4uiproc,
14894			uniform1uiv: dummy_pfngluniform1uivproc,
14895			uniform2uiv: dummy_pfngluniform2uivproc,
14896			uniform3uiv: dummy_pfngluniform3uivproc,
14897			uniform4uiv: dummy_pfngluniform4uivproc,
14898			texparameteriiv: dummy_pfngltexparameteriivproc,
14899			texparameteriuiv: dummy_pfngltexparameteriuivproc,
14900			gettexparameteriiv: dummy_pfnglgettexparameteriivproc,
14901			gettexparameteriuiv: dummy_pfnglgettexparameteriuivproc,
14902			clearbufferiv: dummy_pfnglclearbufferivproc,
14903			clearbufferuiv: dummy_pfnglclearbufferuivproc,
14904			clearbufferfv: dummy_pfnglclearbufferfvproc,
14905			clearbufferfi: dummy_pfnglclearbufferfiproc,
14906			getstringi: dummy_pfnglgetstringiproc,
14907			isrenderbuffer: dummy_pfnglisrenderbufferproc,
14908			bindrenderbuffer: dummy_pfnglbindrenderbufferproc,
14909			deleterenderbuffers: dummy_pfngldeleterenderbuffersproc,
14910			genrenderbuffers: dummy_pfnglgenrenderbuffersproc,
14911			renderbufferstorage: dummy_pfnglrenderbufferstorageproc,
14912			getrenderbufferparameteriv: dummy_pfnglgetrenderbufferparameterivproc,
14913			isframebuffer: dummy_pfnglisframebufferproc,
14914			bindframebuffer: dummy_pfnglbindframebufferproc,
14915			deleteframebuffers: dummy_pfngldeleteframebuffersproc,
14916			genframebuffers: dummy_pfnglgenframebuffersproc,
14917			checkframebufferstatus: dummy_pfnglcheckframebufferstatusproc,
14918			framebuffertexture1d: dummy_pfnglframebuffertexture1dproc,
14919			framebuffertexture2d: dummy_pfnglframebuffertexture2dproc,
14920			framebuffertexture3d: dummy_pfnglframebuffertexture3dproc,
14921			framebufferrenderbuffer: dummy_pfnglframebufferrenderbufferproc,
14922			getframebufferattachmentparameteriv: dummy_pfnglgetframebufferattachmentparameterivproc,
14923			generatemipmap: dummy_pfnglgeneratemipmapproc,
14924			blitframebuffer: dummy_pfnglblitframebufferproc,
14925			renderbufferstoragemultisample: dummy_pfnglrenderbufferstoragemultisampleproc,
14926			framebuffertexturelayer: dummy_pfnglframebuffertexturelayerproc,
14927			mapbufferrange: dummy_pfnglmapbufferrangeproc,
14928			flushmappedbufferrange: dummy_pfnglflushmappedbufferrangeproc,
14929			bindvertexarray: dummy_pfnglbindvertexarrayproc,
14930			deletevertexarrays: dummy_pfngldeletevertexarraysproc,
14931			genvertexarrays: dummy_pfnglgenvertexarraysproc,
14932			isvertexarray: dummy_pfnglisvertexarrayproc,
14933		}
14934	}
14935}
14936impl Debug for Version30 {
14937	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
14938		if self.available {
14939			f.debug_struct("Version30")
14940			.field("available", &self.available)
14941			.field("colormaski", unsafe{if transmute::<_, *const c_void>(self.colormaski) == (dummy_pfnglcolormaskiproc as *const c_void) {&null::<PFNGLCOLORMASKIPROC>()} else {&self.colormaski}})
14942			.field("getbooleani_v", unsafe{if transmute::<_, *const c_void>(self.getbooleani_v) == (dummy_pfnglgetbooleani_vproc as *const c_void) {&null::<PFNGLGETBOOLEANI_VPROC>()} else {&self.getbooleani_v}})
14943			.field("getintegeri_v", unsafe{if transmute::<_, *const c_void>(self.getintegeri_v) == (dummy_pfnglgetintegeri_vproc as *const c_void) {&null::<PFNGLGETINTEGERI_VPROC>()} else {&self.getintegeri_v}})
14944			.field("enablei", unsafe{if transmute::<_, *const c_void>(self.enablei) == (dummy_pfnglenableiproc as *const c_void) {&null::<PFNGLENABLEIPROC>()} else {&self.enablei}})
14945			.field("disablei", unsafe{if transmute::<_, *const c_void>(self.disablei) == (dummy_pfngldisableiproc as *const c_void) {&null::<PFNGLDISABLEIPROC>()} else {&self.disablei}})
14946			.field("isenabledi", unsafe{if transmute::<_, *const c_void>(self.isenabledi) == (dummy_pfnglisenablediproc as *const c_void) {&null::<PFNGLISENABLEDIPROC>()} else {&self.isenabledi}})
14947			.field("begintransformfeedback", unsafe{if transmute::<_, *const c_void>(self.begintransformfeedback) == (dummy_pfnglbegintransformfeedbackproc as *const c_void) {&null::<PFNGLBEGINTRANSFORMFEEDBACKPROC>()} else {&self.begintransformfeedback}})
14948			.field("endtransformfeedback", unsafe{if transmute::<_, *const c_void>(self.endtransformfeedback) == (dummy_pfnglendtransformfeedbackproc as *const c_void) {&null::<PFNGLENDTRANSFORMFEEDBACKPROC>()} else {&self.endtransformfeedback}})
14949			.field("bindbufferrange", unsafe{if transmute::<_, *const c_void>(self.bindbufferrange) == (dummy_pfnglbindbufferrangeproc as *const c_void) {&null::<PFNGLBINDBUFFERRANGEPROC>()} else {&self.bindbufferrange}})
14950			.field("bindbufferbase", unsafe{if transmute::<_, *const c_void>(self.bindbufferbase) == (dummy_pfnglbindbufferbaseproc as *const c_void) {&null::<PFNGLBINDBUFFERBASEPROC>()} else {&self.bindbufferbase}})
14951			.field("transformfeedbackvaryings", unsafe{if transmute::<_, *const c_void>(self.transformfeedbackvaryings) == (dummy_pfngltransformfeedbackvaryingsproc as *const c_void) {&null::<PFNGLTRANSFORMFEEDBACKVARYINGSPROC>()} else {&self.transformfeedbackvaryings}})
14952			.field("gettransformfeedbackvarying", unsafe{if transmute::<_, *const c_void>(self.gettransformfeedbackvarying) == (dummy_pfnglgettransformfeedbackvaryingproc as *const c_void) {&null::<PFNGLGETTRANSFORMFEEDBACKVARYINGPROC>()} else {&self.gettransformfeedbackvarying}})
14953			.field("clampcolor", unsafe{if transmute::<_, *const c_void>(self.clampcolor) == (dummy_pfnglclampcolorproc as *const c_void) {&null::<PFNGLCLAMPCOLORPROC>()} else {&self.clampcolor}})
14954			.field("beginconditionalrender", unsafe{if transmute::<_, *const c_void>(self.beginconditionalrender) == (dummy_pfnglbeginconditionalrenderproc as *const c_void) {&null::<PFNGLBEGINCONDITIONALRENDERPROC>()} else {&self.beginconditionalrender}})
14955			.field("endconditionalrender", unsafe{if transmute::<_, *const c_void>(self.endconditionalrender) == (dummy_pfnglendconditionalrenderproc as *const c_void) {&null::<PFNGLENDCONDITIONALRENDERPROC>()} else {&self.endconditionalrender}})
14956			.field("vertexattribipointer", unsafe{if transmute::<_, *const c_void>(self.vertexattribipointer) == (dummy_pfnglvertexattribipointerproc as *const c_void) {&null::<PFNGLVERTEXATTRIBIPOINTERPROC>()} else {&self.vertexattribipointer}})
14957			.field("getvertexattribiiv", unsafe{if transmute::<_, *const c_void>(self.getvertexattribiiv) == (dummy_pfnglgetvertexattribiivproc as *const c_void) {&null::<PFNGLGETVERTEXATTRIBIIVPROC>()} else {&self.getvertexattribiiv}})
14958			.field("getvertexattribiuiv", unsafe{if transmute::<_, *const c_void>(self.getvertexattribiuiv) == (dummy_pfnglgetvertexattribiuivproc as *const c_void) {&null::<PFNGLGETVERTEXATTRIBIUIVPROC>()} else {&self.getvertexattribiuiv}})
14959			.field("vertexattribi1i", unsafe{if transmute::<_, *const c_void>(self.vertexattribi1i) == (dummy_pfnglvertexattribi1iproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI1IPROC>()} else {&self.vertexattribi1i}})
14960			.field("vertexattribi2i", unsafe{if transmute::<_, *const c_void>(self.vertexattribi2i) == (dummy_pfnglvertexattribi2iproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI2IPROC>()} else {&self.vertexattribi2i}})
14961			.field("vertexattribi3i", unsafe{if transmute::<_, *const c_void>(self.vertexattribi3i) == (dummy_pfnglvertexattribi3iproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI3IPROC>()} else {&self.vertexattribi3i}})
14962			.field("vertexattribi4i", unsafe{if transmute::<_, *const c_void>(self.vertexattribi4i) == (dummy_pfnglvertexattribi4iproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI4IPROC>()} else {&self.vertexattribi4i}})
14963			.field("vertexattribi1ui", unsafe{if transmute::<_, *const c_void>(self.vertexattribi1ui) == (dummy_pfnglvertexattribi1uiproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI1UIPROC>()} else {&self.vertexattribi1ui}})
14964			.field("vertexattribi2ui", unsafe{if transmute::<_, *const c_void>(self.vertexattribi2ui) == (dummy_pfnglvertexattribi2uiproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI2UIPROC>()} else {&self.vertexattribi2ui}})
14965			.field("vertexattribi3ui", unsafe{if transmute::<_, *const c_void>(self.vertexattribi3ui) == (dummy_pfnglvertexattribi3uiproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI3UIPROC>()} else {&self.vertexattribi3ui}})
14966			.field("vertexattribi4ui", unsafe{if transmute::<_, *const c_void>(self.vertexattribi4ui) == (dummy_pfnglvertexattribi4uiproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI4UIPROC>()} else {&self.vertexattribi4ui}})
14967			.field("vertexattribi1iv", unsafe{if transmute::<_, *const c_void>(self.vertexattribi1iv) == (dummy_pfnglvertexattribi1ivproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI1IVPROC>()} else {&self.vertexattribi1iv}})
14968			.field("vertexattribi2iv", unsafe{if transmute::<_, *const c_void>(self.vertexattribi2iv) == (dummy_pfnglvertexattribi2ivproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI2IVPROC>()} else {&self.vertexattribi2iv}})
14969			.field("vertexattribi3iv", unsafe{if transmute::<_, *const c_void>(self.vertexattribi3iv) == (dummy_pfnglvertexattribi3ivproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI3IVPROC>()} else {&self.vertexattribi3iv}})
14970			.field("vertexattribi4iv", unsafe{if transmute::<_, *const c_void>(self.vertexattribi4iv) == (dummy_pfnglvertexattribi4ivproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI4IVPROC>()} else {&self.vertexattribi4iv}})
14971			.field("vertexattribi1uiv", unsafe{if transmute::<_, *const c_void>(self.vertexattribi1uiv) == (dummy_pfnglvertexattribi1uivproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI1UIVPROC>()} else {&self.vertexattribi1uiv}})
14972			.field("vertexattribi2uiv", unsafe{if transmute::<_, *const c_void>(self.vertexattribi2uiv) == (dummy_pfnglvertexattribi2uivproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI2UIVPROC>()} else {&self.vertexattribi2uiv}})
14973			.field("vertexattribi3uiv", unsafe{if transmute::<_, *const c_void>(self.vertexattribi3uiv) == (dummy_pfnglvertexattribi3uivproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI3UIVPROC>()} else {&self.vertexattribi3uiv}})
14974			.field("vertexattribi4uiv", unsafe{if transmute::<_, *const c_void>(self.vertexattribi4uiv) == (dummy_pfnglvertexattribi4uivproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI4UIVPROC>()} else {&self.vertexattribi4uiv}})
14975			.field("vertexattribi4bv", unsafe{if transmute::<_, *const c_void>(self.vertexattribi4bv) == (dummy_pfnglvertexattribi4bvproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI4BVPROC>()} else {&self.vertexattribi4bv}})
14976			.field("vertexattribi4sv", unsafe{if transmute::<_, *const c_void>(self.vertexattribi4sv) == (dummy_pfnglvertexattribi4svproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI4SVPROC>()} else {&self.vertexattribi4sv}})
14977			.field("vertexattribi4ubv", unsafe{if transmute::<_, *const c_void>(self.vertexattribi4ubv) == (dummy_pfnglvertexattribi4ubvproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI4UBVPROC>()} else {&self.vertexattribi4ubv}})
14978			.field("vertexattribi4usv", unsafe{if transmute::<_, *const c_void>(self.vertexattribi4usv) == (dummy_pfnglvertexattribi4usvproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI4USVPROC>()} else {&self.vertexattribi4usv}})
14979			.field("getuniformuiv", unsafe{if transmute::<_, *const c_void>(self.getuniformuiv) == (dummy_pfnglgetuniformuivproc as *const c_void) {&null::<PFNGLGETUNIFORMUIVPROC>()} else {&self.getuniformuiv}})
14980			.field("bindfragdatalocation", unsafe{if transmute::<_, *const c_void>(self.bindfragdatalocation) == (dummy_pfnglbindfragdatalocationproc as *const c_void) {&null::<PFNGLBINDFRAGDATALOCATIONPROC>()} else {&self.bindfragdatalocation}})
14981			.field("getfragdatalocation", unsafe{if transmute::<_, *const c_void>(self.getfragdatalocation) == (dummy_pfnglgetfragdatalocationproc as *const c_void) {&null::<PFNGLGETFRAGDATALOCATIONPROC>()} else {&self.getfragdatalocation}})
14982			.field("uniform1ui", unsafe{if transmute::<_, *const c_void>(self.uniform1ui) == (dummy_pfngluniform1uiproc as *const c_void) {&null::<PFNGLUNIFORM1UIPROC>()} else {&self.uniform1ui}})
14983			.field("uniform2ui", unsafe{if transmute::<_, *const c_void>(self.uniform2ui) == (dummy_pfngluniform2uiproc as *const c_void) {&null::<PFNGLUNIFORM2UIPROC>()} else {&self.uniform2ui}})
14984			.field("uniform3ui", unsafe{if transmute::<_, *const c_void>(self.uniform3ui) == (dummy_pfngluniform3uiproc as *const c_void) {&null::<PFNGLUNIFORM3UIPROC>()} else {&self.uniform3ui}})
14985			.field("uniform4ui", unsafe{if transmute::<_, *const c_void>(self.uniform4ui) == (dummy_pfngluniform4uiproc as *const c_void) {&null::<PFNGLUNIFORM4UIPROC>()} else {&self.uniform4ui}})
14986			.field("uniform1uiv", unsafe{if transmute::<_, *const c_void>(self.uniform1uiv) == (dummy_pfngluniform1uivproc as *const c_void) {&null::<PFNGLUNIFORM1UIVPROC>()} else {&self.uniform1uiv}})
14987			.field("uniform2uiv", unsafe{if transmute::<_, *const c_void>(self.uniform2uiv) == (dummy_pfngluniform2uivproc as *const c_void) {&null::<PFNGLUNIFORM2UIVPROC>()} else {&self.uniform2uiv}})
14988			.field("uniform3uiv", unsafe{if transmute::<_, *const c_void>(self.uniform3uiv) == (dummy_pfngluniform3uivproc as *const c_void) {&null::<PFNGLUNIFORM3UIVPROC>()} else {&self.uniform3uiv}})
14989			.field("uniform4uiv", unsafe{if transmute::<_, *const c_void>(self.uniform4uiv) == (dummy_pfngluniform4uivproc as *const c_void) {&null::<PFNGLUNIFORM4UIVPROC>()} else {&self.uniform4uiv}})
14990			.field("texparameteriiv", unsafe{if transmute::<_, *const c_void>(self.texparameteriiv) == (dummy_pfngltexparameteriivproc as *const c_void) {&null::<PFNGLTEXPARAMETERIIVPROC>()} else {&self.texparameteriiv}})
14991			.field("texparameteriuiv", unsafe{if transmute::<_, *const c_void>(self.texparameteriuiv) == (dummy_pfngltexparameteriuivproc as *const c_void) {&null::<PFNGLTEXPARAMETERIUIVPROC>()} else {&self.texparameteriuiv}})
14992			.field("gettexparameteriiv", unsafe{if transmute::<_, *const c_void>(self.gettexparameteriiv) == (dummy_pfnglgettexparameteriivproc as *const c_void) {&null::<PFNGLGETTEXPARAMETERIIVPROC>()} else {&self.gettexparameteriiv}})
14993			.field("gettexparameteriuiv", unsafe{if transmute::<_, *const c_void>(self.gettexparameteriuiv) == (dummy_pfnglgettexparameteriuivproc as *const c_void) {&null::<PFNGLGETTEXPARAMETERIUIVPROC>()} else {&self.gettexparameteriuiv}})
14994			.field("clearbufferiv", unsafe{if transmute::<_, *const c_void>(self.clearbufferiv) == (dummy_pfnglclearbufferivproc as *const c_void) {&null::<PFNGLCLEARBUFFERIVPROC>()} else {&self.clearbufferiv}})
14995			.field("clearbufferuiv", unsafe{if transmute::<_, *const c_void>(self.clearbufferuiv) == (dummy_pfnglclearbufferuivproc as *const c_void) {&null::<PFNGLCLEARBUFFERUIVPROC>()} else {&self.clearbufferuiv}})
14996			.field("clearbufferfv", unsafe{if transmute::<_, *const c_void>(self.clearbufferfv) == (dummy_pfnglclearbufferfvproc as *const c_void) {&null::<PFNGLCLEARBUFFERFVPROC>()} else {&self.clearbufferfv}})
14997			.field("clearbufferfi", unsafe{if transmute::<_, *const c_void>(self.clearbufferfi) == (dummy_pfnglclearbufferfiproc as *const c_void) {&null::<PFNGLCLEARBUFFERFIPROC>()} else {&self.clearbufferfi}})
14998			.field("getstringi", unsafe{if transmute::<_, *const c_void>(self.getstringi) == (dummy_pfnglgetstringiproc as *const c_void) {&null::<PFNGLGETSTRINGIPROC>()} else {&self.getstringi}})
14999			.field("isrenderbuffer", unsafe{if transmute::<_, *const c_void>(self.isrenderbuffer) == (dummy_pfnglisrenderbufferproc as *const c_void) {&null::<PFNGLISRENDERBUFFERPROC>()} else {&self.isrenderbuffer}})
15000			.field("bindrenderbuffer", unsafe{if transmute::<_, *const c_void>(self.bindrenderbuffer) == (dummy_pfnglbindrenderbufferproc as *const c_void) {&null::<PFNGLBINDRENDERBUFFERPROC>()} else {&self.bindrenderbuffer}})
15001			.field("deleterenderbuffers", unsafe{if transmute::<_, *const c_void>(self.deleterenderbuffers) == (dummy_pfngldeleterenderbuffersproc as *const c_void) {&null::<PFNGLDELETERENDERBUFFERSPROC>()} else {&self.deleterenderbuffers}})
15002			.field("genrenderbuffers", unsafe{if transmute::<_, *const c_void>(self.genrenderbuffers) == (dummy_pfnglgenrenderbuffersproc as *const c_void) {&null::<PFNGLGENRENDERBUFFERSPROC>()} else {&self.genrenderbuffers}})
15003			.field("renderbufferstorage", unsafe{if transmute::<_, *const c_void>(self.renderbufferstorage) == (dummy_pfnglrenderbufferstorageproc as *const c_void) {&null::<PFNGLRENDERBUFFERSTORAGEPROC>()} else {&self.renderbufferstorage}})
15004			.field("getrenderbufferparameteriv", unsafe{if transmute::<_, *const c_void>(self.getrenderbufferparameteriv) == (dummy_pfnglgetrenderbufferparameterivproc as *const c_void) {&null::<PFNGLGETRENDERBUFFERPARAMETERIVPROC>()} else {&self.getrenderbufferparameteriv}})
15005			.field("isframebuffer", unsafe{if transmute::<_, *const c_void>(self.isframebuffer) == (dummy_pfnglisframebufferproc as *const c_void) {&null::<PFNGLISFRAMEBUFFERPROC>()} else {&self.isframebuffer}})
15006			.field("bindframebuffer", unsafe{if transmute::<_, *const c_void>(self.bindframebuffer) == (dummy_pfnglbindframebufferproc as *const c_void) {&null::<PFNGLBINDFRAMEBUFFERPROC>()} else {&self.bindframebuffer}})
15007			.field("deleteframebuffers", unsafe{if transmute::<_, *const c_void>(self.deleteframebuffers) == (dummy_pfngldeleteframebuffersproc as *const c_void) {&null::<PFNGLDELETEFRAMEBUFFERSPROC>()} else {&self.deleteframebuffers}})
15008			.field("genframebuffers", unsafe{if transmute::<_, *const c_void>(self.genframebuffers) == (dummy_pfnglgenframebuffersproc as *const c_void) {&null::<PFNGLGENFRAMEBUFFERSPROC>()} else {&self.genframebuffers}})
15009			.field("checkframebufferstatus", unsafe{if transmute::<_, *const c_void>(self.checkframebufferstatus) == (dummy_pfnglcheckframebufferstatusproc as *const c_void) {&null::<PFNGLCHECKFRAMEBUFFERSTATUSPROC>()} else {&self.checkframebufferstatus}})
15010			.field("framebuffertexture1d", unsafe{if transmute::<_, *const c_void>(self.framebuffertexture1d) == (dummy_pfnglframebuffertexture1dproc as *const c_void) {&null::<PFNGLFRAMEBUFFERTEXTURE1DPROC>()} else {&self.framebuffertexture1d}})
15011			.field("framebuffertexture2d", unsafe{if transmute::<_, *const c_void>(self.framebuffertexture2d) == (dummy_pfnglframebuffertexture2dproc as *const c_void) {&null::<PFNGLFRAMEBUFFERTEXTURE2DPROC>()} else {&self.framebuffertexture2d}})
15012			.field("framebuffertexture3d", unsafe{if transmute::<_, *const c_void>(self.framebuffertexture3d) == (dummy_pfnglframebuffertexture3dproc as *const c_void) {&null::<PFNGLFRAMEBUFFERTEXTURE3DPROC>()} else {&self.framebuffertexture3d}})
15013			.field("framebufferrenderbuffer", unsafe{if transmute::<_, *const c_void>(self.framebufferrenderbuffer) == (dummy_pfnglframebufferrenderbufferproc as *const c_void) {&null::<PFNGLFRAMEBUFFERRENDERBUFFERPROC>()} else {&self.framebufferrenderbuffer}})
15014			.field("getframebufferattachmentparameteriv", unsafe{if transmute::<_, *const c_void>(self.getframebufferattachmentparameteriv) == (dummy_pfnglgetframebufferattachmentparameterivproc as *const c_void) {&null::<PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC>()} else {&self.getframebufferattachmentparameteriv}})
15015			.field("generatemipmap", unsafe{if transmute::<_, *const c_void>(self.generatemipmap) == (dummy_pfnglgeneratemipmapproc as *const c_void) {&null::<PFNGLGENERATEMIPMAPPROC>()} else {&self.generatemipmap}})
15016			.field("blitframebuffer", unsafe{if transmute::<_, *const c_void>(self.blitframebuffer) == (dummy_pfnglblitframebufferproc as *const c_void) {&null::<PFNGLBLITFRAMEBUFFERPROC>()} else {&self.blitframebuffer}})
15017			.field("renderbufferstoragemultisample", unsafe{if transmute::<_, *const c_void>(self.renderbufferstoragemultisample) == (dummy_pfnglrenderbufferstoragemultisampleproc as *const c_void) {&null::<PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC>()} else {&self.renderbufferstoragemultisample}})
15018			.field("framebuffertexturelayer", unsafe{if transmute::<_, *const c_void>(self.framebuffertexturelayer) == (dummy_pfnglframebuffertexturelayerproc as *const c_void) {&null::<PFNGLFRAMEBUFFERTEXTURELAYERPROC>()} else {&self.framebuffertexturelayer}})
15019			.field("mapbufferrange", unsafe{if transmute::<_, *const c_void>(self.mapbufferrange) == (dummy_pfnglmapbufferrangeproc as *const c_void) {&null::<PFNGLMAPBUFFERRANGEPROC>()} else {&self.mapbufferrange}})
15020			.field("flushmappedbufferrange", unsafe{if transmute::<_, *const c_void>(self.flushmappedbufferrange) == (dummy_pfnglflushmappedbufferrangeproc as *const c_void) {&null::<PFNGLFLUSHMAPPEDBUFFERRANGEPROC>()} else {&self.flushmappedbufferrange}})
15021			.field("bindvertexarray", unsafe{if transmute::<_, *const c_void>(self.bindvertexarray) == (dummy_pfnglbindvertexarrayproc as *const c_void) {&null::<PFNGLBINDVERTEXARRAYPROC>()} else {&self.bindvertexarray}})
15022			.field("deletevertexarrays", unsafe{if transmute::<_, *const c_void>(self.deletevertexarrays) == (dummy_pfngldeletevertexarraysproc as *const c_void) {&null::<PFNGLDELETEVERTEXARRAYSPROC>()} else {&self.deletevertexarrays}})
15023			.field("genvertexarrays", unsafe{if transmute::<_, *const c_void>(self.genvertexarrays) == (dummy_pfnglgenvertexarraysproc as *const c_void) {&null::<PFNGLGENVERTEXARRAYSPROC>()} else {&self.genvertexarrays}})
15024			.field("isvertexarray", unsafe{if transmute::<_, *const c_void>(self.isvertexarray) == (dummy_pfnglisvertexarrayproc as *const c_void) {&null::<PFNGLISVERTEXARRAYPROC>()} else {&self.isvertexarray}})
15025			.finish()
15026		} else {
15027			f.debug_struct("Version30")
15028			.field("available", &self.available)
15029			.finish_non_exhaustive()
15030		}
15031	}
15032}
15033
15034/// The prototype to the OpenGL function `DrawArraysInstanced`
15035type PFNGLDRAWARRAYSINSTANCEDPROC = extern "system" fn(GLenum, GLint, GLsizei, GLsizei);
15036
15037/// The prototype to the OpenGL function `DrawElementsInstanced`
15038type PFNGLDRAWELEMENTSINSTANCEDPROC = extern "system" fn(GLenum, GLsizei, GLenum, *const c_void, GLsizei);
15039
15040/// The prototype to the OpenGL function `TexBuffer`
15041type PFNGLTEXBUFFERPROC = extern "system" fn(GLenum, GLenum, GLuint);
15042
15043/// The prototype to the OpenGL function `PrimitiveRestartIndex`
15044type PFNGLPRIMITIVERESTARTINDEXPROC = extern "system" fn(GLuint);
15045
15046/// The prototype to the OpenGL function `CopyBufferSubData`
15047type PFNGLCOPYBUFFERSUBDATAPROC = extern "system" fn(GLenum, GLenum, GLintptr, GLintptr, GLsizeiptr);
15048
15049/// The prototype to the OpenGL function `GetUniformIndices`
15050type PFNGLGETUNIFORMINDICESPROC = extern "system" fn(GLuint, GLsizei, *const *const GLchar, *mut GLuint);
15051
15052/// The prototype to the OpenGL function `GetActiveUniformsiv`
15053type PFNGLGETACTIVEUNIFORMSIVPROC = extern "system" fn(GLuint, GLsizei, *const GLuint, GLenum, *mut GLint);
15054
15055/// The prototype to the OpenGL function `GetActiveUniformName`
15056type PFNGLGETACTIVEUNIFORMNAMEPROC = extern "system" fn(GLuint, GLuint, GLsizei, *mut GLsizei, *mut GLchar);
15057
15058/// The prototype to the OpenGL function `GetUniformBlockIndex`
15059type PFNGLGETUNIFORMBLOCKINDEXPROC = extern "system" fn(GLuint, *const GLchar) -> GLuint;
15060
15061/// The prototype to the OpenGL function `GetActiveUniformBlockiv`
15062type PFNGLGETACTIVEUNIFORMBLOCKIVPROC = extern "system" fn(GLuint, GLuint, GLenum, *mut GLint);
15063
15064/// The prototype to the OpenGL function `GetActiveUniformBlockName`
15065type PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC = extern "system" fn(GLuint, GLuint, GLsizei, *mut GLsizei, *mut GLchar);
15066
15067/// The prototype to the OpenGL function `UniformBlockBinding`
15068type PFNGLUNIFORMBLOCKBINDINGPROC = extern "system" fn(GLuint, GLuint, GLuint);
15069
15070/// The dummy function of `DrawArraysInstanced()`
15071extern "system" fn dummy_pfngldrawarraysinstancedproc (_: GLenum, _: GLint, _: GLsizei, _: GLsizei) {
15072	panic!("OpenGL function pointer `glDrawArraysInstanced()` is null.")
15073}
15074
15075/// The dummy function of `DrawElementsInstanced()`
15076extern "system" fn dummy_pfngldrawelementsinstancedproc (_: GLenum, _: GLsizei, _: GLenum, _: *const c_void, _: GLsizei) {
15077	panic!("OpenGL function pointer `glDrawElementsInstanced()` is null.")
15078}
15079
15080/// The dummy function of `TexBuffer()`
15081extern "system" fn dummy_pfngltexbufferproc (_: GLenum, _: GLenum, _: GLuint) {
15082	panic!("OpenGL function pointer `glTexBuffer()` is null.")
15083}
15084
15085/// The dummy function of `PrimitiveRestartIndex()`
15086extern "system" fn dummy_pfnglprimitiverestartindexproc (_: GLuint) {
15087	panic!("OpenGL function pointer `glPrimitiveRestartIndex()` is null.")
15088}
15089
15090/// The dummy function of `CopyBufferSubData()`
15091extern "system" fn dummy_pfnglcopybuffersubdataproc (_: GLenum, _: GLenum, _: GLintptr, _: GLintptr, _: GLsizeiptr) {
15092	panic!("OpenGL function pointer `glCopyBufferSubData()` is null.")
15093}
15094
15095/// The dummy function of `GetUniformIndices()`
15096extern "system" fn dummy_pfnglgetuniformindicesproc (_: GLuint, _: GLsizei, _: *const *const GLchar, _: *mut GLuint) {
15097	panic!("OpenGL function pointer `glGetUniformIndices()` is null.")
15098}
15099
15100/// The dummy function of `GetActiveUniformsiv()`
15101extern "system" fn dummy_pfnglgetactiveuniformsivproc (_: GLuint, _: GLsizei, _: *const GLuint, _: GLenum, _: *mut GLint) {
15102	panic!("OpenGL function pointer `glGetActiveUniformsiv()` is null.")
15103}
15104
15105/// The dummy function of `GetActiveUniformName()`
15106extern "system" fn dummy_pfnglgetactiveuniformnameproc (_: GLuint, _: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLchar) {
15107	panic!("OpenGL function pointer `glGetActiveUniformName()` is null.")
15108}
15109
15110/// The dummy function of `GetUniformBlockIndex()`
15111extern "system" fn dummy_pfnglgetuniformblockindexproc (_: GLuint, _: *const GLchar) -> GLuint {
15112	panic!("OpenGL function pointer `glGetUniformBlockIndex()` is null.")
15113}
15114
15115/// The dummy function of `GetActiveUniformBlockiv()`
15116extern "system" fn dummy_pfnglgetactiveuniformblockivproc (_: GLuint, _: GLuint, _: GLenum, _: *mut GLint) {
15117	panic!("OpenGL function pointer `glGetActiveUniformBlockiv()` is null.")
15118}
15119
15120/// The dummy function of `GetActiveUniformBlockName()`
15121extern "system" fn dummy_pfnglgetactiveuniformblocknameproc (_: GLuint, _: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLchar) {
15122	panic!("OpenGL function pointer `glGetActiveUniformBlockName()` is null.")
15123}
15124
15125/// The dummy function of `UniformBlockBinding()`
15126extern "system" fn dummy_pfngluniformblockbindingproc (_: GLuint, _: GLuint, _: GLuint) {
15127	panic!("OpenGL function pointer `glUniformBlockBinding()` is null.")
15128}
15129/// Constant value defined from OpenGL 3.1
15130pub const GL_SAMPLER_2D_RECT: GLenum = 0x8B63;
15131
15132/// Constant value defined from OpenGL 3.1
15133pub const GL_SAMPLER_2D_RECT_SHADOW: GLenum = 0x8B64;
15134
15135/// Constant value defined from OpenGL 3.1
15136pub const GL_SAMPLER_BUFFER: GLenum = 0x8DC2;
15137
15138/// Constant value defined from OpenGL 3.1
15139pub const GL_INT_SAMPLER_2D_RECT: GLenum = 0x8DCD;
15140
15141/// Constant value defined from OpenGL 3.1
15142pub const GL_INT_SAMPLER_BUFFER: GLenum = 0x8DD0;
15143
15144/// Constant value defined from OpenGL 3.1
15145pub const GL_UNSIGNED_INT_SAMPLER_2D_RECT: GLenum = 0x8DD5;
15146
15147/// Constant value defined from OpenGL 3.1
15148pub const GL_UNSIGNED_INT_SAMPLER_BUFFER: GLenum = 0x8DD8;
15149
15150/// Constant value defined from OpenGL 3.1
15151pub const GL_TEXTURE_BUFFER: GLenum = 0x8C2A;
15152
15153/// Constant value defined from OpenGL 3.1
15154pub const GL_MAX_TEXTURE_BUFFER_SIZE: GLenum = 0x8C2B;
15155
15156/// Constant value defined from OpenGL 3.1
15157pub const GL_TEXTURE_BINDING_BUFFER: GLenum = 0x8C2C;
15158
15159/// Constant value defined from OpenGL 3.1
15160pub const GL_TEXTURE_BUFFER_DATA_STORE_BINDING: GLenum = 0x8C2D;
15161
15162/// Constant value defined from OpenGL 3.1
15163pub const GL_TEXTURE_RECTANGLE: GLenum = 0x84F5;
15164
15165/// Constant value defined from OpenGL 3.1
15166pub const GL_TEXTURE_BINDING_RECTANGLE: GLenum = 0x84F6;
15167
15168/// Constant value defined from OpenGL 3.1
15169pub const GL_PROXY_TEXTURE_RECTANGLE: GLenum = 0x84F7;
15170
15171/// Constant value defined from OpenGL 3.1
15172pub const GL_MAX_RECTANGLE_TEXTURE_SIZE: GLenum = 0x84F8;
15173
15174/// Constant value defined from OpenGL 3.1
15175pub const GL_R8_SNORM: GLenum = 0x8F94;
15176
15177/// Constant value defined from OpenGL 3.1
15178pub const GL_RG8_SNORM: GLenum = 0x8F95;
15179
15180/// Constant value defined from OpenGL 3.1
15181pub const GL_RGB8_SNORM: GLenum = 0x8F96;
15182
15183/// Constant value defined from OpenGL 3.1
15184pub const GL_RGBA8_SNORM: GLenum = 0x8F97;
15185
15186/// Constant value defined from OpenGL 3.1
15187pub const GL_R16_SNORM: GLenum = 0x8F98;
15188
15189/// Constant value defined from OpenGL 3.1
15190pub const GL_RG16_SNORM: GLenum = 0x8F99;
15191
15192/// Constant value defined from OpenGL 3.1
15193pub const GL_RGB16_SNORM: GLenum = 0x8F9A;
15194
15195/// Constant value defined from OpenGL 3.1
15196pub const GL_RGBA16_SNORM: GLenum = 0x8F9B;
15197
15198/// Constant value defined from OpenGL 3.1
15199pub const GL_SIGNED_NORMALIZED: GLenum = 0x8F9C;
15200
15201/// Constant value defined from OpenGL 3.1
15202pub const GL_PRIMITIVE_RESTART: GLenum = 0x8F9D;
15203
15204/// Constant value defined from OpenGL 3.1
15205pub const GL_PRIMITIVE_RESTART_INDEX: GLenum = 0x8F9E;
15206
15207/// Constant value defined from OpenGL 3.1
15208pub const GL_COPY_READ_BUFFER: GLenum = 0x8F36;
15209
15210/// Constant value defined from OpenGL 3.1
15211pub const GL_COPY_WRITE_BUFFER: GLenum = 0x8F37;
15212
15213/// Constant value defined from OpenGL 3.1
15214pub const GL_UNIFORM_BUFFER: GLenum = 0x8A11;
15215
15216/// Constant value defined from OpenGL 3.1
15217pub const GL_UNIFORM_BUFFER_BINDING: GLenum = 0x8A28;
15218
15219/// Constant value defined from OpenGL 3.1
15220pub const GL_UNIFORM_BUFFER_START: GLenum = 0x8A29;
15221
15222/// Constant value defined from OpenGL 3.1
15223pub const GL_UNIFORM_BUFFER_SIZE: GLenum = 0x8A2A;
15224
15225/// Constant value defined from OpenGL 3.1
15226pub const GL_MAX_VERTEX_UNIFORM_BLOCKS: GLenum = 0x8A2B;
15227
15228/// Constant value defined from OpenGL 3.1
15229pub const GL_MAX_GEOMETRY_UNIFORM_BLOCKS: GLenum = 0x8A2C;
15230
15231/// Constant value defined from OpenGL 3.1
15232pub const GL_MAX_FRAGMENT_UNIFORM_BLOCKS: GLenum = 0x8A2D;
15233
15234/// Constant value defined from OpenGL 3.1
15235pub const GL_MAX_COMBINED_UNIFORM_BLOCKS: GLenum = 0x8A2E;
15236
15237/// Constant value defined from OpenGL 3.1
15238pub const GL_MAX_UNIFORM_BUFFER_BINDINGS: GLenum = 0x8A2F;
15239
15240/// Constant value defined from OpenGL 3.1
15241pub const GL_MAX_UNIFORM_BLOCK_SIZE: GLenum = 0x8A30;
15242
15243/// Constant value defined from OpenGL 3.1
15244pub const GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: GLenum = 0x8A31;
15245
15246/// Constant value defined from OpenGL 3.1
15247pub const GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS: GLenum = 0x8A32;
15248
15249/// Constant value defined from OpenGL 3.1
15250pub const GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: GLenum = 0x8A33;
15251
15252/// Constant value defined from OpenGL 3.1
15253pub const GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT: GLenum = 0x8A34;
15254
15255/// Constant value defined from OpenGL 3.1
15256pub const GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH: GLenum = 0x8A35;
15257
15258/// Constant value defined from OpenGL 3.1
15259pub const GL_ACTIVE_UNIFORM_BLOCKS: GLenum = 0x8A36;
15260
15261/// Constant value defined from OpenGL 3.1
15262pub const GL_UNIFORM_TYPE: GLenum = 0x8A37;
15263
15264/// Constant value defined from OpenGL 3.1
15265pub const GL_UNIFORM_SIZE: GLenum = 0x8A38;
15266
15267/// Constant value defined from OpenGL 3.1
15268pub const GL_UNIFORM_NAME_LENGTH: GLenum = 0x8A39;
15269
15270/// Constant value defined from OpenGL 3.1
15271pub const GL_UNIFORM_BLOCK_INDEX: GLenum = 0x8A3A;
15272
15273/// Constant value defined from OpenGL 3.1
15274pub const GL_UNIFORM_OFFSET: GLenum = 0x8A3B;
15275
15276/// Constant value defined from OpenGL 3.1
15277pub const GL_UNIFORM_ARRAY_STRIDE: GLenum = 0x8A3C;
15278
15279/// Constant value defined from OpenGL 3.1
15280pub const GL_UNIFORM_MATRIX_STRIDE: GLenum = 0x8A3D;
15281
15282/// Constant value defined from OpenGL 3.1
15283pub const GL_UNIFORM_IS_ROW_MAJOR: GLenum = 0x8A3E;
15284
15285/// Constant value defined from OpenGL 3.1
15286pub const GL_UNIFORM_BLOCK_BINDING: GLenum = 0x8A3F;
15287
15288/// Constant value defined from OpenGL 3.1
15289pub const GL_UNIFORM_BLOCK_DATA_SIZE: GLenum = 0x8A40;
15290
15291/// Constant value defined from OpenGL 3.1
15292pub const GL_UNIFORM_BLOCK_NAME_LENGTH: GLenum = 0x8A41;
15293
15294/// Constant value defined from OpenGL 3.1
15295pub const GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS: GLenum = 0x8A42;
15296
15297/// Constant value defined from OpenGL 3.1
15298pub const GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: GLenum = 0x8A43;
15299
15300/// Constant value defined from OpenGL 3.1
15301pub const GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: GLenum = 0x8A44;
15302
15303/// Constant value defined from OpenGL 3.1
15304pub const GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER: GLenum = 0x8A45;
15305
15306/// Constant value defined from OpenGL 3.1
15307pub const GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: GLenum = 0x8A46;
15308
15309/// Constant value defined from OpenGL 3.1
15310pub const GL_INVALID_INDEX: GLuint = 0xFFFFFFFFu32;
15311
15312/// Functions from OpenGL version 3.1
15313pub trait GL_3_1 {
15314	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
15315	fn glGetError(&self) -> GLenum;
15316
15317	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawArraysInstanced.xhtml>
15318	fn glDrawArraysInstanced(&self, mode: GLenum, first: GLint, count: GLsizei, instancecount: GLsizei) -> Result<()>;
15319
15320	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsInstanced.xhtml>
15321	fn glDrawElementsInstanced(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei) -> Result<()>;
15322
15323	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexBuffer.xhtml>
15324	fn glTexBuffer(&self, target: GLenum, internalformat: GLenum, buffer: GLuint) -> Result<()>;
15325
15326	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPrimitiveRestartIndex.xhtml>
15327	fn glPrimitiveRestartIndex(&self, index: GLuint) -> Result<()>;
15328
15329	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyBufferSubData.xhtml>
15330	fn glCopyBufferSubData(&self, readTarget: GLenum, writeTarget: GLenum, readOffset: GLintptr, writeOffset: GLintptr, size: GLsizeiptr) -> Result<()>;
15331
15332	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformIndices.xhtml>
15333	fn glGetUniformIndices(&self, program: GLuint, uniformCount: GLsizei, uniformNames: *const *const GLchar, uniformIndices: *mut GLuint) -> Result<()>;
15334
15335	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveUniformsiv.xhtml>
15336	fn glGetActiveUniformsiv(&self, program: GLuint, uniformCount: GLsizei, uniformIndices: *const GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
15337
15338	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveUniformName.xhtml>
15339	fn glGetActiveUniformName(&self, program: GLuint, uniformIndex: GLuint, bufSize: GLsizei, length: *mut GLsizei, uniformName: *mut GLchar) -> Result<()>;
15340
15341	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformBlockIndex.xhtml>
15342	fn glGetUniformBlockIndex(&self, program: GLuint, uniformBlockName: *const GLchar) -> Result<GLuint>;
15343
15344	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveUniformBlockiv.xhtml>
15345	fn glGetActiveUniformBlockiv(&self, program: GLuint, uniformBlockIndex: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
15346
15347	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveUniformBlockName.xhtml>
15348	fn glGetActiveUniformBlockName(&self, program: GLuint, uniformBlockIndex: GLuint, bufSize: GLsizei, length: *mut GLsizei, uniformBlockName: *mut GLchar) -> Result<()>;
15349
15350	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformBlockBinding.xhtml>
15351	fn glUniformBlockBinding(&self, program: GLuint, uniformBlockIndex: GLuint, uniformBlockBinding: GLuint) -> Result<()>;
15352}
15353/// Functions from OpenGL version 3.1
15354#[derive(Clone, Copy, PartialEq, Eq, Hash)]
15355pub struct Version31 {
15356	/// Is OpenGL version 3.1 available
15357	available: bool,
15358
15359	/// The function pointer to `glGetError()`
15360	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
15361	pub geterror: PFNGLGETERRORPROC,
15362
15363	/// The function pointer to `glDrawArraysInstanced()`
15364	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawArraysInstanced.xhtml>
15365	pub drawarraysinstanced: PFNGLDRAWARRAYSINSTANCEDPROC,
15366
15367	/// The function pointer to `glDrawElementsInstanced()`
15368	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsInstanced.xhtml>
15369	pub drawelementsinstanced: PFNGLDRAWELEMENTSINSTANCEDPROC,
15370
15371	/// The function pointer to `glTexBuffer()`
15372	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexBuffer.xhtml>
15373	pub texbuffer: PFNGLTEXBUFFERPROC,
15374
15375	/// The function pointer to `glPrimitiveRestartIndex()`
15376	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPrimitiveRestartIndex.xhtml>
15377	pub primitiverestartindex: PFNGLPRIMITIVERESTARTINDEXPROC,
15378
15379	/// The function pointer to `glCopyBufferSubData()`
15380	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyBufferSubData.xhtml>
15381	pub copybuffersubdata: PFNGLCOPYBUFFERSUBDATAPROC,
15382
15383	/// The function pointer to `glGetUniformIndices()`
15384	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformIndices.xhtml>
15385	pub getuniformindices: PFNGLGETUNIFORMINDICESPROC,
15386
15387	/// The function pointer to `glGetActiveUniformsiv()`
15388	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveUniformsiv.xhtml>
15389	pub getactiveuniformsiv: PFNGLGETACTIVEUNIFORMSIVPROC,
15390
15391	/// The function pointer to `glGetActiveUniformName()`
15392	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveUniformName.xhtml>
15393	pub getactiveuniformname: PFNGLGETACTIVEUNIFORMNAMEPROC,
15394
15395	/// The function pointer to `glGetUniformBlockIndex()`
15396	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformBlockIndex.xhtml>
15397	pub getuniformblockindex: PFNGLGETUNIFORMBLOCKINDEXPROC,
15398
15399	/// The function pointer to `glGetActiveUniformBlockiv()`
15400	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveUniformBlockiv.xhtml>
15401	pub getactiveuniformblockiv: PFNGLGETACTIVEUNIFORMBLOCKIVPROC,
15402
15403	/// The function pointer to `glGetActiveUniformBlockName()`
15404	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveUniformBlockName.xhtml>
15405	pub getactiveuniformblockname: PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC,
15406
15407	/// The function pointer to `glUniformBlockBinding()`
15408	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformBlockBinding.xhtml>
15409	pub uniformblockbinding: PFNGLUNIFORMBLOCKBINDINGPROC,
15410}
15411
15412impl GL_3_1 for Version31 {
15413	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
15414	#[inline(always)]
15415	fn glGetError(&self) -> GLenum {
15416		(self.geterror)()
15417	}
15418	#[inline(always)]
15419	fn glDrawArraysInstanced(&self, mode: GLenum, first: GLint, count: GLsizei, instancecount: GLsizei) -> Result<()> {
15420		#[cfg(feature = "catch_nullptr")]
15421		let ret = process_catch("glDrawArraysInstanced", catch_unwind(||(self.drawarraysinstanced)(mode, first, count, instancecount)));
15422		#[cfg(not(feature = "catch_nullptr"))]
15423		let ret = {(self.drawarraysinstanced)(mode, first, count, instancecount); Ok(())};
15424		#[cfg(feature = "diagnose")]
15425		if let Ok(ret) = ret {
15426			return to_result("glDrawArraysInstanced", ret, self.glGetError());
15427		} else {
15428			return ret
15429		}
15430		#[cfg(not(feature = "diagnose"))]
15431		return ret;
15432	}
15433	#[inline(always)]
15434	fn glDrawElementsInstanced(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei) -> Result<()> {
15435		#[cfg(feature = "catch_nullptr")]
15436		let ret = process_catch("glDrawElementsInstanced", catch_unwind(||(self.drawelementsinstanced)(mode, count, type_, indices, instancecount)));
15437		#[cfg(not(feature = "catch_nullptr"))]
15438		let ret = {(self.drawelementsinstanced)(mode, count, type_, indices, instancecount); Ok(())};
15439		#[cfg(feature = "diagnose")]
15440		if let Ok(ret) = ret {
15441			return to_result("glDrawElementsInstanced", ret, self.glGetError());
15442		} else {
15443			return ret
15444		}
15445		#[cfg(not(feature = "diagnose"))]
15446		return ret;
15447	}
15448	#[inline(always)]
15449	fn glTexBuffer(&self, target: GLenum, internalformat: GLenum, buffer: GLuint) -> Result<()> {
15450		#[cfg(feature = "catch_nullptr")]
15451		let ret = process_catch("glTexBuffer", catch_unwind(||(self.texbuffer)(target, internalformat, buffer)));
15452		#[cfg(not(feature = "catch_nullptr"))]
15453		let ret = {(self.texbuffer)(target, internalformat, buffer); Ok(())};
15454		#[cfg(feature = "diagnose")]
15455		if let Ok(ret) = ret {
15456			return to_result("glTexBuffer", ret, self.glGetError());
15457		} else {
15458			return ret
15459		}
15460		#[cfg(not(feature = "diagnose"))]
15461		return ret;
15462	}
15463	#[inline(always)]
15464	fn glPrimitiveRestartIndex(&self, index: GLuint) -> Result<()> {
15465		#[cfg(feature = "catch_nullptr")]
15466		let ret = process_catch("glPrimitiveRestartIndex", catch_unwind(||(self.primitiverestartindex)(index)));
15467		#[cfg(not(feature = "catch_nullptr"))]
15468		let ret = {(self.primitiverestartindex)(index); Ok(())};
15469		#[cfg(feature = "diagnose")]
15470		if let Ok(ret) = ret {
15471			return to_result("glPrimitiveRestartIndex", ret, self.glGetError());
15472		} else {
15473			return ret
15474		}
15475		#[cfg(not(feature = "diagnose"))]
15476		return ret;
15477	}
15478	#[inline(always)]
15479	fn glCopyBufferSubData(&self, readTarget: GLenum, writeTarget: GLenum, readOffset: GLintptr, writeOffset: GLintptr, size: GLsizeiptr) -> Result<()> {
15480		#[cfg(feature = "catch_nullptr")]
15481		let ret = process_catch("glCopyBufferSubData", catch_unwind(||(self.copybuffersubdata)(readTarget, writeTarget, readOffset, writeOffset, size)));
15482		#[cfg(not(feature = "catch_nullptr"))]
15483		let ret = {(self.copybuffersubdata)(readTarget, writeTarget, readOffset, writeOffset, size); Ok(())};
15484		#[cfg(feature = "diagnose")]
15485		if let Ok(ret) = ret {
15486			return to_result("glCopyBufferSubData", ret, self.glGetError());
15487		} else {
15488			return ret
15489		}
15490		#[cfg(not(feature = "diagnose"))]
15491		return ret;
15492	}
15493	#[inline(always)]
15494	fn glGetUniformIndices(&self, program: GLuint, uniformCount: GLsizei, uniformNames: *const *const GLchar, uniformIndices: *mut GLuint) -> Result<()> {
15495		#[cfg(feature = "catch_nullptr")]
15496		let ret = process_catch("glGetUniformIndices", catch_unwind(||(self.getuniformindices)(program, uniformCount, uniformNames, uniformIndices)));
15497		#[cfg(not(feature = "catch_nullptr"))]
15498		let ret = {(self.getuniformindices)(program, uniformCount, uniformNames, uniformIndices); Ok(())};
15499		#[cfg(feature = "diagnose")]
15500		if let Ok(ret) = ret {
15501			return to_result("glGetUniformIndices", ret, self.glGetError());
15502		} else {
15503			return ret
15504		}
15505		#[cfg(not(feature = "diagnose"))]
15506		return ret;
15507	}
15508	#[inline(always)]
15509	fn glGetActiveUniformsiv(&self, program: GLuint, uniformCount: GLsizei, uniformIndices: *const GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
15510		#[cfg(feature = "catch_nullptr")]
15511		let ret = process_catch("glGetActiveUniformsiv", catch_unwind(||(self.getactiveuniformsiv)(program, uniformCount, uniformIndices, pname, params)));
15512		#[cfg(not(feature = "catch_nullptr"))]
15513		let ret = {(self.getactiveuniformsiv)(program, uniformCount, uniformIndices, pname, params); Ok(())};
15514		#[cfg(feature = "diagnose")]
15515		if let Ok(ret) = ret {
15516			return to_result("glGetActiveUniformsiv", ret, self.glGetError());
15517		} else {
15518			return ret
15519		}
15520		#[cfg(not(feature = "diagnose"))]
15521		return ret;
15522	}
15523	#[inline(always)]
15524	fn glGetActiveUniformName(&self, program: GLuint, uniformIndex: GLuint, bufSize: GLsizei, length: *mut GLsizei, uniformName: *mut GLchar) -> Result<()> {
15525		#[cfg(feature = "catch_nullptr")]
15526		let ret = process_catch("glGetActiveUniformName", catch_unwind(||(self.getactiveuniformname)(program, uniformIndex, bufSize, length, uniformName)));
15527		#[cfg(not(feature = "catch_nullptr"))]
15528		let ret = {(self.getactiveuniformname)(program, uniformIndex, bufSize, length, uniformName); Ok(())};
15529		#[cfg(feature = "diagnose")]
15530		if let Ok(ret) = ret {
15531			return to_result("glGetActiveUniformName", ret, self.glGetError());
15532		} else {
15533			return ret
15534		}
15535		#[cfg(not(feature = "diagnose"))]
15536		return ret;
15537	}
15538	#[inline(always)]
15539	fn glGetUniformBlockIndex(&self, program: GLuint, uniformBlockName: *const GLchar) -> Result<GLuint> {
15540		#[cfg(feature = "catch_nullptr")]
15541		let ret = process_catch("glGetUniformBlockIndex", catch_unwind(||(self.getuniformblockindex)(program, uniformBlockName)));
15542		#[cfg(not(feature = "catch_nullptr"))]
15543		let ret = Ok((self.getuniformblockindex)(program, uniformBlockName));
15544		#[cfg(feature = "diagnose")]
15545		if let Ok(ret) = ret {
15546			return to_result("glGetUniformBlockIndex", ret, self.glGetError());
15547		} else {
15548			return ret
15549		}
15550		#[cfg(not(feature = "diagnose"))]
15551		return ret;
15552	}
15553	#[inline(always)]
15554	fn glGetActiveUniformBlockiv(&self, program: GLuint, uniformBlockIndex: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
15555		#[cfg(feature = "catch_nullptr")]
15556		let ret = process_catch("glGetActiveUniformBlockiv", catch_unwind(||(self.getactiveuniformblockiv)(program, uniformBlockIndex, pname, params)));
15557		#[cfg(not(feature = "catch_nullptr"))]
15558		let ret = {(self.getactiveuniformblockiv)(program, uniformBlockIndex, pname, params); Ok(())};
15559		#[cfg(feature = "diagnose")]
15560		if let Ok(ret) = ret {
15561			return to_result("glGetActiveUniformBlockiv", ret, self.glGetError());
15562		} else {
15563			return ret
15564		}
15565		#[cfg(not(feature = "diagnose"))]
15566		return ret;
15567	}
15568	#[inline(always)]
15569	fn glGetActiveUniformBlockName(&self, program: GLuint, uniformBlockIndex: GLuint, bufSize: GLsizei, length: *mut GLsizei, uniformBlockName: *mut GLchar) -> Result<()> {
15570		#[cfg(feature = "catch_nullptr")]
15571		let ret = process_catch("glGetActiveUniformBlockName", catch_unwind(||(self.getactiveuniformblockname)(program, uniformBlockIndex, bufSize, length, uniformBlockName)));
15572		#[cfg(not(feature = "catch_nullptr"))]
15573		let ret = {(self.getactiveuniformblockname)(program, uniformBlockIndex, bufSize, length, uniformBlockName); Ok(())};
15574		#[cfg(feature = "diagnose")]
15575		if let Ok(ret) = ret {
15576			return to_result("glGetActiveUniformBlockName", ret, self.glGetError());
15577		} else {
15578			return ret
15579		}
15580		#[cfg(not(feature = "diagnose"))]
15581		return ret;
15582	}
15583	#[inline(always)]
15584	fn glUniformBlockBinding(&self, program: GLuint, uniformBlockIndex: GLuint, uniformBlockBinding: GLuint) -> Result<()> {
15585		#[cfg(feature = "catch_nullptr")]
15586		let ret = process_catch("glUniformBlockBinding", catch_unwind(||(self.uniformblockbinding)(program, uniformBlockIndex, uniformBlockBinding)));
15587		#[cfg(not(feature = "catch_nullptr"))]
15588		let ret = {(self.uniformblockbinding)(program, uniformBlockIndex, uniformBlockBinding); Ok(())};
15589		#[cfg(feature = "diagnose")]
15590		if let Ok(ret) = ret {
15591			return to_result("glUniformBlockBinding", ret, self.glGetError());
15592		} else {
15593			return ret
15594		}
15595		#[cfg(not(feature = "diagnose"))]
15596		return ret;
15597	}
15598}
15599
15600impl Version31 {
15601	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
15602		let (_spec, major, minor, release) = base.get_version();
15603		if (major, minor, release) < (3, 1, 0) {
15604			return Self::default();
15605		}
15606		Self {
15607			available: true,
15608			geterror: {let proc = get_proc_address("glGetError"); if proc.is_null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
15609			drawarraysinstanced: {let proc = get_proc_address("glDrawArraysInstanced"); if proc.is_null() {dummy_pfngldrawarraysinstancedproc} else {unsafe{transmute(proc)}}},
15610			drawelementsinstanced: {let proc = get_proc_address("glDrawElementsInstanced"); if proc.is_null() {dummy_pfngldrawelementsinstancedproc} else {unsafe{transmute(proc)}}},
15611			texbuffer: {let proc = get_proc_address("glTexBuffer"); if proc.is_null() {dummy_pfngltexbufferproc} else {unsafe{transmute(proc)}}},
15612			primitiverestartindex: {let proc = get_proc_address("glPrimitiveRestartIndex"); if proc.is_null() {dummy_pfnglprimitiverestartindexproc} else {unsafe{transmute(proc)}}},
15613			copybuffersubdata: {let proc = get_proc_address("glCopyBufferSubData"); if proc.is_null() {dummy_pfnglcopybuffersubdataproc} else {unsafe{transmute(proc)}}},
15614			getuniformindices: {let proc = get_proc_address("glGetUniformIndices"); if proc.is_null() {dummy_pfnglgetuniformindicesproc} else {unsafe{transmute(proc)}}},
15615			getactiveuniformsiv: {let proc = get_proc_address("glGetActiveUniformsiv"); if proc.is_null() {dummy_pfnglgetactiveuniformsivproc} else {unsafe{transmute(proc)}}},
15616			getactiveuniformname: {let proc = get_proc_address("glGetActiveUniformName"); if proc.is_null() {dummy_pfnglgetactiveuniformnameproc} else {unsafe{transmute(proc)}}},
15617			getuniformblockindex: {let proc = get_proc_address("glGetUniformBlockIndex"); if proc.is_null() {dummy_pfnglgetuniformblockindexproc} else {unsafe{transmute(proc)}}},
15618			getactiveuniformblockiv: {let proc = get_proc_address("glGetActiveUniformBlockiv"); if proc.is_null() {dummy_pfnglgetactiveuniformblockivproc} else {unsafe{transmute(proc)}}},
15619			getactiveuniformblockname: {let proc = get_proc_address("glGetActiveUniformBlockName"); if proc.is_null() {dummy_pfnglgetactiveuniformblocknameproc} else {unsafe{transmute(proc)}}},
15620			uniformblockbinding: {let proc = get_proc_address("glUniformBlockBinding"); if proc.is_null() {dummy_pfngluniformblockbindingproc} else {unsafe{transmute(proc)}}},
15621		}
15622	}
15623	#[inline(always)]
15624	pub fn get_available(&self) -> bool {
15625		self.available
15626	}
15627}
15628
15629impl Default for Version31 {
15630	fn default() -> Self {
15631		Self {
15632			available: false,
15633			geterror: dummy_pfnglgeterrorproc,
15634			drawarraysinstanced: dummy_pfngldrawarraysinstancedproc,
15635			drawelementsinstanced: dummy_pfngldrawelementsinstancedproc,
15636			texbuffer: dummy_pfngltexbufferproc,
15637			primitiverestartindex: dummy_pfnglprimitiverestartindexproc,
15638			copybuffersubdata: dummy_pfnglcopybuffersubdataproc,
15639			getuniformindices: dummy_pfnglgetuniformindicesproc,
15640			getactiveuniformsiv: dummy_pfnglgetactiveuniformsivproc,
15641			getactiveuniformname: dummy_pfnglgetactiveuniformnameproc,
15642			getuniformblockindex: dummy_pfnglgetuniformblockindexproc,
15643			getactiveuniformblockiv: dummy_pfnglgetactiveuniformblockivproc,
15644			getactiveuniformblockname: dummy_pfnglgetactiveuniformblocknameproc,
15645			uniformblockbinding: dummy_pfngluniformblockbindingproc,
15646		}
15647	}
15648}
15649impl Debug for Version31 {
15650	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
15651		if self.available {
15652			f.debug_struct("Version31")
15653			.field("available", &self.available)
15654			.field("drawarraysinstanced", unsafe{if transmute::<_, *const c_void>(self.drawarraysinstanced) == (dummy_pfngldrawarraysinstancedproc as *const c_void) {&null::<PFNGLDRAWARRAYSINSTANCEDPROC>()} else {&self.drawarraysinstanced}})
15655			.field("drawelementsinstanced", unsafe{if transmute::<_, *const c_void>(self.drawelementsinstanced) == (dummy_pfngldrawelementsinstancedproc as *const c_void) {&null::<PFNGLDRAWELEMENTSINSTANCEDPROC>()} else {&self.drawelementsinstanced}})
15656			.field("texbuffer", unsafe{if transmute::<_, *const c_void>(self.texbuffer) == (dummy_pfngltexbufferproc as *const c_void) {&null::<PFNGLTEXBUFFERPROC>()} else {&self.texbuffer}})
15657			.field("primitiverestartindex", unsafe{if transmute::<_, *const c_void>(self.primitiverestartindex) == (dummy_pfnglprimitiverestartindexproc as *const c_void) {&null::<PFNGLPRIMITIVERESTARTINDEXPROC>()} else {&self.primitiverestartindex}})
15658			.field("copybuffersubdata", unsafe{if transmute::<_, *const c_void>(self.copybuffersubdata) == (dummy_pfnglcopybuffersubdataproc as *const c_void) {&null::<PFNGLCOPYBUFFERSUBDATAPROC>()} else {&self.copybuffersubdata}})
15659			.field("getuniformindices", unsafe{if transmute::<_, *const c_void>(self.getuniformindices) == (dummy_pfnglgetuniformindicesproc as *const c_void) {&null::<PFNGLGETUNIFORMINDICESPROC>()} else {&self.getuniformindices}})
15660			.field("getactiveuniformsiv", unsafe{if transmute::<_, *const c_void>(self.getactiveuniformsiv) == (dummy_pfnglgetactiveuniformsivproc as *const c_void) {&null::<PFNGLGETACTIVEUNIFORMSIVPROC>()} else {&self.getactiveuniformsiv}})
15661			.field("getactiveuniformname", unsafe{if transmute::<_, *const c_void>(self.getactiveuniformname) == (dummy_pfnglgetactiveuniformnameproc as *const c_void) {&null::<PFNGLGETACTIVEUNIFORMNAMEPROC>()} else {&self.getactiveuniformname}})
15662			.field("getuniformblockindex", unsafe{if transmute::<_, *const c_void>(self.getuniformblockindex) == (dummy_pfnglgetuniformblockindexproc as *const c_void) {&null::<PFNGLGETUNIFORMBLOCKINDEXPROC>()} else {&self.getuniformblockindex}})
15663			.field("getactiveuniformblockiv", unsafe{if transmute::<_, *const c_void>(self.getactiveuniformblockiv) == (dummy_pfnglgetactiveuniformblockivproc as *const c_void) {&null::<PFNGLGETACTIVEUNIFORMBLOCKIVPROC>()} else {&self.getactiveuniformblockiv}})
15664			.field("getactiveuniformblockname", unsafe{if transmute::<_, *const c_void>(self.getactiveuniformblockname) == (dummy_pfnglgetactiveuniformblocknameproc as *const c_void) {&null::<PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC>()} else {&self.getactiveuniformblockname}})
15665			.field("uniformblockbinding", unsafe{if transmute::<_, *const c_void>(self.uniformblockbinding) == (dummy_pfngluniformblockbindingproc as *const c_void) {&null::<PFNGLUNIFORMBLOCKBINDINGPROC>()} else {&self.uniformblockbinding}})
15666			.finish()
15667		} else {
15668			f.debug_struct("Version31")
15669			.field("available", &self.available)
15670			.finish_non_exhaustive()
15671		}
15672	}
15673}
15674
15675/// Alias to `*mut c_void`
15676pub type GLsync = *mut c_void;
15677
15678/// Alias to `khronos_uint64_t`
15679pub type GLuint64 = khronos_uint64_t;
15680
15681/// Alias to `khronos_int64_t`
15682pub type GLint64 = khronos_int64_t;
15683
15684/// The prototype to the OpenGL function `DrawElementsBaseVertex`
15685type PFNGLDRAWELEMENTSBASEVERTEXPROC = extern "system" fn(GLenum, GLsizei, GLenum, *const c_void, GLint);
15686
15687/// The prototype to the OpenGL function `DrawRangeElementsBaseVertex`
15688type PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC = extern "system" fn(GLenum, GLuint, GLuint, GLsizei, GLenum, *const c_void, GLint);
15689
15690/// The prototype to the OpenGL function `DrawElementsInstancedBaseVertex`
15691type PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC = extern "system" fn(GLenum, GLsizei, GLenum, *const c_void, GLsizei, GLint);
15692
15693/// The prototype to the OpenGL function `MultiDrawElementsBaseVertex`
15694type PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC = extern "system" fn(GLenum, *const GLsizei, GLenum, *const *const c_void, GLsizei, *const GLint);
15695
15696/// The prototype to the OpenGL function `ProvokingVertex`
15697type PFNGLPROVOKINGVERTEXPROC = extern "system" fn(GLenum);
15698
15699/// The prototype to the OpenGL function `FenceSync`
15700type PFNGLFENCESYNCPROC = extern "system" fn(GLenum, GLbitfield) -> GLsync;
15701
15702/// The prototype to the OpenGL function `IsSync`
15703type PFNGLISSYNCPROC = extern "system" fn(GLsync) -> GLboolean;
15704
15705/// The prototype to the OpenGL function `DeleteSync`
15706type PFNGLDELETESYNCPROC = extern "system" fn(GLsync);
15707
15708/// The prototype to the OpenGL function `ClientWaitSync`
15709type PFNGLCLIENTWAITSYNCPROC = extern "system" fn(GLsync, GLbitfield, GLuint64) -> GLenum;
15710
15711/// The prototype to the OpenGL function `WaitSync`
15712type PFNGLWAITSYNCPROC = extern "system" fn(GLsync, GLbitfield, GLuint64);
15713
15714/// The prototype to the OpenGL function `GetInteger64v`
15715type PFNGLGETINTEGER64VPROC = extern "system" fn(GLenum, *mut GLint64);
15716
15717/// The prototype to the OpenGL function `GetSynciv`
15718type PFNGLGETSYNCIVPROC = extern "system" fn(GLsync, GLenum, GLsizei, *mut GLsizei, *mut GLint);
15719
15720/// The prototype to the OpenGL function `GetInteger64i_v`
15721type PFNGLGETINTEGER64I_VPROC = extern "system" fn(GLenum, GLuint, *mut GLint64);
15722
15723/// The prototype to the OpenGL function `GetBufferParameteri64v`
15724type PFNGLGETBUFFERPARAMETERI64VPROC = extern "system" fn(GLenum, GLenum, *mut GLint64);
15725
15726/// The prototype to the OpenGL function `FramebufferTexture`
15727type PFNGLFRAMEBUFFERTEXTUREPROC = extern "system" fn(GLenum, GLenum, GLuint, GLint);
15728
15729/// The prototype to the OpenGL function `TexImage2DMultisample`
15730type PFNGLTEXIMAGE2DMULTISAMPLEPROC = extern "system" fn(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLboolean);
15731
15732/// The prototype to the OpenGL function `TexImage3DMultisample`
15733type PFNGLTEXIMAGE3DMULTISAMPLEPROC = extern "system" fn(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean);
15734
15735/// The prototype to the OpenGL function `GetMultisamplefv`
15736type PFNGLGETMULTISAMPLEFVPROC = extern "system" fn(GLenum, GLuint, *mut GLfloat);
15737
15738/// The prototype to the OpenGL function `SampleMaski`
15739type PFNGLSAMPLEMASKIPROC = extern "system" fn(GLuint, GLbitfield);
15740
15741/// The dummy function of `DrawElementsBaseVertex()`
15742extern "system" fn dummy_pfngldrawelementsbasevertexproc (_: GLenum, _: GLsizei, _: GLenum, _: *const c_void, _: GLint) {
15743	panic!("OpenGL function pointer `glDrawElementsBaseVertex()` is null.")
15744}
15745
15746/// The dummy function of `DrawRangeElementsBaseVertex()`
15747extern "system" fn dummy_pfngldrawrangeelementsbasevertexproc (_: GLenum, _: GLuint, _: GLuint, _: GLsizei, _: GLenum, _: *const c_void, _: GLint) {
15748	panic!("OpenGL function pointer `glDrawRangeElementsBaseVertex()` is null.")
15749}
15750
15751/// The dummy function of `DrawElementsInstancedBaseVertex()`
15752extern "system" fn dummy_pfngldrawelementsinstancedbasevertexproc (_: GLenum, _: GLsizei, _: GLenum, _: *const c_void, _: GLsizei, _: GLint) {
15753	panic!("OpenGL function pointer `glDrawElementsInstancedBaseVertex()` is null.")
15754}
15755
15756/// The dummy function of `MultiDrawElementsBaseVertex()`
15757extern "system" fn dummy_pfnglmultidrawelementsbasevertexproc (_: GLenum, _: *const GLsizei, _: GLenum, _: *const *const c_void, _: GLsizei, _: *const GLint) {
15758	panic!("OpenGL function pointer `glMultiDrawElementsBaseVertex()` is null.")
15759}
15760
15761/// The dummy function of `ProvokingVertex()`
15762extern "system" fn dummy_pfnglprovokingvertexproc (_: GLenum) {
15763	panic!("OpenGL function pointer `glProvokingVertex()` is null.")
15764}
15765
15766/// The dummy function of `FenceSync()`
15767extern "system" fn dummy_pfnglfencesyncproc (_: GLenum, _: GLbitfield) -> GLsync {
15768	panic!("OpenGL function pointer `glFenceSync()` is null.")
15769}
15770
15771/// The dummy function of `IsSync()`
15772extern "system" fn dummy_pfnglissyncproc (_: GLsync) -> GLboolean {
15773	panic!("OpenGL function pointer `glIsSync()` is null.")
15774}
15775
15776/// The dummy function of `DeleteSync()`
15777extern "system" fn dummy_pfngldeletesyncproc (_: GLsync) {
15778	panic!("OpenGL function pointer `glDeleteSync()` is null.")
15779}
15780
15781/// The dummy function of `ClientWaitSync()`
15782extern "system" fn dummy_pfnglclientwaitsyncproc (_: GLsync, _: GLbitfield, _: GLuint64) -> GLenum {
15783	panic!("OpenGL function pointer `glClientWaitSync()` is null.")
15784}
15785
15786/// The dummy function of `WaitSync()`
15787extern "system" fn dummy_pfnglwaitsyncproc (_: GLsync, _: GLbitfield, _: GLuint64) {
15788	panic!("OpenGL function pointer `glWaitSync()` is null.")
15789}
15790
15791/// The dummy function of `GetInteger64v()`
15792extern "system" fn dummy_pfnglgetinteger64vproc (_: GLenum, _: *mut GLint64) {
15793	panic!("OpenGL function pointer `glGetInteger64v()` is null.")
15794}
15795
15796/// The dummy function of `GetSynciv()`
15797extern "system" fn dummy_pfnglgetsyncivproc (_: GLsync, _: GLenum, _: GLsizei, _: *mut GLsizei, _: *mut GLint) {
15798	panic!("OpenGL function pointer `glGetSynciv()` is null.")
15799}
15800
15801/// The dummy function of `GetInteger64i_v()`
15802extern "system" fn dummy_pfnglgetinteger64i_vproc (_: GLenum, _: GLuint, _: *mut GLint64) {
15803	panic!("OpenGL function pointer `glGetInteger64i_v()` is null.")
15804}
15805
15806/// The dummy function of `GetBufferParameteri64v()`
15807extern "system" fn dummy_pfnglgetbufferparameteri64vproc (_: GLenum, _: GLenum, _: *mut GLint64) {
15808	panic!("OpenGL function pointer `glGetBufferParameteri64v()` is null.")
15809}
15810
15811/// The dummy function of `FramebufferTexture()`
15812extern "system" fn dummy_pfnglframebuffertextureproc (_: GLenum, _: GLenum, _: GLuint, _: GLint) {
15813	panic!("OpenGL function pointer `glFramebufferTexture()` is null.")
15814}
15815
15816/// The dummy function of `TexImage2DMultisample()`
15817extern "system" fn dummy_pfnglteximage2dmultisampleproc (_: GLenum, _: GLsizei, _: GLenum, _: GLsizei, _: GLsizei, _: GLboolean) {
15818	panic!("OpenGL function pointer `glTexImage2DMultisample()` is null.")
15819}
15820
15821/// The dummy function of `TexImage3DMultisample()`
15822extern "system" fn dummy_pfnglteximage3dmultisampleproc (_: GLenum, _: GLsizei, _: GLenum, _: GLsizei, _: GLsizei, _: GLsizei, _: GLboolean) {
15823	panic!("OpenGL function pointer `glTexImage3DMultisample()` is null.")
15824}
15825
15826/// The dummy function of `GetMultisamplefv()`
15827extern "system" fn dummy_pfnglgetmultisamplefvproc (_: GLenum, _: GLuint, _: *mut GLfloat) {
15828	panic!("OpenGL function pointer `glGetMultisamplefv()` is null.")
15829}
15830
15831/// The dummy function of `SampleMaski()`
15832extern "system" fn dummy_pfnglsamplemaskiproc (_: GLuint, _: GLbitfield) {
15833	panic!("OpenGL function pointer `glSampleMaski()` is null.")
15834}
15835/// Constant value defined from OpenGL 3.2
15836pub const GL_CONTEXT_CORE_PROFILE_BIT: GLbitfield = 0x00000001;
15837
15838/// Constant value defined from OpenGL 3.2
15839pub const GL_CONTEXT_COMPATIBILITY_PROFILE_BIT: GLbitfield = 0x00000002;
15840
15841/// Constant value defined from OpenGL 3.2
15842pub const GL_LINES_ADJACENCY: GLenum = 0x000A;
15843
15844/// Constant value defined from OpenGL 3.2
15845pub const GL_LINE_STRIP_ADJACENCY: GLenum = 0x000B;
15846
15847/// Constant value defined from OpenGL 3.2
15848pub const GL_TRIANGLES_ADJACENCY: GLenum = 0x000C;
15849
15850/// Constant value defined from OpenGL 3.2
15851pub const GL_TRIANGLE_STRIP_ADJACENCY: GLenum = 0x000D;
15852
15853/// Constant value defined from OpenGL 3.2
15854pub const GL_PROGRAM_POINT_SIZE: GLenum = 0x8642;
15855
15856/// Constant value defined from OpenGL 3.2
15857pub const GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS: GLenum = 0x8C29;
15858
15859/// Constant value defined from OpenGL 3.2
15860pub const GL_FRAMEBUFFER_ATTACHMENT_LAYERED: GLenum = 0x8DA7;
15861
15862/// Constant value defined from OpenGL 3.2
15863pub const GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS: GLenum = 0x8DA8;
15864
15865/// Constant value defined from OpenGL 3.2
15866pub const GL_GEOMETRY_SHADER: GLenum = 0x8DD9;
15867
15868/// Constant value defined from OpenGL 3.2
15869pub const GL_GEOMETRY_VERTICES_OUT: GLenum = 0x8916;
15870
15871/// Constant value defined from OpenGL 3.2
15872pub const GL_GEOMETRY_INPUT_TYPE: GLenum = 0x8917;
15873
15874/// Constant value defined from OpenGL 3.2
15875pub const GL_GEOMETRY_OUTPUT_TYPE: GLenum = 0x8918;
15876
15877/// Constant value defined from OpenGL 3.2
15878pub const GL_MAX_GEOMETRY_UNIFORM_COMPONENTS: GLenum = 0x8DDF;
15879
15880/// Constant value defined from OpenGL 3.2
15881pub const GL_MAX_GEOMETRY_OUTPUT_VERTICES: GLenum = 0x8DE0;
15882
15883/// Constant value defined from OpenGL 3.2
15884pub const GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS: GLenum = 0x8DE1;
15885
15886/// Constant value defined from OpenGL 3.2
15887pub const GL_MAX_VERTEX_OUTPUT_COMPONENTS: GLenum = 0x9122;
15888
15889/// Constant value defined from OpenGL 3.2
15890pub const GL_MAX_GEOMETRY_INPUT_COMPONENTS: GLenum = 0x9123;
15891
15892/// Constant value defined from OpenGL 3.2
15893pub const GL_MAX_GEOMETRY_OUTPUT_COMPONENTS: GLenum = 0x9124;
15894
15895/// Constant value defined from OpenGL 3.2
15896pub const GL_MAX_FRAGMENT_INPUT_COMPONENTS: GLenum = 0x9125;
15897
15898/// Constant value defined from OpenGL 3.2
15899pub const GL_CONTEXT_PROFILE_MASK: GLenum = 0x9126;
15900
15901/// Constant value defined from OpenGL 3.2
15902pub const GL_DEPTH_CLAMP: GLenum = 0x864F;
15903
15904/// Constant value defined from OpenGL 3.2
15905pub const GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION: GLenum = 0x8E4C;
15906
15907/// Constant value defined from OpenGL 3.2
15908pub const GL_FIRST_VERTEX_CONVENTION: GLenum = 0x8E4D;
15909
15910/// Constant value defined from OpenGL 3.2
15911pub const GL_LAST_VERTEX_CONVENTION: GLenum = 0x8E4E;
15912
15913/// Constant value defined from OpenGL 3.2
15914pub const GL_PROVOKING_VERTEX: GLenum = 0x8E4F;
15915
15916/// Constant value defined from OpenGL 3.2
15917pub const GL_TEXTURE_CUBE_MAP_SEAMLESS: GLenum = 0x884F;
15918
15919/// Constant value defined from OpenGL 3.2
15920pub const GL_MAX_SERVER_WAIT_TIMEOUT: GLenum = 0x9111;
15921
15922/// Constant value defined from OpenGL 3.2
15923pub const GL_OBJECT_TYPE: GLenum = 0x9112;
15924
15925/// Constant value defined from OpenGL 3.2
15926pub const GL_SYNC_CONDITION: GLenum = 0x9113;
15927
15928/// Constant value defined from OpenGL 3.2
15929pub const GL_SYNC_STATUS: GLenum = 0x9114;
15930
15931/// Constant value defined from OpenGL 3.2
15932pub const GL_SYNC_FLAGS: GLenum = 0x9115;
15933
15934/// Constant value defined from OpenGL 3.2
15935pub const GL_SYNC_FENCE: GLenum = 0x9116;
15936
15937/// Constant value defined from OpenGL 3.2
15938pub const GL_SYNC_GPU_COMMANDS_COMPLETE: GLenum = 0x9117;
15939
15940/// Constant value defined from OpenGL 3.2
15941pub const GL_UNSIGNALED: GLenum = 0x9118;
15942
15943/// Constant value defined from OpenGL 3.2
15944pub const GL_SIGNALED: GLenum = 0x9119;
15945
15946/// Constant value defined from OpenGL 3.2
15947pub const GL_ALREADY_SIGNALED: GLenum = 0x911A;
15948
15949/// Constant value defined from OpenGL 3.2
15950pub const GL_TIMEOUT_EXPIRED: GLenum = 0x911B;
15951
15952/// Constant value defined from OpenGL 3.2
15953pub const GL_CONDITION_SATISFIED: GLenum = 0x911C;
15954
15955/// Constant value defined from OpenGL 3.2
15956pub const GL_WAIT_FAILED: GLenum = 0x911D;
15957
15958/// Constant value defined from OpenGL 3.2
15959pub const GL_TIMEOUT_IGNORED: GLuint64 = 0xFFFFFFFFFFFFFFFFu64;
15960
15961/// Constant value defined from OpenGL 3.2
15962pub const GL_SYNC_FLUSH_COMMANDS_BIT: GLbitfield = 0x00000001;
15963
15964/// Constant value defined from OpenGL 3.2
15965pub const GL_SAMPLE_POSITION: GLenum = 0x8E50;
15966
15967/// Constant value defined from OpenGL 3.2
15968pub const GL_SAMPLE_MASK: GLenum = 0x8E51;
15969
15970/// Constant value defined from OpenGL 3.2
15971pub const GL_SAMPLE_MASK_VALUE: GLenum = 0x8E52;
15972
15973/// Constant value defined from OpenGL 3.2
15974pub const GL_MAX_SAMPLE_MASK_WORDS: GLenum = 0x8E59;
15975
15976/// Constant value defined from OpenGL 3.2
15977pub const GL_TEXTURE_2D_MULTISAMPLE: GLenum = 0x9100;
15978
15979/// Constant value defined from OpenGL 3.2
15980pub const GL_PROXY_TEXTURE_2D_MULTISAMPLE: GLenum = 0x9101;
15981
15982/// Constant value defined from OpenGL 3.2
15983pub const GL_TEXTURE_2D_MULTISAMPLE_ARRAY: GLenum = 0x9102;
15984
15985/// Constant value defined from OpenGL 3.2
15986pub const GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY: GLenum = 0x9103;
15987
15988/// Constant value defined from OpenGL 3.2
15989pub const GL_TEXTURE_BINDING_2D_MULTISAMPLE: GLenum = 0x9104;
15990
15991/// Constant value defined from OpenGL 3.2
15992pub const GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY: GLenum = 0x9105;
15993
15994/// Constant value defined from OpenGL 3.2
15995pub const GL_TEXTURE_SAMPLES: GLenum = 0x9106;
15996
15997/// Constant value defined from OpenGL 3.2
15998pub const GL_TEXTURE_FIXED_SAMPLE_LOCATIONS: GLenum = 0x9107;
15999
16000/// Constant value defined from OpenGL 3.2
16001pub const GL_SAMPLER_2D_MULTISAMPLE: GLenum = 0x9108;
16002
16003/// Constant value defined from OpenGL 3.2
16004pub const GL_INT_SAMPLER_2D_MULTISAMPLE: GLenum = 0x9109;
16005
16006/// Constant value defined from OpenGL 3.2
16007pub const GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE: GLenum = 0x910A;
16008
16009/// Constant value defined from OpenGL 3.2
16010pub const GL_SAMPLER_2D_MULTISAMPLE_ARRAY: GLenum = 0x910B;
16011
16012/// Constant value defined from OpenGL 3.2
16013pub const GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY: GLenum = 0x910C;
16014
16015/// Constant value defined from OpenGL 3.2
16016pub const GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY: GLenum = 0x910D;
16017
16018/// Constant value defined from OpenGL 3.2
16019pub const GL_MAX_COLOR_TEXTURE_SAMPLES: GLenum = 0x910E;
16020
16021/// Constant value defined from OpenGL 3.2
16022pub const GL_MAX_DEPTH_TEXTURE_SAMPLES: GLenum = 0x910F;
16023
16024/// Constant value defined from OpenGL 3.2
16025pub const GL_MAX_INTEGER_SAMPLES: GLenum = 0x9110;
16026
16027/// Functions from OpenGL version 3.2
16028pub trait GL_3_2 {
16029	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
16030	fn glGetError(&self) -> GLenum;
16031
16032	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsBaseVertex.xhtml>
16033	fn glDrawElementsBaseVertex(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, basevertex: GLint) -> Result<()>;
16034
16035	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawRangeElementsBaseVertex.xhtml>
16036	fn glDrawRangeElementsBaseVertex(&self, mode: GLenum, start: GLuint, end: GLuint, count: GLsizei, type_: GLenum, indices: *const c_void, basevertex: GLint) -> Result<()>;
16037
16038	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsInstancedBaseVertex.xhtml>
16039	fn glDrawElementsInstancedBaseVertex(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei, basevertex: GLint) -> Result<()>;
16040
16041	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawElementsBaseVertex.xhtml>
16042	fn glMultiDrawElementsBaseVertex(&self, mode: GLenum, count: *const GLsizei, type_: GLenum, indices: *const *const c_void, drawcount: GLsizei, basevertex: *const GLint) -> Result<()>;
16043
16044	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProvokingVertex.xhtml>
16045	fn glProvokingVertex(&self, mode: GLenum) -> Result<()>;
16046
16047	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFenceSync.xhtml>
16048	fn glFenceSync(&self, condition: GLenum, flags: GLbitfield) -> Result<GLsync>;
16049
16050	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsSync.xhtml>
16051	fn glIsSync(&self, sync: GLsync) -> Result<GLboolean>;
16052
16053	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteSync.xhtml>
16054	fn glDeleteSync(&self, sync: GLsync) -> Result<()>;
16055
16056	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClientWaitSync.xhtml>
16057	fn glClientWaitSync(&self, sync: GLsync, flags: GLbitfield, timeout: GLuint64) -> Result<GLenum>;
16058
16059	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWaitSync.xhtml>
16060	fn glWaitSync(&self, sync: GLsync, flags: GLbitfield, timeout: GLuint64) -> Result<()>;
16061
16062	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetInteger64v.xhtml>
16063	fn glGetInteger64v(&self, pname: GLenum, data: *mut GLint64) -> Result<()>;
16064
16065	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSynciv.xhtml>
16066	fn glGetSynciv(&self, sync: GLsync, pname: GLenum, count: GLsizei, length: *mut GLsizei, values: *mut GLint) -> Result<()>;
16067
16068	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetInteger64i_v.xhtml>
16069	fn glGetInteger64i_v(&self, target: GLenum, index: GLuint, data: *mut GLint64) -> Result<()>;
16070
16071	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBufferParameteri64v.xhtml>
16072	fn glGetBufferParameteri64v(&self, target: GLenum, pname: GLenum, params: *mut GLint64) -> Result<()>;
16073
16074	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferTexture.xhtml>
16075	fn glFramebufferTexture(&self, target: GLenum, attachment: GLenum, texture: GLuint, level: GLint) -> Result<()>;
16076
16077	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexImage2DMultisample.xhtml>
16078	fn glTexImage2DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, fixedsamplelocations: GLboolean) -> Result<()>;
16079
16080	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexImage3DMultisample.xhtml>
16081	fn glTexImage3DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, fixedsamplelocations: GLboolean) -> Result<()>;
16082
16083	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetMultisamplefv.xhtml>
16084	fn glGetMultisamplefv(&self, pname: GLenum, index: GLuint, val: *mut GLfloat) -> Result<()>;
16085
16086	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSampleMaski.xhtml>
16087	fn glSampleMaski(&self, maskNumber: GLuint, mask: GLbitfield) -> Result<()>;
16088}
16089/// Functions from OpenGL version 3.2
16090#[derive(Clone, Copy, PartialEq, Eq, Hash)]
16091pub struct Version32 {
16092	/// Is OpenGL version 3.2 available
16093	available: bool,
16094
16095	/// The function pointer to `glGetError()`
16096	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
16097	pub geterror: PFNGLGETERRORPROC,
16098
16099	/// The function pointer to `glDrawElementsBaseVertex()`
16100	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsBaseVertex.xhtml>
16101	pub drawelementsbasevertex: PFNGLDRAWELEMENTSBASEVERTEXPROC,
16102
16103	/// The function pointer to `glDrawRangeElementsBaseVertex()`
16104	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawRangeElementsBaseVertex.xhtml>
16105	pub drawrangeelementsbasevertex: PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC,
16106
16107	/// The function pointer to `glDrawElementsInstancedBaseVertex()`
16108	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsInstancedBaseVertex.xhtml>
16109	pub drawelementsinstancedbasevertex: PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC,
16110
16111	/// The function pointer to `glMultiDrawElementsBaseVertex()`
16112	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawElementsBaseVertex.xhtml>
16113	pub multidrawelementsbasevertex: PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC,
16114
16115	/// The function pointer to `glProvokingVertex()`
16116	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProvokingVertex.xhtml>
16117	pub provokingvertex: PFNGLPROVOKINGVERTEXPROC,
16118
16119	/// The function pointer to `glFenceSync()`
16120	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFenceSync.xhtml>
16121	pub fencesync: PFNGLFENCESYNCPROC,
16122
16123	/// The function pointer to `glIsSync()`
16124	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsSync.xhtml>
16125	pub issync: PFNGLISSYNCPROC,
16126
16127	/// The function pointer to `glDeleteSync()`
16128	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteSync.xhtml>
16129	pub deletesync: PFNGLDELETESYNCPROC,
16130
16131	/// The function pointer to `glClientWaitSync()`
16132	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClientWaitSync.xhtml>
16133	pub clientwaitsync: PFNGLCLIENTWAITSYNCPROC,
16134
16135	/// The function pointer to `glWaitSync()`
16136	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWaitSync.xhtml>
16137	pub waitsync: PFNGLWAITSYNCPROC,
16138
16139	/// The function pointer to `glGetInteger64v()`
16140	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetInteger64v.xhtml>
16141	pub getinteger64v: PFNGLGETINTEGER64VPROC,
16142
16143	/// The function pointer to `glGetSynciv()`
16144	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSynciv.xhtml>
16145	pub getsynciv: PFNGLGETSYNCIVPROC,
16146
16147	/// The function pointer to `glGetInteger64i_v()`
16148	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetInteger64i_v.xhtml>
16149	pub getinteger64i_v: PFNGLGETINTEGER64I_VPROC,
16150
16151	/// The function pointer to `glGetBufferParameteri64v()`
16152	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBufferParameteri64v.xhtml>
16153	pub getbufferparameteri64v: PFNGLGETBUFFERPARAMETERI64VPROC,
16154
16155	/// The function pointer to `glFramebufferTexture()`
16156	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferTexture.xhtml>
16157	pub framebuffertexture: PFNGLFRAMEBUFFERTEXTUREPROC,
16158
16159	/// The function pointer to `glTexImage2DMultisample()`
16160	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexImage2DMultisample.xhtml>
16161	pub teximage2dmultisample: PFNGLTEXIMAGE2DMULTISAMPLEPROC,
16162
16163	/// The function pointer to `glTexImage3DMultisample()`
16164	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexImage3DMultisample.xhtml>
16165	pub teximage3dmultisample: PFNGLTEXIMAGE3DMULTISAMPLEPROC,
16166
16167	/// The function pointer to `glGetMultisamplefv()`
16168	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetMultisamplefv.xhtml>
16169	pub getmultisamplefv: PFNGLGETMULTISAMPLEFVPROC,
16170
16171	/// The function pointer to `glSampleMaski()`
16172	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSampleMaski.xhtml>
16173	pub samplemaski: PFNGLSAMPLEMASKIPROC,
16174}
16175
16176impl GL_3_2 for Version32 {
16177	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
16178	#[inline(always)]
16179	fn glGetError(&self) -> GLenum {
16180		(self.geterror)()
16181	}
16182	#[inline(always)]
16183	fn glDrawElementsBaseVertex(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, basevertex: GLint) -> Result<()> {
16184		#[cfg(feature = "catch_nullptr")]
16185		let ret = process_catch("glDrawElementsBaseVertex", catch_unwind(||(self.drawelementsbasevertex)(mode, count, type_, indices, basevertex)));
16186		#[cfg(not(feature = "catch_nullptr"))]
16187		let ret = {(self.drawelementsbasevertex)(mode, count, type_, indices, basevertex); Ok(())};
16188		#[cfg(feature = "diagnose")]
16189		if let Ok(ret) = ret {
16190			return to_result("glDrawElementsBaseVertex", ret, self.glGetError());
16191		} else {
16192			return ret
16193		}
16194		#[cfg(not(feature = "diagnose"))]
16195		return ret;
16196	}
16197	#[inline(always)]
16198	fn glDrawRangeElementsBaseVertex(&self, mode: GLenum, start: GLuint, end: GLuint, count: GLsizei, type_: GLenum, indices: *const c_void, basevertex: GLint) -> Result<()> {
16199		#[cfg(feature = "catch_nullptr")]
16200		let ret = process_catch("glDrawRangeElementsBaseVertex", catch_unwind(||(self.drawrangeelementsbasevertex)(mode, start, end, count, type_, indices, basevertex)));
16201		#[cfg(not(feature = "catch_nullptr"))]
16202		let ret = {(self.drawrangeelementsbasevertex)(mode, start, end, count, type_, indices, basevertex); Ok(())};
16203		#[cfg(feature = "diagnose")]
16204		if let Ok(ret) = ret {
16205			return to_result("glDrawRangeElementsBaseVertex", ret, self.glGetError());
16206		} else {
16207			return ret
16208		}
16209		#[cfg(not(feature = "diagnose"))]
16210		return ret;
16211	}
16212	#[inline(always)]
16213	fn glDrawElementsInstancedBaseVertex(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei, basevertex: GLint) -> Result<()> {
16214		#[cfg(feature = "catch_nullptr")]
16215		let ret = process_catch("glDrawElementsInstancedBaseVertex", catch_unwind(||(self.drawelementsinstancedbasevertex)(mode, count, type_, indices, instancecount, basevertex)));
16216		#[cfg(not(feature = "catch_nullptr"))]
16217		let ret = {(self.drawelementsinstancedbasevertex)(mode, count, type_, indices, instancecount, basevertex); Ok(())};
16218		#[cfg(feature = "diagnose")]
16219		if let Ok(ret) = ret {
16220			return to_result("glDrawElementsInstancedBaseVertex", ret, self.glGetError());
16221		} else {
16222			return ret
16223		}
16224		#[cfg(not(feature = "diagnose"))]
16225		return ret;
16226	}
16227	#[inline(always)]
16228	fn glMultiDrawElementsBaseVertex(&self, mode: GLenum, count: *const GLsizei, type_: GLenum, indices: *const *const c_void, drawcount: GLsizei, basevertex: *const GLint) -> Result<()> {
16229		#[cfg(feature = "catch_nullptr")]
16230		let ret = process_catch("glMultiDrawElementsBaseVertex", catch_unwind(||(self.multidrawelementsbasevertex)(mode, count, type_, indices, drawcount, basevertex)));
16231		#[cfg(not(feature = "catch_nullptr"))]
16232		let ret = {(self.multidrawelementsbasevertex)(mode, count, type_, indices, drawcount, basevertex); Ok(())};
16233		#[cfg(feature = "diagnose")]
16234		if let Ok(ret) = ret {
16235			return to_result("glMultiDrawElementsBaseVertex", ret, self.glGetError());
16236		} else {
16237			return ret
16238		}
16239		#[cfg(not(feature = "diagnose"))]
16240		return ret;
16241	}
16242	#[inline(always)]
16243	fn glProvokingVertex(&self, mode: GLenum) -> Result<()> {
16244		#[cfg(feature = "catch_nullptr")]
16245		let ret = process_catch("glProvokingVertex", catch_unwind(||(self.provokingvertex)(mode)));
16246		#[cfg(not(feature = "catch_nullptr"))]
16247		let ret = {(self.provokingvertex)(mode); Ok(())};
16248		#[cfg(feature = "diagnose")]
16249		if let Ok(ret) = ret {
16250			return to_result("glProvokingVertex", ret, self.glGetError());
16251		} else {
16252			return ret
16253		}
16254		#[cfg(not(feature = "diagnose"))]
16255		return ret;
16256	}
16257	#[inline(always)]
16258	fn glFenceSync(&self, condition: GLenum, flags: GLbitfield) -> Result<GLsync> {
16259		#[cfg(feature = "catch_nullptr")]
16260		let ret = process_catch("glFenceSync", catch_unwind(||(self.fencesync)(condition, flags)));
16261		#[cfg(not(feature = "catch_nullptr"))]
16262		let ret = Ok((self.fencesync)(condition, flags));
16263		#[cfg(feature = "diagnose")]
16264		if let Ok(ret) = ret {
16265			return to_result("glFenceSync", ret, self.glGetError());
16266		} else {
16267			return ret
16268		}
16269		#[cfg(not(feature = "diagnose"))]
16270		return ret;
16271	}
16272	#[inline(always)]
16273	fn glIsSync(&self, sync: GLsync) -> Result<GLboolean> {
16274		#[cfg(feature = "catch_nullptr")]
16275		let ret = process_catch("glIsSync", catch_unwind(||(self.issync)(sync)));
16276		#[cfg(not(feature = "catch_nullptr"))]
16277		let ret = Ok((self.issync)(sync));
16278		#[cfg(feature = "diagnose")]
16279		if let Ok(ret) = ret {
16280			return to_result("glIsSync", ret, self.glGetError());
16281		} else {
16282			return ret
16283		}
16284		#[cfg(not(feature = "diagnose"))]
16285		return ret;
16286	}
16287	#[inline(always)]
16288	fn glDeleteSync(&self, sync: GLsync) -> Result<()> {
16289		#[cfg(feature = "catch_nullptr")]
16290		let ret = process_catch("glDeleteSync", catch_unwind(||(self.deletesync)(sync)));
16291		#[cfg(not(feature = "catch_nullptr"))]
16292		let ret = {(self.deletesync)(sync); Ok(())};
16293		#[cfg(feature = "diagnose")]
16294		if let Ok(ret) = ret {
16295			return to_result("glDeleteSync", ret, self.glGetError());
16296		} else {
16297			return ret
16298		}
16299		#[cfg(not(feature = "diagnose"))]
16300		return ret;
16301	}
16302	#[inline(always)]
16303	fn glClientWaitSync(&self, sync: GLsync, flags: GLbitfield, timeout: GLuint64) -> Result<GLenum> {
16304		#[cfg(feature = "catch_nullptr")]
16305		let ret = process_catch("glClientWaitSync", catch_unwind(||(self.clientwaitsync)(sync, flags, timeout)));
16306		#[cfg(not(feature = "catch_nullptr"))]
16307		let ret = Ok((self.clientwaitsync)(sync, flags, timeout));
16308		#[cfg(feature = "diagnose")]
16309		if let Ok(ret) = ret {
16310			return to_result("glClientWaitSync", ret, self.glGetError());
16311		} else {
16312			return ret
16313		}
16314		#[cfg(not(feature = "diagnose"))]
16315		return ret;
16316	}
16317	#[inline(always)]
16318	fn glWaitSync(&self, sync: GLsync, flags: GLbitfield, timeout: GLuint64) -> Result<()> {
16319		#[cfg(feature = "catch_nullptr")]
16320		let ret = process_catch("glWaitSync", catch_unwind(||(self.waitsync)(sync, flags, timeout)));
16321		#[cfg(not(feature = "catch_nullptr"))]
16322		let ret = {(self.waitsync)(sync, flags, timeout); Ok(())};
16323		#[cfg(feature = "diagnose")]
16324		if let Ok(ret) = ret {
16325			return to_result("glWaitSync", ret, self.glGetError());
16326		} else {
16327			return ret
16328		}
16329		#[cfg(not(feature = "diagnose"))]
16330		return ret;
16331	}
16332	#[inline(always)]
16333	fn glGetInteger64v(&self, pname: GLenum, data: *mut GLint64) -> Result<()> {
16334		#[cfg(feature = "catch_nullptr")]
16335		let ret = process_catch("glGetInteger64v", catch_unwind(||(self.getinteger64v)(pname, data)));
16336		#[cfg(not(feature = "catch_nullptr"))]
16337		let ret = {(self.getinteger64v)(pname, data); Ok(())};
16338		#[cfg(feature = "diagnose")]
16339		if let Ok(ret) = ret {
16340			return to_result("glGetInteger64v", ret, self.glGetError());
16341		} else {
16342			return ret
16343		}
16344		#[cfg(not(feature = "diagnose"))]
16345		return ret;
16346	}
16347	#[inline(always)]
16348	fn glGetSynciv(&self, sync: GLsync, pname: GLenum, count: GLsizei, length: *mut GLsizei, values: *mut GLint) -> Result<()> {
16349		#[cfg(feature = "catch_nullptr")]
16350		let ret = process_catch("glGetSynciv", catch_unwind(||(self.getsynciv)(sync, pname, count, length, values)));
16351		#[cfg(not(feature = "catch_nullptr"))]
16352		let ret = {(self.getsynciv)(sync, pname, count, length, values); Ok(())};
16353		#[cfg(feature = "diagnose")]
16354		if let Ok(ret) = ret {
16355			return to_result("glGetSynciv", ret, self.glGetError());
16356		} else {
16357			return ret
16358		}
16359		#[cfg(not(feature = "diagnose"))]
16360		return ret;
16361	}
16362	#[inline(always)]
16363	fn glGetInteger64i_v(&self, target: GLenum, index: GLuint, data: *mut GLint64) -> Result<()> {
16364		#[cfg(feature = "catch_nullptr")]
16365		let ret = process_catch("glGetInteger64i_v", catch_unwind(||(self.getinteger64i_v)(target, index, data)));
16366		#[cfg(not(feature = "catch_nullptr"))]
16367		let ret = {(self.getinteger64i_v)(target, index, data); Ok(())};
16368		#[cfg(feature = "diagnose")]
16369		if let Ok(ret) = ret {
16370			return to_result("glGetInteger64i_v", ret, self.glGetError());
16371		} else {
16372			return ret
16373		}
16374		#[cfg(not(feature = "diagnose"))]
16375		return ret;
16376	}
16377	#[inline(always)]
16378	fn glGetBufferParameteri64v(&self, target: GLenum, pname: GLenum, params: *mut GLint64) -> Result<()> {
16379		#[cfg(feature = "catch_nullptr")]
16380		let ret = process_catch("glGetBufferParameteri64v", catch_unwind(||(self.getbufferparameteri64v)(target, pname, params)));
16381		#[cfg(not(feature = "catch_nullptr"))]
16382		let ret = {(self.getbufferparameteri64v)(target, pname, params); Ok(())};
16383		#[cfg(feature = "diagnose")]
16384		if let Ok(ret) = ret {
16385			return to_result("glGetBufferParameteri64v", ret, self.glGetError());
16386		} else {
16387			return ret
16388		}
16389		#[cfg(not(feature = "diagnose"))]
16390		return ret;
16391	}
16392	#[inline(always)]
16393	fn glFramebufferTexture(&self, target: GLenum, attachment: GLenum, texture: GLuint, level: GLint) -> Result<()> {
16394		#[cfg(feature = "catch_nullptr")]
16395		let ret = process_catch("glFramebufferTexture", catch_unwind(||(self.framebuffertexture)(target, attachment, texture, level)));
16396		#[cfg(not(feature = "catch_nullptr"))]
16397		let ret = {(self.framebuffertexture)(target, attachment, texture, level); Ok(())};
16398		#[cfg(feature = "diagnose")]
16399		if let Ok(ret) = ret {
16400			return to_result("glFramebufferTexture", ret, self.glGetError());
16401		} else {
16402			return ret
16403		}
16404		#[cfg(not(feature = "diagnose"))]
16405		return ret;
16406	}
16407	#[inline(always)]
16408	fn glTexImage2DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, fixedsamplelocations: GLboolean) -> Result<()> {
16409		#[cfg(feature = "catch_nullptr")]
16410		let ret = process_catch("glTexImage2DMultisample", catch_unwind(||(self.teximage2dmultisample)(target, samples, internalformat, width, height, fixedsamplelocations)));
16411		#[cfg(not(feature = "catch_nullptr"))]
16412		let ret = {(self.teximage2dmultisample)(target, samples, internalformat, width, height, fixedsamplelocations); Ok(())};
16413		#[cfg(feature = "diagnose")]
16414		if let Ok(ret) = ret {
16415			return to_result("glTexImage2DMultisample", ret, self.glGetError());
16416		} else {
16417			return ret
16418		}
16419		#[cfg(not(feature = "diagnose"))]
16420		return ret;
16421	}
16422	#[inline(always)]
16423	fn glTexImage3DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, fixedsamplelocations: GLboolean) -> Result<()> {
16424		#[cfg(feature = "catch_nullptr")]
16425		let ret = process_catch("glTexImage3DMultisample", catch_unwind(||(self.teximage3dmultisample)(target, samples, internalformat, width, height, depth, fixedsamplelocations)));
16426		#[cfg(not(feature = "catch_nullptr"))]
16427		let ret = {(self.teximage3dmultisample)(target, samples, internalformat, width, height, depth, fixedsamplelocations); Ok(())};
16428		#[cfg(feature = "diagnose")]
16429		if let Ok(ret) = ret {
16430			return to_result("glTexImage3DMultisample", ret, self.glGetError());
16431		} else {
16432			return ret
16433		}
16434		#[cfg(not(feature = "diagnose"))]
16435		return ret;
16436	}
16437	#[inline(always)]
16438	fn glGetMultisamplefv(&self, pname: GLenum, index: GLuint, val: *mut GLfloat) -> Result<()> {
16439		#[cfg(feature = "catch_nullptr")]
16440		let ret = process_catch("glGetMultisamplefv", catch_unwind(||(self.getmultisamplefv)(pname, index, val)));
16441		#[cfg(not(feature = "catch_nullptr"))]
16442		let ret = {(self.getmultisamplefv)(pname, index, val); Ok(())};
16443		#[cfg(feature = "diagnose")]
16444		if let Ok(ret) = ret {
16445			return to_result("glGetMultisamplefv", ret, self.glGetError());
16446		} else {
16447			return ret
16448		}
16449		#[cfg(not(feature = "diagnose"))]
16450		return ret;
16451	}
16452	#[inline(always)]
16453	fn glSampleMaski(&self, maskNumber: GLuint, mask: GLbitfield) -> Result<()> {
16454		#[cfg(feature = "catch_nullptr")]
16455		let ret = process_catch("glSampleMaski", catch_unwind(||(self.samplemaski)(maskNumber, mask)));
16456		#[cfg(not(feature = "catch_nullptr"))]
16457		let ret = {(self.samplemaski)(maskNumber, mask); Ok(())};
16458		#[cfg(feature = "diagnose")]
16459		if let Ok(ret) = ret {
16460			return to_result("glSampleMaski", ret, self.glGetError());
16461		} else {
16462			return ret
16463		}
16464		#[cfg(not(feature = "diagnose"))]
16465		return ret;
16466	}
16467}
16468
16469impl Version32 {
16470	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
16471		let (_spec, major, minor, release) = base.get_version();
16472		if (major, minor, release) < (3, 2, 0) {
16473			return Self::default();
16474		}
16475		Self {
16476			available: true,
16477			geterror: {let proc = get_proc_address("glGetError"); if proc.is_null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
16478			drawelementsbasevertex: {let proc = get_proc_address("glDrawElementsBaseVertex"); if proc.is_null() {dummy_pfngldrawelementsbasevertexproc} else {unsafe{transmute(proc)}}},
16479			drawrangeelementsbasevertex: {let proc = get_proc_address("glDrawRangeElementsBaseVertex"); if proc.is_null() {dummy_pfngldrawrangeelementsbasevertexproc} else {unsafe{transmute(proc)}}},
16480			drawelementsinstancedbasevertex: {let proc = get_proc_address("glDrawElementsInstancedBaseVertex"); if proc.is_null() {dummy_pfngldrawelementsinstancedbasevertexproc} else {unsafe{transmute(proc)}}},
16481			multidrawelementsbasevertex: {let proc = get_proc_address("glMultiDrawElementsBaseVertex"); if proc.is_null() {dummy_pfnglmultidrawelementsbasevertexproc} else {unsafe{transmute(proc)}}},
16482			provokingvertex: {let proc = get_proc_address("glProvokingVertex"); if proc.is_null() {dummy_pfnglprovokingvertexproc} else {unsafe{transmute(proc)}}},
16483			fencesync: {let proc = get_proc_address("glFenceSync"); if proc.is_null() {dummy_pfnglfencesyncproc} else {unsafe{transmute(proc)}}},
16484			issync: {let proc = get_proc_address("glIsSync"); if proc.is_null() {dummy_pfnglissyncproc} else {unsafe{transmute(proc)}}},
16485			deletesync: {let proc = get_proc_address("glDeleteSync"); if proc.is_null() {dummy_pfngldeletesyncproc} else {unsafe{transmute(proc)}}},
16486			clientwaitsync: {let proc = get_proc_address("glClientWaitSync"); if proc.is_null() {dummy_pfnglclientwaitsyncproc} else {unsafe{transmute(proc)}}},
16487			waitsync: {let proc = get_proc_address("glWaitSync"); if proc.is_null() {dummy_pfnglwaitsyncproc} else {unsafe{transmute(proc)}}},
16488			getinteger64v: {let proc = get_proc_address("glGetInteger64v"); if proc.is_null() {dummy_pfnglgetinteger64vproc} else {unsafe{transmute(proc)}}},
16489			getsynciv: {let proc = get_proc_address("glGetSynciv"); if proc.is_null() {dummy_pfnglgetsyncivproc} else {unsafe{transmute(proc)}}},
16490			getinteger64i_v: {let proc = get_proc_address("glGetInteger64i_v"); if proc.is_null() {dummy_pfnglgetinteger64i_vproc} else {unsafe{transmute(proc)}}},
16491			getbufferparameteri64v: {let proc = get_proc_address("glGetBufferParameteri64v"); if proc.is_null() {dummy_pfnglgetbufferparameteri64vproc} else {unsafe{transmute(proc)}}},
16492			framebuffertexture: {let proc = get_proc_address("glFramebufferTexture"); if proc.is_null() {dummy_pfnglframebuffertextureproc} else {unsafe{transmute(proc)}}},
16493			teximage2dmultisample: {let proc = get_proc_address("glTexImage2DMultisample"); if proc.is_null() {dummy_pfnglteximage2dmultisampleproc} else {unsafe{transmute(proc)}}},
16494			teximage3dmultisample: {let proc = get_proc_address("glTexImage3DMultisample"); if proc.is_null() {dummy_pfnglteximage3dmultisampleproc} else {unsafe{transmute(proc)}}},
16495			getmultisamplefv: {let proc = get_proc_address("glGetMultisamplefv"); if proc.is_null() {dummy_pfnglgetmultisamplefvproc} else {unsafe{transmute(proc)}}},
16496			samplemaski: {let proc = get_proc_address("glSampleMaski"); if proc.is_null() {dummy_pfnglsamplemaskiproc} else {unsafe{transmute(proc)}}},
16497		}
16498	}
16499	#[inline(always)]
16500	pub fn get_available(&self) -> bool {
16501		self.available
16502	}
16503}
16504
16505impl Default for Version32 {
16506	fn default() -> Self {
16507		Self {
16508			available: false,
16509			geterror: dummy_pfnglgeterrorproc,
16510			drawelementsbasevertex: dummy_pfngldrawelementsbasevertexproc,
16511			drawrangeelementsbasevertex: dummy_pfngldrawrangeelementsbasevertexproc,
16512			drawelementsinstancedbasevertex: dummy_pfngldrawelementsinstancedbasevertexproc,
16513			multidrawelementsbasevertex: dummy_pfnglmultidrawelementsbasevertexproc,
16514			provokingvertex: dummy_pfnglprovokingvertexproc,
16515			fencesync: dummy_pfnglfencesyncproc,
16516			issync: dummy_pfnglissyncproc,
16517			deletesync: dummy_pfngldeletesyncproc,
16518			clientwaitsync: dummy_pfnglclientwaitsyncproc,
16519			waitsync: dummy_pfnglwaitsyncproc,
16520			getinteger64v: dummy_pfnglgetinteger64vproc,
16521			getsynciv: dummy_pfnglgetsyncivproc,
16522			getinteger64i_v: dummy_pfnglgetinteger64i_vproc,
16523			getbufferparameteri64v: dummy_pfnglgetbufferparameteri64vproc,
16524			framebuffertexture: dummy_pfnglframebuffertextureproc,
16525			teximage2dmultisample: dummy_pfnglteximage2dmultisampleproc,
16526			teximage3dmultisample: dummy_pfnglteximage3dmultisampleproc,
16527			getmultisamplefv: dummy_pfnglgetmultisamplefvproc,
16528			samplemaski: dummy_pfnglsamplemaskiproc,
16529		}
16530	}
16531}
16532impl Debug for Version32 {
16533	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
16534		if self.available {
16535			f.debug_struct("Version32")
16536			.field("available", &self.available)
16537			.field("drawelementsbasevertex", unsafe{if transmute::<_, *const c_void>(self.drawelementsbasevertex) == (dummy_pfngldrawelementsbasevertexproc as *const c_void) {&null::<PFNGLDRAWELEMENTSBASEVERTEXPROC>()} else {&self.drawelementsbasevertex}})
16538			.field("drawrangeelementsbasevertex", unsafe{if transmute::<_, *const c_void>(self.drawrangeelementsbasevertex) == (dummy_pfngldrawrangeelementsbasevertexproc as *const c_void) {&null::<PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC>()} else {&self.drawrangeelementsbasevertex}})
16539			.field("drawelementsinstancedbasevertex", unsafe{if transmute::<_, *const c_void>(self.drawelementsinstancedbasevertex) == (dummy_pfngldrawelementsinstancedbasevertexproc as *const c_void) {&null::<PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC>()} else {&self.drawelementsinstancedbasevertex}})
16540			.field("multidrawelementsbasevertex", unsafe{if transmute::<_, *const c_void>(self.multidrawelementsbasevertex) == (dummy_pfnglmultidrawelementsbasevertexproc as *const c_void) {&null::<PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC>()} else {&self.multidrawelementsbasevertex}})
16541			.field("provokingvertex", unsafe{if transmute::<_, *const c_void>(self.provokingvertex) == (dummy_pfnglprovokingvertexproc as *const c_void) {&null::<PFNGLPROVOKINGVERTEXPROC>()} else {&self.provokingvertex}})
16542			.field("fencesync", unsafe{if transmute::<_, *const c_void>(self.fencesync) == (dummy_pfnglfencesyncproc as *const c_void) {&null::<PFNGLFENCESYNCPROC>()} else {&self.fencesync}})
16543			.field("issync", unsafe{if transmute::<_, *const c_void>(self.issync) == (dummy_pfnglissyncproc as *const c_void) {&null::<PFNGLISSYNCPROC>()} else {&self.issync}})
16544			.field("deletesync", unsafe{if transmute::<_, *const c_void>(self.deletesync) == (dummy_pfngldeletesyncproc as *const c_void) {&null::<PFNGLDELETESYNCPROC>()} else {&self.deletesync}})
16545			.field("clientwaitsync", unsafe{if transmute::<_, *const c_void>(self.clientwaitsync) == (dummy_pfnglclientwaitsyncproc as *const c_void) {&null::<PFNGLCLIENTWAITSYNCPROC>()} else {&self.clientwaitsync}})
16546			.field("waitsync", unsafe{if transmute::<_, *const c_void>(self.waitsync) == (dummy_pfnglwaitsyncproc as *const c_void) {&null::<PFNGLWAITSYNCPROC>()} else {&self.waitsync}})
16547			.field("getinteger64v", unsafe{if transmute::<_, *const c_void>(self.getinteger64v) == (dummy_pfnglgetinteger64vproc as *const c_void) {&null::<PFNGLGETINTEGER64VPROC>()} else {&self.getinteger64v}})
16548			.field("getsynciv", unsafe{if transmute::<_, *const c_void>(self.getsynciv) == (dummy_pfnglgetsyncivproc as *const c_void) {&null::<PFNGLGETSYNCIVPROC>()} else {&self.getsynciv}})
16549			.field("getinteger64i_v", unsafe{if transmute::<_, *const c_void>(self.getinteger64i_v) == (dummy_pfnglgetinteger64i_vproc as *const c_void) {&null::<PFNGLGETINTEGER64I_VPROC>()} else {&self.getinteger64i_v}})
16550			.field("getbufferparameteri64v", unsafe{if transmute::<_, *const c_void>(self.getbufferparameteri64v) == (dummy_pfnglgetbufferparameteri64vproc as *const c_void) {&null::<PFNGLGETBUFFERPARAMETERI64VPROC>()} else {&self.getbufferparameteri64v}})
16551			.field("framebuffertexture", unsafe{if transmute::<_, *const c_void>(self.framebuffertexture) == (dummy_pfnglframebuffertextureproc as *const c_void) {&null::<PFNGLFRAMEBUFFERTEXTUREPROC>()} else {&self.framebuffertexture}})
16552			.field("teximage2dmultisample", unsafe{if transmute::<_, *const c_void>(self.teximage2dmultisample) == (dummy_pfnglteximage2dmultisampleproc as *const c_void) {&null::<PFNGLTEXIMAGE2DMULTISAMPLEPROC>()} else {&self.teximage2dmultisample}})
16553			.field("teximage3dmultisample", unsafe{if transmute::<_, *const c_void>(self.teximage3dmultisample) == (dummy_pfnglteximage3dmultisampleproc as *const c_void) {&null::<PFNGLTEXIMAGE3DMULTISAMPLEPROC>()} else {&self.teximage3dmultisample}})
16554			.field("getmultisamplefv", unsafe{if transmute::<_, *const c_void>(self.getmultisamplefv) == (dummy_pfnglgetmultisamplefvproc as *const c_void) {&null::<PFNGLGETMULTISAMPLEFVPROC>()} else {&self.getmultisamplefv}})
16555			.field("samplemaski", unsafe{if transmute::<_, *const c_void>(self.samplemaski) == (dummy_pfnglsamplemaskiproc as *const c_void) {&null::<PFNGLSAMPLEMASKIPROC>()} else {&self.samplemaski}})
16556			.finish()
16557		} else {
16558			f.debug_struct("Version32")
16559			.field("available", &self.available)
16560			.finish_non_exhaustive()
16561		}
16562	}
16563}
16564
16565/// The prototype to the OpenGL function `BindFragDataLocationIndexed`
16566type PFNGLBINDFRAGDATALOCATIONINDEXEDPROC = extern "system" fn(GLuint, GLuint, GLuint, *const GLchar);
16567
16568/// The prototype to the OpenGL function `GetFragDataIndex`
16569type PFNGLGETFRAGDATAINDEXPROC = extern "system" fn(GLuint, *const GLchar) -> GLint;
16570
16571/// The prototype to the OpenGL function `GenSamplers`
16572type PFNGLGENSAMPLERSPROC = extern "system" fn(GLsizei, *mut GLuint);
16573
16574/// The prototype to the OpenGL function `DeleteSamplers`
16575type PFNGLDELETESAMPLERSPROC = extern "system" fn(GLsizei, *const GLuint);
16576
16577/// The prototype to the OpenGL function `IsSampler`
16578type PFNGLISSAMPLERPROC = extern "system" fn(GLuint) -> GLboolean;
16579
16580/// The prototype to the OpenGL function `BindSampler`
16581type PFNGLBINDSAMPLERPROC = extern "system" fn(GLuint, GLuint);
16582
16583/// The prototype to the OpenGL function `SamplerParameteri`
16584type PFNGLSAMPLERPARAMETERIPROC = extern "system" fn(GLuint, GLenum, GLint);
16585
16586/// The prototype to the OpenGL function `SamplerParameteriv`
16587type PFNGLSAMPLERPARAMETERIVPROC = extern "system" fn(GLuint, GLenum, *const GLint);
16588
16589/// The prototype to the OpenGL function `SamplerParameterf`
16590type PFNGLSAMPLERPARAMETERFPROC = extern "system" fn(GLuint, GLenum, GLfloat);
16591
16592/// The prototype to the OpenGL function `SamplerParameterfv`
16593type PFNGLSAMPLERPARAMETERFVPROC = extern "system" fn(GLuint, GLenum, *const GLfloat);
16594
16595/// The prototype to the OpenGL function `SamplerParameterIiv`
16596type PFNGLSAMPLERPARAMETERIIVPROC = extern "system" fn(GLuint, GLenum, *const GLint);
16597
16598/// The prototype to the OpenGL function `SamplerParameterIuiv`
16599type PFNGLSAMPLERPARAMETERIUIVPROC = extern "system" fn(GLuint, GLenum, *const GLuint);
16600
16601/// The prototype to the OpenGL function `GetSamplerParameteriv`
16602type PFNGLGETSAMPLERPARAMETERIVPROC = extern "system" fn(GLuint, GLenum, *mut GLint);
16603
16604/// The prototype to the OpenGL function `GetSamplerParameterIiv`
16605type PFNGLGETSAMPLERPARAMETERIIVPROC = extern "system" fn(GLuint, GLenum, *mut GLint);
16606
16607/// The prototype to the OpenGL function `GetSamplerParameterfv`
16608type PFNGLGETSAMPLERPARAMETERFVPROC = extern "system" fn(GLuint, GLenum, *mut GLfloat);
16609
16610/// The prototype to the OpenGL function `GetSamplerParameterIuiv`
16611type PFNGLGETSAMPLERPARAMETERIUIVPROC = extern "system" fn(GLuint, GLenum, *mut GLuint);
16612
16613/// The prototype to the OpenGL function `QueryCounter`
16614type PFNGLQUERYCOUNTERPROC = extern "system" fn(GLuint, GLenum);
16615
16616/// The prototype to the OpenGL function `GetQueryObjecti64v`
16617type PFNGLGETQUERYOBJECTI64VPROC = extern "system" fn(GLuint, GLenum, *mut GLint64);
16618
16619/// The prototype to the OpenGL function `GetQueryObjectui64v`
16620type PFNGLGETQUERYOBJECTUI64VPROC = extern "system" fn(GLuint, GLenum, *mut GLuint64);
16621
16622/// The prototype to the OpenGL function `VertexAttribDivisor`
16623type PFNGLVERTEXATTRIBDIVISORPROC = extern "system" fn(GLuint, GLuint);
16624
16625/// The prototype to the OpenGL function `VertexAttribP1ui`
16626type PFNGLVERTEXATTRIBP1UIPROC = extern "system" fn(GLuint, GLenum, GLboolean, GLuint);
16627
16628/// The prototype to the OpenGL function `VertexAttribP1uiv`
16629type PFNGLVERTEXATTRIBP1UIVPROC = extern "system" fn(GLuint, GLenum, GLboolean, *const GLuint);
16630
16631/// The prototype to the OpenGL function `VertexAttribP2ui`
16632type PFNGLVERTEXATTRIBP2UIPROC = extern "system" fn(GLuint, GLenum, GLboolean, GLuint);
16633
16634/// The prototype to the OpenGL function `VertexAttribP2uiv`
16635type PFNGLVERTEXATTRIBP2UIVPROC = extern "system" fn(GLuint, GLenum, GLboolean, *const GLuint);
16636
16637/// The prototype to the OpenGL function `VertexAttribP3ui`
16638type PFNGLVERTEXATTRIBP3UIPROC = extern "system" fn(GLuint, GLenum, GLboolean, GLuint);
16639
16640/// The prototype to the OpenGL function `VertexAttribP3uiv`
16641type PFNGLVERTEXATTRIBP3UIVPROC = extern "system" fn(GLuint, GLenum, GLboolean, *const GLuint);
16642
16643/// The prototype to the OpenGL function `VertexAttribP4ui`
16644type PFNGLVERTEXATTRIBP4UIPROC = extern "system" fn(GLuint, GLenum, GLboolean, GLuint);
16645
16646/// The prototype to the OpenGL function `VertexAttribP4uiv`
16647type PFNGLVERTEXATTRIBP4UIVPROC = extern "system" fn(GLuint, GLenum, GLboolean, *const GLuint);
16648
16649/// The prototype to the OpenGL function `VertexP2ui`
16650type PFNGLVERTEXP2UIPROC = extern "system" fn(GLenum, GLuint);
16651
16652/// The prototype to the OpenGL function `VertexP2uiv`
16653type PFNGLVERTEXP2UIVPROC = extern "system" fn(GLenum, *const GLuint);
16654
16655/// The prototype to the OpenGL function `VertexP3ui`
16656type PFNGLVERTEXP3UIPROC = extern "system" fn(GLenum, GLuint);
16657
16658/// The prototype to the OpenGL function `VertexP3uiv`
16659type PFNGLVERTEXP3UIVPROC = extern "system" fn(GLenum, *const GLuint);
16660
16661/// The prototype to the OpenGL function `VertexP4ui`
16662type PFNGLVERTEXP4UIPROC = extern "system" fn(GLenum, GLuint);
16663
16664/// The prototype to the OpenGL function `VertexP4uiv`
16665type PFNGLVERTEXP4UIVPROC = extern "system" fn(GLenum, *const GLuint);
16666
16667/// The prototype to the OpenGL function `TexCoordP1ui`
16668type PFNGLTEXCOORDP1UIPROC = extern "system" fn(GLenum, GLuint);
16669
16670/// The prototype to the OpenGL function `TexCoordP1uiv`
16671type PFNGLTEXCOORDP1UIVPROC = extern "system" fn(GLenum, *const GLuint);
16672
16673/// The prototype to the OpenGL function `TexCoordP2ui`
16674type PFNGLTEXCOORDP2UIPROC = extern "system" fn(GLenum, GLuint);
16675
16676/// The prototype to the OpenGL function `TexCoordP2uiv`
16677type PFNGLTEXCOORDP2UIVPROC = extern "system" fn(GLenum, *const GLuint);
16678
16679/// The prototype to the OpenGL function `TexCoordP3ui`
16680type PFNGLTEXCOORDP3UIPROC = extern "system" fn(GLenum, GLuint);
16681
16682/// The prototype to the OpenGL function `TexCoordP3uiv`
16683type PFNGLTEXCOORDP3UIVPROC = extern "system" fn(GLenum, *const GLuint);
16684
16685/// The prototype to the OpenGL function `TexCoordP4ui`
16686type PFNGLTEXCOORDP4UIPROC = extern "system" fn(GLenum, GLuint);
16687
16688/// The prototype to the OpenGL function `TexCoordP4uiv`
16689type PFNGLTEXCOORDP4UIVPROC = extern "system" fn(GLenum, *const GLuint);
16690
16691/// The prototype to the OpenGL function `MultiTexCoordP1ui`
16692type PFNGLMULTITEXCOORDP1UIPROC = extern "system" fn(GLenum, GLenum, GLuint);
16693
16694/// The prototype to the OpenGL function `MultiTexCoordP1uiv`
16695type PFNGLMULTITEXCOORDP1UIVPROC = extern "system" fn(GLenum, GLenum, *const GLuint);
16696
16697/// The prototype to the OpenGL function `MultiTexCoordP2ui`
16698type PFNGLMULTITEXCOORDP2UIPROC = extern "system" fn(GLenum, GLenum, GLuint);
16699
16700/// The prototype to the OpenGL function `MultiTexCoordP2uiv`
16701type PFNGLMULTITEXCOORDP2UIVPROC = extern "system" fn(GLenum, GLenum, *const GLuint);
16702
16703/// The prototype to the OpenGL function `MultiTexCoordP3ui`
16704type PFNGLMULTITEXCOORDP3UIPROC = extern "system" fn(GLenum, GLenum, GLuint);
16705
16706/// The prototype to the OpenGL function `MultiTexCoordP3uiv`
16707type PFNGLMULTITEXCOORDP3UIVPROC = extern "system" fn(GLenum, GLenum, *const GLuint);
16708
16709/// The prototype to the OpenGL function `MultiTexCoordP4ui`
16710type PFNGLMULTITEXCOORDP4UIPROC = extern "system" fn(GLenum, GLenum, GLuint);
16711
16712/// The prototype to the OpenGL function `MultiTexCoordP4uiv`
16713type PFNGLMULTITEXCOORDP4UIVPROC = extern "system" fn(GLenum, GLenum, *const GLuint);
16714
16715/// The prototype to the OpenGL function `NormalP3ui`
16716type PFNGLNORMALP3UIPROC = extern "system" fn(GLenum, GLuint);
16717
16718/// The prototype to the OpenGL function `NormalP3uiv`
16719type PFNGLNORMALP3UIVPROC = extern "system" fn(GLenum, *const GLuint);
16720
16721/// The prototype to the OpenGL function `ColorP3ui`
16722type PFNGLCOLORP3UIPROC = extern "system" fn(GLenum, GLuint);
16723
16724/// The prototype to the OpenGL function `ColorP3uiv`
16725type PFNGLCOLORP3UIVPROC = extern "system" fn(GLenum, *const GLuint);
16726
16727/// The prototype to the OpenGL function `ColorP4ui`
16728type PFNGLCOLORP4UIPROC = extern "system" fn(GLenum, GLuint);
16729
16730/// The prototype to the OpenGL function `ColorP4uiv`
16731type PFNGLCOLORP4UIVPROC = extern "system" fn(GLenum, *const GLuint);
16732
16733/// The prototype to the OpenGL function `SecondaryColorP3ui`
16734type PFNGLSECONDARYCOLORP3UIPROC = extern "system" fn(GLenum, GLuint);
16735
16736/// The prototype to the OpenGL function `SecondaryColorP3uiv`
16737type PFNGLSECONDARYCOLORP3UIVPROC = extern "system" fn(GLenum, *const GLuint);
16738
16739/// The dummy function of `BindFragDataLocationIndexed()`
16740extern "system" fn dummy_pfnglbindfragdatalocationindexedproc (_: GLuint, _: GLuint, _: GLuint, _: *const GLchar) {
16741	panic!("OpenGL function pointer `glBindFragDataLocationIndexed()` is null.")
16742}
16743
16744/// The dummy function of `GetFragDataIndex()`
16745extern "system" fn dummy_pfnglgetfragdataindexproc (_: GLuint, _: *const GLchar) -> GLint {
16746	panic!("OpenGL function pointer `glGetFragDataIndex()` is null.")
16747}
16748
16749/// The dummy function of `GenSamplers()`
16750extern "system" fn dummy_pfnglgensamplersproc (_: GLsizei, _: *mut GLuint) {
16751	panic!("OpenGL function pointer `glGenSamplers()` is null.")
16752}
16753
16754/// The dummy function of `DeleteSamplers()`
16755extern "system" fn dummy_pfngldeletesamplersproc (_: GLsizei, _: *const GLuint) {
16756	panic!("OpenGL function pointer `glDeleteSamplers()` is null.")
16757}
16758
16759/// The dummy function of `IsSampler()`
16760extern "system" fn dummy_pfnglissamplerproc (_: GLuint) -> GLboolean {
16761	panic!("OpenGL function pointer `glIsSampler()` is null.")
16762}
16763
16764/// The dummy function of `BindSampler()`
16765extern "system" fn dummy_pfnglbindsamplerproc (_: GLuint, _: GLuint) {
16766	panic!("OpenGL function pointer `glBindSampler()` is null.")
16767}
16768
16769/// The dummy function of `SamplerParameteri()`
16770extern "system" fn dummy_pfnglsamplerparameteriproc (_: GLuint, _: GLenum, _: GLint) {
16771	panic!("OpenGL function pointer `glSamplerParameteri()` is null.")
16772}
16773
16774/// The dummy function of `SamplerParameteriv()`
16775extern "system" fn dummy_pfnglsamplerparameterivproc (_: GLuint, _: GLenum, _: *const GLint) {
16776	panic!("OpenGL function pointer `glSamplerParameteriv()` is null.")
16777}
16778
16779/// The dummy function of `SamplerParameterf()`
16780extern "system" fn dummy_pfnglsamplerparameterfproc (_: GLuint, _: GLenum, _: GLfloat) {
16781	panic!("OpenGL function pointer `glSamplerParameterf()` is null.")
16782}
16783
16784/// The dummy function of `SamplerParameterfv()`
16785extern "system" fn dummy_pfnglsamplerparameterfvproc (_: GLuint, _: GLenum, _: *const GLfloat) {
16786	panic!("OpenGL function pointer `glSamplerParameterfv()` is null.")
16787}
16788
16789/// The dummy function of `SamplerParameterIiv()`
16790extern "system" fn dummy_pfnglsamplerparameteriivproc (_: GLuint, _: GLenum, _: *const GLint) {
16791	panic!("OpenGL function pointer `glSamplerParameterIiv()` is null.")
16792}
16793
16794/// The dummy function of `SamplerParameterIuiv()`
16795extern "system" fn dummy_pfnglsamplerparameteriuivproc (_: GLuint, _: GLenum, _: *const GLuint) {
16796	panic!("OpenGL function pointer `glSamplerParameterIuiv()` is null.")
16797}
16798
16799/// The dummy function of `GetSamplerParameteriv()`
16800extern "system" fn dummy_pfnglgetsamplerparameterivproc (_: GLuint, _: GLenum, _: *mut GLint) {
16801	panic!("OpenGL function pointer `glGetSamplerParameteriv()` is null.")
16802}
16803
16804/// The dummy function of `GetSamplerParameterIiv()`
16805extern "system" fn dummy_pfnglgetsamplerparameteriivproc (_: GLuint, _: GLenum, _: *mut GLint) {
16806	panic!("OpenGL function pointer `glGetSamplerParameterIiv()` is null.")
16807}
16808
16809/// The dummy function of `GetSamplerParameterfv()`
16810extern "system" fn dummy_pfnglgetsamplerparameterfvproc (_: GLuint, _: GLenum, _: *mut GLfloat) {
16811	panic!("OpenGL function pointer `glGetSamplerParameterfv()` is null.")
16812}
16813
16814/// The dummy function of `GetSamplerParameterIuiv()`
16815extern "system" fn dummy_pfnglgetsamplerparameteriuivproc (_: GLuint, _: GLenum, _: *mut GLuint) {
16816	panic!("OpenGL function pointer `glGetSamplerParameterIuiv()` is null.")
16817}
16818
16819/// The dummy function of `QueryCounter()`
16820extern "system" fn dummy_pfnglquerycounterproc (_: GLuint, _: GLenum) {
16821	panic!("OpenGL function pointer `glQueryCounter()` is null.")
16822}
16823
16824/// The dummy function of `GetQueryObjecti64v()`
16825extern "system" fn dummy_pfnglgetqueryobjecti64vproc (_: GLuint, _: GLenum, _: *mut GLint64) {
16826	panic!("OpenGL function pointer `glGetQueryObjecti64v()` is null.")
16827}
16828
16829/// The dummy function of `GetQueryObjectui64v()`
16830extern "system" fn dummy_pfnglgetqueryobjectui64vproc (_: GLuint, _: GLenum, _: *mut GLuint64) {
16831	panic!("OpenGL function pointer `glGetQueryObjectui64v()` is null.")
16832}
16833
16834/// The dummy function of `VertexAttribDivisor()`
16835extern "system" fn dummy_pfnglvertexattribdivisorproc (_: GLuint, _: GLuint) {
16836	panic!("OpenGL function pointer `glVertexAttribDivisor()` is null.")
16837}
16838
16839/// The dummy function of `VertexAttribP1ui()`
16840extern "system" fn dummy_pfnglvertexattribp1uiproc (_: GLuint, _: GLenum, _: GLboolean, _: GLuint) {
16841	panic!("OpenGL function pointer `glVertexAttribP1ui()` is null.")
16842}
16843
16844/// The dummy function of `VertexAttribP1uiv()`
16845extern "system" fn dummy_pfnglvertexattribp1uivproc (_: GLuint, _: GLenum, _: GLboolean, _: *const GLuint) {
16846	panic!("OpenGL function pointer `glVertexAttribP1uiv()` is null.")
16847}
16848
16849/// The dummy function of `VertexAttribP2ui()`
16850extern "system" fn dummy_pfnglvertexattribp2uiproc (_: GLuint, _: GLenum, _: GLboolean, _: GLuint) {
16851	panic!("OpenGL function pointer `glVertexAttribP2ui()` is null.")
16852}
16853
16854/// The dummy function of `VertexAttribP2uiv()`
16855extern "system" fn dummy_pfnglvertexattribp2uivproc (_: GLuint, _: GLenum, _: GLboolean, _: *const GLuint) {
16856	panic!("OpenGL function pointer `glVertexAttribP2uiv()` is null.")
16857}
16858
16859/// The dummy function of `VertexAttribP3ui()`
16860extern "system" fn dummy_pfnglvertexattribp3uiproc (_: GLuint, _: GLenum, _: GLboolean, _: GLuint) {
16861	panic!("OpenGL function pointer `glVertexAttribP3ui()` is null.")
16862}
16863
16864/// The dummy function of `VertexAttribP3uiv()`
16865extern "system" fn dummy_pfnglvertexattribp3uivproc (_: GLuint, _: GLenum, _: GLboolean, _: *const GLuint) {
16866	panic!("OpenGL function pointer `glVertexAttribP3uiv()` is null.")
16867}
16868
16869/// The dummy function of `VertexAttribP4ui()`
16870extern "system" fn dummy_pfnglvertexattribp4uiproc (_: GLuint, _: GLenum, _: GLboolean, _: GLuint) {
16871	panic!("OpenGL function pointer `glVertexAttribP4ui()` is null.")
16872}
16873
16874/// The dummy function of `VertexAttribP4uiv()`
16875extern "system" fn dummy_pfnglvertexattribp4uivproc (_: GLuint, _: GLenum, _: GLboolean, _: *const GLuint) {
16876	panic!("OpenGL function pointer `glVertexAttribP4uiv()` is null.")
16877}
16878
16879/// The dummy function of `VertexP2ui()`
16880extern "system" fn dummy_pfnglvertexp2uiproc (_: GLenum, _: GLuint) {
16881	panic!("OpenGL function pointer `glVertexP2ui()` is null.")
16882}
16883
16884/// The dummy function of `VertexP2uiv()`
16885extern "system" fn dummy_pfnglvertexp2uivproc (_: GLenum, _: *const GLuint) {
16886	panic!("OpenGL function pointer `glVertexP2uiv()` is null.")
16887}
16888
16889/// The dummy function of `VertexP3ui()`
16890extern "system" fn dummy_pfnglvertexp3uiproc (_: GLenum, _: GLuint) {
16891	panic!("OpenGL function pointer `glVertexP3ui()` is null.")
16892}
16893
16894/// The dummy function of `VertexP3uiv()`
16895extern "system" fn dummy_pfnglvertexp3uivproc (_: GLenum, _: *const GLuint) {
16896	panic!("OpenGL function pointer `glVertexP3uiv()` is null.")
16897}
16898
16899/// The dummy function of `VertexP4ui()`
16900extern "system" fn dummy_pfnglvertexp4uiproc (_: GLenum, _: GLuint) {
16901	panic!("OpenGL function pointer `glVertexP4ui()` is null.")
16902}
16903
16904/// The dummy function of `VertexP4uiv()`
16905extern "system" fn dummy_pfnglvertexp4uivproc (_: GLenum, _: *const GLuint) {
16906	panic!("OpenGL function pointer `glVertexP4uiv()` is null.")
16907}
16908
16909/// The dummy function of `TexCoordP1ui()`
16910extern "system" fn dummy_pfngltexcoordp1uiproc (_: GLenum, _: GLuint) {
16911	panic!("OpenGL function pointer `glTexCoordP1ui()` is null.")
16912}
16913
16914/// The dummy function of `TexCoordP1uiv()`
16915extern "system" fn dummy_pfngltexcoordp1uivproc (_: GLenum, _: *const GLuint) {
16916	panic!("OpenGL function pointer `glTexCoordP1uiv()` is null.")
16917}
16918
16919/// The dummy function of `TexCoordP2ui()`
16920extern "system" fn dummy_pfngltexcoordp2uiproc (_: GLenum, _: GLuint) {
16921	panic!("OpenGL function pointer `glTexCoordP2ui()` is null.")
16922}
16923
16924/// The dummy function of `TexCoordP2uiv()`
16925extern "system" fn dummy_pfngltexcoordp2uivproc (_: GLenum, _: *const GLuint) {
16926	panic!("OpenGL function pointer `glTexCoordP2uiv()` is null.")
16927}
16928
16929/// The dummy function of `TexCoordP3ui()`
16930extern "system" fn dummy_pfngltexcoordp3uiproc (_: GLenum, _: GLuint) {
16931	panic!("OpenGL function pointer `glTexCoordP3ui()` is null.")
16932}
16933
16934/// The dummy function of `TexCoordP3uiv()`
16935extern "system" fn dummy_pfngltexcoordp3uivproc (_: GLenum, _: *const GLuint) {
16936	panic!("OpenGL function pointer `glTexCoordP3uiv()` is null.")
16937}
16938
16939/// The dummy function of `TexCoordP4ui()`
16940extern "system" fn dummy_pfngltexcoordp4uiproc (_: GLenum, _: GLuint) {
16941	panic!("OpenGL function pointer `glTexCoordP4ui()` is null.")
16942}
16943
16944/// The dummy function of `TexCoordP4uiv()`
16945extern "system" fn dummy_pfngltexcoordp4uivproc (_: GLenum, _: *const GLuint) {
16946	panic!("OpenGL function pointer `glTexCoordP4uiv()` is null.")
16947}
16948
16949/// The dummy function of `MultiTexCoordP1ui()`
16950extern "system" fn dummy_pfnglmultitexcoordp1uiproc (_: GLenum, _: GLenum, _: GLuint) {
16951	panic!("OpenGL function pointer `glMultiTexCoordP1ui()` is null.")
16952}
16953
16954/// The dummy function of `MultiTexCoordP1uiv()`
16955extern "system" fn dummy_pfnglmultitexcoordp1uivproc (_: GLenum, _: GLenum, _: *const GLuint) {
16956	panic!("OpenGL function pointer `glMultiTexCoordP1uiv()` is null.")
16957}
16958
16959/// The dummy function of `MultiTexCoordP2ui()`
16960extern "system" fn dummy_pfnglmultitexcoordp2uiproc (_: GLenum, _: GLenum, _: GLuint) {
16961	panic!("OpenGL function pointer `glMultiTexCoordP2ui()` is null.")
16962}
16963
16964/// The dummy function of `MultiTexCoordP2uiv()`
16965extern "system" fn dummy_pfnglmultitexcoordp2uivproc (_: GLenum, _: GLenum, _: *const GLuint) {
16966	panic!("OpenGL function pointer `glMultiTexCoordP2uiv()` is null.")
16967}
16968
16969/// The dummy function of `MultiTexCoordP3ui()`
16970extern "system" fn dummy_pfnglmultitexcoordp3uiproc (_: GLenum, _: GLenum, _: GLuint) {
16971	panic!("OpenGL function pointer `glMultiTexCoordP3ui()` is null.")
16972}
16973
16974/// The dummy function of `MultiTexCoordP3uiv()`
16975extern "system" fn dummy_pfnglmultitexcoordp3uivproc (_: GLenum, _: GLenum, _: *const GLuint) {
16976	panic!("OpenGL function pointer `glMultiTexCoordP3uiv()` is null.")
16977}
16978
16979/// The dummy function of `MultiTexCoordP4ui()`
16980extern "system" fn dummy_pfnglmultitexcoordp4uiproc (_: GLenum, _: GLenum, _: GLuint) {
16981	panic!("OpenGL function pointer `glMultiTexCoordP4ui()` is null.")
16982}
16983
16984/// The dummy function of `MultiTexCoordP4uiv()`
16985extern "system" fn dummy_pfnglmultitexcoordp4uivproc (_: GLenum, _: GLenum, _: *const GLuint) {
16986	panic!("OpenGL function pointer `glMultiTexCoordP4uiv()` is null.")
16987}
16988
16989/// The dummy function of `NormalP3ui()`
16990extern "system" fn dummy_pfnglnormalp3uiproc (_: GLenum, _: GLuint) {
16991	panic!("OpenGL function pointer `glNormalP3ui()` is null.")
16992}
16993
16994/// The dummy function of `NormalP3uiv()`
16995extern "system" fn dummy_pfnglnormalp3uivproc (_: GLenum, _: *const GLuint) {
16996	panic!("OpenGL function pointer `glNormalP3uiv()` is null.")
16997}
16998
16999/// The dummy function of `ColorP3ui()`
17000extern "system" fn dummy_pfnglcolorp3uiproc (_: GLenum, _: GLuint) {
17001	panic!("OpenGL function pointer `glColorP3ui()` is null.")
17002}
17003
17004/// The dummy function of `ColorP3uiv()`
17005extern "system" fn dummy_pfnglcolorp3uivproc (_: GLenum, _: *const GLuint) {
17006	panic!("OpenGL function pointer `glColorP3uiv()` is null.")
17007}
17008
17009/// The dummy function of `ColorP4ui()`
17010extern "system" fn dummy_pfnglcolorp4uiproc (_: GLenum, _: GLuint) {
17011	panic!("OpenGL function pointer `glColorP4ui()` is null.")
17012}
17013
17014/// The dummy function of `ColorP4uiv()`
17015extern "system" fn dummy_pfnglcolorp4uivproc (_: GLenum, _: *const GLuint) {
17016	panic!("OpenGL function pointer `glColorP4uiv()` is null.")
17017}
17018
17019/// The dummy function of `SecondaryColorP3ui()`
17020extern "system" fn dummy_pfnglsecondarycolorp3uiproc (_: GLenum, _: GLuint) {
17021	panic!("OpenGL function pointer `glSecondaryColorP3ui()` is null.")
17022}
17023
17024/// The dummy function of `SecondaryColorP3uiv()`
17025extern "system" fn dummy_pfnglsecondarycolorp3uivproc (_: GLenum, _: *const GLuint) {
17026	panic!("OpenGL function pointer `glSecondaryColorP3uiv()` is null.")
17027}
17028/// Constant value defined from OpenGL 3.3
17029pub const GL_VERTEX_ATTRIB_ARRAY_DIVISOR: GLenum = 0x88FE;
17030
17031/// Constant value defined from OpenGL 3.3
17032pub const GL_SRC1_COLOR: GLenum = 0x88F9;
17033
17034/// Constant value defined from OpenGL 3.3
17035pub const GL_ONE_MINUS_SRC1_COLOR: GLenum = 0x88FA;
17036
17037/// Constant value defined from OpenGL 3.3
17038pub const GL_ONE_MINUS_SRC1_ALPHA: GLenum = 0x88FB;
17039
17040/// Constant value defined from OpenGL 3.3
17041pub const GL_MAX_DUAL_SOURCE_DRAW_BUFFERS: GLenum = 0x88FC;
17042
17043/// Constant value defined from OpenGL 3.3
17044pub const GL_ANY_SAMPLES_PASSED: GLenum = 0x8C2F;
17045
17046/// Constant value defined from OpenGL 3.3
17047pub const GL_SAMPLER_BINDING: GLenum = 0x8919;
17048
17049/// Constant value defined from OpenGL 3.3
17050pub const GL_RGB10_A2UI: GLenum = 0x906F;
17051
17052/// Constant value defined from OpenGL 3.3
17053pub const GL_TEXTURE_SWIZZLE_R: GLenum = 0x8E42;
17054
17055/// Constant value defined from OpenGL 3.3
17056pub const GL_TEXTURE_SWIZZLE_G: GLenum = 0x8E43;
17057
17058/// Constant value defined from OpenGL 3.3
17059pub const GL_TEXTURE_SWIZZLE_B: GLenum = 0x8E44;
17060
17061/// Constant value defined from OpenGL 3.3
17062pub const GL_TEXTURE_SWIZZLE_A: GLenum = 0x8E45;
17063
17064/// Constant value defined from OpenGL 3.3
17065pub const GL_TEXTURE_SWIZZLE_RGBA: GLenum = 0x8E46;
17066
17067/// Constant value defined from OpenGL 3.3
17068pub const GL_TIME_ELAPSED: GLenum = 0x88BF;
17069
17070/// Constant value defined from OpenGL 3.3
17071pub const GL_TIMESTAMP: GLenum = 0x8E28;
17072
17073/// Constant value defined from OpenGL 3.3
17074pub const GL_INT_2_10_10_10_REV: GLenum = 0x8D9F;
17075
17076/// Functions from OpenGL version 3.3
17077pub trait GL_3_3 {
17078	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
17079	fn glGetError(&self) -> GLenum;
17080
17081	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindFragDataLocationIndexed.xhtml>
17082	fn glBindFragDataLocationIndexed(&self, program: GLuint, colorNumber: GLuint, index: GLuint, name: *const GLchar) -> Result<()>;
17083
17084	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFragDataIndex.xhtml>
17085	fn glGetFragDataIndex(&self, program: GLuint, name: *const GLchar) -> Result<GLint>;
17086
17087	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenSamplers.xhtml>
17088	fn glGenSamplers(&self, count: GLsizei, samplers: *mut GLuint) -> Result<()>;
17089
17090	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteSamplers.xhtml>
17091	fn glDeleteSamplers(&self, count: GLsizei, samplers: *const GLuint) -> Result<()>;
17092
17093	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsSampler.xhtml>
17094	fn glIsSampler(&self, sampler: GLuint) -> Result<GLboolean>;
17095
17096	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindSampler.xhtml>
17097	fn glBindSampler(&self, unit: GLuint, sampler: GLuint) -> Result<()>;
17098
17099	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameteri.xhtml>
17100	fn glSamplerParameteri(&self, sampler: GLuint, pname: GLenum, param: GLint) -> Result<()>;
17101
17102	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameteriv.xhtml>
17103	fn glSamplerParameteriv(&self, sampler: GLuint, pname: GLenum, param: *const GLint) -> Result<()>;
17104
17105	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameterf.xhtml>
17106	fn glSamplerParameterf(&self, sampler: GLuint, pname: GLenum, param: GLfloat) -> Result<()>;
17107
17108	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameterfv.xhtml>
17109	fn glSamplerParameterfv(&self, sampler: GLuint, pname: GLenum, param: *const GLfloat) -> Result<()>;
17110
17111	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameterIiv.xhtml>
17112	fn glSamplerParameterIiv(&self, sampler: GLuint, pname: GLenum, param: *const GLint) -> Result<()>;
17113
17114	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameterIuiv.xhtml>
17115	fn glSamplerParameterIuiv(&self, sampler: GLuint, pname: GLenum, param: *const GLuint) -> Result<()>;
17116
17117	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSamplerParameteriv.xhtml>
17118	fn glGetSamplerParameteriv(&self, sampler: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
17119
17120	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSamplerParameterIiv.xhtml>
17121	fn glGetSamplerParameterIiv(&self, sampler: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
17122
17123	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSamplerParameterfv.xhtml>
17124	fn glGetSamplerParameterfv(&self, sampler: GLuint, pname: GLenum, params: *mut GLfloat) -> Result<()>;
17125
17126	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSamplerParameterIuiv.xhtml>
17127	fn glGetSamplerParameterIuiv(&self, sampler: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()>;
17128
17129	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glQueryCounter.xhtml>
17130	fn glQueryCounter(&self, id: GLuint, target: GLenum) -> Result<()>;
17131
17132	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryObjecti64v.xhtml>
17133	fn glGetQueryObjecti64v(&self, id: GLuint, pname: GLenum, params: *mut GLint64) -> Result<()>;
17134
17135	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryObjectui64v.xhtml>
17136	fn glGetQueryObjectui64v(&self, id: GLuint, pname: GLenum, params: *mut GLuint64) -> Result<()>;
17137
17138	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribDivisor.xhtml>
17139	fn glVertexAttribDivisor(&self, index: GLuint, divisor: GLuint) -> Result<()>;
17140
17141	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP1ui.xhtml>
17142	fn glVertexAttribP1ui(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint) -> Result<()>;
17143
17144	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP1uiv.xhtml>
17145	fn glVertexAttribP1uiv(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint) -> Result<()>;
17146
17147	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP2ui.xhtml>
17148	fn glVertexAttribP2ui(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint) -> Result<()>;
17149
17150	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP2uiv.xhtml>
17151	fn glVertexAttribP2uiv(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint) -> Result<()>;
17152
17153	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP3ui.xhtml>
17154	fn glVertexAttribP3ui(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint) -> Result<()>;
17155
17156	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP3uiv.xhtml>
17157	fn glVertexAttribP3uiv(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint) -> Result<()>;
17158
17159	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP4ui.xhtml>
17160	fn glVertexAttribP4ui(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint) -> Result<()>;
17161
17162	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP4uiv.xhtml>
17163	fn glVertexAttribP4uiv(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint) -> Result<()>;
17164
17165	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP2ui.xhtml>
17166	fn glVertexP2ui(&self, type_: GLenum, value: GLuint) -> Result<()>;
17167
17168	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP2uiv.xhtml>
17169	fn glVertexP2uiv(&self, type_: GLenum, value: *const GLuint) -> Result<()>;
17170
17171	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP3ui.xhtml>
17172	fn glVertexP3ui(&self, type_: GLenum, value: GLuint) -> Result<()>;
17173
17174	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP3uiv.xhtml>
17175	fn glVertexP3uiv(&self, type_: GLenum, value: *const GLuint) -> Result<()>;
17176
17177	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP4ui.xhtml>
17178	fn glVertexP4ui(&self, type_: GLenum, value: GLuint) -> Result<()>;
17179
17180	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP4uiv.xhtml>
17181	fn glVertexP4uiv(&self, type_: GLenum, value: *const GLuint) -> Result<()>;
17182
17183	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP1ui.xhtml>
17184	fn glTexCoordP1ui(&self, type_: GLenum, coords: GLuint) -> Result<()>;
17185
17186	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP1uiv.xhtml>
17187	fn glTexCoordP1uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()>;
17188
17189	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP2ui.xhtml>
17190	fn glTexCoordP2ui(&self, type_: GLenum, coords: GLuint) -> Result<()>;
17191
17192	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP2uiv.xhtml>
17193	fn glTexCoordP2uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()>;
17194
17195	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP3ui.xhtml>
17196	fn glTexCoordP3ui(&self, type_: GLenum, coords: GLuint) -> Result<()>;
17197
17198	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP3uiv.xhtml>
17199	fn glTexCoordP3uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()>;
17200
17201	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP4ui.xhtml>
17202	fn glTexCoordP4ui(&self, type_: GLenum, coords: GLuint) -> Result<()>;
17203
17204	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP4uiv.xhtml>
17205	fn glTexCoordP4uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()>;
17206
17207	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP1ui.xhtml>
17208	fn glMultiTexCoordP1ui(&self, texture: GLenum, type_: GLenum, coords: GLuint) -> Result<()>;
17209
17210	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP1uiv.xhtml>
17211	fn glMultiTexCoordP1uiv(&self, texture: GLenum, type_: GLenum, coords: *const GLuint) -> Result<()>;
17212
17213	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP2ui.xhtml>
17214	fn glMultiTexCoordP2ui(&self, texture: GLenum, type_: GLenum, coords: GLuint) -> Result<()>;
17215
17216	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP2uiv.xhtml>
17217	fn glMultiTexCoordP2uiv(&self, texture: GLenum, type_: GLenum, coords: *const GLuint) -> Result<()>;
17218
17219	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP3ui.xhtml>
17220	fn glMultiTexCoordP3ui(&self, texture: GLenum, type_: GLenum, coords: GLuint) -> Result<()>;
17221
17222	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP3uiv.xhtml>
17223	fn glMultiTexCoordP3uiv(&self, texture: GLenum, type_: GLenum, coords: *const GLuint) -> Result<()>;
17224
17225	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP4ui.xhtml>
17226	fn glMultiTexCoordP4ui(&self, texture: GLenum, type_: GLenum, coords: GLuint) -> Result<()>;
17227
17228	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP4uiv.xhtml>
17229	fn glMultiTexCoordP4uiv(&self, texture: GLenum, type_: GLenum, coords: *const GLuint) -> Result<()>;
17230
17231	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNormalP3ui.xhtml>
17232	fn glNormalP3ui(&self, type_: GLenum, coords: GLuint) -> Result<()>;
17233
17234	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNormalP3uiv.xhtml>
17235	fn glNormalP3uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()>;
17236
17237	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorP3ui.xhtml>
17238	fn glColorP3ui(&self, type_: GLenum, color: GLuint) -> Result<()>;
17239
17240	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorP3uiv.xhtml>
17241	fn glColorP3uiv(&self, type_: GLenum, color: *const GLuint) -> Result<()>;
17242
17243	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorP4ui.xhtml>
17244	fn glColorP4ui(&self, type_: GLenum, color: GLuint) -> Result<()>;
17245
17246	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorP4uiv.xhtml>
17247	fn glColorP4uiv(&self, type_: GLenum, color: *const GLuint) -> Result<()>;
17248
17249	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColorP3ui.xhtml>
17250	fn glSecondaryColorP3ui(&self, type_: GLenum, color: GLuint) -> Result<()>;
17251
17252	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColorP3uiv.xhtml>
17253	fn glSecondaryColorP3uiv(&self, type_: GLenum, color: *const GLuint) -> Result<()>;
17254}
17255/// Functions from OpenGL version 3.3
17256#[derive(Clone, Copy, PartialEq, Eq, Hash)]
17257pub struct Version33 {
17258	/// Is OpenGL version 3.3 available
17259	available: bool,
17260
17261	/// The function pointer to `glGetError()`
17262	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
17263	pub geterror: PFNGLGETERRORPROC,
17264
17265	/// The function pointer to `glBindFragDataLocationIndexed()`
17266	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindFragDataLocationIndexed.xhtml>
17267	pub bindfragdatalocationindexed: PFNGLBINDFRAGDATALOCATIONINDEXEDPROC,
17268
17269	/// The function pointer to `glGetFragDataIndex()`
17270	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFragDataIndex.xhtml>
17271	pub getfragdataindex: PFNGLGETFRAGDATAINDEXPROC,
17272
17273	/// The function pointer to `glGenSamplers()`
17274	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenSamplers.xhtml>
17275	pub gensamplers: PFNGLGENSAMPLERSPROC,
17276
17277	/// The function pointer to `glDeleteSamplers()`
17278	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteSamplers.xhtml>
17279	pub deletesamplers: PFNGLDELETESAMPLERSPROC,
17280
17281	/// The function pointer to `glIsSampler()`
17282	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsSampler.xhtml>
17283	pub issampler: PFNGLISSAMPLERPROC,
17284
17285	/// The function pointer to `glBindSampler()`
17286	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindSampler.xhtml>
17287	pub bindsampler: PFNGLBINDSAMPLERPROC,
17288
17289	/// The function pointer to `glSamplerParameteri()`
17290	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameteri.xhtml>
17291	pub samplerparameteri: PFNGLSAMPLERPARAMETERIPROC,
17292
17293	/// The function pointer to `glSamplerParameteriv()`
17294	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameteriv.xhtml>
17295	pub samplerparameteriv: PFNGLSAMPLERPARAMETERIVPROC,
17296
17297	/// The function pointer to `glSamplerParameterf()`
17298	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameterf.xhtml>
17299	pub samplerparameterf: PFNGLSAMPLERPARAMETERFPROC,
17300
17301	/// The function pointer to `glSamplerParameterfv()`
17302	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameterfv.xhtml>
17303	pub samplerparameterfv: PFNGLSAMPLERPARAMETERFVPROC,
17304
17305	/// The function pointer to `glSamplerParameterIiv()`
17306	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameterIiv.xhtml>
17307	pub samplerparameteriiv: PFNGLSAMPLERPARAMETERIIVPROC,
17308
17309	/// The function pointer to `glSamplerParameterIuiv()`
17310	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameterIuiv.xhtml>
17311	pub samplerparameteriuiv: PFNGLSAMPLERPARAMETERIUIVPROC,
17312
17313	/// The function pointer to `glGetSamplerParameteriv()`
17314	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSamplerParameteriv.xhtml>
17315	pub getsamplerparameteriv: PFNGLGETSAMPLERPARAMETERIVPROC,
17316
17317	/// The function pointer to `glGetSamplerParameterIiv()`
17318	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSamplerParameterIiv.xhtml>
17319	pub getsamplerparameteriiv: PFNGLGETSAMPLERPARAMETERIIVPROC,
17320
17321	/// The function pointer to `glGetSamplerParameterfv()`
17322	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSamplerParameterfv.xhtml>
17323	pub getsamplerparameterfv: PFNGLGETSAMPLERPARAMETERFVPROC,
17324
17325	/// The function pointer to `glGetSamplerParameterIuiv()`
17326	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSamplerParameterIuiv.xhtml>
17327	pub getsamplerparameteriuiv: PFNGLGETSAMPLERPARAMETERIUIVPROC,
17328
17329	/// The function pointer to `glQueryCounter()`
17330	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glQueryCounter.xhtml>
17331	pub querycounter: PFNGLQUERYCOUNTERPROC,
17332
17333	/// The function pointer to `glGetQueryObjecti64v()`
17334	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryObjecti64v.xhtml>
17335	pub getqueryobjecti64v: PFNGLGETQUERYOBJECTI64VPROC,
17336
17337	/// The function pointer to `glGetQueryObjectui64v()`
17338	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryObjectui64v.xhtml>
17339	pub getqueryobjectui64v: PFNGLGETQUERYOBJECTUI64VPROC,
17340
17341	/// The function pointer to `glVertexAttribDivisor()`
17342	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribDivisor.xhtml>
17343	pub vertexattribdivisor: PFNGLVERTEXATTRIBDIVISORPROC,
17344
17345	/// The function pointer to `glVertexAttribP1ui()`
17346	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP1ui.xhtml>
17347	pub vertexattribp1ui: PFNGLVERTEXATTRIBP1UIPROC,
17348
17349	/// The function pointer to `glVertexAttribP1uiv()`
17350	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP1uiv.xhtml>
17351	pub vertexattribp1uiv: PFNGLVERTEXATTRIBP1UIVPROC,
17352
17353	/// The function pointer to `glVertexAttribP2ui()`
17354	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP2ui.xhtml>
17355	pub vertexattribp2ui: PFNGLVERTEXATTRIBP2UIPROC,
17356
17357	/// The function pointer to `glVertexAttribP2uiv()`
17358	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP2uiv.xhtml>
17359	pub vertexattribp2uiv: PFNGLVERTEXATTRIBP2UIVPROC,
17360
17361	/// The function pointer to `glVertexAttribP3ui()`
17362	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP3ui.xhtml>
17363	pub vertexattribp3ui: PFNGLVERTEXATTRIBP3UIPROC,
17364
17365	/// The function pointer to `glVertexAttribP3uiv()`
17366	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP3uiv.xhtml>
17367	pub vertexattribp3uiv: PFNGLVERTEXATTRIBP3UIVPROC,
17368
17369	/// The function pointer to `glVertexAttribP4ui()`
17370	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP4ui.xhtml>
17371	pub vertexattribp4ui: PFNGLVERTEXATTRIBP4UIPROC,
17372
17373	/// The function pointer to `glVertexAttribP4uiv()`
17374	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP4uiv.xhtml>
17375	pub vertexattribp4uiv: PFNGLVERTEXATTRIBP4UIVPROC,
17376
17377	/// The function pointer to `glVertexP2ui()`
17378	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP2ui.xhtml>
17379	pub vertexp2ui: PFNGLVERTEXP2UIPROC,
17380
17381	/// The function pointer to `glVertexP2uiv()`
17382	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP2uiv.xhtml>
17383	pub vertexp2uiv: PFNGLVERTEXP2UIVPROC,
17384
17385	/// The function pointer to `glVertexP3ui()`
17386	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP3ui.xhtml>
17387	pub vertexp3ui: PFNGLVERTEXP3UIPROC,
17388
17389	/// The function pointer to `glVertexP3uiv()`
17390	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP3uiv.xhtml>
17391	pub vertexp3uiv: PFNGLVERTEXP3UIVPROC,
17392
17393	/// The function pointer to `glVertexP4ui()`
17394	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP4ui.xhtml>
17395	pub vertexp4ui: PFNGLVERTEXP4UIPROC,
17396
17397	/// The function pointer to `glVertexP4uiv()`
17398	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP4uiv.xhtml>
17399	pub vertexp4uiv: PFNGLVERTEXP4UIVPROC,
17400
17401	/// The function pointer to `glTexCoordP1ui()`
17402	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP1ui.xhtml>
17403	pub texcoordp1ui: PFNGLTEXCOORDP1UIPROC,
17404
17405	/// The function pointer to `glTexCoordP1uiv()`
17406	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP1uiv.xhtml>
17407	pub texcoordp1uiv: PFNGLTEXCOORDP1UIVPROC,
17408
17409	/// The function pointer to `glTexCoordP2ui()`
17410	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP2ui.xhtml>
17411	pub texcoordp2ui: PFNGLTEXCOORDP2UIPROC,
17412
17413	/// The function pointer to `glTexCoordP2uiv()`
17414	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP2uiv.xhtml>
17415	pub texcoordp2uiv: PFNGLTEXCOORDP2UIVPROC,
17416
17417	/// The function pointer to `glTexCoordP3ui()`
17418	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP3ui.xhtml>
17419	pub texcoordp3ui: PFNGLTEXCOORDP3UIPROC,
17420
17421	/// The function pointer to `glTexCoordP3uiv()`
17422	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP3uiv.xhtml>
17423	pub texcoordp3uiv: PFNGLTEXCOORDP3UIVPROC,
17424
17425	/// The function pointer to `glTexCoordP4ui()`
17426	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP4ui.xhtml>
17427	pub texcoordp4ui: PFNGLTEXCOORDP4UIPROC,
17428
17429	/// The function pointer to `glTexCoordP4uiv()`
17430	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP4uiv.xhtml>
17431	pub texcoordp4uiv: PFNGLTEXCOORDP4UIVPROC,
17432
17433	/// The function pointer to `glMultiTexCoordP1ui()`
17434	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP1ui.xhtml>
17435	pub multitexcoordp1ui: PFNGLMULTITEXCOORDP1UIPROC,
17436
17437	/// The function pointer to `glMultiTexCoordP1uiv()`
17438	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP1uiv.xhtml>
17439	pub multitexcoordp1uiv: PFNGLMULTITEXCOORDP1UIVPROC,
17440
17441	/// The function pointer to `glMultiTexCoordP2ui()`
17442	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP2ui.xhtml>
17443	pub multitexcoordp2ui: PFNGLMULTITEXCOORDP2UIPROC,
17444
17445	/// The function pointer to `glMultiTexCoordP2uiv()`
17446	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP2uiv.xhtml>
17447	pub multitexcoordp2uiv: PFNGLMULTITEXCOORDP2UIVPROC,
17448
17449	/// The function pointer to `glMultiTexCoordP3ui()`
17450	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP3ui.xhtml>
17451	pub multitexcoordp3ui: PFNGLMULTITEXCOORDP3UIPROC,
17452
17453	/// The function pointer to `glMultiTexCoordP3uiv()`
17454	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP3uiv.xhtml>
17455	pub multitexcoordp3uiv: PFNGLMULTITEXCOORDP3UIVPROC,
17456
17457	/// The function pointer to `glMultiTexCoordP4ui()`
17458	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP4ui.xhtml>
17459	pub multitexcoordp4ui: PFNGLMULTITEXCOORDP4UIPROC,
17460
17461	/// The function pointer to `glMultiTexCoordP4uiv()`
17462	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP4uiv.xhtml>
17463	pub multitexcoordp4uiv: PFNGLMULTITEXCOORDP4UIVPROC,
17464
17465	/// The function pointer to `glNormalP3ui()`
17466	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNormalP3ui.xhtml>
17467	pub normalp3ui: PFNGLNORMALP3UIPROC,
17468
17469	/// The function pointer to `glNormalP3uiv()`
17470	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNormalP3uiv.xhtml>
17471	pub normalp3uiv: PFNGLNORMALP3UIVPROC,
17472
17473	/// The function pointer to `glColorP3ui()`
17474	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorP3ui.xhtml>
17475	pub colorp3ui: PFNGLCOLORP3UIPROC,
17476
17477	/// The function pointer to `glColorP3uiv()`
17478	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorP3uiv.xhtml>
17479	pub colorp3uiv: PFNGLCOLORP3UIVPROC,
17480
17481	/// The function pointer to `glColorP4ui()`
17482	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorP4ui.xhtml>
17483	pub colorp4ui: PFNGLCOLORP4UIPROC,
17484
17485	/// The function pointer to `glColorP4uiv()`
17486	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorP4uiv.xhtml>
17487	pub colorp4uiv: PFNGLCOLORP4UIVPROC,
17488
17489	/// The function pointer to `glSecondaryColorP3ui()`
17490	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColorP3ui.xhtml>
17491	pub secondarycolorp3ui: PFNGLSECONDARYCOLORP3UIPROC,
17492
17493	/// The function pointer to `glSecondaryColorP3uiv()`
17494	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColorP3uiv.xhtml>
17495	pub secondarycolorp3uiv: PFNGLSECONDARYCOLORP3UIVPROC,
17496}
17497
17498impl GL_3_3 for Version33 {
17499	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
17500	#[inline(always)]
17501	fn glGetError(&self) -> GLenum {
17502		(self.geterror)()
17503	}
17504	#[inline(always)]
17505	fn glBindFragDataLocationIndexed(&self, program: GLuint, colorNumber: GLuint, index: GLuint, name: *const GLchar) -> Result<()> {
17506		#[cfg(feature = "catch_nullptr")]
17507		let ret = process_catch("glBindFragDataLocationIndexed", catch_unwind(||(self.bindfragdatalocationindexed)(program, colorNumber, index, name)));
17508		#[cfg(not(feature = "catch_nullptr"))]
17509		let ret = {(self.bindfragdatalocationindexed)(program, colorNumber, index, name); Ok(())};
17510		#[cfg(feature = "diagnose")]
17511		if let Ok(ret) = ret {
17512			return to_result("glBindFragDataLocationIndexed", ret, self.glGetError());
17513		} else {
17514			return ret
17515		}
17516		#[cfg(not(feature = "diagnose"))]
17517		return ret;
17518	}
17519	#[inline(always)]
17520	fn glGetFragDataIndex(&self, program: GLuint, name: *const GLchar) -> Result<GLint> {
17521		#[cfg(feature = "catch_nullptr")]
17522		let ret = process_catch("glGetFragDataIndex", catch_unwind(||(self.getfragdataindex)(program, name)));
17523		#[cfg(not(feature = "catch_nullptr"))]
17524		let ret = Ok((self.getfragdataindex)(program, name));
17525		#[cfg(feature = "diagnose")]
17526		if let Ok(ret) = ret {
17527			return to_result("glGetFragDataIndex", ret, self.glGetError());
17528		} else {
17529			return ret
17530		}
17531		#[cfg(not(feature = "diagnose"))]
17532		return ret;
17533	}
17534	#[inline(always)]
17535	fn glGenSamplers(&self, count: GLsizei, samplers: *mut GLuint) -> Result<()> {
17536		#[cfg(feature = "catch_nullptr")]
17537		let ret = process_catch("glGenSamplers", catch_unwind(||(self.gensamplers)(count, samplers)));
17538		#[cfg(not(feature = "catch_nullptr"))]
17539		let ret = {(self.gensamplers)(count, samplers); Ok(())};
17540		#[cfg(feature = "diagnose")]
17541		if let Ok(ret) = ret {
17542			return to_result("glGenSamplers", ret, self.glGetError());
17543		} else {
17544			return ret
17545		}
17546		#[cfg(not(feature = "diagnose"))]
17547		return ret;
17548	}
17549	#[inline(always)]
17550	fn glDeleteSamplers(&self, count: GLsizei, samplers: *const GLuint) -> Result<()> {
17551		#[cfg(feature = "catch_nullptr")]
17552		let ret = process_catch("glDeleteSamplers", catch_unwind(||(self.deletesamplers)(count, samplers)));
17553		#[cfg(not(feature = "catch_nullptr"))]
17554		let ret = {(self.deletesamplers)(count, samplers); Ok(())};
17555		#[cfg(feature = "diagnose")]
17556		if let Ok(ret) = ret {
17557			return to_result("glDeleteSamplers", ret, self.glGetError());
17558		} else {
17559			return ret
17560		}
17561		#[cfg(not(feature = "diagnose"))]
17562		return ret;
17563	}
17564	#[inline(always)]
17565	fn glIsSampler(&self, sampler: GLuint) -> Result<GLboolean> {
17566		#[cfg(feature = "catch_nullptr")]
17567		let ret = process_catch("glIsSampler", catch_unwind(||(self.issampler)(sampler)));
17568		#[cfg(not(feature = "catch_nullptr"))]
17569		let ret = Ok((self.issampler)(sampler));
17570		#[cfg(feature = "diagnose")]
17571		if let Ok(ret) = ret {
17572			return to_result("glIsSampler", ret, self.glGetError());
17573		} else {
17574			return ret
17575		}
17576		#[cfg(not(feature = "diagnose"))]
17577		return ret;
17578	}
17579	#[inline(always)]
17580	fn glBindSampler(&self, unit: GLuint, sampler: GLuint) -> Result<()> {
17581		#[cfg(feature = "catch_nullptr")]
17582		let ret = process_catch("glBindSampler", catch_unwind(||(self.bindsampler)(unit, sampler)));
17583		#[cfg(not(feature = "catch_nullptr"))]
17584		let ret = {(self.bindsampler)(unit, sampler); Ok(())};
17585		#[cfg(feature = "diagnose")]
17586		if let Ok(ret) = ret {
17587			return to_result("glBindSampler", ret, self.glGetError());
17588		} else {
17589			return ret
17590		}
17591		#[cfg(not(feature = "diagnose"))]
17592		return ret;
17593	}
17594	#[inline(always)]
17595	fn glSamplerParameteri(&self, sampler: GLuint, pname: GLenum, param: GLint) -> Result<()> {
17596		#[cfg(feature = "catch_nullptr")]
17597		let ret = process_catch("glSamplerParameteri", catch_unwind(||(self.samplerparameteri)(sampler, pname, param)));
17598		#[cfg(not(feature = "catch_nullptr"))]
17599		let ret = {(self.samplerparameteri)(sampler, pname, param); Ok(())};
17600		#[cfg(feature = "diagnose")]
17601		if let Ok(ret) = ret {
17602			return to_result("glSamplerParameteri", ret, self.glGetError());
17603		} else {
17604			return ret
17605		}
17606		#[cfg(not(feature = "diagnose"))]
17607		return ret;
17608	}
17609	#[inline(always)]
17610	fn glSamplerParameteriv(&self, sampler: GLuint, pname: GLenum, param: *const GLint) -> Result<()> {
17611		#[cfg(feature = "catch_nullptr")]
17612		let ret = process_catch("glSamplerParameteriv", catch_unwind(||(self.samplerparameteriv)(sampler, pname, param)));
17613		#[cfg(not(feature = "catch_nullptr"))]
17614		let ret = {(self.samplerparameteriv)(sampler, pname, param); Ok(())};
17615		#[cfg(feature = "diagnose")]
17616		if let Ok(ret) = ret {
17617			return to_result("glSamplerParameteriv", ret, self.glGetError());
17618		} else {
17619			return ret
17620		}
17621		#[cfg(not(feature = "diagnose"))]
17622		return ret;
17623	}
17624	#[inline(always)]
17625	fn glSamplerParameterf(&self, sampler: GLuint, pname: GLenum, param: GLfloat) -> Result<()> {
17626		#[cfg(feature = "catch_nullptr")]
17627		let ret = process_catch("glSamplerParameterf", catch_unwind(||(self.samplerparameterf)(sampler, pname, param)));
17628		#[cfg(not(feature = "catch_nullptr"))]
17629		let ret = {(self.samplerparameterf)(sampler, pname, param); Ok(())};
17630		#[cfg(feature = "diagnose")]
17631		if let Ok(ret) = ret {
17632			return to_result("glSamplerParameterf", ret, self.glGetError());
17633		} else {
17634			return ret
17635		}
17636		#[cfg(not(feature = "diagnose"))]
17637		return ret;
17638	}
17639	#[inline(always)]
17640	fn glSamplerParameterfv(&self, sampler: GLuint, pname: GLenum, param: *const GLfloat) -> Result<()> {
17641		#[cfg(feature = "catch_nullptr")]
17642		let ret = process_catch("glSamplerParameterfv", catch_unwind(||(self.samplerparameterfv)(sampler, pname, param)));
17643		#[cfg(not(feature = "catch_nullptr"))]
17644		let ret = {(self.samplerparameterfv)(sampler, pname, param); Ok(())};
17645		#[cfg(feature = "diagnose")]
17646		if let Ok(ret) = ret {
17647			return to_result("glSamplerParameterfv", ret, self.glGetError());
17648		} else {
17649			return ret
17650		}
17651		#[cfg(not(feature = "diagnose"))]
17652		return ret;
17653	}
17654	#[inline(always)]
17655	fn glSamplerParameterIiv(&self, sampler: GLuint, pname: GLenum, param: *const GLint) -> Result<()> {
17656		#[cfg(feature = "catch_nullptr")]
17657		let ret = process_catch("glSamplerParameterIiv", catch_unwind(||(self.samplerparameteriiv)(sampler, pname, param)));
17658		#[cfg(not(feature = "catch_nullptr"))]
17659		let ret = {(self.samplerparameteriiv)(sampler, pname, param); Ok(())};
17660		#[cfg(feature = "diagnose")]
17661		if let Ok(ret) = ret {
17662			return to_result("glSamplerParameterIiv", ret, self.glGetError());
17663		} else {
17664			return ret
17665		}
17666		#[cfg(not(feature = "diagnose"))]
17667		return ret;
17668	}
17669	#[inline(always)]
17670	fn glSamplerParameterIuiv(&self, sampler: GLuint, pname: GLenum, param: *const GLuint) -> Result<()> {
17671		#[cfg(feature = "catch_nullptr")]
17672		let ret = process_catch("glSamplerParameterIuiv", catch_unwind(||(self.samplerparameteriuiv)(sampler, pname, param)));
17673		#[cfg(not(feature = "catch_nullptr"))]
17674		let ret = {(self.samplerparameteriuiv)(sampler, pname, param); Ok(())};
17675		#[cfg(feature = "diagnose")]
17676		if let Ok(ret) = ret {
17677			return to_result("glSamplerParameterIuiv", ret, self.glGetError());
17678		} else {
17679			return ret
17680		}
17681		#[cfg(not(feature = "diagnose"))]
17682		return ret;
17683	}
17684	#[inline(always)]
17685	fn glGetSamplerParameteriv(&self, sampler: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
17686		#[cfg(feature = "catch_nullptr")]
17687		let ret = process_catch("glGetSamplerParameteriv", catch_unwind(||(self.getsamplerparameteriv)(sampler, pname, params)));
17688		#[cfg(not(feature = "catch_nullptr"))]
17689		let ret = {(self.getsamplerparameteriv)(sampler, pname, params); Ok(())};
17690		#[cfg(feature = "diagnose")]
17691		if let Ok(ret) = ret {
17692			return to_result("glGetSamplerParameteriv", ret, self.glGetError());
17693		} else {
17694			return ret
17695		}
17696		#[cfg(not(feature = "diagnose"))]
17697		return ret;
17698	}
17699	#[inline(always)]
17700	fn glGetSamplerParameterIiv(&self, sampler: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
17701		#[cfg(feature = "catch_nullptr")]
17702		let ret = process_catch("glGetSamplerParameterIiv", catch_unwind(||(self.getsamplerparameteriiv)(sampler, pname, params)));
17703		#[cfg(not(feature = "catch_nullptr"))]
17704		let ret = {(self.getsamplerparameteriiv)(sampler, pname, params); Ok(())};
17705		#[cfg(feature = "diagnose")]
17706		if let Ok(ret) = ret {
17707			return to_result("glGetSamplerParameterIiv", ret, self.glGetError());
17708		} else {
17709			return ret
17710		}
17711		#[cfg(not(feature = "diagnose"))]
17712		return ret;
17713	}
17714	#[inline(always)]
17715	fn glGetSamplerParameterfv(&self, sampler: GLuint, pname: GLenum, params: *mut GLfloat) -> Result<()> {
17716		#[cfg(feature = "catch_nullptr")]
17717		let ret = process_catch("glGetSamplerParameterfv", catch_unwind(||(self.getsamplerparameterfv)(sampler, pname, params)));
17718		#[cfg(not(feature = "catch_nullptr"))]
17719		let ret = {(self.getsamplerparameterfv)(sampler, pname, params); Ok(())};
17720		#[cfg(feature = "diagnose")]
17721		if let Ok(ret) = ret {
17722			return to_result("glGetSamplerParameterfv", ret, self.glGetError());
17723		} else {
17724			return ret
17725		}
17726		#[cfg(not(feature = "diagnose"))]
17727		return ret;
17728	}
17729	#[inline(always)]
17730	fn glGetSamplerParameterIuiv(&self, sampler: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()> {
17731		#[cfg(feature = "catch_nullptr")]
17732		let ret = process_catch("glGetSamplerParameterIuiv", catch_unwind(||(self.getsamplerparameteriuiv)(sampler, pname, params)));
17733		#[cfg(not(feature = "catch_nullptr"))]
17734		let ret = {(self.getsamplerparameteriuiv)(sampler, pname, params); Ok(())};
17735		#[cfg(feature = "diagnose")]
17736		if let Ok(ret) = ret {
17737			return to_result("glGetSamplerParameterIuiv", ret, self.glGetError());
17738		} else {
17739			return ret
17740		}
17741		#[cfg(not(feature = "diagnose"))]
17742		return ret;
17743	}
17744	#[inline(always)]
17745	fn glQueryCounter(&self, id: GLuint, target: GLenum) -> Result<()> {
17746		#[cfg(feature = "catch_nullptr")]
17747		let ret = process_catch("glQueryCounter", catch_unwind(||(self.querycounter)(id, target)));
17748		#[cfg(not(feature = "catch_nullptr"))]
17749		let ret = {(self.querycounter)(id, target); Ok(())};
17750		#[cfg(feature = "diagnose")]
17751		if let Ok(ret) = ret {
17752			return to_result("glQueryCounter", ret, self.glGetError());
17753		} else {
17754			return ret
17755		}
17756		#[cfg(not(feature = "diagnose"))]
17757		return ret;
17758	}
17759	#[inline(always)]
17760	fn glGetQueryObjecti64v(&self, id: GLuint, pname: GLenum, params: *mut GLint64) -> Result<()> {
17761		#[cfg(feature = "catch_nullptr")]
17762		let ret = process_catch("glGetQueryObjecti64v", catch_unwind(||(self.getqueryobjecti64v)(id, pname, params)));
17763		#[cfg(not(feature = "catch_nullptr"))]
17764		let ret = {(self.getqueryobjecti64v)(id, pname, params); Ok(())};
17765		#[cfg(feature = "diagnose")]
17766		if let Ok(ret) = ret {
17767			return to_result("glGetQueryObjecti64v", ret, self.glGetError());
17768		} else {
17769			return ret
17770		}
17771		#[cfg(not(feature = "diagnose"))]
17772		return ret;
17773	}
17774	#[inline(always)]
17775	fn glGetQueryObjectui64v(&self, id: GLuint, pname: GLenum, params: *mut GLuint64) -> Result<()> {
17776		#[cfg(feature = "catch_nullptr")]
17777		let ret = process_catch("glGetQueryObjectui64v", catch_unwind(||(self.getqueryobjectui64v)(id, pname, params)));
17778		#[cfg(not(feature = "catch_nullptr"))]
17779		let ret = {(self.getqueryobjectui64v)(id, pname, params); Ok(())};
17780		#[cfg(feature = "diagnose")]
17781		if let Ok(ret) = ret {
17782			return to_result("glGetQueryObjectui64v", ret, self.glGetError());
17783		} else {
17784			return ret
17785		}
17786		#[cfg(not(feature = "diagnose"))]
17787		return ret;
17788	}
17789	#[inline(always)]
17790	fn glVertexAttribDivisor(&self, index: GLuint, divisor: GLuint) -> Result<()> {
17791		#[cfg(feature = "catch_nullptr")]
17792		let ret = process_catch("glVertexAttribDivisor", catch_unwind(||(self.vertexattribdivisor)(index, divisor)));
17793		#[cfg(not(feature = "catch_nullptr"))]
17794		let ret = {(self.vertexattribdivisor)(index, divisor); Ok(())};
17795		#[cfg(feature = "diagnose")]
17796		if let Ok(ret) = ret {
17797			return to_result("glVertexAttribDivisor", ret, self.glGetError());
17798		} else {
17799			return ret
17800		}
17801		#[cfg(not(feature = "diagnose"))]
17802		return ret;
17803	}
17804	#[inline(always)]
17805	fn glVertexAttribP1ui(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint) -> Result<()> {
17806		#[cfg(feature = "catch_nullptr")]
17807		let ret = process_catch("glVertexAttribP1ui", catch_unwind(||(self.vertexattribp1ui)(index, type_, normalized, value)));
17808		#[cfg(not(feature = "catch_nullptr"))]
17809		let ret = {(self.vertexattribp1ui)(index, type_, normalized, value); Ok(())};
17810		#[cfg(feature = "diagnose")]
17811		if let Ok(ret) = ret {
17812			return to_result("glVertexAttribP1ui", ret, self.glGetError());
17813		} else {
17814			return ret
17815		}
17816		#[cfg(not(feature = "diagnose"))]
17817		return ret;
17818	}
17819	#[inline(always)]
17820	fn glVertexAttribP1uiv(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint) -> Result<()> {
17821		#[cfg(feature = "catch_nullptr")]
17822		let ret = process_catch("glVertexAttribP1uiv", catch_unwind(||(self.vertexattribp1uiv)(index, type_, normalized, value)));
17823		#[cfg(not(feature = "catch_nullptr"))]
17824		let ret = {(self.vertexattribp1uiv)(index, type_, normalized, value); Ok(())};
17825		#[cfg(feature = "diagnose")]
17826		if let Ok(ret) = ret {
17827			return to_result("glVertexAttribP1uiv", ret, self.glGetError());
17828		} else {
17829			return ret
17830		}
17831		#[cfg(not(feature = "diagnose"))]
17832		return ret;
17833	}
17834	#[inline(always)]
17835	fn glVertexAttribP2ui(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint) -> Result<()> {
17836		#[cfg(feature = "catch_nullptr")]
17837		let ret = process_catch("glVertexAttribP2ui", catch_unwind(||(self.vertexattribp2ui)(index, type_, normalized, value)));
17838		#[cfg(not(feature = "catch_nullptr"))]
17839		let ret = {(self.vertexattribp2ui)(index, type_, normalized, value); Ok(())};
17840		#[cfg(feature = "diagnose")]
17841		if let Ok(ret) = ret {
17842			return to_result("glVertexAttribP2ui", ret, self.glGetError());
17843		} else {
17844			return ret
17845		}
17846		#[cfg(not(feature = "diagnose"))]
17847		return ret;
17848	}
17849	#[inline(always)]
17850	fn glVertexAttribP2uiv(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint) -> Result<()> {
17851		#[cfg(feature = "catch_nullptr")]
17852		let ret = process_catch("glVertexAttribP2uiv", catch_unwind(||(self.vertexattribp2uiv)(index, type_, normalized, value)));
17853		#[cfg(not(feature = "catch_nullptr"))]
17854		let ret = {(self.vertexattribp2uiv)(index, type_, normalized, value); Ok(())};
17855		#[cfg(feature = "diagnose")]
17856		if let Ok(ret) = ret {
17857			return to_result("glVertexAttribP2uiv", ret, self.glGetError());
17858		} else {
17859			return ret
17860		}
17861		#[cfg(not(feature = "diagnose"))]
17862		return ret;
17863	}
17864	#[inline(always)]
17865	fn glVertexAttribP3ui(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint) -> Result<()> {
17866		#[cfg(feature = "catch_nullptr")]
17867		let ret = process_catch("glVertexAttribP3ui", catch_unwind(||(self.vertexattribp3ui)(index, type_, normalized, value)));
17868		#[cfg(not(feature = "catch_nullptr"))]
17869		let ret = {(self.vertexattribp3ui)(index, type_, normalized, value); Ok(())};
17870		#[cfg(feature = "diagnose")]
17871		if let Ok(ret) = ret {
17872			return to_result("glVertexAttribP3ui", ret, self.glGetError());
17873		} else {
17874			return ret
17875		}
17876		#[cfg(not(feature = "diagnose"))]
17877		return ret;
17878	}
17879	#[inline(always)]
17880	fn glVertexAttribP3uiv(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint) -> Result<()> {
17881		#[cfg(feature = "catch_nullptr")]
17882		let ret = process_catch("glVertexAttribP3uiv", catch_unwind(||(self.vertexattribp3uiv)(index, type_, normalized, value)));
17883		#[cfg(not(feature = "catch_nullptr"))]
17884		let ret = {(self.vertexattribp3uiv)(index, type_, normalized, value); Ok(())};
17885		#[cfg(feature = "diagnose")]
17886		if let Ok(ret) = ret {
17887			return to_result("glVertexAttribP3uiv", ret, self.glGetError());
17888		} else {
17889			return ret
17890		}
17891		#[cfg(not(feature = "diagnose"))]
17892		return ret;
17893	}
17894	#[inline(always)]
17895	fn glVertexAttribP4ui(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint) -> Result<()> {
17896		#[cfg(feature = "catch_nullptr")]
17897		let ret = process_catch("glVertexAttribP4ui", catch_unwind(||(self.vertexattribp4ui)(index, type_, normalized, value)));
17898		#[cfg(not(feature = "catch_nullptr"))]
17899		let ret = {(self.vertexattribp4ui)(index, type_, normalized, value); Ok(())};
17900		#[cfg(feature = "diagnose")]
17901		if let Ok(ret) = ret {
17902			return to_result("glVertexAttribP4ui", ret, self.glGetError());
17903		} else {
17904			return ret
17905		}
17906		#[cfg(not(feature = "diagnose"))]
17907		return ret;
17908	}
17909	#[inline(always)]
17910	fn glVertexAttribP4uiv(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint) -> Result<()> {
17911		#[cfg(feature = "catch_nullptr")]
17912		let ret = process_catch("glVertexAttribP4uiv", catch_unwind(||(self.vertexattribp4uiv)(index, type_, normalized, value)));
17913		#[cfg(not(feature = "catch_nullptr"))]
17914		let ret = {(self.vertexattribp4uiv)(index, type_, normalized, value); Ok(())};
17915		#[cfg(feature = "diagnose")]
17916		if let Ok(ret) = ret {
17917			return to_result("glVertexAttribP4uiv", ret, self.glGetError());
17918		} else {
17919			return ret
17920		}
17921		#[cfg(not(feature = "diagnose"))]
17922		return ret;
17923	}
17924	#[inline(always)]
17925	fn glVertexP2ui(&self, type_: GLenum, value: GLuint) -> Result<()> {
17926		#[cfg(feature = "catch_nullptr")]
17927		let ret = process_catch("glVertexP2ui", catch_unwind(||(self.vertexp2ui)(type_, value)));
17928		#[cfg(not(feature = "catch_nullptr"))]
17929		let ret = {(self.vertexp2ui)(type_, value); Ok(())};
17930		#[cfg(feature = "diagnose")]
17931		if let Ok(ret) = ret {
17932			return to_result("glVertexP2ui", ret, self.glGetError());
17933		} else {
17934			return ret
17935		}
17936		#[cfg(not(feature = "diagnose"))]
17937		return ret;
17938	}
17939	#[inline(always)]
17940	fn glVertexP2uiv(&self, type_: GLenum, value: *const GLuint) -> Result<()> {
17941		#[cfg(feature = "catch_nullptr")]
17942		let ret = process_catch("glVertexP2uiv", catch_unwind(||(self.vertexp2uiv)(type_, value)));
17943		#[cfg(not(feature = "catch_nullptr"))]
17944		let ret = {(self.vertexp2uiv)(type_, value); Ok(())};
17945		#[cfg(feature = "diagnose")]
17946		if let Ok(ret) = ret {
17947			return to_result("glVertexP2uiv", ret, self.glGetError());
17948		} else {
17949			return ret
17950		}
17951		#[cfg(not(feature = "diagnose"))]
17952		return ret;
17953	}
17954	#[inline(always)]
17955	fn glVertexP3ui(&self, type_: GLenum, value: GLuint) -> Result<()> {
17956		#[cfg(feature = "catch_nullptr")]
17957		let ret = process_catch("glVertexP3ui", catch_unwind(||(self.vertexp3ui)(type_, value)));
17958		#[cfg(not(feature = "catch_nullptr"))]
17959		let ret = {(self.vertexp3ui)(type_, value); Ok(())};
17960		#[cfg(feature = "diagnose")]
17961		if let Ok(ret) = ret {
17962			return to_result("glVertexP3ui", ret, self.glGetError());
17963		} else {
17964			return ret
17965		}
17966		#[cfg(not(feature = "diagnose"))]
17967		return ret;
17968	}
17969	#[inline(always)]
17970	fn glVertexP3uiv(&self, type_: GLenum, value: *const GLuint) -> Result<()> {
17971		#[cfg(feature = "catch_nullptr")]
17972		let ret = process_catch("glVertexP3uiv", catch_unwind(||(self.vertexp3uiv)(type_, value)));
17973		#[cfg(not(feature = "catch_nullptr"))]
17974		let ret = {(self.vertexp3uiv)(type_, value); Ok(())};
17975		#[cfg(feature = "diagnose")]
17976		if let Ok(ret) = ret {
17977			return to_result("glVertexP3uiv", ret, self.glGetError());
17978		} else {
17979			return ret
17980		}
17981		#[cfg(not(feature = "diagnose"))]
17982		return ret;
17983	}
17984	#[inline(always)]
17985	fn glVertexP4ui(&self, type_: GLenum, value: GLuint) -> Result<()> {
17986		#[cfg(feature = "catch_nullptr")]
17987		let ret = process_catch("glVertexP4ui", catch_unwind(||(self.vertexp4ui)(type_, value)));
17988		#[cfg(not(feature = "catch_nullptr"))]
17989		let ret = {(self.vertexp4ui)(type_, value); Ok(())};
17990		#[cfg(feature = "diagnose")]
17991		if let Ok(ret) = ret {
17992			return to_result("glVertexP4ui", ret, self.glGetError());
17993		} else {
17994			return ret
17995		}
17996		#[cfg(not(feature = "diagnose"))]
17997		return ret;
17998	}
17999	#[inline(always)]
18000	fn glVertexP4uiv(&self, type_: GLenum, value: *const GLuint) -> Result<()> {
18001		#[cfg(feature = "catch_nullptr")]
18002		let ret = process_catch("glVertexP4uiv", catch_unwind(||(self.vertexp4uiv)(type_, value)));
18003		#[cfg(not(feature = "catch_nullptr"))]
18004		let ret = {(self.vertexp4uiv)(type_, value); Ok(())};
18005		#[cfg(feature = "diagnose")]
18006		if let Ok(ret) = ret {
18007			return to_result("glVertexP4uiv", ret, self.glGetError());
18008		} else {
18009			return ret
18010		}
18011		#[cfg(not(feature = "diagnose"))]
18012		return ret;
18013	}
18014	#[inline(always)]
18015	fn glTexCoordP1ui(&self, type_: GLenum, coords: GLuint) -> Result<()> {
18016		#[cfg(feature = "catch_nullptr")]
18017		let ret = process_catch("glTexCoordP1ui", catch_unwind(||(self.texcoordp1ui)(type_, coords)));
18018		#[cfg(not(feature = "catch_nullptr"))]
18019		let ret = {(self.texcoordp1ui)(type_, coords); Ok(())};
18020		#[cfg(feature = "diagnose")]
18021		if let Ok(ret) = ret {
18022			return to_result("glTexCoordP1ui", ret, self.glGetError());
18023		} else {
18024			return ret
18025		}
18026		#[cfg(not(feature = "diagnose"))]
18027		return ret;
18028	}
18029	#[inline(always)]
18030	fn glTexCoordP1uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()> {
18031		#[cfg(feature = "catch_nullptr")]
18032		let ret = process_catch("glTexCoordP1uiv", catch_unwind(||(self.texcoordp1uiv)(type_, coords)));
18033		#[cfg(not(feature = "catch_nullptr"))]
18034		let ret = {(self.texcoordp1uiv)(type_, coords); Ok(())};
18035		#[cfg(feature = "diagnose")]
18036		if let Ok(ret) = ret {
18037			return to_result("glTexCoordP1uiv", ret, self.glGetError());
18038		} else {
18039			return ret
18040		}
18041		#[cfg(not(feature = "diagnose"))]
18042		return ret;
18043	}
18044	#[inline(always)]
18045	fn glTexCoordP2ui(&self, type_: GLenum, coords: GLuint) -> Result<()> {
18046		#[cfg(feature = "catch_nullptr")]
18047		let ret = process_catch("glTexCoordP2ui", catch_unwind(||(self.texcoordp2ui)(type_, coords)));
18048		#[cfg(not(feature = "catch_nullptr"))]
18049		let ret = {(self.texcoordp2ui)(type_, coords); Ok(())};
18050		#[cfg(feature = "diagnose")]
18051		if let Ok(ret) = ret {
18052			return to_result("glTexCoordP2ui", ret, self.glGetError());
18053		} else {
18054			return ret
18055		}
18056		#[cfg(not(feature = "diagnose"))]
18057		return ret;
18058	}
18059	#[inline(always)]
18060	fn glTexCoordP2uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()> {
18061		#[cfg(feature = "catch_nullptr")]
18062		let ret = process_catch("glTexCoordP2uiv", catch_unwind(||(self.texcoordp2uiv)(type_, coords)));
18063		#[cfg(not(feature = "catch_nullptr"))]
18064		let ret = {(self.texcoordp2uiv)(type_, coords); Ok(())};
18065		#[cfg(feature = "diagnose")]
18066		if let Ok(ret) = ret {
18067			return to_result("glTexCoordP2uiv", ret, self.glGetError());
18068		} else {
18069			return ret
18070		}
18071		#[cfg(not(feature = "diagnose"))]
18072		return ret;
18073	}
18074	#[inline(always)]
18075	fn glTexCoordP3ui(&self, type_: GLenum, coords: GLuint) -> Result<()> {
18076		#[cfg(feature = "catch_nullptr")]
18077		let ret = process_catch("glTexCoordP3ui", catch_unwind(||(self.texcoordp3ui)(type_, coords)));
18078		#[cfg(not(feature = "catch_nullptr"))]
18079		let ret = {(self.texcoordp3ui)(type_, coords); Ok(())};
18080		#[cfg(feature = "diagnose")]
18081		if let Ok(ret) = ret {
18082			return to_result("glTexCoordP3ui", ret, self.glGetError());
18083		} else {
18084			return ret
18085		}
18086		#[cfg(not(feature = "diagnose"))]
18087		return ret;
18088	}
18089	#[inline(always)]
18090	fn glTexCoordP3uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()> {
18091		#[cfg(feature = "catch_nullptr")]
18092		let ret = process_catch("glTexCoordP3uiv", catch_unwind(||(self.texcoordp3uiv)(type_, coords)));
18093		#[cfg(not(feature = "catch_nullptr"))]
18094		let ret = {(self.texcoordp3uiv)(type_, coords); Ok(())};
18095		#[cfg(feature = "diagnose")]
18096		if let Ok(ret) = ret {
18097			return to_result("glTexCoordP3uiv", ret, self.glGetError());
18098		} else {
18099			return ret
18100		}
18101		#[cfg(not(feature = "diagnose"))]
18102		return ret;
18103	}
18104	#[inline(always)]
18105	fn glTexCoordP4ui(&self, type_: GLenum, coords: GLuint) -> Result<()> {
18106		#[cfg(feature = "catch_nullptr")]
18107		let ret = process_catch("glTexCoordP4ui", catch_unwind(||(self.texcoordp4ui)(type_, coords)));
18108		#[cfg(not(feature = "catch_nullptr"))]
18109		let ret = {(self.texcoordp4ui)(type_, coords); Ok(())};
18110		#[cfg(feature = "diagnose")]
18111		if let Ok(ret) = ret {
18112			return to_result("glTexCoordP4ui", ret, self.glGetError());
18113		} else {
18114			return ret
18115		}
18116		#[cfg(not(feature = "diagnose"))]
18117		return ret;
18118	}
18119	#[inline(always)]
18120	fn glTexCoordP4uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()> {
18121		#[cfg(feature = "catch_nullptr")]
18122		let ret = process_catch("glTexCoordP4uiv", catch_unwind(||(self.texcoordp4uiv)(type_, coords)));
18123		#[cfg(not(feature = "catch_nullptr"))]
18124		let ret = {(self.texcoordp4uiv)(type_, coords); Ok(())};
18125		#[cfg(feature = "diagnose")]
18126		if let Ok(ret) = ret {
18127			return to_result("glTexCoordP4uiv", ret, self.glGetError());
18128		} else {
18129			return ret
18130		}
18131		#[cfg(not(feature = "diagnose"))]
18132		return ret;
18133	}
18134	#[inline(always)]
18135	fn glMultiTexCoordP1ui(&self, texture: GLenum, type_: GLenum, coords: GLuint) -> Result<()> {
18136		#[cfg(feature = "catch_nullptr")]
18137		let ret = process_catch("glMultiTexCoordP1ui", catch_unwind(||(self.multitexcoordp1ui)(texture, type_, coords)));
18138		#[cfg(not(feature = "catch_nullptr"))]
18139		let ret = {(self.multitexcoordp1ui)(texture, type_, coords); Ok(())};
18140		#[cfg(feature = "diagnose")]
18141		if let Ok(ret) = ret {
18142			return to_result("glMultiTexCoordP1ui", ret, self.glGetError());
18143		} else {
18144			return ret
18145		}
18146		#[cfg(not(feature = "diagnose"))]
18147		return ret;
18148	}
18149	#[inline(always)]
18150	fn glMultiTexCoordP1uiv(&self, texture: GLenum, type_: GLenum, coords: *const GLuint) -> Result<()> {
18151		#[cfg(feature = "catch_nullptr")]
18152		let ret = process_catch("glMultiTexCoordP1uiv", catch_unwind(||(self.multitexcoordp1uiv)(texture, type_, coords)));
18153		#[cfg(not(feature = "catch_nullptr"))]
18154		let ret = {(self.multitexcoordp1uiv)(texture, type_, coords); Ok(())};
18155		#[cfg(feature = "diagnose")]
18156		if let Ok(ret) = ret {
18157			return to_result("glMultiTexCoordP1uiv", ret, self.glGetError());
18158		} else {
18159			return ret
18160		}
18161		#[cfg(not(feature = "diagnose"))]
18162		return ret;
18163	}
18164	#[inline(always)]
18165	fn glMultiTexCoordP2ui(&self, texture: GLenum, type_: GLenum, coords: GLuint) -> Result<()> {
18166		#[cfg(feature = "catch_nullptr")]
18167		let ret = process_catch("glMultiTexCoordP2ui", catch_unwind(||(self.multitexcoordp2ui)(texture, type_, coords)));
18168		#[cfg(not(feature = "catch_nullptr"))]
18169		let ret = {(self.multitexcoordp2ui)(texture, type_, coords); Ok(())};
18170		#[cfg(feature = "diagnose")]
18171		if let Ok(ret) = ret {
18172			return to_result("glMultiTexCoordP2ui", ret, self.glGetError());
18173		} else {
18174			return ret
18175		}
18176		#[cfg(not(feature = "diagnose"))]
18177		return ret;
18178	}
18179	#[inline(always)]
18180	fn glMultiTexCoordP2uiv(&self, texture: GLenum, type_: GLenum, coords: *const GLuint) -> Result<()> {
18181		#[cfg(feature = "catch_nullptr")]
18182		let ret = process_catch("glMultiTexCoordP2uiv", catch_unwind(||(self.multitexcoordp2uiv)(texture, type_, coords)));
18183		#[cfg(not(feature = "catch_nullptr"))]
18184		let ret = {(self.multitexcoordp2uiv)(texture, type_, coords); Ok(())};
18185		#[cfg(feature = "diagnose")]
18186		if let Ok(ret) = ret {
18187			return to_result("glMultiTexCoordP2uiv", ret, self.glGetError());
18188		} else {
18189			return ret
18190		}
18191		#[cfg(not(feature = "diagnose"))]
18192		return ret;
18193	}
18194	#[inline(always)]
18195	fn glMultiTexCoordP3ui(&self, texture: GLenum, type_: GLenum, coords: GLuint) -> Result<()> {
18196		#[cfg(feature = "catch_nullptr")]
18197		let ret = process_catch("glMultiTexCoordP3ui", catch_unwind(||(self.multitexcoordp3ui)(texture, type_, coords)));
18198		#[cfg(not(feature = "catch_nullptr"))]
18199		let ret = {(self.multitexcoordp3ui)(texture, type_, coords); Ok(())};
18200		#[cfg(feature = "diagnose")]
18201		if let Ok(ret) = ret {
18202			return to_result("glMultiTexCoordP3ui", ret, self.glGetError());
18203		} else {
18204			return ret
18205		}
18206		#[cfg(not(feature = "diagnose"))]
18207		return ret;
18208	}
18209	#[inline(always)]
18210	fn glMultiTexCoordP3uiv(&self, texture: GLenum, type_: GLenum, coords: *const GLuint) -> Result<()> {
18211		#[cfg(feature = "catch_nullptr")]
18212		let ret = process_catch("glMultiTexCoordP3uiv", catch_unwind(||(self.multitexcoordp3uiv)(texture, type_, coords)));
18213		#[cfg(not(feature = "catch_nullptr"))]
18214		let ret = {(self.multitexcoordp3uiv)(texture, type_, coords); Ok(())};
18215		#[cfg(feature = "diagnose")]
18216		if let Ok(ret) = ret {
18217			return to_result("glMultiTexCoordP3uiv", ret, self.glGetError());
18218		} else {
18219			return ret
18220		}
18221		#[cfg(not(feature = "diagnose"))]
18222		return ret;
18223	}
18224	#[inline(always)]
18225	fn glMultiTexCoordP4ui(&self, texture: GLenum, type_: GLenum, coords: GLuint) -> Result<()> {
18226		#[cfg(feature = "catch_nullptr")]
18227		let ret = process_catch("glMultiTexCoordP4ui", catch_unwind(||(self.multitexcoordp4ui)(texture, type_, coords)));
18228		#[cfg(not(feature = "catch_nullptr"))]
18229		let ret = {(self.multitexcoordp4ui)(texture, type_, coords); Ok(())};
18230		#[cfg(feature = "diagnose")]
18231		if let Ok(ret) = ret {
18232			return to_result("glMultiTexCoordP4ui", ret, self.glGetError());
18233		} else {
18234			return ret
18235		}
18236		#[cfg(not(feature = "diagnose"))]
18237		return ret;
18238	}
18239	#[inline(always)]
18240	fn glMultiTexCoordP4uiv(&self, texture: GLenum, type_: GLenum, coords: *const GLuint) -> Result<()> {
18241		#[cfg(feature = "catch_nullptr")]
18242		let ret = process_catch("glMultiTexCoordP4uiv", catch_unwind(||(self.multitexcoordp4uiv)(texture, type_, coords)));
18243		#[cfg(not(feature = "catch_nullptr"))]
18244		let ret = {(self.multitexcoordp4uiv)(texture, type_, coords); Ok(())};
18245		#[cfg(feature = "diagnose")]
18246		if let Ok(ret) = ret {
18247			return to_result("glMultiTexCoordP4uiv", ret, self.glGetError());
18248		} else {
18249			return ret
18250		}
18251		#[cfg(not(feature = "diagnose"))]
18252		return ret;
18253	}
18254	#[inline(always)]
18255	fn glNormalP3ui(&self, type_: GLenum, coords: GLuint) -> Result<()> {
18256		#[cfg(feature = "catch_nullptr")]
18257		let ret = process_catch("glNormalP3ui", catch_unwind(||(self.normalp3ui)(type_, coords)));
18258		#[cfg(not(feature = "catch_nullptr"))]
18259		let ret = {(self.normalp3ui)(type_, coords); Ok(())};
18260		#[cfg(feature = "diagnose")]
18261		if let Ok(ret) = ret {
18262			return to_result("glNormalP3ui", ret, self.glGetError());
18263		} else {
18264			return ret
18265		}
18266		#[cfg(not(feature = "diagnose"))]
18267		return ret;
18268	}
18269	#[inline(always)]
18270	fn glNormalP3uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()> {
18271		#[cfg(feature = "catch_nullptr")]
18272		let ret = process_catch("glNormalP3uiv", catch_unwind(||(self.normalp3uiv)(type_, coords)));
18273		#[cfg(not(feature = "catch_nullptr"))]
18274		let ret = {(self.normalp3uiv)(type_, coords); Ok(())};
18275		#[cfg(feature = "diagnose")]
18276		if let Ok(ret) = ret {
18277			return to_result("glNormalP3uiv", ret, self.glGetError());
18278		} else {
18279			return ret
18280		}
18281		#[cfg(not(feature = "diagnose"))]
18282		return ret;
18283	}
18284	#[inline(always)]
18285	fn glColorP3ui(&self, type_: GLenum, color: GLuint) -> Result<()> {
18286		#[cfg(feature = "catch_nullptr")]
18287		let ret = process_catch("glColorP3ui", catch_unwind(||(self.colorp3ui)(type_, color)));
18288		#[cfg(not(feature = "catch_nullptr"))]
18289		let ret = {(self.colorp3ui)(type_, color); Ok(())};
18290		#[cfg(feature = "diagnose")]
18291		if let Ok(ret) = ret {
18292			return to_result("glColorP3ui", ret, self.glGetError());
18293		} else {
18294			return ret
18295		}
18296		#[cfg(not(feature = "diagnose"))]
18297		return ret;
18298	}
18299	#[inline(always)]
18300	fn glColorP3uiv(&self, type_: GLenum, color: *const GLuint) -> Result<()> {
18301		#[cfg(feature = "catch_nullptr")]
18302		let ret = process_catch("glColorP3uiv", catch_unwind(||(self.colorp3uiv)(type_, color)));
18303		#[cfg(not(feature = "catch_nullptr"))]
18304		let ret = {(self.colorp3uiv)(type_, color); Ok(())};
18305		#[cfg(feature = "diagnose")]
18306		if let Ok(ret) = ret {
18307			return to_result("glColorP3uiv", ret, self.glGetError());
18308		} else {
18309			return ret
18310		}
18311		#[cfg(not(feature = "diagnose"))]
18312		return ret;
18313	}
18314	#[inline(always)]
18315	fn glColorP4ui(&self, type_: GLenum, color: GLuint) -> Result<()> {
18316		#[cfg(feature = "catch_nullptr")]
18317		let ret = process_catch("glColorP4ui", catch_unwind(||(self.colorp4ui)(type_, color)));
18318		#[cfg(not(feature = "catch_nullptr"))]
18319		let ret = {(self.colorp4ui)(type_, color); Ok(())};
18320		#[cfg(feature = "diagnose")]
18321		if let Ok(ret) = ret {
18322			return to_result("glColorP4ui", ret, self.glGetError());
18323		} else {
18324			return ret
18325		}
18326		#[cfg(not(feature = "diagnose"))]
18327		return ret;
18328	}
18329	#[inline(always)]
18330	fn glColorP4uiv(&self, type_: GLenum, color: *const GLuint) -> Result<()> {
18331		#[cfg(feature = "catch_nullptr")]
18332		let ret = process_catch("glColorP4uiv", catch_unwind(||(self.colorp4uiv)(type_, color)));
18333		#[cfg(not(feature = "catch_nullptr"))]
18334		let ret = {(self.colorp4uiv)(type_, color); Ok(())};
18335		#[cfg(feature = "diagnose")]
18336		if let Ok(ret) = ret {
18337			return to_result("glColorP4uiv", ret, self.glGetError());
18338		} else {
18339			return ret
18340		}
18341		#[cfg(not(feature = "diagnose"))]
18342		return ret;
18343	}
18344	#[inline(always)]
18345	fn glSecondaryColorP3ui(&self, type_: GLenum, color: GLuint) -> Result<()> {
18346		#[cfg(feature = "catch_nullptr")]
18347		let ret = process_catch("glSecondaryColorP3ui", catch_unwind(||(self.secondarycolorp3ui)(type_, color)));
18348		#[cfg(not(feature = "catch_nullptr"))]
18349		let ret = {(self.secondarycolorp3ui)(type_, color); Ok(())};
18350		#[cfg(feature = "diagnose")]
18351		if let Ok(ret) = ret {
18352			return to_result("glSecondaryColorP3ui", ret, self.glGetError());
18353		} else {
18354			return ret
18355		}
18356		#[cfg(not(feature = "diagnose"))]
18357		return ret;
18358	}
18359	#[inline(always)]
18360	fn glSecondaryColorP3uiv(&self, type_: GLenum, color: *const GLuint) -> Result<()> {
18361		#[cfg(feature = "catch_nullptr")]
18362		let ret = process_catch("glSecondaryColorP3uiv", catch_unwind(||(self.secondarycolorp3uiv)(type_, color)));
18363		#[cfg(not(feature = "catch_nullptr"))]
18364		let ret = {(self.secondarycolorp3uiv)(type_, color); Ok(())};
18365		#[cfg(feature = "diagnose")]
18366		if let Ok(ret) = ret {
18367			return to_result("glSecondaryColorP3uiv", ret, self.glGetError());
18368		} else {
18369			return ret
18370		}
18371		#[cfg(not(feature = "diagnose"))]
18372		return ret;
18373	}
18374}
18375
18376impl Version33 {
18377	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
18378		let (_spec, major, minor, release) = base.get_version();
18379		if (major, minor, release) < (3, 3, 0) {
18380			return Self::default();
18381		}
18382		Self {
18383			available: true,
18384			geterror: {let proc = get_proc_address("glGetError"); if proc.is_null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
18385			bindfragdatalocationindexed: {let proc = get_proc_address("glBindFragDataLocationIndexed"); if proc.is_null() {dummy_pfnglbindfragdatalocationindexedproc} else {unsafe{transmute(proc)}}},
18386			getfragdataindex: {let proc = get_proc_address("glGetFragDataIndex"); if proc.is_null() {dummy_pfnglgetfragdataindexproc} else {unsafe{transmute(proc)}}},
18387			gensamplers: {let proc = get_proc_address("glGenSamplers"); if proc.is_null() {dummy_pfnglgensamplersproc} else {unsafe{transmute(proc)}}},
18388			deletesamplers: {let proc = get_proc_address("glDeleteSamplers"); if proc.is_null() {dummy_pfngldeletesamplersproc} else {unsafe{transmute(proc)}}},
18389			issampler: {let proc = get_proc_address("glIsSampler"); if proc.is_null() {dummy_pfnglissamplerproc} else {unsafe{transmute(proc)}}},
18390			bindsampler: {let proc = get_proc_address("glBindSampler"); if proc.is_null() {dummy_pfnglbindsamplerproc} else {unsafe{transmute(proc)}}},
18391			samplerparameteri: {let proc = get_proc_address("glSamplerParameteri"); if proc.is_null() {dummy_pfnglsamplerparameteriproc} else {unsafe{transmute(proc)}}},
18392			samplerparameteriv: {let proc = get_proc_address("glSamplerParameteriv"); if proc.is_null() {dummy_pfnglsamplerparameterivproc} else {unsafe{transmute(proc)}}},
18393			samplerparameterf: {let proc = get_proc_address("glSamplerParameterf"); if proc.is_null() {dummy_pfnglsamplerparameterfproc} else {unsafe{transmute(proc)}}},
18394			samplerparameterfv: {let proc = get_proc_address("glSamplerParameterfv"); if proc.is_null() {dummy_pfnglsamplerparameterfvproc} else {unsafe{transmute(proc)}}},
18395			samplerparameteriiv: {let proc = get_proc_address("glSamplerParameterIiv"); if proc.is_null() {dummy_pfnglsamplerparameteriivproc} else {unsafe{transmute(proc)}}},
18396			samplerparameteriuiv: {let proc = get_proc_address("glSamplerParameterIuiv"); if proc.is_null() {dummy_pfnglsamplerparameteriuivproc} else {unsafe{transmute(proc)}}},
18397			getsamplerparameteriv: {let proc = get_proc_address("glGetSamplerParameteriv"); if proc.is_null() {dummy_pfnglgetsamplerparameterivproc} else {unsafe{transmute(proc)}}},
18398			getsamplerparameteriiv: {let proc = get_proc_address("glGetSamplerParameterIiv"); if proc.is_null() {dummy_pfnglgetsamplerparameteriivproc} else {unsafe{transmute(proc)}}},
18399			getsamplerparameterfv: {let proc = get_proc_address("glGetSamplerParameterfv"); if proc.is_null() {dummy_pfnglgetsamplerparameterfvproc} else {unsafe{transmute(proc)}}},
18400			getsamplerparameteriuiv: {let proc = get_proc_address("glGetSamplerParameterIuiv"); if proc.is_null() {dummy_pfnglgetsamplerparameteriuivproc} else {unsafe{transmute(proc)}}},
18401			querycounter: {let proc = get_proc_address("glQueryCounter"); if proc.is_null() {dummy_pfnglquerycounterproc} else {unsafe{transmute(proc)}}},
18402			getqueryobjecti64v: {let proc = get_proc_address("glGetQueryObjecti64v"); if proc.is_null() {dummy_pfnglgetqueryobjecti64vproc} else {unsafe{transmute(proc)}}},
18403			getqueryobjectui64v: {let proc = get_proc_address("glGetQueryObjectui64v"); if proc.is_null() {dummy_pfnglgetqueryobjectui64vproc} else {unsafe{transmute(proc)}}},
18404			vertexattribdivisor: {let proc = get_proc_address("glVertexAttribDivisor"); if proc.is_null() {dummy_pfnglvertexattribdivisorproc} else {unsafe{transmute(proc)}}},
18405			vertexattribp1ui: {let proc = get_proc_address("glVertexAttribP1ui"); if proc.is_null() {dummy_pfnglvertexattribp1uiproc} else {unsafe{transmute(proc)}}},
18406			vertexattribp1uiv: {let proc = get_proc_address("glVertexAttribP1uiv"); if proc.is_null() {dummy_pfnglvertexattribp1uivproc} else {unsafe{transmute(proc)}}},
18407			vertexattribp2ui: {let proc = get_proc_address("glVertexAttribP2ui"); if proc.is_null() {dummy_pfnglvertexattribp2uiproc} else {unsafe{transmute(proc)}}},
18408			vertexattribp2uiv: {let proc = get_proc_address("glVertexAttribP2uiv"); if proc.is_null() {dummy_pfnglvertexattribp2uivproc} else {unsafe{transmute(proc)}}},
18409			vertexattribp3ui: {let proc = get_proc_address("glVertexAttribP3ui"); if proc.is_null() {dummy_pfnglvertexattribp3uiproc} else {unsafe{transmute(proc)}}},
18410			vertexattribp3uiv: {let proc = get_proc_address("glVertexAttribP3uiv"); if proc.is_null() {dummy_pfnglvertexattribp3uivproc} else {unsafe{transmute(proc)}}},
18411			vertexattribp4ui: {let proc = get_proc_address("glVertexAttribP4ui"); if proc.is_null() {dummy_pfnglvertexattribp4uiproc} else {unsafe{transmute(proc)}}},
18412			vertexattribp4uiv: {let proc = get_proc_address("glVertexAttribP4uiv"); if proc.is_null() {dummy_pfnglvertexattribp4uivproc} else {unsafe{transmute(proc)}}},
18413			vertexp2ui: {let proc = get_proc_address("glVertexP2ui"); if proc.is_null() {dummy_pfnglvertexp2uiproc} else {unsafe{transmute(proc)}}},
18414			vertexp2uiv: {let proc = get_proc_address("glVertexP2uiv"); if proc.is_null() {dummy_pfnglvertexp2uivproc} else {unsafe{transmute(proc)}}},
18415			vertexp3ui: {let proc = get_proc_address("glVertexP3ui"); if proc.is_null() {dummy_pfnglvertexp3uiproc} else {unsafe{transmute(proc)}}},
18416			vertexp3uiv: {let proc = get_proc_address("glVertexP3uiv"); if proc.is_null() {dummy_pfnglvertexp3uivproc} else {unsafe{transmute(proc)}}},
18417			vertexp4ui: {let proc = get_proc_address("glVertexP4ui"); if proc.is_null() {dummy_pfnglvertexp4uiproc} else {unsafe{transmute(proc)}}},
18418			vertexp4uiv: {let proc = get_proc_address("glVertexP4uiv"); if proc.is_null() {dummy_pfnglvertexp4uivproc} else {unsafe{transmute(proc)}}},
18419			texcoordp1ui: {let proc = get_proc_address("glTexCoordP1ui"); if proc.is_null() {dummy_pfngltexcoordp1uiproc} else {unsafe{transmute(proc)}}},
18420			texcoordp1uiv: {let proc = get_proc_address("glTexCoordP1uiv"); if proc.is_null() {dummy_pfngltexcoordp1uivproc} else {unsafe{transmute(proc)}}},
18421			texcoordp2ui: {let proc = get_proc_address("glTexCoordP2ui"); if proc.is_null() {dummy_pfngltexcoordp2uiproc} else {unsafe{transmute(proc)}}},
18422			texcoordp2uiv: {let proc = get_proc_address("glTexCoordP2uiv"); if proc.is_null() {dummy_pfngltexcoordp2uivproc} else {unsafe{transmute(proc)}}},
18423			texcoordp3ui: {let proc = get_proc_address("glTexCoordP3ui"); if proc.is_null() {dummy_pfngltexcoordp3uiproc} else {unsafe{transmute(proc)}}},
18424			texcoordp3uiv: {let proc = get_proc_address("glTexCoordP3uiv"); if proc.is_null() {dummy_pfngltexcoordp3uivproc} else {unsafe{transmute(proc)}}},
18425			texcoordp4ui: {let proc = get_proc_address("glTexCoordP4ui"); if proc.is_null() {dummy_pfngltexcoordp4uiproc} else {unsafe{transmute(proc)}}},
18426			texcoordp4uiv: {let proc = get_proc_address("glTexCoordP4uiv"); if proc.is_null() {dummy_pfngltexcoordp4uivproc} else {unsafe{transmute(proc)}}},
18427			multitexcoordp1ui: {let proc = get_proc_address("glMultiTexCoordP1ui"); if proc.is_null() {dummy_pfnglmultitexcoordp1uiproc} else {unsafe{transmute(proc)}}},
18428			multitexcoordp1uiv: {let proc = get_proc_address("glMultiTexCoordP1uiv"); if proc.is_null() {dummy_pfnglmultitexcoordp1uivproc} else {unsafe{transmute(proc)}}},
18429			multitexcoordp2ui: {let proc = get_proc_address("glMultiTexCoordP2ui"); if proc.is_null() {dummy_pfnglmultitexcoordp2uiproc} else {unsafe{transmute(proc)}}},
18430			multitexcoordp2uiv: {let proc = get_proc_address("glMultiTexCoordP2uiv"); if proc.is_null() {dummy_pfnglmultitexcoordp2uivproc} else {unsafe{transmute(proc)}}},
18431			multitexcoordp3ui: {let proc = get_proc_address("glMultiTexCoordP3ui"); if proc.is_null() {dummy_pfnglmultitexcoordp3uiproc} else {unsafe{transmute(proc)}}},
18432			multitexcoordp3uiv: {let proc = get_proc_address("glMultiTexCoordP3uiv"); if proc.is_null() {dummy_pfnglmultitexcoordp3uivproc} else {unsafe{transmute(proc)}}},
18433			multitexcoordp4ui: {let proc = get_proc_address("glMultiTexCoordP4ui"); if proc.is_null() {dummy_pfnglmultitexcoordp4uiproc} else {unsafe{transmute(proc)}}},
18434			multitexcoordp4uiv: {let proc = get_proc_address("glMultiTexCoordP4uiv"); if proc.is_null() {dummy_pfnglmultitexcoordp4uivproc} else {unsafe{transmute(proc)}}},
18435			normalp3ui: {let proc = get_proc_address("glNormalP3ui"); if proc.is_null() {dummy_pfnglnormalp3uiproc} else {unsafe{transmute(proc)}}},
18436			normalp3uiv: {let proc = get_proc_address("glNormalP3uiv"); if proc.is_null() {dummy_pfnglnormalp3uivproc} else {unsafe{transmute(proc)}}},
18437			colorp3ui: {let proc = get_proc_address("glColorP3ui"); if proc.is_null() {dummy_pfnglcolorp3uiproc} else {unsafe{transmute(proc)}}},
18438			colorp3uiv: {let proc = get_proc_address("glColorP3uiv"); if proc.is_null() {dummy_pfnglcolorp3uivproc} else {unsafe{transmute(proc)}}},
18439			colorp4ui: {let proc = get_proc_address("glColorP4ui"); if proc.is_null() {dummy_pfnglcolorp4uiproc} else {unsafe{transmute(proc)}}},
18440			colorp4uiv: {let proc = get_proc_address("glColorP4uiv"); if proc.is_null() {dummy_pfnglcolorp4uivproc} else {unsafe{transmute(proc)}}},
18441			secondarycolorp3ui: {let proc = get_proc_address("glSecondaryColorP3ui"); if proc.is_null() {dummy_pfnglsecondarycolorp3uiproc} else {unsafe{transmute(proc)}}},
18442			secondarycolorp3uiv: {let proc = get_proc_address("glSecondaryColorP3uiv"); if proc.is_null() {dummy_pfnglsecondarycolorp3uivproc} else {unsafe{transmute(proc)}}},
18443		}
18444	}
18445	#[inline(always)]
18446	pub fn get_available(&self) -> bool {
18447		self.available
18448	}
18449}
18450
18451impl Default for Version33 {
18452	fn default() -> Self {
18453		Self {
18454			available: false,
18455			geterror: dummy_pfnglgeterrorproc,
18456			bindfragdatalocationindexed: dummy_pfnglbindfragdatalocationindexedproc,
18457			getfragdataindex: dummy_pfnglgetfragdataindexproc,
18458			gensamplers: dummy_pfnglgensamplersproc,
18459			deletesamplers: dummy_pfngldeletesamplersproc,
18460			issampler: dummy_pfnglissamplerproc,
18461			bindsampler: dummy_pfnglbindsamplerproc,
18462			samplerparameteri: dummy_pfnglsamplerparameteriproc,
18463			samplerparameteriv: dummy_pfnglsamplerparameterivproc,
18464			samplerparameterf: dummy_pfnglsamplerparameterfproc,
18465			samplerparameterfv: dummy_pfnglsamplerparameterfvproc,
18466			samplerparameteriiv: dummy_pfnglsamplerparameteriivproc,
18467			samplerparameteriuiv: dummy_pfnglsamplerparameteriuivproc,
18468			getsamplerparameteriv: dummy_pfnglgetsamplerparameterivproc,
18469			getsamplerparameteriiv: dummy_pfnglgetsamplerparameteriivproc,
18470			getsamplerparameterfv: dummy_pfnglgetsamplerparameterfvproc,
18471			getsamplerparameteriuiv: dummy_pfnglgetsamplerparameteriuivproc,
18472			querycounter: dummy_pfnglquerycounterproc,
18473			getqueryobjecti64v: dummy_pfnglgetqueryobjecti64vproc,
18474			getqueryobjectui64v: dummy_pfnglgetqueryobjectui64vproc,
18475			vertexattribdivisor: dummy_pfnglvertexattribdivisorproc,
18476			vertexattribp1ui: dummy_pfnglvertexattribp1uiproc,
18477			vertexattribp1uiv: dummy_pfnglvertexattribp1uivproc,
18478			vertexattribp2ui: dummy_pfnglvertexattribp2uiproc,
18479			vertexattribp2uiv: dummy_pfnglvertexattribp2uivproc,
18480			vertexattribp3ui: dummy_pfnglvertexattribp3uiproc,
18481			vertexattribp3uiv: dummy_pfnglvertexattribp3uivproc,
18482			vertexattribp4ui: dummy_pfnglvertexattribp4uiproc,
18483			vertexattribp4uiv: dummy_pfnglvertexattribp4uivproc,
18484			vertexp2ui: dummy_pfnglvertexp2uiproc,
18485			vertexp2uiv: dummy_pfnglvertexp2uivproc,
18486			vertexp3ui: dummy_pfnglvertexp3uiproc,
18487			vertexp3uiv: dummy_pfnglvertexp3uivproc,
18488			vertexp4ui: dummy_pfnglvertexp4uiproc,
18489			vertexp4uiv: dummy_pfnglvertexp4uivproc,
18490			texcoordp1ui: dummy_pfngltexcoordp1uiproc,
18491			texcoordp1uiv: dummy_pfngltexcoordp1uivproc,
18492			texcoordp2ui: dummy_pfngltexcoordp2uiproc,
18493			texcoordp2uiv: dummy_pfngltexcoordp2uivproc,
18494			texcoordp3ui: dummy_pfngltexcoordp3uiproc,
18495			texcoordp3uiv: dummy_pfngltexcoordp3uivproc,
18496			texcoordp4ui: dummy_pfngltexcoordp4uiproc,
18497			texcoordp4uiv: dummy_pfngltexcoordp4uivproc,
18498			multitexcoordp1ui: dummy_pfnglmultitexcoordp1uiproc,
18499			multitexcoordp1uiv: dummy_pfnglmultitexcoordp1uivproc,
18500			multitexcoordp2ui: dummy_pfnglmultitexcoordp2uiproc,
18501			multitexcoordp2uiv: dummy_pfnglmultitexcoordp2uivproc,
18502			multitexcoordp3ui: dummy_pfnglmultitexcoordp3uiproc,
18503			multitexcoordp3uiv: dummy_pfnglmultitexcoordp3uivproc,
18504			multitexcoordp4ui: dummy_pfnglmultitexcoordp4uiproc,
18505			multitexcoordp4uiv: dummy_pfnglmultitexcoordp4uivproc,
18506			normalp3ui: dummy_pfnglnormalp3uiproc,
18507			normalp3uiv: dummy_pfnglnormalp3uivproc,
18508			colorp3ui: dummy_pfnglcolorp3uiproc,
18509			colorp3uiv: dummy_pfnglcolorp3uivproc,
18510			colorp4ui: dummy_pfnglcolorp4uiproc,
18511			colorp4uiv: dummy_pfnglcolorp4uivproc,
18512			secondarycolorp3ui: dummy_pfnglsecondarycolorp3uiproc,
18513			secondarycolorp3uiv: dummy_pfnglsecondarycolorp3uivproc,
18514		}
18515	}
18516}
18517impl Debug for Version33 {
18518	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
18519		if self.available {
18520			f.debug_struct("Version33")
18521			.field("available", &self.available)
18522			.field("bindfragdatalocationindexed", unsafe{if transmute::<_, *const c_void>(self.bindfragdatalocationindexed) == (dummy_pfnglbindfragdatalocationindexedproc as *const c_void) {&null::<PFNGLBINDFRAGDATALOCATIONINDEXEDPROC>()} else {&self.bindfragdatalocationindexed}})
18523			.field("getfragdataindex", unsafe{if transmute::<_, *const c_void>(self.getfragdataindex) == (dummy_pfnglgetfragdataindexproc as *const c_void) {&null::<PFNGLGETFRAGDATAINDEXPROC>()} else {&self.getfragdataindex}})
18524			.field("gensamplers", unsafe{if transmute::<_, *const c_void>(self.gensamplers) == (dummy_pfnglgensamplersproc as *const c_void) {&null::<PFNGLGENSAMPLERSPROC>()} else {&self.gensamplers}})
18525			.field("deletesamplers", unsafe{if transmute::<_, *const c_void>(self.deletesamplers) == (dummy_pfngldeletesamplersproc as *const c_void) {&null::<PFNGLDELETESAMPLERSPROC>()} else {&self.deletesamplers}})
18526			.field("issampler", unsafe{if transmute::<_, *const c_void>(self.issampler) == (dummy_pfnglissamplerproc as *const c_void) {&null::<PFNGLISSAMPLERPROC>()} else {&self.issampler}})
18527			.field("bindsampler", unsafe{if transmute::<_, *const c_void>(self.bindsampler) == (dummy_pfnglbindsamplerproc as *const c_void) {&null::<PFNGLBINDSAMPLERPROC>()} else {&self.bindsampler}})
18528			.field("samplerparameteri", unsafe{if transmute::<_, *const c_void>(self.samplerparameteri) == (dummy_pfnglsamplerparameteriproc as *const c_void) {&null::<PFNGLSAMPLERPARAMETERIPROC>()} else {&self.samplerparameteri}})
18529			.field("samplerparameteriv", unsafe{if transmute::<_, *const c_void>(self.samplerparameteriv) == (dummy_pfnglsamplerparameterivproc as *const c_void) {&null::<PFNGLSAMPLERPARAMETERIVPROC>()} else {&self.samplerparameteriv}})
18530			.field("samplerparameterf", unsafe{if transmute::<_, *const c_void>(self.samplerparameterf) == (dummy_pfnglsamplerparameterfproc as *const c_void) {&null::<PFNGLSAMPLERPARAMETERFPROC>()} else {&self.samplerparameterf}})
18531			.field("samplerparameterfv", unsafe{if transmute::<_, *const c_void>(self.samplerparameterfv) == (dummy_pfnglsamplerparameterfvproc as *const c_void) {&null::<PFNGLSAMPLERPARAMETERFVPROC>()} else {&self.samplerparameterfv}})
18532			.field("samplerparameteriiv", unsafe{if transmute::<_, *const c_void>(self.samplerparameteriiv) == (dummy_pfnglsamplerparameteriivproc as *const c_void) {&null::<PFNGLSAMPLERPARAMETERIIVPROC>()} else {&self.samplerparameteriiv}})
18533			.field("samplerparameteriuiv", unsafe{if transmute::<_, *const c_void>(self.samplerparameteriuiv) == (dummy_pfnglsamplerparameteriuivproc as *const c_void) {&null::<PFNGLSAMPLERPARAMETERIUIVPROC>()} else {&self.samplerparameteriuiv}})
18534			.field("getsamplerparameteriv", unsafe{if transmute::<_, *const c_void>(self.getsamplerparameteriv) == (dummy_pfnglgetsamplerparameterivproc as *const c_void) {&null::<PFNGLGETSAMPLERPARAMETERIVPROC>()} else {&self.getsamplerparameteriv}})
18535			.field("getsamplerparameteriiv", unsafe{if transmute::<_, *const c_void>(self.getsamplerparameteriiv) == (dummy_pfnglgetsamplerparameteriivproc as *const c_void) {&null::<PFNGLGETSAMPLERPARAMETERIIVPROC>()} else {&self.getsamplerparameteriiv}})
18536			.field("getsamplerparameterfv", unsafe{if transmute::<_, *const c_void>(self.getsamplerparameterfv) == (dummy_pfnglgetsamplerparameterfvproc as *const c_void) {&null::<PFNGLGETSAMPLERPARAMETERFVPROC>()} else {&self.getsamplerparameterfv}})
18537			.field("getsamplerparameteriuiv", unsafe{if transmute::<_, *const c_void>(self.getsamplerparameteriuiv) == (dummy_pfnglgetsamplerparameteriuivproc as *const c_void) {&null::<PFNGLGETSAMPLERPARAMETERIUIVPROC>()} else {&self.getsamplerparameteriuiv}})
18538			.field("querycounter", unsafe{if transmute::<_, *const c_void>(self.querycounter) == (dummy_pfnglquerycounterproc as *const c_void) {&null::<PFNGLQUERYCOUNTERPROC>()} else {&self.querycounter}})
18539			.field("getqueryobjecti64v", unsafe{if transmute::<_, *const c_void>(self.getqueryobjecti64v) == (dummy_pfnglgetqueryobjecti64vproc as *const c_void) {&null::<PFNGLGETQUERYOBJECTI64VPROC>()} else {&self.getqueryobjecti64v}})
18540			.field("getqueryobjectui64v", unsafe{if transmute::<_, *const c_void>(self.getqueryobjectui64v) == (dummy_pfnglgetqueryobjectui64vproc as *const c_void) {&null::<PFNGLGETQUERYOBJECTUI64VPROC>()} else {&self.getqueryobjectui64v}})
18541			.field("vertexattribdivisor", unsafe{if transmute::<_, *const c_void>(self.vertexattribdivisor) == (dummy_pfnglvertexattribdivisorproc as *const c_void) {&null::<PFNGLVERTEXATTRIBDIVISORPROC>()} else {&self.vertexattribdivisor}})
18542			.field("vertexattribp1ui", unsafe{if transmute::<_, *const c_void>(self.vertexattribp1ui) == (dummy_pfnglvertexattribp1uiproc as *const c_void) {&null::<PFNGLVERTEXATTRIBP1UIPROC>()} else {&self.vertexattribp1ui}})
18543			.field("vertexattribp1uiv", unsafe{if transmute::<_, *const c_void>(self.vertexattribp1uiv) == (dummy_pfnglvertexattribp1uivproc as *const c_void) {&null::<PFNGLVERTEXATTRIBP1UIVPROC>()} else {&self.vertexattribp1uiv}})
18544			.field("vertexattribp2ui", unsafe{if transmute::<_, *const c_void>(self.vertexattribp2ui) == (dummy_pfnglvertexattribp2uiproc as *const c_void) {&null::<PFNGLVERTEXATTRIBP2UIPROC>()} else {&self.vertexattribp2ui}})
18545			.field("vertexattribp2uiv", unsafe{if transmute::<_, *const c_void>(self.vertexattribp2uiv) == (dummy_pfnglvertexattribp2uivproc as *const c_void) {&null::<PFNGLVERTEXATTRIBP2UIVPROC>()} else {&self.vertexattribp2uiv}})
18546			.field("vertexattribp3ui", unsafe{if transmute::<_, *const c_void>(self.vertexattribp3ui) == (dummy_pfnglvertexattribp3uiproc as *const c_void) {&null::<PFNGLVERTEXATTRIBP3UIPROC>()} else {&self.vertexattribp3ui}})
18547			.field("vertexattribp3uiv", unsafe{if transmute::<_, *const c_void>(self.vertexattribp3uiv) == (dummy_pfnglvertexattribp3uivproc as *const c_void) {&null::<PFNGLVERTEXATTRIBP3UIVPROC>()} else {&self.vertexattribp3uiv}})
18548			.field("vertexattribp4ui", unsafe{if transmute::<_, *const c_void>(self.vertexattribp4ui) == (dummy_pfnglvertexattribp4uiproc as *const c_void) {&null::<PFNGLVERTEXATTRIBP4UIPROC>()} else {&self.vertexattribp4ui}})
18549			.field("vertexattribp4uiv", unsafe{if transmute::<_, *const c_void>(self.vertexattribp4uiv) == (dummy_pfnglvertexattribp4uivproc as *const c_void) {&null::<PFNGLVERTEXATTRIBP4UIVPROC>()} else {&self.vertexattribp4uiv}})
18550			.field("vertexp2ui", unsafe{if transmute::<_, *const c_void>(self.vertexp2ui) == (dummy_pfnglvertexp2uiproc as *const c_void) {&null::<PFNGLVERTEXP2UIPROC>()} else {&self.vertexp2ui}})
18551			.field("vertexp2uiv", unsafe{if transmute::<_, *const c_void>(self.vertexp2uiv) == (dummy_pfnglvertexp2uivproc as *const c_void) {&null::<PFNGLVERTEXP2UIVPROC>()} else {&self.vertexp2uiv}})
18552			.field("vertexp3ui", unsafe{if transmute::<_, *const c_void>(self.vertexp3ui) == (dummy_pfnglvertexp3uiproc as *const c_void) {&null::<PFNGLVERTEXP3UIPROC>()} else {&self.vertexp3ui}})
18553			.field("vertexp3uiv", unsafe{if transmute::<_, *const c_void>(self.vertexp3uiv) == (dummy_pfnglvertexp3uivproc as *const c_void) {&null::<PFNGLVERTEXP3UIVPROC>()} else {&self.vertexp3uiv}})
18554			.field("vertexp4ui", unsafe{if transmute::<_, *const c_void>(self.vertexp4ui) == (dummy_pfnglvertexp4uiproc as *const c_void) {&null::<PFNGLVERTEXP4UIPROC>()} else {&self.vertexp4ui}})
18555			.field("vertexp4uiv", unsafe{if transmute::<_, *const c_void>(self.vertexp4uiv) == (dummy_pfnglvertexp4uivproc as *const c_void) {&null::<PFNGLVERTEXP4UIVPROC>()} else {&self.vertexp4uiv}})
18556			.field("texcoordp1ui", unsafe{if transmute::<_, *const c_void>(self.texcoordp1ui) == (dummy_pfngltexcoordp1uiproc as *const c_void) {&null::<PFNGLTEXCOORDP1UIPROC>()} else {&self.texcoordp1ui}})
18557			.field("texcoordp1uiv", unsafe{if transmute::<_, *const c_void>(self.texcoordp1uiv) == (dummy_pfngltexcoordp1uivproc as *const c_void) {&null::<PFNGLTEXCOORDP1UIVPROC>()} else {&self.texcoordp1uiv}})
18558			.field("texcoordp2ui", unsafe{if transmute::<_, *const c_void>(self.texcoordp2ui) == (dummy_pfngltexcoordp2uiproc as *const c_void) {&null::<PFNGLTEXCOORDP2UIPROC>()} else {&self.texcoordp2ui}})
18559			.field("texcoordp2uiv", unsafe{if transmute::<_, *const c_void>(self.texcoordp2uiv) == (dummy_pfngltexcoordp2uivproc as *const c_void) {&null::<PFNGLTEXCOORDP2UIVPROC>()} else {&self.texcoordp2uiv}})
18560			.field("texcoordp3ui", unsafe{if transmute::<_, *const c_void>(self.texcoordp3ui) == (dummy_pfngltexcoordp3uiproc as *const c_void) {&null::<PFNGLTEXCOORDP3UIPROC>()} else {&self.texcoordp3ui}})
18561			.field("texcoordp3uiv", unsafe{if transmute::<_, *const c_void>(self.texcoordp3uiv) == (dummy_pfngltexcoordp3uivproc as *const c_void) {&null::<PFNGLTEXCOORDP3UIVPROC>()} else {&self.texcoordp3uiv}})
18562			.field("texcoordp4ui", unsafe{if transmute::<_, *const c_void>(self.texcoordp4ui) == (dummy_pfngltexcoordp4uiproc as *const c_void) {&null::<PFNGLTEXCOORDP4UIPROC>()} else {&self.texcoordp4ui}})
18563			.field("texcoordp4uiv", unsafe{if transmute::<_, *const c_void>(self.texcoordp4uiv) == (dummy_pfngltexcoordp4uivproc as *const c_void) {&null::<PFNGLTEXCOORDP4UIVPROC>()} else {&self.texcoordp4uiv}})
18564			.field("multitexcoordp1ui", unsafe{if transmute::<_, *const c_void>(self.multitexcoordp1ui) == (dummy_pfnglmultitexcoordp1uiproc as *const c_void) {&null::<PFNGLMULTITEXCOORDP1UIPROC>()} else {&self.multitexcoordp1ui}})
18565			.field("multitexcoordp1uiv", unsafe{if transmute::<_, *const c_void>(self.multitexcoordp1uiv) == (dummy_pfnglmultitexcoordp1uivproc as *const c_void) {&null::<PFNGLMULTITEXCOORDP1UIVPROC>()} else {&self.multitexcoordp1uiv}})
18566			.field("multitexcoordp2ui", unsafe{if transmute::<_, *const c_void>(self.multitexcoordp2ui) == (dummy_pfnglmultitexcoordp2uiproc as *const c_void) {&null::<PFNGLMULTITEXCOORDP2UIPROC>()} else {&self.multitexcoordp2ui}})
18567			.field("multitexcoordp2uiv", unsafe{if transmute::<_, *const c_void>(self.multitexcoordp2uiv) == (dummy_pfnglmultitexcoordp2uivproc as *const c_void) {&null::<PFNGLMULTITEXCOORDP2UIVPROC>()} else {&self.multitexcoordp2uiv}})
18568			.field("multitexcoordp3ui", unsafe{if transmute::<_, *const c_void>(self.multitexcoordp3ui) == (dummy_pfnglmultitexcoordp3uiproc as *const c_void) {&null::<PFNGLMULTITEXCOORDP3UIPROC>()} else {&self.multitexcoordp3ui}})
18569			.field("multitexcoordp3uiv", unsafe{if transmute::<_, *const c_void>(self.multitexcoordp3uiv) == (dummy_pfnglmultitexcoordp3uivproc as *const c_void) {&null::<PFNGLMULTITEXCOORDP3UIVPROC>()} else {&self.multitexcoordp3uiv}})
18570			.field("multitexcoordp4ui", unsafe{if transmute::<_, *const c_void>(self.multitexcoordp4ui) == (dummy_pfnglmultitexcoordp4uiproc as *const c_void) {&null::<PFNGLMULTITEXCOORDP4UIPROC>()} else {&self.multitexcoordp4ui}})
18571			.field("multitexcoordp4uiv", unsafe{if transmute::<_, *const c_void>(self.multitexcoordp4uiv) == (dummy_pfnglmultitexcoordp4uivproc as *const c_void) {&null::<PFNGLMULTITEXCOORDP4UIVPROC>()} else {&self.multitexcoordp4uiv}})
18572			.field("normalp3ui", unsafe{if transmute::<_, *const c_void>(self.normalp3ui) == (dummy_pfnglnormalp3uiproc as *const c_void) {&null::<PFNGLNORMALP3UIPROC>()} else {&self.normalp3ui}})
18573			.field("normalp3uiv", unsafe{if transmute::<_, *const c_void>(self.normalp3uiv) == (dummy_pfnglnormalp3uivproc as *const c_void) {&null::<PFNGLNORMALP3UIVPROC>()} else {&self.normalp3uiv}})
18574			.field("colorp3ui", unsafe{if transmute::<_, *const c_void>(self.colorp3ui) == (dummy_pfnglcolorp3uiproc as *const c_void) {&null::<PFNGLCOLORP3UIPROC>()} else {&self.colorp3ui}})
18575			.field("colorp3uiv", unsafe{if transmute::<_, *const c_void>(self.colorp3uiv) == (dummy_pfnglcolorp3uivproc as *const c_void) {&null::<PFNGLCOLORP3UIVPROC>()} else {&self.colorp3uiv}})
18576			.field("colorp4ui", unsafe{if transmute::<_, *const c_void>(self.colorp4ui) == (dummy_pfnglcolorp4uiproc as *const c_void) {&null::<PFNGLCOLORP4UIPROC>()} else {&self.colorp4ui}})
18577			.field("colorp4uiv", unsafe{if transmute::<_, *const c_void>(self.colorp4uiv) == (dummy_pfnglcolorp4uivproc as *const c_void) {&null::<PFNGLCOLORP4UIVPROC>()} else {&self.colorp4uiv}})
18578			.field("secondarycolorp3ui", unsafe{if transmute::<_, *const c_void>(self.secondarycolorp3ui) == (dummy_pfnglsecondarycolorp3uiproc as *const c_void) {&null::<PFNGLSECONDARYCOLORP3UIPROC>()} else {&self.secondarycolorp3ui}})
18579			.field("secondarycolorp3uiv", unsafe{if transmute::<_, *const c_void>(self.secondarycolorp3uiv) == (dummy_pfnglsecondarycolorp3uivproc as *const c_void) {&null::<PFNGLSECONDARYCOLORP3UIVPROC>()} else {&self.secondarycolorp3uiv}})
18580			.finish()
18581		} else {
18582			f.debug_struct("Version33")
18583			.field("available", &self.available)
18584			.finish_non_exhaustive()
18585		}
18586	}
18587}
18588
18589/// The prototype to the OpenGL function `MinSampleShading`
18590type PFNGLMINSAMPLESHADINGPROC = extern "system" fn(GLfloat);
18591
18592/// The prototype to the OpenGL function `BlendEquationi`
18593type PFNGLBLENDEQUATIONIPROC = extern "system" fn(GLuint, GLenum);
18594
18595/// The prototype to the OpenGL function `BlendEquationSeparatei`
18596type PFNGLBLENDEQUATIONSEPARATEIPROC = extern "system" fn(GLuint, GLenum, GLenum);
18597
18598/// The prototype to the OpenGL function `BlendFunci`
18599type PFNGLBLENDFUNCIPROC = extern "system" fn(GLuint, GLenum, GLenum);
18600
18601/// The prototype to the OpenGL function `BlendFuncSeparatei`
18602type PFNGLBLENDFUNCSEPARATEIPROC = extern "system" fn(GLuint, GLenum, GLenum, GLenum, GLenum);
18603
18604/// The prototype to the OpenGL function `DrawArraysIndirect`
18605type PFNGLDRAWARRAYSINDIRECTPROC = extern "system" fn(GLenum, *const c_void);
18606
18607/// The prototype to the OpenGL function `DrawElementsIndirect`
18608type PFNGLDRAWELEMENTSINDIRECTPROC = extern "system" fn(GLenum, GLenum, *const c_void);
18609
18610/// The prototype to the OpenGL function `Uniform1d`
18611type PFNGLUNIFORM1DPROC = extern "system" fn(GLint, GLdouble);
18612
18613/// The prototype to the OpenGL function `Uniform2d`
18614type PFNGLUNIFORM2DPROC = extern "system" fn(GLint, GLdouble, GLdouble);
18615
18616/// The prototype to the OpenGL function `Uniform3d`
18617type PFNGLUNIFORM3DPROC = extern "system" fn(GLint, GLdouble, GLdouble, GLdouble);
18618
18619/// The prototype to the OpenGL function `Uniform4d`
18620type PFNGLUNIFORM4DPROC = extern "system" fn(GLint, GLdouble, GLdouble, GLdouble, GLdouble);
18621
18622/// The prototype to the OpenGL function `Uniform1dv`
18623type PFNGLUNIFORM1DVPROC = extern "system" fn(GLint, GLsizei, *const GLdouble);
18624
18625/// The prototype to the OpenGL function `Uniform2dv`
18626type PFNGLUNIFORM2DVPROC = extern "system" fn(GLint, GLsizei, *const GLdouble);
18627
18628/// The prototype to the OpenGL function `Uniform3dv`
18629type PFNGLUNIFORM3DVPROC = extern "system" fn(GLint, GLsizei, *const GLdouble);
18630
18631/// The prototype to the OpenGL function `Uniform4dv`
18632type PFNGLUNIFORM4DVPROC = extern "system" fn(GLint, GLsizei, *const GLdouble);
18633
18634/// The prototype to the OpenGL function `UniformMatrix2dv`
18635type PFNGLUNIFORMMATRIX2DVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLdouble);
18636
18637/// The prototype to the OpenGL function `UniformMatrix3dv`
18638type PFNGLUNIFORMMATRIX3DVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLdouble);
18639
18640/// The prototype to the OpenGL function `UniformMatrix4dv`
18641type PFNGLUNIFORMMATRIX4DVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLdouble);
18642
18643/// The prototype to the OpenGL function `UniformMatrix2x3dv`
18644type PFNGLUNIFORMMATRIX2X3DVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLdouble);
18645
18646/// The prototype to the OpenGL function `UniformMatrix2x4dv`
18647type PFNGLUNIFORMMATRIX2X4DVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLdouble);
18648
18649/// The prototype to the OpenGL function `UniformMatrix3x2dv`
18650type PFNGLUNIFORMMATRIX3X2DVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLdouble);
18651
18652/// The prototype to the OpenGL function `UniformMatrix3x4dv`
18653type PFNGLUNIFORMMATRIX3X4DVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLdouble);
18654
18655/// The prototype to the OpenGL function `UniformMatrix4x2dv`
18656type PFNGLUNIFORMMATRIX4X2DVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLdouble);
18657
18658/// The prototype to the OpenGL function `UniformMatrix4x3dv`
18659type PFNGLUNIFORMMATRIX4X3DVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLdouble);
18660
18661/// The prototype to the OpenGL function `GetUniformdv`
18662type PFNGLGETUNIFORMDVPROC = extern "system" fn(GLuint, GLint, *mut GLdouble);
18663
18664/// The prototype to the OpenGL function `GetSubroutineUniformLocation`
18665type PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC = extern "system" fn(GLuint, GLenum, *const GLchar) -> GLint;
18666
18667/// The prototype to the OpenGL function `GetSubroutineIndex`
18668type PFNGLGETSUBROUTINEINDEXPROC = extern "system" fn(GLuint, GLenum, *const GLchar) -> GLuint;
18669
18670/// The prototype to the OpenGL function `GetActiveSubroutineUniformiv`
18671type PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC = extern "system" fn(GLuint, GLenum, GLuint, GLenum, *mut GLint);
18672
18673/// The prototype to the OpenGL function `GetActiveSubroutineUniformName`
18674type PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC = extern "system" fn(GLuint, GLenum, GLuint, GLsizei, *mut GLsizei, *mut GLchar);
18675
18676/// The prototype to the OpenGL function `GetActiveSubroutineName`
18677type PFNGLGETACTIVESUBROUTINENAMEPROC = extern "system" fn(GLuint, GLenum, GLuint, GLsizei, *mut GLsizei, *mut GLchar);
18678
18679/// The prototype to the OpenGL function `UniformSubroutinesuiv`
18680type PFNGLUNIFORMSUBROUTINESUIVPROC = extern "system" fn(GLenum, GLsizei, *const GLuint);
18681
18682/// The prototype to the OpenGL function `GetUniformSubroutineuiv`
18683type PFNGLGETUNIFORMSUBROUTINEUIVPROC = extern "system" fn(GLenum, GLint, *mut GLuint);
18684
18685/// The prototype to the OpenGL function `GetProgramStageiv`
18686type PFNGLGETPROGRAMSTAGEIVPROC = extern "system" fn(GLuint, GLenum, GLenum, *mut GLint);
18687
18688/// The prototype to the OpenGL function `PatchParameteri`
18689type PFNGLPATCHPARAMETERIPROC = extern "system" fn(GLenum, GLint);
18690
18691/// The prototype to the OpenGL function `PatchParameterfv`
18692type PFNGLPATCHPARAMETERFVPROC = extern "system" fn(GLenum, *const GLfloat);
18693
18694/// The prototype to the OpenGL function `BindTransformFeedback`
18695type PFNGLBINDTRANSFORMFEEDBACKPROC = extern "system" fn(GLenum, GLuint);
18696
18697/// The prototype to the OpenGL function `DeleteTransformFeedbacks`
18698type PFNGLDELETETRANSFORMFEEDBACKSPROC = extern "system" fn(GLsizei, *const GLuint);
18699
18700/// The prototype to the OpenGL function `GenTransformFeedbacks`
18701type PFNGLGENTRANSFORMFEEDBACKSPROC = extern "system" fn(GLsizei, *mut GLuint);
18702
18703/// The prototype to the OpenGL function `IsTransformFeedback`
18704type PFNGLISTRANSFORMFEEDBACKPROC = extern "system" fn(GLuint) -> GLboolean;
18705
18706/// The prototype to the OpenGL function `PauseTransformFeedback`
18707type PFNGLPAUSETRANSFORMFEEDBACKPROC = extern "system" fn();
18708
18709/// The prototype to the OpenGL function `ResumeTransformFeedback`
18710type PFNGLRESUMETRANSFORMFEEDBACKPROC = extern "system" fn();
18711
18712/// The prototype to the OpenGL function `DrawTransformFeedback`
18713type PFNGLDRAWTRANSFORMFEEDBACKPROC = extern "system" fn(GLenum, GLuint);
18714
18715/// The prototype to the OpenGL function `DrawTransformFeedbackStream`
18716type PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC = extern "system" fn(GLenum, GLuint, GLuint);
18717
18718/// The prototype to the OpenGL function `BeginQueryIndexed`
18719type PFNGLBEGINQUERYINDEXEDPROC = extern "system" fn(GLenum, GLuint, GLuint);
18720
18721/// The prototype to the OpenGL function `EndQueryIndexed`
18722type PFNGLENDQUERYINDEXEDPROC = extern "system" fn(GLenum, GLuint);
18723
18724/// The prototype to the OpenGL function `GetQueryIndexediv`
18725type PFNGLGETQUERYINDEXEDIVPROC = extern "system" fn(GLenum, GLuint, GLenum, *mut GLint);
18726
18727/// The dummy function of `MinSampleShading()`
18728extern "system" fn dummy_pfnglminsampleshadingproc (_: GLfloat) {
18729	panic!("OpenGL function pointer `glMinSampleShading()` is null.")
18730}
18731
18732/// The dummy function of `BlendEquationi()`
18733extern "system" fn dummy_pfnglblendequationiproc (_: GLuint, _: GLenum) {
18734	panic!("OpenGL function pointer `glBlendEquationi()` is null.")
18735}
18736
18737/// The dummy function of `BlendEquationSeparatei()`
18738extern "system" fn dummy_pfnglblendequationseparateiproc (_: GLuint, _: GLenum, _: GLenum) {
18739	panic!("OpenGL function pointer `glBlendEquationSeparatei()` is null.")
18740}
18741
18742/// The dummy function of `BlendFunci()`
18743extern "system" fn dummy_pfnglblendfunciproc (_: GLuint, _: GLenum, _: GLenum) {
18744	panic!("OpenGL function pointer `glBlendFunci()` is null.")
18745}
18746
18747/// The dummy function of `BlendFuncSeparatei()`
18748extern "system" fn dummy_pfnglblendfuncseparateiproc (_: GLuint, _: GLenum, _: GLenum, _: GLenum, _: GLenum) {
18749	panic!("OpenGL function pointer `glBlendFuncSeparatei()` is null.")
18750}
18751
18752/// The dummy function of `DrawArraysIndirect()`
18753extern "system" fn dummy_pfngldrawarraysindirectproc (_: GLenum, _: *const c_void) {
18754	panic!("OpenGL function pointer `glDrawArraysIndirect()` is null.")
18755}
18756
18757/// The dummy function of `DrawElementsIndirect()`
18758extern "system" fn dummy_pfngldrawelementsindirectproc (_: GLenum, _: GLenum, _: *const c_void) {
18759	panic!("OpenGL function pointer `glDrawElementsIndirect()` is null.")
18760}
18761
18762/// The dummy function of `Uniform1d()`
18763extern "system" fn dummy_pfngluniform1dproc (_: GLint, _: GLdouble) {
18764	panic!("OpenGL function pointer `glUniform1d()` is null.")
18765}
18766
18767/// The dummy function of `Uniform2d()`
18768extern "system" fn dummy_pfngluniform2dproc (_: GLint, _: GLdouble, _: GLdouble) {
18769	panic!("OpenGL function pointer `glUniform2d()` is null.")
18770}
18771
18772/// The dummy function of `Uniform3d()`
18773extern "system" fn dummy_pfngluniform3dproc (_: GLint, _: GLdouble, _: GLdouble, _: GLdouble) {
18774	panic!("OpenGL function pointer `glUniform3d()` is null.")
18775}
18776
18777/// The dummy function of `Uniform4d()`
18778extern "system" fn dummy_pfngluniform4dproc (_: GLint, _: GLdouble, _: GLdouble, _: GLdouble, _: GLdouble) {
18779	panic!("OpenGL function pointer `glUniform4d()` is null.")
18780}
18781
18782/// The dummy function of `Uniform1dv()`
18783extern "system" fn dummy_pfngluniform1dvproc (_: GLint, _: GLsizei, _: *const GLdouble) {
18784	panic!("OpenGL function pointer `glUniform1dv()` is null.")
18785}
18786
18787/// The dummy function of `Uniform2dv()`
18788extern "system" fn dummy_pfngluniform2dvproc (_: GLint, _: GLsizei, _: *const GLdouble) {
18789	panic!("OpenGL function pointer `glUniform2dv()` is null.")
18790}
18791
18792/// The dummy function of `Uniform3dv()`
18793extern "system" fn dummy_pfngluniform3dvproc (_: GLint, _: GLsizei, _: *const GLdouble) {
18794	panic!("OpenGL function pointer `glUniform3dv()` is null.")
18795}
18796
18797/// The dummy function of `Uniform4dv()`
18798extern "system" fn dummy_pfngluniform4dvproc (_: GLint, _: GLsizei, _: *const GLdouble) {
18799	panic!("OpenGL function pointer `glUniform4dv()` is null.")
18800}
18801
18802/// The dummy function of `UniformMatrix2dv()`
18803extern "system" fn dummy_pfngluniformmatrix2dvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
18804	panic!("OpenGL function pointer `glUniformMatrix2dv()` is null.")
18805}
18806
18807/// The dummy function of `UniformMatrix3dv()`
18808extern "system" fn dummy_pfngluniformmatrix3dvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
18809	panic!("OpenGL function pointer `glUniformMatrix3dv()` is null.")
18810}
18811
18812/// The dummy function of `UniformMatrix4dv()`
18813extern "system" fn dummy_pfngluniformmatrix4dvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
18814	panic!("OpenGL function pointer `glUniformMatrix4dv()` is null.")
18815}
18816
18817/// The dummy function of `UniformMatrix2x3dv()`
18818extern "system" fn dummy_pfngluniformmatrix2x3dvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
18819	panic!("OpenGL function pointer `glUniformMatrix2x3dv()` is null.")
18820}
18821
18822/// The dummy function of `UniformMatrix2x4dv()`
18823extern "system" fn dummy_pfngluniformmatrix2x4dvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
18824	panic!("OpenGL function pointer `glUniformMatrix2x4dv()` is null.")
18825}
18826
18827/// The dummy function of `UniformMatrix3x2dv()`
18828extern "system" fn dummy_pfngluniformmatrix3x2dvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
18829	panic!("OpenGL function pointer `glUniformMatrix3x2dv()` is null.")
18830}
18831
18832/// The dummy function of `UniformMatrix3x4dv()`
18833extern "system" fn dummy_pfngluniformmatrix3x4dvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
18834	panic!("OpenGL function pointer `glUniformMatrix3x4dv()` is null.")
18835}
18836
18837/// The dummy function of `UniformMatrix4x2dv()`
18838extern "system" fn dummy_pfngluniformmatrix4x2dvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
18839	panic!("OpenGL function pointer `glUniformMatrix4x2dv()` is null.")
18840}
18841
18842/// The dummy function of `UniformMatrix4x3dv()`
18843extern "system" fn dummy_pfngluniformmatrix4x3dvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
18844	panic!("OpenGL function pointer `glUniformMatrix4x3dv()` is null.")
18845}
18846
18847/// The dummy function of `GetUniformdv()`
18848extern "system" fn dummy_pfnglgetuniformdvproc (_: GLuint, _: GLint, _: *mut GLdouble) {
18849	panic!("OpenGL function pointer `glGetUniformdv()` is null.")
18850}
18851
18852/// The dummy function of `GetSubroutineUniformLocation()`
18853extern "system" fn dummy_pfnglgetsubroutineuniformlocationproc (_: GLuint, _: GLenum, _: *const GLchar) -> GLint {
18854	panic!("OpenGL function pointer `glGetSubroutineUniformLocation()` is null.")
18855}
18856
18857/// The dummy function of `GetSubroutineIndex()`
18858extern "system" fn dummy_pfnglgetsubroutineindexproc (_: GLuint, _: GLenum, _: *const GLchar) -> GLuint {
18859	panic!("OpenGL function pointer `glGetSubroutineIndex()` is null.")
18860}
18861
18862/// The dummy function of `GetActiveSubroutineUniformiv()`
18863extern "system" fn dummy_pfnglgetactivesubroutineuniformivproc (_: GLuint, _: GLenum, _: GLuint, _: GLenum, _: *mut GLint) {
18864	panic!("OpenGL function pointer `glGetActiveSubroutineUniformiv()` is null.")
18865}
18866
18867/// The dummy function of `GetActiveSubroutineUniformName()`
18868extern "system" fn dummy_pfnglgetactivesubroutineuniformnameproc (_: GLuint, _: GLenum, _: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLchar) {
18869	panic!("OpenGL function pointer `glGetActiveSubroutineUniformName()` is null.")
18870}
18871
18872/// The dummy function of `GetActiveSubroutineName()`
18873extern "system" fn dummy_pfnglgetactivesubroutinenameproc (_: GLuint, _: GLenum, _: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLchar) {
18874	panic!("OpenGL function pointer `glGetActiveSubroutineName()` is null.")
18875}
18876
18877/// The dummy function of `UniformSubroutinesuiv()`
18878extern "system" fn dummy_pfngluniformsubroutinesuivproc (_: GLenum, _: GLsizei, _: *const GLuint) {
18879	panic!("OpenGL function pointer `glUniformSubroutinesuiv()` is null.")
18880}
18881
18882/// The dummy function of `GetUniformSubroutineuiv()`
18883extern "system" fn dummy_pfnglgetuniformsubroutineuivproc (_: GLenum, _: GLint, _: *mut GLuint) {
18884	panic!("OpenGL function pointer `glGetUniformSubroutineuiv()` is null.")
18885}
18886
18887/// The dummy function of `GetProgramStageiv()`
18888extern "system" fn dummy_pfnglgetprogramstageivproc (_: GLuint, _: GLenum, _: GLenum, _: *mut GLint) {
18889	panic!("OpenGL function pointer `glGetProgramStageiv()` is null.")
18890}
18891
18892/// The dummy function of `PatchParameteri()`
18893extern "system" fn dummy_pfnglpatchparameteriproc (_: GLenum, _: GLint) {
18894	panic!("OpenGL function pointer `glPatchParameteri()` is null.")
18895}
18896
18897/// The dummy function of `PatchParameterfv()`
18898extern "system" fn dummy_pfnglpatchparameterfvproc (_: GLenum, _: *const GLfloat) {
18899	panic!("OpenGL function pointer `glPatchParameterfv()` is null.")
18900}
18901
18902/// The dummy function of `BindTransformFeedback()`
18903extern "system" fn dummy_pfnglbindtransformfeedbackproc (_: GLenum, _: GLuint) {
18904	panic!("OpenGL function pointer `glBindTransformFeedback()` is null.")
18905}
18906
18907/// The dummy function of `DeleteTransformFeedbacks()`
18908extern "system" fn dummy_pfngldeletetransformfeedbacksproc (_: GLsizei, _: *const GLuint) {
18909	panic!("OpenGL function pointer `glDeleteTransformFeedbacks()` is null.")
18910}
18911
18912/// The dummy function of `GenTransformFeedbacks()`
18913extern "system" fn dummy_pfnglgentransformfeedbacksproc (_: GLsizei, _: *mut GLuint) {
18914	panic!("OpenGL function pointer `glGenTransformFeedbacks()` is null.")
18915}
18916
18917/// The dummy function of `IsTransformFeedback()`
18918extern "system" fn dummy_pfnglistransformfeedbackproc (_: GLuint) -> GLboolean {
18919	panic!("OpenGL function pointer `glIsTransformFeedback()` is null.")
18920}
18921
18922/// The dummy function of `PauseTransformFeedback()`
18923extern "system" fn dummy_pfnglpausetransformfeedbackproc () {
18924	panic!("OpenGL function pointer `glPauseTransformFeedback()` is null.")
18925}
18926
18927/// The dummy function of `ResumeTransformFeedback()`
18928extern "system" fn dummy_pfnglresumetransformfeedbackproc () {
18929	panic!("OpenGL function pointer `glResumeTransformFeedback()` is null.")
18930}
18931
18932/// The dummy function of `DrawTransformFeedback()`
18933extern "system" fn dummy_pfngldrawtransformfeedbackproc (_: GLenum, _: GLuint) {
18934	panic!("OpenGL function pointer `glDrawTransformFeedback()` is null.")
18935}
18936
18937/// The dummy function of `DrawTransformFeedbackStream()`
18938extern "system" fn dummy_pfngldrawtransformfeedbackstreamproc (_: GLenum, _: GLuint, _: GLuint) {
18939	panic!("OpenGL function pointer `glDrawTransformFeedbackStream()` is null.")
18940}
18941
18942/// The dummy function of `BeginQueryIndexed()`
18943extern "system" fn dummy_pfnglbeginqueryindexedproc (_: GLenum, _: GLuint, _: GLuint) {
18944	panic!("OpenGL function pointer `glBeginQueryIndexed()` is null.")
18945}
18946
18947/// The dummy function of `EndQueryIndexed()`
18948extern "system" fn dummy_pfnglendqueryindexedproc (_: GLenum, _: GLuint) {
18949	panic!("OpenGL function pointer `glEndQueryIndexed()` is null.")
18950}
18951
18952/// The dummy function of `GetQueryIndexediv()`
18953extern "system" fn dummy_pfnglgetqueryindexedivproc (_: GLenum, _: GLuint, _: GLenum, _: *mut GLint) {
18954	panic!("OpenGL function pointer `glGetQueryIndexediv()` is null.")
18955}
18956/// Constant value defined from OpenGL 4.0
18957pub const GL_SAMPLE_SHADING: GLenum = 0x8C36;
18958
18959/// Constant value defined from OpenGL 4.0
18960pub const GL_MIN_SAMPLE_SHADING_VALUE: GLenum = 0x8C37;
18961
18962/// Constant value defined from OpenGL 4.0
18963pub const GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET: GLenum = 0x8E5E;
18964
18965/// Constant value defined from OpenGL 4.0
18966pub const GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET: GLenum = 0x8E5F;
18967
18968/// Constant value defined from OpenGL 4.0
18969pub const GL_TEXTURE_CUBE_MAP_ARRAY: GLenum = 0x9009;
18970
18971/// Constant value defined from OpenGL 4.0
18972pub const GL_TEXTURE_BINDING_CUBE_MAP_ARRAY: GLenum = 0x900A;
18973
18974/// Constant value defined from OpenGL 4.0
18975pub const GL_PROXY_TEXTURE_CUBE_MAP_ARRAY: GLenum = 0x900B;
18976
18977/// Constant value defined from OpenGL 4.0
18978pub const GL_SAMPLER_CUBE_MAP_ARRAY: GLenum = 0x900C;
18979
18980/// Constant value defined from OpenGL 4.0
18981pub const GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW: GLenum = 0x900D;
18982
18983/// Constant value defined from OpenGL 4.0
18984pub const GL_INT_SAMPLER_CUBE_MAP_ARRAY: GLenum = 0x900E;
18985
18986/// Constant value defined from OpenGL 4.0
18987pub const GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY: GLenum = 0x900F;
18988
18989/// Constant value defined from OpenGL 4.0
18990pub const GL_DRAW_INDIRECT_BUFFER: GLenum = 0x8F3F;
18991
18992/// Constant value defined from OpenGL 4.0
18993pub const GL_DRAW_INDIRECT_BUFFER_BINDING: GLenum = 0x8F43;
18994
18995/// Constant value defined from OpenGL 4.0
18996pub const GL_GEOMETRY_SHADER_INVOCATIONS: GLenum = 0x887F;
18997
18998/// Constant value defined from OpenGL 4.0
18999pub const GL_MAX_GEOMETRY_SHADER_INVOCATIONS: GLenum = 0x8E5A;
19000
19001/// Constant value defined from OpenGL 4.0
19002pub const GL_MIN_FRAGMENT_INTERPOLATION_OFFSET: GLenum = 0x8E5B;
19003
19004/// Constant value defined from OpenGL 4.0
19005pub const GL_MAX_FRAGMENT_INTERPOLATION_OFFSET: GLenum = 0x8E5C;
19006
19007/// Constant value defined from OpenGL 4.0
19008pub const GL_FRAGMENT_INTERPOLATION_OFFSET_BITS: GLenum = 0x8E5D;
19009
19010/// Constant value defined from OpenGL 4.0
19011pub const GL_MAX_VERTEX_STREAMS: GLenum = 0x8E71;
19012
19013/// Constant value defined from OpenGL 4.0
19014pub const GL_DOUBLE_VEC2: GLenum = 0x8FFC;
19015
19016/// Constant value defined from OpenGL 4.0
19017pub const GL_DOUBLE_VEC3: GLenum = 0x8FFD;
19018
19019/// Constant value defined from OpenGL 4.0
19020pub const GL_DOUBLE_VEC4: GLenum = 0x8FFE;
19021
19022/// Constant value defined from OpenGL 4.0
19023pub const GL_DOUBLE_MAT2: GLenum = 0x8F46;
19024
19025/// Constant value defined from OpenGL 4.0
19026pub const GL_DOUBLE_MAT3: GLenum = 0x8F47;
19027
19028/// Constant value defined from OpenGL 4.0
19029pub const GL_DOUBLE_MAT4: GLenum = 0x8F48;
19030
19031/// Constant value defined from OpenGL 4.0
19032pub const GL_DOUBLE_MAT2x3: GLenum = 0x8F49;
19033
19034/// Constant value defined from OpenGL 4.0
19035pub const GL_DOUBLE_MAT2x4: GLenum = 0x8F4A;
19036
19037/// Constant value defined from OpenGL 4.0
19038pub const GL_DOUBLE_MAT3x2: GLenum = 0x8F4B;
19039
19040/// Constant value defined from OpenGL 4.0
19041pub const GL_DOUBLE_MAT3x4: GLenum = 0x8F4C;
19042
19043/// Constant value defined from OpenGL 4.0
19044pub const GL_DOUBLE_MAT4x2: GLenum = 0x8F4D;
19045
19046/// Constant value defined from OpenGL 4.0
19047pub const GL_DOUBLE_MAT4x3: GLenum = 0x8F4E;
19048
19049/// Constant value defined from OpenGL 4.0
19050pub const GL_ACTIVE_SUBROUTINES: GLenum = 0x8DE5;
19051
19052/// Constant value defined from OpenGL 4.0
19053pub const GL_ACTIVE_SUBROUTINE_UNIFORMS: GLenum = 0x8DE6;
19054
19055/// Constant value defined from OpenGL 4.0
19056pub const GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS: GLenum = 0x8E47;
19057
19058/// Constant value defined from OpenGL 4.0
19059pub const GL_ACTIVE_SUBROUTINE_MAX_LENGTH: GLenum = 0x8E48;
19060
19061/// Constant value defined from OpenGL 4.0
19062pub const GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH: GLenum = 0x8E49;
19063
19064/// Constant value defined from OpenGL 4.0
19065pub const GL_MAX_SUBROUTINES: GLenum = 0x8DE7;
19066
19067/// Constant value defined from OpenGL 4.0
19068pub const GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS: GLenum = 0x8DE8;
19069
19070/// Constant value defined from OpenGL 4.0
19071pub const GL_NUM_COMPATIBLE_SUBROUTINES: GLenum = 0x8E4A;
19072
19073/// Constant value defined from OpenGL 4.0
19074pub const GL_COMPATIBLE_SUBROUTINES: GLenum = 0x8E4B;
19075
19076/// Constant value defined from OpenGL 4.0
19077pub const GL_PATCHES: GLenum = 0x000E;
19078
19079/// Constant value defined from OpenGL 4.0
19080pub const GL_PATCH_VERTICES: GLenum = 0x8E72;
19081
19082/// Constant value defined from OpenGL 4.0
19083pub const GL_PATCH_DEFAULT_INNER_LEVEL: GLenum = 0x8E73;
19084
19085/// Constant value defined from OpenGL 4.0
19086pub const GL_PATCH_DEFAULT_OUTER_LEVEL: GLenum = 0x8E74;
19087
19088/// Constant value defined from OpenGL 4.0
19089pub const GL_TESS_CONTROL_OUTPUT_VERTICES: GLenum = 0x8E75;
19090
19091/// Constant value defined from OpenGL 4.0
19092pub const GL_TESS_GEN_MODE: GLenum = 0x8E76;
19093
19094/// Constant value defined from OpenGL 4.0
19095pub const GL_TESS_GEN_SPACING: GLenum = 0x8E77;
19096
19097/// Constant value defined from OpenGL 4.0
19098pub const GL_TESS_GEN_VERTEX_ORDER: GLenum = 0x8E78;
19099
19100/// Constant value defined from OpenGL 4.0
19101pub const GL_TESS_GEN_POINT_MODE: GLenum = 0x8E79;
19102
19103/// Constant value defined from OpenGL 4.0
19104pub const GL_ISOLINES: GLenum = 0x8E7A;
19105
19106/// Constant value defined from OpenGL 4.0
19107pub const GL_FRACTIONAL_ODD: GLenum = 0x8E7B;
19108
19109/// Constant value defined from OpenGL 4.0
19110pub const GL_FRACTIONAL_EVEN: GLenum = 0x8E7C;
19111
19112/// Constant value defined from OpenGL 4.0
19113pub const GL_MAX_PATCH_VERTICES: GLenum = 0x8E7D;
19114
19115/// Constant value defined from OpenGL 4.0
19116pub const GL_MAX_TESS_GEN_LEVEL: GLenum = 0x8E7E;
19117
19118/// Constant value defined from OpenGL 4.0
19119pub const GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS: GLenum = 0x8E7F;
19120
19121/// Constant value defined from OpenGL 4.0
19122pub const GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS: GLenum = 0x8E80;
19123
19124/// Constant value defined from OpenGL 4.0
19125pub const GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS: GLenum = 0x8E81;
19126
19127/// Constant value defined from OpenGL 4.0
19128pub const GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS: GLenum = 0x8E82;
19129
19130/// Constant value defined from OpenGL 4.0
19131pub const GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS: GLenum = 0x8E83;
19132
19133/// Constant value defined from OpenGL 4.0
19134pub const GL_MAX_TESS_PATCH_COMPONENTS: GLenum = 0x8E84;
19135
19136/// Constant value defined from OpenGL 4.0
19137pub const GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS: GLenum = 0x8E85;
19138
19139/// Constant value defined from OpenGL 4.0
19140pub const GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS: GLenum = 0x8E86;
19141
19142/// Constant value defined from OpenGL 4.0
19143pub const GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS: GLenum = 0x8E89;
19144
19145/// Constant value defined from OpenGL 4.0
19146pub const GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS: GLenum = 0x8E8A;
19147
19148/// Constant value defined from OpenGL 4.0
19149pub const GL_MAX_TESS_CONTROL_INPUT_COMPONENTS: GLenum = 0x886C;
19150
19151/// Constant value defined from OpenGL 4.0
19152pub const GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS: GLenum = 0x886D;
19153
19154/// Constant value defined from OpenGL 4.0
19155pub const GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS: GLenum = 0x8E1E;
19156
19157/// Constant value defined from OpenGL 4.0
19158pub const GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS: GLenum = 0x8E1F;
19159
19160/// Constant value defined from OpenGL 4.0
19161pub const GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER: GLenum = 0x84F0;
19162
19163/// Constant value defined from OpenGL 4.0
19164pub const GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER: GLenum = 0x84F1;
19165
19166/// Constant value defined from OpenGL 4.0
19167pub const GL_TESS_EVALUATION_SHADER: GLenum = 0x8E87;
19168
19169/// Constant value defined from OpenGL 4.0
19170pub const GL_TESS_CONTROL_SHADER: GLenum = 0x8E88;
19171
19172/// Constant value defined from OpenGL 4.0
19173pub const GL_TRANSFORM_FEEDBACK: GLenum = 0x8E22;
19174
19175/// Constant value defined from OpenGL 4.0
19176pub const GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED: GLenum = 0x8E23;
19177
19178/// Constant value defined from OpenGL 4.0
19179pub const GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE: GLenum = 0x8E24;
19180
19181/// Constant value defined from OpenGL 4.0
19182pub const GL_TRANSFORM_FEEDBACK_BINDING: GLenum = 0x8E25;
19183
19184/// Constant value defined from OpenGL 4.0
19185pub const GL_MAX_TRANSFORM_FEEDBACK_BUFFERS: GLenum = 0x8E70;
19186
19187/// Functions from OpenGL version 4.0
19188pub trait GL_4_0 {
19189	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
19190	fn glGetError(&self) -> GLenum;
19191
19192	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMinSampleShading.xhtml>
19193	fn glMinSampleShading(&self, value: GLfloat) -> Result<()>;
19194
19195	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendEquationi.xhtml>
19196	fn glBlendEquationi(&self, buf: GLuint, mode: GLenum) -> Result<()>;
19197
19198	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendEquationSeparatei.xhtml>
19199	fn glBlendEquationSeparatei(&self, buf: GLuint, modeRGB: GLenum, modeAlpha: GLenum) -> Result<()>;
19200
19201	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendFunci.xhtml>
19202	fn glBlendFunci(&self, buf: GLuint, src: GLenum, dst: GLenum) -> Result<()>;
19203
19204	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendFuncSeparatei.xhtml>
19205	fn glBlendFuncSeparatei(&self, buf: GLuint, srcRGB: GLenum, dstRGB: GLenum, srcAlpha: GLenum, dstAlpha: GLenum) -> Result<()>;
19206
19207	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawArraysIndirect.xhtml>
19208	fn glDrawArraysIndirect(&self, mode: GLenum, indirect: *const c_void) -> Result<()>;
19209
19210	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsIndirect.xhtml>
19211	fn glDrawElementsIndirect(&self, mode: GLenum, type_: GLenum, indirect: *const c_void) -> Result<()>;
19212
19213	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1d.xhtml>
19214	fn glUniform1d(&self, location: GLint, x: GLdouble) -> Result<()>;
19215
19216	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2d.xhtml>
19217	fn glUniform2d(&self, location: GLint, x: GLdouble, y: GLdouble) -> Result<()>;
19218
19219	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3d.xhtml>
19220	fn glUniform3d(&self, location: GLint, x: GLdouble, y: GLdouble, z: GLdouble) -> Result<()>;
19221
19222	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4d.xhtml>
19223	fn glUniform4d(&self, location: GLint, x: GLdouble, y: GLdouble, z: GLdouble, w: GLdouble) -> Result<()>;
19224
19225	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1dv.xhtml>
19226	fn glUniform1dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()>;
19227
19228	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2dv.xhtml>
19229	fn glUniform2dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()>;
19230
19231	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3dv.xhtml>
19232	fn glUniform3dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()>;
19233
19234	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4dv.xhtml>
19235	fn glUniform4dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()>;
19236
19237	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2dv.xhtml>
19238	fn glUniformMatrix2dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
19239
19240	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3dv.xhtml>
19241	fn glUniformMatrix3dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
19242
19243	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4dv.xhtml>
19244	fn glUniformMatrix4dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
19245
19246	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2x3dv.xhtml>
19247	fn glUniformMatrix2x3dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
19248
19249	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2x4dv.xhtml>
19250	fn glUniformMatrix2x4dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
19251
19252	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3x2dv.xhtml>
19253	fn glUniformMatrix3x2dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
19254
19255	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3x4dv.xhtml>
19256	fn glUniformMatrix3x4dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
19257
19258	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4x2dv.xhtml>
19259	fn glUniformMatrix4x2dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
19260
19261	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4x3dv.xhtml>
19262	fn glUniformMatrix4x3dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
19263
19264	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformdv.xhtml>
19265	fn glGetUniformdv(&self, program: GLuint, location: GLint, params: *mut GLdouble) -> Result<()>;
19266
19267	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSubroutineUniformLocation.xhtml>
19268	fn glGetSubroutineUniformLocation(&self, program: GLuint, shadertype: GLenum, name: *const GLchar) -> Result<GLint>;
19269
19270	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSubroutineIndex.xhtml>
19271	fn glGetSubroutineIndex(&self, program: GLuint, shadertype: GLenum, name: *const GLchar) -> Result<GLuint>;
19272
19273	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveSubroutineUniformiv.xhtml>
19274	fn glGetActiveSubroutineUniformiv(&self, program: GLuint, shadertype: GLenum, index: GLuint, pname: GLenum, values: *mut GLint) -> Result<()>;
19275
19276	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveSubroutineUniformName.xhtml>
19277	fn glGetActiveSubroutineUniformName(&self, program: GLuint, shadertype: GLenum, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, name: *mut GLchar) -> Result<()>;
19278
19279	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveSubroutineName.xhtml>
19280	fn glGetActiveSubroutineName(&self, program: GLuint, shadertype: GLenum, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, name: *mut GLchar) -> Result<()>;
19281
19282	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformSubroutinesuiv.xhtml>
19283	fn glUniformSubroutinesuiv(&self, shadertype: GLenum, count: GLsizei, indices: *const GLuint) -> Result<()>;
19284
19285	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformSubroutineuiv.xhtml>
19286	fn glGetUniformSubroutineuiv(&self, shadertype: GLenum, location: GLint, params: *mut GLuint) -> Result<()>;
19287
19288	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramStageiv.xhtml>
19289	fn glGetProgramStageiv(&self, program: GLuint, shadertype: GLenum, pname: GLenum, values: *mut GLint) -> Result<()>;
19290
19291	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPatchParameteri.xhtml>
19292	fn glPatchParameteri(&self, pname: GLenum, value: GLint) -> Result<()>;
19293
19294	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPatchParameterfv.xhtml>
19295	fn glPatchParameterfv(&self, pname: GLenum, values: *const GLfloat) -> Result<()>;
19296
19297	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindTransformFeedback.xhtml>
19298	fn glBindTransformFeedback(&self, target: GLenum, id: GLuint) -> Result<()>;
19299
19300	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteTransformFeedbacks.xhtml>
19301	fn glDeleteTransformFeedbacks(&self, n: GLsizei, ids: *const GLuint) -> Result<()>;
19302
19303	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenTransformFeedbacks.xhtml>
19304	fn glGenTransformFeedbacks(&self, n: GLsizei, ids: *mut GLuint) -> Result<()>;
19305
19306	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsTransformFeedback.xhtml>
19307	fn glIsTransformFeedback(&self, id: GLuint) -> Result<GLboolean>;
19308
19309	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPauseTransformFeedback.xhtml>
19310	fn glPauseTransformFeedback(&self) -> Result<()>;
19311
19312	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glResumeTransformFeedback.xhtml>
19313	fn glResumeTransformFeedback(&self) -> Result<()>;
19314
19315	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawTransformFeedback.xhtml>
19316	fn glDrawTransformFeedback(&self, mode: GLenum, id: GLuint) -> Result<()>;
19317
19318	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawTransformFeedbackStream.xhtml>
19319	fn glDrawTransformFeedbackStream(&self, mode: GLenum, id: GLuint, stream: GLuint) -> Result<()>;
19320
19321	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBeginQueryIndexed.xhtml>
19322	fn glBeginQueryIndexed(&self, target: GLenum, index: GLuint, id: GLuint) -> Result<()>;
19323
19324	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEndQueryIndexed.xhtml>
19325	fn glEndQueryIndexed(&self, target: GLenum, index: GLuint) -> Result<()>;
19326
19327	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryIndexediv.xhtml>
19328	fn glGetQueryIndexediv(&self, target: GLenum, index: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
19329}
19330/// Functions from OpenGL version 4.0
19331#[derive(Clone, Copy, PartialEq, Eq, Hash)]
19332pub struct Version40 {
19333	/// Is OpenGL version 4.0 available
19334	available: bool,
19335
19336	/// The function pointer to `glGetError()`
19337	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
19338	pub geterror: PFNGLGETERRORPROC,
19339
19340	/// The function pointer to `glMinSampleShading()`
19341	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMinSampleShading.xhtml>
19342	pub minsampleshading: PFNGLMINSAMPLESHADINGPROC,
19343
19344	/// The function pointer to `glBlendEquationi()`
19345	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendEquationi.xhtml>
19346	pub blendequationi: PFNGLBLENDEQUATIONIPROC,
19347
19348	/// The function pointer to `glBlendEquationSeparatei()`
19349	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendEquationSeparatei.xhtml>
19350	pub blendequationseparatei: PFNGLBLENDEQUATIONSEPARATEIPROC,
19351
19352	/// The function pointer to `glBlendFunci()`
19353	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendFunci.xhtml>
19354	pub blendfunci: PFNGLBLENDFUNCIPROC,
19355
19356	/// The function pointer to `glBlendFuncSeparatei()`
19357	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendFuncSeparatei.xhtml>
19358	pub blendfuncseparatei: PFNGLBLENDFUNCSEPARATEIPROC,
19359
19360	/// The function pointer to `glDrawArraysIndirect()`
19361	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawArraysIndirect.xhtml>
19362	pub drawarraysindirect: PFNGLDRAWARRAYSINDIRECTPROC,
19363
19364	/// The function pointer to `glDrawElementsIndirect()`
19365	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsIndirect.xhtml>
19366	pub drawelementsindirect: PFNGLDRAWELEMENTSINDIRECTPROC,
19367
19368	/// The function pointer to `glUniform1d()`
19369	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1d.xhtml>
19370	pub uniform1d: PFNGLUNIFORM1DPROC,
19371
19372	/// The function pointer to `glUniform2d()`
19373	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2d.xhtml>
19374	pub uniform2d: PFNGLUNIFORM2DPROC,
19375
19376	/// The function pointer to `glUniform3d()`
19377	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3d.xhtml>
19378	pub uniform3d: PFNGLUNIFORM3DPROC,
19379
19380	/// The function pointer to `glUniform4d()`
19381	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4d.xhtml>
19382	pub uniform4d: PFNGLUNIFORM4DPROC,
19383
19384	/// The function pointer to `glUniform1dv()`
19385	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1dv.xhtml>
19386	pub uniform1dv: PFNGLUNIFORM1DVPROC,
19387
19388	/// The function pointer to `glUniform2dv()`
19389	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2dv.xhtml>
19390	pub uniform2dv: PFNGLUNIFORM2DVPROC,
19391
19392	/// The function pointer to `glUniform3dv()`
19393	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3dv.xhtml>
19394	pub uniform3dv: PFNGLUNIFORM3DVPROC,
19395
19396	/// The function pointer to `glUniform4dv()`
19397	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4dv.xhtml>
19398	pub uniform4dv: PFNGLUNIFORM4DVPROC,
19399
19400	/// The function pointer to `glUniformMatrix2dv()`
19401	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2dv.xhtml>
19402	pub uniformmatrix2dv: PFNGLUNIFORMMATRIX2DVPROC,
19403
19404	/// The function pointer to `glUniformMatrix3dv()`
19405	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3dv.xhtml>
19406	pub uniformmatrix3dv: PFNGLUNIFORMMATRIX3DVPROC,
19407
19408	/// The function pointer to `glUniformMatrix4dv()`
19409	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4dv.xhtml>
19410	pub uniformmatrix4dv: PFNGLUNIFORMMATRIX4DVPROC,
19411
19412	/// The function pointer to `glUniformMatrix2x3dv()`
19413	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2x3dv.xhtml>
19414	pub uniformmatrix2x3dv: PFNGLUNIFORMMATRIX2X3DVPROC,
19415
19416	/// The function pointer to `glUniformMatrix2x4dv()`
19417	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2x4dv.xhtml>
19418	pub uniformmatrix2x4dv: PFNGLUNIFORMMATRIX2X4DVPROC,
19419
19420	/// The function pointer to `glUniformMatrix3x2dv()`
19421	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3x2dv.xhtml>
19422	pub uniformmatrix3x2dv: PFNGLUNIFORMMATRIX3X2DVPROC,
19423
19424	/// The function pointer to `glUniformMatrix3x4dv()`
19425	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3x4dv.xhtml>
19426	pub uniformmatrix3x4dv: PFNGLUNIFORMMATRIX3X4DVPROC,
19427
19428	/// The function pointer to `glUniformMatrix4x2dv()`
19429	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4x2dv.xhtml>
19430	pub uniformmatrix4x2dv: PFNGLUNIFORMMATRIX4X2DVPROC,
19431
19432	/// The function pointer to `glUniformMatrix4x3dv()`
19433	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4x3dv.xhtml>
19434	pub uniformmatrix4x3dv: PFNGLUNIFORMMATRIX4X3DVPROC,
19435
19436	/// The function pointer to `glGetUniformdv()`
19437	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformdv.xhtml>
19438	pub getuniformdv: PFNGLGETUNIFORMDVPROC,
19439
19440	/// The function pointer to `glGetSubroutineUniformLocation()`
19441	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSubroutineUniformLocation.xhtml>
19442	pub getsubroutineuniformlocation: PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC,
19443
19444	/// The function pointer to `glGetSubroutineIndex()`
19445	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSubroutineIndex.xhtml>
19446	pub getsubroutineindex: PFNGLGETSUBROUTINEINDEXPROC,
19447
19448	/// The function pointer to `glGetActiveSubroutineUniformiv()`
19449	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveSubroutineUniformiv.xhtml>
19450	pub getactivesubroutineuniformiv: PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC,
19451
19452	/// The function pointer to `glGetActiveSubroutineUniformName()`
19453	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveSubroutineUniformName.xhtml>
19454	pub getactivesubroutineuniformname: PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC,
19455
19456	/// The function pointer to `glGetActiveSubroutineName()`
19457	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveSubroutineName.xhtml>
19458	pub getactivesubroutinename: PFNGLGETACTIVESUBROUTINENAMEPROC,
19459
19460	/// The function pointer to `glUniformSubroutinesuiv()`
19461	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformSubroutinesuiv.xhtml>
19462	pub uniformsubroutinesuiv: PFNGLUNIFORMSUBROUTINESUIVPROC,
19463
19464	/// The function pointer to `glGetUniformSubroutineuiv()`
19465	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformSubroutineuiv.xhtml>
19466	pub getuniformsubroutineuiv: PFNGLGETUNIFORMSUBROUTINEUIVPROC,
19467
19468	/// The function pointer to `glGetProgramStageiv()`
19469	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramStageiv.xhtml>
19470	pub getprogramstageiv: PFNGLGETPROGRAMSTAGEIVPROC,
19471
19472	/// The function pointer to `glPatchParameteri()`
19473	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPatchParameteri.xhtml>
19474	pub patchparameteri: PFNGLPATCHPARAMETERIPROC,
19475
19476	/// The function pointer to `glPatchParameterfv()`
19477	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPatchParameterfv.xhtml>
19478	pub patchparameterfv: PFNGLPATCHPARAMETERFVPROC,
19479
19480	/// The function pointer to `glBindTransformFeedback()`
19481	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindTransformFeedback.xhtml>
19482	pub bindtransformfeedback: PFNGLBINDTRANSFORMFEEDBACKPROC,
19483
19484	/// The function pointer to `glDeleteTransformFeedbacks()`
19485	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteTransformFeedbacks.xhtml>
19486	pub deletetransformfeedbacks: PFNGLDELETETRANSFORMFEEDBACKSPROC,
19487
19488	/// The function pointer to `glGenTransformFeedbacks()`
19489	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenTransformFeedbacks.xhtml>
19490	pub gentransformfeedbacks: PFNGLGENTRANSFORMFEEDBACKSPROC,
19491
19492	/// The function pointer to `glIsTransformFeedback()`
19493	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsTransformFeedback.xhtml>
19494	pub istransformfeedback: PFNGLISTRANSFORMFEEDBACKPROC,
19495
19496	/// The function pointer to `glPauseTransformFeedback()`
19497	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPauseTransformFeedback.xhtml>
19498	pub pausetransformfeedback: PFNGLPAUSETRANSFORMFEEDBACKPROC,
19499
19500	/// The function pointer to `glResumeTransformFeedback()`
19501	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glResumeTransformFeedback.xhtml>
19502	pub resumetransformfeedback: PFNGLRESUMETRANSFORMFEEDBACKPROC,
19503
19504	/// The function pointer to `glDrawTransformFeedback()`
19505	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawTransformFeedback.xhtml>
19506	pub drawtransformfeedback: PFNGLDRAWTRANSFORMFEEDBACKPROC,
19507
19508	/// The function pointer to `glDrawTransformFeedbackStream()`
19509	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawTransformFeedbackStream.xhtml>
19510	pub drawtransformfeedbackstream: PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC,
19511
19512	/// The function pointer to `glBeginQueryIndexed()`
19513	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBeginQueryIndexed.xhtml>
19514	pub beginqueryindexed: PFNGLBEGINQUERYINDEXEDPROC,
19515
19516	/// The function pointer to `glEndQueryIndexed()`
19517	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEndQueryIndexed.xhtml>
19518	pub endqueryindexed: PFNGLENDQUERYINDEXEDPROC,
19519
19520	/// The function pointer to `glGetQueryIndexediv()`
19521	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryIndexediv.xhtml>
19522	pub getqueryindexediv: PFNGLGETQUERYINDEXEDIVPROC,
19523}
19524
19525impl GL_4_0 for Version40 {
19526	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
19527	#[inline(always)]
19528	fn glGetError(&self) -> GLenum {
19529		(self.geterror)()
19530	}
19531	#[inline(always)]
19532	fn glMinSampleShading(&self, value: GLfloat) -> Result<()> {
19533		#[cfg(feature = "catch_nullptr")]
19534		let ret = process_catch("glMinSampleShading", catch_unwind(||(self.minsampleshading)(value)));
19535		#[cfg(not(feature = "catch_nullptr"))]
19536		let ret = {(self.minsampleshading)(value); Ok(())};
19537		#[cfg(feature = "diagnose")]
19538		if let Ok(ret) = ret {
19539			return to_result("glMinSampleShading", ret, self.glGetError());
19540		} else {
19541			return ret
19542		}
19543		#[cfg(not(feature = "diagnose"))]
19544		return ret;
19545	}
19546	#[inline(always)]
19547	fn glBlendEquationi(&self, buf: GLuint, mode: GLenum) -> Result<()> {
19548		#[cfg(feature = "catch_nullptr")]
19549		let ret = process_catch("glBlendEquationi", catch_unwind(||(self.blendequationi)(buf, mode)));
19550		#[cfg(not(feature = "catch_nullptr"))]
19551		let ret = {(self.blendequationi)(buf, mode); Ok(())};
19552		#[cfg(feature = "diagnose")]
19553		if let Ok(ret) = ret {
19554			return to_result("glBlendEquationi", ret, self.glGetError());
19555		} else {
19556			return ret
19557		}
19558		#[cfg(not(feature = "diagnose"))]
19559		return ret;
19560	}
19561	#[inline(always)]
19562	fn glBlendEquationSeparatei(&self, buf: GLuint, modeRGB: GLenum, modeAlpha: GLenum) -> Result<()> {
19563		#[cfg(feature = "catch_nullptr")]
19564		let ret = process_catch("glBlendEquationSeparatei", catch_unwind(||(self.blendequationseparatei)(buf, modeRGB, modeAlpha)));
19565		#[cfg(not(feature = "catch_nullptr"))]
19566		let ret = {(self.blendequationseparatei)(buf, modeRGB, modeAlpha); Ok(())};
19567		#[cfg(feature = "diagnose")]
19568		if let Ok(ret) = ret {
19569			return to_result("glBlendEquationSeparatei", ret, self.glGetError());
19570		} else {
19571			return ret
19572		}
19573		#[cfg(not(feature = "diagnose"))]
19574		return ret;
19575	}
19576	#[inline(always)]
19577	fn glBlendFunci(&self, buf: GLuint, src: GLenum, dst: GLenum) -> Result<()> {
19578		#[cfg(feature = "catch_nullptr")]
19579		let ret = process_catch("glBlendFunci", catch_unwind(||(self.blendfunci)(buf, src, dst)));
19580		#[cfg(not(feature = "catch_nullptr"))]
19581		let ret = {(self.blendfunci)(buf, src, dst); Ok(())};
19582		#[cfg(feature = "diagnose")]
19583		if let Ok(ret) = ret {
19584			return to_result("glBlendFunci", ret, self.glGetError());
19585		} else {
19586			return ret
19587		}
19588		#[cfg(not(feature = "diagnose"))]
19589		return ret;
19590	}
19591	#[inline(always)]
19592	fn glBlendFuncSeparatei(&self, buf: GLuint, srcRGB: GLenum, dstRGB: GLenum, srcAlpha: GLenum, dstAlpha: GLenum) -> Result<()> {
19593		#[cfg(feature = "catch_nullptr")]
19594		let ret = process_catch("glBlendFuncSeparatei", catch_unwind(||(self.blendfuncseparatei)(buf, srcRGB, dstRGB, srcAlpha, dstAlpha)));
19595		#[cfg(not(feature = "catch_nullptr"))]
19596		let ret = {(self.blendfuncseparatei)(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); Ok(())};
19597		#[cfg(feature = "diagnose")]
19598		if let Ok(ret) = ret {
19599			return to_result("glBlendFuncSeparatei", ret, self.glGetError());
19600		} else {
19601			return ret
19602		}
19603		#[cfg(not(feature = "diagnose"))]
19604		return ret;
19605	}
19606	#[inline(always)]
19607	fn glDrawArraysIndirect(&self, mode: GLenum, indirect: *const c_void) -> Result<()> {
19608		#[cfg(feature = "catch_nullptr")]
19609		let ret = process_catch("glDrawArraysIndirect", catch_unwind(||(self.drawarraysindirect)(mode, indirect)));
19610		#[cfg(not(feature = "catch_nullptr"))]
19611		let ret = {(self.drawarraysindirect)(mode, indirect); Ok(())};
19612		#[cfg(feature = "diagnose")]
19613		if let Ok(ret) = ret {
19614			return to_result("glDrawArraysIndirect", ret, self.glGetError());
19615		} else {
19616			return ret
19617		}
19618		#[cfg(not(feature = "diagnose"))]
19619		return ret;
19620	}
19621	#[inline(always)]
19622	fn glDrawElementsIndirect(&self, mode: GLenum, type_: GLenum, indirect: *const c_void) -> Result<()> {
19623		#[cfg(feature = "catch_nullptr")]
19624		let ret = process_catch("glDrawElementsIndirect", catch_unwind(||(self.drawelementsindirect)(mode, type_, indirect)));
19625		#[cfg(not(feature = "catch_nullptr"))]
19626		let ret = {(self.drawelementsindirect)(mode, type_, indirect); Ok(())};
19627		#[cfg(feature = "diagnose")]
19628		if let Ok(ret) = ret {
19629			return to_result("glDrawElementsIndirect", ret, self.glGetError());
19630		} else {
19631			return ret
19632		}
19633		#[cfg(not(feature = "diagnose"))]
19634		return ret;
19635	}
19636	#[inline(always)]
19637	fn glUniform1d(&self, location: GLint, x: GLdouble) -> Result<()> {
19638		#[cfg(feature = "catch_nullptr")]
19639		let ret = process_catch("glUniform1d", catch_unwind(||(self.uniform1d)(location, x)));
19640		#[cfg(not(feature = "catch_nullptr"))]
19641		let ret = {(self.uniform1d)(location, x); Ok(())};
19642		#[cfg(feature = "diagnose")]
19643		if let Ok(ret) = ret {
19644			return to_result("glUniform1d", ret, self.glGetError());
19645		} else {
19646			return ret
19647		}
19648		#[cfg(not(feature = "diagnose"))]
19649		return ret;
19650	}
19651	#[inline(always)]
19652	fn glUniform2d(&self, location: GLint, x: GLdouble, y: GLdouble) -> Result<()> {
19653		#[cfg(feature = "catch_nullptr")]
19654		let ret = process_catch("glUniform2d", catch_unwind(||(self.uniform2d)(location, x, y)));
19655		#[cfg(not(feature = "catch_nullptr"))]
19656		let ret = {(self.uniform2d)(location, x, y); Ok(())};
19657		#[cfg(feature = "diagnose")]
19658		if let Ok(ret) = ret {
19659			return to_result("glUniform2d", ret, self.glGetError());
19660		} else {
19661			return ret
19662		}
19663		#[cfg(not(feature = "diagnose"))]
19664		return ret;
19665	}
19666	#[inline(always)]
19667	fn glUniform3d(&self, location: GLint, x: GLdouble, y: GLdouble, z: GLdouble) -> Result<()> {
19668		#[cfg(feature = "catch_nullptr")]
19669		let ret = process_catch("glUniform3d", catch_unwind(||(self.uniform3d)(location, x, y, z)));
19670		#[cfg(not(feature = "catch_nullptr"))]
19671		let ret = {(self.uniform3d)(location, x, y, z); Ok(())};
19672		#[cfg(feature = "diagnose")]
19673		if let Ok(ret) = ret {
19674			return to_result("glUniform3d", ret, self.glGetError());
19675		} else {
19676			return ret
19677		}
19678		#[cfg(not(feature = "diagnose"))]
19679		return ret;
19680	}
19681	#[inline(always)]
19682	fn glUniform4d(&self, location: GLint, x: GLdouble, y: GLdouble, z: GLdouble, w: GLdouble) -> Result<()> {
19683		#[cfg(feature = "catch_nullptr")]
19684		let ret = process_catch("glUniform4d", catch_unwind(||(self.uniform4d)(location, x, y, z, w)));
19685		#[cfg(not(feature = "catch_nullptr"))]
19686		let ret = {(self.uniform4d)(location, x, y, z, w); Ok(())};
19687		#[cfg(feature = "diagnose")]
19688		if let Ok(ret) = ret {
19689			return to_result("glUniform4d", ret, self.glGetError());
19690		} else {
19691			return ret
19692		}
19693		#[cfg(not(feature = "diagnose"))]
19694		return ret;
19695	}
19696	#[inline(always)]
19697	fn glUniform1dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()> {
19698		#[cfg(feature = "catch_nullptr")]
19699		let ret = process_catch("glUniform1dv", catch_unwind(||(self.uniform1dv)(location, count, value)));
19700		#[cfg(not(feature = "catch_nullptr"))]
19701		let ret = {(self.uniform1dv)(location, count, value); Ok(())};
19702		#[cfg(feature = "diagnose")]
19703		if let Ok(ret) = ret {
19704			return to_result("glUniform1dv", ret, self.glGetError());
19705		} else {
19706			return ret
19707		}
19708		#[cfg(not(feature = "diagnose"))]
19709		return ret;
19710	}
19711	#[inline(always)]
19712	fn glUniform2dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()> {
19713		#[cfg(feature = "catch_nullptr")]
19714		let ret = process_catch("glUniform2dv", catch_unwind(||(self.uniform2dv)(location, count, value)));
19715		#[cfg(not(feature = "catch_nullptr"))]
19716		let ret = {(self.uniform2dv)(location, count, value); Ok(())};
19717		#[cfg(feature = "diagnose")]
19718		if let Ok(ret) = ret {
19719			return to_result("glUniform2dv", ret, self.glGetError());
19720		} else {
19721			return ret
19722		}
19723		#[cfg(not(feature = "diagnose"))]
19724		return ret;
19725	}
19726	#[inline(always)]
19727	fn glUniform3dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()> {
19728		#[cfg(feature = "catch_nullptr")]
19729		let ret = process_catch("glUniform3dv", catch_unwind(||(self.uniform3dv)(location, count, value)));
19730		#[cfg(not(feature = "catch_nullptr"))]
19731		let ret = {(self.uniform3dv)(location, count, value); Ok(())};
19732		#[cfg(feature = "diagnose")]
19733		if let Ok(ret) = ret {
19734			return to_result("glUniform3dv", ret, self.glGetError());
19735		} else {
19736			return ret
19737		}
19738		#[cfg(not(feature = "diagnose"))]
19739		return ret;
19740	}
19741	#[inline(always)]
19742	fn glUniform4dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()> {
19743		#[cfg(feature = "catch_nullptr")]
19744		let ret = process_catch("glUniform4dv", catch_unwind(||(self.uniform4dv)(location, count, value)));
19745		#[cfg(not(feature = "catch_nullptr"))]
19746		let ret = {(self.uniform4dv)(location, count, value); Ok(())};
19747		#[cfg(feature = "diagnose")]
19748		if let Ok(ret) = ret {
19749			return to_result("glUniform4dv", ret, self.glGetError());
19750		} else {
19751			return ret
19752		}
19753		#[cfg(not(feature = "diagnose"))]
19754		return ret;
19755	}
19756	#[inline(always)]
19757	fn glUniformMatrix2dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
19758		#[cfg(feature = "catch_nullptr")]
19759		let ret = process_catch("glUniformMatrix2dv", catch_unwind(||(self.uniformmatrix2dv)(location, count, transpose, value)));
19760		#[cfg(not(feature = "catch_nullptr"))]
19761		let ret = {(self.uniformmatrix2dv)(location, count, transpose, value); Ok(())};
19762		#[cfg(feature = "diagnose")]
19763		if let Ok(ret) = ret {
19764			return to_result("glUniformMatrix2dv", ret, self.glGetError());
19765		} else {
19766			return ret
19767		}
19768		#[cfg(not(feature = "diagnose"))]
19769		return ret;
19770	}
19771	#[inline(always)]
19772	fn glUniformMatrix3dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
19773		#[cfg(feature = "catch_nullptr")]
19774		let ret = process_catch("glUniformMatrix3dv", catch_unwind(||(self.uniformmatrix3dv)(location, count, transpose, value)));
19775		#[cfg(not(feature = "catch_nullptr"))]
19776		let ret = {(self.uniformmatrix3dv)(location, count, transpose, value); Ok(())};
19777		#[cfg(feature = "diagnose")]
19778		if let Ok(ret) = ret {
19779			return to_result("glUniformMatrix3dv", ret, self.glGetError());
19780		} else {
19781			return ret
19782		}
19783		#[cfg(not(feature = "diagnose"))]
19784		return ret;
19785	}
19786	#[inline(always)]
19787	fn glUniformMatrix4dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
19788		#[cfg(feature = "catch_nullptr")]
19789		let ret = process_catch("glUniformMatrix4dv", catch_unwind(||(self.uniformmatrix4dv)(location, count, transpose, value)));
19790		#[cfg(not(feature = "catch_nullptr"))]
19791		let ret = {(self.uniformmatrix4dv)(location, count, transpose, value); Ok(())};
19792		#[cfg(feature = "diagnose")]
19793		if let Ok(ret) = ret {
19794			return to_result("glUniformMatrix4dv", ret, self.glGetError());
19795		} else {
19796			return ret
19797		}
19798		#[cfg(not(feature = "diagnose"))]
19799		return ret;
19800	}
19801	#[inline(always)]
19802	fn glUniformMatrix2x3dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
19803		#[cfg(feature = "catch_nullptr")]
19804		let ret = process_catch("glUniformMatrix2x3dv", catch_unwind(||(self.uniformmatrix2x3dv)(location, count, transpose, value)));
19805		#[cfg(not(feature = "catch_nullptr"))]
19806		let ret = {(self.uniformmatrix2x3dv)(location, count, transpose, value); Ok(())};
19807		#[cfg(feature = "diagnose")]
19808		if let Ok(ret) = ret {
19809			return to_result("glUniformMatrix2x3dv", ret, self.glGetError());
19810		} else {
19811			return ret
19812		}
19813		#[cfg(not(feature = "diagnose"))]
19814		return ret;
19815	}
19816	#[inline(always)]
19817	fn glUniformMatrix2x4dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
19818		#[cfg(feature = "catch_nullptr")]
19819		let ret = process_catch("glUniformMatrix2x4dv", catch_unwind(||(self.uniformmatrix2x4dv)(location, count, transpose, value)));
19820		#[cfg(not(feature = "catch_nullptr"))]
19821		let ret = {(self.uniformmatrix2x4dv)(location, count, transpose, value); Ok(())};
19822		#[cfg(feature = "diagnose")]
19823		if let Ok(ret) = ret {
19824			return to_result("glUniformMatrix2x4dv", ret, self.glGetError());
19825		} else {
19826			return ret
19827		}
19828		#[cfg(not(feature = "diagnose"))]
19829		return ret;
19830	}
19831	#[inline(always)]
19832	fn glUniformMatrix3x2dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
19833		#[cfg(feature = "catch_nullptr")]
19834		let ret = process_catch("glUniformMatrix3x2dv", catch_unwind(||(self.uniformmatrix3x2dv)(location, count, transpose, value)));
19835		#[cfg(not(feature = "catch_nullptr"))]
19836		let ret = {(self.uniformmatrix3x2dv)(location, count, transpose, value); Ok(())};
19837		#[cfg(feature = "diagnose")]
19838		if let Ok(ret) = ret {
19839			return to_result("glUniformMatrix3x2dv", ret, self.glGetError());
19840		} else {
19841			return ret
19842		}
19843		#[cfg(not(feature = "diagnose"))]
19844		return ret;
19845	}
19846	#[inline(always)]
19847	fn glUniformMatrix3x4dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
19848		#[cfg(feature = "catch_nullptr")]
19849		let ret = process_catch("glUniformMatrix3x4dv", catch_unwind(||(self.uniformmatrix3x4dv)(location, count, transpose, value)));
19850		#[cfg(not(feature = "catch_nullptr"))]
19851		let ret = {(self.uniformmatrix3x4dv)(location, count, transpose, value); Ok(())};
19852		#[cfg(feature = "diagnose")]
19853		if let Ok(ret) = ret {
19854			return to_result("glUniformMatrix3x4dv", ret, self.glGetError());
19855		} else {
19856			return ret
19857		}
19858		#[cfg(not(feature = "diagnose"))]
19859		return ret;
19860	}
19861	#[inline(always)]
19862	fn glUniformMatrix4x2dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
19863		#[cfg(feature = "catch_nullptr")]
19864		let ret = process_catch("glUniformMatrix4x2dv", catch_unwind(||(self.uniformmatrix4x2dv)(location, count, transpose, value)));
19865		#[cfg(not(feature = "catch_nullptr"))]
19866		let ret = {(self.uniformmatrix4x2dv)(location, count, transpose, value); Ok(())};
19867		#[cfg(feature = "diagnose")]
19868		if let Ok(ret) = ret {
19869			return to_result("glUniformMatrix4x2dv", ret, self.glGetError());
19870		} else {
19871			return ret
19872		}
19873		#[cfg(not(feature = "diagnose"))]
19874		return ret;
19875	}
19876	#[inline(always)]
19877	fn glUniformMatrix4x3dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
19878		#[cfg(feature = "catch_nullptr")]
19879		let ret = process_catch("glUniformMatrix4x3dv", catch_unwind(||(self.uniformmatrix4x3dv)(location, count, transpose, value)));
19880		#[cfg(not(feature = "catch_nullptr"))]
19881		let ret = {(self.uniformmatrix4x3dv)(location, count, transpose, value); Ok(())};
19882		#[cfg(feature = "diagnose")]
19883		if let Ok(ret) = ret {
19884			return to_result("glUniformMatrix4x3dv", ret, self.glGetError());
19885		} else {
19886			return ret
19887		}
19888		#[cfg(not(feature = "diagnose"))]
19889		return ret;
19890	}
19891	#[inline(always)]
19892	fn glGetUniformdv(&self, program: GLuint, location: GLint, params: *mut GLdouble) -> Result<()> {
19893		#[cfg(feature = "catch_nullptr")]
19894		let ret = process_catch("glGetUniformdv", catch_unwind(||(self.getuniformdv)(program, location, params)));
19895		#[cfg(not(feature = "catch_nullptr"))]
19896		let ret = {(self.getuniformdv)(program, location, params); Ok(())};
19897		#[cfg(feature = "diagnose")]
19898		if let Ok(ret) = ret {
19899			return to_result("glGetUniformdv", ret, self.glGetError());
19900		} else {
19901			return ret
19902		}
19903		#[cfg(not(feature = "diagnose"))]
19904		return ret;
19905	}
19906	#[inline(always)]
19907	fn glGetSubroutineUniformLocation(&self, program: GLuint, shadertype: GLenum, name: *const GLchar) -> Result<GLint> {
19908		#[cfg(feature = "catch_nullptr")]
19909		let ret = process_catch("glGetSubroutineUniformLocation", catch_unwind(||(self.getsubroutineuniformlocation)(program, shadertype, name)));
19910		#[cfg(not(feature = "catch_nullptr"))]
19911		let ret = Ok((self.getsubroutineuniformlocation)(program, shadertype, name));
19912		#[cfg(feature = "diagnose")]
19913		if let Ok(ret) = ret {
19914			return to_result("glGetSubroutineUniformLocation", ret, self.glGetError());
19915		} else {
19916			return ret
19917		}
19918		#[cfg(not(feature = "diagnose"))]
19919		return ret;
19920	}
19921	#[inline(always)]
19922	fn glGetSubroutineIndex(&self, program: GLuint, shadertype: GLenum, name: *const GLchar) -> Result<GLuint> {
19923		#[cfg(feature = "catch_nullptr")]
19924		let ret = process_catch("glGetSubroutineIndex", catch_unwind(||(self.getsubroutineindex)(program, shadertype, name)));
19925		#[cfg(not(feature = "catch_nullptr"))]
19926		let ret = Ok((self.getsubroutineindex)(program, shadertype, name));
19927		#[cfg(feature = "diagnose")]
19928		if let Ok(ret) = ret {
19929			return to_result("glGetSubroutineIndex", ret, self.glGetError());
19930		} else {
19931			return ret
19932		}
19933		#[cfg(not(feature = "diagnose"))]
19934		return ret;
19935	}
19936	#[inline(always)]
19937	fn glGetActiveSubroutineUniformiv(&self, program: GLuint, shadertype: GLenum, index: GLuint, pname: GLenum, values: *mut GLint) -> Result<()> {
19938		#[cfg(feature = "catch_nullptr")]
19939		let ret = process_catch("glGetActiveSubroutineUniformiv", catch_unwind(||(self.getactivesubroutineuniformiv)(program, shadertype, index, pname, values)));
19940		#[cfg(not(feature = "catch_nullptr"))]
19941		let ret = {(self.getactivesubroutineuniformiv)(program, shadertype, index, pname, values); Ok(())};
19942		#[cfg(feature = "diagnose")]
19943		if let Ok(ret) = ret {
19944			return to_result("glGetActiveSubroutineUniformiv", ret, self.glGetError());
19945		} else {
19946			return ret
19947		}
19948		#[cfg(not(feature = "diagnose"))]
19949		return ret;
19950	}
19951	#[inline(always)]
19952	fn glGetActiveSubroutineUniformName(&self, program: GLuint, shadertype: GLenum, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, name: *mut GLchar) -> Result<()> {
19953		#[cfg(feature = "catch_nullptr")]
19954		let ret = process_catch("glGetActiveSubroutineUniformName", catch_unwind(||(self.getactivesubroutineuniformname)(program, shadertype, index, bufSize, length, name)));
19955		#[cfg(not(feature = "catch_nullptr"))]
19956		let ret = {(self.getactivesubroutineuniformname)(program, shadertype, index, bufSize, length, name); Ok(())};
19957		#[cfg(feature = "diagnose")]
19958		if let Ok(ret) = ret {
19959			return to_result("glGetActiveSubroutineUniformName", ret, self.glGetError());
19960		} else {
19961			return ret
19962		}
19963		#[cfg(not(feature = "diagnose"))]
19964		return ret;
19965	}
19966	#[inline(always)]
19967	fn glGetActiveSubroutineName(&self, program: GLuint, shadertype: GLenum, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, name: *mut GLchar) -> Result<()> {
19968		#[cfg(feature = "catch_nullptr")]
19969		let ret = process_catch("glGetActiveSubroutineName", catch_unwind(||(self.getactivesubroutinename)(program, shadertype, index, bufSize, length, name)));
19970		#[cfg(not(feature = "catch_nullptr"))]
19971		let ret = {(self.getactivesubroutinename)(program, shadertype, index, bufSize, length, name); Ok(())};
19972		#[cfg(feature = "diagnose")]
19973		if let Ok(ret) = ret {
19974			return to_result("glGetActiveSubroutineName", ret, self.glGetError());
19975		} else {
19976			return ret
19977		}
19978		#[cfg(not(feature = "diagnose"))]
19979		return ret;
19980	}
19981	#[inline(always)]
19982	fn glUniformSubroutinesuiv(&self, shadertype: GLenum, count: GLsizei, indices: *const GLuint) -> Result<()> {
19983		#[cfg(feature = "catch_nullptr")]
19984		let ret = process_catch("glUniformSubroutinesuiv", catch_unwind(||(self.uniformsubroutinesuiv)(shadertype, count, indices)));
19985		#[cfg(not(feature = "catch_nullptr"))]
19986		let ret = {(self.uniformsubroutinesuiv)(shadertype, count, indices); Ok(())};
19987		#[cfg(feature = "diagnose")]
19988		if let Ok(ret) = ret {
19989			return to_result("glUniformSubroutinesuiv", ret, self.glGetError());
19990		} else {
19991			return ret
19992		}
19993		#[cfg(not(feature = "diagnose"))]
19994		return ret;
19995	}
19996	#[inline(always)]
19997	fn glGetUniformSubroutineuiv(&self, shadertype: GLenum, location: GLint, params: *mut GLuint) -> Result<()> {
19998		#[cfg(feature = "catch_nullptr")]
19999		let ret = process_catch("glGetUniformSubroutineuiv", catch_unwind(||(self.getuniformsubroutineuiv)(shadertype, location, params)));
20000		#[cfg(not(feature = "catch_nullptr"))]
20001		let ret = {(self.getuniformsubroutineuiv)(shadertype, location, params); Ok(())};
20002		#[cfg(feature = "diagnose")]
20003		if let Ok(ret) = ret {
20004			return to_result("glGetUniformSubroutineuiv", ret, self.glGetError());
20005		} else {
20006			return ret
20007		}
20008		#[cfg(not(feature = "diagnose"))]
20009		return ret;
20010	}
20011	#[inline(always)]
20012	fn glGetProgramStageiv(&self, program: GLuint, shadertype: GLenum, pname: GLenum, values: *mut GLint) -> Result<()> {
20013		#[cfg(feature = "catch_nullptr")]
20014		let ret = process_catch("glGetProgramStageiv", catch_unwind(||(self.getprogramstageiv)(program, shadertype, pname, values)));
20015		#[cfg(not(feature = "catch_nullptr"))]
20016		let ret = {(self.getprogramstageiv)(program, shadertype, pname, values); Ok(())};
20017		#[cfg(feature = "diagnose")]
20018		if let Ok(ret) = ret {
20019			return to_result("glGetProgramStageiv", ret, self.glGetError());
20020		} else {
20021			return ret
20022		}
20023		#[cfg(not(feature = "diagnose"))]
20024		return ret;
20025	}
20026	#[inline(always)]
20027	fn glPatchParameteri(&self, pname: GLenum, value: GLint) -> Result<()> {
20028		#[cfg(feature = "catch_nullptr")]
20029		let ret = process_catch("glPatchParameteri", catch_unwind(||(self.patchparameteri)(pname, value)));
20030		#[cfg(not(feature = "catch_nullptr"))]
20031		let ret = {(self.patchparameteri)(pname, value); Ok(())};
20032		#[cfg(feature = "diagnose")]
20033		if let Ok(ret) = ret {
20034			return to_result("glPatchParameteri", ret, self.glGetError());
20035		} else {
20036			return ret
20037		}
20038		#[cfg(not(feature = "diagnose"))]
20039		return ret;
20040	}
20041	#[inline(always)]
20042	fn glPatchParameterfv(&self, pname: GLenum, values: *const GLfloat) -> Result<()> {
20043		#[cfg(feature = "catch_nullptr")]
20044		let ret = process_catch("glPatchParameterfv", catch_unwind(||(self.patchparameterfv)(pname, values)));
20045		#[cfg(not(feature = "catch_nullptr"))]
20046		let ret = {(self.patchparameterfv)(pname, values); Ok(())};
20047		#[cfg(feature = "diagnose")]
20048		if let Ok(ret) = ret {
20049			return to_result("glPatchParameterfv", ret, self.glGetError());
20050		} else {
20051			return ret
20052		}
20053		#[cfg(not(feature = "diagnose"))]
20054		return ret;
20055	}
20056	#[inline(always)]
20057	fn glBindTransformFeedback(&self, target: GLenum, id: GLuint) -> Result<()> {
20058		#[cfg(feature = "catch_nullptr")]
20059		let ret = process_catch("glBindTransformFeedback", catch_unwind(||(self.bindtransformfeedback)(target, id)));
20060		#[cfg(not(feature = "catch_nullptr"))]
20061		let ret = {(self.bindtransformfeedback)(target, id); Ok(())};
20062		#[cfg(feature = "diagnose")]
20063		if let Ok(ret) = ret {
20064			return to_result("glBindTransformFeedback", ret, self.glGetError());
20065		} else {
20066			return ret
20067		}
20068		#[cfg(not(feature = "diagnose"))]
20069		return ret;
20070	}
20071	#[inline(always)]
20072	fn glDeleteTransformFeedbacks(&self, n: GLsizei, ids: *const GLuint) -> Result<()> {
20073		#[cfg(feature = "catch_nullptr")]
20074		let ret = process_catch("glDeleteTransformFeedbacks", catch_unwind(||(self.deletetransformfeedbacks)(n, ids)));
20075		#[cfg(not(feature = "catch_nullptr"))]
20076		let ret = {(self.deletetransformfeedbacks)(n, ids); Ok(())};
20077		#[cfg(feature = "diagnose")]
20078		if let Ok(ret) = ret {
20079			return to_result("glDeleteTransformFeedbacks", ret, self.glGetError());
20080		} else {
20081			return ret
20082		}
20083		#[cfg(not(feature = "diagnose"))]
20084		return ret;
20085	}
20086	#[inline(always)]
20087	fn glGenTransformFeedbacks(&self, n: GLsizei, ids: *mut GLuint) -> Result<()> {
20088		#[cfg(feature = "catch_nullptr")]
20089		let ret = process_catch("glGenTransformFeedbacks", catch_unwind(||(self.gentransformfeedbacks)(n, ids)));
20090		#[cfg(not(feature = "catch_nullptr"))]
20091		let ret = {(self.gentransformfeedbacks)(n, ids); Ok(())};
20092		#[cfg(feature = "diagnose")]
20093		if let Ok(ret) = ret {
20094			return to_result("glGenTransformFeedbacks", ret, self.glGetError());
20095		} else {
20096			return ret
20097		}
20098		#[cfg(not(feature = "diagnose"))]
20099		return ret;
20100	}
20101	#[inline(always)]
20102	fn glIsTransformFeedback(&self, id: GLuint) -> Result<GLboolean> {
20103		#[cfg(feature = "catch_nullptr")]
20104		let ret = process_catch("glIsTransformFeedback", catch_unwind(||(self.istransformfeedback)(id)));
20105		#[cfg(not(feature = "catch_nullptr"))]
20106		let ret = Ok((self.istransformfeedback)(id));
20107		#[cfg(feature = "diagnose")]
20108		if let Ok(ret) = ret {
20109			return to_result("glIsTransformFeedback", ret, self.glGetError());
20110		} else {
20111			return ret
20112		}
20113		#[cfg(not(feature = "diagnose"))]
20114		return ret;
20115	}
20116	#[inline(always)]
20117	fn glPauseTransformFeedback(&self) -> Result<()> {
20118		#[cfg(feature = "catch_nullptr")]
20119		let ret = process_catch("glPauseTransformFeedback", catch_unwind(||(self.pausetransformfeedback)()));
20120		#[cfg(not(feature = "catch_nullptr"))]
20121		let ret = {(self.pausetransformfeedback)(); Ok(())};
20122		#[cfg(feature = "diagnose")]
20123		if let Ok(ret) = ret {
20124			return to_result("glPauseTransformFeedback", ret, self.glGetError());
20125		} else {
20126			return ret
20127		}
20128		#[cfg(not(feature = "diagnose"))]
20129		return ret;
20130	}
20131	#[inline(always)]
20132	fn glResumeTransformFeedback(&self) -> Result<()> {
20133		#[cfg(feature = "catch_nullptr")]
20134		let ret = process_catch("glResumeTransformFeedback", catch_unwind(||(self.resumetransformfeedback)()));
20135		#[cfg(not(feature = "catch_nullptr"))]
20136		let ret = {(self.resumetransformfeedback)(); Ok(())};
20137		#[cfg(feature = "diagnose")]
20138		if let Ok(ret) = ret {
20139			return to_result("glResumeTransformFeedback", ret, self.glGetError());
20140		} else {
20141			return ret
20142		}
20143		#[cfg(not(feature = "diagnose"))]
20144		return ret;
20145	}
20146	#[inline(always)]
20147	fn glDrawTransformFeedback(&self, mode: GLenum, id: GLuint) -> Result<()> {
20148		#[cfg(feature = "catch_nullptr")]
20149		let ret = process_catch("glDrawTransformFeedback", catch_unwind(||(self.drawtransformfeedback)(mode, id)));
20150		#[cfg(not(feature = "catch_nullptr"))]
20151		let ret = {(self.drawtransformfeedback)(mode, id); Ok(())};
20152		#[cfg(feature = "diagnose")]
20153		if let Ok(ret) = ret {
20154			return to_result("glDrawTransformFeedback", ret, self.glGetError());
20155		} else {
20156			return ret
20157		}
20158		#[cfg(not(feature = "diagnose"))]
20159		return ret;
20160	}
20161	#[inline(always)]
20162	fn glDrawTransformFeedbackStream(&self, mode: GLenum, id: GLuint, stream: GLuint) -> Result<()> {
20163		#[cfg(feature = "catch_nullptr")]
20164		let ret = process_catch("glDrawTransformFeedbackStream", catch_unwind(||(self.drawtransformfeedbackstream)(mode, id, stream)));
20165		#[cfg(not(feature = "catch_nullptr"))]
20166		let ret = {(self.drawtransformfeedbackstream)(mode, id, stream); Ok(())};
20167		#[cfg(feature = "diagnose")]
20168		if let Ok(ret) = ret {
20169			return to_result("glDrawTransformFeedbackStream", ret, self.glGetError());
20170		} else {
20171			return ret
20172		}
20173		#[cfg(not(feature = "diagnose"))]
20174		return ret;
20175	}
20176	#[inline(always)]
20177	fn glBeginQueryIndexed(&self, target: GLenum, index: GLuint, id: GLuint) -> Result<()> {
20178		#[cfg(feature = "catch_nullptr")]
20179		let ret = process_catch("glBeginQueryIndexed", catch_unwind(||(self.beginqueryindexed)(target, index, id)));
20180		#[cfg(not(feature = "catch_nullptr"))]
20181		let ret = {(self.beginqueryindexed)(target, index, id); Ok(())};
20182		#[cfg(feature = "diagnose")]
20183		if let Ok(ret) = ret {
20184			return to_result("glBeginQueryIndexed", ret, self.glGetError());
20185		} else {
20186			return ret
20187		}
20188		#[cfg(not(feature = "diagnose"))]
20189		return ret;
20190	}
20191	#[inline(always)]
20192	fn glEndQueryIndexed(&self, target: GLenum, index: GLuint) -> Result<()> {
20193		#[cfg(feature = "catch_nullptr")]
20194		let ret = process_catch("glEndQueryIndexed", catch_unwind(||(self.endqueryindexed)(target, index)));
20195		#[cfg(not(feature = "catch_nullptr"))]
20196		let ret = {(self.endqueryindexed)(target, index); Ok(())};
20197		#[cfg(feature = "diagnose")]
20198		if let Ok(ret) = ret {
20199			return to_result("glEndQueryIndexed", ret, self.glGetError());
20200		} else {
20201			return ret
20202		}
20203		#[cfg(not(feature = "diagnose"))]
20204		return ret;
20205	}
20206	#[inline(always)]
20207	fn glGetQueryIndexediv(&self, target: GLenum, index: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
20208		#[cfg(feature = "catch_nullptr")]
20209		let ret = process_catch("glGetQueryIndexediv", catch_unwind(||(self.getqueryindexediv)(target, index, pname, params)));
20210		#[cfg(not(feature = "catch_nullptr"))]
20211		let ret = {(self.getqueryindexediv)(target, index, pname, params); Ok(())};
20212		#[cfg(feature = "diagnose")]
20213		if let Ok(ret) = ret {
20214			return to_result("glGetQueryIndexediv", ret, self.glGetError());
20215		} else {
20216			return ret
20217		}
20218		#[cfg(not(feature = "diagnose"))]
20219		return ret;
20220	}
20221}
20222
20223impl Version40 {
20224	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
20225		let (_spec, major, minor, release) = base.get_version();
20226		if (major, minor, release) < (4, 0, 0) {
20227			return Self::default();
20228		}
20229		Self {
20230			available: true,
20231			geterror: {let proc = get_proc_address("glGetError"); if proc.is_null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
20232			minsampleshading: {let proc = get_proc_address("glMinSampleShading"); if proc.is_null() {dummy_pfnglminsampleshadingproc} else {unsafe{transmute(proc)}}},
20233			blendequationi: {let proc = get_proc_address("glBlendEquationi"); if proc.is_null() {dummy_pfnglblendequationiproc} else {unsafe{transmute(proc)}}},
20234			blendequationseparatei: {let proc = get_proc_address("glBlendEquationSeparatei"); if proc.is_null() {dummy_pfnglblendequationseparateiproc} else {unsafe{transmute(proc)}}},
20235			blendfunci: {let proc = get_proc_address("glBlendFunci"); if proc.is_null() {dummy_pfnglblendfunciproc} else {unsafe{transmute(proc)}}},
20236			blendfuncseparatei: {let proc = get_proc_address("glBlendFuncSeparatei"); if proc.is_null() {dummy_pfnglblendfuncseparateiproc} else {unsafe{transmute(proc)}}},
20237			drawarraysindirect: {let proc = get_proc_address("glDrawArraysIndirect"); if proc.is_null() {dummy_pfngldrawarraysindirectproc} else {unsafe{transmute(proc)}}},
20238			drawelementsindirect: {let proc = get_proc_address("glDrawElementsIndirect"); if proc.is_null() {dummy_pfngldrawelementsindirectproc} else {unsafe{transmute(proc)}}},
20239			uniform1d: {let proc = get_proc_address("glUniform1d"); if proc.is_null() {dummy_pfngluniform1dproc} else {unsafe{transmute(proc)}}},
20240			uniform2d: {let proc = get_proc_address("glUniform2d"); if proc.is_null() {dummy_pfngluniform2dproc} else {unsafe{transmute(proc)}}},
20241			uniform3d: {let proc = get_proc_address("glUniform3d"); if proc.is_null() {dummy_pfngluniform3dproc} else {unsafe{transmute(proc)}}},
20242			uniform4d: {let proc = get_proc_address("glUniform4d"); if proc.is_null() {dummy_pfngluniform4dproc} else {unsafe{transmute(proc)}}},
20243			uniform1dv: {let proc = get_proc_address("glUniform1dv"); if proc.is_null() {dummy_pfngluniform1dvproc} else {unsafe{transmute(proc)}}},
20244			uniform2dv: {let proc = get_proc_address("glUniform2dv"); if proc.is_null() {dummy_pfngluniform2dvproc} else {unsafe{transmute(proc)}}},
20245			uniform3dv: {let proc = get_proc_address("glUniform3dv"); if proc.is_null() {dummy_pfngluniform3dvproc} else {unsafe{transmute(proc)}}},
20246			uniform4dv: {let proc = get_proc_address("glUniform4dv"); if proc.is_null() {dummy_pfngluniform4dvproc} else {unsafe{transmute(proc)}}},
20247			uniformmatrix2dv: {let proc = get_proc_address("glUniformMatrix2dv"); if proc.is_null() {dummy_pfngluniformmatrix2dvproc} else {unsafe{transmute(proc)}}},
20248			uniformmatrix3dv: {let proc = get_proc_address("glUniformMatrix3dv"); if proc.is_null() {dummy_pfngluniformmatrix3dvproc} else {unsafe{transmute(proc)}}},
20249			uniformmatrix4dv: {let proc = get_proc_address("glUniformMatrix4dv"); if proc.is_null() {dummy_pfngluniformmatrix4dvproc} else {unsafe{transmute(proc)}}},
20250			uniformmatrix2x3dv: {let proc = get_proc_address("glUniformMatrix2x3dv"); if proc.is_null() {dummy_pfngluniformmatrix2x3dvproc} else {unsafe{transmute(proc)}}},
20251			uniformmatrix2x4dv: {let proc = get_proc_address("glUniformMatrix2x4dv"); if proc.is_null() {dummy_pfngluniformmatrix2x4dvproc} else {unsafe{transmute(proc)}}},
20252			uniformmatrix3x2dv: {let proc = get_proc_address("glUniformMatrix3x2dv"); if proc.is_null() {dummy_pfngluniformmatrix3x2dvproc} else {unsafe{transmute(proc)}}},
20253			uniformmatrix3x4dv: {let proc = get_proc_address("glUniformMatrix3x4dv"); if proc.is_null() {dummy_pfngluniformmatrix3x4dvproc} else {unsafe{transmute(proc)}}},
20254			uniformmatrix4x2dv: {let proc = get_proc_address("glUniformMatrix4x2dv"); if proc.is_null() {dummy_pfngluniformmatrix4x2dvproc} else {unsafe{transmute(proc)}}},
20255			uniformmatrix4x3dv: {let proc = get_proc_address("glUniformMatrix4x3dv"); if proc.is_null() {dummy_pfngluniformmatrix4x3dvproc} else {unsafe{transmute(proc)}}},
20256			getuniformdv: {let proc = get_proc_address("glGetUniformdv"); if proc.is_null() {dummy_pfnglgetuniformdvproc} else {unsafe{transmute(proc)}}},
20257			getsubroutineuniformlocation: {let proc = get_proc_address("glGetSubroutineUniformLocation"); if proc.is_null() {dummy_pfnglgetsubroutineuniformlocationproc} else {unsafe{transmute(proc)}}},
20258			getsubroutineindex: {let proc = get_proc_address("glGetSubroutineIndex"); if proc.is_null() {dummy_pfnglgetsubroutineindexproc} else {unsafe{transmute(proc)}}},
20259			getactivesubroutineuniformiv: {let proc = get_proc_address("glGetActiveSubroutineUniformiv"); if proc.is_null() {dummy_pfnglgetactivesubroutineuniformivproc} else {unsafe{transmute(proc)}}},
20260			getactivesubroutineuniformname: {let proc = get_proc_address("glGetActiveSubroutineUniformName"); if proc.is_null() {dummy_pfnglgetactivesubroutineuniformnameproc} else {unsafe{transmute(proc)}}},
20261			getactivesubroutinename: {let proc = get_proc_address("glGetActiveSubroutineName"); if proc.is_null() {dummy_pfnglgetactivesubroutinenameproc} else {unsafe{transmute(proc)}}},
20262			uniformsubroutinesuiv: {let proc = get_proc_address("glUniformSubroutinesuiv"); if proc.is_null() {dummy_pfngluniformsubroutinesuivproc} else {unsafe{transmute(proc)}}},
20263			getuniformsubroutineuiv: {let proc = get_proc_address("glGetUniformSubroutineuiv"); if proc.is_null() {dummy_pfnglgetuniformsubroutineuivproc} else {unsafe{transmute(proc)}}},
20264			getprogramstageiv: {let proc = get_proc_address("glGetProgramStageiv"); if proc.is_null() {dummy_pfnglgetprogramstageivproc} else {unsafe{transmute(proc)}}},
20265			patchparameteri: {let proc = get_proc_address("glPatchParameteri"); if proc.is_null() {dummy_pfnglpatchparameteriproc} else {unsafe{transmute(proc)}}},
20266			patchparameterfv: {let proc = get_proc_address("glPatchParameterfv"); if proc.is_null() {dummy_pfnglpatchparameterfvproc} else {unsafe{transmute(proc)}}},
20267			bindtransformfeedback: {let proc = get_proc_address("glBindTransformFeedback"); if proc.is_null() {dummy_pfnglbindtransformfeedbackproc} else {unsafe{transmute(proc)}}},
20268			deletetransformfeedbacks: {let proc = get_proc_address("glDeleteTransformFeedbacks"); if proc.is_null() {dummy_pfngldeletetransformfeedbacksproc} else {unsafe{transmute(proc)}}},
20269			gentransformfeedbacks: {let proc = get_proc_address("glGenTransformFeedbacks"); if proc.is_null() {dummy_pfnglgentransformfeedbacksproc} else {unsafe{transmute(proc)}}},
20270			istransformfeedback: {let proc = get_proc_address("glIsTransformFeedback"); if proc.is_null() {dummy_pfnglistransformfeedbackproc} else {unsafe{transmute(proc)}}},
20271			pausetransformfeedback: {let proc = get_proc_address("glPauseTransformFeedback"); if proc.is_null() {dummy_pfnglpausetransformfeedbackproc} else {unsafe{transmute(proc)}}},
20272			resumetransformfeedback: {let proc = get_proc_address("glResumeTransformFeedback"); if proc.is_null() {dummy_pfnglresumetransformfeedbackproc} else {unsafe{transmute(proc)}}},
20273			drawtransformfeedback: {let proc = get_proc_address("glDrawTransformFeedback"); if proc.is_null() {dummy_pfngldrawtransformfeedbackproc} else {unsafe{transmute(proc)}}},
20274			drawtransformfeedbackstream: {let proc = get_proc_address("glDrawTransformFeedbackStream"); if proc.is_null() {dummy_pfngldrawtransformfeedbackstreamproc} else {unsafe{transmute(proc)}}},
20275			beginqueryindexed: {let proc = get_proc_address("glBeginQueryIndexed"); if proc.is_null() {dummy_pfnglbeginqueryindexedproc} else {unsafe{transmute(proc)}}},
20276			endqueryindexed: {let proc = get_proc_address("glEndQueryIndexed"); if proc.is_null() {dummy_pfnglendqueryindexedproc} else {unsafe{transmute(proc)}}},
20277			getqueryindexediv: {let proc = get_proc_address("glGetQueryIndexediv"); if proc.is_null() {dummy_pfnglgetqueryindexedivproc} else {unsafe{transmute(proc)}}},
20278		}
20279	}
20280	#[inline(always)]
20281	pub fn get_available(&self) -> bool {
20282		self.available
20283	}
20284}
20285
20286impl Default for Version40 {
20287	fn default() -> Self {
20288		Self {
20289			available: false,
20290			geterror: dummy_pfnglgeterrorproc,
20291			minsampleshading: dummy_pfnglminsampleshadingproc,
20292			blendequationi: dummy_pfnglblendequationiproc,
20293			blendequationseparatei: dummy_pfnglblendequationseparateiproc,
20294			blendfunci: dummy_pfnglblendfunciproc,
20295			blendfuncseparatei: dummy_pfnglblendfuncseparateiproc,
20296			drawarraysindirect: dummy_pfngldrawarraysindirectproc,
20297			drawelementsindirect: dummy_pfngldrawelementsindirectproc,
20298			uniform1d: dummy_pfngluniform1dproc,
20299			uniform2d: dummy_pfngluniform2dproc,
20300			uniform3d: dummy_pfngluniform3dproc,
20301			uniform4d: dummy_pfngluniform4dproc,
20302			uniform1dv: dummy_pfngluniform1dvproc,
20303			uniform2dv: dummy_pfngluniform2dvproc,
20304			uniform3dv: dummy_pfngluniform3dvproc,
20305			uniform4dv: dummy_pfngluniform4dvproc,
20306			uniformmatrix2dv: dummy_pfngluniformmatrix2dvproc,
20307			uniformmatrix3dv: dummy_pfngluniformmatrix3dvproc,
20308			uniformmatrix4dv: dummy_pfngluniformmatrix4dvproc,
20309			uniformmatrix2x3dv: dummy_pfngluniformmatrix2x3dvproc,
20310			uniformmatrix2x4dv: dummy_pfngluniformmatrix2x4dvproc,
20311			uniformmatrix3x2dv: dummy_pfngluniformmatrix3x2dvproc,
20312			uniformmatrix3x4dv: dummy_pfngluniformmatrix3x4dvproc,
20313			uniformmatrix4x2dv: dummy_pfngluniformmatrix4x2dvproc,
20314			uniformmatrix4x3dv: dummy_pfngluniformmatrix4x3dvproc,
20315			getuniformdv: dummy_pfnglgetuniformdvproc,
20316			getsubroutineuniformlocation: dummy_pfnglgetsubroutineuniformlocationproc,
20317			getsubroutineindex: dummy_pfnglgetsubroutineindexproc,
20318			getactivesubroutineuniformiv: dummy_pfnglgetactivesubroutineuniformivproc,
20319			getactivesubroutineuniformname: dummy_pfnglgetactivesubroutineuniformnameproc,
20320			getactivesubroutinename: dummy_pfnglgetactivesubroutinenameproc,
20321			uniformsubroutinesuiv: dummy_pfngluniformsubroutinesuivproc,
20322			getuniformsubroutineuiv: dummy_pfnglgetuniformsubroutineuivproc,
20323			getprogramstageiv: dummy_pfnglgetprogramstageivproc,
20324			patchparameteri: dummy_pfnglpatchparameteriproc,
20325			patchparameterfv: dummy_pfnglpatchparameterfvproc,
20326			bindtransformfeedback: dummy_pfnglbindtransformfeedbackproc,
20327			deletetransformfeedbacks: dummy_pfngldeletetransformfeedbacksproc,
20328			gentransformfeedbacks: dummy_pfnglgentransformfeedbacksproc,
20329			istransformfeedback: dummy_pfnglistransformfeedbackproc,
20330			pausetransformfeedback: dummy_pfnglpausetransformfeedbackproc,
20331			resumetransformfeedback: dummy_pfnglresumetransformfeedbackproc,
20332			drawtransformfeedback: dummy_pfngldrawtransformfeedbackproc,
20333			drawtransformfeedbackstream: dummy_pfngldrawtransformfeedbackstreamproc,
20334			beginqueryindexed: dummy_pfnglbeginqueryindexedproc,
20335			endqueryindexed: dummy_pfnglendqueryindexedproc,
20336			getqueryindexediv: dummy_pfnglgetqueryindexedivproc,
20337		}
20338	}
20339}
20340impl Debug for Version40 {
20341	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
20342		if self.available {
20343			f.debug_struct("Version40")
20344			.field("available", &self.available)
20345			.field("minsampleshading", unsafe{if transmute::<_, *const c_void>(self.minsampleshading) == (dummy_pfnglminsampleshadingproc as *const c_void) {&null::<PFNGLMINSAMPLESHADINGPROC>()} else {&self.minsampleshading}})
20346			.field("blendequationi", unsafe{if transmute::<_, *const c_void>(self.blendequationi) == (dummy_pfnglblendequationiproc as *const c_void) {&null::<PFNGLBLENDEQUATIONIPROC>()} else {&self.blendequationi}})
20347			.field("blendequationseparatei", unsafe{if transmute::<_, *const c_void>(self.blendequationseparatei) == (dummy_pfnglblendequationseparateiproc as *const c_void) {&null::<PFNGLBLENDEQUATIONSEPARATEIPROC>()} else {&self.blendequationseparatei}})
20348			.field("blendfunci", unsafe{if transmute::<_, *const c_void>(self.blendfunci) == (dummy_pfnglblendfunciproc as *const c_void) {&null::<PFNGLBLENDFUNCIPROC>()} else {&self.blendfunci}})
20349			.field("blendfuncseparatei", unsafe{if transmute::<_, *const c_void>(self.blendfuncseparatei) == (dummy_pfnglblendfuncseparateiproc as *const c_void) {&null::<PFNGLBLENDFUNCSEPARATEIPROC>()} else {&self.blendfuncseparatei}})
20350			.field("drawarraysindirect", unsafe{if transmute::<_, *const c_void>(self.drawarraysindirect) == (dummy_pfngldrawarraysindirectproc as *const c_void) {&null::<PFNGLDRAWARRAYSINDIRECTPROC>()} else {&self.drawarraysindirect}})
20351			.field("drawelementsindirect", unsafe{if transmute::<_, *const c_void>(self.drawelementsindirect) == (dummy_pfngldrawelementsindirectproc as *const c_void) {&null::<PFNGLDRAWELEMENTSINDIRECTPROC>()} else {&self.drawelementsindirect}})
20352			.field("uniform1d", unsafe{if transmute::<_, *const c_void>(self.uniform1d) == (dummy_pfngluniform1dproc as *const c_void) {&null::<PFNGLUNIFORM1DPROC>()} else {&self.uniform1d}})
20353			.field("uniform2d", unsafe{if transmute::<_, *const c_void>(self.uniform2d) == (dummy_pfngluniform2dproc as *const c_void) {&null::<PFNGLUNIFORM2DPROC>()} else {&self.uniform2d}})
20354			.field("uniform3d", unsafe{if transmute::<_, *const c_void>(self.uniform3d) == (dummy_pfngluniform3dproc as *const c_void) {&null::<PFNGLUNIFORM3DPROC>()} else {&self.uniform3d}})
20355			.field("uniform4d", unsafe{if transmute::<_, *const c_void>(self.uniform4d) == (dummy_pfngluniform4dproc as *const c_void) {&null::<PFNGLUNIFORM4DPROC>()} else {&self.uniform4d}})
20356			.field("uniform1dv", unsafe{if transmute::<_, *const c_void>(self.uniform1dv) == (dummy_pfngluniform1dvproc as *const c_void) {&null::<PFNGLUNIFORM1DVPROC>()} else {&self.uniform1dv}})
20357			.field("uniform2dv", unsafe{if transmute::<_, *const c_void>(self.uniform2dv) == (dummy_pfngluniform2dvproc as *const c_void) {&null::<PFNGLUNIFORM2DVPROC>()} else {&self.uniform2dv}})
20358			.field("uniform3dv", unsafe{if transmute::<_, *const c_void>(self.uniform3dv) == (dummy_pfngluniform3dvproc as *const c_void) {&null::<PFNGLUNIFORM3DVPROC>()} else {&self.uniform3dv}})
20359			.field("uniform4dv", unsafe{if transmute::<_, *const c_void>(self.uniform4dv) == (dummy_pfngluniform4dvproc as *const c_void) {&null::<PFNGLUNIFORM4DVPROC>()} else {&self.uniform4dv}})
20360			.field("uniformmatrix2dv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix2dv) == (dummy_pfngluniformmatrix2dvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX2DVPROC>()} else {&self.uniformmatrix2dv}})
20361			.field("uniformmatrix3dv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix3dv) == (dummy_pfngluniformmatrix3dvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX3DVPROC>()} else {&self.uniformmatrix3dv}})
20362			.field("uniformmatrix4dv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix4dv) == (dummy_pfngluniformmatrix4dvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX4DVPROC>()} else {&self.uniformmatrix4dv}})
20363			.field("uniformmatrix2x3dv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix2x3dv) == (dummy_pfngluniformmatrix2x3dvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX2X3DVPROC>()} else {&self.uniformmatrix2x3dv}})
20364			.field("uniformmatrix2x4dv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix2x4dv) == (dummy_pfngluniformmatrix2x4dvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX2X4DVPROC>()} else {&self.uniformmatrix2x4dv}})
20365			.field("uniformmatrix3x2dv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix3x2dv) == (dummy_pfngluniformmatrix3x2dvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX3X2DVPROC>()} else {&self.uniformmatrix3x2dv}})
20366			.field("uniformmatrix3x4dv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix3x4dv) == (dummy_pfngluniformmatrix3x4dvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX3X4DVPROC>()} else {&self.uniformmatrix3x4dv}})
20367			.field("uniformmatrix4x2dv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix4x2dv) == (dummy_pfngluniformmatrix4x2dvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX4X2DVPROC>()} else {&self.uniformmatrix4x2dv}})
20368			.field("uniformmatrix4x3dv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix4x3dv) == (dummy_pfngluniformmatrix4x3dvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX4X3DVPROC>()} else {&self.uniformmatrix4x3dv}})
20369			.field("getuniformdv", unsafe{if transmute::<_, *const c_void>(self.getuniformdv) == (dummy_pfnglgetuniformdvproc as *const c_void) {&null::<PFNGLGETUNIFORMDVPROC>()} else {&self.getuniformdv}})
20370			.field("getsubroutineuniformlocation", unsafe{if transmute::<_, *const c_void>(self.getsubroutineuniformlocation) == (dummy_pfnglgetsubroutineuniformlocationproc as *const c_void) {&null::<PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC>()} else {&self.getsubroutineuniformlocation}})
20371			.field("getsubroutineindex", unsafe{if transmute::<_, *const c_void>(self.getsubroutineindex) == (dummy_pfnglgetsubroutineindexproc as *const c_void) {&null::<PFNGLGETSUBROUTINEINDEXPROC>()} else {&self.getsubroutineindex}})
20372			.field("getactivesubroutineuniformiv", unsafe{if transmute::<_, *const c_void>(self.getactivesubroutineuniformiv) == (dummy_pfnglgetactivesubroutineuniformivproc as *const c_void) {&null::<PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC>()} else {&self.getactivesubroutineuniformiv}})
20373			.field("getactivesubroutineuniformname", unsafe{if transmute::<_, *const c_void>(self.getactivesubroutineuniformname) == (dummy_pfnglgetactivesubroutineuniformnameproc as *const c_void) {&null::<PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC>()} else {&self.getactivesubroutineuniformname}})
20374			.field("getactivesubroutinename", unsafe{if transmute::<_, *const c_void>(self.getactivesubroutinename) == (dummy_pfnglgetactivesubroutinenameproc as *const c_void) {&null::<PFNGLGETACTIVESUBROUTINENAMEPROC>()} else {&self.getactivesubroutinename}})
20375			.field("uniformsubroutinesuiv", unsafe{if transmute::<_, *const c_void>(self.uniformsubroutinesuiv) == (dummy_pfngluniformsubroutinesuivproc as *const c_void) {&null::<PFNGLUNIFORMSUBROUTINESUIVPROC>()} else {&self.uniformsubroutinesuiv}})
20376			.field("getuniformsubroutineuiv", unsafe{if transmute::<_, *const c_void>(self.getuniformsubroutineuiv) == (dummy_pfnglgetuniformsubroutineuivproc as *const c_void) {&null::<PFNGLGETUNIFORMSUBROUTINEUIVPROC>()} else {&self.getuniformsubroutineuiv}})
20377			.field("getprogramstageiv", unsafe{if transmute::<_, *const c_void>(self.getprogramstageiv) == (dummy_pfnglgetprogramstageivproc as *const c_void) {&null::<PFNGLGETPROGRAMSTAGEIVPROC>()} else {&self.getprogramstageiv}})
20378			.field("patchparameteri", unsafe{if transmute::<_, *const c_void>(self.patchparameteri) == (dummy_pfnglpatchparameteriproc as *const c_void) {&null::<PFNGLPATCHPARAMETERIPROC>()} else {&self.patchparameteri}})
20379			.field("patchparameterfv", unsafe{if transmute::<_, *const c_void>(self.patchparameterfv) == (dummy_pfnglpatchparameterfvproc as *const c_void) {&null::<PFNGLPATCHPARAMETERFVPROC>()} else {&self.patchparameterfv}})
20380			.field("bindtransformfeedback", unsafe{if transmute::<_, *const c_void>(self.bindtransformfeedback) == (dummy_pfnglbindtransformfeedbackproc as *const c_void) {&null::<PFNGLBINDTRANSFORMFEEDBACKPROC>()} else {&self.bindtransformfeedback}})
20381			.field("deletetransformfeedbacks", unsafe{if transmute::<_, *const c_void>(self.deletetransformfeedbacks) == (dummy_pfngldeletetransformfeedbacksproc as *const c_void) {&null::<PFNGLDELETETRANSFORMFEEDBACKSPROC>()} else {&self.deletetransformfeedbacks}})
20382			.field("gentransformfeedbacks", unsafe{if transmute::<_, *const c_void>(self.gentransformfeedbacks) == (dummy_pfnglgentransformfeedbacksproc as *const c_void) {&null::<PFNGLGENTRANSFORMFEEDBACKSPROC>()} else {&self.gentransformfeedbacks}})
20383			.field("istransformfeedback", unsafe{if transmute::<_, *const c_void>(self.istransformfeedback) == (dummy_pfnglistransformfeedbackproc as *const c_void) {&null::<PFNGLISTRANSFORMFEEDBACKPROC>()} else {&self.istransformfeedback}})
20384			.field("pausetransformfeedback", unsafe{if transmute::<_, *const c_void>(self.pausetransformfeedback) == (dummy_pfnglpausetransformfeedbackproc as *const c_void) {&null::<PFNGLPAUSETRANSFORMFEEDBACKPROC>()} else {&self.pausetransformfeedback}})
20385			.field("resumetransformfeedback", unsafe{if transmute::<_, *const c_void>(self.resumetransformfeedback) == (dummy_pfnglresumetransformfeedbackproc as *const c_void) {&null::<PFNGLRESUMETRANSFORMFEEDBACKPROC>()} else {&self.resumetransformfeedback}})
20386			.field("drawtransformfeedback", unsafe{if transmute::<_, *const c_void>(self.drawtransformfeedback) == (dummy_pfngldrawtransformfeedbackproc as *const c_void) {&null::<PFNGLDRAWTRANSFORMFEEDBACKPROC>()} else {&self.drawtransformfeedback}})
20387			.field("drawtransformfeedbackstream", unsafe{if transmute::<_, *const c_void>(self.drawtransformfeedbackstream) == (dummy_pfngldrawtransformfeedbackstreamproc as *const c_void) {&null::<PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC>()} else {&self.drawtransformfeedbackstream}})
20388			.field("beginqueryindexed", unsafe{if transmute::<_, *const c_void>(self.beginqueryindexed) == (dummy_pfnglbeginqueryindexedproc as *const c_void) {&null::<PFNGLBEGINQUERYINDEXEDPROC>()} else {&self.beginqueryindexed}})
20389			.field("endqueryindexed", unsafe{if transmute::<_, *const c_void>(self.endqueryindexed) == (dummy_pfnglendqueryindexedproc as *const c_void) {&null::<PFNGLENDQUERYINDEXEDPROC>()} else {&self.endqueryindexed}})
20390			.field("getqueryindexediv", unsafe{if transmute::<_, *const c_void>(self.getqueryindexediv) == (dummy_pfnglgetqueryindexedivproc as *const c_void) {&null::<PFNGLGETQUERYINDEXEDIVPROC>()} else {&self.getqueryindexediv}})
20391			.finish()
20392		} else {
20393			f.debug_struct("Version40")
20394			.field("available", &self.available)
20395			.finish_non_exhaustive()
20396		}
20397	}
20398}
20399
20400/// The prototype to the OpenGL function `ReleaseShaderCompiler`
20401type PFNGLRELEASESHADERCOMPILERPROC = extern "system" fn();
20402
20403/// The prototype to the OpenGL function `ShaderBinary`
20404type PFNGLSHADERBINARYPROC = extern "system" fn(GLsizei, *const GLuint, GLenum, *const c_void, GLsizei);
20405
20406/// The prototype to the OpenGL function `GetShaderPrecisionFormat`
20407type PFNGLGETSHADERPRECISIONFORMATPROC = extern "system" fn(GLenum, GLenum, *mut GLint, *mut GLint);
20408
20409/// The prototype to the OpenGL function `DepthRangef`
20410type PFNGLDEPTHRANGEFPROC = extern "system" fn(GLfloat, GLfloat);
20411
20412/// The prototype to the OpenGL function `ClearDepthf`
20413type PFNGLCLEARDEPTHFPROC = extern "system" fn(GLfloat);
20414
20415/// The prototype to the OpenGL function `GetProgramBinary`
20416type PFNGLGETPROGRAMBINARYPROC = extern "system" fn(GLuint, GLsizei, *mut GLsizei, *mut GLenum, *mut c_void);
20417
20418/// The prototype to the OpenGL function `ProgramBinary`
20419type PFNGLPROGRAMBINARYPROC = extern "system" fn(GLuint, GLenum, *const c_void, GLsizei);
20420
20421/// The prototype to the OpenGL function `ProgramParameteri`
20422type PFNGLPROGRAMPARAMETERIPROC = extern "system" fn(GLuint, GLenum, GLint);
20423
20424/// The prototype to the OpenGL function `UseProgramStages`
20425type PFNGLUSEPROGRAMSTAGESPROC = extern "system" fn(GLuint, GLbitfield, GLuint);
20426
20427/// The prototype to the OpenGL function `ActiveShaderProgram`
20428type PFNGLACTIVESHADERPROGRAMPROC = extern "system" fn(GLuint, GLuint);
20429
20430/// The prototype to the OpenGL function `CreateShaderProgramv`
20431type PFNGLCREATESHADERPROGRAMVPROC = extern "system" fn(GLenum, GLsizei, *const *const GLchar) -> GLuint;
20432
20433/// The prototype to the OpenGL function `BindProgramPipeline`
20434type PFNGLBINDPROGRAMPIPELINEPROC = extern "system" fn(GLuint);
20435
20436/// The prototype to the OpenGL function `DeleteProgramPipelines`
20437type PFNGLDELETEPROGRAMPIPELINESPROC = extern "system" fn(GLsizei, *const GLuint);
20438
20439/// The prototype to the OpenGL function `GenProgramPipelines`
20440type PFNGLGENPROGRAMPIPELINESPROC = extern "system" fn(GLsizei, *mut GLuint);
20441
20442/// The prototype to the OpenGL function `IsProgramPipeline`
20443type PFNGLISPROGRAMPIPELINEPROC = extern "system" fn(GLuint) -> GLboolean;
20444
20445/// The prototype to the OpenGL function `GetProgramPipelineiv`
20446type PFNGLGETPROGRAMPIPELINEIVPROC = extern "system" fn(GLuint, GLenum, *mut GLint);
20447
20448/// The prototype to the OpenGL function `ProgramUniform1i`
20449type PFNGLPROGRAMUNIFORM1IPROC = extern "system" fn(GLuint, GLint, GLint);
20450
20451/// The prototype to the OpenGL function `ProgramUniform1iv`
20452type PFNGLPROGRAMUNIFORM1IVPROC = extern "system" fn(GLuint, GLint, GLsizei, *const GLint);
20453
20454/// The prototype to the OpenGL function `ProgramUniform1f`
20455type PFNGLPROGRAMUNIFORM1FPROC = extern "system" fn(GLuint, GLint, GLfloat);
20456
20457/// The prototype to the OpenGL function `ProgramUniform1fv`
20458type PFNGLPROGRAMUNIFORM1FVPROC = extern "system" fn(GLuint, GLint, GLsizei, *const GLfloat);
20459
20460/// The prototype to the OpenGL function `ProgramUniform1d`
20461type PFNGLPROGRAMUNIFORM1DPROC = extern "system" fn(GLuint, GLint, GLdouble);
20462
20463/// The prototype to the OpenGL function `ProgramUniform1dv`
20464type PFNGLPROGRAMUNIFORM1DVPROC = extern "system" fn(GLuint, GLint, GLsizei, *const GLdouble);
20465
20466/// The prototype to the OpenGL function `ProgramUniform1ui`
20467type PFNGLPROGRAMUNIFORM1UIPROC = extern "system" fn(GLuint, GLint, GLuint);
20468
20469/// The prototype to the OpenGL function `ProgramUniform1uiv`
20470type PFNGLPROGRAMUNIFORM1UIVPROC = extern "system" fn(GLuint, GLint, GLsizei, *const GLuint);
20471
20472/// The prototype to the OpenGL function `ProgramUniform2i`
20473type PFNGLPROGRAMUNIFORM2IPROC = extern "system" fn(GLuint, GLint, GLint, GLint);
20474
20475/// The prototype to the OpenGL function `ProgramUniform2iv`
20476type PFNGLPROGRAMUNIFORM2IVPROC = extern "system" fn(GLuint, GLint, GLsizei, *const GLint);
20477
20478/// The prototype to the OpenGL function `ProgramUniform2f`
20479type PFNGLPROGRAMUNIFORM2FPROC = extern "system" fn(GLuint, GLint, GLfloat, GLfloat);
20480
20481/// The prototype to the OpenGL function `ProgramUniform2fv`
20482type PFNGLPROGRAMUNIFORM2FVPROC = extern "system" fn(GLuint, GLint, GLsizei, *const GLfloat);
20483
20484/// The prototype to the OpenGL function `ProgramUniform2d`
20485type PFNGLPROGRAMUNIFORM2DPROC = extern "system" fn(GLuint, GLint, GLdouble, GLdouble);
20486
20487/// The prototype to the OpenGL function `ProgramUniform2dv`
20488type PFNGLPROGRAMUNIFORM2DVPROC = extern "system" fn(GLuint, GLint, GLsizei, *const GLdouble);
20489
20490/// The prototype to the OpenGL function `ProgramUniform2ui`
20491type PFNGLPROGRAMUNIFORM2UIPROC = extern "system" fn(GLuint, GLint, GLuint, GLuint);
20492
20493/// The prototype to the OpenGL function `ProgramUniform2uiv`
20494type PFNGLPROGRAMUNIFORM2UIVPROC = extern "system" fn(GLuint, GLint, GLsizei, *const GLuint);
20495
20496/// The prototype to the OpenGL function `ProgramUniform3i`
20497type PFNGLPROGRAMUNIFORM3IPROC = extern "system" fn(GLuint, GLint, GLint, GLint, GLint);
20498
20499/// The prototype to the OpenGL function `ProgramUniform3iv`
20500type PFNGLPROGRAMUNIFORM3IVPROC = extern "system" fn(GLuint, GLint, GLsizei, *const GLint);
20501
20502/// The prototype to the OpenGL function `ProgramUniform3f`
20503type PFNGLPROGRAMUNIFORM3FPROC = extern "system" fn(GLuint, GLint, GLfloat, GLfloat, GLfloat);
20504
20505/// The prototype to the OpenGL function `ProgramUniform3fv`
20506type PFNGLPROGRAMUNIFORM3FVPROC = extern "system" fn(GLuint, GLint, GLsizei, *const GLfloat);
20507
20508/// The prototype to the OpenGL function `ProgramUniform3d`
20509type PFNGLPROGRAMUNIFORM3DPROC = extern "system" fn(GLuint, GLint, GLdouble, GLdouble, GLdouble);
20510
20511/// The prototype to the OpenGL function `ProgramUniform3dv`
20512type PFNGLPROGRAMUNIFORM3DVPROC = extern "system" fn(GLuint, GLint, GLsizei, *const GLdouble);
20513
20514/// The prototype to the OpenGL function `ProgramUniform3ui`
20515type PFNGLPROGRAMUNIFORM3UIPROC = extern "system" fn(GLuint, GLint, GLuint, GLuint, GLuint);
20516
20517/// The prototype to the OpenGL function `ProgramUniform3uiv`
20518type PFNGLPROGRAMUNIFORM3UIVPROC = extern "system" fn(GLuint, GLint, GLsizei, *const GLuint);
20519
20520/// The prototype to the OpenGL function `ProgramUniform4i`
20521type PFNGLPROGRAMUNIFORM4IPROC = extern "system" fn(GLuint, GLint, GLint, GLint, GLint, GLint);
20522
20523/// The prototype to the OpenGL function `ProgramUniform4iv`
20524type PFNGLPROGRAMUNIFORM4IVPROC = extern "system" fn(GLuint, GLint, GLsizei, *const GLint);
20525
20526/// The prototype to the OpenGL function `ProgramUniform4f`
20527type PFNGLPROGRAMUNIFORM4FPROC = extern "system" fn(GLuint, GLint, GLfloat, GLfloat, GLfloat, GLfloat);
20528
20529/// The prototype to the OpenGL function `ProgramUniform4fv`
20530type PFNGLPROGRAMUNIFORM4FVPROC = extern "system" fn(GLuint, GLint, GLsizei, *const GLfloat);
20531
20532/// The prototype to the OpenGL function `ProgramUniform4d`
20533type PFNGLPROGRAMUNIFORM4DPROC = extern "system" fn(GLuint, GLint, GLdouble, GLdouble, GLdouble, GLdouble);
20534
20535/// The prototype to the OpenGL function `ProgramUniform4dv`
20536type PFNGLPROGRAMUNIFORM4DVPROC = extern "system" fn(GLuint, GLint, GLsizei, *const GLdouble);
20537
20538/// The prototype to the OpenGL function `ProgramUniform4ui`
20539type PFNGLPROGRAMUNIFORM4UIPROC = extern "system" fn(GLuint, GLint, GLuint, GLuint, GLuint, GLuint);
20540
20541/// The prototype to the OpenGL function `ProgramUniform4uiv`
20542type PFNGLPROGRAMUNIFORM4UIVPROC = extern "system" fn(GLuint, GLint, GLsizei, *const GLuint);
20543
20544/// The prototype to the OpenGL function `ProgramUniformMatrix2fv`
20545type PFNGLPROGRAMUNIFORMMATRIX2FVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLfloat);
20546
20547/// The prototype to the OpenGL function `ProgramUniformMatrix3fv`
20548type PFNGLPROGRAMUNIFORMMATRIX3FVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLfloat);
20549
20550/// The prototype to the OpenGL function `ProgramUniformMatrix4fv`
20551type PFNGLPROGRAMUNIFORMMATRIX4FVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLfloat);
20552
20553/// The prototype to the OpenGL function `ProgramUniformMatrix2dv`
20554type PFNGLPROGRAMUNIFORMMATRIX2DVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLdouble);
20555
20556/// The prototype to the OpenGL function `ProgramUniformMatrix3dv`
20557type PFNGLPROGRAMUNIFORMMATRIX3DVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLdouble);
20558
20559/// The prototype to the OpenGL function `ProgramUniformMatrix4dv`
20560type PFNGLPROGRAMUNIFORMMATRIX4DVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLdouble);
20561
20562/// The prototype to the OpenGL function `ProgramUniformMatrix2x3fv`
20563type PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLfloat);
20564
20565/// The prototype to the OpenGL function `ProgramUniformMatrix3x2fv`
20566type PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLfloat);
20567
20568/// The prototype to the OpenGL function `ProgramUniformMatrix2x4fv`
20569type PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLfloat);
20570
20571/// The prototype to the OpenGL function `ProgramUniformMatrix4x2fv`
20572type PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLfloat);
20573
20574/// The prototype to the OpenGL function `ProgramUniformMatrix3x4fv`
20575type PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLfloat);
20576
20577/// The prototype to the OpenGL function `ProgramUniformMatrix4x3fv`
20578type PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLfloat);
20579
20580/// The prototype to the OpenGL function `ProgramUniformMatrix2x3dv`
20581type PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLdouble);
20582
20583/// The prototype to the OpenGL function `ProgramUniformMatrix3x2dv`
20584type PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLdouble);
20585
20586/// The prototype to the OpenGL function `ProgramUniformMatrix2x4dv`
20587type PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLdouble);
20588
20589/// The prototype to the OpenGL function `ProgramUniformMatrix4x2dv`
20590type PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLdouble);
20591
20592/// The prototype to the OpenGL function `ProgramUniformMatrix3x4dv`
20593type PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLdouble);
20594
20595/// The prototype to the OpenGL function `ProgramUniformMatrix4x3dv`
20596type PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLdouble);
20597
20598/// The prototype to the OpenGL function `ValidateProgramPipeline`
20599type PFNGLVALIDATEPROGRAMPIPELINEPROC = extern "system" fn(GLuint);
20600
20601/// The prototype to the OpenGL function `GetProgramPipelineInfoLog`
20602type PFNGLGETPROGRAMPIPELINEINFOLOGPROC = extern "system" fn(GLuint, GLsizei, *mut GLsizei, *mut GLchar);
20603
20604/// The prototype to the OpenGL function `VertexAttribL1d`
20605type PFNGLVERTEXATTRIBL1DPROC = extern "system" fn(GLuint, GLdouble);
20606
20607/// The prototype to the OpenGL function `VertexAttribL2d`
20608type PFNGLVERTEXATTRIBL2DPROC = extern "system" fn(GLuint, GLdouble, GLdouble);
20609
20610/// The prototype to the OpenGL function `VertexAttribL3d`
20611type PFNGLVERTEXATTRIBL3DPROC = extern "system" fn(GLuint, GLdouble, GLdouble, GLdouble);
20612
20613/// The prototype to the OpenGL function `VertexAttribL4d`
20614type PFNGLVERTEXATTRIBL4DPROC = extern "system" fn(GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
20615
20616/// The prototype to the OpenGL function `VertexAttribL1dv`
20617type PFNGLVERTEXATTRIBL1DVPROC = extern "system" fn(GLuint, *const GLdouble);
20618
20619/// The prototype to the OpenGL function `VertexAttribL2dv`
20620type PFNGLVERTEXATTRIBL2DVPROC = extern "system" fn(GLuint, *const GLdouble);
20621
20622/// The prototype to the OpenGL function `VertexAttribL3dv`
20623type PFNGLVERTEXATTRIBL3DVPROC = extern "system" fn(GLuint, *const GLdouble);
20624
20625/// The prototype to the OpenGL function `VertexAttribL4dv`
20626type PFNGLVERTEXATTRIBL4DVPROC = extern "system" fn(GLuint, *const GLdouble);
20627
20628/// The prototype to the OpenGL function `VertexAttribLPointer`
20629type PFNGLVERTEXATTRIBLPOINTERPROC = extern "system" fn(GLuint, GLint, GLenum, GLsizei, *const c_void);
20630
20631/// The prototype to the OpenGL function `GetVertexAttribLdv`
20632type PFNGLGETVERTEXATTRIBLDVPROC = extern "system" fn(GLuint, GLenum, *mut GLdouble);
20633
20634/// The prototype to the OpenGL function `ViewportArrayv`
20635type PFNGLVIEWPORTARRAYVPROC = extern "system" fn(GLuint, GLsizei, *const GLfloat);
20636
20637/// The prototype to the OpenGL function `ViewportIndexedf`
20638type PFNGLVIEWPORTINDEXEDFPROC = extern "system" fn(GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
20639
20640/// The prototype to the OpenGL function `ViewportIndexedfv`
20641type PFNGLVIEWPORTINDEXEDFVPROC = extern "system" fn(GLuint, *const GLfloat);
20642
20643/// The prototype to the OpenGL function `ScissorArrayv`
20644type PFNGLSCISSORARRAYVPROC = extern "system" fn(GLuint, GLsizei, *const GLint);
20645
20646/// The prototype to the OpenGL function `ScissorIndexed`
20647type PFNGLSCISSORINDEXEDPROC = extern "system" fn(GLuint, GLint, GLint, GLsizei, GLsizei);
20648
20649/// The prototype to the OpenGL function `ScissorIndexedv`
20650type PFNGLSCISSORINDEXEDVPROC = extern "system" fn(GLuint, *const GLint);
20651
20652/// The prototype to the OpenGL function `DepthRangeArrayv`
20653type PFNGLDEPTHRANGEARRAYVPROC = extern "system" fn(GLuint, GLsizei, *const GLdouble);
20654
20655/// The prototype to the OpenGL function `DepthRangeIndexed`
20656type PFNGLDEPTHRANGEINDEXEDPROC = extern "system" fn(GLuint, GLdouble, GLdouble);
20657
20658/// The prototype to the OpenGL function `GetFloati_v`
20659type PFNGLGETFLOATI_VPROC = extern "system" fn(GLenum, GLuint, *mut GLfloat);
20660
20661/// The prototype to the OpenGL function `GetDoublei_v`
20662type PFNGLGETDOUBLEI_VPROC = extern "system" fn(GLenum, GLuint, *mut GLdouble);
20663
20664/// The dummy function of `ReleaseShaderCompiler()`
20665extern "system" fn dummy_pfnglreleaseshadercompilerproc () {
20666	panic!("OpenGL function pointer `glReleaseShaderCompiler()` is null.")
20667}
20668
20669/// The dummy function of `ShaderBinary()`
20670extern "system" fn dummy_pfnglshaderbinaryproc (_: GLsizei, _: *const GLuint, _: GLenum, _: *const c_void, _: GLsizei) {
20671	panic!("OpenGL function pointer `glShaderBinary()` is null.")
20672}
20673
20674/// The dummy function of `GetShaderPrecisionFormat()`
20675extern "system" fn dummy_pfnglgetshaderprecisionformatproc (_: GLenum, _: GLenum, _: *mut GLint, _: *mut GLint) {
20676	panic!("OpenGL function pointer `glGetShaderPrecisionFormat()` is null.")
20677}
20678
20679/// The dummy function of `DepthRangef()`
20680extern "system" fn dummy_pfngldepthrangefproc (_: GLfloat, _: GLfloat) {
20681	panic!("OpenGL function pointer `glDepthRangef()` is null.")
20682}
20683
20684/// The dummy function of `ClearDepthf()`
20685extern "system" fn dummy_pfnglcleardepthfproc (_: GLfloat) {
20686	panic!("OpenGL function pointer `glClearDepthf()` is null.")
20687}
20688
20689/// The dummy function of `GetProgramBinary()`
20690extern "system" fn dummy_pfnglgetprogrambinaryproc (_: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLenum, _: *mut c_void) {
20691	panic!("OpenGL function pointer `glGetProgramBinary()` is null.")
20692}
20693
20694/// The dummy function of `ProgramBinary()`
20695extern "system" fn dummy_pfnglprogrambinaryproc (_: GLuint, _: GLenum, _: *const c_void, _: GLsizei) {
20696	panic!("OpenGL function pointer `glProgramBinary()` is null.")
20697}
20698
20699/// The dummy function of `ProgramParameteri()`
20700extern "system" fn dummy_pfnglprogramparameteriproc (_: GLuint, _: GLenum, _: GLint) {
20701	panic!("OpenGL function pointer `glProgramParameteri()` is null.")
20702}
20703
20704/// The dummy function of `UseProgramStages()`
20705extern "system" fn dummy_pfngluseprogramstagesproc (_: GLuint, _: GLbitfield, _: GLuint) {
20706	panic!("OpenGL function pointer `glUseProgramStages()` is null.")
20707}
20708
20709/// The dummy function of `ActiveShaderProgram()`
20710extern "system" fn dummy_pfnglactiveshaderprogramproc (_: GLuint, _: GLuint) {
20711	panic!("OpenGL function pointer `glActiveShaderProgram()` is null.")
20712}
20713
20714/// The dummy function of `CreateShaderProgramv()`
20715extern "system" fn dummy_pfnglcreateshaderprogramvproc (_: GLenum, _: GLsizei, _: *const *const GLchar) -> GLuint {
20716	panic!("OpenGL function pointer `glCreateShaderProgramv()` is null.")
20717}
20718
20719/// The dummy function of `BindProgramPipeline()`
20720extern "system" fn dummy_pfnglbindprogrampipelineproc (_: GLuint) {
20721	panic!("OpenGL function pointer `glBindProgramPipeline()` is null.")
20722}
20723
20724/// The dummy function of `DeleteProgramPipelines()`
20725extern "system" fn dummy_pfngldeleteprogrampipelinesproc (_: GLsizei, _: *const GLuint) {
20726	panic!("OpenGL function pointer `glDeleteProgramPipelines()` is null.")
20727}
20728
20729/// The dummy function of `GenProgramPipelines()`
20730extern "system" fn dummy_pfnglgenprogrampipelinesproc (_: GLsizei, _: *mut GLuint) {
20731	panic!("OpenGL function pointer `glGenProgramPipelines()` is null.")
20732}
20733
20734/// The dummy function of `IsProgramPipeline()`
20735extern "system" fn dummy_pfnglisprogrampipelineproc (_: GLuint) -> GLboolean {
20736	panic!("OpenGL function pointer `glIsProgramPipeline()` is null.")
20737}
20738
20739/// The dummy function of `GetProgramPipelineiv()`
20740extern "system" fn dummy_pfnglgetprogrampipelineivproc (_: GLuint, _: GLenum, _: *mut GLint) {
20741	panic!("OpenGL function pointer `glGetProgramPipelineiv()` is null.")
20742}
20743
20744/// The dummy function of `ProgramUniform1i()`
20745extern "system" fn dummy_pfnglprogramuniform1iproc (_: GLuint, _: GLint, _: GLint) {
20746	panic!("OpenGL function pointer `glProgramUniform1i()` is null.")
20747}
20748
20749/// The dummy function of `ProgramUniform1iv()`
20750extern "system" fn dummy_pfnglprogramuniform1ivproc (_: GLuint, _: GLint, _: GLsizei, _: *const GLint) {
20751	panic!("OpenGL function pointer `glProgramUniform1iv()` is null.")
20752}
20753
20754/// The dummy function of `ProgramUniform1f()`
20755extern "system" fn dummy_pfnglprogramuniform1fproc (_: GLuint, _: GLint, _: GLfloat) {
20756	panic!("OpenGL function pointer `glProgramUniform1f()` is null.")
20757}
20758
20759/// The dummy function of `ProgramUniform1fv()`
20760extern "system" fn dummy_pfnglprogramuniform1fvproc (_: GLuint, _: GLint, _: GLsizei, _: *const GLfloat) {
20761	panic!("OpenGL function pointer `glProgramUniform1fv()` is null.")
20762}
20763
20764/// The dummy function of `ProgramUniform1d()`
20765extern "system" fn dummy_pfnglprogramuniform1dproc (_: GLuint, _: GLint, _: GLdouble) {
20766	panic!("OpenGL function pointer `glProgramUniform1d()` is null.")
20767}
20768
20769/// The dummy function of `ProgramUniform1dv()`
20770extern "system" fn dummy_pfnglprogramuniform1dvproc (_: GLuint, _: GLint, _: GLsizei, _: *const GLdouble) {
20771	panic!("OpenGL function pointer `glProgramUniform1dv()` is null.")
20772}
20773
20774/// The dummy function of `ProgramUniform1ui()`
20775extern "system" fn dummy_pfnglprogramuniform1uiproc (_: GLuint, _: GLint, _: GLuint) {
20776	panic!("OpenGL function pointer `glProgramUniform1ui()` is null.")
20777}
20778
20779/// The dummy function of `ProgramUniform1uiv()`
20780extern "system" fn dummy_pfnglprogramuniform1uivproc (_: GLuint, _: GLint, _: GLsizei, _: *const GLuint) {
20781	panic!("OpenGL function pointer `glProgramUniform1uiv()` is null.")
20782}
20783
20784/// The dummy function of `ProgramUniform2i()`
20785extern "system" fn dummy_pfnglprogramuniform2iproc (_: GLuint, _: GLint, _: GLint, _: GLint) {
20786	panic!("OpenGL function pointer `glProgramUniform2i()` is null.")
20787}
20788
20789/// The dummy function of `ProgramUniform2iv()`
20790extern "system" fn dummy_pfnglprogramuniform2ivproc (_: GLuint, _: GLint, _: GLsizei, _: *const GLint) {
20791	panic!("OpenGL function pointer `glProgramUniform2iv()` is null.")
20792}
20793
20794/// The dummy function of `ProgramUniform2f()`
20795extern "system" fn dummy_pfnglprogramuniform2fproc (_: GLuint, _: GLint, _: GLfloat, _: GLfloat) {
20796	panic!("OpenGL function pointer `glProgramUniform2f()` is null.")
20797}
20798
20799/// The dummy function of `ProgramUniform2fv()`
20800extern "system" fn dummy_pfnglprogramuniform2fvproc (_: GLuint, _: GLint, _: GLsizei, _: *const GLfloat) {
20801	panic!("OpenGL function pointer `glProgramUniform2fv()` is null.")
20802}
20803
20804/// The dummy function of `ProgramUniform2d()`
20805extern "system" fn dummy_pfnglprogramuniform2dproc (_: GLuint, _: GLint, _: GLdouble, _: GLdouble) {
20806	panic!("OpenGL function pointer `glProgramUniform2d()` is null.")
20807}
20808
20809/// The dummy function of `ProgramUniform2dv()`
20810extern "system" fn dummy_pfnglprogramuniform2dvproc (_: GLuint, _: GLint, _: GLsizei, _: *const GLdouble) {
20811	panic!("OpenGL function pointer `glProgramUniform2dv()` is null.")
20812}
20813
20814/// The dummy function of `ProgramUniform2ui()`
20815extern "system" fn dummy_pfnglprogramuniform2uiproc (_: GLuint, _: GLint, _: GLuint, _: GLuint) {
20816	panic!("OpenGL function pointer `glProgramUniform2ui()` is null.")
20817}
20818
20819/// The dummy function of `ProgramUniform2uiv()`
20820extern "system" fn dummy_pfnglprogramuniform2uivproc (_: GLuint, _: GLint, _: GLsizei, _: *const GLuint) {
20821	panic!("OpenGL function pointer `glProgramUniform2uiv()` is null.")
20822}
20823
20824/// The dummy function of `ProgramUniform3i()`
20825extern "system" fn dummy_pfnglprogramuniform3iproc (_: GLuint, _: GLint, _: GLint, _: GLint, _: GLint) {
20826	panic!("OpenGL function pointer `glProgramUniform3i()` is null.")
20827}
20828
20829/// The dummy function of `ProgramUniform3iv()`
20830extern "system" fn dummy_pfnglprogramuniform3ivproc (_: GLuint, _: GLint, _: GLsizei, _: *const GLint) {
20831	panic!("OpenGL function pointer `glProgramUniform3iv()` is null.")
20832}
20833
20834/// The dummy function of `ProgramUniform3f()`
20835extern "system" fn dummy_pfnglprogramuniform3fproc (_: GLuint, _: GLint, _: GLfloat, _: GLfloat, _: GLfloat) {
20836	panic!("OpenGL function pointer `glProgramUniform3f()` is null.")
20837}
20838
20839/// The dummy function of `ProgramUniform3fv()`
20840extern "system" fn dummy_pfnglprogramuniform3fvproc (_: GLuint, _: GLint, _: GLsizei, _: *const GLfloat) {
20841	panic!("OpenGL function pointer `glProgramUniform3fv()` is null.")
20842}
20843
20844/// The dummy function of `ProgramUniform3d()`
20845extern "system" fn dummy_pfnglprogramuniform3dproc (_: GLuint, _: GLint, _: GLdouble, _: GLdouble, _: GLdouble) {
20846	panic!("OpenGL function pointer `glProgramUniform3d()` is null.")
20847}
20848
20849/// The dummy function of `ProgramUniform3dv()`
20850extern "system" fn dummy_pfnglprogramuniform3dvproc (_: GLuint, _: GLint, _: GLsizei, _: *const GLdouble) {
20851	panic!("OpenGL function pointer `glProgramUniform3dv()` is null.")
20852}
20853
20854/// The dummy function of `ProgramUniform3ui()`
20855extern "system" fn dummy_pfnglprogramuniform3uiproc (_: GLuint, _: GLint, _: GLuint, _: GLuint, _: GLuint) {
20856	panic!("OpenGL function pointer `glProgramUniform3ui()` is null.")
20857}
20858
20859/// The dummy function of `ProgramUniform3uiv()`
20860extern "system" fn dummy_pfnglprogramuniform3uivproc (_: GLuint, _: GLint, _: GLsizei, _: *const GLuint) {
20861	panic!("OpenGL function pointer `glProgramUniform3uiv()` is null.")
20862}
20863
20864/// The dummy function of `ProgramUniform4i()`
20865extern "system" fn dummy_pfnglprogramuniform4iproc (_: GLuint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLint) {
20866	panic!("OpenGL function pointer `glProgramUniform4i()` is null.")
20867}
20868
20869/// The dummy function of `ProgramUniform4iv()`
20870extern "system" fn dummy_pfnglprogramuniform4ivproc (_: GLuint, _: GLint, _: GLsizei, _: *const GLint) {
20871	panic!("OpenGL function pointer `glProgramUniform4iv()` is null.")
20872}
20873
20874/// The dummy function of `ProgramUniform4f()`
20875extern "system" fn dummy_pfnglprogramuniform4fproc (_: GLuint, _: GLint, _: GLfloat, _: GLfloat, _: GLfloat, _: GLfloat) {
20876	panic!("OpenGL function pointer `glProgramUniform4f()` is null.")
20877}
20878
20879/// The dummy function of `ProgramUniform4fv()`
20880extern "system" fn dummy_pfnglprogramuniform4fvproc (_: GLuint, _: GLint, _: GLsizei, _: *const GLfloat) {
20881	panic!("OpenGL function pointer `glProgramUniform4fv()` is null.")
20882}
20883
20884/// The dummy function of `ProgramUniform4d()`
20885extern "system" fn dummy_pfnglprogramuniform4dproc (_: GLuint, _: GLint, _: GLdouble, _: GLdouble, _: GLdouble, _: GLdouble) {
20886	panic!("OpenGL function pointer `glProgramUniform4d()` is null.")
20887}
20888
20889/// The dummy function of `ProgramUniform4dv()`
20890extern "system" fn dummy_pfnglprogramuniform4dvproc (_: GLuint, _: GLint, _: GLsizei, _: *const GLdouble) {
20891	panic!("OpenGL function pointer `glProgramUniform4dv()` is null.")
20892}
20893
20894/// The dummy function of `ProgramUniform4ui()`
20895extern "system" fn dummy_pfnglprogramuniform4uiproc (_: GLuint, _: GLint, _: GLuint, _: GLuint, _: GLuint, _: GLuint) {
20896	panic!("OpenGL function pointer `glProgramUniform4ui()` is null.")
20897}
20898
20899/// The dummy function of `ProgramUniform4uiv()`
20900extern "system" fn dummy_pfnglprogramuniform4uivproc (_: GLuint, _: GLint, _: GLsizei, _: *const GLuint) {
20901	panic!("OpenGL function pointer `glProgramUniform4uiv()` is null.")
20902}
20903
20904/// The dummy function of `ProgramUniformMatrix2fv()`
20905extern "system" fn dummy_pfnglprogramuniformmatrix2fvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
20906	panic!("OpenGL function pointer `glProgramUniformMatrix2fv()` is null.")
20907}
20908
20909/// The dummy function of `ProgramUniformMatrix3fv()`
20910extern "system" fn dummy_pfnglprogramuniformmatrix3fvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
20911	panic!("OpenGL function pointer `glProgramUniformMatrix3fv()` is null.")
20912}
20913
20914/// The dummy function of `ProgramUniformMatrix4fv()`
20915extern "system" fn dummy_pfnglprogramuniformmatrix4fvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
20916	panic!("OpenGL function pointer `glProgramUniformMatrix4fv()` is null.")
20917}
20918
20919/// The dummy function of `ProgramUniformMatrix2dv()`
20920extern "system" fn dummy_pfnglprogramuniformmatrix2dvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
20921	panic!("OpenGL function pointer `glProgramUniformMatrix2dv()` is null.")
20922}
20923
20924/// The dummy function of `ProgramUniformMatrix3dv()`
20925extern "system" fn dummy_pfnglprogramuniformmatrix3dvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
20926	panic!("OpenGL function pointer `glProgramUniformMatrix3dv()` is null.")
20927}
20928
20929/// The dummy function of `ProgramUniformMatrix4dv()`
20930extern "system" fn dummy_pfnglprogramuniformmatrix4dvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
20931	panic!("OpenGL function pointer `glProgramUniformMatrix4dv()` is null.")
20932}
20933
20934/// The dummy function of `ProgramUniformMatrix2x3fv()`
20935extern "system" fn dummy_pfnglprogramuniformmatrix2x3fvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
20936	panic!("OpenGL function pointer `glProgramUniformMatrix2x3fv()` is null.")
20937}
20938
20939/// The dummy function of `ProgramUniformMatrix3x2fv()`
20940extern "system" fn dummy_pfnglprogramuniformmatrix3x2fvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
20941	panic!("OpenGL function pointer `glProgramUniformMatrix3x2fv()` is null.")
20942}
20943
20944/// The dummy function of `ProgramUniformMatrix2x4fv()`
20945extern "system" fn dummy_pfnglprogramuniformmatrix2x4fvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
20946	panic!("OpenGL function pointer `glProgramUniformMatrix2x4fv()` is null.")
20947}
20948
20949/// The dummy function of `ProgramUniformMatrix4x2fv()`
20950extern "system" fn dummy_pfnglprogramuniformmatrix4x2fvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
20951	panic!("OpenGL function pointer `glProgramUniformMatrix4x2fv()` is null.")
20952}
20953
20954/// The dummy function of `ProgramUniformMatrix3x4fv()`
20955extern "system" fn dummy_pfnglprogramuniformmatrix3x4fvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
20956	panic!("OpenGL function pointer `glProgramUniformMatrix3x4fv()` is null.")
20957}
20958
20959/// The dummy function of `ProgramUniformMatrix4x3fv()`
20960extern "system" fn dummy_pfnglprogramuniformmatrix4x3fvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
20961	panic!("OpenGL function pointer `glProgramUniformMatrix4x3fv()` is null.")
20962}
20963
20964/// The dummy function of `ProgramUniformMatrix2x3dv()`
20965extern "system" fn dummy_pfnglprogramuniformmatrix2x3dvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
20966	panic!("OpenGL function pointer `glProgramUniformMatrix2x3dv()` is null.")
20967}
20968
20969/// The dummy function of `ProgramUniformMatrix3x2dv()`
20970extern "system" fn dummy_pfnglprogramuniformmatrix3x2dvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
20971	panic!("OpenGL function pointer `glProgramUniformMatrix3x2dv()` is null.")
20972}
20973
20974/// The dummy function of `ProgramUniformMatrix2x4dv()`
20975extern "system" fn dummy_pfnglprogramuniformmatrix2x4dvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
20976	panic!("OpenGL function pointer `glProgramUniformMatrix2x4dv()` is null.")
20977}
20978
20979/// The dummy function of `ProgramUniformMatrix4x2dv()`
20980extern "system" fn dummy_pfnglprogramuniformmatrix4x2dvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
20981	panic!("OpenGL function pointer `glProgramUniformMatrix4x2dv()` is null.")
20982}
20983
20984/// The dummy function of `ProgramUniformMatrix3x4dv()`
20985extern "system" fn dummy_pfnglprogramuniformmatrix3x4dvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
20986	panic!("OpenGL function pointer `glProgramUniformMatrix3x4dv()` is null.")
20987}
20988
20989/// The dummy function of `ProgramUniformMatrix4x3dv()`
20990extern "system" fn dummy_pfnglprogramuniformmatrix4x3dvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
20991	panic!("OpenGL function pointer `glProgramUniformMatrix4x3dv()` is null.")
20992}
20993
20994/// The dummy function of `ValidateProgramPipeline()`
20995extern "system" fn dummy_pfnglvalidateprogrampipelineproc (_: GLuint) {
20996	panic!("OpenGL function pointer `glValidateProgramPipeline()` is null.")
20997}
20998
20999/// The dummy function of `GetProgramPipelineInfoLog()`
21000extern "system" fn dummy_pfnglgetprogrampipelineinfologproc (_: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLchar) {
21001	panic!("OpenGL function pointer `glGetProgramPipelineInfoLog()` is null.")
21002}
21003
21004/// The dummy function of `VertexAttribL1d()`
21005extern "system" fn dummy_pfnglvertexattribl1dproc (_: GLuint, _: GLdouble) {
21006	panic!("OpenGL function pointer `glVertexAttribL1d()` is null.")
21007}
21008
21009/// The dummy function of `VertexAttribL2d()`
21010extern "system" fn dummy_pfnglvertexattribl2dproc (_: GLuint, _: GLdouble, _: GLdouble) {
21011	panic!("OpenGL function pointer `glVertexAttribL2d()` is null.")
21012}
21013
21014/// The dummy function of `VertexAttribL3d()`
21015extern "system" fn dummy_pfnglvertexattribl3dproc (_: GLuint, _: GLdouble, _: GLdouble, _: GLdouble) {
21016	panic!("OpenGL function pointer `glVertexAttribL3d()` is null.")
21017}
21018
21019/// The dummy function of `VertexAttribL4d()`
21020extern "system" fn dummy_pfnglvertexattribl4dproc (_: GLuint, _: GLdouble, _: GLdouble, _: GLdouble, _: GLdouble) {
21021	panic!("OpenGL function pointer `glVertexAttribL4d()` is null.")
21022}
21023
21024/// The dummy function of `VertexAttribL1dv()`
21025extern "system" fn dummy_pfnglvertexattribl1dvproc (_: GLuint, _: *const GLdouble) {
21026	panic!("OpenGL function pointer `glVertexAttribL1dv()` is null.")
21027}
21028
21029/// The dummy function of `VertexAttribL2dv()`
21030extern "system" fn dummy_pfnglvertexattribl2dvproc (_: GLuint, _: *const GLdouble) {
21031	panic!("OpenGL function pointer `glVertexAttribL2dv()` is null.")
21032}
21033
21034/// The dummy function of `VertexAttribL3dv()`
21035extern "system" fn dummy_pfnglvertexattribl3dvproc (_: GLuint, _: *const GLdouble) {
21036	panic!("OpenGL function pointer `glVertexAttribL3dv()` is null.")
21037}
21038
21039/// The dummy function of `VertexAttribL4dv()`
21040extern "system" fn dummy_pfnglvertexattribl4dvproc (_: GLuint, _: *const GLdouble) {
21041	panic!("OpenGL function pointer `glVertexAttribL4dv()` is null.")
21042}
21043
21044/// The dummy function of `VertexAttribLPointer()`
21045extern "system" fn dummy_pfnglvertexattriblpointerproc (_: GLuint, _: GLint, _: GLenum, _: GLsizei, _: *const c_void) {
21046	panic!("OpenGL function pointer `glVertexAttribLPointer()` is null.")
21047}
21048
21049/// The dummy function of `GetVertexAttribLdv()`
21050extern "system" fn dummy_pfnglgetvertexattribldvproc (_: GLuint, _: GLenum, _: *mut GLdouble) {
21051	panic!("OpenGL function pointer `glGetVertexAttribLdv()` is null.")
21052}
21053
21054/// The dummy function of `ViewportArrayv()`
21055extern "system" fn dummy_pfnglviewportarrayvproc (_: GLuint, _: GLsizei, _: *const GLfloat) {
21056	panic!("OpenGL function pointer `glViewportArrayv()` is null.")
21057}
21058
21059/// The dummy function of `ViewportIndexedf()`
21060extern "system" fn dummy_pfnglviewportindexedfproc (_: GLuint, _: GLfloat, _: GLfloat, _: GLfloat, _: GLfloat) {
21061	panic!("OpenGL function pointer `glViewportIndexedf()` is null.")
21062}
21063
21064/// The dummy function of `ViewportIndexedfv()`
21065extern "system" fn dummy_pfnglviewportindexedfvproc (_: GLuint, _: *const GLfloat) {
21066	panic!("OpenGL function pointer `glViewportIndexedfv()` is null.")
21067}
21068
21069/// The dummy function of `ScissorArrayv()`
21070extern "system" fn dummy_pfnglscissorarrayvproc (_: GLuint, _: GLsizei, _: *const GLint) {
21071	panic!("OpenGL function pointer `glScissorArrayv()` is null.")
21072}
21073
21074/// The dummy function of `ScissorIndexed()`
21075extern "system" fn dummy_pfnglscissorindexedproc (_: GLuint, _: GLint, _: GLint, _: GLsizei, _: GLsizei) {
21076	panic!("OpenGL function pointer `glScissorIndexed()` is null.")
21077}
21078
21079/// The dummy function of `ScissorIndexedv()`
21080extern "system" fn dummy_pfnglscissorindexedvproc (_: GLuint, _: *const GLint) {
21081	panic!("OpenGL function pointer `glScissorIndexedv()` is null.")
21082}
21083
21084/// The dummy function of `DepthRangeArrayv()`
21085extern "system" fn dummy_pfngldepthrangearrayvproc (_: GLuint, _: GLsizei, _: *const GLdouble) {
21086	panic!("OpenGL function pointer `glDepthRangeArrayv()` is null.")
21087}
21088
21089/// The dummy function of `DepthRangeIndexed()`
21090extern "system" fn dummy_pfngldepthrangeindexedproc (_: GLuint, _: GLdouble, _: GLdouble) {
21091	panic!("OpenGL function pointer `glDepthRangeIndexed()` is null.")
21092}
21093
21094/// The dummy function of `GetFloati_v()`
21095extern "system" fn dummy_pfnglgetfloati_vproc (_: GLenum, _: GLuint, _: *mut GLfloat) {
21096	panic!("OpenGL function pointer `glGetFloati_v()` is null.")
21097}
21098
21099/// The dummy function of `GetDoublei_v()`
21100extern "system" fn dummy_pfnglgetdoublei_vproc (_: GLenum, _: GLuint, _: *mut GLdouble) {
21101	panic!("OpenGL function pointer `glGetDoublei_v()` is null.")
21102}
21103/// Constant value defined from OpenGL 4.1
21104pub const GL_FIXED: GLenum = 0x140C;
21105
21106/// Constant value defined from OpenGL 4.1
21107pub const GL_IMPLEMENTATION_COLOR_READ_TYPE: GLenum = 0x8B9A;
21108
21109/// Constant value defined from OpenGL 4.1
21110pub const GL_IMPLEMENTATION_COLOR_READ_FORMAT: GLenum = 0x8B9B;
21111
21112/// Constant value defined from OpenGL 4.1
21113pub const GL_LOW_FLOAT: GLenum = 0x8DF0;
21114
21115/// Constant value defined from OpenGL 4.1
21116pub const GL_MEDIUM_FLOAT: GLenum = 0x8DF1;
21117
21118/// Constant value defined from OpenGL 4.1
21119pub const GL_HIGH_FLOAT: GLenum = 0x8DF2;
21120
21121/// Constant value defined from OpenGL 4.1
21122pub const GL_LOW_INT: GLenum = 0x8DF3;
21123
21124/// Constant value defined from OpenGL 4.1
21125pub const GL_MEDIUM_INT: GLenum = 0x8DF4;
21126
21127/// Constant value defined from OpenGL 4.1
21128pub const GL_HIGH_INT: GLenum = 0x8DF5;
21129
21130/// Constant value defined from OpenGL 4.1
21131pub const GL_SHADER_COMPILER: GLenum = 0x8DFA;
21132
21133/// Constant value defined from OpenGL 4.1
21134pub const GL_SHADER_BINARY_FORMATS: GLenum = 0x8DF8;
21135
21136/// Constant value defined from OpenGL 4.1
21137pub const GL_NUM_SHADER_BINARY_FORMATS: GLenum = 0x8DF9;
21138
21139/// Constant value defined from OpenGL 4.1
21140pub const GL_MAX_VERTEX_UNIFORM_VECTORS: GLenum = 0x8DFB;
21141
21142/// Constant value defined from OpenGL 4.1
21143pub const GL_MAX_VARYING_VECTORS: GLenum = 0x8DFC;
21144
21145/// Constant value defined from OpenGL 4.1
21146pub const GL_MAX_FRAGMENT_UNIFORM_VECTORS: GLenum = 0x8DFD;
21147
21148/// Constant value defined from OpenGL 4.1
21149pub const GL_RGB565: GLenum = 0x8D62;
21150
21151/// Constant value defined from OpenGL 4.1
21152pub const GL_PROGRAM_BINARY_RETRIEVABLE_HINT: GLenum = 0x8257;
21153
21154/// Constant value defined from OpenGL 4.1
21155pub const GL_PROGRAM_BINARY_LENGTH: GLenum = 0x8741;
21156
21157/// Constant value defined from OpenGL 4.1
21158pub const GL_NUM_PROGRAM_BINARY_FORMATS: GLenum = 0x87FE;
21159
21160/// Constant value defined from OpenGL 4.1
21161pub const GL_PROGRAM_BINARY_FORMATS: GLenum = 0x87FF;
21162
21163/// Constant value defined from OpenGL 4.1
21164pub const GL_VERTEX_SHADER_BIT: GLbitfield = 0x00000001;
21165
21166/// Constant value defined from OpenGL 4.1
21167pub const GL_FRAGMENT_SHADER_BIT: GLbitfield = 0x00000002;
21168
21169/// Constant value defined from OpenGL 4.1
21170pub const GL_GEOMETRY_SHADER_BIT: GLbitfield = 0x00000004;
21171
21172/// Constant value defined from OpenGL 4.1
21173pub const GL_TESS_CONTROL_SHADER_BIT: GLbitfield = 0x00000008;
21174
21175/// Constant value defined from OpenGL 4.1
21176pub const GL_TESS_EVALUATION_SHADER_BIT: GLbitfield = 0x00000010;
21177
21178/// Constant value defined from OpenGL 4.1
21179pub const GL_ALL_SHADER_BITS: GLbitfield = 0xFFFFFFFF;
21180
21181/// Constant value defined from OpenGL 4.1
21182pub const GL_PROGRAM_SEPARABLE: GLenum = 0x8258;
21183
21184/// Constant value defined from OpenGL 4.1
21185pub const GL_ACTIVE_PROGRAM: GLenum = 0x8259;
21186
21187/// Constant value defined from OpenGL 4.1
21188pub const GL_PROGRAM_PIPELINE_BINDING: GLenum = 0x825A;
21189
21190/// Constant value defined from OpenGL 4.1
21191pub const GL_MAX_VIEWPORTS: GLenum = 0x825B;
21192
21193/// Constant value defined from OpenGL 4.1
21194pub const GL_VIEWPORT_SUBPIXEL_BITS: GLenum = 0x825C;
21195
21196/// Constant value defined from OpenGL 4.1
21197pub const GL_VIEWPORT_BOUNDS_RANGE: GLenum = 0x825D;
21198
21199/// Constant value defined from OpenGL 4.1
21200pub const GL_LAYER_PROVOKING_VERTEX: GLenum = 0x825E;
21201
21202/// Constant value defined from OpenGL 4.1
21203pub const GL_VIEWPORT_INDEX_PROVOKING_VERTEX: GLenum = 0x825F;
21204
21205/// Constant value defined from OpenGL 4.1
21206pub const GL_UNDEFINED_VERTEX: GLenum = 0x8260;
21207
21208/// Functions from OpenGL version 4.1
21209pub trait GL_4_1 {
21210	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
21211	fn glGetError(&self) -> GLenum;
21212
21213	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glReleaseShaderCompiler.xhtml>
21214	fn glReleaseShaderCompiler(&self) -> Result<()>;
21215
21216	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glShaderBinary.xhtml>
21217	fn glShaderBinary(&self, count: GLsizei, shaders: *const GLuint, binaryFormat: GLenum, binary: *const c_void, length: GLsizei) -> Result<()>;
21218
21219	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetShaderPrecisionFormat.xhtml>
21220	fn glGetShaderPrecisionFormat(&self, shadertype: GLenum, precisiontype: GLenum, range: *mut GLint, precision: *mut GLint) -> Result<()>;
21221
21222	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthRangef.xhtml>
21223	fn glDepthRangef(&self, n: GLfloat, f: GLfloat) -> Result<()>;
21224
21225	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearDepthf.xhtml>
21226	fn glClearDepthf(&self, d: GLfloat) -> Result<()>;
21227
21228	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramBinary.xhtml>
21229	fn glGetProgramBinary(&self, program: GLuint, bufSize: GLsizei, length: *mut GLsizei, binaryFormat: *mut GLenum, binary: *mut c_void) -> Result<()>;
21230
21231	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramBinary.xhtml>
21232	fn glProgramBinary(&self, program: GLuint, binaryFormat: GLenum, binary: *const c_void, length: GLsizei) -> Result<()>;
21233
21234	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramParameteri.xhtml>
21235	fn glProgramParameteri(&self, program: GLuint, pname: GLenum, value: GLint) -> Result<()>;
21236
21237	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUseProgramStages.xhtml>
21238	fn glUseProgramStages(&self, pipeline: GLuint, stages: GLbitfield, program: GLuint) -> Result<()>;
21239
21240	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glActiveShaderProgram.xhtml>
21241	fn glActiveShaderProgram(&self, pipeline: GLuint, program: GLuint) -> Result<()>;
21242
21243	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateShaderProgramv.xhtml>
21244	fn glCreateShaderProgramv(&self, type_: GLenum, count: GLsizei, strings: *const *const GLchar) -> Result<GLuint>;
21245
21246	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindProgramPipeline.xhtml>
21247	fn glBindProgramPipeline(&self, pipeline: GLuint) -> Result<()>;
21248
21249	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteProgramPipelines.xhtml>
21250	fn glDeleteProgramPipelines(&self, n: GLsizei, pipelines: *const GLuint) -> Result<()>;
21251
21252	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenProgramPipelines.xhtml>
21253	fn glGenProgramPipelines(&self, n: GLsizei, pipelines: *mut GLuint) -> Result<()>;
21254
21255	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsProgramPipeline.xhtml>
21256	fn glIsProgramPipeline(&self, pipeline: GLuint) -> Result<GLboolean>;
21257
21258	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramPipelineiv.xhtml>
21259	fn glGetProgramPipelineiv(&self, pipeline: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
21260
21261	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1i.xhtml>
21262	fn glProgramUniform1i(&self, program: GLuint, location: GLint, v0: GLint) -> Result<()>;
21263
21264	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1iv.xhtml>
21265	fn glProgramUniform1iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
21266
21267	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1f.xhtml>
21268	fn glProgramUniform1f(&self, program: GLuint, location: GLint, v0: GLfloat) -> Result<()>;
21269
21270	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1fv.xhtml>
21271	fn glProgramUniform1fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
21272
21273	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1d.xhtml>
21274	fn glProgramUniform1d(&self, program: GLuint, location: GLint, v0: GLdouble) -> Result<()>;
21275
21276	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1dv.xhtml>
21277	fn glProgramUniform1dv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()>;
21278
21279	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1ui.xhtml>
21280	fn glProgramUniform1ui(&self, program: GLuint, location: GLint, v0: GLuint) -> Result<()>;
21281
21282	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1uiv.xhtml>
21283	fn glProgramUniform1uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
21284
21285	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2i.xhtml>
21286	fn glProgramUniform2i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint) -> Result<()>;
21287
21288	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2iv.xhtml>
21289	fn glProgramUniform2iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
21290
21291	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2f.xhtml>
21292	fn glProgramUniform2f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat) -> Result<()>;
21293
21294	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2fv.xhtml>
21295	fn glProgramUniform2fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
21296
21297	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2d.xhtml>
21298	fn glProgramUniform2d(&self, program: GLuint, location: GLint, v0: GLdouble, v1: GLdouble) -> Result<()>;
21299
21300	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2dv.xhtml>
21301	fn glProgramUniform2dv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()>;
21302
21303	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2ui.xhtml>
21304	fn glProgramUniform2ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint) -> Result<()>;
21305
21306	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2uiv.xhtml>
21307	fn glProgramUniform2uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
21308
21309	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3i.xhtml>
21310	fn glProgramUniform3i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint, v2: GLint) -> Result<()>;
21311
21312	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3iv.xhtml>
21313	fn glProgramUniform3iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
21314
21315	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3f.xhtml>
21316	fn glProgramUniform3f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat) -> Result<()>;
21317
21318	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3fv.xhtml>
21319	fn glProgramUniform3fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
21320
21321	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3d.xhtml>
21322	fn glProgramUniform3d(&self, program: GLuint, location: GLint, v0: GLdouble, v1: GLdouble, v2: GLdouble) -> Result<()>;
21323
21324	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3dv.xhtml>
21325	fn glProgramUniform3dv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()>;
21326
21327	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3ui.xhtml>
21328	fn glProgramUniform3ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint) -> Result<()>;
21329
21330	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3uiv.xhtml>
21331	fn glProgramUniform3uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
21332
21333	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4i.xhtml>
21334	fn glProgramUniform4i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint, v2: GLint, v3: GLint) -> Result<()>;
21335
21336	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4iv.xhtml>
21337	fn glProgramUniform4iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
21338
21339	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4f.xhtml>
21340	fn glProgramUniform4f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat, v3: GLfloat) -> Result<()>;
21341
21342	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4fv.xhtml>
21343	fn glProgramUniform4fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
21344
21345	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4d.xhtml>
21346	fn glProgramUniform4d(&self, program: GLuint, location: GLint, v0: GLdouble, v1: GLdouble, v2: GLdouble, v3: GLdouble) -> Result<()>;
21347
21348	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4dv.xhtml>
21349	fn glProgramUniform4dv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()>;
21350
21351	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4ui.xhtml>
21352	fn glProgramUniform4ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint, v3: GLuint) -> Result<()>;
21353
21354	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4uiv.xhtml>
21355	fn glProgramUniform4uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
21356
21357	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2fv.xhtml>
21358	fn glProgramUniformMatrix2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
21359
21360	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3fv.xhtml>
21361	fn glProgramUniformMatrix3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
21362
21363	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4fv.xhtml>
21364	fn glProgramUniformMatrix4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
21365
21366	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2dv.xhtml>
21367	fn glProgramUniformMatrix2dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
21368
21369	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3dv.xhtml>
21370	fn glProgramUniformMatrix3dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
21371
21372	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4dv.xhtml>
21373	fn glProgramUniformMatrix4dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
21374
21375	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2x3fv.xhtml>
21376	fn glProgramUniformMatrix2x3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
21377
21378	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3x2fv.xhtml>
21379	fn glProgramUniformMatrix3x2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
21380
21381	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2x4fv.xhtml>
21382	fn glProgramUniformMatrix2x4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
21383
21384	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4x2fv.xhtml>
21385	fn glProgramUniformMatrix4x2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
21386
21387	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3x4fv.xhtml>
21388	fn glProgramUniformMatrix3x4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
21389
21390	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4x3fv.xhtml>
21391	fn glProgramUniformMatrix4x3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
21392
21393	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2x3dv.xhtml>
21394	fn glProgramUniformMatrix2x3dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
21395
21396	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3x2dv.xhtml>
21397	fn glProgramUniformMatrix3x2dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
21398
21399	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2x4dv.xhtml>
21400	fn glProgramUniformMatrix2x4dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
21401
21402	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4x2dv.xhtml>
21403	fn glProgramUniformMatrix4x2dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
21404
21405	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3x4dv.xhtml>
21406	fn glProgramUniformMatrix3x4dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
21407
21408	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4x3dv.xhtml>
21409	fn glProgramUniformMatrix4x3dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
21410
21411	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glValidateProgramPipeline.xhtml>
21412	fn glValidateProgramPipeline(&self, pipeline: GLuint) -> Result<()>;
21413
21414	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramPipelineInfoLog.xhtml>
21415	fn glGetProgramPipelineInfoLog(&self, pipeline: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()>;
21416
21417	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL1d.xhtml>
21418	fn glVertexAttribL1d(&self, index: GLuint, x: GLdouble) -> Result<()>;
21419
21420	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL2d.xhtml>
21421	fn glVertexAttribL2d(&self, index: GLuint, x: GLdouble, y: GLdouble) -> Result<()>;
21422
21423	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL3d.xhtml>
21424	fn glVertexAttribL3d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble) -> Result<()>;
21425
21426	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL4d.xhtml>
21427	fn glVertexAttribL4d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble, w: GLdouble) -> Result<()>;
21428
21429	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL1dv.xhtml>
21430	fn glVertexAttribL1dv(&self, index: GLuint, v: *const GLdouble) -> Result<()>;
21431
21432	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL2dv.xhtml>
21433	fn glVertexAttribL2dv(&self, index: GLuint, v: *const GLdouble) -> Result<()>;
21434
21435	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL3dv.xhtml>
21436	fn glVertexAttribL3dv(&self, index: GLuint, v: *const GLdouble) -> Result<()>;
21437
21438	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL4dv.xhtml>
21439	fn glVertexAttribL4dv(&self, index: GLuint, v: *const GLdouble) -> Result<()>;
21440
21441	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribLPointer.xhtml>
21442	fn glVertexAttribLPointer(&self, index: GLuint, size: GLint, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()>;
21443
21444	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribLdv.xhtml>
21445	fn glGetVertexAttribLdv(&self, index: GLuint, pname: GLenum, params: *mut GLdouble) -> Result<()>;
21446
21447	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glViewportArrayv.xhtml>
21448	fn glViewportArrayv(&self, first: GLuint, count: GLsizei, v: *const GLfloat) -> Result<()>;
21449
21450	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glViewportIndexedf.xhtml>
21451	fn glViewportIndexedf(&self, index: GLuint, x: GLfloat, y: GLfloat, w: GLfloat, h: GLfloat) -> Result<()>;
21452
21453	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glViewportIndexedfv.xhtml>
21454	fn glViewportIndexedfv(&self, index: GLuint, v: *const GLfloat) -> Result<()>;
21455
21456	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glScissorArrayv.xhtml>
21457	fn glScissorArrayv(&self, first: GLuint, count: GLsizei, v: *const GLint) -> Result<()>;
21458
21459	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glScissorIndexed.xhtml>
21460	fn glScissorIndexed(&self, index: GLuint, left: GLint, bottom: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
21461
21462	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glScissorIndexedv.xhtml>
21463	fn glScissorIndexedv(&self, index: GLuint, v: *const GLint) -> Result<()>;
21464
21465	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthRangeArrayv.xhtml>
21466	fn glDepthRangeArrayv(&self, first: GLuint, count: GLsizei, v: *const GLdouble) -> Result<()>;
21467
21468	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthRangeIndexed.xhtml>
21469	fn glDepthRangeIndexed(&self, index: GLuint, n: GLdouble, f: GLdouble) -> Result<()>;
21470
21471	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFloati_v.xhtml>
21472	fn glGetFloati_v(&self, target: GLenum, index: GLuint, data: *mut GLfloat) -> Result<()>;
21473
21474	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetDoublei_v.xhtml>
21475	fn glGetDoublei_v(&self, target: GLenum, index: GLuint, data: *mut GLdouble) -> Result<()>;
21476}
21477/// Functions from OpenGL version 4.1
21478#[derive(Clone, Copy, PartialEq, Eq, Hash)]
21479pub struct Version41 {
21480	/// Is OpenGL version 4.1 available
21481	available: bool,
21482
21483	/// The function pointer to `glGetError()`
21484	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
21485	pub geterror: PFNGLGETERRORPROC,
21486
21487	/// The function pointer to `glReleaseShaderCompiler()`
21488	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glReleaseShaderCompiler.xhtml>
21489	pub releaseshadercompiler: PFNGLRELEASESHADERCOMPILERPROC,
21490
21491	/// The function pointer to `glShaderBinary()`
21492	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glShaderBinary.xhtml>
21493	pub shaderbinary: PFNGLSHADERBINARYPROC,
21494
21495	/// The function pointer to `glGetShaderPrecisionFormat()`
21496	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetShaderPrecisionFormat.xhtml>
21497	pub getshaderprecisionformat: PFNGLGETSHADERPRECISIONFORMATPROC,
21498
21499	/// The function pointer to `glDepthRangef()`
21500	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthRangef.xhtml>
21501	pub depthrangef: PFNGLDEPTHRANGEFPROC,
21502
21503	/// The function pointer to `glClearDepthf()`
21504	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearDepthf.xhtml>
21505	pub cleardepthf: PFNGLCLEARDEPTHFPROC,
21506
21507	/// The function pointer to `glGetProgramBinary()`
21508	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramBinary.xhtml>
21509	pub getprogrambinary: PFNGLGETPROGRAMBINARYPROC,
21510
21511	/// The function pointer to `glProgramBinary()`
21512	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramBinary.xhtml>
21513	pub programbinary: PFNGLPROGRAMBINARYPROC,
21514
21515	/// The function pointer to `glProgramParameteri()`
21516	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramParameteri.xhtml>
21517	pub programparameteri: PFNGLPROGRAMPARAMETERIPROC,
21518
21519	/// The function pointer to `glUseProgramStages()`
21520	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUseProgramStages.xhtml>
21521	pub useprogramstages: PFNGLUSEPROGRAMSTAGESPROC,
21522
21523	/// The function pointer to `glActiveShaderProgram()`
21524	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glActiveShaderProgram.xhtml>
21525	pub activeshaderprogram: PFNGLACTIVESHADERPROGRAMPROC,
21526
21527	/// The function pointer to `glCreateShaderProgramv()`
21528	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateShaderProgramv.xhtml>
21529	pub createshaderprogramv: PFNGLCREATESHADERPROGRAMVPROC,
21530
21531	/// The function pointer to `glBindProgramPipeline()`
21532	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindProgramPipeline.xhtml>
21533	pub bindprogrampipeline: PFNGLBINDPROGRAMPIPELINEPROC,
21534
21535	/// The function pointer to `glDeleteProgramPipelines()`
21536	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteProgramPipelines.xhtml>
21537	pub deleteprogrampipelines: PFNGLDELETEPROGRAMPIPELINESPROC,
21538
21539	/// The function pointer to `glGenProgramPipelines()`
21540	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenProgramPipelines.xhtml>
21541	pub genprogrampipelines: PFNGLGENPROGRAMPIPELINESPROC,
21542
21543	/// The function pointer to `glIsProgramPipeline()`
21544	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsProgramPipeline.xhtml>
21545	pub isprogrampipeline: PFNGLISPROGRAMPIPELINEPROC,
21546
21547	/// The function pointer to `glGetProgramPipelineiv()`
21548	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramPipelineiv.xhtml>
21549	pub getprogrampipelineiv: PFNGLGETPROGRAMPIPELINEIVPROC,
21550
21551	/// The function pointer to `glProgramUniform1i()`
21552	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1i.xhtml>
21553	pub programuniform1i: PFNGLPROGRAMUNIFORM1IPROC,
21554
21555	/// The function pointer to `glProgramUniform1iv()`
21556	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1iv.xhtml>
21557	pub programuniform1iv: PFNGLPROGRAMUNIFORM1IVPROC,
21558
21559	/// The function pointer to `glProgramUniform1f()`
21560	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1f.xhtml>
21561	pub programuniform1f: PFNGLPROGRAMUNIFORM1FPROC,
21562
21563	/// The function pointer to `glProgramUniform1fv()`
21564	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1fv.xhtml>
21565	pub programuniform1fv: PFNGLPROGRAMUNIFORM1FVPROC,
21566
21567	/// The function pointer to `glProgramUniform1d()`
21568	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1d.xhtml>
21569	pub programuniform1d: PFNGLPROGRAMUNIFORM1DPROC,
21570
21571	/// The function pointer to `glProgramUniform1dv()`
21572	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1dv.xhtml>
21573	pub programuniform1dv: PFNGLPROGRAMUNIFORM1DVPROC,
21574
21575	/// The function pointer to `glProgramUniform1ui()`
21576	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1ui.xhtml>
21577	pub programuniform1ui: PFNGLPROGRAMUNIFORM1UIPROC,
21578
21579	/// The function pointer to `glProgramUniform1uiv()`
21580	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1uiv.xhtml>
21581	pub programuniform1uiv: PFNGLPROGRAMUNIFORM1UIVPROC,
21582
21583	/// The function pointer to `glProgramUniform2i()`
21584	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2i.xhtml>
21585	pub programuniform2i: PFNGLPROGRAMUNIFORM2IPROC,
21586
21587	/// The function pointer to `glProgramUniform2iv()`
21588	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2iv.xhtml>
21589	pub programuniform2iv: PFNGLPROGRAMUNIFORM2IVPROC,
21590
21591	/// The function pointer to `glProgramUniform2f()`
21592	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2f.xhtml>
21593	pub programuniform2f: PFNGLPROGRAMUNIFORM2FPROC,
21594
21595	/// The function pointer to `glProgramUniform2fv()`
21596	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2fv.xhtml>
21597	pub programuniform2fv: PFNGLPROGRAMUNIFORM2FVPROC,
21598
21599	/// The function pointer to `glProgramUniform2d()`
21600	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2d.xhtml>
21601	pub programuniform2d: PFNGLPROGRAMUNIFORM2DPROC,
21602
21603	/// The function pointer to `glProgramUniform2dv()`
21604	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2dv.xhtml>
21605	pub programuniform2dv: PFNGLPROGRAMUNIFORM2DVPROC,
21606
21607	/// The function pointer to `glProgramUniform2ui()`
21608	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2ui.xhtml>
21609	pub programuniform2ui: PFNGLPROGRAMUNIFORM2UIPROC,
21610
21611	/// The function pointer to `glProgramUniform2uiv()`
21612	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2uiv.xhtml>
21613	pub programuniform2uiv: PFNGLPROGRAMUNIFORM2UIVPROC,
21614
21615	/// The function pointer to `glProgramUniform3i()`
21616	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3i.xhtml>
21617	pub programuniform3i: PFNGLPROGRAMUNIFORM3IPROC,
21618
21619	/// The function pointer to `glProgramUniform3iv()`
21620	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3iv.xhtml>
21621	pub programuniform3iv: PFNGLPROGRAMUNIFORM3IVPROC,
21622
21623	/// The function pointer to `glProgramUniform3f()`
21624	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3f.xhtml>
21625	pub programuniform3f: PFNGLPROGRAMUNIFORM3FPROC,
21626
21627	/// The function pointer to `glProgramUniform3fv()`
21628	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3fv.xhtml>
21629	pub programuniform3fv: PFNGLPROGRAMUNIFORM3FVPROC,
21630
21631	/// The function pointer to `glProgramUniform3d()`
21632	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3d.xhtml>
21633	pub programuniform3d: PFNGLPROGRAMUNIFORM3DPROC,
21634
21635	/// The function pointer to `glProgramUniform3dv()`
21636	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3dv.xhtml>
21637	pub programuniform3dv: PFNGLPROGRAMUNIFORM3DVPROC,
21638
21639	/// The function pointer to `glProgramUniform3ui()`
21640	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3ui.xhtml>
21641	pub programuniform3ui: PFNGLPROGRAMUNIFORM3UIPROC,
21642
21643	/// The function pointer to `glProgramUniform3uiv()`
21644	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3uiv.xhtml>
21645	pub programuniform3uiv: PFNGLPROGRAMUNIFORM3UIVPROC,
21646
21647	/// The function pointer to `glProgramUniform4i()`
21648	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4i.xhtml>
21649	pub programuniform4i: PFNGLPROGRAMUNIFORM4IPROC,
21650
21651	/// The function pointer to `glProgramUniform4iv()`
21652	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4iv.xhtml>
21653	pub programuniform4iv: PFNGLPROGRAMUNIFORM4IVPROC,
21654
21655	/// The function pointer to `glProgramUniform4f()`
21656	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4f.xhtml>
21657	pub programuniform4f: PFNGLPROGRAMUNIFORM4FPROC,
21658
21659	/// The function pointer to `glProgramUniform4fv()`
21660	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4fv.xhtml>
21661	pub programuniform4fv: PFNGLPROGRAMUNIFORM4FVPROC,
21662
21663	/// The function pointer to `glProgramUniform4d()`
21664	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4d.xhtml>
21665	pub programuniform4d: PFNGLPROGRAMUNIFORM4DPROC,
21666
21667	/// The function pointer to `glProgramUniform4dv()`
21668	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4dv.xhtml>
21669	pub programuniform4dv: PFNGLPROGRAMUNIFORM4DVPROC,
21670
21671	/// The function pointer to `glProgramUniform4ui()`
21672	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4ui.xhtml>
21673	pub programuniform4ui: PFNGLPROGRAMUNIFORM4UIPROC,
21674
21675	/// The function pointer to `glProgramUniform4uiv()`
21676	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4uiv.xhtml>
21677	pub programuniform4uiv: PFNGLPROGRAMUNIFORM4UIVPROC,
21678
21679	/// The function pointer to `glProgramUniformMatrix2fv()`
21680	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2fv.xhtml>
21681	pub programuniformmatrix2fv: PFNGLPROGRAMUNIFORMMATRIX2FVPROC,
21682
21683	/// The function pointer to `glProgramUniformMatrix3fv()`
21684	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3fv.xhtml>
21685	pub programuniformmatrix3fv: PFNGLPROGRAMUNIFORMMATRIX3FVPROC,
21686
21687	/// The function pointer to `glProgramUniformMatrix4fv()`
21688	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4fv.xhtml>
21689	pub programuniformmatrix4fv: PFNGLPROGRAMUNIFORMMATRIX4FVPROC,
21690
21691	/// The function pointer to `glProgramUniformMatrix2dv()`
21692	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2dv.xhtml>
21693	pub programuniformmatrix2dv: PFNGLPROGRAMUNIFORMMATRIX2DVPROC,
21694
21695	/// The function pointer to `glProgramUniformMatrix3dv()`
21696	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3dv.xhtml>
21697	pub programuniformmatrix3dv: PFNGLPROGRAMUNIFORMMATRIX3DVPROC,
21698
21699	/// The function pointer to `glProgramUniformMatrix4dv()`
21700	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4dv.xhtml>
21701	pub programuniformmatrix4dv: PFNGLPROGRAMUNIFORMMATRIX4DVPROC,
21702
21703	/// The function pointer to `glProgramUniformMatrix2x3fv()`
21704	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2x3fv.xhtml>
21705	pub programuniformmatrix2x3fv: PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC,
21706
21707	/// The function pointer to `glProgramUniformMatrix3x2fv()`
21708	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3x2fv.xhtml>
21709	pub programuniformmatrix3x2fv: PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC,
21710
21711	/// The function pointer to `glProgramUniformMatrix2x4fv()`
21712	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2x4fv.xhtml>
21713	pub programuniformmatrix2x4fv: PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC,
21714
21715	/// The function pointer to `glProgramUniformMatrix4x2fv()`
21716	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4x2fv.xhtml>
21717	pub programuniformmatrix4x2fv: PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC,
21718
21719	/// The function pointer to `glProgramUniformMatrix3x4fv()`
21720	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3x4fv.xhtml>
21721	pub programuniformmatrix3x4fv: PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC,
21722
21723	/// The function pointer to `glProgramUniformMatrix4x3fv()`
21724	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4x3fv.xhtml>
21725	pub programuniformmatrix4x3fv: PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC,
21726
21727	/// The function pointer to `glProgramUniformMatrix2x3dv()`
21728	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2x3dv.xhtml>
21729	pub programuniformmatrix2x3dv: PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC,
21730
21731	/// The function pointer to `glProgramUniformMatrix3x2dv()`
21732	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3x2dv.xhtml>
21733	pub programuniformmatrix3x2dv: PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC,
21734
21735	/// The function pointer to `glProgramUniformMatrix2x4dv()`
21736	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2x4dv.xhtml>
21737	pub programuniformmatrix2x4dv: PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC,
21738
21739	/// The function pointer to `glProgramUniformMatrix4x2dv()`
21740	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4x2dv.xhtml>
21741	pub programuniformmatrix4x2dv: PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC,
21742
21743	/// The function pointer to `glProgramUniformMatrix3x4dv()`
21744	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3x4dv.xhtml>
21745	pub programuniformmatrix3x4dv: PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC,
21746
21747	/// The function pointer to `glProgramUniformMatrix4x3dv()`
21748	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4x3dv.xhtml>
21749	pub programuniformmatrix4x3dv: PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC,
21750
21751	/// The function pointer to `glValidateProgramPipeline()`
21752	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glValidateProgramPipeline.xhtml>
21753	pub validateprogrampipeline: PFNGLVALIDATEPROGRAMPIPELINEPROC,
21754
21755	/// The function pointer to `glGetProgramPipelineInfoLog()`
21756	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramPipelineInfoLog.xhtml>
21757	pub getprogrampipelineinfolog: PFNGLGETPROGRAMPIPELINEINFOLOGPROC,
21758
21759	/// The function pointer to `glVertexAttribL1d()`
21760	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL1d.xhtml>
21761	pub vertexattribl1d: PFNGLVERTEXATTRIBL1DPROC,
21762
21763	/// The function pointer to `glVertexAttribL2d()`
21764	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL2d.xhtml>
21765	pub vertexattribl2d: PFNGLVERTEXATTRIBL2DPROC,
21766
21767	/// The function pointer to `glVertexAttribL3d()`
21768	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL3d.xhtml>
21769	pub vertexattribl3d: PFNGLVERTEXATTRIBL3DPROC,
21770
21771	/// The function pointer to `glVertexAttribL4d()`
21772	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL4d.xhtml>
21773	pub vertexattribl4d: PFNGLVERTEXATTRIBL4DPROC,
21774
21775	/// The function pointer to `glVertexAttribL1dv()`
21776	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL1dv.xhtml>
21777	pub vertexattribl1dv: PFNGLVERTEXATTRIBL1DVPROC,
21778
21779	/// The function pointer to `glVertexAttribL2dv()`
21780	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL2dv.xhtml>
21781	pub vertexattribl2dv: PFNGLVERTEXATTRIBL2DVPROC,
21782
21783	/// The function pointer to `glVertexAttribL3dv()`
21784	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL3dv.xhtml>
21785	pub vertexattribl3dv: PFNGLVERTEXATTRIBL3DVPROC,
21786
21787	/// The function pointer to `glVertexAttribL4dv()`
21788	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL4dv.xhtml>
21789	pub vertexattribl4dv: PFNGLVERTEXATTRIBL4DVPROC,
21790
21791	/// The function pointer to `glVertexAttribLPointer()`
21792	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribLPointer.xhtml>
21793	pub vertexattriblpointer: PFNGLVERTEXATTRIBLPOINTERPROC,
21794
21795	/// The function pointer to `glGetVertexAttribLdv()`
21796	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribLdv.xhtml>
21797	pub getvertexattribldv: PFNGLGETVERTEXATTRIBLDVPROC,
21798
21799	/// The function pointer to `glViewportArrayv()`
21800	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glViewportArrayv.xhtml>
21801	pub viewportarrayv: PFNGLVIEWPORTARRAYVPROC,
21802
21803	/// The function pointer to `glViewportIndexedf()`
21804	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glViewportIndexedf.xhtml>
21805	pub viewportindexedf: PFNGLVIEWPORTINDEXEDFPROC,
21806
21807	/// The function pointer to `glViewportIndexedfv()`
21808	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glViewportIndexedfv.xhtml>
21809	pub viewportindexedfv: PFNGLVIEWPORTINDEXEDFVPROC,
21810
21811	/// The function pointer to `glScissorArrayv()`
21812	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glScissorArrayv.xhtml>
21813	pub scissorarrayv: PFNGLSCISSORARRAYVPROC,
21814
21815	/// The function pointer to `glScissorIndexed()`
21816	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glScissorIndexed.xhtml>
21817	pub scissorindexed: PFNGLSCISSORINDEXEDPROC,
21818
21819	/// The function pointer to `glScissorIndexedv()`
21820	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glScissorIndexedv.xhtml>
21821	pub scissorindexedv: PFNGLSCISSORINDEXEDVPROC,
21822
21823	/// The function pointer to `glDepthRangeArrayv()`
21824	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthRangeArrayv.xhtml>
21825	pub depthrangearrayv: PFNGLDEPTHRANGEARRAYVPROC,
21826
21827	/// The function pointer to `glDepthRangeIndexed()`
21828	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthRangeIndexed.xhtml>
21829	pub depthrangeindexed: PFNGLDEPTHRANGEINDEXEDPROC,
21830
21831	/// The function pointer to `glGetFloati_v()`
21832	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFloati_v.xhtml>
21833	pub getfloati_v: PFNGLGETFLOATI_VPROC,
21834
21835	/// The function pointer to `glGetDoublei_v()`
21836	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetDoublei_v.xhtml>
21837	pub getdoublei_v: PFNGLGETDOUBLEI_VPROC,
21838}
21839
21840impl GL_4_1 for Version41 {
21841	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
21842	#[inline(always)]
21843	fn glGetError(&self) -> GLenum {
21844		(self.geterror)()
21845	}
21846	#[inline(always)]
21847	fn glReleaseShaderCompiler(&self) -> Result<()> {
21848		#[cfg(feature = "catch_nullptr")]
21849		let ret = process_catch("glReleaseShaderCompiler", catch_unwind(||(self.releaseshadercompiler)()));
21850		#[cfg(not(feature = "catch_nullptr"))]
21851		let ret = {(self.releaseshadercompiler)(); Ok(())};
21852		#[cfg(feature = "diagnose")]
21853		if let Ok(ret) = ret {
21854			return to_result("glReleaseShaderCompiler", ret, self.glGetError());
21855		} else {
21856			return ret
21857		}
21858		#[cfg(not(feature = "diagnose"))]
21859		return ret;
21860	}
21861	#[inline(always)]
21862	fn glShaderBinary(&self, count: GLsizei, shaders: *const GLuint, binaryFormat: GLenum, binary: *const c_void, length: GLsizei) -> Result<()> {
21863		#[cfg(feature = "catch_nullptr")]
21864		let ret = process_catch("glShaderBinary", catch_unwind(||(self.shaderbinary)(count, shaders, binaryFormat, binary, length)));
21865		#[cfg(not(feature = "catch_nullptr"))]
21866		let ret = {(self.shaderbinary)(count, shaders, binaryFormat, binary, length); Ok(())};
21867		#[cfg(feature = "diagnose")]
21868		if let Ok(ret) = ret {
21869			return to_result("glShaderBinary", ret, self.glGetError());
21870		} else {
21871			return ret
21872		}
21873		#[cfg(not(feature = "diagnose"))]
21874		return ret;
21875	}
21876	#[inline(always)]
21877	fn glGetShaderPrecisionFormat(&self, shadertype: GLenum, precisiontype: GLenum, range: *mut GLint, precision: *mut GLint) -> Result<()> {
21878		#[cfg(feature = "catch_nullptr")]
21879		let ret = process_catch("glGetShaderPrecisionFormat", catch_unwind(||(self.getshaderprecisionformat)(shadertype, precisiontype, range, precision)));
21880		#[cfg(not(feature = "catch_nullptr"))]
21881		let ret = {(self.getshaderprecisionformat)(shadertype, precisiontype, range, precision); Ok(())};
21882		#[cfg(feature = "diagnose")]
21883		if let Ok(ret) = ret {
21884			return to_result("glGetShaderPrecisionFormat", ret, self.glGetError());
21885		} else {
21886			return ret
21887		}
21888		#[cfg(not(feature = "diagnose"))]
21889		return ret;
21890	}
21891	#[inline(always)]
21892	fn glDepthRangef(&self, n: GLfloat, f: GLfloat) -> Result<()> {
21893		#[cfg(feature = "catch_nullptr")]
21894		let ret = process_catch("glDepthRangef", catch_unwind(||(self.depthrangef)(n, f)));
21895		#[cfg(not(feature = "catch_nullptr"))]
21896		let ret = {(self.depthrangef)(n, f); Ok(())};
21897		#[cfg(feature = "diagnose")]
21898		if let Ok(ret) = ret {
21899			return to_result("glDepthRangef", ret, self.glGetError());
21900		} else {
21901			return ret
21902		}
21903		#[cfg(not(feature = "diagnose"))]
21904		return ret;
21905	}
21906	#[inline(always)]
21907	fn glClearDepthf(&self, d: GLfloat) -> Result<()> {
21908		#[cfg(feature = "catch_nullptr")]
21909		let ret = process_catch("glClearDepthf", catch_unwind(||(self.cleardepthf)(d)));
21910		#[cfg(not(feature = "catch_nullptr"))]
21911		let ret = {(self.cleardepthf)(d); Ok(())};
21912		#[cfg(feature = "diagnose")]
21913		if let Ok(ret) = ret {
21914			return to_result("glClearDepthf", ret, self.glGetError());
21915		} else {
21916			return ret
21917		}
21918		#[cfg(not(feature = "diagnose"))]
21919		return ret;
21920	}
21921	#[inline(always)]
21922	fn glGetProgramBinary(&self, program: GLuint, bufSize: GLsizei, length: *mut GLsizei, binaryFormat: *mut GLenum, binary: *mut c_void) -> Result<()> {
21923		#[cfg(feature = "catch_nullptr")]
21924		let ret = process_catch("glGetProgramBinary", catch_unwind(||(self.getprogrambinary)(program, bufSize, length, binaryFormat, binary)));
21925		#[cfg(not(feature = "catch_nullptr"))]
21926		let ret = {(self.getprogrambinary)(program, bufSize, length, binaryFormat, binary); Ok(())};
21927		#[cfg(feature = "diagnose")]
21928		if let Ok(ret) = ret {
21929			return to_result("glGetProgramBinary", ret, self.glGetError());
21930		} else {
21931			return ret
21932		}
21933		#[cfg(not(feature = "diagnose"))]
21934		return ret;
21935	}
21936	#[inline(always)]
21937	fn glProgramBinary(&self, program: GLuint, binaryFormat: GLenum, binary: *const c_void, length: GLsizei) -> Result<()> {
21938		#[cfg(feature = "catch_nullptr")]
21939		let ret = process_catch("glProgramBinary", catch_unwind(||(self.programbinary)(program, binaryFormat, binary, length)));
21940		#[cfg(not(feature = "catch_nullptr"))]
21941		let ret = {(self.programbinary)(program, binaryFormat, binary, length); Ok(())};
21942		#[cfg(feature = "diagnose")]
21943		if let Ok(ret) = ret {
21944			return to_result("glProgramBinary", ret, self.glGetError());
21945		} else {
21946			return ret
21947		}
21948		#[cfg(not(feature = "diagnose"))]
21949		return ret;
21950	}
21951	#[inline(always)]
21952	fn glProgramParameteri(&self, program: GLuint, pname: GLenum, value: GLint) -> Result<()> {
21953		#[cfg(feature = "catch_nullptr")]
21954		let ret = process_catch("glProgramParameteri", catch_unwind(||(self.programparameteri)(program, pname, value)));
21955		#[cfg(not(feature = "catch_nullptr"))]
21956		let ret = {(self.programparameteri)(program, pname, value); Ok(())};
21957		#[cfg(feature = "diagnose")]
21958		if let Ok(ret) = ret {
21959			return to_result("glProgramParameteri", ret, self.glGetError());
21960		} else {
21961			return ret
21962		}
21963		#[cfg(not(feature = "diagnose"))]
21964		return ret;
21965	}
21966	#[inline(always)]
21967	fn glUseProgramStages(&self, pipeline: GLuint, stages: GLbitfield, program: GLuint) -> Result<()> {
21968		#[cfg(feature = "catch_nullptr")]
21969		let ret = process_catch("glUseProgramStages", catch_unwind(||(self.useprogramstages)(pipeline, stages, program)));
21970		#[cfg(not(feature = "catch_nullptr"))]
21971		let ret = {(self.useprogramstages)(pipeline, stages, program); Ok(())};
21972		#[cfg(feature = "diagnose")]
21973		if let Ok(ret) = ret {
21974			return to_result("glUseProgramStages", ret, self.glGetError());
21975		} else {
21976			return ret
21977		}
21978		#[cfg(not(feature = "diagnose"))]
21979		return ret;
21980	}
21981	#[inline(always)]
21982	fn glActiveShaderProgram(&self, pipeline: GLuint, program: GLuint) -> Result<()> {
21983		#[cfg(feature = "catch_nullptr")]
21984		let ret = process_catch("glActiveShaderProgram", catch_unwind(||(self.activeshaderprogram)(pipeline, program)));
21985		#[cfg(not(feature = "catch_nullptr"))]
21986		let ret = {(self.activeshaderprogram)(pipeline, program); Ok(())};
21987		#[cfg(feature = "diagnose")]
21988		if let Ok(ret) = ret {
21989			return to_result("glActiveShaderProgram", ret, self.glGetError());
21990		} else {
21991			return ret
21992		}
21993		#[cfg(not(feature = "diagnose"))]
21994		return ret;
21995	}
21996	#[inline(always)]
21997	fn glCreateShaderProgramv(&self, type_: GLenum, count: GLsizei, strings: *const *const GLchar) -> Result<GLuint> {
21998		#[cfg(feature = "catch_nullptr")]
21999		let ret = process_catch("glCreateShaderProgramv", catch_unwind(||(self.createshaderprogramv)(type_, count, strings)));
22000		#[cfg(not(feature = "catch_nullptr"))]
22001		let ret = Ok((self.createshaderprogramv)(type_, count, strings));
22002		#[cfg(feature = "diagnose")]
22003		if let Ok(ret) = ret {
22004			return to_result("glCreateShaderProgramv", ret, self.glGetError());
22005		} else {
22006			return ret
22007		}
22008		#[cfg(not(feature = "diagnose"))]
22009		return ret;
22010	}
22011	#[inline(always)]
22012	fn glBindProgramPipeline(&self, pipeline: GLuint) -> Result<()> {
22013		#[cfg(feature = "catch_nullptr")]
22014		let ret = process_catch("glBindProgramPipeline", catch_unwind(||(self.bindprogrampipeline)(pipeline)));
22015		#[cfg(not(feature = "catch_nullptr"))]
22016		let ret = {(self.bindprogrampipeline)(pipeline); Ok(())};
22017		#[cfg(feature = "diagnose")]
22018		if let Ok(ret) = ret {
22019			return to_result("glBindProgramPipeline", ret, self.glGetError());
22020		} else {
22021			return ret
22022		}
22023		#[cfg(not(feature = "diagnose"))]
22024		return ret;
22025	}
22026	#[inline(always)]
22027	fn glDeleteProgramPipelines(&self, n: GLsizei, pipelines: *const GLuint) -> Result<()> {
22028		#[cfg(feature = "catch_nullptr")]
22029		let ret = process_catch("glDeleteProgramPipelines", catch_unwind(||(self.deleteprogrampipelines)(n, pipelines)));
22030		#[cfg(not(feature = "catch_nullptr"))]
22031		let ret = {(self.deleteprogrampipelines)(n, pipelines); Ok(())};
22032		#[cfg(feature = "diagnose")]
22033		if let Ok(ret) = ret {
22034			return to_result("glDeleteProgramPipelines", ret, self.glGetError());
22035		} else {
22036			return ret
22037		}
22038		#[cfg(not(feature = "diagnose"))]
22039		return ret;
22040	}
22041	#[inline(always)]
22042	fn glGenProgramPipelines(&self, n: GLsizei, pipelines: *mut GLuint) -> Result<()> {
22043		#[cfg(feature = "catch_nullptr")]
22044		let ret = process_catch("glGenProgramPipelines", catch_unwind(||(self.genprogrampipelines)(n, pipelines)));
22045		#[cfg(not(feature = "catch_nullptr"))]
22046		let ret = {(self.genprogrampipelines)(n, pipelines); Ok(())};
22047		#[cfg(feature = "diagnose")]
22048		if let Ok(ret) = ret {
22049			return to_result("glGenProgramPipelines", ret, self.glGetError());
22050		} else {
22051			return ret
22052		}
22053		#[cfg(not(feature = "diagnose"))]
22054		return ret;
22055	}
22056	#[inline(always)]
22057	fn glIsProgramPipeline(&self, pipeline: GLuint) -> Result<GLboolean> {
22058		#[cfg(feature = "catch_nullptr")]
22059		let ret = process_catch("glIsProgramPipeline", catch_unwind(||(self.isprogrampipeline)(pipeline)));
22060		#[cfg(not(feature = "catch_nullptr"))]
22061		let ret = Ok((self.isprogrampipeline)(pipeline));
22062		#[cfg(feature = "diagnose")]
22063		if let Ok(ret) = ret {
22064			return to_result("glIsProgramPipeline", ret, self.glGetError());
22065		} else {
22066			return ret
22067		}
22068		#[cfg(not(feature = "diagnose"))]
22069		return ret;
22070	}
22071	#[inline(always)]
22072	fn glGetProgramPipelineiv(&self, pipeline: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
22073		#[cfg(feature = "catch_nullptr")]
22074		let ret = process_catch("glGetProgramPipelineiv", catch_unwind(||(self.getprogrampipelineiv)(pipeline, pname, params)));
22075		#[cfg(not(feature = "catch_nullptr"))]
22076		let ret = {(self.getprogrampipelineiv)(pipeline, pname, params); Ok(())};
22077		#[cfg(feature = "diagnose")]
22078		if let Ok(ret) = ret {
22079			return to_result("glGetProgramPipelineiv", ret, self.glGetError());
22080		} else {
22081			return ret
22082		}
22083		#[cfg(not(feature = "diagnose"))]
22084		return ret;
22085	}
22086	#[inline(always)]
22087	fn glProgramUniform1i(&self, program: GLuint, location: GLint, v0: GLint) -> Result<()> {
22088		#[cfg(feature = "catch_nullptr")]
22089		let ret = process_catch("glProgramUniform1i", catch_unwind(||(self.programuniform1i)(program, location, v0)));
22090		#[cfg(not(feature = "catch_nullptr"))]
22091		let ret = {(self.programuniform1i)(program, location, v0); Ok(())};
22092		#[cfg(feature = "diagnose")]
22093		if let Ok(ret) = ret {
22094			return to_result("glProgramUniform1i", ret, self.glGetError());
22095		} else {
22096			return ret
22097		}
22098		#[cfg(not(feature = "diagnose"))]
22099		return ret;
22100	}
22101	#[inline(always)]
22102	fn glProgramUniform1iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
22103		#[cfg(feature = "catch_nullptr")]
22104		let ret = process_catch("glProgramUniform1iv", catch_unwind(||(self.programuniform1iv)(program, location, count, value)));
22105		#[cfg(not(feature = "catch_nullptr"))]
22106		let ret = {(self.programuniform1iv)(program, location, count, value); Ok(())};
22107		#[cfg(feature = "diagnose")]
22108		if let Ok(ret) = ret {
22109			return to_result("glProgramUniform1iv", ret, self.glGetError());
22110		} else {
22111			return ret
22112		}
22113		#[cfg(not(feature = "diagnose"))]
22114		return ret;
22115	}
22116	#[inline(always)]
22117	fn glProgramUniform1f(&self, program: GLuint, location: GLint, v0: GLfloat) -> Result<()> {
22118		#[cfg(feature = "catch_nullptr")]
22119		let ret = process_catch("glProgramUniform1f", catch_unwind(||(self.programuniform1f)(program, location, v0)));
22120		#[cfg(not(feature = "catch_nullptr"))]
22121		let ret = {(self.programuniform1f)(program, location, v0); Ok(())};
22122		#[cfg(feature = "diagnose")]
22123		if let Ok(ret) = ret {
22124			return to_result("glProgramUniform1f", ret, self.glGetError());
22125		} else {
22126			return ret
22127		}
22128		#[cfg(not(feature = "diagnose"))]
22129		return ret;
22130	}
22131	#[inline(always)]
22132	fn glProgramUniform1fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
22133		#[cfg(feature = "catch_nullptr")]
22134		let ret = process_catch("glProgramUniform1fv", catch_unwind(||(self.programuniform1fv)(program, location, count, value)));
22135		#[cfg(not(feature = "catch_nullptr"))]
22136		let ret = {(self.programuniform1fv)(program, location, count, value); Ok(())};
22137		#[cfg(feature = "diagnose")]
22138		if let Ok(ret) = ret {
22139			return to_result("glProgramUniform1fv", ret, self.glGetError());
22140		} else {
22141			return ret
22142		}
22143		#[cfg(not(feature = "diagnose"))]
22144		return ret;
22145	}
22146	#[inline(always)]
22147	fn glProgramUniform1d(&self, program: GLuint, location: GLint, v0: GLdouble) -> Result<()> {
22148		#[cfg(feature = "catch_nullptr")]
22149		let ret = process_catch("glProgramUniform1d", catch_unwind(||(self.programuniform1d)(program, location, v0)));
22150		#[cfg(not(feature = "catch_nullptr"))]
22151		let ret = {(self.programuniform1d)(program, location, v0); Ok(())};
22152		#[cfg(feature = "diagnose")]
22153		if let Ok(ret) = ret {
22154			return to_result("glProgramUniform1d", ret, self.glGetError());
22155		} else {
22156			return ret
22157		}
22158		#[cfg(not(feature = "diagnose"))]
22159		return ret;
22160	}
22161	#[inline(always)]
22162	fn glProgramUniform1dv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()> {
22163		#[cfg(feature = "catch_nullptr")]
22164		let ret = process_catch("glProgramUniform1dv", catch_unwind(||(self.programuniform1dv)(program, location, count, value)));
22165		#[cfg(not(feature = "catch_nullptr"))]
22166		let ret = {(self.programuniform1dv)(program, location, count, value); Ok(())};
22167		#[cfg(feature = "diagnose")]
22168		if let Ok(ret) = ret {
22169			return to_result("glProgramUniform1dv", ret, self.glGetError());
22170		} else {
22171			return ret
22172		}
22173		#[cfg(not(feature = "diagnose"))]
22174		return ret;
22175	}
22176	#[inline(always)]
22177	fn glProgramUniform1ui(&self, program: GLuint, location: GLint, v0: GLuint) -> Result<()> {
22178		#[cfg(feature = "catch_nullptr")]
22179		let ret = process_catch("glProgramUniform1ui", catch_unwind(||(self.programuniform1ui)(program, location, v0)));
22180		#[cfg(not(feature = "catch_nullptr"))]
22181		let ret = {(self.programuniform1ui)(program, location, v0); Ok(())};
22182		#[cfg(feature = "diagnose")]
22183		if let Ok(ret) = ret {
22184			return to_result("glProgramUniform1ui", ret, self.glGetError());
22185		} else {
22186			return ret
22187		}
22188		#[cfg(not(feature = "diagnose"))]
22189		return ret;
22190	}
22191	#[inline(always)]
22192	fn glProgramUniform1uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
22193		#[cfg(feature = "catch_nullptr")]
22194		let ret = process_catch("glProgramUniform1uiv", catch_unwind(||(self.programuniform1uiv)(program, location, count, value)));
22195		#[cfg(not(feature = "catch_nullptr"))]
22196		let ret = {(self.programuniform1uiv)(program, location, count, value); Ok(())};
22197		#[cfg(feature = "diagnose")]
22198		if let Ok(ret) = ret {
22199			return to_result("glProgramUniform1uiv", ret, self.glGetError());
22200		} else {
22201			return ret
22202		}
22203		#[cfg(not(feature = "diagnose"))]
22204		return ret;
22205	}
22206	#[inline(always)]
22207	fn glProgramUniform2i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint) -> Result<()> {
22208		#[cfg(feature = "catch_nullptr")]
22209		let ret = process_catch("glProgramUniform2i", catch_unwind(||(self.programuniform2i)(program, location, v0, v1)));
22210		#[cfg(not(feature = "catch_nullptr"))]
22211		let ret = {(self.programuniform2i)(program, location, v0, v1); Ok(())};
22212		#[cfg(feature = "diagnose")]
22213		if let Ok(ret) = ret {
22214			return to_result("glProgramUniform2i", ret, self.glGetError());
22215		} else {
22216			return ret
22217		}
22218		#[cfg(not(feature = "diagnose"))]
22219		return ret;
22220	}
22221	#[inline(always)]
22222	fn glProgramUniform2iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
22223		#[cfg(feature = "catch_nullptr")]
22224		let ret = process_catch("glProgramUniform2iv", catch_unwind(||(self.programuniform2iv)(program, location, count, value)));
22225		#[cfg(not(feature = "catch_nullptr"))]
22226		let ret = {(self.programuniform2iv)(program, location, count, value); Ok(())};
22227		#[cfg(feature = "diagnose")]
22228		if let Ok(ret) = ret {
22229			return to_result("glProgramUniform2iv", ret, self.glGetError());
22230		} else {
22231			return ret
22232		}
22233		#[cfg(not(feature = "diagnose"))]
22234		return ret;
22235	}
22236	#[inline(always)]
22237	fn glProgramUniform2f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat) -> Result<()> {
22238		#[cfg(feature = "catch_nullptr")]
22239		let ret = process_catch("glProgramUniform2f", catch_unwind(||(self.programuniform2f)(program, location, v0, v1)));
22240		#[cfg(not(feature = "catch_nullptr"))]
22241		let ret = {(self.programuniform2f)(program, location, v0, v1); Ok(())};
22242		#[cfg(feature = "diagnose")]
22243		if let Ok(ret) = ret {
22244			return to_result("glProgramUniform2f", ret, self.glGetError());
22245		} else {
22246			return ret
22247		}
22248		#[cfg(not(feature = "diagnose"))]
22249		return ret;
22250	}
22251	#[inline(always)]
22252	fn glProgramUniform2fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
22253		#[cfg(feature = "catch_nullptr")]
22254		let ret = process_catch("glProgramUniform2fv", catch_unwind(||(self.programuniform2fv)(program, location, count, value)));
22255		#[cfg(not(feature = "catch_nullptr"))]
22256		let ret = {(self.programuniform2fv)(program, location, count, value); Ok(())};
22257		#[cfg(feature = "diagnose")]
22258		if let Ok(ret) = ret {
22259			return to_result("glProgramUniform2fv", ret, self.glGetError());
22260		} else {
22261			return ret
22262		}
22263		#[cfg(not(feature = "diagnose"))]
22264		return ret;
22265	}
22266	#[inline(always)]
22267	fn glProgramUniform2d(&self, program: GLuint, location: GLint, v0: GLdouble, v1: GLdouble) -> Result<()> {
22268		#[cfg(feature = "catch_nullptr")]
22269		let ret = process_catch("glProgramUniform2d", catch_unwind(||(self.programuniform2d)(program, location, v0, v1)));
22270		#[cfg(not(feature = "catch_nullptr"))]
22271		let ret = {(self.programuniform2d)(program, location, v0, v1); Ok(())};
22272		#[cfg(feature = "diagnose")]
22273		if let Ok(ret) = ret {
22274			return to_result("glProgramUniform2d", ret, self.glGetError());
22275		} else {
22276			return ret
22277		}
22278		#[cfg(not(feature = "diagnose"))]
22279		return ret;
22280	}
22281	#[inline(always)]
22282	fn glProgramUniform2dv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()> {
22283		#[cfg(feature = "catch_nullptr")]
22284		let ret = process_catch("glProgramUniform2dv", catch_unwind(||(self.programuniform2dv)(program, location, count, value)));
22285		#[cfg(not(feature = "catch_nullptr"))]
22286		let ret = {(self.programuniform2dv)(program, location, count, value); Ok(())};
22287		#[cfg(feature = "diagnose")]
22288		if let Ok(ret) = ret {
22289			return to_result("glProgramUniform2dv", ret, self.glGetError());
22290		} else {
22291			return ret
22292		}
22293		#[cfg(not(feature = "diagnose"))]
22294		return ret;
22295	}
22296	#[inline(always)]
22297	fn glProgramUniform2ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint) -> Result<()> {
22298		#[cfg(feature = "catch_nullptr")]
22299		let ret = process_catch("glProgramUniform2ui", catch_unwind(||(self.programuniform2ui)(program, location, v0, v1)));
22300		#[cfg(not(feature = "catch_nullptr"))]
22301		let ret = {(self.programuniform2ui)(program, location, v0, v1); Ok(())};
22302		#[cfg(feature = "diagnose")]
22303		if let Ok(ret) = ret {
22304			return to_result("glProgramUniform2ui", ret, self.glGetError());
22305		} else {
22306			return ret
22307		}
22308		#[cfg(not(feature = "diagnose"))]
22309		return ret;
22310	}
22311	#[inline(always)]
22312	fn glProgramUniform2uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
22313		#[cfg(feature = "catch_nullptr")]
22314		let ret = process_catch("glProgramUniform2uiv", catch_unwind(||(self.programuniform2uiv)(program, location, count, value)));
22315		#[cfg(not(feature = "catch_nullptr"))]
22316		let ret = {(self.programuniform2uiv)(program, location, count, value); Ok(())};
22317		#[cfg(feature = "diagnose")]
22318		if let Ok(ret) = ret {
22319			return to_result("glProgramUniform2uiv", ret, self.glGetError());
22320		} else {
22321			return ret
22322		}
22323		#[cfg(not(feature = "diagnose"))]
22324		return ret;
22325	}
22326	#[inline(always)]
22327	fn glProgramUniform3i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint, v2: GLint) -> Result<()> {
22328		#[cfg(feature = "catch_nullptr")]
22329		let ret = process_catch("glProgramUniform3i", catch_unwind(||(self.programuniform3i)(program, location, v0, v1, v2)));
22330		#[cfg(not(feature = "catch_nullptr"))]
22331		let ret = {(self.programuniform3i)(program, location, v0, v1, v2); Ok(())};
22332		#[cfg(feature = "diagnose")]
22333		if let Ok(ret) = ret {
22334			return to_result("glProgramUniform3i", ret, self.glGetError());
22335		} else {
22336			return ret
22337		}
22338		#[cfg(not(feature = "diagnose"))]
22339		return ret;
22340	}
22341	#[inline(always)]
22342	fn glProgramUniform3iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
22343		#[cfg(feature = "catch_nullptr")]
22344		let ret = process_catch("glProgramUniform3iv", catch_unwind(||(self.programuniform3iv)(program, location, count, value)));
22345		#[cfg(not(feature = "catch_nullptr"))]
22346		let ret = {(self.programuniform3iv)(program, location, count, value); Ok(())};
22347		#[cfg(feature = "diagnose")]
22348		if let Ok(ret) = ret {
22349			return to_result("glProgramUniform3iv", ret, self.glGetError());
22350		} else {
22351			return ret
22352		}
22353		#[cfg(not(feature = "diagnose"))]
22354		return ret;
22355	}
22356	#[inline(always)]
22357	fn glProgramUniform3f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat) -> Result<()> {
22358		#[cfg(feature = "catch_nullptr")]
22359		let ret = process_catch("glProgramUniform3f", catch_unwind(||(self.programuniform3f)(program, location, v0, v1, v2)));
22360		#[cfg(not(feature = "catch_nullptr"))]
22361		let ret = {(self.programuniform3f)(program, location, v0, v1, v2); Ok(())};
22362		#[cfg(feature = "diagnose")]
22363		if let Ok(ret) = ret {
22364			return to_result("glProgramUniform3f", ret, self.glGetError());
22365		} else {
22366			return ret
22367		}
22368		#[cfg(not(feature = "diagnose"))]
22369		return ret;
22370	}
22371	#[inline(always)]
22372	fn glProgramUniform3fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
22373		#[cfg(feature = "catch_nullptr")]
22374		let ret = process_catch("glProgramUniform3fv", catch_unwind(||(self.programuniform3fv)(program, location, count, value)));
22375		#[cfg(not(feature = "catch_nullptr"))]
22376		let ret = {(self.programuniform3fv)(program, location, count, value); Ok(())};
22377		#[cfg(feature = "diagnose")]
22378		if let Ok(ret) = ret {
22379			return to_result("glProgramUniform3fv", ret, self.glGetError());
22380		} else {
22381			return ret
22382		}
22383		#[cfg(not(feature = "diagnose"))]
22384		return ret;
22385	}
22386	#[inline(always)]
22387	fn glProgramUniform3d(&self, program: GLuint, location: GLint, v0: GLdouble, v1: GLdouble, v2: GLdouble) -> Result<()> {
22388		#[cfg(feature = "catch_nullptr")]
22389		let ret = process_catch("glProgramUniform3d", catch_unwind(||(self.programuniform3d)(program, location, v0, v1, v2)));
22390		#[cfg(not(feature = "catch_nullptr"))]
22391		let ret = {(self.programuniform3d)(program, location, v0, v1, v2); Ok(())};
22392		#[cfg(feature = "diagnose")]
22393		if let Ok(ret) = ret {
22394			return to_result("glProgramUniform3d", ret, self.glGetError());
22395		} else {
22396			return ret
22397		}
22398		#[cfg(not(feature = "diagnose"))]
22399		return ret;
22400	}
22401	#[inline(always)]
22402	fn glProgramUniform3dv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()> {
22403		#[cfg(feature = "catch_nullptr")]
22404		let ret = process_catch("glProgramUniform3dv", catch_unwind(||(self.programuniform3dv)(program, location, count, value)));
22405		#[cfg(not(feature = "catch_nullptr"))]
22406		let ret = {(self.programuniform3dv)(program, location, count, value); Ok(())};
22407		#[cfg(feature = "diagnose")]
22408		if let Ok(ret) = ret {
22409			return to_result("glProgramUniform3dv", ret, self.glGetError());
22410		} else {
22411			return ret
22412		}
22413		#[cfg(not(feature = "diagnose"))]
22414		return ret;
22415	}
22416	#[inline(always)]
22417	fn glProgramUniform3ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint) -> Result<()> {
22418		#[cfg(feature = "catch_nullptr")]
22419		let ret = process_catch("glProgramUniform3ui", catch_unwind(||(self.programuniform3ui)(program, location, v0, v1, v2)));
22420		#[cfg(not(feature = "catch_nullptr"))]
22421		let ret = {(self.programuniform3ui)(program, location, v0, v1, v2); Ok(())};
22422		#[cfg(feature = "diagnose")]
22423		if let Ok(ret) = ret {
22424			return to_result("glProgramUniform3ui", ret, self.glGetError());
22425		} else {
22426			return ret
22427		}
22428		#[cfg(not(feature = "diagnose"))]
22429		return ret;
22430	}
22431	#[inline(always)]
22432	fn glProgramUniform3uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
22433		#[cfg(feature = "catch_nullptr")]
22434		let ret = process_catch("glProgramUniform3uiv", catch_unwind(||(self.programuniform3uiv)(program, location, count, value)));
22435		#[cfg(not(feature = "catch_nullptr"))]
22436		let ret = {(self.programuniform3uiv)(program, location, count, value); Ok(())};
22437		#[cfg(feature = "diagnose")]
22438		if let Ok(ret) = ret {
22439			return to_result("glProgramUniform3uiv", ret, self.glGetError());
22440		} else {
22441			return ret
22442		}
22443		#[cfg(not(feature = "diagnose"))]
22444		return ret;
22445	}
22446	#[inline(always)]
22447	fn glProgramUniform4i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint, v2: GLint, v3: GLint) -> Result<()> {
22448		#[cfg(feature = "catch_nullptr")]
22449		let ret = process_catch("glProgramUniform4i", catch_unwind(||(self.programuniform4i)(program, location, v0, v1, v2, v3)));
22450		#[cfg(not(feature = "catch_nullptr"))]
22451		let ret = {(self.programuniform4i)(program, location, v0, v1, v2, v3); Ok(())};
22452		#[cfg(feature = "diagnose")]
22453		if let Ok(ret) = ret {
22454			return to_result("glProgramUniform4i", ret, self.glGetError());
22455		} else {
22456			return ret
22457		}
22458		#[cfg(not(feature = "diagnose"))]
22459		return ret;
22460	}
22461	#[inline(always)]
22462	fn glProgramUniform4iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
22463		#[cfg(feature = "catch_nullptr")]
22464		let ret = process_catch("glProgramUniform4iv", catch_unwind(||(self.programuniform4iv)(program, location, count, value)));
22465		#[cfg(not(feature = "catch_nullptr"))]
22466		let ret = {(self.programuniform4iv)(program, location, count, value); Ok(())};
22467		#[cfg(feature = "diagnose")]
22468		if let Ok(ret) = ret {
22469			return to_result("glProgramUniform4iv", ret, self.glGetError());
22470		} else {
22471			return ret
22472		}
22473		#[cfg(not(feature = "diagnose"))]
22474		return ret;
22475	}
22476	#[inline(always)]
22477	fn glProgramUniform4f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat, v3: GLfloat) -> Result<()> {
22478		#[cfg(feature = "catch_nullptr")]
22479		let ret = process_catch("glProgramUniform4f", catch_unwind(||(self.programuniform4f)(program, location, v0, v1, v2, v3)));
22480		#[cfg(not(feature = "catch_nullptr"))]
22481		let ret = {(self.programuniform4f)(program, location, v0, v1, v2, v3); Ok(())};
22482		#[cfg(feature = "diagnose")]
22483		if let Ok(ret) = ret {
22484			return to_result("glProgramUniform4f", ret, self.glGetError());
22485		} else {
22486			return ret
22487		}
22488		#[cfg(not(feature = "diagnose"))]
22489		return ret;
22490	}
22491	#[inline(always)]
22492	fn glProgramUniform4fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
22493		#[cfg(feature = "catch_nullptr")]
22494		let ret = process_catch("glProgramUniform4fv", catch_unwind(||(self.programuniform4fv)(program, location, count, value)));
22495		#[cfg(not(feature = "catch_nullptr"))]
22496		let ret = {(self.programuniform4fv)(program, location, count, value); Ok(())};
22497		#[cfg(feature = "diagnose")]
22498		if let Ok(ret) = ret {
22499			return to_result("glProgramUniform4fv", ret, self.glGetError());
22500		} else {
22501			return ret
22502		}
22503		#[cfg(not(feature = "diagnose"))]
22504		return ret;
22505	}
22506	#[inline(always)]
22507	fn glProgramUniform4d(&self, program: GLuint, location: GLint, v0: GLdouble, v1: GLdouble, v2: GLdouble, v3: GLdouble) -> Result<()> {
22508		#[cfg(feature = "catch_nullptr")]
22509		let ret = process_catch("glProgramUniform4d", catch_unwind(||(self.programuniform4d)(program, location, v0, v1, v2, v3)));
22510		#[cfg(not(feature = "catch_nullptr"))]
22511		let ret = {(self.programuniform4d)(program, location, v0, v1, v2, v3); Ok(())};
22512		#[cfg(feature = "diagnose")]
22513		if let Ok(ret) = ret {
22514			return to_result("glProgramUniform4d", ret, self.glGetError());
22515		} else {
22516			return ret
22517		}
22518		#[cfg(not(feature = "diagnose"))]
22519		return ret;
22520	}
22521	#[inline(always)]
22522	fn glProgramUniform4dv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()> {
22523		#[cfg(feature = "catch_nullptr")]
22524		let ret = process_catch("glProgramUniform4dv", catch_unwind(||(self.programuniform4dv)(program, location, count, value)));
22525		#[cfg(not(feature = "catch_nullptr"))]
22526		let ret = {(self.programuniform4dv)(program, location, count, value); Ok(())};
22527		#[cfg(feature = "diagnose")]
22528		if let Ok(ret) = ret {
22529			return to_result("glProgramUniform4dv", ret, self.glGetError());
22530		} else {
22531			return ret
22532		}
22533		#[cfg(not(feature = "diagnose"))]
22534		return ret;
22535	}
22536	#[inline(always)]
22537	fn glProgramUniform4ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint, v3: GLuint) -> Result<()> {
22538		#[cfg(feature = "catch_nullptr")]
22539		let ret = process_catch("glProgramUniform4ui", catch_unwind(||(self.programuniform4ui)(program, location, v0, v1, v2, v3)));
22540		#[cfg(not(feature = "catch_nullptr"))]
22541		let ret = {(self.programuniform4ui)(program, location, v0, v1, v2, v3); Ok(())};
22542		#[cfg(feature = "diagnose")]
22543		if let Ok(ret) = ret {
22544			return to_result("glProgramUniform4ui", ret, self.glGetError());
22545		} else {
22546			return ret
22547		}
22548		#[cfg(not(feature = "diagnose"))]
22549		return ret;
22550	}
22551	#[inline(always)]
22552	fn glProgramUniform4uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
22553		#[cfg(feature = "catch_nullptr")]
22554		let ret = process_catch("glProgramUniform4uiv", catch_unwind(||(self.programuniform4uiv)(program, location, count, value)));
22555		#[cfg(not(feature = "catch_nullptr"))]
22556		let ret = {(self.programuniform4uiv)(program, location, count, value); Ok(())};
22557		#[cfg(feature = "diagnose")]
22558		if let Ok(ret) = ret {
22559			return to_result("glProgramUniform4uiv", ret, self.glGetError());
22560		} else {
22561			return ret
22562		}
22563		#[cfg(not(feature = "diagnose"))]
22564		return ret;
22565	}
22566	#[inline(always)]
22567	fn glProgramUniformMatrix2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
22568		#[cfg(feature = "catch_nullptr")]
22569		let ret = process_catch("glProgramUniformMatrix2fv", catch_unwind(||(self.programuniformmatrix2fv)(program, location, count, transpose, value)));
22570		#[cfg(not(feature = "catch_nullptr"))]
22571		let ret = {(self.programuniformmatrix2fv)(program, location, count, transpose, value); Ok(())};
22572		#[cfg(feature = "diagnose")]
22573		if let Ok(ret) = ret {
22574			return to_result("glProgramUniformMatrix2fv", ret, self.glGetError());
22575		} else {
22576			return ret
22577		}
22578		#[cfg(not(feature = "diagnose"))]
22579		return ret;
22580	}
22581	#[inline(always)]
22582	fn glProgramUniformMatrix3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
22583		#[cfg(feature = "catch_nullptr")]
22584		let ret = process_catch("glProgramUniformMatrix3fv", catch_unwind(||(self.programuniformmatrix3fv)(program, location, count, transpose, value)));
22585		#[cfg(not(feature = "catch_nullptr"))]
22586		let ret = {(self.programuniformmatrix3fv)(program, location, count, transpose, value); Ok(())};
22587		#[cfg(feature = "diagnose")]
22588		if let Ok(ret) = ret {
22589			return to_result("glProgramUniformMatrix3fv", ret, self.glGetError());
22590		} else {
22591			return ret
22592		}
22593		#[cfg(not(feature = "diagnose"))]
22594		return ret;
22595	}
22596	#[inline(always)]
22597	fn glProgramUniformMatrix4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
22598		#[cfg(feature = "catch_nullptr")]
22599		let ret = process_catch("glProgramUniformMatrix4fv", catch_unwind(||(self.programuniformmatrix4fv)(program, location, count, transpose, value)));
22600		#[cfg(not(feature = "catch_nullptr"))]
22601		let ret = {(self.programuniformmatrix4fv)(program, location, count, transpose, value); Ok(())};
22602		#[cfg(feature = "diagnose")]
22603		if let Ok(ret) = ret {
22604			return to_result("glProgramUniformMatrix4fv", ret, self.glGetError());
22605		} else {
22606			return ret
22607		}
22608		#[cfg(not(feature = "diagnose"))]
22609		return ret;
22610	}
22611	#[inline(always)]
22612	fn glProgramUniformMatrix2dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
22613		#[cfg(feature = "catch_nullptr")]
22614		let ret = process_catch("glProgramUniformMatrix2dv", catch_unwind(||(self.programuniformmatrix2dv)(program, location, count, transpose, value)));
22615		#[cfg(not(feature = "catch_nullptr"))]
22616		let ret = {(self.programuniformmatrix2dv)(program, location, count, transpose, value); Ok(())};
22617		#[cfg(feature = "diagnose")]
22618		if let Ok(ret) = ret {
22619			return to_result("glProgramUniformMatrix2dv", ret, self.glGetError());
22620		} else {
22621			return ret
22622		}
22623		#[cfg(not(feature = "diagnose"))]
22624		return ret;
22625	}
22626	#[inline(always)]
22627	fn glProgramUniformMatrix3dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
22628		#[cfg(feature = "catch_nullptr")]
22629		let ret = process_catch("glProgramUniformMatrix3dv", catch_unwind(||(self.programuniformmatrix3dv)(program, location, count, transpose, value)));
22630		#[cfg(not(feature = "catch_nullptr"))]
22631		let ret = {(self.programuniformmatrix3dv)(program, location, count, transpose, value); Ok(())};
22632		#[cfg(feature = "diagnose")]
22633		if let Ok(ret) = ret {
22634			return to_result("glProgramUniformMatrix3dv", ret, self.glGetError());
22635		} else {
22636			return ret
22637		}
22638		#[cfg(not(feature = "diagnose"))]
22639		return ret;
22640	}
22641	#[inline(always)]
22642	fn glProgramUniformMatrix4dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
22643		#[cfg(feature = "catch_nullptr")]
22644		let ret = process_catch("glProgramUniformMatrix4dv", catch_unwind(||(self.programuniformmatrix4dv)(program, location, count, transpose, value)));
22645		#[cfg(not(feature = "catch_nullptr"))]
22646		let ret = {(self.programuniformmatrix4dv)(program, location, count, transpose, value); Ok(())};
22647		#[cfg(feature = "diagnose")]
22648		if let Ok(ret) = ret {
22649			return to_result("glProgramUniformMatrix4dv", ret, self.glGetError());
22650		} else {
22651			return ret
22652		}
22653		#[cfg(not(feature = "diagnose"))]
22654		return ret;
22655	}
22656	#[inline(always)]
22657	fn glProgramUniformMatrix2x3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
22658		#[cfg(feature = "catch_nullptr")]
22659		let ret = process_catch("glProgramUniformMatrix2x3fv", catch_unwind(||(self.programuniformmatrix2x3fv)(program, location, count, transpose, value)));
22660		#[cfg(not(feature = "catch_nullptr"))]
22661		let ret = {(self.programuniformmatrix2x3fv)(program, location, count, transpose, value); Ok(())};
22662		#[cfg(feature = "diagnose")]
22663		if let Ok(ret) = ret {
22664			return to_result("glProgramUniformMatrix2x3fv", ret, self.glGetError());
22665		} else {
22666			return ret
22667		}
22668		#[cfg(not(feature = "diagnose"))]
22669		return ret;
22670	}
22671	#[inline(always)]
22672	fn glProgramUniformMatrix3x2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
22673		#[cfg(feature = "catch_nullptr")]
22674		let ret = process_catch("glProgramUniformMatrix3x2fv", catch_unwind(||(self.programuniformmatrix3x2fv)(program, location, count, transpose, value)));
22675		#[cfg(not(feature = "catch_nullptr"))]
22676		let ret = {(self.programuniformmatrix3x2fv)(program, location, count, transpose, value); Ok(())};
22677		#[cfg(feature = "diagnose")]
22678		if let Ok(ret) = ret {
22679			return to_result("glProgramUniformMatrix3x2fv", ret, self.glGetError());
22680		} else {
22681			return ret
22682		}
22683		#[cfg(not(feature = "diagnose"))]
22684		return ret;
22685	}
22686	#[inline(always)]
22687	fn glProgramUniformMatrix2x4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
22688		#[cfg(feature = "catch_nullptr")]
22689		let ret = process_catch("glProgramUniformMatrix2x4fv", catch_unwind(||(self.programuniformmatrix2x4fv)(program, location, count, transpose, value)));
22690		#[cfg(not(feature = "catch_nullptr"))]
22691		let ret = {(self.programuniformmatrix2x4fv)(program, location, count, transpose, value); Ok(())};
22692		#[cfg(feature = "diagnose")]
22693		if let Ok(ret) = ret {
22694			return to_result("glProgramUniformMatrix2x4fv", ret, self.glGetError());
22695		} else {
22696			return ret
22697		}
22698		#[cfg(not(feature = "diagnose"))]
22699		return ret;
22700	}
22701	#[inline(always)]
22702	fn glProgramUniformMatrix4x2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
22703		#[cfg(feature = "catch_nullptr")]
22704		let ret = process_catch("glProgramUniformMatrix4x2fv", catch_unwind(||(self.programuniformmatrix4x2fv)(program, location, count, transpose, value)));
22705		#[cfg(not(feature = "catch_nullptr"))]
22706		let ret = {(self.programuniformmatrix4x2fv)(program, location, count, transpose, value); Ok(())};
22707		#[cfg(feature = "diagnose")]
22708		if let Ok(ret) = ret {
22709			return to_result("glProgramUniformMatrix4x2fv", ret, self.glGetError());
22710		} else {
22711			return ret
22712		}
22713		#[cfg(not(feature = "diagnose"))]
22714		return ret;
22715	}
22716	#[inline(always)]
22717	fn glProgramUniformMatrix3x4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
22718		#[cfg(feature = "catch_nullptr")]
22719		let ret = process_catch("glProgramUniformMatrix3x4fv", catch_unwind(||(self.programuniformmatrix3x4fv)(program, location, count, transpose, value)));
22720		#[cfg(not(feature = "catch_nullptr"))]
22721		let ret = {(self.programuniformmatrix3x4fv)(program, location, count, transpose, value); Ok(())};
22722		#[cfg(feature = "diagnose")]
22723		if let Ok(ret) = ret {
22724			return to_result("glProgramUniformMatrix3x4fv", ret, self.glGetError());
22725		} else {
22726			return ret
22727		}
22728		#[cfg(not(feature = "diagnose"))]
22729		return ret;
22730	}
22731	#[inline(always)]
22732	fn glProgramUniformMatrix4x3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
22733		#[cfg(feature = "catch_nullptr")]
22734		let ret = process_catch("glProgramUniformMatrix4x3fv", catch_unwind(||(self.programuniformmatrix4x3fv)(program, location, count, transpose, value)));
22735		#[cfg(not(feature = "catch_nullptr"))]
22736		let ret = {(self.programuniformmatrix4x3fv)(program, location, count, transpose, value); Ok(())};
22737		#[cfg(feature = "diagnose")]
22738		if let Ok(ret) = ret {
22739			return to_result("glProgramUniformMatrix4x3fv", ret, self.glGetError());
22740		} else {
22741			return ret
22742		}
22743		#[cfg(not(feature = "diagnose"))]
22744		return ret;
22745	}
22746	#[inline(always)]
22747	fn glProgramUniformMatrix2x3dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
22748		#[cfg(feature = "catch_nullptr")]
22749		let ret = process_catch("glProgramUniformMatrix2x3dv", catch_unwind(||(self.programuniformmatrix2x3dv)(program, location, count, transpose, value)));
22750		#[cfg(not(feature = "catch_nullptr"))]
22751		let ret = {(self.programuniformmatrix2x3dv)(program, location, count, transpose, value); Ok(())};
22752		#[cfg(feature = "diagnose")]
22753		if let Ok(ret) = ret {
22754			return to_result("glProgramUniformMatrix2x3dv", ret, self.glGetError());
22755		} else {
22756			return ret
22757		}
22758		#[cfg(not(feature = "diagnose"))]
22759		return ret;
22760	}
22761	#[inline(always)]
22762	fn glProgramUniformMatrix3x2dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
22763		#[cfg(feature = "catch_nullptr")]
22764		let ret = process_catch("glProgramUniformMatrix3x2dv", catch_unwind(||(self.programuniformmatrix3x2dv)(program, location, count, transpose, value)));
22765		#[cfg(not(feature = "catch_nullptr"))]
22766		let ret = {(self.programuniformmatrix3x2dv)(program, location, count, transpose, value); Ok(())};
22767		#[cfg(feature = "diagnose")]
22768		if let Ok(ret) = ret {
22769			return to_result("glProgramUniformMatrix3x2dv", ret, self.glGetError());
22770		} else {
22771			return ret
22772		}
22773		#[cfg(not(feature = "diagnose"))]
22774		return ret;
22775	}
22776	#[inline(always)]
22777	fn glProgramUniformMatrix2x4dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
22778		#[cfg(feature = "catch_nullptr")]
22779		let ret = process_catch("glProgramUniformMatrix2x4dv", catch_unwind(||(self.programuniformmatrix2x4dv)(program, location, count, transpose, value)));
22780		#[cfg(not(feature = "catch_nullptr"))]
22781		let ret = {(self.programuniformmatrix2x4dv)(program, location, count, transpose, value); Ok(())};
22782		#[cfg(feature = "diagnose")]
22783		if let Ok(ret) = ret {
22784			return to_result("glProgramUniformMatrix2x4dv", ret, self.glGetError());
22785		} else {
22786			return ret
22787		}
22788		#[cfg(not(feature = "diagnose"))]
22789		return ret;
22790	}
22791	#[inline(always)]
22792	fn glProgramUniformMatrix4x2dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
22793		#[cfg(feature = "catch_nullptr")]
22794		let ret = process_catch("glProgramUniformMatrix4x2dv", catch_unwind(||(self.programuniformmatrix4x2dv)(program, location, count, transpose, value)));
22795		#[cfg(not(feature = "catch_nullptr"))]
22796		let ret = {(self.programuniformmatrix4x2dv)(program, location, count, transpose, value); Ok(())};
22797		#[cfg(feature = "diagnose")]
22798		if let Ok(ret) = ret {
22799			return to_result("glProgramUniformMatrix4x2dv", ret, self.glGetError());
22800		} else {
22801			return ret
22802		}
22803		#[cfg(not(feature = "diagnose"))]
22804		return ret;
22805	}
22806	#[inline(always)]
22807	fn glProgramUniformMatrix3x4dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
22808		#[cfg(feature = "catch_nullptr")]
22809		let ret = process_catch("glProgramUniformMatrix3x4dv", catch_unwind(||(self.programuniformmatrix3x4dv)(program, location, count, transpose, value)));
22810		#[cfg(not(feature = "catch_nullptr"))]
22811		let ret = {(self.programuniformmatrix3x4dv)(program, location, count, transpose, value); Ok(())};
22812		#[cfg(feature = "diagnose")]
22813		if let Ok(ret) = ret {
22814			return to_result("glProgramUniformMatrix3x4dv", ret, self.glGetError());
22815		} else {
22816			return ret
22817		}
22818		#[cfg(not(feature = "diagnose"))]
22819		return ret;
22820	}
22821	#[inline(always)]
22822	fn glProgramUniformMatrix4x3dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
22823		#[cfg(feature = "catch_nullptr")]
22824		let ret = process_catch("glProgramUniformMatrix4x3dv", catch_unwind(||(self.programuniformmatrix4x3dv)(program, location, count, transpose, value)));
22825		#[cfg(not(feature = "catch_nullptr"))]
22826		let ret = {(self.programuniformmatrix4x3dv)(program, location, count, transpose, value); Ok(())};
22827		#[cfg(feature = "diagnose")]
22828		if let Ok(ret) = ret {
22829			return to_result("glProgramUniformMatrix4x3dv", ret, self.glGetError());
22830		} else {
22831			return ret
22832		}
22833		#[cfg(not(feature = "diagnose"))]
22834		return ret;
22835	}
22836	#[inline(always)]
22837	fn glValidateProgramPipeline(&self, pipeline: GLuint) -> Result<()> {
22838		#[cfg(feature = "catch_nullptr")]
22839		let ret = process_catch("glValidateProgramPipeline", catch_unwind(||(self.validateprogrampipeline)(pipeline)));
22840		#[cfg(not(feature = "catch_nullptr"))]
22841		let ret = {(self.validateprogrampipeline)(pipeline); Ok(())};
22842		#[cfg(feature = "diagnose")]
22843		if let Ok(ret) = ret {
22844			return to_result("glValidateProgramPipeline", ret, self.glGetError());
22845		} else {
22846			return ret
22847		}
22848		#[cfg(not(feature = "diagnose"))]
22849		return ret;
22850	}
22851	#[inline(always)]
22852	fn glGetProgramPipelineInfoLog(&self, pipeline: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()> {
22853		#[cfg(feature = "catch_nullptr")]
22854		let ret = process_catch("glGetProgramPipelineInfoLog", catch_unwind(||(self.getprogrampipelineinfolog)(pipeline, bufSize, length, infoLog)));
22855		#[cfg(not(feature = "catch_nullptr"))]
22856		let ret = {(self.getprogrampipelineinfolog)(pipeline, bufSize, length, infoLog); Ok(())};
22857		#[cfg(feature = "diagnose")]
22858		if let Ok(ret) = ret {
22859			return to_result("glGetProgramPipelineInfoLog", ret, self.glGetError());
22860		} else {
22861			return ret
22862		}
22863		#[cfg(not(feature = "diagnose"))]
22864		return ret;
22865	}
22866	#[inline(always)]
22867	fn glVertexAttribL1d(&self, index: GLuint, x: GLdouble) -> Result<()> {
22868		#[cfg(feature = "catch_nullptr")]
22869		let ret = process_catch("glVertexAttribL1d", catch_unwind(||(self.vertexattribl1d)(index, x)));
22870		#[cfg(not(feature = "catch_nullptr"))]
22871		let ret = {(self.vertexattribl1d)(index, x); Ok(())};
22872		#[cfg(feature = "diagnose")]
22873		if let Ok(ret) = ret {
22874			return to_result("glVertexAttribL1d", ret, self.glGetError());
22875		} else {
22876			return ret
22877		}
22878		#[cfg(not(feature = "diagnose"))]
22879		return ret;
22880	}
22881	#[inline(always)]
22882	fn glVertexAttribL2d(&self, index: GLuint, x: GLdouble, y: GLdouble) -> Result<()> {
22883		#[cfg(feature = "catch_nullptr")]
22884		let ret = process_catch("glVertexAttribL2d", catch_unwind(||(self.vertexattribl2d)(index, x, y)));
22885		#[cfg(not(feature = "catch_nullptr"))]
22886		let ret = {(self.vertexattribl2d)(index, x, y); Ok(())};
22887		#[cfg(feature = "diagnose")]
22888		if let Ok(ret) = ret {
22889			return to_result("glVertexAttribL2d", ret, self.glGetError());
22890		} else {
22891			return ret
22892		}
22893		#[cfg(not(feature = "diagnose"))]
22894		return ret;
22895	}
22896	#[inline(always)]
22897	fn glVertexAttribL3d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble) -> Result<()> {
22898		#[cfg(feature = "catch_nullptr")]
22899		let ret = process_catch("glVertexAttribL3d", catch_unwind(||(self.vertexattribl3d)(index, x, y, z)));
22900		#[cfg(not(feature = "catch_nullptr"))]
22901		let ret = {(self.vertexattribl3d)(index, x, y, z); Ok(())};
22902		#[cfg(feature = "diagnose")]
22903		if let Ok(ret) = ret {
22904			return to_result("glVertexAttribL3d", ret, self.glGetError());
22905		} else {
22906			return ret
22907		}
22908		#[cfg(not(feature = "diagnose"))]
22909		return ret;
22910	}
22911	#[inline(always)]
22912	fn glVertexAttribL4d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble, w: GLdouble) -> Result<()> {
22913		#[cfg(feature = "catch_nullptr")]
22914		let ret = process_catch("glVertexAttribL4d", catch_unwind(||(self.vertexattribl4d)(index, x, y, z, w)));
22915		#[cfg(not(feature = "catch_nullptr"))]
22916		let ret = {(self.vertexattribl4d)(index, x, y, z, w); Ok(())};
22917		#[cfg(feature = "diagnose")]
22918		if let Ok(ret) = ret {
22919			return to_result("glVertexAttribL4d", ret, self.glGetError());
22920		} else {
22921			return ret
22922		}
22923		#[cfg(not(feature = "diagnose"))]
22924		return ret;
22925	}
22926	#[inline(always)]
22927	fn glVertexAttribL1dv(&self, index: GLuint, v: *const GLdouble) -> Result<()> {
22928		#[cfg(feature = "catch_nullptr")]
22929		let ret = process_catch("glVertexAttribL1dv", catch_unwind(||(self.vertexattribl1dv)(index, v)));
22930		#[cfg(not(feature = "catch_nullptr"))]
22931		let ret = {(self.vertexattribl1dv)(index, v); Ok(())};
22932		#[cfg(feature = "diagnose")]
22933		if let Ok(ret) = ret {
22934			return to_result("glVertexAttribL1dv", ret, self.glGetError());
22935		} else {
22936			return ret
22937		}
22938		#[cfg(not(feature = "diagnose"))]
22939		return ret;
22940	}
22941	#[inline(always)]
22942	fn glVertexAttribL2dv(&self, index: GLuint, v: *const GLdouble) -> Result<()> {
22943		#[cfg(feature = "catch_nullptr")]
22944		let ret = process_catch("glVertexAttribL2dv", catch_unwind(||(self.vertexattribl2dv)(index, v)));
22945		#[cfg(not(feature = "catch_nullptr"))]
22946		let ret = {(self.vertexattribl2dv)(index, v); Ok(())};
22947		#[cfg(feature = "diagnose")]
22948		if let Ok(ret) = ret {
22949			return to_result("glVertexAttribL2dv", ret, self.glGetError());
22950		} else {
22951			return ret
22952		}
22953		#[cfg(not(feature = "diagnose"))]
22954		return ret;
22955	}
22956	#[inline(always)]
22957	fn glVertexAttribL3dv(&self, index: GLuint, v: *const GLdouble) -> Result<()> {
22958		#[cfg(feature = "catch_nullptr")]
22959		let ret = process_catch("glVertexAttribL3dv", catch_unwind(||(self.vertexattribl3dv)(index, v)));
22960		#[cfg(not(feature = "catch_nullptr"))]
22961		let ret = {(self.vertexattribl3dv)(index, v); Ok(())};
22962		#[cfg(feature = "diagnose")]
22963		if let Ok(ret) = ret {
22964			return to_result("glVertexAttribL3dv", ret, self.glGetError());
22965		} else {
22966			return ret
22967		}
22968		#[cfg(not(feature = "diagnose"))]
22969		return ret;
22970	}
22971	#[inline(always)]
22972	fn glVertexAttribL4dv(&self, index: GLuint, v: *const GLdouble) -> Result<()> {
22973		#[cfg(feature = "catch_nullptr")]
22974		let ret = process_catch("glVertexAttribL4dv", catch_unwind(||(self.vertexattribl4dv)(index, v)));
22975		#[cfg(not(feature = "catch_nullptr"))]
22976		let ret = {(self.vertexattribl4dv)(index, v); Ok(())};
22977		#[cfg(feature = "diagnose")]
22978		if let Ok(ret) = ret {
22979			return to_result("glVertexAttribL4dv", ret, self.glGetError());
22980		} else {
22981			return ret
22982		}
22983		#[cfg(not(feature = "diagnose"))]
22984		return ret;
22985	}
22986	#[inline(always)]
22987	fn glVertexAttribLPointer(&self, index: GLuint, size: GLint, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()> {
22988		#[cfg(feature = "catch_nullptr")]
22989		let ret = process_catch("glVertexAttribLPointer", catch_unwind(||(self.vertexattriblpointer)(index, size, type_, stride, pointer)));
22990		#[cfg(not(feature = "catch_nullptr"))]
22991		let ret = {(self.vertexattriblpointer)(index, size, type_, stride, pointer); Ok(())};
22992		#[cfg(feature = "diagnose")]
22993		if let Ok(ret) = ret {
22994			return to_result("glVertexAttribLPointer", ret, self.glGetError());
22995		} else {
22996			return ret
22997		}
22998		#[cfg(not(feature = "diagnose"))]
22999		return ret;
23000	}
23001	#[inline(always)]
23002	fn glGetVertexAttribLdv(&self, index: GLuint, pname: GLenum, params: *mut GLdouble) -> Result<()> {
23003		#[cfg(feature = "catch_nullptr")]
23004		let ret = process_catch("glGetVertexAttribLdv", catch_unwind(||(self.getvertexattribldv)(index, pname, params)));
23005		#[cfg(not(feature = "catch_nullptr"))]
23006		let ret = {(self.getvertexattribldv)(index, pname, params); Ok(())};
23007		#[cfg(feature = "diagnose")]
23008		if let Ok(ret) = ret {
23009			return to_result("glGetVertexAttribLdv", ret, self.glGetError());
23010		} else {
23011			return ret
23012		}
23013		#[cfg(not(feature = "diagnose"))]
23014		return ret;
23015	}
23016	#[inline(always)]
23017	fn glViewportArrayv(&self, first: GLuint, count: GLsizei, v: *const GLfloat) -> Result<()> {
23018		#[cfg(feature = "catch_nullptr")]
23019		let ret = process_catch("glViewportArrayv", catch_unwind(||(self.viewportarrayv)(first, count, v)));
23020		#[cfg(not(feature = "catch_nullptr"))]
23021		let ret = {(self.viewportarrayv)(first, count, v); Ok(())};
23022		#[cfg(feature = "diagnose")]
23023		if let Ok(ret) = ret {
23024			return to_result("glViewportArrayv", ret, self.glGetError());
23025		} else {
23026			return ret
23027		}
23028		#[cfg(not(feature = "diagnose"))]
23029		return ret;
23030	}
23031	#[inline(always)]
23032	fn glViewportIndexedf(&self, index: GLuint, x: GLfloat, y: GLfloat, w: GLfloat, h: GLfloat) -> Result<()> {
23033		#[cfg(feature = "catch_nullptr")]
23034		let ret = process_catch("glViewportIndexedf", catch_unwind(||(self.viewportindexedf)(index, x, y, w, h)));
23035		#[cfg(not(feature = "catch_nullptr"))]
23036		let ret = {(self.viewportindexedf)(index, x, y, w, h); Ok(())};
23037		#[cfg(feature = "diagnose")]
23038		if let Ok(ret) = ret {
23039			return to_result("glViewportIndexedf", ret, self.glGetError());
23040		} else {
23041			return ret
23042		}
23043		#[cfg(not(feature = "diagnose"))]
23044		return ret;
23045	}
23046	#[inline(always)]
23047	fn glViewportIndexedfv(&self, index: GLuint, v: *const GLfloat) -> Result<()> {
23048		#[cfg(feature = "catch_nullptr")]
23049		let ret = process_catch("glViewportIndexedfv", catch_unwind(||(self.viewportindexedfv)(index, v)));
23050		#[cfg(not(feature = "catch_nullptr"))]
23051		let ret = {(self.viewportindexedfv)(index, v); Ok(())};
23052		#[cfg(feature = "diagnose")]
23053		if let Ok(ret) = ret {
23054			return to_result("glViewportIndexedfv", ret, self.glGetError());
23055		} else {
23056			return ret
23057		}
23058		#[cfg(not(feature = "diagnose"))]
23059		return ret;
23060	}
23061	#[inline(always)]
23062	fn glScissorArrayv(&self, first: GLuint, count: GLsizei, v: *const GLint) -> Result<()> {
23063		#[cfg(feature = "catch_nullptr")]
23064		let ret = process_catch("glScissorArrayv", catch_unwind(||(self.scissorarrayv)(first, count, v)));
23065		#[cfg(not(feature = "catch_nullptr"))]
23066		let ret = {(self.scissorarrayv)(first, count, v); Ok(())};
23067		#[cfg(feature = "diagnose")]
23068		if let Ok(ret) = ret {
23069			return to_result("glScissorArrayv", ret, self.glGetError());
23070		} else {
23071			return ret
23072		}
23073		#[cfg(not(feature = "diagnose"))]
23074		return ret;
23075	}
23076	#[inline(always)]
23077	fn glScissorIndexed(&self, index: GLuint, left: GLint, bottom: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
23078		#[cfg(feature = "catch_nullptr")]
23079		let ret = process_catch("glScissorIndexed", catch_unwind(||(self.scissorindexed)(index, left, bottom, width, height)));
23080		#[cfg(not(feature = "catch_nullptr"))]
23081		let ret = {(self.scissorindexed)(index, left, bottom, width, height); Ok(())};
23082		#[cfg(feature = "diagnose")]
23083		if let Ok(ret) = ret {
23084			return to_result("glScissorIndexed", ret, self.glGetError());
23085		} else {
23086			return ret
23087		}
23088		#[cfg(not(feature = "diagnose"))]
23089		return ret;
23090	}
23091	#[inline(always)]
23092	fn glScissorIndexedv(&self, index: GLuint, v: *const GLint) -> Result<()> {
23093		#[cfg(feature = "catch_nullptr")]
23094		let ret = process_catch("glScissorIndexedv", catch_unwind(||(self.scissorindexedv)(index, v)));
23095		#[cfg(not(feature = "catch_nullptr"))]
23096		let ret = {(self.scissorindexedv)(index, v); Ok(())};
23097		#[cfg(feature = "diagnose")]
23098		if let Ok(ret) = ret {
23099			return to_result("glScissorIndexedv", ret, self.glGetError());
23100		} else {
23101			return ret
23102		}
23103		#[cfg(not(feature = "diagnose"))]
23104		return ret;
23105	}
23106	#[inline(always)]
23107	fn glDepthRangeArrayv(&self, first: GLuint, count: GLsizei, v: *const GLdouble) -> Result<()> {
23108		#[cfg(feature = "catch_nullptr")]
23109		let ret = process_catch("glDepthRangeArrayv", catch_unwind(||(self.depthrangearrayv)(first, count, v)));
23110		#[cfg(not(feature = "catch_nullptr"))]
23111		let ret = {(self.depthrangearrayv)(first, count, v); Ok(())};
23112		#[cfg(feature = "diagnose")]
23113		if let Ok(ret) = ret {
23114			return to_result("glDepthRangeArrayv", ret, self.glGetError());
23115		} else {
23116			return ret
23117		}
23118		#[cfg(not(feature = "diagnose"))]
23119		return ret;
23120	}
23121	#[inline(always)]
23122	fn glDepthRangeIndexed(&self, index: GLuint, n: GLdouble, f: GLdouble) -> Result<()> {
23123		#[cfg(feature = "catch_nullptr")]
23124		let ret = process_catch("glDepthRangeIndexed", catch_unwind(||(self.depthrangeindexed)(index, n, f)));
23125		#[cfg(not(feature = "catch_nullptr"))]
23126		let ret = {(self.depthrangeindexed)(index, n, f); Ok(())};
23127		#[cfg(feature = "diagnose")]
23128		if let Ok(ret) = ret {
23129			return to_result("glDepthRangeIndexed", ret, self.glGetError());
23130		} else {
23131			return ret
23132		}
23133		#[cfg(not(feature = "diagnose"))]
23134		return ret;
23135	}
23136	#[inline(always)]
23137	fn glGetFloati_v(&self, target: GLenum, index: GLuint, data: *mut GLfloat) -> Result<()> {
23138		#[cfg(feature = "catch_nullptr")]
23139		let ret = process_catch("glGetFloati_v", catch_unwind(||(self.getfloati_v)(target, index, data)));
23140		#[cfg(not(feature = "catch_nullptr"))]
23141		let ret = {(self.getfloati_v)(target, index, data); Ok(())};
23142		#[cfg(feature = "diagnose")]
23143		if let Ok(ret) = ret {
23144			return to_result("glGetFloati_v", ret, self.glGetError());
23145		} else {
23146			return ret
23147		}
23148		#[cfg(not(feature = "diagnose"))]
23149		return ret;
23150	}
23151	#[inline(always)]
23152	fn glGetDoublei_v(&self, target: GLenum, index: GLuint, data: *mut GLdouble) -> Result<()> {
23153		#[cfg(feature = "catch_nullptr")]
23154		let ret = process_catch("glGetDoublei_v", catch_unwind(||(self.getdoublei_v)(target, index, data)));
23155		#[cfg(not(feature = "catch_nullptr"))]
23156		let ret = {(self.getdoublei_v)(target, index, data); Ok(())};
23157		#[cfg(feature = "diagnose")]
23158		if let Ok(ret) = ret {
23159			return to_result("glGetDoublei_v", ret, self.glGetError());
23160		} else {
23161			return ret
23162		}
23163		#[cfg(not(feature = "diagnose"))]
23164		return ret;
23165	}
23166}
23167
23168impl Version41 {
23169	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
23170		let (_spec, major, minor, release) = base.get_version();
23171		if (major, minor, release) < (4, 1, 0) {
23172			return Self::default();
23173		}
23174		Self {
23175			available: true,
23176			geterror: {let proc = get_proc_address("glGetError"); if proc.is_null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
23177			releaseshadercompiler: {let proc = get_proc_address("glReleaseShaderCompiler"); if proc.is_null() {dummy_pfnglreleaseshadercompilerproc} else {unsafe{transmute(proc)}}},
23178			shaderbinary: {let proc = get_proc_address("glShaderBinary"); if proc.is_null() {dummy_pfnglshaderbinaryproc} else {unsafe{transmute(proc)}}},
23179			getshaderprecisionformat: {let proc = get_proc_address("glGetShaderPrecisionFormat"); if proc.is_null() {dummy_pfnglgetshaderprecisionformatproc} else {unsafe{transmute(proc)}}},
23180			depthrangef: {let proc = get_proc_address("glDepthRangef"); if proc.is_null() {dummy_pfngldepthrangefproc} else {unsafe{transmute(proc)}}},
23181			cleardepthf: {let proc = get_proc_address("glClearDepthf"); if proc.is_null() {dummy_pfnglcleardepthfproc} else {unsafe{transmute(proc)}}},
23182			getprogrambinary: {let proc = get_proc_address("glGetProgramBinary"); if proc.is_null() {dummy_pfnglgetprogrambinaryproc} else {unsafe{transmute(proc)}}},
23183			programbinary: {let proc = get_proc_address("glProgramBinary"); if proc.is_null() {dummy_pfnglprogrambinaryproc} else {unsafe{transmute(proc)}}},
23184			programparameteri: {let proc = get_proc_address("glProgramParameteri"); if proc.is_null() {dummy_pfnglprogramparameteriproc} else {unsafe{transmute(proc)}}},
23185			useprogramstages: {let proc = get_proc_address("glUseProgramStages"); if proc.is_null() {dummy_pfngluseprogramstagesproc} else {unsafe{transmute(proc)}}},
23186			activeshaderprogram: {let proc = get_proc_address("glActiveShaderProgram"); if proc.is_null() {dummy_pfnglactiveshaderprogramproc} else {unsafe{transmute(proc)}}},
23187			createshaderprogramv: {let proc = get_proc_address("glCreateShaderProgramv"); if proc.is_null() {dummy_pfnglcreateshaderprogramvproc} else {unsafe{transmute(proc)}}},
23188			bindprogrampipeline: {let proc = get_proc_address("glBindProgramPipeline"); if proc.is_null() {dummy_pfnglbindprogrampipelineproc} else {unsafe{transmute(proc)}}},
23189			deleteprogrampipelines: {let proc = get_proc_address("glDeleteProgramPipelines"); if proc.is_null() {dummy_pfngldeleteprogrampipelinesproc} else {unsafe{transmute(proc)}}},
23190			genprogrampipelines: {let proc = get_proc_address("glGenProgramPipelines"); if proc.is_null() {dummy_pfnglgenprogrampipelinesproc} else {unsafe{transmute(proc)}}},
23191			isprogrampipeline: {let proc = get_proc_address("glIsProgramPipeline"); if proc.is_null() {dummy_pfnglisprogrampipelineproc} else {unsafe{transmute(proc)}}},
23192			getprogrampipelineiv: {let proc = get_proc_address("glGetProgramPipelineiv"); if proc.is_null() {dummy_pfnglgetprogrampipelineivproc} else {unsafe{transmute(proc)}}},
23193			programuniform1i: {let proc = get_proc_address("glProgramUniform1i"); if proc.is_null() {dummy_pfnglprogramuniform1iproc} else {unsafe{transmute(proc)}}},
23194			programuniform1iv: {let proc = get_proc_address("glProgramUniform1iv"); if proc.is_null() {dummy_pfnglprogramuniform1ivproc} else {unsafe{transmute(proc)}}},
23195			programuniform1f: {let proc = get_proc_address("glProgramUniform1f"); if proc.is_null() {dummy_pfnglprogramuniform1fproc} else {unsafe{transmute(proc)}}},
23196			programuniform1fv: {let proc = get_proc_address("glProgramUniform1fv"); if proc.is_null() {dummy_pfnglprogramuniform1fvproc} else {unsafe{transmute(proc)}}},
23197			programuniform1d: {let proc = get_proc_address("glProgramUniform1d"); if proc.is_null() {dummy_pfnglprogramuniform1dproc} else {unsafe{transmute(proc)}}},
23198			programuniform1dv: {let proc = get_proc_address("glProgramUniform1dv"); if proc.is_null() {dummy_pfnglprogramuniform1dvproc} else {unsafe{transmute(proc)}}},
23199			programuniform1ui: {let proc = get_proc_address("glProgramUniform1ui"); if proc.is_null() {dummy_pfnglprogramuniform1uiproc} else {unsafe{transmute(proc)}}},
23200			programuniform1uiv: {let proc = get_proc_address("glProgramUniform1uiv"); if proc.is_null() {dummy_pfnglprogramuniform1uivproc} else {unsafe{transmute(proc)}}},
23201			programuniform2i: {let proc = get_proc_address("glProgramUniform2i"); if proc.is_null() {dummy_pfnglprogramuniform2iproc} else {unsafe{transmute(proc)}}},
23202			programuniform2iv: {let proc = get_proc_address("glProgramUniform2iv"); if proc.is_null() {dummy_pfnglprogramuniform2ivproc} else {unsafe{transmute(proc)}}},
23203			programuniform2f: {let proc = get_proc_address("glProgramUniform2f"); if proc.is_null() {dummy_pfnglprogramuniform2fproc} else {unsafe{transmute(proc)}}},
23204			programuniform2fv: {let proc = get_proc_address("glProgramUniform2fv"); if proc.is_null() {dummy_pfnglprogramuniform2fvproc} else {unsafe{transmute(proc)}}},
23205			programuniform2d: {let proc = get_proc_address("glProgramUniform2d"); if proc.is_null() {dummy_pfnglprogramuniform2dproc} else {unsafe{transmute(proc)}}},
23206			programuniform2dv: {let proc = get_proc_address("glProgramUniform2dv"); if proc.is_null() {dummy_pfnglprogramuniform2dvproc} else {unsafe{transmute(proc)}}},
23207			programuniform2ui: {let proc = get_proc_address("glProgramUniform2ui"); if proc.is_null() {dummy_pfnglprogramuniform2uiproc} else {unsafe{transmute(proc)}}},
23208			programuniform2uiv: {let proc = get_proc_address("glProgramUniform2uiv"); if proc.is_null() {dummy_pfnglprogramuniform2uivproc} else {unsafe{transmute(proc)}}},
23209			programuniform3i: {let proc = get_proc_address("glProgramUniform3i"); if proc.is_null() {dummy_pfnglprogramuniform3iproc} else {unsafe{transmute(proc)}}},
23210			programuniform3iv: {let proc = get_proc_address("glProgramUniform3iv"); if proc.is_null() {dummy_pfnglprogramuniform3ivproc} else {unsafe{transmute(proc)}}},
23211			programuniform3f: {let proc = get_proc_address("glProgramUniform3f"); if proc.is_null() {dummy_pfnglprogramuniform3fproc} else {unsafe{transmute(proc)}}},
23212			programuniform3fv: {let proc = get_proc_address("glProgramUniform3fv"); if proc.is_null() {dummy_pfnglprogramuniform3fvproc} else {unsafe{transmute(proc)}}},
23213			programuniform3d: {let proc = get_proc_address("glProgramUniform3d"); if proc.is_null() {dummy_pfnglprogramuniform3dproc} else {unsafe{transmute(proc)}}},
23214			programuniform3dv: {let proc = get_proc_address("glProgramUniform3dv"); if proc.is_null() {dummy_pfnglprogramuniform3dvproc} else {unsafe{transmute(proc)}}},
23215			programuniform3ui: {let proc = get_proc_address("glProgramUniform3ui"); if proc.is_null() {dummy_pfnglprogramuniform3uiproc} else {unsafe{transmute(proc)}}},
23216			programuniform3uiv: {let proc = get_proc_address("glProgramUniform3uiv"); if proc.is_null() {dummy_pfnglprogramuniform3uivproc} else {unsafe{transmute(proc)}}},
23217			programuniform4i: {let proc = get_proc_address("glProgramUniform4i"); if proc.is_null() {dummy_pfnglprogramuniform4iproc} else {unsafe{transmute(proc)}}},
23218			programuniform4iv: {let proc = get_proc_address("glProgramUniform4iv"); if proc.is_null() {dummy_pfnglprogramuniform4ivproc} else {unsafe{transmute(proc)}}},
23219			programuniform4f: {let proc = get_proc_address("glProgramUniform4f"); if proc.is_null() {dummy_pfnglprogramuniform4fproc} else {unsafe{transmute(proc)}}},
23220			programuniform4fv: {let proc = get_proc_address("glProgramUniform4fv"); if proc.is_null() {dummy_pfnglprogramuniform4fvproc} else {unsafe{transmute(proc)}}},
23221			programuniform4d: {let proc = get_proc_address("glProgramUniform4d"); if proc.is_null() {dummy_pfnglprogramuniform4dproc} else {unsafe{transmute(proc)}}},
23222			programuniform4dv: {let proc = get_proc_address("glProgramUniform4dv"); if proc.is_null() {dummy_pfnglprogramuniform4dvproc} else {unsafe{transmute(proc)}}},
23223			programuniform4ui: {let proc = get_proc_address("glProgramUniform4ui"); if proc.is_null() {dummy_pfnglprogramuniform4uiproc} else {unsafe{transmute(proc)}}},
23224			programuniform4uiv: {let proc = get_proc_address("glProgramUniform4uiv"); if proc.is_null() {dummy_pfnglprogramuniform4uivproc} else {unsafe{transmute(proc)}}},
23225			programuniformmatrix2fv: {let proc = get_proc_address("glProgramUniformMatrix2fv"); if proc.is_null() {dummy_pfnglprogramuniformmatrix2fvproc} else {unsafe{transmute(proc)}}},
23226			programuniformmatrix3fv: {let proc = get_proc_address("glProgramUniformMatrix3fv"); if proc.is_null() {dummy_pfnglprogramuniformmatrix3fvproc} else {unsafe{transmute(proc)}}},
23227			programuniformmatrix4fv: {let proc = get_proc_address("glProgramUniformMatrix4fv"); if proc.is_null() {dummy_pfnglprogramuniformmatrix4fvproc} else {unsafe{transmute(proc)}}},
23228			programuniformmatrix2dv: {let proc = get_proc_address("glProgramUniformMatrix2dv"); if proc.is_null() {dummy_pfnglprogramuniformmatrix2dvproc} else {unsafe{transmute(proc)}}},
23229			programuniformmatrix3dv: {let proc = get_proc_address("glProgramUniformMatrix3dv"); if proc.is_null() {dummy_pfnglprogramuniformmatrix3dvproc} else {unsafe{transmute(proc)}}},
23230			programuniformmatrix4dv: {let proc = get_proc_address("glProgramUniformMatrix4dv"); if proc.is_null() {dummy_pfnglprogramuniformmatrix4dvproc} else {unsafe{transmute(proc)}}},
23231			programuniformmatrix2x3fv: {let proc = get_proc_address("glProgramUniformMatrix2x3fv"); if proc.is_null() {dummy_pfnglprogramuniformmatrix2x3fvproc} else {unsafe{transmute(proc)}}},
23232			programuniformmatrix3x2fv: {let proc = get_proc_address("glProgramUniformMatrix3x2fv"); if proc.is_null() {dummy_pfnglprogramuniformmatrix3x2fvproc} else {unsafe{transmute(proc)}}},
23233			programuniformmatrix2x4fv: {let proc = get_proc_address("glProgramUniformMatrix2x4fv"); if proc.is_null() {dummy_pfnglprogramuniformmatrix2x4fvproc} else {unsafe{transmute(proc)}}},
23234			programuniformmatrix4x2fv: {let proc = get_proc_address("glProgramUniformMatrix4x2fv"); if proc.is_null() {dummy_pfnglprogramuniformmatrix4x2fvproc} else {unsafe{transmute(proc)}}},
23235			programuniformmatrix3x4fv: {let proc = get_proc_address("glProgramUniformMatrix3x4fv"); if proc.is_null() {dummy_pfnglprogramuniformmatrix3x4fvproc} else {unsafe{transmute(proc)}}},
23236			programuniformmatrix4x3fv: {let proc = get_proc_address("glProgramUniformMatrix4x3fv"); if proc.is_null() {dummy_pfnglprogramuniformmatrix4x3fvproc} else {unsafe{transmute(proc)}}},
23237			programuniformmatrix2x3dv: {let proc = get_proc_address("glProgramUniformMatrix2x3dv"); if proc.is_null() {dummy_pfnglprogramuniformmatrix2x3dvproc} else {unsafe{transmute(proc)}}},
23238			programuniformmatrix3x2dv: {let proc = get_proc_address("glProgramUniformMatrix3x2dv"); if proc.is_null() {dummy_pfnglprogramuniformmatrix3x2dvproc} else {unsafe{transmute(proc)}}},
23239			programuniformmatrix2x4dv: {let proc = get_proc_address("glProgramUniformMatrix2x4dv"); if proc.is_null() {dummy_pfnglprogramuniformmatrix2x4dvproc} else {unsafe{transmute(proc)}}},
23240			programuniformmatrix4x2dv: {let proc = get_proc_address("glProgramUniformMatrix4x2dv"); if proc.is_null() {dummy_pfnglprogramuniformmatrix4x2dvproc} else {unsafe{transmute(proc)}}},
23241			programuniformmatrix3x4dv: {let proc = get_proc_address("glProgramUniformMatrix3x4dv"); if proc.is_null() {dummy_pfnglprogramuniformmatrix3x4dvproc} else {unsafe{transmute(proc)}}},
23242			programuniformmatrix4x3dv: {let proc = get_proc_address("glProgramUniformMatrix4x3dv"); if proc.is_null() {dummy_pfnglprogramuniformmatrix4x3dvproc} else {unsafe{transmute(proc)}}},
23243			validateprogrampipeline: {let proc = get_proc_address("glValidateProgramPipeline"); if proc.is_null() {dummy_pfnglvalidateprogrampipelineproc} else {unsafe{transmute(proc)}}},
23244			getprogrampipelineinfolog: {let proc = get_proc_address("glGetProgramPipelineInfoLog"); if proc.is_null() {dummy_pfnglgetprogrampipelineinfologproc} else {unsafe{transmute(proc)}}},
23245			vertexattribl1d: {let proc = get_proc_address("glVertexAttribL1d"); if proc.is_null() {dummy_pfnglvertexattribl1dproc} else {unsafe{transmute(proc)}}},
23246			vertexattribl2d: {let proc = get_proc_address("glVertexAttribL2d"); if proc.is_null() {dummy_pfnglvertexattribl2dproc} else {unsafe{transmute(proc)}}},
23247			vertexattribl3d: {let proc = get_proc_address("glVertexAttribL3d"); if proc.is_null() {dummy_pfnglvertexattribl3dproc} else {unsafe{transmute(proc)}}},
23248			vertexattribl4d: {let proc = get_proc_address("glVertexAttribL4d"); if proc.is_null() {dummy_pfnglvertexattribl4dproc} else {unsafe{transmute(proc)}}},
23249			vertexattribl1dv: {let proc = get_proc_address("glVertexAttribL1dv"); if proc.is_null() {dummy_pfnglvertexattribl1dvproc} else {unsafe{transmute(proc)}}},
23250			vertexattribl2dv: {let proc = get_proc_address("glVertexAttribL2dv"); if proc.is_null() {dummy_pfnglvertexattribl2dvproc} else {unsafe{transmute(proc)}}},
23251			vertexattribl3dv: {let proc = get_proc_address("glVertexAttribL3dv"); if proc.is_null() {dummy_pfnglvertexattribl3dvproc} else {unsafe{transmute(proc)}}},
23252			vertexattribl4dv: {let proc = get_proc_address("glVertexAttribL4dv"); if proc.is_null() {dummy_pfnglvertexattribl4dvproc} else {unsafe{transmute(proc)}}},
23253			vertexattriblpointer: {let proc = get_proc_address("glVertexAttribLPointer"); if proc.is_null() {dummy_pfnglvertexattriblpointerproc} else {unsafe{transmute(proc)}}},
23254			getvertexattribldv: {let proc = get_proc_address("glGetVertexAttribLdv"); if proc.is_null() {dummy_pfnglgetvertexattribldvproc} else {unsafe{transmute(proc)}}},
23255			viewportarrayv: {let proc = get_proc_address("glViewportArrayv"); if proc.is_null() {dummy_pfnglviewportarrayvproc} else {unsafe{transmute(proc)}}},
23256			viewportindexedf: {let proc = get_proc_address("glViewportIndexedf"); if proc.is_null() {dummy_pfnglviewportindexedfproc} else {unsafe{transmute(proc)}}},
23257			viewportindexedfv: {let proc = get_proc_address("glViewportIndexedfv"); if proc.is_null() {dummy_pfnglviewportindexedfvproc} else {unsafe{transmute(proc)}}},
23258			scissorarrayv: {let proc = get_proc_address("glScissorArrayv"); if proc.is_null() {dummy_pfnglscissorarrayvproc} else {unsafe{transmute(proc)}}},
23259			scissorindexed: {let proc = get_proc_address("glScissorIndexed"); if proc.is_null() {dummy_pfnglscissorindexedproc} else {unsafe{transmute(proc)}}},
23260			scissorindexedv: {let proc = get_proc_address("glScissorIndexedv"); if proc.is_null() {dummy_pfnglscissorindexedvproc} else {unsafe{transmute(proc)}}},
23261			depthrangearrayv: {let proc = get_proc_address("glDepthRangeArrayv"); if proc.is_null() {dummy_pfngldepthrangearrayvproc} else {unsafe{transmute(proc)}}},
23262			depthrangeindexed: {let proc = get_proc_address("glDepthRangeIndexed"); if proc.is_null() {dummy_pfngldepthrangeindexedproc} else {unsafe{transmute(proc)}}},
23263			getfloati_v: {let proc = get_proc_address("glGetFloati_v"); if proc.is_null() {dummy_pfnglgetfloati_vproc} else {unsafe{transmute(proc)}}},
23264			getdoublei_v: {let proc = get_proc_address("glGetDoublei_v"); if proc.is_null() {dummy_pfnglgetdoublei_vproc} else {unsafe{transmute(proc)}}},
23265		}
23266	}
23267	#[inline(always)]
23268	pub fn get_available(&self) -> bool {
23269		self.available
23270	}
23271}
23272
23273impl Default for Version41 {
23274	fn default() -> Self {
23275		Self {
23276			available: false,
23277			geterror: dummy_pfnglgeterrorproc,
23278			releaseshadercompiler: dummy_pfnglreleaseshadercompilerproc,
23279			shaderbinary: dummy_pfnglshaderbinaryproc,
23280			getshaderprecisionformat: dummy_pfnglgetshaderprecisionformatproc,
23281			depthrangef: dummy_pfngldepthrangefproc,
23282			cleardepthf: dummy_pfnglcleardepthfproc,
23283			getprogrambinary: dummy_pfnglgetprogrambinaryproc,
23284			programbinary: dummy_pfnglprogrambinaryproc,
23285			programparameteri: dummy_pfnglprogramparameteriproc,
23286			useprogramstages: dummy_pfngluseprogramstagesproc,
23287			activeshaderprogram: dummy_pfnglactiveshaderprogramproc,
23288			createshaderprogramv: dummy_pfnglcreateshaderprogramvproc,
23289			bindprogrampipeline: dummy_pfnglbindprogrampipelineproc,
23290			deleteprogrampipelines: dummy_pfngldeleteprogrampipelinesproc,
23291			genprogrampipelines: dummy_pfnglgenprogrampipelinesproc,
23292			isprogrampipeline: dummy_pfnglisprogrampipelineproc,
23293			getprogrampipelineiv: dummy_pfnglgetprogrampipelineivproc,
23294			programuniform1i: dummy_pfnglprogramuniform1iproc,
23295			programuniform1iv: dummy_pfnglprogramuniform1ivproc,
23296			programuniform1f: dummy_pfnglprogramuniform1fproc,
23297			programuniform1fv: dummy_pfnglprogramuniform1fvproc,
23298			programuniform1d: dummy_pfnglprogramuniform1dproc,
23299			programuniform1dv: dummy_pfnglprogramuniform1dvproc,
23300			programuniform1ui: dummy_pfnglprogramuniform1uiproc,
23301			programuniform1uiv: dummy_pfnglprogramuniform1uivproc,
23302			programuniform2i: dummy_pfnglprogramuniform2iproc,
23303			programuniform2iv: dummy_pfnglprogramuniform2ivproc,
23304			programuniform2f: dummy_pfnglprogramuniform2fproc,
23305			programuniform2fv: dummy_pfnglprogramuniform2fvproc,
23306			programuniform2d: dummy_pfnglprogramuniform2dproc,
23307			programuniform2dv: dummy_pfnglprogramuniform2dvproc,
23308			programuniform2ui: dummy_pfnglprogramuniform2uiproc,
23309			programuniform2uiv: dummy_pfnglprogramuniform2uivproc,
23310			programuniform3i: dummy_pfnglprogramuniform3iproc,
23311			programuniform3iv: dummy_pfnglprogramuniform3ivproc,
23312			programuniform3f: dummy_pfnglprogramuniform3fproc,
23313			programuniform3fv: dummy_pfnglprogramuniform3fvproc,
23314			programuniform3d: dummy_pfnglprogramuniform3dproc,
23315			programuniform3dv: dummy_pfnglprogramuniform3dvproc,
23316			programuniform3ui: dummy_pfnglprogramuniform3uiproc,
23317			programuniform3uiv: dummy_pfnglprogramuniform3uivproc,
23318			programuniform4i: dummy_pfnglprogramuniform4iproc,
23319			programuniform4iv: dummy_pfnglprogramuniform4ivproc,
23320			programuniform4f: dummy_pfnglprogramuniform4fproc,
23321			programuniform4fv: dummy_pfnglprogramuniform4fvproc,
23322			programuniform4d: dummy_pfnglprogramuniform4dproc,
23323			programuniform4dv: dummy_pfnglprogramuniform4dvproc,
23324			programuniform4ui: dummy_pfnglprogramuniform4uiproc,
23325			programuniform4uiv: dummy_pfnglprogramuniform4uivproc,
23326			programuniformmatrix2fv: dummy_pfnglprogramuniformmatrix2fvproc,
23327			programuniformmatrix3fv: dummy_pfnglprogramuniformmatrix3fvproc,
23328			programuniformmatrix4fv: dummy_pfnglprogramuniformmatrix4fvproc,
23329			programuniformmatrix2dv: dummy_pfnglprogramuniformmatrix2dvproc,
23330			programuniformmatrix3dv: dummy_pfnglprogramuniformmatrix3dvproc,
23331			programuniformmatrix4dv: dummy_pfnglprogramuniformmatrix4dvproc,
23332			programuniformmatrix2x3fv: dummy_pfnglprogramuniformmatrix2x3fvproc,
23333			programuniformmatrix3x2fv: dummy_pfnglprogramuniformmatrix3x2fvproc,
23334			programuniformmatrix2x4fv: dummy_pfnglprogramuniformmatrix2x4fvproc,
23335			programuniformmatrix4x2fv: dummy_pfnglprogramuniformmatrix4x2fvproc,
23336			programuniformmatrix3x4fv: dummy_pfnglprogramuniformmatrix3x4fvproc,
23337			programuniformmatrix4x3fv: dummy_pfnglprogramuniformmatrix4x3fvproc,
23338			programuniformmatrix2x3dv: dummy_pfnglprogramuniformmatrix2x3dvproc,
23339			programuniformmatrix3x2dv: dummy_pfnglprogramuniformmatrix3x2dvproc,
23340			programuniformmatrix2x4dv: dummy_pfnglprogramuniformmatrix2x4dvproc,
23341			programuniformmatrix4x2dv: dummy_pfnglprogramuniformmatrix4x2dvproc,
23342			programuniformmatrix3x4dv: dummy_pfnglprogramuniformmatrix3x4dvproc,
23343			programuniformmatrix4x3dv: dummy_pfnglprogramuniformmatrix4x3dvproc,
23344			validateprogrampipeline: dummy_pfnglvalidateprogrampipelineproc,
23345			getprogrampipelineinfolog: dummy_pfnglgetprogrampipelineinfologproc,
23346			vertexattribl1d: dummy_pfnglvertexattribl1dproc,
23347			vertexattribl2d: dummy_pfnglvertexattribl2dproc,
23348			vertexattribl3d: dummy_pfnglvertexattribl3dproc,
23349			vertexattribl4d: dummy_pfnglvertexattribl4dproc,
23350			vertexattribl1dv: dummy_pfnglvertexattribl1dvproc,
23351			vertexattribl2dv: dummy_pfnglvertexattribl2dvproc,
23352			vertexattribl3dv: dummy_pfnglvertexattribl3dvproc,
23353			vertexattribl4dv: dummy_pfnglvertexattribl4dvproc,
23354			vertexattriblpointer: dummy_pfnglvertexattriblpointerproc,
23355			getvertexattribldv: dummy_pfnglgetvertexattribldvproc,
23356			viewportarrayv: dummy_pfnglviewportarrayvproc,
23357			viewportindexedf: dummy_pfnglviewportindexedfproc,
23358			viewportindexedfv: dummy_pfnglviewportindexedfvproc,
23359			scissorarrayv: dummy_pfnglscissorarrayvproc,
23360			scissorindexed: dummy_pfnglscissorindexedproc,
23361			scissorindexedv: dummy_pfnglscissorindexedvproc,
23362			depthrangearrayv: dummy_pfngldepthrangearrayvproc,
23363			depthrangeindexed: dummy_pfngldepthrangeindexedproc,
23364			getfloati_v: dummy_pfnglgetfloati_vproc,
23365			getdoublei_v: dummy_pfnglgetdoublei_vproc,
23366		}
23367	}
23368}
23369impl Debug for Version41 {
23370	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
23371		if self.available {
23372			f.debug_struct("Version41")
23373			.field("available", &self.available)
23374			.field("releaseshadercompiler", unsafe{if transmute::<_, *const c_void>(self.releaseshadercompiler) == (dummy_pfnglreleaseshadercompilerproc as *const c_void) {&null::<PFNGLRELEASESHADERCOMPILERPROC>()} else {&self.releaseshadercompiler}})
23375			.field("shaderbinary", unsafe{if transmute::<_, *const c_void>(self.shaderbinary) == (dummy_pfnglshaderbinaryproc as *const c_void) {&null::<PFNGLSHADERBINARYPROC>()} else {&self.shaderbinary}})
23376			.field("getshaderprecisionformat", unsafe{if transmute::<_, *const c_void>(self.getshaderprecisionformat) == (dummy_pfnglgetshaderprecisionformatproc as *const c_void) {&null::<PFNGLGETSHADERPRECISIONFORMATPROC>()} else {&self.getshaderprecisionformat}})
23377			.field("depthrangef", unsafe{if transmute::<_, *const c_void>(self.depthrangef) == (dummy_pfngldepthrangefproc as *const c_void) {&null::<PFNGLDEPTHRANGEFPROC>()} else {&self.depthrangef}})
23378			.field("cleardepthf", unsafe{if transmute::<_, *const c_void>(self.cleardepthf) == (dummy_pfnglcleardepthfproc as *const c_void) {&null::<PFNGLCLEARDEPTHFPROC>()} else {&self.cleardepthf}})
23379			.field("getprogrambinary", unsafe{if transmute::<_, *const c_void>(self.getprogrambinary) == (dummy_pfnglgetprogrambinaryproc as *const c_void) {&null::<PFNGLGETPROGRAMBINARYPROC>()} else {&self.getprogrambinary}})
23380			.field("programbinary", unsafe{if transmute::<_, *const c_void>(self.programbinary) == (dummy_pfnglprogrambinaryproc as *const c_void) {&null::<PFNGLPROGRAMBINARYPROC>()} else {&self.programbinary}})
23381			.field("programparameteri", unsafe{if transmute::<_, *const c_void>(self.programparameteri) == (dummy_pfnglprogramparameteriproc as *const c_void) {&null::<PFNGLPROGRAMPARAMETERIPROC>()} else {&self.programparameteri}})
23382			.field("useprogramstages", unsafe{if transmute::<_, *const c_void>(self.useprogramstages) == (dummy_pfngluseprogramstagesproc as *const c_void) {&null::<PFNGLUSEPROGRAMSTAGESPROC>()} else {&self.useprogramstages}})
23383			.field("activeshaderprogram", unsafe{if transmute::<_, *const c_void>(self.activeshaderprogram) == (dummy_pfnglactiveshaderprogramproc as *const c_void) {&null::<PFNGLACTIVESHADERPROGRAMPROC>()} else {&self.activeshaderprogram}})
23384			.field("createshaderprogramv", unsafe{if transmute::<_, *const c_void>(self.createshaderprogramv) == (dummy_pfnglcreateshaderprogramvproc as *const c_void) {&null::<PFNGLCREATESHADERPROGRAMVPROC>()} else {&self.createshaderprogramv}})
23385			.field("bindprogrampipeline", unsafe{if transmute::<_, *const c_void>(self.bindprogrampipeline) == (dummy_pfnglbindprogrampipelineproc as *const c_void) {&null::<PFNGLBINDPROGRAMPIPELINEPROC>()} else {&self.bindprogrampipeline}})
23386			.field("deleteprogrampipelines", unsafe{if transmute::<_, *const c_void>(self.deleteprogrampipelines) == (dummy_pfngldeleteprogrampipelinesproc as *const c_void) {&null::<PFNGLDELETEPROGRAMPIPELINESPROC>()} else {&self.deleteprogrampipelines}})
23387			.field("genprogrampipelines", unsafe{if transmute::<_, *const c_void>(self.genprogrampipelines) == (dummy_pfnglgenprogrampipelinesproc as *const c_void) {&null::<PFNGLGENPROGRAMPIPELINESPROC>()} else {&self.genprogrampipelines}})
23388			.field("isprogrampipeline", unsafe{if transmute::<_, *const c_void>(self.isprogrampipeline) == (dummy_pfnglisprogrampipelineproc as *const c_void) {&null::<PFNGLISPROGRAMPIPELINEPROC>()} else {&self.isprogrampipeline}})
23389			.field("getprogrampipelineiv", unsafe{if transmute::<_, *const c_void>(self.getprogrampipelineiv) == (dummy_pfnglgetprogrampipelineivproc as *const c_void) {&null::<PFNGLGETPROGRAMPIPELINEIVPROC>()} else {&self.getprogrampipelineiv}})
23390			.field("programuniform1i", unsafe{if transmute::<_, *const c_void>(self.programuniform1i) == (dummy_pfnglprogramuniform1iproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM1IPROC>()} else {&self.programuniform1i}})
23391			.field("programuniform1iv", unsafe{if transmute::<_, *const c_void>(self.programuniform1iv) == (dummy_pfnglprogramuniform1ivproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM1IVPROC>()} else {&self.programuniform1iv}})
23392			.field("programuniform1f", unsafe{if transmute::<_, *const c_void>(self.programuniform1f) == (dummy_pfnglprogramuniform1fproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM1FPROC>()} else {&self.programuniform1f}})
23393			.field("programuniform1fv", unsafe{if transmute::<_, *const c_void>(self.programuniform1fv) == (dummy_pfnglprogramuniform1fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM1FVPROC>()} else {&self.programuniform1fv}})
23394			.field("programuniform1d", unsafe{if transmute::<_, *const c_void>(self.programuniform1d) == (dummy_pfnglprogramuniform1dproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM1DPROC>()} else {&self.programuniform1d}})
23395			.field("programuniform1dv", unsafe{if transmute::<_, *const c_void>(self.programuniform1dv) == (dummy_pfnglprogramuniform1dvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM1DVPROC>()} else {&self.programuniform1dv}})
23396			.field("programuniform1ui", unsafe{if transmute::<_, *const c_void>(self.programuniform1ui) == (dummy_pfnglprogramuniform1uiproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM1UIPROC>()} else {&self.programuniform1ui}})
23397			.field("programuniform1uiv", unsafe{if transmute::<_, *const c_void>(self.programuniform1uiv) == (dummy_pfnglprogramuniform1uivproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM1UIVPROC>()} else {&self.programuniform1uiv}})
23398			.field("programuniform2i", unsafe{if transmute::<_, *const c_void>(self.programuniform2i) == (dummy_pfnglprogramuniform2iproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM2IPROC>()} else {&self.programuniform2i}})
23399			.field("programuniform2iv", unsafe{if transmute::<_, *const c_void>(self.programuniform2iv) == (dummy_pfnglprogramuniform2ivproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM2IVPROC>()} else {&self.programuniform2iv}})
23400			.field("programuniform2f", unsafe{if transmute::<_, *const c_void>(self.programuniform2f) == (dummy_pfnglprogramuniform2fproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM2FPROC>()} else {&self.programuniform2f}})
23401			.field("programuniform2fv", unsafe{if transmute::<_, *const c_void>(self.programuniform2fv) == (dummy_pfnglprogramuniform2fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM2FVPROC>()} else {&self.programuniform2fv}})
23402			.field("programuniform2d", unsafe{if transmute::<_, *const c_void>(self.programuniform2d) == (dummy_pfnglprogramuniform2dproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM2DPROC>()} else {&self.programuniform2d}})
23403			.field("programuniform2dv", unsafe{if transmute::<_, *const c_void>(self.programuniform2dv) == (dummy_pfnglprogramuniform2dvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM2DVPROC>()} else {&self.programuniform2dv}})
23404			.field("programuniform2ui", unsafe{if transmute::<_, *const c_void>(self.programuniform2ui) == (dummy_pfnglprogramuniform2uiproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM2UIPROC>()} else {&self.programuniform2ui}})
23405			.field("programuniform2uiv", unsafe{if transmute::<_, *const c_void>(self.programuniform2uiv) == (dummy_pfnglprogramuniform2uivproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM2UIVPROC>()} else {&self.programuniform2uiv}})
23406			.field("programuniform3i", unsafe{if transmute::<_, *const c_void>(self.programuniform3i) == (dummy_pfnglprogramuniform3iproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM3IPROC>()} else {&self.programuniform3i}})
23407			.field("programuniform3iv", unsafe{if transmute::<_, *const c_void>(self.programuniform3iv) == (dummy_pfnglprogramuniform3ivproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM3IVPROC>()} else {&self.programuniform3iv}})
23408			.field("programuniform3f", unsafe{if transmute::<_, *const c_void>(self.programuniform3f) == (dummy_pfnglprogramuniform3fproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM3FPROC>()} else {&self.programuniform3f}})
23409			.field("programuniform3fv", unsafe{if transmute::<_, *const c_void>(self.programuniform3fv) == (dummy_pfnglprogramuniform3fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM3FVPROC>()} else {&self.programuniform3fv}})
23410			.field("programuniform3d", unsafe{if transmute::<_, *const c_void>(self.programuniform3d) == (dummy_pfnglprogramuniform3dproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM3DPROC>()} else {&self.programuniform3d}})
23411			.field("programuniform3dv", unsafe{if transmute::<_, *const c_void>(self.programuniform3dv) == (dummy_pfnglprogramuniform3dvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM3DVPROC>()} else {&self.programuniform3dv}})
23412			.field("programuniform3ui", unsafe{if transmute::<_, *const c_void>(self.programuniform3ui) == (dummy_pfnglprogramuniform3uiproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM3UIPROC>()} else {&self.programuniform3ui}})
23413			.field("programuniform3uiv", unsafe{if transmute::<_, *const c_void>(self.programuniform3uiv) == (dummy_pfnglprogramuniform3uivproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM3UIVPROC>()} else {&self.programuniform3uiv}})
23414			.field("programuniform4i", unsafe{if transmute::<_, *const c_void>(self.programuniform4i) == (dummy_pfnglprogramuniform4iproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM4IPROC>()} else {&self.programuniform4i}})
23415			.field("programuniform4iv", unsafe{if transmute::<_, *const c_void>(self.programuniform4iv) == (dummy_pfnglprogramuniform4ivproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM4IVPROC>()} else {&self.programuniform4iv}})
23416			.field("programuniform4f", unsafe{if transmute::<_, *const c_void>(self.programuniform4f) == (dummy_pfnglprogramuniform4fproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM4FPROC>()} else {&self.programuniform4f}})
23417			.field("programuniform4fv", unsafe{if transmute::<_, *const c_void>(self.programuniform4fv) == (dummy_pfnglprogramuniform4fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM4FVPROC>()} else {&self.programuniform4fv}})
23418			.field("programuniform4d", unsafe{if transmute::<_, *const c_void>(self.programuniform4d) == (dummy_pfnglprogramuniform4dproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM4DPROC>()} else {&self.programuniform4d}})
23419			.field("programuniform4dv", unsafe{if transmute::<_, *const c_void>(self.programuniform4dv) == (dummy_pfnglprogramuniform4dvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM4DVPROC>()} else {&self.programuniform4dv}})
23420			.field("programuniform4ui", unsafe{if transmute::<_, *const c_void>(self.programuniform4ui) == (dummy_pfnglprogramuniform4uiproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM4UIPROC>()} else {&self.programuniform4ui}})
23421			.field("programuniform4uiv", unsafe{if transmute::<_, *const c_void>(self.programuniform4uiv) == (dummy_pfnglprogramuniform4uivproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM4UIVPROC>()} else {&self.programuniform4uiv}})
23422			.field("programuniformmatrix2fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix2fv) == (dummy_pfnglprogramuniformmatrix2fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX2FVPROC>()} else {&self.programuniformmatrix2fv}})
23423			.field("programuniformmatrix3fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix3fv) == (dummy_pfnglprogramuniformmatrix3fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX3FVPROC>()} else {&self.programuniformmatrix3fv}})
23424			.field("programuniformmatrix4fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix4fv) == (dummy_pfnglprogramuniformmatrix4fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX4FVPROC>()} else {&self.programuniformmatrix4fv}})
23425			.field("programuniformmatrix2dv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix2dv) == (dummy_pfnglprogramuniformmatrix2dvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX2DVPROC>()} else {&self.programuniformmatrix2dv}})
23426			.field("programuniformmatrix3dv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix3dv) == (dummy_pfnglprogramuniformmatrix3dvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX3DVPROC>()} else {&self.programuniformmatrix3dv}})
23427			.field("programuniformmatrix4dv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix4dv) == (dummy_pfnglprogramuniformmatrix4dvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX4DVPROC>()} else {&self.programuniformmatrix4dv}})
23428			.field("programuniformmatrix2x3fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix2x3fv) == (dummy_pfnglprogramuniformmatrix2x3fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC>()} else {&self.programuniformmatrix2x3fv}})
23429			.field("programuniformmatrix3x2fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix3x2fv) == (dummy_pfnglprogramuniformmatrix3x2fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC>()} else {&self.programuniformmatrix3x2fv}})
23430			.field("programuniformmatrix2x4fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix2x4fv) == (dummy_pfnglprogramuniformmatrix2x4fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC>()} else {&self.programuniformmatrix2x4fv}})
23431			.field("programuniformmatrix4x2fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix4x2fv) == (dummy_pfnglprogramuniformmatrix4x2fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC>()} else {&self.programuniformmatrix4x2fv}})
23432			.field("programuniformmatrix3x4fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix3x4fv) == (dummy_pfnglprogramuniformmatrix3x4fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC>()} else {&self.programuniformmatrix3x4fv}})
23433			.field("programuniformmatrix4x3fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix4x3fv) == (dummy_pfnglprogramuniformmatrix4x3fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC>()} else {&self.programuniformmatrix4x3fv}})
23434			.field("programuniformmatrix2x3dv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix2x3dv) == (dummy_pfnglprogramuniformmatrix2x3dvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC>()} else {&self.programuniformmatrix2x3dv}})
23435			.field("programuniformmatrix3x2dv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix3x2dv) == (dummy_pfnglprogramuniformmatrix3x2dvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC>()} else {&self.programuniformmatrix3x2dv}})
23436			.field("programuniformmatrix2x4dv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix2x4dv) == (dummy_pfnglprogramuniformmatrix2x4dvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC>()} else {&self.programuniformmatrix2x4dv}})
23437			.field("programuniformmatrix4x2dv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix4x2dv) == (dummy_pfnglprogramuniformmatrix4x2dvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC>()} else {&self.programuniformmatrix4x2dv}})
23438			.field("programuniformmatrix3x4dv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix3x4dv) == (dummy_pfnglprogramuniformmatrix3x4dvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC>()} else {&self.programuniformmatrix3x4dv}})
23439			.field("programuniformmatrix4x3dv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix4x3dv) == (dummy_pfnglprogramuniformmatrix4x3dvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC>()} else {&self.programuniformmatrix4x3dv}})
23440			.field("validateprogrampipeline", unsafe{if transmute::<_, *const c_void>(self.validateprogrampipeline) == (dummy_pfnglvalidateprogrampipelineproc as *const c_void) {&null::<PFNGLVALIDATEPROGRAMPIPELINEPROC>()} else {&self.validateprogrampipeline}})
23441			.field("getprogrampipelineinfolog", unsafe{if transmute::<_, *const c_void>(self.getprogrampipelineinfolog) == (dummy_pfnglgetprogrampipelineinfologproc as *const c_void) {&null::<PFNGLGETPROGRAMPIPELINEINFOLOGPROC>()} else {&self.getprogrampipelineinfolog}})
23442			.field("vertexattribl1d", unsafe{if transmute::<_, *const c_void>(self.vertexattribl1d) == (dummy_pfnglvertexattribl1dproc as *const c_void) {&null::<PFNGLVERTEXATTRIBL1DPROC>()} else {&self.vertexattribl1d}})
23443			.field("vertexattribl2d", unsafe{if transmute::<_, *const c_void>(self.vertexattribl2d) == (dummy_pfnglvertexattribl2dproc as *const c_void) {&null::<PFNGLVERTEXATTRIBL2DPROC>()} else {&self.vertexattribl2d}})
23444			.field("vertexattribl3d", unsafe{if transmute::<_, *const c_void>(self.vertexattribl3d) == (dummy_pfnglvertexattribl3dproc as *const c_void) {&null::<PFNGLVERTEXATTRIBL3DPROC>()} else {&self.vertexattribl3d}})
23445			.field("vertexattribl4d", unsafe{if transmute::<_, *const c_void>(self.vertexattribl4d) == (dummy_pfnglvertexattribl4dproc as *const c_void) {&null::<PFNGLVERTEXATTRIBL4DPROC>()} else {&self.vertexattribl4d}})
23446			.field("vertexattribl1dv", unsafe{if transmute::<_, *const c_void>(self.vertexattribl1dv) == (dummy_pfnglvertexattribl1dvproc as *const c_void) {&null::<PFNGLVERTEXATTRIBL1DVPROC>()} else {&self.vertexattribl1dv}})
23447			.field("vertexattribl2dv", unsafe{if transmute::<_, *const c_void>(self.vertexattribl2dv) == (dummy_pfnglvertexattribl2dvproc as *const c_void) {&null::<PFNGLVERTEXATTRIBL2DVPROC>()} else {&self.vertexattribl2dv}})
23448			.field("vertexattribl3dv", unsafe{if transmute::<_, *const c_void>(self.vertexattribl3dv) == (dummy_pfnglvertexattribl3dvproc as *const c_void) {&null::<PFNGLVERTEXATTRIBL3DVPROC>()} else {&self.vertexattribl3dv}})
23449			.field("vertexattribl4dv", unsafe{if transmute::<_, *const c_void>(self.vertexattribl4dv) == (dummy_pfnglvertexattribl4dvproc as *const c_void) {&null::<PFNGLVERTEXATTRIBL4DVPROC>()} else {&self.vertexattribl4dv}})
23450			.field("vertexattriblpointer", unsafe{if transmute::<_, *const c_void>(self.vertexattriblpointer) == (dummy_pfnglvertexattriblpointerproc as *const c_void) {&null::<PFNGLVERTEXATTRIBLPOINTERPROC>()} else {&self.vertexattriblpointer}})
23451			.field("getvertexattribldv", unsafe{if transmute::<_, *const c_void>(self.getvertexattribldv) == (dummy_pfnglgetvertexattribldvproc as *const c_void) {&null::<PFNGLGETVERTEXATTRIBLDVPROC>()} else {&self.getvertexattribldv}})
23452			.field("viewportarrayv", unsafe{if transmute::<_, *const c_void>(self.viewportarrayv) == (dummy_pfnglviewportarrayvproc as *const c_void) {&null::<PFNGLVIEWPORTARRAYVPROC>()} else {&self.viewportarrayv}})
23453			.field("viewportindexedf", unsafe{if transmute::<_, *const c_void>(self.viewportindexedf) == (dummy_pfnglviewportindexedfproc as *const c_void) {&null::<PFNGLVIEWPORTINDEXEDFPROC>()} else {&self.viewportindexedf}})
23454			.field("viewportindexedfv", unsafe{if transmute::<_, *const c_void>(self.viewportindexedfv) == (dummy_pfnglviewportindexedfvproc as *const c_void) {&null::<PFNGLVIEWPORTINDEXEDFVPROC>()} else {&self.viewportindexedfv}})
23455			.field("scissorarrayv", unsafe{if transmute::<_, *const c_void>(self.scissorarrayv) == (dummy_pfnglscissorarrayvproc as *const c_void) {&null::<PFNGLSCISSORARRAYVPROC>()} else {&self.scissorarrayv}})
23456			.field("scissorindexed", unsafe{if transmute::<_, *const c_void>(self.scissorindexed) == (dummy_pfnglscissorindexedproc as *const c_void) {&null::<PFNGLSCISSORINDEXEDPROC>()} else {&self.scissorindexed}})
23457			.field("scissorindexedv", unsafe{if transmute::<_, *const c_void>(self.scissorindexedv) == (dummy_pfnglscissorindexedvproc as *const c_void) {&null::<PFNGLSCISSORINDEXEDVPROC>()} else {&self.scissorindexedv}})
23458			.field("depthrangearrayv", unsafe{if transmute::<_, *const c_void>(self.depthrangearrayv) == (dummy_pfngldepthrangearrayvproc as *const c_void) {&null::<PFNGLDEPTHRANGEARRAYVPROC>()} else {&self.depthrangearrayv}})
23459			.field("depthrangeindexed", unsafe{if transmute::<_, *const c_void>(self.depthrangeindexed) == (dummy_pfngldepthrangeindexedproc as *const c_void) {&null::<PFNGLDEPTHRANGEINDEXEDPROC>()} else {&self.depthrangeindexed}})
23460			.field("getfloati_v", unsafe{if transmute::<_, *const c_void>(self.getfloati_v) == (dummy_pfnglgetfloati_vproc as *const c_void) {&null::<PFNGLGETFLOATI_VPROC>()} else {&self.getfloati_v}})
23461			.field("getdoublei_v", unsafe{if transmute::<_, *const c_void>(self.getdoublei_v) == (dummy_pfnglgetdoublei_vproc as *const c_void) {&null::<PFNGLGETDOUBLEI_VPROC>()} else {&self.getdoublei_v}})
23462			.finish()
23463		} else {
23464			f.debug_struct("Version41")
23465			.field("available", &self.available)
23466			.finish_non_exhaustive()
23467		}
23468	}
23469}
23470
23471/// The prototype to the OpenGL function `DrawArraysInstancedBaseInstance`
23472type PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC = extern "system" fn(GLenum, GLint, GLsizei, GLsizei, GLuint);
23473
23474/// The prototype to the OpenGL function `DrawElementsInstancedBaseInstance`
23475type PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC = extern "system" fn(GLenum, GLsizei, GLenum, *const c_void, GLsizei, GLuint);
23476
23477/// The prototype to the OpenGL function `DrawElementsInstancedBaseVertexBaseInstance`
23478type PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC = extern "system" fn(GLenum, GLsizei, GLenum, *const c_void, GLsizei, GLint, GLuint);
23479
23480/// The prototype to the OpenGL function `GetInternalformativ`
23481type PFNGLGETINTERNALFORMATIVPROC = extern "system" fn(GLenum, GLenum, GLenum, GLsizei, *mut GLint);
23482
23483/// The prototype to the OpenGL function `GetActiveAtomicCounterBufferiv`
23484type PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC = extern "system" fn(GLuint, GLuint, GLenum, *mut GLint);
23485
23486/// The prototype to the OpenGL function `BindImageTexture`
23487type PFNGLBINDIMAGETEXTUREPROC = extern "system" fn(GLuint, GLuint, GLint, GLboolean, GLint, GLenum, GLenum);
23488
23489/// The prototype to the OpenGL function `MemoryBarrier`
23490type PFNGLMEMORYBARRIERPROC = extern "system" fn(GLbitfield);
23491
23492/// The prototype to the OpenGL function `TexStorage1D`
23493type PFNGLTEXSTORAGE1DPROC = extern "system" fn(GLenum, GLsizei, GLenum, GLsizei);
23494
23495/// The prototype to the OpenGL function `TexStorage2D`
23496type PFNGLTEXSTORAGE2DPROC = extern "system" fn(GLenum, GLsizei, GLenum, GLsizei, GLsizei);
23497
23498/// The prototype to the OpenGL function `TexStorage3D`
23499type PFNGLTEXSTORAGE3DPROC = extern "system" fn(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei);
23500
23501/// The prototype to the OpenGL function `DrawTransformFeedbackInstanced`
23502type PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC = extern "system" fn(GLenum, GLuint, GLsizei);
23503
23504/// The prototype to the OpenGL function `DrawTransformFeedbackStreamInstanced`
23505type PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC = extern "system" fn(GLenum, GLuint, GLuint, GLsizei);
23506
23507/// The dummy function of `DrawArraysInstancedBaseInstance()`
23508extern "system" fn dummy_pfngldrawarraysinstancedbaseinstanceproc (_: GLenum, _: GLint, _: GLsizei, _: GLsizei, _: GLuint) {
23509	panic!("OpenGL function pointer `glDrawArraysInstancedBaseInstance()` is null.")
23510}
23511
23512/// The dummy function of `DrawElementsInstancedBaseInstance()`
23513extern "system" fn dummy_pfngldrawelementsinstancedbaseinstanceproc (_: GLenum, _: GLsizei, _: GLenum, _: *const c_void, _: GLsizei, _: GLuint) {
23514	panic!("OpenGL function pointer `glDrawElementsInstancedBaseInstance()` is null.")
23515}
23516
23517/// The dummy function of `DrawElementsInstancedBaseVertexBaseInstance()`
23518extern "system" fn dummy_pfngldrawelementsinstancedbasevertexbaseinstanceproc (_: GLenum, _: GLsizei, _: GLenum, _: *const c_void, _: GLsizei, _: GLint, _: GLuint) {
23519	panic!("OpenGL function pointer `glDrawElementsInstancedBaseVertexBaseInstance()` is null.")
23520}
23521
23522/// The dummy function of `GetInternalformativ()`
23523extern "system" fn dummy_pfnglgetinternalformativproc (_: GLenum, _: GLenum, _: GLenum, _: GLsizei, _: *mut GLint) {
23524	panic!("OpenGL function pointer `glGetInternalformativ()` is null.")
23525}
23526
23527/// The dummy function of `GetActiveAtomicCounterBufferiv()`
23528extern "system" fn dummy_pfnglgetactiveatomiccounterbufferivproc (_: GLuint, _: GLuint, _: GLenum, _: *mut GLint) {
23529	panic!("OpenGL function pointer `glGetActiveAtomicCounterBufferiv()` is null.")
23530}
23531
23532/// The dummy function of `BindImageTexture()`
23533extern "system" fn dummy_pfnglbindimagetextureproc (_: GLuint, _: GLuint, _: GLint, _: GLboolean, _: GLint, _: GLenum, _: GLenum) {
23534	panic!("OpenGL function pointer `glBindImageTexture()` is null.")
23535}
23536
23537/// The dummy function of `MemoryBarrier()`
23538extern "system" fn dummy_pfnglmemorybarrierproc (_: GLbitfield) {
23539	panic!("OpenGL function pointer `glMemoryBarrier()` is null.")
23540}
23541
23542/// The dummy function of `TexStorage1D()`
23543extern "system" fn dummy_pfngltexstorage1dproc (_: GLenum, _: GLsizei, _: GLenum, _: GLsizei) {
23544	panic!("OpenGL function pointer `glTexStorage1D()` is null.")
23545}
23546
23547/// The dummy function of `TexStorage2D()`
23548extern "system" fn dummy_pfngltexstorage2dproc (_: GLenum, _: GLsizei, _: GLenum, _: GLsizei, _: GLsizei) {
23549	panic!("OpenGL function pointer `glTexStorage2D()` is null.")
23550}
23551
23552/// The dummy function of `TexStorage3D()`
23553extern "system" fn dummy_pfngltexstorage3dproc (_: GLenum, _: GLsizei, _: GLenum, _: GLsizei, _: GLsizei, _: GLsizei) {
23554	panic!("OpenGL function pointer `glTexStorage3D()` is null.")
23555}
23556
23557/// The dummy function of `DrawTransformFeedbackInstanced()`
23558extern "system" fn dummy_pfngldrawtransformfeedbackinstancedproc (_: GLenum, _: GLuint, _: GLsizei) {
23559	panic!("OpenGL function pointer `glDrawTransformFeedbackInstanced()` is null.")
23560}
23561
23562/// The dummy function of `DrawTransformFeedbackStreamInstanced()`
23563extern "system" fn dummy_pfngldrawtransformfeedbackstreaminstancedproc (_: GLenum, _: GLuint, _: GLuint, _: GLsizei) {
23564	panic!("OpenGL function pointer `glDrawTransformFeedbackStreamInstanced()` is null.")
23565}
23566/// Constant value defined from OpenGL 4.2
23567pub const GL_COPY_READ_BUFFER_BINDING: GLenum = 0x8F36;
23568
23569/// Constant value defined from OpenGL 4.2
23570pub const GL_COPY_WRITE_BUFFER_BINDING: GLenum = 0x8F37;
23571
23572/// Constant value defined from OpenGL 4.2
23573pub const GL_TRANSFORM_FEEDBACK_ACTIVE: GLenum = 0x8E24;
23574
23575/// Constant value defined from OpenGL 4.2
23576pub const GL_TRANSFORM_FEEDBACK_PAUSED: GLenum = 0x8E23;
23577
23578/// Constant value defined from OpenGL 4.2
23579pub const GL_UNPACK_COMPRESSED_BLOCK_WIDTH: GLenum = 0x9127;
23580
23581/// Constant value defined from OpenGL 4.2
23582pub const GL_UNPACK_COMPRESSED_BLOCK_HEIGHT: GLenum = 0x9128;
23583
23584/// Constant value defined from OpenGL 4.2
23585pub const GL_UNPACK_COMPRESSED_BLOCK_DEPTH: GLenum = 0x9129;
23586
23587/// Constant value defined from OpenGL 4.2
23588pub const GL_UNPACK_COMPRESSED_BLOCK_SIZE: GLenum = 0x912A;
23589
23590/// Constant value defined from OpenGL 4.2
23591pub const GL_PACK_COMPRESSED_BLOCK_WIDTH: GLenum = 0x912B;
23592
23593/// Constant value defined from OpenGL 4.2
23594pub const GL_PACK_COMPRESSED_BLOCK_HEIGHT: GLenum = 0x912C;
23595
23596/// Constant value defined from OpenGL 4.2
23597pub const GL_PACK_COMPRESSED_BLOCK_DEPTH: GLenum = 0x912D;
23598
23599/// Constant value defined from OpenGL 4.2
23600pub const GL_PACK_COMPRESSED_BLOCK_SIZE: GLenum = 0x912E;
23601
23602/// Constant value defined from OpenGL 4.2
23603pub const GL_NUM_SAMPLE_COUNTS: GLenum = 0x9380;
23604
23605/// Constant value defined from OpenGL 4.2
23606pub const GL_MIN_MAP_BUFFER_ALIGNMENT: GLenum = 0x90BC;
23607
23608/// Constant value defined from OpenGL 4.2
23609pub const GL_ATOMIC_COUNTER_BUFFER: GLenum = 0x92C0;
23610
23611/// Constant value defined from OpenGL 4.2
23612pub const GL_ATOMIC_COUNTER_BUFFER_BINDING: GLenum = 0x92C1;
23613
23614/// Constant value defined from OpenGL 4.2
23615pub const GL_ATOMIC_COUNTER_BUFFER_START: GLenum = 0x92C2;
23616
23617/// Constant value defined from OpenGL 4.2
23618pub const GL_ATOMIC_COUNTER_BUFFER_SIZE: GLenum = 0x92C3;
23619
23620/// Constant value defined from OpenGL 4.2
23621pub const GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE: GLenum = 0x92C4;
23622
23623/// Constant value defined from OpenGL 4.2
23624pub const GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS: GLenum = 0x92C5;
23625
23626/// Constant value defined from OpenGL 4.2
23627pub const GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES: GLenum = 0x92C6;
23628
23629/// Constant value defined from OpenGL 4.2
23630pub const GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER: GLenum = 0x92C7;
23631
23632/// Constant value defined from OpenGL 4.2
23633pub const GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER: GLenum = 0x92C8;
23634
23635/// Constant value defined from OpenGL 4.2
23636pub const GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER: GLenum = 0x92C9;
23637
23638/// Constant value defined from OpenGL 4.2
23639pub const GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER: GLenum = 0x92CA;
23640
23641/// Constant value defined from OpenGL 4.2
23642pub const GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER: GLenum = 0x92CB;
23643
23644/// Constant value defined from OpenGL 4.2
23645pub const GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92CC;
23646
23647/// Constant value defined from OpenGL 4.2
23648pub const GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92CD;
23649
23650/// Constant value defined from OpenGL 4.2
23651pub const GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92CE;
23652
23653/// Constant value defined from OpenGL 4.2
23654pub const GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92CF;
23655
23656/// Constant value defined from OpenGL 4.2
23657pub const GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92D0;
23658
23659/// Constant value defined from OpenGL 4.2
23660pub const GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92D1;
23661
23662/// Constant value defined from OpenGL 4.2
23663pub const GL_MAX_VERTEX_ATOMIC_COUNTERS: GLenum = 0x92D2;
23664
23665/// Constant value defined from OpenGL 4.2
23666pub const GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS: GLenum = 0x92D3;
23667
23668/// Constant value defined from OpenGL 4.2
23669pub const GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS: GLenum = 0x92D4;
23670
23671/// Constant value defined from OpenGL 4.2
23672pub const GL_MAX_GEOMETRY_ATOMIC_COUNTERS: GLenum = 0x92D5;
23673
23674/// Constant value defined from OpenGL 4.2
23675pub const GL_MAX_FRAGMENT_ATOMIC_COUNTERS: GLenum = 0x92D6;
23676
23677/// Constant value defined from OpenGL 4.2
23678pub const GL_MAX_COMBINED_ATOMIC_COUNTERS: GLenum = 0x92D7;
23679
23680/// Constant value defined from OpenGL 4.2
23681pub const GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE: GLenum = 0x92D8;
23682
23683/// Constant value defined from OpenGL 4.2
23684pub const GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS: GLenum = 0x92DC;
23685
23686/// Constant value defined from OpenGL 4.2
23687pub const GL_ACTIVE_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92D9;
23688
23689/// Constant value defined from OpenGL 4.2
23690pub const GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX: GLenum = 0x92DA;
23691
23692/// Constant value defined from OpenGL 4.2
23693pub const GL_UNSIGNED_INT_ATOMIC_COUNTER: GLenum = 0x92DB;
23694
23695/// Constant value defined from OpenGL 4.2
23696pub const GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT: GLbitfield = 0x00000001;
23697
23698/// Constant value defined from OpenGL 4.2
23699pub const GL_ELEMENT_ARRAY_BARRIER_BIT: GLbitfield = 0x00000002;
23700
23701/// Constant value defined from OpenGL 4.2
23702pub const GL_UNIFORM_BARRIER_BIT: GLbitfield = 0x00000004;
23703
23704/// Constant value defined from OpenGL 4.2
23705pub const GL_TEXTURE_FETCH_BARRIER_BIT: GLbitfield = 0x00000008;
23706
23707/// Constant value defined from OpenGL 4.2
23708pub const GL_SHADER_IMAGE_ACCESS_BARRIER_BIT: GLbitfield = 0x00000020;
23709
23710/// Constant value defined from OpenGL 4.2
23711pub const GL_COMMAND_BARRIER_BIT: GLbitfield = 0x00000040;
23712
23713/// Constant value defined from OpenGL 4.2
23714pub const GL_PIXEL_BUFFER_BARRIER_BIT: GLbitfield = 0x00000080;
23715
23716/// Constant value defined from OpenGL 4.2
23717pub const GL_TEXTURE_UPDATE_BARRIER_BIT: GLbitfield = 0x00000100;
23718
23719/// Constant value defined from OpenGL 4.2
23720pub const GL_BUFFER_UPDATE_BARRIER_BIT: GLbitfield = 0x00000200;
23721
23722/// Constant value defined from OpenGL 4.2
23723pub const GL_FRAMEBUFFER_BARRIER_BIT: GLbitfield = 0x00000400;
23724
23725/// Constant value defined from OpenGL 4.2
23726pub const GL_TRANSFORM_FEEDBACK_BARRIER_BIT: GLbitfield = 0x00000800;
23727
23728/// Constant value defined from OpenGL 4.2
23729pub const GL_ATOMIC_COUNTER_BARRIER_BIT: GLbitfield = 0x00001000;
23730
23731/// Constant value defined from OpenGL 4.2
23732pub const GL_ALL_BARRIER_BITS: GLbitfield = 0xFFFFFFFF;
23733
23734/// Constant value defined from OpenGL 4.2
23735pub const GL_MAX_IMAGE_UNITS: GLenum = 0x8F38;
23736
23737/// Constant value defined from OpenGL 4.2
23738pub const GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS: GLenum = 0x8F39;
23739
23740/// Constant value defined from OpenGL 4.2
23741pub const GL_IMAGE_BINDING_NAME: GLenum = 0x8F3A;
23742
23743/// Constant value defined from OpenGL 4.2
23744pub const GL_IMAGE_BINDING_LEVEL: GLenum = 0x8F3B;
23745
23746/// Constant value defined from OpenGL 4.2
23747pub const GL_IMAGE_BINDING_LAYERED: GLenum = 0x8F3C;
23748
23749/// Constant value defined from OpenGL 4.2
23750pub const GL_IMAGE_BINDING_LAYER: GLenum = 0x8F3D;
23751
23752/// Constant value defined from OpenGL 4.2
23753pub const GL_IMAGE_BINDING_ACCESS: GLenum = 0x8F3E;
23754
23755/// Constant value defined from OpenGL 4.2
23756pub const GL_IMAGE_1D: GLenum = 0x904C;
23757
23758/// Constant value defined from OpenGL 4.2
23759pub const GL_IMAGE_2D: GLenum = 0x904D;
23760
23761/// Constant value defined from OpenGL 4.2
23762pub const GL_IMAGE_3D: GLenum = 0x904E;
23763
23764/// Constant value defined from OpenGL 4.2
23765pub const GL_IMAGE_2D_RECT: GLenum = 0x904F;
23766
23767/// Constant value defined from OpenGL 4.2
23768pub const GL_IMAGE_CUBE: GLenum = 0x9050;
23769
23770/// Constant value defined from OpenGL 4.2
23771pub const GL_IMAGE_BUFFER: GLenum = 0x9051;
23772
23773/// Constant value defined from OpenGL 4.2
23774pub const GL_IMAGE_1D_ARRAY: GLenum = 0x9052;
23775
23776/// Constant value defined from OpenGL 4.2
23777pub const GL_IMAGE_2D_ARRAY: GLenum = 0x9053;
23778
23779/// Constant value defined from OpenGL 4.2
23780pub const GL_IMAGE_CUBE_MAP_ARRAY: GLenum = 0x9054;
23781
23782/// Constant value defined from OpenGL 4.2
23783pub const GL_IMAGE_2D_MULTISAMPLE: GLenum = 0x9055;
23784
23785/// Constant value defined from OpenGL 4.2
23786pub const GL_IMAGE_2D_MULTISAMPLE_ARRAY: GLenum = 0x9056;
23787
23788/// Constant value defined from OpenGL 4.2
23789pub const GL_INT_IMAGE_1D: GLenum = 0x9057;
23790
23791/// Constant value defined from OpenGL 4.2
23792pub const GL_INT_IMAGE_2D: GLenum = 0x9058;
23793
23794/// Constant value defined from OpenGL 4.2
23795pub const GL_INT_IMAGE_3D: GLenum = 0x9059;
23796
23797/// Constant value defined from OpenGL 4.2
23798pub const GL_INT_IMAGE_2D_RECT: GLenum = 0x905A;
23799
23800/// Constant value defined from OpenGL 4.2
23801pub const GL_INT_IMAGE_CUBE: GLenum = 0x905B;
23802
23803/// Constant value defined from OpenGL 4.2
23804pub const GL_INT_IMAGE_BUFFER: GLenum = 0x905C;
23805
23806/// Constant value defined from OpenGL 4.2
23807pub const GL_INT_IMAGE_1D_ARRAY: GLenum = 0x905D;
23808
23809/// Constant value defined from OpenGL 4.2
23810pub const GL_INT_IMAGE_2D_ARRAY: GLenum = 0x905E;
23811
23812/// Constant value defined from OpenGL 4.2
23813pub const GL_INT_IMAGE_CUBE_MAP_ARRAY: GLenum = 0x905F;
23814
23815/// Constant value defined from OpenGL 4.2
23816pub const GL_INT_IMAGE_2D_MULTISAMPLE: GLenum = 0x9060;
23817
23818/// Constant value defined from OpenGL 4.2
23819pub const GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY: GLenum = 0x9061;
23820
23821/// Constant value defined from OpenGL 4.2
23822pub const GL_UNSIGNED_INT_IMAGE_1D: GLenum = 0x9062;
23823
23824/// Constant value defined from OpenGL 4.2
23825pub const GL_UNSIGNED_INT_IMAGE_2D: GLenum = 0x9063;
23826
23827/// Constant value defined from OpenGL 4.2
23828pub const GL_UNSIGNED_INT_IMAGE_3D: GLenum = 0x9064;
23829
23830/// Constant value defined from OpenGL 4.2
23831pub const GL_UNSIGNED_INT_IMAGE_2D_RECT: GLenum = 0x9065;
23832
23833/// Constant value defined from OpenGL 4.2
23834pub const GL_UNSIGNED_INT_IMAGE_CUBE: GLenum = 0x9066;
23835
23836/// Constant value defined from OpenGL 4.2
23837pub const GL_UNSIGNED_INT_IMAGE_BUFFER: GLenum = 0x9067;
23838
23839/// Constant value defined from OpenGL 4.2
23840pub const GL_UNSIGNED_INT_IMAGE_1D_ARRAY: GLenum = 0x9068;
23841
23842/// Constant value defined from OpenGL 4.2
23843pub const GL_UNSIGNED_INT_IMAGE_2D_ARRAY: GLenum = 0x9069;
23844
23845/// Constant value defined from OpenGL 4.2
23846pub const GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY: GLenum = 0x906A;
23847
23848/// Constant value defined from OpenGL 4.2
23849pub const GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE: GLenum = 0x906B;
23850
23851/// Constant value defined from OpenGL 4.2
23852pub const GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY: GLenum = 0x906C;
23853
23854/// Constant value defined from OpenGL 4.2
23855pub const GL_MAX_IMAGE_SAMPLES: GLenum = 0x906D;
23856
23857/// Constant value defined from OpenGL 4.2
23858pub const GL_IMAGE_BINDING_FORMAT: GLenum = 0x906E;
23859
23860/// Constant value defined from OpenGL 4.2
23861pub const GL_IMAGE_FORMAT_COMPATIBILITY_TYPE: GLenum = 0x90C7;
23862
23863/// Constant value defined from OpenGL 4.2
23864pub const GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE: GLenum = 0x90C8;
23865
23866/// Constant value defined from OpenGL 4.2
23867pub const GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS: GLenum = 0x90C9;
23868
23869/// Constant value defined from OpenGL 4.2
23870pub const GL_MAX_VERTEX_IMAGE_UNIFORMS: GLenum = 0x90CA;
23871
23872/// Constant value defined from OpenGL 4.2
23873pub const GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS: GLenum = 0x90CB;
23874
23875/// Constant value defined from OpenGL 4.2
23876pub const GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS: GLenum = 0x90CC;
23877
23878/// Constant value defined from OpenGL 4.2
23879pub const GL_MAX_GEOMETRY_IMAGE_UNIFORMS: GLenum = 0x90CD;
23880
23881/// Constant value defined from OpenGL 4.2
23882pub const GL_MAX_FRAGMENT_IMAGE_UNIFORMS: GLenum = 0x90CE;
23883
23884/// Constant value defined from OpenGL 4.2
23885pub const GL_MAX_COMBINED_IMAGE_UNIFORMS: GLenum = 0x90CF;
23886
23887/// Constant value defined from OpenGL 4.2
23888pub const GL_COMPRESSED_RGBA_BPTC_UNORM: GLenum = 0x8E8C;
23889
23890/// Constant value defined from OpenGL 4.2
23891pub const GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM: GLenum = 0x8E8D;
23892
23893/// Constant value defined from OpenGL 4.2
23894pub const GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT: GLenum = 0x8E8E;
23895
23896/// Constant value defined from OpenGL 4.2
23897pub const GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT: GLenum = 0x8E8F;
23898
23899/// Constant value defined from OpenGL 4.2
23900pub const GL_TEXTURE_IMMUTABLE_FORMAT: GLenum = 0x912F;
23901
23902/// Functions from OpenGL version 4.2
23903pub trait GL_4_2 {
23904	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
23905	fn glGetError(&self) -> GLenum;
23906
23907	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawArraysInstancedBaseInstance.xhtml>
23908	fn glDrawArraysInstancedBaseInstance(&self, mode: GLenum, first: GLint, count: GLsizei, instancecount: GLsizei, baseinstance: GLuint) -> Result<()>;
23909
23910	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsInstancedBaseInstance.xhtml>
23911	fn glDrawElementsInstancedBaseInstance(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei, baseinstance: GLuint) -> Result<()>;
23912
23913	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsInstancedBaseVertexBaseInstance.xhtml>
23914	fn glDrawElementsInstancedBaseVertexBaseInstance(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei, basevertex: GLint, baseinstance: GLuint) -> Result<()>;
23915
23916	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetInternalformativ.xhtml>
23917	fn glGetInternalformativ(&self, target: GLenum, internalformat: GLenum, pname: GLenum, count: GLsizei, params: *mut GLint) -> Result<()>;
23918
23919	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveAtomicCounterBufferiv.xhtml>
23920	fn glGetActiveAtomicCounterBufferiv(&self, program: GLuint, bufferIndex: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
23921
23922	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindImageTexture.xhtml>
23923	fn glBindImageTexture(&self, unit: GLuint, texture: GLuint, level: GLint, layered: GLboolean, layer: GLint, access: GLenum, format: GLenum) -> Result<()>;
23924
23925	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMemoryBarrier.xhtml>
23926	fn glMemoryBarrier(&self, barriers: GLbitfield) -> Result<()>;
23927
23928	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexStorage1D.xhtml>
23929	fn glTexStorage1D(&self, target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei) -> Result<()>;
23930
23931	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexStorage2D.xhtml>
23932	fn glTexStorage2D(&self, target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()>;
23933
23934	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexStorage3D.xhtml>
23935	fn glTexStorage3D(&self, target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei) -> Result<()>;
23936
23937	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawTransformFeedbackInstanced.xhtml>
23938	fn glDrawTransformFeedbackInstanced(&self, mode: GLenum, id: GLuint, instancecount: GLsizei) -> Result<()>;
23939
23940	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawTransformFeedbackStreamInstanced.xhtml>
23941	fn glDrawTransformFeedbackStreamInstanced(&self, mode: GLenum, id: GLuint, stream: GLuint, instancecount: GLsizei) -> Result<()>;
23942}
23943/// Functions from OpenGL version 4.2
23944#[derive(Clone, Copy, PartialEq, Eq, Hash)]
23945pub struct Version42 {
23946	/// Is OpenGL version 4.2 available
23947	available: bool,
23948
23949	/// The function pointer to `glGetError()`
23950	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
23951	pub geterror: PFNGLGETERRORPROC,
23952
23953	/// The function pointer to `glDrawArraysInstancedBaseInstance()`
23954	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawArraysInstancedBaseInstance.xhtml>
23955	pub drawarraysinstancedbaseinstance: PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC,
23956
23957	/// The function pointer to `glDrawElementsInstancedBaseInstance()`
23958	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsInstancedBaseInstance.xhtml>
23959	pub drawelementsinstancedbaseinstance: PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC,
23960
23961	/// The function pointer to `glDrawElementsInstancedBaseVertexBaseInstance()`
23962	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsInstancedBaseVertexBaseInstance.xhtml>
23963	pub drawelementsinstancedbasevertexbaseinstance: PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC,
23964
23965	/// The function pointer to `glGetInternalformativ()`
23966	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetInternalformativ.xhtml>
23967	pub getinternalformativ: PFNGLGETINTERNALFORMATIVPROC,
23968
23969	/// The function pointer to `glGetActiveAtomicCounterBufferiv()`
23970	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveAtomicCounterBufferiv.xhtml>
23971	pub getactiveatomiccounterbufferiv: PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC,
23972
23973	/// The function pointer to `glBindImageTexture()`
23974	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindImageTexture.xhtml>
23975	pub bindimagetexture: PFNGLBINDIMAGETEXTUREPROC,
23976
23977	/// The function pointer to `glMemoryBarrier()`
23978	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMemoryBarrier.xhtml>
23979	pub memorybarrier: PFNGLMEMORYBARRIERPROC,
23980
23981	/// The function pointer to `glTexStorage1D()`
23982	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexStorage1D.xhtml>
23983	pub texstorage1d: PFNGLTEXSTORAGE1DPROC,
23984
23985	/// The function pointer to `glTexStorage2D()`
23986	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexStorage2D.xhtml>
23987	pub texstorage2d: PFNGLTEXSTORAGE2DPROC,
23988
23989	/// The function pointer to `glTexStorage3D()`
23990	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexStorage3D.xhtml>
23991	pub texstorage3d: PFNGLTEXSTORAGE3DPROC,
23992
23993	/// The function pointer to `glDrawTransformFeedbackInstanced()`
23994	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawTransformFeedbackInstanced.xhtml>
23995	pub drawtransformfeedbackinstanced: PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC,
23996
23997	/// The function pointer to `glDrawTransformFeedbackStreamInstanced()`
23998	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawTransformFeedbackStreamInstanced.xhtml>
23999	pub drawtransformfeedbackstreaminstanced: PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC,
24000}
24001
24002impl GL_4_2 for Version42 {
24003	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
24004	#[inline(always)]
24005	fn glGetError(&self) -> GLenum {
24006		(self.geterror)()
24007	}
24008	#[inline(always)]
24009	fn glDrawArraysInstancedBaseInstance(&self, mode: GLenum, first: GLint, count: GLsizei, instancecount: GLsizei, baseinstance: GLuint) -> Result<()> {
24010		#[cfg(feature = "catch_nullptr")]
24011		let ret = process_catch("glDrawArraysInstancedBaseInstance", catch_unwind(||(self.drawarraysinstancedbaseinstance)(mode, first, count, instancecount, baseinstance)));
24012		#[cfg(not(feature = "catch_nullptr"))]
24013		let ret = {(self.drawarraysinstancedbaseinstance)(mode, first, count, instancecount, baseinstance); Ok(())};
24014		#[cfg(feature = "diagnose")]
24015		if let Ok(ret) = ret {
24016			return to_result("glDrawArraysInstancedBaseInstance", ret, self.glGetError());
24017		} else {
24018			return ret
24019		}
24020		#[cfg(not(feature = "diagnose"))]
24021		return ret;
24022	}
24023	#[inline(always)]
24024	fn glDrawElementsInstancedBaseInstance(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei, baseinstance: GLuint) -> Result<()> {
24025		#[cfg(feature = "catch_nullptr")]
24026		let ret = process_catch("glDrawElementsInstancedBaseInstance", catch_unwind(||(self.drawelementsinstancedbaseinstance)(mode, count, type_, indices, instancecount, baseinstance)));
24027		#[cfg(not(feature = "catch_nullptr"))]
24028		let ret = {(self.drawelementsinstancedbaseinstance)(mode, count, type_, indices, instancecount, baseinstance); Ok(())};
24029		#[cfg(feature = "diagnose")]
24030		if let Ok(ret) = ret {
24031			return to_result("glDrawElementsInstancedBaseInstance", ret, self.glGetError());
24032		} else {
24033			return ret
24034		}
24035		#[cfg(not(feature = "diagnose"))]
24036		return ret;
24037	}
24038	#[inline(always)]
24039	fn glDrawElementsInstancedBaseVertexBaseInstance(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei, basevertex: GLint, baseinstance: GLuint) -> Result<()> {
24040		#[cfg(feature = "catch_nullptr")]
24041		let ret = process_catch("glDrawElementsInstancedBaseVertexBaseInstance", catch_unwind(||(self.drawelementsinstancedbasevertexbaseinstance)(mode, count, type_, indices, instancecount, basevertex, baseinstance)));
24042		#[cfg(not(feature = "catch_nullptr"))]
24043		let ret = {(self.drawelementsinstancedbasevertexbaseinstance)(mode, count, type_, indices, instancecount, basevertex, baseinstance); Ok(())};
24044		#[cfg(feature = "diagnose")]
24045		if let Ok(ret) = ret {
24046			return to_result("glDrawElementsInstancedBaseVertexBaseInstance", ret, self.glGetError());
24047		} else {
24048			return ret
24049		}
24050		#[cfg(not(feature = "diagnose"))]
24051		return ret;
24052	}
24053	#[inline(always)]
24054	fn glGetInternalformativ(&self, target: GLenum, internalformat: GLenum, pname: GLenum, count: GLsizei, params: *mut GLint) -> Result<()> {
24055		#[cfg(feature = "catch_nullptr")]
24056		let ret = process_catch("glGetInternalformativ", catch_unwind(||(self.getinternalformativ)(target, internalformat, pname, count, params)));
24057		#[cfg(not(feature = "catch_nullptr"))]
24058		let ret = {(self.getinternalformativ)(target, internalformat, pname, count, params); Ok(())};
24059		#[cfg(feature = "diagnose")]
24060		if let Ok(ret) = ret {
24061			return to_result("glGetInternalformativ", ret, self.glGetError());
24062		} else {
24063			return ret
24064		}
24065		#[cfg(not(feature = "diagnose"))]
24066		return ret;
24067	}
24068	#[inline(always)]
24069	fn glGetActiveAtomicCounterBufferiv(&self, program: GLuint, bufferIndex: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
24070		#[cfg(feature = "catch_nullptr")]
24071		let ret = process_catch("glGetActiveAtomicCounterBufferiv", catch_unwind(||(self.getactiveatomiccounterbufferiv)(program, bufferIndex, pname, params)));
24072		#[cfg(not(feature = "catch_nullptr"))]
24073		let ret = {(self.getactiveatomiccounterbufferiv)(program, bufferIndex, pname, params); Ok(())};
24074		#[cfg(feature = "diagnose")]
24075		if let Ok(ret) = ret {
24076			return to_result("glGetActiveAtomicCounterBufferiv", ret, self.glGetError());
24077		} else {
24078			return ret
24079		}
24080		#[cfg(not(feature = "diagnose"))]
24081		return ret;
24082	}
24083	#[inline(always)]
24084	fn glBindImageTexture(&self, unit: GLuint, texture: GLuint, level: GLint, layered: GLboolean, layer: GLint, access: GLenum, format: GLenum) -> Result<()> {
24085		#[cfg(feature = "catch_nullptr")]
24086		let ret = process_catch("glBindImageTexture", catch_unwind(||(self.bindimagetexture)(unit, texture, level, layered, layer, access, format)));
24087		#[cfg(not(feature = "catch_nullptr"))]
24088		let ret = {(self.bindimagetexture)(unit, texture, level, layered, layer, access, format); Ok(())};
24089		#[cfg(feature = "diagnose")]
24090		if let Ok(ret) = ret {
24091			return to_result("glBindImageTexture", ret, self.glGetError());
24092		} else {
24093			return ret
24094		}
24095		#[cfg(not(feature = "diagnose"))]
24096		return ret;
24097	}
24098	#[inline(always)]
24099	fn glMemoryBarrier(&self, barriers: GLbitfield) -> Result<()> {
24100		#[cfg(feature = "catch_nullptr")]
24101		let ret = process_catch("glMemoryBarrier", catch_unwind(||(self.memorybarrier)(barriers)));
24102		#[cfg(not(feature = "catch_nullptr"))]
24103		let ret = {(self.memorybarrier)(barriers); Ok(())};
24104		#[cfg(feature = "diagnose")]
24105		if let Ok(ret) = ret {
24106			return to_result("glMemoryBarrier", ret, self.glGetError());
24107		} else {
24108			return ret
24109		}
24110		#[cfg(not(feature = "diagnose"))]
24111		return ret;
24112	}
24113	#[inline(always)]
24114	fn glTexStorage1D(&self, target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei) -> Result<()> {
24115		#[cfg(feature = "catch_nullptr")]
24116		let ret = process_catch("glTexStorage1D", catch_unwind(||(self.texstorage1d)(target, levels, internalformat, width)));
24117		#[cfg(not(feature = "catch_nullptr"))]
24118		let ret = {(self.texstorage1d)(target, levels, internalformat, width); Ok(())};
24119		#[cfg(feature = "diagnose")]
24120		if let Ok(ret) = ret {
24121			return to_result("glTexStorage1D", ret, self.glGetError());
24122		} else {
24123			return ret
24124		}
24125		#[cfg(not(feature = "diagnose"))]
24126		return ret;
24127	}
24128	#[inline(always)]
24129	fn glTexStorage2D(&self, target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()> {
24130		#[cfg(feature = "catch_nullptr")]
24131		let ret = process_catch("glTexStorage2D", catch_unwind(||(self.texstorage2d)(target, levels, internalformat, width, height)));
24132		#[cfg(not(feature = "catch_nullptr"))]
24133		let ret = {(self.texstorage2d)(target, levels, internalformat, width, height); Ok(())};
24134		#[cfg(feature = "diagnose")]
24135		if let Ok(ret) = ret {
24136			return to_result("glTexStorage2D", ret, self.glGetError());
24137		} else {
24138			return ret
24139		}
24140		#[cfg(not(feature = "diagnose"))]
24141		return ret;
24142	}
24143	#[inline(always)]
24144	fn glTexStorage3D(&self, target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei) -> Result<()> {
24145		#[cfg(feature = "catch_nullptr")]
24146		let ret = process_catch("glTexStorage3D", catch_unwind(||(self.texstorage3d)(target, levels, internalformat, width, height, depth)));
24147		#[cfg(not(feature = "catch_nullptr"))]
24148		let ret = {(self.texstorage3d)(target, levels, internalformat, width, height, depth); Ok(())};
24149		#[cfg(feature = "diagnose")]
24150		if let Ok(ret) = ret {
24151			return to_result("glTexStorage3D", ret, self.glGetError());
24152		} else {
24153			return ret
24154		}
24155		#[cfg(not(feature = "diagnose"))]
24156		return ret;
24157	}
24158	#[inline(always)]
24159	fn glDrawTransformFeedbackInstanced(&self, mode: GLenum, id: GLuint, instancecount: GLsizei) -> Result<()> {
24160		#[cfg(feature = "catch_nullptr")]
24161		let ret = process_catch("glDrawTransformFeedbackInstanced", catch_unwind(||(self.drawtransformfeedbackinstanced)(mode, id, instancecount)));
24162		#[cfg(not(feature = "catch_nullptr"))]
24163		let ret = {(self.drawtransformfeedbackinstanced)(mode, id, instancecount); Ok(())};
24164		#[cfg(feature = "diagnose")]
24165		if let Ok(ret) = ret {
24166			return to_result("glDrawTransformFeedbackInstanced", ret, self.glGetError());
24167		} else {
24168			return ret
24169		}
24170		#[cfg(not(feature = "diagnose"))]
24171		return ret;
24172	}
24173	#[inline(always)]
24174	fn glDrawTransformFeedbackStreamInstanced(&self, mode: GLenum, id: GLuint, stream: GLuint, instancecount: GLsizei) -> Result<()> {
24175		#[cfg(feature = "catch_nullptr")]
24176		let ret = process_catch("glDrawTransformFeedbackStreamInstanced", catch_unwind(||(self.drawtransformfeedbackstreaminstanced)(mode, id, stream, instancecount)));
24177		#[cfg(not(feature = "catch_nullptr"))]
24178		let ret = {(self.drawtransformfeedbackstreaminstanced)(mode, id, stream, instancecount); Ok(())};
24179		#[cfg(feature = "diagnose")]
24180		if let Ok(ret) = ret {
24181			return to_result("glDrawTransformFeedbackStreamInstanced", ret, self.glGetError());
24182		} else {
24183			return ret
24184		}
24185		#[cfg(not(feature = "diagnose"))]
24186		return ret;
24187	}
24188}
24189
24190impl Version42 {
24191	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
24192		let (_spec, major, minor, release) = base.get_version();
24193		if (major, minor, release) < (4, 2, 0) {
24194			return Self::default();
24195		}
24196		Self {
24197			available: true,
24198			geterror: {let proc = get_proc_address("glGetError"); if proc.is_null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
24199			drawarraysinstancedbaseinstance: {let proc = get_proc_address("glDrawArraysInstancedBaseInstance"); if proc.is_null() {dummy_pfngldrawarraysinstancedbaseinstanceproc} else {unsafe{transmute(proc)}}},
24200			drawelementsinstancedbaseinstance: {let proc = get_proc_address("glDrawElementsInstancedBaseInstance"); if proc.is_null() {dummy_pfngldrawelementsinstancedbaseinstanceproc} else {unsafe{transmute(proc)}}},
24201			drawelementsinstancedbasevertexbaseinstance: {let proc = get_proc_address("glDrawElementsInstancedBaseVertexBaseInstance"); if proc.is_null() {dummy_pfngldrawelementsinstancedbasevertexbaseinstanceproc} else {unsafe{transmute(proc)}}},
24202			getinternalformativ: {let proc = get_proc_address("glGetInternalformativ"); if proc.is_null() {dummy_pfnglgetinternalformativproc} else {unsafe{transmute(proc)}}},
24203			getactiveatomiccounterbufferiv: {let proc = get_proc_address("glGetActiveAtomicCounterBufferiv"); if proc.is_null() {dummy_pfnglgetactiveatomiccounterbufferivproc} else {unsafe{transmute(proc)}}},
24204			bindimagetexture: {let proc = get_proc_address("glBindImageTexture"); if proc.is_null() {dummy_pfnglbindimagetextureproc} else {unsafe{transmute(proc)}}},
24205			memorybarrier: {let proc = get_proc_address("glMemoryBarrier"); if proc.is_null() {dummy_pfnglmemorybarrierproc} else {unsafe{transmute(proc)}}},
24206			texstorage1d: {let proc = get_proc_address("glTexStorage1D"); if proc.is_null() {dummy_pfngltexstorage1dproc} else {unsafe{transmute(proc)}}},
24207			texstorage2d: {let proc = get_proc_address("glTexStorage2D"); if proc.is_null() {dummy_pfngltexstorage2dproc} else {unsafe{transmute(proc)}}},
24208			texstorage3d: {let proc = get_proc_address("glTexStorage3D"); if proc.is_null() {dummy_pfngltexstorage3dproc} else {unsafe{transmute(proc)}}},
24209			drawtransformfeedbackinstanced: {let proc = get_proc_address("glDrawTransformFeedbackInstanced"); if proc.is_null() {dummy_pfngldrawtransformfeedbackinstancedproc} else {unsafe{transmute(proc)}}},
24210			drawtransformfeedbackstreaminstanced: {let proc = get_proc_address("glDrawTransformFeedbackStreamInstanced"); if proc.is_null() {dummy_pfngldrawtransformfeedbackstreaminstancedproc} else {unsafe{transmute(proc)}}},
24211		}
24212	}
24213	#[inline(always)]
24214	pub fn get_available(&self) -> bool {
24215		self.available
24216	}
24217}
24218
24219impl Default for Version42 {
24220	fn default() -> Self {
24221		Self {
24222			available: false,
24223			geterror: dummy_pfnglgeterrorproc,
24224			drawarraysinstancedbaseinstance: dummy_pfngldrawarraysinstancedbaseinstanceproc,
24225			drawelementsinstancedbaseinstance: dummy_pfngldrawelementsinstancedbaseinstanceproc,
24226			drawelementsinstancedbasevertexbaseinstance: dummy_pfngldrawelementsinstancedbasevertexbaseinstanceproc,
24227			getinternalformativ: dummy_pfnglgetinternalformativproc,
24228			getactiveatomiccounterbufferiv: dummy_pfnglgetactiveatomiccounterbufferivproc,
24229			bindimagetexture: dummy_pfnglbindimagetextureproc,
24230			memorybarrier: dummy_pfnglmemorybarrierproc,
24231			texstorage1d: dummy_pfngltexstorage1dproc,
24232			texstorage2d: dummy_pfngltexstorage2dproc,
24233			texstorage3d: dummy_pfngltexstorage3dproc,
24234			drawtransformfeedbackinstanced: dummy_pfngldrawtransformfeedbackinstancedproc,
24235			drawtransformfeedbackstreaminstanced: dummy_pfngldrawtransformfeedbackstreaminstancedproc,
24236		}
24237	}
24238}
24239impl Debug for Version42 {
24240	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
24241		if self.available {
24242			f.debug_struct("Version42")
24243			.field("available", &self.available)
24244			.field("drawarraysinstancedbaseinstance", unsafe{if transmute::<_, *const c_void>(self.drawarraysinstancedbaseinstance) == (dummy_pfngldrawarraysinstancedbaseinstanceproc as *const c_void) {&null::<PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC>()} else {&self.drawarraysinstancedbaseinstance}})
24245			.field("drawelementsinstancedbaseinstance", unsafe{if transmute::<_, *const c_void>(self.drawelementsinstancedbaseinstance) == (dummy_pfngldrawelementsinstancedbaseinstanceproc as *const c_void) {&null::<PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC>()} else {&self.drawelementsinstancedbaseinstance}})
24246			.field("drawelementsinstancedbasevertexbaseinstance", unsafe{if transmute::<_, *const c_void>(self.drawelementsinstancedbasevertexbaseinstance) == (dummy_pfngldrawelementsinstancedbasevertexbaseinstanceproc as *const c_void) {&null::<PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC>()} else {&self.drawelementsinstancedbasevertexbaseinstance}})
24247			.field("getinternalformativ", unsafe{if transmute::<_, *const c_void>(self.getinternalformativ) == (dummy_pfnglgetinternalformativproc as *const c_void) {&null::<PFNGLGETINTERNALFORMATIVPROC>()} else {&self.getinternalformativ}})
24248			.field("getactiveatomiccounterbufferiv", unsafe{if transmute::<_, *const c_void>(self.getactiveatomiccounterbufferiv) == (dummy_pfnglgetactiveatomiccounterbufferivproc as *const c_void) {&null::<PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC>()} else {&self.getactiveatomiccounterbufferiv}})
24249			.field("bindimagetexture", unsafe{if transmute::<_, *const c_void>(self.bindimagetexture) == (dummy_pfnglbindimagetextureproc as *const c_void) {&null::<PFNGLBINDIMAGETEXTUREPROC>()} else {&self.bindimagetexture}})
24250			.field("memorybarrier", unsafe{if transmute::<_, *const c_void>(self.memorybarrier) == (dummy_pfnglmemorybarrierproc as *const c_void) {&null::<PFNGLMEMORYBARRIERPROC>()} else {&self.memorybarrier}})
24251			.field("texstorage1d", unsafe{if transmute::<_, *const c_void>(self.texstorage1d) == (dummy_pfngltexstorage1dproc as *const c_void) {&null::<PFNGLTEXSTORAGE1DPROC>()} else {&self.texstorage1d}})
24252			.field("texstorage2d", unsafe{if transmute::<_, *const c_void>(self.texstorage2d) == (dummy_pfngltexstorage2dproc as *const c_void) {&null::<PFNGLTEXSTORAGE2DPROC>()} else {&self.texstorage2d}})
24253			.field("texstorage3d", unsafe{if transmute::<_, *const c_void>(self.texstorage3d) == (dummy_pfngltexstorage3dproc as *const c_void) {&null::<PFNGLTEXSTORAGE3DPROC>()} else {&self.texstorage3d}})
24254			.field("drawtransformfeedbackinstanced", unsafe{if transmute::<_, *const c_void>(self.drawtransformfeedbackinstanced) == (dummy_pfngldrawtransformfeedbackinstancedproc as *const c_void) {&null::<PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC>()} else {&self.drawtransformfeedbackinstanced}})
24255			.field("drawtransformfeedbackstreaminstanced", unsafe{if transmute::<_, *const c_void>(self.drawtransformfeedbackstreaminstanced) == (dummy_pfngldrawtransformfeedbackstreaminstancedproc as *const c_void) {&null::<PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC>()} else {&self.drawtransformfeedbackstreaminstanced}})
24256			.finish()
24257		} else {
24258			f.debug_struct("Version42")
24259			.field("available", &self.available)
24260			.finish_non_exhaustive()
24261		}
24262	}
24263}
24264
24265/// The prototype to the OpenGL function `ClearBufferData`
24266type PFNGLCLEARBUFFERDATAPROC = extern "system" fn(GLenum, GLenum, GLenum, GLenum, *const c_void);
24267
24268/// The prototype to the OpenGL function `ClearBufferSubData`
24269type PFNGLCLEARBUFFERSUBDATAPROC = extern "system" fn(GLenum, GLenum, GLintptr, GLsizeiptr, GLenum, GLenum, *const c_void);
24270
24271/// The prototype to the OpenGL function `DispatchCompute`
24272type PFNGLDISPATCHCOMPUTEPROC = extern "system" fn(GLuint, GLuint, GLuint);
24273
24274/// The prototype to the OpenGL function `DispatchComputeIndirect`
24275type PFNGLDISPATCHCOMPUTEINDIRECTPROC = extern "system" fn(GLintptr);
24276
24277/// The prototype to the OpenGL function `CopyImageSubData`
24278type PFNGLCOPYIMAGESUBDATAPROC = extern "system" fn(GLuint, GLenum, GLint, GLint, GLint, GLint, GLuint, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei);
24279
24280/// The prototype to the OpenGL function `FramebufferParameteri`
24281type PFNGLFRAMEBUFFERPARAMETERIPROC = extern "system" fn(GLenum, GLenum, GLint);
24282
24283/// The prototype to the OpenGL function `GetFramebufferParameteriv`
24284type PFNGLGETFRAMEBUFFERPARAMETERIVPROC = extern "system" fn(GLenum, GLenum, *mut GLint);
24285
24286/// The prototype to the OpenGL function `GetInternalformati64v`
24287type PFNGLGETINTERNALFORMATI64VPROC = extern "system" fn(GLenum, GLenum, GLenum, GLsizei, *mut GLint64);
24288
24289/// The prototype to the OpenGL function `InvalidateTexSubImage`
24290type PFNGLINVALIDATETEXSUBIMAGEPROC = extern "system" fn(GLuint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei);
24291
24292/// The prototype to the OpenGL function `InvalidateTexImage`
24293type PFNGLINVALIDATETEXIMAGEPROC = extern "system" fn(GLuint, GLint);
24294
24295/// The prototype to the OpenGL function `InvalidateBufferSubData`
24296type PFNGLINVALIDATEBUFFERSUBDATAPROC = extern "system" fn(GLuint, GLintptr, GLsizeiptr);
24297
24298/// The prototype to the OpenGL function `InvalidateBufferData`
24299type PFNGLINVALIDATEBUFFERDATAPROC = extern "system" fn(GLuint);
24300
24301/// The prototype to the OpenGL function `InvalidateFramebuffer`
24302type PFNGLINVALIDATEFRAMEBUFFERPROC = extern "system" fn(GLenum, GLsizei, *const GLenum);
24303
24304/// The prototype to the OpenGL function `InvalidateSubFramebuffer`
24305type PFNGLINVALIDATESUBFRAMEBUFFERPROC = extern "system" fn(GLenum, GLsizei, *const GLenum, GLint, GLint, GLsizei, GLsizei);
24306
24307/// The prototype to the OpenGL function `MultiDrawArraysIndirect`
24308type PFNGLMULTIDRAWARRAYSINDIRECTPROC = extern "system" fn(GLenum, *const c_void, GLsizei, GLsizei);
24309
24310/// The prototype to the OpenGL function `MultiDrawElementsIndirect`
24311type PFNGLMULTIDRAWELEMENTSINDIRECTPROC = extern "system" fn(GLenum, GLenum, *const c_void, GLsizei, GLsizei);
24312
24313/// The prototype to the OpenGL function `GetProgramInterfaceiv`
24314type PFNGLGETPROGRAMINTERFACEIVPROC = extern "system" fn(GLuint, GLenum, GLenum, *mut GLint);
24315
24316/// The prototype to the OpenGL function `GetProgramResourceIndex`
24317type PFNGLGETPROGRAMRESOURCEINDEXPROC = extern "system" fn(GLuint, GLenum, *const GLchar) -> GLuint;
24318
24319/// The prototype to the OpenGL function `GetProgramResourceName`
24320type PFNGLGETPROGRAMRESOURCENAMEPROC = extern "system" fn(GLuint, GLenum, GLuint, GLsizei, *mut GLsizei, *mut GLchar);
24321
24322/// The prototype to the OpenGL function `GetProgramResourceiv`
24323type PFNGLGETPROGRAMRESOURCEIVPROC = extern "system" fn(GLuint, GLenum, GLuint, GLsizei, *const GLenum, GLsizei, *mut GLsizei, *mut GLint);
24324
24325/// The prototype to the OpenGL function `GetProgramResourceLocation`
24326type PFNGLGETPROGRAMRESOURCELOCATIONPROC = extern "system" fn(GLuint, GLenum, *const GLchar) -> GLint;
24327
24328/// The prototype to the OpenGL function `GetProgramResourceLocationIndex`
24329type PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC = extern "system" fn(GLuint, GLenum, *const GLchar) -> GLint;
24330
24331/// The prototype to the OpenGL function `ShaderStorageBlockBinding`
24332type PFNGLSHADERSTORAGEBLOCKBINDINGPROC = extern "system" fn(GLuint, GLuint, GLuint);
24333
24334/// The prototype to the OpenGL function `TexBufferRange`
24335type PFNGLTEXBUFFERRANGEPROC = extern "system" fn(GLenum, GLenum, GLuint, GLintptr, GLsizeiptr);
24336
24337/// The prototype to the OpenGL function `TexStorage2DMultisample`
24338type PFNGLTEXSTORAGE2DMULTISAMPLEPROC = extern "system" fn(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLboolean);
24339
24340/// The prototype to the OpenGL function `TexStorage3DMultisample`
24341type PFNGLTEXSTORAGE3DMULTISAMPLEPROC = extern "system" fn(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean);
24342
24343/// The prototype to the OpenGL function `TextureView`
24344type PFNGLTEXTUREVIEWPROC = extern "system" fn(GLuint, GLenum, GLuint, GLenum, GLuint, GLuint, GLuint, GLuint);
24345
24346/// The prototype to the OpenGL function `BindVertexBuffer`
24347type PFNGLBINDVERTEXBUFFERPROC = extern "system" fn(GLuint, GLuint, GLintptr, GLsizei);
24348
24349/// The prototype to the OpenGL function `VertexAttribFormat`
24350type PFNGLVERTEXATTRIBFORMATPROC = extern "system" fn(GLuint, GLint, GLenum, GLboolean, GLuint);
24351
24352/// The prototype to the OpenGL function `VertexAttribIFormat`
24353type PFNGLVERTEXATTRIBIFORMATPROC = extern "system" fn(GLuint, GLint, GLenum, GLuint);
24354
24355/// The prototype to the OpenGL function `VertexAttribLFormat`
24356type PFNGLVERTEXATTRIBLFORMATPROC = extern "system" fn(GLuint, GLint, GLenum, GLuint);
24357
24358/// The prototype to the OpenGL function `VertexAttribBinding`
24359type PFNGLVERTEXATTRIBBINDINGPROC = extern "system" fn(GLuint, GLuint);
24360
24361/// The prototype to the OpenGL function `VertexBindingDivisor`
24362type PFNGLVERTEXBINDINGDIVISORPROC = extern "system" fn(GLuint, GLuint);
24363
24364/// The prototype to the OpenGL function `DebugMessageControl`
24365type PFNGLDEBUGMESSAGECONTROLPROC = extern "system" fn(GLenum, GLenum, GLenum, GLsizei, *const GLuint, GLboolean);
24366
24367/// The prototype to the OpenGL function `DebugMessageInsert`
24368type PFNGLDEBUGMESSAGEINSERTPROC = extern "system" fn(GLenum, GLenum, GLuint, GLenum, GLsizei, *const GLchar);
24369
24370/// The prototype to the OpenGL function `DebugMessageCallback`
24371type PFNGLDEBUGMESSAGECALLBACKPROC = extern "system" fn(GLDEBUGPROC, *const c_void);
24372
24373/// The prototype to the OpenGL function `GetDebugMessageLog`
24374type PFNGLGETDEBUGMESSAGELOGPROC = extern "system" fn(GLuint, GLsizei, *mut GLenum, *mut GLenum, *mut GLuint, *mut GLenum, *mut GLsizei, *mut GLchar) -> GLuint;
24375
24376/// The prototype to the OpenGL function `PushDebugGroup`
24377type PFNGLPUSHDEBUGGROUPPROC = extern "system" fn(GLenum, GLuint, GLsizei, *const GLchar);
24378
24379/// The prototype to the OpenGL function `PopDebugGroup`
24380type PFNGLPOPDEBUGGROUPPROC = extern "system" fn();
24381
24382/// The prototype to the OpenGL function `ObjectLabel`
24383type PFNGLOBJECTLABELPROC = extern "system" fn(GLenum, GLuint, GLsizei, *const GLchar);
24384
24385/// The prototype to the OpenGL function `GetObjectLabel`
24386type PFNGLGETOBJECTLABELPROC = extern "system" fn(GLenum, GLuint, GLsizei, *mut GLsizei, *mut GLchar);
24387
24388/// The prototype to the OpenGL function `ObjectPtrLabel`
24389type PFNGLOBJECTPTRLABELPROC = extern "system" fn(*const c_void, GLsizei, *const GLchar);
24390
24391/// The prototype to the OpenGL function `GetObjectPtrLabel`
24392type PFNGLGETOBJECTPTRLABELPROC = extern "system" fn(*const c_void, GLsizei, *mut GLsizei, *mut GLchar);
24393
24394/// The dummy function of `ClearBufferData()`
24395extern "system" fn dummy_pfnglclearbufferdataproc (_: GLenum, _: GLenum, _: GLenum, _: GLenum, _: *const c_void) {
24396	panic!("OpenGL function pointer `glClearBufferData()` is null.")
24397}
24398
24399/// The dummy function of `ClearBufferSubData()`
24400extern "system" fn dummy_pfnglclearbuffersubdataproc (_: GLenum, _: GLenum, _: GLintptr, _: GLsizeiptr, _: GLenum, _: GLenum, _: *const c_void) {
24401	panic!("OpenGL function pointer `glClearBufferSubData()` is null.")
24402}
24403
24404/// The dummy function of `DispatchCompute()`
24405extern "system" fn dummy_pfngldispatchcomputeproc (_: GLuint, _: GLuint, _: GLuint) {
24406	panic!("OpenGL function pointer `glDispatchCompute()` is null.")
24407}
24408
24409/// The dummy function of `DispatchComputeIndirect()`
24410extern "system" fn dummy_pfngldispatchcomputeindirectproc (_: GLintptr) {
24411	panic!("OpenGL function pointer `glDispatchComputeIndirect()` is null.")
24412}
24413
24414/// The dummy function of `CopyImageSubData()`
24415extern "system" fn dummy_pfnglcopyimagesubdataproc (_: GLuint, _: GLenum, _: GLint, _: GLint, _: GLint, _: GLint, _: GLuint, _: GLenum, _: GLint, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLsizei) {
24416	panic!("OpenGL function pointer `glCopyImageSubData()` is null.")
24417}
24418
24419/// The dummy function of `FramebufferParameteri()`
24420extern "system" fn dummy_pfnglframebufferparameteriproc (_: GLenum, _: GLenum, _: GLint) {
24421	panic!("OpenGL function pointer `glFramebufferParameteri()` is null.")
24422}
24423
24424/// The dummy function of `GetFramebufferParameteriv()`
24425extern "system" fn dummy_pfnglgetframebufferparameterivproc (_: GLenum, _: GLenum, _: *mut GLint) {
24426	panic!("OpenGL function pointer `glGetFramebufferParameteriv()` is null.")
24427}
24428
24429/// The dummy function of `GetInternalformati64v()`
24430extern "system" fn dummy_pfnglgetinternalformati64vproc (_: GLenum, _: GLenum, _: GLenum, _: GLsizei, _: *mut GLint64) {
24431	panic!("OpenGL function pointer `glGetInternalformati64v()` is null.")
24432}
24433
24434/// The dummy function of `InvalidateTexSubImage()`
24435extern "system" fn dummy_pfnglinvalidatetexsubimageproc (_: GLuint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLsizei) {
24436	panic!("OpenGL function pointer `glInvalidateTexSubImage()` is null.")
24437}
24438
24439/// The dummy function of `InvalidateTexImage()`
24440extern "system" fn dummy_pfnglinvalidateteximageproc (_: GLuint, _: GLint) {
24441	panic!("OpenGL function pointer `glInvalidateTexImage()` is null.")
24442}
24443
24444/// The dummy function of `InvalidateBufferSubData()`
24445extern "system" fn dummy_pfnglinvalidatebuffersubdataproc (_: GLuint, _: GLintptr, _: GLsizeiptr) {
24446	panic!("OpenGL function pointer `glInvalidateBufferSubData()` is null.")
24447}
24448
24449/// The dummy function of `InvalidateBufferData()`
24450extern "system" fn dummy_pfnglinvalidatebufferdataproc (_: GLuint) {
24451	panic!("OpenGL function pointer `glInvalidateBufferData()` is null.")
24452}
24453
24454/// The dummy function of `InvalidateFramebuffer()`
24455extern "system" fn dummy_pfnglinvalidateframebufferproc (_: GLenum, _: GLsizei, _: *const GLenum) {
24456	panic!("OpenGL function pointer `glInvalidateFramebuffer()` is null.")
24457}
24458
24459/// The dummy function of `InvalidateSubFramebuffer()`
24460extern "system" fn dummy_pfnglinvalidatesubframebufferproc (_: GLenum, _: GLsizei, _: *const GLenum, _: GLint, _: GLint, _: GLsizei, _: GLsizei) {
24461	panic!("OpenGL function pointer `glInvalidateSubFramebuffer()` is null.")
24462}
24463
24464/// The dummy function of `MultiDrawArraysIndirect()`
24465extern "system" fn dummy_pfnglmultidrawarraysindirectproc (_: GLenum, _: *const c_void, _: GLsizei, _: GLsizei) {
24466	panic!("OpenGL function pointer `glMultiDrawArraysIndirect()` is null.")
24467}
24468
24469/// The dummy function of `MultiDrawElementsIndirect()`
24470extern "system" fn dummy_pfnglmultidrawelementsindirectproc (_: GLenum, _: GLenum, _: *const c_void, _: GLsizei, _: GLsizei) {
24471	panic!("OpenGL function pointer `glMultiDrawElementsIndirect()` is null.")
24472}
24473
24474/// The dummy function of `GetProgramInterfaceiv()`
24475extern "system" fn dummy_pfnglgetprograminterfaceivproc (_: GLuint, _: GLenum, _: GLenum, _: *mut GLint) {
24476	panic!("OpenGL function pointer `glGetProgramInterfaceiv()` is null.")
24477}
24478
24479/// The dummy function of `GetProgramResourceIndex()`
24480extern "system" fn dummy_pfnglgetprogramresourceindexproc (_: GLuint, _: GLenum, _: *const GLchar) -> GLuint {
24481	panic!("OpenGL function pointer `glGetProgramResourceIndex()` is null.")
24482}
24483
24484/// The dummy function of `GetProgramResourceName()`
24485extern "system" fn dummy_pfnglgetprogramresourcenameproc (_: GLuint, _: GLenum, _: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLchar) {
24486	panic!("OpenGL function pointer `glGetProgramResourceName()` is null.")
24487}
24488
24489/// The dummy function of `GetProgramResourceiv()`
24490extern "system" fn dummy_pfnglgetprogramresourceivproc (_: GLuint, _: GLenum, _: GLuint, _: GLsizei, _: *const GLenum, _: GLsizei, _: *mut GLsizei, _: *mut GLint) {
24491	panic!("OpenGL function pointer `glGetProgramResourceiv()` is null.")
24492}
24493
24494/// The dummy function of `GetProgramResourceLocation()`
24495extern "system" fn dummy_pfnglgetprogramresourcelocationproc (_: GLuint, _: GLenum, _: *const GLchar) -> GLint {
24496	panic!("OpenGL function pointer `glGetProgramResourceLocation()` is null.")
24497}
24498
24499/// The dummy function of `GetProgramResourceLocationIndex()`
24500extern "system" fn dummy_pfnglgetprogramresourcelocationindexproc (_: GLuint, _: GLenum, _: *const GLchar) -> GLint {
24501	panic!("OpenGL function pointer `glGetProgramResourceLocationIndex()` is null.")
24502}
24503
24504/// The dummy function of `ShaderStorageBlockBinding()`
24505extern "system" fn dummy_pfnglshaderstorageblockbindingproc (_: GLuint, _: GLuint, _: GLuint) {
24506	panic!("OpenGL function pointer `glShaderStorageBlockBinding()` is null.")
24507}
24508
24509/// The dummy function of `TexBufferRange()`
24510extern "system" fn dummy_pfngltexbufferrangeproc (_: GLenum, _: GLenum, _: GLuint, _: GLintptr, _: GLsizeiptr) {
24511	panic!("OpenGL function pointer `glTexBufferRange()` is null.")
24512}
24513
24514/// The dummy function of `TexStorage2DMultisample()`
24515extern "system" fn dummy_pfngltexstorage2dmultisampleproc (_: GLenum, _: GLsizei, _: GLenum, _: GLsizei, _: GLsizei, _: GLboolean) {
24516	panic!("OpenGL function pointer `glTexStorage2DMultisample()` is null.")
24517}
24518
24519/// The dummy function of `TexStorage3DMultisample()`
24520extern "system" fn dummy_pfngltexstorage3dmultisampleproc (_: GLenum, _: GLsizei, _: GLenum, _: GLsizei, _: GLsizei, _: GLsizei, _: GLboolean) {
24521	panic!("OpenGL function pointer `glTexStorage3DMultisample()` is null.")
24522}
24523
24524/// The dummy function of `TextureView()`
24525extern "system" fn dummy_pfngltextureviewproc (_: GLuint, _: GLenum, _: GLuint, _: GLenum, _: GLuint, _: GLuint, _: GLuint, _: GLuint) {
24526	panic!("OpenGL function pointer `glTextureView()` is null.")
24527}
24528
24529/// The dummy function of `BindVertexBuffer()`
24530extern "system" fn dummy_pfnglbindvertexbufferproc (_: GLuint, _: GLuint, _: GLintptr, _: GLsizei) {
24531	panic!("OpenGL function pointer `glBindVertexBuffer()` is null.")
24532}
24533
24534/// The dummy function of `VertexAttribFormat()`
24535extern "system" fn dummy_pfnglvertexattribformatproc (_: GLuint, _: GLint, _: GLenum, _: GLboolean, _: GLuint) {
24536	panic!("OpenGL function pointer `glVertexAttribFormat()` is null.")
24537}
24538
24539/// The dummy function of `VertexAttribIFormat()`
24540extern "system" fn dummy_pfnglvertexattribiformatproc (_: GLuint, _: GLint, _: GLenum, _: GLuint) {
24541	panic!("OpenGL function pointer `glVertexAttribIFormat()` is null.")
24542}
24543
24544/// The dummy function of `VertexAttribLFormat()`
24545extern "system" fn dummy_pfnglvertexattriblformatproc (_: GLuint, _: GLint, _: GLenum, _: GLuint) {
24546	panic!("OpenGL function pointer `glVertexAttribLFormat()` is null.")
24547}
24548
24549/// The dummy function of `VertexAttribBinding()`
24550extern "system" fn dummy_pfnglvertexattribbindingproc (_: GLuint, _: GLuint) {
24551	panic!("OpenGL function pointer `glVertexAttribBinding()` is null.")
24552}
24553
24554/// The dummy function of `VertexBindingDivisor()`
24555extern "system" fn dummy_pfnglvertexbindingdivisorproc (_: GLuint, _: GLuint) {
24556	panic!("OpenGL function pointer `glVertexBindingDivisor()` is null.")
24557}
24558
24559/// The dummy function of `DebugMessageControl()`
24560extern "system" fn dummy_pfngldebugmessagecontrolproc (_: GLenum, _: GLenum, _: GLenum, _: GLsizei, _: *const GLuint, _: GLboolean) {
24561	panic!("OpenGL function pointer `glDebugMessageControl()` is null.")
24562}
24563
24564/// The dummy function of `DebugMessageInsert()`
24565extern "system" fn dummy_pfngldebugmessageinsertproc (_: GLenum, _: GLenum, _: GLuint, _: GLenum, _: GLsizei, _: *const GLchar) {
24566	panic!("OpenGL function pointer `glDebugMessageInsert()` is null.")
24567}
24568
24569/// The dummy function of `DebugMessageCallback()`
24570extern "system" fn dummy_pfngldebugmessagecallbackproc (_: GLDEBUGPROC, _: *const c_void) {
24571	panic!("OpenGL function pointer `glDebugMessageCallback()` is null.")
24572}
24573
24574/// The dummy function of `GetDebugMessageLog()`
24575extern "system" fn dummy_pfnglgetdebugmessagelogproc (_: GLuint, _: GLsizei, _: *mut GLenum, _: *mut GLenum, _: *mut GLuint, _: *mut GLenum, _: *mut GLsizei, _: *mut GLchar) -> GLuint {
24576	panic!("OpenGL function pointer `glGetDebugMessageLog()` is null.")
24577}
24578
24579/// The dummy function of `PushDebugGroup()`
24580extern "system" fn dummy_pfnglpushdebuggroupproc (_: GLenum, _: GLuint, _: GLsizei, _: *const GLchar) {
24581	panic!("OpenGL function pointer `glPushDebugGroup()` is null.")
24582}
24583
24584/// The dummy function of `PopDebugGroup()`
24585extern "system" fn dummy_pfnglpopdebuggroupproc () {
24586	panic!("OpenGL function pointer `glPopDebugGroup()` is null.")
24587}
24588
24589/// The dummy function of `ObjectLabel()`
24590extern "system" fn dummy_pfnglobjectlabelproc (_: GLenum, _: GLuint, _: GLsizei, _: *const GLchar) {
24591	panic!("OpenGL function pointer `glObjectLabel()` is null.")
24592}
24593
24594/// The dummy function of `GetObjectLabel()`
24595extern "system" fn dummy_pfnglgetobjectlabelproc (_: GLenum, _: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLchar) {
24596	panic!("OpenGL function pointer `glGetObjectLabel()` is null.")
24597}
24598
24599/// The dummy function of `ObjectPtrLabel()`
24600extern "system" fn dummy_pfnglobjectptrlabelproc (_: *const c_void, _: GLsizei, _: *const GLchar) {
24601	panic!("OpenGL function pointer `glObjectPtrLabel()` is null.")
24602}
24603
24604/// The dummy function of `GetObjectPtrLabel()`
24605extern "system" fn dummy_pfnglgetobjectptrlabelproc (_: *const c_void, _: GLsizei, _: *mut GLsizei, _: *mut GLchar) {
24606	panic!("OpenGL function pointer `glGetObjectPtrLabel()` is null.")
24607}
24608/// Constant value defined from OpenGL 4.3
24609pub const GL_NUM_SHADING_LANGUAGE_VERSIONS: GLenum = 0x82E9;
24610
24611/// Constant value defined from OpenGL 4.3
24612pub const GL_VERTEX_ATTRIB_ARRAY_LONG: GLenum = 0x874E;
24613
24614/// Constant value defined from OpenGL 4.3
24615pub const GL_COMPRESSED_RGB8_ETC2: GLenum = 0x9274;
24616
24617/// Constant value defined from OpenGL 4.3
24618pub const GL_COMPRESSED_SRGB8_ETC2: GLenum = 0x9275;
24619
24620/// Constant value defined from OpenGL 4.3
24621pub const GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: GLenum = 0x9276;
24622
24623/// Constant value defined from OpenGL 4.3
24624pub const GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: GLenum = 0x9277;
24625
24626/// Constant value defined from OpenGL 4.3
24627pub const GL_COMPRESSED_RGBA8_ETC2_EAC: GLenum = 0x9278;
24628
24629/// Constant value defined from OpenGL 4.3
24630pub const GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: GLenum = 0x9279;
24631
24632/// Constant value defined from OpenGL 4.3
24633pub const GL_COMPRESSED_R11_EAC: GLenum = 0x9270;
24634
24635/// Constant value defined from OpenGL 4.3
24636pub const GL_COMPRESSED_SIGNED_R11_EAC: GLenum = 0x9271;
24637
24638/// Constant value defined from OpenGL 4.3
24639pub const GL_COMPRESSED_RG11_EAC: GLenum = 0x9272;
24640
24641/// Constant value defined from OpenGL 4.3
24642pub const GL_COMPRESSED_SIGNED_RG11_EAC: GLenum = 0x9273;
24643
24644/// Constant value defined from OpenGL 4.3
24645pub const GL_PRIMITIVE_RESTART_FIXED_INDEX: GLenum = 0x8D69;
24646
24647/// Constant value defined from OpenGL 4.3
24648pub const GL_ANY_SAMPLES_PASSED_CONSERVATIVE: GLenum = 0x8D6A;
24649
24650/// Constant value defined from OpenGL 4.3
24651pub const GL_MAX_ELEMENT_INDEX: GLenum = 0x8D6B;
24652
24653/// Constant value defined from OpenGL 4.3
24654pub const GL_COMPUTE_SHADER: GLenum = 0x91B9;
24655
24656/// Constant value defined from OpenGL 4.3
24657pub const GL_MAX_COMPUTE_UNIFORM_BLOCKS: GLenum = 0x91BB;
24658
24659/// Constant value defined from OpenGL 4.3
24660pub const GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS: GLenum = 0x91BC;
24661
24662/// Constant value defined from OpenGL 4.3
24663pub const GL_MAX_COMPUTE_IMAGE_UNIFORMS: GLenum = 0x91BD;
24664
24665/// Constant value defined from OpenGL 4.3
24666pub const GL_MAX_COMPUTE_SHARED_MEMORY_SIZE: GLenum = 0x8262;
24667
24668/// Constant value defined from OpenGL 4.3
24669pub const GL_MAX_COMPUTE_UNIFORM_COMPONENTS: GLenum = 0x8263;
24670
24671/// Constant value defined from OpenGL 4.3
24672pub const GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS: GLenum = 0x8264;
24673
24674/// Constant value defined from OpenGL 4.3
24675pub const GL_MAX_COMPUTE_ATOMIC_COUNTERS: GLenum = 0x8265;
24676
24677/// Constant value defined from OpenGL 4.3
24678pub const GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS: GLenum = 0x8266;
24679
24680/// Constant value defined from OpenGL 4.3
24681pub const GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS: GLenum = 0x90EB;
24682
24683/// Constant value defined from OpenGL 4.3
24684pub const GL_MAX_COMPUTE_WORK_GROUP_COUNT: GLenum = 0x91BE;
24685
24686/// Constant value defined from OpenGL 4.3
24687pub const GL_MAX_COMPUTE_WORK_GROUP_SIZE: GLenum = 0x91BF;
24688
24689/// Constant value defined from OpenGL 4.3
24690pub const GL_COMPUTE_WORK_GROUP_SIZE: GLenum = 0x8267;
24691
24692/// Constant value defined from OpenGL 4.3
24693pub const GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER: GLenum = 0x90EC;
24694
24695/// Constant value defined from OpenGL 4.3
24696pub const GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER: GLenum = 0x90ED;
24697
24698/// Constant value defined from OpenGL 4.3
24699pub const GL_DISPATCH_INDIRECT_BUFFER: GLenum = 0x90EE;
24700
24701/// Constant value defined from OpenGL 4.3
24702pub const GL_DISPATCH_INDIRECT_BUFFER_BINDING: GLenum = 0x90EF;
24703
24704/// Constant value defined from OpenGL 4.3
24705pub const GL_COMPUTE_SHADER_BIT: GLbitfield = 0x00000020;
24706
24707/// Constant value defined from OpenGL 4.3
24708pub const GL_DEBUG_OUTPUT_SYNCHRONOUS: GLenum = 0x8242;
24709
24710/// Constant value defined from OpenGL 4.3
24711pub const GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH: GLenum = 0x8243;
24712
24713/// Constant value defined from OpenGL 4.3
24714pub const GL_DEBUG_CALLBACK_FUNCTION: GLenum = 0x8244;
24715
24716/// Constant value defined from OpenGL 4.3
24717pub const GL_DEBUG_CALLBACK_USER_PARAM: GLenum = 0x8245;
24718
24719/// Constant value defined from OpenGL 4.3
24720pub const GL_DEBUG_SOURCE_API: GLenum = 0x8246;
24721
24722/// Constant value defined from OpenGL 4.3
24723pub const GL_DEBUG_SOURCE_WINDOW_SYSTEM: GLenum = 0x8247;
24724
24725/// Constant value defined from OpenGL 4.3
24726pub const GL_DEBUG_SOURCE_SHADER_COMPILER: GLenum = 0x8248;
24727
24728/// Constant value defined from OpenGL 4.3
24729pub const GL_DEBUG_SOURCE_THIRD_PARTY: GLenum = 0x8249;
24730
24731/// Constant value defined from OpenGL 4.3
24732pub const GL_DEBUG_SOURCE_APPLICATION: GLenum = 0x824A;
24733
24734/// Constant value defined from OpenGL 4.3
24735pub const GL_DEBUG_SOURCE_OTHER: GLenum = 0x824B;
24736
24737/// Constant value defined from OpenGL 4.3
24738pub const GL_DEBUG_TYPE_ERROR: GLenum = 0x824C;
24739
24740/// Constant value defined from OpenGL 4.3
24741pub const GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR: GLenum = 0x824D;
24742
24743/// Constant value defined from OpenGL 4.3
24744pub const GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR: GLenum = 0x824E;
24745
24746/// Constant value defined from OpenGL 4.3
24747pub const GL_DEBUG_TYPE_PORTABILITY: GLenum = 0x824F;
24748
24749/// Constant value defined from OpenGL 4.3
24750pub const GL_DEBUG_TYPE_PERFORMANCE: GLenum = 0x8250;
24751
24752/// Constant value defined from OpenGL 4.3
24753pub const GL_DEBUG_TYPE_OTHER: GLenum = 0x8251;
24754
24755/// Constant value defined from OpenGL 4.3
24756pub const GL_MAX_DEBUG_MESSAGE_LENGTH: GLenum = 0x9143;
24757
24758/// Constant value defined from OpenGL 4.3
24759pub const GL_MAX_DEBUG_LOGGED_MESSAGES: GLenum = 0x9144;
24760
24761/// Constant value defined from OpenGL 4.3
24762pub const GL_DEBUG_LOGGED_MESSAGES: GLenum = 0x9145;
24763
24764/// Constant value defined from OpenGL 4.3
24765pub const GL_DEBUG_SEVERITY_HIGH: GLenum = 0x9146;
24766
24767/// Constant value defined from OpenGL 4.3
24768pub const GL_DEBUG_SEVERITY_MEDIUM: GLenum = 0x9147;
24769
24770/// Constant value defined from OpenGL 4.3
24771pub const GL_DEBUG_SEVERITY_LOW: GLenum = 0x9148;
24772
24773/// Constant value defined from OpenGL 4.3
24774pub const GL_DEBUG_TYPE_MARKER: GLenum = 0x8268;
24775
24776/// Constant value defined from OpenGL 4.3
24777pub const GL_DEBUG_TYPE_PUSH_GROUP: GLenum = 0x8269;
24778
24779/// Constant value defined from OpenGL 4.3
24780pub const GL_DEBUG_TYPE_POP_GROUP: GLenum = 0x826A;
24781
24782/// Constant value defined from OpenGL 4.3
24783pub const GL_DEBUG_SEVERITY_NOTIFICATION: GLenum = 0x826B;
24784
24785/// Constant value defined from OpenGL 4.3
24786pub const GL_MAX_DEBUG_GROUP_STACK_DEPTH: GLenum = 0x826C;
24787
24788/// Constant value defined from OpenGL 4.3
24789pub const GL_DEBUG_GROUP_STACK_DEPTH: GLenum = 0x826D;
24790
24791/// Constant value defined from OpenGL 4.3
24792pub const GL_BUFFER: GLenum = 0x82E0;
24793
24794/// Constant value defined from OpenGL 4.3
24795pub const GL_SHADER: GLenum = 0x82E1;
24796
24797/// Constant value defined from OpenGL 4.3
24798pub const GL_PROGRAM: GLenum = 0x82E2;
24799
24800/// Constant value defined from OpenGL 4.3
24801pub const GL_QUERY: GLenum = 0x82E3;
24802
24803/// Constant value defined from OpenGL 4.3
24804pub const GL_PROGRAM_PIPELINE: GLenum = 0x82E4;
24805
24806/// Constant value defined from OpenGL 4.3
24807pub const GL_SAMPLER: GLenum = 0x82E6;
24808
24809/// Constant value defined from OpenGL 4.3
24810pub const GL_MAX_LABEL_LENGTH: GLenum = 0x82E8;
24811
24812/// Constant value defined from OpenGL 4.3
24813pub const GL_DEBUG_OUTPUT: GLenum = 0x92E0;
24814
24815/// Constant value defined from OpenGL 4.3
24816pub const GL_CONTEXT_FLAG_DEBUG_BIT: GLbitfield = 0x00000002;
24817
24818/// Constant value defined from OpenGL 4.3
24819pub const GL_MAX_UNIFORM_LOCATIONS: GLenum = 0x826E;
24820
24821/// Constant value defined from OpenGL 4.3
24822pub const GL_FRAMEBUFFER_DEFAULT_WIDTH: GLenum = 0x9310;
24823
24824/// Constant value defined from OpenGL 4.3
24825pub const GL_FRAMEBUFFER_DEFAULT_HEIGHT: GLenum = 0x9311;
24826
24827/// Constant value defined from OpenGL 4.3
24828pub const GL_FRAMEBUFFER_DEFAULT_LAYERS: GLenum = 0x9312;
24829
24830/// Constant value defined from OpenGL 4.3
24831pub const GL_FRAMEBUFFER_DEFAULT_SAMPLES: GLenum = 0x9313;
24832
24833/// Constant value defined from OpenGL 4.3
24834pub const GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS: GLenum = 0x9314;
24835
24836/// Constant value defined from OpenGL 4.3
24837pub const GL_MAX_FRAMEBUFFER_WIDTH: GLenum = 0x9315;
24838
24839/// Constant value defined from OpenGL 4.3
24840pub const GL_MAX_FRAMEBUFFER_HEIGHT: GLenum = 0x9316;
24841
24842/// Constant value defined from OpenGL 4.3
24843pub const GL_MAX_FRAMEBUFFER_LAYERS: GLenum = 0x9317;
24844
24845/// Constant value defined from OpenGL 4.3
24846pub const GL_MAX_FRAMEBUFFER_SAMPLES: GLenum = 0x9318;
24847
24848/// Constant value defined from OpenGL 4.3
24849pub const GL_INTERNALFORMAT_SUPPORTED: GLenum = 0x826F;
24850
24851/// Constant value defined from OpenGL 4.3
24852pub const GL_INTERNALFORMAT_PREFERRED: GLenum = 0x8270;
24853
24854/// Constant value defined from OpenGL 4.3
24855pub const GL_INTERNALFORMAT_RED_SIZE: GLenum = 0x8271;
24856
24857/// Constant value defined from OpenGL 4.3
24858pub const GL_INTERNALFORMAT_GREEN_SIZE: GLenum = 0x8272;
24859
24860/// Constant value defined from OpenGL 4.3
24861pub const GL_INTERNALFORMAT_BLUE_SIZE: GLenum = 0x8273;
24862
24863/// Constant value defined from OpenGL 4.3
24864pub const GL_INTERNALFORMAT_ALPHA_SIZE: GLenum = 0x8274;
24865
24866/// Constant value defined from OpenGL 4.3
24867pub const GL_INTERNALFORMAT_DEPTH_SIZE: GLenum = 0x8275;
24868
24869/// Constant value defined from OpenGL 4.3
24870pub const GL_INTERNALFORMAT_STENCIL_SIZE: GLenum = 0x8276;
24871
24872/// Constant value defined from OpenGL 4.3
24873pub const GL_INTERNALFORMAT_SHARED_SIZE: GLenum = 0x8277;
24874
24875/// Constant value defined from OpenGL 4.3
24876pub const GL_INTERNALFORMAT_RED_TYPE: GLenum = 0x8278;
24877
24878/// Constant value defined from OpenGL 4.3
24879pub const GL_INTERNALFORMAT_GREEN_TYPE: GLenum = 0x8279;
24880
24881/// Constant value defined from OpenGL 4.3
24882pub const GL_INTERNALFORMAT_BLUE_TYPE: GLenum = 0x827A;
24883
24884/// Constant value defined from OpenGL 4.3
24885pub const GL_INTERNALFORMAT_ALPHA_TYPE: GLenum = 0x827B;
24886
24887/// Constant value defined from OpenGL 4.3
24888pub const GL_INTERNALFORMAT_DEPTH_TYPE: GLenum = 0x827C;
24889
24890/// Constant value defined from OpenGL 4.3
24891pub const GL_INTERNALFORMAT_STENCIL_TYPE: GLenum = 0x827D;
24892
24893/// Constant value defined from OpenGL 4.3
24894pub const GL_MAX_WIDTH: GLenum = 0x827E;
24895
24896/// Constant value defined from OpenGL 4.3
24897pub const GL_MAX_HEIGHT: GLenum = 0x827F;
24898
24899/// Constant value defined from OpenGL 4.3
24900pub const GL_MAX_DEPTH: GLenum = 0x8280;
24901
24902/// Constant value defined from OpenGL 4.3
24903pub const GL_MAX_LAYERS: GLenum = 0x8281;
24904
24905/// Constant value defined from OpenGL 4.3
24906pub const GL_MAX_COMBINED_DIMENSIONS: GLenum = 0x8282;
24907
24908/// Constant value defined from OpenGL 4.3
24909pub const GL_COLOR_COMPONENTS: GLenum = 0x8283;
24910
24911/// Constant value defined from OpenGL 4.3
24912pub const GL_DEPTH_COMPONENTS: GLenum = 0x8284;
24913
24914/// Constant value defined from OpenGL 4.3
24915pub const GL_STENCIL_COMPONENTS: GLenum = 0x8285;
24916
24917/// Constant value defined from OpenGL 4.3
24918pub const GL_COLOR_RENDERABLE: GLenum = 0x8286;
24919
24920/// Constant value defined from OpenGL 4.3
24921pub const GL_DEPTH_RENDERABLE: GLenum = 0x8287;
24922
24923/// Constant value defined from OpenGL 4.3
24924pub const GL_STENCIL_RENDERABLE: GLenum = 0x8288;
24925
24926/// Constant value defined from OpenGL 4.3
24927pub const GL_FRAMEBUFFER_RENDERABLE: GLenum = 0x8289;
24928
24929/// Constant value defined from OpenGL 4.3
24930pub const GL_FRAMEBUFFER_RENDERABLE_LAYERED: GLenum = 0x828A;
24931
24932/// Constant value defined from OpenGL 4.3
24933pub const GL_FRAMEBUFFER_BLEND: GLenum = 0x828B;
24934
24935/// Constant value defined from OpenGL 4.3
24936pub const GL_READ_PIXELS: GLenum = 0x828C;
24937
24938/// Constant value defined from OpenGL 4.3
24939pub const GL_READ_PIXELS_FORMAT: GLenum = 0x828D;
24940
24941/// Constant value defined from OpenGL 4.3
24942pub const GL_READ_PIXELS_TYPE: GLenum = 0x828E;
24943
24944/// Constant value defined from OpenGL 4.3
24945pub const GL_TEXTURE_IMAGE_FORMAT: GLenum = 0x828F;
24946
24947/// Constant value defined from OpenGL 4.3
24948pub const GL_TEXTURE_IMAGE_TYPE: GLenum = 0x8290;
24949
24950/// Constant value defined from OpenGL 4.3
24951pub const GL_GET_TEXTURE_IMAGE_FORMAT: GLenum = 0x8291;
24952
24953/// Constant value defined from OpenGL 4.3
24954pub const GL_GET_TEXTURE_IMAGE_TYPE: GLenum = 0x8292;
24955
24956/// Constant value defined from OpenGL 4.3
24957pub const GL_MIPMAP: GLenum = 0x8293;
24958
24959/// Constant value defined from OpenGL 4.3
24960pub const GL_MANUAL_GENERATE_MIPMAP: GLenum = 0x8294;
24961
24962/// Constant value defined from OpenGL 4.3
24963pub const GL_AUTO_GENERATE_MIPMAP: GLenum = 0x8295;
24964
24965/// Constant value defined from OpenGL 4.3
24966pub const GL_COLOR_ENCODING: GLenum = 0x8296;
24967
24968/// Constant value defined from OpenGL 4.3
24969pub const GL_SRGB_READ: GLenum = 0x8297;
24970
24971/// Constant value defined from OpenGL 4.3
24972pub const GL_SRGB_WRITE: GLenum = 0x8298;
24973
24974/// Constant value defined from OpenGL 4.3
24975pub const GL_FILTER: GLenum = 0x829A;
24976
24977/// Constant value defined from OpenGL 4.3
24978pub const GL_VERTEX_TEXTURE: GLenum = 0x829B;
24979
24980/// Constant value defined from OpenGL 4.3
24981pub const GL_TESS_CONTROL_TEXTURE: GLenum = 0x829C;
24982
24983/// Constant value defined from OpenGL 4.3
24984pub const GL_TESS_EVALUATION_TEXTURE: GLenum = 0x829D;
24985
24986/// Constant value defined from OpenGL 4.3
24987pub const GL_GEOMETRY_TEXTURE: GLenum = 0x829E;
24988
24989/// Constant value defined from OpenGL 4.3
24990pub const GL_FRAGMENT_TEXTURE: GLenum = 0x829F;
24991
24992/// Constant value defined from OpenGL 4.3
24993pub const GL_COMPUTE_TEXTURE: GLenum = 0x82A0;
24994
24995/// Constant value defined from OpenGL 4.3
24996pub const GL_TEXTURE_SHADOW: GLenum = 0x82A1;
24997
24998/// Constant value defined from OpenGL 4.3
24999pub const GL_TEXTURE_GATHER: GLenum = 0x82A2;
25000
25001/// Constant value defined from OpenGL 4.3
25002pub const GL_TEXTURE_GATHER_SHADOW: GLenum = 0x82A3;
25003
25004/// Constant value defined from OpenGL 4.3
25005pub const GL_SHADER_IMAGE_LOAD: GLenum = 0x82A4;
25006
25007/// Constant value defined from OpenGL 4.3
25008pub const GL_SHADER_IMAGE_STORE: GLenum = 0x82A5;
25009
25010/// Constant value defined from OpenGL 4.3
25011pub const GL_SHADER_IMAGE_ATOMIC: GLenum = 0x82A6;
25012
25013/// Constant value defined from OpenGL 4.3
25014pub const GL_IMAGE_TEXEL_SIZE: GLenum = 0x82A7;
25015
25016/// Constant value defined from OpenGL 4.3
25017pub const GL_IMAGE_COMPATIBILITY_CLASS: GLenum = 0x82A8;
25018
25019/// Constant value defined from OpenGL 4.3
25020pub const GL_IMAGE_PIXEL_FORMAT: GLenum = 0x82A9;
25021
25022/// Constant value defined from OpenGL 4.3
25023pub const GL_IMAGE_PIXEL_TYPE: GLenum = 0x82AA;
25024
25025/// Constant value defined from OpenGL 4.3
25026pub const GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST: GLenum = 0x82AC;
25027
25028/// Constant value defined from OpenGL 4.3
25029pub const GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST: GLenum = 0x82AD;
25030
25031/// Constant value defined from OpenGL 4.3
25032pub const GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE: GLenum = 0x82AE;
25033
25034/// Constant value defined from OpenGL 4.3
25035pub const GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE: GLenum = 0x82AF;
25036
25037/// Constant value defined from OpenGL 4.3
25038pub const GL_TEXTURE_COMPRESSED_BLOCK_WIDTH: GLenum = 0x82B1;
25039
25040/// Constant value defined from OpenGL 4.3
25041pub const GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT: GLenum = 0x82B2;
25042
25043/// Constant value defined from OpenGL 4.3
25044pub const GL_TEXTURE_COMPRESSED_BLOCK_SIZE: GLenum = 0x82B3;
25045
25046/// Constant value defined from OpenGL 4.3
25047pub const GL_CLEAR_BUFFER: GLenum = 0x82B4;
25048
25049/// Constant value defined from OpenGL 4.3
25050pub const GL_TEXTURE_VIEW: GLenum = 0x82B5;
25051
25052/// Constant value defined from OpenGL 4.3
25053pub const GL_VIEW_COMPATIBILITY_CLASS: GLenum = 0x82B6;
25054
25055/// Constant value defined from OpenGL 4.3
25056pub const GL_FULL_SUPPORT: GLenum = 0x82B7;
25057
25058/// Constant value defined from OpenGL 4.3
25059pub const GL_CAVEAT_SUPPORT: GLenum = 0x82B8;
25060
25061/// Constant value defined from OpenGL 4.3
25062pub const GL_IMAGE_CLASS_4_X_32: GLenum = 0x82B9;
25063
25064/// Constant value defined from OpenGL 4.3
25065pub const GL_IMAGE_CLASS_2_X_32: GLenum = 0x82BA;
25066
25067/// Constant value defined from OpenGL 4.3
25068pub const GL_IMAGE_CLASS_1_X_32: GLenum = 0x82BB;
25069
25070/// Constant value defined from OpenGL 4.3
25071pub const GL_IMAGE_CLASS_4_X_16: GLenum = 0x82BC;
25072
25073/// Constant value defined from OpenGL 4.3
25074pub const GL_IMAGE_CLASS_2_X_16: GLenum = 0x82BD;
25075
25076/// Constant value defined from OpenGL 4.3
25077pub const GL_IMAGE_CLASS_1_X_16: GLenum = 0x82BE;
25078
25079/// Constant value defined from OpenGL 4.3
25080pub const GL_IMAGE_CLASS_4_X_8: GLenum = 0x82BF;
25081
25082/// Constant value defined from OpenGL 4.3
25083pub const GL_IMAGE_CLASS_2_X_8: GLenum = 0x82C0;
25084
25085/// Constant value defined from OpenGL 4.3
25086pub const GL_IMAGE_CLASS_1_X_8: GLenum = 0x82C1;
25087
25088/// Constant value defined from OpenGL 4.3
25089pub const GL_IMAGE_CLASS_11_11_10: GLenum = 0x82C2;
25090
25091/// Constant value defined from OpenGL 4.3
25092pub const GL_IMAGE_CLASS_10_10_10_2: GLenum = 0x82C3;
25093
25094/// Constant value defined from OpenGL 4.3
25095pub const GL_VIEW_CLASS_128_BITS: GLenum = 0x82C4;
25096
25097/// Constant value defined from OpenGL 4.3
25098pub const GL_VIEW_CLASS_96_BITS: GLenum = 0x82C5;
25099
25100/// Constant value defined from OpenGL 4.3
25101pub const GL_VIEW_CLASS_64_BITS: GLenum = 0x82C6;
25102
25103/// Constant value defined from OpenGL 4.3
25104pub const GL_VIEW_CLASS_48_BITS: GLenum = 0x82C7;
25105
25106/// Constant value defined from OpenGL 4.3
25107pub const GL_VIEW_CLASS_32_BITS: GLenum = 0x82C8;
25108
25109/// Constant value defined from OpenGL 4.3
25110pub const GL_VIEW_CLASS_24_BITS: GLenum = 0x82C9;
25111
25112/// Constant value defined from OpenGL 4.3
25113pub const GL_VIEW_CLASS_16_BITS: GLenum = 0x82CA;
25114
25115/// Constant value defined from OpenGL 4.3
25116pub const GL_VIEW_CLASS_8_BITS: GLenum = 0x82CB;
25117
25118/// Constant value defined from OpenGL 4.3
25119pub const GL_VIEW_CLASS_S3TC_DXT1_RGB: GLenum = 0x82CC;
25120
25121/// Constant value defined from OpenGL 4.3
25122pub const GL_VIEW_CLASS_S3TC_DXT1_RGBA: GLenum = 0x82CD;
25123
25124/// Constant value defined from OpenGL 4.3
25125pub const GL_VIEW_CLASS_S3TC_DXT3_RGBA: GLenum = 0x82CE;
25126
25127/// Constant value defined from OpenGL 4.3
25128pub const GL_VIEW_CLASS_S3TC_DXT5_RGBA: GLenum = 0x82CF;
25129
25130/// Constant value defined from OpenGL 4.3
25131pub const GL_VIEW_CLASS_RGTC1_RED: GLenum = 0x82D0;
25132
25133/// Constant value defined from OpenGL 4.3
25134pub const GL_VIEW_CLASS_RGTC2_RG: GLenum = 0x82D1;
25135
25136/// Constant value defined from OpenGL 4.3
25137pub const GL_VIEW_CLASS_BPTC_UNORM: GLenum = 0x82D2;
25138
25139/// Constant value defined from OpenGL 4.3
25140pub const GL_VIEW_CLASS_BPTC_FLOAT: GLenum = 0x82D3;
25141
25142/// Constant value defined from OpenGL 4.3
25143pub const GL_UNIFORM: GLenum = 0x92E1;
25144
25145/// Constant value defined from OpenGL 4.3
25146pub const GL_UNIFORM_BLOCK: GLenum = 0x92E2;
25147
25148/// Constant value defined from OpenGL 4.3
25149pub const GL_PROGRAM_INPUT: GLenum = 0x92E3;
25150
25151/// Constant value defined from OpenGL 4.3
25152pub const GL_PROGRAM_OUTPUT: GLenum = 0x92E4;
25153
25154/// Constant value defined from OpenGL 4.3
25155pub const GL_BUFFER_VARIABLE: GLenum = 0x92E5;
25156
25157/// Constant value defined from OpenGL 4.3
25158pub const GL_SHADER_STORAGE_BLOCK: GLenum = 0x92E6;
25159
25160/// Constant value defined from OpenGL 4.3
25161pub const GL_VERTEX_SUBROUTINE: GLenum = 0x92E8;
25162
25163/// Constant value defined from OpenGL 4.3
25164pub const GL_TESS_CONTROL_SUBROUTINE: GLenum = 0x92E9;
25165
25166/// Constant value defined from OpenGL 4.3
25167pub const GL_TESS_EVALUATION_SUBROUTINE: GLenum = 0x92EA;
25168
25169/// Constant value defined from OpenGL 4.3
25170pub const GL_GEOMETRY_SUBROUTINE: GLenum = 0x92EB;
25171
25172/// Constant value defined from OpenGL 4.3
25173pub const GL_FRAGMENT_SUBROUTINE: GLenum = 0x92EC;
25174
25175/// Constant value defined from OpenGL 4.3
25176pub const GL_COMPUTE_SUBROUTINE: GLenum = 0x92ED;
25177
25178/// Constant value defined from OpenGL 4.3
25179pub const GL_VERTEX_SUBROUTINE_UNIFORM: GLenum = 0x92EE;
25180
25181/// Constant value defined from OpenGL 4.3
25182pub const GL_TESS_CONTROL_SUBROUTINE_UNIFORM: GLenum = 0x92EF;
25183
25184/// Constant value defined from OpenGL 4.3
25185pub const GL_TESS_EVALUATION_SUBROUTINE_UNIFORM: GLenum = 0x92F0;
25186
25187/// Constant value defined from OpenGL 4.3
25188pub const GL_GEOMETRY_SUBROUTINE_UNIFORM: GLenum = 0x92F1;
25189
25190/// Constant value defined from OpenGL 4.3
25191pub const GL_FRAGMENT_SUBROUTINE_UNIFORM: GLenum = 0x92F2;
25192
25193/// Constant value defined from OpenGL 4.3
25194pub const GL_COMPUTE_SUBROUTINE_UNIFORM: GLenum = 0x92F3;
25195
25196/// Constant value defined from OpenGL 4.3
25197pub const GL_TRANSFORM_FEEDBACK_VARYING: GLenum = 0x92F4;
25198
25199/// Constant value defined from OpenGL 4.3
25200pub const GL_ACTIVE_RESOURCES: GLenum = 0x92F5;
25201
25202/// Constant value defined from OpenGL 4.3
25203pub const GL_MAX_NAME_LENGTH: GLenum = 0x92F6;
25204
25205/// Constant value defined from OpenGL 4.3
25206pub const GL_MAX_NUM_ACTIVE_VARIABLES: GLenum = 0x92F7;
25207
25208/// Constant value defined from OpenGL 4.3
25209pub const GL_MAX_NUM_COMPATIBLE_SUBROUTINES: GLenum = 0x92F8;
25210
25211/// Constant value defined from OpenGL 4.3
25212pub const GL_NAME_LENGTH: GLenum = 0x92F9;
25213
25214/// Constant value defined from OpenGL 4.3
25215pub const GL_TYPE: GLenum = 0x92FA;
25216
25217/// Constant value defined from OpenGL 4.3
25218pub const GL_ARRAY_SIZE: GLenum = 0x92FB;
25219
25220/// Constant value defined from OpenGL 4.3
25221pub const GL_OFFSET: GLenum = 0x92FC;
25222
25223/// Constant value defined from OpenGL 4.3
25224pub const GL_BLOCK_INDEX: GLenum = 0x92FD;
25225
25226/// Constant value defined from OpenGL 4.3
25227pub const GL_ARRAY_STRIDE: GLenum = 0x92FE;
25228
25229/// Constant value defined from OpenGL 4.3
25230pub const GL_MATRIX_STRIDE: GLenum = 0x92FF;
25231
25232/// Constant value defined from OpenGL 4.3
25233pub const GL_IS_ROW_MAJOR: GLenum = 0x9300;
25234
25235/// Constant value defined from OpenGL 4.3
25236pub const GL_ATOMIC_COUNTER_BUFFER_INDEX: GLenum = 0x9301;
25237
25238/// Constant value defined from OpenGL 4.3
25239pub const GL_BUFFER_BINDING: GLenum = 0x9302;
25240
25241/// Constant value defined from OpenGL 4.3
25242pub const GL_BUFFER_DATA_SIZE: GLenum = 0x9303;
25243
25244/// Constant value defined from OpenGL 4.3
25245pub const GL_NUM_ACTIVE_VARIABLES: GLenum = 0x9304;
25246
25247/// Constant value defined from OpenGL 4.3
25248pub const GL_ACTIVE_VARIABLES: GLenum = 0x9305;
25249
25250/// Constant value defined from OpenGL 4.3
25251pub const GL_REFERENCED_BY_VERTEX_SHADER: GLenum = 0x9306;
25252
25253/// Constant value defined from OpenGL 4.3
25254pub const GL_REFERENCED_BY_TESS_CONTROL_SHADER: GLenum = 0x9307;
25255
25256/// Constant value defined from OpenGL 4.3
25257pub const GL_REFERENCED_BY_TESS_EVALUATION_SHADER: GLenum = 0x9308;
25258
25259/// Constant value defined from OpenGL 4.3
25260pub const GL_REFERENCED_BY_GEOMETRY_SHADER: GLenum = 0x9309;
25261
25262/// Constant value defined from OpenGL 4.3
25263pub const GL_REFERENCED_BY_FRAGMENT_SHADER: GLenum = 0x930A;
25264
25265/// Constant value defined from OpenGL 4.3
25266pub const GL_REFERENCED_BY_COMPUTE_SHADER: GLenum = 0x930B;
25267
25268/// Constant value defined from OpenGL 4.3
25269pub const GL_TOP_LEVEL_ARRAY_SIZE: GLenum = 0x930C;
25270
25271/// Constant value defined from OpenGL 4.3
25272pub const GL_TOP_LEVEL_ARRAY_STRIDE: GLenum = 0x930D;
25273
25274/// Constant value defined from OpenGL 4.3
25275pub const GL_LOCATION: GLenum = 0x930E;
25276
25277/// Constant value defined from OpenGL 4.3
25278pub const GL_LOCATION_INDEX: GLenum = 0x930F;
25279
25280/// Constant value defined from OpenGL 4.3
25281pub const GL_IS_PER_PATCH: GLenum = 0x92E7;
25282
25283/// Constant value defined from OpenGL 4.3
25284pub const GL_SHADER_STORAGE_BUFFER: GLenum = 0x90D2;
25285
25286/// Constant value defined from OpenGL 4.3
25287pub const GL_SHADER_STORAGE_BUFFER_BINDING: GLenum = 0x90D3;
25288
25289/// Constant value defined from OpenGL 4.3
25290pub const GL_SHADER_STORAGE_BUFFER_START: GLenum = 0x90D4;
25291
25292/// Constant value defined from OpenGL 4.3
25293pub const GL_SHADER_STORAGE_BUFFER_SIZE: GLenum = 0x90D5;
25294
25295/// Constant value defined from OpenGL 4.3
25296pub const GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS: GLenum = 0x90D6;
25297
25298/// Constant value defined from OpenGL 4.3
25299pub const GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS: GLenum = 0x90D7;
25300
25301/// Constant value defined from OpenGL 4.3
25302pub const GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS: GLenum = 0x90D8;
25303
25304/// Constant value defined from OpenGL 4.3
25305pub const GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS: GLenum = 0x90D9;
25306
25307/// Constant value defined from OpenGL 4.3
25308pub const GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS: GLenum = 0x90DA;
25309
25310/// Constant value defined from OpenGL 4.3
25311pub const GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS: GLenum = 0x90DB;
25312
25313/// Constant value defined from OpenGL 4.3
25314pub const GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS: GLenum = 0x90DC;
25315
25316/// Constant value defined from OpenGL 4.3
25317pub const GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS: GLenum = 0x90DD;
25318
25319/// Constant value defined from OpenGL 4.3
25320pub const GL_MAX_SHADER_STORAGE_BLOCK_SIZE: GLenum = 0x90DE;
25321
25322/// Constant value defined from OpenGL 4.3
25323pub const GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT: GLenum = 0x90DF;
25324
25325/// Constant value defined from OpenGL 4.3
25326pub const GL_SHADER_STORAGE_BARRIER_BIT: GLbitfield = 0x00002000;
25327
25328/// Constant value defined from OpenGL 4.3
25329pub const GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES: GLenum = 0x8F39;
25330
25331/// Constant value defined from OpenGL 4.3
25332pub const GL_DEPTH_STENCIL_TEXTURE_MODE: GLenum = 0x90EA;
25333
25334/// Constant value defined from OpenGL 4.3
25335pub const GL_TEXTURE_BUFFER_OFFSET: GLenum = 0x919D;
25336
25337/// Constant value defined from OpenGL 4.3
25338pub const GL_TEXTURE_BUFFER_SIZE: GLenum = 0x919E;
25339
25340/// Constant value defined from OpenGL 4.3
25341pub const GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT: GLenum = 0x919F;
25342
25343/// Constant value defined from OpenGL 4.3
25344pub const GL_TEXTURE_VIEW_MIN_LEVEL: GLenum = 0x82DB;
25345
25346/// Constant value defined from OpenGL 4.3
25347pub const GL_TEXTURE_VIEW_NUM_LEVELS: GLenum = 0x82DC;
25348
25349/// Constant value defined from OpenGL 4.3
25350pub const GL_TEXTURE_VIEW_MIN_LAYER: GLenum = 0x82DD;
25351
25352/// Constant value defined from OpenGL 4.3
25353pub const GL_TEXTURE_VIEW_NUM_LAYERS: GLenum = 0x82DE;
25354
25355/// Constant value defined from OpenGL 4.3
25356pub const GL_TEXTURE_IMMUTABLE_LEVELS: GLenum = 0x82DF;
25357
25358/// Constant value defined from OpenGL 4.3
25359pub const GL_VERTEX_ATTRIB_BINDING: GLenum = 0x82D4;
25360
25361/// Constant value defined from OpenGL 4.3
25362pub const GL_VERTEX_ATTRIB_RELATIVE_OFFSET: GLenum = 0x82D5;
25363
25364/// Constant value defined from OpenGL 4.3
25365pub const GL_VERTEX_BINDING_DIVISOR: GLenum = 0x82D6;
25366
25367/// Constant value defined from OpenGL 4.3
25368pub const GL_VERTEX_BINDING_OFFSET: GLenum = 0x82D7;
25369
25370/// Constant value defined from OpenGL 4.3
25371pub const GL_VERTEX_BINDING_STRIDE: GLenum = 0x82D8;
25372
25373/// Constant value defined from OpenGL 4.3
25374pub const GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET: GLenum = 0x82D9;
25375
25376/// Constant value defined from OpenGL 4.3
25377pub const GL_MAX_VERTEX_ATTRIB_BINDINGS: GLenum = 0x82DA;
25378
25379/// Constant value defined from OpenGL 4.3
25380pub const GL_VERTEX_BINDING_BUFFER: GLenum = 0x8F4F;
25381
25382/// Constant value defined from OpenGL 4.3
25383pub const GL_DISPLAY_LIST: GLenum = 0x82E7;
25384
25385/// Functions from OpenGL version 4.3
25386pub trait GL_4_3 {
25387	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
25388	fn glGetError(&self) -> GLenum;
25389
25390	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferData.xhtml>
25391	fn glClearBufferData(&self, target: GLenum, internalformat: GLenum, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()>;
25392
25393	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferSubData.xhtml>
25394	fn glClearBufferSubData(&self, target: GLenum, internalformat: GLenum, offset: GLintptr, size: GLsizeiptr, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()>;
25395
25396	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDispatchCompute.xhtml>
25397	fn glDispatchCompute(&self, num_groups_x: GLuint, num_groups_y: GLuint, num_groups_z: GLuint) -> Result<()>;
25398
25399	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDispatchComputeIndirect.xhtml>
25400	fn glDispatchComputeIndirect(&self, indirect: GLintptr) -> Result<()>;
25401
25402	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyImageSubData.xhtml>
25403	fn glCopyImageSubData(&self, srcName: GLuint, srcTarget: GLenum, srcLevel: GLint, srcX: GLint, srcY: GLint, srcZ: GLint, dstName: GLuint, dstTarget: GLenum, dstLevel: GLint, dstX: GLint, dstY: GLint, dstZ: GLint, srcWidth: GLsizei, srcHeight: GLsizei, srcDepth: GLsizei) -> Result<()>;
25404
25405	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferParameteri.xhtml>
25406	fn glFramebufferParameteri(&self, target: GLenum, pname: GLenum, param: GLint) -> Result<()>;
25407
25408	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFramebufferParameteriv.xhtml>
25409	fn glGetFramebufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
25410
25411	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetInternalformati64v.xhtml>
25412	fn glGetInternalformati64v(&self, target: GLenum, internalformat: GLenum, pname: GLenum, count: GLsizei, params: *mut GLint64) -> Result<()>;
25413
25414	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateTexSubImage.xhtml>
25415	fn glInvalidateTexSubImage(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei) -> Result<()>;
25416
25417	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateTexImage.xhtml>
25418	fn glInvalidateTexImage(&self, texture: GLuint, level: GLint) -> Result<()>;
25419
25420	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateBufferSubData.xhtml>
25421	fn glInvalidateBufferSubData(&self, buffer: GLuint, offset: GLintptr, length: GLsizeiptr) -> Result<()>;
25422
25423	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateBufferData.xhtml>
25424	fn glInvalidateBufferData(&self, buffer: GLuint) -> Result<()>;
25425
25426	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateFramebuffer.xhtml>
25427	fn glInvalidateFramebuffer(&self, target: GLenum, numAttachments: GLsizei, attachments: *const GLenum) -> Result<()>;
25428
25429	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateSubFramebuffer.xhtml>
25430	fn glInvalidateSubFramebuffer(&self, target: GLenum, numAttachments: GLsizei, attachments: *const GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
25431
25432	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawArraysIndirect.xhtml>
25433	fn glMultiDrawArraysIndirect(&self, mode: GLenum, indirect: *const c_void, drawcount: GLsizei, stride: GLsizei) -> Result<()>;
25434
25435	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawElementsIndirect.xhtml>
25436	fn glMultiDrawElementsIndirect(&self, mode: GLenum, type_: GLenum, indirect: *const c_void, drawcount: GLsizei, stride: GLsizei) -> Result<()>;
25437
25438	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramInterfaceiv.xhtml>
25439	fn glGetProgramInterfaceiv(&self, program: GLuint, programInterface: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
25440
25441	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramResourceIndex.xhtml>
25442	fn glGetProgramResourceIndex(&self, program: GLuint, programInterface: GLenum, name: *const GLchar) -> Result<GLuint>;
25443
25444	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramResourceName.xhtml>
25445	fn glGetProgramResourceName(&self, program: GLuint, programInterface: GLenum, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, name: *mut GLchar) -> Result<()>;
25446
25447	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramResourceiv.xhtml>
25448	fn glGetProgramResourceiv(&self, program: GLuint, programInterface: GLenum, index: GLuint, propCount: GLsizei, props: *const GLenum, count: GLsizei, length: *mut GLsizei, params: *mut GLint) -> Result<()>;
25449
25450	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramResourceLocation.xhtml>
25451	fn glGetProgramResourceLocation(&self, program: GLuint, programInterface: GLenum, name: *const GLchar) -> Result<GLint>;
25452
25453	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramResourceLocationIndex.xhtml>
25454	fn glGetProgramResourceLocationIndex(&self, program: GLuint, programInterface: GLenum, name: *const GLchar) -> Result<GLint>;
25455
25456	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glShaderStorageBlockBinding.xhtml>
25457	fn glShaderStorageBlockBinding(&self, program: GLuint, storageBlockIndex: GLuint, storageBlockBinding: GLuint) -> Result<()>;
25458
25459	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexBufferRange.xhtml>
25460	fn glTexBufferRange(&self, target: GLenum, internalformat: GLenum, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()>;
25461
25462	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexStorage2DMultisample.xhtml>
25463	fn glTexStorage2DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, fixedsamplelocations: GLboolean) -> Result<()>;
25464
25465	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexStorage3DMultisample.xhtml>
25466	fn glTexStorage3DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, fixedsamplelocations: GLboolean) -> Result<()>;
25467
25468	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureView.xhtml>
25469	fn glTextureView(&self, texture: GLuint, target: GLenum, origtexture: GLuint, internalformat: GLenum, minlevel: GLuint, numlevels: GLuint, minlayer: GLuint, numlayers: GLuint) -> Result<()>;
25470
25471	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindVertexBuffer.xhtml>
25472	fn glBindVertexBuffer(&self, bindingindex: GLuint, buffer: GLuint, offset: GLintptr, stride: GLsizei) -> Result<()>;
25473
25474	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribFormat.xhtml>
25475	fn glVertexAttribFormat(&self, attribindex: GLuint, size: GLint, type_: GLenum, normalized: GLboolean, relativeoffset: GLuint) -> Result<()>;
25476
25477	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribIFormat.xhtml>
25478	fn glVertexAttribIFormat(&self, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()>;
25479
25480	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribLFormat.xhtml>
25481	fn glVertexAttribLFormat(&self, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()>;
25482
25483	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribBinding.xhtml>
25484	fn glVertexAttribBinding(&self, attribindex: GLuint, bindingindex: GLuint) -> Result<()>;
25485
25486	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexBindingDivisor.xhtml>
25487	fn glVertexBindingDivisor(&self, bindingindex: GLuint, divisor: GLuint) -> Result<()>;
25488
25489	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDebugMessageControl.xhtml>
25490	fn glDebugMessageControl(&self, source: GLenum, type_: GLenum, severity: GLenum, count: GLsizei, ids: *const GLuint, enabled: GLboolean) -> Result<()>;
25491
25492	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDebugMessageInsert.xhtml>
25493	fn glDebugMessageInsert(&self, source: GLenum, type_: GLenum, id: GLuint, severity: GLenum, length: GLsizei, buf: *const GLchar) -> Result<()>;
25494
25495	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDebugMessageCallback.xhtml>
25496	fn glDebugMessageCallback(&self, callback: GLDEBUGPROC, userParam: *const c_void) -> Result<()>;
25497
25498	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetDebugMessageLog.xhtml>
25499	fn glGetDebugMessageLog(&self, count: GLuint, bufSize: GLsizei, sources: *mut GLenum, types: *mut GLenum, ids: *mut GLuint, severities: *mut GLenum, lengths: *mut GLsizei, messageLog: *mut GLchar) -> Result<GLuint>;
25500
25501	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPushDebugGroup.xhtml>
25502	fn glPushDebugGroup(&self, source: GLenum, id: GLuint, length: GLsizei, message: *const GLchar) -> Result<()>;
25503
25504	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPopDebugGroup.xhtml>
25505	fn glPopDebugGroup(&self) -> Result<()>;
25506
25507	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glObjectLabel.xhtml>
25508	fn glObjectLabel(&self, identifier: GLenum, name: GLuint, length: GLsizei, label: *const GLchar) -> Result<()>;
25509
25510	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetObjectLabel.xhtml>
25511	fn glGetObjectLabel(&self, identifier: GLenum, name: GLuint, bufSize: GLsizei, length: *mut GLsizei, label: *mut GLchar) -> Result<()>;
25512
25513	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glObjectPtrLabel.xhtml>
25514	fn glObjectPtrLabel(&self, ptr: *const c_void, length: GLsizei, label: *const GLchar) -> Result<()>;
25515
25516	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetObjectPtrLabel.xhtml>
25517	fn glGetObjectPtrLabel(&self, ptr: *const c_void, bufSize: GLsizei, length: *mut GLsizei, label: *mut GLchar) -> Result<()>;
25518}
25519/// Functions from OpenGL version 4.3
25520#[derive(Clone, Copy, PartialEq, Eq, Hash)]
25521pub struct Version43 {
25522	/// Is OpenGL version 4.3 available
25523	available: bool,
25524
25525	/// The function pointer to `glGetError()`
25526	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
25527	pub geterror: PFNGLGETERRORPROC,
25528
25529	/// The function pointer to `glClearBufferData()`
25530	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferData.xhtml>
25531	pub clearbufferdata: PFNGLCLEARBUFFERDATAPROC,
25532
25533	/// The function pointer to `glClearBufferSubData()`
25534	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferSubData.xhtml>
25535	pub clearbuffersubdata: PFNGLCLEARBUFFERSUBDATAPROC,
25536
25537	/// The function pointer to `glDispatchCompute()`
25538	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDispatchCompute.xhtml>
25539	pub dispatchcompute: PFNGLDISPATCHCOMPUTEPROC,
25540
25541	/// The function pointer to `glDispatchComputeIndirect()`
25542	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDispatchComputeIndirect.xhtml>
25543	pub dispatchcomputeindirect: PFNGLDISPATCHCOMPUTEINDIRECTPROC,
25544
25545	/// The function pointer to `glCopyImageSubData()`
25546	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyImageSubData.xhtml>
25547	pub copyimagesubdata: PFNGLCOPYIMAGESUBDATAPROC,
25548
25549	/// The function pointer to `glFramebufferParameteri()`
25550	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferParameteri.xhtml>
25551	pub framebufferparameteri: PFNGLFRAMEBUFFERPARAMETERIPROC,
25552
25553	/// The function pointer to `glGetFramebufferParameteriv()`
25554	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFramebufferParameteriv.xhtml>
25555	pub getframebufferparameteriv: PFNGLGETFRAMEBUFFERPARAMETERIVPROC,
25556
25557	/// The function pointer to `glGetInternalformati64v()`
25558	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetInternalformati64v.xhtml>
25559	pub getinternalformati64v: PFNGLGETINTERNALFORMATI64VPROC,
25560
25561	/// The function pointer to `glInvalidateTexSubImage()`
25562	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateTexSubImage.xhtml>
25563	pub invalidatetexsubimage: PFNGLINVALIDATETEXSUBIMAGEPROC,
25564
25565	/// The function pointer to `glInvalidateTexImage()`
25566	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateTexImage.xhtml>
25567	pub invalidateteximage: PFNGLINVALIDATETEXIMAGEPROC,
25568
25569	/// The function pointer to `glInvalidateBufferSubData()`
25570	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateBufferSubData.xhtml>
25571	pub invalidatebuffersubdata: PFNGLINVALIDATEBUFFERSUBDATAPROC,
25572
25573	/// The function pointer to `glInvalidateBufferData()`
25574	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateBufferData.xhtml>
25575	pub invalidatebufferdata: PFNGLINVALIDATEBUFFERDATAPROC,
25576
25577	/// The function pointer to `glInvalidateFramebuffer()`
25578	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateFramebuffer.xhtml>
25579	pub invalidateframebuffer: PFNGLINVALIDATEFRAMEBUFFERPROC,
25580
25581	/// The function pointer to `glInvalidateSubFramebuffer()`
25582	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateSubFramebuffer.xhtml>
25583	pub invalidatesubframebuffer: PFNGLINVALIDATESUBFRAMEBUFFERPROC,
25584
25585	/// The function pointer to `glMultiDrawArraysIndirect()`
25586	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawArraysIndirect.xhtml>
25587	pub multidrawarraysindirect: PFNGLMULTIDRAWARRAYSINDIRECTPROC,
25588
25589	/// The function pointer to `glMultiDrawElementsIndirect()`
25590	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawElementsIndirect.xhtml>
25591	pub multidrawelementsindirect: PFNGLMULTIDRAWELEMENTSINDIRECTPROC,
25592
25593	/// The function pointer to `glGetProgramInterfaceiv()`
25594	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramInterfaceiv.xhtml>
25595	pub getprograminterfaceiv: PFNGLGETPROGRAMINTERFACEIVPROC,
25596
25597	/// The function pointer to `glGetProgramResourceIndex()`
25598	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramResourceIndex.xhtml>
25599	pub getprogramresourceindex: PFNGLGETPROGRAMRESOURCEINDEXPROC,
25600
25601	/// The function pointer to `glGetProgramResourceName()`
25602	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramResourceName.xhtml>
25603	pub getprogramresourcename: PFNGLGETPROGRAMRESOURCENAMEPROC,
25604
25605	/// The function pointer to `glGetProgramResourceiv()`
25606	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramResourceiv.xhtml>
25607	pub getprogramresourceiv: PFNGLGETPROGRAMRESOURCEIVPROC,
25608
25609	/// The function pointer to `glGetProgramResourceLocation()`
25610	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramResourceLocation.xhtml>
25611	pub getprogramresourcelocation: PFNGLGETPROGRAMRESOURCELOCATIONPROC,
25612
25613	/// The function pointer to `glGetProgramResourceLocationIndex()`
25614	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramResourceLocationIndex.xhtml>
25615	pub getprogramresourcelocationindex: PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC,
25616
25617	/// The function pointer to `glShaderStorageBlockBinding()`
25618	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glShaderStorageBlockBinding.xhtml>
25619	pub shaderstorageblockbinding: PFNGLSHADERSTORAGEBLOCKBINDINGPROC,
25620
25621	/// The function pointer to `glTexBufferRange()`
25622	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexBufferRange.xhtml>
25623	pub texbufferrange: PFNGLTEXBUFFERRANGEPROC,
25624
25625	/// The function pointer to `glTexStorage2DMultisample()`
25626	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexStorage2DMultisample.xhtml>
25627	pub texstorage2dmultisample: PFNGLTEXSTORAGE2DMULTISAMPLEPROC,
25628
25629	/// The function pointer to `glTexStorage3DMultisample()`
25630	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexStorage3DMultisample.xhtml>
25631	pub texstorage3dmultisample: PFNGLTEXSTORAGE3DMULTISAMPLEPROC,
25632
25633	/// The function pointer to `glTextureView()`
25634	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureView.xhtml>
25635	pub textureview: PFNGLTEXTUREVIEWPROC,
25636
25637	/// The function pointer to `glBindVertexBuffer()`
25638	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindVertexBuffer.xhtml>
25639	pub bindvertexbuffer: PFNGLBINDVERTEXBUFFERPROC,
25640
25641	/// The function pointer to `glVertexAttribFormat()`
25642	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribFormat.xhtml>
25643	pub vertexattribformat: PFNGLVERTEXATTRIBFORMATPROC,
25644
25645	/// The function pointer to `glVertexAttribIFormat()`
25646	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribIFormat.xhtml>
25647	pub vertexattribiformat: PFNGLVERTEXATTRIBIFORMATPROC,
25648
25649	/// The function pointer to `glVertexAttribLFormat()`
25650	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribLFormat.xhtml>
25651	pub vertexattriblformat: PFNGLVERTEXATTRIBLFORMATPROC,
25652
25653	/// The function pointer to `glVertexAttribBinding()`
25654	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribBinding.xhtml>
25655	pub vertexattribbinding: PFNGLVERTEXATTRIBBINDINGPROC,
25656
25657	/// The function pointer to `glVertexBindingDivisor()`
25658	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexBindingDivisor.xhtml>
25659	pub vertexbindingdivisor: PFNGLVERTEXBINDINGDIVISORPROC,
25660
25661	/// The function pointer to `glDebugMessageControl()`
25662	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDebugMessageControl.xhtml>
25663	pub debugmessagecontrol: PFNGLDEBUGMESSAGECONTROLPROC,
25664
25665	/// The function pointer to `glDebugMessageInsert()`
25666	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDebugMessageInsert.xhtml>
25667	pub debugmessageinsert: PFNGLDEBUGMESSAGEINSERTPROC,
25668
25669	/// The function pointer to `glDebugMessageCallback()`
25670	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDebugMessageCallback.xhtml>
25671	pub debugmessagecallback: PFNGLDEBUGMESSAGECALLBACKPROC,
25672
25673	/// The function pointer to `glGetDebugMessageLog()`
25674	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetDebugMessageLog.xhtml>
25675	pub getdebugmessagelog: PFNGLGETDEBUGMESSAGELOGPROC,
25676
25677	/// The function pointer to `glPushDebugGroup()`
25678	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPushDebugGroup.xhtml>
25679	pub pushdebuggroup: PFNGLPUSHDEBUGGROUPPROC,
25680
25681	/// The function pointer to `glPopDebugGroup()`
25682	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPopDebugGroup.xhtml>
25683	pub popdebuggroup: PFNGLPOPDEBUGGROUPPROC,
25684
25685	/// The function pointer to `glObjectLabel()`
25686	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glObjectLabel.xhtml>
25687	pub objectlabel: PFNGLOBJECTLABELPROC,
25688
25689	/// The function pointer to `glGetObjectLabel()`
25690	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetObjectLabel.xhtml>
25691	pub getobjectlabel: PFNGLGETOBJECTLABELPROC,
25692
25693	/// The function pointer to `glObjectPtrLabel()`
25694	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glObjectPtrLabel.xhtml>
25695	pub objectptrlabel: PFNGLOBJECTPTRLABELPROC,
25696
25697	/// The function pointer to `glGetObjectPtrLabel()`
25698	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetObjectPtrLabel.xhtml>
25699	pub getobjectptrlabel: PFNGLGETOBJECTPTRLABELPROC,
25700}
25701
25702impl GL_4_3 for Version43 {
25703	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
25704	#[inline(always)]
25705	fn glGetError(&self) -> GLenum {
25706		(self.geterror)()
25707	}
25708	#[inline(always)]
25709	fn glClearBufferData(&self, target: GLenum, internalformat: GLenum, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()> {
25710		#[cfg(feature = "catch_nullptr")]
25711		let ret = process_catch("glClearBufferData", catch_unwind(||(self.clearbufferdata)(target, internalformat, format, type_, data)));
25712		#[cfg(not(feature = "catch_nullptr"))]
25713		let ret = {(self.clearbufferdata)(target, internalformat, format, type_, data); Ok(())};
25714		#[cfg(feature = "diagnose")]
25715		if let Ok(ret) = ret {
25716			return to_result("glClearBufferData", ret, self.glGetError());
25717		} else {
25718			return ret
25719		}
25720		#[cfg(not(feature = "diagnose"))]
25721		return ret;
25722	}
25723	#[inline(always)]
25724	fn glClearBufferSubData(&self, target: GLenum, internalformat: GLenum, offset: GLintptr, size: GLsizeiptr, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()> {
25725		#[cfg(feature = "catch_nullptr")]
25726		let ret = process_catch("glClearBufferSubData", catch_unwind(||(self.clearbuffersubdata)(target, internalformat, offset, size, format, type_, data)));
25727		#[cfg(not(feature = "catch_nullptr"))]
25728		let ret = {(self.clearbuffersubdata)(target, internalformat, offset, size, format, type_, data); Ok(())};
25729		#[cfg(feature = "diagnose")]
25730		if let Ok(ret) = ret {
25731			return to_result("glClearBufferSubData", ret, self.glGetError());
25732		} else {
25733			return ret
25734		}
25735		#[cfg(not(feature = "diagnose"))]
25736		return ret;
25737	}
25738	#[inline(always)]
25739	fn glDispatchCompute(&self, num_groups_x: GLuint, num_groups_y: GLuint, num_groups_z: GLuint) -> Result<()> {
25740		#[cfg(feature = "catch_nullptr")]
25741		let ret = process_catch("glDispatchCompute", catch_unwind(||(self.dispatchcompute)(num_groups_x, num_groups_y, num_groups_z)));
25742		#[cfg(not(feature = "catch_nullptr"))]
25743		let ret = {(self.dispatchcompute)(num_groups_x, num_groups_y, num_groups_z); Ok(())};
25744		#[cfg(feature = "diagnose")]
25745		if let Ok(ret) = ret {
25746			return to_result("glDispatchCompute", ret, self.glGetError());
25747		} else {
25748			return ret
25749		}
25750		#[cfg(not(feature = "diagnose"))]
25751		return ret;
25752	}
25753	#[inline(always)]
25754	fn glDispatchComputeIndirect(&self, indirect: GLintptr) -> Result<()> {
25755		#[cfg(feature = "catch_nullptr")]
25756		let ret = process_catch("glDispatchComputeIndirect", catch_unwind(||(self.dispatchcomputeindirect)(indirect)));
25757		#[cfg(not(feature = "catch_nullptr"))]
25758		let ret = {(self.dispatchcomputeindirect)(indirect); Ok(())};
25759		#[cfg(feature = "diagnose")]
25760		if let Ok(ret) = ret {
25761			return to_result("glDispatchComputeIndirect", ret, self.glGetError());
25762		} else {
25763			return ret
25764		}
25765		#[cfg(not(feature = "diagnose"))]
25766		return ret;
25767	}
25768	#[inline(always)]
25769	fn glCopyImageSubData(&self, srcName: GLuint, srcTarget: GLenum, srcLevel: GLint, srcX: GLint, srcY: GLint, srcZ: GLint, dstName: GLuint, dstTarget: GLenum, dstLevel: GLint, dstX: GLint, dstY: GLint, dstZ: GLint, srcWidth: GLsizei, srcHeight: GLsizei, srcDepth: GLsizei) -> Result<()> {
25770		#[cfg(feature = "catch_nullptr")]
25771		let ret = process_catch("glCopyImageSubData", catch_unwind(||(self.copyimagesubdata)(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth)));
25772		#[cfg(not(feature = "catch_nullptr"))]
25773		let ret = {(self.copyimagesubdata)(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth); Ok(())};
25774		#[cfg(feature = "diagnose")]
25775		if let Ok(ret) = ret {
25776			return to_result("glCopyImageSubData", ret, self.glGetError());
25777		} else {
25778			return ret
25779		}
25780		#[cfg(not(feature = "diagnose"))]
25781		return ret;
25782	}
25783	#[inline(always)]
25784	fn glFramebufferParameteri(&self, target: GLenum, pname: GLenum, param: GLint) -> Result<()> {
25785		#[cfg(feature = "catch_nullptr")]
25786		let ret = process_catch("glFramebufferParameteri", catch_unwind(||(self.framebufferparameteri)(target, pname, param)));
25787		#[cfg(not(feature = "catch_nullptr"))]
25788		let ret = {(self.framebufferparameteri)(target, pname, param); Ok(())};
25789		#[cfg(feature = "diagnose")]
25790		if let Ok(ret) = ret {
25791			return to_result("glFramebufferParameteri", ret, self.glGetError());
25792		} else {
25793			return ret
25794		}
25795		#[cfg(not(feature = "diagnose"))]
25796		return ret;
25797	}
25798	#[inline(always)]
25799	fn glGetFramebufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
25800		#[cfg(feature = "catch_nullptr")]
25801		let ret = process_catch("glGetFramebufferParameteriv", catch_unwind(||(self.getframebufferparameteriv)(target, pname, params)));
25802		#[cfg(not(feature = "catch_nullptr"))]
25803		let ret = {(self.getframebufferparameteriv)(target, pname, params); Ok(())};
25804		#[cfg(feature = "diagnose")]
25805		if let Ok(ret) = ret {
25806			return to_result("glGetFramebufferParameteriv", ret, self.glGetError());
25807		} else {
25808			return ret
25809		}
25810		#[cfg(not(feature = "diagnose"))]
25811		return ret;
25812	}
25813	#[inline(always)]
25814	fn glGetInternalformati64v(&self, target: GLenum, internalformat: GLenum, pname: GLenum, count: GLsizei, params: *mut GLint64) -> Result<()> {
25815		#[cfg(feature = "catch_nullptr")]
25816		let ret = process_catch("glGetInternalformati64v", catch_unwind(||(self.getinternalformati64v)(target, internalformat, pname, count, params)));
25817		#[cfg(not(feature = "catch_nullptr"))]
25818		let ret = {(self.getinternalformati64v)(target, internalformat, pname, count, params); Ok(())};
25819		#[cfg(feature = "diagnose")]
25820		if let Ok(ret) = ret {
25821			return to_result("glGetInternalformati64v", ret, self.glGetError());
25822		} else {
25823			return ret
25824		}
25825		#[cfg(not(feature = "diagnose"))]
25826		return ret;
25827	}
25828	#[inline(always)]
25829	fn glInvalidateTexSubImage(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei) -> Result<()> {
25830		#[cfg(feature = "catch_nullptr")]
25831		let ret = process_catch("glInvalidateTexSubImage", catch_unwind(||(self.invalidatetexsubimage)(texture, level, xoffset, yoffset, zoffset, width, height, depth)));
25832		#[cfg(not(feature = "catch_nullptr"))]
25833		let ret = {(self.invalidatetexsubimage)(texture, level, xoffset, yoffset, zoffset, width, height, depth); Ok(())};
25834		#[cfg(feature = "diagnose")]
25835		if let Ok(ret) = ret {
25836			return to_result("glInvalidateTexSubImage", ret, self.glGetError());
25837		} else {
25838			return ret
25839		}
25840		#[cfg(not(feature = "diagnose"))]
25841		return ret;
25842	}
25843	#[inline(always)]
25844	fn glInvalidateTexImage(&self, texture: GLuint, level: GLint) -> Result<()> {
25845		#[cfg(feature = "catch_nullptr")]
25846		let ret = process_catch("glInvalidateTexImage", catch_unwind(||(self.invalidateteximage)(texture, level)));
25847		#[cfg(not(feature = "catch_nullptr"))]
25848		let ret = {(self.invalidateteximage)(texture, level); Ok(())};
25849		#[cfg(feature = "diagnose")]
25850		if let Ok(ret) = ret {
25851			return to_result("glInvalidateTexImage", ret, self.glGetError());
25852		} else {
25853			return ret
25854		}
25855		#[cfg(not(feature = "diagnose"))]
25856		return ret;
25857	}
25858	#[inline(always)]
25859	fn glInvalidateBufferSubData(&self, buffer: GLuint, offset: GLintptr, length: GLsizeiptr) -> Result<()> {
25860		#[cfg(feature = "catch_nullptr")]
25861		let ret = process_catch("glInvalidateBufferSubData", catch_unwind(||(self.invalidatebuffersubdata)(buffer, offset, length)));
25862		#[cfg(not(feature = "catch_nullptr"))]
25863		let ret = {(self.invalidatebuffersubdata)(buffer, offset, length); Ok(())};
25864		#[cfg(feature = "diagnose")]
25865		if let Ok(ret) = ret {
25866			return to_result("glInvalidateBufferSubData", ret, self.glGetError());
25867		} else {
25868			return ret
25869		}
25870		#[cfg(not(feature = "diagnose"))]
25871		return ret;
25872	}
25873	#[inline(always)]
25874	fn glInvalidateBufferData(&self, buffer: GLuint) -> Result<()> {
25875		#[cfg(feature = "catch_nullptr")]
25876		let ret = process_catch("glInvalidateBufferData", catch_unwind(||(self.invalidatebufferdata)(buffer)));
25877		#[cfg(not(feature = "catch_nullptr"))]
25878		let ret = {(self.invalidatebufferdata)(buffer); Ok(())};
25879		#[cfg(feature = "diagnose")]
25880		if let Ok(ret) = ret {
25881			return to_result("glInvalidateBufferData", ret, self.glGetError());
25882		} else {
25883			return ret
25884		}
25885		#[cfg(not(feature = "diagnose"))]
25886		return ret;
25887	}
25888	#[inline(always)]
25889	fn glInvalidateFramebuffer(&self, target: GLenum, numAttachments: GLsizei, attachments: *const GLenum) -> Result<()> {
25890		#[cfg(feature = "catch_nullptr")]
25891		let ret = process_catch("glInvalidateFramebuffer", catch_unwind(||(self.invalidateframebuffer)(target, numAttachments, attachments)));
25892		#[cfg(not(feature = "catch_nullptr"))]
25893		let ret = {(self.invalidateframebuffer)(target, numAttachments, attachments); Ok(())};
25894		#[cfg(feature = "diagnose")]
25895		if let Ok(ret) = ret {
25896			return to_result("glInvalidateFramebuffer", ret, self.glGetError());
25897		} else {
25898			return ret
25899		}
25900		#[cfg(not(feature = "diagnose"))]
25901		return ret;
25902	}
25903	#[inline(always)]
25904	fn glInvalidateSubFramebuffer(&self, target: GLenum, numAttachments: GLsizei, attachments: *const GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
25905		#[cfg(feature = "catch_nullptr")]
25906		let ret = process_catch("glInvalidateSubFramebuffer", catch_unwind(||(self.invalidatesubframebuffer)(target, numAttachments, attachments, x, y, width, height)));
25907		#[cfg(not(feature = "catch_nullptr"))]
25908		let ret = {(self.invalidatesubframebuffer)(target, numAttachments, attachments, x, y, width, height); Ok(())};
25909		#[cfg(feature = "diagnose")]
25910		if let Ok(ret) = ret {
25911			return to_result("glInvalidateSubFramebuffer", ret, self.glGetError());
25912		} else {
25913			return ret
25914		}
25915		#[cfg(not(feature = "diagnose"))]
25916		return ret;
25917	}
25918	#[inline(always)]
25919	fn glMultiDrawArraysIndirect(&self, mode: GLenum, indirect: *const c_void, drawcount: GLsizei, stride: GLsizei) -> Result<()> {
25920		#[cfg(feature = "catch_nullptr")]
25921		let ret = process_catch("glMultiDrawArraysIndirect", catch_unwind(||(self.multidrawarraysindirect)(mode, indirect, drawcount, stride)));
25922		#[cfg(not(feature = "catch_nullptr"))]
25923		let ret = {(self.multidrawarraysindirect)(mode, indirect, drawcount, stride); Ok(())};
25924		#[cfg(feature = "diagnose")]
25925		if let Ok(ret) = ret {
25926			return to_result("glMultiDrawArraysIndirect", ret, self.glGetError());
25927		} else {
25928			return ret
25929		}
25930		#[cfg(not(feature = "diagnose"))]
25931		return ret;
25932	}
25933	#[inline(always)]
25934	fn glMultiDrawElementsIndirect(&self, mode: GLenum, type_: GLenum, indirect: *const c_void, drawcount: GLsizei, stride: GLsizei) -> Result<()> {
25935		#[cfg(feature = "catch_nullptr")]
25936		let ret = process_catch("glMultiDrawElementsIndirect", catch_unwind(||(self.multidrawelementsindirect)(mode, type_, indirect, drawcount, stride)));
25937		#[cfg(not(feature = "catch_nullptr"))]
25938		let ret = {(self.multidrawelementsindirect)(mode, type_, indirect, drawcount, stride); Ok(())};
25939		#[cfg(feature = "diagnose")]
25940		if let Ok(ret) = ret {
25941			return to_result("glMultiDrawElementsIndirect", ret, self.glGetError());
25942		} else {
25943			return ret
25944		}
25945		#[cfg(not(feature = "diagnose"))]
25946		return ret;
25947	}
25948	#[inline(always)]
25949	fn glGetProgramInterfaceiv(&self, program: GLuint, programInterface: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
25950		#[cfg(feature = "catch_nullptr")]
25951		let ret = process_catch("glGetProgramInterfaceiv", catch_unwind(||(self.getprograminterfaceiv)(program, programInterface, pname, params)));
25952		#[cfg(not(feature = "catch_nullptr"))]
25953		let ret = {(self.getprograminterfaceiv)(program, programInterface, pname, params); Ok(())};
25954		#[cfg(feature = "diagnose")]
25955		if let Ok(ret) = ret {
25956			return to_result("glGetProgramInterfaceiv", ret, self.glGetError());
25957		} else {
25958			return ret
25959		}
25960		#[cfg(not(feature = "diagnose"))]
25961		return ret;
25962	}
25963	#[inline(always)]
25964	fn glGetProgramResourceIndex(&self, program: GLuint, programInterface: GLenum, name: *const GLchar) -> Result<GLuint> {
25965		#[cfg(feature = "catch_nullptr")]
25966		let ret = process_catch("glGetProgramResourceIndex", catch_unwind(||(self.getprogramresourceindex)(program, programInterface, name)));
25967		#[cfg(not(feature = "catch_nullptr"))]
25968		let ret = Ok((self.getprogramresourceindex)(program, programInterface, name));
25969		#[cfg(feature = "diagnose")]
25970		if let Ok(ret) = ret {
25971			return to_result("glGetProgramResourceIndex", ret, self.glGetError());
25972		} else {
25973			return ret
25974		}
25975		#[cfg(not(feature = "diagnose"))]
25976		return ret;
25977	}
25978	#[inline(always)]
25979	fn glGetProgramResourceName(&self, program: GLuint, programInterface: GLenum, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, name: *mut GLchar) -> Result<()> {
25980		#[cfg(feature = "catch_nullptr")]
25981		let ret = process_catch("glGetProgramResourceName", catch_unwind(||(self.getprogramresourcename)(program, programInterface, index, bufSize, length, name)));
25982		#[cfg(not(feature = "catch_nullptr"))]
25983		let ret = {(self.getprogramresourcename)(program, programInterface, index, bufSize, length, name); Ok(())};
25984		#[cfg(feature = "diagnose")]
25985		if let Ok(ret) = ret {
25986			return to_result("glGetProgramResourceName", ret, self.glGetError());
25987		} else {
25988			return ret
25989		}
25990		#[cfg(not(feature = "diagnose"))]
25991		return ret;
25992	}
25993	#[inline(always)]
25994	fn glGetProgramResourceiv(&self, program: GLuint, programInterface: GLenum, index: GLuint, propCount: GLsizei, props: *const GLenum, count: GLsizei, length: *mut GLsizei, params: *mut GLint) -> Result<()> {
25995		#[cfg(feature = "catch_nullptr")]
25996		let ret = process_catch("glGetProgramResourceiv", catch_unwind(||(self.getprogramresourceiv)(program, programInterface, index, propCount, props, count, length, params)));
25997		#[cfg(not(feature = "catch_nullptr"))]
25998		let ret = {(self.getprogramresourceiv)(program, programInterface, index, propCount, props, count, length, params); Ok(())};
25999		#[cfg(feature = "diagnose")]
26000		if let Ok(ret) = ret {
26001			return to_result("glGetProgramResourceiv", ret, self.glGetError());
26002		} else {
26003			return ret
26004		}
26005		#[cfg(not(feature = "diagnose"))]
26006		return ret;
26007	}
26008	#[inline(always)]
26009	fn glGetProgramResourceLocation(&self, program: GLuint, programInterface: GLenum, name: *const GLchar) -> Result<GLint> {
26010		#[cfg(feature = "catch_nullptr")]
26011		let ret = process_catch("glGetProgramResourceLocation", catch_unwind(||(self.getprogramresourcelocation)(program, programInterface, name)));
26012		#[cfg(not(feature = "catch_nullptr"))]
26013		let ret = Ok((self.getprogramresourcelocation)(program, programInterface, name));
26014		#[cfg(feature = "diagnose")]
26015		if let Ok(ret) = ret {
26016			return to_result("glGetProgramResourceLocation", ret, self.glGetError());
26017		} else {
26018			return ret
26019		}
26020		#[cfg(not(feature = "diagnose"))]
26021		return ret;
26022	}
26023	#[inline(always)]
26024	fn glGetProgramResourceLocationIndex(&self, program: GLuint, programInterface: GLenum, name: *const GLchar) -> Result<GLint> {
26025		#[cfg(feature = "catch_nullptr")]
26026		let ret = process_catch("glGetProgramResourceLocationIndex", catch_unwind(||(self.getprogramresourcelocationindex)(program, programInterface, name)));
26027		#[cfg(not(feature = "catch_nullptr"))]
26028		let ret = Ok((self.getprogramresourcelocationindex)(program, programInterface, name));
26029		#[cfg(feature = "diagnose")]
26030		if let Ok(ret) = ret {
26031			return to_result("glGetProgramResourceLocationIndex", ret, self.glGetError());
26032		} else {
26033			return ret
26034		}
26035		#[cfg(not(feature = "diagnose"))]
26036		return ret;
26037	}
26038	#[inline(always)]
26039	fn glShaderStorageBlockBinding(&self, program: GLuint, storageBlockIndex: GLuint, storageBlockBinding: GLuint) -> Result<()> {
26040		#[cfg(feature = "catch_nullptr")]
26041		let ret = process_catch("glShaderStorageBlockBinding", catch_unwind(||(self.shaderstorageblockbinding)(program, storageBlockIndex, storageBlockBinding)));
26042		#[cfg(not(feature = "catch_nullptr"))]
26043		let ret = {(self.shaderstorageblockbinding)(program, storageBlockIndex, storageBlockBinding); Ok(())};
26044		#[cfg(feature = "diagnose")]
26045		if let Ok(ret) = ret {
26046			return to_result("glShaderStorageBlockBinding", ret, self.glGetError());
26047		} else {
26048			return ret
26049		}
26050		#[cfg(not(feature = "diagnose"))]
26051		return ret;
26052	}
26053	#[inline(always)]
26054	fn glTexBufferRange(&self, target: GLenum, internalformat: GLenum, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()> {
26055		#[cfg(feature = "catch_nullptr")]
26056		let ret = process_catch("glTexBufferRange", catch_unwind(||(self.texbufferrange)(target, internalformat, buffer, offset, size)));
26057		#[cfg(not(feature = "catch_nullptr"))]
26058		let ret = {(self.texbufferrange)(target, internalformat, buffer, offset, size); Ok(())};
26059		#[cfg(feature = "diagnose")]
26060		if let Ok(ret) = ret {
26061			return to_result("glTexBufferRange", ret, self.glGetError());
26062		} else {
26063			return ret
26064		}
26065		#[cfg(not(feature = "diagnose"))]
26066		return ret;
26067	}
26068	#[inline(always)]
26069	fn glTexStorage2DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, fixedsamplelocations: GLboolean) -> Result<()> {
26070		#[cfg(feature = "catch_nullptr")]
26071		let ret = process_catch("glTexStorage2DMultisample", catch_unwind(||(self.texstorage2dmultisample)(target, samples, internalformat, width, height, fixedsamplelocations)));
26072		#[cfg(not(feature = "catch_nullptr"))]
26073		let ret = {(self.texstorage2dmultisample)(target, samples, internalformat, width, height, fixedsamplelocations); Ok(())};
26074		#[cfg(feature = "diagnose")]
26075		if let Ok(ret) = ret {
26076			return to_result("glTexStorage2DMultisample", ret, self.glGetError());
26077		} else {
26078			return ret
26079		}
26080		#[cfg(not(feature = "diagnose"))]
26081		return ret;
26082	}
26083	#[inline(always)]
26084	fn glTexStorage3DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, fixedsamplelocations: GLboolean) -> Result<()> {
26085		#[cfg(feature = "catch_nullptr")]
26086		let ret = process_catch("glTexStorage3DMultisample", catch_unwind(||(self.texstorage3dmultisample)(target, samples, internalformat, width, height, depth, fixedsamplelocations)));
26087		#[cfg(not(feature = "catch_nullptr"))]
26088		let ret = {(self.texstorage3dmultisample)(target, samples, internalformat, width, height, depth, fixedsamplelocations); Ok(())};
26089		#[cfg(feature = "diagnose")]
26090		if let Ok(ret) = ret {
26091			return to_result("glTexStorage3DMultisample", ret, self.glGetError());
26092		} else {
26093			return ret
26094		}
26095		#[cfg(not(feature = "diagnose"))]
26096		return ret;
26097	}
26098	#[inline(always)]
26099	fn glTextureView(&self, texture: GLuint, target: GLenum, origtexture: GLuint, internalformat: GLenum, minlevel: GLuint, numlevels: GLuint, minlayer: GLuint, numlayers: GLuint) -> Result<()> {
26100		#[cfg(feature = "catch_nullptr")]
26101		let ret = process_catch("glTextureView", catch_unwind(||(self.textureview)(texture, target, origtexture, internalformat, minlevel, numlevels, minlayer, numlayers)));
26102		#[cfg(not(feature = "catch_nullptr"))]
26103		let ret = {(self.textureview)(texture, target, origtexture, internalformat, minlevel, numlevels, minlayer, numlayers); Ok(())};
26104		#[cfg(feature = "diagnose")]
26105		if let Ok(ret) = ret {
26106			return to_result("glTextureView", ret, self.glGetError());
26107		} else {
26108			return ret
26109		}
26110		#[cfg(not(feature = "diagnose"))]
26111		return ret;
26112	}
26113	#[inline(always)]
26114	fn glBindVertexBuffer(&self, bindingindex: GLuint, buffer: GLuint, offset: GLintptr, stride: GLsizei) -> Result<()> {
26115		#[cfg(feature = "catch_nullptr")]
26116		let ret = process_catch("glBindVertexBuffer", catch_unwind(||(self.bindvertexbuffer)(bindingindex, buffer, offset, stride)));
26117		#[cfg(not(feature = "catch_nullptr"))]
26118		let ret = {(self.bindvertexbuffer)(bindingindex, buffer, offset, stride); Ok(())};
26119		#[cfg(feature = "diagnose")]
26120		if let Ok(ret) = ret {
26121			return to_result("glBindVertexBuffer", ret, self.glGetError());
26122		} else {
26123			return ret
26124		}
26125		#[cfg(not(feature = "diagnose"))]
26126		return ret;
26127	}
26128	#[inline(always)]
26129	fn glVertexAttribFormat(&self, attribindex: GLuint, size: GLint, type_: GLenum, normalized: GLboolean, relativeoffset: GLuint) -> Result<()> {
26130		#[cfg(feature = "catch_nullptr")]
26131		let ret = process_catch("glVertexAttribFormat", catch_unwind(||(self.vertexattribformat)(attribindex, size, type_, normalized, relativeoffset)));
26132		#[cfg(not(feature = "catch_nullptr"))]
26133		let ret = {(self.vertexattribformat)(attribindex, size, type_, normalized, relativeoffset); Ok(())};
26134		#[cfg(feature = "diagnose")]
26135		if let Ok(ret) = ret {
26136			return to_result("glVertexAttribFormat", ret, self.glGetError());
26137		} else {
26138			return ret
26139		}
26140		#[cfg(not(feature = "diagnose"))]
26141		return ret;
26142	}
26143	#[inline(always)]
26144	fn glVertexAttribIFormat(&self, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()> {
26145		#[cfg(feature = "catch_nullptr")]
26146		let ret = process_catch("glVertexAttribIFormat", catch_unwind(||(self.vertexattribiformat)(attribindex, size, type_, relativeoffset)));
26147		#[cfg(not(feature = "catch_nullptr"))]
26148		let ret = {(self.vertexattribiformat)(attribindex, size, type_, relativeoffset); Ok(())};
26149		#[cfg(feature = "diagnose")]
26150		if let Ok(ret) = ret {
26151			return to_result("glVertexAttribIFormat", ret, self.glGetError());
26152		} else {
26153			return ret
26154		}
26155		#[cfg(not(feature = "diagnose"))]
26156		return ret;
26157	}
26158	#[inline(always)]
26159	fn glVertexAttribLFormat(&self, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()> {
26160		#[cfg(feature = "catch_nullptr")]
26161		let ret = process_catch("glVertexAttribLFormat", catch_unwind(||(self.vertexattriblformat)(attribindex, size, type_, relativeoffset)));
26162		#[cfg(not(feature = "catch_nullptr"))]
26163		let ret = {(self.vertexattriblformat)(attribindex, size, type_, relativeoffset); Ok(())};
26164		#[cfg(feature = "diagnose")]
26165		if let Ok(ret) = ret {
26166			return to_result("glVertexAttribLFormat", ret, self.glGetError());
26167		} else {
26168			return ret
26169		}
26170		#[cfg(not(feature = "diagnose"))]
26171		return ret;
26172	}
26173	#[inline(always)]
26174	fn glVertexAttribBinding(&self, attribindex: GLuint, bindingindex: GLuint) -> Result<()> {
26175		#[cfg(feature = "catch_nullptr")]
26176		let ret = process_catch("glVertexAttribBinding", catch_unwind(||(self.vertexattribbinding)(attribindex, bindingindex)));
26177		#[cfg(not(feature = "catch_nullptr"))]
26178		let ret = {(self.vertexattribbinding)(attribindex, bindingindex); Ok(())};
26179		#[cfg(feature = "diagnose")]
26180		if let Ok(ret) = ret {
26181			return to_result("glVertexAttribBinding", ret, self.glGetError());
26182		} else {
26183			return ret
26184		}
26185		#[cfg(not(feature = "diagnose"))]
26186		return ret;
26187	}
26188	#[inline(always)]
26189	fn glVertexBindingDivisor(&self, bindingindex: GLuint, divisor: GLuint) -> Result<()> {
26190		#[cfg(feature = "catch_nullptr")]
26191		let ret = process_catch("glVertexBindingDivisor", catch_unwind(||(self.vertexbindingdivisor)(bindingindex, divisor)));
26192		#[cfg(not(feature = "catch_nullptr"))]
26193		let ret = {(self.vertexbindingdivisor)(bindingindex, divisor); Ok(())};
26194		#[cfg(feature = "diagnose")]
26195		if let Ok(ret) = ret {
26196			return to_result("glVertexBindingDivisor", ret, self.glGetError());
26197		} else {
26198			return ret
26199		}
26200		#[cfg(not(feature = "diagnose"))]
26201		return ret;
26202	}
26203	#[inline(always)]
26204	fn glDebugMessageControl(&self, source: GLenum, type_: GLenum, severity: GLenum, count: GLsizei, ids: *const GLuint, enabled: GLboolean) -> Result<()> {
26205		#[cfg(feature = "catch_nullptr")]
26206		let ret = process_catch("glDebugMessageControl", catch_unwind(||(self.debugmessagecontrol)(source, type_, severity, count, ids, enabled)));
26207		#[cfg(not(feature = "catch_nullptr"))]
26208		let ret = {(self.debugmessagecontrol)(source, type_, severity, count, ids, enabled); Ok(())};
26209		#[cfg(feature = "diagnose")]
26210		if let Ok(ret) = ret {
26211			return to_result("glDebugMessageControl", ret, self.glGetError());
26212		} else {
26213			return ret
26214		}
26215		#[cfg(not(feature = "diagnose"))]
26216		return ret;
26217	}
26218	#[inline(always)]
26219	fn glDebugMessageInsert(&self, source: GLenum, type_: GLenum, id: GLuint, severity: GLenum, length: GLsizei, buf: *const GLchar) -> Result<()> {
26220		#[cfg(feature = "catch_nullptr")]
26221		let ret = process_catch("glDebugMessageInsert", catch_unwind(||(self.debugmessageinsert)(source, type_, id, severity, length, buf)));
26222		#[cfg(not(feature = "catch_nullptr"))]
26223		let ret = {(self.debugmessageinsert)(source, type_, id, severity, length, buf); Ok(())};
26224		#[cfg(feature = "diagnose")]
26225		if let Ok(ret) = ret {
26226			return to_result("glDebugMessageInsert", ret, self.glGetError());
26227		} else {
26228			return ret
26229		}
26230		#[cfg(not(feature = "diagnose"))]
26231		return ret;
26232	}
26233	#[inline(always)]
26234	fn glDebugMessageCallback(&self, callback: GLDEBUGPROC, userParam: *const c_void) -> Result<()> {
26235		#[cfg(feature = "catch_nullptr")]
26236		let ret = process_catch("glDebugMessageCallback", catch_unwind(||(self.debugmessagecallback)(callback, userParam)));
26237		#[cfg(not(feature = "catch_nullptr"))]
26238		let ret = {(self.debugmessagecallback)(callback, userParam); Ok(())};
26239		#[cfg(feature = "diagnose")]
26240		if let Ok(ret) = ret {
26241			return to_result("glDebugMessageCallback", ret, self.glGetError());
26242		} else {
26243			return ret
26244		}
26245		#[cfg(not(feature = "diagnose"))]
26246		return ret;
26247	}
26248	#[inline(always)]
26249	fn glGetDebugMessageLog(&self, count: GLuint, bufSize: GLsizei, sources: *mut GLenum, types: *mut GLenum, ids: *mut GLuint, severities: *mut GLenum, lengths: *mut GLsizei, messageLog: *mut GLchar) -> Result<GLuint> {
26250		#[cfg(feature = "catch_nullptr")]
26251		let ret = process_catch("glGetDebugMessageLog", catch_unwind(||(self.getdebugmessagelog)(count, bufSize, sources, types, ids, severities, lengths, messageLog)));
26252		#[cfg(not(feature = "catch_nullptr"))]
26253		let ret = Ok((self.getdebugmessagelog)(count, bufSize, sources, types, ids, severities, lengths, messageLog));
26254		#[cfg(feature = "diagnose")]
26255		if let Ok(ret) = ret {
26256			return to_result("glGetDebugMessageLog", ret, self.glGetError());
26257		} else {
26258			return ret
26259		}
26260		#[cfg(not(feature = "diagnose"))]
26261		return ret;
26262	}
26263	#[inline(always)]
26264	fn glPushDebugGroup(&self, source: GLenum, id: GLuint, length: GLsizei, message: *const GLchar) -> Result<()> {
26265		#[cfg(feature = "catch_nullptr")]
26266		let ret = process_catch("glPushDebugGroup", catch_unwind(||(self.pushdebuggroup)(source, id, length, message)));
26267		#[cfg(not(feature = "catch_nullptr"))]
26268		let ret = {(self.pushdebuggroup)(source, id, length, message); Ok(())};
26269		#[cfg(feature = "diagnose")]
26270		if let Ok(ret) = ret {
26271			return to_result("glPushDebugGroup", ret, self.glGetError());
26272		} else {
26273			return ret
26274		}
26275		#[cfg(not(feature = "diagnose"))]
26276		return ret;
26277	}
26278	#[inline(always)]
26279	fn glPopDebugGroup(&self) -> Result<()> {
26280		#[cfg(feature = "catch_nullptr")]
26281		let ret = process_catch("glPopDebugGroup", catch_unwind(||(self.popdebuggroup)()));
26282		#[cfg(not(feature = "catch_nullptr"))]
26283		let ret = {(self.popdebuggroup)(); Ok(())};
26284		#[cfg(feature = "diagnose")]
26285		if let Ok(ret) = ret {
26286			return to_result("glPopDebugGroup", ret, self.glGetError());
26287		} else {
26288			return ret
26289		}
26290		#[cfg(not(feature = "diagnose"))]
26291		return ret;
26292	}
26293	#[inline(always)]
26294	fn glObjectLabel(&self, identifier: GLenum, name: GLuint, length: GLsizei, label: *const GLchar) -> Result<()> {
26295		#[cfg(feature = "catch_nullptr")]
26296		let ret = process_catch("glObjectLabel", catch_unwind(||(self.objectlabel)(identifier, name, length, label)));
26297		#[cfg(not(feature = "catch_nullptr"))]
26298		let ret = {(self.objectlabel)(identifier, name, length, label); Ok(())};
26299		#[cfg(feature = "diagnose")]
26300		if let Ok(ret) = ret {
26301			return to_result("glObjectLabel", ret, self.glGetError());
26302		} else {
26303			return ret
26304		}
26305		#[cfg(not(feature = "diagnose"))]
26306		return ret;
26307	}
26308	#[inline(always)]
26309	fn glGetObjectLabel(&self, identifier: GLenum, name: GLuint, bufSize: GLsizei, length: *mut GLsizei, label: *mut GLchar) -> Result<()> {
26310		#[cfg(feature = "catch_nullptr")]
26311		let ret = process_catch("glGetObjectLabel", catch_unwind(||(self.getobjectlabel)(identifier, name, bufSize, length, label)));
26312		#[cfg(not(feature = "catch_nullptr"))]
26313		let ret = {(self.getobjectlabel)(identifier, name, bufSize, length, label); Ok(())};
26314		#[cfg(feature = "diagnose")]
26315		if let Ok(ret) = ret {
26316			return to_result("glGetObjectLabel", ret, self.glGetError());
26317		} else {
26318			return ret
26319		}
26320		#[cfg(not(feature = "diagnose"))]
26321		return ret;
26322	}
26323	#[inline(always)]
26324	fn glObjectPtrLabel(&self, ptr: *const c_void, length: GLsizei, label: *const GLchar) -> Result<()> {
26325		#[cfg(feature = "catch_nullptr")]
26326		let ret = process_catch("glObjectPtrLabel", catch_unwind(||(self.objectptrlabel)(ptr, length, label)));
26327		#[cfg(not(feature = "catch_nullptr"))]
26328		let ret = {(self.objectptrlabel)(ptr, length, label); Ok(())};
26329		#[cfg(feature = "diagnose")]
26330		if let Ok(ret) = ret {
26331			return to_result("glObjectPtrLabel", ret, self.glGetError());
26332		} else {
26333			return ret
26334		}
26335		#[cfg(not(feature = "diagnose"))]
26336		return ret;
26337	}
26338	#[inline(always)]
26339	fn glGetObjectPtrLabel(&self, ptr: *const c_void, bufSize: GLsizei, length: *mut GLsizei, label: *mut GLchar) -> Result<()> {
26340		#[cfg(feature = "catch_nullptr")]
26341		let ret = process_catch("glGetObjectPtrLabel", catch_unwind(||(self.getobjectptrlabel)(ptr, bufSize, length, label)));
26342		#[cfg(not(feature = "catch_nullptr"))]
26343		let ret = {(self.getobjectptrlabel)(ptr, bufSize, length, label); Ok(())};
26344		#[cfg(feature = "diagnose")]
26345		if let Ok(ret) = ret {
26346			return to_result("glGetObjectPtrLabel", ret, self.glGetError());
26347		} else {
26348			return ret
26349		}
26350		#[cfg(not(feature = "diagnose"))]
26351		return ret;
26352	}
26353}
26354
26355impl Version43 {
26356	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
26357		let (_spec, major, minor, release) = base.get_version();
26358		if (major, minor, release) < (4, 3, 0) {
26359			return Self::default();
26360		}
26361		Self {
26362			available: true,
26363			geterror: {let proc = get_proc_address("glGetError"); if proc.is_null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
26364			clearbufferdata: {let proc = get_proc_address("glClearBufferData"); if proc.is_null() {dummy_pfnglclearbufferdataproc} else {unsafe{transmute(proc)}}},
26365			clearbuffersubdata: {let proc = get_proc_address("glClearBufferSubData"); if proc.is_null() {dummy_pfnglclearbuffersubdataproc} else {unsafe{transmute(proc)}}},
26366			dispatchcompute: {let proc = get_proc_address("glDispatchCompute"); if proc.is_null() {dummy_pfngldispatchcomputeproc} else {unsafe{transmute(proc)}}},
26367			dispatchcomputeindirect: {let proc = get_proc_address("glDispatchComputeIndirect"); if proc.is_null() {dummy_pfngldispatchcomputeindirectproc} else {unsafe{transmute(proc)}}},
26368			copyimagesubdata: {let proc = get_proc_address("glCopyImageSubData"); if proc.is_null() {dummy_pfnglcopyimagesubdataproc} else {unsafe{transmute(proc)}}},
26369			framebufferparameteri: {let proc = get_proc_address("glFramebufferParameteri"); if proc.is_null() {dummy_pfnglframebufferparameteriproc} else {unsafe{transmute(proc)}}},
26370			getframebufferparameteriv: {let proc = get_proc_address("glGetFramebufferParameteriv"); if proc.is_null() {dummy_pfnglgetframebufferparameterivproc} else {unsafe{transmute(proc)}}},
26371			getinternalformati64v: {let proc = get_proc_address("glGetInternalformati64v"); if proc.is_null() {dummy_pfnglgetinternalformati64vproc} else {unsafe{transmute(proc)}}},
26372			invalidatetexsubimage: {let proc = get_proc_address("glInvalidateTexSubImage"); if proc.is_null() {dummy_pfnglinvalidatetexsubimageproc} else {unsafe{transmute(proc)}}},
26373			invalidateteximage: {let proc = get_proc_address("glInvalidateTexImage"); if proc.is_null() {dummy_pfnglinvalidateteximageproc} else {unsafe{transmute(proc)}}},
26374			invalidatebuffersubdata: {let proc = get_proc_address("glInvalidateBufferSubData"); if proc.is_null() {dummy_pfnglinvalidatebuffersubdataproc} else {unsafe{transmute(proc)}}},
26375			invalidatebufferdata: {let proc = get_proc_address("glInvalidateBufferData"); if proc.is_null() {dummy_pfnglinvalidatebufferdataproc} else {unsafe{transmute(proc)}}},
26376			invalidateframebuffer: {let proc = get_proc_address("glInvalidateFramebuffer"); if proc.is_null() {dummy_pfnglinvalidateframebufferproc} else {unsafe{transmute(proc)}}},
26377			invalidatesubframebuffer: {let proc = get_proc_address("glInvalidateSubFramebuffer"); if proc.is_null() {dummy_pfnglinvalidatesubframebufferproc} else {unsafe{transmute(proc)}}},
26378			multidrawarraysindirect: {let proc = get_proc_address("glMultiDrawArraysIndirect"); if proc.is_null() {dummy_pfnglmultidrawarraysindirectproc} else {unsafe{transmute(proc)}}},
26379			multidrawelementsindirect: {let proc = get_proc_address("glMultiDrawElementsIndirect"); if proc.is_null() {dummy_pfnglmultidrawelementsindirectproc} else {unsafe{transmute(proc)}}},
26380			getprograminterfaceiv: {let proc = get_proc_address("glGetProgramInterfaceiv"); if proc.is_null() {dummy_pfnglgetprograminterfaceivproc} else {unsafe{transmute(proc)}}},
26381			getprogramresourceindex: {let proc = get_proc_address("glGetProgramResourceIndex"); if proc.is_null() {dummy_pfnglgetprogramresourceindexproc} else {unsafe{transmute(proc)}}},
26382			getprogramresourcename: {let proc = get_proc_address("glGetProgramResourceName"); if proc.is_null() {dummy_pfnglgetprogramresourcenameproc} else {unsafe{transmute(proc)}}},
26383			getprogramresourceiv: {let proc = get_proc_address("glGetProgramResourceiv"); if proc.is_null() {dummy_pfnglgetprogramresourceivproc} else {unsafe{transmute(proc)}}},
26384			getprogramresourcelocation: {let proc = get_proc_address("glGetProgramResourceLocation"); if proc.is_null() {dummy_pfnglgetprogramresourcelocationproc} else {unsafe{transmute(proc)}}},
26385			getprogramresourcelocationindex: {let proc = get_proc_address("glGetProgramResourceLocationIndex"); if proc.is_null() {dummy_pfnglgetprogramresourcelocationindexproc} else {unsafe{transmute(proc)}}},
26386			shaderstorageblockbinding: {let proc = get_proc_address("glShaderStorageBlockBinding"); if proc.is_null() {dummy_pfnglshaderstorageblockbindingproc} else {unsafe{transmute(proc)}}},
26387			texbufferrange: {let proc = get_proc_address("glTexBufferRange"); if proc.is_null() {dummy_pfngltexbufferrangeproc} else {unsafe{transmute(proc)}}},
26388			texstorage2dmultisample: {let proc = get_proc_address("glTexStorage2DMultisample"); if proc.is_null() {dummy_pfngltexstorage2dmultisampleproc} else {unsafe{transmute(proc)}}},
26389			texstorage3dmultisample: {let proc = get_proc_address("glTexStorage3DMultisample"); if proc.is_null() {dummy_pfngltexstorage3dmultisampleproc} else {unsafe{transmute(proc)}}},
26390			textureview: {let proc = get_proc_address("glTextureView"); if proc.is_null() {dummy_pfngltextureviewproc} else {unsafe{transmute(proc)}}},
26391			bindvertexbuffer: {let proc = get_proc_address("glBindVertexBuffer"); if proc.is_null() {dummy_pfnglbindvertexbufferproc} else {unsafe{transmute(proc)}}},
26392			vertexattribformat: {let proc = get_proc_address("glVertexAttribFormat"); if proc.is_null() {dummy_pfnglvertexattribformatproc} else {unsafe{transmute(proc)}}},
26393			vertexattribiformat: {let proc = get_proc_address("glVertexAttribIFormat"); if proc.is_null() {dummy_pfnglvertexattribiformatproc} else {unsafe{transmute(proc)}}},
26394			vertexattriblformat: {let proc = get_proc_address("glVertexAttribLFormat"); if proc.is_null() {dummy_pfnglvertexattriblformatproc} else {unsafe{transmute(proc)}}},
26395			vertexattribbinding: {let proc = get_proc_address("glVertexAttribBinding"); if proc.is_null() {dummy_pfnglvertexattribbindingproc} else {unsafe{transmute(proc)}}},
26396			vertexbindingdivisor: {let proc = get_proc_address("glVertexBindingDivisor"); if proc.is_null() {dummy_pfnglvertexbindingdivisorproc} else {unsafe{transmute(proc)}}},
26397			debugmessagecontrol: {let proc = get_proc_address("glDebugMessageControl"); if proc.is_null() {dummy_pfngldebugmessagecontrolproc} else {unsafe{transmute(proc)}}},
26398			debugmessageinsert: {let proc = get_proc_address("glDebugMessageInsert"); if proc.is_null() {dummy_pfngldebugmessageinsertproc} else {unsafe{transmute(proc)}}},
26399			debugmessagecallback: {let proc = get_proc_address("glDebugMessageCallback"); if proc.is_null() {dummy_pfngldebugmessagecallbackproc} else {unsafe{transmute(proc)}}},
26400			getdebugmessagelog: {let proc = get_proc_address("glGetDebugMessageLog"); if proc.is_null() {dummy_pfnglgetdebugmessagelogproc} else {unsafe{transmute(proc)}}},
26401			pushdebuggroup: {let proc = get_proc_address("glPushDebugGroup"); if proc.is_null() {dummy_pfnglpushdebuggroupproc} else {unsafe{transmute(proc)}}},
26402			popdebuggroup: {let proc = get_proc_address("glPopDebugGroup"); if proc.is_null() {dummy_pfnglpopdebuggroupproc} else {unsafe{transmute(proc)}}},
26403			objectlabel: {let proc = get_proc_address("glObjectLabel"); if proc.is_null() {dummy_pfnglobjectlabelproc} else {unsafe{transmute(proc)}}},
26404			getobjectlabel: {let proc = get_proc_address("glGetObjectLabel"); if proc.is_null() {dummy_pfnglgetobjectlabelproc} else {unsafe{transmute(proc)}}},
26405			objectptrlabel: {let proc = get_proc_address("glObjectPtrLabel"); if proc.is_null() {dummy_pfnglobjectptrlabelproc} else {unsafe{transmute(proc)}}},
26406			getobjectptrlabel: {let proc = get_proc_address("glGetObjectPtrLabel"); if proc.is_null() {dummy_pfnglgetobjectptrlabelproc} else {unsafe{transmute(proc)}}},
26407		}
26408	}
26409	#[inline(always)]
26410	pub fn get_available(&self) -> bool {
26411		self.available
26412	}
26413}
26414
26415impl Default for Version43 {
26416	fn default() -> Self {
26417		Self {
26418			available: false,
26419			geterror: dummy_pfnglgeterrorproc,
26420			clearbufferdata: dummy_pfnglclearbufferdataproc,
26421			clearbuffersubdata: dummy_pfnglclearbuffersubdataproc,
26422			dispatchcompute: dummy_pfngldispatchcomputeproc,
26423			dispatchcomputeindirect: dummy_pfngldispatchcomputeindirectproc,
26424			copyimagesubdata: dummy_pfnglcopyimagesubdataproc,
26425			framebufferparameteri: dummy_pfnglframebufferparameteriproc,
26426			getframebufferparameteriv: dummy_pfnglgetframebufferparameterivproc,
26427			getinternalformati64v: dummy_pfnglgetinternalformati64vproc,
26428			invalidatetexsubimage: dummy_pfnglinvalidatetexsubimageproc,
26429			invalidateteximage: dummy_pfnglinvalidateteximageproc,
26430			invalidatebuffersubdata: dummy_pfnglinvalidatebuffersubdataproc,
26431			invalidatebufferdata: dummy_pfnglinvalidatebufferdataproc,
26432			invalidateframebuffer: dummy_pfnglinvalidateframebufferproc,
26433			invalidatesubframebuffer: dummy_pfnglinvalidatesubframebufferproc,
26434			multidrawarraysindirect: dummy_pfnglmultidrawarraysindirectproc,
26435			multidrawelementsindirect: dummy_pfnglmultidrawelementsindirectproc,
26436			getprograminterfaceiv: dummy_pfnglgetprograminterfaceivproc,
26437			getprogramresourceindex: dummy_pfnglgetprogramresourceindexproc,
26438			getprogramresourcename: dummy_pfnglgetprogramresourcenameproc,
26439			getprogramresourceiv: dummy_pfnglgetprogramresourceivproc,
26440			getprogramresourcelocation: dummy_pfnglgetprogramresourcelocationproc,
26441			getprogramresourcelocationindex: dummy_pfnglgetprogramresourcelocationindexproc,
26442			shaderstorageblockbinding: dummy_pfnglshaderstorageblockbindingproc,
26443			texbufferrange: dummy_pfngltexbufferrangeproc,
26444			texstorage2dmultisample: dummy_pfngltexstorage2dmultisampleproc,
26445			texstorage3dmultisample: dummy_pfngltexstorage3dmultisampleproc,
26446			textureview: dummy_pfngltextureviewproc,
26447			bindvertexbuffer: dummy_pfnglbindvertexbufferproc,
26448			vertexattribformat: dummy_pfnglvertexattribformatproc,
26449			vertexattribiformat: dummy_pfnglvertexattribiformatproc,
26450			vertexattriblformat: dummy_pfnglvertexattriblformatproc,
26451			vertexattribbinding: dummy_pfnglvertexattribbindingproc,
26452			vertexbindingdivisor: dummy_pfnglvertexbindingdivisorproc,
26453			debugmessagecontrol: dummy_pfngldebugmessagecontrolproc,
26454			debugmessageinsert: dummy_pfngldebugmessageinsertproc,
26455			debugmessagecallback: dummy_pfngldebugmessagecallbackproc,
26456			getdebugmessagelog: dummy_pfnglgetdebugmessagelogproc,
26457			pushdebuggroup: dummy_pfnglpushdebuggroupproc,
26458			popdebuggroup: dummy_pfnglpopdebuggroupproc,
26459			objectlabel: dummy_pfnglobjectlabelproc,
26460			getobjectlabel: dummy_pfnglgetobjectlabelproc,
26461			objectptrlabel: dummy_pfnglobjectptrlabelproc,
26462			getobjectptrlabel: dummy_pfnglgetobjectptrlabelproc,
26463		}
26464	}
26465}
26466impl Debug for Version43 {
26467	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
26468		if self.available {
26469			f.debug_struct("Version43")
26470			.field("available", &self.available)
26471			.field("clearbufferdata", unsafe{if transmute::<_, *const c_void>(self.clearbufferdata) == (dummy_pfnglclearbufferdataproc as *const c_void) {&null::<PFNGLCLEARBUFFERDATAPROC>()} else {&self.clearbufferdata}})
26472			.field("clearbuffersubdata", unsafe{if transmute::<_, *const c_void>(self.clearbuffersubdata) == (dummy_pfnglclearbuffersubdataproc as *const c_void) {&null::<PFNGLCLEARBUFFERSUBDATAPROC>()} else {&self.clearbuffersubdata}})
26473			.field("dispatchcompute", unsafe{if transmute::<_, *const c_void>(self.dispatchcompute) == (dummy_pfngldispatchcomputeproc as *const c_void) {&null::<PFNGLDISPATCHCOMPUTEPROC>()} else {&self.dispatchcompute}})
26474			.field("dispatchcomputeindirect", unsafe{if transmute::<_, *const c_void>(self.dispatchcomputeindirect) == (dummy_pfngldispatchcomputeindirectproc as *const c_void) {&null::<PFNGLDISPATCHCOMPUTEINDIRECTPROC>()} else {&self.dispatchcomputeindirect}})
26475			.field("copyimagesubdata", unsafe{if transmute::<_, *const c_void>(self.copyimagesubdata) == (dummy_pfnglcopyimagesubdataproc as *const c_void) {&null::<PFNGLCOPYIMAGESUBDATAPROC>()} else {&self.copyimagesubdata}})
26476			.field("framebufferparameteri", unsafe{if transmute::<_, *const c_void>(self.framebufferparameteri) == (dummy_pfnglframebufferparameteriproc as *const c_void) {&null::<PFNGLFRAMEBUFFERPARAMETERIPROC>()} else {&self.framebufferparameteri}})
26477			.field("getframebufferparameteriv", unsafe{if transmute::<_, *const c_void>(self.getframebufferparameteriv) == (dummy_pfnglgetframebufferparameterivproc as *const c_void) {&null::<PFNGLGETFRAMEBUFFERPARAMETERIVPROC>()} else {&self.getframebufferparameteriv}})
26478			.field("getinternalformati64v", unsafe{if transmute::<_, *const c_void>(self.getinternalformati64v) == (dummy_pfnglgetinternalformati64vproc as *const c_void) {&null::<PFNGLGETINTERNALFORMATI64VPROC>()} else {&self.getinternalformati64v}})
26479			.field("invalidatetexsubimage", unsafe{if transmute::<_, *const c_void>(self.invalidatetexsubimage) == (dummy_pfnglinvalidatetexsubimageproc as *const c_void) {&null::<PFNGLINVALIDATETEXSUBIMAGEPROC>()} else {&self.invalidatetexsubimage}})
26480			.field("invalidateteximage", unsafe{if transmute::<_, *const c_void>(self.invalidateteximage) == (dummy_pfnglinvalidateteximageproc as *const c_void) {&null::<PFNGLINVALIDATETEXIMAGEPROC>()} else {&self.invalidateteximage}})
26481			.field("invalidatebuffersubdata", unsafe{if transmute::<_, *const c_void>(self.invalidatebuffersubdata) == (dummy_pfnglinvalidatebuffersubdataproc as *const c_void) {&null::<PFNGLINVALIDATEBUFFERSUBDATAPROC>()} else {&self.invalidatebuffersubdata}})
26482			.field("invalidatebufferdata", unsafe{if transmute::<_, *const c_void>(self.invalidatebufferdata) == (dummy_pfnglinvalidatebufferdataproc as *const c_void) {&null::<PFNGLINVALIDATEBUFFERDATAPROC>()} else {&self.invalidatebufferdata}})
26483			.field("invalidateframebuffer", unsafe{if transmute::<_, *const c_void>(self.invalidateframebuffer) == (dummy_pfnglinvalidateframebufferproc as *const c_void) {&null::<PFNGLINVALIDATEFRAMEBUFFERPROC>()} else {&self.invalidateframebuffer}})
26484			.field("invalidatesubframebuffer", unsafe{if transmute::<_, *const c_void>(self.invalidatesubframebuffer) == (dummy_pfnglinvalidatesubframebufferproc as *const c_void) {&null::<PFNGLINVALIDATESUBFRAMEBUFFERPROC>()} else {&self.invalidatesubframebuffer}})
26485			.field("multidrawarraysindirect", unsafe{if transmute::<_, *const c_void>(self.multidrawarraysindirect) == (dummy_pfnglmultidrawarraysindirectproc as *const c_void) {&null::<PFNGLMULTIDRAWARRAYSINDIRECTPROC>()} else {&self.multidrawarraysindirect}})
26486			.field("multidrawelementsindirect", unsafe{if transmute::<_, *const c_void>(self.multidrawelementsindirect) == (dummy_pfnglmultidrawelementsindirectproc as *const c_void) {&null::<PFNGLMULTIDRAWELEMENTSINDIRECTPROC>()} else {&self.multidrawelementsindirect}})
26487			.field("getprograminterfaceiv", unsafe{if transmute::<_, *const c_void>(self.getprograminterfaceiv) == (dummy_pfnglgetprograminterfaceivproc as *const c_void) {&null::<PFNGLGETPROGRAMINTERFACEIVPROC>()} else {&self.getprograminterfaceiv}})
26488			.field("getprogramresourceindex", unsafe{if transmute::<_, *const c_void>(self.getprogramresourceindex) == (dummy_pfnglgetprogramresourceindexproc as *const c_void) {&null::<PFNGLGETPROGRAMRESOURCEINDEXPROC>()} else {&self.getprogramresourceindex}})
26489			.field("getprogramresourcename", unsafe{if transmute::<_, *const c_void>(self.getprogramresourcename) == (dummy_pfnglgetprogramresourcenameproc as *const c_void) {&null::<PFNGLGETPROGRAMRESOURCENAMEPROC>()} else {&self.getprogramresourcename}})
26490			.field("getprogramresourceiv", unsafe{if transmute::<_, *const c_void>(self.getprogramresourceiv) == (dummy_pfnglgetprogramresourceivproc as *const c_void) {&null::<PFNGLGETPROGRAMRESOURCEIVPROC>()} else {&self.getprogramresourceiv}})
26491			.field("getprogramresourcelocation", unsafe{if transmute::<_, *const c_void>(self.getprogramresourcelocation) == (dummy_pfnglgetprogramresourcelocationproc as *const c_void) {&null::<PFNGLGETPROGRAMRESOURCELOCATIONPROC>()} else {&self.getprogramresourcelocation}})
26492			.field("getprogramresourcelocationindex", unsafe{if transmute::<_, *const c_void>(self.getprogramresourcelocationindex) == (dummy_pfnglgetprogramresourcelocationindexproc as *const c_void) {&null::<PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC>()} else {&self.getprogramresourcelocationindex}})
26493			.field("shaderstorageblockbinding", unsafe{if transmute::<_, *const c_void>(self.shaderstorageblockbinding) == (dummy_pfnglshaderstorageblockbindingproc as *const c_void) {&null::<PFNGLSHADERSTORAGEBLOCKBINDINGPROC>()} else {&self.shaderstorageblockbinding}})
26494			.field("texbufferrange", unsafe{if transmute::<_, *const c_void>(self.texbufferrange) == (dummy_pfngltexbufferrangeproc as *const c_void) {&null::<PFNGLTEXBUFFERRANGEPROC>()} else {&self.texbufferrange}})
26495			.field("texstorage2dmultisample", unsafe{if transmute::<_, *const c_void>(self.texstorage2dmultisample) == (dummy_pfngltexstorage2dmultisampleproc as *const c_void) {&null::<PFNGLTEXSTORAGE2DMULTISAMPLEPROC>()} else {&self.texstorage2dmultisample}})
26496			.field("texstorage3dmultisample", unsafe{if transmute::<_, *const c_void>(self.texstorage3dmultisample) == (dummy_pfngltexstorage3dmultisampleproc as *const c_void) {&null::<PFNGLTEXSTORAGE3DMULTISAMPLEPROC>()} else {&self.texstorage3dmultisample}})
26497			.field("textureview", unsafe{if transmute::<_, *const c_void>(self.textureview) == (dummy_pfngltextureviewproc as *const c_void) {&null::<PFNGLTEXTUREVIEWPROC>()} else {&self.textureview}})
26498			.field("bindvertexbuffer", unsafe{if transmute::<_, *const c_void>(self.bindvertexbuffer) == (dummy_pfnglbindvertexbufferproc as *const c_void) {&null::<PFNGLBINDVERTEXBUFFERPROC>()} else {&self.bindvertexbuffer}})
26499			.field("vertexattribformat", unsafe{if transmute::<_, *const c_void>(self.vertexattribformat) == (dummy_pfnglvertexattribformatproc as *const c_void) {&null::<PFNGLVERTEXATTRIBFORMATPROC>()} else {&self.vertexattribformat}})
26500			.field("vertexattribiformat", unsafe{if transmute::<_, *const c_void>(self.vertexattribiformat) == (dummy_pfnglvertexattribiformatproc as *const c_void) {&null::<PFNGLVERTEXATTRIBIFORMATPROC>()} else {&self.vertexattribiformat}})
26501			.field("vertexattriblformat", unsafe{if transmute::<_, *const c_void>(self.vertexattriblformat) == (dummy_pfnglvertexattriblformatproc as *const c_void) {&null::<PFNGLVERTEXATTRIBLFORMATPROC>()} else {&self.vertexattriblformat}})
26502			.field("vertexattribbinding", unsafe{if transmute::<_, *const c_void>(self.vertexattribbinding) == (dummy_pfnglvertexattribbindingproc as *const c_void) {&null::<PFNGLVERTEXATTRIBBINDINGPROC>()} else {&self.vertexattribbinding}})
26503			.field("vertexbindingdivisor", unsafe{if transmute::<_, *const c_void>(self.vertexbindingdivisor) == (dummy_pfnglvertexbindingdivisorproc as *const c_void) {&null::<PFNGLVERTEXBINDINGDIVISORPROC>()} else {&self.vertexbindingdivisor}})
26504			.field("debugmessagecontrol", unsafe{if transmute::<_, *const c_void>(self.debugmessagecontrol) == (dummy_pfngldebugmessagecontrolproc as *const c_void) {&null::<PFNGLDEBUGMESSAGECONTROLPROC>()} else {&self.debugmessagecontrol}})
26505			.field("debugmessageinsert", unsafe{if transmute::<_, *const c_void>(self.debugmessageinsert) == (dummy_pfngldebugmessageinsertproc as *const c_void) {&null::<PFNGLDEBUGMESSAGEINSERTPROC>()} else {&self.debugmessageinsert}})
26506			.field("debugmessagecallback", unsafe{if transmute::<_, *const c_void>(self.debugmessagecallback) == (dummy_pfngldebugmessagecallbackproc as *const c_void) {&null::<PFNGLDEBUGMESSAGECALLBACKPROC>()} else {&self.debugmessagecallback}})
26507			.field("getdebugmessagelog", unsafe{if transmute::<_, *const c_void>(self.getdebugmessagelog) == (dummy_pfnglgetdebugmessagelogproc as *const c_void) {&null::<PFNGLGETDEBUGMESSAGELOGPROC>()} else {&self.getdebugmessagelog}})
26508			.field("pushdebuggroup", unsafe{if transmute::<_, *const c_void>(self.pushdebuggroup) == (dummy_pfnglpushdebuggroupproc as *const c_void) {&null::<PFNGLPUSHDEBUGGROUPPROC>()} else {&self.pushdebuggroup}})
26509			.field("popdebuggroup", unsafe{if transmute::<_, *const c_void>(self.popdebuggroup) == (dummy_pfnglpopdebuggroupproc as *const c_void) {&null::<PFNGLPOPDEBUGGROUPPROC>()} else {&self.popdebuggroup}})
26510			.field("objectlabel", unsafe{if transmute::<_, *const c_void>(self.objectlabel) == (dummy_pfnglobjectlabelproc as *const c_void) {&null::<PFNGLOBJECTLABELPROC>()} else {&self.objectlabel}})
26511			.field("getobjectlabel", unsafe{if transmute::<_, *const c_void>(self.getobjectlabel) == (dummy_pfnglgetobjectlabelproc as *const c_void) {&null::<PFNGLGETOBJECTLABELPROC>()} else {&self.getobjectlabel}})
26512			.field("objectptrlabel", unsafe{if transmute::<_, *const c_void>(self.objectptrlabel) == (dummy_pfnglobjectptrlabelproc as *const c_void) {&null::<PFNGLOBJECTPTRLABELPROC>()} else {&self.objectptrlabel}})
26513			.field("getobjectptrlabel", unsafe{if transmute::<_, *const c_void>(self.getobjectptrlabel) == (dummy_pfnglgetobjectptrlabelproc as *const c_void) {&null::<PFNGLGETOBJECTPTRLABELPROC>()} else {&self.getobjectptrlabel}})
26514			.finish()
26515		} else {
26516			f.debug_struct("Version43")
26517			.field("available", &self.available)
26518			.finish_non_exhaustive()
26519		}
26520	}
26521}
26522
26523/// The prototype to the OpenGL function `BufferStorage`
26524type PFNGLBUFFERSTORAGEPROC = extern "system" fn(GLenum, GLsizeiptr, *const c_void, GLbitfield);
26525
26526/// The prototype to the OpenGL function `ClearTexImage`
26527type PFNGLCLEARTEXIMAGEPROC = extern "system" fn(GLuint, GLint, GLenum, GLenum, *const c_void);
26528
26529/// The prototype to the OpenGL function `ClearTexSubImage`
26530type PFNGLCLEARTEXSUBIMAGEPROC = extern "system" fn(GLuint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, *const c_void);
26531
26532/// The prototype to the OpenGL function `BindBuffersBase`
26533type PFNGLBINDBUFFERSBASEPROC = extern "system" fn(GLenum, GLuint, GLsizei, *const GLuint);
26534
26535/// The prototype to the OpenGL function `BindBuffersRange`
26536type PFNGLBINDBUFFERSRANGEPROC = extern "system" fn(GLenum, GLuint, GLsizei, *const GLuint, *const GLintptr, *const GLsizeiptr);
26537
26538/// The prototype to the OpenGL function `BindTextures`
26539type PFNGLBINDTEXTURESPROC = extern "system" fn(GLuint, GLsizei, *const GLuint);
26540
26541/// The prototype to the OpenGL function `BindSamplers`
26542type PFNGLBINDSAMPLERSPROC = extern "system" fn(GLuint, GLsizei, *const GLuint);
26543
26544/// The prototype to the OpenGL function `BindImageTextures`
26545type PFNGLBINDIMAGETEXTURESPROC = extern "system" fn(GLuint, GLsizei, *const GLuint);
26546
26547/// The prototype to the OpenGL function `BindVertexBuffers`
26548type PFNGLBINDVERTEXBUFFERSPROC = extern "system" fn(GLuint, GLsizei, *const GLuint, *const GLintptr, *const GLsizei);
26549
26550/// The dummy function of `BufferStorage()`
26551extern "system" fn dummy_pfnglbufferstorageproc (_: GLenum, _: GLsizeiptr, _: *const c_void, _: GLbitfield) {
26552	panic!("OpenGL function pointer `glBufferStorage()` is null.")
26553}
26554
26555/// The dummy function of `ClearTexImage()`
26556extern "system" fn dummy_pfnglclearteximageproc (_: GLuint, _: GLint, _: GLenum, _: GLenum, _: *const c_void) {
26557	panic!("OpenGL function pointer `glClearTexImage()` is null.")
26558}
26559
26560/// The dummy function of `ClearTexSubImage()`
26561extern "system" fn dummy_pfnglcleartexsubimageproc (_: GLuint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLsizei, _: GLenum, _: GLenum, _: *const c_void) {
26562	panic!("OpenGL function pointer `glClearTexSubImage()` is null.")
26563}
26564
26565/// The dummy function of `BindBuffersBase()`
26566extern "system" fn dummy_pfnglbindbuffersbaseproc (_: GLenum, _: GLuint, _: GLsizei, _: *const GLuint) {
26567	panic!("OpenGL function pointer `glBindBuffersBase()` is null.")
26568}
26569
26570/// The dummy function of `BindBuffersRange()`
26571extern "system" fn dummy_pfnglbindbuffersrangeproc (_: GLenum, _: GLuint, _: GLsizei, _: *const GLuint, _: *const GLintptr, _: *const GLsizeiptr) {
26572	panic!("OpenGL function pointer `glBindBuffersRange()` is null.")
26573}
26574
26575/// The dummy function of `BindTextures()`
26576extern "system" fn dummy_pfnglbindtexturesproc (_: GLuint, _: GLsizei, _: *const GLuint) {
26577	panic!("OpenGL function pointer `glBindTextures()` is null.")
26578}
26579
26580/// The dummy function of `BindSamplers()`
26581extern "system" fn dummy_pfnglbindsamplersproc (_: GLuint, _: GLsizei, _: *const GLuint) {
26582	panic!("OpenGL function pointer `glBindSamplers()` is null.")
26583}
26584
26585/// The dummy function of `BindImageTextures()`
26586extern "system" fn dummy_pfnglbindimagetexturesproc (_: GLuint, _: GLsizei, _: *const GLuint) {
26587	panic!("OpenGL function pointer `glBindImageTextures()` is null.")
26588}
26589
26590/// The dummy function of `BindVertexBuffers()`
26591extern "system" fn dummy_pfnglbindvertexbuffersproc (_: GLuint, _: GLsizei, _: *const GLuint, _: *const GLintptr, _: *const GLsizei) {
26592	panic!("OpenGL function pointer `glBindVertexBuffers()` is null.")
26593}
26594/// Constant value defined from OpenGL 4.4
26595pub const GL_MAX_VERTEX_ATTRIB_STRIDE: GLenum = 0x82E5;
26596
26597/// Constant value defined from OpenGL 4.4
26598pub const GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED: GLenum = 0x8221;
26599
26600/// Constant value defined from OpenGL 4.4
26601pub const GL_TEXTURE_BUFFER_BINDING: GLenum = 0x8C2A;
26602
26603/// Constant value defined from OpenGL 4.4
26604pub const GL_MAP_PERSISTENT_BIT: GLbitfield = 0x0040;
26605
26606/// Constant value defined from OpenGL 4.4
26607pub const GL_MAP_COHERENT_BIT: GLbitfield = 0x0080;
26608
26609/// Constant value defined from OpenGL 4.4
26610pub const GL_DYNAMIC_STORAGE_BIT: GLbitfield = 0x0100;
26611
26612/// Constant value defined from OpenGL 4.4
26613pub const GL_CLIENT_STORAGE_BIT: GLbitfield = 0x0200;
26614
26615/// Constant value defined from OpenGL 4.4
26616pub const GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT: GLbitfield = 0x00004000;
26617
26618/// Constant value defined from OpenGL 4.4
26619pub const GL_BUFFER_IMMUTABLE_STORAGE: GLenum = 0x821F;
26620
26621/// Constant value defined from OpenGL 4.4
26622pub const GL_BUFFER_STORAGE_FLAGS: GLenum = 0x8220;
26623
26624/// Constant value defined from OpenGL 4.4
26625pub const GL_CLEAR_TEXTURE: GLenum = 0x9365;
26626
26627/// Constant value defined from OpenGL 4.4
26628pub const GL_LOCATION_COMPONENT: GLenum = 0x934A;
26629
26630/// Constant value defined from OpenGL 4.4
26631pub const GL_TRANSFORM_FEEDBACK_BUFFER_INDEX: GLenum = 0x934B;
26632
26633/// Constant value defined from OpenGL 4.4
26634pub const GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE: GLenum = 0x934C;
26635
26636/// Constant value defined from OpenGL 4.4
26637pub const GL_QUERY_BUFFER: GLenum = 0x9192;
26638
26639/// Constant value defined from OpenGL 4.4
26640pub const GL_QUERY_BUFFER_BARRIER_BIT: GLbitfield = 0x00008000;
26641
26642/// Constant value defined from OpenGL 4.4
26643pub const GL_QUERY_BUFFER_BINDING: GLenum = 0x9193;
26644
26645/// Constant value defined from OpenGL 4.4
26646pub const GL_QUERY_RESULT_NO_WAIT: GLenum = 0x9194;
26647
26648/// Constant value defined from OpenGL 4.4
26649pub const GL_MIRROR_CLAMP_TO_EDGE: GLenum = 0x8743;
26650
26651/// Functions from OpenGL version 4.4
26652pub trait GL_4_4 {
26653	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
26654	fn glGetError(&self) -> GLenum;
26655
26656	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBufferStorage.xhtml>
26657	fn glBufferStorage(&self, target: GLenum, size: GLsizeiptr, data: *const c_void, flags: GLbitfield) -> Result<()>;
26658
26659	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearTexImage.xhtml>
26660	fn glClearTexImage(&self, texture: GLuint, level: GLint, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()>;
26661
26662	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearTexSubImage.xhtml>
26663	fn glClearTexSubImage(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()>;
26664
26665	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindBuffersBase.xhtml>
26666	fn glBindBuffersBase(&self, target: GLenum, first: GLuint, count: GLsizei, buffers: *const GLuint) -> Result<()>;
26667
26668	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindBuffersRange.xhtml>
26669	fn glBindBuffersRange(&self, target: GLenum, first: GLuint, count: GLsizei, buffers: *const GLuint, offsets: *const GLintptr, sizes: *const GLsizeiptr) -> Result<()>;
26670
26671	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindTextures.xhtml>
26672	fn glBindTextures(&self, first: GLuint, count: GLsizei, textures: *const GLuint) -> Result<()>;
26673
26674	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindSamplers.xhtml>
26675	fn glBindSamplers(&self, first: GLuint, count: GLsizei, samplers: *const GLuint) -> Result<()>;
26676
26677	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindImageTextures.xhtml>
26678	fn glBindImageTextures(&self, first: GLuint, count: GLsizei, textures: *const GLuint) -> Result<()>;
26679
26680	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindVertexBuffers.xhtml>
26681	fn glBindVertexBuffers(&self, first: GLuint, count: GLsizei, buffers: *const GLuint, offsets: *const GLintptr, strides: *const GLsizei) -> Result<()>;
26682}
26683/// Functions from OpenGL version 4.4
26684#[derive(Clone, Copy, PartialEq, Eq, Hash)]
26685pub struct Version44 {
26686	/// Is OpenGL version 4.4 available
26687	available: bool,
26688
26689	/// The function pointer to `glGetError()`
26690	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
26691	pub geterror: PFNGLGETERRORPROC,
26692
26693	/// The function pointer to `glBufferStorage()`
26694	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBufferStorage.xhtml>
26695	pub bufferstorage: PFNGLBUFFERSTORAGEPROC,
26696
26697	/// The function pointer to `glClearTexImage()`
26698	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearTexImage.xhtml>
26699	pub clearteximage: PFNGLCLEARTEXIMAGEPROC,
26700
26701	/// The function pointer to `glClearTexSubImage()`
26702	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearTexSubImage.xhtml>
26703	pub cleartexsubimage: PFNGLCLEARTEXSUBIMAGEPROC,
26704
26705	/// The function pointer to `glBindBuffersBase()`
26706	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindBuffersBase.xhtml>
26707	pub bindbuffersbase: PFNGLBINDBUFFERSBASEPROC,
26708
26709	/// The function pointer to `glBindBuffersRange()`
26710	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindBuffersRange.xhtml>
26711	pub bindbuffersrange: PFNGLBINDBUFFERSRANGEPROC,
26712
26713	/// The function pointer to `glBindTextures()`
26714	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindTextures.xhtml>
26715	pub bindtextures: PFNGLBINDTEXTURESPROC,
26716
26717	/// The function pointer to `glBindSamplers()`
26718	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindSamplers.xhtml>
26719	pub bindsamplers: PFNGLBINDSAMPLERSPROC,
26720
26721	/// The function pointer to `glBindImageTextures()`
26722	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindImageTextures.xhtml>
26723	pub bindimagetextures: PFNGLBINDIMAGETEXTURESPROC,
26724
26725	/// The function pointer to `glBindVertexBuffers()`
26726	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindVertexBuffers.xhtml>
26727	pub bindvertexbuffers: PFNGLBINDVERTEXBUFFERSPROC,
26728}
26729
26730impl GL_4_4 for Version44 {
26731	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
26732	#[inline(always)]
26733	fn glGetError(&self) -> GLenum {
26734		(self.geterror)()
26735	}
26736	#[inline(always)]
26737	fn glBufferStorage(&self, target: GLenum, size: GLsizeiptr, data: *const c_void, flags: GLbitfield) -> Result<()> {
26738		#[cfg(feature = "catch_nullptr")]
26739		let ret = process_catch("glBufferStorage", catch_unwind(||(self.bufferstorage)(target, size, data, flags)));
26740		#[cfg(not(feature = "catch_nullptr"))]
26741		let ret = {(self.bufferstorage)(target, size, data, flags); Ok(())};
26742		#[cfg(feature = "diagnose")]
26743		if let Ok(ret) = ret {
26744			return to_result("glBufferStorage", ret, self.glGetError());
26745		} else {
26746			return ret
26747		}
26748		#[cfg(not(feature = "diagnose"))]
26749		return ret;
26750	}
26751	#[inline(always)]
26752	fn glClearTexImage(&self, texture: GLuint, level: GLint, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()> {
26753		#[cfg(feature = "catch_nullptr")]
26754		let ret = process_catch("glClearTexImage", catch_unwind(||(self.clearteximage)(texture, level, format, type_, data)));
26755		#[cfg(not(feature = "catch_nullptr"))]
26756		let ret = {(self.clearteximage)(texture, level, format, type_, data); Ok(())};
26757		#[cfg(feature = "diagnose")]
26758		if let Ok(ret) = ret {
26759			return to_result("glClearTexImage", ret, self.glGetError());
26760		} else {
26761			return ret
26762		}
26763		#[cfg(not(feature = "diagnose"))]
26764		return ret;
26765	}
26766	#[inline(always)]
26767	fn glClearTexSubImage(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()> {
26768		#[cfg(feature = "catch_nullptr")]
26769		let ret = process_catch("glClearTexSubImage", catch_unwind(||(self.cleartexsubimage)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, data)));
26770		#[cfg(not(feature = "catch_nullptr"))]
26771		let ret = {(self.cleartexsubimage)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, data); Ok(())};
26772		#[cfg(feature = "diagnose")]
26773		if let Ok(ret) = ret {
26774			return to_result("glClearTexSubImage", ret, self.glGetError());
26775		} else {
26776			return ret
26777		}
26778		#[cfg(not(feature = "diagnose"))]
26779		return ret;
26780	}
26781	#[inline(always)]
26782	fn glBindBuffersBase(&self, target: GLenum, first: GLuint, count: GLsizei, buffers: *const GLuint) -> Result<()> {
26783		#[cfg(feature = "catch_nullptr")]
26784		let ret = process_catch("glBindBuffersBase", catch_unwind(||(self.bindbuffersbase)(target, first, count, buffers)));
26785		#[cfg(not(feature = "catch_nullptr"))]
26786		let ret = {(self.bindbuffersbase)(target, first, count, buffers); Ok(())};
26787		#[cfg(feature = "diagnose")]
26788		if let Ok(ret) = ret {
26789			return to_result("glBindBuffersBase", ret, self.glGetError());
26790		} else {
26791			return ret
26792		}
26793		#[cfg(not(feature = "diagnose"))]
26794		return ret;
26795	}
26796	#[inline(always)]
26797	fn glBindBuffersRange(&self, target: GLenum, first: GLuint, count: GLsizei, buffers: *const GLuint, offsets: *const GLintptr, sizes: *const GLsizeiptr) -> Result<()> {
26798		#[cfg(feature = "catch_nullptr")]
26799		let ret = process_catch("glBindBuffersRange", catch_unwind(||(self.bindbuffersrange)(target, first, count, buffers, offsets, sizes)));
26800		#[cfg(not(feature = "catch_nullptr"))]
26801		let ret = {(self.bindbuffersrange)(target, first, count, buffers, offsets, sizes); Ok(())};
26802		#[cfg(feature = "diagnose")]
26803		if let Ok(ret) = ret {
26804			return to_result("glBindBuffersRange", ret, self.glGetError());
26805		} else {
26806			return ret
26807		}
26808		#[cfg(not(feature = "diagnose"))]
26809		return ret;
26810	}
26811	#[inline(always)]
26812	fn glBindTextures(&self, first: GLuint, count: GLsizei, textures: *const GLuint) -> Result<()> {
26813		#[cfg(feature = "catch_nullptr")]
26814		let ret = process_catch("glBindTextures", catch_unwind(||(self.bindtextures)(first, count, textures)));
26815		#[cfg(not(feature = "catch_nullptr"))]
26816		let ret = {(self.bindtextures)(first, count, textures); Ok(())};
26817		#[cfg(feature = "diagnose")]
26818		if let Ok(ret) = ret {
26819			return to_result("glBindTextures", ret, self.glGetError());
26820		} else {
26821			return ret
26822		}
26823		#[cfg(not(feature = "diagnose"))]
26824		return ret;
26825	}
26826	#[inline(always)]
26827	fn glBindSamplers(&self, first: GLuint, count: GLsizei, samplers: *const GLuint) -> Result<()> {
26828		#[cfg(feature = "catch_nullptr")]
26829		let ret = process_catch("glBindSamplers", catch_unwind(||(self.bindsamplers)(first, count, samplers)));
26830		#[cfg(not(feature = "catch_nullptr"))]
26831		let ret = {(self.bindsamplers)(first, count, samplers); Ok(())};
26832		#[cfg(feature = "diagnose")]
26833		if let Ok(ret) = ret {
26834			return to_result("glBindSamplers", ret, self.glGetError());
26835		} else {
26836			return ret
26837		}
26838		#[cfg(not(feature = "diagnose"))]
26839		return ret;
26840	}
26841	#[inline(always)]
26842	fn glBindImageTextures(&self, first: GLuint, count: GLsizei, textures: *const GLuint) -> Result<()> {
26843		#[cfg(feature = "catch_nullptr")]
26844		let ret = process_catch("glBindImageTextures", catch_unwind(||(self.bindimagetextures)(first, count, textures)));
26845		#[cfg(not(feature = "catch_nullptr"))]
26846		let ret = {(self.bindimagetextures)(first, count, textures); Ok(())};
26847		#[cfg(feature = "diagnose")]
26848		if let Ok(ret) = ret {
26849			return to_result("glBindImageTextures", ret, self.glGetError());
26850		} else {
26851			return ret
26852		}
26853		#[cfg(not(feature = "diagnose"))]
26854		return ret;
26855	}
26856	#[inline(always)]
26857	fn glBindVertexBuffers(&self, first: GLuint, count: GLsizei, buffers: *const GLuint, offsets: *const GLintptr, strides: *const GLsizei) -> Result<()> {
26858		#[cfg(feature = "catch_nullptr")]
26859		let ret = process_catch("glBindVertexBuffers", catch_unwind(||(self.bindvertexbuffers)(first, count, buffers, offsets, strides)));
26860		#[cfg(not(feature = "catch_nullptr"))]
26861		let ret = {(self.bindvertexbuffers)(first, count, buffers, offsets, strides); Ok(())};
26862		#[cfg(feature = "diagnose")]
26863		if let Ok(ret) = ret {
26864			return to_result("glBindVertexBuffers", ret, self.glGetError());
26865		} else {
26866			return ret
26867		}
26868		#[cfg(not(feature = "diagnose"))]
26869		return ret;
26870	}
26871}
26872
26873impl Version44 {
26874	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
26875		let (_spec, major, minor, release) = base.get_version();
26876		if (major, minor, release) < (4, 4, 0) {
26877			return Self::default();
26878		}
26879		Self {
26880			available: true,
26881			geterror: {let proc = get_proc_address("glGetError"); if proc.is_null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
26882			bufferstorage: {let proc = get_proc_address("glBufferStorage"); if proc.is_null() {dummy_pfnglbufferstorageproc} else {unsafe{transmute(proc)}}},
26883			clearteximage: {let proc = get_proc_address("glClearTexImage"); if proc.is_null() {dummy_pfnglclearteximageproc} else {unsafe{transmute(proc)}}},
26884			cleartexsubimage: {let proc = get_proc_address("glClearTexSubImage"); if proc.is_null() {dummy_pfnglcleartexsubimageproc} else {unsafe{transmute(proc)}}},
26885			bindbuffersbase: {let proc = get_proc_address("glBindBuffersBase"); if proc.is_null() {dummy_pfnglbindbuffersbaseproc} else {unsafe{transmute(proc)}}},
26886			bindbuffersrange: {let proc = get_proc_address("glBindBuffersRange"); if proc.is_null() {dummy_pfnglbindbuffersrangeproc} else {unsafe{transmute(proc)}}},
26887			bindtextures: {let proc = get_proc_address("glBindTextures"); if proc.is_null() {dummy_pfnglbindtexturesproc} else {unsafe{transmute(proc)}}},
26888			bindsamplers: {let proc = get_proc_address("glBindSamplers"); if proc.is_null() {dummy_pfnglbindsamplersproc} else {unsafe{transmute(proc)}}},
26889			bindimagetextures: {let proc = get_proc_address("glBindImageTextures"); if proc.is_null() {dummy_pfnglbindimagetexturesproc} else {unsafe{transmute(proc)}}},
26890			bindvertexbuffers: {let proc = get_proc_address("glBindVertexBuffers"); if proc.is_null() {dummy_pfnglbindvertexbuffersproc} else {unsafe{transmute(proc)}}},
26891		}
26892	}
26893	#[inline(always)]
26894	pub fn get_available(&self) -> bool {
26895		self.available
26896	}
26897}
26898
26899impl Default for Version44 {
26900	fn default() -> Self {
26901		Self {
26902			available: false,
26903			geterror: dummy_pfnglgeterrorproc,
26904			bufferstorage: dummy_pfnglbufferstorageproc,
26905			clearteximage: dummy_pfnglclearteximageproc,
26906			cleartexsubimage: dummy_pfnglcleartexsubimageproc,
26907			bindbuffersbase: dummy_pfnglbindbuffersbaseproc,
26908			bindbuffersrange: dummy_pfnglbindbuffersrangeproc,
26909			bindtextures: dummy_pfnglbindtexturesproc,
26910			bindsamplers: dummy_pfnglbindsamplersproc,
26911			bindimagetextures: dummy_pfnglbindimagetexturesproc,
26912			bindvertexbuffers: dummy_pfnglbindvertexbuffersproc,
26913		}
26914	}
26915}
26916impl Debug for Version44 {
26917	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
26918		if self.available {
26919			f.debug_struct("Version44")
26920			.field("available", &self.available)
26921			.field("bufferstorage", unsafe{if transmute::<_, *const c_void>(self.bufferstorage) == (dummy_pfnglbufferstorageproc as *const c_void) {&null::<PFNGLBUFFERSTORAGEPROC>()} else {&self.bufferstorage}})
26922			.field("clearteximage", unsafe{if transmute::<_, *const c_void>(self.clearteximage) == (dummy_pfnglclearteximageproc as *const c_void) {&null::<PFNGLCLEARTEXIMAGEPROC>()} else {&self.clearteximage}})
26923			.field("cleartexsubimage", unsafe{if transmute::<_, *const c_void>(self.cleartexsubimage) == (dummy_pfnglcleartexsubimageproc as *const c_void) {&null::<PFNGLCLEARTEXSUBIMAGEPROC>()} else {&self.cleartexsubimage}})
26924			.field("bindbuffersbase", unsafe{if transmute::<_, *const c_void>(self.bindbuffersbase) == (dummy_pfnglbindbuffersbaseproc as *const c_void) {&null::<PFNGLBINDBUFFERSBASEPROC>()} else {&self.bindbuffersbase}})
26925			.field("bindbuffersrange", unsafe{if transmute::<_, *const c_void>(self.bindbuffersrange) == (dummy_pfnglbindbuffersrangeproc as *const c_void) {&null::<PFNGLBINDBUFFERSRANGEPROC>()} else {&self.bindbuffersrange}})
26926			.field("bindtextures", unsafe{if transmute::<_, *const c_void>(self.bindtextures) == (dummy_pfnglbindtexturesproc as *const c_void) {&null::<PFNGLBINDTEXTURESPROC>()} else {&self.bindtextures}})
26927			.field("bindsamplers", unsafe{if transmute::<_, *const c_void>(self.bindsamplers) == (dummy_pfnglbindsamplersproc as *const c_void) {&null::<PFNGLBINDSAMPLERSPROC>()} else {&self.bindsamplers}})
26928			.field("bindimagetextures", unsafe{if transmute::<_, *const c_void>(self.bindimagetextures) == (dummy_pfnglbindimagetexturesproc as *const c_void) {&null::<PFNGLBINDIMAGETEXTURESPROC>()} else {&self.bindimagetextures}})
26929			.field("bindvertexbuffers", unsafe{if transmute::<_, *const c_void>(self.bindvertexbuffers) == (dummy_pfnglbindvertexbuffersproc as *const c_void) {&null::<PFNGLBINDVERTEXBUFFERSPROC>()} else {&self.bindvertexbuffers}})
26930			.finish()
26931		} else {
26932			f.debug_struct("Version44")
26933			.field("available", &self.available)
26934			.finish_non_exhaustive()
26935		}
26936	}
26937}
26938
26939/// The prototype to the OpenGL function `ClipControl`
26940type PFNGLCLIPCONTROLPROC = extern "system" fn(GLenum, GLenum);
26941
26942/// The prototype to the OpenGL function `CreateTransformFeedbacks`
26943type PFNGLCREATETRANSFORMFEEDBACKSPROC = extern "system" fn(GLsizei, *mut GLuint);
26944
26945/// The prototype to the OpenGL function `TransformFeedbackBufferBase`
26946type PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC = extern "system" fn(GLuint, GLuint, GLuint);
26947
26948/// The prototype to the OpenGL function `TransformFeedbackBufferRange`
26949type PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC = extern "system" fn(GLuint, GLuint, GLuint, GLintptr, GLsizeiptr);
26950
26951/// The prototype to the OpenGL function `GetTransformFeedbackiv`
26952type PFNGLGETTRANSFORMFEEDBACKIVPROC = extern "system" fn(GLuint, GLenum, *mut GLint);
26953
26954/// The prototype to the OpenGL function `GetTransformFeedbacki_v`
26955type PFNGLGETTRANSFORMFEEDBACKI_VPROC = extern "system" fn(GLuint, GLenum, GLuint, *mut GLint);
26956
26957/// The prototype to the OpenGL function `GetTransformFeedbacki64_v`
26958type PFNGLGETTRANSFORMFEEDBACKI64_VPROC = extern "system" fn(GLuint, GLenum, GLuint, *mut GLint64);
26959
26960/// The prototype to the OpenGL function `CreateBuffers`
26961type PFNGLCREATEBUFFERSPROC = extern "system" fn(GLsizei, *mut GLuint);
26962
26963/// The prototype to the OpenGL function `NamedBufferStorage`
26964type PFNGLNAMEDBUFFERSTORAGEPROC = extern "system" fn(GLuint, GLsizeiptr, *const c_void, GLbitfield);
26965
26966/// The prototype to the OpenGL function `NamedBufferData`
26967type PFNGLNAMEDBUFFERDATAPROC = extern "system" fn(GLuint, GLsizeiptr, *const c_void, GLenum);
26968
26969/// The prototype to the OpenGL function `NamedBufferSubData`
26970type PFNGLNAMEDBUFFERSUBDATAPROC = extern "system" fn(GLuint, GLintptr, GLsizeiptr, *const c_void);
26971
26972/// The prototype to the OpenGL function `CopyNamedBufferSubData`
26973type PFNGLCOPYNAMEDBUFFERSUBDATAPROC = extern "system" fn(GLuint, GLuint, GLintptr, GLintptr, GLsizeiptr);
26974
26975/// The prototype to the OpenGL function `ClearNamedBufferData`
26976type PFNGLCLEARNAMEDBUFFERDATAPROC = extern "system" fn(GLuint, GLenum, GLenum, GLenum, *const c_void);
26977
26978/// The prototype to the OpenGL function `ClearNamedBufferSubData`
26979type PFNGLCLEARNAMEDBUFFERSUBDATAPROC = extern "system" fn(GLuint, GLenum, GLintptr, GLsizeiptr, GLenum, GLenum, *const c_void);
26980
26981/// The prototype to the OpenGL function `MapNamedBuffer`
26982type PFNGLMAPNAMEDBUFFERPROC = extern "system" fn(GLuint, GLenum) -> *mut c_void;
26983
26984/// The prototype to the OpenGL function `MapNamedBufferRange`
26985type PFNGLMAPNAMEDBUFFERRANGEPROC = extern "system" fn(GLuint, GLintptr, GLsizeiptr, GLbitfield) -> *mut c_void;
26986
26987/// The prototype to the OpenGL function `UnmapNamedBuffer`
26988type PFNGLUNMAPNAMEDBUFFERPROC = extern "system" fn(GLuint) -> GLboolean;
26989
26990/// The prototype to the OpenGL function `FlushMappedNamedBufferRange`
26991type PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC = extern "system" fn(GLuint, GLintptr, GLsizeiptr);
26992
26993/// The prototype to the OpenGL function `GetNamedBufferParameteriv`
26994type PFNGLGETNAMEDBUFFERPARAMETERIVPROC = extern "system" fn(GLuint, GLenum, *mut GLint);
26995
26996/// The prototype to the OpenGL function `GetNamedBufferParameteri64v`
26997type PFNGLGETNAMEDBUFFERPARAMETERI64VPROC = extern "system" fn(GLuint, GLenum, *mut GLint64);
26998
26999/// The prototype to the OpenGL function `GetNamedBufferPointerv`
27000type PFNGLGETNAMEDBUFFERPOINTERVPROC = extern "system" fn(GLuint, GLenum, *mut *mut c_void);
27001
27002/// The prototype to the OpenGL function `GetNamedBufferSubData`
27003type PFNGLGETNAMEDBUFFERSUBDATAPROC = extern "system" fn(GLuint, GLintptr, GLsizeiptr, *mut c_void);
27004
27005/// The prototype to the OpenGL function `CreateFramebuffers`
27006type PFNGLCREATEFRAMEBUFFERSPROC = extern "system" fn(GLsizei, *mut GLuint);
27007
27008/// The prototype to the OpenGL function `NamedFramebufferRenderbuffer`
27009type PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC = extern "system" fn(GLuint, GLenum, GLenum, GLuint);
27010
27011/// The prototype to the OpenGL function `NamedFramebufferParameteri`
27012type PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC = extern "system" fn(GLuint, GLenum, GLint);
27013
27014/// The prototype to the OpenGL function `NamedFramebufferTexture`
27015type PFNGLNAMEDFRAMEBUFFERTEXTUREPROC = extern "system" fn(GLuint, GLenum, GLuint, GLint);
27016
27017/// The prototype to the OpenGL function `NamedFramebufferTextureLayer`
27018type PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC = extern "system" fn(GLuint, GLenum, GLuint, GLint, GLint);
27019
27020/// The prototype to the OpenGL function `NamedFramebufferDrawBuffer`
27021type PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC = extern "system" fn(GLuint, GLenum);
27022
27023/// The prototype to the OpenGL function `NamedFramebufferDrawBuffers`
27024type PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC = extern "system" fn(GLuint, GLsizei, *const GLenum);
27025
27026/// The prototype to the OpenGL function `NamedFramebufferReadBuffer`
27027type PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC = extern "system" fn(GLuint, GLenum);
27028
27029/// The prototype to the OpenGL function `InvalidateNamedFramebufferData`
27030type PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC = extern "system" fn(GLuint, GLsizei, *const GLenum);
27031
27032/// The prototype to the OpenGL function `InvalidateNamedFramebufferSubData`
27033type PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC = extern "system" fn(GLuint, GLsizei, *const GLenum, GLint, GLint, GLsizei, GLsizei);
27034
27035/// The prototype to the OpenGL function `ClearNamedFramebufferiv`
27036type PFNGLCLEARNAMEDFRAMEBUFFERIVPROC = extern "system" fn(GLuint, GLenum, GLint, *const GLint);
27037
27038/// The prototype to the OpenGL function `ClearNamedFramebufferuiv`
27039type PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC = extern "system" fn(GLuint, GLenum, GLint, *const GLuint);
27040
27041/// The prototype to the OpenGL function `ClearNamedFramebufferfv`
27042type PFNGLCLEARNAMEDFRAMEBUFFERFVPROC = extern "system" fn(GLuint, GLenum, GLint, *const GLfloat);
27043
27044/// The prototype to the OpenGL function `ClearNamedFramebufferfi`
27045type PFNGLCLEARNAMEDFRAMEBUFFERFIPROC = extern "system" fn(GLuint, GLenum, GLint, GLfloat, GLint);
27046
27047/// The prototype to the OpenGL function `BlitNamedFramebuffer`
27048type PFNGLBLITNAMEDFRAMEBUFFERPROC = extern "system" fn(GLuint, GLuint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum);
27049
27050/// The prototype to the OpenGL function `CheckNamedFramebufferStatus`
27051type PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC = extern "system" fn(GLuint, GLenum) -> GLenum;
27052
27053/// The prototype to the OpenGL function `GetNamedFramebufferParameteriv`
27054type PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC = extern "system" fn(GLuint, GLenum, *mut GLint);
27055
27056/// The prototype to the OpenGL function `GetNamedFramebufferAttachmentParameteriv`
27057type PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC = extern "system" fn(GLuint, GLenum, GLenum, *mut GLint);
27058
27059/// The prototype to the OpenGL function `CreateRenderbuffers`
27060type PFNGLCREATERENDERBUFFERSPROC = extern "system" fn(GLsizei, *mut GLuint);
27061
27062/// The prototype to the OpenGL function `NamedRenderbufferStorage`
27063type PFNGLNAMEDRENDERBUFFERSTORAGEPROC = extern "system" fn(GLuint, GLenum, GLsizei, GLsizei);
27064
27065/// The prototype to the OpenGL function `NamedRenderbufferStorageMultisample`
27066type PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC = extern "system" fn(GLuint, GLsizei, GLenum, GLsizei, GLsizei);
27067
27068/// The prototype to the OpenGL function `GetNamedRenderbufferParameteriv`
27069type PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC = extern "system" fn(GLuint, GLenum, *mut GLint);
27070
27071/// The prototype to the OpenGL function `CreateTextures`
27072type PFNGLCREATETEXTURESPROC = extern "system" fn(GLenum, GLsizei, *mut GLuint);
27073
27074/// The prototype to the OpenGL function `TextureBuffer`
27075type PFNGLTEXTUREBUFFERPROC = extern "system" fn(GLuint, GLenum, GLuint);
27076
27077/// The prototype to the OpenGL function `TextureBufferRange`
27078type PFNGLTEXTUREBUFFERRANGEPROC = extern "system" fn(GLuint, GLenum, GLuint, GLintptr, GLsizeiptr);
27079
27080/// The prototype to the OpenGL function `TextureStorage1D`
27081type PFNGLTEXTURESTORAGE1DPROC = extern "system" fn(GLuint, GLsizei, GLenum, GLsizei);
27082
27083/// The prototype to the OpenGL function `TextureStorage2D`
27084type PFNGLTEXTURESTORAGE2DPROC = extern "system" fn(GLuint, GLsizei, GLenum, GLsizei, GLsizei);
27085
27086/// The prototype to the OpenGL function `TextureStorage3D`
27087type PFNGLTEXTURESTORAGE3DPROC = extern "system" fn(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLsizei);
27088
27089/// The prototype to the OpenGL function `TextureStorage2DMultisample`
27090type PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC = extern "system" fn(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLboolean);
27091
27092/// The prototype to the OpenGL function `TextureStorage3DMultisample`
27093type PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC = extern "system" fn(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean);
27094
27095/// The prototype to the OpenGL function `TextureSubImage1D`
27096type PFNGLTEXTURESUBIMAGE1DPROC = extern "system" fn(GLuint, GLint, GLint, GLsizei, GLenum, GLenum, *const c_void);
27097
27098/// The prototype to the OpenGL function `TextureSubImage2D`
27099type PFNGLTEXTURESUBIMAGE2DPROC = extern "system" fn(GLuint, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, *const c_void);
27100
27101/// The prototype to the OpenGL function `TextureSubImage3D`
27102type PFNGLTEXTURESUBIMAGE3DPROC = extern "system" fn(GLuint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, *const c_void);
27103
27104/// The prototype to the OpenGL function `CompressedTextureSubImage1D`
27105type PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC = extern "system" fn(GLuint, GLint, GLint, GLsizei, GLenum, GLsizei, *const c_void);
27106
27107/// The prototype to the OpenGL function `CompressedTextureSubImage2D`
27108type PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC = extern "system" fn(GLuint, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, *const c_void);
27109
27110/// The prototype to the OpenGL function `CompressedTextureSubImage3D`
27111type PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC = extern "system" fn(GLuint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, *const c_void);
27112
27113/// The prototype to the OpenGL function `CopyTextureSubImage1D`
27114type PFNGLCOPYTEXTURESUBIMAGE1DPROC = extern "system" fn(GLuint, GLint, GLint, GLint, GLint, GLsizei);
27115
27116/// The prototype to the OpenGL function `CopyTextureSubImage2D`
27117type PFNGLCOPYTEXTURESUBIMAGE2DPROC = extern "system" fn(GLuint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
27118
27119/// The prototype to the OpenGL function `CopyTextureSubImage3D`
27120type PFNGLCOPYTEXTURESUBIMAGE3DPROC = extern "system" fn(GLuint, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
27121
27122/// The prototype to the OpenGL function `TextureParameterf`
27123type PFNGLTEXTUREPARAMETERFPROC = extern "system" fn(GLuint, GLenum, GLfloat);
27124
27125/// The prototype to the OpenGL function `TextureParameterfv`
27126type PFNGLTEXTUREPARAMETERFVPROC = extern "system" fn(GLuint, GLenum, *const GLfloat);
27127
27128/// The prototype to the OpenGL function `TextureParameteri`
27129type PFNGLTEXTUREPARAMETERIPROC = extern "system" fn(GLuint, GLenum, GLint);
27130
27131/// The prototype to the OpenGL function `TextureParameterIiv`
27132type PFNGLTEXTUREPARAMETERIIVPROC = extern "system" fn(GLuint, GLenum, *const GLint);
27133
27134/// The prototype to the OpenGL function `TextureParameterIuiv`
27135type PFNGLTEXTUREPARAMETERIUIVPROC = extern "system" fn(GLuint, GLenum, *const GLuint);
27136
27137/// The prototype to the OpenGL function `TextureParameteriv`
27138type PFNGLTEXTUREPARAMETERIVPROC = extern "system" fn(GLuint, GLenum, *const GLint);
27139
27140/// The prototype to the OpenGL function `GenerateTextureMipmap`
27141type PFNGLGENERATETEXTUREMIPMAPPROC = extern "system" fn(GLuint);
27142
27143/// The prototype to the OpenGL function `BindTextureUnit`
27144type PFNGLBINDTEXTUREUNITPROC = extern "system" fn(GLuint, GLuint);
27145
27146/// The prototype to the OpenGL function `GetTextureImage`
27147type PFNGLGETTEXTUREIMAGEPROC = extern "system" fn(GLuint, GLint, GLenum, GLenum, GLsizei, *mut c_void);
27148
27149/// The prototype to the OpenGL function `GetCompressedTextureImage`
27150type PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC = extern "system" fn(GLuint, GLint, GLsizei, *mut c_void);
27151
27152/// The prototype to the OpenGL function `GetTextureLevelParameterfv`
27153type PFNGLGETTEXTURELEVELPARAMETERFVPROC = extern "system" fn(GLuint, GLint, GLenum, *mut GLfloat);
27154
27155/// The prototype to the OpenGL function `GetTextureLevelParameteriv`
27156type PFNGLGETTEXTURELEVELPARAMETERIVPROC = extern "system" fn(GLuint, GLint, GLenum, *mut GLint);
27157
27158/// The prototype to the OpenGL function `GetTextureParameterfv`
27159type PFNGLGETTEXTUREPARAMETERFVPROC = extern "system" fn(GLuint, GLenum, *mut GLfloat);
27160
27161/// The prototype to the OpenGL function `GetTextureParameterIiv`
27162type PFNGLGETTEXTUREPARAMETERIIVPROC = extern "system" fn(GLuint, GLenum, *mut GLint);
27163
27164/// The prototype to the OpenGL function `GetTextureParameterIuiv`
27165type PFNGLGETTEXTUREPARAMETERIUIVPROC = extern "system" fn(GLuint, GLenum, *mut GLuint);
27166
27167/// The prototype to the OpenGL function `GetTextureParameteriv`
27168type PFNGLGETTEXTUREPARAMETERIVPROC = extern "system" fn(GLuint, GLenum, *mut GLint);
27169
27170/// The prototype to the OpenGL function `CreateVertexArrays`
27171type PFNGLCREATEVERTEXARRAYSPROC = extern "system" fn(GLsizei, *mut GLuint);
27172
27173/// The prototype to the OpenGL function `DisableVertexArrayAttrib`
27174type PFNGLDISABLEVERTEXARRAYATTRIBPROC = extern "system" fn(GLuint, GLuint);
27175
27176/// The prototype to the OpenGL function `EnableVertexArrayAttrib`
27177type PFNGLENABLEVERTEXARRAYATTRIBPROC = extern "system" fn(GLuint, GLuint);
27178
27179/// The prototype to the OpenGL function `VertexArrayElementBuffer`
27180type PFNGLVERTEXARRAYELEMENTBUFFERPROC = extern "system" fn(GLuint, GLuint);
27181
27182/// The prototype to the OpenGL function `VertexArrayVertexBuffer`
27183type PFNGLVERTEXARRAYVERTEXBUFFERPROC = extern "system" fn(GLuint, GLuint, GLuint, GLintptr, GLsizei);
27184
27185/// The prototype to the OpenGL function `VertexArrayVertexBuffers`
27186type PFNGLVERTEXARRAYVERTEXBUFFERSPROC = extern "system" fn(GLuint, GLuint, GLsizei, *const GLuint, *const GLintptr, *const GLsizei);
27187
27188/// The prototype to the OpenGL function `VertexArrayAttribBinding`
27189type PFNGLVERTEXARRAYATTRIBBINDINGPROC = extern "system" fn(GLuint, GLuint, GLuint);
27190
27191/// The prototype to the OpenGL function `VertexArrayAttribFormat`
27192type PFNGLVERTEXARRAYATTRIBFORMATPROC = extern "system" fn(GLuint, GLuint, GLint, GLenum, GLboolean, GLuint);
27193
27194/// The prototype to the OpenGL function `VertexArrayAttribIFormat`
27195type PFNGLVERTEXARRAYATTRIBIFORMATPROC = extern "system" fn(GLuint, GLuint, GLint, GLenum, GLuint);
27196
27197/// The prototype to the OpenGL function `VertexArrayAttribLFormat`
27198type PFNGLVERTEXARRAYATTRIBLFORMATPROC = extern "system" fn(GLuint, GLuint, GLint, GLenum, GLuint);
27199
27200/// The prototype to the OpenGL function `VertexArrayBindingDivisor`
27201type PFNGLVERTEXARRAYBINDINGDIVISORPROC = extern "system" fn(GLuint, GLuint, GLuint);
27202
27203/// The prototype to the OpenGL function `GetVertexArrayiv`
27204type PFNGLGETVERTEXARRAYIVPROC = extern "system" fn(GLuint, GLenum, *mut GLint);
27205
27206/// The prototype to the OpenGL function `GetVertexArrayIndexediv`
27207type PFNGLGETVERTEXARRAYINDEXEDIVPROC = extern "system" fn(GLuint, GLuint, GLenum, *mut GLint);
27208
27209/// The prototype to the OpenGL function `GetVertexArrayIndexed64iv`
27210type PFNGLGETVERTEXARRAYINDEXED64IVPROC = extern "system" fn(GLuint, GLuint, GLenum, *mut GLint64);
27211
27212/// The prototype to the OpenGL function `CreateSamplers`
27213type PFNGLCREATESAMPLERSPROC = extern "system" fn(GLsizei, *mut GLuint);
27214
27215/// The prototype to the OpenGL function `CreateProgramPipelines`
27216type PFNGLCREATEPROGRAMPIPELINESPROC = extern "system" fn(GLsizei, *mut GLuint);
27217
27218/// The prototype to the OpenGL function `CreateQueries`
27219type PFNGLCREATEQUERIESPROC = extern "system" fn(GLenum, GLsizei, *mut GLuint);
27220
27221/// The prototype to the OpenGL function `GetQueryBufferObjecti64v`
27222type PFNGLGETQUERYBUFFEROBJECTI64VPROC = extern "system" fn(GLuint, GLuint, GLenum, GLintptr);
27223
27224/// The prototype to the OpenGL function `GetQueryBufferObjectiv`
27225type PFNGLGETQUERYBUFFEROBJECTIVPROC = extern "system" fn(GLuint, GLuint, GLenum, GLintptr);
27226
27227/// The prototype to the OpenGL function `GetQueryBufferObjectui64v`
27228type PFNGLGETQUERYBUFFEROBJECTUI64VPROC = extern "system" fn(GLuint, GLuint, GLenum, GLintptr);
27229
27230/// The prototype to the OpenGL function `GetQueryBufferObjectuiv`
27231type PFNGLGETQUERYBUFFEROBJECTUIVPROC = extern "system" fn(GLuint, GLuint, GLenum, GLintptr);
27232
27233/// The prototype to the OpenGL function `MemoryBarrierByRegion`
27234type PFNGLMEMORYBARRIERBYREGIONPROC = extern "system" fn(GLbitfield);
27235
27236/// The prototype to the OpenGL function `GetTextureSubImage`
27237type PFNGLGETTEXTURESUBIMAGEPROC = extern "system" fn(GLuint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, GLsizei, *mut c_void);
27238
27239/// The prototype to the OpenGL function `GetCompressedTextureSubImage`
27240type PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC = extern "system" fn(GLuint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLsizei, *mut c_void);
27241
27242/// The prototype to the OpenGL function `GetGraphicsResetStatus`
27243type PFNGLGETGRAPHICSRESETSTATUSPROC = extern "system" fn() -> GLenum;
27244
27245/// The prototype to the OpenGL function `GetnCompressedTexImage`
27246type PFNGLGETNCOMPRESSEDTEXIMAGEPROC = extern "system" fn(GLenum, GLint, GLsizei, *mut c_void);
27247
27248/// The prototype to the OpenGL function `GetnTexImage`
27249type PFNGLGETNTEXIMAGEPROC = extern "system" fn(GLenum, GLint, GLenum, GLenum, GLsizei, *mut c_void);
27250
27251/// The prototype to the OpenGL function `GetnUniformdv`
27252type PFNGLGETNUNIFORMDVPROC = extern "system" fn(GLuint, GLint, GLsizei, *mut GLdouble);
27253
27254/// The prototype to the OpenGL function `GetnUniformfv`
27255type PFNGLGETNUNIFORMFVPROC = extern "system" fn(GLuint, GLint, GLsizei, *mut GLfloat);
27256
27257/// The prototype to the OpenGL function `GetnUniformiv`
27258type PFNGLGETNUNIFORMIVPROC = extern "system" fn(GLuint, GLint, GLsizei, *mut GLint);
27259
27260/// The prototype to the OpenGL function `GetnUniformuiv`
27261type PFNGLGETNUNIFORMUIVPROC = extern "system" fn(GLuint, GLint, GLsizei, *mut GLuint);
27262
27263/// The prototype to the OpenGL function `ReadnPixels`
27264type PFNGLREADNPIXELSPROC = extern "system" fn(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLsizei, *mut c_void);
27265
27266/// The prototype to the OpenGL function `GetnMapdv`
27267type PFNGLGETNMAPDVPROC = extern "system" fn(GLenum, GLenum, GLsizei, *mut GLdouble);
27268
27269/// The prototype to the OpenGL function `GetnMapfv`
27270type PFNGLGETNMAPFVPROC = extern "system" fn(GLenum, GLenum, GLsizei, *mut GLfloat);
27271
27272/// The prototype to the OpenGL function `GetnMapiv`
27273type PFNGLGETNMAPIVPROC = extern "system" fn(GLenum, GLenum, GLsizei, *mut GLint);
27274
27275/// The prototype to the OpenGL function `GetnPixelMapfv`
27276type PFNGLGETNPIXELMAPFVPROC = extern "system" fn(GLenum, GLsizei, *mut GLfloat);
27277
27278/// The prototype to the OpenGL function `GetnPixelMapuiv`
27279type PFNGLGETNPIXELMAPUIVPROC = extern "system" fn(GLenum, GLsizei, *mut GLuint);
27280
27281/// The prototype to the OpenGL function `GetnPixelMapusv`
27282type PFNGLGETNPIXELMAPUSVPROC = extern "system" fn(GLenum, GLsizei, *mut GLushort);
27283
27284/// The prototype to the OpenGL function `GetnPolygonStipple`
27285type PFNGLGETNPOLYGONSTIPPLEPROC = extern "system" fn(GLsizei, *mut GLubyte);
27286
27287/// The prototype to the OpenGL function `GetnColorTable`
27288type PFNGLGETNCOLORTABLEPROC = extern "system" fn(GLenum, GLenum, GLenum, GLsizei, *mut c_void);
27289
27290/// The prototype to the OpenGL function `GetnConvolutionFilter`
27291type PFNGLGETNCONVOLUTIONFILTERPROC = extern "system" fn(GLenum, GLenum, GLenum, GLsizei, *mut c_void);
27292
27293/// The prototype to the OpenGL function `GetnSeparableFilter`
27294type PFNGLGETNSEPARABLEFILTERPROC = extern "system" fn(GLenum, GLenum, GLenum, GLsizei, *mut c_void, GLsizei, *mut c_void, *mut c_void);
27295
27296/// The prototype to the OpenGL function `GetnHistogram`
27297type PFNGLGETNHISTOGRAMPROC = extern "system" fn(GLenum, GLboolean, GLenum, GLenum, GLsizei, *mut c_void);
27298
27299/// The prototype to the OpenGL function `GetnMinmax`
27300type PFNGLGETNMINMAXPROC = extern "system" fn(GLenum, GLboolean, GLenum, GLenum, GLsizei, *mut c_void);
27301
27302/// The prototype to the OpenGL function `TextureBarrier`
27303type PFNGLTEXTUREBARRIERPROC = extern "system" fn();
27304
27305/// The dummy function of `ClipControl()`
27306extern "system" fn dummy_pfnglclipcontrolproc (_: GLenum, _: GLenum) {
27307	panic!("OpenGL function pointer `glClipControl()` is null.")
27308}
27309
27310/// The dummy function of `CreateTransformFeedbacks()`
27311extern "system" fn dummy_pfnglcreatetransformfeedbacksproc (_: GLsizei, _: *mut GLuint) {
27312	panic!("OpenGL function pointer `glCreateTransformFeedbacks()` is null.")
27313}
27314
27315/// The dummy function of `TransformFeedbackBufferBase()`
27316extern "system" fn dummy_pfngltransformfeedbackbufferbaseproc (_: GLuint, _: GLuint, _: GLuint) {
27317	panic!("OpenGL function pointer `glTransformFeedbackBufferBase()` is null.")
27318}
27319
27320/// The dummy function of `TransformFeedbackBufferRange()`
27321extern "system" fn dummy_pfngltransformfeedbackbufferrangeproc (_: GLuint, _: GLuint, _: GLuint, _: GLintptr, _: GLsizeiptr) {
27322	panic!("OpenGL function pointer `glTransformFeedbackBufferRange()` is null.")
27323}
27324
27325/// The dummy function of `GetTransformFeedbackiv()`
27326extern "system" fn dummy_pfnglgettransformfeedbackivproc (_: GLuint, _: GLenum, _: *mut GLint) {
27327	panic!("OpenGL function pointer `glGetTransformFeedbackiv()` is null.")
27328}
27329
27330/// The dummy function of `GetTransformFeedbacki_v()`
27331extern "system" fn dummy_pfnglgettransformfeedbacki_vproc (_: GLuint, _: GLenum, _: GLuint, _: *mut GLint) {
27332	panic!("OpenGL function pointer `glGetTransformFeedbacki_v()` is null.")
27333}
27334
27335/// The dummy function of `GetTransformFeedbacki64_v()`
27336extern "system" fn dummy_pfnglgettransformfeedbacki64_vproc (_: GLuint, _: GLenum, _: GLuint, _: *mut GLint64) {
27337	panic!("OpenGL function pointer `glGetTransformFeedbacki64_v()` is null.")
27338}
27339
27340/// The dummy function of `CreateBuffers()`
27341extern "system" fn dummy_pfnglcreatebuffersproc (_: GLsizei, _: *mut GLuint) {
27342	panic!("OpenGL function pointer `glCreateBuffers()` is null.")
27343}
27344
27345/// The dummy function of `NamedBufferStorage()`
27346extern "system" fn dummy_pfnglnamedbufferstorageproc (_: GLuint, _: GLsizeiptr, _: *const c_void, _: GLbitfield) {
27347	panic!("OpenGL function pointer `glNamedBufferStorage()` is null.")
27348}
27349
27350/// The dummy function of `NamedBufferData()`
27351extern "system" fn dummy_pfnglnamedbufferdataproc (_: GLuint, _: GLsizeiptr, _: *const c_void, _: GLenum) {
27352	panic!("OpenGL function pointer `glNamedBufferData()` is null.")
27353}
27354
27355/// The dummy function of `NamedBufferSubData()`
27356extern "system" fn dummy_pfnglnamedbuffersubdataproc (_: GLuint, _: GLintptr, _: GLsizeiptr, _: *const c_void) {
27357	panic!("OpenGL function pointer `glNamedBufferSubData()` is null.")
27358}
27359
27360/// The dummy function of `CopyNamedBufferSubData()`
27361extern "system" fn dummy_pfnglcopynamedbuffersubdataproc (_: GLuint, _: GLuint, _: GLintptr, _: GLintptr, _: GLsizeiptr) {
27362	panic!("OpenGL function pointer `glCopyNamedBufferSubData()` is null.")
27363}
27364
27365/// The dummy function of `ClearNamedBufferData()`
27366extern "system" fn dummy_pfnglclearnamedbufferdataproc (_: GLuint, _: GLenum, _: GLenum, _: GLenum, _: *const c_void) {
27367	panic!("OpenGL function pointer `glClearNamedBufferData()` is null.")
27368}
27369
27370/// The dummy function of `ClearNamedBufferSubData()`
27371extern "system" fn dummy_pfnglclearnamedbuffersubdataproc (_: GLuint, _: GLenum, _: GLintptr, _: GLsizeiptr, _: GLenum, _: GLenum, _: *const c_void) {
27372	panic!("OpenGL function pointer `glClearNamedBufferSubData()` is null.")
27373}
27374
27375/// The dummy function of `MapNamedBuffer()`
27376extern "system" fn dummy_pfnglmapnamedbufferproc (_: GLuint, _: GLenum) -> *mut c_void {
27377	panic!("OpenGL function pointer `glMapNamedBuffer()` is null.")
27378}
27379
27380/// The dummy function of `MapNamedBufferRange()`
27381extern "system" fn dummy_pfnglmapnamedbufferrangeproc (_: GLuint, _: GLintptr, _: GLsizeiptr, _: GLbitfield) -> *mut c_void {
27382	panic!("OpenGL function pointer `glMapNamedBufferRange()` is null.")
27383}
27384
27385/// The dummy function of `UnmapNamedBuffer()`
27386extern "system" fn dummy_pfnglunmapnamedbufferproc (_: GLuint) -> GLboolean {
27387	panic!("OpenGL function pointer `glUnmapNamedBuffer()` is null.")
27388}
27389
27390/// The dummy function of `FlushMappedNamedBufferRange()`
27391extern "system" fn dummy_pfnglflushmappednamedbufferrangeproc (_: GLuint, _: GLintptr, _: GLsizeiptr) {
27392	panic!("OpenGL function pointer `glFlushMappedNamedBufferRange()` is null.")
27393}
27394
27395/// The dummy function of `GetNamedBufferParameteriv()`
27396extern "system" fn dummy_pfnglgetnamedbufferparameterivproc (_: GLuint, _: GLenum, _: *mut GLint) {
27397	panic!("OpenGL function pointer `glGetNamedBufferParameteriv()` is null.")
27398}
27399
27400/// The dummy function of `GetNamedBufferParameteri64v()`
27401extern "system" fn dummy_pfnglgetnamedbufferparameteri64vproc (_: GLuint, _: GLenum, _: *mut GLint64) {
27402	panic!("OpenGL function pointer `glGetNamedBufferParameteri64v()` is null.")
27403}
27404
27405/// The dummy function of `GetNamedBufferPointerv()`
27406extern "system" fn dummy_pfnglgetnamedbufferpointervproc (_: GLuint, _: GLenum, _: *mut *mut c_void) {
27407	panic!("OpenGL function pointer `glGetNamedBufferPointerv()` is null.")
27408}
27409
27410/// The dummy function of `GetNamedBufferSubData()`
27411extern "system" fn dummy_pfnglgetnamedbuffersubdataproc (_: GLuint, _: GLintptr, _: GLsizeiptr, _: *mut c_void) {
27412	panic!("OpenGL function pointer `glGetNamedBufferSubData()` is null.")
27413}
27414
27415/// The dummy function of `CreateFramebuffers()`
27416extern "system" fn dummy_pfnglcreateframebuffersproc (_: GLsizei, _: *mut GLuint) {
27417	panic!("OpenGL function pointer `glCreateFramebuffers()` is null.")
27418}
27419
27420/// The dummy function of `NamedFramebufferRenderbuffer()`
27421extern "system" fn dummy_pfnglnamedframebufferrenderbufferproc (_: GLuint, _: GLenum, _: GLenum, _: GLuint) {
27422	panic!("OpenGL function pointer `glNamedFramebufferRenderbuffer()` is null.")
27423}
27424
27425/// The dummy function of `NamedFramebufferParameteri()`
27426extern "system" fn dummy_pfnglnamedframebufferparameteriproc (_: GLuint, _: GLenum, _: GLint) {
27427	panic!("OpenGL function pointer `glNamedFramebufferParameteri()` is null.")
27428}
27429
27430/// The dummy function of `NamedFramebufferTexture()`
27431extern "system" fn dummy_pfnglnamedframebuffertextureproc (_: GLuint, _: GLenum, _: GLuint, _: GLint) {
27432	panic!("OpenGL function pointer `glNamedFramebufferTexture()` is null.")
27433}
27434
27435/// The dummy function of `NamedFramebufferTextureLayer()`
27436extern "system" fn dummy_pfnglnamedframebuffertexturelayerproc (_: GLuint, _: GLenum, _: GLuint, _: GLint, _: GLint) {
27437	panic!("OpenGL function pointer `glNamedFramebufferTextureLayer()` is null.")
27438}
27439
27440/// The dummy function of `NamedFramebufferDrawBuffer()`
27441extern "system" fn dummy_pfnglnamedframebufferdrawbufferproc (_: GLuint, _: GLenum) {
27442	panic!("OpenGL function pointer `glNamedFramebufferDrawBuffer()` is null.")
27443}
27444
27445/// The dummy function of `NamedFramebufferDrawBuffers()`
27446extern "system" fn dummy_pfnglnamedframebufferdrawbuffersproc (_: GLuint, _: GLsizei, _: *const GLenum) {
27447	panic!("OpenGL function pointer `glNamedFramebufferDrawBuffers()` is null.")
27448}
27449
27450/// The dummy function of `NamedFramebufferReadBuffer()`
27451extern "system" fn dummy_pfnglnamedframebufferreadbufferproc (_: GLuint, _: GLenum) {
27452	panic!("OpenGL function pointer `glNamedFramebufferReadBuffer()` is null.")
27453}
27454
27455/// The dummy function of `InvalidateNamedFramebufferData()`
27456extern "system" fn dummy_pfnglinvalidatenamedframebufferdataproc (_: GLuint, _: GLsizei, _: *const GLenum) {
27457	panic!("OpenGL function pointer `glInvalidateNamedFramebufferData()` is null.")
27458}
27459
27460/// The dummy function of `InvalidateNamedFramebufferSubData()`
27461extern "system" fn dummy_pfnglinvalidatenamedframebuffersubdataproc (_: GLuint, _: GLsizei, _: *const GLenum, _: GLint, _: GLint, _: GLsizei, _: GLsizei) {
27462	panic!("OpenGL function pointer `glInvalidateNamedFramebufferSubData()` is null.")
27463}
27464
27465/// The dummy function of `ClearNamedFramebufferiv()`
27466extern "system" fn dummy_pfnglclearnamedframebufferivproc (_: GLuint, _: GLenum, _: GLint, _: *const GLint) {
27467	panic!("OpenGL function pointer `glClearNamedFramebufferiv()` is null.")
27468}
27469
27470/// The dummy function of `ClearNamedFramebufferuiv()`
27471extern "system" fn dummy_pfnglclearnamedframebufferuivproc (_: GLuint, _: GLenum, _: GLint, _: *const GLuint) {
27472	panic!("OpenGL function pointer `glClearNamedFramebufferuiv()` is null.")
27473}
27474
27475/// The dummy function of `ClearNamedFramebufferfv()`
27476extern "system" fn dummy_pfnglclearnamedframebufferfvproc (_: GLuint, _: GLenum, _: GLint, _: *const GLfloat) {
27477	panic!("OpenGL function pointer `glClearNamedFramebufferfv()` is null.")
27478}
27479
27480/// The dummy function of `ClearNamedFramebufferfi()`
27481extern "system" fn dummy_pfnglclearnamedframebufferfiproc (_: GLuint, _: GLenum, _: GLint, _: GLfloat, _: GLint) {
27482	panic!("OpenGL function pointer `glClearNamedFramebufferfi()` is null.")
27483}
27484
27485/// The dummy function of `BlitNamedFramebuffer()`
27486extern "system" fn dummy_pfnglblitnamedframebufferproc (_: GLuint, _: GLuint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLbitfield, _: GLenum) {
27487	panic!("OpenGL function pointer `glBlitNamedFramebuffer()` is null.")
27488}
27489
27490/// The dummy function of `CheckNamedFramebufferStatus()`
27491extern "system" fn dummy_pfnglchecknamedframebufferstatusproc (_: GLuint, _: GLenum) -> GLenum {
27492	panic!("OpenGL function pointer `glCheckNamedFramebufferStatus()` is null.")
27493}
27494
27495/// The dummy function of `GetNamedFramebufferParameteriv()`
27496extern "system" fn dummy_pfnglgetnamedframebufferparameterivproc (_: GLuint, _: GLenum, _: *mut GLint) {
27497	panic!("OpenGL function pointer `glGetNamedFramebufferParameteriv()` is null.")
27498}
27499
27500/// The dummy function of `GetNamedFramebufferAttachmentParameteriv()`
27501extern "system" fn dummy_pfnglgetnamedframebufferattachmentparameterivproc (_: GLuint, _: GLenum, _: GLenum, _: *mut GLint) {
27502	panic!("OpenGL function pointer `glGetNamedFramebufferAttachmentParameteriv()` is null.")
27503}
27504
27505/// The dummy function of `CreateRenderbuffers()`
27506extern "system" fn dummy_pfnglcreaterenderbuffersproc (_: GLsizei, _: *mut GLuint) {
27507	panic!("OpenGL function pointer `glCreateRenderbuffers()` is null.")
27508}
27509
27510/// The dummy function of `NamedRenderbufferStorage()`
27511extern "system" fn dummy_pfnglnamedrenderbufferstorageproc (_: GLuint, _: GLenum, _: GLsizei, _: GLsizei) {
27512	panic!("OpenGL function pointer `glNamedRenderbufferStorage()` is null.")
27513}
27514
27515/// The dummy function of `NamedRenderbufferStorageMultisample()`
27516extern "system" fn dummy_pfnglnamedrenderbufferstoragemultisampleproc (_: GLuint, _: GLsizei, _: GLenum, _: GLsizei, _: GLsizei) {
27517	panic!("OpenGL function pointer `glNamedRenderbufferStorageMultisample()` is null.")
27518}
27519
27520/// The dummy function of `GetNamedRenderbufferParameteriv()`
27521extern "system" fn dummy_pfnglgetnamedrenderbufferparameterivproc (_: GLuint, _: GLenum, _: *mut GLint) {
27522	panic!("OpenGL function pointer `glGetNamedRenderbufferParameteriv()` is null.")
27523}
27524
27525/// The dummy function of `CreateTextures()`
27526extern "system" fn dummy_pfnglcreatetexturesproc (_: GLenum, _: GLsizei, _: *mut GLuint) {
27527	panic!("OpenGL function pointer `glCreateTextures()` is null.")
27528}
27529
27530/// The dummy function of `TextureBuffer()`
27531extern "system" fn dummy_pfngltexturebufferproc (_: GLuint, _: GLenum, _: GLuint) {
27532	panic!("OpenGL function pointer `glTextureBuffer()` is null.")
27533}
27534
27535/// The dummy function of `TextureBufferRange()`
27536extern "system" fn dummy_pfngltexturebufferrangeproc (_: GLuint, _: GLenum, _: GLuint, _: GLintptr, _: GLsizeiptr) {
27537	panic!("OpenGL function pointer `glTextureBufferRange()` is null.")
27538}
27539
27540/// The dummy function of `TextureStorage1D()`
27541extern "system" fn dummy_pfngltexturestorage1dproc (_: GLuint, _: GLsizei, _: GLenum, _: GLsizei) {
27542	panic!("OpenGL function pointer `glTextureStorage1D()` is null.")
27543}
27544
27545/// The dummy function of `TextureStorage2D()`
27546extern "system" fn dummy_pfngltexturestorage2dproc (_: GLuint, _: GLsizei, _: GLenum, _: GLsizei, _: GLsizei) {
27547	panic!("OpenGL function pointer `glTextureStorage2D()` is null.")
27548}
27549
27550/// The dummy function of `TextureStorage3D()`
27551extern "system" fn dummy_pfngltexturestorage3dproc (_: GLuint, _: GLsizei, _: GLenum, _: GLsizei, _: GLsizei, _: GLsizei) {
27552	panic!("OpenGL function pointer `glTextureStorage3D()` is null.")
27553}
27554
27555/// The dummy function of `TextureStorage2DMultisample()`
27556extern "system" fn dummy_pfngltexturestorage2dmultisampleproc (_: GLuint, _: GLsizei, _: GLenum, _: GLsizei, _: GLsizei, _: GLboolean) {
27557	panic!("OpenGL function pointer `glTextureStorage2DMultisample()` is null.")
27558}
27559
27560/// The dummy function of `TextureStorage3DMultisample()`
27561extern "system" fn dummy_pfngltexturestorage3dmultisampleproc (_: GLuint, _: GLsizei, _: GLenum, _: GLsizei, _: GLsizei, _: GLsizei, _: GLboolean) {
27562	panic!("OpenGL function pointer `glTextureStorage3DMultisample()` is null.")
27563}
27564
27565/// The dummy function of `TextureSubImage1D()`
27566extern "system" fn dummy_pfngltexturesubimage1dproc (_: GLuint, _: GLint, _: GLint, _: GLsizei, _: GLenum, _: GLenum, _: *const c_void) {
27567	panic!("OpenGL function pointer `glTextureSubImage1D()` is null.")
27568}
27569
27570/// The dummy function of `TextureSubImage2D()`
27571extern "system" fn dummy_pfngltexturesubimage2dproc (_: GLuint, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLenum, _: GLenum, _: *const c_void) {
27572	panic!("OpenGL function pointer `glTextureSubImage2D()` is null.")
27573}
27574
27575/// The dummy function of `TextureSubImage3D()`
27576extern "system" fn dummy_pfngltexturesubimage3dproc (_: GLuint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLsizei, _: GLenum, _: GLenum, _: *const c_void) {
27577	panic!("OpenGL function pointer `glTextureSubImage3D()` is null.")
27578}
27579
27580/// The dummy function of `CompressedTextureSubImage1D()`
27581extern "system" fn dummy_pfnglcompressedtexturesubimage1dproc (_: GLuint, _: GLint, _: GLint, _: GLsizei, _: GLenum, _: GLsizei, _: *const c_void) {
27582	panic!("OpenGL function pointer `glCompressedTextureSubImage1D()` is null.")
27583}
27584
27585/// The dummy function of `CompressedTextureSubImage2D()`
27586extern "system" fn dummy_pfnglcompressedtexturesubimage2dproc (_: GLuint, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLenum, _: GLsizei, _: *const c_void) {
27587	panic!("OpenGL function pointer `glCompressedTextureSubImage2D()` is null.")
27588}
27589
27590/// The dummy function of `CompressedTextureSubImage3D()`
27591extern "system" fn dummy_pfnglcompressedtexturesubimage3dproc (_: GLuint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLsizei, _: GLenum, _: GLsizei, _: *const c_void) {
27592	panic!("OpenGL function pointer `glCompressedTextureSubImage3D()` is null.")
27593}
27594
27595/// The dummy function of `CopyTextureSubImage1D()`
27596extern "system" fn dummy_pfnglcopytexturesubimage1dproc (_: GLuint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLsizei) {
27597	panic!("OpenGL function pointer `glCopyTextureSubImage1D()` is null.")
27598}
27599
27600/// The dummy function of `CopyTextureSubImage2D()`
27601extern "system" fn dummy_pfnglcopytexturesubimage2dproc (_: GLuint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei) {
27602	panic!("OpenGL function pointer `glCopyTextureSubImage2D()` is null.")
27603}
27604
27605/// The dummy function of `CopyTextureSubImage3D()`
27606extern "system" fn dummy_pfnglcopytexturesubimage3dproc (_: GLuint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei) {
27607	panic!("OpenGL function pointer `glCopyTextureSubImage3D()` is null.")
27608}
27609
27610/// The dummy function of `TextureParameterf()`
27611extern "system" fn dummy_pfngltextureparameterfproc (_: GLuint, _: GLenum, _: GLfloat) {
27612	panic!("OpenGL function pointer `glTextureParameterf()` is null.")
27613}
27614
27615/// The dummy function of `TextureParameterfv()`
27616extern "system" fn dummy_pfngltextureparameterfvproc (_: GLuint, _: GLenum, _: *const GLfloat) {
27617	panic!("OpenGL function pointer `glTextureParameterfv()` is null.")
27618}
27619
27620/// The dummy function of `TextureParameteri()`
27621extern "system" fn dummy_pfngltextureparameteriproc (_: GLuint, _: GLenum, _: GLint) {
27622	panic!("OpenGL function pointer `glTextureParameteri()` is null.")
27623}
27624
27625/// The dummy function of `TextureParameterIiv()`
27626extern "system" fn dummy_pfngltextureparameteriivproc (_: GLuint, _: GLenum, _: *const GLint) {
27627	panic!("OpenGL function pointer `glTextureParameterIiv()` is null.")
27628}
27629
27630/// The dummy function of `TextureParameterIuiv()`
27631extern "system" fn dummy_pfngltextureparameteriuivproc (_: GLuint, _: GLenum, _: *const GLuint) {
27632	panic!("OpenGL function pointer `glTextureParameterIuiv()` is null.")
27633}
27634
27635/// The dummy function of `TextureParameteriv()`
27636extern "system" fn dummy_pfngltextureparameterivproc (_: GLuint, _: GLenum, _: *const GLint) {
27637	panic!("OpenGL function pointer `glTextureParameteriv()` is null.")
27638}
27639
27640/// The dummy function of `GenerateTextureMipmap()`
27641extern "system" fn dummy_pfnglgeneratetexturemipmapproc (_: GLuint) {
27642	panic!("OpenGL function pointer `glGenerateTextureMipmap()` is null.")
27643}
27644
27645/// The dummy function of `BindTextureUnit()`
27646extern "system" fn dummy_pfnglbindtextureunitproc (_: GLuint, _: GLuint) {
27647	panic!("OpenGL function pointer `glBindTextureUnit()` is null.")
27648}
27649
27650/// The dummy function of `GetTextureImage()`
27651extern "system" fn dummy_pfnglgettextureimageproc (_: GLuint, _: GLint, _: GLenum, _: GLenum, _: GLsizei, _: *mut c_void) {
27652	panic!("OpenGL function pointer `glGetTextureImage()` is null.")
27653}
27654
27655/// The dummy function of `GetCompressedTextureImage()`
27656extern "system" fn dummy_pfnglgetcompressedtextureimageproc (_: GLuint, _: GLint, _: GLsizei, _: *mut c_void) {
27657	panic!("OpenGL function pointer `glGetCompressedTextureImage()` is null.")
27658}
27659
27660/// The dummy function of `GetTextureLevelParameterfv()`
27661extern "system" fn dummy_pfnglgettexturelevelparameterfvproc (_: GLuint, _: GLint, _: GLenum, _: *mut GLfloat) {
27662	panic!("OpenGL function pointer `glGetTextureLevelParameterfv()` is null.")
27663}
27664
27665/// The dummy function of `GetTextureLevelParameteriv()`
27666extern "system" fn dummy_pfnglgettexturelevelparameterivproc (_: GLuint, _: GLint, _: GLenum, _: *mut GLint) {
27667	panic!("OpenGL function pointer `glGetTextureLevelParameteriv()` is null.")
27668}
27669
27670/// The dummy function of `GetTextureParameterfv()`
27671extern "system" fn dummy_pfnglgettextureparameterfvproc (_: GLuint, _: GLenum, _: *mut GLfloat) {
27672	panic!("OpenGL function pointer `glGetTextureParameterfv()` is null.")
27673}
27674
27675/// The dummy function of `GetTextureParameterIiv()`
27676extern "system" fn dummy_pfnglgettextureparameteriivproc (_: GLuint, _: GLenum, _: *mut GLint) {
27677	panic!("OpenGL function pointer `glGetTextureParameterIiv()` is null.")
27678}
27679
27680/// The dummy function of `GetTextureParameterIuiv()`
27681extern "system" fn dummy_pfnglgettextureparameteriuivproc (_: GLuint, _: GLenum, _: *mut GLuint) {
27682	panic!("OpenGL function pointer `glGetTextureParameterIuiv()` is null.")
27683}
27684
27685/// The dummy function of `GetTextureParameteriv()`
27686extern "system" fn dummy_pfnglgettextureparameterivproc (_: GLuint, _: GLenum, _: *mut GLint) {
27687	panic!("OpenGL function pointer `glGetTextureParameteriv()` is null.")
27688}
27689
27690/// The dummy function of `CreateVertexArrays()`
27691extern "system" fn dummy_pfnglcreatevertexarraysproc (_: GLsizei, _: *mut GLuint) {
27692	panic!("OpenGL function pointer `glCreateVertexArrays()` is null.")
27693}
27694
27695/// The dummy function of `DisableVertexArrayAttrib()`
27696extern "system" fn dummy_pfngldisablevertexarrayattribproc (_: GLuint, _: GLuint) {
27697	panic!("OpenGL function pointer `glDisableVertexArrayAttrib()` is null.")
27698}
27699
27700/// The dummy function of `EnableVertexArrayAttrib()`
27701extern "system" fn dummy_pfnglenablevertexarrayattribproc (_: GLuint, _: GLuint) {
27702	panic!("OpenGL function pointer `glEnableVertexArrayAttrib()` is null.")
27703}
27704
27705/// The dummy function of `VertexArrayElementBuffer()`
27706extern "system" fn dummy_pfnglvertexarrayelementbufferproc (_: GLuint, _: GLuint) {
27707	panic!("OpenGL function pointer `glVertexArrayElementBuffer()` is null.")
27708}
27709
27710/// The dummy function of `VertexArrayVertexBuffer()`
27711extern "system" fn dummy_pfnglvertexarrayvertexbufferproc (_: GLuint, _: GLuint, _: GLuint, _: GLintptr, _: GLsizei) {
27712	panic!("OpenGL function pointer `glVertexArrayVertexBuffer()` is null.")
27713}
27714
27715/// The dummy function of `VertexArrayVertexBuffers()`
27716extern "system" fn dummy_pfnglvertexarrayvertexbuffersproc (_: GLuint, _: GLuint, _: GLsizei, _: *const GLuint, _: *const GLintptr, _: *const GLsizei) {
27717	panic!("OpenGL function pointer `glVertexArrayVertexBuffers()` is null.")
27718}
27719
27720/// The dummy function of `VertexArrayAttribBinding()`
27721extern "system" fn dummy_pfnglvertexarrayattribbindingproc (_: GLuint, _: GLuint, _: GLuint) {
27722	panic!("OpenGL function pointer `glVertexArrayAttribBinding()` is null.")
27723}
27724
27725/// The dummy function of `VertexArrayAttribFormat()`
27726extern "system" fn dummy_pfnglvertexarrayattribformatproc (_: GLuint, _: GLuint, _: GLint, _: GLenum, _: GLboolean, _: GLuint) {
27727	panic!("OpenGL function pointer `glVertexArrayAttribFormat()` is null.")
27728}
27729
27730/// The dummy function of `VertexArrayAttribIFormat()`
27731extern "system" fn dummy_pfnglvertexarrayattribiformatproc (_: GLuint, _: GLuint, _: GLint, _: GLenum, _: GLuint) {
27732	panic!("OpenGL function pointer `glVertexArrayAttribIFormat()` is null.")
27733}
27734
27735/// The dummy function of `VertexArrayAttribLFormat()`
27736extern "system" fn dummy_pfnglvertexarrayattriblformatproc (_: GLuint, _: GLuint, _: GLint, _: GLenum, _: GLuint) {
27737	panic!("OpenGL function pointer `glVertexArrayAttribLFormat()` is null.")
27738}
27739
27740/// The dummy function of `VertexArrayBindingDivisor()`
27741extern "system" fn dummy_pfnglvertexarraybindingdivisorproc (_: GLuint, _: GLuint, _: GLuint) {
27742	panic!("OpenGL function pointer `glVertexArrayBindingDivisor()` is null.")
27743}
27744
27745/// The dummy function of `GetVertexArrayiv()`
27746extern "system" fn dummy_pfnglgetvertexarrayivproc (_: GLuint, _: GLenum, _: *mut GLint) {
27747	panic!("OpenGL function pointer `glGetVertexArrayiv()` is null.")
27748}
27749
27750/// The dummy function of `GetVertexArrayIndexediv()`
27751extern "system" fn dummy_pfnglgetvertexarrayindexedivproc (_: GLuint, _: GLuint, _: GLenum, _: *mut GLint) {
27752	panic!("OpenGL function pointer `glGetVertexArrayIndexediv()` is null.")
27753}
27754
27755/// The dummy function of `GetVertexArrayIndexed64iv()`
27756extern "system" fn dummy_pfnglgetvertexarrayindexed64ivproc (_: GLuint, _: GLuint, _: GLenum, _: *mut GLint64) {
27757	panic!("OpenGL function pointer `glGetVertexArrayIndexed64iv()` is null.")
27758}
27759
27760/// The dummy function of `CreateSamplers()`
27761extern "system" fn dummy_pfnglcreatesamplersproc (_: GLsizei, _: *mut GLuint) {
27762	panic!("OpenGL function pointer `glCreateSamplers()` is null.")
27763}
27764
27765/// The dummy function of `CreateProgramPipelines()`
27766extern "system" fn dummy_pfnglcreateprogrampipelinesproc (_: GLsizei, _: *mut GLuint) {
27767	panic!("OpenGL function pointer `glCreateProgramPipelines()` is null.")
27768}
27769
27770/// The dummy function of `CreateQueries()`
27771extern "system" fn dummy_pfnglcreatequeriesproc (_: GLenum, _: GLsizei, _: *mut GLuint) {
27772	panic!("OpenGL function pointer `glCreateQueries()` is null.")
27773}
27774
27775/// The dummy function of `GetQueryBufferObjecti64v()`
27776extern "system" fn dummy_pfnglgetquerybufferobjecti64vproc (_: GLuint, _: GLuint, _: GLenum, _: GLintptr) {
27777	panic!("OpenGL function pointer `glGetQueryBufferObjecti64v()` is null.")
27778}
27779
27780/// The dummy function of `GetQueryBufferObjectiv()`
27781extern "system" fn dummy_pfnglgetquerybufferobjectivproc (_: GLuint, _: GLuint, _: GLenum, _: GLintptr) {
27782	panic!("OpenGL function pointer `glGetQueryBufferObjectiv()` is null.")
27783}
27784
27785/// The dummy function of `GetQueryBufferObjectui64v()`
27786extern "system" fn dummy_pfnglgetquerybufferobjectui64vproc (_: GLuint, _: GLuint, _: GLenum, _: GLintptr) {
27787	panic!("OpenGL function pointer `glGetQueryBufferObjectui64v()` is null.")
27788}
27789
27790/// The dummy function of `GetQueryBufferObjectuiv()`
27791extern "system" fn dummy_pfnglgetquerybufferobjectuivproc (_: GLuint, _: GLuint, _: GLenum, _: GLintptr) {
27792	panic!("OpenGL function pointer `glGetQueryBufferObjectuiv()` is null.")
27793}
27794
27795/// The dummy function of `MemoryBarrierByRegion()`
27796extern "system" fn dummy_pfnglmemorybarrierbyregionproc (_: GLbitfield) {
27797	panic!("OpenGL function pointer `glMemoryBarrierByRegion()` is null.")
27798}
27799
27800/// The dummy function of `GetTextureSubImage()`
27801extern "system" fn dummy_pfnglgettexturesubimageproc (_: GLuint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLsizei, _: GLenum, _: GLenum, _: GLsizei, _: *mut c_void) {
27802	panic!("OpenGL function pointer `glGetTextureSubImage()` is null.")
27803}
27804
27805/// The dummy function of `GetCompressedTextureSubImage()`
27806extern "system" fn dummy_pfnglgetcompressedtexturesubimageproc (_: GLuint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLsizei, _: GLsizei, _: *mut c_void) {
27807	panic!("OpenGL function pointer `glGetCompressedTextureSubImage()` is null.")
27808}
27809
27810/// The dummy function of `GetGraphicsResetStatus()`
27811extern "system" fn dummy_pfnglgetgraphicsresetstatusproc () -> GLenum {
27812	panic!("OpenGL function pointer `glGetGraphicsResetStatus()` is null.")
27813}
27814
27815/// The dummy function of `GetnCompressedTexImage()`
27816extern "system" fn dummy_pfnglgetncompressedteximageproc (_: GLenum, _: GLint, _: GLsizei, _: *mut c_void) {
27817	panic!("OpenGL function pointer `glGetnCompressedTexImage()` is null.")
27818}
27819
27820/// The dummy function of `GetnTexImage()`
27821extern "system" fn dummy_pfnglgetnteximageproc (_: GLenum, _: GLint, _: GLenum, _: GLenum, _: GLsizei, _: *mut c_void) {
27822	panic!("OpenGL function pointer `glGetnTexImage()` is null.")
27823}
27824
27825/// The dummy function of `GetnUniformdv()`
27826extern "system" fn dummy_pfnglgetnuniformdvproc (_: GLuint, _: GLint, _: GLsizei, _: *mut GLdouble) {
27827	panic!("OpenGL function pointer `glGetnUniformdv()` is null.")
27828}
27829
27830/// The dummy function of `GetnUniformfv()`
27831extern "system" fn dummy_pfnglgetnuniformfvproc (_: GLuint, _: GLint, _: GLsizei, _: *mut GLfloat) {
27832	panic!("OpenGL function pointer `glGetnUniformfv()` is null.")
27833}
27834
27835/// The dummy function of `GetnUniformiv()`
27836extern "system" fn dummy_pfnglgetnuniformivproc (_: GLuint, _: GLint, _: GLsizei, _: *mut GLint) {
27837	panic!("OpenGL function pointer `glGetnUniformiv()` is null.")
27838}
27839
27840/// The dummy function of `GetnUniformuiv()`
27841extern "system" fn dummy_pfnglgetnuniformuivproc (_: GLuint, _: GLint, _: GLsizei, _: *mut GLuint) {
27842	panic!("OpenGL function pointer `glGetnUniformuiv()` is null.")
27843}
27844
27845/// The dummy function of `ReadnPixels()`
27846extern "system" fn dummy_pfnglreadnpixelsproc (_: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLenum, _: GLenum, _: GLsizei, _: *mut c_void) {
27847	panic!("OpenGL function pointer `glReadnPixels()` is null.")
27848}
27849
27850/// The dummy function of `GetnMapdv()`
27851extern "system" fn dummy_pfnglgetnmapdvproc (_: GLenum, _: GLenum, _: GLsizei, _: *mut GLdouble) {
27852	panic!("OpenGL function pointer `glGetnMapdv()` is null.")
27853}
27854
27855/// The dummy function of `GetnMapfv()`
27856extern "system" fn dummy_pfnglgetnmapfvproc (_: GLenum, _: GLenum, _: GLsizei, _: *mut GLfloat) {
27857	panic!("OpenGL function pointer `glGetnMapfv()` is null.")
27858}
27859
27860/// The dummy function of `GetnMapiv()`
27861extern "system" fn dummy_pfnglgetnmapivproc (_: GLenum, _: GLenum, _: GLsizei, _: *mut GLint) {
27862	panic!("OpenGL function pointer `glGetnMapiv()` is null.")
27863}
27864
27865/// The dummy function of `GetnPixelMapfv()`
27866extern "system" fn dummy_pfnglgetnpixelmapfvproc (_: GLenum, _: GLsizei, _: *mut GLfloat) {
27867	panic!("OpenGL function pointer `glGetnPixelMapfv()` is null.")
27868}
27869
27870/// The dummy function of `GetnPixelMapuiv()`
27871extern "system" fn dummy_pfnglgetnpixelmapuivproc (_: GLenum, _: GLsizei, _: *mut GLuint) {
27872	panic!("OpenGL function pointer `glGetnPixelMapuiv()` is null.")
27873}
27874
27875/// The dummy function of `GetnPixelMapusv()`
27876extern "system" fn dummy_pfnglgetnpixelmapusvproc (_: GLenum, _: GLsizei, _: *mut GLushort) {
27877	panic!("OpenGL function pointer `glGetnPixelMapusv()` is null.")
27878}
27879
27880/// The dummy function of `GetnPolygonStipple()`
27881extern "system" fn dummy_pfnglgetnpolygonstippleproc (_: GLsizei, _: *mut GLubyte) {
27882	panic!("OpenGL function pointer `glGetnPolygonStipple()` is null.")
27883}
27884
27885/// The dummy function of `GetnColorTable()`
27886extern "system" fn dummy_pfnglgetncolortableproc (_: GLenum, _: GLenum, _: GLenum, _: GLsizei, _: *mut c_void) {
27887	panic!("OpenGL function pointer `glGetnColorTable()` is null.")
27888}
27889
27890/// The dummy function of `GetnConvolutionFilter()`
27891extern "system" fn dummy_pfnglgetnconvolutionfilterproc (_: GLenum, _: GLenum, _: GLenum, _: GLsizei, _: *mut c_void) {
27892	panic!("OpenGL function pointer `glGetnConvolutionFilter()` is null.")
27893}
27894
27895/// The dummy function of `GetnSeparableFilter()`
27896extern "system" fn dummy_pfnglgetnseparablefilterproc (_: GLenum, _: GLenum, _: GLenum, _: GLsizei, _: *mut c_void, _: GLsizei, _: *mut c_void, _: *mut c_void) {
27897	panic!("OpenGL function pointer `glGetnSeparableFilter()` is null.")
27898}
27899
27900/// The dummy function of `GetnHistogram()`
27901extern "system" fn dummy_pfnglgetnhistogramproc (_: GLenum, _: GLboolean, _: GLenum, _: GLenum, _: GLsizei, _: *mut c_void) {
27902	panic!("OpenGL function pointer `glGetnHistogram()` is null.")
27903}
27904
27905/// The dummy function of `GetnMinmax()`
27906extern "system" fn dummy_pfnglgetnminmaxproc (_: GLenum, _: GLboolean, _: GLenum, _: GLenum, _: GLsizei, _: *mut c_void) {
27907	panic!("OpenGL function pointer `glGetnMinmax()` is null.")
27908}
27909
27910/// The dummy function of `TextureBarrier()`
27911extern "system" fn dummy_pfngltexturebarrierproc () {
27912	panic!("OpenGL function pointer `glTextureBarrier()` is null.")
27913}
27914/// Constant value defined from OpenGL 4.5
27915pub const GL_CONTEXT_LOST: GLenum = 0x0507;
27916
27917/// Constant value defined from OpenGL 4.5
27918pub const GL_NEGATIVE_ONE_TO_ONE: GLenum = 0x935E;
27919
27920/// Constant value defined from OpenGL 4.5
27921pub const GL_ZERO_TO_ONE: GLenum = 0x935F;
27922
27923/// Constant value defined from OpenGL 4.5
27924pub const GL_CLIP_ORIGIN: GLenum = 0x935C;
27925
27926/// Constant value defined from OpenGL 4.5
27927pub const GL_CLIP_DEPTH_MODE: GLenum = 0x935D;
27928
27929/// Constant value defined from OpenGL 4.5
27930pub const GL_QUERY_WAIT_INVERTED: GLenum = 0x8E17;
27931
27932/// Constant value defined from OpenGL 4.5
27933pub const GL_QUERY_NO_WAIT_INVERTED: GLenum = 0x8E18;
27934
27935/// Constant value defined from OpenGL 4.5
27936pub const GL_QUERY_BY_REGION_WAIT_INVERTED: GLenum = 0x8E19;
27937
27938/// Constant value defined from OpenGL 4.5
27939pub const GL_QUERY_BY_REGION_NO_WAIT_INVERTED: GLenum = 0x8E1A;
27940
27941/// Constant value defined from OpenGL 4.5
27942pub const GL_MAX_CULL_DISTANCES: GLenum = 0x82F9;
27943
27944/// Constant value defined from OpenGL 4.5
27945pub const GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES: GLenum = 0x82FA;
27946
27947/// Constant value defined from OpenGL 4.5
27948pub const GL_TEXTURE_TARGET: GLenum = 0x1006;
27949
27950/// Constant value defined from OpenGL 4.5
27951pub const GL_QUERY_TARGET: GLenum = 0x82EA;
27952
27953/// Constant value defined from OpenGL 4.5
27954pub const GL_GUILTY_CONTEXT_RESET: GLenum = 0x8253;
27955
27956/// Constant value defined from OpenGL 4.5
27957pub const GL_INNOCENT_CONTEXT_RESET: GLenum = 0x8254;
27958
27959/// Constant value defined from OpenGL 4.5
27960pub const GL_UNKNOWN_CONTEXT_RESET: GLenum = 0x8255;
27961
27962/// Constant value defined from OpenGL 4.5
27963pub const GL_RESET_NOTIFICATION_STRATEGY: GLenum = 0x8256;
27964
27965/// Constant value defined from OpenGL 4.5
27966pub const GL_LOSE_CONTEXT_ON_RESET: GLenum = 0x8252;
27967
27968/// Constant value defined from OpenGL 4.5
27969pub const GL_NO_RESET_NOTIFICATION: GLenum = 0x8261;
27970
27971/// Constant value defined from OpenGL 4.5
27972pub const GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT: GLbitfield = 0x00000004;
27973
27974/// Constant value defined from OpenGL 4.5
27975pub const GL_COLOR_TABLE: GLenum = 0x80D0;
27976
27977/// Constant value defined from OpenGL 4.5
27978pub const GL_POST_CONVOLUTION_COLOR_TABLE: GLenum = 0x80D1;
27979
27980/// Constant value defined from OpenGL 4.5
27981pub const GL_POST_COLOR_MATRIX_COLOR_TABLE: GLenum = 0x80D2;
27982
27983/// Constant value defined from OpenGL 4.5
27984pub const GL_PROXY_COLOR_TABLE: GLenum = 0x80D3;
27985
27986/// Constant value defined from OpenGL 4.5
27987pub const GL_PROXY_POST_CONVOLUTION_COLOR_TABLE: GLenum = 0x80D4;
27988
27989/// Constant value defined from OpenGL 4.5
27990pub const GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE: GLenum = 0x80D5;
27991
27992/// Constant value defined from OpenGL 4.5
27993pub const GL_CONVOLUTION_1D: GLenum = 0x8010;
27994
27995/// Constant value defined from OpenGL 4.5
27996pub const GL_CONVOLUTION_2D: GLenum = 0x8011;
27997
27998/// Constant value defined from OpenGL 4.5
27999pub const GL_SEPARABLE_2D: GLenum = 0x8012;
28000
28001/// Constant value defined from OpenGL 4.5
28002pub const GL_HISTOGRAM: GLenum = 0x8024;
28003
28004/// Constant value defined from OpenGL 4.5
28005pub const GL_PROXY_HISTOGRAM: GLenum = 0x8025;
28006
28007/// Constant value defined from OpenGL 4.5
28008pub const GL_MINMAX: GLenum = 0x802E;
28009
28010/// Constant value defined from OpenGL 4.5
28011pub const GL_CONTEXT_RELEASE_BEHAVIOR: GLenum = 0x82FB;
28012
28013/// Constant value defined from OpenGL 4.5
28014pub const GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH: GLenum = 0x82FC;
28015
28016/// Functions from OpenGL version 4.5
28017pub trait GL_4_5 {
28018	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
28019	fn glGetError(&self) -> GLenum;
28020
28021	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClipControl.xhtml>
28022	fn glClipControl(&self, origin: GLenum, depth: GLenum) -> Result<()>;
28023
28024	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateTransformFeedbacks.xhtml>
28025	fn glCreateTransformFeedbacks(&self, n: GLsizei, ids: *mut GLuint) -> Result<()>;
28026
28027	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTransformFeedbackBufferBase.xhtml>
28028	fn glTransformFeedbackBufferBase(&self, xfb: GLuint, index: GLuint, buffer: GLuint) -> Result<()>;
28029
28030	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTransformFeedbackBufferRange.xhtml>
28031	fn glTransformFeedbackBufferRange(&self, xfb: GLuint, index: GLuint, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()>;
28032
28033	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTransformFeedbackiv.xhtml>
28034	fn glGetTransformFeedbackiv(&self, xfb: GLuint, pname: GLenum, param: *mut GLint) -> Result<()>;
28035
28036	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTransformFeedbacki_v.xhtml>
28037	fn glGetTransformFeedbacki_v(&self, xfb: GLuint, pname: GLenum, index: GLuint, param: *mut GLint) -> Result<()>;
28038
28039	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTransformFeedbacki64_v.xhtml>
28040	fn glGetTransformFeedbacki64_v(&self, xfb: GLuint, pname: GLenum, index: GLuint, param: *mut GLint64) -> Result<()>;
28041
28042	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateBuffers.xhtml>
28043	fn glCreateBuffers(&self, n: GLsizei, buffers: *mut GLuint) -> Result<()>;
28044
28045	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedBufferStorage.xhtml>
28046	fn glNamedBufferStorage(&self, buffer: GLuint, size: GLsizeiptr, data: *const c_void, flags: GLbitfield) -> Result<()>;
28047
28048	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedBufferData.xhtml>
28049	fn glNamedBufferData(&self, buffer: GLuint, size: GLsizeiptr, data: *const c_void, usage: GLenum) -> Result<()>;
28050
28051	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedBufferSubData.xhtml>
28052	fn glNamedBufferSubData(&self, buffer: GLuint, offset: GLintptr, size: GLsizeiptr, data: *const c_void) -> Result<()>;
28053
28054	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyNamedBufferSubData.xhtml>
28055	fn glCopyNamedBufferSubData(&self, readBuffer: GLuint, writeBuffer: GLuint, readOffset: GLintptr, writeOffset: GLintptr, size: GLsizeiptr) -> Result<()>;
28056
28057	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedBufferData.xhtml>
28058	fn glClearNamedBufferData(&self, buffer: GLuint, internalformat: GLenum, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()>;
28059
28060	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedBufferSubData.xhtml>
28061	fn glClearNamedBufferSubData(&self, buffer: GLuint, internalformat: GLenum, offset: GLintptr, size: GLsizeiptr, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()>;
28062
28063	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMapNamedBuffer.xhtml>
28064	fn glMapNamedBuffer(&self, buffer: GLuint, access: GLenum) -> Result<*mut c_void>;
28065
28066	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMapNamedBufferRange.xhtml>
28067	fn glMapNamedBufferRange(&self, buffer: GLuint, offset: GLintptr, length: GLsizeiptr, access: GLbitfield) -> Result<*mut c_void>;
28068
28069	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUnmapNamedBuffer.xhtml>
28070	fn glUnmapNamedBuffer(&self, buffer: GLuint) -> Result<GLboolean>;
28071
28072	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFlushMappedNamedBufferRange.xhtml>
28073	fn glFlushMappedNamedBufferRange(&self, buffer: GLuint, offset: GLintptr, length: GLsizeiptr) -> Result<()>;
28074
28075	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedBufferParameteriv.xhtml>
28076	fn glGetNamedBufferParameteriv(&self, buffer: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
28077
28078	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedBufferParameteri64v.xhtml>
28079	fn glGetNamedBufferParameteri64v(&self, buffer: GLuint, pname: GLenum, params: *mut GLint64) -> Result<()>;
28080
28081	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedBufferPointerv.xhtml>
28082	fn glGetNamedBufferPointerv(&self, buffer: GLuint, pname: GLenum, params: *mut *mut c_void) -> Result<()>;
28083
28084	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedBufferSubData.xhtml>
28085	fn glGetNamedBufferSubData(&self, buffer: GLuint, offset: GLintptr, size: GLsizeiptr, data: *mut c_void) -> Result<()>;
28086
28087	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateFramebuffers.xhtml>
28088	fn glCreateFramebuffers(&self, n: GLsizei, framebuffers: *mut GLuint) -> Result<()>;
28089
28090	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferRenderbuffer.xhtml>
28091	fn glNamedFramebufferRenderbuffer(&self, framebuffer: GLuint, attachment: GLenum, renderbuffertarget: GLenum, renderbuffer: GLuint) -> Result<()>;
28092
28093	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferParameteri.xhtml>
28094	fn glNamedFramebufferParameteri(&self, framebuffer: GLuint, pname: GLenum, param: GLint) -> Result<()>;
28095
28096	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferTexture.xhtml>
28097	fn glNamedFramebufferTexture(&self, framebuffer: GLuint, attachment: GLenum, texture: GLuint, level: GLint) -> Result<()>;
28098
28099	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferTextureLayer.xhtml>
28100	fn glNamedFramebufferTextureLayer(&self, framebuffer: GLuint, attachment: GLenum, texture: GLuint, level: GLint, layer: GLint) -> Result<()>;
28101
28102	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferDrawBuffer.xhtml>
28103	fn glNamedFramebufferDrawBuffer(&self, framebuffer: GLuint, buf: GLenum) -> Result<()>;
28104
28105	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferDrawBuffers.xhtml>
28106	fn glNamedFramebufferDrawBuffers(&self, framebuffer: GLuint, n: GLsizei, bufs: *const GLenum) -> Result<()>;
28107
28108	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferReadBuffer.xhtml>
28109	fn glNamedFramebufferReadBuffer(&self, framebuffer: GLuint, src: GLenum) -> Result<()>;
28110
28111	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateNamedFramebufferData.xhtml>
28112	fn glInvalidateNamedFramebufferData(&self, framebuffer: GLuint, numAttachments: GLsizei, attachments: *const GLenum) -> Result<()>;
28113
28114	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateNamedFramebufferSubData.xhtml>
28115	fn glInvalidateNamedFramebufferSubData(&self, framebuffer: GLuint, numAttachments: GLsizei, attachments: *const GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
28116
28117	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedFramebufferiv.xhtml>
28118	fn glClearNamedFramebufferiv(&self, framebuffer: GLuint, buffer: GLenum, drawbuffer: GLint, value: *const GLint) -> Result<()>;
28119
28120	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedFramebufferuiv.xhtml>
28121	fn glClearNamedFramebufferuiv(&self, framebuffer: GLuint, buffer: GLenum, drawbuffer: GLint, value: *const GLuint) -> Result<()>;
28122
28123	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedFramebufferfv.xhtml>
28124	fn glClearNamedFramebufferfv(&self, framebuffer: GLuint, buffer: GLenum, drawbuffer: GLint, value: *const GLfloat) -> Result<()>;
28125
28126	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedFramebufferfi.xhtml>
28127	fn glClearNamedFramebufferfi(&self, framebuffer: GLuint, buffer: GLenum, drawbuffer: GLint, depth: GLfloat, stencil: GLint) -> Result<()>;
28128
28129	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlitNamedFramebuffer.xhtml>
28130	fn glBlitNamedFramebuffer(&self, readFramebuffer: GLuint, drawFramebuffer: GLuint, srcX0: GLint, srcY0: GLint, srcX1: GLint, srcY1: GLint, dstX0: GLint, dstY0: GLint, dstX1: GLint, dstY1: GLint, mask: GLbitfield, filter: GLenum) -> Result<()>;
28131
28132	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCheckNamedFramebufferStatus.xhtml>
28133	fn glCheckNamedFramebufferStatus(&self, framebuffer: GLuint, target: GLenum) -> Result<GLenum>;
28134
28135	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedFramebufferParameteriv.xhtml>
28136	fn glGetNamedFramebufferParameteriv(&self, framebuffer: GLuint, pname: GLenum, param: *mut GLint) -> Result<()>;
28137
28138	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedFramebufferAttachmentParameteriv.xhtml>
28139	fn glGetNamedFramebufferAttachmentParameteriv(&self, framebuffer: GLuint, attachment: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
28140
28141	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateRenderbuffers.xhtml>
28142	fn glCreateRenderbuffers(&self, n: GLsizei, renderbuffers: *mut GLuint) -> Result<()>;
28143
28144	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedRenderbufferStorage.xhtml>
28145	fn glNamedRenderbufferStorage(&self, renderbuffer: GLuint, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()>;
28146
28147	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedRenderbufferStorageMultisample.xhtml>
28148	fn glNamedRenderbufferStorageMultisample(&self, renderbuffer: GLuint, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()>;
28149
28150	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedRenderbufferParameteriv.xhtml>
28151	fn glGetNamedRenderbufferParameteriv(&self, renderbuffer: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
28152
28153	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateTextures.xhtml>
28154	fn glCreateTextures(&self, target: GLenum, n: GLsizei, textures: *mut GLuint) -> Result<()>;
28155
28156	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureBuffer.xhtml>
28157	fn glTextureBuffer(&self, texture: GLuint, internalformat: GLenum, buffer: GLuint) -> Result<()>;
28158
28159	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureBufferRange.xhtml>
28160	fn glTextureBufferRange(&self, texture: GLuint, internalformat: GLenum, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()>;
28161
28162	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureStorage1D.xhtml>
28163	fn glTextureStorage1D(&self, texture: GLuint, levels: GLsizei, internalformat: GLenum, width: GLsizei) -> Result<()>;
28164
28165	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureStorage2D.xhtml>
28166	fn glTextureStorage2D(&self, texture: GLuint, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()>;
28167
28168	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureStorage3D.xhtml>
28169	fn glTextureStorage3D(&self, texture: GLuint, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei) -> Result<()>;
28170
28171	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureStorage2DMultisample.xhtml>
28172	fn glTextureStorage2DMultisample(&self, texture: GLuint, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, fixedsamplelocations: GLboolean) -> Result<()>;
28173
28174	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureStorage3DMultisample.xhtml>
28175	fn glTextureStorage3DMultisample(&self, texture: GLuint, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, fixedsamplelocations: GLboolean) -> Result<()>;
28176
28177	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureSubImage1D.xhtml>
28178	fn glTextureSubImage1D(&self, texture: GLuint, level: GLint, xoffset: GLint, width: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
28179
28180	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureSubImage2D.xhtml>
28181	fn glTextureSubImage2D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
28182
28183	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureSubImage3D.xhtml>
28184	fn glTextureSubImage3D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
28185
28186	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTextureSubImage1D.xhtml>
28187	fn glCompressedTextureSubImage1D(&self, texture: GLuint, level: GLint, xoffset: GLint, width: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()>;
28188
28189	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTextureSubImage2D.xhtml>
28190	fn glCompressedTextureSubImage2D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()>;
28191
28192	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTextureSubImage3D.xhtml>
28193	fn glCompressedTextureSubImage3D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()>;
28194
28195	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTextureSubImage1D.xhtml>
28196	fn glCopyTextureSubImage1D(&self, texture: GLuint, level: GLint, xoffset: GLint, x: GLint, y: GLint, width: GLsizei) -> Result<()>;
28197
28198	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTextureSubImage2D.xhtml>
28199	fn glCopyTextureSubImage2D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
28200
28201	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTextureSubImage3D.xhtml>
28202	fn glCopyTextureSubImage3D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
28203
28204	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameterf.xhtml>
28205	fn glTextureParameterf(&self, texture: GLuint, pname: GLenum, param: GLfloat) -> Result<()>;
28206
28207	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameterfv.xhtml>
28208	fn glTextureParameterfv(&self, texture: GLuint, pname: GLenum, param: *const GLfloat) -> Result<()>;
28209
28210	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameteri.xhtml>
28211	fn glTextureParameteri(&self, texture: GLuint, pname: GLenum, param: GLint) -> Result<()>;
28212
28213	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameterIiv.xhtml>
28214	fn glTextureParameterIiv(&self, texture: GLuint, pname: GLenum, params: *const GLint) -> Result<()>;
28215
28216	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameterIuiv.xhtml>
28217	fn glTextureParameterIuiv(&self, texture: GLuint, pname: GLenum, params: *const GLuint) -> Result<()>;
28218
28219	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameteriv.xhtml>
28220	fn glTextureParameteriv(&self, texture: GLuint, pname: GLenum, param: *const GLint) -> Result<()>;
28221
28222	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenerateTextureMipmap.xhtml>
28223	fn glGenerateTextureMipmap(&self, texture: GLuint) -> Result<()>;
28224
28225	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindTextureUnit.xhtml>
28226	fn glBindTextureUnit(&self, unit: GLuint, texture: GLuint) -> Result<()>;
28227
28228	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureImage.xhtml>
28229	fn glGetTextureImage(&self, texture: GLuint, level: GLint, format: GLenum, type_: GLenum, bufSize: GLsizei, pixels: *mut c_void) -> Result<()>;
28230
28231	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetCompressedTextureImage.xhtml>
28232	fn glGetCompressedTextureImage(&self, texture: GLuint, level: GLint, bufSize: GLsizei, pixels: *mut c_void) -> Result<()>;
28233
28234	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureLevelParameterfv.xhtml>
28235	fn glGetTextureLevelParameterfv(&self, texture: GLuint, level: GLint, pname: GLenum, params: *mut GLfloat) -> Result<()>;
28236
28237	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureLevelParameteriv.xhtml>
28238	fn glGetTextureLevelParameteriv(&self, texture: GLuint, level: GLint, pname: GLenum, params: *mut GLint) -> Result<()>;
28239
28240	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureParameterfv.xhtml>
28241	fn glGetTextureParameterfv(&self, texture: GLuint, pname: GLenum, params: *mut GLfloat) -> Result<()>;
28242
28243	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureParameterIiv.xhtml>
28244	fn glGetTextureParameterIiv(&self, texture: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
28245
28246	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureParameterIuiv.xhtml>
28247	fn glGetTextureParameterIuiv(&self, texture: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()>;
28248
28249	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureParameteriv.xhtml>
28250	fn glGetTextureParameteriv(&self, texture: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
28251
28252	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateVertexArrays.xhtml>
28253	fn glCreateVertexArrays(&self, n: GLsizei, arrays: *mut GLuint) -> Result<()>;
28254
28255	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDisableVertexArrayAttrib.xhtml>
28256	fn glDisableVertexArrayAttrib(&self, vaobj: GLuint, index: GLuint) -> Result<()>;
28257
28258	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEnableVertexArrayAttrib.xhtml>
28259	fn glEnableVertexArrayAttrib(&self, vaobj: GLuint, index: GLuint) -> Result<()>;
28260
28261	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayElementBuffer.xhtml>
28262	fn glVertexArrayElementBuffer(&self, vaobj: GLuint, buffer: GLuint) -> Result<()>;
28263
28264	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayVertexBuffer.xhtml>
28265	fn glVertexArrayVertexBuffer(&self, vaobj: GLuint, bindingindex: GLuint, buffer: GLuint, offset: GLintptr, stride: GLsizei) -> Result<()>;
28266
28267	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayVertexBuffers.xhtml>
28268	fn glVertexArrayVertexBuffers(&self, vaobj: GLuint, first: GLuint, count: GLsizei, buffers: *const GLuint, offsets: *const GLintptr, strides: *const GLsizei) -> Result<()>;
28269
28270	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayAttribBinding.xhtml>
28271	fn glVertexArrayAttribBinding(&self, vaobj: GLuint, attribindex: GLuint, bindingindex: GLuint) -> Result<()>;
28272
28273	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayAttribFormat.xhtml>
28274	fn glVertexArrayAttribFormat(&self, vaobj: GLuint, attribindex: GLuint, size: GLint, type_: GLenum, normalized: GLboolean, relativeoffset: GLuint) -> Result<()>;
28275
28276	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayAttribIFormat.xhtml>
28277	fn glVertexArrayAttribIFormat(&self, vaobj: GLuint, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()>;
28278
28279	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayAttribLFormat.xhtml>
28280	fn glVertexArrayAttribLFormat(&self, vaobj: GLuint, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()>;
28281
28282	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayBindingDivisor.xhtml>
28283	fn glVertexArrayBindingDivisor(&self, vaobj: GLuint, bindingindex: GLuint, divisor: GLuint) -> Result<()>;
28284
28285	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexArrayiv.xhtml>
28286	fn glGetVertexArrayiv(&self, vaobj: GLuint, pname: GLenum, param: *mut GLint) -> Result<()>;
28287
28288	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexArrayIndexediv.xhtml>
28289	fn glGetVertexArrayIndexediv(&self, vaobj: GLuint, index: GLuint, pname: GLenum, param: *mut GLint) -> Result<()>;
28290
28291	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexArrayIndexed64iv.xhtml>
28292	fn glGetVertexArrayIndexed64iv(&self, vaobj: GLuint, index: GLuint, pname: GLenum, param: *mut GLint64) -> Result<()>;
28293
28294	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateSamplers.xhtml>
28295	fn glCreateSamplers(&self, n: GLsizei, samplers: *mut GLuint) -> Result<()>;
28296
28297	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateProgramPipelines.xhtml>
28298	fn glCreateProgramPipelines(&self, n: GLsizei, pipelines: *mut GLuint) -> Result<()>;
28299
28300	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateQueries.xhtml>
28301	fn glCreateQueries(&self, target: GLenum, n: GLsizei, ids: *mut GLuint) -> Result<()>;
28302
28303	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryBufferObjecti64v.xhtml>
28304	fn glGetQueryBufferObjecti64v(&self, id: GLuint, buffer: GLuint, pname: GLenum, offset: GLintptr) -> Result<()>;
28305
28306	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryBufferObjectiv.xhtml>
28307	fn glGetQueryBufferObjectiv(&self, id: GLuint, buffer: GLuint, pname: GLenum, offset: GLintptr) -> Result<()>;
28308
28309	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryBufferObjectui64v.xhtml>
28310	fn glGetQueryBufferObjectui64v(&self, id: GLuint, buffer: GLuint, pname: GLenum, offset: GLintptr) -> Result<()>;
28311
28312	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryBufferObjectuiv.xhtml>
28313	fn glGetQueryBufferObjectuiv(&self, id: GLuint, buffer: GLuint, pname: GLenum, offset: GLintptr) -> Result<()>;
28314
28315	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMemoryBarrierByRegion.xhtml>
28316	fn glMemoryBarrierByRegion(&self, barriers: GLbitfield) -> Result<()>;
28317
28318	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureSubImage.xhtml>
28319	fn glGetTextureSubImage(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type_: GLenum, bufSize: GLsizei, pixels: *mut c_void) -> Result<()>;
28320
28321	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetCompressedTextureSubImage.xhtml>
28322	fn glGetCompressedTextureSubImage(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, bufSize: GLsizei, pixels: *mut c_void) -> Result<()>;
28323
28324	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetGraphicsResetStatus.xhtml>
28325	fn glGetGraphicsResetStatus(&self) -> Result<GLenum>;
28326
28327	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnCompressedTexImage.xhtml>
28328	fn glGetnCompressedTexImage(&self, target: GLenum, lod: GLint, bufSize: GLsizei, pixels: *mut c_void) -> Result<()>;
28329
28330	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnTexImage.xhtml>
28331	fn glGetnTexImage(&self, target: GLenum, level: GLint, format: GLenum, type_: GLenum, bufSize: GLsizei, pixels: *mut c_void) -> Result<()>;
28332
28333	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnUniformdv.xhtml>
28334	fn glGetnUniformdv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLdouble) -> Result<()>;
28335
28336	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnUniformfv.xhtml>
28337	fn glGetnUniformfv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLfloat) -> Result<()>;
28338
28339	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnUniformiv.xhtml>
28340	fn glGetnUniformiv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLint) -> Result<()>;
28341
28342	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnUniformuiv.xhtml>
28343	fn glGetnUniformuiv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLuint) -> Result<()>;
28344
28345	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glReadnPixels.xhtml>
28346	fn glReadnPixels(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, bufSize: GLsizei, data: *mut c_void) -> Result<()>;
28347
28348	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnMapdv.xhtml>
28349	fn glGetnMapdv(&self, target: GLenum, query: GLenum, bufSize: GLsizei, v: *mut GLdouble) -> Result<()>;
28350
28351	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnMapfv.xhtml>
28352	fn glGetnMapfv(&self, target: GLenum, query: GLenum, bufSize: GLsizei, v: *mut GLfloat) -> Result<()>;
28353
28354	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnMapiv.xhtml>
28355	fn glGetnMapiv(&self, target: GLenum, query: GLenum, bufSize: GLsizei, v: *mut GLint) -> Result<()>;
28356
28357	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnPixelMapfv.xhtml>
28358	fn glGetnPixelMapfv(&self, map: GLenum, bufSize: GLsizei, values: *mut GLfloat) -> Result<()>;
28359
28360	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnPixelMapuiv.xhtml>
28361	fn glGetnPixelMapuiv(&self, map: GLenum, bufSize: GLsizei, values: *mut GLuint) -> Result<()>;
28362
28363	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnPixelMapusv.xhtml>
28364	fn glGetnPixelMapusv(&self, map: GLenum, bufSize: GLsizei, values: *mut GLushort) -> Result<()>;
28365
28366	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnPolygonStipple.xhtml>
28367	fn glGetnPolygonStipple(&self, bufSize: GLsizei, pattern: *mut GLubyte) -> Result<()>;
28368
28369	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnColorTable.xhtml>
28370	fn glGetnColorTable(&self, target: GLenum, format: GLenum, type_: GLenum, bufSize: GLsizei, table: *mut c_void) -> Result<()>;
28371
28372	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnConvolutionFilter.xhtml>
28373	fn glGetnConvolutionFilter(&self, target: GLenum, format: GLenum, type_: GLenum, bufSize: GLsizei, image: *mut c_void) -> Result<()>;
28374
28375	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnSeparableFilter.xhtml>
28376	fn glGetnSeparableFilter(&self, target: GLenum, format: GLenum, type_: GLenum, rowBufSize: GLsizei, row: *mut c_void, columnBufSize: GLsizei, column: *mut c_void, span: *mut c_void) -> Result<()>;
28377
28378	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnHistogram.xhtml>
28379	fn glGetnHistogram(&self, target: GLenum, reset: GLboolean, format: GLenum, type_: GLenum, bufSize: GLsizei, values: *mut c_void) -> Result<()>;
28380
28381	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnMinmax.xhtml>
28382	fn glGetnMinmax(&self, target: GLenum, reset: GLboolean, format: GLenum, type_: GLenum, bufSize: GLsizei, values: *mut c_void) -> Result<()>;
28383
28384	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureBarrier.xhtml>
28385	fn glTextureBarrier(&self) -> Result<()>;
28386}
28387/// Functions from OpenGL version 4.5
28388#[derive(Clone, Copy, PartialEq, Eq, Hash)]
28389pub struct Version45 {
28390	/// Is OpenGL version 4.5 available
28391	available: bool,
28392
28393	/// The function pointer to `glGetError()`
28394	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
28395	pub geterror: PFNGLGETERRORPROC,
28396
28397	/// The function pointer to `glClipControl()`
28398	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClipControl.xhtml>
28399	pub clipcontrol: PFNGLCLIPCONTROLPROC,
28400
28401	/// The function pointer to `glCreateTransformFeedbacks()`
28402	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateTransformFeedbacks.xhtml>
28403	pub createtransformfeedbacks: PFNGLCREATETRANSFORMFEEDBACKSPROC,
28404
28405	/// The function pointer to `glTransformFeedbackBufferBase()`
28406	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTransformFeedbackBufferBase.xhtml>
28407	pub transformfeedbackbufferbase: PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC,
28408
28409	/// The function pointer to `glTransformFeedbackBufferRange()`
28410	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTransformFeedbackBufferRange.xhtml>
28411	pub transformfeedbackbufferrange: PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC,
28412
28413	/// The function pointer to `glGetTransformFeedbackiv()`
28414	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTransformFeedbackiv.xhtml>
28415	pub gettransformfeedbackiv: PFNGLGETTRANSFORMFEEDBACKIVPROC,
28416
28417	/// The function pointer to `glGetTransformFeedbacki_v()`
28418	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTransformFeedbacki_v.xhtml>
28419	pub gettransformfeedbacki_v: PFNGLGETTRANSFORMFEEDBACKI_VPROC,
28420
28421	/// The function pointer to `glGetTransformFeedbacki64_v()`
28422	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTransformFeedbacki64_v.xhtml>
28423	pub gettransformfeedbacki64_v: PFNGLGETTRANSFORMFEEDBACKI64_VPROC,
28424
28425	/// The function pointer to `glCreateBuffers()`
28426	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateBuffers.xhtml>
28427	pub createbuffers: PFNGLCREATEBUFFERSPROC,
28428
28429	/// The function pointer to `glNamedBufferStorage()`
28430	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedBufferStorage.xhtml>
28431	pub namedbufferstorage: PFNGLNAMEDBUFFERSTORAGEPROC,
28432
28433	/// The function pointer to `glNamedBufferData()`
28434	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedBufferData.xhtml>
28435	pub namedbufferdata: PFNGLNAMEDBUFFERDATAPROC,
28436
28437	/// The function pointer to `glNamedBufferSubData()`
28438	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedBufferSubData.xhtml>
28439	pub namedbuffersubdata: PFNGLNAMEDBUFFERSUBDATAPROC,
28440
28441	/// The function pointer to `glCopyNamedBufferSubData()`
28442	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyNamedBufferSubData.xhtml>
28443	pub copynamedbuffersubdata: PFNGLCOPYNAMEDBUFFERSUBDATAPROC,
28444
28445	/// The function pointer to `glClearNamedBufferData()`
28446	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedBufferData.xhtml>
28447	pub clearnamedbufferdata: PFNGLCLEARNAMEDBUFFERDATAPROC,
28448
28449	/// The function pointer to `glClearNamedBufferSubData()`
28450	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedBufferSubData.xhtml>
28451	pub clearnamedbuffersubdata: PFNGLCLEARNAMEDBUFFERSUBDATAPROC,
28452
28453	/// The function pointer to `glMapNamedBuffer()`
28454	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMapNamedBuffer.xhtml>
28455	pub mapnamedbuffer: PFNGLMAPNAMEDBUFFERPROC,
28456
28457	/// The function pointer to `glMapNamedBufferRange()`
28458	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMapNamedBufferRange.xhtml>
28459	pub mapnamedbufferrange: PFNGLMAPNAMEDBUFFERRANGEPROC,
28460
28461	/// The function pointer to `glUnmapNamedBuffer()`
28462	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUnmapNamedBuffer.xhtml>
28463	pub unmapnamedbuffer: PFNGLUNMAPNAMEDBUFFERPROC,
28464
28465	/// The function pointer to `glFlushMappedNamedBufferRange()`
28466	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFlushMappedNamedBufferRange.xhtml>
28467	pub flushmappednamedbufferrange: PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC,
28468
28469	/// The function pointer to `glGetNamedBufferParameteriv()`
28470	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedBufferParameteriv.xhtml>
28471	pub getnamedbufferparameteriv: PFNGLGETNAMEDBUFFERPARAMETERIVPROC,
28472
28473	/// The function pointer to `glGetNamedBufferParameteri64v()`
28474	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedBufferParameteri64v.xhtml>
28475	pub getnamedbufferparameteri64v: PFNGLGETNAMEDBUFFERPARAMETERI64VPROC,
28476
28477	/// The function pointer to `glGetNamedBufferPointerv()`
28478	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedBufferPointerv.xhtml>
28479	pub getnamedbufferpointerv: PFNGLGETNAMEDBUFFERPOINTERVPROC,
28480
28481	/// The function pointer to `glGetNamedBufferSubData()`
28482	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedBufferSubData.xhtml>
28483	pub getnamedbuffersubdata: PFNGLGETNAMEDBUFFERSUBDATAPROC,
28484
28485	/// The function pointer to `glCreateFramebuffers()`
28486	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateFramebuffers.xhtml>
28487	pub createframebuffers: PFNGLCREATEFRAMEBUFFERSPROC,
28488
28489	/// The function pointer to `glNamedFramebufferRenderbuffer()`
28490	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferRenderbuffer.xhtml>
28491	pub namedframebufferrenderbuffer: PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC,
28492
28493	/// The function pointer to `glNamedFramebufferParameteri()`
28494	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferParameteri.xhtml>
28495	pub namedframebufferparameteri: PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC,
28496
28497	/// The function pointer to `glNamedFramebufferTexture()`
28498	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferTexture.xhtml>
28499	pub namedframebuffertexture: PFNGLNAMEDFRAMEBUFFERTEXTUREPROC,
28500
28501	/// The function pointer to `glNamedFramebufferTextureLayer()`
28502	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferTextureLayer.xhtml>
28503	pub namedframebuffertexturelayer: PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC,
28504
28505	/// The function pointer to `glNamedFramebufferDrawBuffer()`
28506	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferDrawBuffer.xhtml>
28507	pub namedframebufferdrawbuffer: PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC,
28508
28509	/// The function pointer to `glNamedFramebufferDrawBuffers()`
28510	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferDrawBuffers.xhtml>
28511	pub namedframebufferdrawbuffers: PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC,
28512
28513	/// The function pointer to `glNamedFramebufferReadBuffer()`
28514	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferReadBuffer.xhtml>
28515	pub namedframebufferreadbuffer: PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC,
28516
28517	/// The function pointer to `glInvalidateNamedFramebufferData()`
28518	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateNamedFramebufferData.xhtml>
28519	pub invalidatenamedframebufferdata: PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC,
28520
28521	/// The function pointer to `glInvalidateNamedFramebufferSubData()`
28522	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateNamedFramebufferSubData.xhtml>
28523	pub invalidatenamedframebuffersubdata: PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC,
28524
28525	/// The function pointer to `glClearNamedFramebufferiv()`
28526	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedFramebufferiv.xhtml>
28527	pub clearnamedframebufferiv: PFNGLCLEARNAMEDFRAMEBUFFERIVPROC,
28528
28529	/// The function pointer to `glClearNamedFramebufferuiv()`
28530	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedFramebufferuiv.xhtml>
28531	pub clearnamedframebufferuiv: PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC,
28532
28533	/// The function pointer to `glClearNamedFramebufferfv()`
28534	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedFramebufferfv.xhtml>
28535	pub clearnamedframebufferfv: PFNGLCLEARNAMEDFRAMEBUFFERFVPROC,
28536
28537	/// The function pointer to `glClearNamedFramebufferfi()`
28538	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedFramebufferfi.xhtml>
28539	pub clearnamedframebufferfi: PFNGLCLEARNAMEDFRAMEBUFFERFIPROC,
28540
28541	/// The function pointer to `glBlitNamedFramebuffer()`
28542	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlitNamedFramebuffer.xhtml>
28543	pub blitnamedframebuffer: PFNGLBLITNAMEDFRAMEBUFFERPROC,
28544
28545	/// The function pointer to `glCheckNamedFramebufferStatus()`
28546	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCheckNamedFramebufferStatus.xhtml>
28547	pub checknamedframebufferstatus: PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC,
28548
28549	/// The function pointer to `glGetNamedFramebufferParameteriv()`
28550	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedFramebufferParameteriv.xhtml>
28551	pub getnamedframebufferparameteriv: PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC,
28552
28553	/// The function pointer to `glGetNamedFramebufferAttachmentParameteriv()`
28554	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedFramebufferAttachmentParameteriv.xhtml>
28555	pub getnamedframebufferattachmentparameteriv: PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC,
28556
28557	/// The function pointer to `glCreateRenderbuffers()`
28558	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateRenderbuffers.xhtml>
28559	pub createrenderbuffers: PFNGLCREATERENDERBUFFERSPROC,
28560
28561	/// The function pointer to `glNamedRenderbufferStorage()`
28562	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedRenderbufferStorage.xhtml>
28563	pub namedrenderbufferstorage: PFNGLNAMEDRENDERBUFFERSTORAGEPROC,
28564
28565	/// The function pointer to `glNamedRenderbufferStorageMultisample()`
28566	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedRenderbufferStorageMultisample.xhtml>
28567	pub namedrenderbufferstoragemultisample: PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC,
28568
28569	/// The function pointer to `glGetNamedRenderbufferParameteriv()`
28570	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedRenderbufferParameteriv.xhtml>
28571	pub getnamedrenderbufferparameteriv: PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC,
28572
28573	/// The function pointer to `glCreateTextures()`
28574	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateTextures.xhtml>
28575	pub createtextures: PFNGLCREATETEXTURESPROC,
28576
28577	/// The function pointer to `glTextureBuffer()`
28578	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureBuffer.xhtml>
28579	pub texturebuffer: PFNGLTEXTUREBUFFERPROC,
28580
28581	/// The function pointer to `glTextureBufferRange()`
28582	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureBufferRange.xhtml>
28583	pub texturebufferrange: PFNGLTEXTUREBUFFERRANGEPROC,
28584
28585	/// The function pointer to `glTextureStorage1D()`
28586	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureStorage1D.xhtml>
28587	pub texturestorage1d: PFNGLTEXTURESTORAGE1DPROC,
28588
28589	/// The function pointer to `glTextureStorage2D()`
28590	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureStorage2D.xhtml>
28591	pub texturestorage2d: PFNGLTEXTURESTORAGE2DPROC,
28592
28593	/// The function pointer to `glTextureStorage3D()`
28594	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureStorage3D.xhtml>
28595	pub texturestorage3d: PFNGLTEXTURESTORAGE3DPROC,
28596
28597	/// The function pointer to `glTextureStorage2DMultisample()`
28598	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureStorage2DMultisample.xhtml>
28599	pub texturestorage2dmultisample: PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC,
28600
28601	/// The function pointer to `glTextureStorage3DMultisample()`
28602	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureStorage3DMultisample.xhtml>
28603	pub texturestorage3dmultisample: PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC,
28604
28605	/// The function pointer to `glTextureSubImage1D()`
28606	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureSubImage1D.xhtml>
28607	pub texturesubimage1d: PFNGLTEXTURESUBIMAGE1DPROC,
28608
28609	/// The function pointer to `glTextureSubImage2D()`
28610	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureSubImage2D.xhtml>
28611	pub texturesubimage2d: PFNGLTEXTURESUBIMAGE2DPROC,
28612
28613	/// The function pointer to `glTextureSubImage3D()`
28614	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureSubImage3D.xhtml>
28615	pub texturesubimage3d: PFNGLTEXTURESUBIMAGE3DPROC,
28616
28617	/// The function pointer to `glCompressedTextureSubImage1D()`
28618	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTextureSubImage1D.xhtml>
28619	pub compressedtexturesubimage1d: PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC,
28620
28621	/// The function pointer to `glCompressedTextureSubImage2D()`
28622	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTextureSubImage2D.xhtml>
28623	pub compressedtexturesubimage2d: PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC,
28624
28625	/// The function pointer to `glCompressedTextureSubImage3D()`
28626	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTextureSubImage3D.xhtml>
28627	pub compressedtexturesubimage3d: PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC,
28628
28629	/// The function pointer to `glCopyTextureSubImage1D()`
28630	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTextureSubImage1D.xhtml>
28631	pub copytexturesubimage1d: PFNGLCOPYTEXTURESUBIMAGE1DPROC,
28632
28633	/// The function pointer to `glCopyTextureSubImage2D()`
28634	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTextureSubImage2D.xhtml>
28635	pub copytexturesubimage2d: PFNGLCOPYTEXTURESUBIMAGE2DPROC,
28636
28637	/// The function pointer to `glCopyTextureSubImage3D()`
28638	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTextureSubImage3D.xhtml>
28639	pub copytexturesubimage3d: PFNGLCOPYTEXTURESUBIMAGE3DPROC,
28640
28641	/// The function pointer to `glTextureParameterf()`
28642	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameterf.xhtml>
28643	pub textureparameterf: PFNGLTEXTUREPARAMETERFPROC,
28644
28645	/// The function pointer to `glTextureParameterfv()`
28646	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameterfv.xhtml>
28647	pub textureparameterfv: PFNGLTEXTUREPARAMETERFVPROC,
28648
28649	/// The function pointer to `glTextureParameteri()`
28650	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameteri.xhtml>
28651	pub textureparameteri: PFNGLTEXTUREPARAMETERIPROC,
28652
28653	/// The function pointer to `glTextureParameterIiv()`
28654	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameterIiv.xhtml>
28655	pub textureparameteriiv: PFNGLTEXTUREPARAMETERIIVPROC,
28656
28657	/// The function pointer to `glTextureParameterIuiv()`
28658	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameterIuiv.xhtml>
28659	pub textureparameteriuiv: PFNGLTEXTUREPARAMETERIUIVPROC,
28660
28661	/// The function pointer to `glTextureParameteriv()`
28662	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameteriv.xhtml>
28663	pub textureparameteriv: PFNGLTEXTUREPARAMETERIVPROC,
28664
28665	/// The function pointer to `glGenerateTextureMipmap()`
28666	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenerateTextureMipmap.xhtml>
28667	pub generatetexturemipmap: PFNGLGENERATETEXTUREMIPMAPPROC,
28668
28669	/// The function pointer to `glBindTextureUnit()`
28670	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindTextureUnit.xhtml>
28671	pub bindtextureunit: PFNGLBINDTEXTUREUNITPROC,
28672
28673	/// The function pointer to `glGetTextureImage()`
28674	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureImage.xhtml>
28675	pub gettextureimage: PFNGLGETTEXTUREIMAGEPROC,
28676
28677	/// The function pointer to `glGetCompressedTextureImage()`
28678	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetCompressedTextureImage.xhtml>
28679	pub getcompressedtextureimage: PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC,
28680
28681	/// The function pointer to `glGetTextureLevelParameterfv()`
28682	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureLevelParameterfv.xhtml>
28683	pub gettexturelevelparameterfv: PFNGLGETTEXTURELEVELPARAMETERFVPROC,
28684
28685	/// The function pointer to `glGetTextureLevelParameteriv()`
28686	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureLevelParameteriv.xhtml>
28687	pub gettexturelevelparameteriv: PFNGLGETTEXTURELEVELPARAMETERIVPROC,
28688
28689	/// The function pointer to `glGetTextureParameterfv()`
28690	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureParameterfv.xhtml>
28691	pub gettextureparameterfv: PFNGLGETTEXTUREPARAMETERFVPROC,
28692
28693	/// The function pointer to `glGetTextureParameterIiv()`
28694	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureParameterIiv.xhtml>
28695	pub gettextureparameteriiv: PFNGLGETTEXTUREPARAMETERIIVPROC,
28696
28697	/// The function pointer to `glGetTextureParameterIuiv()`
28698	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureParameterIuiv.xhtml>
28699	pub gettextureparameteriuiv: PFNGLGETTEXTUREPARAMETERIUIVPROC,
28700
28701	/// The function pointer to `glGetTextureParameteriv()`
28702	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureParameteriv.xhtml>
28703	pub gettextureparameteriv: PFNGLGETTEXTUREPARAMETERIVPROC,
28704
28705	/// The function pointer to `glCreateVertexArrays()`
28706	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateVertexArrays.xhtml>
28707	pub createvertexarrays: PFNGLCREATEVERTEXARRAYSPROC,
28708
28709	/// The function pointer to `glDisableVertexArrayAttrib()`
28710	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDisableVertexArrayAttrib.xhtml>
28711	pub disablevertexarrayattrib: PFNGLDISABLEVERTEXARRAYATTRIBPROC,
28712
28713	/// The function pointer to `glEnableVertexArrayAttrib()`
28714	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEnableVertexArrayAttrib.xhtml>
28715	pub enablevertexarrayattrib: PFNGLENABLEVERTEXARRAYATTRIBPROC,
28716
28717	/// The function pointer to `glVertexArrayElementBuffer()`
28718	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayElementBuffer.xhtml>
28719	pub vertexarrayelementbuffer: PFNGLVERTEXARRAYELEMENTBUFFERPROC,
28720
28721	/// The function pointer to `glVertexArrayVertexBuffer()`
28722	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayVertexBuffer.xhtml>
28723	pub vertexarrayvertexbuffer: PFNGLVERTEXARRAYVERTEXBUFFERPROC,
28724
28725	/// The function pointer to `glVertexArrayVertexBuffers()`
28726	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayVertexBuffers.xhtml>
28727	pub vertexarrayvertexbuffers: PFNGLVERTEXARRAYVERTEXBUFFERSPROC,
28728
28729	/// The function pointer to `glVertexArrayAttribBinding()`
28730	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayAttribBinding.xhtml>
28731	pub vertexarrayattribbinding: PFNGLVERTEXARRAYATTRIBBINDINGPROC,
28732
28733	/// The function pointer to `glVertexArrayAttribFormat()`
28734	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayAttribFormat.xhtml>
28735	pub vertexarrayattribformat: PFNGLVERTEXARRAYATTRIBFORMATPROC,
28736
28737	/// The function pointer to `glVertexArrayAttribIFormat()`
28738	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayAttribIFormat.xhtml>
28739	pub vertexarrayattribiformat: PFNGLVERTEXARRAYATTRIBIFORMATPROC,
28740
28741	/// The function pointer to `glVertexArrayAttribLFormat()`
28742	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayAttribLFormat.xhtml>
28743	pub vertexarrayattriblformat: PFNGLVERTEXARRAYATTRIBLFORMATPROC,
28744
28745	/// The function pointer to `glVertexArrayBindingDivisor()`
28746	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayBindingDivisor.xhtml>
28747	pub vertexarraybindingdivisor: PFNGLVERTEXARRAYBINDINGDIVISORPROC,
28748
28749	/// The function pointer to `glGetVertexArrayiv()`
28750	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexArrayiv.xhtml>
28751	pub getvertexarrayiv: PFNGLGETVERTEXARRAYIVPROC,
28752
28753	/// The function pointer to `glGetVertexArrayIndexediv()`
28754	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexArrayIndexediv.xhtml>
28755	pub getvertexarrayindexediv: PFNGLGETVERTEXARRAYINDEXEDIVPROC,
28756
28757	/// The function pointer to `glGetVertexArrayIndexed64iv()`
28758	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexArrayIndexed64iv.xhtml>
28759	pub getvertexarrayindexed64iv: PFNGLGETVERTEXARRAYINDEXED64IVPROC,
28760
28761	/// The function pointer to `glCreateSamplers()`
28762	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateSamplers.xhtml>
28763	pub createsamplers: PFNGLCREATESAMPLERSPROC,
28764
28765	/// The function pointer to `glCreateProgramPipelines()`
28766	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateProgramPipelines.xhtml>
28767	pub createprogrampipelines: PFNGLCREATEPROGRAMPIPELINESPROC,
28768
28769	/// The function pointer to `glCreateQueries()`
28770	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateQueries.xhtml>
28771	pub createqueries: PFNGLCREATEQUERIESPROC,
28772
28773	/// The function pointer to `glGetQueryBufferObjecti64v()`
28774	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryBufferObjecti64v.xhtml>
28775	pub getquerybufferobjecti64v: PFNGLGETQUERYBUFFEROBJECTI64VPROC,
28776
28777	/// The function pointer to `glGetQueryBufferObjectiv()`
28778	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryBufferObjectiv.xhtml>
28779	pub getquerybufferobjectiv: PFNGLGETQUERYBUFFEROBJECTIVPROC,
28780
28781	/// The function pointer to `glGetQueryBufferObjectui64v()`
28782	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryBufferObjectui64v.xhtml>
28783	pub getquerybufferobjectui64v: PFNGLGETQUERYBUFFEROBJECTUI64VPROC,
28784
28785	/// The function pointer to `glGetQueryBufferObjectuiv()`
28786	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryBufferObjectuiv.xhtml>
28787	pub getquerybufferobjectuiv: PFNGLGETQUERYBUFFEROBJECTUIVPROC,
28788
28789	/// The function pointer to `glMemoryBarrierByRegion()`
28790	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMemoryBarrierByRegion.xhtml>
28791	pub memorybarrierbyregion: PFNGLMEMORYBARRIERBYREGIONPROC,
28792
28793	/// The function pointer to `glGetTextureSubImage()`
28794	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureSubImage.xhtml>
28795	pub gettexturesubimage: PFNGLGETTEXTURESUBIMAGEPROC,
28796
28797	/// The function pointer to `glGetCompressedTextureSubImage()`
28798	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetCompressedTextureSubImage.xhtml>
28799	pub getcompressedtexturesubimage: PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC,
28800
28801	/// The function pointer to `glGetGraphicsResetStatus()`
28802	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetGraphicsResetStatus.xhtml>
28803	pub getgraphicsresetstatus: PFNGLGETGRAPHICSRESETSTATUSPROC,
28804
28805	/// The function pointer to `glGetnCompressedTexImage()`
28806	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnCompressedTexImage.xhtml>
28807	pub getncompressedteximage: PFNGLGETNCOMPRESSEDTEXIMAGEPROC,
28808
28809	/// The function pointer to `glGetnTexImage()`
28810	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnTexImage.xhtml>
28811	pub getnteximage: PFNGLGETNTEXIMAGEPROC,
28812
28813	/// The function pointer to `glGetnUniformdv()`
28814	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnUniformdv.xhtml>
28815	pub getnuniformdv: PFNGLGETNUNIFORMDVPROC,
28816
28817	/// The function pointer to `glGetnUniformfv()`
28818	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnUniformfv.xhtml>
28819	pub getnuniformfv: PFNGLGETNUNIFORMFVPROC,
28820
28821	/// The function pointer to `glGetnUniformiv()`
28822	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnUniformiv.xhtml>
28823	pub getnuniformiv: PFNGLGETNUNIFORMIVPROC,
28824
28825	/// The function pointer to `glGetnUniformuiv()`
28826	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnUniformuiv.xhtml>
28827	pub getnuniformuiv: PFNGLGETNUNIFORMUIVPROC,
28828
28829	/// The function pointer to `glReadnPixels()`
28830	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glReadnPixels.xhtml>
28831	pub readnpixels: PFNGLREADNPIXELSPROC,
28832
28833	/// The function pointer to `glGetnMapdv()`
28834	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnMapdv.xhtml>
28835	pub getnmapdv: PFNGLGETNMAPDVPROC,
28836
28837	/// The function pointer to `glGetnMapfv()`
28838	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnMapfv.xhtml>
28839	pub getnmapfv: PFNGLGETNMAPFVPROC,
28840
28841	/// The function pointer to `glGetnMapiv()`
28842	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnMapiv.xhtml>
28843	pub getnmapiv: PFNGLGETNMAPIVPROC,
28844
28845	/// The function pointer to `glGetnPixelMapfv()`
28846	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnPixelMapfv.xhtml>
28847	pub getnpixelmapfv: PFNGLGETNPIXELMAPFVPROC,
28848
28849	/// The function pointer to `glGetnPixelMapuiv()`
28850	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnPixelMapuiv.xhtml>
28851	pub getnpixelmapuiv: PFNGLGETNPIXELMAPUIVPROC,
28852
28853	/// The function pointer to `glGetnPixelMapusv()`
28854	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnPixelMapusv.xhtml>
28855	pub getnpixelmapusv: PFNGLGETNPIXELMAPUSVPROC,
28856
28857	/// The function pointer to `glGetnPolygonStipple()`
28858	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnPolygonStipple.xhtml>
28859	pub getnpolygonstipple: PFNGLGETNPOLYGONSTIPPLEPROC,
28860
28861	/// The function pointer to `glGetnColorTable()`
28862	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnColorTable.xhtml>
28863	pub getncolortable: PFNGLGETNCOLORTABLEPROC,
28864
28865	/// The function pointer to `glGetnConvolutionFilter()`
28866	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnConvolutionFilter.xhtml>
28867	pub getnconvolutionfilter: PFNGLGETNCONVOLUTIONFILTERPROC,
28868
28869	/// The function pointer to `glGetnSeparableFilter()`
28870	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnSeparableFilter.xhtml>
28871	pub getnseparablefilter: PFNGLGETNSEPARABLEFILTERPROC,
28872
28873	/// The function pointer to `glGetnHistogram()`
28874	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnHistogram.xhtml>
28875	pub getnhistogram: PFNGLGETNHISTOGRAMPROC,
28876
28877	/// The function pointer to `glGetnMinmax()`
28878	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnMinmax.xhtml>
28879	pub getnminmax: PFNGLGETNMINMAXPROC,
28880
28881	/// The function pointer to `glTextureBarrier()`
28882	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureBarrier.xhtml>
28883	pub texturebarrier: PFNGLTEXTUREBARRIERPROC,
28884}
28885
28886impl GL_4_5 for Version45 {
28887	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
28888	#[inline(always)]
28889	fn glGetError(&self) -> GLenum {
28890		(self.geterror)()
28891	}
28892	#[inline(always)]
28893	fn glClipControl(&self, origin: GLenum, depth: GLenum) -> Result<()> {
28894		#[cfg(feature = "catch_nullptr")]
28895		let ret = process_catch("glClipControl", catch_unwind(||(self.clipcontrol)(origin, depth)));
28896		#[cfg(not(feature = "catch_nullptr"))]
28897		let ret = {(self.clipcontrol)(origin, depth); Ok(())};
28898		#[cfg(feature = "diagnose")]
28899		if let Ok(ret) = ret {
28900			return to_result("glClipControl", ret, self.glGetError());
28901		} else {
28902			return ret
28903		}
28904		#[cfg(not(feature = "diagnose"))]
28905		return ret;
28906	}
28907	#[inline(always)]
28908	fn glCreateTransformFeedbacks(&self, n: GLsizei, ids: *mut GLuint) -> Result<()> {
28909		#[cfg(feature = "catch_nullptr")]
28910		let ret = process_catch("glCreateTransformFeedbacks", catch_unwind(||(self.createtransformfeedbacks)(n, ids)));
28911		#[cfg(not(feature = "catch_nullptr"))]
28912		let ret = {(self.createtransformfeedbacks)(n, ids); Ok(())};
28913		#[cfg(feature = "diagnose")]
28914		if let Ok(ret) = ret {
28915			return to_result("glCreateTransformFeedbacks", ret, self.glGetError());
28916		} else {
28917			return ret
28918		}
28919		#[cfg(not(feature = "diagnose"))]
28920		return ret;
28921	}
28922	#[inline(always)]
28923	fn glTransformFeedbackBufferBase(&self, xfb: GLuint, index: GLuint, buffer: GLuint) -> Result<()> {
28924		#[cfg(feature = "catch_nullptr")]
28925		let ret = process_catch("glTransformFeedbackBufferBase", catch_unwind(||(self.transformfeedbackbufferbase)(xfb, index, buffer)));
28926		#[cfg(not(feature = "catch_nullptr"))]
28927		let ret = {(self.transformfeedbackbufferbase)(xfb, index, buffer); Ok(())};
28928		#[cfg(feature = "diagnose")]
28929		if let Ok(ret) = ret {
28930			return to_result("glTransformFeedbackBufferBase", ret, self.glGetError());
28931		} else {
28932			return ret
28933		}
28934		#[cfg(not(feature = "diagnose"))]
28935		return ret;
28936	}
28937	#[inline(always)]
28938	fn glTransformFeedbackBufferRange(&self, xfb: GLuint, index: GLuint, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()> {
28939		#[cfg(feature = "catch_nullptr")]
28940		let ret = process_catch("glTransformFeedbackBufferRange", catch_unwind(||(self.transformfeedbackbufferrange)(xfb, index, buffer, offset, size)));
28941		#[cfg(not(feature = "catch_nullptr"))]
28942		let ret = {(self.transformfeedbackbufferrange)(xfb, index, buffer, offset, size); Ok(())};
28943		#[cfg(feature = "diagnose")]
28944		if let Ok(ret) = ret {
28945			return to_result("glTransformFeedbackBufferRange", ret, self.glGetError());
28946		} else {
28947			return ret
28948		}
28949		#[cfg(not(feature = "diagnose"))]
28950		return ret;
28951	}
28952	#[inline(always)]
28953	fn glGetTransformFeedbackiv(&self, xfb: GLuint, pname: GLenum, param: *mut GLint) -> Result<()> {
28954		#[cfg(feature = "catch_nullptr")]
28955		let ret = process_catch("glGetTransformFeedbackiv", catch_unwind(||(self.gettransformfeedbackiv)(xfb, pname, param)));
28956		#[cfg(not(feature = "catch_nullptr"))]
28957		let ret = {(self.gettransformfeedbackiv)(xfb, pname, param); Ok(())};
28958		#[cfg(feature = "diagnose")]
28959		if let Ok(ret) = ret {
28960			return to_result("glGetTransformFeedbackiv", ret, self.glGetError());
28961		} else {
28962			return ret
28963		}
28964		#[cfg(not(feature = "diagnose"))]
28965		return ret;
28966	}
28967	#[inline(always)]
28968	fn glGetTransformFeedbacki_v(&self, xfb: GLuint, pname: GLenum, index: GLuint, param: *mut GLint) -> Result<()> {
28969		#[cfg(feature = "catch_nullptr")]
28970		let ret = process_catch("glGetTransformFeedbacki_v", catch_unwind(||(self.gettransformfeedbacki_v)(xfb, pname, index, param)));
28971		#[cfg(not(feature = "catch_nullptr"))]
28972		let ret = {(self.gettransformfeedbacki_v)(xfb, pname, index, param); Ok(())};
28973		#[cfg(feature = "diagnose")]
28974		if let Ok(ret) = ret {
28975			return to_result("glGetTransformFeedbacki_v", ret, self.glGetError());
28976		} else {
28977			return ret
28978		}
28979		#[cfg(not(feature = "diagnose"))]
28980		return ret;
28981	}
28982	#[inline(always)]
28983	fn glGetTransformFeedbacki64_v(&self, xfb: GLuint, pname: GLenum, index: GLuint, param: *mut GLint64) -> Result<()> {
28984		#[cfg(feature = "catch_nullptr")]
28985		let ret = process_catch("glGetTransformFeedbacki64_v", catch_unwind(||(self.gettransformfeedbacki64_v)(xfb, pname, index, param)));
28986		#[cfg(not(feature = "catch_nullptr"))]
28987		let ret = {(self.gettransformfeedbacki64_v)(xfb, pname, index, param); Ok(())};
28988		#[cfg(feature = "diagnose")]
28989		if let Ok(ret) = ret {
28990			return to_result("glGetTransformFeedbacki64_v", ret, self.glGetError());
28991		} else {
28992			return ret
28993		}
28994		#[cfg(not(feature = "diagnose"))]
28995		return ret;
28996	}
28997	#[inline(always)]
28998	fn glCreateBuffers(&self, n: GLsizei, buffers: *mut GLuint) -> Result<()> {
28999		#[cfg(feature = "catch_nullptr")]
29000		let ret = process_catch("glCreateBuffers", catch_unwind(||(self.createbuffers)(n, buffers)));
29001		#[cfg(not(feature = "catch_nullptr"))]
29002		let ret = {(self.createbuffers)(n, buffers); Ok(())};
29003		#[cfg(feature = "diagnose")]
29004		if let Ok(ret) = ret {
29005			return to_result("glCreateBuffers", ret, self.glGetError());
29006		} else {
29007			return ret
29008		}
29009		#[cfg(not(feature = "diagnose"))]
29010		return ret;
29011	}
29012	#[inline(always)]
29013	fn glNamedBufferStorage(&self, buffer: GLuint, size: GLsizeiptr, data: *const c_void, flags: GLbitfield) -> Result<()> {
29014		#[cfg(feature = "catch_nullptr")]
29015		let ret = process_catch("glNamedBufferStorage", catch_unwind(||(self.namedbufferstorage)(buffer, size, data, flags)));
29016		#[cfg(not(feature = "catch_nullptr"))]
29017		let ret = {(self.namedbufferstorage)(buffer, size, data, flags); Ok(())};
29018		#[cfg(feature = "diagnose")]
29019		if let Ok(ret) = ret {
29020			return to_result("glNamedBufferStorage", ret, self.glGetError());
29021		} else {
29022			return ret
29023		}
29024		#[cfg(not(feature = "diagnose"))]
29025		return ret;
29026	}
29027	#[inline(always)]
29028	fn glNamedBufferData(&self, buffer: GLuint, size: GLsizeiptr, data: *const c_void, usage: GLenum) -> Result<()> {
29029		#[cfg(feature = "catch_nullptr")]
29030		let ret = process_catch("glNamedBufferData", catch_unwind(||(self.namedbufferdata)(buffer, size, data, usage)));
29031		#[cfg(not(feature = "catch_nullptr"))]
29032		let ret = {(self.namedbufferdata)(buffer, size, data, usage); Ok(())};
29033		#[cfg(feature = "diagnose")]
29034		if let Ok(ret) = ret {
29035			return to_result("glNamedBufferData", ret, self.glGetError());
29036		} else {
29037			return ret
29038		}
29039		#[cfg(not(feature = "diagnose"))]
29040		return ret;
29041	}
29042	#[inline(always)]
29043	fn glNamedBufferSubData(&self, buffer: GLuint, offset: GLintptr, size: GLsizeiptr, data: *const c_void) -> Result<()> {
29044		#[cfg(feature = "catch_nullptr")]
29045		let ret = process_catch("glNamedBufferSubData", catch_unwind(||(self.namedbuffersubdata)(buffer, offset, size, data)));
29046		#[cfg(not(feature = "catch_nullptr"))]
29047		let ret = {(self.namedbuffersubdata)(buffer, offset, size, data); Ok(())};
29048		#[cfg(feature = "diagnose")]
29049		if let Ok(ret) = ret {
29050			return to_result("glNamedBufferSubData", ret, self.glGetError());
29051		} else {
29052			return ret
29053		}
29054		#[cfg(not(feature = "diagnose"))]
29055		return ret;
29056	}
29057	#[inline(always)]
29058	fn glCopyNamedBufferSubData(&self, readBuffer: GLuint, writeBuffer: GLuint, readOffset: GLintptr, writeOffset: GLintptr, size: GLsizeiptr) -> Result<()> {
29059		#[cfg(feature = "catch_nullptr")]
29060		let ret = process_catch("glCopyNamedBufferSubData", catch_unwind(||(self.copynamedbuffersubdata)(readBuffer, writeBuffer, readOffset, writeOffset, size)));
29061		#[cfg(not(feature = "catch_nullptr"))]
29062		let ret = {(self.copynamedbuffersubdata)(readBuffer, writeBuffer, readOffset, writeOffset, size); Ok(())};
29063		#[cfg(feature = "diagnose")]
29064		if let Ok(ret) = ret {
29065			return to_result("glCopyNamedBufferSubData", ret, self.glGetError());
29066		} else {
29067			return ret
29068		}
29069		#[cfg(not(feature = "diagnose"))]
29070		return ret;
29071	}
29072	#[inline(always)]
29073	fn glClearNamedBufferData(&self, buffer: GLuint, internalformat: GLenum, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()> {
29074		#[cfg(feature = "catch_nullptr")]
29075		let ret = process_catch("glClearNamedBufferData", catch_unwind(||(self.clearnamedbufferdata)(buffer, internalformat, format, type_, data)));
29076		#[cfg(not(feature = "catch_nullptr"))]
29077		let ret = {(self.clearnamedbufferdata)(buffer, internalformat, format, type_, data); Ok(())};
29078		#[cfg(feature = "diagnose")]
29079		if let Ok(ret) = ret {
29080			return to_result("glClearNamedBufferData", ret, self.glGetError());
29081		} else {
29082			return ret
29083		}
29084		#[cfg(not(feature = "diagnose"))]
29085		return ret;
29086	}
29087	#[inline(always)]
29088	fn glClearNamedBufferSubData(&self, buffer: GLuint, internalformat: GLenum, offset: GLintptr, size: GLsizeiptr, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()> {
29089		#[cfg(feature = "catch_nullptr")]
29090		let ret = process_catch("glClearNamedBufferSubData", catch_unwind(||(self.clearnamedbuffersubdata)(buffer, internalformat, offset, size, format, type_, data)));
29091		#[cfg(not(feature = "catch_nullptr"))]
29092		let ret = {(self.clearnamedbuffersubdata)(buffer, internalformat, offset, size, format, type_, data); Ok(())};
29093		#[cfg(feature = "diagnose")]
29094		if let Ok(ret) = ret {
29095			return to_result("glClearNamedBufferSubData", ret, self.glGetError());
29096		} else {
29097			return ret
29098		}
29099		#[cfg(not(feature = "diagnose"))]
29100		return ret;
29101	}
29102	#[inline(always)]
29103	fn glMapNamedBuffer(&self, buffer: GLuint, access: GLenum) -> Result<*mut c_void> {
29104		#[cfg(feature = "catch_nullptr")]
29105		let ret = process_catch("glMapNamedBuffer", catch_unwind(||(self.mapnamedbuffer)(buffer, access)));
29106		#[cfg(not(feature = "catch_nullptr"))]
29107		let ret = Ok((self.mapnamedbuffer)(buffer, access));
29108		#[cfg(feature = "diagnose")]
29109		if let Ok(ret) = ret {
29110			return to_result("glMapNamedBuffer", ret, self.glGetError());
29111		} else {
29112			return ret
29113		}
29114		#[cfg(not(feature = "diagnose"))]
29115		return ret;
29116	}
29117	#[inline(always)]
29118	fn glMapNamedBufferRange(&self, buffer: GLuint, offset: GLintptr, length: GLsizeiptr, access: GLbitfield) -> Result<*mut c_void> {
29119		#[cfg(feature = "catch_nullptr")]
29120		let ret = process_catch("glMapNamedBufferRange", catch_unwind(||(self.mapnamedbufferrange)(buffer, offset, length, access)));
29121		#[cfg(not(feature = "catch_nullptr"))]
29122		let ret = Ok((self.mapnamedbufferrange)(buffer, offset, length, access));
29123		#[cfg(feature = "diagnose")]
29124		if let Ok(ret) = ret {
29125			return to_result("glMapNamedBufferRange", ret, self.glGetError());
29126		} else {
29127			return ret
29128		}
29129		#[cfg(not(feature = "diagnose"))]
29130		return ret;
29131	}
29132	#[inline(always)]
29133	fn glUnmapNamedBuffer(&self, buffer: GLuint) -> Result<GLboolean> {
29134		#[cfg(feature = "catch_nullptr")]
29135		let ret = process_catch("glUnmapNamedBuffer", catch_unwind(||(self.unmapnamedbuffer)(buffer)));
29136		#[cfg(not(feature = "catch_nullptr"))]
29137		let ret = Ok((self.unmapnamedbuffer)(buffer));
29138		#[cfg(feature = "diagnose")]
29139		if let Ok(ret) = ret {
29140			return to_result("glUnmapNamedBuffer", ret, self.glGetError());
29141		} else {
29142			return ret
29143		}
29144		#[cfg(not(feature = "diagnose"))]
29145		return ret;
29146	}
29147	#[inline(always)]
29148	fn glFlushMappedNamedBufferRange(&self, buffer: GLuint, offset: GLintptr, length: GLsizeiptr) -> Result<()> {
29149		#[cfg(feature = "catch_nullptr")]
29150		let ret = process_catch("glFlushMappedNamedBufferRange", catch_unwind(||(self.flushmappednamedbufferrange)(buffer, offset, length)));
29151		#[cfg(not(feature = "catch_nullptr"))]
29152		let ret = {(self.flushmappednamedbufferrange)(buffer, offset, length); Ok(())};
29153		#[cfg(feature = "diagnose")]
29154		if let Ok(ret) = ret {
29155			return to_result("glFlushMappedNamedBufferRange", ret, self.glGetError());
29156		} else {
29157			return ret
29158		}
29159		#[cfg(not(feature = "diagnose"))]
29160		return ret;
29161	}
29162	#[inline(always)]
29163	fn glGetNamedBufferParameteriv(&self, buffer: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
29164		#[cfg(feature = "catch_nullptr")]
29165		let ret = process_catch("glGetNamedBufferParameteriv", catch_unwind(||(self.getnamedbufferparameteriv)(buffer, pname, params)));
29166		#[cfg(not(feature = "catch_nullptr"))]
29167		let ret = {(self.getnamedbufferparameteriv)(buffer, pname, params); Ok(())};
29168		#[cfg(feature = "diagnose")]
29169		if let Ok(ret) = ret {
29170			return to_result("glGetNamedBufferParameteriv", ret, self.glGetError());
29171		} else {
29172			return ret
29173		}
29174		#[cfg(not(feature = "diagnose"))]
29175		return ret;
29176	}
29177	#[inline(always)]
29178	fn glGetNamedBufferParameteri64v(&self, buffer: GLuint, pname: GLenum, params: *mut GLint64) -> Result<()> {
29179		#[cfg(feature = "catch_nullptr")]
29180		let ret = process_catch("glGetNamedBufferParameteri64v", catch_unwind(||(self.getnamedbufferparameteri64v)(buffer, pname, params)));
29181		#[cfg(not(feature = "catch_nullptr"))]
29182		let ret = {(self.getnamedbufferparameteri64v)(buffer, pname, params); Ok(())};
29183		#[cfg(feature = "diagnose")]
29184		if let Ok(ret) = ret {
29185			return to_result("glGetNamedBufferParameteri64v", ret, self.glGetError());
29186		} else {
29187			return ret
29188		}
29189		#[cfg(not(feature = "diagnose"))]
29190		return ret;
29191	}
29192	#[inline(always)]
29193	fn glGetNamedBufferPointerv(&self, buffer: GLuint, pname: GLenum, params: *mut *mut c_void) -> Result<()> {
29194		#[cfg(feature = "catch_nullptr")]
29195		let ret = process_catch("glGetNamedBufferPointerv", catch_unwind(||(self.getnamedbufferpointerv)(buffer, pname, params)));
29196		#[cfg(not(feature = "catch_nullptr"))]
29197		let ret = {(self.getnamedbufferpointerv)(buffer, pname, params); Ok(())};
29198		#[cfg(feature = "diagnose")]
29199		if let Ok(ret) = ret {
29200			return to_result("glGetNamedBufferPointerv", ret, self.glGetError());
29201		} else {
29202			return ret
29203		}
29204		#[cfg(not(feature = "diagnose"))]
29205		return ret;
29206	}
29207	#[inline(always)]
29208	fn glGetNamedBufferSubData(&self, buffer: GLuint, offset: GLintptr, size: GLsizeiptr, data: *mut c_void) -> Result<()> {
29209		#[cfg(feature = "catch_nullptr")]
29210		let ret = process_catch("glGetNamedBufferSubData", catch_unwind(||(self.getnamedbuffersubdata)(buffer, offset, size, data)));
29211		#[cfg(not(feature = "catch_nullptr"))]
29212		let ret = {(self.getnamedbuffersubdata)(buffer, offset, size, data); Ok(())};
29213		#[cfg(feature = "diagnose")]
29214		if let Ok(ret) = ret {
29215			return to_result("glGetNamedBufferSubData", ret, self.glGetError());
29216		} else {
29217			return ret
29218		}
29219		#[cfg(not(feature = "diagnose"))]
29220		return ret;
29221	}
29222	#[inline(always)]
29223	fn glCreateFramebuffers(&self, n: GLsizei, framebuffers: *mut GLuint) -> Result<()> {
29224		#[cfg(feature = "catch_nullptr")]
29225		let ret = process_catch("glCreateFramebuffers", catch_unwind(||(self.createframebuffers)(n, framebuffers)));
29226		#[cfg(not(feature = "catch_nullptr"))]
29227		let ret = {(self.createframebuffers)(n, framebuffers); Ok(())};
29228		#[cfg(feature = "diagnose")]
29229		if let Ok(ret) = ret {
29230			return to_result("glCreateFramebuffers", ret, self.glGetError());
29231		} else {
29232			return ret
29233		}
29234		#[cfg(not(feature = "diagnose"))]
29235		return ret;
29236	}
29237	#[inline(always)]
29238	fn glNamedFramebufferRenderbuffer(&self, framebuffer: GLuint, attachment: GLenum, renderbuffertarget: GLenum, renderbuffer: GLuint) -> Result<()> {
29239		#[cfg(feature = "catch_nullptr")]
29240		let ret = process_catch("glNamedFramebufferRenderbuffer", catch_unwind(||(self.namedframebufferrenderbuffer)(framebuffer, attachment, renderbuffertarget, renderbuffer)));
29241		#[cfg(not(feature = "catch_nullptr"))]
29242		let ret = {(self.namedframebufferrenderbuffer)(framebuffer, attachment, renderbuffertarget, renderbuffer); Ok(())};
29243		#[cfg(feature = "diagnose")]
29244		if let Ok(ret) = ret {
29245			return to_result("glNamedFramebufferRenderbuffer", ret, self.glGetError());
29246		} else {
29247			return ret
29248		}
29249		#[cfg(not(feature = "diagnose"))]
29250		return ret;
29251	}
29252	#[inline(always)]
29253	fn glNamedFramebufferParameteri(&self, framebuffer: GLuint, pname: GLenum, param: GLint) -> Result<()> {
29254		#[cfg(feature = "catch_nullptr")]
29255		let ret = process_catch("glNamedFramebufferParameteri", catch_unwind(||(self.namedframebufferparameteri)(framebuffer, pname, param)));
29256		#[cfg(not(feature = "catch_nullptr"))]
29257		let ret = {(self.namedframebufferparameteri)(framebuffer, pname, param); Ok(())};
29258		#[cfg(feature = "diagnose")]
29259		if let Ok(ret) = ret {
29260			return to_result("glNamedFramebufferParameteri", ret, self.glGetError());
29261		} else {
29262			return ret
29263		}
29264		#[cfg(not(feature = "diagnose"))]
29265		return ret;
29266	}
29267	#[inline(always)]
29268	fn glNamedFramebufferTexture(&self, framebuffer: GLuint, attachment: GLenum, texture: GLuint, level: GLint) -> Result<()> {
29269		#[cfg(feature = "catch_nullptr")]
29270		let ret = process_catch("glNamedFramebufferTexture", catch_unwind(||(self.namedframebuffertexture)(framebuffer, attachment, texture, level)));
29271		#[cfg(not(feature = "catch_nullptr"))]
29272		let ret = {(self.namedframebuffertexture)(framebuffer, attachment, texture, level); Ok(())};
29273		#[cfg(feature = "diagnose")]
29274		if let Ok(ret) = ret {
29275			return to_result("glNamedFramebufferTexture", ret, self.glGetError());
29276		} else {
29277			return ret
29278		}
29279		#[cfg(not(feature = "diagnose"))]
29280		return ret;
29281	}
29282	#[inline(always)]
29283	fn glNamedFramebufferTextureLayer(&self, framebuffer: GLuint, attachment: GLenum, texture: GLuint, level: GLint, layer: GLint) -> Result<()> {
29284		#[cfg(feature = "catch_nullptr")]
29285		let ret = process_catch("glNamedFramebufferTextureLayer", catch_unwind(||(self.namedframebuffertexturelayer)(framebuffer, attachment, texture, level, layer)));
29286		#[cfg(not(feature = "catch_nullptr"))]
29287		let ret = {(self.namedframebuffertexturelayer)(framebuffer, attachment, texture, level, layer); Ok(())};
29288		#[cfg(feature = "diagnose")]
29289		if let Ok(ret) = ret {
29290			return to_result("glNamedFramebufferTextureLayer", ret, self.glGetError());
29291		} else {
29292			return ret
29293		}
29294		#[cfg(not(feature = "diagnose"))]
29295		return ret;
29296	}
29297	#[inline(always)]
29298	fn glNamedFramebufferDrawBuffer(&self, framebuffer: GLuint, buf: GLenum) -> Result<()> {
29299		#[cfg(feature = "catch_nullptr")]
29300		let ret = process_catch("glNamedFramebufferDrawBuffer", catch_unwind(||(self.namedframebufferdrawbuffer)(framebuffer, buf)));
29301		#[cfg(not(feature = "catch_nullptr"))]
29302		let ret = {(self.namedframebufferdrawbuffer)(framebuffer, buf); Ok(())};
29303		#[cfg(feature = "diagnose")]
29304		if let Ok(ret) = ret {
29305			return to_result("glNamedFramebufferDrawBuffer", ret, self.glGetError());
29306		} else {
29307			return ret
29308		}
29309		#[cfg(not(feature = "diagnose"))]
29310		return ret;
29311	}
29312	#[inline(always)]
29313	fn glNamedFramebufferDrawBuffers(&self, framebuffer: GLuint, n: GLsizei, bufs: *const GLenum) -> Result<()> {
29314		#[cfg(feature = "catch_nullptr")]
29315		let ret = process_catch("glNamedFramebufferDrawBuffers", catch_unwind(||(self.namedframebufferdrawbuffers)(framebuffer, n, bufs)));
29316		#[cfg(not(feature = "catch_nullptr"))]
29317		let ret = {(self.namedframebufferdrawbuffers)(framebuffer, n, bufs); Ok(())};
29318		#[cfg(feature = "diagnose")]
29319		if let Ok(ret) = ret {
29320			return to_result("glNamedFramebufferDrawBuffers", ret, self.glGetError());
29321		} else {
29322			return ret
29323		}
29324		#[cfg(not(feature = "diagnose"))]
29325		return ret;
29326	}
29327	#[inline(always)]
29328	fn glNamedFramebufferReadBuffer(&self, framebuffer: GLuint, src: GLenum) -> Result<()> {
29329		#[cfg(feature = "catch_nullptr")]
29330		let ret = process_catch("glNamedFramebufferReadBuffer", catch_unwind(||(self.namedframebufferreadbuffer)(framebuffer, src)));
29331		#[cfg(not(feature = "catch_nullptr"))]
29332		let ret = {(self.namedframebufferreadbuffer)(framebuffer, src); Ok(())};
29333		#[cfg(feature = "diagnose")]
29334		if let Ok(ret) = ret {
29335			return to_result("glNamedFramebufferReadBuffer", ret, self.glGetError());
29336		} else {
29337			return ret
29338		}
29339		#[cfg(not(feature = "diagnose"))]
29340		return ret;
29341	}
29342	#[inline(always)]
29343	fn glInvalidateNamedFramebufferData(&self, framebuffer: GLuint, numAttachments: GLsizei, attachments: *const GLenum) -> Result<()> {
29344		#[cfg(feature = "catch_nullptr")]
29345		let ret = process_catch("glInvalidateNamedFramebufferData", catch_unwind(||(self.invalidatenamedframebufferdata)(framebuffer, numAttachments, attachments)));
29346		#[cfg(not(feature = "catch_nullptr"))]
29347		let ret = {(self.invalidatenamedframebufferdata)(framebuffer, numAttachments, attachments); Ok(())};
29348		#[cfg(feature = "diagnose")]
29349		if let Ok(ret) = ret {
29350			return to_result("glInvalidateNamedFramebufferData", ret, self.glGetError());
29351		} else {
29352			return ret
29353		}
29354		#[cfg(not(feature = "diagnose"))]
29355		return ret;
29356	}
29357	#[inline(always)]
29358	fn glInvalidateNamedFramebufferSubData(&self, framebuffer: GLuint, numAttachments: GLsizei, attachments: *const GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
29359		#[cfg(feature = "catch_nullptr")]
29360		let ret = process_catch("glInvalidateNamedFramebufferSubData", catch_unwind(||(self.invalidatenamedframebuffersubdata)(framebuffer, numAttachments, attachments, x, y, width, height)));
29361		#[cfg(not(feature = "catch_nullptr"))]
29362		let ret = {(self.invalidatenamedframebuffersubdata)(framebuffer, numAttachments, attachments, x, y, width, height); Ok(())};
29363		#[cfg(feature = "diagnose")]
29364		if let Ok(ret) = ret {
29365			return to_result("glInvalidateNamedFramebufferSubData", ret, self.glGetError());
29366		} else {
29367			return ret
29368		}
29369		#[cfg(not(feature = "diagnose"))]
29370		return ret;
29371	}
29372	#[inline(always)]
29373	fn glClearNamedFramebufferiv(&self, framebuffer: GLuint, buffer: GLenum, drawbuffer: GLint, value: *const GLint) -> Result<()> {
29374		#[cfg(feature = "catch_nullptr")]
29375		let ret = process_catch("glClearNamedFramebufferiv", catch_unwind(||(self.clearnamedframebufferiv)(framebuffer, buffer, drawbuffer, value)));
29376		#[cfg(not(feature = "catch_nullptr"))]
29377		let ret = {(self.clearnamedframebufferiv)(framebuffer, buffer, drawbuffer, value); Ok(())};
29378		#[cfg(feature = "diagnose")]
29379		if let Ok(ret) = ret {
29380			return to_result("glClearNamedFramebufferiv", ret, self.glGetError());
29381		} else {
29382			return ret
29383		}
29384		#[cfg(not(feature = "diagnose"))]
29385		return ret;
29386	}
29387	#[inline(always)]
29388	fn glClearNamedFramebufferuiv(&self, framebuffer: GLuint, buffer: GLenum, drawbuffer: GLint, value: *const GLuint) -> Result<()> {
29389		#[cfg(feature = "catch_nullptr")]
29390		let ret = process_catch("glClearNamedFramebufferuiv", catch_unwind(||(self.clearnamedframebufferuiv)(framebuffer, buffer, drawbuffer, value)));
29391		#[cfg(not(feature = "catch_nullptr"))]
29392		let ret = {(self.clearnamedframebufferuiv)(framebuffer, buffer, drawbuffer, value); Ok(())};
29393		#[cfg(feature = "diagnose")]
29394		if let Ok(ret) = ret {
29395			return to_result("glClearNamedFramebufferuiv", ret, self.glGetError());
29396		} else {
29397			return ret
29398		}
29399		#[cfg(not(feature = "diagnose"))]
29400		return ret;
29401	}
29402	#[inline(always)]
29403	fn glClearNamedFramebufferfv(&self, framebuffer: GLuint, buffer: GLenum, drawbuffer: GLint, value: *const GLfloat) -> Result<()> {
29404		#[cfg(feature = "catch_nullptr")]
29405		let ret = process_catch("glClearNamedFramebufferfv", catch_unwind(||(self.clearnamedframebufferfv)(framebuffer, buffer, drawbuffer, value)));
29406		#[cfg(not(feature = "catch_nullptr"))]
29407		let ret = {(self.clearnamedframebufferfv)(framebuffer, buffer, drawbuffer, value); Ok(())};
29408		#[cfg(feature = "diagnose")]
29409		if let Ok(ret) = ret {
29410			return to_result("glClearNamedFramebufferfv", ret, self.glGetError());
29411		} else {
29412			return ret
29413		}
29414		#[cfg(not(feature = "diagnose"))]
29415		return ret;
29416	}
29417	#[inline(always)]
29418	fn glClearNamedFramebufferfi(&self, framebuffer: GLuint, buffer: GLenum, drawbuffer: GLint, depth: GLfloat, stencil: GLint) -> Result<()> {
29419		#[cfg(feature = "catch_nullptr")]
29420		let ret = process_catch("glClearNamedFramebufferfi", catch_unwind(||(self.clearnamedframebufferfi)(framebuffer, buffer, drawbuffer, depth, stencil)));
29421		#[cfg(not(feature = "catch_nullptr"))]
29422		let ret = {(self.clearnamedframebufferfi)(framebuffer, buffer, drawbuffer, depth, stencil); Ok(())};
29423		#[cfg(feature = "diagnose")]
29424		if let Ok(ret) = ret {
29425			return to_result("glClearNamedFramebufferfi", ret, self.glGetError());
29426		} else {
29427			return ret
29428		}
29429		#[cfg(not(feature = "diagnose"))]
29430		return ret;
29431	}
29432	#[inline(always)]
29433	fn glBlitNamedFramebuffer(&self, readFramebuffer: GLuint, drawFramebuffer: GLuint, srcX0: GLint, srcY0: GLint, srcX1: GLint, srcY1: GLint, dstX0: GLint, dstY0: GLint, dstX1: GLint, dstY1: GLint, mask: GLbitfield, filter: GLenum) -> Result<()> {
29434		#[cfg(feature = "catch_nullptr")]
29435		let ret = process_catch("glBlitNamedFramebuffer", catch_unwind(||(self.blitnamedframebuffer)(readFramebuffer, drawFramebuffer, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter)));
29436		#[cfg(not(feature = "catch_nullptr"))]
29437		let ret = {(self.blitnamedframebuffer)(readFramebuffer, drawFramebuffer, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); Ok(())};
29438		#[cfg(feature = "diagnose")]
29439		if let Ok(ret) = ret {
29440			return to_result("glBlitNamedFramebuffer", ret, self.glGetError());
29441		} else {
29442			return ret
29443		}
29444		#[cfg(not(feature = "diagnose"))]
29445		return ret;
29446	}
29447	#[inline(always)]
29448	fn glCheckNamedFramebufferStatus(&self, framebuffer: GLuint, target: GLenum) -> Result<GLenum> {
29449		#[cfg(feature = "catch_nullptr")]
29450		let ret = process_catch("glCheckNamedFramebufferStatus", catch_unwind(||(self.checknamedframebufferstatus)(framebuffer, target)));
29451		#[cfg(not(feature = "catch_nullptr"))]
29452		let ret = Ok((self.checknamedframebufferstatus)(framebuffer, target));
29453		#[cfg(feature = "diagnose")]
29454		if let Ok(ret) = ret {
29455			return to_result("glCheckNamedFramebufferStatus", ret, self.glGetError());
29456		} else {
29457			return ret
29458		}
29459		#[cfg(not(feature = "diagnose"))]
29460		return ret;
29461	}
29462	#[inline(always)]
29463	fn glGetNamedFramebufferParameteriv(&self, framebuffer: GLuint, pname: GLenum, param: *mut GLint) -> Result<()> {
29464		#[cfg(feature = "catch_nullptr")]
29465		let ret = process_catch("glGetNamedFramebufferParameteriv", catch_unwind(||(self.getnamedframebufferparameteriv)(framebuffer, pname, param)));
29466		#[cfg(not(feature = "catch_nullptr"))]
29467		let ret = {(self.getnamedframebufferparameteriv)(framebuffer, pname, param); Ok(())};
29468		#[cfg(feature = "diagnose")]
29469		if let Ok(ret) = ret {
29470			return to_result("glGetNamedFramebufferParameteriv", ret, self.glGetError());
29471		} else {
29472			return ret
29473		}
29474		#[cfg(not(feature = "diagnose"))]
29475		return ret;
29476	}
29477	#[inline(always)]
29478	fn glGetNamedFramebufferAttachmentParameteriv(&self, framebuffer: GLuint, attachment: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
29479		#[cfg(feature = "catch_nullptr")]
29480		let ret = process_catch("glGetNamedFramebufferAttachmentParameteriv", catch_unwind(||(self.getnamedframebufferattachmentparameteriv)(framebuffer, attachment, pname, params)));
29481		#[cfg(not(feature = "catch_nullptr"))]
29482		let ret = {(self.getnamedframebufferattachmentparameteriv)(framebuffer, attachment, pname, params); Ok(())};
29483		#[cfg(feature = "diagnose")]
29484		if let Ok(ret) = ret {
29485			return to_result("glGetNamedFramebufferAttachmentParameteriv", ret, self.glGetError());
29486		} else {
29487			return ret
29488		}
29489		#[cfg(not(feature = "diagnose"))]
29490		return ret;
29491	}
29492	#[inline(always)]
29493	fn glCreateRenderbuffers(&self, n: GLsizei, renderbuffers: *mut GLuint) -> Result<()> {
29494		#[cfg(feature = "catch_nullptr")]
29495		let ret = process_catch("glCreateRenderbuffers", catch_unwind(||(self.createrenderbuffers)(n, renderbuffers)));
29496		#[cfg(not(feature = "catch_nullptr"))]
29497		let ret = {(self.createrenderbuffers)(n, renderbuffers); Ok(())};
29498		#[cfg(feature = "diagnose")]
29499		if let Ok(ret) = ret {
29500			return to_result("glCreateRenderbuffers", ret, self.glGetError());
29501		} else {
29502			return ret
29503		}
29504		#[cfg(not(feature = "diagnose"))]
29505		return ret;
29506	}
29507	#[inline(always)]
29508	fn glNamedRenderbufferStorage(&self, renderbuffer: GLuint, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()> {
29509		#[cfg(feature = "catch_nullptr")]
29510		let ret = process_catch("glNamedRenderbufferStorage", catch_unwind(||(self.namedrenderbufferstorage)(renderbuffer, internalformat, width, height)));
29511		#[cfg(not(feature = "catch_nullptr"))]
29512		let ret = {(self.namedrenderbufferstorage)(renderbuffer, internalformat, width, height); Ok(())};
29513		#[cfg(feature = "diagnose")]
29514		if let Ok(ret) = ret {
29515			return to_result("glNamedRenderbufferStorage", ret, self.glGetError());
29516		} else {
29517			return ret
29518		}
29519		#[cfg(not(feature = "diagnose"))]
29520		return ret;
29521	}
29522	#[inline(always)]
29523	fn glNamedRenderbufferStorageMultisample(&self, renderbuffer: GLuint, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()> {
29524		#[cfg(feature = "catch_nullptr")]
29525		let ret = process_catch("glNamedRenderbufferStorageMultisample", catch_unwind(||(self.namedrenderbufferstoragemultisample)(renderbuffer, samples, internalformat, width, height)));
29526		#[cfg(not(feature = "catch_nullptr"))]
29527		let ret = {(self.namedrenderbufferstoragemultisample)(renderbuffer, samples, internalformat, width, height); Ok(())};
29528		#[cfg(feature = "diagnose")]
29529		if let Ok(ret) = ret {
29530			return to_result("glNamedRenderbufferStorageMultisample", ret, self.glGetError());
29531		} else {
29532			return ret
29533		}
29534		#[cfg(not(feature = "diagnose"))]
29535		return ret;
29536	}
29537	#[inline(always)]
29538	fn glGetNamedRenderbufferParameteriv(&self, renderbuffer: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
29539		#[cfg(feature = "catch_nullptr")]
29540		let ret = process_catch("glGetNamedRenderbufferParameteriv", catch_unwind(||(self.getnamedrenderbufferparameteriv)(renderbuffer, pname, params)));
29541		#[cfg(not(feature = "catch_nullptr"))]
29542		let ret = {(self.getnamedrenderbufferparameteriv)(renderbuffer, pname, params); Ok(())};
29543		#[cfg(feature = "diagnose")]
29544		if let Ok(ret) = ret {
29545			return to_result("glGetNamedRenderbufferParameteriv", ret, self.glGetError());
29546		} else {
29547			return ret
29548		}
29549		#[cfg(not(feature = "diagnose"))]
29550		return ret;
29551	}
29552	#[inline(always)]
29553	fn glCreateTextures(&self, target: GLenum, n: GLsizei, textures: *mut GLuint) -> Result<()> {
29554		#[cfg(feature = "catch_nullptr")]
29555		let ret = process_catch("glCreateTextures", catch_unwind(||(self.createtextures)(target, n, textures)));
29556		#[cfg(not(feature = "catch_nullptr"))]
29557		let ret = {(self.createtextures)(target, n, textures); Ok(())};
29558		#[cfg(feature = "diagnose")]
29559		if let Ok(ret) = ret {
29560			return to_result("glCreateTextures", ret, self.glGetError());
29561		} else {
29562			return ret
29563		}
29564		#[cfg(not(feature = "diagnose"))]
29565		return ret;
29566	}
29567	#[inline(always)]
29568	fn glTextureBuffer(&self, texture: GLuint, internalformat: GLenum, buffer: GLuint) -> Result<()> {
29569		#[cfg(feature = "catch_nullptr")]
29570		let ret = process_catch("glTextureBuffer", catch_unwind(||(self.texturebuffer)(texture, internalformat, buffer)));
29571		#[cfg(not(feature = "catch_nullptr"))]
29572		let ret = {(self.texturebuffer)(texture, internalformat, buffer); Ok(())};
29573		#[cfg(feature = "diagnose")]
29574		if let Ok(ret) = ret {
29575			return to_result("glTextureBuffer", ret, self.glGetError());
29576		} else {
29577			return ret
29578		}
29579		#[cfg(not(feature = "diagnose"))]
29580		return ret;
29581	}
29582	#[inline(always)]
29583	fn glTextureBufferRange(&self, texture: GLuint, internalformat: GLenum, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()> {
29584		#[cfg(feature = "catch_nullptr")]
29585		let ret = process_catch("glTextureBufferRange", catch_unwind(||(self.texturebufferrange)(texture, internalformat, buffer, offset, size)));
29586		#[cfg(not(feature = "catch_nullptr"))]
29587		let ret = {(self.texturebufferrange)(texture, internalformat, buffer, offset, size); Ok(())};
29588		#[cfg(feature = "diagnose")]
29589		if let Ok(ret) = ret {
29590			return to_result("glTextureBufferRange", ret, self.glGetError());
29591		} else {
29592			return ret
29593		}
29594		#[cfg(not(feature = "diagnose"))]
29595		return ret;
29596	}
29597	#[inline(always)]
29598	fn glTextureStorage1D(&self, texture: GLuint, levels: GLsizei, internalformat: GLenum, width: GLsizei) -> Result<()> {
29599		#[cfg(feature = "catch_nullptr")]
29600		let ret = process_catch("glTextureStorage1D", catch_unwind(||(self.texturestorage1d)(texture, levels, internalformat, width)));
29601		#[cfg(not(feature = "catch_nullptr"))]
29602		let ret = {(self.texturestorage1d)(texture, levels, internalformat, width); Ok(())};
29603		#[cfg(feature = "diagnose")]
29604		if let Ok(ret) = ret {
29605			return to_result("glTextureStorage1D", ret, self.glGetError());
29606		} else {
29607			return ret
29608		}
29609		#[cfg(not(feature = "diagnose"))]
29610		return ret;
29611	}
29612	#[inline(always)]
29613	fn glTextureStorage2D(&self, texture: GLuint, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()> {
29614		#[cfg(feature = "catch_nullptr")]
29615		let ret = process_catch("glTextureStorage2D", catch_unwind(||(self.texturestorage2d)(texture, levels, internalformat, width, height)));
29616		#[cfg(not(feature = "catch_nullptr"))]
29617		let ret = {(self.texturestorage2d)(texture, levels, internalformat, width, height); Ok(())};
29618		#[cfg(feature = "diagnose")]
29619		if let Ok(ret) = ret {
29620			return to_result("glTextureStorage2D", ret, self.glGetError());
29621		} else {
29622			return ret
29623		}
29624		#[cfg(not(feature = "diagnose"))]
29625		return ret;
29626	}
29627	#[inline(always)]
29628	fn glTextureStorage3D(&self, texture: GLuint, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei) -> Result<()> {
29629		#[cfg(feature = "catch_nullptr")]
29630		let ret = process_catch("glTextureStorage3D", catch_unwind(||(self.texturestorage3d)(texture, levels, internalformat, width, height, depth)));
29631		#[cfg(not(feature = "catch_nullptr"))]
29632		let ret = {(self.texturestorage3d)(texture, levels, internalformat, width, height, depth); Ok(())};
29633		#[cfg(feature = "diagnose")]
29634		if let Ok(ret) = ret {
29635			return to_result("glTextureStorage3D", ret, self.glGetError());
29636		} else {
29637			return ret
29638		}
29639		#[cfg(not(feature = "diagnose"))]
29640		return ret;
29641	}
29642	#[inline(always)]
29643	fn glTextureStorage2DMultisample(&self, texture: GLuint, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, fixedsamplelocations: GLboolean) -> Result<()> {
29644		#[cfg(feature = "catch_nullptr")]
29645		let ret = process_catch("glTextureStorage2DMultisample", catch_unwind(||(self.texturestorage2dmultisample)(texture, samples, internalformat, width, height, fixedsamplelocations)));
29646		#[cfg(not(feature = "catch_nullptr"))]
29647		let ret = {(self.texturestorage2dmultisample)(texture, samples, internalformat, width, height, fixedsamplelocations); Ok(())};
29648		#[cfg(feature = "diagnose")]
29649		if let Ok(ret) = ret {
29650			return to_result("glTextureStorage2DMultisample", ret, self.glGetError());
29651		} else {
29652			return ret
29653		}
29654		#[cfg(not(feature = "diagnose"))]
29655		return ret;
29656	}
29657	#[inline(always)]
29658	fn glTextureStorage3DMultisample(&self, texture: GLuint, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, fixedsamplelocations: GLboolean) -> Result<()> {
29659		#[cfg(feature = "catch_nullptr")]
29660		let ret = process_catch("glTextureStorage3DMultisample", catch_unwind(||(self.texturestorage3dmultisample)(texture, samples, internalformat, width, height, depth, fixedsamplelocations)));
29661		#[cfg(not(feature = "catch_nullptr"))]
29662		let ret = {(self.texturestorage3dmultisample)(texture, samples, internalformat, width, height, depth, fixedsamplelocations); Ok(())};
29663		#[cfg(feature = "diagnose")]
29664		if let Ok(ret) = ret {
29665			return to_result("glTextureStorage3DMultisample", ret, self.glGetError());
29666		} else {
29667			return ret
29668		}
29669		#[cfg(not(feature = "diagnose"))]
29670		return ret;
29671	}
29672	#[inline(always)]
29673	fn glTextureSubImage1D(&self, texture: GLuint, level: GLint, xoffset: GLint, width: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
29674		#[cfg(feature = "catch_nullptr")]
29675		let ret = process_catch("glTextureSubImage1D", catch_unwind(||(self.texturesubimage1d)(texture, level, xoffset, width, format, type_, pixels)));
29676		#[cfg(not(feature = "catch_nullptr"))]
29677		let ret = {(self.texturesubimage1d)(texture, level, xoffset, width, format, type_, pixels); Ok(())};
29678		#[cfg(feature = "diagnose")]
29679		if let Ok(ret) = ret {
29680			return to_result("glTextureSubImage1D", ret, self.glGetError());
29681		} else {
29682			return ret
29683		}
29684		#[cfg(not(feature = "diagnose"))]
29685		return ret;
29686	}
29687	#[inline(always)]
29688	fn glTextureSubImage2D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
29689		#[cfg(feature = "catch_nullptr")]
29690		let ret = process_catch("glTextureSubImage2D", catch_unwind(||(self.texturesubimage2d)(texture, level, xoffset, yoffset, width, height, format, type_, pixels)));
29691		#[cfg(not(feature = "catch_nullptr"))]
29692		let ret = {(self.texturesubimage2d)(texture, level, xoffset, yoffset, width, height, format, type_, pixels); Ok(())};
29693		#[cfg(feature = "diagnose")]
29694		if let Ok(ret) = ret {
29695			return to_result("glTextureSubImage2D", ret, self.glGetError());
29696		} else {
29697			return ret
29698		}
29699		#[cfg(not(feature = "diagnose"))]
29700		return ret;
29701	}
29702	#[inline(always)]
29703	fn glTextureSubImage3D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
29704		#[cfg(feature = "catch_nullptr")]
29705		let ret = process_catch("glTextureSubImage3D", catch_unwind(||(self.texturesubimage3d)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, pixels)));
29706		#[cfg(not(feature = "catch_nullptr"))]
29707		let ret = {(self.texturesubimage3d)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, pixels); Ok(())};
29708		#[cfg(feature = "diagnose")]
29709		if let Ok(ret) = ret {
29710			return to_result("glTextureSubImage3D", ret, self.glGetError());
29711		} else {
29712			return ret
29713		}
29714		#[cfg(not(feature = "diagnose"))]
29715		return ret;
29716	}
29717	#[inline(always)]
29718	fn glCompressedTextureSubImage1D(&self, texture: GLuint, level: GLint, xoffset: GLint, width: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()> {
29719		#[cfg(feature = "catch_nullptr")]
29720		let ret = process_catch("glCompressedTextureSubImage1D", catch_unwind(||(self.compressedtexturesubimage1d)(texture, level, xoffset, width, format, imageSize, data)));
29721		#[cfg(not(feature = "catch_nullptr"))]
29722		let ret = {(self.compressedtexturesubimage1d)(texture, level, xoffset, width, format, imageSize, data); Ok(())};
29723		#[cfg(feature = "diagnose")]
29724		if let Ok(ret) = ret {
29725			return to_result("glCompressedTextureSubImage1D", ret, self.glGetError());
29726		} else {
29727			return ret
29728		}
29729		#[cfg(not(feature = "diagnose"))]
29730		return ret;
29731	}
29732	#[inline(always)]
29733	fn glCompressedTextureSubImage2D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()> {
29734		#[cfg(feature = "catch_nullptr")]
29735		let ret = process_catch("glCompressedTextureSubImage2D", catch_unwind(||(self.compressedtexturesubimage2d)(texture, level, xoffset, yoffset, width, height, format, imageSize, data)));
29736		#[cfg(not(feature = "catch_nullptr"))]
29737		let ret = {(self.compressedtexturesubimage2d)(texture, level, xoffset, yoffset, width, height, format, imageSize, data); Ok(())};
29738		#[cfg(feature = "diagnose")]
29739		if let Ok(ret) = ret {
29740			return to_result("glCompressedTextureSubImage2D", ret, self.glGetError());
29741		} else {
29742			return ret
29743		}
29744		#[cfg(not(feature = "diagnose"))]
29745		return ret;
29746	}
29747	#[inline(always)]
29748	fn glCompressedTextureSubImage3D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()> {
29749		#[cfg(feature = "catch_nullptr")]
29750		let ret = process_catch("glCompressedTextureSubImage3D", catch_unwind(||(self.compressedtexturesubimage3d)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data)));
29751		#[cfg(not(feature = "catch_nullptr"))]
29752		let ret = {(self.compressedtexturesubimage3d)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); Ok(())};
29753		#[cfg(feature = "diagnose")]
29754		if let Ok(ret) = ret {
29755			return to_result("glCompressedTextureSubImage3D", ret, self.glGetError());
29756		} else {
29757			return ret
29758		}
29759		#[cfg(not(feature = "diagnose"))]
29760		return ret;
29761	}
29762	#[inline(always)]
29763	fn glCopyTextureSubImage1D(&self, texture: GLuint, level: GLint, xoffset: GLint, x: GLint, y: GLint, width: GLsizei) -> Result<()> {
29764		#[cfg(feature = "catch_nullptr")]
29765		let ret = process_catch("glCopyTextureSubImage1D", catch_unwind(||(self.copytexturesubimage1d)(texture, level, xoffset, x, y, width)));
29766		#[cfg(not(feature = "catch_nullptr"))]
29767		let ret = {(self.copytexturesubimage1d)(texture, level, xoffset, x, y, width); Ok(())};
29768		#[cfg(feature = "diagnose")]
29769		if let Ok(ret) = ret {
29770			return to_result("glCopyTextureSubImage1D", ret, self.glGetError());
29771		} else {
29772			return ret
29773		}
29774		#[cfg(not(feature = "diagnose"))]
29775		return ret;
29776	}
29777	#[inline(always)]
29778	fn glCopyTextureSubImage2D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
29779		#[cfg(feature = "catch_nullptr")]
29780		let ret = process_catch("glCopyTextureSubImage2D", catch_unwind(||(self.copytexturesubimage2d)(texture, level, xoffset, yoffset, x, y, width, height)));
29781		#[cfg(not(feature = "catch_nullptr"))]
29782		let ret = {(self.copytexturesubimage2d)(texture, level, xoffset, yoffset, x, y, width, height); Ok(())};
29783		#[cfg(feature = "diagnose")]
29784		if let Ok(ret) = ret {
29785			return to_result("glCopyTextureSubImage2D", ret, self.glGetError());
29786		} else {
29787			return ret
29788		}
29789		#[cfg(not(feature = "diagnose"))]
29790		return ret;
29791	}
29792	#[inline(always)]
29793	fn glCopyTextureSubImage3D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
29794		#[cfg(feature = "catch_nullptr")]
29795		let ret = process_catch("glCopyTextureSubImage3D", catch_unwind(||(self.copytexturesubimage3d)(texture, level, xoffset, yoffset, zoffset, x, y, width, height)));
29796		#[cfg(not(feature = "catch_nullptr"))]
29797		let ret = {(self.copytexturesubimage3d)(texture, level, xoffset, yoffset, zoffset, x, y, width, height); Ok(())};
29798		#[cfg(feature = "diagnose")]
29799		if let Ok(ret) = ret {
29800			return to_result("glCopyTextureSubImage3D", ret, self.glGetError());
29801		} else {
29802			return ret
29803		}
29804		#[cfg(not(feature = "diagnose"))]
29805		return ret;
29806	}
29807	#[inline(always)]
29808	fn glTextureParameterf(&self, texture: GLuint, pname: GLenum, param: GLfloat) -> Result<()> {
29809		#[cfg(feature = "catch_nullptr")]
29810		let ret = process_catch("glTextureParameterf", catch_unwind(||(self.textureparameterf)(texture, pname, param)));
29811		#[cfg(not(feature = "catch_nullptr"))]
29812		let ret = {(self.textureparameterf)(texture, pname, param); Ok(())};
29813		#[cfg(feature = "diagnose")]
29814		if let Ok(ret) = ret {
29815			return to_result("glTextureParameterf", ret, self.glGetError());
29816		} else {
29817			return ret
29818		}
29819		#[cfg(not(feature = "diagnose"))]
29820		return ret;
29821	}
29822	#[inline(always)]
29823	fn glTextureParameterfv(&self, texture: GLuint, pname: GLenum, param: *const GLfloat) -> Result<()> {
29824		#[cfg(feature = "catch_nullptr")]
29825		let ret = process_catch("glTextureParameterfv", catch_unwind(||(self.textureparameterfv)(texture, pname, param)));
29826		#[cfg(not(feature = "catch_nullptr"))]
29827		let ret = {(self.textureparameterfv)(texture, pname, param); Ok(())};
29828		#[cfg(feature = "diagnose")]
29829		if let Ok(ret) = ret {
29830			return to_result("glTextureParameterfv", ret, self.glGetError());
29831		} else {
29832			return ret
29833		}
29834		#[cfg(not(feature = "diagnose"))]
29835		return ret;
29836	}
29837	#[inline(always)]
29838	fn glTextureParameteri(&self, texture: GLuint, pname: GLenum, param: GLint) -> Result<()> {
29839		#[cfg(feature = "catch_nullptr")]
29840		let ret = process_catch("glTextureParameteri", catch_unwind(||(self.textureparameteri)(texture, pname, param)));
29841		#[cfg(not(feature = "catch_nullptr"))]
29842		let ret = {(self.textureparameteri)(texture, pname, param); Ok(())};
29843		#[cfg(feature = "diagnose")]
29844		if let Ok(ret) = ret {
29845			return to_result("glTextureParameteri", ret, self.glGetError());
29846		} else {
29847			return ret
29848		}
29849		#[cfg(not(feature = "diagnose"))]
29850		return ret;
29851	}
29852	#[inline(always)]
29853	fn glTextureParameterIiv(&self, texture: GLuint, pname: GLenum, params: *const GLint) -> Result<()> {
29854		#[cfg(feature = "catch_nullptr")]
29855		let ret = process_catch("glTextureParameterIiv", catch_unwind(||(self.textureparameteriiv)(texture, pname, params)));
29856		#[cfg(not(feature = "catch_nullptr"))]
29857		let ret = {(self.textureparameteriiv)(texture, pname, params); Ok(())};
29858		#[cfg(feature = "diagnose")]
29859		if let Ok(ret) = ret {
29860			return to_result("glTextureParameterIiv", ret, self.glGetError());
29861		} else {
29862			return ret
29863		}
29864		#[cfg(not(feature = "diagnose"))]
29865		return ret;
29866	}
29867	#[inline(always)]
29868	fn glTextureParameterIuiv(&self, texture: GLuint, pname: GLenum, params: *const GLuint) -> Result<()> {
29869		#[cfg(feature = "catch_nullptr")]
29870		let ret = process_catch("glTextureParameterIuiv", catch_unwind(||(self.textureparameteriuiv)(texture, pname, params)));
29871		#[cfg(not(feature = "catch_nullptr"))]
29872		let ret = {(self.textureparameteriuiv)(texture, pname, params); Ok(())};
29873		#[cfg(feature = "diagnose")]
29874		if let Ok(ret) = ret {
29875			return to_result("glTextureParameterIuiv", ret, self.glGetError());
29876		} else {
29877			return ret
29878		}
29879		#[cfg(not(feature = "diagnose"))]
29880		return ret;
29881	}
29882	#[inline(always)]
29883	fn glTextureParameteriv(&self, texture: GLuint, pname: GLenum, param: *const GLint) -> Result<()> {
29884		#[cfg(feature = "catch_nullptr")]
29885		let ret = process_catch("glTextureParameteriv", catch_unwind(||(self.textureparameteriv)(texture, pname, param)));
29886		#[cfg(not(feature = "catch_nullptr"))]
29887		let ret = {(self.textureparameteriv)(texture, pname, param); Ok(())};
29888		#[cfg(feature = "diagnose")]
29889		if let Ok(ret) = ret {
29890			return to_result("glTextureParameteriv", ret, self.glGetError());
29891		} else {
29892			return ret
29893		}
29894		#[cfg(not(feature = "diagnose"))]
29895		return ret;
29896	}
29897	#[inline(always)]
29898	fn glGenerateTextureMipmap(&self, texture: GLuint) -> Result<()> {
29899		#[cfg(feature = "catch_nullptr")]
29900		let ret = process_catch("glGenerateTextureMipmap", catch_unwind(||(self.generatetexturemipmap)(texture)));
29901		#[cfg(not(feature = "catch_nullptr"))]
29902		let ret = {(self.generatetexturemipmap)(texture); Ok(())};
29903		#[cfg(feature = "diagnose")]
29904		if let Ok(ret) = ret {
29905			return to_result("glGenerateTextureMipmap", ret, self.glGetError());
29906		} else {
29907			return ret
29908		}
29909		#[cfg(not(feature = "diagnose"))]
29910		return ret;
29911	}
29912	#[inline(always)]
29913	fn glBindTextureUnit(&self, unit: GLuint, texture: GLuint) -> Result<()> {
29914		#[cfg(feature = "catch_nullptr")]
29915		let ret = process_catch("glBindTextureUnit", catch_unwind(||(self.bindtextureunit)(unit, texture)));
29916		#[cfg(not(feature = "catch_nullptr"))]
29917		let ret = {(self.bindtextureunit)(unit, texture); Ok(())};
29918		#[cfg(feature = "diagnose")]
29919		if let Ok(ret) = ret {
29920			return to_result("glBindTextureUnit", ret, self.glGetError());
29921		} else {
29922			return ret
29923		}
29924		#[cfg(not(feature = "diagnose"))]
29925		return ret;
29926	}
29927	#[inline(always)]
29928	fn glGetTextureImage(&self, texture: GLuint, level: GLint, format: GLenum, type_: GLenum, bufSize: GLsizei, pixels: *mut c_void) -> Result<()> {
29929		#[cfg(feature = "catch_nullptr")]
29930		let ret = process_catch("glGetTextureImage", catch_unwind(||(self.gettextureimage)(texture, level, format, type_, bufSize, pixels)));
29931		#[cfg(not(feature = "catch_nullptr"))]
29932		let ret = {(self.gettextureimage)(texture, level, format, type_, bufSize, pixels); Ok(())};
29933		#[cfg(feature = "diagnose")]
29934		if let Ok(ret) = ret {
29935			return to_result("glGetTextureImage", ret, self.glGetError());
29936		} else {
29937			return ret
29938		}
29939		#[cfg(not(feature = "diagnose"))]
29940		return ret;
29941	}
29942	#[inline(always)]
29943	fn glGetCompressedTextureImage(&self, texture: GLuint, level: GLint, bufSize: GLsizei, pixels: *mut c_void) -> Result<()> {
29944		#[cfg(feature = "catch_nullptr")]
29945		let ret = process_catch("glGetCompressedTextureImage", catch_unwind(||(self.getcompressedtextureimage)(texture, level, bufSize, pixels)));
29946		#[cfg(not(feature = "catch_nullptr"))]
29947		let ret = {(self.getcompressedtextureimage)(texture, level, bufSize, pixels); Ok(())};
29948		#[cfg(feature = "diagnose")]
29949		if let Ok(ret) = ret {
29950			return to_result("glGetCompressedTextureImage", ret, self.glGetError());
29951		} else {
29952			return ret
29953		}
29954		#[cfg(not(feature = "diagnose"))]
29955		return ret;
29956	}
29957	#[inline(always)]
29958	fn glGetTextureLevelParameterfv(&self, texture: GLuint, level: GLint, pname: GLenum, params: *mut GLfloat) -> Result<()> {
29959		#[cfg(feature = "catch_nullptr")]
29960		let ret = process_catch("glGetTextureLevelParameterfv", catch_unwind(||(self.gettexturelevelparameterfv)(texture, level, pname, params)));
29961		#[cfg(not(feature = "catch_nullptr"))]
29962		let ret = {(self.gettexturelevelparameterfv)(texture, level, pname, params); Ok(())};
29963		#[cfg(feature = "diagnose")]
29964		if let Ok(ret) = ret {
29965			return to_result("glGetTextureLevelParameterfv", ret, self.glGetError());
29966		} else {
29967			return ret
29968		}
29969		#[cfg(not(feature = "diagnose"))]
29970		return ret;
29971	}
29972	#[inline(always)]
29973	fn glGetTextureLevelParameteriv(&self, texture: GLuint, level: GLint, pname: GLenum, params: *mut GLint) -> Result<()> {
29974		#[cfg(feature = "catch_nullptr")]
29975		let ret = process_catch("glGetTextureLevelParameteriv", catch_unwind(||(self.gettexturelevelparameteriv)(texture, level, pname, params)));
29976		#[cfg(not(feature = "catch_nullptr"))]
29977		let ret = {(self.gettexturelevelparameteriv)(texture, level, pname, params); Ok(())};
29978		#[cfg(feature = "diagnose")]
29979		if let Ok(ret) = ret {
29980			return to_result("glGetTextureLevelParameteriv", ret, self.glGetError());
29981		} else {
29982			return ret
29983		}
29984		#[cfg(not(feature = "diagnose"))]
29985		return ret;
29986	}
29987	#[inline(always)]
29988	fn glGetTextureParameterfv(&self, texture: GLuint, pname: GLenum, params: *mut GLfloat) -> Result<()> {
29989		#[cfg(feature = "catch_nullptr")]
29990		let ret = process_catch("glGetTextureParameterfv", catch_unwind(||(self.gettextureparameterfv)(texture, pname, params)));
29991		#[cfg(not(feature = "catch_nullptr"))]
29992		let ret = {(self.gettextureparameterfv)(texture, pname, params); Ok(())};
29993		#[cfg(feature = "diagnose")]
29994		if let Ok(ret) = ret {
29995			return to_result("glGetTextureParameterfv", ret, self.glGetError());
29996		} else {
29997			return ret
29998		}
29999		#[cfg(not(feature = "diagnose"))]
30000		return ret;
30001	}
30002	#[inline(always)]
30003	fn glGetTextureParameterIiv(&self, texture: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
30004		#[cfg(feature = "catch_nullptr")]
30005		let ret = process_catch("glGetTextureParameterIiv", catch_unwind(||(self.gettextureparameteriiv)(texture, pname, params)));
30006		#[cfg(not(feature = "catch_nullptr"))]
30007		let ret = {(self.gettextureparameteriiv)(texture, pname, params); Ok(())};
30008		#[cfg(feature = "diagnose")]
30009		if let Ok(ret) = ret {
30010			return to_result("glGetTextureParameterIiv", ret, self.glGetError());
30011		} else {
30012			return ret
30013		}
30014		#[cfg(not(feature = "diagnose"))]
30015		return ret;
30016	}
30017	#[inline(always)]
30018	fn glGetTextureParameterIuiv(&self, texture: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()> {
30019		#[cfg(feature = "catch_nullptr")]
30020		let ret = process_catch("glGetTextureParameterIuiv", catch_unwind(||(self.gettextureparameteriuiv)(texture, pname, params)));
30021		#[cfg(not(feature = "catch_nullptr"))]
30022		let ret = {(self.gettextureparameteriuiv)(texture, pname, params); Ok(())};
30023		#[cfg(feature = "diagnose")]
30024		if let Ok(ret) = ret {
30025			return to_result("glGetTextureParameterIuiv", ret, self.glGetError());
30026		} else {
30027			return ret
30028		}
30029		#[cfg(not(feature = "diagnose"))]
30030		return ret;
30031	}
30032	#[inline(always)]
30033	fn glGetTextureParameteriv(&self, texture: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
30034		#[cfg(feature = "catch_nullptr")]
30035		let ret = process_catch("glGetTextureParameteriv", catch_unwind(||(self.gettextureparameteriv)(texture, pname, params)));
30036		#[cfg(not(feature = "catch_nullptr"))]
30037		let ret = {(self.gettextureparameteriv)(texture, pname, params); Ok(())};
30038		#[cfg(feature = "diagnose")]
30039		if let Ok(ret) = ret {
30040			return to_result("glGetTextureParameteriv", ret, self.glGetError());
30041		} else {
30042			return ret
30043		}
30044		#[cfg(not(feature = "diagnose"))]
30045		return ret;
30046	}
30047	#[inline(always)]
30048	fn glCreateVertexArrays(&self, n: GLsizei, arrays: *mut GLuint) -> Result<()> {
30049		#[cfg(feature = "catch_nullptr")]
30050		let ret = process_catch("glCreateVertexArrays", catch_unwind(||(self.createvertexarrays)(n, arrays)));
30051		#[cfg(not(feature = "catch_nullptr"))]
30052		let ret = {(self.createvertexarrays)(n, arrays); Ok(())};
30053		#[cfg(feature = "diagnose")]
30054		if let Ok(ret) = ret {
30055			return to_result("glCreateVertexArrays", ret, self.glGetError());
30056		} else {
30057			return ret
30058		}
30059		#[cfg(not(feature = "diagnose"))]
30060		return ret;
30061	}
30062	#[inline(always)]
30063	fn glDisableVertexArrayAttrib(&self, vaobj: GLuint, index: GLuint) -> Result<()> {
30064		#[cfg(feature = "catch_nullptr")]
30065		let ret = process_catch("glDisableVertexArrayAttrib", catch_unwind(||(self.disablevertexarrayattrib)(vaobj, index)));
30066		#[cfg(not(feature = "catch_nullptr"))]
30067		let ret = {(self.disablevertexarrayattrib)(vaobj, index); Ok(())};
30068		#[cfg(feature = "diagnose")]
30069		if let Ok(ret) = ret {
30070			return to_result("glDisableVertexArrayAttrib", ret, self.glGetError());
30071		} else {
30072			return ret
30073		}
30074		#[cfg(not(feature = "diagnose"))]
30075		return ret;
30076	}
30077	#[inline(always)]
30078	fn glEnableVertexArrayAttrib(&self, vaobj: GLuint, index: GLuint) -> Result<()> {
30079		#[cfg(feature = "catch_nullptr")]
30080		let ret = process_catch("glEnableVertexArrayAttrib", catch_unwind(||(self.enablevertexarrayattrib)(vaobj, index)));
30081		#[cfg(not(feature = "catch_nullptr"))]
30082		let ret = {(self.enablevertexarrayattrib)(vaobj, index); Ok(())};
30083		#[cfg(feature = "diagnose")]
30084		if let Ok(ret) = ret {
30085			return to_result("glEnableVertexArrayAttrib", ret, self.glGetError());
30086		} else {
30087			return ret
30088		}
30089		#[cfg(not(feature = "diagnose"))]
30090		return ret;
30091	}
30092	#[inline(always)]
30093	fn glVertexArrayElementBuffer(&self, vaobj: GLuint, buffer: GLuint) -> Result<()> {
30094		#[cfg(feature = "catch_nullptr")]
30095		let ret = process_catch("glVertexArrayElementBuffer", catch_unwind(||(self.vertexarrayelementbuffer)(vaobj, buffer)));
30096		#[cfg(not(feature = "catch_nullptr"))]
30097		let ret = {(self.vertexarrayelementbuffer)(vaobj, buffer); Ok(())};
30098		#[cfg(feature = "diagnose")]
30099		if let Ok(ret) = ret {
30100			return to_result("glVertexArrayElementBuffer", ret, self.glGetError());
30101		} else {
30102			return ret
30103		}
30104		#[cfg(not(feature = "diagnose"))]
30105		return ret;
30106	}
30107	#[inline(always)]
30108	fn glVertexArrayVertexBuffer(&self, vaobj: GLuint, bindingindex: GLuint, buffer: GLuint, offset: GLintptr, stride: GLsizei) -> Result<()> {
30109		#[cfg(feature = "catch_nullptr")]
30110		let ret = process_catch("glVertexArrayVertexBuffer", catch_unwind(||(self.vertexarrayvertexbuffer)(vaobj, bindingindex, buffer, offset, stride)));
30111		#[cfg(not(feature = "catch_nullptr"))]
30112		let ret = {(self.vertexarrayvertexbuffer)(vaobj, bindingindex, buffer, offset, stride); Ok(())};
30113		#[cfg(feature = "diagnose")]
30114		if let Ok(ret) = ret {
30115			return to_result("glVertexArrayVertexBuffer", ret, self.glGetError());
30116		} else {
30117			return ret
30118		}
30119		#[cfg(not(feature = "diagnose"))]
30120		return ret;
30121	}
30122	#[inline(always)]
30123	fn glVertexArrayVertexBuffers(&self, vaobj: GLuint, first: GLuint, count: GLsizei, buffers: *const GLuint, offsets: *const GLintptr, strides: *const GLsizei) -> Result<()> {
30124		#[cfg(feature = "catch_nullptr")]
30125		let ret = process_catch("glVertexArrayVertexBuffers", catch_unwind(||(self.vertexarrayvertexbuffers)(vaobj, first, count, buffers, offsets, strides)));
30126		#[cfg(not(feature = "catch_nullptr"))]
30127		let ret = {(self.vertexarrayvertexbuffers)(vaobj, first, count, buffers, offsets, strides); Ok(())};
30128		#[cfg(feature = "diagnose")]
30129		if let Ok(ret) = ret {
30130			return to_result("glVertexArrayVertexBuffers", ret, self.glGetError());
30131		} else {
30132			return ret
30133		}
30134		#[cfg(not(feature = "diagnose"))]
30135		return ret;
30136	}
30137	#[inline(always)]
30138	fn glVertexArrayAttribBinding(&self, vaobj: GLuint, attribindex: GLuint, bindingindex: GLuint) -> Result<()> {
30139		#[cfg(feature = "catch_nullptr")]
30140		let ret = process_catch("glVertexArrayAttribBinding", catch_unwind(||(self.vertexarrayattribbinding)(vaobj, attribindex, bindingindex)));
30141		#[cfg(not(feature = "catch_nullptr"))]
30142		let ret = {(self.vertexarrayattribbinding)(vaobj, attribindex, bindingindex); Ok(())};
30143		#[cfg(feature = "diagnose")]
30144		if let Ok(ret) = ret {
30145			return to_result("glVertexArrayAttribBinding", ret, self.glGetError());
30146		} else {
30147			return ret
30148		}
30149		#[cfg(not(feature = "diagnose"))]
30150		return ret;
30151	}
30152	#[inline(always)]
30153	fn glVertexArrayAttribFormat(&self, vaobj: GLuint, attribindex: GLuint, size: GLint, type_: GLenum, normalized: GLboolean, relativeoffset: GLuint) -> Result<()> {
30154		#[cfg(feature = "catch_nullptr")]
30155		let ret = process_catch("glVertexArrayAttribFormat", catch_unwind(||(self.vertexarrayattribformat)(vaobj, attribindex, size, type_, normalized, relativeoffset)));
30156		#[cfg(not(feature = "catch_nullptr"))]
30157		let ret = {(self.vertexarrayattribformat)(vaobj, attribindex, size, type_, normalized, relativeoffset); Ok(())};
30158		#[cfg(feature = "diagnose")]
30159		if let Ok(ret) = ret {
30160			return to_result("glVertexArrayAttribFormat", ret, self.glGetError());
30161		} else {
30162			return ret
30163		}
30164		#[cfg(not(feature = "diagnose"))]
30165		return ret;
30166	}
30167	#[inline(always)]
30168	fn glVertexArrayAttribIFormat(&self, vaobj: GLuint, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()> {
30169		#[cfg(feature = "catch_nullptr")]
30170		let ret = process_catch("glVertexArrayAttribIFormat", catch_unwind(||(self.vertexarrayattribiformat)(vaobj, attribindex, size, type_, relativeoffset)));
30171		#[cfg(not(feature = "catch_nullptr"))]
30172		let ret = {(self.vertexarrayattribiformat)(vaobj, attribindex, size, type_, relativeoffset); Ok(())};
30173		#[cfg(feature = "diagnose")]
30174		if let Ok(ret) = ret {
30175			return to_result("glVertexArrayAttribIFormat", ret, self.glGetError());
30176		} else {
30177			return ret
30178		}
30179		#[cfg(not(feature = "diagnose"))]
30180		return ret;
30181	}
30182	#[inline(always)]
30183	fn glVertexArrayAttribLFormat(&self, vaobj: GLuint, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()> {
30184		#[cfg(feature = "catch_nullptr")]
30185		let ret = process_catch("glVertexArrayAttribLFormat", catch_unwind(||(self.vertexarrayattriblformat)(vaobj, attribindex, size, type_, relativeoffset)));
30186		#[cfg(not(feature = "catch_nullptr"))]
30187		let ret = {(self.vertexarrayattriblformat)(vaobj, attribindex, size, type_, relativeoffset); Ok(())};
30188		#[cfg(feature = "diagnose")]
30189		if let Ok(ret) = ret {
30190			return to_result("glVertexArrayAttribLFormat", ret, self.glGetError());
30191		} else {
30192			return ret
30193		}
30194		#[cfg(not(feature = "diagnose"))]
30195		return ret;
30196	}
30197	#[inline(always)]
30198	fn glVertexArrayBindingDivisor(&self, vaobj: GLuint, bindingindex: GLuint, divisor: GLuint) -> Result<()> {
30199		#[cfg(feature = "catch_nullptr")]
30200		let ret = process_catch("glVertexArrayBindingDivisor", catch_unwind(||(self.vertexarraybindingdivisor)(vaobj, bindingindex, divisor)));
30201		#[cfg(not(feature = "catch_nullptr"))]
30202		let ret = {(self.vertexarraybindingdivisor)(vaobj, bindingindex, divisor); Ok(())};
30203		#[cfg(feature = "diagnose")]
30204		if let Ok(ret) = ret {
30205			return to_result("glVertexArrayBindingDivisor", ret, self.glGetError());
30206		} else {
30207			return ret
30208		}
30209		#[cfg(not(feature = "diagnose"))]
30210		return ret;
30211	}
30212	#[inline(always)]
30213	fn glGetVertexArrayiv(&self, vaobj: GLuint, pname: GLenum, param: *mut GLint) -> Result<()> {
30214		#[cfg(feature = "catch_nullptr")]
30215		let ret = process_catch("glGetVertexArrayiv", catch_unwind(||(self.getvertexarrayiv)(vaobj, pname, param)));
30216		#[cfg(not(feature = "catch_nullptr"))]
30217		let ret = {(self.getvertexarrayiv)(vaobj, pname, param); Ok(())};
30218		#[cfg(feature = "diagnose")]
30219		if let Ok(ret) = ret {
30220			return to_result("glGetVertexArrayiv", ret, self.glGetError());
30221		} else {
30222			return ret
30223		}
30224		#[cfg(not(feature = "diagnose"))]
30225		return ret;
30226	}
30227	#[inline(always)]
30228	fn glGetVertexArrayIndexediv(&self, vaobj: GLuint, index: GLuint, pname: GLenum, param: *mut GLint) -> Result<()> {
30229		#[cfg(feature = "catch_nullptr")]
30230		let ret = process_catch("glGetVertexArrayIndexediv", catch_unwind(||(self.getvertexarrayindexediv)(vaobj, index, pname, param)));
30231		#[cfg(not(feature = "catch_nullptr"))]
30232		let ret = {(self.getvertexarrayindexediv)(vaobj, index, pname, param); Ok(())};
30233		#[cfg(feature = "diagnose")]
30234		if let Ok(ret) = ret {
30235			return to_result("glGetVertexArrayIndexediv", ret, self.glGetError());
30236		} else {
30237			return ret
30238		}
30239		#[cfg(not(feature = "diagnose"))]
30240		return ret;
30241	}
30242	#[inline(always)]
30243	fn glGetVertexArrayIndexed64iv(&self, vaobj: GLuint, index: GLuint, pname: GLenum, param: *mut GLint64) -> Result<()> {
30244		#[cfg(feature = "catch_nullptr")]
30245		let ret = process_catch("glGetVertexArrayIndexed64iv", catch_unwind(||(self.getvertexarrayindexed64iv)(vaobj, index, pname, param)));
30246		#[cfg(not(feature = "catch_nullptr"))]
30247		let ret = {(self.getvertexarrayindexed64iv)(vaobj, index, pname, param); Ok(())};
30248		#[cfg(feature = "diagnose")]
30249		if let Ok(ret) = ret {
30250			return to_result("glGetVertexArrayIndexed64iv", ret, self.glGetError());
30251		} else {
30252			return ret
30253		}
30254		#[cfg(not(feature = "diagnose"))]
30255		return ret;
30256	}
30257	#[inline(always)]
30258	fn glCreateSamplers(&self, n: GLsizei, samplers: *mut GLuint) -> Result<()> {
30259		#[cfg(feature = "catch_nullptr")]
30260		let ret = process_catch("glCreateSamplers", catch_unwind(||(self.createsamplers)(n, samplers)));
30261		#[cfg(not(feature = "catch_nullptr"))]
30262		let ret = {(self.createsamplers)(n, samplers); Ok(())};
30263		#[cfg(feature = "diagnose")]
30264		if let Ok(ret) = ret {
30265			return to_result("glCreateSamplers", ret, self.glGetError());
30266		} else {
30267			return ret
30268		}
30269		#[cfg(not(feature = "diagnose"))]
30270		return ret;
30271	}
30272	#[inline(always)]
30273	fn glCreateProgramPipelines(&self, n: GLsizei, pipelines: *mut GLuint) -> Result<()> {
30274		#[cfg(feature = "catch_nullptr")]
30275		let ret = process_catch("glCreateProgramPipelines", catch_unwind(||(self.createprogrampipelines)(n, pipelines)));
30276		#[cfg(not(feature = "catch_nullptr"))]
30277		let ret = {(self.createprogrampipelines)(n, pipelines); Ok(())};
30278		#[cfg(feature = "diagnose")]
30279		if let Ok(ret) = ret {
30280			return to_result("glCreateProgramPipelines", ret, self.glGetError());
30281		} else {
30282			return ret
30283		}
30284		#[cfg(not(feature = "diagnose"))]
30285		return ret;
30286	}
30287	#[inline(always)]
30288	fn glCreateQueries(&self, target: GLenum, n: GLsizei, ids: *mut GLuint) -> Result<()> {
30289		#[cfg(feature = "catch_nullptr")]
30290		let ret = process_catch("glCreateQueries", catch_unwind(||(self.createqueries)(target, n, ids)));
30291		#[cfg(not(feature = "catch_nullptr"))]
30292		let ret = {(self.createqueries)(target, n, ids); Ok(())};
30293		#[cfg(feature = "diagnose")]
30294		if let Ok(ret) = ret {
30295			return to_result("glCreateQueries", ret, self.glGetError());
30296		} else {
30297			return ret
30298		}
30299		#[cfg(not(feature = "diagnose"))]
30300		return ret;
30301	}
30302	#[inline(always)]
30303	fn glGetQueryBufferObjecti64v(&self, id: GLuint, buffer: GLuint, pname: GLenum, offset: GLintptr) -> Result<()> {
30304		#[cfg(feature = "catch_nullptr")]
30305		let ret = process_catch("glGetQueryBufferObjecti64v", catch_unwind(||(self.getquerybufferobjecti64v)(id, buffer, pname, offset)));
30306		#[cfg(not(feature = "catch_nullptr"))]
30307		let ret = {(self.getquerybufferobjecti64v)(id, buffer, pname, offset); Ok(())};
30308		#[cfg(feature = "diagnose")]
30309		if let Ok(ret) = ret {
30310			return to_result("glGetQueryBufferObjecti64v", ret, self.glGetError());
30311		} else {
30312			return ret
30313		}
30314		#[cfg(not(feature = "diagnose"))]
30315		return ret;
30316	}
30317	#[inline(always)]
30318	fn glGetQueryBufferObjectiv(&self, id: GLuint, buffer: GLuint, pname: GLenum, offset: GLintptr) -> Result<()> {
30319		#[cfg(feature = "catch_nullptr")]
30320		let ret = process_catch("glGetQueryBufferObjectiv", catch_unwind(||(self.getquerybufferobjectiv)(id, buffer, pname, offset)));
30321		#[cfg(not(feature = "catch_nullptr"))]
30322		let ret = {(self.getquerybufferobjectiv)(id, buffer, pname, offset); Ok(())};
30323		#[cfg(feature = "diagnose")]
30324		if let Ok(ret) = ret {
30325			return to_result("glGetQueryBufferObjectiv", ret, self.glGetError());
30326		} else {
30327			return ret
30328		}
30329		#[cfg(not(feature = "diagnose"))]
30330		return ret;
30331	}
30332	#[inline(always)]
30333	fn glGetQueryBufferObjectui64v(&self, id: GLuint, buffer: GLuint, pname: GLenum, offset: GLintptr) -> Result<()> {
30334		#[cfg(feature = "catch_nullptr")]
30335		let ret = process_catch("glGetQueryBufferObjectui64v", catch_unwind(||(self.getquerybufferobjectui64v)(id, buffer, pname, offset)));
30336		#[cfg(not(feature = "catch_nullptr"))]
30337		let ret = {(self.getquerybufferobjectui64v)(id, buffer, pname, offset); Ok(())};
30338		#[cfg(feature = "diagnose")]
30339		if let Ok(ret) = ret {
30340			return to_result("glGetQueryBufferObjectui64v", ret, self.glGetError());
30341		} else {
30342			return ret
30343		}
30344		#[cfg(not(feature = "diagnose"))]
30345		return ret;
30346	}
30347	#[inline(always)]
30348	fn glGetQueryBufferObjectuiv(&self, id: GLuint, buffer: GLuint, pname: GLenum, offset: GLintptr) -> Result<()> {
30349		#[cfg(feature = "catch_nullptr")]
30350		let ret = process_catch("glGetQueryBufferObjectuiv", catch_unwind(||(self.getquerybufferobjectuiv)(id, buffer, pname, offset)));
30351		#[cfg(not(feature = "catch_nullptr"))]
30352		let ret = {(self.getquerybufferobjectuiv)(id, buffer, pname, offset); Ok(())};
30353		#[cfg(feature = "diagnose")]
30354		if let Ok(ret) = ret {
30355			return to_result("glGetQueryBufferObjectuiv", ret, self.glGetError());
30356		} else {
30357			return ret
30358		}
30359		#[cfg(not(feature = "diagnose"))]
30360		return ret;
30361	}
30362	#[inline(always)]
30363	fn glMemoryBarrierByRegion(&self, barriers: GLbitfield) -> Result<()> {
30364		#[cfg(feature = "catch_nullptr")]
30365		let ret = process_catch("glMemoryBarrierByRegion", catch_unwind(||(self.memorybarrierbyregion)(barriers)));
30366		#[cfg(not(feature = "catch_nullptr"))]
30367		let ret = {(self.memorybarrierbyregion)(barriers); Ok(())};
30368		#[cfg(feature = "diagnose")]
30369		if let Ok(ret) = ret {
30370			return to_result("glMemoryBarrierByRegion", ret, self.glGetError());
30371		} else {
30372			return ret
30373		}
30374		#[cfg(not(feature = "diagnose"))]
30375		return ret;
30376	}
30377	#[inline(always)]
30378	fn glGetTextureSubImage(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type_: GLenum, bufSize: GLsizei, pixels: *mut c_void) -> Result<()> {
30379		#[cfg(feature = "catch_nullptr")]
30380		let ret = process_catch("glGetTextureSubImage", catch_unwind(||(self.gettexturesubimage)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, bufSize, pixels)));
30381		#[cfg(not(feature = "catch_nullptr"))]
30382		let ret = {(self.gettexturesubimage)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, bufSize, pixels); Ok(())};
30383		#[cfg(feature = "diagnose")]
30384		if let Ok(ret) = ret {
30385			return to_result("glGetTextureSubImage", ret, self.glGetError());
30386		} else {
30387			return ret
30388		}
30389		#[cfg(not(feature = "diagnose"))]
30390		return ret;
30391	}
30392	#[inline(always)]
30393	fn glGetCompressedTextureSubImage(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, bufSize: GLsizei, pixels: *mut c_void) -> Result<()> {
30394		#[cfg(feature = "catch_nullptr")]
30395		let ret = process_catch("glGetCompressedTextureSubImage", catch_unwind(||(self.getcompressedtexturesubimage)(texture, level, xoffset, yoffset, zoffset, width, height, depth, bufSize, pixels)));
30396		#[cfg(not(feature = "catch_nullptr"))]
30397		let ret = {(self.getcompressedtexturesubimage)(texture, level, xoffset, yoffset, zoffset, width, height, depth, bufSize, pixels); Ok(())};
30398		#[cfg(feature = "diagnose")]
30399		if let Ok(ret) = ret {
30400			return to_result("glGetCompressedTextureSubImage", ret, self.glGetError());
30401		} else {
30402			return ret
30403		}
30404		#[cfg(not(feature = "diagnose"))]
30405		return ret;
30406	}
30407	#[inline(always)]
30408	fn glGetGraphicsResetStatus(&self) -> Result<GLenum> {
30409		#[cfg(feature = "catch_nullptr")]
30410		let ret = process_catch("glGetGraphicsResetStatus", catch_unwind(||(self.getgraphicsresetstatus)()));
30411		#[cfg(not(feature = "catch_nullptr"))]
30412		let ret = Ok((self.getgraphicsresetstatus)());
30413		#[cfg(feature = "diagnose")]
30414		if let Ok(ret) = ret {
30415			return to_result("glGetGraphicsResetStatus", ret, self.glGetError());
30416		} else {
30417			return ret
30418		}
30419		#[cfg(not(feature = "diagnose"))]
30420		return ret;
30421	}
30422	#[inline(always)]
30423	fn glGetnCompressedTexImage(&self, target: GLenum, lod: GLint, bufSize: GLsizei, pixels: *mut c_void) -> Result<()> {
30424		#[cfg(feature = "catch_nullptr")]
30425		let ret = process_catch("glGetnCompressedTexImage", catch_unwind(||(self.getncompressedteximage)(target, lod, bufSize, pixels)));
30426		#[cfg(not(feature = "catch_nullptr"))]
30427		let ret = {(self.getncompressedteximage)(target, lod, bufSize, pixels); Ok(())};
30428		#[cfg(feature = "diagnose")]
30429		if let Ok(ret) = ret {
30430			return to_result("glGetnCompressedTexImage", ret, self.glGetError());
30431		} else {
30432			return ret
30433		}
30434		#[cfg(not(feature = "diagnose"))]
30435		return ret;
30436	}
30437	#[inline(always)]
30438	fn glGetnTexImage(&self, target: GLenum, level: GLint, format: GLenum, type_: GLenum, bufSize: GLsizei, pixels: *mut c_void) -> Result<()> {
30439		#[cfg(feature = "catch_nullptr")]
30440		let ret = process_catch("glGetnTexImage", catch_unwind(||(self.getnteximage)(target, level, format, type_, bufSize, pixels)));
30441		#[cfg(not(feature = "catch_nullptr"))]
30442		let ret = {(self.getnteximage)(target, level, format, type_, bufSize, pixels); Ok(())};
30443		#[cfg(feature = "diagnose")]
30444		if let Ok(ret) = ret {
30445			return to_result("glGetnTexImage", ret, self.glGetError());
30446		} else {
30447			return ret
30448		}
30449		#[cfg(not(feature = "diagnose"))]
30450		return ret;
30451	}
30452	#[inline(always)]
30453	fn glGetnUniformdv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLdouble) -> Result<()> {
30454		#[cfg(feature = "catch_nullptr")]
30455		let ret = process_catch("glGetnUniformdv", catch_unwind(||(self.getnuniformdv)(program, location, bufSize, params)));
30456		#[cfg(not(feature = "catch_nullptr"))]
30457		let ret = {(self.getnuniformdv)(program, location, bufSize, params); Ok(())};
30458		#[cfg(feature = "diagnose")]
30459		if let Ok(ret) = ret {
30460			return to_result("glGetnUniformdv", ret, self.glGetError());
30461		} else {
30462			return ret
30463		}
30464		#[cfg(not(feature = "diagnose"))]
30465		return ret;
30466	}
30467	#[inline(always)]
30468	fn glGetnUniformfv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLfloat) -> Result<()> {
30469		#[cfg(feature = "catch_nullptr")]
30470		let ret = process_catch("glGetnUniformfv", catch_unwind(||(self.getnuniformfv)(program, location, bufSize, params)));
30471		#[cfg(not(feature = "catch_nullptr"))]
30472		let ret = {(self.getnuniformfv)(program, location, bufSize, params); Ok(())};
30473		#[cfg(feature = "diagnose")]
30474		if let Ok(ret) = ret {
30475			return to_result("glGetnUniformfv", ret, self.glGetError());
30476		} else {
30477			return ret
30478		}
30479		#[cfg(not(feature = "diagnose"))]
30480		return ret;
30481	}
30482	#[inline(always)]
30483	fn glGetnUniformiv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLint) -> Result<()> {
30484		#[cfg(feature = "catch_nullptr")]
30485		let ret = process_catch("glGetnUniformiv", catch_unwind(||(self.getnuniformiv)(program, location, bufSize, params)));
30486		#[cfg(not(feature = "catch_nullptr"))]
30487		let ret = {(self.getnuniformiv)(program, location, bufSize, params); Ok(())};
30488		#[cfg(feature = "diagnose")]
30489		if let Ok(ret) = ret {
30490			return to_result("glGetnUniformiv", ret, self.glGetError());
30491		} else {
30492			return ret
30493		}
30494		#[cfg(not(feature = "diagnose"))]
30495		return ret;
30496	}
30497	#[inline(always)]
30498	fn glGetnUniformuiv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLuint) -> Result<()> {
30499		#[cfg(feature = "catch_nullptr")]
30500		let ret = process_catch("glGetnUniformuiv", catch_unwind(||(self.getnuniformuiv)(program, location, bufSize, params)));
30501		#[cfg(not(feature = "catch_nullptr"))]
30502		let ret = {(self.getnuniformuiv)(program, location, bufSize, params); Ok(())};
30503		#[cfg(feature = "diagnose")]
30504		if let Ok(ret) = ret {
30505			return to_result("glGetnUniformuiv", ret, self.glGetError());
30506		} else {
30507			return ret
30508		}
30509		#[cfg(not(feature = "diagnose"))]
30510		return ret;
30511	}
30512	#[inline(always)]
30513	fn glReadnPixels(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, bufSize: GLsizei, data: *mut c_void) -> Result<()> {
30514		#[cfg(feature = "catch_nullptr")]
30515		let ret = process_catch("glReadnPixels", catch_unwind(||(self.readnpixels)(x, y, width, height, format, type_, bufSize, data)));
30516		#[cfg(not(feature = "catch_nullptr"))]
30517		let ret = {(self.readnpixels)(x, y, width, height, format, type_, bufSize, data); Ok(())};
30518		#[cfg(feature = "diagnose")]
30519		if let Ok(ret) = ret {
30520			return to_result("glReadnPixels", ret, self.glGetError());
30521		} else {
30522			return ret
30523		}
30524		#[cfg(not(feature = "diagnose"))]
30525		return ret;
30526	}
30527	#[inline(always)]
30528	fn glGetnMapdv(&self, target: GLenum, query: GLenum, bufSize: GLsizei, v: *mut GLdouble) -> Result<()> {
30529		#[cfg(feature = "catch_nullptr")]
30530		let ret = process_catch("glGetnMapdv", catch_unwind(||(self.getnmapdv)(target, query, bufSize, v)));
30531		#[cfg(not(feature = "catch_nullptr"))]
30532		let ret = {(self.getnmapdv)(target, query, bufSize, v); Ok(())};
30533		#[cfg(feature = "diagnose")]
30534		if let Ok(ret) = ret {
30535			return to_result("glGetnMapdv", ret, self.glGetError());
30536		} else {
30537			return ret
30538		}
30539		#[cfg(not(feature = "diagnose"))]
30540		return ret;
30541	}
30542	#[inline(always)]
30543	fn glGetnMapfv(&self, target: GLenum, query: GLenum, bufSize: GLsizei, v: *mut GLfloat) -> Result<()> {
30544		#[cfg(feature = "catch_nullptr")]
30545		let ret = process_catch("glGetnMapfv", catch_unwind(||(self.getnmapfv)(target, query, bufSize, v)));
30546		#[cfg(not(feature = "catch_nullptr"))]
30547		let ret = {(self.getnmapfv)(target, query, bufSize, v); Ok(())};
30548		#[cfg(feature = "diagnose")]
30549		if let Ok(ret) = ret {
30550			return to_result("glGetnMapfv", ret, self.glGetError());
30551		} else {
30552			return ret
30553		}
30554		#[cfg(not(feature = "diagnose"))]
30555		return ret;
30556	}
30557	#[inline(always)]
30558	fn glGetnMapiv(&self, target: GLenum, query: GLenum, bufSize: GLsizei, v: *mut GLint) -> Result<()> {
30559		#[cfg(feature = "catch_nullptr")]
30560		let ret = process_catch("glGetnMapiv", catch_unwind(||(self.getnmapiv)(target, query, bufSize, v)));
30561		#[cfg(not(feature = "catch_nullptr"))]
30562		let ret = {(self.getnmapiv)(target, query, bufSize, v); Ok(())};
30563		#[cfg(feature = "diagnose")]
30564		if let Ok(ret) = ret {
30565			return to_result("glGetnMapiv", ret, self.glGetError());
30566		} else {
30567			return ret
30568		}
30569		#[cfg(not(feature = "diagnose"))]
30570		return ret;
30571	}
30572	#[inline(always)]
30573	fn glGetnPixelMapfv(&self, map: GLenum, bufSize: GLsizei, values: *mut GLfloat) -> Result<()> {
30574		#[cfg(feature = "catch_nullptr")]
30575		let ret = process_catch("glGetnPixelMapfv", catch_unwind(||(self.getnpixelmapfv)(map, bufSize, values)));
30576		#[cfg(not(feature = "catch_nullptr"))]
30577		let ret = {(self.getnpixelmapfv)(map, bufSize, values); Ok(())};
30578		#[cfg(feature = "diagnose")]
30579		if let Ok(ret) = ret {
30580			return to_result("glGetnPixelMapfv", ret, self.glGetError());
30581		} else {
30582			return ret
30583		}
30584		#[cfg(not(feature = "diagnose"))]
30585		return ret;
30586	}
30587	#[inline(always)]
30588	fn glGetnPixelMapuiv(&self, map: GLenum, bufSize: GLsizei, values: *mut GLuint) -> Result<()> {
30589		#[cfg(feature = "catch_nullptr")]
30590		let ret = process_catch("glGetnPixelMapuiv", catch_unwind(||(self.getnpixelmapuiv)(map, bufSize, values)));
30591		#[cfg(not(feature = "catch_nullptr"))]
30592		let ret = {(self.getnpixelmapuiv)(map, bufSize, values); Ok(())};
30593		#[cfg(feature = "diagnose")]
30594		if let Ok(ret) = ret {
30595			return to_result("glGetnPixelMapuiv", ret, self.glGetError());
30596		} else {
30597			return ret
30598		}
30599		#[cfg(not(feature = "diagnose"))]
30600		return ret;
30601	}
30602	#[inline(always)]
30603	fn glGetnPixelMapusv(&self, map: GLenum, bufSize: GLsizei, values: *mut GLushort) -> Result<()> {
30604		#[cfg(feature = "catch_nullptr")]
30605		let ret = process_catch("glGetnPixelMapusv", catch_unwind(||(self.getnpixelmapusv)(map, bufSize, values)));
30606		#[cfg(not(feature = "catch_nullptr"))]
30607		let ret = {(self.getnpixelmapusv)(map, bufSize, values); Ok(())};
30608		#[cfg(feature = "diagnose")]
30609		if let Ok(ret) = ret {
30610			return to_result("glGetnPixelMapusv", ret, self.glGetError());
30611		} else {
30612			return ret
30613		}
30614		#[cfg(not(feature = "diagnose"))]
30615		return ret;
30616	}
30617	#[inline(always)]
30618	fn glGetnPolygonStipple(&self, bufSize: GLsizei, pattern: *mut GLubyte) -> Result<()> {
30619		#[cfg(feature = "catch_nullptr")]
30620		let ret = process_catch("glGetnPolygonStipple", catch_unwind(||(self.getnpolygonstipple)(bufSize, pattern)));
30621		#[cfg(not(feature = "catch_nullptr"))]
30622		let ret = {(self.getnpolygonstipple)(bufSize, pattern); Ok(())};
30623		#[cfg(feature = "diagnose")]
30624		if let Ok(ret) = ret {
30625			return to_result("glGetnPolygonStipple", ret, self.glGetError());
30626		} else {
30627			return ret
30628		}
30629		#[cfg(not(feature = "diagnose"))]
30630		return ret;
30631	}
30632	#[inline(always)]
30633	fn glGetnColorTable(&self, target: GLenum, format: GLenum, type_: GLenum, bufSize: GLsizei, table: *mut c_void) -> Result<()> {
30634		#[cfg(feature = "catch_nullptr")]
30635		let ret = process_catch("glGetnColorTable", catch_unwind(||(self.getncolortable)(target, format, type_, bufSize, table)));
30636		#[cfg(not(feature = "catch_nullptr"))]
30637		let ret = {(self.getncolortable)(target, format, type_, bufSize, table); Ok(())};
30638		#[cfg(feature = "diagnose")]
30639		if let Ok(ret) = ret {
30640			return to_result("glGetnColorTable", ret, self.glGetError());
30641		} else {
30642			return ret
30643		}
30644		#[cfg(not(feature = "diagnose"))]
30645		return ret;
30646	}
30647	#[inline(always)]
30648	fn glGetnConvolutionFilter(&self, target: GLenum, format: GLenum, type_: GLenum, bufSize: GLsizei, image: *mut c_void) -> Result<()> {
30649		#[cfg(feature = "catch_nullptr")]
30650		let ret = process_catch("glGetnConvolutionFilter", catch_unwind(||(self.getnconvolutionfilter)(target, format, type_, bufSize, image)));
30651		#[cfg(not(feature = "catch_nullptr"))]
30652		let ret = {(self.getnconvolutionfilter)(target, format, type_, bufSize, image); Ok(())};
30653		#[cfg(feature = "diagnose")]
30654		if let Ok(ret) = ret {
30655			return to_result("glGetnConvolutionFilter", ret, self.glGetError());
30656		} else {
30657			return ret
30658		}
30659		#[cfg(not(feature = "diagnose"))]
30660		return ret;
30661	}
30662	#[inline(always)]
30663	fn glGetnSeparableFilter(&self, target: GLenum, format: GLenum, type_: GLenum, rowBufSize: GLsizei, row: *mut c_void, columnBufSize: GLsizei, column: *mut c_void, span: *mut c_void) -> Result<()> {
30664		#[cfg(feature = "catch_nullptr")]
30665		let ret = process_catch("glGetnSeparableFilter", catch_unwind(||(self.getnseparablefilter)(target, format, type_, rowBufSize, row, columnBufSize, column, span)));
30666		#[cfg(not(feature = "catch_nullptr"))]
30667		let ret = {(self.getnseparablefilter)(target, format, type_, rowBufSize, row, columnBufSize, column, span); Ok(())};
30668		#[cfg(feature = "diagnose")]
30669		if let Ok(ret) = ret {
30670			return to_result("glGetnSeparableFilter", ret, self.glGetError());
30671		} else {
30672			return ret
30673		}
30674		#[cfg(not(feature = "diagnose"))]
30675		return ret;
30676	}
30677	#[inline(always)]
30678	fn glGetnHistogram(&self, target: GLenum, reset: GLboolean, format: GLenum, type_: GLenum, bufSize: GLsizei, values: *mut c_void) -> Result<()> {
30679		#[cfg(feature = "catch_nullptr")]
30680		let ret = process_catch("glGetnHistogram", catch_unwind(||(self.getnhistogram)(target, reset, format, type_, bufSize, values)));
30681		#[cfg(not(feature = "catch_nullptr"))]
30682		let ret = {(self.getnhistogram)(target, reset, format, type_, bufSize, values); Ok(())};
30683		#[cfg(feature = "diagnose")]
30684		if let Ok(ret) = ret {
30685			return to_result("glGetnHistogram", ret, self.glGetError());
30686		} else {
30687			return ret
30688		}
30689		#[cfg(not(feature = "diagnose"))]
30690		return ret;
30691	}
30692	#[inline(always)]
30693	fn glGetnMinmax(&self, target: GLenum, reset: GLboolean, format: GLenum, type_: GLenum, bufSize: GLsizei, values: *mut c_void) -> Result<()> {
30694		#[cfg(feature = "catch_nullptr")]
30695		let ret = process_catch("glGetnMinmax", catch_unwind(||(self.getnminmax)(target, reset, format, type_, bufSize, values)));
30696		#[cfg(not(feature = "catch_nullptr"))]
30697		let ret = {(self.getnminmax)(target, reset, format, type_, bufSize, values); Ok(())};
30698		#[cfg(feature = "diagnose")]
30699		if let Ok(ret) = ret {
30700			return to_result("glGetnMinmax", ret, self.glGetError());
30701		} else {
30702			return ret
30703		}
30704		#[cfg(not(feature = "diagnose"))]
30705		return ret;
30706	}
30707	#[inline(always)]
30708	fn glTextureBarrier(&self) -> Result<()> {
30709		#[cfg(feature = "catch_nullptr")]
30710		let ret = process_catch("glTextureBarrier", catch_unwind(||(self.texturebarrier)()));
30711		#[cfg(not(feature = "catch_nullptr"))]
30712		let ret = {(self.texturebarrier)(); Ok(())};
30713		#[cfg(feature = "diagnose")]
30714		if let Ok(ret) = ret {
30715			return to_result("glTextureBarrier", ret, self.glGetError());
30716		} else {
30717			return ret
30718		}
30719		#[cfg(not(feature = "diagnose"))]
30720		return ret;
30721	}
30722}
30723
30724impl Version45 {
30725	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
30726		let (_spec, major, minor, release) = base.get_version();
30727		if (major, minor, release) < (4, 5, 0) {
30728			return Self::default();
30729		}
30730		Self {
30731			available: true,
30732			geterror: {let proc = get_proc_address("glGetError"); if proc.is_null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
30733			clipcontrol: {let proc = get_proc_address("glClipControl"); if proc.is_null() {dummy_pfnglclipcontrolproc} else {unsafe{transmute(proc)}}},
30734			createtransformfeedbacks: {let proc = get_proc_address("glCreateTransformFeedbacks"); if proc.is_null() {dummy_pfnglcreatetransformfeedbacksproc} else {unsafe{transmute(proc)}}},
30735			transformfeedbackbufferbase: {let proc = get_proc_address("glTransformFeedbackBufferBase"); if proc.is_null() {dummy_pfngltransformfeedbackbufferbaseproc} else {unsafe{transmute(proc)}}},
30736			transformfeedbackbufferrange: {let proc = get_proc_address("glTransformFeedbackBufferRange"); if proc.is_null() {dummy_pfngltransformfeedbackbufferrangeproc} else {unsafe{transmute(proc)}}},
30737			gettransformfeedbackiv: {let proc = get_proc_address("glGetTransformFeedbackiv"); if proc.is_null() {dummy_pfnglgettransformfeedbackivproc} else {unsafe{transmute(proc)}}},
30738			gettransformfeedbacki_v: {let proc = get_proc_address("glGetTransformFeedbacki_v"); if proc.is_null() {dummy_pfnglgettransformfeedbacki_vproc} else {unsafe{transmute(proc)}}},
30739			gettransformfeedbacki64_v: {let proc = get_proc_address("glGetTransformFeedbacki64_v"); if proc.is_null() {dummy_pfnglgettransformfeedbacki64_vproc} else {unsafe{transmute(proc)}}},
30740			createbuffers: {let proc = get_proc_address("glCreateBuffers"); if proc.is_null() {dummy_pfnglcreatebuffersproc} else {unsafe{transmute(proc)}}},
30741			namedbufferstorage: {let proc = get_proc_address("glNamedBufferStorage"); if proc.is_null() {dummy_pfnglnamedbufferstorageproc} else {unsafe{transmute(proc)}}},
30742			namedbufferdata: {let proc = get_proc_address("glNamedBufferData"); if proc.is_null() {dummy_pfnglnamedbufferdataproc} else {unsafe{transmute(proc)}}},
30743			namedbuffersubdata: {let proc = get_proc_address("glNamedBufferSubData"); if proc.is_null() {dummy_pfnglnamedbuffersubdataproc} else {unsafe{transmute(proc)}}},
30744			copynamedbuffersubdata: {let proc = get_proc_address("glCopyNamedBufferSubData"); if proc.is_null() {dummy_pfnglcopynamedbuffersubdataproc} else {unsafe{transmute(proc)}}},
30745			clearnamedbufferdata: {let proc = get_proc_address("glClearNamedBufferData"); if proc.is_null() {dummy_pfnglclearnamedbufferdataproc} else {unsafe{transmute(proc)}}},
30746			clearnamedbuffersubdata: {let proc = get_proc_address("glClearNamedBufferSubData"); if proc.is_null() {dummy_pfnglclearnamedbuffersubdataproc} else {unsafe{transmute(proc)}}},
30747			mapnamedbuffer: {let proc = get_proc_address("glMapNamedBuffer"); if proc.is_null() {dummy_pfnglmapnamedbufferproc} else {unsafe{transmute(proc)}}},
30748			mapnamedbufferrange: {let proc = get_proc_address("glMapNamedBufferRange"); if proc.is_null() {dummy_pfnglmapnamedbufferrangeproc} else {unsafe{transmute(proc)}}},
30749			unmapnamedbuffer: {let proc = get_proc_address("glUnmapNamedBuffer"); if proc.is_null() {dummy_pfnglunmapnamedbufferproc} else {unsafe{transmute(proc)}}},
30750			flushmappednamedbufferrange: {let proc = get_proc_address("glFlushMappedNamedBufferRange"); if proc.is_null() {dummy_pfnglflushmappednamedbufferrangeproc} else {unsafe{transmute(proc)}}},
30751			getnamedbufferparameteriv: {let proc = get_proc_address("glGetNamedBufferParameteriv"); if proc.is_null() {dummy_pfnglgetnamedbufferparameterivproc} else {unsafe{transmute(proc)}}},
30752			getnamedbufferparameteri64v: {let proc = get_proc_address("glGetNamedBufferParameteri64v"); if proc.is_null() {dummy_pfnglgetnamedbufferparameteri64vproc} else {unsafe{transmute(proc)}}},
30753			getnamedbufferpointerv: {let proc = get_proc_address("glGetNamedBufferPointerv"); if proc.is_null() {dummy_pfnglgetnamedbufferpointervproc} else {unsafe{transmute(proc)}}},
30754			getnamedbuffersubdata: {let proc = get_proc_address("glGetNamedBufferSubData"); if proc.is_null() {dummy_pfnglgetnamedbuffersubdataproc} else {unsafe{transmute(proc)}}},
30755			createframebuffers: {let proc = get_proc_address("glCreateFramebuffers"); if proc.is_null() {dummy_pfnglcreateframebuffersproc} else {unsafe{transmute(proc)}}},
30756			namedframebufferrenderbuffer: {let proc = get_proc_address("glNamedFramebufferRenderbuffer"); if proc.is_null() {dummy_pfnglnamedframebufferrenderbufferproc} else {unsafe{transmute(proc)}}},
30757			namedframebufferparameteri: {let proc = get_proc_address("glNamedFramebufferParameteri"); if proc.is_null() {dummy_pfnglnamedframebufferparameteriproc} else {unsafe{transmute(proc)}}},
30758			namedframebuffertexture: {let proc = get_proc_address("glNamedFramebufferTexture"); if proc.is_null() {dummy_pfnglnamedframebuffertextureproc} else {unsafe{transmute(proc)}}},
30759			namedframebuffertexturelayer: {let proc = get_proc_address("glNamedFramebufferTextureLayer"); if proc.is_null() {dummy_pfnglnamedframebuffertexturelayerproc} else {unsafe{transmute(proc)}}},
30760			namedframebufferdrawbuffer: {let proc = get_proc_address("glNamedFramebufferDrawBuffer"); if proc.is_null() {dummy_pfnglnamedframebufferdrawbufferproc} else {unsafe{transmute(proc)}}},
30761			namedframebufferdrawbuffers: {let proc = get_proc_address("glNamedFramebufferDrawBuffers"); if proc.is_null() {dummy_pfnglnamedframebufferdrawbuffersproc} else {unsafe{transmute(proc)}}},
30762			namedframebufferreadbuffer: {let proc = get_proc_address("glNamedFramebufferReadBuffer"); if proc.is_null() {dummy_pfnglnamedframebufferreadbufferproc} else {unsafe{transmute(proc)}}},
30763			invalidatenamedframebufferdata: {let proc = get_proc_address("glInvalidateNamedFramebufferData"); if proc.is_null() {dummy_pfnglinvalidatenamedframebufferdataproc} else {unsafe{transmute(proc)}}},
30764			invalidatenamedframebuffersubdata: {let proc = get_proc_address("glInvalidateNamedFramebufferSubData"); if proc.is_null() {dummy_pfnglinvalidatenamedframebuffersubdataproc} else {unsafe{transmute(proc)}}},
30765			clearnamedframebufferiv: {let proc = get_proc_address("glClearNamedFramebufferiv"); if proc.is_null() {dummy_pfnglclearnamedframebufferivproc} else {unsafe{transmute(proc)}}},
30766			clearnamedframebufferuiv: {let proc = get_proc_address("glClearNamedFramebufferuiv"); if proc.is_null() {dummy_pfnglclearnamedframebufferuivproc} else {unsafe{transmute(proc)}}},
30767			clearnamedframebufferfv: {let proc = get_proc_address("glClearNamedFramebufferfv"); if proc.is_null() {dummy_pfnglclearnamedframebufferfvproc} else {unsafe{transmute(proc)}}},
30768			clearnamedframebufferfi: {let proc = get_proc_address("glClearNamedFramebufferfi"); if proc.is_null() {dummy_pfnglclearnamedframebufferfiproc} else {unsafe{transmute(proc)}}},
30769			blitnamedframebuffer: {let proc = get_proc_address("glBlitNamedFramebuffer"); if proc.is_null() {dummy_pfnglblitnamedframebufferproc} else {unsafe{transmute(proc)}}},
30770			checknamedframebufferstatus: {let proc = get_proc_address("glCheckNamedFramebufferStatus"); if proc.is_null() {dummy_pfnglchecknamedframebufferstatusproc} else {unsafe{transmute(proc)}}},
30771			getnamedframebufferparameteriv: {let proc = get_proc_address("glGetNamedFramebufferParameteriv"); if proc.is_null() {dummy_pfnglgetnamedframebufferparameterivproc} else {unsafe{transmute(proc)}}},
30772			getnamedframebufferattachmentparameteriv: {let proc = get_proc_address("glGetNamedFramebufferAttachmentParameteriv"); if proc.is_null() {dummy_pfnglgetnamedframebufferattachmentparameterivproc} else {unsafe{transmute(proc)}}},
30773			createrenderbuffers: {let proc = get_proc_address("glCreateRenderbuffers"); if proc.is_null() {dummy_pfnglcreaterenderbuffersproc} else {unsafe{transmute(proc)}}},
30774			namedrenderbufferstorage: {let proc = get_proc_address("glNamedRenderbufferStorage"); if proc.is_null() {dummy_pfnglnamedrenderbufferstorageproc} else {unsafe{transmute(proc)}}},
30775			namedrenderbufferstoragemultisample: {let proc = get_proc_address("glNamedRenderbufferStorageMultisample"); if proc.is_null() {dummy_pfnglnamedrenderbufferstoragemultisampleproc} else {unsafe{transmute(proc)}}},
30776			getnamedrenderbufferparameteriv: {let proc = get_proc_address("glGetNamedRenderbufferParameteriv"); if proc.is_null() {dummy_pfnglgetnamedrenderbufferparameterivproc} else {unsafe{transmute(proc)}}},
30777			createtextures: {let proc = get_proc_address("glCreateTextures"); if proc.is_null() {dummy_pfnglcreatetexturesproc} else {unsafe{transmute(proc)}}},
30778			texturebuffer: {let proc = get_proc_address("glTextureBuffer"); if proc.is_null() {dummy_pfngltexturebufferproc} else {unsafe{transmute(proc)}}},
30779			texturebufferrange: {let proc = get_proc_address("glTextureBufferRange"); if proc.is_null() {dummy_pfngltexturebufferrangeproc} else {unsafe{transmute(proc)}}},
30780			texturestorage1d: {let proc = get_proc_address("glTextureStorage1D"); if proc.is_null() {dummy_pfngltexturestorage1dproc} else {unsafe{transmute(proc)}}},
30781			texturestorage2d: {let proc = get_proc_address("glTextureStorage2D"); if proc.is_null() {dummy_pfngltexturestorage2dproc} else {unsafe{transmute(proc)}}},
30782			texturestorage3d: {let proc = get_proc_address("glTextureStorage3D"); if proc.is_null() {dummy_pfngltexturestorage3dproc} else {unsafe{transmute(proc)}}},
30783			texturestorage2dmultisample: {let proc = get_proc_address("glTextureStorage2DMultisample"); if proc.is_null() {dummy_pfngltexturestorage2dmultisampleproc} else {unsafe{transmute(proc)}}},
30784			texturestorage3dmultisample: {let proc = get_proc_address("glTextureStorage3DMultisample"); if proc.is_null() {dummy_pfngltexturestorage3dmultisampleproc} else {unsafe{transmute(proc)}}},
30785			texturesubimage1d: {let proc = get_proc_address("glTextureSubImage1D"); if proc.is_null() {dummy_pfngltexturesubimage1dproc} else {unsafe{transmute(proc)}}},
30786			texturesubimage2d: {let proc = get_proc_address("glTextureSubImage2D"); if proc.is_null() {dummy_pfngltexturesubimage2dproc} else {unsafe{transmute(proc)}}},
30787			texturesubimage3d: {let proc = get_proc_address("glTextureSubImage3D"); if proc.is_null() {dummy_pfngltexturesubimage3dproc} else {unsafe{transmute(proc)}}},
30788			compressedtexturesubimage1d: {let proc = get_proc_address("glCompressedTextureSubImage1D"); if proc.is_null() {dummy_pfnglcompressedtexturesubimage1dproc} else {unsafe{transmute(proc)}}},
30789			compressedtexturesubimage2d: {let proc = get_proc_address("glCompressedTextureSubImage2D"); if proc.is_null() {dummy_pfnglcompressedtexturesubimage2dproc} else {unsafe{transmute(proc)}}},
30790			compressedtexturesubimage3d: {let proc = get_proc_address("glCompressedTextureSubImage3D"); if proc.is_null() {dummy_pfnglcompressedtexturesubimage3dproc} else {unsafe{transmute(proc)}}},
30791			copytexturesubimage1d: {let proc = get_proc_address("glCopyTextureSubImage1D"); if proc.is_null() {dummy_pfnglcopytexturesubimage1dproc} else {unsafe{transmute(proc)}}},
30792			copytexturesubimage2d: {let proc = get_proc_address("glCopyTextureSubImage2D"); if proc.is_null() {dummy_pfnglcopytexturesubimage2dproc} else {unsafe{transmute(proc)}}},
30793			copytexturesubimage3d: {let proc = get_proc_address("glCopyTextureSubImage3D"); if proc.is_null() {dummy_pfnglcopytexturesubimage3dproc} else {unsafe{transmute(proc)}}},
30794			textureparameterf: {let proc = get_proc_address("glTextureParameterf"); if proc.is_null() {dummy_pfngltextureparameterfproc} else {unsafe{transmute(proc)}}},
30795			textureparameterfv: {let proc = get_proc_address("glTextureParameterfv"); if proc.is_null() {dummy_pfngltextureparameterfvproc} else {unsafe{transmute(proc)}}},
30796			textureparameteri: {let proc = get_proc_address("glTextureParameteri"); if proc.is_null() {dummy_pfngltextureparameteriproc} else {unsafe{transmute(proc)}}},
30797			textureparameteriiv: {let proc = get_proc_address("glTextureParameterIiv"); if proc.is_null() {dummy_pfngltextureparameteriivproc} else {unsafe{transmute(proc)}}},
30798			textureparameteriuiv: {let proc = get_proc_address("glTextureParameterIuiv"); if proc.is_null() {dummy_pfngltextureparameteriuivproc} else {unsafe{transmute(proc)}}},
30799			textureparameteriv: {let proc = get_proc_address("glTextureParameteriv"); if proc.is_null() {dummy_pfngltextureparameterivproc} else {unsafe{transmute(proc)}}},
30800			generatetexturemipmap: {let proc = get_proc_address("glGenerateTextureMipmap"); if proc.is_null() {dummy_pfnglgeneratetexturemipmapproc} else {unsafe{transmute(proc)}}},
30801			bindtextureunit: {let proc = get_proc_address("glBindTextureUnit"); if proc.is_null() {dummy_pfnglbindtextureunitproc} else {unsafe{transmute(proc)}}},
30802			gettextureimage: {let proc = get_proc_address("glGetTextureImage"); if proc.is_null() {dummy_pfnglgettextureimageproc} else {unsafe{transmute(proc)}}},
30803			getcompressedtextureimage: {let proc = get_proc_address("glGetCompressedTextureImage"); if proc.is_null() {dummy_pfnglgetcompressedtextureimageproc} else {unsafe{transmute(proc)}}},
30804			gettexturelevelparameterfv: {let proc = get_proc_address("glGetTextureLevelParameterfv"); if proc.is_null() {dummy_pfnglgettexturelevelparameterfvproc} else {unsafe{transmute(proc)}}},
30805			gettexturelevelparameteriv: {let proc = get_proc_address("glGetTextureLevelParameteriv"); if proc.is_null() {dummy_pfnglgettexturelevelparameterivproc} else {unsafe{transmute(proc)}}},
30806			gettextureparameterfv: {let proc = get_proc_address("glGetTextureParameterfv"); if proc.is_null() {dummy_pfnglgettextureparameterfvproc} else {unsafe{transmute(proc)}}},
30807			gettextureparameteriiv: {let proc = get_proc_address("glGetTextureParameterIiv"); if proc.is_null() {dummy_pfnglgettextureparameteriivproc} else {unsafe{transmute(proc)}}},
30808			gettextureparameteriuiv: {let proc = get_proc_address("glGetTextureParameterIuiv"); if proc.is_null() {dummy_pfnglgettextureparameteriuivproc} else {unsafe{transmute(proc)}}},
30809			gettextureparameteriv: {let proc = get_proc_address("glGetTextureParameteriv"); if proc.is_null() {dummy_pfnglgettextureparameterivproc} else {unsafe{transmute(proc)}}},
30810			createvertexarrays: {let proc = get_proc_address("glCreateVertexArrays"); if proc.is_null() {dummy_pfnglcreatevertexarraysproc} else {unsafe{transmute(proc)}}},
30811			disablevertexarrayattrib: {let proc = get_proc_address("glDisableVertexArrayAttrib"); if proc.is_null() {dummy_pfngldisablevertexarrayattribproc} else {unsafe{transmute(proc)}}},
30812			enablevertexarrayattrib: {let proc = get_proc_address("glEnableVertexArrayAttrib"); if proc.is_null() {dummy_pfnglenablevertexarrayattribproc} else {unsafe{transmute(proc)}}},
30813			vertexarrayelementbuffer: {let proc = get_proc_address("glVertexArrayElementBuffer"); if proc.is_null() {dummy_pfnglvertexarrayelementbufferproc} else {unsafe{transmute(proc)}}},
30814			vertexarrayvertexbuffer: {let proc = get_proc_address("glVertexArrayVertexBuffer"); if proc.is_null() {dummy_pfnglvertexarrayvertexbufferproc} else {unsafe{transmute(proc)}}},
30815			vertexarrayvertexbuffers: {let proc = get_proc_address("glVertexArrayVertexBuffers"); if proc.is_null() {dummy_pfnglvertexarrayvertexbuffersproc} else {unsafe{transmute(proc)}}},
30816			vertexarrayattribbinding: {let proc = get_proc_address("glVertexArrayAttribBinding"); if proc.is_null() {dummy_pfnglvertexarrayattribbindingproc} else {unsafe{transmute(proc)}}},
30817			vertexarrayattribformat: {let proc = get_proc_address("glVertexArrayAttribFormat"); if proc.is_null() {dummy_pfnglvertexarrayattribformatproc} else {unsafe{transmute(proc)}}},
30818			vertexarrayattribiformat: {let proc = get_proc_address("glVertexArrayAttribIFormat"); if proc.is_null() {dummy_pfnglvertexarrayattribiformatproc} else {unsafe{transmute(proc)}}},
30819			vertexarrayattriblformat: {let proc = get_proc_address("glVertexArrayAttribLFormat"); if proc.is_null() {dummy_pfnglvertexarrayattriblformatproc} else {unsafe{transmute(proc)}}},
30820			vertexarraybindingdivisor: {let proc = get_proc_address("glVertexArrayBindingDivisor"); if proc.is_null() {dummy_pfnglvertexarraybindingdivisorproc} else {unsafe{transmute(proc)}}},
30821			getvertexarrayiv: {let proc = get_proc_address("glGetVertexArrayiv"); if proc.is_null() {dummy_pfnglgetvertexarrayivproc} else {unsafe{transmute(proc)}}},
30822			getvertexarrayindexediv: {let proc = get_proc_address("glGetVertexArrayIndexediv"); if proc.is_null() {dummy_pfnglgetvertexarrayindexedivproc} else {unsafe{transmute(proc)}}},
30823			getvertexarrayindexed64iv: {let proc = get_proc_address("glGetVertexArrayIndexed64iv"); if proc.is_null() {dummy_pfnglgetvertexarrayindexed64ivproc} else {unsafe{transmute(proc)}}},
30824			createsamplers: {let proc = get_proc_address("glCreateSamplers"); if proc.is_null() {dummy_pfnglcreatesamplersproc} else {unsafe{transmute(proc)}}},
30825			createprogrampipelines: {let proc = get_proc_address("glCreateProgramPipelines"); if proc.is_null() {dummy_pfnglcreateprogrampipelinesproc} else {unsafe{transmute(proc)}}},
30826			createqueries: {let proc = get_proc_address("glCreateQueries"); if proc.is_null() {dummy_pfnglcreatequeriesproc} else {unsafe{transmute(proc)}}},
30827			getquerybufferobjecti64v: {let proc = get_proc_address("glGetQueryBufferObjecti64v"); if proc.is_null() {dummy_pfnglgetquerybufferobjecti64vproc} else {unsafe{transmute(proc)}}},
30828			getquerybufferobjectiv: {let proc = get_proc_address("glGetQueryBufferObjectiv"); if proc.is_null() {dummy_pfnglgetquerybufferobjectivproc} else {unsafe{transmute(proc)}}},
30829			getquerybufferobjectui64v: {let proc = get_proc_address("glGetQueryBufferObjectui64v"); if proc.is_null() {dummy_pfnglgetquerybufferobjectui64vproc} else {unsafe{transmute(proc)}}},
30830			getquerybufferobjectuiv: {let proc = get_proc_address("glGetQueryBufferObjectuiv"); if proc.is_null() {dummy_pfnglgetquerybufferobjectuivproc} else {unsafe{transmute(proc)}}},
30831			memorybarrierbyregion: {let proc = get_proc_address("glMemoryBarrierByRegion"); if proc.is_null() {dummy_pfnglmemorybarrierbyregionproc} else {unsafe{transmute(proc)}}},
30832			gettexturesubimage: {let proc = get_proc_address("glGetTextureSubImage"); if proc.is_null() {dummy_pfnglgettexturesubimageproc} else {unsafe{transmute(proc)}}},
30833			getcompressedtexturesubimage: {let proc = get_proc_address("glGetCompressedTextureSubImage"); if proc.is_null() {dummy_pfnglgetcompressedtexturesubimageproc} else {unsafe{transmute(proc)}}},
30834			getgraphicsresetstatus: {let proc = get_proc_address("glGetGraphicsResetStatus"); if proc.is_null() {dummy_pfnglgetgraphicsresetstatusproc} else {unsafe{transmute(proc)}}},
30835			getncompressedteximage: {let proc = get_proc_address("glGetnCompressedTexImage"); if proc.is_null() {dummy_pfnglgetncompressedteximageproc} else {unsafe{transmute(proc)}}},
30836			getnteximage: {let proc = get_proc_address("glGetnTexImage"); if proc.is_null() {dummy_pfnglgetnteximageproc} else {unsafe{transmute(proc)}}},
30837			getnuniformdv: {let proc = get_proc_address("glGetnUniformdv"); if proc.is_null() {dummy_pfnglgetnuniformdvproc} else {unsafe{transmute(proc)}}},
30838			getnuniformfv: {let proc = get_proc_address("glGetnUniformfv"); if proc.is_null() {dummy_pfnglgetnuniformfvproc} else {unsafe{transmute(proc)}}},
30839			getnuniformiv: {let proc = get_proc_address("glGetnUniformiv"); if proc.is_null() {dummy_pfnglgetnuniformivproc} else {unsafe{transmute(proc)}}},
30840			getnuniformuiv: {let proc = get_proc_address("glGetnUniformuiv"); if proc.is_null() {dummy_pfnglgetnuniformuivproc} else {unsafe{transmute(proc)}}},
30841			readnpixels: {let proc = get_proc_address("glReadnPixels"); if proc.is_null() {dummy_pfnglreadnpixelsproc} else {unsafe{transmute(proc)}}},
30842			getnmapdv: {let proc = get_proc_address("glGetnMapdv"); if proc.is_null() {dummy_pfnglgetnmapdvproc} else {unsafe{transmute(proc)}}},
30843			getnmapfv: {let proc = get_proc_address("glGetnMapfv"); if proc.is_null() {dummy_pfnglgetnmapfvproc} else {unsafe{transmute(proc)}}},
30844			getnmapiv: {let proc = get_proc_address("glGetnMapiv"); if proc.is_null() {dummy_pfnglgetnmapivproc} else {unsafe{transmute(proc)}}},
30845			getnpixelmapfv: {let proc = get_proc_address("glGetnPixelMapfv"); if proc.is_null() {dummy_pfnglgetnpixelmapfvproc} else {unsafe{transmute(proc)}}},
30846			getnpixelmapuiv: {let proc = get_proc_address("glGetnPixelMapuiv"); if proc.is_null() {dummy_pfnglgetnpixelmapuivproc} else {unsafe{transmute(proc)}}},
30847			getnpixelmapusv: {let proc = get_proc_address("glGetnPixelMapusv"); if proc.is_null() {dummy_pfnglgetnpixelmapusvproc} else {unsafe{transmute(proc)}}},
30848			getnpolygonstipple: {let proc = get_proc_address("glGetnPolygonStipple"); if proc.is_null() {dummy_pfnglgetnpolygonstippleproc} else {unsafe{transmute(proc)}}},
30849			getncolortable: {let proc = get_proc_address("glGetnColorTable"); if proc.is_null() {dummy_pfnglgetncolortableproc} else {unsafe{transmute(proc)}}},
30850			getnconvolutionfilter: {let proc = get_proc_address("glGetnConvolutionFilter"); if proc.is_null() {dummy_pfnglgetnconvolutionfilterproc} else {unsafe{transmute(proc)}}},
30851			getnseparablefilter: {let proc = get_proc_address("glGetnSeparableFilter"); if proc.is_null() {dummy_pfnglgetnseparablefilterproc} else {unsafe{transmute(proc)}}},
30852			getnhistogram: {let proc = get_proc_address("glGetnHistogram"); if proc.is_null() {dummy_pfnglgetnhistogramproc} else {unsafe{transmute(proc)}}},
30853			getnminmax: {let proc = get_proc_address("glGetnMinmax"); if proc.is_null() {dummy_pfnglgetnminmaxproc} else {unsafe{transmute(proc)}}},
30854			texturebarrier: {let proc = get_proc_address("glTextureBarrier"); if proc.is_null() {dummy_pfngltexturebarrierproc} else {unsafe{transmute(proc)}}},
30855		}
30856	}
30857	#[inline(always)]
30858	pub fn get_available(&self) -> bool {
30859		self.available
30860	}
30861}
30862
30863impl Default for Version45 {
30864	fn default() -> Self {
30865		Self {
30866			available: false,
30867			geterror: dummy_pfnglgeterrorproc,
30868			clipcontrol: dummy_pfnglclipcontrolproc,
30869			createtransformfeedbacks: dummy_pfnglcreatetransformfeedbacksproc,
30870			transformfeedbackbufferbase: dummy_pfngltransformfeedbackbufferbaseproc,
30871			transformfeedbackbufferrange: dummy_pfngltransformfeedbackbufferrangeproc,
30872			gettransformfeedbackiv: dummy_pfnglgettransformfeedbackivproc,
30873			gettransformfeedbacki_v: dummy_pfnglgettransformfeedbacki_vproc,
30874			gettransformfeedbacki64_v: dummy_pfnglgettransformfeedbacki64_vproc,
30875			createbuffers: dummy_pfnglcreatebuffersproc,
30876			namedbufferstorage: dummy_pfnglnamedbufferstorageproc,
30877			namedbufferdata: dummy_pfnglnamedbufferdataproc,
30878			namedbuffersubdata: dummy_pfnglnamedbuffersubdataproc,
30879			copynamedbuffersubdata: dummy_pfnglcopynamedbuffersubdataproc,
30880			clearnamedbufferdata: dummy_pfnglclearnamedbufferdataproc,
30881			clearnamedbuffersubdata: dummy_pfnglclearnamedbuffersubdataproc,
30882			mapnamedbuffer: dummy_pfnglmapnamedbufferproc,
30883			mapnamedbufferrange: dummy_pfnglmapnamedbufferrangeproc,
30884			unmapnamedbuffer: dummy_pfnglunmapnamedbufferproc,
30885			flushmappednamedbufferrange: dummy_pfnglflushmappednamedbufferrangeproc,
30886			getnamedbufferparameteriv: dummy_pfnglgetnamedbufferparameterivproc,
30887			getnamedbufferparameteri64v: dummy_pfnglgetnamedbufferparameteri64vproc,
30888			getnamedbufferpointerv: dummy_pfnglgetnamedbufferpointervproc,
30889			getnamedbuffersubdata: dummy_pfnglgetnamedbuffersubdataproc,
30890			createframebuffers: dummy_pfnglcreateframebuffersproc,
30891			namedframebufferrenderbuffer: dummy_pfnglnamedframebufferrenderbufferproc,
30892			namedframebufferparameteri: dummy_pfnglnamedframebufferparameteriproc,
30893			namedframebuffertexture: dummy_pfnglnamedframebuffertextureproc,
30894			namedframebuffertexturelayer: dummy_pfnglnamedframebuffertexturelayerproc,
30895			namedframebufferdrawbuffer: dummy_pfnglnamedframebufferdrawbufferproc,
30896			namedframebufferdrawbuffers: dummy_pfnglnamedframebufferdrawbuffersproc,
30897			namedframebufferreadbuffer: dummy_pfnglnamedframebufferreadbufferproc,
30898			invalidatenamedframebufferdata: dummy_pfnglinvalidatenamedframebufferdataproc,
30899			invalidatenamedframebuffersubdata: dummy_pfnglinvalidatenamedframebuffersubdataproc,
30900			clearnamedframebufferiv: dummy_pfnglclearnamedframebufferivproc,
30901			clearnamedframebufferuiv: dummy_pfnglclearnamedframebufferuivproc,
30902			clearnamedframebufferfv: dummy_pfnglclearnamedframebufferfvproc,
30903			clearnamedframebufferfi: dummy_pfnglclearnamedframebufferfiproc,
30904			blitnamedframebuffer: dummy_pfnglblitnamedframebufferproc,
30905			checknamedframebufferstatus: dummy_pfnglchecknamedframebufferstatusproc,
30906			getnamedframebufferparameteriv: dummy_pfnglgetnamedframebufferparameterivproc,
30907			getnamedframebufferattachmentparameteriv: dummy_pfnglgetnamedframebufferattachmentparameterivproc,
30908			createrenderbuffers: dummy_pfnglcreaterenderbuffersproc,
30909			namedrenderbufferstorage: dummy_pfnglnamedrenderbufferstorageproc,
30910			namedrenderbufferstoragemultisample: dummy_pfnglnamedrenderbufferstoragemultisampleproc,
30911			getnamedrenderbufferparameteriv: dummy_pfnglgetnamedrenderbufferparameterivproc,
30912			createtextures: dummy_pfnglcreatetexturesproc,
30913			texturebuffer: dummy_pfngltexturebufferproc,
30914			texturebufferrange: dummy_pfngltexturebufferrangeproc,
30915			texturestorage1d: dummy_pfngltexturestorage1dproc,
30916			texturestorage2d: dummy_pfngltexturestorage2dproc,
30917			texturestorage3d: dummy_pfngltexturestorage3dproc,
30918			texturestorage2dmultisample: dummy_pfngltexturestorage2dmultisampleproc,
30919			texturestorage3dmultisample: dummy_pfngltexturestorage3dmultisampleproc,
30920			texturesubimage1d: dummy_pfngltexturesubimage1dproc,
30921			texturesubimage2d: dummy_pfngltexturesubimage2dproc,
30922			texturesubimage3d: dummy_pfngltexturesubimage3dproc,
30923			compressedtexturesubimage1d: dummy_pfnglcompressedtexturesubimage1dproc,
30924			compressedtexturesubimage2d: dummy_pfnglcompressedtexturesubimage2dproc,
30925			compressedtexturesubimage3d: dummy_pfnglcompressedtexturesubimage3dproc,
30926			copytexturesubimage1d: dummy_pfnglcopytexturesubimage1dproc,
30927			copytexturesubimage2d: dummy_pfnglcopytexturesubimage2dproc,
30928			copytexturesubimage3d: dummy_pfnglcopytexturesubimage3dproc,
30929			textureparameterf: dummy_pfngltextureparameterfproc,
30930			textureparameterfv: dummy_pfngltextureparameterfvproc,
30931			textureparameteri: dummy_pfngltextureparameteriproc,
30932			textureparameteriiv: dummy_pfngltextureparameteriivproc,
30933			textureparameteriuiv: dummy_pfngltextureparameteriuivproc,
30934			textureparameteriv: dummy_pfngltextureparameterivproc,
30935			generatetexturemipmap: dummy_pfnglgeneratetexturemipmapproc,
30936			bindtextureunit: dummy_pfnglbindtextureunitproc,
30937			gettextureimage: dummy_pfnglgettextureimageproc,
30938			getcompressedtextureimage: dummy_pfnglgetcompressedtextureimageproc,
30939			gettexturelevelparameterfv: dummy_pfnglgettexturelevelparameterfvproc,
30940			gettexturelevelparameteriv: dummy_pfnglgettexturelevelparameterivproc,
30941			gettextureparameterfv: dummy_pfnglgettextureparameterfvproc,
30942			gettextureparameteriiv: dummy_pfnglgettextureparameteriivproc,
30943			gettextureparameteriuiv: dummy_pfnglgettextureparameteriuivproc,
30944			gettextureparameteriv: dummy_pfnglgettextureparameterivproc,
30945			createvertexarrays: dummy_pfnglcreatevertexarraysproc,
30946			disablevertexarrayattrib: dummy_pfngldisablevertexarrayattribproc,
30947			enablevertexarrayattrib: dummy_pfnglenablevertexarrayattribproc,
30948			vertexarrayelementbuffer: dummy_pfnglvertexarrayelementbufferproc,
30949			vertexarrayvertexbuffer: dummy_pfnglvertexarrayvertexbufferproc,
30950			vertexarrayvertexbuffers: dummy_pfnglvertexarrayvertexbuffersproc,
30951			vertexarrayattribbinding: dummy_pfnglvertexarrayattribbindingproc,
30952			vertexarrayattribformat: dummy_pfnglvertexarrayattribformatproc,
30953			vertexarrayattribiformat: dummy_pfnglvertexarrayattribiformatproc,
30954			vertexarrayattriblformat: dummy_pfnglvertexarrayattriblformatproc,
30955			vertexarraybindingdivisor: dummy_pfnglvertexarraybindingdivisorproc,
30956			getvertexarrayiv: dummy_pfnglgetvertexarrayivproc,
30957			getvertexarrayindexediv: dummy_pfnglgetvertexarrayindexedivproc,
30958			getvertexarrayindexed64iv: dummy_pfnglgetvertexarrayindexed64ivproc,
30959			createsamplers: dummy_pfnglcreatesamplersproc,
30960			createprogrampipelines: dummy_pfnglcreateprogrampipelinesproc,
30961			createqueries: dummy_pfnglcreatequeriesproc,
30962			getquerybufferobjecti64v: dummy_pfnglgetquerybufferobjecti64vproc,
30963			getquerybufferobjectiv: dummy_pfnglgetquerybufferobjectivproc,
30964			getquerybufferobjectui64v: dummy_pfnglgetquerybufferobjectui64vproc,
30965			getquerybufferobjectuiv: dummy_pfnglgetquerybufferobjectuivproc,
30966			memorybarrierbyregion: dummy_pfnglmemorybarrierbyregionproc,
30967			gettexturesubimage: dummy_pfnglgettexturesubimageproc,
30968			getcompressedtexturesubimage: dummy_pfnglgetcompressedtexturesubimageproc,
30969			getgraphicsresetstatus: dummy_pfnglgetgraphicsresetstatusproc,
30970			getncompressedteximage: dummy_pfnglgetncompressedteximageproc,
30971			getnteximage: dummy_pfnglgetnteximageproc,
30972			getnuniformdv: dummy_pfnglgetnuniformdvproc,
30973			getnuniformfv: dummy_pfnglgetnuniformfvproc,
30974			getnuniformiv: dummy_pfnglgetnuniformivproc,
30975			getnuniformuiv: dummy_pfnglgetnuniformuivproc,
30976			readnpixels: dummy_pfnglreadnpixelsproc,
30977			getnmapdv: dummy_pfnglgetnmapdvproc,
30978			getnmapfv: dummy_pfnglgetnmapfvproc,
30979			getnmapiv: dummy_pfnglgetnmapivproc,
30980			getnpixelmapfv: dummy_pfnglgetnpixelmapfvproc,
30981			getnpixelmapuiv: dummy_pfnglgetnpixelmapuivproc,
30982			getnpixelmapusv: dummy_pfnglgetnpixelmapusvproc,
30983			getnpolygonstipple: dummy_pfnglgetnpolygonstippleproc,
30984			getncolortable: dummy_pfnglgetncolortableproc,
30985			getnconvolutionfilter: dummy_pfnglgetnconvolutionfilterproc,
30986			getnseparablefilter: dummy_pfnglgetnseparablefilterproc,
30987			getnhistogram: dummy_pfnglgetnhistogramproc,
30988			getnminmax: dummy_pfnglgetnminmaxproc,
30989			texturebarrier: dummy_pfngltexturebarrierproc,
30990		}
30991	}
30992}
30993impl Debug for Version45 {
30994	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
30995		if self.available {
30996			f.debug_struct("Version45")
30997			.field("available", &self.available)
30998			.field("clipcontrol", unsafe{if transmute::<_, *const c_void>(self.clipcontrol) == (dummy_pfnglclipcontrolproc as *const c_void) {&null::<PFNGLCLIPCONTROLPROC>()} else {&self.clipcontrol}})
30999			.field("createtransformfeedbacks", unsafe{if transmute::<_, *const c_void>(self.createtransformfeedbacks) == (dummy_pfnglcreatetransformfeedbacksproc as *const c_void) {&null::<PFNGLCREATETRANSFORMFEEDBACKSPROC>()} else {&self.createtransformfeedbacks}})
31000			.field("transformfeedbackbufferbase", unsafe{if transmute::<_, *const c_void>(self.transformfeedbackbufferbase) == (dummy_pfngltransformfeedbackbufferbaseproc as *const c_void) {&null::<PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC>()} else {&self.transformfeedbackbufferbase}})
31001			.field("transformfeedbackbufferrange", unsafe{if transmute::<_, *const c_void>(self.transformfeedbackbufferrange) == (dummy_pfngltransformfeedbackbufferrangeproc as *const c_void) {&null::<PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC>()} else {&self.transformfeedbackbufferrange}})
31002			.field("gettransformfeedbackiv", unsafe{if transmute::<_, *const c_void>(self.gettransformfeedbackiv) == (dummy_pfnglgettransformfeedbackivproc as *const c_void) {&null::<PFNGLGETTRANSFORMFEEDBACKIVPROC>()} else {&self.gettransformfeedbackiv}})
31003			.field("gettransformfeedbacki_v", unsafe{if transmute::<_, *const c_void>(self.gettransformfeedbacki_v) == (dummy_pfnglgettransformfeedbacki_vproc as *const c_void) {&null::<PFNGLGETTRANSFORMFEEDBACKI_VPROC>()} else {&self.gettransformfeedbacki_v}})
31004			.field("gettransformfeedbacki64_v", unsafe{if transmute::<_, *const c_void>(self.gettransformfeedbacki64_v) == (dummy_pfnglgettransformfeedbacki64_vproc as *const c_void) {&null::<PFNGLGETTRANSFORMFEEDBACKI64_VPROC>()} else {&self.gettransformfeedbacki64_v}})
31005			.field("createbuffers", unsafe{if transmute::<_, *const c_void>(self.createbuffers) == (dummy_pfnglcreatebuffersproc as *const c_void) {&null::<PFNGLCREATEBUFFERSPROC>()} else {&self.createbuffers}})
31006			.field("namedbufferstorage", unsafe{if transmute::<_, *const c_void>(self.namedbufferstorage) == (dummy_pfnglnamedbufferstorageproc as *const c_void) {&null::<PFNGLNAMEDBUFFERSTORAGEPROC>()} else {&self.namedbufferstorage}})
31007			.field("namedbufferdata", unsafe{if transmute::<_, *const c_void>(self.namedbufferdata) == (dummy_pfnglnamedbufferdataproc as *const c_void) {&null::<PFNGLNAMEDBUFFERDATAPROC>()} else {&self.namedbufferdata}})
31008			.field("namedbuffersubdata", unsafe{if transmute::<_, *const c_void>(self.namedbuffersubdata) == (dummy_pfnglnamedbuffersubdataproc as *const c_void) {&null::<PFNGLNAMEDBUFFERSUBDATAPROC>()} else {&self.namedbuffersubdata}})
31009			.field("copynamedbuffersubdata", unsafe{if transmute::<_, *const c_void>(self.copynamedbuffersubdata) == (dummy_pfnglcopynamedbuffersubdataproc as *const c_void) {&null::<PFNGLCOPYNAMEDBUFFERSUBDATAPROC>()} else {&self.copynamedbuffersubdata}})
31010			.field("clearnamedbufferdata", unsafe{if transmute::<_, *const c_void>(self.clearnamedbufferdata) == (dummy_pfnglclearnamedbufferdataproc as *const c_void) {&null::<PFNGLCLEARNAMEDBUFFERDATAPROC>()} else {&self.clearnamedbufferdata}})
31011			.field("clearnamedbuffersubdata", unsafe{if transmute::<_, *const c_void>(self.clearnamedbuffersubdata) == (dummy_pfnglclearnamedbuffersubdataproc as *const c_void) {&null::<PFNGLCLEARNAMEDBUFFERSUBDATAPROC>()} else {&self.clearnamedbuffersubdata}})
31012			.field("mapnamedbuffer", unsafe{if transmute::<_, *const c_void>(self.mapnamedbuffer) == (dummy_pfnglmapnamedbufferproc as *const c_void) {&null::<PFNGLMAPNAMEDBUFFERPROC>()} else {&self.mapnamedbuffer}})
31013			.field("mapnamedbufferrange", unsafe{if transmute::<_, *const c_void>(self.mapnamedbufferrange) == (dummy_pfnglmapnamedbufferrangeproc as *const c_void) {&null::<PFNGLMAPNAMEDBUFFERRANGEPROC>()} else {&self.mapnamedbufferrange}})
31014			.field("unmapnamedbuffer", unsafe{if transmute::<_, *const c_void>(self.unmapnamedbuffer) == (dummy_pfnglunmapnamedbufferproc as *const c_void) {&null::<PFNGLUNMAPNAMEDBUFFERPROC>()} else {&self.unmapnamedbuffer}})
31015			.field("flushmappednamedbufferrange", unsafe{if transmute::<_, *const c_void>(self.flushmappednamedbufferrange) == (dummy_pfnglflushmappednamedbufferrangeproc as *const c_void) {&null::<PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC>()} else {&self.flushmappednamedbufferrange}})
31016			.field("getnamedbufferparameteriv", unsafe{if transmute::<_, *const c_void>(self.getnamedbufferparameteriv) == (dummy_pfnglgetnamedbufferparameterivproc as *const c_void) {&null::<PFNGLGETNAMEDBUFFERPARAMETERIVPROC>()} else {&self.getnamedbufferparameteriv}})
31017			.field("getnamedbufferparameteri64v", unsafe{if transmute::<_, *const c_void>(self.getnamedbufferparameteri64v) == (dummy_pfnglgetnamedbufferparameteri64vproc as *const c_void) {&null::<PFNGLGETNAMEDBUFFERPARAMETERI64VPROC>()} else {&self.getnamedbufferparameteri64v}})
31018			.field("getnamedbufferpointerv", unsafe{if transmute::<_, *const c_void>(self.getnamedbufferpointerv) == (dummy_pfnglgetnamedbufferpointervproc as *const c_void) {&null::<PFNGLGETNAMEDBUFFERPOINTERVPROC>()} else {&self.getnamedbufferpointerv}})
31019			.field("getnamedbuffersubdata", unsafe{if transmute::<_, *const c_void>(self.getnamedbuffersubdata) == (dummy_pfnglgetnamedbuffersubdataproc as *const c_void) {&null::<PFNGLGETNAMEDBUFFERSUBDATAPROC>()} else {&self.getnamedbuffersubdata}})
31020			.field("createframebuffers", unsafe{if transmute::<_, *const c_void>(self.createframebuffers) == (dummy_pfnglcreateframebuffersproc as *const c_void) {&null::<PFNGLCREATEFRAMEBUFFERSPROC>()} else {&self.createframebuffers}})
31021			.field("namedframebufferrenderbuffer", unsafe{if transmute::<_, *const c_void>(self.namedframebufferrenderbuffer) == (dummy_pfnglnamedframebufferrenderbufferproc as *const c_void) {&null::<PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC>()} else {&self.namedframebufferrenderbuffer}})
31022			.field("namedframebufferparameteri", unsafe{if transmute::<_, *const c_void>(self.namedframebufferparameteri) == (dummy_pfnglnamedframebufferparameteriproc as *const c_void) {&null::<PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC>()} else {&self.namedframebufferparameteri}})
31023			.field("namedframebuffertexture", unsafe{if transmute::<_, *const c_void>(self.namedframebuffertexture) == (dummy_pfnglnamedframebuffertextureproc as *const c_void) {&null::<PFNGLNAMEDFRAMEBUFFERTEXTUREPROC>()} else {&self.namedframebuffertexture}})
31024			.field("namedframebuffertexturelayer", unsafe{if transmute::<_, *const c_void>(self.namedframebuffertexturelayer) == (dummy_pfnglnamedframebuffertexturelayerproc as *const c_void) {&null::<PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC>()} else {&self.namedframebuffertexturelayer}})
31025			.field("namedframebufferdrawbuffer", unsafe{if transmute::<_, *const c_void>(self.namedframebufferdrawbuffer) == (dummy_pfnglnamedframebufferdrawbufferproc as *const c_void) {&null::<PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC>()} else {&self.namedframebufferdrawbuffer}})
31026			.field("namedframebufferdrawbuffers", unsafe{if transmute::<_, *const c_void>(self.namedframebufferdrawbuffers) == (dummy_pfnglnamedframebufferdrawbuffersproc as *const c_void) {&null::<PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC>()} else {&self.namedframebufferdrawbuffers}})
31027			.field("namedframebufferreadbuffer", unsafe{if transmute::<_, *const c_void>(self.namedframebufferreadbuffer) == (dummy_pfnglnamedframebufferreadbufferproc as *const c_void) {&null::<PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC>()} else {&self.namedframebufferreadbuffer}})
31028			.field("invalidatenamedframebufferdata", unsafe{if transmute::<_, *const c_void>(self.invalidatenamedframebufferdata) == (dummy_pfnglinvalidatenamedframebufferdataproc as *const c_void) {&null::<PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC>()} else {&self.invalidatenamedframebufferdata}})
31029			.field("invalidatenamedframebuffersubdata", unsafe{if transmute::<_, *const c_void>(self.invalidatenamedframebuffersubdata) == (dummy_pfnglinvalidatenamedframebuffersubdataproc as *const c_void) {&null::<PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC>()} else {&self.invalidatenamedframebuffersubdata}})
31030			.field("clearnamedframebufferiv", unsafe{if transmute::<_, *const c_void>(self.clearnamedframebufferiv) == (dummy_pfnglclearnamedframebufferivproc as *const c_void) {&null::<PFNGLCLEARNAMEDFRAMEBUFFERIVPROC>()} else {&self.clearnamedframebufferiv}})
31031			.field("clearnamedframebufferuiv", unsafe{if transmute::<_, *const c_void>(self.clearnamedframebufferuiv) == (dummy_pfnglclearnamedframebufferuivproc as *const c_void) {&null::<PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC>()} else {&self.clearnamedframebufferuiv}})
31032			.field("clearnamedframebufferfv", unsafe{if transmute::<_, *const c_void>(self.clearnamedframebufferfv) == (dummy_pfnglclearnamedframebufferfvproc as *const c_void) {&null::<PFNGLCLEARNAMEDFRAMEBUFFERFVPROC>()} else {&self.clearnamedframebufferfv}})
31033			.field("clearnamedframebufferfi", unsafe{if transmute::<_, *const c_void>(self.clearnamedframebufferfi) == (dummy_pfnglclearnamedframebufferfiproc as *const c_void) {&null::<PFNGLCLEARNAMEDFRAMEBUFFERFIPROC>()} else {&self.clearnamedframebufferfi}})
31034			.field("blitnamedframebuffer", unsafe{if transmute::<_, *const c_void>(self.blitnamedframebuffer) == (dummy_pfnglblitnamedframebufferproc as *const c_void) {&null::<PFNGLBLITNAMEDFRAMEBUFFERPROC>()} else {&self.blitnamedframebuffer}})
31035			.field("checknamedframebufferstatus", unsafe{if transmute::<_, *const c_void>(self.checknamedframebufferstatus) == (dummy_pfnglchecknamedframebufferstatusproc as *const c_void) {&null::<PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC>()} else {&self.checknamedframebufferstatus}})
31036			.field("getnamedframebufferparameteriv", unsafe{if transmute::<_, *const c_void>(self.getnamedframebufferparameteriv) == (dummy_pfnglgetnamedframebufferparameterivproc as *const c_void) {&null::<PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC>()} else {&self.getnamedframebufferparameteriv}})
31037			.field("getnamedframebufferattachmentparameteriv", unsafe{if transmute::<_, *const c_void>(self.getnamedframebufferattachmentparameteriv) == (dummy_pfnglgetnamedframebufferattachmentparameterivproc as *const c_void) {&null::<PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC>()} else {&self.getnamedframebufferattachmentparameteriv}})
31038			.field("createrenderbuffers", unsafe{if transmute::<_, *const c_void>(self.createrenderbuffers) == (dummy_pfnglcreaterenderbuffersproc as *const c_void) {&null::<PFNGLCREATERENDERBUFFERSPROC>()} else {&self.createrenderbuffers}})
31039			.field("namedrenderbufferstorage", unsafe{if transmute::<_, *const c_void>(self.namedrenderbufferstorage) == (dummy_pfnglnamedrenderbufferstorageproc as *const c_void) {&null::<PFNGLNAMEDRENDERBUFFERSTORAGEPROC>()} else {&self.namedrenderbufferstorage}})
31040			.field("namedrenderbufferstoragemultisample", unsafe{if transmute::<_, *const c_void>(self.namedrenderbufferstoragemultisample) == (dummy_pfnglnamedrenderbufferstoragemultisampleproc as *const c_void) {&null::<PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC>()} else {&self.namedrenderbufferstoragemultisample}})
31041			.field("getnamedrenderbufferparameteriv", unsafe{if transmute::<_, *const c_void>(self.getnamedrenderbufferparameteriv) == (dummy_pfnglgetnamedrenderbufferparameterivproc as *const c_void) {&null::<PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC>()} else {&self.getnamedrenderbufferparameteriv}})
31042			.field("createtextures", unsafe{if transmute::<_, *const c_void>(self.createtextures) == (dummy_pfnglcreatetexturesproc as *const c_void) {&null::<PFNGLCREATETEXTURESPROC>()} else {&self.createtextures}})
31043			.field("texturebuffer", unsafe{if transmute::<_, *const c_void>(self.texturebuffer) == (dummy_pfngltexturebufferproc as *const c_void) {&null::<PFNGLTEXTUREBUFFERPROC>()} else {&self.texturebuffer}})
31044			.field("texturebufferrange", unsafe{if transmute::<_, *const c_void>(self.texturebufferrange) == (dummy_pfngltexturebufferrangeproc as *const c_void) {&null::<PFNGLTEXTUREBUFFERRANGEPROC>()} else {&self.texturebufferrange}})
31045			.field("texturestorage1d", unsafe{if transmute::<_, *const c_void>(self.texturestorage1d) == (dummy_pfngltexturestorage1dproc as *const c_void) {&null::<PFNGLTEXTURESTORAGE1DPROC>()} else {&self.texturestorage1d}})
31046			.field("texturestorage2d", unsafe{if transmute::<_, *const c_void>(self.texturestorage2d) == (dummy_pfngltexturestorage2dproc as *const c_void) {&null::<PFNGLTEXTURESTORAGE2DPROC>()} else {&self.texturestorage2d}})
31047			.field("texturestorage3d", unsafe{if transmute::<_, *const c_void>(self.texturestorage3d) == (dummy_pfngltexturestorage3dproc as *const c_void) {&null::<PFNGLTEXTURESTORAGE3DPROC>()} else {&self.texturestorage3d}})
31048			.field("texturestorage2dmultisample", unsafe{if transmute::<_, *const c_void>(self.texturestorage2dmultisample) == (dummy_pfngltexturestorage2dmultisampleproc as *const c_void) {&null::<PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC>()} else {&self.texturestorage2dmultisample}})
31049			.field("texturestorage3dmultisample", unsafe{if transmute::<_, *const c_void>(self.texturestorage3dmultisample) == (dummy_pfngltexturestorage3dmultisampleproc as *const c_void) {&null::<PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC>()} else {&self.texturestorage3dmultisample}})
31050			.field("texturesubimage1d", unsafe{if transmute::<_, *const c_void>(self.texturesubimage1d) == (dummy_pfngltexturesubimage1dproc as *const c_void) {&null::<PFNGLTEXTURESUBIMAGE1DPROC>()} else {&self.texturesubimage1d}})
31051			.field("texturesubimage2d", unsafe{if transmute::<_, *const c_void>(self.texturesubimage2d) == (dummy_pfngltexturesubimage2dproc as *const c_void) {&null::<PFNGLTEXTURESUBIMAGE2DPROC>()} else {&self.texturesubimage2d}})
31052			.field("texturesubimage3d", unsafe{if transmute::<_, *const c_void>(self.texturesubimage3d) == (dummy_pfngltexturesubimage3dproc as *const c_void) {&null::<PFNGLTEXTURESUBIMAGE3DPROC>()} else {&self.texturesubimage3d}})
31053			.field("compressedtexturesubimage1d", unsafe{if transmute::<_, *const c_void>(self.compressedtexturesubimage1d) == (dummy_pfnglcompressedtexturesubimage1dproc as *const c_void) {&null::<PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC>()} else {&self.compressedtexturesubimage1d}})
31054			.field("compressedtexturesubimage2d", unsafe{if transmute::<_, *const c_void>(self.compressedtexturesubimage2d) == (dummy_pfnglcompressedtexturesubimage2dproc as *const c_void) {&null::<PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC>()} else {&self.compressedtexturesubimage2d}})
31055			.field("compressedtexturesubimage3d", unsafe{if transmute::<_, *const c_void>(self.compressedtexturesubimage3d) == (dummy_pfnglcompressedtexturesubimage3dproc as *const c_void) {&null::<PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC>()} else {&self.compressedtexturesubimage3d}})
31056			.field("copytexturesubimage1d", unsafe{if transmute::<_, *const c_void>(self.copytexturesubimage1d) == (dummy_pfnglcopytexturesubimage1dproc as *const c_void) {&null::<PFNGLCOPYTEXTURESUBIMAGE1DPROC>()} else {&self.copytexturesubimage1d}})
31057			.field("copytexturesubimage2d", unsafe{if transmute::<_, *const c_void>(self.copytexturesubimage2d) == (dummy_pfnglcopytexturesubimage2dproc as *const c_void) {&null::<PFNGLCOPYTEXTURESUBIMAGE2DPROC>()} else {&self.copytexturesubimage2d}})
31058			.field("copytexturesubimage3d", unsafe{if transmute::<_, *const c_void>(self.copytexturesubimage3d) == (dummy_pfnglcopytexturesubimage3dproc as *const c_void) {&null::<PFNGLCOPYTEXTURESUBIMAGE3DPROC>()} else {&self.copytexturesubimage3d}})
31059			.field("textureparameterf", unsafe{if transmute::<_, *const c_void>(self.textureparameterf) == (dummy_pfngltextureparameterfproc as *const c_void) {&null::<PFNGLTEXTUREPARAMETERFPROC>()} else {&self.textureparameterf}})
31060			.field("textureparameterfv", unsafe{if transmute::<_, *const c_void>(self.textureparameterfv) == (dummy_pfngltextureparameterfvproc as *const c_void) {&null::<PFNGLTEXTUREPARAMETERFVPROC>()} else {&self.textureparameterfv}})
31061			.field("textureparameteri", unsafe{if transmute::<_, *const c_void>(self.textureparameteri) == (dummy_pfngltextureparameteriproc as *const c_void) {&null::<PFNGLTEXTUREPARAMETERIPROC>()} else {&self.textureparameteri}})
31062			.field("textureparameteriiv", unsafe{if transmute::<_, *const c_void>(self.textureparameteriiv) == (dummy_pfngltextureparameteriivproc as *const c_void) {&null::<PFNGLTEXTUREPARAMETERIIVPROC>()} else {&self.textureparameteriiv}})
31063			.field("textureparameteriuiv", unsafe{if transmute::<_, *const c_void>(self.textureparameteriuiv) == (dummy_pfngltextureparameteriuivproc as *const c_void) {&null::<PFNGLTEXTUREPARAMETERIUIVPROC>()} else {&self.textureparameteriuiv}})
31064			.field("textureparameteriv", unsafe{if transmute::<_, *const c_void>(self.textureparameteriv) == (dummy_pfngltextureparameterivproc as *const c_void) {&null::<PFNGLTEXTUREPARAMETERIVPROC>()} else {&self.textureparameteriv}})
31065			.field("generatetexturemipmap", unsafe{if transmute::<_, *const c_void>(self.generatetexturemipmap) == (dummy_pfnglgeneratetexturemipmapproc as *const c_void) {&null::<PFNGLGENERATETEXTUREMIPMAPPROC>()} else {&self.generatetexturemipmap}})
31066			.field("bindtextureunit", unsafe{if transmute::<_, *const c_void>(self.bindtextureunit) == (dummy_pfnglbindtextureunitproc as *const c_void) {&null::<PFNGLBINDTEXTUREUNITPROC>()} else {&self.bindtextureunit}})
31067			.field("gettextureimage", unsafe{if transmute::<_, *const c_void>(self.gettextureimage) == (dummy_pfnglgettextureimageproc as *const c_void) {&null::<PFNGLGETTEXTUREIMAGEPROC>()} else {&self.gettextureimage}})
31068			.field("getcompressedtextureimage", unsafe{if transmute::<_, *const c_void>(self.getcompressedtextureimage) == (dummy_pfnglgetcompressedtextureimageproc as *const c_void) {&null::<PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC>()} else {&self.getcompressedtextureimage}})
31069			.field("gettexturelevelparameterfv", unsafe{if transmute::<_, *const c_void>(self.gettexturelevelparameterfv) == (dummy_pfnglgettexturelevelparameterfvproc as *const c_void) {&null::<PFNGLGETTEXTURELEVELPARAMETERFVPROC>()} else {&self.gettexturelevelparameterfv}})
31070			.field("gettexturelevelparameteriv", unsafe{if transmute::<_, *const c_void>(self.gettexturelevelparameteriv) == (dummy_pfnglgettexturelevelparameterivproc as *const c_void) {&null::<PFNGLGETTEXTURELEVELPARAMETERIVPROC>()} else {&self.gettexturelevelparameteriv}})
31071			.field("gettextureparameterfv", unsafe{if transmute::<_, *const c_void>(self.gettextureparameterfv) == (dummy_pfnglgettextureparameterfvproc as *const c_void) {&null::<PFNGLGETTEXTUREPARAMETERFVPROC>()} else {&self.gettextureparameterfv}})
31072			.field("gettextureparameteriiv", unsafe{if transmute::<_, *const c_void>(self.gettextureparameteriiv) == (dummy_pfnglgettextureparameteriivproc as *const c_void) {&null::<PFNGLGETTEXTUREPARAMETERIIVPROC>()} else {&self.gettextureparameteriiv}})
31073			.field("gettextureparameteriuiv", unsafe{if transmute::<_, *const c_void>(self.gettextureparameteriuiv) == (dummy_pfnglgettextureparameteriuivproc as *const c_void) {&null::<PFNGLGETTEXTUREPARAMETERIUIVPROC>()} else {&self.gettextureparameteriuiv}})
31074			.field("gettextureparameteriv", unsafe{if transmute::<_, *const c_void>(self.gettextureparameteriv) == (dummy_pfnglgettextureparameterivproc as *const c_void) {&null::<PFNGLGETTEXTUREPARAMETERIVPROC>()} else {&self.gettextureparameteriv}})
31075			.field("createvertexarrays", unsafe{if transmute::<_, *const c_void>(self.createvertexarrays) == (dummy_pfnglcreatevertexarraysproc as *const c_void) {&null::<PFNGLCREATEVERTEXARRAYSPROC>()} else {&self.createvertexarrays}})
31076			.field("disablevertexarrayattrib", unsafe{if transmute::<_, *const c_void>(self.disablevertexarrayattrib) == (dummy_pfngldisablevertexarrayattribproc as *const c_void) {&null::<PFNGLDISABLEVERTEXARRAYATTRIBPROC>()} else {&self.disablevertexarrayattrib}})
31077			.field("enablevertexarrayattrib", unsafe{if transmute::<_, *const c_void>(self.enablevertexarrayattrib) == (dummy_pfnglenablevertexarrayattribproc as *const c_void) {&null::<PFNGLENABLEVERTEXARRAYATTRIBPROC>()} else {&self.enablevertexarrayattrib}})
31078			.field("vertexarrayelementbuffer", unsafe{if transmute::<_, *const c_void>(self.vertexarrayelementbuffer) == (dummy_pfnglvertexarrayelementbufferproc as *const c_void) {&null::<PFNGLVERTEXARRAYELEMENTBUFFERPROC>()} else {&self.vertexarrayelementbuffer}})
31079			.field("vertexarrayvertexbuffer", unsafe{if transmute::<_, *const c_void>(self.vertexarrayvertexbuffer) == (dummy_pfnglvertexarrayvertexbufferproc as *const c_void) {&null::<PFNGLVERTEXARRAYVERTEXBUFFERPROC>()} else {&self.vertexarrayvertexbuffer}})
31080			.field("vertexarrayvertexbuffers", unsafe{if transmute::<_, *const c_void>(self.vertexarrayvertexbuffers) == (dummy_pfnglvertexarrayvertexbuffersproc as *const c_void) {&null::<PFNGLVERTEXARRAYVERTEXBUFFERSPROC>()} else {&self.vertexarrayvertexbuffers}})
31081			.field("vertexarrayattribbinding", unsafe{if transmute::<_, *const c_void>(self.vertexarrayattribbinding) == (dummy_pfnglvertexarrayattribbindingproc as *const c_void) {&null::<PFNGLVERTEXARRAYATTRIBBINDINGPROC>()} else {&self.vertexarrayattribbinding}})
31082			.field("vertexarrayattribformat", unsafe{if transmute::<_, *const c_void>(self.vertexarrayattribformat) == (dummy_pfnglvertexarrayattribformatproc as *const c_void) {&null::<PFNGLVERTEXARRAYATTRIBFORMATPROC>()} else {&self.vertexarrayattribformat}})
31083			.field("vertexarrayattribiformat", unsafe{if transmute::<_, *const c_void>(self.vertexarrayattribiformat) == (dummy_pfnglvertexarrayattribiformatproc as *const c_void) {&null::<PFNGLVERTEXARRAYATTRIBIFORMATPROC>()} else {&self.vertexarrayattribiformat}})
31084			.field("vertexarrayattriblformat", unsafe{if transmute::<_, *const c_void>(self.vertexarrayattriblformat) == (dummy_pfnglvertexarrayattriblformatproc as *const c_void) {&null::<PFNGLVERTEXARRAYATTRIBLFORMATPROC>()} else {&self.vertexarrayattriblformat}})
31085			.field("vertexarraybindingdivisor", unsafe{if transmute::<_, *const c_void>(self.vertexarraybindingdivisor) == (dummy_pfnglvertexarraybindingdivisorproc as *const c_void) {&null::<PFNGLVERTEXARRAYBINDINGDIVISORPROC>()} else {&self.vertexarraybindingdivisor}})
31086			.field("getvertexarrayiv", unsafe{if transmute::<_, *const c_void>(self.getvertexarrayiv) == (dummy_pfnglgetvertexarrayivproc as *const c_void) {&null::<PFNGLGETVERTEXARRAYIVPROC>()} else {&self.getvertexarrayiv}})
31087			.field("getvertexarrayindexediv", unsafe{if transmute::<_, *const c_void>(self.getvertexarrayindexediv) == (dummy_pfnglgetvertexarrayindexedivproc as *const c_void) {&null::<PFNGLGETVERTEXARRAYINDEXEDIVPROC>()} else {&self.getvertexarrayindexediv}})
31088			.field("getvertexarrayindexed64iv", unsafe{if transmute::<_, *const c_void>(self.getvertexarrayindexed64iv) == (dummy_pfnglgetvertexarrayindexed64ivproc as *const c_void) {&null::<PFNGLGETVERTEXARRAYINDEXED64IVPROC>()} else {&self.getvertexarrayindexed64iv}})
31089			.field("createsamplers", unsafe{if transmute::<_, *const c_void>(self.createsamplers) == (dummy_pfnglcreatesamplersproc as *const c_void) {&null::<PFNGLCREATESAMPLERSPROC>()} else {&self.createsamplers}})
31090			.field("createprogrampipelines", unsafe{if transmute::<_, *const c_void>(self.createprogrampipelines) == (dummy_pfnglcreateprogrampipelinesproc as *const c_void) {&null::<PFNGLCREATEPROGRAMPIPELINESPROC>()} else {&self.createprogrampipelines}})
31091			.field("createqueries", unsafe{if transmute::<_, *const c_void>(self.createqueries) == (dummy_pfnglcreatequeriesproc as *const c_void) {&null::<PFNGLCREATEQUERIESPROC>()} else {&self.createqueries}})
31092			.field("getquerybufferobjecti64v", unsafe{if transmute::<_, *const c_void>(self.getquerybufferobjecti64v) == (dummy_pfnglgetquerybufferobjecti64vproc as *const c_void) {&null::<PFNGLGETQUERYBUFFEROBJECTI64VPROC>()} else {&self.getquerybufferobjecti64v}})
31093			.field("getquerybufferobjectiv", unsafe{if transmute::<_, *const c_void>(self.getquerybufferobjectiv) == (dummy_pfnglgetquerybufferobjectivproc as *const c_void) {&null::<PFNGLGETQUERYBUFFEROBJECTIVPROC>()} else {&self.getquerybufferobjectiv}})
31094			.field("getquerybufferobjectui64v", unsafe{if transmute::<_, *const c_void>(self.getquerybufferobjectui64v) == (dummy_pfnglgetquerybufferobjectui64vproc as *const c_void) {&null::<PFNGLGETQUERYBUFFEROBJECTUI64VPROC>()} else {&self.getquerybufferobjectui64v}})
31095			.field("getquerybufferobjectuiv", unsafe{if transmute::<_, *const c_void>(self.getquerybufferobjectuiv) == (dummy_pfnglgetquerybufferobjectuivproc as *const c_void) {&null::<PFNGLGETQUERYBUFFEROBJECTUIVPROC>()} else {&self.getquerybufferobjectuiv}})
31096			.field("memorybarrierbyregion", unsafe{if transmute::<_, *const c_void>(self.memorybarrierbyregion) == (dummy_pfnglmemorybarrierbyregionproc as *const c_void) {&null::<PFNGLMEMORYBARRIERBYREGIONPROC>()} else {&self.memorybarrierbyregion}})
31097			.field("gettexturesubimage", unsafe{if transmute::<_, *const c_void>(self.gettexturesubimage) == (dummy_pfnglgettexturesubimageproc as *const c_void) {&null::<PFNGLGETTEXTURESUBIMAGEPROC>()} else {&self.gettexturesubimage}})
31098			.field("getcompressedtexturesubimage", unsafe{if transmute::<_, *const c_void>(self.getcompressedtexturesubimage) == (dummy_pfnglgetcompressedtexturesubimageproc as *const c_void) {&null::<PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC>()} else {&self.getcompressedtexturesubimage}})
31099			.field("getgraphicsresetstatus", unsafe{if transmute::<_, *const c_void>(self.getgraphicsresetstatus) == (dummy_pfnglgetgraphicsresetstatusproc as *const c_void) {&null::<PFNGLGETGRAPHICSRESETSTATUSPROC>()} else {&self.getgraphicsresetstatus}})
31100			.field("getncompressedteximage", unsafe{if transmute::<_, *const c_void>(self.getncompressedteximage) == (dummy_pfnglgetncompressedteximageproc as *const c_void) {&null::<PFNGLGETNCOMPRESSEDTEXIMAGEPROC>()} else {&self.getncompressedteximage}})
31101			.field("getnteximage", unsafe{if transmute::<_, *const c_void>(self.getnteximage) == (dummy_pfnglgetnteximageproc as *const c_void) {&null::<PFNGLGETNTEXIMAGEPROC>()} else {&self.getnteximage}})
31102			.field("getnuniformdv", unsafe{if transmute::<_, *const c_void>(self.getnuniformdv) == (dummy_pfnglgetnuniformdvproc as *const c_void) {&null::<PFNGLGETNUNIFORMDVPROC>()} else {&self.getnuniformdv}})
31103			.field("getnuniformfv", unsafe{if transmute::<_, *const c_void>(self.getnuniformfv) == (dummy_pfnglgetnuniformfvproc as *const c_void) {&null::<PFNGLGETNUNIFORMFVPROC>()} else {&self.getnuniformfv}})
31104			.field("getnuniformiv", unsafe{if transmute::<_, *const c_void>(self.getnuniformiv) == (dummy_pfnglgetnuniformivproc as *const c_void) {&null::<PFNGLGETNUNIFORMIVPROC>()} else {&self.getnuniformiv}})
31105			.field("getnuniformuiv", unsafe{if transmute::<_, *const c_void>(self.getnuniformuiv) == (dummy_pfnglgetnuniformuivproc as *const c_void) {&null::<PFNGLGETNUNIFORMUIVPROC>()} else {&self.getnuniformuiv}})
31106			.field("readnpixels", unsafe{if transmute::<_, *const c_void>(self.readnpixels) == (dummy_pfnglreadnpixelsproc as *const c_void) {&null::<PFNGLREADNPIXELSPROC>()} else {&self.readnpixels}})
31107			.field("getnmapdv", unsafe{if transmute::<_, *const c_void>(self.getnmapdv) == (dummy_pfnglgetnmapdvproc as *const c_void) {&null::<PFNGLGETNMAPDVPROC>()} else {&self.getnmapdv}})
31108			.field("getnmapfv", unsafe{if transmute::<_, *const c_void>(self.getnmapfv) == (dummy_pfnglgetnmapfvproc as *const c_void) {&null::<PFNGLGETNMAPFVPROC>()} else {&self.getnmapfv}})
31109			.field("getnmapiv", unsafe{if transmute::<_, *const c_void>(self.getnmapiv) == (dummy_pfnglgetnmapivproc as *const c_void) {&null::<PFNGLGETNMAPIVPROC>()} else {&self.getnmapiv}})
31110			.field("getnpixelmapfv", unsafe{if transmute::<_, *const c_void>(self.getnpixelmapfv) == (dummy_pfnglgetnpixelmapfvproc as *const c_void) {&null::<PFNGLGETNPIXELMAPFVPROC>()} else {&self.getnpixelmapfv}})
31111			.field("getnpixelmapuiv", unsafe{if transmute::<_, *const c_void>(self.getnpixelmapuiv) == (dummy_pfnglgetnpixelmapuivproc as *const c_void) {&null::<PFNGLGETNPIXELMAPUIVPROC>()} else {&self.getnpixelmapuiv}})
31112			.field("getnpixelmapusv", unsafe{if transmute::<_, *const c_void>(self.getnpixelmapusv) == (dummy_pfnglgetnpixelmapusvproc as *const c_void) {&null::<PFNGLGETNPIXELMAPUSVPROC>()} else {&self.getnpixelmapusv}})
31113			.field("getnpolygonstipple", unsafe{if transmute::<_, *const c_void>(self.getnpolygonstipple) == (dummy_pfnglgetnpolygonstippleproc as *const c_void) {&null::<PFNGLGETNPOLYGONSTIPPLEPROC>()} else {&self.getnpolygonstipple}})
31114			.field("getncolortable", unsafe{if transmute::<_, *const c_void>(self.getncolortable) == (dummy_pfnglgetncolortableproc as *const c_void) {&null::<PFNGLGETNCOLORTABLEPROC>()} else {&self.getncolortable}})
31115			.field("getnconvolutionfilter", unsafe{if transmute::<_, *const c_void>(self.getnconvolutionfilter) == (dummy_pfnglgetnconvolutionfilterproc as *const c_void) {&null::<PFNGLGETNCONVOLUTIONFILTERPROC>()} else {&self.getnconvolutionfilter}})
31116			.field("getnseparablefilter", unsafe{if transmute::<_, *const c_void>(self.getnseparablefilter) == (dummy_pfnglgetnseparablefilterproc as *const c_void) {&null::<PFNGLGETNSEPARABLEFILTERPROC>()} else {&self.getnseparablefilter}})
31117			.field("getnhistogram", unsafe{if transmute::<_, *const c_void>(self.getnhistogram) == (dummy_pfnglgetnhistogramproc as *const c_void) {&null::<PFNGLGETNHISTOGRAMPROC>()} else {&self.getnhistogram}})
31118			.field("getnminmax", unsafe{if transmute::<_, *const c_void>(self.getnminmax) == (dummy_pfnglgetnminmaxproc as *const c_void) {&null::<PFNGLGETNMINMAXPROC>()} else {&self.getnminmax}})
31119			.field("texturebarrier", unsafe{if transmute::<_, *const c_void>(self.texturebarrier) == (dummy_pfngltexturebarrierproc as *const c_void) {&null::<PFNGLTEXTUREBARRIERPROC>()} else {&self.texturebarrier}})
31120			.finish()
31121		} else {
31122			f.debug_struct("Version45")
31123			.field("available", &self.available)
31124			.finish_non_exhaustive()
31125		}
31126	}
31127}
31128
31129/// The prototype to the OpenGL function `SpecializeShader`
31130type PFNGLSPECIALIZESHADERPROC = extern "system" fn(GLuint, *const GLchar, GLuint, *const GLuint, *const GLuint);
31131
31132/// The prototype to the OpenGL function `MultiDrawArraysIndirectCount`
31133type PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC = extern "system" fn(GLenum, *const c_void, GLintptr, GLsizei, GLsizei);
31134
31135/// The prototype to the OpenGL function `MultiDrawElementsIndirectCount`
31136type PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC = extern "system" fn(GLenum, GLenum, *const c_void, GLintptr, GLsizei, GLsizei);
31137
31138/// The prototype to the OpenGL function `PolygonOffsetClamp`
31139type PFNGLPOLYGONOFFSETCLAMPPROC = extern "system" fn(GLfloat, GLfloat, GLfloat);
31140
31141/// The dummy function of `SpecializeShader()`
31142extern "system" fn dummy_pfnglspecializeshaderproc (_: GLuint, _: *const GLchar, _: GLuint, _: *const GLuint, _: *const GLuint) {
31143	panic!("OpenGL function pointer `glSpecializeShader()` is null.")
31144}
31145
31146/// The dummy function of `MultiDrawArraysIndirectCount()`
31147extern "system" fn dummy_pfnglmultidrawarraysindirectcountproc (_: GLenum, _: *const c_void, _: GLintptr, _: GLsizei, _: GLsizei) {
31148	panic!("OpenGL function pointer `glMultiDrawArraysIndirectCount()` is null.")
31149}
31150
31151/// The dummy function of `MultiDrawElementsIndirectCount()`
31152extern "system" fn dummy_pfnglmultidrawelementsindirectcountproc (_: GLenum, _: GLenum, _: *const c_void, _: GLintptr, _: GLsizei, _: GLsizei) {
31153	panic!("OpenGL function pointer `glMultiDrawElementsIndirectCount()` is null.")
31154}
31155
31156/// The dummy function of `PolygonOffsetClamp()`
31157extern "system" fn dummy_pfnglpolygonoffsetclampproc (_: GLfloat, _: GLfloat, _: GLfloat) {
31158	panic!("OpenGL function pointer `glPolygonOffsetClamp()` is null.")
31159}
31160/// Constant value defined from OpenGL 4.6
31161pub const GL_SHADER_BINARY_FORMAT_SPIR_V: GLenum = 0x9551;
31162
31163/// Constant value defined from OpenGL 4.6
31164pub const GL_SPIR_V_BINARY: GLenum = 0x9552;
31165
31166/// Constant value defined from OpenGL 4.6
31167pub const GL_PARAMETER_BUFFER: GLenum = 0x80EE;
31168
31169/// Constant value defined from OpenGL 4.6
31170pub const GL_PARAMETER_BUFFER_BINDING: GLenum = 0x80EF;
31171
31172/// Constant value defined from OpenGL 4.6
31173pub const GL_CONTEXT_FLAG_NO_ERROR_BIT: GLbitfield = 0x00000008;
31174
31175/// Constant value defined from OpenGL 4.6
31176pub const GL_VERTICES_SUBMITTED: GLenum = 0x82EE;
31177
31178/// Constant value defined from OpenGL 4.6
31179pub const GL_PRIMITIVES_SUBMITTED: GLenum = 0x82EF;
31180
31181/// Constant value defined from OpenGL 4.6
31182pub const GL_VERTEX_SHADER_INVOCATIONS: GLenum = 0x82F0;
31183
31184/// Constant value defined from OpenGL 4.6
31185pub const GL_TESS_CONTROL_SHADER_PATCHES: GLenum = 0x82F1;
31186
31187/// Constant value defined from OpenGL 4.6
31188pub const GL_TESS_EVALUATION_SHADER_INVOCATIONS: GLenum = 0x82F2;
31189
31190/// Constant value defined from OpenGL 4.6
31191pub const GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED: GLenum = 0x82F3;
31192
31193/// Constant value defined from OpenGL 4.6
31194pub const GL_FRAGMENT_SHADER_INVOCATIONS: GLenum = 0x82F4;
31195
31196/// Constant value defined from OpenGL 4.6
31197pub const GL_COMPUTE_SHADER_INVOCATIONS: GLenum = 0x82F5;
31198
31199/// Constant value defined from OpenGL 4.6
31200pub const GL_CLIPPING_INPUT_PRIMITIVES: GLenum = 0x82F6;
31201
31202/// Constant value defined from OpenGL 4.6
31203pub const GL_CLIPPING_OUTPUT_PRIMITIVES: GLenum = 0x82F7;
31204
31205/// Constant value defined from OpenGL 4.6
31206pub const GL_POLYGON_OFFSET_CLAMP: GLenum = 0x8E1B;
31207
31208/// Constant value defined from OpenGL 4.6
31209pub const GL_SPIR_V_EXTENSIONS: GLenum = 0x9553;
31210
31211/// Constant value defined from OpenGL 4.6
31212pub const GL_NUM_SPIR_V_EXTENSIONS: GLenum = 0x9554;
31213
31214/// Constant value defined from OpenGL 4.6
31215pub const GL_TEXTURE_MAX_ANISOTROPY: GLenum = 0x84FE;
31216
31217/// Constant value defined from OpenGL 4.6
31218pub const GL_MAX_TEXTURE_MAX_ANISOTROPY: GLenum = 0x84FF;
31219
31220/// Constant value defined from OpenGL 4.6
31221pub const GL_TRANSFORM_FEEDBACK_OVERFLOW: GLenum = 0x82EC;
31222
31223/// Constant value defined from OpenGL 4.6
31224pub const GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW: GLenum = 0x82ED;
31225
31226/// Functions from OpenGL version 4.6
31227pub trait GL_4_6 {
31228	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
31229	fn glGetError(&self) -> GLenum;
31230
31231	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSpecializeShader.xhtml>
31232	fn glSpecializeShader(&self, shader: GLuint, pEntryPoint: *const GLchar, numSpecializationConstants: GLuint, pConstantIndex: *const GLuint, pConstantValue: *const GLuint) -> Result<()>;
31233
31234	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawArraysIndirectCount.xhtml>
31235	fn glMultiDrawArraysIndirectCount(&self, mode: GLenum, indirect: *const c_void, drawcount: GLintptr, maxdrawcount: GLsizei, stride: GLsizei) -> Result<()>;
31236
31237	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawElementsIndirectCount.xhtml>
31238	fn glMultiDrawElementsIndirectCount(&self, mode: GLenum, type_: GLenum, indirect: *const c_void, drawcount: GLintptr, maxdrawcount: GLsizei, stride: GLsizei) -> Result<()>;
31239
31240	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPolygonOffsetClamp.xhtml>
31241	fn glPolygonOffsetClamp(&self, factor: GLfloat, units: GLfloat, clamp: GLfloat) -> Result<()>;
31242}
31243/// Functions from OpenGL version 4.6
31244#[derive(Clone, Copy, PartialEq, Eq, Hash)]
31245pub struct Version46 {
31246	/// Is OpenGL version 4.6 available
31247	available: bool,
31248
31249	/// The function pointer to `glGetError()`
31250	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
31251	pub geterror: PFNGLGETERRORPROC,
31252
31253	/// The function pointer to `glSpecializeShader()`
31254	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSpecializeShader.xhtml>
31255	pub specializeshader: PFNGLSPECIALIZESHADERPROC,
31256
31257	/// The function pointer to `glMultiDrawArraysIndirectCount()`
31258	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawArraysIndirectCount.xhtml>
31259	pub multidrawarraysindirectcount: PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC,
31260
31261	/// The function pointer to `glMultiDrawElementsIndirectCount()`
31262	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawElementsIndirectCount.xhtml>
31263	pub multidrawelementsindirectcount: PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC,
31264
31265	/// The function pointer to `glPolygonOffsetClamp()`
31266	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPolygonOffsetClamp.xhtml>
31267	pub polygonoffsetclamp: PFNGLPOLYGONOFFSETCLAMPPROC,
31268}
31269
31270impl GL_4_6 for Version46 {
31271	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
31272	#[inline(always)]
31273	fn glGetError(&self) -> GLenum {
31274		(self.geterror)()
31275	}
31276	#[inline(always)]
31277	fn glSpecializeShader(&self, shader: GLuint, pEntryPoint: *const GLchar, numSpecializationConstants: GLuint, pConstantIndex: *const GLuint, pConstantValue: *const GLuint) -> Result<()> {
31278		#[cfg(feature = "catch_nullptr")]
31279		let ret = process_catch("glSpecializeShader", catch_unwind(||(self.specializeshader)(shader, pEntryPoint, numSpecializationConstants, pConstantIndex, pConstantValue)));
31280		#[cfg(not(feature = "catch_nullptr"))]
31281		let ret = {(self.specializeshader)(shader, pEntryPoint, numSpecializationConstants, pConstantIndex, pConstantValue); Ok(())};
31282		#[cfg(feature = "diagnose")]
31283		if let Ok(ret) = ret {
31284			return to_result("glSpecializeShader", ret, self.glGetError());
31285		} else {
31286			return ret
31287		}
31288		#[cfg(not(feature = "diagnose"))]
31289		return ret;
31290	}
31291	#[inline(always)]
31292	fn glMultiDrawArraysIndirectCount(&self, mode: GLenum, indirect: *const c_void, drawcount: GLintptr, maxdrawcount: GLsizei, stride: GLsizei) -> Result<()> {
31293		#[cfg(feature = "catch_nullptr")]
31294		let ret = process_catch("glMultiDrawArraysIndirectCount", catch_unwind(||(self.multidrawarraysindirectcount)(mode, indirect, drawcount, maxdrawcount, stride)));
31295		#[cfg(not(feature = "catch_nullptr"))]
31296		let ret = {(self.multidrawarraysindirectcount)(mode, indirect, drawcount, maxdrawcount, stride); Ok(())};
31297		#[cfg(feature = "diagnose")]
31298		if let Ok(ret) = ret {
31299			return to_result("glMultiDrawArraysIndirectCount", ret, self.glGetError());
31300		} else {
31301			return ret
31302		}
31303		#[cfg(not(feature = "diagnose"))]
31304		return ret;
31305	}
31306	#[inline(always)]
31307	fn glMultiDrawElementsIndirectCount(&self, mode: GLenum, type_: GLenum, indirect: *const c_void, drawcount: GLintptr, maxdrawcount: GLsizei, stride: GLsizei) -> Result<()> {
31308		#[cfg(feature = "catch_nullptr")]
31309		let ret = process_catch("glMultiDrawElementsIndirectCount", catch_unwind(||(self.multidrawelementsindirectcount)(mode, type_, indirect, drawcount, maxdrawcount, stride)));
31310		#[cfg(not(feature = "catch_nullptr"))]
31311		let ret = {(self.multidrawelementsindirectcount)(mode, type_, indirect, drawcount, maxdrawcount, stride); Ok(())};
31312		#[cfg(feature = "diagnose")]
31313		if let Ok(ret) = ret {
31314			return to_result("glMultiDrawElementsIndirectCount", ret, self.glGetError());
31315		} else {
31316			return ret
31317		}
31318		#[cfg(not(feature = "diagnose"))]
31319		return ret;
31320	}
31321	#[inline(always)]
31322	fn glPolygonOffsetClamp(&self, factor: GLfloat, units: GLfloat, clamp: GLfloat) -> Result<()> {
31323		#[cfg(feature = "catch_nullptr")]
31324		let ret = process_catch("glPolygonOffsetClamp", catch_unwind(||(self.polygonoffsetclamp)(factor, units, clamp)));
31325		#[cfg(not(feature = "catch_nullptr"))]
31326		let ret = {(self.polygonoffsetclamp)(factor, units, clamp); Ok(())};
31327		#[cfg(feature = "diagnose")]
31328		if let Ok(ret) = ret {
31329			return to_result("glPolygonOffsetClamp", ret, self.glGetError());
31330		} else {
31331			return ret
31332		}
31333		#[cfg(not(feature = "diagnose"))]
31334		return ret;
31335	}
31336}
31337
31338impl Version46 {
31339	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
31340		let (_spec, major, minor, release) = base.get_version();
31341		if (major, minor, release) < (4, 6, 0) {
31342			return Self::default();
31343		}
31344		Self {
31345			available: true,
31346			geterror: {let proc = get_proc_address("glGetError"); if proc.is_null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
31347			specializeshader: {let proc = get_proc_address("glSpecializeShader"); if proc.is_null() {dummy_pfnglspecializeshaderproc} else {unsafe{transmute(proc)}}},
31348			multidrawarraysindirectcount: {let proc = get_proc_address("glMultiDrawArraysIndirectCount"); if proc.is_null() {dummy_pfnglmultidrawarraysindirectcountproc} else {unsafe{transmute(proc)}}},
31349			multidrawelementsindirectcount: {let proc = get_proc_address("glMultiDrawElementsIndirectCount"); if proc.is_null() {dummy_pfnglmultidrawelementsindirectcountproc} else {unsafe{transmute(proc)}}},
31350			polygonoffsetclamp: {let proc = get_proc_address("glPolygonOffsetClamp"); if proc.is_null() {dummy_pfnglpolygonoffsetclampproc} else {unsafe{transmute(proc)}}},
31351		}
31352	}
31353	#[inline(always)]
31354	pub fn get_available(&self) -> bool {
31355		self.available
31356	}
31357}
31358
31359impl Default for Version46 {
31360	fn default() -> Self {
31361		Self {
31362			available: false,
31363			geterror: dummy_pfnglgeterrorproc,
31364			specializeshader: dummy_pfnglspecializeshaderproc,
31365			multidrawarraysindirectcount: dummy_pfnglmultidrawarraysindirectcountproc,
31366			multidrawelementsindirectcount: dummy_pfnglmultidrawelementsindirectcountproc,
31367			polygonoffsetclamp: dummy_pfnglpolygonoffsetclampproc,
31368		}
31369	}
31370}
31371impl Debug for Version46 {
31372	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
31373		if self.available {
31374			f.debug_struct("Version46")
31375			.field("available", &self.available)
31376			.field("specializeshader", unsafe{if transmute::<_, *const c_void>(self.specializeshader) == (dummy_pfnglspecializeshaderproc as *const c_void) {&null::<PFNGLSPECIALIZESHADERPROC>()} else {&self.specializeshader}})
31377			.field("multidrawarraysindirectcount", unsafe{if transmute::<_, *const c_void>(self.multidrawarraysindirectcount) == (dummy_pfnglmultidrawarraysindirectcountproc as *const c_void) {&null::<PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC>()} else {&self.multidrawarraysindirectcount}})
31378			.field("multidrawelementsindirectcount", unsafe{if transmute::<_, *const c_void>(self.multidrawelementsindirectcount) == (dummy_pfnglmultidrawelementsindirectcountproc as *const c_void) {&null::<PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC>()} else {&self.multidrawelementsindirectcount}})
31379			.field("polygonoffsetclamp", unsafe{if transmute::<_, *const c_void>(self.polygonoffsetclamp) == (dummy_pfnglpolygonoffsetclampproc as *const c_void) {&null::<PFNGLPOLYGONOFFSETCLAMPPROC>()} else {&self.polygonoffsetclamp}})
31380			.finish()
31381		} else {
31382			f.debug_struct("Version46")
31383			.field("available", &self.available)
31384			.finish_non_exhaustive()
31385		}
31386	}
31387}
31388
31389/// Alias to `khronos_int32_t`
31390pub type GLfixed = khronos_int32_t;
31391/// Constant value defined from OpenGL ES 2.0
31392pub const GL_RED_BITS: GLenum = 0x0D52;
31393
31394/// Constant value defined from OpenGL ES 2.0
31395pub const GL_GREEN_BITS: GLenum = 0x0D53;
31396
31397/// Constant value defined from OpenGL ES 2.0
31398pub const GL_BLUE_BITS: GLenum = 0x0D54;
31399
31400/// Constant value defined from OpenGL ES 2.0
31401pub const GL_ALPHA_BITS: GLenum = 0x0D55;
31402
31403/// Constant value defined from OpenGL ES 2.0
31404pub const GL_DEPTH_BITS: GLenum = 0x0D56;
31405
31406/// Constant value defined from OpenGL ES 2.0
31407pub const GL_STENCIL_BITS: GLenum = 0x0D57;
31408
31409/// Constant value defined from OpenGL ES 2.0
31410pub const GL_LUMINANCE: GLenum = 0x1909;
31411
31412/// Constant value defined from OpenGL ES 2.0
31413pub const GL_LUMINANCE_ALPHA: GLenum = 0x190A;
31414
31415/// Constant value defined from OpenGL ES 2.0
31416pub const GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS: GLenum = 0x8CD9;
31417
31418/// Functions from OpenGL ES version 2.0
31419pub trait ES_GL_2_0 {
31420
31421	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glActiveTexture.xhtml>
31422	fn glActiveTexture(&self, texture: GLenum) -> Result<()>;
31423
31424	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glAttachShader.xhtml>
31425	fn glAttachShader(&self, program: GLuint, shader: GLuint) -> Result<()>;
31426
31427	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindAttribLocation.xhtml>
31428	fn glBindAttribLocation(&self, program: GLuint, index: GLuint, name: *const GLchar) -> Result<()>;
31429
31430	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindBuffer.xhtml>
31431	fn glBindBuffer(&self, target: GLenum, buffer: GLuint) -> Result<()>;
31432
31433	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindFramebuffer.xhtml>
31434	fn glBindFramebuffer(&self, target: GLenum, framebuffer: GLuint) -> Result<()>;
31435
31436	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindRenderbuffer.xhtml>
31437	fn glBindRenderbuffer(&self, target: GLenum, renderbuffer: GLuint) -> Result<()>;
31438
31439	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindTexture.xhtml>
31440	fn glBindTexture(&self, target: GLenum, texture: GLuint) -> Result<()>;
31441
31442	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendColor.xhtml>
31443	fn glBlendColor(&self, red: GLfloat, green: GLfloat, blue: GLfloat, alpha: GLfloat) -> Result<()>;
31444
31445	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendEquation.xhtml>
31446	fn glBlendEquation(&self, mode: GLenum) -> Result<()>;
31447
31448	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendEquationSeparate.xhtml>
31449	fn glBlendEquationSeparate(&self, modeRGB: GLenum, modeAlpha: GLenum) -> Result<()>;
31450
31451	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendFunc.xhtml>
31452	fn glBlendFunc(&self, sfactor: GLenum, dfactor: GLenum) -> Result<()>;
31453
31454	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendFuncSeparate.xhtml>
31455	fn glBlendFuncSeparate(&self, sfactorRGB: GLenum, dfactorRGB: GLenum, sfactorAlpha: GLenum, dfactorAlpha: GLenum) -> Result<()>;
31456
31457	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBufferData.xhtml>
31458	fn glBufferData(&self, target: GLenum, size: GLsizeiptr, data: *const c_void, usage: GLenum) -> Result<()>;
31459
31460	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBufferSubData.xhtml>
31461	fn glBufferSubData(&self, target: GLenum, offset: GLintptr, size: GLsizeiptr, data: *const c_void) -> Result<()>;
31462
31463	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCheckFramebufferStatus.xhtml>
31464	fn glCheckFramebufferStatus(&self, target: GLenum) -> Result<GLenum>;
31465
31466	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClear.xhtml>
31467	fn glClear(&self, mask: GLbitfield) -> Result<()>;
31468
31469	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClearColor.xhtml>
31470	fn glClearColor(&self, red: GLfloat, green: GLfloat, blue: GLfloat, alpha: GLfloat) -> Result<()>;
31471
31472	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClearDepthf.xhtml>
31473	fn glClearDepthf(&self, d: GLfloat) -> Result<()>;
31474
31475	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClearStencil.xhtml>
31476	fn glClearStencil(&self, s: GLint) -> Result<()>;
31477
31478	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glColorMask.xhtml>
31479	fn glColorMask(&self, red: GLboolean, green: GLboolean, blue: GLboolean, alpha: GLboolean) -> Result<()>;
31480
31481	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCompileShader.xhtml>
31482	fn glCompileShader(&self, shader: GLuint) -> Result<()>;
31483
31484	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCompressedTexImage2D.xhtml>
31485	fn glCompressedTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, border: GLint, imageSize: GLsizei, data: *const c_void) -> Result<()>;
31486
31487	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCompressedTexSubImage2D.xhtml>
31488	fn glCompressedTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()>;
31489
31490	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCopyTexImage2D.xhtml>
31491	fn glCopyTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei, border: GLint) -> Result<()>;
31492
31493	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCopyTexSubImage2D.xhtml>
31494	fn glCopyTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
31495
31496	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCreateProgram.xhtml>
31497	fn glCreateProgram(&self) -> Result<GLuint>;
31498
31499	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCreateShader.xhtml>
31500	fn glCreateShader(&self, type_: GLenum) -> Result<GLuint>;
31501
31502	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCullFace.xhtml>
31503	fn glCullFace(&self, mode: GLenum) -> Result<()>;
31504
31505	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteBuffers.xhtml>
31506	fn glDeleteBuffers(&self, n: GLsizei, buffers: *const GLuint) -> Result<()>;
31507
31508	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteFramebuffers.xhtml>
31509	fn glDeleteFramebuffers(&self, n: GLsizei, framebuffers: *const GLuint) -> Result<()>;
31510
31511	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteProgram.xhtml>
31512	fn glDeleteProgram(&self, program: GLuint) -> Result<()>;
31513
31514	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteRenderbuffers.xhtml>
31515	fn glDeleteRenderbuffers(&self, n: GLsizei, renderbuffers: *const GLuint) -> Result<()>;
31516
31517	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteShader.xhtml>
31518	fn glDeleteShader(&self, shader: GLuint) -> Result<()>;
31519
31520	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteTextures.xhtml>
31521	fn glDeleteTextures(&self, n: GLsizei, textures: *const GLuint) -> Result<()>;
31522
31523	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDepthFunc.xhtml>
31524	fn glDepthFunc(&self, func: GLenum) -> Result<()>;
31525
31526	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDepthMask.xhtml>
31527	fn glDepthMask(&self, flag: GLboolean) -> Result<()>;
31528
31529	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDepthRangef.xhtml>
31530	fn glDepthRangef(&self, n: GLfloat, f: GLfloat) -> Result<()>;
31531
31532	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDetachShader.xhtml>
31533	fn glDetachShader(&self, program: GLuint, shader: GLuint) -> Result<()>;
31534
31535	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDisable.xhtml>
31536	fn glDisable(&self, cap: GLenum) -> Result<()>;
31537
31538	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDisableVertexAttribArray.xhtml>
31539	fn glDisableVertexAttribArray(&self, index: GLuint) -> Result<()>;
31540
31541	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawArrays.xhtml>
31542	fn glDrawArrays(&self, mode: GLenum, first: GLint, count: GLsizei) -> Result<()>;
31543
31544	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawElements.xhtml>
31545	fn glDrawElements(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void) -> Result<()>;
31546
31547	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glEnable.xhtml>
31548	fn glEnable(&self, cap: GLenum) -> Result<()>;
31549
31550	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glEnableVertexAttribArray.xhtml>
31551	fn glEnableVertexAttribArray(&self, index: GLuint) -> Result<()>;
31552
31553	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFinish.xhtml>
31554	fn glFinish(&self) -> Result<()>;
31555
31556	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFlush.xhtml>
31557	fn glFlush(&self) -> Result<()>;
31558
31559	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFramebufferRenderbuffer.xhtml>
31560	fn glFramebufferRenderbuffer(&self, target: GLenum, attachment: GLenum, renderbuffertarget: GLenum, renderbuffer: GLuint) -> Result<()>;
31561
31562	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFramebufferTexture2D.xhtml>
31563	fn glFramebufferTexture2D(&self, target: GLenum, attachment: GLenum, textarget: GLenum, texture: GLuint, level: GLint) -> Result<()>;
31564
31565	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFrontFace.xhtml>
31566	fn glFrontFace(&self, mode: GLenum) -> Result<()>;
31567
31568	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenBuffers.xhtml>
31569	fn glGenBuffers(&self, n: GLsizei, buffers: *mut GLuint) -> Result<()>;
31570
31571	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenerateMipmap.xhtml>
31572	fn glGenerateMipmap(&self, target: GLenum) -> Result<()>;
31573
31574	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenFramebuffers.xhtml>
31575	fn glGenFramebuffers(&self, n: GLsizei, framebuffers: *mut GLuint) -> Result<()>;
31576
31577	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenRenderbuffers.xhtml>
31578	fn glGenRenderbuffers(&self, n: GLsizei, renderbuffers: *mut GLuint) -> Result<()>;
31579
31580	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenTextures.xhtml>
31581	fn glGenTextures(&self, n: GLsizei, textures: *mut GLuint) -> Result<()>;
31582
31583	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetActiveAttrib.xhtml>
31584	fn glGetActiveAttrib(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLint, type_: *mut GLenum, name: *mut GLchar) -> Result<()>;
31585
31586	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetActiveUniform.xhtml>
31587	fn glGetActiveUniform(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLint, type_: *mut GLenum, name: *mut GLchar) -> Result<()>;
31588
31589	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetAttachedShaders.xhtml>
31590	fn glGetAttachedShaders(&self, program: GLuint, maxCount: GLsizei, count: *mut GLsizei, shaders: *mut GLuint) -> Result<()>;
31591
31592	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetAttribLocation.xhtml>
31593	fn glGetAttribLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint>;
31594
31595	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetBooleanv.xhtml>
31596	fn glGetBooleanv(&self, pname: GLenum, data: *mut GLboolean) -> Result<()>;
31597
31598	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetBufferParameteriv.xhtml>
31599	fn glGetBufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
31600
31601	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetError.xhtml>
31602	fn glGetError(&self) -> GLenum;
31603
31604	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetFloatv.xhtml>
31605	fn glGetFloatv(&self, pname: GLenum, data: *mut GLfloat) -> Result<()>;
31606
31607	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetFramebufferAttachmentParameteriv.xhtml>
31608	fn glGetFramebufferAttachmentParameteriv(&self, target: GLenum, attachment: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
31609
31610	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetIntegerv.xhtml>
31611	fn glGetIntegerv(&self, pname: GLenum, data: *mut GLint) -> Result<()>;
31612
31613	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramiv.xhtml>
31614	fn glGetProgramiv(&self, program: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
31615
31616	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramInfoLog.xhtml>
31617	fn glGetProgramInfoLog(&self, program: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()>;
31618
31619	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetRenderbufferParameteriv.xhtml>
31620	fn glGetRenderbufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
31621
31622	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetShaderiv.xhtml>
31623	fn glGetShaderiv(&self, shader: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
31624
31625	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetShaderInfoLog.xhtml>
31626	fn glGetShaderInfoLog(&self, shader: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()>;
31627
31628	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetShaderPrecisionFormat.xhtml>
31629	fn glGetShaderPrecisionFormat(&self, shadertype: GLenum, precisiontype: GLenum, range: *mut GLint, precision: *mut GLint) -> Result<()>;
31630
31631	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetShaderSource.xhtml>
31632	fn glGetShaderSource(&self, shader: GLuint, bufSize: GLsizei, length: *mut GLsizei, source: *mut GLchar) -> Result<()>;
31633
31634	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetString.xhtml>
31635	fn glGetString(&self, name: GLenum) -> Result<&'static str>;
31636
31637	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetTexParameterfv.xhtml>
31638	fn glGetTexParameterfv(&self, target: GLenum, pname: GLenum, params: *mut GLfloat) -> Result<()>;
31639
31640	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetTexParameteriv.xhtml>
31641	fn glGetTexParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
31642
31643	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetUniformfv.xhtml>
31644	fn glGetUniformfv(&self, program: GLuint, location: GLint, params: *mut GLfloat) -> Result<()>;
31645
31646	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetUniformiv.xhtml>
31647	fn glGetUniformiv(&self, program: GLuint, location: GLint, params: *mut GLint) -> Result<()>;
31648
31649	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetUniformLocation.xhtml>
31650	fn glGetUniformLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint>;
31651
31652	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetVertexAttribfv.xhtml>
31653	fn glGetVertexAttribfv(&self, index: GLuint, pname: GLenum, params: *mut GLfloat) -> Result<()>;
31654
31655	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetVertexAttribiv.xhtml>
31656	fn glGetVertexAttribiv(&self, index: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
31657
31658	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetVertexAttribPointerv.xhtml>
31659	fn glGetVertexAttribPointerv(&self, index: GLuint, pname: GLenum, pointer: *mut *mut c_void) -> Result<()>;
31660
31661	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glHint.xhtml>
31662	fn glHint(&self, target: GLenum, mode: GLenum) -> Result<()>;
31663
31664	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsBuffer.xhtml>
31665	fn glIsBuffer(&self, buffer: GLuint) -> Result<GLboolean>;
31666
31667	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsEnabled.xhtml>
31668	fn glIsEnabled(&self, cap: GLenum) -> Result<GLboolean>;
31669
31670	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsFramebuffer.xhtml>
31671	fn glIsFramebuffer(&self, framebuffer: GLuint) -> Result<GLboolean>;
31672
31673	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsProgram.xhtml>
31674	fn glIsProgram(&self, program: GLuint) -> Result<GLboolean>;
31675
31676	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsRenderbuffer.xhtml>
31677	fn glIsRenderbuffer(&self, renderbuffer: GLuint) -> Result<GLboolean>;
31678
31679	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsShader.xhtml>
31680	fn glIsShader(&self, shader: GLuint) -> Result<GLboolean>;
31681
31682	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsTexture.xhtml>
31683	fn glIsTexture(&self, texture: GLuint) -> Result<GLboolean>;
31684
31685	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glLineWidth.xhtml>
31686	fn glLineWidth(&self, width: GLfloat) -> Result<()>;
31687
31688	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glLinkProgram.xhtml>
31689	fn glLinkProgram(&self, program: GLuint) -> Result<()>;
31690
31691	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glPixelStorei.xhtml>
31692	fn glPixelStorei(&self, pname: GLenum, param: GLint) -> Result<()>;
31693
31694	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glPolygonOffset.xhtml>
31695	fn glPolygonOffset(&self, factor: GLfloat, units: GLfloat) -> Result<()>;
31696
31697	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glReadPixels.xhtml>
31698	fn glReadPixels(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, pixels: *mut c_void) -> Result<()>;
31699
31700	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glReleaseShaderCompiler.xhtml>
31701	fn glReleaseShaderCompiler(&self) -> Result<()>;
31702
31703	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glRenderbufferStorage.xhtml>
31704	fn glRenderbufferStorage(&self, target: GLenum, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()>;
31705
31706	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glSampleCoverage.xhtml>
31707	fn glSampleCoverage(&self, value: GLfloat, invert: GLboolean) -> Result<()>;
31708
31709	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glScissor.xhtml>
31710	fn glScissor(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
31711
31712	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glShaderBinary.xhtml>
31713	fn glShaderBinary(&self, count: GLsizei, shaders: *const GLuint, binaryformat: GLenum, binary: *const c_void, length: GLsizei) -> Result<()>;
31714
31715	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glShaderSource.xhtml>
31716	fn glShaderSource(&self, shader: GLuint, count: GLsizei, string_: *const *const GLchar, length: *const GLint) -> Result<()>;
31717
31718	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glStencilFunc.xhtml>
31719	fn glStencilFunc(&self, func: GLenum, ref_: GLint, mask: GLuint) -> Result<()>;
31720
31721	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glStencilFuncSeparate.xhtml>
31722	fn glStencilFuncSeparate(&self, face: GLenum, func: GLenum, ref_: GLint, mask: GLuint) -> Result<()>;
31723
31724	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glStencilMask.xhtml>
31725	fn glStencilMask(&self, mask: GLuint) -> Result<()>;
31726
31727	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glStencilMaskSeparate.xhtml>
31728	fn glStencilMaskSeparate(&self, face: GLenum, mask: GLuint) -> Result<()>;
31729
31730	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glStencilOp.xhtml>
31731	fn glStencilOp(&self, fail: GLenum, zfail: GLenum, zpass: GLenum) -> Result<()>;
31732
31733	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glStencilOpSeparate.xhtml>
31734	fn glStencilOpSeparate(&self, face: GLenum, sfail: GLenum, dpfail: GLenum, dppass: GLenum) -> Result<()>;
31735
31736	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexImage2D.xhtml>
31737	fn glTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
31738
31739	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexParameterf.xhtml>
31740	fn glTexParameterf(&self, target: GLenum, pname: GLenum, param: GLfloat) -> Result<()>;
31741
31742	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexParameterfv.xhtml>
31743	fn glTexParameterfv(&self, target: GLenum, pname: GLenum, params: *const GLfloat) -> Result<()>;
31744
31745	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexParameteri.xhtml>
31746	fn glTexParameteri(&self, target: GLenum, pname: GLenum, param: GLint) -> Result<()>;
31747
31748	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexParameteriv.xhtml>
31749	fn glTexParameteriv(&self, target: GLenum, pname: GLenum, params: *const GLint) -> Result<()>;
31750
31751	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexSubImage2D.xhtml>
31752	fn glTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
31753
31754	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform1f.xhtml>
31755	fn glUniform1f(&self, location: GLint, v0: GLfloat) -> Result<()>;
31756
31757	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform1fv.xhtml>
31758	fn glUniform1fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
31759
31760	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform1i.xhtml>
31761	fn glUniform1i(&self, location: GLint, v0: GLint) -> Result<()>;
31762
31763	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform1iv.xhtml>
31764	fn glUniform1iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
31765
31766	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform2f.xhtml>
31767	fn glUniform2f(&self, location: GLint, v0: GLfloat, v1: GLfloat) -> Result<()>;
31768
31769	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform2fv.xhtml>
31770	fn glUniform2fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
31771
31772	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform2i.xhtml>
31773	fn glUniform2i(&self, location: GLint, v0: GLint, v1: GLint) -> Result<()>;
31774
31775	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform2iv.xhtml>
31776	fn glUniform2iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
31777
31778	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform3f.xhtml>
31779	fn glUniform3f(&self, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat) -> Result<()>;
31780
31781	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform3fv.xhtml>
31782	fn glUniform3fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
31783
31784	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform3i.xhtml>
31785	fn glUniform3i(&self, location: GLint, v0: GLint, v1: GLint, v2: GLint) -> Result<()>;
31786
31787	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform3iv.xhtml>
31788	fn glUniform3iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
31789
31790	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform4f.xhtml>
31791	fn glUniform4f(&self, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat, v3: GLfloat) -> Result<()>;
31792
31793	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform4fv.xhtml>
31794	fn glUniform4fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
31795
31796	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform4i.xhtml>
31797	fn glUniform4i(&self, location: GLint, v0: GLint, v1: GLint, v2: GLint, v3: GLint) -> Result<()>;
31798
31799	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform4iv.xhtml>
31800	fn glUniform4iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
31801
31802	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix2fv.xhtml>
31803	fn glUniformMatrix2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
31804
31805	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix3fv.xhtml>
31806	fn glUniformMatrix3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
31807
31808	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix4fv.xhtml>
31809	fn glUniformMatrix4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
31810
31811	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUseProgram.xhtml>
31812	fn glUseProgram(&self, program: GLuint) -> Result<()>;
31813
31814	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glValidateProgram.xhtml>
31815	fn glValidateProgram(&self, program: GLuint) -> Result<()>;
31816
31817	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttrib1f.xhtml>
31818	fn glVertexAttrib1f(&self, index: GLuint, x: GLfloat) -> Result<()>;
31819
31820	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttrib1fv.xhtml>
31821	fn glVertexAttrib1fv(&self, index: GLuint, v: *const GLfloat) -> Result<()>;
31822
31823	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttrib2f.xhtml>
31824	fn glVertexAttrib2f(&self, index: GLuint, x: GLfloat, y: GLfloat) -> Result<()>;
31825
31826	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttrib2fv.xhtml>
31827	fn glVertexAttrib2fv(&self, index: GLuint, v: *const GLfloat) -> Result<()>;
31828
31829	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttrib3f.xhtml>
31830	fn glVertexAttrib3f(&self, index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat) -> Result<()>;
31831
31832	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttrib3fv.xhtml>
31833	fn glVertexAttrib3fv(&self, index: GLuint, v: *const GLfloat) -> Result<()>;
31834
31835	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttrib4f.xhtml>
31836	fn glVertexAttrib4f(&self, index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat, w: GLfloat) -> Result<()>;
31837
31838	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttrib4fv.xhtml>
31839	fn glVertexAttrib4fv(&self, index: GLuint, v: *const GLfloat) -> Result<()>;
31840
31841	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribPointer.xhtml>
31842	fn glVertexAttribPointer(&self, index: GLuint, size: GLint, type_: GLenum, normalized: GLboolean, stride: GLsizei, pointer: *const c_void) -> Result<()>;
31843
31844	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glViewport.xhtml>
31845	fn glViewport(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
31846}
31847/// Functions from OpenGL ES version 2.0
31848#[derive(Clone, Copy, PartialEq, Eq, Hash)]
31849pub struct EsVersion20 {
31850	/// Is OpenGL ES version 2.0 available
31851	available: bool,
31852	/// The function pointer to `glActiveTexture()`
31853	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glActiveTexture.xhtml>
31854	pub activetexture: PFNGLACTIVETEXTUREPROC,
31855
31856	/// The function pointer to `glAttachShader()`
31857	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glAttachShader.xhtml>
31858	pub attachshader: PFNGLATTACHSHADERPROC,
31859
31860	/// The function pointer to `glBindAttribLocation()`
31861	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindAttribLocation.xhtml>
31862	pub bindattriblocation: PFNGLBINDATTRIBLOCATIONPROC,
31863
31864	/// The function pointer to `glBindBuffer()`
31865	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindBuffer.xhtml>
31866	pub bindbuffer: PFNGLBINDBUFFERPROC,
31867
31868	/// The function pointer to `glBindFramebuffer()`
31869	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindFramebuffer.xhtml>
31870	pub bindframebuffer: PFNGLBINDFRAMEBUFFERPROC,
31871
31872	/// The function pointer to `glBindRenderbuffer()`
31873	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindRenderbuffer.xhtml>
31874	pub bindrenderbuffer: PFNGLBINDRENDERBUFFERPROC,
31875
31876	/// The function pointer to `glBindTexture()`
31877	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindTexture.xhtml>
31878	pub bindtexture: PFNGLBINDTEXTUREPROC,
31879
31880	/// The function pointer to `glBlendColor()`
31881	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendColor.xhtml>
31882	pub blendcolor: PFNGLBLENDCOLORPROC,
31883
31884	/// The function pointer to `glBlendEquation()`
31885	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendEquation.xhtml>
31886	pub blendequation: PFNGLBLENDEQUATIONPROC,
31887
31888	/// The function pointer to `glBlendEquationSeparate()`
31889	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendEquationSeparate.xhtml>
31890	pub blendequationseparate: PFNGLBLENDEQUATIONSEPARATEPROC,
31891
31892	/// The function pointer to `glBlendFunc()`
31893	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendFunc.xhtml>
31894	pub blendfunc: PFNGLBLENDFUNCPROC,
31895
31896	/// The function pointer to `glBlendFuncSeparate()`
31897	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendFuncSeparate.xhtml>
31898	pub blendfuncseparate: PFNGLBLENDFUNCSEPARATEPROC,
31899
31900	/// The function pointer to `glBufferData()`
31901	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBufferData.xhtml>
31902	pub bufferdata: PFNGLBUFFERDATAPROC,
31903
31904	/// The function pointer to `glBufferSubData()`
31905	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBufferSubData.xhtml>
31906	pub buffersubdata: PFNGLBUFFERSUBDATAPROC,
31907
31908	/// The function pointer to `glCheckFramebufferStatus()`
31909	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCheckFramebufferStatus.xhtml>
31910	pub checkframebufferstatus: PFNGLCHECKFRAMEBUFFERSTATUSPROC,
31911
31912	/// The function pointer to `glClear()`
31913	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClear.xhtml>
31914	pub clear: PFNGLCLEARPROC,
31915
31916	/// The function pointer to `glClearColor()`
31917	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClearColor.xhtml>
31918	pub clearcolor: PFNGLCLEARCOLORPROC,
31919
31920	/// The function pointer to `glClearDepthf()`
31921	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClearDepthf.xhtml>
31922	pub cleardepthf: PFNGLCLEARDEPTHFPROC,
31923
31924	/// The function pointer to `glClearStencil()`
31925	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClearStencil.xhtml>
31926	pub clearstencil: PFNGLCLEARSTENCILPROC,
31927
31928	/// The function pointer to `glColorMask()`
31929	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glColorMask.xhtml>
31930	pub colormask: PFNGLCOLORMASKPROC,
31931
31932	/// The function pointer to `glCompileShader()`
31933	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCompileShader.xhtml>
31934	pub compileshader: PFNGLCOMPILESHADERPROC,
31935
31936	/// The function pointer to `glCompressedTexImage2D()`
31937	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCompressedTexImage2D.xhtml>
31938	pub compressedteximage2d: PFNGLCOMPRESSEDTEXIMAGE2DPROC,
31939
31940	/// The function pointer to `glCompressedTexSubImage2D()`
31941	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCompressedTexSubImage2D.xhtml>
31942	pub compressedtexsubimage2d: PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC,
31943
31944	/// The function pointer to `glCopyTexImage2D()`
31945	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCopyTexImage2D.xhtml>
31946	pub copyteximage2d: PFNGLCOPYTEXIMAGE2DPROC,
31947
31948	/// The function pointer to `glCopyTexSubImage2D()`
31949	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCopyTexSubImage2D.xhtml>
31950	pub copytexsubimage2d: PFNGLCOPYTEXSUBIMAGE2DPROC,
31951
31952	/// The function pointer to `glCreateProgram()`
31953	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCreateProgram.xhtml>
31954	pub createprogram: PFNGLCREATEPROGRAMPROC,
31955
31956	/// The function pointer to `glCreateShader()`
31957	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCreateShader.xhtml>
31958	pub createshader: PFNGLCREATESHADERPROC,
31959
31960	/// The function pointer to `glCullFace()`
31961	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCullFace.xhtml>
31962	pub cullface: PFNGLCULLFACEPROC,
31963
31964	/// The function pointer to `glDeleteBuffers()`
31965	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteBuffers.xhtml>
31966	pub deletebuffers: PFNGLDELETEBUFFERSPROC,
31967
31968	/// The function pointer to `glDeleteFramebuffers()`
31969	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteFramebuffers.xhtml>
31970	pub deleteframebuffers: PFNGLDELETEFRAMEBUFFERSPROC,
31971
31972	/// The function pointer to `glDeleteProgram()`
31973	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteProgram.xhtml>
31974	pub deleteprogram: PFNGLDELETEPROGRAMPROC,
31975
31976	/// The function pointer to `glDeleteRenderbuffers()`
31977	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteRenderbuffers.xhtml>
31978	pub deleterenderbuffers: PFNGLDELETERENDERBUFFERSPROC,
31979
31980	/// The function pointer to `glDeleteShader()`
31981	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteShader.xhtml>
31982	pub deleteshader: PFNGLDELETESHADERPROC,
31983
31984	/// The function pointer to `glDeleteTextures()`
31985	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteTextures.xhtml>
31986	pub deletetextures: PFNGLDELETETEXTURESPROC,
31987
31988	/// The function pointer to `glDepthFunc()`
31989	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDepthFunc.xhtml>
31990	pub depthfunc: PFNGLDEPTHFUNCPROC,
31991
31992	/// The function pointer to `glDepthMask()`
31993	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDepthMask.xhtml>
31994	pub depthmask: PFNGLDEPTHMASKPROC,
31995
31996	/// The function pointer to `glDepthRangef()`
31997	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDepthRangef.xhtml>
31998	pub depthrangef: PFNGLDEPTHRANGEFPROC,
31999
32000	/// The function pointer to `glDetachShader()`
32001	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDetachShader.xhtml>
32002	pub detachshader: PFNGLDETACHSHADERPROC,
32003
32004	/// The function pointer to `glDisable()`
32005	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDisable.xhtml>
32006	pub disable: PFNGLDISABLEPROC,
32007
32008	/// The function pointer to `glDisableVertexAttribArray()`
32009	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDisableVertexAttribArray.xhtml>
32010	pub disablevertexattribarray: PFNGLDISABLEVERTEXATTRIBARRAYPROC,
32011
32012	/// The function pointer to `glDrawArrays()`
32013	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawArrays.xhtml>
32014	pub drawarrays: PFNGLDRAWARRAYSPROC,
32015
32016	/// The function pointer to `glDrawElements()`
32017	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawElements.xhtml>
32018	pub drawelements: PFNGLDRAWELEMENTSPROC,
32019
32020	/// The function pointer to `glEnable()`
32021	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glEnable.xhtml>
32022	pub enable: PFNGLENABLEPROC,
32023
32024	/// The function pointer to `glEnableVertexAttribArray()`
32025	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glEnableVertexAttribArray.xhtml>
32026	pub enablevertexattribarray: PFNGLENABLEVERTEXATTRIBARRAYPROC,
32027
32028	/// The function pointer to `glFinish()`
32029	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFinish.xhtml>
32030	pub finish: PFNGLFINISHPROC,
32031
32032	/// The function pointer to `glFlush()`
32033	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFlush.xhtml>
32034	pub flush: PFNGLFLUSHPROC,
32035
32036	/// The function pointer to `glFramebufferRenderbuffer()`
32037	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFramebufferRenderbuffer.xhtml>
32038	pub framebufferrenderbuffer: PFNGLFRAMEBUFFERRENDERBUFFERPROC,
32039
32040	/// The function pointer to `glFramebufferTexture2D()`
32041	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFramebufferTexture2D.xhtml>
32042	pub framebuffertexture2d: PFNGLFRAMEBUFFERTEXTURE2DPROC,
32043
32044	/// The function pointer to `glFrontFace()`
32045	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFrontFace.xhtml>
32046	pub frontface: PFNGLFRONTFACEPROC,
32047
32048	/// The function pointer to `glGenBuffers()`
32049	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenBuffers.xhtml>
32050	pub genbuffers: PFNGLGENBUFFERSPROC,
32051
32052	/// The function pointer to `glGenerateMipmap()`
32053	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenerateMipmap.xhtml>
32054	pub generatemipmap: PFNGLGENERATEMIPMAPPROC,
32055
32056	/// The function pointer to `glGenFramebuffers()`
32057	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenFramebuffers.xhtml>
32058	pub genframebuffers: PFNGLGENFRAMEBUFFERSPROC,
32059
32060	/// The function pointer to `glGenRenderbuffers()`
32061	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenRenderbuffers.xhtml>
32062	pub genrenderbuffers: PFNGLGENRENDERBUFFERSPROC,
32063
32064	/// The function pointer to `glGenTextures()`
32065	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenTextures.xhtml>
32066	pub gentextures: PFNGLGENTEXTURESPROC,
32067
32068	/// The function pointer to `glGetActiveAttrib()`
32069	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetActiveAttrib.xhtml>
32070	pub getactiveattrib: PFNGLGETACTIVEATTRIBPROC,
32071
32072	/// The function pointer to `glGetActiveUniform()`
32073	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetActiveUniform.xhtml>
32074	pub getactiveuniform: PFNGLGETACTIVEUNIFORMPROC,
32075
32076	/// The function pointer to `glGetAttachedShaders()`
32077	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetAttachedShaders.xhtml>
32078	pub getattachedshaders: PFNGLGETATTACHEDSHADERSPROC,
32079
32080	/// The function pointer to `glGetAttribLocation()`
32081	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetAttribLocation.xhtml>
32082	pub getattriblocation: PFNGLGETATTRIBLOCATIONPROC,
32083
32084	/// The function pointer to `glGetBooleanv()`
32085	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetBooleanv.xhtml>
32086	pub getbooleanv: PFNGLGETBOOLEANVPROC,
32087
32088	/// The function pointer to `glGetBufferParameteriv()`
32089	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetBufferParameteriv.xhtml>
32090	pub getbufferparameteriv: PFNGLGETBUFFERPARAMETERIVPROC,
32091
32092	/// The function pointer to `glGetError()`
32093	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetError.xhtml>
32094	pub geterror: PFNGLGETERRORPROC,
32095
32096	/// The function pointer to `glGetFloatv()`
32097	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetFloatv.xhtml>
32098	pub getfloatv: PFNGLGETFLOATVPROC,
32099
32100	/// The function pointer to `glGetFramebufferAttachmentParameteriv()`
32101	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetFramebufferAttachmentParameteriv.xhtml>
32102	pub getframebufferattachmentparameteriv: PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC,
32103
32104	/// The function pointer to `glGetIntegerv()`
32105	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetIntegerv.xhtml>
32106	pub getintegerv: PFNGLGETINTEGERVPROC,
32107
32108	/// The function pointer to `glGetProgramiv()`
32109	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramiv.xhtml>
32110	pub getprogramiv: PFNGLGETPROGRAMIVPROC,
32111
32112	/// The function pointer to `glGetProgramInfoLog()`
32113	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramInfoLog.xhtml>
32114	pub getprograminfolog: PFNGLGETPROGRAMINFOLOGPROC,
32115
32116	/// The function pointer to `glGetRenderbufferParameteriv()`
32117	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetRenderbufferParameteriv.xhtml>
32118	pub getrenderbufferparameteriv: PFNGLGETRENDERBUFFERPARAMETERIVPROC,
32119
32120	/// The function pointer to `glGetShaderiv()`
32121	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetShaderiv.xhtml>
32122	pub getshaderiv: PFNGLGETSHADERIVPROC,
32123
32124	/// The function pointer to `glGetShaderInfoLog()`
32125	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetShaderInfoLog.xhtml>
32126	pub getshaderinfolog: PFNGLGETSHADERINFOLOGPROC,
32127
32128	/// The function pointer to `glGetShaderPrecisionFormat()`
32129	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetShaderPrecisionFormat.xhtml>
32130	pub getshaderprecisionformat: PFNGLGETSHADERPRECISIONFORMATPROC,
32131
32132	/// The function pointer to `glGetShaderSource()`
32133	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetShaderSource.xhtml>
32134	pub getshadersource: PFNGLGETSHADERSOURCEPROC,
32135
32136	/// The function pointer to `glGetString()`
32137	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetString.xhtml>
32138	pub getstring: PFNGLGETSTRINGPROC,
32139
32140	/// The function pointer to `glGetTexParameterfv()`
32141	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetTexParameterfv.xhtml>
32142	pub gettexparameterfv: PFNGLGETTEXPARAMETERFVPROC,
32143
32144	/// The function pointer to `glGetTexParameteriv()`
32145	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetTexParameteriv.xhtml>
32146	pub gettexparameteriv: PFNGLGETTEXPARAMETERIVPROC,
32147
32148	/// The function pointer to `glGetUniformfv()`
32149	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetUniformfv.xhtml>
32150	pub getuniformfv: PFNGLGETUNIFORMFVPROC,
32151
32152	/// The function pointer to `glGetUniformiv()`
32153	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetUniformiv.xhtml>
32154	pub getuniformiv: PFNGLGETUNIFORMIVPROC,
32155
32156	/// The function pointer to `glGetUniformLocation()`
32157	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetUniformLocation.xhtml>
32158	pub getuniformlocation: PFNGLGETUNIFORMLOCATIONPROC,
32159
32160	/// The function pointer to `glGetVertexAttribfv()`
32161	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetVertexAttribfv.xhtml>
32162	pub getvertexattribfv: PFNGLGETVERTEXATTRIBFVPROC,
32163
32164	/// The function pointer to `glGetVertexAttribiv()`
32165	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetVertexAttribiv.xhtml>
32166	pub getvertexattribiv: PFNGLGETVERTEXATTRIBIVPROC,
32167
32168	/// The function pointer to `glGetVertexAttribPointerv()`
32169	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetVertexAttribPointerv.xhtml>
32170	pub getvertexattribpointerv: PFNGLGETVERTEXATTRIBPOINTERVPROC,
32171
32172	/// The function pointer to `glHint()`
32173	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glHint.xhtml>
32174	pub hint: PFNGLHINTPROC,
32175
32176	/// The function pointer to `glIsBuffer()`
32177	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsBuffer.xhtml>
32178	pub isbuffer: PFNGLISBUFFERPROC,
32179
32180	/// The function pointer to `glIsEnabled()`
32181	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsEnabled.xhtml>
32182	pub isenabled: PFNGLISENABLEDPROC,
32183
32184	/// The function pointer to `glIsFramebuffer()`
32185	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsFramebuffer.xhtml>
32186	pub isframebuffer: PFNGLISFRAMEBUFFERPROC,
32187
32188	/// The function pointer to `glIsProgram()`
32189	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsProgram.xhtml>
32190	pub isprogram: PFNGLISPROGRAMPROC,
32191
32192	/// The function pointer to `glIsRenderbuffer()`
32193	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsRenderbuffer.xhtml>
32194	pub isrenderbuffer: PFNGLISRENDERBUFFERPROC,
32195
32196	/// The function pointer to `glIsShader()`
32197	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsShader.xhtml>
32198	pub isshader: PFNGLISSHADERPROC,
32199
32200	/// The function pointer to `glIsTexture()`
32201	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsTexture.xhtml>
32202	pub istexture: PFNGLISTEXTUREPROC,
32203
32204	/// The function pointer to `glLineWidth()`
32205	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glLineWidth.xhtml>
32206	pub linewidth: PFNGLLINEWIDTHPROC,
32207
32208	/// The function pointer to `glLinkProgram()`
32209	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glLinkProgram.xhtml>
32210	pub linkprogram: PFNGLLINKPROGRAMPROC,
32211
32212	/// The function pointer to `glPixelStorei()`
32213	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glPixelStorei.xhtml>
32214	pub pixelstorei: PFNGLPIXELSTOREIPROC,
32215
32216	/// The function pointer to `glPolygonOffset()`
32217	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glPolygonOffset.xhtml>
32218	pub polygonoffset: PFNGLPOLYGONOFFSETPROC,
32219
32220	/// The function pointer to `glReadPixels()`
32221	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glReadPixels.xhtml>
32222	pub readpixels: PFNGLREADPIXELSPROC,
32223
32224	/// The function pointer to `glReleaseShaderCompiler()`
32225	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glReleaseShaderCompiler.xhtml>
32226	pub releaseshadercompiler: PFNGLRELEASESHADERCOMPILERPROC,
32227
32228	/// The function pointer to `glRenderbufferStorage()`
32229	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glRenderbufferStorage.xhtml>
32230	pub renderbufferstorage: PFNGLRENDERBUFFERSTORAGEPROC,
32231
32232	/// The function pointer to `glSampleCoverage()`
32233	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glSampleCoverage.xhtml>
32234	pub samplecoverage: PFNGLSAMPLECOVERAGEPROC,
32235
32236	/// The function pointer to `glScissor()`
32237	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glScissor.xhtml>
32238	pub scissor: PFNGLSCISSORPROC,
32239
32240	/// The function pointer to `glShaderBinary()`
32241	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glShaderBinary.xhtml>
32242	pub shaderbinary: PFNGLSHADERBINARYPROC,
32243
32244	/// The function pointer to `glShaderSource()`
32245	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glShaderSource.xhtml>
32246	pub shadersource: PFNGLSHADERSOURCEPROC,
32247
32248	/// The function pointer to `glStencilFunc()`
32249	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glStencilFunc.xhtml>
32250	pub stencilfunc: PFNGLSTENCILFUNCPROC,
32251
32252	/// The function pointer to `glStencilFuncSeparate()`
32253	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glStencilFuncSeparate.xhtml>
32254	pub stencilfuncseparate: PFNGLSTENCILFUNCSEPARATEPROC,
32255
32256	/// The function pointer to `glStencilMask()`
32257	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glStencilMask.xhtml>
32258	pub stencilmask: PFNGLSTENCILMASKPROC,
32259
32260	/// The function pointer to `glStencilMaskSeparate()`
32261	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glStencilMaskSeparate.xhtml>
32262	pub stencilmaskseparate: PFNGLSTENCILMASKSEPARATEPROC,
32263
32264	/// The function pointer to `glStencilOp()`
32265	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glStencilOp.xhtml>
32266	pub stencilop: PFNGLSTENCILOPPROC,
32267
32268	/// The function pointer to `glStencilOpSeparate()`
32269	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glStencilOpSeparate.xhtml>
32270	pub stencilopseparate: PFNGLSTENCILOPSEPARATEPROC,
32271
32272	/// The function pointer to `glTexImage2D()`
32273	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexImage2D.xhtml>
32274	pub teximage2d: PFNGLTEXIMAGE2DPROC,
32275
32276	/// The function pointer to `glTexParameterf()`
32277	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexParameterf.xhtml>
32278	pub texparameterf: PFNGLTEXPARAMETERFPROC,
32279
32280	/// The function pointer to `glTexParameterfv()`
32281	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexParameterfv.xhtml>
32282	pub texparameterfv: PFNGLTEXPARAMETERFVPROC,
32283
32284	/// The function pointer to `glTexParameteri()`
32285	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexParameteri.xhtml>
32286	pub texparameteri: PFNGLTEXPARAMETERIPROC,
32287
32288	/// The function pointer to `glTexParameteriv()`
32289	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexParameteriv.xhtml>
32290	pub texparameteriv: PFNGLTEXPARAMETERIVPROC,
32291
32292	/// The function pointer to `glTexSubImage2D()`
32293	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexSubImage2D.xhtml>
32294	pub texsubimage2d: PFNGLTEXSUBIMAGE2DPROC,
32295
32296	/// The function pointer to `glUniform1f()`
32297	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform1f.xhtml>
32298	pub uniform1f: PFNGLUNIFORM1FPROC,
32299
32300	/// The function pointer to `glUniform1fv()`
32301	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform1fv.xhtml>
32302	pub uniform1fv: PFNGLUNIFORM1FVPROC,
32303
32304	/// The function pointer to `glUniform1i()`
32305	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform1i.xhtml>
32306	pub uniform1i: PFNGLUNIFORM1IPROC,
32307
32308	/// The function pointer to `glUniform1iv()`
32309	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform1iv.xhtml>
32310	pub uniform1iv: PFNGLUNIFORM1IVPROC,
32311
32312	/// The function pointer to `glUniform2f()`
32313	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform2f.xhtml>
32314	pub uniform2f: PFNGLUNIFORM2FPROC,
32315
32316	/// The function pointer to `glUniform2fv()`
32317	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform2fv.xhtml>
32318	pub uniform2fv: PFNGLUNIFORM2FVPROC,
32319
32320	/// The function pointer to `glUniform2i()`
32321	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform2i.xhtml>
32322	pub uniform2i: PFNGLUNIFORM2IPROC,
32323
32324	/// The function pointer to `glUniform2iv()`
32325	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform2iv.xhtml>
32326	pub uniform2iv: PFNGLUNIFORM2IVPROC,
32327
32328	/// The function pointer to `glUniform3f()`
32329	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform3f.xhtml>
32330	pub uniform3f: PFNGLUNIFORM3FPROC,
32331
32332	/// The function pointer to `glUniform3fv()`
32333	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform3fv.xhtml>
32334	pub uniform3fv: PFNGLUNIFORM3FVPROC,
32335
32336	/// The function pointer to `glUniform3i()`
32337	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform3i.xhtml>
32338	pub uniform3i: PFNGLUNIFORM3IPROC,
32339
32340	/// The function pointer to `glUniform3iv()`
32341	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform3iv.xhtml>
32342	pub uniform3iv: PFNGLUNIFORM3IVPROC,
32343
32344	/// The function pointer to `glUniform4f()`
32345	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform4f.xhtml>
32346	pub uniform4f: PFNGLUNIFORM4FPROC,
32347
32348	/// The function pointer to `glUniform4fv()`
32349	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform4fv.xhtml>
32350	pub uniform4fv: PFNGLUNIFORM4FVPROC,
32351
32352	/// The function pointer to `glUniform4i()`
32353	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform4i.xhtml>
32354	pub uniform4i: PFNGLUNIFORM4IPROC,
32355
32356	/// The function pointer to `glUniform4iv()`
32357	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform4iv.xhtml>
32358	pub uniform4iv: PFNGLUNIFORM4IVPROC,
32359
32360	/// The function pointer to `glUniformMatrix2fv()`
32361	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix2fv.xhtml>
32362	pub uniformmatrix2fv: PFNGLUNIFORMMATRIX2FVPROC,
32363
32364	/// The function pointer to `glUniformMatrix3fv()`
32365	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix3fv.xhtml>
32366	pub uniformmatrix3fv: PFNGLUNIFORMMATRIX3FVPROC,
32367
32368	/// The function pointer to `glUniformMatrix4fv()`
32369	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix4fv.xhtml>
32370	pub uniformmatrix4fv: PFNGLUNIFORMMATRIX4FVPROC,
32371
32372	/// The function pointer to `glUseProgram()`
32373	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUseProgram.xhtml>
32374	pub useprogram: PFNGLUSEPROGRAMPROC,
32375
32376	/// The function pointer to `glValidateProgram()`
32377	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glValidateProgram.xhtml>
32378	pub validateprogram: PFNGLVALIDATEPROGRAMPROC,
32379
32380	/// The function pointer to `glVertexAttrib1f()`
32381	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttrib1f.xhtml>
32382	pub vertexattrib1f: PFNGLVERTEXATTRIB1FPROC,
32383
32384	/// The function pointer to `glVertexAttrib1fv()`
32385	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttrib1fv.xhtml>
32386	pub vertexattrib1fv: PFNGLVERTEXATTRIB1FVPROC,
32387
32388	/// The function pointer to `glVertexAttrib2f()`
32389	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttrib2f.xhtml>
32390	pub vertexattrib2f: PFNGLVERTEXATTRIB2FPROC,
32391
32392	/// The function pointer to `glVertexAttrib2fv()`
32393	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttrib2fv.xhtml>
32394	pub vertexattrib2fv: PFNGLVERTEXATTRIB2FVPROC,
32395
32396	/// The function pointer to `glVertexAttrib3f()`
32397	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttrib3f.xhtml>
32398	pub vertexattrib3f: PFNGLVERTEXATTRIB3FPROC,
32399
32400	/// The function pointer to `glVertexAttrib3fv()`
32401	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttrib3fv.xhtml>
32402	pub vertexattrib3fv: PFNGLVERTEXATTRIB3FVPROC,
32403
32404	/// The function pointer to `glVertexAttrib4f()`
32405	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttrib4f.xhtml>
32406	pub vertexattrib4f: PFNGLVERTEXATTRIB4FPROC,
32407
32408	/// The function pointer to `glVertexAttrib4fv()`
32409	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttrib4fv.xhtml>
32410	pub vertexattrib4fv: PFNGLVERTEXATTRIB4FVPROC,
32411
32412	/// The function pointer to `glVertexAttribPointer()`
32413	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribPointer.xhtml>
32414	pub vertexattribpointer: PFNGLVERTEXATTRIBPOINTERPROC,
32415
32416	/// The function pointer to `glViewport()`
32417	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glViewport.xhtml>
32418	pub viewport: PFNGLVIEWPORTPROC,
32419}
32420
32421impl ES_GL_2_0 for EsVersion20 {
32422	#[inline(always)]
32423	fn glActiveTexture(&self, texture: GLenum) -> Result<()> {
32424		#[cfg(feature = "catch_nullptr")]
32425		let ret = process_catch("glActiveTexture", catch_unwind(||(self.activetexture)(texture)));
32426		#[cfg(not(feature = "catch_nullptr"))]
32427		let ret = {(self.activetexture)(texture); Ok(())};
32428		#[cfg(feature = "diagnose")]
32429		if let Ok(ret) = ret {
32430			return to_result("glActiveTexture", ret, self.glGetError());
32431		} else {
32432			return ret
32433		}
32434		#[cfg(not(feature = "diagnose"))]
32435		return ret;
32436	}
32437	#[inline(always)]
32438	fn glAttachShader(&self, program: GLuint, shader: GLuint) -> Result<()> {
32439		#[cfg(feature = "catch_nullptr")]
32440		let ret = process_catch("glAttachShader", catch_unwind(||(self.attachshader)(program, shader)));
32441		#[cfg(not(feature = "catch_nullptr"))]
32442		let ret = {(self.attachshader)(program, shader); Ok(())};
32443		#[cfg(feature = "diagnose")]
32444		if let Ok(ret) = ret {
32445			return to_result("glAttachShader", ret, self.glGetError());
32446		} else {
32447			return ret
32448		}
32449		#[cfg(not(feature = "diagnose"))]
32450		return ret;
32451	}
32452	#[inline(always)]
32453	fn glBindAttribLocation(&self, program: GLuint, index: GLuint, name: *const GLchar) -> Result<()> {
32454		#[cfg(feature = "catch_nullptr")]
32455		let ret = process_catch("glBindAttribLocation", catch_unwind(||(self.bindattriblocation)(program, index, name)));
32456		#[cfg(not(feature = "catch_nullptr"))]
32457		let ret = {(self.bindattriblocation)(program, index, name); Ok(())};
32458		#[cfg(feature = "diagnose")]
32459		if let Ok(ret) = ret {
32460			return to_result("glBindAttribLocation", ret, self.glGetError());
32461		} else {
32462			return ret
32463		}
32464		#[cfg(not(feature = "diagnose"))]
32465		return ret;
32466	}
32467	#[inline(always)]
32468	fn glBindBuffer(&self, target: GLenum, buffer: GLuint) -> Result<()> {
32469		#[cfg(feature = "catch_nullptr")]
32470		let ret = process_catch("glBindBuffer", catch_unwind(||(self.bindbuffer)(target, buffer)));
32471		#[cfg(not(feature = "catch_nullptr"))]
32472		let ret = {(self.bindbuffer)(target, buffer); Ok(())};
32473		#[cfg(feature = "diagnose")]
32474		if let Ok(ret) = ret {
32475			return to_result("glBindBuffer", ret, self.glGetError());
32476		} else {
32477			return ret
32478		}
32479		#[cfg(not(feature = "diagnose"))]
32480		return ret;
32481	}
32482	#[inline(always)]
32483	fn glBindFramebuffer(&self, target: GLenum, framebuffer: GLuint) -> Result<()> {
32484		#[cfg(feature = "catch_nullptr")]
32485		let ret = process_catch("glBindFramebuffer", catch_unwind(||(self.bindframebuffer)(target, framebuffer)));
32486		#[cfg(not(feature = "catch_nullptr"))]
32487		let ret = {(self.bindframebuffer)(target, framebuffer); Ok(())};
32488		#[cfg(feature = "diagnose")]
32489		if let Ok(ret) = ret {
32490			return to_result("glBindFramebuffer", ret, self.glGetError());
32491		} else {
32492			return ret
32493		}
32494		#[cfg(not(feature = "diagnose"))]
32495		return ret;
32496	}
32497	#[inline(always)]
32498	fn glBindRenderbuffer(&self, target: GLenum, renderbuffer: GLuint) -> Result<()> {
32499		#[cfg(feature = "catch_nullptr")]
32500		let ret = process_catch("glBindRenderbuffer", catch_unwind(||(self.bindrenderbuffer)(target, renderbuffer)));
32501		#[cfg(not(feature = "catch_nullptr"))]
32502		let ret = {(self.bindrenderbuffer)(target, renderbuffer); Ok(())};
32503		#[cfg(feature = "diagnose")]
32504		if let Ok(ret) = ret {
32505			return to_result("glBindRenderbuffer", ret, self.glGetError());
32506		} else {
32507			return ret
32508		}
32509		#[cfg(not(feature = "diagnose"))]
32510		return ret;
32511	}
32512	#[inline(always)]
32513	fn glBindTexture(&self, target: GLenum, texture: GLuint) -> Result<()> {
32514		#[cfg(feature = "catch_nullptr")]
32515		let ret = process_catch("glBindTexture", catch_unwind(||(self.bindtexture)(target, texture)));
32516		#[cfg(not(feature = "catch_nullptr"))]
32517		let ret = {(self.bindtexture)(target, texture); Ok(())};
32518		#[cfg(feature = "diagnose")]
32519		if let Ok(ret) = ret {
32520			return to_result("glBindTexture", ret, self.glGetError());
32521		} else {
32522			return ret
32523		}
32524		#[cfg(not(feature = "diagnose"))]
32525		return ret;
32526	}
32527	#[inline(always)]
32528	fn glBlendColor(&self, red: GLfloat, green: GLfloat, blue: GLfloat, alpha: GLfloat) -> Result<()> {
32529		#[cfg(feature = "catch_nullptr")]
32530		let ret = process_catch("glBlendColor", catch_unwind(||(self.blendcolor)(red, green, blue, alpha)));
32531		#[cfg(not(feature = "catch_nullptr"))]
32532		let ret = {(self.blendcolor)(red, green, blue, alpha); Ok(())};
32533		#[cfg(feature = "diagnose")]
32534		if let Ok(ret) = ret {
32535			return to_result("glBlendColor", ret, self.glGetError());
32536		} else {
32537			return ret
32538		}
32539		#[cfg(not(feature = "diagnose"))]
32540		return ret;
32541	}
32542	#[inline(always)]
32543	fn glBlendEquation(&self, mode: GLenum) -> Result<()> {
32544		#[cfg(feature = "catch_nullptr")]
32545		let ret = process_catch("glBlendEquation", catch_unwind(||(self.blendequation)(mode)));
32546		#[cfg(not(feature = "catch_nullptr"))]
32547		let ret = {(self.blendequation)(mode); Ok(())};
32548		#[cfg(feature = "diagnose")]
32549		if let Ok(ret) = ret {
32550			return to_result("glBlendEquation", ret, self.glGetError());
32551		} else {
32552			return ret
32553		}
32554		#[cfg(not(feature = "diagnose"))]
32555		return ret;
32556	}
32557	#[inline(always)]
32558	fn glBlendEquationSeparate(&self, modeRGB: GLenum, modeAlpha: GLenum) -> Result<()> {
32559		#[cfg(feature = "catch_nullptr")]
32560		let ret = process_catch("glBlendEquationSeparate", catch_unwind(||(self.blendequationseparate)(modeRGB, modeAlpha)));
32561		#[cfg(not(feature = "catch_nullptr"))]
32562		let ret = {(self.blendequationseparate)(modeRGB, modeAlpha); Ok(())};
32563		#[cfg(feature = "diagnose")]
32564		if let Ok(ret) = ret {
32565			return to_result("glBlendEquationSeparate", ret, self.glGetError());
32566		} else {
32567			return ret
32568		}
32569		#[cfg(not(feature = "diagnose"))]
32570		return ret;
32571	}
32572	#[inline(always)]
32573	fn glBlendFunc(&self, sfactor: GLenum, dfactor: GLenum) -> Result<()> {
32574		#[cfg(feature = "catch_nullptr")]
32575		let ret = process_catch("glBlendFunc", catch_unwind(||(self.blendfunc)(sfactor, dfactor)));
32576		#[cfg(not(feature = "catch_nullptr"))]
32577		let ret = {(self.blendfunc)(sfactor, dfactor); Ok(())};
32578		#[cfg(feature = "diagnose")]
32579		if let Ok(ret) = ret {
32580			return to_result("glBlendFunc", ret, self.glGetError());
32581		} else {
32582			return ret
32583		}
32584		#[cfg(not(feature = "diagnose"))]
32585		return ret;
32586	}
32587	#[inline(always)]
32588	fn glBlendFuncSeparate(&self, sfactorRGB: GLenum, dfactorRGB: GLenum, sfactorAlpha: GLenum, dfactorAlpha: GLenum) -> Result<()> {
32589		#[cfg(feature = "catch_nullptr")]
32590		let ret = process_catch("glBlendFuncSeparate", catch_unwind(||(self.blendfuncseparate)(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha)));
32591		#[cfg(not(feature = "catch_nullptr"))]
32592		let ret = {(self.blendfuncseparate)(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); Ok(())};
32593		#[cfg(feature = "diagnose")]
32594		if let Ok(ret) = ret {
32595			return to_result("glBlendFuncSeparate", ret, self.glGetError());
32596		} else {
32597			return ret
32598		}
32599		#[cfg(not(feature = "diagnose"))]
32600		return ret;
32601	}
32602	#[inline(always)]
32603	fn glBufferData(&self, target: GLenum, size: GLsizeiptr, data: *const c_void, usage: GLenum) -> Result<()> {
32604		#[cfg(feature = "catch_nullptr")]
32605		let ret = process_catch("glBufferData", catch_unwind(||(self.bufferdata)(target, size, data, usage)));
32606		#[cfg(not(feature = "catch_nullptr"))]
32607		let ret = {(self.bufferdata)(target, size, data, usage); Ok(())};
32608		#[cfg(feature = "diagnose")]
32609		if let Ok(ret) = ret {
32610			return to_result("glBufferData", ret, self.glGetError());
32611		} else {
32612			return ret
32613		}
32614		#[cfg(not(feature = "diagnose"))]
32615		return ret;
32616	}
32617	#[inline(always)]
32618	fn glBufferSubData(&self, target: GLenum, offset: GLintptr, size: GLsizeiptr, data: *const c_void) -> Result<()> {
32619		#[cfg(feature = "catch_nullptr")]
32620		let ret = process_catch("glBufferSubData", catch_unwind(||(self.buffersubdata)(target, offset, size, data)));
32621		#[cfg(not(feature = "catch_nullptr"))]
32622		let ret = {(self.buffersubdata)(target, offset, size, data); Ok(())};
32623		#[cfg(feature = "diagnose")]
32624		if let Ok(ret) = ret {
32625			return to_result("glBufferSubData", ret, self.glGetError());
32626		} else {
32627			return ret
32628		}
32629		#[cfg(not(feature = "diagnose"))]
32630		return ret;
32631	}
32632	#[inline(always)]
32633	fn glCheckFramebufferStatus(&self, target: GLenum) -> Result<GLenum> {
32634		#[cfg(feature = "catch_nullptr")]
32635		let ret = process_catch("glCheckFramebufferStatus", catch_unwind(||(self.checkframebufferstatus)(target)));
32636		#[cfg(not(feature = "catch_nullptr"))]
32637		let ret = Ok((self.checkframebufferstatus)(target));
32638		#[cfg(feature = "diagnose")]
32639		if let Ok(ret) = ret {
32640			return to_result("glCheckFramebufferStatus", ret, self.glGetError());
32641		} else {
32642			return ret
32643		}
32644		#[cfg(not(feature = "diagnose"))]
32645		return ret;
32646	}
32647	#[inline(always)]
32648	fn glClear(&self, mask: GLbitfield) -> Result<()> {
32649		#[cfg(feature = "catch_nullptr")]
32650		let ret = process_catch("glClear", catch_unwind(||(self.clear)(mask)));
32651		#[cfg(not(feature = "catch_nullptr"))]
32652		let ret = {(self.clear)(mask); Ok(())};
32653		#[cfg(feature = "diagnose")]
32654		if let Ok(ret) = ret {
32655			return to_result("glClear", ret, self.glGetError());
32656		} else {
32657			return ret
32658		}
32659		#[cfg(not(feature = "diagnose"))]
32660		return ret;
32661	}
32662	#[inline(always)]
32663	fn glClearColor(&self, red: GLfloat, green: GLfloat, blue: GLfloat, alpha: GLfloat) -> Result<()> {
32664		#[cfg(feature = "catch_nullptr")]
32665		let ret = process_catch("glClearColor", catch_unwind(||(self.clearcolor)(red, green, blue, alpha)));
32666		#[cfg(not(feature = "catch_nullptr"))]
32667		let ret = {(self.clearcolor)(red, green, blue, alpha); Ok(())};
32668		#[cfg(feature = "diagnose")]
32669		if let Ok(ret) = ret {
32670			return to_result("glClearColor", ret, self.glGetError());
32671		} else {
32672			return ret
32673		}
32674		#[cfg(not(feature = "diagnose"))]
32675		return ret;
32676	}
32677	#[inline(always)]
32678	fn glClearDepthf(&self, d: GLfloat) -> Result<()> {
32679		#[cfg(feature = "catch_nullptr")]
32680		let ret = process_catch("glClearDepthf", catch_unwind(||(self.cleardepthf)(d)));
32681		#[cfg(not(feature = "catch_nullptr"))]
32682		let ret = {(self.cleardepthf)(d); Ok(())};
32683		#[cfg(feature = "diagnose")]
32684		if let Ok(ret) = ret {
32685			return to_result("glClearDepthf", ret, self.glGetError());
32686		} else {
32687			return ret
32688		}
32689		#[cfg(not(feature = "diagnose"))]
32690		return ret;
32691	}
32692	#[inline(always)]
32693	fn glClearStencil(&self, s: GLint) -> Result<()> {
32694		#[cfg(feature = "catch_nullptr")]
32695		let ret = process_catch("glClearStencil", catch_unwind(||(self.clearstencil)(s)));
32696		#[cfg(not(feature = "catch_nullptr"))]
32697		let ret = {(self.clearstencil)(s); Ok(())};
32698		#[cfg(feature = "diagnose")]
32699		if let Ok(ret) = ret {
32700			return to_result("glClearStencil", ret, self.glGetError());
32701		} else {
32702			return ret
32703		}
32704		#[cfg(not(feature = "diagnose"))]
32705		return ret;
32706	}
32707	#[inline(always)]
32708	fn glColorMask(&self, red: GLboolean, green: GLboolean, blue: GLboolean, alpha: GLboolean) -> Result<()> {
32709		#[cfg(feature = "catch_nullptr")]
32710		let ret = process_catch("glColorMask", catch_unwind(||(self.colormask)(red, green, blue, alpha)));
32711		#[cfg(not(feature = "catch_nullptr"))]
32712		let ret = {(self.colormask)(red, green, blue, alpha); Ok(())};
32713		#[cfg(feature = "diagnose")]
32714		if let Ok(ret) = ret {
32715			return to_result("glColorMask", ret, self.glGetError());
32716		} else {
32717			return ret
32718		}
32719		#[cfg(not(feature = "diagnose"))]
32720		return ret;
32721	}
32722	#[inline(always)]
32723	fn glCompileShader(&self, shader: GLuint) -> Result<()> {
32724		#[cfg(feature = "catch_nullptr")]
32725		let ret = process_catch("glCompileShader", catch_unwind(||(self.compileshader)(shader)));
32726		#[cfg(not(feature = "catch_nullptr"))]
32727		let ret = {(self.compileshader)(shader); Ok(())};
32728		#[cfg(feature = "diagnose")]
32729		if let Ok(ret) = ret {
32730			return to_result("glCompileShader", ret, self.glGetError());
32731		} else {
32732			return ret
32733		}
32734		#[cfg(not(feature = "diagnose"))]
32735		return ret;
32736	}
32737	#[inline(always)]
32738	fn glCompressedTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, border: GLint, imageSize: GLsizei, data: *const c_void) -> Result<()> {
32739		#[cfg(feature = "catch_nullptr")]
32740		let ret = process_catch("glCompressedTexImage2D", catch_unwind(||(self.compressedteximage2d)(target, level, internalformat, width, height, border, imageSize, data)));
32741		#[cfg(not(feature = "catch_nullptr"))]
32742		let ret = {(self.compressedteximage2d)(target, level, internalformat, width, height, border, imageSize, data); Ok(())};
32743		#[cfg(feature = "diagnose")]
32744		if let Ok(ret) = ret {
32745			return to_result("glCompressedTexImage2D", ret, self.glGetError());
32746		} else {
32747			return ret
32748		}
32749		#[cfg(not(feature = "diagnose"))]
32750		return ret;
32751	}
32752	#[inline(always)]
32753	fn glCompressedTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()> {
32754		#[cfg(feature = "catch_nullptr")]
32755		let ret = process_catch("glCompressedTexSubImage2D", catch_unwind(||(self.compressedtexsubimage2d)(target, level, xoffset, yoffset, width, height, format, imageSize, data)));
32756		#[cfg(not(feature = "catch_nullptr"))]
32757		let ret = {(self.compressedtexsubimage2d)(target, level, xoffset, yoffset, width, height, format, imageSize, data); Ok(())};
32758		#[cfg(feature = "diagnose")]
32759		if let Ok(ret) = ret {
32760			return to_result("glCompressedTexSubImage2D", ret, self.glGetError());
32761		} else {
32762			return ret
32763		}
32764		#[cfg(not(feature = "diagnose"))]
32765		return ret;
32766	}
32767	#[inline(always)]
32768	fn glCopyTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei, border: GLint) -> Result<()> {
32769		#[cfg(feature = "catch_nullptr")]
32770		let ret = process_catch("glCopyTexImage2D", catch_unwind(||(self.copyteximage2d)(target, level, internalformat, x, y, width, height, border)));
32771		#[cfg(not(feature = "catch_nullptr"))]
32772		let ret = {(self.copyteximage2d)(target, level, internalformat, x, y, width, height, border); Ok(())};
32773		#[cfg(feature = "diagnose")]
32774		if let Ok(ret) = ret {
32775			return to_result("glCopyTexImage2D", ret, self.glGetError());
32776		} else {
32777			return ret
32778		}
32779		#[cfg(not(feature = "diagnose"))]
32780		return ret;
32781	}
32782	#[inline(always)]
32783	fn glCopyTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
32784		#[cfg(feature = "catch_nullptr")]
32785		let ret = process_catch("glCopyTexSubImage2D", catch_unwind(||(self.copytexsubimage2d)(target, level, xoffset, yoffset, x, y, width, height)));
32786		#[cfg(not(feature = "catch_nullptr"))]
32787		let ret = {(self.copytexsubimage2d)(target, level, xoffset, yoffset, x, y, width, height); Ok(())};
32788		#[cfg(feature = "diagnose")]
32789		if let Ok(ret) = ret {
32790			return to_result("glCopyTexSubImage2D", ret, self.glGetError());
32791		} else {
32792			return ret
32793		}
32794		#[cfg(not(feature = "diagnose"))]
32795		return ret;
32796	}
32797	#[inline(always)]
32798	fn glCreateProgram(&self) -> Result<GLuint> {
32799		#[cfg(feature = "catch_nullptr")]
32800		let ret = process_catch("glCreateProgram", catch_unwind(||(self.createprogram)()));
32801		#[cfg(not(feature = "catch_nullptr"))]
32802		let ret = Ok((self.createprogram)());
32803		#[cfg(feature = "diagnose")]
32804		if let Ok(ret) = ret {
32805			return to_result("glCreateProgram", ret, self.glGetError());
32806		} else {
32807			return ret
32808		}
32809		#[cfg(not(feature = "diagnose"))]
32810		return ret;
32811	}
32812	#[inline(always)]
32813	fn glCreateShader(&self, type_: GLenum) -> Result<GLuint> {
32814		#[cfg(feature = "catch_nullptr")]
32815		let ret = process_catch("glCreateShader", catch_unwind(||(self.createshader)(type_)));
32816		#[cfg(not(feature = "catch_nullptr"))]
32817		let ret = Ok((self.createshader)(type_));
32818		#[cfg(feature = "diagnose")]
32819		if let Ok(ret) = ret {
32820			return to_result("glCreateShader", ret, self.glGetError());
32821		} else {
32822			return ret
32823		}
32824		#[cfg(not(feature = "diagnose"))]
32825		return ret;
32826	}
32827	#[inline(always)]
32828	fn glCullFace(&self, mode: GLenum) -> Result<()> {
32829		#[cfg(feature = "catch_nullptr")]
32830		let ret = process_catch("glCullFace", catch_unwind(||(self.cullface)(mode)));
32831		#[cfg(not(feature = "catch_nullptr"))]
32832		let ret = {(self.cullface)(mode); Ok(())};
32833		#[cfg(feature = "diagnose")]
32834		if let Ok(ret) = ret {
32835			return to_result("glCullFace", ret, self.glGetError());
32836		} else {
32837			return ret
32838		}
32839		#[cfg(not(feature = "diagnose"))]
32840		return ret;
32841	}
32842	#[inline(always)]
32843	fn glDeleteBuffers(&self, n: GLsizei, buffers: *const GLuint) -> Result<()> {
32844		#[cfg(feature = "catch_nullptr")]
32845		let ret = process_catch("glDeleteBuffers", catch_unwind(||(self.deletebuffers)(n, buffers)));
32846		#[cfg(not(feature = "catch_nullptr"))]
32847		let ret = {(self.deletebuffers)(n, buffers); Ok(())};
32848		#[cfg(feature = "diagnose")]
32849		if let Ok(ret) = ret {
32850			return to_result("glDeleteBuffers", ret, self.glGetError());
32851		} else {
32852			return ret
32853		}
32854		#[cfg(not(feature = "diagnose"))]
32855		return ret;
32856	}
32857	#[inline(always)]
32858	fn glDeleteFramebuffers(&self, n: GLsizei, framebuffers: *const GLuint) -> Result<()> {
32859		#[cfg(feature = "catch_nullptr")]
32860		let ret = process_catch("glDeleteFramebuffers", catch_unwind(||(self.deleteframebuffers)(n, framebuffers)));
32861		#[cfg(not(feature = "catch_nullptr"))]
32862		let ret = {(self.deleteframebuffers)(n, framebuffers); Ok(())};
32863		#[cfg(feature = "diagnose")]
32864		if let Ok(ret) = ret {
32865			return to_result("glDeleteFramebuffers", ret, self.glGetError());
32866		} else {
32867			return ret
32868		}
32869		#[cfg(not(feature = "diagnose"))]
32870		return ret;
32871	}
32872	#[inline(always)]
32873	fn glDeleteProgram(&self, program: GLuint) -> Result<()> {
32874		#[cfg(feature = "catch_nullptr")]
32875		let ret = process_catch("glDeleteProgram", catch_unwind(||(self.deleteprogram)(program)));
32876		#[cfg(not(feature = "catch_nullptr"))]
32877		let ret = {(self.deleteprogram)(program); Ok(())};
32878		#[cfg(feature = "diagnose")]
32879		if let Ok(ret) = ret {
32880			return to_result("glDeleteProgram", ret, self.glGetError());
32881		} else {
32882			return ret
32883		}
32884		#[cfg(not(feature = "diagnose"))]
32885		return ret;
32886	}
32887	#[inline(always)]
32888	fn glDeleteRenderbuffers(&self, n: GLsizei, renderbuffers: *const GLuint) -> Result<()> {
32889		#[cfg(feature = "catch_nullptr")]
32890		let ret = process_catch("glDeleteRenderbuffers", catch_unwind(||(self.deleterenderbuffers)(n, renderbuffers)));
32891		#[cfg(not(feature = "catch_nullptr"))]
32892		let ret = {(self.deleterenderbuffers)(n, renderbuffers); Ok(())};
32893		#[cfg(feature = "diagnose")]
32894		if let Ok(ret) = ret {
32895			return to_result("glDeleteRenderbuffers", ret, self.glGetError());
32896		} else {
32897			return ret
32898		}
32899		#[cfg(not(feature = "diagnose"))]
32900		return ret;
32901	}
32902	#[inline(always)]
32903	fn glDeleteShader(&self, shader: GLuint) -> Result<()> {
32904		#[cfg(feature = "catch_nullptr")]
32905		let ret = process_catch("glDeleteShader", catch_unwind(||(self.deleteshader)(shader)));
32906		#[cfg(not(feature = "catch_nullptr"))]
32907		let ret = {(self.deleteshader)(shader); Ok(())};
32908		#[cfg(feature = "diagnose")]
32909		if let Ok(ret) = ret {
32910			return to_result("glDeleteShader", ret, self.glGetError());
32911		} else {
32912			return ret
32913		}
32914		#[cfg(not(feature = "diagnose"))]
32915		return ret;
32916	}
32917	#[inline(always)]
32918	fn glDeleteTextures(&self, n: GLsizei, textures: *const GLuint) -> Result<()> {
32919		#[cfg(feature = "catch_nullptr")]
32920		let ret = process_catch("glDeleteTextures", catch_unwind(||(self.deletetextures)(n, textures)));
32921		#[cfg(not(feature = "catch_nullptr"))]
32922		let ret = {(self.deletetextures)(n, textures); Ok(())};
32923		#[cfg(feature = "diagnose")]
32924		if let Ok(ret) = ret {
32925			return to_result("glDeleteTextures", ret, self.glGetError());
32926		} else {
32927			return ret
32928		}
32929		#[cfg(not(feature = "diagnose"))]
32930		return ret;
32931	}
32932	#[inline(always)]
32933	fn glDepthFunc(&self, func: GLenum) -> Result<()> {
32934		#[cfg(feature = "catch_nullptr")]
32935		let ret = process_catch("glDepthFunc", catch_unwind(||(self.depthfunc)(func)));
32936		#[cfg(not(feature = "catch_nullptr"))]
32937		let ret = {(self.depthfunc)(func); Ok(())};
32938		#[cfg(feature = "diagnose")]
32939		if let Ok(ret) = ret {
32940			return to_result("glDepthFunc", ret, self.glGetError());
32941		} else {
32942			return ret
32943		}
32944		#[cfg(not(feature = "diagnose"))]
32945		return ret;
32946	}
32947	#[inline(always)]
32948	fn glDepthMask(&self, flag: GLboolean) -> Result<()> {
32949		#[cfg(feature = "catch_nullptr")]
32950		let ret = process_catch("glDepthMask", catch_unwind(||(self.depthmask)(flag)));
32951		#[cfg(not(feature = "catch_nullptr"))]
32952		let ret = {(self.depthmask)(flag); Ok(())};
32953		#[cfg(feature = "diagnose")]
32954		if let Ok(ret) = ret {
32955			return to_result("glDepthMask", ret, self.glGetError());
32956		} else {
32957			return ret
32958		}
32959		#[cfg(not(feature = "diagnose"))]
32960		return ret;
32961	}
32962	#[inline(always)]
32963	fn glDepthRangef(&self, n: GLfloat, f: GLfloat) -> Result<()> {
32964		#[cfg(feature = "catch_nullptr")]
32965		let ret = process_catch("glDepthRangef", catch_unwind(||(self.depthrangef)(n, f)));
32966		#[cfg(not(feature = "catch_nullptr"))]
32967		let ret = {(self.depthrangef)(n, f); Ok(())};
32968		#[cfg(feature = "diagnose")]
32969		if let Ok(ret) = ret {
32970			return to_result("glDepthRangef", ret, self.glGetError());
32971		} else {
32972			return ret
32973		}
32974		#[cfg(not(feature = "diagnose"))]
32975		return ret;
32976	}
32977	#[inline(always)]
32978	fn glDetachShader(&self, program: GLuint, shader: GLuint) -> Result<()> {
32979		#[cfg(feature = "catch_nullptr")]
32980		let ret = process_catch("glDetachShader", catch_unwind(||(self.detachshader)(program, shader)));
32981		#[cfg(not(feature = "catch_nullptr"))]
32982		let ret = {(self.detachshader)(program, shader); Ok(())};
32983		#[cfg(feature = "diagnose")]
32984		if let Ok(ret) = ret {
32985			return to_result("glDetachShader", ret, self.glGetError());
32986		} else {
32987			return ret
32988		}
32989		#[cfg(not(feature = "diagnose"))]
32990		return ret;
32991	}
32992	#[inline(always)]
32993	fn glDisable(&self, cap: GLenum) -> Result<()> {
32994		#[cfg(feature = "catch_nullptr")]
32995		let ret = process_catch("glDisable", catch_unwind(||(self.disable)(cap)));
32996		#[cfg(not(feature = "catch_nullptr"))]
32997		let ret = {(self.disable)(cap); Ok(())};
32998		#[cfg(feature = "diagnose")]
32999		if let Ok(ret) = ret {
33000			return to_result("glDisable", ret, self.glGetError());
33001		} else {
33002			return ret
33003		}
33004		#[cfg(not(feature = "diagnose"))]
33005		return ret;
33006	}
33007	#[inline(always)]
33008	fn glDisableVertexAttribArray(&self, index: GLuint) -> Result<()> {
33009		#[cfg(feature = "catch_nullptr")]
33010		let ret = process_catch("glDisableVertexAttribArray", catch_unwind(||(self.disablevertexattribarray)(index)));
33011		#[cfg(not(feature = "catch_nullptr"))]
33012		let ret = {(self.disablevertexattribarray)(index); Ok(())};
33013		#[cfg(feature = "diagnose")]
33014		if let Ok(ret) = ret {
33015			return to_result("glDisableVertexAttribArray", ret, self.glGetError());
33016		} else {
33017			return ret
33018		}
33019		#[cfg(not(feature = "diagnose"))]
33020		return ret;
33021	}
33022	#[inline(always)]
33023	fn glDrawArrays(&self, mode: GLenum, first: GLint, count: GLsizei) -> Result<()> {
33024		#[cfg(feature = "catch_nullptr")]
33025		let ret = process_catch("glDrawArrays", catch_unwind(||(self.drawarrays)(mode, first, count)));
33026		#[cfg(not(feature = "catch_nullptr"))]
33027		let ret = {(self.drawarrays)(mode, first, count); Ok(())};
33028		#[cfg(feature = "diagnose")]
33029		if let Ok(ret) = ret {
33030			return to_result("glDrawArrays", ret, self.glGetError());
33031		} else {
33032			return ret
33033		}
33034		#[cfg(not(feature = "diagnose"))]
33035		return ret;
33036	}
33037	#[inline(always)]
33038	fn glDrawElements(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void) -> Result<()> {
33039		#[cfg(feature = "catch_nullptr")]
33040		let ret = process_catch("glDrawElements", catch_unwind(||(self.drawelements)(mode, count, type_, indices)));
33041		#[cfg(not(feature = "catch_nullptr"))]
33042		let ret = {(self.drawelements)(mode, count, type_, indices); Ok(())};
33043		#[cfg(feature = "diagnose")]
33044		if let Ok(ret) = ret {
33045			return to_result("glDrawElements", ret, self.glGetError());
33046		} else {
33047			return ret
33048		}
33049		#[cfg(not(feature = "diagnose"))]
33050		return ret;
33051	}
33052	#[inline(always)]
33053	fn glEnable(&self, cap: GLenum) -> Result<()> {
33054		#[cfg(feature = "catch_nullptr")]
33055		let ret = process_catch("glEnable", catch_unwind(||(self.enable)(cap)));
33056		#[cfg(not(feature = "catch_nullptr"))]
33057		let ret = {(self.enable)(cap); Ok(())};
33058		#[cfg(feature = "diagnose")]
33059		if let Ok(ret) = ret {
33060			return to_result("glEnable", ret, self.glGetError());
33061		} else {
33062			return ret
33063		}
33064		#[cfg(not(feature = "diagnose"))]
33065		return ret;
33066	}
33067	#[inline(always)]
33068	fn glEnableVertexAttribArray(&self, index: GLuint) -> Result<()> {
33069		#[cfg(feature = "catch_nullptr")]
33070		let ret = process_catch("glEnableVertexAttribArray", catch_unwind(||(self.enablevertexattribarray)(index)));
33071		#[cfg(not(feature = "catch_nullptr"))]
33072		let ret = {(self.enablevertexattribarray)(index); Ok(())};
33073		#[cfg(feature = "diagnose")]
33074		if let Ok(ret) = ret {
33075			return to_result("glEnableVertexAttribArray", ret, self.glGetError());
33076		} else {
33077			return ret
33078		}
33079		#[cfg(not(feature = "diagnose"))]
33080		return ret;
33081	}
33082	#[inline(always)]
33083	fn glFinish(&self) -> Result<()> {
33084		#[cfg(feature = "catch_nullptr")]
33085		let ret = process_catch("glFinish", catch_unwind(||(self.finish)()));
33086		#[cfg(not(feature = "catch_nullptr"))]
33087		let ret = {(self.finish)(); Ok(())};
33088		#[cfg(feature = "diagnose")]
33089		if let Ok(ret) = ret {
33090			return to_result("glFinish", ret, self.glGetError());
33091		} else {
33092			return ret
33093		}
33094		#[cfg(not(feature = "diagnose"))]
33095		return ret;
33096	}
33097	#[inline(always)]
33098	fn glFlush(&self) -> Result<()> {
33099		#[cfg(feature = "catch_nullptr")]
33100		let ret = process_catch("glFlush", catch_unwind(||(self.flush)()));
33101		#[cfg(not(feature = "catch_nullptr"))]
33102		let ret = {(self.flush)(); Ok(())};
33103		#[cfg(feature = "diagnose")]
33104		if let Ok(ret) = ret {
33105			return to_result("glFlush", ret, self.glGetError());
33106		} else {
33107			return ret
33108		}
33109		#[cfg(not(feature = "diagnose"))]
33110		return ret;
33111	}
33112	#[inline(always)]
33113	fn glFramebufferRenderbuffer(&self, target: GLenum, attachment: GLenum, renderbuffertarget: GLenum, renderbuffer: GLuint) -> Result<()> {
33114		#[cfg(feature = "catch_nullptr")]
33115		let ret = process_catch("glFramebufferRenderbuffer", catch_unwind(||(self.framebufferrenderbuffer)(target, attachment, renderbuffertarget, renderbuffer)));
33116		#[cfg(not(feature = "catch_nullptr"))]
33117		let ret = {(self.framebufferrenderbuffer)(target, attachment, renderbuffertarget, renderbuffer); Ok(())};
33118		#[cfg(feature = "diagnose")]
33119		if let Ok(ret) = ret {
33120			return to_result("glFramebufferRenderbuffer", ret, self.glGetError());
33121		} else {
33122			return ret
33123		}
33124		#[cfg(not(feature = "diagnose"))]
33125		return ret;
33126	}
33127	#[inline(always)]
33128	fn glFramebufferTexture2D(&self, target: GLenum, attachment: GLenum, textarget: GLenum, texture: GLuint, level: GLint) -> Result<()> {
33129		#[cfg(feature = "catch_nullptr")]
33130		let ret = process_catch("glFramebufferTexture2D", catch_unwind(||(self.framebuffertexture2d)(target, attachment, textarget, texture, level)));
33131		#[cfg(not(feature = "catch_nullptr"))]
33132		let ret = {(self.framebuffertexture2d)(target, attachment, textarget, texture, level); Ok(())};
33133		#[cfg(feature = "diagnose")]
33134		if let Ok(ret) = ret {
33135			return to_result("glFramebufferTexture2D", ret, self.glGetError());
33136		} else {
33137			return ret
33138		}
33139		#[cfg(not(feature = "diagnose"))]
33140		return ret;
33141	}
33142	#[inline(always)]
33143	fn glFrontFace(&self, mode: GLenum) -> Result<()> {
33144		#[cfg(feature = "catch_nullptr")]
33145		let ret = process_catch("glFrontFace", catch_unwind(||(self.frontface)(mode)));
33146		#[cfg(not(feature = "catch_nullptr"))]
33147		let ret = {(self.frontface)(mode); Ok(())};
33148		#[cfg(feature = "diagnose")]
33149		if let Ok(ret) = ret {
33150			return to_result("glFrontFace", ret, self.glGetError());
33151		} else {
33152			return ret
33153		}
33154		#[cfg(not(feature = "diagnose"))]
33155		return ret;
33156	}
33157	#[inline(always)]
33158	fn glGenBuffers(&self, n: GLsizei, buffers: *mut GLuint) -> Result<()> {
33159		#[cfg(feature = "catch_nullptr")]
33160		let ret = process_catch("glGenBuffers", catch_unwind(||(self.genbuffers)(n, buffers)));
33161		#[cfg(not(feature = "catch_nullptr"))]
33162		let ret = {(self.genbuffers)(n, buffers); Ok(())};
33163		#[cfg(feature = "diagnose")]
33164		if let Ok(ret) = ret {
33165			return to_result("glGenBuffers", ret, self.glGetError());
33166		} else {
33167			return ret
33168		}
33169		#[cfg(not(feature = "diagnose"))]
33170		return ret;
33171	}
33172	#[inline(always)]
33173	fn glGenerateMipmap(&self, target: GLenum) -> Result<()> {
33174		#[cfg(feature = "catch_nullptr")]
33175		let ret = process_catch("glGenerateMipmap", catch_unwind(||(self.generatemipmap)(target)));
33176		#[cfg(not(feature = "catch_nullptr"))]
33177		let ret = {(self.generatemipmap)(target); Ok(())};
33178		#[cfg(feature = "diagnose")]
33179		if let Ok(ret) = ret {
33180			return to_result("glGenerateMipmap", ret, self.glGetError());
33181		} else {
33182			return ret
33183		}
33184		#[cfg(not(feature = "diagnose"))]
33185		return ret;
33186	}
33187	#[inline(always)]
33188	fn glGenFramebuffers(&self, n: GLsizei, framebuffers: *mut GLuint) -> Result<()> {
33189		#[cfg(feature = "catch_nullptr")]
33190		let ret = process_catch("glGenFramebuffers", catch_unwind(||(self.genframebuffers)(n, framebuffers)));
33191		#[cfg(not(feature = "catch_nullptr"))]
33192		let ret = {(self.genframebuffers)(n, framebuffers); Ok(())};
33193		#[cfg(feature = "diagnose")]
33194		if let Ok(ret) = ret {
33195			return to_result("glGenFramebuffers", ret, self.glGetError());
33196		} else {
33197			return ret
33198		}
33199		#[cfg(not(feature = "diagnose"))]
33200		return ret;
33201	}
33202	#[inline(always)]
33203	fn glGenRenderbuffers(&self, n: GLsizei, renderbuffers: *mut GLuint) -> Result<()> {
33204		#[cfg(feature = "catch_nullptr")]
33205		let ret = process_catch("glGenRenderbuffers", catch_unwind(||(self.genrenderbuffers)(n, renderbuffers)));
33206		#[cfg(not(feature = "catch_nullptr"))]
33207		let ret = {(self.genrenderbuffers)(n, renderbuffers); Ok(())};
33208		#[cfg(feature = "diagnose")]
33209		if let Ok(ret) = ret {
33210			return to_result("glGenRenderbuffers", ret, self.glGetError());
33211		} else {
33212			return ret
33213		}
33214		#[cfg(not(feature = "diagnose"))]
33215		return ret;
33216	}
33217	#[inline(always)]
33218	fn glGenTextures(&self, n: GLsizei, textures: *mut GLuint) -> Result<()> {
33219		#[cfg(feature = "catch_nullptr")]
33220		let ret = process_catch("glGenTextures", catch_unwind(||(self.gentextures)(n, textures)));
33221		#[cfg(not(feature = "catch_nullptr"))]
33222		let ret = {(self.gentextures)(n, textures); Ok(())};
33223		#[cfg(feature = "diagnose")]
33224		if let Ok(ret) = ret {
33225			return to_result("glGenTextures", ret, self.glGetError());
33226		} else {
33227			return ret
33228		}
33229		#[cfg(not(feature = "diagnose"))]
33230		return ret;
33231	}
33232	#[inline(always)]
33233	fn glGetActiveAttrib(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLint, type_: *mut GLenum, name: *mut GLchar) -> Result<()> {
33234		#[cfg(feature = "catch_nullptr")]
33235		let ret = process_catch("glGetActiveAttrib", catch_unwind(||(self.getactiveattrib)(program, index, bufSize, length, size, type_, name)));
33236		#[cfg(not(feature = "catch_nullptr"))]
33237		let ret = {(self.getactiveattrib)(program, index, bufSize, length, size, type_, name); Ok(())};
33238		#[cfg(feature = "diagnose")]
33239		if let Ok(ret) = ret {
33240			return to_result("glGetActiveAttrib", ret, self.glGetError());
33241		} else {
33242			return ret
33243		}
33244		#[cfg(not(feature = "diagnose"))]
33245		return ret;
33246	}
33247	#[inline(always)]
33248	fn glGetActiveUniform(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLint, type_: *mut GLenum, name: *mut GLchar) -> Result<()> {
33249		#[cfg(feature = "catch_nullptr")]
33250		let ret = process_catch("glGetActiveUniform", catch_unwind(||(self.getactiveuniform)(program, index, bufSize, length, size, type_, name)));
33251		#[cfg(not(feature = "catch_nullptr"))]
33252		let ret = {(self.getactiveuniform)(program, index, bufSize, length, size, type_, name); Ok(())};
33253		#[cfg(feature = "diagnose")]
33254		if let Ok(ret) = ret {
33255			return to_result("glGetActiveUniform", ret, self.glGetError());
33256		} else {
33257			return ret
33258		}
33259		#[cfg(not(feature = "diagnose"))]
33260		return ret;
33261	}
33262	#[inline(always)]
33263	fn glGetAttachedShaders(&self, program: GLuint, maxCount: GLsizei, count: *mut GLsizei, shaders: *mut GLuint) -> Result<()> {
33264		#[cfg(feature = "catch_nullptr")]
33265		let ret = process_catch("glGetAttachedShaders", catch_unwind(||(self.getattachedshaders)(program, maxCount, count, shaders)));
33266		#[cfg(not(feature = "catch_nullptr"))]
33267		let ret = {(self.getattachedshaders)(program, maxCount, count, shaders); Ok(())};
33268		#[cfg(feature = "diagnose")]
33269		if let Ok(ret) = ret {
33270			return to_result("glGetAttachedShaders", ret, self.glGetError());
33271		} else {
33272			return ret
33273		}
33274		#[cfg(not(feature = "diagnose"))]
33275		return ret;
33276	}
33277	#[inline(always)]
33278	fn glGetAttribLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint> {
33279		#[cfg(feature = "catch_nullptr")]
33280		let ret = process_catch("glGetAttribLocation", catch_unwind(||(self.getattriblocation)(program, name)));
33281		#[cfg(not(feature = "catch_nullptr"))]
33282		let ret = Ok((self.getattriblocation)(program, name));
33283		#[cfg(feature = "diagnose")]
33284		if let Ok(ret) = ret {
33285			return to_result("glGetAttribLocation", ret, self.glGetError());
33286		} else {
33287			return ret
33288		}
33289		#[cfg(not(feature = "diagnose"))]
33290		return ret;
33291	}
33292	#[inline(always)]
33293	fn glGetBooleanv(&self, pname: GLenum, data: *mut GLboolean) -> Result<()> {
33294		#[cfg(feature = "catch_nullptr")]
33295		let ret = process_catch("glGetBooleanv", catch_unwind(||(self.getbooleanv)(pname, data)));
33296		#[cfg(not(feature = "catch_nullptr"))]
33297		let ret = {(self.getbooleanv)(pname, data); Ok(())};
33298		#[cfg(feature = "diagnose")]
33299		if let Ok(ret) = ret {
33300			return to_result("glGetBooleanv", ret, self.glGetError());
33301		} else {
33302			return ret
33303		}
33304		#[cfg(not(feature = "diagnose"))]
33305		return ret;
33306	}
33307	#[inline(always)]
33308	fn glGetBufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
33309		#[cfg(feature = "catch_nullptr")]
33310		let ret = process_catch("glGetBufferParameteriv", catch_unwind(||(self.getbufferparameteriv)(target, pname, params)));
33311		#[cfg(not(feature = "catch_nullptr"))]
33312		let ret = {(self.getbufferparameteriv)(target, pname, params); Ok(())};
33313		#[cfg(feature = "diagnose")]
33314		if let Ok(ret) = ret {
33315			return to_result("glGetBufferParameteriv", ret, self.glGetError());
33316		} else {
33317			return ret
33318		}
33319		#[cfg(not(feature = "diagnose"))]
33320		return ret;
33321	}
33322	#[inline(always)]
33323	fn glGetError(&self) -> GLenum {
33324		(self.geterror)()
33325	}
33326	#[inline(always)]
33327	fn glGetFloatv(&self, pname: GLenum, data: *mut GLfloat) -> Result<()> {
33328		#[cfg(feature = "catch_nullptr")]
33329		let ret = process_catch("glGetFloatv", catch_unwind(||(self.getfloatv)(pname, data)));
33330		#[cfg(not(feature = "catch_nullptr"))]
33331		let ret = {(self.getfloatv)(pname, data); Ok(())};
33332		#[cfg(feature = "diagnose")]
33333		if let Ok(ret) = ret {
33334			return to_result("glGetFloatv", ret, self.glGetError());
33335		} else {
33336			return ret
33337		}
33338		#[cfg(not(feature = "diagnose"))]
33339		return ret;
33340	}
33341	#[inline(always)]
33342	fn glGetFramebufferAttachmentParameteriv(&self, target: GLenum, attachment: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
33343		#[cfg(feature = "catch_nullptr")]
33344		let ret = process_catch("glGetFramebufferAttachmentParameteriv", catch_unwind(||(self.getframebufferattachmentparameteriv)(target, attachment, pname, params)));
33345		#[cfg(not(feature = "catch_nullptr"))]
33346		let ret = {(self.getframebufferattachmentparameteriv)(target, attachment, pname, params); Ok(())};
33347		#[cfg(feature = "diagnose")]
33348		if let Ok(ret) = ret {
33349			return to_result("glGetFramebufferAttachmentParameteriv", ret, self.glGetError());
33350		} else {
33351			return ret
33352		}
33353		#[cfg(not(feature = "diagnose"))]
33354		return ret;
33355	}
33356	#[inline(always)]
33357	fn glGetIntegerv(&self, pname: GLenum, data: *mut GLint) -> Result<()> {
33358		#[cfg(feature = "catch_nullptr")]
33359		let ret = process_catch("glGetIntegerv", catch_unwind(||(self.getintegerv)(pname, data)));
33360		#[cfg(not(feature = "catch_nullptr"))]
33361		let ret = {(self.getintegerv)(pname, data); Ok(())};
33362		#[cfg(feature = "diagnose")]
33363		if let Ok(ret) = ret {
33364			return to_result("glGetIntegerv", ret, self.glGetError());
33365		} else {
33366			return ret
33367		}
33368		#[cfg(not(feature = "diagnose"))]
33369		return ret;
33370	}
33371	#[inline(always)]
33372	fn glGetProgramiv(&self, program: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
33373		#[cfg(feature = "catch_nullptr")]
33374		let ret = process_catch("glGetProgramiv", catch_unwind(||(self.getprogramiv)(program, pname, params)));
33375		#[cfg(not(feature = "catch_nullptr"))]
33376		let ret = {(self.getprogramiv)(program, pname, params); Ok(())};
33377		#[cfg(feature = "diagnose")]
33378		if let Ok(ret) = ret {
33379			return to_result("glGetProgramiv", ret, self.glGetError());
33380		} else {
33381			return ret
33382		}
33383		#[cfg(not(feature = "diagnose"))]
33384		return ret;
33385	}
33386	#[inline(always)]
33387	fn glGetProgramInfoLog(&self, program: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()> {
33388		#[cfg(feature = "catch_nullptr")]
33389		let ret = process_catch("glGetProgramInfoLog", catch_unwind(||(self.getprograminfolog)(program, bufSize, length, infoLog)));
33390		#[cfg(not(feature = "catch_nullptr"))]
33391		let ret = {(self.getprograminfolog)(program, bufSize, length, infoLog); Ok(())};
33392		#[cfg(feature = "diagnose")]
33393		if let Ok(ret) = ret {
33394			return to_result("glGetProgramInfoLog", ret, self.glGetError());
33395		} else {
33396			return ret
33397		}
33398		#[cfg(not(feature = "diagnose"))]
33399		return ret;
33400	}
33401	#[inline(always)]
33402	fn glGetRenderbufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
33403		#[cfg(feature = "catch_nullptr")]
33404		let ret = process_catch("glGetRenderbufferParameteriv", catch_unwind(||(self.getrenderbufferparameteriv)(target, pname, params)));
33405		#[cfg(not(feature = "catch_nullptr"))]
33406		let ret = {(self.getrenderbufferparameteriv)(target, pname, params); Ok(())};
33407		#[cfg(feature = "diagnose")]
33408		if let Ok(ret) = ret {
33409			return to_result("glGetRenderbufferParameteriv", ret, self.glGetError());
33410		} else {
33411			return ret
33412		}
33413		#[cfg(not(feature = "diagnose"))]
33414		return ret;
33415	}
33416	#[inline(always)]
33417	fn glGetShaderiv(&self, shader: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
33418		#[cfg(feature = "catch_nullptr")]
33419		let ret = process_catch("glGetShaderiv", catch_unwind(||(self.getshaderiv)(shader, pname, params)));
33420		#[cfg(not(feature = "catch_nullptr"))]
33421		let ret = {(self.getshaderiv)(shader, pname, params); Ok(())};
33422		#[cfg(feature = "diagnose")]
33423		if let Ok(ret) = ret {
33424			return to_result("glGetShaderiv", ret, self.glGetError());
33425		} else {
33426			return ret
33427		}
33428		#[cfg(not(feature = "diagnose"))]
33429		return ret;
33430	}
33431	#[inline(always)]
33432	fn glGetShaderInfoLog(&self, shader: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()> {
33433		#[cfg(feature = "catch_nullptr")]
33434		let ret = process_catch("glGetShaderInfoLog", catch_unwind(||(self.getshaderinfolog)(shader, bufSize, length, infoLog)));
33435		#[cfg(not(feature = "catch_nullptr"))]
33436		let ret = {(self.getshaderinfolog)(shader, bufSize, length, infoLog); Ok(())};
33437		#[cfg(feature = "diagnose")]
33438		if let Ok(ret) = ret {
33439			return to_result("glGetShaderInfoLog", ret, self.glGetError());
33440		} else {
33441			return ret
33442		}
33443		#[cfg(not(feature = "diagnose"))]
33444		return ret;
33445	}
33446	#[inline(always)]
33447	fn glGetShaderPrecisionFormat(&self, shadertype: GLenum, precisiontype: GLenum, range: *mut GLint, precision: *mut GLint) -> Result<()> {
33448		#[cfg(feature = "catch_nullptr")]
33449		let ret = process_catch("glGetShaderPrecisionFormat", catch_unwind(||(self.getshaderprecisionformat)(shadertype, precisiontype, range, precision)));
33450		#[cfg(not(feature = "catch_nullptr"))]
33451		let ret = {(self.getshaderprecisionformat)(shadertype, precisiontype, range, precision); Ok(())};
33452		#[cfg(feature = "diagnose")]
33453		if let Ok(ret) = ret {
33454			return to_result("glGetShaderPrecisionFormat", ret, self.glGetError());
33455		} else {
33456			return ret
33457		}
33458		#[cfg(not(feature = "diagnose"))]
33459		return ret;
33460	}
33461	#[inline(always)]
33462	fn glGetShaderSource(&self, shader: GLuint, bufSize: GLsizei, length: *mut GLsizei, source: *mut GLchar) -> Result<()> {
33463		#[cfg(feature = "catch_nullptr")]
33464		let ret = process_catch("glGetShaderSource", catch_unwind(||(self.getshadersource)(shader, bufSize, length, source)));
33465		#[cfg(not(feature = "catch_nullptr"))]
33466		let ret = {(self.getshadersource)(shader, bufSize, length, source); Ok(())};
33467		#[cfg(feature = "diagnose")]
33468		if let Ok(ret) = ret {
33469			return to_result("glGetShaderSource", ret, self.glGetError());
33470		} else {
33471			return ret
33472		}
33473		#[cfg(not(feature = "diagnose"))]
33474		return ret;
33475	}
33476	#[inline(always)]
33477	fn glGetString(&self, name: GLenum) -> Result<&'static str> {
33478		#[cfg(feature = "catch_nullptr")]
33479		let ret = process_catch("glGetString", catch_unwind(||unsafe{CStr::from_ptr((self.getstring)(name) as *const i8)}.to_str().unwrap()));
33480		#[cfg(not(feature = "catch_nullptr"))]
33481		let ret = Ok(unsafe{CStr::from_ptr((self.getstring)(name) as *const i8)}.to_str().unwrap());
33482		#[cfg(feature = "diagnose")]
33483		if let Ok(ret) = ret {
33484			return to_result("glGetString", ret, self.glGetError());
33485		} else {
33486			return ret
33487		}
33488		#[cfg(not(feature = "diagnose"))]
33489		return ret;
33490	}
33491	#[inline(always)]
33492	fn glGetTexParameterfv(&self, target: GLenum, pname: GLenum, params: *mut GLfloat) -> Result<()> {
33493		#[cfg(feature = "catch_nullptr")]
33494		let ret = process_catch("glGetTexParameterfv", catch_unwind(||(self.gettexparameterfv)(target, pname, params)));
33495		#[cfg(not(feature = "catch_nullptr"))]
33496		let ret = {(self.gettexparameterfv)(target, pname, params); Ok(())};
33497		#[cfg(feature = "diagnose")]
33498		if let Ok(ret) = ret {
33499			return to_result("glGetTexParameterfv", ret, self.glGetError());
33500		} else {
33501			return ret
33502		}
33503		#[cfg(not(feature = "diagnose"))]
33504		return ret;
33505	}
33506	#[inline(always)]
33507	fn glGetTexParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
33508		#[cfg(feature = "catch_nullptr")]
33509		let ret = process_catch("glGetTexParameteriv", catch_unwind(||(self.gettexparameteriv)(target, pname, params)));
33510		#[cfg(not(feature = "catch_nullptr"))]
33511		let ret = {(self.gettexparameteriv)(target, pname, params); Ok(())};
33512		#[cfg(feature = "diagnose")]
33513		if let Ok(ret) = ret {
33514			return to_result("glGetTexParameteriv", ret, self.glGetError());
33515		} else {
33516			return ret
33517		}
33518		#[cfg(not(feature = "diagnose"))]
33519		return ret;
33520	}
33521	#[inline(always)]
33522	fn glGetUniformfv(&self, program: GLuint, location: GLint, params: *mut GLfloat) -> Result<()> {
33523		#[cfg(feature = "catch_nullptr")]
33524		let ret = process_catch("glGetUniformfv", catch_unwind(||(self.getuniformfv)(program, location, params)));
33525		#[cfg(not(feature = "catch_nullptr"))]
33526		let ret = {(self.getuniformfv)(program, location, params); Ok(())};
33527		#[cfg(feature = "diagnose")]
33528		if let Ok(ret) = ret {
33529			return to_result("glGetUniformfv", ret, self.glGetError());
33530		} else {
33531			return ret
33532		}
33533		#[cfg(not(feature = "diagnose"))]
33534		return ret;
33535	}
33536	#[inline(always)]
33537	fn glGetUniformiv(&self, program: GLuint, location: GLint, params: *mut GLint) -> Result<()> {
33538		#[cfg(feature = "catch_nullptr")]
33539		let ret = process_catch("glGetUniformiv", catch_unwind(||(self.getuniformiv)(program, location, params)));
33540		#[cfg(not(feature = "catch_nullptr"))]
33541		let ret = {(self.getuniformiv)(program, location, params); Ok(())};
33542		#[cfg(feature = "diagnose")]
33543		if let Ok(ret) = ret {
33544			return to_result("glGetUniformiv", ret, self.glGetError());
33545		} else {
33546			return ret
33547		}
33548		#[cfg(not(feature = "diagnose"))]
33549		return ret;
33550	}
33551	#[inline(always)]
33552	fn glGetUniformLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint> {
33553		#[cfg(feature = "catch_nullptr")]
33554		let ret = process_catch("glGetUniformLocation", catch_unwind(||(self.getuniformlocation)(program, name)));
33555		#[cfg(not(feature = "catch_nullptr"))]
33556		let ret = Ok((self.getuniformlocation)(program, name));
33557		#[cfg(feature = "diagnose")]
33558		if let Ok(ret) = ret {
33559			return to_result("glGetUniformLocation", ret, self.glGetError());
33560		} else {
33561			return ret
33562		}
33563		#[cfg(not(feature = "diagnose"))]
33564		return ret;
33565	}
33566	#[inline(always)]
33567	fn glGetVertexAttribfv(&self, index: GLuint, pname: GLenum, params: *mut GLfloat) -> Result<()> {
33568		#[cfg(feature = "catch_nullptr")]
33569		let ret = process_catch("glGetVertexAttribfv", catch_unwind(||(self.getvertexattribfv)(index, pname, params)));
33570		#[cfg(not(feature = "catch_nullptr"))]
33571		let ret = {(self.getvertexattribfv)(index, pname, params); Ok(())};
33572		#[cfg(feature = "diagnose")]
33573		if let Ok(ret) = ret {
33574			return to_result("glGetVertexAttribfv", ret, self.glGetError());
33575		} else {
33576			return ret
33577		}
33578		#[cfg(not(feature = "diagnose"))]
33579		return ret;
33580	}
33581	#[inline(always)]
33582	fn glGetVertexAttribiv(&self, index: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
33583		#[cfg(feature = "catch_nullptr")]
33584		let ret = process_catch("glGetVertexAttribiv", catch_unwind(||(self.getvertexattribiv)(index, pname, params)));
33585		#[cfg(not(feature = "catch_nullptr"))]
33586		let ret = {(self.getvertexattribiv)(index, pname, params); Ok(())};
33587		#[cfg(feature = "diagnose")]
33588		if let Ok(ret) = ret {
33589			return to_result("glGetVertexAttribiv", ret, self.glGetError());
33590		} else {
33591			return ret
33592		}
33593		#[cfg(not(feature = "diagnose"))]
33594		return ret;
33595	}
33596	#[inline(always)]
33597	fn glGetVertexAttribPointerv(&self, index: GLuint, pname: GLenum, pointer: *mut *mut c_void) -> Result<()> {
33598		#[cfg(feature = "catch_nullptr")]
33599		let ret = process_catch("glGetVertexAttribPointerv", catch_unwind(||(self.getvertexattribpointerv)(index, pname, pointer)));
33600		#[cfg(not(feature = "catch_nullptr"))]
33601		let ret = {(self.getvertexattribpointerv)(index, pname, pointer); Ok(())};
33602		#[cfg(feature = "diagnose")]
33603		if let Ok(ret) = ret {
33604			return to_result("glGetVertexAttribPointerv", ret, self.glGetError());
33605		} else {
33606			return ret
33607		}
33608		#[cfg(not(feature = "diagnose"))]
33609		return ret;
33610	}
33611	#[inline(always)]
33612	fn glHint(&self, target: GLenum, mode: GLenum) -> Result<()> {
33613		#[cfg(feature = "catch_nullptr")]
33614		let ret = process_catch("glHint", catch_unwind(||(self.hint)(target, mode)));
33615		#[cfg(not(feature = "catch_nullptr"))]
33616		let ret = {(self.hint)(target, mode); Ok(())};
33617		#[cfg(feature = "diagnose")]
33618		if let Ok(ret) = ret {
33619			return to_result("glHint", ret, self.glGetError());
33620		} else {
33621			return ret
33622		}
33623		#[cfg(not(feature = "diagnose"))]
33624		return ret;
33625	}
33626	#[inline(always)]
33627	fn glIsBuffer(&self, buffer: GLuint) -> Result<GLboolean> {
33628		#[cfg(feature = "catch_nullptr")]
33629		let ret = process_catch("glIsBuffer", catch_unwind(||(self.isbuffer)(buffer)));
33630		#[cfg(not(feature = "catch_nullptr"))]
33631		let ret = Ok((self.isbuffer)(buffer));
33632		#[cfg(feature = "diagnose")]
33633		if let Ok(ret) = ret {
33634			return to_result("glIsBuffer", ret, self.glGetError());
33635		} else {
33636			return ret
33637		}
33638		#[cfg(not(feature = "diagnose"))]
33639		return ret;
33640	}
33641	#[inline(always)]
33642	fn glIsEnabled(&self, cap: GLenum) -> Result<GLboolean> {
33643		#[cfg(feature = "catch_nullptr")]
33644		let ret = process_catch("glIsEnabled", catch_unwind(||(self.isenabled)(cap)));
33645		#[cfg(not(feature = "catch_nullptr"))]
33646		let ret = Ok((self.isenabled)(cap));
33647		#[cfg(feature = "diagnose")]
33648		if let Ok(ret) = ret {
33649			return to_result("glIsEnabled", ret, self.glGetError());
33650		} else {
33651			return ret
33652		}
33653		#[cfg(not(feature = "diagnose"))]
33654		return ret;
33655	}
33656	#[inline(always)]
33657	fn glIsFramebuffer(&self, framebuffer: GLuint) -> Result<GLboolean> {
33658		#[cfg(feature = "catch_nullptr")]
33659		let ret = process_catch("glIsFramebuffer", catch_unwind(||(self.isframebuffer)(framebuffer)));
33660		#[cfg(not(feature = "catch_nullptr"))]
33661		let ret = Ok((self.isframebuffer)(framebuffer));
33662		#[cfg(feature = "diagnose")]
33663		if let Ok(ret) = ret {
33664			return to_result("glIsFramebuffer", ret, self.glGetError());
33665		} else {
33666			return ret
33667		}
33668		#[cfg(not(feature = "diagnose"))]
33669		return ret;
33670	}
33671	#[inline(always)]
33672	fn glIsProgram(&self, program: GLuint) -> Result<GLboolean> {
33673		#[cfg(feature = "catch_nullptr")]
33674		let ret = process_catch("glIsProgram", catch_unwind(||(self.isprogram)(program)));
33675		#[cfg(not(feature = "catch_nullptr"))]
33676		let ret = Ok((self.isprogram)(program));
33677		#[cfg(feature = "diagnose")]
33678		if let Ok(ret) = ret {
33679			return to_result("glIsProgram", ret, self.glGetError());
33680		} else {
33681			return ret
33682		}
33683		#[cfg(not(feature = "diagnose"))]
33684		return ret;
33685	}
33686	#[inline(always)]
33687	fn glIsRenderbuffer(&self, renderbuffer: GLuint) -> Result<GLboolean> {
33688		#[cfg(feature = "catch_nullptr")]
33689		let ret = process_catch("glIsRenderbuffer", catch_unwind(||(self.isrenderbuffer)(renderbuffer)));
33690		#[cfg(not(feature = "catch_nullptr"))]
33691		let ret = Ok((self.isrenderbuffer)(renderbuffer));
33692		#[cfg(feature = "diagnose")]
33693		if let Ok(ret) = ret {
33694			return to_result("glIsRenderbuffer", ret, self.glGetError());
33695		} else {
33696			return ret
33697		}
33698		#[cfg(not(feature = "diagnose"))]
33699		return ret;
33700	}
33701	#[inline(always)]
33702	fn glIsShader(&self, shader: GLuint) -> Result<GLboolean> {
33703		#[cfg(feature = "catch_nullptr")]
33704		let ret = process_catch("glIsShader", catch_unwind(||(self.isshader)(shader)));
33705		#[cfg(not(feature = "catch_nullptr"))]
33706		let ret = Ok((self.isshader)(shader));
33707		#[cfg(feature = "diagnose")]
33708		if let Ok(ret) = ret {
33709			return to_result("glIsShader", ret, self.glGetError());
33710		} else {
33711			return ret
33712		}
33713		#[cfg(not(feature = "diagnose"))]
33714		return ret;
33715	}
33716	#[inline(always)]
33717	fn glIsTexture(&self, texture: GLuint) -> Result<GLboolean> {
33718		#[cfg(feature = "catch_nullptr")]
33719		let ret = process_catch("glIsTexture", catch_unwind(||(self.istexture)(texture)));
33720		#[cfg(not(feature = "catch_nullptr"))]
33721		let ret = Ok((self.istexture)(texture));
33722		#[cfg(feature = "diagnose")]
33723		if let Ok(ret) = ret {
33724			return to_result("glIsTexture", ret, self.glGetError());
33725		} else {
33726			return ret
33727		}
33728		#[cfg(not(feature = "diagnose"))]
33729		return ret;
33730	}
33731	#[inline(always)]
33732	fn glLineWidth(&self, width: GLfloat) -> Result<()> {
33733		#[cfg(feature = "catch_nullptr")]
33734		let ret = process_catch("glLineWidth", catch_unwind(||(self.linewidth)(width)));
33735		#[cfg(not(feature = "catch_nullptr"))]
33736		let ret = {(self.linewidth)(width); Ok(())};
33737		#[cfg(feature = "diagnose")]
33738		if let Ok(ret) = ret {
33739			return to_result("glLineWidth", ret, self.glGetError());
33740		} else {
33741			return ret
33742		}
33743		#[cfg(not(feature = "diagnose"))]
33744		return ret;
33745	}
33746	#[inline(always)]
33747	fn glLinkProgram(&self, program: GLuint) -> Result<()> {
33748		#[cfg(feature = "catch_nullptr")]
33749		let ret = process_catch("glLinkProgram", catch_unwind(||(self.linkprogram)(program)));
33750		#[cfg(not(feature = "catch_nullptr"))]
33751		let ret = {(self.linkprogram)(program); Ok(())};
33752		#[cfg(feature = "diagnose")]
33753		if let Ok(ret) = ret {
33754			return to_result("glLinkProgram", ret, self.glGetError());
33755		} else {
33756			return ret
33757		}
33758		#[cfg(not(feature = "diagnose"))]
33759		return ret;
33760	}
33761	#[inline(always)]
33762	fn glPixelStorei(&self, pname: GLenum, param: GLint) -> Result<()> {
33763		#[cfg(feature = "catch_nullptr")]
33764		let ret = process_catch("glPixelStorei", catch_unwind(||(self.pixelstorei)(pname, param)));
33765		#[cfg(not(feature = "catch_nullptr"))]
33766		let ret = {(self.pixelstorei)(pname, param); Ok(())};
33767		#[cfg(feature = "diagnose")]
33768		if let Ok(ret) = ret {
33769			return to_result("glPixelStorei", ret, self.glGetError());
33770		} else {
33771			return ret
33772		}
33773		#[cfg(not(feature = "diagnose"))]
33774		return ret;
33775	}
33776	#[inline(always)]
33777	fn glPolygonOffset(&self, factor: GLfloat, units: GLfloat) -> Result<()> {
33778		#[cfg(feature = "catch_nullptr")]
33779		let ret = process_catch("glPolygonOffset", catch_unwind(||(self.polygonoffset)(factor, units)));
33780		#[cfg(not(feature = "catch_nullptr"))]
33781		let ret = {(self.polygonoffset)(factor, units); Ok(())};
33782		#[cfg(feature = "diagnose")]
33783		if let Ok(ret) = ret {
33784			return to_result("glPolygonOffset", ret, self.glGetError());
33785		} else {
33786			return ret
33787		}
33788		#[cfg(not(feature = "diagnose"))]
33789		return ret;
33790	}
33791	#[inline(always)]
33792	fn glReadPixels(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, pixels: *mut c_void) -> Result<()> {
33793		#[cfg(feature = "catch_nullptr")]
33794		let ret = process_catch("glReadPixels", catch_unwind(||(self.readpixels)(x, y, width, height, format, type_, pixels)));
33795		#[cfg(not(feature = "catch_nullptr"))]
33796		let ret = {(self.readpixels)(x, y, width, height, format, type_, pixels); Ok(())};
33797		#[cfg(feature = "diagnose")]
33798		if let Ok(ret) = ret {
33799			return to_result("glReadPixels", ret, self.glGetError());
33800		} else {
33801			return ret
33802		}
33803		#[cfg(not(feature = "diagnose"))]
33804		return ret;
33805	}
33806	#[inline(always)]
33807	fn glReleaseShaderCompiler(&self) -> Result<()> {
33808		#[cfg(feature = "catch_nullptr")]
33809		let ret = process_catch("glReleaseShaderCompiler", catch_unwind(||(self.releaseshadercompiler)()));
33810		#[cfg(not(feature = "catch_nullptr"))]
33811		let ret = {(self.releaseshadercompiler)(); Ok(())};
33812		#[cfg(feature = "diagnose")]
33813		if let Ok(ret) = ret {
33814			return to_result("glReleaseShaderCompiler", ret, self.glGetError());
33815		} else {
33816			return ret
33817		}
33818		#[cfg(not(feature = "diagnose"))]
33819		return ret;
33820	}
33821	#[inline(always)]
33822	fn glRenderbufferStorage(&self, target: GLenum, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()> {
33823		#[cfg(feature = "catch_nullptr")]
33824		let ret = process_catch("glRenderbufferStorage", catch_unwind(||(self.renderbufferstorage)(target, internalformat, width, height)));
33825		#[cfg(not(feature = "catch_nullptr"))]
33826		let ret = {(self.renderbufferstorage)(target, internalformat, width, height); Ok(())};
33827		#[cfg(feature = "diagnose")]
33828		if let Ok(ret) = ret {
33829			return to_result("glRenderbufferStorage", ret, self.glGetError());
33830		} else {
33831			return ret
33832		}
33833		#[cfg(not(feature = "diagnose"))]
33834		return ret;
33835	}
33836	#[inline(always)]
33837	fn glSampleCoverage(&self, value: GLfloat, invert: GLboolean) -> Result<()> {
33838		#[cfg(feature = "catch_nullptr")]
33839		let ret = process_catch("glSampleCoverage", catch_unwind(||(self.samplecoverage)(value, invert)));
33840		#[cfg(not(feature = "catch_nullptr"))]
33841		let ret = {(self.samplecoverage)(value, invert); Ok(())};
33842		#[cfg(feature = "diagnose")]
33843		if let Ok(ret) = ret {
33844			return to_result("glSampleCoverage", ret, self.glGetError());
33845		} else {
33846			return ret
33847		}
33848		#[cfg(not(feature = "diagnose"))]
33849		return ret;
33850	}
33851	#[inline(always)]
33852	fn glScissor(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
33853		#[cfg(feature = "catch_nullptr")]
33854		let ret = process_catch("glScissor", catch_unwind(||(self.scissor)(x, y, width, height)));
33855		#[cfg(not(feature = "catch_nullptr"))]
33856		let ret = {(self.scissor)(x, y, width, height); Ok(())};
33857		#[cfg(feature = "diagnose")]
33858		if let Ok(ret) = ret {
33859			return to_result("glScissor", ret, self.glGetError());
33860		} else {
33861			return ret
33862		}
33863		#[cfg(not(feature = "diagnose"))]
33864		return ret;
33865	}
33866	#[inline(always)]
33867	fn glShaderBinary(&self, count: GLsizei, shaders: *const GLuint, binaryformat: GLenum, binary: *const c_void, length: GLsizei) -> Result<()> {
33868		#[cfg(feature = "catch_nullptr")]
33869		let ret = process_catch("glShaderBinary", catch_unwind(||(self.shaderbinary)(count, shaders, binaryformat, binary, length)));
33870		#[cfg(not(feature = "catch_nullptr"))]
33871		let ret = {(self.shaderbinary)(count, shaders, binaryformat, binary, length); Ok(())};
33872		#[cfg(feature = "diagnose")]
33873		if let Ok(ret) = ret {
33874			return to_result("glShaderBinary", ret, self.glGetError());
33875		} else {
33876			return ret
33877		}
33878		#[cfg(not(feature = "diagnose"))]
33879		return ret;
33880	}
33881	#[inline(always)]
33882	fn glShaderSource(&self, shader: GLuint, count: GLsizei, string_: *const *const GLchar, length: *const GLint) -> Result<()> {
33883		#[cfg(feature = "catch_nullptr")]
33884		let ret = process_catch("glShaderSource", catch_unwind(||(self.shadersource)(shader, count, string_, length)));
33885		#[cfg(not(feature = "catch_nullptr"))]
33886		let ret = {(self.shadersource)(shader, count, string_, length); Ok(())};
33887		#[cfg(feature = "diagnose")]
33888		if let Ok(ret) = ret {
33889			return to_result("glShaderSource", ret, self.glGetError());
33890		} else {
33891			return ret
33892		}
33893		#[cfg(not(feature = "diagnose"))]
33894		return ret;
33895	}
33896	#[inline(always)]
33897	fn glStencilFunc(&self, func: GLenum, ref_: GLint, mask: GLuint) -> Result<()> {
33898		#[cfg(feature = "catch_nullptr")]
33899		let ret = process_catch("glStencilFunc", catch_unwind(||(self.stencilfunc)(func, ref_, mask)));
33900		#[cfg(not(feature = "catch_nullptr"))]
33901		let ret = {(self.stencilfunc)(func, ref_, mask); Ok(())};
33902		#[cfg(feature = "diagnose")]
33903		if let Ok(ret) = ret {
33904			return to_result("glStencilFunc", ret, self.glGetError());
33905		} else {
33906			return ret
33907		}
33908		#[cfg(not(feature = "diagnose"))]
33909		return ret;
33910	}
33911	#[inline(always)]
33912	fn glStencilFuncSeparate(&self, face: GLenum, func: GLenum, ref_: GLint, mask: GLuint) -> Result<()> {
33913		#[cfg(feature = "catch_nullptr")]
33914		let ret = process_catch("glStencilFuncSeparate", catch_unwind(||(self.stencilfuncseparate)(face, func, ref_, mask)));
33915		#[cfg(not(feature = "catch_nullptr"))]
33916		let ret = {(self.stencilfuncseparate)(face, func, ref_, mask); Ok(())};
33917		#[cfg(feature = "diagnose")]
33918		if let Ok(ret) = ret {
33919			return to_result("glStencilFuncSeparate", ret, self.glGetError());
33920		} else {
33921			return ret
33922		}
33923		#[cfg(not(feature = "diagnose"))]
33924		return ret;
33925	}
33926	#[inline(always)]
33927	fn glStencilMask(&self, mask: GLuint) -> Result<()> {
33928		#[cfg(feature = "catch_nullptr")]
33929		let ret = process_catch("glStencilMask", catch_unwind(||(self.stencilmask)(mask)));
33930		#[cfg(not(feature = "catch_nullptr"))]
33931		let ret = {(self.stencilmask)(mask); Ok(())};
33932		#[cfg(feature = "diagnose")]
33933		if let Ok(ret) = ret {
33934			return to_result("glStencilMask", ret, self.glGetError());
33935		} else {
33936			return ret
33937		}
33938		#[cfg(not(feature = "diagnose"))]
33939		return ret;
33940	}
33941	#[inline(always)]
33942	fn glStencilMaskSeparate(&self, face: GLenum, mask: GLuint) -> Result<()> {
33943		#[cfg(feature = "catch_nullptr")]
33944		let ret = process_catch("glStencilMaskSeparate", catch_unwind(||(self.stencilmaskseparate)(face, mask)));
33945		#[cfg(not(feature = "catch_nullptr"))]
33946		let ret = {(self.stencilmaskseparate)(face, mask); Ok(())};
33947		#[cfg(feature = "diagnose")]
33948		if let Ok(ret) = ret {
33949			return to_result("glStencilMaskSeparate", ret, self.glGetError());
33950		} else {
33951			return ret
33952		}
33953		#[cfg(not(feature = "diagnose"))]
33954		return ret;
33955	}
33956	#[inline(always)]
33957	fn glStencilOp(&self, fail: GLenum, zfail: GLenum, zpass: GLenum) -> Result<()> {
33958		#[cfg(feature = "catch_nullptr")]
33959		let ret = process_catch("glStencilOp", catch_unwind(||(self.stencilop)(fail, zfail, zpass)));
33960		#[cfg(not(feature = "catch_nullptr"))]
33961		let ret = {(self.stencilop)(fail, zfail, zpass); Ok(())};
33962		#[cfg(feature = "diagnose")]
33963		if let Ok(ret) = ret {
33964			return to_result("glStencilOp", ret, self.glGetError());
33965		} else {
33966			return ret
33967		}
33968		#[cfg(not(feature = "diagnose"))]
33969		return ret;
33970	}
33971	#[inline(always)]
33972	fn glStencilOpSeparate(&self, face: GLenum, sfail: GLenum, dpfail: GLenum, dppass: GLenum) -> Result<()> {
33973		#[cfg(feature = "catch_nullptr")]
33974		let ret = process_catch("glStencilOpSeparate", catch_unwind(||(self.stencilopseparate)(face, sfail, dpfail, dppass)));
33975		#[cfg(not(feature = "catch_nullptr"))]
33976		let ret = {(self.stencilopseparate)(face, sfail, dpfail, dppass); Ok(())};
33977		#[cfg(feature = "diagnose")]
33978		if let Ok(ret) = ret {
33979			return to_result("glStencilOpSeparate", ret, self.glGetError());
33980		} else {
33981			return ret
33982		}
33983		#[cfg(not(feature = "diagnose"))]
33984		return ret;
33985	}
33986	#[inline(always)]
33987	fn glTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
33988		#[cfg(feature = "catch_nullptr")]
33989		let ret = process_catch("glTexImage2D", catch_unwind(||(self.teximage2d)(target, level, internalformat, width, height, border, format, type_, pixels)));
33990		#[cfg(not(feature = "catch_nullptr"))]
33991		let ret = {(self.teximage2d)(target, level, internalformat, width, height, border, format, type_, pixels); Ok(())};
33992		#[cfg(feature = "diagnose")]
33993		if let Ok(ret) = ret {
33994			return to_result("glTexImage2D", ret, self.glGetError());
33995		} else {
33996			return ret
33997		}
33998		#[cfg(not(feature = "diagnose"))]
33999		return ret;
34000	}
34001	#[inline(always)]
34002	fn glTexParameterf(&self, target: GLenum, pname: GLenum, param: GLfloat) -> Result<()> {
34003		#[cfg(feature = "catch_nullptr")]
34004		let ret = process_catch("glTexParameterf", catch_unwind(||(self.texparameterf)(target, pname, param)));
34005		#[cfg(not(feature = "catch_nullptr"))]
34006		let ret = {(self.texparameterf)(target, pname, param); Ok(())};
34007		#[cfg(feature = "diagnose")]
34008		if let Ok(ret) = ret {
34009			return to_result("glTexParameterf", ret, self.glGetError());
34010		} else {
34011			return ret
34012		}
34013		#[cfg(not(feature = "diagnose"))]
34014		return ret;
34015	}
34016	#[inline(always)]
34017	fn glTexParameterfv(&self, target: GLenum, pname: GLenum, params: *const GLfloat) -> Result<()> {
34018		#[cfg(feature = "catch_nullptr")]
34019		let ret = process_catch("glTexParameterfv", catch_unwind(||(self.texparameterfv)(target, pname, params)));
34020		#[cfg(not(feature = "catch_nullptr"))]
34021		let ret = {(self.texparameterfv)(target, pname, params); Ok(())};
34022		#[cfg(feature = "diagnose")]
34023		if let Ok(ret) = ret {
34024			return to_result("glTexParameterfv", ret, self.glGetError());
34025		} else {
34026			return ret
34027		}
34028		#[cfg(not(feature = "diagnose"))]
34029		return ret;
34030	}
34031	#[inline(always)]
34032	fn glTexParameteri(&self, target: GLenum, pname: GLenum, param: GLint) -> Result<()> {
34033		#[cfg(feature = "catch_nullptr")]
34034		let ret = process_catch("glTexParameteri", catch_unwind(||(self.texparameteri)(target, pname, param)));
34035		#[cfg(not(feature = "catch_nullptr"))]
34036		let ret = {(self.texparameteri)(target, pname, param); Ok(())};
34037		#[cfg(feature = "diagnose")]
34038		if let Ok(ret) = ret {
34039			return to_result("glTexParameteri", ret, self.glGetError());
34040		} else {
34041			return ret
34042		}
34043		#[cfg(not(feature = "diagnose"))]
34044		return ret;
34045	}
34046	#[inline(always)]
34047	fn glTexParameteriv(&self, target: GLenum, pname: GLenum, params: *const GLint) -> Result<()> {
34048		#[cfg(feature = "catch_nullptr")]
34049		let ret = process_catch("glTexParameteriv", catch_unwind(||(self.texparameteriv)(target, pname, params)));
34050		#[cfg(not(feature = "catch_nullptr"))]
34051		let ret = {(self.texparameteriv)(target, pname, params); Ok(())};
34052		#[cfg(feature = "diagnose")]
34053		if let Ok(ret) = ret {
34054			return to_result("glTexParameteriv", ret, self.glGetError());
34055		} else {
34056			return ret
34057		}
34058		#[cfg(not(feature = "diagnose"))]
34059		return ret;
34060	}
34061	#[inline(always)]
34062	fn glTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
34063		#[cfg(feature = "catch_nullptr")]
34064		let ret = process_catch("glTexSubImage2D", catch_unwind(||(self.texsubimage2d)(target, level, xoffset, yoffset, width, height, format, type_, pixels)));
34065		#[cfg(not(feature = "catch_nullptr"))]
34066		let ret = {(self.texsubimage2d)(target, level, xoffset, yoffset, width, height, format, type_, pixels); Ok(())};
34067		#[cfg(feature = "diagnose")]
34068		if let Ok(ret) = ret {
34069			return to_result("glTexSubImage2D", ret, self.glGetError());
34070		} else {
34071			return ret
34072		}
34073		#[cfg(not(feature = "diagnose"))]
34074		return ret;
34075	}
34076	#[inline(always)]
34077	fn glUniform1f(&self, location: GLint, v0: GLfloat) -> Result<()> {
34078		#[cfg(feature = "catch_nullptr")]
34079		let ret = process_catch("glUniform1f", catch_unwind(||(self.uniform1f)(location, v0)));
34080		#[cfg(not(feature = "catch_nullptr"))]
34081		let ret = {(self.uniform1f)(location, v0); Ok(())};
34082		#[cfg(feature = "diagnose")]
34083		if let Ok(ret) = ret {
34084			return to_result("glUniform1f", ret, self.glGetError());
34085		} else {
34086			return ret
34087		}
34088		#[cfg(not(feature = "diagnose"))]
34089		return ret;
34090	}
34091	#[inline(always)]
34092	fn glUniform1fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
34093		#[cfg(feature = "catch_nullptr")]
34094		let ret = process_catch("glUniform1fv", catch_unwind(||(self.uniform1fv)(location, count, value)));
34095		#[cfg(not(feature = "catch_nullptr"))]
34096		let ret = {(self.uniform1fv)(location, count, value); Ok(())};
34097		#[cfg(feature = "diagnose")]
34098		if let Ok(ret) = ret {
34099			return to_result("glUniform1fv", ret, self.glGetError());
34100		} else {
34101			return ret
34102		}
34103		#[cfg(not(feature = "diagnose"))]
34104		return ret;
34105	}
34106	#[inline(always)]
34107	fn glUniform1i(&self, location: GLint, v0: GLint) -> Result<()> {
34108		#[cfg(feature = "catch_nullptr")]
34109		let ret = process_catch("glUniform1i", catch_unwind(||(self.uniform1i)(location, v0)));
34110		#[cfg(not(feature = "catch_nullptr"))]
34111		let ret = {(self.uniform1i)(location, v0); Ok(())};
34112		#[cfg(feature = "diagnose")]
34113		if let Ok(ret) = ret {
34114			return to_result("glUniform1i", ret, self.glGetError());
34115		} else {
34116			return ret
34117		}
34118		#[cfg(not(feature = "diagnose"))]
34119		return ret;
34120	}
34121	#[inline(always)]
34122	fn glUniform1iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
34123		#[cfg(feature = "catch_nullptr")]
34124		let ret = process_catch("glUniform1iv", catch_unwind(||(self.uniform1iv)(location, count, value)));
34125		#[cfg(not(feature = "catch_nullptr"))]
34126		let ret = {(self.uniform1iv)(location, count, value); Ok(())};
34127		#[cfg(feature = "diagnose")]
34128		if let Ok(ret) = ret {
34129			return to_result("glUniform1iv", ret, self.glGetError());
34130		} else {
34131			return ret
34132		}
34133		#[cfg(not(feature = "diagnose"))]
34134		return ret;
34135	}
34136	#[inline(always)]
34137	fn glUniform2f(&self, location: GLint, v0: GLfloat, v1: GLfloat) -> Result<()> {
34138		#[cfg(feature = "catch_nullptr")]
34139		let ret = process_catch("glUniform2f", catch_unwind(||(self.uniform2f)(location, v0, v1)));
34140		#[cfg(not(feature = "catch_nullptr"))]
34141		let ret = {(self.uniform2f)(location, v0, v1); Ok(())};
34142		#[cfg(feature = "diagnose")]
34143		if let Ok(ret) = ret {
34144			return to_result("glUniform2f", ret, self.glGetError());
34145		} else {
34146			return ret
34147		}
34148		#[cfg(not(feature = "diagnose"))]
34149		return ret;
34150	}
34151	#[inline(always)]
34152	fn glUniform2fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
34153		#[cfg(feature = "catch_nullptr")]
34154		let ret = process_catch("glUniform2fv", catch_unwind(||(self.uniform2fv)(location, count, value)));
34155		#[cfg(not(feature = "catch_nullptr"))]
34156		let ret = {(self.uniform2fv)(location, count, value); Ok(())};
34157		#[cfg(feature = "diagnose")]
34158		if let Ok(ret) = ret {
34159			return to_result("glUniform2fv", ret, self.glGetError());
34160		} else {
34161			return ret
34162		}
34163		#[cfg(not(feature = "diagnose"))]
34164		return ret;
34165	}
34166	#[inline(always)]
34167	fn glUniform2i(&self, location: GLint, v0: GLint, v1: GLint) -> Result<()> {
34168		#[cfg(feature = "catch_nullptr")]
34169		let ret = process_catch("glUniform2i", catch_unwind(||(self.uniform2i)(location, v0, v1)));
34170		#[cfg(not(feature = "catch_nullptr"))]
34171		let ret = {(self.uniform2i)(location, v0, v1); Ok(())};
34172		#[cfg(feature = "diagnose")]
34173		if let Ok(ret) = ret {
34174			return to_result("glUniform2i", ret, self.glGetError());
34175		} else {
34176			return ret
34177		}
34178		#[cfg(not(feature = "diagnose"))]
34179		return ret;
34180	}
34181	#[inline(always)]
34182	fn glUniform2iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
34183		#[cfg(feature = "catch_nullptr")]
34184		let ret = process_catch("glUniform2iv", catch_unwind(||(self.uniform2iv)(location, count, value)));
34185		#[cfg(not(feature = "catch_nullptr"))]
34186		let ret = {(self.uniform2iv)(location, count, value); Ok(())};
34187		#[cfg(feature = "diagnose")]
34188		if let Ok(ret) = ret {
34189			return to_result("glUniform2iv", ret, self.glGetError());
34190		} else {
34191			return ret
34192		}
34193		#[cfg(not(feature = "diagnose"))]
34194		return ret;
34195	}
34196	#[inline(always)]
34197	fn glUniform3f(&self, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat) -> Result<()> {
34198		#[cfg(feature = "catch_nullptr")]
34199		let ret = process_catch("glUniform3f", catch_unwind(||(self.uniform3f)(location, v0, v1, v2)));
34200		#[cfg(not(feature = "catch_nullptr"))]
34201		let ret = {(self.uniform3f)(location, v0, v1, v2); Ok(())};
34202		#[cfg(feature = "diagnose")]
34203		if let Ok(ret) = ret {
34204			return to_result("glUniform3f", ret, self.glGetError());
34205		} else {
34206			return ret
34207		}
34208		#[cfg(not(feature = "diagnose"))]
34209		return ret;
34210	}
34211	#[inline(always)]
34212	fn glUniform3fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
34213		#[cfg(feature = "catch_nullptr")]
34214		let ret = process_catch("glUniform3fv", catch_unwind(||(self.uniform3fv)(location, count, value)));
34215		#[cfg(not(feature = "catch_nullptr"))]
34216		let ret = {(self.uniform3fv)(location, count, value); Ok(())};
34217		#[cfg(feature = "diagnose")]
34218		if let Ok(ret) = ret {
34219			return to_result("glUniform3fv", ret, self.glGetError());
34220		} else {
34221			return ret
34222		}
34223		#[cfg(not(feature = "diagnose"))]
34224		return ret;
34225	}
34226	#[inline(always)]
34227	fn glUniform3i(&self, location: GLint, v0: GLint, v1: GLint, v2: GLint) -> Result<()> {
34228		#[cfg(feature = "catch_nullptr")]
34229		let ret = process_catch("glUniform3i", catch_unwind(||(self.uniform3i)(location, v0, v1, v2)));
34230		#[cfg(not(feature = "catch_nullptr"))]
34231		let ret = {(self.uniform3i)(location, v0, v1, v2); Ok(())};
34232		#[cfg(feature = "diagnose")]
34233		if let Ok(ret) = ret {
34234			return to_result("glUniform3i", ret, self.glGetError());
34235		} else {
34236			return ret
34237		}
34238		#[cfg(not(feature = "diagnose"))]
34239		return ret;
34240	}
34241	#[inline(always)]
34242	fn glUniform3iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
34243		#[cfg(feature = "catch_nullptr")]
34244		let ret = process_catch("glUniform3iv", catch_unwind(||(self.uniform3iv)(location, count, value)));
34245		#[cfg(not(feature = "catch_nullptr"))]
34246		let ret = {(self.uniform3iv)(location, count, value); Ok(())};
34247		#[cfg(feature = "diagnose")]
34248		if let Ok(ret) = ret {
34249			return to_result("glUniform3iv", ret, self.glGetError());
34250		} else {
34251			return ret
34252		}
34253		#[cfg(not(feature = "diagnose"))]
34254		return ret;
34255	}
34256	#[inline(always)]
34257	fn glUniform4f(&self, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat, v3: GLfloat) -> Result<()> {
34258		#[cfg(feature = "catch_nullptr")]
34259		let ret = process_catch("glUniform4f", catch_unwind(||(self.uniform4f)(location, v0, v1, v2, v3)));
34260		#[cfg(not(feature = "catch_nullptr"))]
34261		let ret = {(self.uniform4f)(location, v0, v1, v2, v3); Ok(())};
34262		#[cfg(feature = "diagnose")]
34263		if let Ok(ret) = ret {
34264			return to_result("glUniform4f", ret, self.glGetError());
34265		} else {
34266			return ret
34267		}
34268		#[cfg(not(feature = "diagnose"))]
34269		return ret;
34270	}
34271	#[inline(always)]
34272	fn glUniform4fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
34273		#[cfg(feature = "catch_nullptr")]
34274		let ret = process_catch("glUniform4fv", catch_unwind(||(self.uniform4fv)(location, count, value)));
34275		#[cfg(not(feature = "catch_nullptr"))]
34276		let ret = {(self.uniform4fv)(location, count, value); Ok(())};
34277		#[cfg(feature = "diagnose")]
34278		if let Ok(ret) = ret {
34279			return to_result("glUniform4fv", ret, self.glGetError());
34280		} else {
34281			return ret
34282		}
34283		#[cfg(not(feature = "diagnose"))]
34284		return ret;
34285	}
34286	#[inline(always)]
34287	fn glUniform4i(&self, location: GLint, v0: GLint, v1: GLint, v2: GLint, v3: GLint) -> Result<()> {
34288		#[cfg(feature = "catch_nullptr")]
34289		let ret = process_catch("glUniform4i", catch_unwind(||(self.uniform4i)(location, v0, v1, v2, v3)));
34290		#[cfg(not(feature = "catch_nullptr"))]
34291		let ret = {(self.uniform4i)(location, v0, v1, v2, v3); Ok(())};
34292		#[cfg(feature = "diagnose")]
34293		if let Ok(ret) = ret {
34294			return to_result("glUniform4i", ret, self.glGetError());
34295		} else {
34296			return ret
34297		}
34298		#[cfg(not(feature = "diagnose"))]
34299		return ret;
34300	}
34301	#[inline(always)]
34302	fn glUniform4iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
34303		#[cfg(feature = "catch_nullptr")]
34304		let ret = process_catch("glUniform4iv", catch_unwind(||(self.uniform4iv)(location, count, value)));
34305		#[cfg(not(feature = "catch_nullptr"))]
34306		let ret = {(self.uniform4iv)(location, count, value); Ok(())};
34307		#[cfg(feature = "diagnose")]
34308		if let Ok(ret) = ret {
34309			return to_result("glUniform4iv", ret, self.glGetError());
34310		} else {
34311			return ret
34312		}
34313		#[cfg(not(feature = "diagnose"))]
34314		return ret;
34315	}
34316	#[inline(always)]
34317	fn glUniformMatrix2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
34318		#[cfg(feature = "catch_nullptr")]
34319		let ret = process_catch("glUniformMatrix2fv", catch_unwind(||(self.uniformmatrix2fv)(location, count, transpose, value)));
34320		#[cfg(not(feature = "catch_nullptr"))]
34321		let ret = {(self.uniformmatrix2fv)(location, count, transpose, value); Ok(())};
34322		#[cfg(feature = "diagnose")]
34323		if let Ok(ret) = ret {
34324			return to_result("glUniformMatrix2fv", ret, self.glGetError());
34325		} else {
34326			return ret
34327		}
34328		#[cfg(not(feature = "diagnose"))]
34329		return ret;
34330	}
34331	#[inline(always)]
34332	fn glUniformMatrix3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
34333		#[cfg(feature = "catch_nullptr")]
34334		let ret = process_catch("glUniformMatrix3fv", catch_unwind(||(self.uniformmatrix3fv)(location, count, transpose, value)));
34335		#[cfg(not(feature = "catch_nullptr"))]
34336		let ret = {(self.uniformmatrix3fv)(location, count, transpose, value); Ok(())};
34337		#[cfg(feature = "diagnose")]
34338		if let Ok(ret) = ret {
34339			return to_result("glUniformMatrix3fv", ret, self.glGetError());
34340		} else {
34341			return ret
34342		}
34343		#[cfg(not(feature = "diagnose"))]
34344		return ret;
34345	}
34346	#[inline(always)]
34347	fn glUniformMatrix4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
34348		#[cfg(feature = "catch_nullptr")]
34349		let ret = process_catch("glUniformMatrix4fv", catch_unwind(||(self.uniformmatrix4fv)(location, count, transpose, value)));
34350		#[cfg(not(feature = "catch_nullptr"))]
34351		let ret = {(self.uniformmatrix4fv)(location, count, transpose, value); Ok(())};
34352		#[cfg(feature = "diagnose")]
34353		if let Ok(ret) = ret {
34354			return to_result("glUniformMatrix4fv", ret, self.glGetError());
34355		} else {
34356			return ret
34357		}
34358		#[cfg(not(feature = "diagnose"))]
34359		return ret;
34360	}
34361	#[inline(always)]
34362	fn glUseProgram(&self, program: GLuint) -> Result<()> {
34363		#[cfg(feature = "catch_nullptr")]
34364		let ret = process_catch("glUseProgram", catch_unwind(||(self.useprogram)(program)));
34365		#[cfg(not(feature = "catch_nullptr"))]
34366		let ret = {(self.useprogram)(program); Ok(())};
34367		#[cfg(feature = "diagnose")]
34368		if let Ok(ret) = ret {
34369			return to_result("glUseProgram", ret, self.glGetError());
34370		} else {
34371			return ret
34372		}
34373		#[cfg(not(feature = "diagnose"))]
34374		return ret;
34375	}
34376	#[inline(always)]
34377	fn glValidateProgram(&self, program: GLuint) -> Result<()> {
34378		#[cfg(feature = "catch_nullptr")]
34379		let ret = process_catch("glValidateProgram", catch_unwind(||(self.validateprogram)(program)));
34380		#[cfg(not(feature = "catch_nullptr"))]
34381		let ret = {(self.validateprogram)(program); Ok(())};
34382		#[cfg(feature = "diagnose")]
34383		if let Ok(ret) = ret {
34384			return to_result("glValidateProgram", ret, self.glGetError());
34385		} else {
34386			return ret
34387		}
34388		#[cfg(not(feature = "diagnose"))]
34389		return ret;
34390	}
34391	#[inline(always)]
34392	fn glVertexAttrib1f(&self, index: GLuint, x: GLfloat) -> Result<()> {
34393		#[cfg(feature = "catch_nullptr")]
34394		let ret = process_catch("glVertexAttrib1f", catch_unwind(||(self.vertexattrib1f)(index, x)));
34395		#[cfg(not(feature = "catch_nullptr"))]
34396		let ret = {(self.vertexattrib1f)(index, x); Ok(())};
34397		#[cfg(feature = "diagnose")]
34398		if let Ok(ret) = ret {
34399			return to_result("glVertexAttrib1f", ret, self.glGetError());
34400		} else {
34401			return ret
34402		}
34403		#[cfg(not(feature = "diagnose"))]
34404		return ret;
34405	}
34406	#[inline(always)]
34407	fn glVertexAttrib1fv(&self, index: GLuint, v: *const GLfloat) -> Result<()> {
34408		#[cfg(feature = "catch_nullptr")]
34409		let ret = process_catch("glVertexAttrib1fv", catch_unwind(||(self.vertexattrib1fv)(index, v)));
34410		#[cfg(not(feature = "catch_nullptr"))]
34411		let ret = {(self.vertexattrib1fv)(index, v); Ok(())};
34412		#[cfg(feature = "diagnose")]
34413		if let Ok(ret) = ret {
34414			return to_result("glVertexAttrib1fv", ret, self.glGetError());
34415		} else {
34416			return ret
34417		}
34418		#[cfg(not(feature = "diagnose"))]
34419		return ret;
34420	}
34421	#[inline(always)]
34422	fn glVertexAttrib2f(&self, index: GLuint, x: GLfloat, y: GLfloat) -> Result<()> {
34423		#[cfg(feature = "catch_nullptr")]
34424		let ret = process_catch("glVertexAttrib2f", catch_unwind(||(self.vertexattrib2f)(index, x, y)));
34425		#[cfg(not(feature = "catch_nullptr"))]
34426		let ret = {(self.vertexattrib2f)(index, x, y); Ok(())};
34427		#[cfg(feature = "diagnose")]
34428		if let Ok(ret) = ret {
34429			return to_result("glVertexAttrib2f", ret, self.glGetError());
34430		} else {
34431			return ret
34432		}
34433		#[cfg(not(feature = "diagnose"))]
34434		return ret;
34435	}
34436	#[inline(always)]
34437	fn glVertexAttrib2fv(&self, index: GLuint, v: *const GLfloat) -> Result<()> {
34438		#[cfg(feature = "catch_nullptr")]
34439		let ret = process_catch("glVertexAttrib2fv", catch_unwind(||(self.vertexattrib2fv)(index, v)));
34440		#[cfg(not(feature = "catch_nullptr"))]
34441		let ret = {(self.vertexattrib2fv)(index, v); Ok(())};
34442		#[cfg(feature = "diagnose")]
34443		if let Ok(ret) = ret {
34444			return to_result("glVertexAttrib2fv", ret, self.glGetError());
34445		} else {
34446			return ret
34447		}
34448		#[cfg(not(feature = "diagnose"))]
34449		return ret;
34450	}
34451	#[inline(always)]
34452	fn glVertexAttrib3f(&self, index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat) -> Result<()> {
34453		#[cfg(feature = "catch_nullptr")]
34454		let ret = process_catch("glVertexAttrib3f", catch_unwind(||(self.vertexattrib3f)(index, x, y, z)));
34455		#[cfg(not(feature = "catch_nullptr"))]
34456		let ret = {(self.vertexattrib3f)(index, x, y, z); Ok(())};
34457		#[cfg(feature = "diagnose")]
34458		if let Ok(ret) = ret {
34459			return to_result("glVertexAttrib3f", ret, self.glGetError());
34460		} else {
34461			return ret
34462		}
34463		#[cfg(not(feature = "diagnose"))]
34464		return ret;
34465	}
34466	#[inline(always)]
34467	fn glVertexAttrib3fv(&self, index: GLuint, v: *const GLfloat) -> Result<()> {
34468		#[cfg(feature = "catch_nullptr")]
34469		let ret = process_catch("glVertexAttrib3fv", catch_unwind(||(self.vertexattrib3fv)(index, v)));
34470		#[cfg(not(feature = "catch_nullptr"))]
34471		let ret = {(self.vertexattrib3fv)(index, v); Ok(())};
34472		#[cfg(feature = "diagnose")]
34473		if let Ok(ret) = ret {
34474			return to_result("glVertexAttrib3fv", ret, self.glGetError());
34475		} else {
34476			return ret
34477		}
34478		#[cfg(not(feature = "diagnose"))]
34479		return ret;
34480	}
34481	#[inline(always)]
34482	fn glVertexAttrib4f(&self, index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat, w: GLfloat) -> Result<()> {
34483		#[cfg(feature = "catch_nullptr")]
34484		let ret = process_catch("glVertexAttrib4f", catch_unwind(||(self.vertexattrib4f)(index, x, y, z, w)));
34485		#[cfg(not(feature = "catch_nullptr"))]
34486		let ret = {(self.vertexattrib4f)(index, x, y, z, w); Ok(())};
34487		#[cfg(feature = "diagnose")]
34488		if let Ok(ret) = ret {
34489			return to_result("glVertexAttrib4f", ret, self.glGetError());
34490		} else {
34491			return ret
34492		}
34493		#[cfg(not(feature = "diagnose"))]
34494		return ret;
34495	}
34496	#[inline(always)]
34497	fn glVertexAttrib4fv(&self, index: GLuint, v: *const GLfloat) -> Result<()> {
34498		#[cfg(feature = "catch_nullptr")]
34499		let ret = process_catch("glVertexAttrib4fv", catch_unwind(||(self.vertexattrib4fv)(index, v)));
34500		#[cfg(not(feature = "catch_nullptr"))]
34501		let ret = {(self.vertexattrib4fv)(index, v); Ok(())};
34502		#[cfg(feature = "diagnose")]
34503		if let Ok(ret) = ret {
34504			return to_result("glVertexAttrib4fv", ret, self.glGetError());
34505		} else {
34506			return ret
34507		}
34508		#[cfg(not(feature = "diagnose"))]
34509		return ret;
34510	}
34511	#[inline(always)]
34512	fn glVertexAttribPointer(&self, index: GLuint, size: GLint, type_: GLenum, normalized: GLboolean, stride: GLsizei, pointer: *const c_void) -> Result<()> {
34513		#[cfg(feature = "catch_nullptr")]
34514		let ret = process_catch("glVertexAttribPointer", catch_unwind(||(self.vertexattribpointer)(index, size, type_, normalized, stride, pointer)));
34515		#[cfg(not(feature = "catch_nullptr"))]
34516		let ret = {(self.vertexattribpointer)(index, size, type_, normalized, stride, pointer); Ok(())};
34517		#[cfg(feature = "diagnose")]
34518		if let Ok(ret) = ret {
34519			return to_result("glVertexAttribPointer", ret, self.glGetError());
34520		} else {
34521			return ret
34522		}
34523		#[cfg(not(feature = "diagnose"))]
34524		return ret;
34525	}
34526	#[inline(always)]
34527	fn glViewport(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
34528		#[cfg(feature = "catch_nullptr")]
34529		let ret = process_catch("glViewport", catch_unwind(||(self.viewport)(x, y, width, height)));
34530		#[cfg(not(feature = "catch_nullptr"))]
34531		let ret = {(self.viewport)(x, y, width, height); Ok(())};
34532		#[cfg(feature = "diagnose")]
34533		if let Ok(ret) = ret {
34534			return to_result("glViewport", ret, self.glGetError());
34535		} else {
34536			return ret
34537		}
34538		#[cfg(not(feature = "diagnose"))]
34539		return ret;
34540	}
34541}
34542
34543impl EsVersion20 {
34544	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
34545		let (_spec, major, minor, release) = base.get_version();
34546		if (major, minor, release) < (2, 0, 0) {
34547			return Self::default();
34548		}
34549		Self {
34550			available: true,
34551			activetexture: {let proc = get_proc_address("glActiveTexture"); if proc.is_null() {dummy_pfnglactivetextureproc} else {unsafe{transmute(proc)}}},
34552			attachshader: {let proc = get_proc_address("glAttachShader"); if proc.is_null() {dummy_pfnglattachshaderproc} else {unsafe{transmute(proc)}}},
34553			bindattriblocation: {let proc = get_proc_address("glBindAttribLocation"); if proc.is_null() {dummy_pfnglbindattriblocationproc} else {unsafe{transmute(proc)}}},
34554			bindbuffer: {let proc = get_proc_address("glBindBuffer"); if proc.is_null() {dummy_pfnglbindbufferproc} else {unsafe{transmute(proc)}}},
34555			bindframebuffer: {let proc = get_proc_address("glBindFramebuffer"); if proc.is_null() {dummy_pfnglbindframebufferproc} else {unsafe{transmute(proc)}}},
34556			bindrenderbuffer: {let proc = get_proc_address("glBindRenderbuffer"); if proc.is_null() {dummy_pfnglbindrenderbufferproc} else {unsafe{transmute(proc)}}},
34557			bindtexture: {let proc = get_proc_address("glBindTexture"); if proc.is_null() {dummy_pfnglbindtextureproc} else {unsafe{transmute(proc)}}},
34558			blendcolor: {let proc = get_proc_address("glBlendColor"); if proc.is_null() {dummy_pfnglblendcolorproc} else {unsafe{transmute(proc)}}},
34559			blendequation: {let proc = get_proc_address("glBlendEquation"); if proc.is_null() {dummy_pfnglblendequationproc} else {unsafe{transmute(proc)}}},
34560			blendequationseparate: {let proc = get_proc_address("glBlendEquationSeparate"); if proc.is_null() {dummy_pfnglblendequationseparateproc} else {unsafe{transmute(proc)}}},
34561			blendfunc: {let proc = get_proc_address("glBlendFunc"); if proc.is_null() {dummy_pfnglblendfuncproc} else {unsafe{transmute(proc)}}},
34562			blendfuncseparate: {let proc = get_proc_address("glBlendFuncSeparate"); if proc.is_null() {dummy_pfnglblendfuncseparateproc} else {unsafe{transmute(proc)}}},
34563			bufferdata: {let proc = get_proc_address("glBufferData"); if proc.is_null() {dummy_pfnglbufferdataproc} else {unsafe{transmute(proc)}}},
34564			buffersubdata: {let proc = get_proc_address("glBufferSubData"); if proc.is_null() {dummy_pfnglbuffersubdataproc} else {unsafe{transmute(proc)}}},
34565			checkframebufferstatus: {let proc = get_proc_address("glCheckFramebufferStatus"); if proc.is_null() {dummy_pfnglcheckframebufferstatusproc} else {unsafe{transmute(proc)}}},
34566			clear: {let proc = get_proc_address("glClear"); if proc.is_null() {dummy_pfnglclearproc} else {unsafe{transmute(proc)}}},
34567			clearcolor: {let proc = get_proc_address("glClearColor"); if proc.is_null() {dummy_pfnglclearcolorproc} else {unsafe{transmute(proc)}}},
34568			cleardepthf: {let proc = get_proc_address("glClearDepthf"); if proc.is_null() {dummy_pfnglcleardepthfproc} else {unsafe{transmute(proc)}}},
34569			clearstencil: {let proc = get_proc_address("glClearStencil"); if proc.is_null() {dummy_pfnglclearstencilproc} else {unsafe{transmute(proc)}}},
34570			colormask: {let proc = get_proc_address("glColorMask"); if proc.is_null() {dummy_pfnglcolormaskproc} else {unsafe{transmute(proc)}}},
34571			compileshader: {let proc = get_proc_address("glCompileShader"); if proc.is_null() {dummy_pfnglcompileshaderproc} else {unsafe{transmute(proc)}}},
34572			compressedteximage2d: {let proc = get_proc_address("glCompressedTexImage2D"); if proc.is_null() {dummy_pfnglcompressedteximage2dproc} else {unsafe{transmute(proc)}}},
34573			compressedtexsubimage2d: {let proc = get_proc_address("glCompressedTexSubImage2D"); if proc.is_null() {dummy_pfnglcompressedtexsubimage2dproc} else {unsafe{transmute(proc)}}},
34574			copyteximage2d: {let proc = get_proc_address("glCopyTexImage2D"); if proc.is_null() {dummy_pfnglcopyteximage2dproc} else {unsafe{transmute(proc)}}},
34575			copytexsubimage2d: {let proc = get_proc_address("glCopyTexSubImage2D"); if proc.is_null() {dummy_pfnglcopytexsubimage2dproc} else {unsafe{transmute(proc)}}},
34576			createprogram: {let proc = get_proc_address("glCreateProgram"); if proc.is_null() {dummy_pfnglcreateprogramproc} else {unsafe{transmute(proc)}}},
34577			createshader: {let proc = get_proc_address("glCreateShader"); if proc.is_null() {dummy_pfnglcreateshaderproc} else {unsafe{transmute(proc)}}},
34578			cullface: {let proc = get_proc_address("glCullFace"); if proc.is_null() {dummy_pfnglcullfaceproc} else {unsafe{transmute(proc)}}},
34579			deletebuffers: {let proc = get_proc_address("glDeleteBuffers"); if proc.is_null() {dummy_pfngldeletebuffersproc} else {unsafe{transmute(proc)}}},
34580			deleteframebuffers: {let proc = get_proc_address("glDeleteFramebuffers"); if proc.is_null() {dummy_pfngldeleteframebuffersproc} else {unsafe{transmute(proc)}}},
34581			deleteprogram: {let proc = get_proc_address("glDeleteProgram"); if proc.is_null() {dummy_pfngldeleteprogramproc} else {unsafe{transmute(proc)}}},
34582			deleterenderbuffers: {let proc = get_proc_address("glDeleteRenderbuffers"); if proc.is_null() {dummy_pfngldeleterenderbuffersproc} else {unsafe{transmute(proc)}}},
34583			deleteshader: {let proc = get_proc_address("glDeleteShader"); if proc.is_null() {dummy_pfngldeleteshaderproc} else {unsafe{transmute(proc)}}},
34584			deletetextures: {let proc = get_proc_address("glDeleteTextures"); if proc.is_null() {dummy_pfngldeletetexturesproc} else {unsafe{transmute(proc)}}},
34585			depthfunc: {let proc = get_proc_address("glDepthFunc"); if proc.is_null() {dummy_pfngldepthfuncproc} else {unsafe{transmute(proc)}}},
34586			depthmask: {let proc = get_proc_address("glDepthMask"); if proc.is_null() {dummy_pfngldepthmaskproc} else {unsafe{transmute(proc)}}},
34587			depthrangef: {let proc = get_proc_address("glDepthRangef"); if proc.is_null() {dummy_pfngldepthrangefproc} else {unsafe{transmute(proc)}}},
34588			detachshader: {let proc = get_proc_address("glDetachShader"); if proc.is_null() {dummy_pfngldetachshaderproc} else {unsafe{transmute(proc)}}},
34589			disable: {let proc = get_proc_address("glDisable"); if proc.is_null() {dummy_pfngldisableproc} else {unsafe{transmute(proc)}}},
34590			disablevertexattribarray: {let proc = get_proc_address("glDisableVertexAttribArray"); if proc.is_null() {dummy_pfngldisablevertexattribarrayproc} else {unsafe{transmute(proc)}}},
34591			drawarrays: {let proc = get_proc_address("glDrawArrays"); if proc.is_null() {dummy_pfngldrawarraysproc} else {unsafe{transmute(proc)}}},
34592			drawelements: {let proc = get_proc_address("glDrawElements"); if proc.is_null() {dummy_pfngldrawelementsproc} else {unsafe{transmute(proc)}}},
34593			enable: {let proc = get_proc_address("glEnable"); if proc.is_null() {dummy_pfnglenableproc} else {unsafe{transmute(proc)}}},
34594			enablevertexattribarray: {let proc = get_proc_address("glEnableVertexAttribArray"); if proc.is_null() {dummy_pfnglenablevertexattribarrayproc} else {unsafe{transmute(proc)}}},
34595			finish: {let proc = get_proc_address("glFinish"); if proc.is_null() {dummy_pfnglfinishproc} else {unsafe{transmute(proc)}}},
34596			flush: {let proc = get_proc_address("glFlush"); if proc.is_null() {dummy_pfnglflushproc} else {unsafe{transmute(proc)}}},
34597			framebufferrenderbuffer: {let proc = get_proc_address("glFramebufferRenderbuffer"); if proc.is_null() {dummy_pfnglframebufferrenderbufferproc} else {unsafe{transmute(proc)}}},
34598			framebuffertexture2d: {let proc = get_proc_address("glFramebufferTexture2D"); if proc.is_null() {dummy_pfnglframebuffertexture2dproc} else {unsafe{transmute(proc)}}},
34599			frontface: {let proc = get_proc_address("glFrontFace"); if proc.is_null() {dummy_pfnglfrontfaceproc} else {unsafe{transmute(proc)}}},
34600			genbuffers: {let proc = get_proc_address("glGenBuffers"); if proc.is_null() {dummy_pfnglgenbuffersproc} else {unsafe{transmute(proc)}}},
34601			generatemipmap: {let proc = get_proc_address("glGenerateMipmap"); if proc.is_null() {dummy_pfnglgeneratemipmapproc} else {unsafe{transmute(proc)}}},
34602			genframebuffers: {let proc = get_proc_address("glGenFramebuffers"); if proc.is_null() {dummy_pfnglgenframebuffersproc} else {unsafe{transmute(proc)}}},
34603			genrenderbuffers: {let proc = get_proc_address("glGenRenderbuffers"); if proc.is_null() {dummy_pfnglgenrenderbuffersproc} else {unsafe{transmute(proc)}}},
34604			gentextures: {let proc = get_proc_address("glGenTextures"); if proc.is_null() {dummy_pfnglgentexturesproc} else {unsafe{transmute(proc)}}},
34605			getactiveattrib: {let proc = get_proc_address("glGetActiveAttrib"); if proc.is_null() {dummy_pfnglgetactiveattribproc} else {unsafe{transmute(proc)}}},
34606			getactiveuniform: {let proc = get_proc_address("glGetActiveUniform"); if proc.is_null() {dummy_pfnglgetactiveuniformproc} else {unsafe{transmute(proc)}}},
34607			getattachedshaders: {let proc = get_proc_address("glGetAttachedShaders"); if proc.is_null() {dummy_pfnglgetattachedshadersproc} else {unsafe{transmute(proc)}}},
34608			getattriblocation: {let proc = get_proc_address("glGetAttribLocation"); if proc.is_null() {dummy_pfnglgetattriblocationproc} else {unsafe{transmute(proc)}}},
34609			getbooleanv: {let proc = get_proc_address("glGetBooleanv"); if proc.is_null() {dummy_pfnglgetbooleanvproc} else {unsafe{transmute(proc)}}},
34610			getbufferparameteriv: {let proc = get_proc_address("glGetBufferParameteriv"); if proc.is_null() {dummy_pfnglgetbufferparameterivproc} else {unsafe{transmute(proc)}}},
34611			geterror: {let proc = get_proc_address("glGetError"); if proc.is_null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
34612			getfloatv: {let proc = get_proc_address("glGetFloatv"); if proc.is_null() {dummy_pfnglgetfloatvproc} else {unsafe{transmute(proc)}}},
34613			getframebufferattachmentparameteriv: {let proc = get_proc_address("glGetFramebufferAttachmentParameteriv"); if proc.is_null() {dummy_pfnglgetframebufferattachmentparameterivproc} else {unsafe{transmute(proc)}}},
34614			getintegerv: {let proc = get_proc_address("glGetIntegerv"); if proc.is_null() {dummy_pfnglgetintegervproc} else {unsafe{transmute(proc)}}},
34615			getprogramiv: {let proc = get_proc_address("glGetProgramiv"); if proc.is_null() {dummy_pfnglgetprogramivproc} else {unsafe{transmute(proc)}}},
34616			getprograminfolog: {let proc = get_proc_address("glGetProgramInfoLog"); if proc.is_null() {dummy_pfnglgetprograminfologproc} else {unsafe{transmute(proc)}}},
34617			getrenderbufferparameteriv: {let proc = get_proc_address("glGetRenderbufferParameteriv"); if proc.is_null() {dummy_pfnglgetrenderbufferparameterivproc} else {unsafe{transmute(proc)}}},
34618			getshaderiv: {let proc = get_proc_address("glGetShaderiv"); if proc.is_null() {dummy_pfnglgetshaderivproc} else {unsafe{transmute(proc)}}},
34619			getshaderinfolog: {let proc = get_proc_address("glGetShaderInfoLog"); if proc.is_null() {dummy_pfnglgetshaderinfologproc} else {unsafe{transmute(proc)}}},
34620			getshaderprecisionformat: {let proc = get_proc_address("glGetShaderPrecisionFormat"); if proc.is_null() {dummy_pfnglgetshaderprecisionformatproc} else {unsafe{transmute(proc)}}},
34621			getshadersource: {let proc = get_proc_address("glGetShaderSource"); if proc.is_null() {dummy_pfnglgetshadersourceproc} else {unsafe{transmute(proc)}}},
34622			getstring: {let proc = get_proc_address("glGetString"); if proc.is_null() {dummy_pfnglgetstringproc} else {unsafe{transmute(proc)}}},
34623			gettexparameterfv: {let proc = get_proc_address("glGetTexParameterfv"); if proc.is_null() {dummy_pfnglgettexparameterfvproc} else {unsafe{transmute(proc)}}},
34624			gettexparameteriv: {let proc = get_proc_address("glGetTexParameteriv"); if proc.is_null() {dummy_pfnglgettexparameterivproc} else {unsafe{transmute(proc)}}},
34625			getuniformfv: {let proc = get_proc_address("glGetUniformfv"); if proc.is_null() {dummy_pfnglgetuniformfvproc} else {unsafe{transmute(proc)}}},
34626			getuniformiv: {let proc = get_proc_address("glGetUniformiv"); if proc.is_null() {dummy_pfnglgetuniformivproc} else {unsafe{transmute(proc)}}},
34627			getuniformlocation: {let proc = get_proc_address("glGetUniformLocation"); if proc.is_null() {dummy_pfnglgetuniformlocationproc} else {unsafe{transmute(proc)}}},
34628			getvertexattribfv: {let proc = get_proc_address("glGetVertexAttribfv"); if proc.is_null() {dummy_pfnglgetvertexattribfvproc} else {unsafe{transmute(proc)}}},
34629			getvertexattribiv: {let proc = get_proc_address("glGetVertexAttribiv"); if proc.is_null() {dummy_pfnglgetvertexattribivproc} else {unsafe{transmute(proc)}}},
34630			getvertexattribpointerv: {let proc = get_proc_address("glGetVertexAttribPointerv"); if proc.is_null() {dummy_pfnglgetvertexattribpointervproc} else {unsafe{transmute(proc)}}},
34631			hint: {let proc = get_proc_address("glHint"); if proc.is_null() {dummy_pfnglhintproc} else {unsafe{transmute(proc)}}},
34632			isbuffer: {let proc = get_proc_address("glIsBuffer"); if proc.is_null() {dummy_pfnglisbufferproc} else {unsafe{transmute(proc)}}},
34633			isenabled: {let proc = get_proc_address("glIsEnabled"); if proc.is_null() {dummy_pfnglisenabledproc} else {unsafe{transmute(proc)}}},
34634			isframebuffer: {let proc = get_proc_address("glIsFramebuffer"); if proc.is_null() {dummy_pfnglisframebufferproc} else {unsafe{transmute(proc)}}},
34635			isprogram: {let proc = get_proc_address("glIsProgram"); if proc.is_null() {dummy_pfnglisprogramproc} else {unsafe{transmute(proc)}}},
34636			isrenderbuffer: {let proc = get_proc_address("glIsRenderbuffer"); if proc.is_null() {dummy_pfnglisrenderbufferproc} else {unsafe{transmute(proc)}}},
34637			isshader: {let proc = get_proc_address("glIsShader"); if proc.is_null() {dummy_pfnglisshaderproc} else {unsafe{transmute(proc)}}},
34638			istexture: {let proc = get_proc_address("glIsTexture"); if proc.is_null() {dummy_pfnglistextureproc} else {unsafe{transmute(proc)}}},
34639			linewidth: {let proc = get_proc_address("glLineWidth"); if proc.is_null() {dummy_pfngllinewidthproc} else {unsafe{transmute(proc)}}},
34640			linkprogram: {let proc = get_proc_address("glLinkProgram"); if proc.is_null() {dummy_pfngllinkprogramproc} else {unsafe{transmute(proc)}}},
34641			pixelstorei: {let proc = get_proc_address("glPixelStorei"); if proc.is_null() {dummy_pfnglpixelstoreiproc} else {unsafe{transmute(proc)}}},
34642			polygonoffset: {let proc = get_proc_address("glPolygonOffset"); if proc.is_null() {dummy_pfnglpolygonoffsetproc} else {unsafe{transmute(proc)}}},
34643			readpixels: {let proc = get_proc_address("glReadPixels"); if proc.is_null() {dummy_pfnglreadpixelsproc} else {unsafe{transmute(proc)}}},
34644			releaseshadercompiler: {let proc = get_proc_address("glReleaseShaderCompiler"); if proc.is_null() {dummy_pfnglreleaseshadercompilerproc} else {unsafe{transmute(proc)}}},
34645			renderbufferstorage: {let proc = get_proc_address("glRenderbufferStorage"); if proc.is_null() {dummy_pfnglrenderbufferstorageproc} else {unsafe{transmute(proc)}}},
34646			samplecoverage: {let proc = get_proc_address("glSampleCoverage"); if proc.is_null() {dummy_pfnglsamplecoverageproc} else {unsafe{transmute(proc)}}},
34647			scissor: {let proc = get_proc_address("glScissor"); if proc.is_null() {dummy_pfnglscissorproc} else {unsafe{transmute(proc)}}},
34648			shaderbinary: {let proc = get_proc_address("glShaderBinary"); if proc.is_null() {dummy_pfnglshaderbinaryproc} else {unsafe{transmute(proc)}}},
34649			shadersource: {let proc = get_proc_address("glShaderSource"); if proc.is_null() {dummy_pfnglshadersourceproc} else {unsafe{transmute(proc)}}},
34650			stencilfunc: {let proc = get_proc_address("glStencilFunc"); if proc.is_null() {dummy_pfnglstencilfuncproc} else {unsafe{transmute(proc)}}},
34651			stencilfuncseparate: {let proc = get_proc_address("glStencilFuncSeparate"); if proc.is_null() {dummy_pfnglstencilfuncseparateproc} else {unsafe{transmute(proc)}}},
34652			stencilmask: {let proc = get_proc_address("glStencilMask"); if proc.is_null() {dummy_pfnglstencilmaskproc} else {unsafe{transmute(proc)}}},
34653			stencilmaskseparate: {let proc = get_proc_address("glStencilMaskSeparate"); if proc.is_null() {dummy_pfnglstencilmaskseparateproc} else {unsafe{transmute(proc)}}},
34654			stencilop: {let proc = get_proc_address("glStencilOp"); if proc.is_null() {dummy_pfnglstencilopproc} else {unsafe{transmute(proc)}}},
34655			stencilopseparate: {let proc = get_proc_address("glStencilOpSeparate"); if proc.is_null() {dummy_pfnglstencilopseparateproc} else {unsafe{transmute(proc)}}},
34656			teximage2d: {let proc = get_proc_address("glTexImage2D"); if proc.is_null() {dummy_pfnglteximage2dproc} else {unsafe{transmute(proc)}}},
34657			texparameterf: {let proc = get_proc_address("glTexParameterf"); if proc.is_null() {dummy_pfngltexparameterfproc} else {unsafe{transmute(proc)}}},
34658			texparameterfv: {let proc = get_proc_address("glTexParameterfv"); if proc.is_null() {dummy_pfngltexparameterfvproc} else {unsafe{transmute(proc)}}},
34659			texparameteri: {let proc = get_proc_address("glTexParameteri"); if proc.is_null() {dummy_pfngltexparameteriproc} else {unsafe{transmute(proc)}}},
34660			texparameteriv: {let proc = get_proc_address("glTexParameteriv"); if proc.is_null() {dummy_pfngltexparameterivproc} else {unsafe{transmute(proc)}}},
34661			texsubimage2d: {let proc = get_proc_address("glTexSubImage2D"); if proc.is_null() {dummy_pfngltexsubimage2dproc} else {unsafe{transmute(proc)}}},
34662			uniform1f: {let proc = get_proc_address("glUniform1f"); if proc.is_null() {dummy_pfngluniform1fproc} else {unsafe{transmute(proc)}}},
34663			uniform1fv: {let proc = get_proc_address("glUniform1fv"); if proc.is_null() {dummy_pfngluniform1fvproc} else {unsafe{transmute(proc)}}},
34664			uniform1i: {let proc = get_proc_address("glUniform1i"); if proc.is_null() {dummy_pfngluniform1iproc} else {unsafe{transmute(proc)}}},
34665			uniform1iv: {let proc = get_proc_address("glUniform1iv"); if proc.is_null() {dummy_pfngluniform1ivproc} else {unsafe{transmute(proc)}}},
34666			uniform2f: {let proc = get_proc_address("glUniform2f"); if proc.is_null() {dummy_pfngluniform2fproc} else {unsafe{transmute(proc)}}},
34667			uniform2fv: {let proc = get_proc_address("glUniform2fv"); if proc.is_null() {dummy_pfngluniform2fvproc} else {unsafe{transmute(proc)}}},
34668			uniform2i: {let proc = get_proc_address("glUniform2i"); if proc.is_null() {dummy_pfngluniform2iproc} else {unsafe{transmute(proc)}}},
34669			uniform2iv: {let proc = get_proc_address("glUniform2iv"); if proc.is_null() {dummy_pfngluniform2ivproc} else {unsafe{transmute(proc)}}},
34670			uniform3f: {let proc = get_proc_address("glUniform3f"); if proc.is_null() {dummy_pfngluniform3fproc} else {unsafe{transmute(proc)}}},
34671			uniform3fv: {let proc = get_proc_address("glUniform3fv"); if proc.is_null() {dummy_pfngluniform3fvproc} else {unsafe{transmute(proc)}}},
34672			uniform3i: {let proc = get_proc_address("glUniform3i"); if proc.is_null() {dummy_pfngluniform3iproc} else {unsafe{transmute(proc)}}},
34673			uniform3iv: {let proc = get_proc_address("glUniform3iv"); if proc.is_null() {dummy_pfngluniform3ivproc} else {unsafe{transmute(proc)}}},
34674			uniform4f: {let proc = get_proc_address("glUniform4f"); if proc.is_null() {dummy_pfngluniform4fproc} else {unsafe{transmute(proc)}}},
34675			uniform4fv: {let proc = get_proc_address("glUniform4fv"); if proc.is_null() {dummy_pfngluniform4fvproc} else {unsafe{transmute(proc)}}},
34676			uniform4i: {let proc = get_proc_address("glUniform4i"); if proc.is_null() {dummy_pfngluniform4iproc} else {unsafe{transmute(proc)}}},
34677			uniform4iv: {let proc = get_proc_address("glUniform4iv"); if proc.is_null() {dummy_pfngluniform4ivproc} else {unsafe{transmute(proc)}}},
34678			uniformmatrix2fv: {let proc = get_proc_address("glUniformMatrix2fv"); if proc.is_null() {dummy_pfngluniformmatrix2fvproc} else {unsafe{transmute(proc)}}},
34679			uniformmatrix3fv: {let proc = get_proc_address("glUniformMatrix3fv"); if proc.is_null() {dummy_pfngluniformmatrix3fvproc} else {unsafe{transmute(proc)}}},
34680			uniformmatrix4fv: {let proc = get_proc_address("glUniformMatrix4fv"); if proc.is_null() {dummy_pfngluniformmatrix4fvproc} else {unsafe{transmute(proc)}}},
34681			useprogram: {let proc = get_proc_address("glUseProgram"); if proc.is_null() {dummy_pfngluseprogramproc} else {unsafe{transmute(proc)}}},
34682			validateprogram: {let proc = get_proc_address("glValidateProgram"); if proc.is_null() {dummy_pfnglvalidateprogramproc} else {unsafe{transmute(proc)}}},
34683			vertexattrib1f: {let proc = get_proc_address("glVertexAttrib1f"); if proc.is_null() {dummy_pfnglvertexattrib1fproc} else {unsafe{transmute(proc)}}},
34684			vertexattrib1fv: {let proc = get_proc_address("glVertexAttrib1fv"); if proc.is_null() {dummy_pfnglvertexattrib1fvproc} else {unsafe{transmute(proc)}}},
34685			vertexattrib2f: {let proc = get_proc_address("glVertexAttrib2f"); if proc.is_null() {dummy_pfnglvertexattrib2fproc} else {unsafe{transmute(proc)}}},
34686			vertexattrib2fv: {let proc = get_proc_address("glVertexAttrib2fv"); if proc.is_null() {dummy_pfnglvertexattrib2fvproc} else {unsafe{transmute(proc)}}},
34687			vertexattrib3f: {let proc = get_proc_address("glVertexAttrib3f"); if proc.is_null() {dummy_pfnglvertexattrib3fproc} else {unsafe{transmute(proc)}}},
34688			vertexattrib3fv: {let proc = get_proc_address("glVertexAttrib3fv"); if proc.is_null() {dummy_pfnglvertexattrib3fvproc} else {unsafe{transmute(proc)}}},
34689			vertexattrib4f: {let proc = get_proc_address("glVertexAttrib4f"); if proc.is_null() {dummy_pfnglvertexattrib4fproc} else {unsafe{transmute(proc)}}},
34690			vertexattrib4fv: {let proc = get_proc_address("glVertexAttrib4fv"); if proc.is_null() {dummy_pfnglvertexattrib4fvproc} else {unsafe{transmute(proc)}}},
34691			vertexattribpointer: {let proc = get_proc_address("glVertexAttribPointer"); if proc.is_null() {dummy_pfnglvertexattribpointerproc} else {unsafe{transmute(proc)}}},
34692			viewport: {let proc = get_proc_address("glViewport"); if proc.is_null() {dummy_pfnglviewportproc} else {unsafe{transmute(proc)}}},
34693		}
34694	}
34695	#[inline(always)]
34696	pub fn get_available(&self) -> bool {
34697		self.available
34698	}
34699}
34700
34701impl Default for EsVersion20 {
34702	fn default() -> Self {
34703		Self {
34704			available: false,
34705			activetexture: dummy_pfnglactivetextureproc,
34706			attachshader: dummy_pfnglattachshaderproc,
34707			bindattriblocation: dummy_pfnglbindattriblocationproc,
34708			bindbuffer: dummy_pfnglbindbufferproc,
34709			bindframebuffer: dummy_pfnglbindframebufferproc,
34710			bindrenderbuffer: dummy_pfnglbindrenderbufferproc,
34711			bindtexture: dummy_pfnglbindtextureproc,
34712			blendcolor: dummy_pfnglblendcolorproc,
34713			blendequation: dummy_pfnglblendequationproc,
34714			blendequationseparate: dummy_pfnglblendequationseparateproc,
34715			blendfunc: dummy_pfnglblendfuncproc,
34716			blendfuncseparate: dummy_pfnglblendfuncseparateproc,
34717			bufferdata: dummy_pfnglbufferdataproc,
34718			buffersubdata: dummy_pfnglbuffersubdataproc,
34719			checkframebufferstatus: dummy_pfnglcheckframebufferstatusproc,
34720			clear: dummy_pfnglclearproc,
34721			clearcolor: dummy_pfnglclearcolorproc,
34722			cleardepthf: dummy_pfnglcleardepthfproc,
34723			clearstencil: dummy_pfnglclearstencilproc,
34724			colormask: dummy_pfnglcolormaskproc,
34725			compileshader: dummy_pfnglcompileshaderproc,
34726			compressedteximage2d: dummy_pfnglcompressedteximage2dproc,
34727			compressedtexsubimage2d: dummy_pfnglcompressedtexsubimage2dproc,
34728			copyteximage2d: dummy_pfnglcopyteximage2dproc,
34729			copytexsubimage2d: dummy_pfnglcopytexsubimage2dproc,
34730			createprogram: dummy_pfnglcreateprogramproc,
34731			createshader: dummy_pfnglcreateshaderproc,
34732			cullface: dummy_pfnglcullfaceproc,
34733			deletebuffers: dummy_pfngldeletebuffersproc,
34734			deleteframebuffers: dummy_pfngldeleteframebuffersproc,
34735			deleteprogram: dummy_pfngldeleteprogramproc,
34736			deleterenderbuffers: dummy_pfngldeleterenderbuffersproc,
34737			deleteshader: dummy_pfngldeleteshaderproc,
34738			deletetextures: dummy_pfngldeletetexturesproc,
34739			depthfunc: dummy_pfngldepthfuncproc,
34740			depthmask: dummy_pfngldepthmaskproc,
34741			depthrangef: dummy_pfngldepthrangefproc,
34742			detachshader: dummy_pfngldetachshaderproc,
34743			disable: dummy_pfngldisableproc,
34744			disablevertexattribarray: dummy_pfngldisablevertexattribarrayproc,
34745			drawarrays: dummy_pfngldrawarraysproc,
34746			drawelements: dummy_pfngldrawelementsproc,
34747			enable: dummy_pfnglenableproc,
34748			enablevertexattribarray: dummy_pfnglenablevertexattribarrayproc,
34749			finish: dummy_pfnglfinishproc,
34750			flush: dummy_pfnglflushproc,
34751			framebufferrenderbuffer: dummy_pfnglframebufferrenderbufferproc,
34752			framebuffertexture2d: dummy_pfnglframebuffertexture2dproc,
34753			frontface: dummy_pfnglfrontfaceproc,
34754			genbuffers: dummy_pfnglgenbuffersproc,
34755			generatemipmap: dummy_pfnglgeneratemipmapproc,
34756			genframebuffers: dummy_pfnglgenframebuffersproc,
34757			genrenderbuffers: dummy_pfnglgenrenderbuffersproc,
34758			gentextures: dummy_pfnglgentexturesproc,
34759			getactiveattrib: dummy_pfnglgetactiveattribproc,
34760			getactiveuniform: dummy_pfnglgetactiveuniformproc,
34761			getattachedshaders: dummy_pfnglgetattachedshadersproc,
34762			getattriblocation: dummy_pfnglgetattriblocationproc,
34763			getbooleanv: dummy_pfnglgetbooleanvproc,
34764			getbufferparameteriv: dummy_pfnglgetbufferparameterivproc,
34765			geterror: dummy_pfnglgeterrorproc,
34766			getfloatv: dummy_pfnglgetfloatvproc,
34767			getframebufferattachmentparameteriv: dummy_pfnglgetframebufferattachmentparameterivproc,
34768			getintegerv: dummy_pfnglgetintegervproc,
34769			getprogramiv: dummy_pfnglgetprogramivproc,
34770			getprograminfolog: dummy_pfnglgetprograminfologproc,
34771			getrenderbufferparameteriv: dummy_pfnglgetrenderbufferparameterivproc,
34772			getshaderiv: dummy_pfnglgetshaderivproc,
34773			getshaderinfolog: dummy_pfnglgetshaderinfologproc,
34774			getshaderprecisionformat: dummy_pfnglgetshaderprecisionformatproc,
34775			getshadersource: dummy_pfnglgetshadersourceproc,
34776			getstring: dummy_pfnglgetstringproc,
34777			gettexparameterfv: dummy_pfnglgettexparameterfvproc,
34778			gettexparameteriv: dummy_pfnglgettexparameterivproc,
34779			getuniformfv: dummy_pfnglgetuniformfvproc,
34780			getuniformiv: dummy_pfnglgetuniformivproc,
34781			getuniformlocation: dummy_pfnglgetuniformlocationproc,
34782			getvertexattribfv: dummy_pfnglgetvertexattribfvproc,
34783			getvertexattribiv: dummy_pfnglgetvertexattribivproc,
34784			getvertexattribpointerv: dummy_pfnglgetvertexattribpointervproc,
34785			hint: dummy_pfnglhintproc,
34786			isbuffer: dummy_pfnglisbufferproc,
34787			isenabled: dummy_pfnglisenabledproc,
34788			isframebuffer: dummy_pfnglisframebufferproc,
34789			isprogram: dummy_pfnglisprogramproc,
34790			isrenderbuffer: dummy_pfnglisrenderbufferproc,
34791			isshader: dummy_pfnglisshaderproc,
34792			istexture: dummy_pfnglistextureproc,
34793			linewidth: dummy_pfngllinewidthproc,
34794			linkprogram: dummy_pfngllinkprogramproc,
34795			pixelstorei: dummy_pfnglpixelstoreiproc,
34796			polygonoffset: dummy_pfnglpolygonoffsetproc,
34797			readpixels: dummy_pfnglreadpixelsproc,
34798			releaseshadercompiler: dummy_pfnglreleaseshadercompilerproc,
34799			renderbufferstorage: dummy_pfnglrenderbufferstorageproc,
34800			samplecoverage: dummy_pfnglsamplecoverageproc,
34801			scissor: dummy_pfnglscissorproc,
34802			shaderbinary: dummy_pfnglshaderbinaryproc,
34803			shadersource: dummy_pfnglshadersourceproc,
34804			stencilfunc: dummy_pfnglstencilfuncproc,
34805			stencilfuncseparate: dummy_pfnglstencilfuncseparateproc,
34806			stencilmask: dummy_pfnglstencilmaskproc,
34807			stencilmaskseparate: dummy_pfnglstencilmaskseparateproc,
34808			stencilop: dummy_pfnglstencilopproc,
34809			stencilopseparate: dummy_pfnglstencilopseparateproc,
34810			teximage2d: dummy_pfnglteximage2dproc,
34811			texparameterf: dummy_pfngltexparameterfproc,
34812			texparameterfv: dummy_pfngltexparameterfvproc,
34813			texparameteri: dummy_pfngltexparameteriproc,
34814			texparameteriv: dummy_pfngltexparameterivproc,
34815			texsubimage2d: dummy_pfngltexsubimage2dproc,
34816			uniform1f: dummy_pfngluniform1fproc,
34817			uniform1fv: dummy_pfngluniform1fvproc,
34818			uniform1i: dummy_pfngluniform1iproc,
34819			uniform1iv: dummy_pfngluniform1ivproc,
34820			uniform2f: dummy_pfngluniform2fproc,
34821			uniform2fv: dummy_pfngluniform2fvproc,
34822			uniform2i: dummy_pfngluniform2iproc,
34823			uniform2iv: dummy_pfngluniform2ivproc,
34824			uniform3f: dummy_pfngluniform3fproc,
34825			uniform3fv: dummy_pfngluniform3fvproc,
34826			uniform3i: dummy_pfngluniform3iproc,
34827			uniform3iv: dummy_pfngluniform3ivproc,
34828			uniform4f: dummy_pfngluniform4fproc,
34829			uniform4fv: dummy_pfngluniform4fvproc,
34830			uniform4i: dummy_pfngluniform4iproc,
34831			uniform4iv: dummy_pfngluniform4ivproc,
34832			uniformmatrix2fv: dummy_pfngluniformmatrix2fvproc,
34833			uniformmatrix3fv: dummy_pfngluniformmatrix3fvproc,
34834			uniformmatrix4fv: dummy_pfngluniformmatrix4fvproc,
34835			useprogram: dummy_pfngluseprogramproc,
34836			validateprogram: dummy_pfnglvalidateprogramproc,
34837			vertexattrib1f: dummy_pfnglvertexattrib1fproc,
34838			vertexattrib1fv: dummy_pfnglvertexattrib1fvproc,
34839			vertexattrib2f: dummy_pfnglvertexattrib2fproc,
34840			vertexattrib2fv: dummy_pfnglvertexattrib2fvproc,
34841			vertexattrib3f: dummy_pfnglvertexattrib3fproc,
34842			vertexattrib3fv: dummy_pfnglvertexattrib3fvproc,
34843			vertexattrib4f: dummy_pfnglvertexattrib4fproc,
34844			vertexattrib4fv: dummy_pfnglvertexattrib4fvproc,
34845			vertexattribpointer: dummy_pfnglvertexattribpointerproc,
34846			viewport: dummy_pfnglviewportproc,
34847		}
34848	}
34849}
34850impl Debug for EsVersion20 {
34851	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
34852		if self.available {
34853			f.debug_struct("EsVersion20")
34854			.field("available", &self.available)
34855			.field("activetexture", unsafe{if transmute::<_, *const c_void>(self.activetexture) == (dummy_pfnglactivetextureproc as *const c_void) {&null::<PFNGLACTIVETEXTUREPROC>()} else {&self.activetexture}})
34856			.field("attachshader", unsafe{if transmute::<_, *const c_void>(self.attachshader) == (dummy_pfnglattachshaderproc as *const c_void) {&null::<PFNGLATTACHSHADERPROC>()} else {&self.attachshader}})
34857			.field("bindattriblocation", unsafe{if transmute::<_, *const c_void>(self.bindattriblocation) == (dummy_pfnglbindattriblocationproc as *const c_void) {&null::<PFNGLBINDATTRIBLOCATIONPROC>()} else {&self.bindattriblocation}})
34858			.field("bindbuffer", unsafe{if transmute::<_, *const c_void>(self.bindbuffer) == (dummy_pfnglbindbufferproc as *const c_void) {&null::<PFNGLBINDBUFFERPROC>()} else {&self.bindbuffer}})
34859			.field("bindframebuffer", unsafe{if transmute::<_, *const c_void>(self.bindframebuffer) == (dummy_pfnglbindframebufferproc as *const c_void) {&null::<PFNGLBINDFRAMEBUFFERPROC>()} else {&self.bindframebuffer}})
34860			.field("bindrenderbuffer", unsafe{if transmute::<_, *const c_void>(self.bindrenderbuffer) == (dummy_pfnglbindrenderbufferproc as *const c_void) {&null::<PFNGLBINDRENDERBUFFERPROC>()} else {&self.bindrenderbuffer}})
34861			.field("bindtexture", unsafe{if transmute::<_, *const c_void>(self.bindtexture) == (dummy_pfnglbindtextureproc as *const c_void) {&null::<PFNGLBINDTEXTUREPROC>()} else {&self.bindtexture}})
34862			.field("blendcolor", unsafe{if transmute::<_, *const c_void>(self.blendcolor) == (dummy_pfnglblendcolorproc as *const c_void) {&null::<PFNGLBLENDCOLORPROC>()} else {&self.blendcolor}})
34863			.field("blendequation", unsafe{if transmute::<_, *const c_void>(self.blendequation) == (dummy_pfnglblendequationproc as *const c_void) {&null::<PFNGLBLENDEQUATIONPROC>()} else {&self.blendequation}})
34864			.field("blendequationseparate", unsafe{if transmute::<_, *const c_void>(self.blendequationseparate) == (dummy_pfnglblendequationseparateproc as *const c_void) {&null::<PFNGLBLENDEQUATIONSEPARATEPROC>()} else {&self.blendequationseparate}})
34865			.field("blendfunc", unsafe{if transmute::<_, *const c_void>(self.blendfunc) == (dummy_pfnglblendfuncproc as *const c_void) {&null::<PFNGLBLENDFUNCPROC>()} else {&self.blendfunc}})
34866			.field("blendfuncseparate", unsafe{if transmute::<_, *const c_void>(self.blendfuncseparate) == (dummy_pfnglblendfuncseparateproc as *const c_void) {&null::<PFNGLBLENDFUNCSEPARATEPROC>()} else {&self.blendfuncseparate}})
34867			.field("bufferdata", unsafe{if transmute::<_, *const c_void>(self.bufferdata) == (dummy_pfnglbufferdataproc as *const c_void) {&null::<PFNGLBUFFERDATAPROC>()} else {&self.bufferdata}})
34868			.field("buffersubdata", unsafe{if transmute::<_, *const c_void>(self.buffersubdata) == (dummy_pfnglbuffersubdataproc as *const c_void) {&null::<PFNGLBUFFERSUBDATAPROC>()} else {&self.buffersubdata}})
34869			.field("checkframebufferstatus", unsafe{if transmute::<_, *const c_void>(self.checkframebufferstatus) == (dummy_pfnglcheckframebufferstatusproc as *const c_void) {&null::<PFNGLCHECKFRAMEBUFFERSTATUSPROC>()} else {&self.checkframebufferstatus}})
34870			.field("clear", unsafe{if transmute::<_, *const c_void>(self.clear) == (dummy_pfnglclearproc as *const c_void) {&null::<PFNGLCLEARPROC>()} else {&self.clear}})
34871			.field("clearcolor", unsafe{if transmute::<_, *const c_void>(self.clearcolor) == (dummy_pfnglclearcolorproc as *const c_void) {&null::<PFNGLCLEARCOLORPROC>()} else {&self.clearcolor}})
34872			.field("cleardepthf", unsafe{if transmute::<_, *const c_void>(self.cleardepthf) == (dummy_pfnglcleardepthfproc as *const c_void) {&null::<PFNGLCLEARDEPTHFPROC>()} else {&self.cleardepthf}})
34873			.field("clearstencil", unsafe{if transmute::<_, *const c_void>(self.clearstencil) == (dummy_pfnglclearstencilproc as *const c_void) {&null::<PFNGLCLEARSTENCILPROC>()} else {&self.clearstencil}})
34874			.field("colormask", unsafe{if transmute::<_, *const c_void>(self.colormask) == (dummy_pfnglcolormaskproc as *const c_void) {&null::<PFNGLCOLORMASKPROC>()} else {&self.colormask}})
34875			.field("compileshader", unsafe{if transmute::<_, *const c_void>(self.compileshader) == (dummy_pfnglcompileshaderproc as *const c_void) {&null::<PFNGLCOMPILESHADERPROC>()} else {&self.compileshader}})
34876			.field("compressedteximage2d", unsafe{if transmute::<_, *const c_void>(self.compressedteximage2d) == (dummy_pfnglcompressedteximage2dproc as *const c_void) {&null::<PFNGLCOMPRESSEDTEXIMAGE2DPROC>()} else {&self.compressedteximage2d}})
34877			.field("compressedtexsubimage2d", unsafe{if transmute::<_, *const c_void>(self.compressedtexsubimage2d) == (dummy_pfnglcompressedtexsubimage2dproc as *const c_void) {&null::<PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC>()} else {&self.compressedtexsubimage2d}})
34878			.field("copyteximage2d", unsafe{if transmute::<_, *const c_void>(self.copyteximage2d) == (dummy_pfnglcopyteximage2dproc as *const c_void) {&null::<PFNGLCOPYTEXIMAGE2DPROC>()} else {&self.copyteximage2d}})
34879			.field("copytexsubimage2d", unsafe{if transmute::<_, *const c_void>(self.copytexsubimage2d) == (dummy_pfnglcopytexsubimage2dproc as *const c_void) {&null::<PFNGLCOPYTEXSUBIMAGE2DPROC>()} else {&self.copytexsubimage2d}})
34880			.field("createprogram", unsafe{if transmute::<_, *const c_void>(self.createprogram) == (dummy_pfnglcreateprogramproc as *const c_void) {&null::<PFNGLCREATEPROGRAMPROC>()} else {&self.createprogram}})
34881			.field("createshader", unsafe{if transmute::<_, *const c_void>(self.createshader) == (dummy_pfnglcreateshaderproc as *const c_void) {&null::<PFNGLCREATESHADERPROC>()} else {&self.createshader}})
34882			.field("cullface", unsafe{if transmute::<_, *const c_void>(self.cullface) == (dummy_pfnglcullfaceproc as *const c_void) {&null::<PFNGLCULLFACEPROC>()} else {&self.cullface}})
34883			.field("deletebuffers", unsafe{if transmute::<_, *const c_void>(self.deletebuffers) == (dummy_pfngldeletebuffersproc as *const c_void) {&null::<PFNGLDELETEBUFFERSPROC>()} else {&self.deletebuffers}})
34884			.field("deleteframebuffers", unsafe{if transmute::<_, *const c_void>(self.deleteframebuffers) == (dummy_pfngldeleteframebuffersproc as *const c_void) {&null::<PFNGLDELETEFRAMEBUFFERSPROC>()} else {&self.deleteframebuffers}})
34885			.field("deleteprogram", unsafe{if transmute::<_, *const c_void>(self.deleteprogram) == (dummy_pfngldeleteprogramproc as *const c_void) {&null::<PFNGLDELETEPROGRAMPROC>()} else {&self.deleteprogram}})
34886			.field("deleterenderbuffers", unsafe{if transmute::<_, *const c_void>(self.deleterenderbuffers) == (dummy_pfngldeleterenderbuffersproc as *const c_void) {&null::<PFNGLDELETERENDERBUFFERSPROC>()} else {&self.deleterenderbuffers}})
34887			.field("deleteshader", unsafe{if transmute::<_, *const c_void>(self.deleteshader) == (dummy_pfngldeleteshaderproc as *const c_void) {&null::<PFNGLDELETESHADERPROC>()} else {&self.deleteshader}})
34888			.field("deletetextures", unsafe{if transmute::<_, *const c_void>(self.deletetextures) == (dummy_pfngldeletetexturesproc as *const c_void) {&null::<PFNGLDELETETEXTURESPROC>()} else {&self.deletetextures}})
34889			.field("depthfunc", unsafe{if transmute::<_, *const c_void>(self.depthfunc) == (dummy_pfngldepthfuncproc as *const c_void) {&null::<PFNGLDEPTHFUNCPROC>()} else {&self.depthfunc}})
34890			.field("depthmask", unsafe{if transmute::<_, *const c_void>(self.depthmask) == (dummy_pfngldepthmaskproc as *const c_void) {&null::<PFNGLDEPTHMASKPROC>()} else {&self.depthmask}})
34891			.field("depthrangef", unsafe{if transmute::<_, *const c_void>(self.depthrangef) == (dummy_pfngldepthrangefproc as *const c_void) {&null::<PFNGLDEPTHRANGEFPROC>()} else {&self.depthrangef}})
34892			.field("detachshader", unsafe{if transmute::<_, *const c_void>(self.detachshader) == (dummy_pfngldetachshaderproc as *const c_void) {&null::<PFNGLDETACHSHADERPROC>()} else {&self.detachshader}})
34893			.field("disable", unsafe{if transmute::<_, *const c_void>(self.disable) == (dummy_pfngldisableproc as *const c_void) {&null::<PFNGLDISABLEPROC>()} else {&self.disable}})
34894			.field("disablevertexattribarray", unsafe{if transmute::<_, *const c_void>(self.disablevertexattribarray) == (dummy_pfngldisablevertexattribarrayproc as *const c_void) {&null::<PFNGLDISABLEVERTEXATTRIBARRAYPROC>()} else {&self.disablevertexattribarray}})
34895			.field("drawarrays", unsafe{if transmute::<_, *const c_void>(self.drawarrays) == (dummy_pfngldrawarraysproc as *const c_void) {&null::<PFNGLDRAWARRAYSPROC>()} else {&self.drawarrays}})
34896			.field("drawelements", unsafe{if transmute::<_, *const c_void>(self.drawelements) == (dummy_pfngldrawelementsproc as *const c_void) {&null::<PFNGLDRAWELEMENTSPROC>()} else {&self.drawelements}})
34897			.field("enable", unsafe{if transmute::<_, *const c_void>(self.enable) == (dummy_pfnglenableproc as *const c_void) {&null::<PFNGLENABLEPROC>()} else {&self.enable}})
34898			.field("enablevertexattribarray", unsafe{if transmute::<_, *const c_void>(self.enablevertexattribarray) == (dummy_pfnglenablevertexattribarrayproc as *const c_void) {&null::<PFNGLENABLEVERTEXATTRIBARRAYPROC>()} else {&self.enablevertexattribarray}})
34899			.field("finish", unsafe{if transmute::<_, *const c_void>(self.finish) == (dummy_pfnglfinishproc as *const c_void) {&null::<PFNGLFINISHPROC>()} else {&self.finish}})
34900			.field("flush", unsafe{if transmute::<_, *const c_void>(self.flush) == (dummy_pfnglflushproc as *const c_void) {&null::<PFNGLFLUSHPROC>()} else {&self.flush}})
34901			.field("framebufferrenderbuffer", unsafe{if transmute::<_, *const c_void>(self.framebufferrenderbuffer) == (dummy_pfnglframebufferrenderbufferproc as *const c_void) {&null::<PFNGLFRAMEBUFFERRENDERBUFFERPROC>()} else {&self.framebufferrenderbuffer}})
34902			.field("framebuffertexture2d", unsafe{if transmute::<_, *const c_void>(self.framebuffertexture2d) == (dummy_pfnglframebuffertexture2dproc as *const c_void) {&null::<PFNGLFRAMEBUFFERTEXTURE2DPROC>()} else {&self.framebuffertexture2d}})
34903			.field("frontface", unsafe{if transmute::<_, *const c_void>(self.frontface) == (dummy_pfnglfrontfaceproc as *const c_void) {&null::<PFNGLFRONTFACEPROC>()} else {&self.frontface}})
34904			.field("genbuffers", unsafe{if transmute::<_, *const c_void>(self.genbuffers) == (dummy_pfnglgenbuffersproc as *const c_void) {&null::<PFNGLGENBUFFERSPROC>()} else {&self.genbuffers}})
34905			.field("generatemipmap", unsafe{if transmute::<_, *const c_void>(self.generatemipmap) == (dummy_pfnglgeneratemipmapproc as *const c_void) {&null::<PFNGLGENERATEMIPMAPPROC>()} else {&self.generatemipmap}})
34906			.field("genframebuffers", unsafe{if transmute::<_, *const c_void>(self.genframebuffers) == (dummy_pfnglgenframebuffersproc as *const c_void) {&null::<PFNGLGENFRAMEBUFFERSPROC>()} else {&self.genframebuffers}})
34907			.field("genrenderbuffers", unsafe{if transmute::<_, *const c_void>(self.genrenderbuffers) == (dummy_pfnglgenrenderbuffersproc as *const c_void) {&null::<PFNGLGENRENDERBUFFERSPROC>()} else {&self.genrenderbuffers}})
34908			.field("gentextures", unsafe{if transmute::<_, *const c_void>(self.gentextures) == (dummy_pfnglgentexturesproc as *const c_void) {&null::<PFNGLGENTEXTURESPROC>()} else {&self.gentextures}})
34909			.field("getactiveattrib", unsafe{if transmute::<_, *const c_void>(self.getactiveattrib) == (dummy_pfnglgetactiveattribproc as *const c_void) {&null::<PFNGLGETACTIVEATTRIBPROC>()} else {&self.getactiveattrib}})
34910			.field("getactiveuniform", unsafe{if transmute::<_, *const c_void>(self.getactiveuniform) == (dummy_pfnglgetactiveuniformproc as *const c_void) {&null::<PFNGLGETACTIVEUNIFORMPROC>()} else {&self.getactiveuniform}})
34911			.field("getattachedshaders", unsafe{if transmute::<_, *const c_void>(self.getattachedshaders) == (dummy_pfnglgetattachedshadersproc as *const c_void) {&null::<PFNGLGETATTACHEDSHADERSPROC>()} else {&self.getattachedshaders}})
34912			.field("getattriblocation", unsafe{if transmute::<_, *const c_void>(self.getattriblocation) == (dummy_pfnglgetattriblocationproc as *const c_void) {&null::<PFNGLGETATTRIBLOCATIONPROC>()} else {&self.getattriblocation}})
34913			.field("getbooleanv", unsafe{if transmute::<_, *const c_void>(self.getbooleanv) == (dummy_pfnglgetbooleanvproc as *const c_void) {&null::<PFNGLGETBOOLEANVPROC>()} else {&self.getbooleanv}})
34914			.field("getbufferparameteriv", unsafe{if transmute::<_, *const c_void>(self.getbufferparameteriv) == (dummy_pfnglgetbufferparameterivproc as *const c_void) {&null::<PFNGLGETBUFFERPARAMETERIVPROC>()} else {&self.getbufferparameteriv}})
34915			.field("geterror", unsafe{if transmute::<_, *const c_void>(self.geterror) == (dummy_pfnglgeterrorproc as *const c_void) {&null::<PFNGLGETERRORPROC>()} else {&self.geterror}})
34916			.field("getfloatv", unsafe{if transmute::<_, *const c_void>(self.getfloatv) == (dummy_pfnglgetfloatvproc as *const c_void) {&null::<PFNGLGETFLOATVPROC>()} else {&self.getfloatv}})
34917			.field("getframebufferattachmentparameteriv", unsafe{if transmute::<_, *const c_void>(self.getframebufferattachmentparameteriv) == (dummy_pfnglgetframebufferattachmentparameterivproc as *const c_void) {&null::<PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC>()} else {&self.getframebufferattachmentparameteriv}})
34918			.field("getintegerv", unsafe{if transmute::<_, *const c_void>(self.getintegerv) == (dummy_pfnglgetintegervproc as *const c_void) {&null::<PFNGLGETINTEGERVPROC>()} else {&self.getintegerv}})
34919			.field("getprogramiv", unsafe{if transmute::<_, *const c_void>(self.getprogramiv) == (dummy_pfnglgetprogramivproc as *const c_void) {&null::<PFNGLGETPROGRAMIVPROC>()} else {&self.getprogramiv}})
34920			.field("getprograminfolog", unsafe{if transmute::<_, *const c_void>(self.getprograminfolog) == (dummy_pfnglgetprograminfologproc as *const c_void) {&null::<PFNGLGETPROGRAMINFOLOGPROC>()} else {&self.getprograminfolog}})
34921			.field("getrenderbufferparameteriv", unsafe{if transmute::<_, *const c_void>(self.getrenderbufferparameteriv) == (dummy_pfnglgetrenderbufferparameterivproc as *const c_void) {&null::<PFNGLGETRENDERBUFFERPARAMETERIVPROC>()} else {&self.getrenderbufferparameteriv}})
34922			.field("getshaderiv", unsafe{if transmute::<_, *const c_void>(self.getshaderiv) == (dummy_pfnglgetshaderivproc as *const c_void) {&null::<PFNGLGETSHADERIVPROC>()} else {&self.getshaderiv}})
34923			.field("getshaderinfolog", unsafe{if transmute::<_, *const c_void>(self.getshaderinfolog) == (dummy_pfnglgetshaderinfologproc as *const c_void) {&null::<PFNGLGETSHADERINFOLOGPROC>()} else {&self.getshaderinfolog}})
34924			.field("getshaderprecisionformat", unsafe{if transmute::<_, *const c_void>(self.getshaderprecisionformat) == (dummy_pfnglgetshaderprecisionformatproc as *const c_void) {&null::<PFNGLGETSHADERPRECISIONFORMATPROC>()} else {&self.getshaderprecisionformat}})
34925			.field("getshadersource", unsafe{if transmute::<_, *const c_void>(self.getshadersource) == (dummy_pfnglgetshadersourceproc as *const c_void) {&null::<PFNGLGETSHADERSOURCEPROC>()} else {&self.getshadersource}})
34926			.field("getstring", unsafe{if transmute::<_, *const c_void>(self.getstring) == (dummy_pfnglgetstringproc as *const c_void) {&null::<PFNGLGETSTRINGPROC>()} else {&self.getstring}})
34927			.field("gettexparameterfv", unsafe{if transmute::<_, *const c_void>(self.gettexparameterfv) == (dummy_pfnglgettexparameterfvproc as *const c_void) {&null::<PFNGLGETTEXPARAMETERFVPROC>()} else {&self.gettexparameterfv}})
34928			.field("gettexparameteriv", unsafe{if transmute::<_, *const c_void>(self.gettexparameteriv) == (dummy_pfnglgettexparameterivproc as *const c_void) {&null::<PFNGLGETTEXPARAMETERIVPROC>()} else {&self.gettexparameteriv}})
34929			.field("getuniformfv", unsafe{if transmute::<_, *const c_void>(self.getuniformfv) == (dummy_pfnglgetuniformfvproc as *const c_void) {&null::<PFNGLGETUNIFORMFVPROC>()} else {&self.getuniformfv}})
34930			.field("getuniformiv", unsafe{if transmute::<_, *const c_void>(self.getuniformiv) == (dummy_pfnglgetuniformivproc as *const c_void) {&null::<PFNGLGETUNIFORMIVPROC>()} else {&self.getuniformiv}})
34931			.field("getuniformlocation", unsafe{if transmute::<_, *const c_void>(self.getuniformlocation) == (dummy_pfnglgetuniformlocationproc as *const c_void) {&null::<PFNGLGETUNIFORMLOCATIONPROC>()} else {&self.getuniformlocation}})
34932			.field("getvertexattribfv", unsafe{if transmute::<_, *const c_void>(self.getvertexattribfv) == (dummy_pfnglgetvertexattribfvproc as *const c_void) {&null::<PFNGLGETVERTEXATTRIBFVPROC>()} else {&self.getvertexattribfv}})
34933			.field("getvertexattribiv", unsafe{if transmute::<_, *const c_void>(self.getvertexattribiv) == (dummy_pfnglgetvertexattribivproc as *const c_void) {&null::<PFNGLGETVERTEXATTRIBIVPROC>()} else {&self.getvertexattribiv}})
34934			.field("getvertexattribpointerv", unsafe{if transmute::<_, *const c_void>(self.getvertexattribpointerv) == (dummy_pfnglgetvertexattribpointervproc as *const c_void) {&null::<PFNGLGETVERTEXATTRIBPOINTERVPROC>()} else {&self.getvertexattribpointerv}})
34935			.field("hint", unsafe{if transmute::<_, *const c_void>(self.hint) == (dummy_pfnglhintproc as *const c_void) {&null::<PFNGLHINTPROC>()} else {&self.hint}})
34936			.field("isbuffer", unsafe{if transmute::<_, *const c_void>(self.isbuffer) == (dummy_pfnglisbufferproc as *const c_void) {&null::<PFNGLISBUFFERPROC>()} else {&self.isbuffer}})
34937			.field("isenabled", unsafe{if transmute::<_, *const c_void>(self.isenabled) == (dummy_pfnglisenabledproc as *const c_void) {&null::<PFNGLISENABLEDPROC>()} else {&self.isenabled}})
34938			.field("isframebuffer", unsafe{if transmute::<_, *const c_void>(self.isframebuffer) == (dummy_pfnglisframebufferproc as *const c_void) {&null::<PFNGLISFRAMEBUFFERPROC>()} else {&self.isframebuffer}})
34939			.field("isprogram", unsafe{if transmute::<_, *const c_void>(self.isprogram) == (dummy_pfnglisprogramproc as *const c_void) {&null::<PFNGLISPROGRAMPROC>()} else {&self.isprogram}})
34940			.field("isrenderbuffer", unsafe{if transmute::<_, *const c_void>(self.isrenderbuffer) == (dummy_pfnglisrenderbufferproc as *const c_void) {&null::<PFNGLISRENDERBUFFERPROC>()} else {&self.isrenderbuffer}})
34941			.field("isshader", unsafe{if transmute::<_, *const c_void>(self.isshader) == (dummy_pfnglisshaderproc as *const c_void) {&null::<PFNGLISSHADERPROC>()} else {&self.isshader}})
34942			.field("istexture", unsafe{if transmute::<_, *const c_void>(self.istexture) == (dummy_pfnglistextureproc as *const c_void) {&null::<PFNGLISTEXTUREPROC>()} else {&self.istexture}})
34943			.field("linewidth", unsafe{if transmute::<_, *const c_void>(self.linewidth) == (dummy_pfngllinewidthproc as *const c_void) {&null::<PFNGLLINEWIDTHPROC>()} else {&self.linewidth}})
34944			.field("linkprogram", unsafe{if transmute::<_, *const c_void>(self.linkprogram) == (dummy_pfngllinkprogramproc as *const c_void) {&null::<PFNGLLINKPROGRAMPROC>()} else {&self.linkprogram}})
34945			.field("pixelstorei", unsafe{if transmute::<_, *const c_void>(self.pixelstorei) == (dummy_pfnglpixelstoreiproc as *const c_void) {&null::<PFNGLPIXELSTOREIPROC>()} else {&self.pixelstorei}})
34946			.field("polygonoffset", unsafe{if transmute::<_, *const c_void>(self.polygonoffset) == (dummy_pfnglpolygonoffsetproc as *const c_void) {&null::<PFNGLPOLYGONOFFSETPROC>()} else {&self.polygonoffset}})
34947			.field("readpixels", unsafe{if transmute::<_, *const c_void>(self.readpixels) == (dummy_pfnglreadpixelsproc as *const c_void) {&null::<PFNGLREADPIXELSPROC>()} else {&self.readpixels}})
34948			.field("releaseshadercompiler", unsafe{if transmute::<_, *const c_void>(self.releaseshadercompiler) == (dummy_pfnglreleaseshadercompilerproc as *const c_void) {&null::<PFNGLRELEASESHADERCOMPILERPROC>()} else {&self.releaseshadercompiler}})
34949			.field("renderbufferstorage", unsafe{if transmute::<_, *const c_void>(self.renderbufferstorage) == (dummy_pfnglrenderbufferstorageproc as *const c_void) {&null::<PFNGLRENDERBUFFERSTORAGEPROC>()} else {&self.renderbufferstorage}})
34950			.field("samplecoverage", unsafe{if transmute::<_, *const c_void>(self.samplecoverage) == (dummy_pfnglsamplecoverageproc as *const c_void) {&null::<PFNGLSAMPLECOVERAGEPROC>()} else {&self.samplecoverage}})
34951			.field("scissor", unsafe{if transmute::<_, *const c_void>(self.scissor) == (dummy_pfnglscissorproc as *const c_void) {&null::<PFNGLSCISSORPROC>()} else {&self.scissor}})
34952			.field("shaderbinary", unsafe{if transmute::<_, *const c_void>(self.shaderbinary) == (dummy_pfnglshaderbinaryproc as *const c_void) {&null::<PFNGLSHADERBINARYPROC>()} else {&self.shaderbinary}})
34953			.field("shadersource", unsafe{if transmute::<_, *const c_void>(self.shadersource) == (dummy_pfnglshadersourceproc as *const c_void) {&null::<PFNGLSHADERSOURCEPROC>()} else {&self.shadersource}})
34954			.field("stencilfunc", unsafe{if transmute::<_, *const c_void>(self.stencilfunc) == (dummy_pfnglstencilfuncproc as *const c_void) {&null::<PFNGLSTENCILFUNCPROC>()} else {&self.stencilfunc}})
34955			.field("stencilfuncseparate", unsafe{if transmute::<_, *const c_void>(self.stencilfuncseparate) == (dummy_pfnglstencilfuncseparateproc as *const c_void) {&null::<PFNGLSTENCILFUNCSEPARATEPROC>()} else {&self.stencilfuncseparate}})
34956			.field("stencilmask", unsafe{if transmute::<_, *const c_void>(self.stencilmask) == (dummy_pfnglstencilmaskproc as *const c_void) {&null::<PFNGLSTENCILMASKPROC>()} else {&self.stencilmask}})
34957			.field("stencilmaskseparate", unsafe{if transmute::<_, *const c_void>(self.stencilmaskseparate) == (dummy_pfnglstencilmaskseparateproc as *const c_void) {&null::<PFNGLSTENCILMASKSEPARATEPROC>()} else {&self.stencilmaskseparate}})
34958			.field("stencilop", unsafe{if transmute::<_, *const c_void>(self.stencilop) == (dummy_pfnglstencilopproc as *const c_void) {&null::<PFNGLSTENCILOPPROC>()} else {&self.stencilop}})
34959			.field("stencilopseparate", unsafe{if transmute::<_, *const c_void>(self.stencilopseparate) == (dummy_pfnglstencilopseparateproc as *const c_void) {&null::<PFNGLSTENCILOPSEPARATEPROC>()} else {&self.stencilopseparate}})
34960			.field("teximage2d", unsafe{if transmute::<_, *const c_void>(self.teximage2d) == (dummy_pfnglteximage2dproc as *const c_void) {&null::<PFNGLTEXIMAGE2DPROC>()} else {&self.teximage2d}})
34961			.field("texparameterf", unsafe{if transmute::<_, *const c_void>(self.texparameterf) == (dummy_pfngltexparameterfproc as *const c_void) {&null::<PFNGLTEXPARAMETERFPROC>()} else {&self.texparameterf}})
34962			.field("texparameterfv", unsafe{if transmute::<_, *const c_void>(self.texparameterfv) == (dummy_pfngltexparameterfvproc as *const c_void) {&null::<PFNGLTEXPARAMETERFVPROC>()} else {&self.texparameterfv}})
34963			.field("texparameteri", unsafe{if transmute::<_, *const c_void>(self.texparameteri) == (dummy_pfngltexparameteriproc as *const c_void) {&null::<PFNGLTEXPARAMETERIPROC>()} else {&self.texparameteri}})
34964			.field("texparameteriv", unsafe{if transmute::<_, *const c_void>(self.texparameteriv) == (dummy_pfngltexparameterivproc as *const c_void) {&null::<PFNGLTEXPARAMETERIVPROC>()} else {&self.texparameteriv}})
34965			.field("texsubimage2d", unsafe{if transmute::<_, *const c_void>(self.texsubimage2d) == (dummy_pfngltexsubimage2dproc as *const c_void) {&null::<PFNGLTEXSUBIMAGE2DPROC>()} else {&self.texsubimage2d}})
34966			.field("uniform1f", unsafe{if transmute::<_, *const c_void>(self.uniform1f) == (dummy_pfngluniform1fproc as *const c_void) {&null::<PFNGLUNIFORM1FPROC>()} else {&self.uniform1f}})
34967			.field("uniform1fv", unsafe{if transmute::<_, *const c_void>(self.uniform1fv) == (dummy_pfngluniform1fvproc as *const c_void) {&null::<PFNGLUNIFORM1FVPROC>()} else {&self.uniform1fv}})
34968			.field("uniform1i", unsafe{if transmute::<_, *const c_void>(self.uniform1i) == (dummy_pfngluniform1iproc as *const c_void) {&null::<PFNGLUNIFORM1IPROC>()} else {&self.uniform1i}})
34969			.field("uniform1iv", unsafe{if transmute::<_, *const c_void>(self.uniform1iv) == (dummy_pfngluniform1ivproc as *const c_void) {&null::<PFNGLUNIFORM1IVPROC>()} else {&self.uniform1iv}})
34970			.field("uniform2f", unsafe{if transmute::<_, *const c_void>(self.uniform2f) == (dummy_pfngluniform2fproc as *const c_void) {&null::<PFNGLUNIFORM2FPROC>()} else {&self.uniform2f}})
34971			.field("uniform2fv", unsafe{if transmute::<_, *const c_void>(self.uniform2fv) == (dummy_pfngluniform2fvproc as *const c_void) {&null::<PFNGLUNIFORM2FVPROC>()} else {&self.uniform2fv}})
34972			.field("uniform2i", unsafe{if transmute::<_, *const c_void>(self.uniform2i) == (dummy_pfngluniform2iproc as *const c_void) {&null::<PFNGLUNIFORM2IPROC>()} else {&self.uniform2i}})
34973			.field("uniform2iv", unsafe{if transmute::<_, *const c_void>(self.uniform2iv) == (dummy_pfngluniform2ivproc as *const c_void) {&null::<PFNGLUNIFORM2IVPROC>()} else {&self.uniform2iv}})
34974			.field("uniform3f", unsafe{if transmute::<_, *const c_void>(self.uniform3f) == (dummy_pfngluniform3fproc as *const c_void) {&null::<PFNGLUNIFORM3FPROC>()} else {&self.uniform3f}})
34975			.field("uniform3fv", unsafe{if transmute::<_, *const c_void>(self.uniform3fv) == (dummy_pfngluniform3fvproc as *const c_void) {&null::<PFNGLUNIFORM3FVPROC>()} else {&self.uniform3fv}})
34976			.field("uniform3i", unsafe{if transmute::<_, *const c_void>(self.uniform3i) == (dummy_pfngluniform3iproc as *const c_void) {&null::<PFNGLUNIFORM3IPROC>()} else {&self.uniform3i}})
34977			.field("uniform3iv", unsafe{if transmute::<_, *const c_void>(self.uniform3iv) == (dummy_pfngluniform3ivproc as *const c_void) {&null::<PFNGLUNIFORM3IVPROC>()} else {&self.uniform3iv}})
34978			.field("uniform4f", unsafe{if transmute::<_, *const c_void>(self.uniform4f) == (dummy_pfngluniform4fproc as *const c_void) {&null::<PFNGLUNIFORM4FPROC>()} else {&self.uniform4f}})
34979			.field("uniform4fv", unsafe{if transmute::<_, *const c_void>(self.uniform4fv) == (dummy_pfngluniform4fvproc as *const c_void) {&null::<PFNGLUNIFORM4FVPROC>()} else {&self.uniform4fv}})
34980			.field("uniform4i", unsafe{if transmute::<_, *const c_void>(self.uniform4i) == (dummy_pfngluniform4iproc as *const c_void) {&null::<PFNGLUNIFORM4IPROC>()} else {&self.uniform4i}})
34981			.field("uniform4iv", unsafe{if transmute::<_, *const c_void>(self.uniform4iv) == (dummy_pfngluniform4ivproc as *const c_void) {&null::<PFNGLUNIFORM4IVPROC>()} else {&self.uniform4iv}})
34982			.field("uniformmatrix2fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix2fv) == (dummy_pfngluniformmatrix2fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX2FVPROC>()} else {&self.uniformmatrix2fv}})
34983			.field("uniformmatrix3fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix3fv) == (dummy_pfngluniformmatrix3fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX3FVPROC>()} else {&self.uniformmatrix3fv}})
34984			.field("uniformmatrix4fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix4fv) == (dummy_pfngluniformmatrix4fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX4FVPROC>()} else {&self.uniformmatrix4fv}})
34985			.field("useprogram", unsafe{if transmute::<_, *const c_void>(self.useprogram) == (dummy_pfngluseprogramproc as *const c_void) {&null::<PFNGLUSEPROGRAMPROC>()} else {&self.useprogram}})
34986			.field("validateprogram", unsafe{if transmute::<_, *const c_void>(self.validateprogram) == (dummy_pfnglvalidateprogramproc as *const c_void) {&null::<PFNGLVALIDATEPROGRAMPROC>()} else {&self.validateprogram}})
34987			.field("vertexattrib1f", unsafe{if transmute::<_, *const c_void>(self.vertexattrib1f) == (dummy_pfnglvertexattrib1fproc as *const c_void) {&null::<PFNGLVERTEXATTRIB1FPROC>()} else {&self.vertexattrib1f}})
34988			.field("vertexattrib1fv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib1fv) == (dummy_pfnglvertexattrib1fvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB1FVPROC>()} else {&self.vertexattrib1fv}})
34989			.field("vertexattrib2f", unsafe{if transmute::<_, *const c_void>(self.vertexattrib2f) == (dummy_pfnglvertexattrib2fproc as *const c_void) {&null::<PFNGLVERTEXATTRIB2FPROC>()} else {&self.vertexattrib2f}})
34990			.field("vertexattrib2fv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib2fv) == (dummy_pfnglvertexattrib2fvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB2FVPROC>()} else {&self.vertexattrib2fv}})
34991			.field("vertexattrib3f", unsafe{if transmute::<_, *const c_void>(self.vertexattrib3f) == (dummy_pfnglvertexattrib3fproc as *const c_void) {&null::<PFNGLVERTEXATTRIB3FPROC>()} else {&self.vertexattrib3f}})
34992			.field("vertexattrib3fv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib3fv) == (dummy_pfnglvertexattrib3fvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB3FVPROC>()} else {&self.vertexattrib3fv}})
34993			.field("vertexattrib4f", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4f) == (dummy_pfnglvertexattrib4fproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4FPROC>()} else {&self.vertexattrib4f}})
34994			.field("vertexattrib4fv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4fv) == (dummy_pfnglvertexattrib4fvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4FVPROC>()} else {&self.vertexattrib4fv}})
34995			.field("vertexattribpointer", unsafe{if transmute::<_, *const c_void>(self.vertexattribpointer) == (dummy_pfnglvertexattribpointerproc as *const c_void) {&null::<PFNGLVERTEXATTRIBPOINTERPROC>()} else {&self.vertexattribpointer}})
34996			.field("viewport", unsafe{if transmute::<_, *const c_void>(self.viewport) == (dummy_pfnglviewportproc as *const c_void) {&null::<PFNGLVIEWPORTPROC>()} else {&self.viewport}})
34997			.finish()
34998		} else {
34999			f.debug_struct("EsVersion20")
35000			.field("available", &self.available)
35001			.finish_non_exhaustive()
35002		}
35003	}
35004}
35005
35006
35007/// Functions from OpenGL ES version 3.0
35008pub trait ES_GL_3_0 {
35009	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetError.xhtml>
35010	fn glGetError(&self) -> GLenum;
35011
35012	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glReadBuffer.xhtml>
35013	fn glReadBuffer(&self, src: GLenum) -> Result<()>;
35014
35015	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawRangeElements.xhtml>
35016	fn glDrawRangeElements(&self, mode: GLenum, start: GLuint, end: GLuint, count: GLsizei, type_: GLenum, indices: *const c_void) -> Result<()>;
35017
35018	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexImage3D.xhtml>
35019	fn glTexImage3D(&self, target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
35020
35021	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexSubImage3D.xhtml>
35022	fn glTexSubImage3D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
35023
35024	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCopyTexSubImage3D.xhtml>
35025	fn glCopyTexSubImage3D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
35026
35027	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCompressedTexImage3D.xhtml>
35028	fn glCompressedTexImage3D(&self, target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, imageSize: GLsizei, data: *const c_void) -> Result<()>;
35029
35030	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCompressedTexSubImage3D.xhtml>
35031	fn glCompressedTexSubImage3D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()>;
35032
35033	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenQueries.xhtml>
35034	fn glGenQueries(&self, n: GLsizei, ids: *mut GLuint) -> Result<()>;
35035
35036	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteQueries.xhtml>
35037	fn glDeleteQueries(&self, n: GLsizei, ids: *const GLuint) -> Result<()>;
35038
35039	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsQuery.xhtml>
35040	fn glIsQuery(&self, id: GLuint) -> Result<GLboolean>;
35041
35042	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBeginQuery.xhtml>
35043	fn glBeginQuery(&self, target: GLenum, id: GLuint) -> Result<()>;
35044
35045	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glEndQuery.xhtml>
35046	fn glEndQuery(&self, target: GLenum) -> Result<()>;
35047
35048	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetQueryiv.xhtml>
35049	fn glGetQueryiv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
35050
35051	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetQueryObjectuiv.xhtml>
35052	fn glGetQueryObjectuiv(&self, id: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()>;
35053
35054	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUnmapBuffer.xhtml>
35055	fn glUnmapBuffer(&self, target: GLenum) -> Result<GLboolean>;
35056
35057	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetBufferPointerv.xhtml>
35058	fn glGetBufferPointerv(&self, target: GLenum, pname: GLenum, params: *mut *mut c_void) -> Result<()>;
35059
35060	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawBuffers.xhtml>
35061	fn glDrawBuffers(&self, n: GLsizei, bufs: *const GLenum) -> Result<()>;
35062
35063	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix2x3fv.xhtml>
35064	fn glUniformMatrix2x3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
35065
35066	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix3x2fv.xhtml>
35067	fn glUniformMatrix3x2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
35068
35069	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix2x4fv.xhtml>
35070	fn glUniformMatrix2x4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
35071
35072	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix4x2fv.xhtml>
35073	fn glUniformMatrix4x2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
35074
35075	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix3x4fv.xhtml>
35076	fn glUniformMatrix3x4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
35077
35078	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix4x3fv.xhtml>
35079	fn glUniformMatrix4x3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
35080
35081	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlitFramebuffer.xhtml>
35082	fn glBlitFramebuffer(&self, srcX0: GLint, srcY0: GLint, srcX1: GLint, srcY1: GLint, dstX0: GLint, dstY0: GLint, dstX1: GLint, dstY1: GLint, mask: GLbitfield, filter: GLenum) -> Result<()>;
35083
35084	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glRenderbufferStorageMultisample.xhtml>
35085	fn glRenderbufferStorageMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()>;
35086
35087	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFramebufferTextureLayer.xhtml>
35088	fn glFramebufferTextureLayer(&self, target: GLenum, attachment: GLenum, texture: GLuint, level: GLint, layer: GLint) -> Result<()>;
35089
35090	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glMapBufferRange.xhtml>
35091	fn glMapBufferRange(&self, target: GLenum, offset: GLintptr, length: GLsizeiptr, access: GLbitfield) -> Result<*mut c_void>;
35092
35093	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFlushMappedBufferRange.xhtml>
35094	fn glFlushMappedBufferRange(&self, target: GLenum, offset: GLintptr, length: GLsizeiptr) -> Result<()>;
35095
35096	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindVertexArray.xhtml>
35097	fn glBindVertexArray(&self, array: GLuint) -> Result<()>;
35098
35099	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteVertexArrays.xhtml>
35100	fn glDeleteVertexArrays(&self, n: GLsizei, arrays: *const GLuint) -> Result<()>;
35101
35102	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenVertexArrays.xhtml>
35103	fn glGenVertexArrays(&self, n: GLsizei, arrays: *mut GLuint) -> Result<()>;
35104
35105	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsVertexArray.xhtml>
35106	fn glIsVertexArray(&self, array: GLuint) -> Result<GLboolean>;
35107
35108	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetIntegeri_v.xhtml>
35109	fn glGetIntegeri_v(&self, target: GLenum, index: GLuint, data: *mut GLint) -> Result<()>;
35110
35111	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBeginTransformFeedback.xhtml>
35112	fn glBeginTransformFeedback(&self, primitiveMode: GLenum) -> Result<()>;
35113
35114	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glEndTransformFeedback.xhtml>
35115	fn glEndTransformFeedback(&self) -> Result<()>;
35116
35117	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindBufferRange.xhtml>
35118	fn glBindBufferRange(&self, target: GLenum, index: GLuint, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()>;
35119
35120	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindBufferBase.xhtml>
35121	fn glBindBufferBase(&self, target: GLenum, index: GLuint, buffer: GLuint) -> Result<()>;
35122
35123	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTransformFeedbackVaryings.xhtml>
35124	fn glTransformFeedbackVaryings(&self, program: GLuint, count: GLsizei, varyings: *const *const GLchar, bufferMode: GLenum) -> Result<()>;
35125
35126	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetTransformFeedbackVarying.xhtml>
35127	fn glGetTransformFeedbackVarying(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLsizei, type_: *mut GLenum, name: *mut GLchar) -> Result<()>;
35128
35129	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribIPointer.xhtml>
35130	fn glVertexAttribIPointer(&self, index: GLuint, size: GLint, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()>;
35131
35132	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetVertexAttribIiv.xhtml>
35133	fn glGetVertexAttribIiv(&self, index: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
35134
35135	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetVertexAttribIuiv.xhtml>
35136	fn glGetVertexAttribIuiv(&self, index: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()>;
35137
35138	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribI4i.xhtml>
35139	fn glVertexAttribI4i(&self, index: GLuint, x: GLint, y: GLint, z: GLint, w: GLint) -> Result<()>;
35140
35141	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribI4ui.xhtml>
35142	fn glVertexAttribI4ui(&self, index: GLuint, x: GLuint, y: GLuint, z: GLuint, w: GLuint) -> Result<()>;
35143
35144	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribI4iv.xhtml>
35145	fn glVertexAttribI4iv(&self, index: GLuint, v: *const GLint) -> Result<()>;
35146
35147	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribI4uiv.xhtml>
35148	fn glVertexAttribI4uiv(&self, index: GLuint, v: *const GLuint) -> Result<()>;
35149
35150	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetUniformuiv.xhtml>
35151	fn glGetUniformuiv(&self, program: GLuint, location: GLint, params: *mut GLuint) -> Result<()>;
35152
35153	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetFragDataLocation.xhtml>
35154	fn glGetFragDataLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint>;
35155
35156	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform1ui.xhtml>
35157	fn glUniform1ui(&self, location: GLint, v0: GLuint) -> Result<()>;
35158
35159	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform2ui.xhtml>
35160	fn glUniform2ui(&self, location: GLint, v0: GLuint, v1: GLuint) -> Result<()>;
35161
35162	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform3ui.xhtml>
35163	fn glUniform3ui(&self, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint) -> Result<()>;
35164
35165	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform4ui.xhtml>
35166	fn glUniform4ui(&self, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint, v3: GLuint) -> Result<()>;
35167
35168	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform1uiv.xhtml>
35169	fn glUniform1uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
35170
35171	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform2uiv.xhtml>
35172	fn glUniform2uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
35173
35174	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform3uiv.xhtml>
35175	fn glUniform3uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
35176
35177	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform4uiv.xhtml>
35178	fn glUniform4uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
35179
35180	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClearBufferiv.xhtml>
35181	fn glClearBufferiv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLint) -> Result<()>;
35182
35183	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClearBufferuiv.xhtml>
35184	fn glClearBufferuiv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLuint) -> Result<()>;
35185
35186	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClearBufferfv.xhtml>
35187	fn glClearBufferfv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLfloat) -> Result<()>;
35188
35189	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClearBufferfi.xhtml>
35190	fn glClearBufferfi(&self, buffer: GLenum, drawbuffer: GLint, depth: GLfloat, stencil: GLint) -> Result<()>;
35191
35192	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetStringi.xhtml>
35193	fn glGetStringi(&self, name: GLenum, index: GLuint) -> Result<&'static str>;
35194
35195	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCopyBufferSubData.xhtml>
35196	fn glCopyBufferSubData(&self, readTarget: GLenum, writeTarget: GLenum, readOffset: GLintptr, writeOffset: GLintptr, size: GLsizeiptr) -> Result<()>;
35197
35198	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetUniformIndices.xhtml>
35199	fn glGetUniformIndices(&self, program: GLuint, uniformCount: GLsizei, uniformNames: *const *const GLchar, uniformIndices: *mut GLuint) -> Result<()>;
35200
35201	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetActiveUniformsiv.xhtml>
35202	fn glGetActiveUniformsiv(&self, program: GLuint, uniformCount: GLsizei, uniformIndices: *const GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
35203
35204	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetUniformBlockIndex.xhtml>
35205	fn glGetUniformBlockIndex(&self, program: GLuint, uniformBlockName: *const GLchar) -> Result<GLuint>;
35206
35207	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetActiveUniformBlockiv.xhtml>
35208	fn glGetActiveUniformBlockiv(&self, program: GLuint, uniformBlockIndex: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
35209
35210	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetActiveUniformBlockName.xhtml>
35211	fn glGetActiveUniformBlockName(&self, program: GLuint, uniformBlockIndex: GLuint, bufSize: GLsizei, length: *mut GLsizei, uniformBlockName: *mut GLchar) -> Result<()>;
35212
35213	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformBlockBinding.xhtml>
35214	fn glUniformBlockBinding(&self, program: GLuint, uniformBlockIndex: GLuint, uniformBlockBinding: GLuint) -> Result<()>;
35215
35216	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawArraysInstanced.xhtml>
35217	fn glDrawArraysInstanced(&self, mode: GLenum, first: GLint, count: GLsizei, instancecount: GLsizei) -> Result<()>;
35218
35219	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawElementsInstanced.xhtml>
35220	fn glDrawElementsInstanced(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei) -> Result<()>;
35221
35222	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFenceSync.xhtml>
35223	fn glFenceSync(&self, condition: GLenum, flags: GLbitfield) -> Result<GLsync>;
35224
35225	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsSync.xhtml>
35226	fn glIsSync(&self, sync: GLsync) -> Result<GLboolean>;
35227
35228	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteSync.xhtml>
35229	fn glDeleteSync(&self, sync: GLsync) -> Result<()>;
35230
35231	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClientWaitSync.xhtml>
35232	fn glClientWaitSync(&self, sync: GLsync, flags: GLbitfield, timeout: GLuint64) -> Result<GLenum>;
35233
35234	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glWaitSync.xhtml>
35235	fn glWaitSync(&self, sync: GLsync, flags: GLbitfield, timeout: GLuint64) -> Result<()>;
35236
35237	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetInteger64v.xhtml>
35238	fn glGetInteger64v(&self, pname: GLenum, data: *mut GLint64) -> Result<()>;
35239
35240	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetSynciv.xhtml>
35241	fn glGetSynciv(&self, sync: GLsync, pname: GLenum, bufSize: GLsizei, length: *mut GLsizei, values: *mut GLint) -> Result<()>;
35242
35243	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetInteger64i_v.xhtml>
35244	fn glGetInteger64i_v(&self, target: GLenum, index: GLuint, data: *mut GLint64) -> Result<()>;
35245
35246	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetBufferParameteri64v.xhtml>
35247	fn glGetBufferParameteri64v(&self, target: GLenum, pname: GLenum, params: *mut GLint64) -> Result<()>;
35248
35249	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenSamplers.xhtml>
35250	fn glGenSamplers(&self, count: GLsizei, samplers: *mut GLuint) -> Result<()>;
35251
35252	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteSamplers.xhtml>
35253	fn glDeleteSamplers(&self, count: GLsizei, samplers: *const GLuint) -> Result<()>;
35254
35255	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsSampler.xhtml>
35256	fn glIsSampler(&self, sampler: GLuint) -> Result<GLboolean>;
35257
35258	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindSampler.xhtml>
35259	fn glBindSampler(&self, unit: GLuint, sampler: GLuint) -> Result<()>;
35260
35261	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glSamplerParameteri.xhtml>
35262	fn glSamplerParameteri(&self, sampler: GLuint, pname: GLenum, param: GLint) -> Result<()>;
35263
35264	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glSamplerParameteriv.xhtml>
35265	fn glSamplerParameteriv(&self, sampler: GLuint, pname: GLenum, param: *const GLint) -> Result<()>;
35266
35267	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glSamplerParameterf.xhtml>
35268	fn glSamplerParameterf(&self, sampler: GLuint, pname: GLenum, param: GLfloat) -> Result<()>;
35269
35270	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glSamplerParameterfv.xhtml>
35271	fn glSamplerParameterfv(&self, sampler: GLuint, pname: GLenum, param: *const GLfloat) -> Result<()>;
35272
35273	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetSamplerParameteriv.xhtml>
35274	fn glGetSamplerParameteriv(&self, sampler: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
35275
35276	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetSamplerParameterfv.xhtml>
35277	fn glGetSamplerParameterfv(&self, sampler: GLuint, pname: GLenum, params: *mut GLfloat) -> Result<()>;
35278
35279	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribDivisor.xhtml>
35280	fn glVertexAttribDivisor(&self, index: GLuint, divisor: GLuint) -> Result<()>;
35281
35282	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindTransformFeedback.xhtml>
35283	fn glBindTransformFeedback(&self, target: GLenum, id: GLuint) -> Result<()>;
35284
35285	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteTransformFeedbacks.xhtml>
35286	fn glDeleteTransformFeedbacks(&self, n: GLsizei, ids: *const GLuint) -> Result<()>;
35287
35288	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenTransformFeedbacks.xhtml>
35289	fn glGenTransformFeedbacks(&self, n: GLsizei, ids: *mut GLuint) -> Result<()>;
35290
35291	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsTransformFeedback.xhtml>
35292	fn glIsTransformFeedback(&self, id: GLuint) -> Result<GLboolean>;
35293
35294	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glPauseTransformFeedback.xhtml>
35295	fn glPauseTransformFeedback(&self) -> Result<()>;
35296
35297	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glResumeTransformFeedback.xhtml>
35298	fn glResumeTransformFeedback(&self) -> Result<()>;
35299
35300	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramBinary.xhtml>
35301	fn glGetProgramBinary(&self, program: GLuint, bufSize: GLsizei, length: *mut GLsizei, binaryFormat: *mut GLenum, binary: *mut c_void) -> Result<()>;
35302
35303	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramBinary.xhtml>
35304	fn glProgramBinary(&self, program: GLuint, binaryFormat: GLenum, binary: *const c_void, length: GLsizei) -> Result<()>;
35305
35306	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramParameteri.xhtml>
35307	fn glProgramParameteri(&self, program: GLuint, pname: GLenum, value: GLint) -> Result<()>;
35308
35309	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glInvalidateFramebuffer.xhtml>
35310	fn glInvalidateFramebuffer(&self, target: GLenum, numAttachments: GLsizei, attachments: *const GLenum) -> Result<()>;
35311
35312	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glInvalidateSubFramebuffer.xhtml>
35313	fn glInvalidateSubFramebuffer(&self, target: GLenum, numAttachments: GLsizei, attachments: *const GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
35314
35315	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexStorage2D.xhtml>
35316	fn glTexStorage2D(&self, target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()>;
35317
35318	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexStorage3D.xhtml>
35319	fn glTexStorage3D(&self, target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei) -> Result<()>;
35320
35321	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetInternalformativ.xhtml>
35322	fn glGetInternalformativ(&self, target: GLenum, internalformat: GLenum, pname: GLenum, bufSize: GLsizei, params: *mut GLint) -> Result<()>;
35323}
35324/// Functions from OpenGL ES version 3.0
35325#[derive(Clone, Copy, PartialEq, Eq, Hash)]
35326pub struct EsVersion30 {
35327	/// Is OpenGL ES version 3.0 available
35328	available: bool,
35329
35330	/// The function pointer to `glGetError()`
35331	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetError.xhtml>
35332	pub geterror: PFNGLGETERRORPROC,
35333
35334	/// The function pointer to `glReadBuffer()`
35335	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glReadBuffer.xhtml>
35336	pub readbuffer: PFNGLREADBUFFERPROC,
35337
35338	/// The function pointer to `glDrawRangeElements()`
35339	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawRangeElements.xhtml>
35340	pub drawrangeelements: PFNGLDRAWRANGEELEMENTSPROC,
35341
35342	/// The function pointer to `glTexImage3D()`
35343	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexImage3D.xhtml>
35344	pub teximage3d: PFNGLTEXIMAGE3DPROC,
35345
35346	/// The function pointer to `glTexSubImage3D()`
35347	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexSubImage3D.xhtml>
35348	pub texsubimage3d: PFNGLTEXSUBIMAGE3DPROC,
35349
35350	/// The function pointer to `glCopyTexSubImage3D()`
35351	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCopyTexSubImage3D.xhtml>
35352	pub copytexsubimage3d: PFNGLCOPYTEXSUBIMAGE3DPROC,
35353
35354	/// The function pointer to `glCompressedTexImage3D()`
35355	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCompressedTexImage3D.xhtml>
35356	pub compressedteximage3d: PFNGLCOMPRESSEDTEXIMAGE3DPROC,
35357
35358	/// The function pointer to `glCompressedTexSubImage3D()`
35359	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCompressedTexSubImage3D.xhtml>
35360	pub compressedtexsubimage3d: PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC,
35361
35362	/// The function pointer to `glGenQueries()`
35363	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenQueries.xhtml>
35364	pub genqueries: PFNGLGENQUERIESPROC,
35365
35366	/// The function pointer to `glDeleteQueries()`
35367	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteQueries.xhtml>
35368	pub deletequeries: PFNGLDELETEQUERIESPROC,
35369
35370	/// The function pointer to `glIsQuery()`
35371	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsQuery.xhtml>
35372	pub isquery: PFNGLISQUERYPROC,
35373
35374	/// The function pointer to `glBeginQuery()`
35375	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBeginQuery.xhtml>
35376	pub beginquery: PFNGLBEGINQUERYPROC,
35377
35378	/// The function pointer to `glEndQuery()`
35379	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glEndQuery.xhtml>
35380	pub endquery: PFNGLENDQUERYPROC,
35381
35382	/// The function pointer to `glGetQueryiv()`
35383	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetQueryiv.xhtml>
35384	pub getqueryiv: PFNGLGETQUERYIVPROC,
35385
35386	/// The function pointer to `glGetQueryObjectuiv()`
35387	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetQueryObjectuiv.xhtml>
35388	pub getqueryobjectuiv: PFNGLGETQUERYOBJECTUIVPROC,
35389
35390	/// The function pointer to `glUnmapBuffer()`
35391	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUnmapBuffer.xhtml>
35392	pub unmapbuffer: PFNGLUNMAPBUFFERPROC,
35393
35394	/// The function pointer to `glGetBufferPointerv()`
35395	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetBufferPointerv.xhtml>
35396	pub getbufferpointerv: PFNGLGETBUFFERPOINTERVPROC,
35397
35398	/// The function pointer to `glDrawBuffers()`
35399	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawBuffers.xhtml>
35400	pub drawbuffers: PFNGLDRAWBUFFERSPROC,
35401
35402	/// The function pointer to `glUniformMatrix2x3fv()`
35403	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix2x3fv.xhtml>
35404	pub uniformmatrix2x3fv: PFNGLUNIFORMMATRIX2X3FVPROC,
35405
35406	/// The function pointer to `glUniformMatrix3x2fv()`
35407	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix3x2fv.xhtml>
35408	pub uniformmatrix3x2fv: PFNGLUNIFORMMATRIX3X2FVPROC,
35409
35410	/// The function pointer to `glUniformMatrix2x4fv()`
35411	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix2x4fv.xhtml>
35412	pub uniformmatrix2x4fv: PFNGLUNIFORMMATRIX2X4FVPROC,
35413
35414	/// The function pointer to `glUniformMatrix4x2fv()`
35415	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix4x2fv.xhtml>
35416	pub uniformmatrix4x2fv: PFNGLUNIFORMMATRIX4X2FVPROC,
35417
35418	/// The function pointer to `glUniformMatrix3x4fv()`
35419	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix3x4fv.xhtml>
35420	pub uniformmatrix3x4fv: PFNGLUNIFORMMATRIX3X4FVPROC,
35421
35422	/// The function pointer to `glUniformMatrix4x3fv()`
35423	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix4x3fv.xhtml>
35424	pub uniformmatrix4x3fv: PFNGLUNIFORMMATRIX4X3FVPROC,
35425
35426	/// The function pointer to `glBlitFramebuffer()`
35427	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlitFramebuffer.xhtml>
35428	pub blitframebuffer: PFNGLBLITFRAMEBUFFERPROC,
35429
35430	/// The function pointer to `glRenderbufferStorageMultisample()`
35431	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glRenderbufferStorageMultisample.xhtml>
35432	pub renderbufferstoragemultisample: PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC,
35433
35434	/// The function pointer to `glFramebufferTextureLayer()`
35435	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFramebufferTextureLayer.xhtml>
35436	pub framebuffertexturelayer: PFNGLFRAMEBUFFERTEXTURELAYERPROC,
35437
35438	/// The function pointer to `glMapBufferRange()`
35439	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glMapBufferRange.xhtml>
35440	pub mapbufferrange: PFNGLMAPBUFFERRANGEPROC,
35441
35442	/// The function pointer to `glFlushMappedBufferRange()`
35443	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFlushMappedBufferRange.xhtml>
35444	pub flushmappedbufferrange: PFNGLFLUSHMAPPEDBUFFERRANGEPROC,
35445
35446	/// The function pointer to `glBindVertexArray()`
35447	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindVertexArray.xhtml>
35448	pub bindvertexarray: PFNGLBINDVERTEXARRAYPROC,
35449
35450	/// The function pointer to `glDeleteVertexArrays()`
35451	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteVertexArrays.xhtml>
35452	pub deletevertexarrays: PFNGLDELETEVERTEXARRAYSPROC,
35453
35454	/// The function pointer to `glGenVertexArrays()`
35455	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenVertexArrays.xhtml>
35456	pub genvertexarrays: PFNGLGENVERTEXARRAYSPROC,
35457
35458	/// The function pointer to `glIsVertexArray()`
35459	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsVertexArray.xhtml>
35460	pub isvertexarray: PFNGLISVERTEXARRAYPROC,
35461
35462	/// The function pointer to `glGetIntegeri_v()`
35463	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetIntegeri_v.xhtml>
35464	pub getintegeri_v: PFNGLGETINTEGERI_VPROC,
35465
35466	/// The function pointer to `glBeginTransformFeedback()`
35467	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBeginTransformFeedback.xhtml>
35468	pub begintransformfeedback: PFNGLBEGINTRANSFORMFEEDBACKPROC,
35469
35470	/// The function pointer to `glEndTransformFeedback()`
35471	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glEndTransformFeedback.xhtml>
35472	pub endtransformfeedback: PFNGLENDTRANSFORMFEEDBACKPROC,
35473
35474	/// The function pointer to `glBindBufferRange()`
35475	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindBufferRange.xhtml>
35476	pub bindbufferrange: PFNGLBINDBUFFERRANGEPROC,
35477
35478	/// The function pointer to `glBindBufferBase()`
35479	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindBufferBase.xhtml>
35480	pub bindbufferbase: PFNGLBINDBUFFERBASEPROC,
35481
35482	/// The function pointer to `glTransformFeedbackVaryings()`
35483	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTransformFeedbackVaryings.xhtml>
35484	pub transformfeedbackvaryings: PFNGLTRANSFORMFEEDBACKVARYINGSPROC,
35485
35486	/// The function pointer to `glGetTransformFeedbackVarying()`
35487	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetTransformFeedbackVarying.xhtml>
35488	pub gettransformfeedbackvarying: PFNGLGETTRANSFORMFEEDBACKVARYINGPROC,
35489
35490	/// The function pointer to `glVertexAttribIPointer()`
35491	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribIPointer.xhtml>
35492	pub vertexattribipointer: PFNGLVERTEXATTRIBIPOINTERPROC,
35493
35494	/// The function pointer to `glGetVertexAttribIiv()`
35495	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetVertexAttribIiv.xhtml>
35496	pub getvertexattribiiv: PFNGLGETVERTEXATTRIBIIVPROC,
35497
35498	/// The function pointer to `glGetVertexAttribIuiv()`
35499	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetVertexAttribIuiv.xhtml>
35500	pub getvertexattribiuiv: PFNGLGETVERTEXATTRIBIUIVPROC,
35501
35502	/// The function pointer to `glVertexAttribI4i()`
35503	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribI4i.xhtml>
35504	pub vertexattribi4i: PFNGLVERTEXATTRIBI4IPROC,
35505
35506	/// The function pointer to `glVertexAttribI4ui()`
35507	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribI4ui.xhtml>
35508	pub vertexattribi4ui: PFNGLVERTEXATTRIBI4UIPROC,
35509
35510	/// The function pointer to `glVertexAttribI4iv()`
35511	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribI4iv.xhtml>
35512	pub vertexattribi4iv: PFNGLVERTEXATTRIBI4IVPROC,
35513
35514	/// The function pointer to `glVertexAttribI4uiv()`
35515	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribI4uiv.xhtml>
35516	pub vertexattribi4uiv: PFNGLVERTEXATTRIBI4UIVPROC,
35517
35518	/// The function pointer to `glGetUniformuiv()`
35519	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetUniformuiv.xhtml>
35520	pub getuniformuiv: PFNGLGETUNIFORMUIVPROC,
35521
35522	/// The function pointer to `glGetFragDataLocation()`
35523	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetFragDataLocation.xhtml>
35524	pub getfragdatalocation: PFNGLGETFRAGDATALOCATIONPROC,
35525
35526	/// The function pointer to `glUniform1ui()`
35527	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform1ui.xhtml>
35528	pub uniform1ui: PFNGLUNIFORM1UIPROC,
35529
35530	/// The function pointer to `glUniform2ui()`
35531	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform2ui.xhtml>
35532	pub uniform2ui: PFNGLUNIFORM2UIPROC,
35533
35534	/// The function pointer to `glUniform3ui()`
35535	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform3ui.xhtml>
35536	pub uniform3ui: PFNGLUNIFORM3UIPROC,
35537
35538	/// The function pointer to `glUniform4ui()`
35539	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform4ui.xhtml>
35540	pub uniform4ui: PFNGLUNIFORM4UIPROC,
35541
35542	/// The function pointer to `glUniform1uiv()`
35543	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform1uiv.xhtml>
35544	pub uniform1uiv: PFNGLUNIFORM1UIVPROC,
35545
35546	/// The function pointer to `glUniform2uiv()`
35547	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform2uiv.xhtml>
35548	pub uniform2uiv: PFNGLUNIFORM2UIVPROC,
35549
35550	/// The function pointer to `glUniform3uiv()`
35551	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform3uiv.xhtml>
35552	pub uniform3uiv: PFNGLUNIFORM3UIVPROC,
35553
35554	/// The function pointer to `glUniform4uiv()`
35555	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform4uiv.xhtml>
35556	pub uniform4uiv: PFNGLUNIFORM4UIVPROC,
35557
35558	/// The function pointer to `glClearBufferiv()`
35559	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClearBufferiv.xhtml>
35560	pub clearbufferiv: PFNGLCLEARBUFFERIVPROC,
35561
35562	/// The function pointer to `glClearBufferuiv()`
35563	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClearBufferuiv.xhtml>
35564	pub clearbufferuiv: PFNGLCLEARBUFFERUIVPROC,
35565
35566	/// The function pointer to `glClearBufferfv()`
35567	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClearBufferfv.xhtml>
35568	pub clearbufferfv: PFNGLCLEARBUFFERFVPROC,
35569
35570	/// The function pointer to `glClearBufferfi()`
35571	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClearBufferfi.xhtml>
35572	pub clearbufferfi: PFNGLCLEARBUFFERFIPROC,
35573
35574	/// The function pointer to `glGetStringi()`
35575	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetStringi.xhtml>
35576	pub getstringi: PFNGLGETSTRINGIPROC,
35577
35578	/// The function pointer to `glCopyBufferSubData()`
35579	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCopyBufferSubData.xhtml>
35580	pub copybuffersubdata: PFNGLCOPYBUFFERSUBDATAPROC,
35581
35582	/// The function pointer to `glGetUniformIndices()`
35583	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetUniformIndices.xhtml>
35584	pub getuniformindices: PFNGLGETUNIFORMINDICESPROC,
35585
35586	/// The function pointer to `glGetActiveUniformsiv()`
35587	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetActiveUniformsiv.xhtml>
35588	pub getactiveuniformsiv: PFNGLGETACTIVEUNIFORMSIVPROC,
35589
35590	/// The function pointer to `glGetUniformBlockIndex()`
35591	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetUniformBlockIndex.xhtml>
35592	pub getuniformblockindex: PFNGLGETUNIFORMBLOCKINDEXPROC,
35593
35594	/// The function pointer to `glGetActiveUniformBlockiv()`
35595	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetActiveUniformBlockiv.xhtml>
35596	pub getactiveuniformblockiv: PFNGLGETACTIVEUNIFORMBLOCKIVPROC,
35597
35598	/// The function pointer to `glGetActiveUniformBlockName()`
35599	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetActiveUniformBlockName.xhtml>
35600	pub getactiveuniformblockname: PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC,
35601
35602	/// The function pointer to `glUniformBlockBinding()`
35603	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformBlockBinding.xhtml>
35604	pub uniformblockbinding: PFNGLUNIFORMBLOCKBINDINGPROC,
35605
35606	/// The function pointer to `glDrawArraysInstanced()`
35607	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawArraysInstanced.xhtml>
35608	pub drawarraysinstanced: PFNGLDRAWARRAYSINSTANCEDPROC,
35609
35610	/// The function pointer to `glDrawElementsInstanced()`
35611	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawElementsInstanced.xhtml>
35612	pub drawelementsinstanced: PFNGLDRAWELEMENTSINSTANCEDPROC,
35613
35614	/// The function pointer to `glFenceSync()`
35615	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFenceSync.xhtml>
35616	pub fencesync: PFNGLFENCESYNCPROC,
35617
35618	/// The function pointer to `glIsSync()`
35619	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsSync.xhtml>
35620	pub issync: PFNGLISSYNCPROC,
35621
35622	/// The function pointer to `glDeleteSync()`
35623	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteSync.xhtml>
35624	pub deletesync: PFNGLDELETESYNCPROC,
35625
35626	/// The function pointer to `glClientWaitSync()`
35627	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClientWaitSync.xhtml>
35628	pub clientwaitsync: PFNGLCLIENTWAITSYNCPROC,
35629
35630	/// The function pointer to `glWaitSync()`
35631	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glWaitSync.xhtml>
35632	pub waitsync: PFNGLWAITSYNCPROC,
35633
35634	/// The function pointer to `glGetInteger64v()`
35635	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetInteger64v.xhtml>
35636	pub getinteger64v: PFNGLGETINTEGER64VPROC,
35637
35638	/// The function pointer to `glGetSynciv()`
35639	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetSynciv.xhtml>
35640	pub getsynciv: PFNGLGETSYNCIVPROC,
35641
35642	/// The function pointer to `glGetInteger64i_v()`
35643	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetInteger64i_v.xhtml>
35644	pub getinteger64i_v: PFNGLGETINTEGER64I_VPROC,
35645
35646	/// The function pointer to `glGetBufferParameteri64v()`
35647	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetBufferParameteri64v.xhtml>
35648	pub getbufferparameteri64v: PFNGLGETBUFFERPARAMETERI64VPROC,
35649
35650	/// The function pointer to `glGenSamplers()`
35651	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenSamplers.xhtml>
35652	pub gensamplers: PFNGLGENSAMPLERSPROC,
35653
35654	/// The function pointer to `glDeleteSamplers()`
35655	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteSamplers.xhtml>
35656	pub deletesamplers: PFNGLDELETESAMPLERSPROC,
35657
35658	/// The function pointer to `glIsSampler()`
35659	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsSampler.xhtml>
35660	pub issampler: PFNGLISSAMPLERPROC,
35661
35662	/// The function pointer to `glBindSampler()`
35663	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindSampler.xhtml>
35664	pub bindsampler: PFNGLBINDSAMPLERPROC,
35665
35666	/// The function pointer to `glSamplerParameteri()`
35667	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glSamplerParameteri.xhtml>
35668	pub samplerparameteri: PFNGLSAMPLERPARAMETERIPROC,
35669
35670	/// The function pointer to `glSamplerParameteriv()`
35671	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glSamplerParameteriv.xhtml>
35672	pub samplerparameteriv: PFNGLSAMPLERPARAMETERIVPROC,
35673
35674	/// The function pointer to `glSamplerParameterf()`
35675	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glSamplerParameterf.xhtml>
35676	pub samplerparameterf: PFNGLSAMPLERPARAMETERFPROC,
35677
35678	/// The function pointer to `glSamplerParameterfv()`
35679	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glSamplerParameterfv.xhtml>
35680	pub samplerparameterfv: PFNGLSAMPLERPARAMETERFVPROC,
35681
35682	/// The function pointer to `glGetSamplerParameteriv()`
35683	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetSamplerParameteriv.xhtml>
35684	pub getsamplerparameteriv: PFNGLGETSAMPLERPARAMETERIVPROC,
35685
35686	/// The function pointer to `glGetSamplerParameterfv()`
35687	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetSamplerParameterfv.xhtml>
35688	pub getsamplerparameterfv: PFNGLGETSAMPLERPARAMETERFVPROC,
35689
35690	/// The function pointer to `glVertexAttribDivisor()`
35691	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribDivisor.xhtml>
35692	pub vertexattribdivisor: PFNGLVERTEXATTRIBDIVISORPROC,
35693
35694	/// The function pointer to `glBindTransformFeedback()`
35695	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindTransformFeedback.xhtml>
35696	pub bindtransformfeedback: PFNGLBINDTRANSFORMFEEDBACKPROC,
35697
35698	/// The function pointer to `glDeleteTransformFeedbacks()`
35699	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteTransformFeedbacks.xhtml>
35700	pub deletetransformfeedbacks: PFNGLDELETETRANSFORMFEEDBACKSPROC,
35701
35702	/// The function pointer to `glGenTransformFeedbacks()`
35703	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenTransformFeedbacks.xhtml>
35704	pub gentransformfeedbacks: PFNGLGENTRANSFORMFEEDBACKSPROC,
35705
35706	/// The function pointer to `glIsTransformFeedback()`
35707	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsTransformFeedback.xhtml>
35708	pub istransformfeedback: PFNGLISTRANSFORMFEEDBACKPROC,
35709
35710	/// The function pointer to `glPauseTransformFeedback()`
35711	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glPauseTransformFeedback.xhtml>
35712	pub pausetransformfeedback: PFNGLPAUSETRANSFORMFEEDBACKPROC,
35713
35714	/// The function pointer to `glResumeTransformFeedback()`
35715	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glResumeTransformFeedback.xhtml>
35716	pub resumetransformfeedback: PFNGLRESUMETRANSFORMFEEDBACKPROC,
35717
35718	/// The function pointer to `glGetProgramBinary()`
35719	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramBinary.xhtml>
35720	pub getprogrambinary: PFNGLGETPROGRAMBINARYPROC,
35721
35722	/// The function pointer to `glProgramBinary()`
35723	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramBinary.xhtml>
35724	pub programbinary: PFNGLPROGRAMBINARYPROC,
35725
35726	/// The function pointer to `glProgramParameteri()`
35727	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramParameteri.xhtml>
35728	pub programparameteri: PFNGLPROGRAMPARAMETERIPROC,
35729
35730	/// The function pointer to `glInvalidateFramebuffer()`
35731	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glInvalidateFramebuffer.xhtml>
35732	pub invalidateframebuffer: PFNGLINVALIDATEFRAMEBUFFERPROC,
35733
35734	/// The function pointer to `glInvalidateSubFramebuffer()`
35735	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glInvalidateSubFramebuffer.xhtml>
35736	pub invalidatesubframebuffer: PFNGLINVALIDATESUBFRAMEBUFFERPROC,
35737
35738	/// The function pointer to `glTexStorage2D()`
35739	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexStorage2D.xhtml>
35740	pub texstorage2d: PFNGLTEXSTORAGE2DPROC,
35741
35742	/// The function pointer to `glTexStorage3D()`
35743	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexStorage3D.xhtml>
35744	pub texstorage3d: PFNGLTEXSTORAGE3DPROC,
35745
35746	/// The function pointer to `glGetInternalformativ()`
35747	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetInternalformativ.xhtml>
35748	pub getinternalformativ: PFNGLGETINTERNALFORMATIVPROC,
35749}
35750
35751impl ES_GL_3_0 for EsVersion30 {
35752	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetError.xhtml>
35753	#[inline(always)]
35754	fn glGetError(&self) -> GLenum {
35755		(self.geterror)()
35756	}
35757	#[inline(always)]
35758	fn glReadBuffer(&self, src: GLenum) -> Result<()> {
35759		#[cfg(feature = "catch_nullptr")]
35760		let ret = process_catch("glReadBuffer", catch_unwind(||(self.readbuffer)(src)));
35761		#[cfg(not(feature = "catch_nullptr"))]
35762		let ret = {(self.readbuffer)(src); Ok(())};
35763		#[cfg(feature = "diagnose")]
35764		if let Ok(ret) = ret {
35765			return to_result("glReadBuffer", ret, self.glGetError());
35766		} else {
35767			return ret
35768		}
35769		#[cfg(not(feature = "diagnose"))]
35770		return ret;
35771	}
35772	#[inline(always)]
35773	fn glDrawRangeElements(&self, mode: GLenum, start: GLuint, end: GLuint, count: GLsizei, type_: GLenum, indices: *const c_void) -> Result<()> {
35774		#[cfg(feature = "catch_nullptr")]
35775		let ret = process_catch("glDrawRangeElements", catch_unwind(||(self.drawrangeelements)(mode, start, end, count, type_, indices)));
35776		#[cfg(not(feature = "catch_nullptr"))]
35777		let ret = {(self.drawrangeelements)(mode, start, end, count, type_, indices); Ok(())};
35778		#[cfg(feature = "diagnose")]
35779		if let Ok(ret) = ret {
35780			return to_result("glDrawRangeElements", ret, self.glGetError());
35781		} else {
35782			return ret
35783		}
35784		#[cfg(not(feature = "diagnose"))]
35785		return ret;
35786	}
35787	#[inline(always)]
35788	fn glTexImage3D(&self, target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
35789		#[cfg(feature = "catch_nullptr")]
35790		let ret = process_catch("glTexImage3D", catch_unwind(||(self.teximage3d)(target, level, internalformat, width, height, depth, border, format, type_, pixels)));
35791		#[cfg(not(feature = "catch_nullptr"))]
35792		let ret = {(self.teximage3d)(target, level, internalformat, width, height, depth, border, format, type_, pixels); Ok(())};
35793		#[cfg(feature = "diagnose")]
35794		if let Ok(ret) = ret {
35795			return to_result("glTexImage3D", ret, self.glGetError());
35796		} else {
35797			return ret
35798		}
35799		#[cfg(not(feature = "diagnose"))]
35800		return ret;
35801	}
35802	#[inline(always)]
35803	fn glTexSubImage3D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
35804		#[cfg(feature = "catch_nullptr")]
35805		let ret = process_catch("glTexSubImage3D", catch_unwind(||(self.texsubimage3d)(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, pixels)));
35806		#[cfg(not(feature = "catch_nullptr"))]
35807		let ret = {(self.texsubimage3d)(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, pixels); Ok(())};
35808		#[cfg(feature = "diagnose")]
35809		if let Ok(ret) = ret {
35810			return to_result("glTexSubImage3D", ret, self.glGetError());
35811		} else {
35812			return ret
35813		}
35814		#[cfg(not(feature = "diagnose"))]
35815		return ret;
35816	}
35817	#[inline(always)]
35818	fn glCopyTexSubImage3D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
35819		#[cfg(feature = "catch_nullptr")]
35820		let ret = process_catch("glCopyTexSubImage3D", catch_unwind(||(self.copytexsubimage3d)(target, level, xoffset, yoffset, zoffset, x, y, width, height)));
35821		#[cfg(not(feature = "catch_nullptr"))]
35822		let ret = {(self.copytexsubimage3d)(target, level, xoffset, yoffset, zoffset, x, y, width, height); Ok(())};
35823		#[cfg(feature = "diagnose")]
35824		if let Ok(ret) = ret {
35825			return to_result("glCopyTexSubImage3D", ret, self.glGetError());
35826		} else {
35827			return ret
35828		}
35829		#[cfg(not(feature = "diagnose"))]
35830		return ret;
35831	}
35832	#[inline(always)]
35833	fn glCompressedTexImage3D(&self, target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, imageSize: GLsizei, data: *const c_void) -> Result<()> {
35834		#[cfg(feature = "catch_nullptr")]
35835		let ret = process_catch("glCompressedTexImage3D", catch_unwind(||(self.compressedteximage3d)(target, level, internalformat, width, height, depth, border, imageSize, data)));
35836		#[cfg(not(feature = "catch_nullptr"))]
35837		let ret = {(self.compressedteximage3d)(target, level, internalformat, width, height, depth, border, imageSize, data); Ok(())};
35838		#[cfg(feature = "diagnose")]
35839		if let Ok(ret) = ret {
35840			return to_result("glCompressedTexImage3D", ret, self.glGetError());
35841		} else {
35842			return ret
35843		}
35844		#[cfg(not(feature = "diagnose"))]
35845		return ret;
35846	}
35847	#[inline(always)]
35848	fn glCompressedTexSubImage3D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()> {
35849		#[cfg(feature = "catch_nullptr")]
35850		let ret = process_catch("glCompressedTexSubImage3D", catch_unwind(||(self.compressedtexsubimage3d)(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data)));
35851		#[cfg(not(feature = "catch_nullptr"))]
35852		let ret = {(self.compressedtexsubimage3d)(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); Ok(())};
35853		#[cfg(feature = "diagnose")]
35854		if let Ok(ret) = ret {
35855			return to_result("glCompressedTexSubImage3D", ret, self.glGetError());
35856		} else {
35857			return ret
35858		}
35859		#[cfg(not(feature = "diagnose"))]
35860		return ret;
35861	}
35862	#[inline(always)]
35863	fn glGenQueries(&self, n: GLsizei, ids: *mut GLuint) -> Result<()> {
35864		#[cfg(feature = "catch_nullptr")]
35865		let ret = process_catch("glGenQueries", catch_unwind(||(self.genqueries)(n, ids)));
35866		#[cfg(not(feature = "catch_nullptr"))]
35867		let ret = {(self.genqueries)(n, ids); Ok(())};
35868		#[cfg(feature = "diagnose")]
35869		if let Ok(ret) = ret {
35870			return to_result("glGenQueries", ret, self.glGetError());
35871		} else {
35872			return ret
35873		}
35874		#[cfg(not(feature = "diagnose"))]
35875		return ret;
35876	}
35877	#[inline(always)]
35878	fn glDeleteQueries(&self, n: GLsizei, ids: *const GLuint) -> Result<()> {
35879		#[cfg(feature = "catch_nullptr")]
35880		let ret = process_catch("glDeleteQueries", catch_unwind(||(self.deletequeries)(n, ids)));
35881		#[cfg(not(feature = "catch_nullptr"))]
35882		let ret = {(self.deletequeries)(n, ids); Ok(())};
35883		#[cfg(feature = "diagnose")]
35884		if let Ok(ret) = ret {
35885			return to_result("glDeleteQueries", ret, self.glGetError());
35886		} else {
35887			return ret
35888		}
35889		#[cfg(not(feature = "diagnose"))]
35890		return ret;
35891	}
35892	#[inline(always)]
35893	fn glIsQuery(&self, id: GLuint) -> Result<GLboolean> {
35894		#[cfg(feature = "catch_nullptr")]
35895		let ret = process_catch("glIsQuery", catch_unwind(||(self.isquery)(id)));
35896		#[cfg(not(feature = "catch_nullptr"))]
35897		let ret = Ok((self.isquery)(id));
35898		#[cfg(feature = "diagnose")]
35899		if let Ok(ret) = ret {
35900			return to_result("glIsQuery", ret, self.glGetError());
35901		} else {
35902			return ret
35903		}
35904		#[cfg(not(feature = "diagnose"))]
35905		return ret;
35906	}
35907	#[inline(always)]
35908	fn glBeginQuery(&self, target: GLenum, id: GLuint) -> Result<()> {
35909		#[cfg(feature = "catch_nullptr")]
35910		let ret = process_catch("glBeginQuery", catch_unwind(||(self.beginquery)(target, id)));
35911		#[cfg(not(feature = "catch_nullptr"))]
35912		let ret = {(self.beginquery)(target, id); Ok(())};
35913		#[cfg(feature = "diagnose")]
35914		if let Ok(ret) = ret {
35915			return to_result("glBeginQuery", ret, self.glGetError());
35916		} else {
35917			return ret
35918		}
35919		#[cfg(not(feature = "diagnose"))]
35920		return ret;
35921	}
35922	#[inline(always)]
35923	fn glEndQuery(&self, target: GLenum) -> Result<()> {
35924		#[cfg(feature = "catch_nullptr")]
35925		let ret = process_catch("glEndQuery", catch_unwind(||(self.endquery)(target)));
35926		#[cfg(not(feature = "catch_nullptr"))]
35927		let ret = {(self.endquery)(target); Ok(())};
35928		#[cfg(feature = "diagnose")]
35929		if let Ok(ret) = ret {
35930			return to_result("glEndQuery", ret, self.glGetError());
35931		} else {
35932			return ret
35933		}
35934		#[cfg(not(feature = "diagnose"))]
35935		return ret;
35936	}
35937	#[inline(always)]
35938	fn glGetQueryiv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
35939		#[cfg(feature = "catch_nullptr")]
35940		let ret = process_catch("glGetQueryiv", catch_unwind(||(self.getqueryiv)(target, pname, params)));
35941		#[cfg(not(feature = "catch_nullptr"))]
35942		let ret = {(self.getqueryiv)(target, pname, params); Ok(())};
35943		#[cfg(feature = "diagnose")]
35944		if let Ok(ret) = ret {
35945			return to_result("glGetQueryiv", ret, self.glGetError());
35946		} else {
35947			return ret
35948		}
35949		#[cfg(not(feature = "diagnose"))]
35950		return ret;
35951	}
35952	#[inline(always)]
35953	fn glGetQueryObjectuiv(&self, id: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()> {
35954		#[cfg(feature = "catch_nullptr")]
35955		let ret = process_catch("glGetQueryObjectuiv", catch_unwind(||(self.getqueryobjectuiv)(id, pname, params)));
35956		#[cfg(not(feature = "catch_nullptr"))]
35957		let ret = {(self.getqueryobjectuiv)(id, pname, params); Ok(())};
35958		#[cfg(feature = "diagnose")]
35959		if let Ok(ret) = ret {
35960			return to_result("glGetQueryObjectuiv", ret, self.glGetError());
35961		} else {
35962			return ret
35963		}
35964		#[cfg(not(feature = "diagnose"))]
35965		return ret;
35966	}
35967	#[inline(always)]
35968	fn glUnmapBuffer(&self, target: GLenum) -> Result<GLboolean> {
35969		#[cfg(feature = "catch_nullptr")]
35970		let ret = process_catch("glUnmapBuffer", catch_unwind(||(self.unmapbuffer)(target)));
35971		#[cfg(not(feature = "catch_nullptr"))]
35972		let ret = Ok((self.unmapbuffer)(target));
35973		#[cfg(feature = "diagnose")]
35974		if let Ok(ret) = ret {
35975			return to_result("glUnmapBuffer", ret, self.glGetError());
35976		} else {
35977			return ret
35978		}
35979		#[cfg(not(feature = "diagnose"))]
35980		return ret;
35981	}
35982	#[inline(always)]
35983	fn glGetBufferPointerv(&self, target: GLenum, pname: GLenum, params: *mut *mut c_void) -> Result<()> {
35984		#[cfg(feature = "catch_nullptr")]
35985		let ret = process_catch("glGetBufferPointerv", catch_unwind(||(self.getbufferpointerv)(target, pname, params)));
35986		#[cfg(not(feature = "catch_nullptr"))]
35987		let ret = {(self.getbufferpointerv)(target, pname, params); Ok(())};
35988		#[cfg(feature = "diagnose")]
35989		if let Ok(ret) = ret {
35990			return to_result("glGetBufferPointerv", ret, self.glGetError());
35991		} else {
35992			return ret
35993		}
35994		#[cfg(not(feature = "diagnose"))]
35995		return ret;
35996	}
35997	#[inline(always)]
35998	fn glDrawBuffers(&self, n: GLsizei, bufs: *const GLenum) -> Result<()> {
35999		#[cfg(feature = "catch_nullptr")]
36000		let ret = process_catch("glDrawBuffers", catch_unwind(||(self.drawbuffers)(n, bufs)));
36001		#[cfg(not(feature = "catch_nullptr"))]
36002		let ret = {(self.drawbuffers)(n, bufs); Ok(())};
36003		#[cfg(feature = "diagnose")]
36004		if let Ok(ret) = ret {
36005			return to_result("glDrawBuffers", ret, self.glGetError());
36006		} else {
36007			return ret
36008		}
36009		#[cfg(not(feature = "diagnose"))]
36010		return ret;
36011	}
36012	#[inline(always)]
36013	fn glUniformMatrix2x3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
36014		#[cfg(feature = "catch_nullptr")]
36015		let ret = process_catch("glUniformMatrix2x3fv", catch_unwind(||(self.uniformmatrix2x3fv)(location, count, transpose, value)));
36016		#[cfg(not(feature = "catch_nullptr"))]
36017		let ret = {(self.uniformmatrix2x3fv)(location, count, transpose, value); Ok(())};
36018		#[cfg(feature = "diagnose")]
36019		if let Ok(ret) = ret {
36020			return to_result("glUniformMatrix2x3fv", ret, self.glGetError());
36021		} else {
36022			return ret
36023		}
36024		#[cfg(not(feature = "diagnose"))]
36025		return ret;
36026	}
36027	#[inline(always)]
36028	fn glUniformMatrix3x2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
36029		#[cfg(feature = "catch_nullptr")]
36030		let ret = process_catch("glUniformMatrix3x2fv", catch_unwind(||(self.uniformmatrix3x2fv)(location, count, transpose, value)));
36031		#[cfg(not(feature = "catch_nullptr"))]
36032		let ret = {(self.uniformmatrix3x2fv)(location, count, transpose, value); Ok(())};
36033		#[cfg(feature = "diagnose")]
36034		if let Ok(ret) = ret {
36035			return to_result("glUniformMatrix3x2fv", ret, self.glGetError());
36036		} else {
36037			return ret
36038		}
36039		#[cfg(not(feature = "diagnose"))]
36040		return ret;
36041	}
36042	#[inline(always)]
36043	fn glUniformMatrix2x4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
36044		#[cfg(feature = "catch_nullptr")]
36045		let ret = process_catch("glUniformMatrix2x4fv", catch_unwind(||(self.uniformmatrix2x4fv)(location, count, transpose, value)));
36046		#[cfg(not(feature = "catch_nullptr"))]
36047		let ret = {(self.uniformmatrix2x4fv)(location, count, transpose, value); Ok(())};
36048		#[cfg(feature = "diagnose")]
36049		if let Ok(ret) = ret {
36050			return to_result("glUniformMatrix2x4fv", ret, self.glGetError());
36051		} else {
36052			return ret
36053		}
36054		#[cfg(not(feature = "diagnose"))]
36055		return ret;
36056	}
36057	#[inline(always)]
36058	fn glUniformMatrix4x2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
36059		#[cfg(feature = "catch_nullptr")]
36060		let ret = process_catch("glUniformMatrix4x2fv", catch_unwind(||(self.uniformmatrix4x2fv)(location, count, transpose, value)));
36061		#[cfg(not(feature = "catch_nullptr"))]
36062		let ret = {(self.uniformmatrix4x2fv)(location, count, transpose, value); Ok(())};
36063		#[cfg(feature = "diagnose")]
36064		if let Ok(ret) = ret {
36065			return to_result("glUniformMatrix4x2fv", ret, self.glGetError());
36066		} else {
36067			return ret
36068		}
36069		#[cfg(not(feature = "diagnose"))]
36070		return ret;
36071	}
36072	#[inline(always)]
36073	fn glUniformMatrix3x4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
36074		#[cfg(feature = "catch_nullptr")]
36075		let ret = process_catch("glUniformMatrix3x4fv", catch_unwind(||(self.uniformmatrix3x4fv)(location, count, transpose, value)));
36076		#[cfg(not(feature = "catch_nullptr"))]
36077		let ret = {(self.uniformmatrix3x4fv)(location, count, transpose, value); Ok(())};
36078		#[cfg(feature = "diagnose")]
36079		if let Ok(ret) = ret {
36080			return to_result("glUniformMatrix3x4fv", ret, self.glGetError());
36081		} else {
36082			return ret
36083		}
36084		#[cfg(not(feature = "diagnose"))]
36085		return ret;
36086	}
36087	#[inline(always)]
36088	fn glUniformMatrix4x3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
36089		#[cfg(feature = "catch_nullptr")]
36090		let ret = process_catch("glUniformMatrix4x3fv", catch_unwind(||(self.uniformmatrix4x3fv)(location, count, transpose, value)));
36091		#[cfg(not(feature = "catch_nullptr"))]
36092		let ret = {(self.uniformmatrix4x3fv)(location, count, transpose, value); Ok(())};
36093		#[cfg(feature = "diagnose")]
36094		if let Ok(ret) = ret {
36095			return to_result("glUniformMatrix4x3fv", ret, self.glGetError());
36096		} else {
36097			return ret
36098		}
36099		#[cfg(not(feature = "diagnose"))]
36100		return ret;
36101	}
36102	#[inline(always)]
36103	fn glBlitFramebuffer(&self, srcX0: GLint, srcY0: GLint, srcX1: GLint, srcY1: GLint, dstX0: GLint, dstY0: GLint, dstX1: GLint, dstY1: GLint, mask: GLbitfield, filter: GLenum) -> Result<()> {
36104		#[cfg(feature = "catch_nullptr")]
36105		let ret = process_catch("glBlitFramebuffer", catch_unwind(||(self.blitframebuffer)(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter)));
36106		#[cfg(not(feature = "catch_nullptr"))]
36107		let ret = {(self.blitframebuffer)(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); Ok(())};
36108		#[cfg(feature = "diagnose")]
36109		if let Ok(ret) = ret {
36110			return to_result("glBlitFramebuffer", ret, self.glGetError());
36111		} else {
36112			return ret
36113		}
36114		#[cfg(not(feature = "diagnose"))]
36115		return ret;
36116	}
36117	#[inline(always)]
36118	fn glRenderbufferStorageMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()> {
36119		#[cfg(feature = "catch_nullptr")]
36120		let ret = process_catch("glRenderbufferStorageMultisample", catch_unwind(||(self.renderbufferstoragemultisample)(target, samples, internalformat, width, height)));
36121		#[cfg(not(feature = "catch_nullptr"))]
36122		let ret = {(self.renderbufferstoragemultisample)(target, samples, internalformat, width, height); Ok(())};
36123		#[cfg(feature = "diagnose")]
36124		if let Ok(ret) = ret {
36125			return to_result("glRenderbufferStorageMultisample", ret, self.glGetError());
36126		} else {
36127			return ret
36128		}
36129		#[cfg(not(feature = "diagnose"))]
36130		return ret;
36131	}
36132	#[inline(always)]
36133	fn glFramebufferTextureLayer(&self, target: GLenum, attachment: GLenum, texture: GLuint, level: GLint, layer: GLint) -> Result<()> {
36134		#[cfg(feature = "catch_nullptr")]
36135		let ret = process_catch("glFramebufferTextureLayer", catch_unwind(||(self.framebuffertexturelayer)(target, attachment, texture, level, layer)));
36136		#[cfg(not(feature = "catch_nullptr"))]
36137		let ret = {(self.framebuffertexturelayer)(target, attachment, texture, level, layer); Ok(())};
36138		#[cfg(feature = "diagnose")]
36139		if let Ok(ret) = ret {
36140			return to_result("glFramebufferTextureLayer", ret, self.glGetError());
36141		} else {
36142			return ret
36143		}
36144		#[cfg(not(feature = "diagnose"))]
36145		return ret;
36146	}
36147	#[inline(always)]
36148	fn glMapBufferRange(&self, target: GLenum, offset: GLintptr, length: GLsizeiptr, access: GLbitfield) -> Result<*mut c_void> {
36149		#[cfg(feature = "catch_nullptr")]
36150		let ret = process_catch("glMapBufferRange", catch_unwind(||(self.mapbufferrange)(target, offset, length, access)));
36151		#[cfg(not(feature = "catch_nullptr"))]
36152		let ret = Ok((self.mapbufferrange)(target, offset, length, access));
36153		#[cfg(feature = "diagnose")]
36154		if let Ok(ret) = ret {
36155			return to_result("glMapBufferRange", ret, self.glGetError());
36156		} else {
36157			return ret
36158		}
36159		#[cfg(not(feature = "diagnose"))]
36160		return ret;
36161	}
36162	#[inline(always)]
36163	fn glFlushMappedBufferRange(&self, target: GLenum, offset: GLintptr, length: GLsizeiptr) -> Result<()> {
36164		#[cfg(feature = "catch_nullptr")]
36165		let ret = process_catch("glFlushMappedBufferRange", catch_unwind(||(self.flushmappedbufferrange)(target, offset, length)));
36166		#[cfg(not(feature = "catch_nullptr"))]
36167		let ret = {(self.flushmappedbufferrange)(target, offset, length); Ok(())};
36168		#[cfg(feature = "diagnose")]
36169		if let Ok(ret) = ret {
36170			return to_result("glFlushMappedBufferRange", ret, self.glGetError());
36171		} else {
36172			return ret
36173		}
36174		#[cfg(not(feature = "diagnose"))]
36175		return ret;
36176	}
36177	#[inline(always)]
36178	fn glBindVertexArray(&self, array: GLuint) -> Result<()> {
36179		#[cfg(feature = "catch_nullptr")]
36180		let ret = process_catch("glBindVertexArray", catch_unwind(||(self.bindvertexarray)(array)));
36181		#[cfg(not(feature = "catch_nullptr"))]
36182		let ret = {(self.bindvertexarray)(array); Ok(())};
36183		#[cfg(feature = "diagnose")]
36184		if let Ok(ret) = ret {
36185			return to_result("glBindVertexArray", ret, self.glGetError());
36186		} else {
36187			return ret
36188		}
36189		#[cfg(not(feature = "diagnose"))]
36190		return ret;
36191	}
36192	#[inline(always)]
36193	fn glDeleteVertexArrays(&self, n: GLsizei, arrays: *const GLuint) -> Result<()> {
36194		#[cfg(feature = "catch_nullptr")]
36195		let ret = process_catch("glDeleteVertexArrays", catch_unwind(||(self.deletevertexarrays)(n, arrays)));
36196		#[cfg(not(feature = "catch_nullptr"))]
36197		let ret = {(self.deletevertexarrays)(n, arrays); Ok(())};
36198		#[cfg(feature = "diagnose")]
36199		if let Ok(ret) = ret {
36200			return to_result("glDeleteVertexArrays", ret, self.glGetError());
36201		} else {
36202			return ret
36203		}
36204		#[cfg(not(feature = "diagnose"))]
36205		return ret;
36206	}
36207	#[inline(always)]
36208	fn glGenVertexArrays(&self, n: GLsizei, arrays: *mut GLuint) -> Result<()> {
36209		#[cfg(feature = "catch_nullptr")]
36210		let ret = process_catch("glGenVertexArrays", catch_unwind(||(self.genvertexarrays)(n, arrays)));
36211		#[cfg(not(feature = "catch_nullptr"))]
36212		let ret = {(self.genvertexarrays)(n, arrays); Ok(())};
36213		#[cfg(feature = "diagnose")]
36214		if let Ok(ret) = ret {
36215			return to_result("glGenVertexArrays", ret, self.glGetError());
36216		} else {
36217			return ret
36218		}
36219		#[cfg(not(feature = "diagnose"))]
36220		return ret;
36221	}
36222	#[inline(always)]
36223	fn glIsVertexArray(&self, array: GLuint) -> Result<GLboolean> {
36224		#[cfg(feature = "catch_nullptr")]
36225		let ret = process_catch("glIsVertexArray", catch_unwind(||(self.isvertexarray)(array)));
36226		#[cfg(not(feature = "catch_nullptr"))]
36227		let ret = Ok((self.isvertexarray)(array));
36228		#[cfg(feature = "diagnose")]
36229		if let Ok(ret) = ret {
36230			return to_result("glIsVertexArray", ret, self.glGetError());
36231		} else {
36232			return ret
36233		}
36234		#[cfg(not(feature = "diagnose"))]
36235		return ret;
36236	}
36237	#[inline(always)]
36238	fn glGetIntegeri_v(&self, target: GLenum, index: GLuint, data: *mut GLint) -> Result<()> {
36239		#[cfg(feature = "catch_nullptr")]
36240		let ret = process_catch("glGetIntegeri_v", catch_unwind(||(self.getintegeri_v)(target, index, data)));
36241		#[cfg(not(feature = "catch_nullptr"))]
36242		let ret = {(self.getintegeri_v)(target, index, data); Ok(())};
36243		#[cfg(feature = "diagnose")]
36244		if let Ok(ret) = ret {
36245			return to_result("glGetIntegeri_v", ret, self.glGetError());
36246		} else {
36247			return ret
36248		}
36249		#[cfg(not(feature = "diagnose"))]
36250		return ret;
36251	}
36252	#[inline(always)]
36253	fn glBeginTransformFeedback(&self, primitiveMode: GLenum) -> Result<()> {
36254		#[cfg(feature = "catch_nullptr")]
36255		let ret = process_catch("glBeginTransformFeedback", catch_unwind(||(self.begintransformfeedback)(primitiveMode)));
36256		#[cfg(not(feature = "catch_nullptr"))]
36257		let ret = {(self.begintransformfeedback)(primitiveMode); Ok(())};
36258		#[cfg(feature = "diagnose")]
36259		if let Ok(ret) = ret {
36260			return to_result("glBeginTransformFeedback", ret, self.glGetError());
36261		} else {
36262			return ret
36263		}
36264		#[cfg(not(feature = "diagnose"))]
36265		return ret;
36266	}
36267	#[inline(always)]
36268	fn glEndTransformFeedback(&self) -> Result<()> {
36269		#[cfg(feature = "catch_nullptr")]
36270		let ret = process_catch("glEndTransformFeedback", catch_unwind(||(self.endtransformfeedback)()));
36271		#[cfg(not(feature = "catch_nullptr"))]
36272		let ret = {(self.endtransformfeedback)(); Ok(())};
36273		#[cfg(feature = "diagnose")]
36274		if let Ok(ret) = ret {
36275			return to_result("glEndTransformFeedback", ret, self.glGetError());
36276		} else {
36277			return ret
36278		}
36279		#[cfg(not(feature = "diagnose"))]
36280		return ret;
36281	}
36282	#[inline(always)]
36283	fn glBindBufferRange(&self, target: GLenum, index: GLuint, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()> {
36284		#[cfg(feature = "catch_nullptr")]
36285		let ret = process_catch("glBindBufferRange", catch_unwind(||(self.bindbufferrange)(target, index, buffer, offset, size)));
36286		#[cfg(not(feature = "catch_nullptr"))]
36287		let ret = {(self.bindbufferrange)(target, index, buffer, offset, size); Ok(())};
36288		#[cfg(feature = "diagnose")]
36289		if let Ok(ret) = ret {
36290			return to_result("glBindBufferRange", ret, self.glGetError());
36291		} else {
36292			return ret
36293		}
36294		#[cfg(not(feature = "diagnose"))]
36295		return ret;
36296	}
36297	#[inline(always)]
36298	fn glBindBufferBase(&self, target: GLenum, index: GLuint, buffer: GLuint) -> Result<()> {
36299		#[cfg(feature = "catch_nullptr")]
36300		let ret = process_catch("glBindBufferBase", catch_unwind(||(self.bindbufferbase)(target, index, buffer)));
36301		#[cfg(not(feature = "catch_nullptr"))]
36302		let ret = {(self.bindbufferbase)(target, index, buffer); Ok(())};
36303		#[cfg(feature = "diagnose")]
36304		if let Ok(ret) = ret {
36305			return to_result("glBindBufferBase", ret, self.glGetError());
36306		} else {
36307			return ret
36308		}
36309		#[cfg(not(feature = "diagnose"))]
36310		return ret;
36311	}
36312	#[inline(always)]
36313	fn glTransformFeedbackVaryings(&self, program: GLuint, count: GLsizei, varyings: *const *const GLchar, bufferMode: GLenum) -> Result<()> {
36314		#[cfg(feature = "catch_nullptr")]
36315		let ret = process_catch("glTransformFeedbackVaryings", catch_unwind(||(self.transformfeedbackvaryings)(program, count, varyings, bufferMode)));
36316		#[cfg(not(feature = "catch_nullptr"))]
36317		let ret = {(self.transformfeedbackvaryings)(program, count, varyings, bufferMode); Ok(())};
36318		#[cfg(feature = "diagnose")]
36319		if let Ok(ret) = ret {
36320			return to_result("glTransformFeedbackVaryings", ret, self.glGetError());
36321		} else {
36322			return ret
36323		}
36324		#[cfg(not(feature = "diagnose"))]
36325		return ret;
36326	}
36327	#[inline(always)]
36328	fn glGetTransformFeedbackVarying(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLsizei, type_: *mut GLenum, name: *mut GLchar) -> Result<()> {
36329		#[cfg(feature = "catch_nullptr")]
36330		let ret = process_catch("glGetTransformFeedbackVarying", catch_unwind(||(self.gettransformfeedbackvarying)(program, index, bufSize, length, size, type_, name)));
36331		#[cfg(not(feature = "catch_nullptr"))]
36332		let ret = {(self.gettransformfeedbackvarying)(program, index, bufSize, length, size, type_, name); Ok(())};
36333		#[cfg(feature = "diagnose")]
36334		if let Ok(ret) = ret {
36335			return to_result("glGetTransformFeedbackVarying", ret, self.glGetError());
36336		} else {
36337			return ret
36338		}
36339		#[cfg(not(feature = "diagnose"))]
36340		return ret;
36341	}
36342	#[inline(always)]
36343	fn glVertexAttribIPointer(&self, index: GLuint, size: GLint, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()> {
36344		#[cfg(feature = "catch_nullptr")]
36345		let ret = process_catch("glVertexAttribIPointer", catch_unwind(||(self.vertexattribipointer)(index, size, type_, stride, pointer)));
36346		#[cfg(not(feature = "catch_nullptr"))]
36347		let ret = {(self.vertexattribipointer)(index, size, type_, stride, pointer); Ok(())};
36348		#[cfg(feature = "diagnose")]
36349		if let Ok(ret) = ret {
36350			return to_result("glVertexAttribIPointer", ret, self.glGetError());
36351		} else {
36352			return ret
36353		}
36354		#[cfg(not(feature = "diagnose"))]
36355		return ret;
36356	}
36357	#[inline(always)]
36358	fn glGetVertexAttribIiv(&self, index: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
36359		#[cfg(feature = "catch_nullptr")]
36360		let ret = process_catch("glGetVertexAttribIiv", catch_unwind(||(self.getvertexattribiiv)(index, pname, params)));
36361		#[cfg(not(feature = "catch_nullptr"))]
36362		let ret = {(self.getvertexattribiiv)(index, pname, params); Ok(())};
36363		#[cfg(feature = "diagnose")]
36364		if let Ok(ret) = ret {
36365			return to_result("glGetVertexAttribIiv", ret, self.glGetError());
36366		} else {
36367			return ret
36368		}
36369		#[cfg(not(feature = "diagnose"))]
36370		return ret;
36371	}
36372	#[inline(always)]
36373	fn glGetVertexAttribIuiv(&self, index: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()> {
36374		#[cfg(feature = "catch_nullptr")]
36375		let ret = process_catch("glGetVertexAttribIuiv", catch_unwind(||(self.getvertexattribiuiv)(index, pname, params)));
36376		#[cfg(not(feature = "catch_nullptr"))]
36377		let ret = {(self.getvertexattribiuiv)(index, pname, params); Ok(())};
36378		#[cfg(feature = "diagnose")]
36379		if let Ok(ret) = ret {
36380			return to_result("glGetVertexAttribIuiv", ret, self.glGetError());
36381		} else {
36382			return ret
36383		}
36384		#[cfg(not(feature = "diagnose"))]
36385		return ret;
36386	}
36387	#[inline(always)]
36388	fn glVertexAttribI4i(&self, index: GLuint, x: GLint, y: GLint, z: GLint, w: GLint) -> Result<()> {
36389		#[cfg(feature = "catch_nullptr")]
36390		let ret = process_catch("glVertexAttribI4i", catch_unwind(||(self.vertexattribi4i)(index, x, y, z, w)));
36391		#[cfg(not(feature = "catch_nullptr"))]
36392		let ret = {(self.vertexattribi4i)(index, x, y, z, w); Ok(())};
36393		#[cfg(feature = "diagnose")]
36394		if let Ok(ret) = ret {
36395			return to_result("glVertexAttribI4i", ret, self.glGetError());
36396		} else {
36397			return ret
36398		}
36399		#[cfg(not(feature = "diagnose"))]
36400		return ret;
36401	}
36402	#[inline(always)]
36403	fn glVertexAttribI4ui(&self, index: GLuint, x: GLuint, y: GLuint, z: GLuint, w: GLuint) -> Result<()> {
36404		#[cfg(feature = "catch_nullptr")]
36405		let ret = process_catch("glVertexAttribI4ui", catch_unwind(||(self.vertexattribi4ui)(index, x, y, z, w)));
36406		#[cfg(not(feature = "catch_nullptr"))]
36407		let ret = {(self.vertexattribi4ui)(index, x, y, z, w); Ok(())};
36408		#[cfg(feature = "diagnose")]
36409		if let Ok(ret) = ret {
36410			return to_result("glVertexAttribI4ui", ret, self.glGetError());
36411		} else {
36412			return ret
36413		}
36414		#[cfg(not(feature = "diagnose"))]
36415		return ret;
36416	}
36417	#[inline(always)]
36418	fn glVertexAttribI4iv(&self, index: GLuint, v: *const GLint) -> Result<()> {
36419		#[cfg(feature = "catch_nullptr")]
36420		let ret = process_catch("glVertexAttribI4iv", catch_unwind(||(self.vertexattribi4iv)(index, v)));
36421		#[cfg(not(feature = "catch_nullptr"))]
36422		let ret = {(self.vertexattribi4iv)(index, v); Ok(())};
36423		#[cfg(feature = "diagnose")]
36424		if let Ok(ret) = ret {
36425			return to_result("glVertexAttribI4iv", ret, self.glGetError());
36426		} else {
36427			return ret
36428		}
36429		#[cfg(not(feature = "diagnose"))]
36430		return ret;
36431	}
36432	#[inline(always)]
36433	fn glVertexAttribI4uiv(&self, index: GLuint, v: *const GLuint) -> Result<()> {
36434		#[cfg(feature = "catch_nullptr")]
36435		let ret = process_catch("glVertexAttribI4uiv", catch_unwind(||(self.vertexattribi4uiv)(index, v)));
36436		#[cfg(not(feature = "catch_nullptr"))]
36437		let ret = {(self.vertexattribi4uiv)(index, v); Ok(())};
36438		#[cfg(feature = "diagnose")]
36439		if let Ok(ret) = ret {
36440			return to_result("glVertexAttribI4uiv", ret, self.glGetError());
36441		} else {
36442			return ret
36443		}
36444		#[cfg(not(feature = "diagnose"))]
36445		return ret;
36446	}
36447	#[inline(always)]
36448	fn glGetUniformuiv(&self, program: GLuint, location: GLint, params: *mut GLuint) -> Result<()> {
36449		#[cfg(feature = "catch_nullptr")]
36450		let ret = process_catch("glGetUniformuiv", catch_unwind(||(self.getuniformuiv)(program, location, params)));
36451		#[cfg(not(feature = "catch_nullptr"))]
36452		let ret = {(self.getuniformuiv)(program, location, params); Ok(())};
36453		#[cfg(feature = "diagnose")]
36454		if let Ok(ret) = ret {
36455			return to_result("glGetUniformuiv", ret, self.glGetError());
36456		} else {
36457			return ret
36458		}
36459		#[cfg(not(feature = "diagnose"))]
36460		return ret;
36461	}
36462	#[inline(always)]
36463	fn glGetFragDataLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint> {
36464		#[cfg(feature = "catch_nullptr")]
36465		let ret = process_catch("glGetFragDataLocation", catch_unwind(||(self.getfragdatalocation)(program, name)));
36466		#[cfg(not(feature = "catch_nullptr"))]
36467		let ret = Ok((self.getfragdatalocation)(program, name));
36468		#[cfg(feature = "diagnose")]
36469		if let Ok(ret) = ret {
36470			return to_result("glGetFragDataLocation", ret, self.glGetError());
36471		} else {
36472			return ret
36473		}
36474		#[cfg(not(feature = "diagnose"))]
36475		return ret;
36476	}
36477	#[inline(always)]
36478	fn glUniform1ui(&self, location: GLint, v0: GLuint) -> Result<()> {
36479		#[cfg(feature = "catch_nullptr")]
36480		let ret = process_catch("glUniform1ui", catch_unwind(||(self.uniform1ui)(location, v0)));
36481		#[cfg(not(feature = "catch_nullptr"))]
36482		let ret = {(self.uniform1ui)(location, v0); Ok(())};
36483		#[cfg(feature = "diagnose")]
36484		if let Ok(ret) = ret {
36485			return to_result("glUniform1ui", ret, self.glGetError());
36486		} else {
36487			return ret
36488		}
36489		#[cfg(not(feature = "diagnose"))]
36490		return ret;
36491	}
36492	#[inline(always)]
36493	fn glUniform2ui(&self, location: GLint, v0: GLuint, v1: GLuint) -> Result<()> {
36494		#[cfg(feature = "catch_nullptr")]
36495		let ret = process_catch("glUniform2ui", catch_unwind(||(self.uniform2ui)(location, v0, v1)));
36496		#[cfg(not(feature = "catch_nullptr"))]
36497		let ret = {(self.uniform2ui)(location, v0, v1); Ok(())};
36498		#[cfg(feature = "diagnose")]
36499		if let Ok(ret) = ret {
36500			return to_result("glUniform2ui", ret, self.glGetError());
36501		} else {
36502			return ret
36503		}
36504		#[cfg(not(feature = "diagnose"))]
36505		return ret;
36506	}
36507	#[inline(always)]
36508	fn glUniform3ui(&self, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint) -> Result<()> {
36509		#[cfg(feature = "catch_nullptr")]
36510		let ret = process_catch("glUniform3ui", catch_unwind(||(self.uniform3ui)(location, v0, v1, v2)));
36511		#[cfg(not(feature = "catch_nullptr"))]
36512		let ret = {(self.uniform3ui)(location, v0, v1, v2); Ok(())};
36513		#[cfg(feature = "diagnose")]
36514		if let Ok(ret) = ret {
36515			return to_result("glUniform3ui", ret, self.glGetError());
36516		} else {
36517			return ret
36518		}
36519		#[cfg(not(feature = "diagnose"))]
36520		return ret;
36521	}
36522	#[inline(always)]
36523	fn glUniform4ui(&self, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint, v3: GLuint) -> Result<()> {
36524		#[cfg(feature = "catch_nullptr")]
36525		let ret = process_catch("glUniform4ui", catch_unwind(||(self.uniform4ui)(location, v0, v1, v2, v3)));
36526		#[cfg(not(feature = "catch_nullptr"))]
36527		let ret = {(self.uniform4ui)(location, v0, v1, v2, v3); Ok(())};
36528		#[cfg(feature = "diagnose")]
36529		if let Ok(ret) = ret {
36530			return to_result("glUniform4ui", ret, self.glGetError());
36531		} else {
36532			return ret
36533		}
36534		#[cfg(not(feature = "diagnose"))]
36535		return ret;
36536	}
36537	#[inline(always)]
36538	fn glUniform1uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
36539		#[cfg(feature = "catch_nullptr")]
36540		let ret = process_catch("glUniform1uiv", catch_unwind(||(self.uniform1uiv)(location, count, value)));
36541		#[cfg(not(feature = "catch_nullptr"))]
36542		let ret = {(self.uniform1uiv)(location, count, value); Ok(())};
36543		#[cfg(feature = "diagnose")]
36544		if let Ok(ret) = ret {
36545			return to_result("glUniform1uiv", ret, self.glGetError());
36546		} else {
36547			return ret
36548		}
36549		#[cfg(not(feature = "diagnose"))]
36550		return ret;
36551	}
36552	#[inline(always)]
36553	fn glUniform2uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
36554		#[cfg(feature = "catch_nullptr")]
36555		let ret = process_catch("glUniform2uiv", catch_unwind(||(self.uniform2uiv)(location, count, value)));
36556		#[cfg(not(feature = "catch_nullptr"))]
36557		let ret = {(self.uniform2uiv)(location, count, value); Ok(())};
36558		#[cfg(feature = "diagnose")]
36559		if let Ok(ret) = ret {
36560			return to_result("glUniform2uiv", ret, self.glGetError());
36561		} else {
36562			return ret
36563		}
36564		#[cfg(not(feature = "diagnose"))]
36565		return ret;
36566	}
36567	#[inline(always)]
36568	fn glUniform3uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
36569		#[cfg(feature = "catch_nullptr")]
36570		let ret = process_catch("glUniform3uiv", catch_unwind(||(self.uniform3uiv)(location, count, value)));
36571		#[cfg(not(feature = "catch_nullptr"))]
36572		let ret = {(self.uniform3uiv)(location, count, value); Ok(())};
36573		#[cfg(feature = "diagnose")]
36574		if let Ok(ret) = ret {
36575			return to_result("glUniform3uiv", ret, self.glGetError());
36576		} else {
36577			return ret
36578		}
36579		#[cfg(not(feature = "diagnose"))]
36580		return ret;
36581	}
36582	#[inline(always)]
36583	fn glUniform4uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
36584		#[cfg(feature = "catch_nullptr")]
36585		let ret = process_catch("glUniform4uiv", catch_unwind(||(self.uniform4uiv)(location, count, value)));
36586		#[cfg(not(feature = "catch_nullptr"))]
36587		let ret = {(self.uniform4uiv)(location, count, value); Ok(())};
36588		#[cfg(feature = "diagnose")]
36589		if let Ok(ret) = ret {
36590			return to_result("glUniform4uiv", ret, self.glGetError());
36591		} else {
36592			return ret
36593		}
36594		#[cfg(not(feature = "diagnose"))]
36595		return ret;
36596	}
36597	#[inline(always)]
36598	fn glClearBufferiv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLint) -> Result<()> {
36599		#[cfg(feature = "catch_nullptr")]
36600		let ret = process_catch("glClearBufferiv", catch_unwind(||(self.clearbufferiv)(buffer, drawbuffer, value)));
36601		#[cfg(not(feature = "catch_nullptr"))]
36602		let ret = {(self.clearbufferiv)(buffer, drawbuffer, value); Ok(())};
36603		#[cfg(feature = "diagnose")]
36604		if let Ok(ret) = ret {
36605			return to_result("glClearBufferiv", ret, self.glGetError());
36606		} else {
36607			return ret
36608		}
36609		#[cfg(not(feature = "diagnose"))]
36610		return ret;
36611	}
36612	#[inline(always)]
36613	fn glClearBufferuiv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLuint) -> Result<()> {
36614		#[cfg(feature = "catch_nullptr")]
36615		let ret = process_catch("glClearBufferuiv", catch_unwind(||(self.clearbufferuiv)(buffer, drawbuffer, value)));
36616		#[cfg(not(feature = "catch_nullptr"))]
36617		let ret = {(self.clearbufferuiv)(buffer, drawbuffer, value); Ok(())};
36618		#[cfg(feature = "diagnose")]
36619		if let Ok(ret) = ret {
36620			return to_result("glClearBufferuiv", ret, self.glGetError());
36621		} else {
36622			return ret
36623		}
36624		#[cfg(not(feature = "diagnose"))]
36625		return ret;
36626	}
36627	#[inline(always)]
36628	fn glClearBufferfv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLfloat) -> Result<()> {
36629		#[cfg(feature = "catch_nullptr")]
36630		let ret = process_catch("glClearBufferfv", catch_unwind(||(self.clearbufferfv)(buffer, drawbuffer, value)));
36631		#[cfg(not(feature = "catch_nullptr"))]
36632		let ret = {(self.clearbufferfv)(buffer, drawbuffer, value); Ok(())};
36633		#[cfg(feature = "diagnose")]
36634		if let Ok(ret) = ret {
36635			return to_result("glClearBufferfv", ret, self.glGetError());
36636		} else {
36637			return ret
36638		}
36639		#[cfg(not(feature = "diagnose"))]
36640		return ret;
36641	}
36642	#[inline(always)]
36643	fn glClearBufferfi(&self, buffer: GLenum, drawbuffer: GLint, depth: GLfloat, stencil: GLint) -> Result<()> {
36644		#[cfg(feature = "catch_nullptr")]
36645		let ret = process_catch("glClearBufferfi", catch_unwind(||(self.clearbufferfi)(buffer, drawbuffer, depth, stencil)));
36646		#[cfg(not(feature = "catch_nullptr"))]
36647		let ret = {(self.clearbufferfi)(buffer, drawbuffer, depth, stencil); Ok(())};
36648		#[cfg(feature = "diagnose")]
36649		if let Ok(ret) = ret {
36650			return to_result("glClearBufferfi", ret, self.glGetError());
36651		} else {
36652			return ret
36653		}
36654		#[cfg(not(feature = "diagnose"))]
36655		return ret;
36656	}
36657	#[inline(always)]
36658	fn glGetStringi(&self, name: GLenum, index: GLuint) -> Result<&'static str> {
36659		#[cfg(feature = "catch_nullptr")]
36660		let ret = process_catch("glGetStringi", catch_unwind(||unsafe{CStr::from_ptr((self.getstringi)(name, index) as *const i8)}.to_str().unwrap()));
36661		#[cfg(not(feature = "catch_nullptr"))]
36662		let ret = Ok(unsafe{CStr::from_ptr((self.getstringi)(name, index) as *const i8)}.to_str().unwrap());
36663		#[cfg(feature = "diagnose")]
36664		if let Ok(ret) = ret {
36665			return to_result("glGetStringi", ret, self.glGetError());
36666		} else {
36667			return ret
36668		}
36669		#[cfg(not(feature = "diagnose"))]
36670		return ret;
36671	}
36672	#[inline(always)]
36673	fn glCopyBufferSubData(&self, readTarget: GLenum, writeTarget: GLenum, readOffset: GLintptr, writeOffset: GLintptr, size: GLsizeiptr) -> Result<()> {
36674		#[cfg(feature = "catch_nullptr")]
36675		let ret = process_catch("glCopyBufferSubData", catch_unwind(||(self.copybuffersubdata)(readTarget, writeTarget, readOffset, writeOffset, size)));
36676		#[cfg(not(feature = "catch_nullptr"))]
36677		let ret = {(self.copybuffersubdata)(readTarget, writeTarget, readOffset, writeOffset, size); Ok(())};
36678		#[cfg(feature = "diagnose")]
36679		if let Ok(ret) = ret {
36680			return to_result("glCopyBufferSubData", ret, self.glGetError());
36681		} else {
36682			return ret
36683		}
36684		#[cfg(not(feature = "diagnose"))]
36685		return ret;
36686	}
36687	#[inline(always)]
36688	fn glGetUniformIndices(&self, program: GLuint, uniformCount: GLsizei, uniformNames: *const *const GLchar, uniformIndices: *mut GLuint) -> Result<()> {
36689		#[cfg(feature = "catch_nullptr")]
36690		let ret = process_catch("glGetUniformIndices", catch_unwind(||(self.getuniformindices)(program, uniformCount, uniformNames, uniformIndices)));
36691		#[cfg(not(feature = "catch_nullptr"))]
36692		let ret = {(self.getuniformindices)(program, uniformCount, uniformNames, uniformIndices); Ok(())};
36693		#[cfg(feature = "diagnose")]
36694		if let Ok(ret) = ret {
36695			return to_result("glGetUniformIndices", ret, self.glGetError());
36696		} else {
36697			return ret
36698		}
36699		#[cfg(not(feature = "diagnose"))]
36700		return ret;
36701	}
36702	#[inline(always)]
36703	fn glGetActiveUniformsiv(&self, program: GLuint, uniformCount: GLsizei, uniformIndices: *const GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
36704		#[cfg(feature = "catch_nullptr")]
36705		let ret = process_catch("glGetActiveUniformsiv", catch_unwind(||(self.getactiveuniformsiv)(program, uniformCount, uniformIndices, pname, params)));
36706		#[cfg(not(feature = "catch_nullptr"))]
36707		let ret = {(self.getactiveuniformsiv)(program, uniformCount, uniformIndices, pname, params); Ok(())};
36708		#[cfg(feature = "diagnose")]
36709		if let Ok(ret) = ret {
36710			return to_result("glGetActiveUniformsiv", ret, self.glGetError());
36711		} else {
36712			return ret
36713		}
36714		#[cfg(not(feature = "diagnose"))]
36715		return ret;
36716	}
36717	#[inline(always)]
36718	fn glGetUniformBlockIndex(&self, program: GLuint, uniformBlockName: *const GLchar) -> Result<GLuint> {
36719		#[cfg(feature = "catch_nullptr")]
36720		let ret = process_catch("glGetUniformBlockIndex", catch_unwind(||(self.getuniformblockindex)(program, uniformBlockName)));
36721		#[cfg(not(feature = "catch_nullptr"))]
36722		let ret = Ok((self.getuniformblockindex)(program, uniformBlockName));
36723		#[cfg(feature = "diagnose")]
36724		if let Ok(ret) = ret {
36725			return to_result("glGetUniformBlockIndex", ret, self.glGetError());
36726		} else {
36727			return ret
36728		}
36729		#[cfg(not(feature = "diagnose"))]
36730		return ret;
36731	}
36732	#[inline(always)]
36733	fn glGetActiveUniformBlockiv(&self, program: GLuint, uniformBlockIndex: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
36734		#[cfg(feature = "catch_nullptr")]
36735		let ret = process_catch("glGetActiveUniformBlockiv", catch_unwind(||(self.getactiveuniformblockiv)(program, uniformBlockIndex, pname, params)));
36736		#[cfg(not(feature = "catch_nullptr"))]
36737		let ret = {(self.getactiveuniformblockiv)(program, uniformBlockIndex, pname, params); Ok(())};
36738		#[cfg(feature = "diagnose")]
36739		if let Ok(ret) = ret {
36740			return to_result("glGetActiveUniformBlockiv", ret, self.glGetError());
36741		} else {
36742			return ret
36743		}
36744		#[cfg(not(feature = "diagnose"))]
36745		return ret;
36746	}
36747	#[inline(always)]
36748	fn glGetActiveUniformBlockName(&self, program: GLuint, uniformBlockIndex: GLuint, bufSize: GLsizei, length: *mut GLsizei, uniformBlockName: *mut GLchar) -> Result<()> {
36749		#[cfg(feature = "catch_nullptr")]
36750		let ret = process_catch("glGetActiveUniformBlockName", catch_unwind(||(self.getactiveuniformblockname)(program, uniformBlockIndex, bufSize, length, uniformBlockName)));
36751		#[cfg(not(feature = "catch_nullptr"))]
36752		let ret = {(self.getactiveuniformblockname)(program, uniformBlockIndex, bufSize, length, uniformBlockName); Ok(())};
36753		#[cfg(feature = "diagnose")]
36754		if let Ok(ret) = ret {
36755			return to_result("glGetActiveUniformBlockName", ret, self.glGetError());
36756		} else {
36757			return ret
36758		}
36759		#[cfg(not(feature = "diagnose"))]
36760		return ret;
36761	}
36762	#[inline(always)]
36763	fn glUniformBlockBinding(&self, program: GLuint, uniformBlockIndex: GLuint, uniformBlockBinding: GLuint) -> Result<()> {
36764		#[cfg(feature = "catch_nullptr")]
36765		let ret = process_catch("glUniformBlockBinding", catch_unwind(||(self.uniformblockbinding)(program, uniformBlockIndex, uniformBlockBinding)));
36766		#[cfg(not(feature = "catch_nullptr"))]
36767		let ret = {(self.uniformblockbinding)(program, uniformBlockIndex, uniformBlockBinding); Ok(())};
36768		#[cfg(feature = "diagnose")]
36769		if let Ok(ret) = ret {
36770			return to_result("glUniformBlockBinding", ret, self.glGetError());
36771		} else {
36772			return ret
36773		}
36774		#[cfg(not(feature = "diagnose"))]
36775		return ret;
36776	}
36777	#[inline(always)]
36778	fn glDrawArraysInstanced(&self, mode: GLenum, first: GLint, count: GLsizei, instancecount: GLsizei) -> Result<()> {
36779		#[cfg(feature = "catch_nullptr")]
36780		let ret = process_catch("glDrawArraysInstanced", catch_unwind(||(self.drawarraysinstanced)(mode, first, count, instancecount)));
36781		#[cfg(not(feature = "catch_nullptr"))]
36782		let ret = {(self.drawarraysinstanced)(mode, first, count, instancecount); Ok(())};
36783		#[cfg(feature = "diagnose")]
36784		if let Ok(ret) = ret {
36785			return to_result("glDrawArraysInstanced", ret, self.glGetError());
36786		} else {
36787			return ret
36788		}
36789		#[cfg(not(feature = "diagnose"))]
36790		return ret;
36791	}
36792	#[inline(always)]
36793	fn glDrawElementsInstanced(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei) -> Result<()> {
36794		#[cfg(feature = "catch_nullptr")]
36795		let ret = process_catch("glDrawElementsInstanced", catch_unwind(||(self.drawelementsinstanced)(mode, count, type_, indices, instancecount)));
36796		#[cfg(not(feature = "catch_nullptr"))]
36797		let ret = {(self.drawelementsinstanced)(mode, count, type_, indices, instancecount); Ok(())};
36798		#[cfg(feature = "diagnose")]
36799		if let Ok(ret) = ret {
36800			return to_result("glDrawElementsInstanced", ret, self.glGetError());
36801		} else {
36802			return ret
36803		}
36804		#[cfg(not(feature = "diagnose"))]
36805		return ret;
36806	}
36807	#[inline(always)]
36808	fn glFenceSync(&self, condition: GLenum, flags: GLbitfield) -> Result<GLsync> {
36809		#[cfg(feature = "catch_nullptr")]
36810		let ret = process_catch("glFenceSync", catch_unwind(||(self.fencesync)(condition, flags)));
36811		#[cfg(not(feature = "catch_nullptr"))]
36812		let ret = Ok((self.fencesync)(condition, flags));
36813		#[cfg(feature = "diagnose")]
36814		if let Ok(ret) = ret {
36815			return to_result("glFenceSync", ret, self.glGetError());
36816		} else {
36817			return ret
36818		}
36819		#[cfg(not(feature = "diagnose"))]
36820		return ret;
36821	}
36822	#[inline(always)]
36823	fn glIsSync(&self, sync: GLsync) -> Result<GLboolean> {
36824		#[cfg(feature = "catch_nullptr")]
36825		let ret = process_catch("glIsSync", catch_unwind(||(self.issync)(sync)));
36826		#[cfg(not(feature = "catch_nullptr"))]
36827		let ret = Ok((self.issync)(sync));
36828		#[cfg(feature = "diagnose")]
36829		if let Ok(ret) = ret {
36830			return to_result("glIsSync", ret, self.glGetError());
36831		} else {
36832			return ret
36833		}
36834		#[cfg(not(feature = "diagnose"))]
36835		return ret;
36836	}
36837	#[inline(always)]
36838	fn glDeleteSync(&self, sync: GLsync) -> Result<()> {
36839		#[cfg(feature = "catch_nullptr")]
36840		let ret = process_catch("glDeleteSync", catch_unwind(||(self.deletesync)(sync)));
36841		#[cfg(not(feature = "catch_nullptr"))]
36842		let ret = {(self.deletesync)(sync); Ok(())};
36843		#[cfg(feature = "diagnose")]
36844		if let Ok(ret) = ret {
36845			return to_result("glDeleteSync", ret, self.glGetError());
36846		} else {
36847			return ret
36848		}
36849		#[cfg(not(feature = "diagnose"))]
36850		return ret;
36851	}
36852	#[inline(always)]
36853	fn glClientWaitSync(&self, sync: GLsync, flags: GLbitfield, timeout: GLuint64) -> Result<GLenum> {
36854		#[cfg(feature = "catch_nullptr")]
36855		let ret = process_catch("glClientWaitSync", catch_unwind(||(self.clientwaitsync)(sync, flags, timeout)));
36856		#[cfg(not(feature = "catch_nullptr"))]
36857		let ret = Ok((self.clientwaitsync)(sync, flags, timeout));
36858		#[cfg(feature = "diagnose")]
36859		if let Ok(ret) = ret {
36860			return to_result("glClientWaitSync", ret, self.glGetError());
36861		} else {
36862			return ret
36863		}
36864		#[cfg(not(feature = "diagnose"))]
36865		return ret;
36866	}
36867	#[inline(always)]
36868	fn glWaitSync(&self, sync: GLsync, flags: GLbitfield, timeout: GLuint64) -> Result<()> {
36869		#[cfg(feature = "catch_nullptr")]
36870		let ret = process_catch("glWaitSync", catch_unwind(||(self.waitsync)(sync, flags, timeout)));
36871		#[cfg(not(feature = "catch_nullptr"))]
36872		let ret = {(self.waitsync)(sync, flags, timeout); Ok(())};
36873		#[cfg(feature = "diagnose")]
36874		if let Ok(ret) = ret {
36875			return to_result("glWaitSync", ret, self.glGetError());
36876		} else {
36877			return ret
36878		}
36879		#[cfg(not(feature = "diagnose"))]
36880		return ret;
36881	}
36882	#[inline(always)]
36883	fn glGetInteger64v(&self, pname: GLenum, data: *mut GLint64) -> Result<()> {
36884		#[cfg(feature = "catch_nullptr")]
36885		let ret = process_catch("glGetInteger64v", catch_unwind(||(self.getinteger64v)(pname, data)));
36886		#[cfg(not(feature = "catch_nullptr"))]
36887		let ret = {(self.getinteger64v)(pname, data); Ok(())};
36888		#[cfg(feature = "diagnose")]
36889		if let Ok(ret) = ret {
36890			return to_result("glGetInteger64v", ret, self.glGetError());
36891		} else {
36892			return ret
36893		}
36894		#[cfg(not(feature = "diagnose"))]
36895		return ret;
36896	}
36897	#[inline(always)]
36898	fn glGetSynciv(&self, sync: GLsync, pname: GLenum, bufSize: GLsizei, length: *mut GLsizei, values: *mut GLint) -> Result<()> {
36899		#[cfg(feature = "catch_nullptr")]
36900		let ret = process_catch("glGetSynciv", catch_unwind(||(self.getsynciv)(sync, pname, bufSize, length, values)));
36901		#[cfg(not(feature = "catch_nullptr"))]
36902		let ret = {(self.getsynciv)(sync, pname, bufSize, length, values); Ok(())};
36903		#[cfg(feature = "diagnose")]
36904		if let Ok(ret) = ret {
36905			return to_result("glGetSynciv", ret, self.glGetError());
36906		} else {
36907			return ret
36908		}
36909		#[cfg(not(feature = "diagnose"))]
36910		return ret;
36911	}
36912	#[inline(always)]
36913	fn glGetInteger64i_v(&self, target: GLenum, index: GLuint, data: *mut GLint64) -> Result<()> {
36914		#[cfg(feature = "catch_nullptr")]
36915		let ret = process_catch("glGetInteger64i_v", catch_unwind(||(self.getinteger64i_v)(target, index, data)));
36916		#[cfg(not(feature = "catch_nullptr"))]
36917		let ret = {(self.getinteger64i_v)(target, index, data); Ok(())};
36918		#[cfg(feature = "diagnose")]
36919		if let Ok(ret) = ret {
36920			return to_result("glGetInteger64i_v", ret, self.glGetError());
36921		} else {
36922			return ret
36923		}
36924		#[cfg(not(feature = "diagnose"))]
36925		return ret;
36926	}
36927	#[inline(always)]
36928	fn glGetBufferParameteri64v(&self, target: GLenum, pname: GLenum, params: *mut GLint64) -> Result<()> {
36929		#[cfg(feature = "catch_nullptr")]
36930		let ret = process_catch("glGetBufferParameteri64v", catch_unwind(||(self.getbufferparameteri64v)(target, pname, params)));
36931		#[cfg(not(feature = "catch_nullptr"))]
36932		let ret = {(self.getbufferparameteri64v)(target, pname, params); Ok(())};
36933		#[cfg(feature = "diagnose")]
36934		if let Ok(ret) = ret {
36935			return to_result("glGetBufferParameteri64v", ret, self.glGetError());
36936		} else {
36937			return ret
36938		}
36939		#[cfg(not(feature = "diagnose"))]
36940		return ret;
36941	}
36942	#[inline(always)]
36943	fn glGenSamplers(&self, count: GLsizei, samplers: *mut GLuint) -> Result<()> {
36944		#[cfg(feature = "catch_nullptr")]
36945		let ret = process_catch("glGenSamplers", catch_unwind(||(self.gensamplers)(count, samplers)));
36946		#[cfg(not(feature = "catch_nullptr"))]
36947		let ret = {(self.gensamplers)(count, samplers); Ok(())};
36948		#[cfg(feature = "diagnose")]
36949		if let Ok(ret) = ret {
36950			return to_result("glGenSamplers", ret, self.glGetError());
36951		} else {
36952			return ret
36953		}
36954		#[cfg(not(feature = "diagnose"))]
36955		return ret;
36956	}
36957	#[inline(always)]
36958	fn glDeleteSamplers(&self, count: GLsizei, samplers: *const GLuint) -> Result<()> {
36959		#[cfg(feature = "catch_nullptr")]
36960		let ret = process_catch("glDeleteSamplers", catch_unwind(||(self.deletesamplers)(count, samplers)));
36961		#[cfg(not(feature = "catch_nullptr"))]
36962		let ret = {(self.deletesamplers)(count, samplers); Ok(())};
36963		#[cfg(feature = "diagnose")]
36964		if let Ok(ret) = ret {
36965			return to_result("glDeleteSamplers", ret, self.glGetError());
36966		} else {
36967			return ret
36968		}
36969		#[cfg(not(feature = "diagnose"))]
36970		return ret;
36971	}
36972	#[inline(always)]
36973	fn glIsSampler(&self, sampler: GLuint) -> Result<GLboolean> {
36974		#[cfg(feature = "catch_nullptr")]
36975		let ret = process_catch("glIsSampler", catch_unwind(||(self.issampler)(sampler)));
36976		#[cfg(not(feature = "catch_nullptr"))]
36977		let ret = Ok((self.issampler)(sampler));
36978		#[cfg(feature = "diagnose")]
36979		if let Ok(ret) = ret {
36980			return to_result("glIsSampler", ret, self.glGetError());
36981		} else {
36982			return ret
36983		}
36984		#[cfg(not(feature = "diagnose"))]
36985		return ret;
36986	}
36987	#[inline(always)]
36988	fn glBindSampler(&self, unit: GLuint, sampler: GLuint) -> Result<()> {
36989		#[cfg(feature = "catch_nullptr")]
36990		let ret = process_catch("glBindSampler", catch_unwind(||(self.bindsampler)(unit, sampler)));
36991		#[cfg(not(feature = "catch_nullptr"))]
36992		let ret = {(self.bindsampler)(unit, sampler); Ok(())};
36993		#[cfg(feature = "diagnose")]
36994		if let Ok(ret) = ret {
36995			return to_result("glBindSampler", ret, self.glGetError());
36996		} else {
36997			return ret
36998		}
36999		#[cfg(not(feature = "diagnose"))]
37000		return ret;
37001	}
37002	#[inline(always)]
37003	fn glSamplerParameteri(&self, sampler: GLuint, pname: GLenum, param: GLint) -> Result<()> {
37004		#[cfg(feature = "catch_nullptr")]
37005		let ret = process_catch("glSamplerParameteri", catch_unwind(||(self.samplerparameteri)(sampler, pname, param)));
37006		#[cfg(not(feature = "catch_nullptr"))]
37007		let ret = {(self.samplerparameteri)(sampler, pname, param); Ok(())};
37008		#[cfg(feature = "diagnose")]
37009		if let Ok(ret) = ret {
37010			return to_result("glSamplerParameteri", ret, self.glGetError());
37011		} else {
37012			return ret
37013		}
37014		#[cfg(not(feature = "diagnose"))]
37015		return ret;
37016	}
37017	#[inline(always)]
37018	fn glSamplerParameteriv(&self, sampler: GLuint, pname: GLenum, param: *const GLint) -> Result<()> {
37019		#[cfg(feature = "catch_nullptr")]
37020		let ret = process_catch("glSamplerParameteriv", catch_unwind(||(self.samplerparameteriv)(sampler, pname, param)));
37021		#[cfg(not(feature = "catch_nullptr"))]
37022		let ret = {(self.samplerparameteriv)(sampler, pname, param); Ok(())};
37023		#[cfg(feature = "diagnose")]
37024		if let Ok(ret) = ret {
37025			return to_result("glSamplerParameteriv", ret, self.glGetError());
37026		} else {
37027			return ret
37028		}
37029		#[cfg(not(feature = "diagnose"))]
37030		return ret;
37031	}
37032	#[inline(always)]
37033	fn glSamplerParameterf(&self, sampler: GLuint, pname: GLenum, param: GLfloat) -> Result<()> {
37034		#[cfg(feature = "catch_nullptr")]
37035		let ret = process_catch("glSamplerParameterf", catch_unwind(||(self.samplerparameterf)(sampler, pname, param)));
37036		#[cfg(not(feature = "catch_nullptr"))]
37037		let ret = {(self.samplerparameterf)(sampler, pname, param); Ok(())};
37038		#[cfg(feature = "diagnose")]
37039		if let Ok(ret) = ret {
37040			return to_result("glSamplerParameterf", ret, self.glGetError());
37041		} else {
37042			return ret
37043		}
37044		#[cfg(not(feature = "diagnose"))]
37045		return ret;
37046	}
37047	#[inline(always)]
37048	fn glSamplerParameterfv(&self, sampler: GLuint, pname: GLenum, param: *const GLfloat) -> Result<()> {
37049		#[cfg(feature = "catch_nullptr")]
37050		let ret = process_catch("glSamplerParameterfv", catch_unwind(||(self.samplerparameterfv)(sampler, pname, param)));
37051		#[cfg(not(feature = "catch_nullptr"))]
37052		let ret = {(self.samplerparameterfv)(sampler, pname, param); Ok(())};
37053		#[cfg(feature = "diagnose")]
37054		if let Ok(ret) = ret {
37055			return to_result("glSamplerParameterfv", ret, self.glGetError());
37056		} else {
37057			return ret
37058		}
37059		#[cfg(not(feature = "diagnose"))]
37060		return ret;
37061	}
37062	#[inline(always)]
37063	fn glGetSamplerParameteriv(&self, sampler: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
37064		#[cfg(feature = "catch_nullptr")]
37065		let ret = process_catch("glGetSamplerParameteriv", catch_unwind(||(self.getsamplerparameteriv)(sampler, pname, params)));
37066		#[cfg(not(feature = "catch_nullptr"))]
37067		let ret = {(self.getsamplerparameteriv)(sampler, pname, params); Ok(())};
37068		#[cfg(feature = "diagnose")]
37069		if let Ok(ret) = ret {
37070			return to_result("glGetSamplerParameteriv", ret, self.glGetError());
37071		} else {
37072			return ret
37073		}
37074		#[cfg(not(feature = "diagnose"))]
37075		return ret;
37076	}
37077	#[inline(always)]
37078	fn glGetSamplerParameterfv(&self, sampler: GLuint, pname: GLenum, params: *mut GLfloat) -> Result<()> {
37079		#[cfg(feature = "catch_nullptr")]
37080		let ret = process_catch("glGetSamplerParameterfv", catch_unwind(||(self.getsamplerparameterfv)(sampler, pname, params)));
37081		#[cfg(not(feature = "catch_nullptr"))]
37082		let ret = {(self.getsamplerparameterfv)(sampler, pname, params); Ok(())};
37083		#[cfg(feature = "diagnose")]
37084		if let Ok(ret) = ret {
37085			return to_result("glGetSamplerParameterfv", ret, self.glGetError());
37086		} else {
37087			return ret
37088		}
37089		#[cfg(not(feature = "diagnose"))]
37090		return ret;
37091	}
37092	#[inline(always)]
37093	fn glVertexAttribDivisor(&self, index: GLuint, divisor: GLuint) -> Result<()> {
37094		#[cfg(feature = "catch_nullptr")]
37095		let ret = process_catch("glVertexAttribDivisor", catch_unwind(||(self.vertexattribdivisor)(index, divisor)));
37096		#[cfg(not(feature = "catch_nullptr"))]
37097		let ret = {(self.vertexattribdivisor)(index, divisor); Ok(())};
37098		#[cfg(feature = "diagnose")]
37099		if let Ok(ret) = ret {
37100			return to_result("glVertexAttribDivisor", ret, self.glGetError());
37101		} else {
37102			return ret
37103		}
37104		#[cfg(not(feature = "diagnose"))]
37105		return ret;
37106	}
37107	#[inline(always)]
37108	fn glBindTransformFeedback(&self, target: GLenum, id: GLuint) -> Result<()> {
37109		#[cfg(feature = "catch_nullptr")]
37110		let ret = process_catch("glBindTransformFeedback", catch_unwind(||(self.bindtransformfeedback)(target, id)));
37111		#[cfg(not(feature = "catch_nullptr"))]
37112		let ret = {(self.bindtransformfeedback)(target, id); Ok(())};
37113		#[cfg(feature = "diagnose")]
37114		if let Ok(ret) = ret {
37115			return to_result("glBindTransformFeedback", ret, self.glGetError());
37116		} else {
37117			return ret
37118		}
37119		#[cfg(not(feature = "diagnose"))]
37120		return ret;
37121	}
37122	#[inline(always)]
37123	fn glDeleteTransformFeedbacks(&self, n: GLsizei, ids: *const GLuint) -> Result<()> {
37124		#[cfg(feature = "catch_nullptr")]
37125		let ret = process_catch("glDeleteTransformFeedbacks", catch_unwind(||(self.deletetransformfeedbacks)(n, ids)));
37126		#[cfg(not(feature = "catch_nullptr"))]
37127		let ret = {(self.deletetransformfeedbacks)(n, ids); Ok(())};
37128		#[cfg(feature = "diagnose")]
37129		if let Ok(ret) = ret {
37130			return to_result("glDeleteTransformFeedbacks", ret, self.glGetError());
37131		} else {
37132			return ret
37133		}
37134		#[cfg(not(feature = "diagnose"))]
37135		return ret;
37136	}
37137	#[inline(always)]
37138	fn glGenTransformFeedbacks(&self, n: GLsizei, ids: *mut GLuint) -> Result<()> {
37139		#[cfg(feature = "catch_nullptr")]
37140		let ret = process_catch("glGenTransformFeedbacks", catch_unwind(||(self.gentransformfeedbacks)(n, ids)));
37141		#[cfg(not(feature = "catch_nullptr"))]
37142		let ret = {(self.gentransformfeedbacks)(n, ids); Ok(())};
37143		#[cfg(feature = "diagnose")]
37144		if let Ok(ret) = ret {
37145			return to_result("glGenTransformFeedbacks", ret, self.glGetError());
37146		} else {
37147			return ret
37148		}
37149		#[cfg(not(feature = "diagnose"))]
37150		return ret;
37151	}
37152	#[inline(always)]
37153	fn glIsTransformFeedback(&self, id: GLuint) -> Result<GLboolean> {
37154		#[cfg(feature = "catch_nullptr")]
37155		let ret = process_catch("glIsTransformFeedback", catch_unwind(||(self.istransformfeedback)(id)));
37156		#[cfg(not(feature = "catch_nullptr"))]
37157		let ret = Ok((self.istransformfeedback)(id));
37158		#[cfg(feature = "diagnose")]
37159		if let Ok(ret) = ret {
37160			return to_result("glIsTransformFeedback", ret, self.glGetError());
37161		} else {
37162			return ret
37163		}
37164		#[cfg(not(feature = "diagnose"))]
37165		return ret;
37166	}
37167	#[inline(always)]
37168	fn glPauseTransformFeedback(&self) -> Result<()> {
37169		#[cfg(feature = "catch_nullptr")]
37170		let ret = process_catch("glPauseTransformFeedback", catch_unwind(||(self.pausetransformfeedback)()));
37171		#[cfg(not(feature = "catch_nullptr"))]
37172		let ret = {(self.pausetransformfeedback)(); Ok(())};
37173		#[cfg(feature = "diagnose")]
37174		if let Ok(ret) = ret {
37175			return to_result("glPauseTransformFeedback", ret, self.glGetError());
37176		} else {
37177			return ret
37178		}
37179		#[cfg(not(feature = "diagnose"))]
37180		return ret;
37181	}
37182	#[inline(always)]
37183	fn glResumeTransformFeedback(&self) -> Result<()> {
37184		#[cfg(feature = "catch_nullptr")]
37185		let ret = process_catch("glResumeTransformFeedback", catch_unwind(||(self.resumetransformfeedback)()));
37186		#[cfg(not(feature = "catch_nullptr"))]
37187		let ret = {(self.resumetransformfeedback)(); Ok(())};
37188		#[cfg(feature = "diagnose")]
37189		if let Ok(ret) = ret {
37190			return to_result("glResumeTransformFeedback", ret, self.glGetError());
37191		} else {
37192			return ret
37193		}
37194		#[cfg(not(feature = "diagnose"))]
37195		return ret;
37196	}
37197	#[inline(always)]
37198	fn glGetProgramBinary(&self, program: GLuint, bufSize: GLsizei, length: *mut GLsizei, binaryFormat: *mut GLenum, binary: *mut c_void) -> Result<()> {
37199		#[cfg(feature = "catch_nullptr")]
37200		let ret = process_catch("glGetProgramBinary", catch_unwind(||(self.getprogrambinary)(program, bufSize, length, binaryFormat, binary)));
37201		#[cfg(not(feature = "catch_nullptr"))]
37202		let ret = {(self.getprogrambinary)(program, bufSize, length, binaryFormat, binary); Ok(())};
37203		#[cfg(feature = "diagnose")]
37204		if let Ok(ret) = ret {
37205			return to_result("glGetProgramBinary", ret, self.glGetError());
37206		} else {
37207			return ret
37208		}
37209		#[cfg(not(feature = "diagnose"))]
37210		return ret;
37211	}
37212	#[inline(always)]
37213	fn glProgramBinary(&self, program: GLuint, binaryFormat: GLenum, binary: *const c_void, length: GLsizei) -> Result<()> {
37214		#[cfg(feature = "catch_nullptr")]
37215		let ret = process_catch("glProgramBinary", catch_unwind(||(self.programbinary)(program, binaryFormat, binary, length)));
37216		#[cfg(not(feature = "catch_nullptr"))]
37217		let ret = {(self.programbinary)(program, binaryFormat, binary, length); Ok(())};
37218		#[cfg(feature = "diagnose")]
37219		if let Ok(ret) = ret {
37220			return to_result("glProgramBinary", ret, self.glGetError());
37221		} else {
37222			return ret
37223		}
37224		#[cfg(not(feature = "diagnose"))]
37225		return ret;
37226	}
37227	#[inline(always)]
37228	fn glProgramParameteri(&self, program: GLuint, pname: GLenum, value: GLint) -> Result<()> {
37229		#[cfg(feature = "catch_nullptr")]
37230		let ret = process_catch("glProgramParameteri", catch_unwind(||(self.programparameteri)(program, pname, value)));
37231		#[cfg(not(feature = "catch_nullptr"))]
37232		let ret = {(self.programparameteri)(program, pname, value); Ok(())};
37233		#[cfg(feature = "diagnose")]
37234		if let Ok(ret) = ret {
37235			return to_result("glProgramParameteri", ret, self.glGetError());
37236		} else {
37237			return ret
37238		}
37239		#[cfg(not(feature = "diagnose"))]
37240		return ret;
37241	}
37242	#[inline(always)]
37243	fn glInvalidateFramebuffer(&self, target: GLenum, numAttachments: GLsizei, attachments: *const GLenum) -> Result<()> {
37244		#[cfg(feature = "catch_nullptr")]
37245		let ret = process_catch("glInvalidateFramebuffer", catch_unwind(||(self.invalidateframebuffer)(target, numAttachments, attachments)));
37246		#[cfg(not(feature = "catch_nullptr"))]
37247		let ret = {(self.invalidateframebuffer)(target, numAttachments, attachments); Ok(())};
37248		#[cfg(feature = "diagnose")]
37249		if let Ok(ret) = ret {
37250			return to_result("glInvalidateFramebuffer", ret, self.glGetError());
37251		} else {
37252			return ret
37253		}
37254		#[cfg(not(feature = "diagnose"))]
37255		return ret;
37256	}
37257	#[inline(always)]
37258	fn glInvalidateSubFramebuffer(&self, target: GLenum, numAttachments: GLsizei, attachments: *const GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
37259		#[cfg(feature = "catch_nullptr")]
37260		let ret = process_catch("glInvalidateSubFramebuffer", catch_unwind(||(self.invalidatesubframebuffer)(target, numAttachments, attachments, x, y, width, height)));
37261		#[cfg(not(feature = "catch_nullptr"))]
37262		let ret = {(self.invalidatesubframebuffer)(target, numAttachments, attachments, x, y, width, height); Ok(())};
37263		#[cfg(feature = "diagnose")]
37264		if let Ok(ret) = ret {
37265			return to_result("glInvalidateSubFramebuffer", ret, self.glGetError());
37266		} else {
37267			return ret
37268		}
37269		#[cfg(not(feature = "diagnose"))]
37270		return ret;
37271	}
37272	#[inline(always)]
37273	fn glTexStorage2D(&self, target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()> {
37274		#[cfg(feature = "catch_nullptr")]
37275		let ret = process_catch("glTexStorage2D", catch_unwind(||(self.texstorage2d)(target, levels, internalformat, width, height)));
37276		#[cfg(not(feature = "catch_nullptr"))]
37277		let ret = {(self.texstorage2d)(target, levels, internalformat, width, height); Ok(())};
37278		#[cfg(feature = "diagnose")]
37279		if let Ok(ret) = ret {
37280			return to_result("glTexStorage2D", ret, self.glGetError());
37281		} else {
37282			return ret
37283		}
37284		#[cfg(not(feature = "diagnose"))]
37285		return ret;
37286	}
37287	#[inline(always)]
37288	fn glTexStorage3D(&self, target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei) -> Result<()> {
37289		#[cfg(feature = "catch_nullptr")]
37290		let ret = process_catch("glTexStorage3D", catch_unwind(||(self.texstorage3d)(target, levels, internalformat, width, height, depth)));
37291		#[cfg(not(feature = "catch_nullptr"))]
37292		let ret = {(self.texstorage3d)(target, levels, internalformat, width, height, depth); Ok(())};
37293		#[cfg(feature = "diagnose")]
37294		if let Ok(ret) = ret {
37295			return to_result("glTexStorage3D", ret, self.glGetError());
37296		} else {
37297			return ret
37298		}
37299		#[cfg(not(feature = "diagnose"))]
37300		return ret;
37301	}
37302	#[inline(always)]
37303	fn glGetInternalformativ(&self, target: GLenum, internalformat: GLenum, pname: GLenum, bufSize: GLsizei, params: *mut GLint) -> Result<()> {
37304		#[cfg(feature = "catch_nullptr")]
37305		let ret = process_catch("glGetInternalformativ", catch_unwind(||(self.getinternalformativ)(target, internalformat, pname, bufSize, params)));
37306		#[cfg(not(feature = "catch_nullptr"))]
37307		let ret = {(self.getinternalformativ)(target, internalformat, pname, bufSize, params); Ok(())};
37308		#[cfg(feature = "diagnose")]
37309		if let Ok(ret) = ret {
37310			return to_result("glGetInternalformativ", ret, self.glGetError());
37311		} else {
37312			return ret
37313		}
37314		#[cfg(not(feature = "diagnose"))]
37315		return ret;
37316	}
37317}
37318
37319impl EsVersion30 {
37320	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
37321		let (_spec, major, minor, release) = base.get_version();
37322		if (major, minor, release) < (3, 0, 0) {
37323			return Self::default();
37324		}
37325		Self {
37326			available: true,
37327			geterror: {let proc = get_proc_address("glGetError"); if proc.is_null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
37328			readbuffer: {let proc = get_proc_address("glReadBuffer"); if proc.is_null() {dummy_pfnglreadbufferproc} else {unsafe{transmute(proc)}}},
37329			drawrangeelements: {let proc = get_proc_address("glDrawRangeElements"); if proc.is_null() {dummy_pfngldrawrangeelementsproc} else {unsafe{transmute(proc)}}},
37330			teximage3d: {let proc = get_proc_address("glTexImage3D"); if proc.is_null() {dummy_pfnglteximage3dproc} else {unsafe{transmute(proc)}}},
37331			texsubimage3d: {let proc = get_proc_address("glTexSubImage3D"); if proc.is_null() {dummy_pfngltexsubimage3dproc} else {unsafe{transmute(proc)}}},
37332			copytexsubimage3d: {let proc = get_proc_address("glCopyTexSubImage3D"); if proc.is_null() {dummy_pfnglcopytexsubimage3dproc} else {unsafe{transmute(proc)}}},
37333			compressedteximage3d: {let proc = get_proc_address("glCompressedTexImage3D"); if proc.is_null() {dummy_pfnglcompressedteximage3dproc} else {unsafe{transmute(proc)}}},
37334			compressedtexsubimage3d: {let proc = get_proc_address("glCompressedTexSubImage3D"); if proc.is_null() {dummy_pfnglcompressedtexsubimage3dproc} else {unsafe{transmute(proc)}}},
37335			genqueries: {let proc = get_proc_address("glGenQueries"); if proc.is_null() {dummy_pfnglgenqueriesproc} else {unsafe{transmute(proc)}}},
37336			deletequeries: {let proc = get_proc_address("glDeleteQueries"); if proc.is_null() {dummy_pfngldeletequeriesproc} else {unsafe{transmute(proc)}}},
37337			isquery: {let proc = get_proc_address("glIsQuery"); if proc.is_null() {dummy_pfnglisqueryproc} else {unsafe{transmute(proc)}}},
37338			beginquery: {let proc = get_proc_address("glBeginQuery"); if proc.is_null() {dummy_pfnglbeginqueryproc} else {unsafe{transmute(proc)}}},
37339			endquery: {let proc = get_proc_address("glEndQuery"); if proc.is_null() {dummy_pfnglendqueryproc} else {unsafe{transmute(proc)}}},
37340			getqueryiv: {let proc = get_proc_address("glGetQueryiv"); if proc.is_null() {dummy_pfnglgetqueryivproc} else {unsafe{transmute(proc)}}},
37341			getqueryobjectuiv: {let proc = get_proc_address("glGetQueryObjectuiv"); if proc.is_null() {dummy_pfnglgetqueryobjectuivproc} else {unsafe{transmute(proc)}}},
37342			unmapbuffer: {let proc = get_proc_address("glUnmapBuffer"); if proc.is_null() {dummy_pfnglunmapbufferproc} else {unsafe{transmute(proc)}}},
37343			getbufferpointerv: {let proc = get_proc_address("glGetBufferPointerv"); if proc.is_null() {dummy_pfnglgetbufferpointervproc} else {unsafe{transmute(proc)}}},
37344			drawbuffers: {let proc = get_proc_address("glDrawBuffers"); if proc.is_null() {dummy_pfngldrawbuffersproc} else {unsafe{transmute(proc)}}},
37345			uniformmatrix2x3fv: {let proc = get_proc_address("glUniformMatrix2x3fv"); if proc.is_null() {dummy_pfngluniformmatrix2x3fvproc} else {unsafe{transmute(proc)}}},
37346			uniformmatrix3x2fv: {let proc = get_proc_address("glUniformMatrix3x2fv"); if proc.is_null() {dummy_pfngluniformmatrix3x2fvproc} else {unsafe{transmute(proc)}}},
37347			uniformmatrix2x4fv: {let proc = get_proc_address("glUniformMatrix2x4fv"); if proc.is_null() {dummy_pfngluniformmatrix2x4fvproc} else {unsafe{transmute(proc)}}},
37348			uniformmatrix4x2fv: {let proc = get_proc_address("glUniformMatrix4x2fv"); if proc.is_null() {dummy_pfngluniformmatrix4x2fvproc} else {unsafe{transmute(proc)}}},
37349			uniformmatrix3x4fv: {let proc = get_proc_address("glUniformMatrix3x4fv"); if proc.is_null() {dummy_pfngluniformmatrix3x4fvproc} else {unsafe{transmute(proc)}}},
37350			uniformmatrix4x3fv: {let proc = get_proc_address("glUniformMatrix4x3fv"); if proc.is_null() {dummy_pfngluniformmatrix4x3fvproc} else {unsafe{transmute(proc)}}},
37351			blitframebuffer: {let proc = get_proc_address("glBlitFramebuffer"); if proc.is_null() {dummy_pfnglblitframebufferproc} else {unsafe{transmute(proc)}}},
37352			renderbufferstoragemultisample: {let proc = get_proc_address("glRenderbufferStorageMultisample"); if proc.is_null() {dummy_pfnglrenderbufferstoragemultisampleproc} else {unsafe{transmute(proc)}}},
37353			framebuffertexturelayer: {let proc = get_proc_address("glFramebufferTextureLayer"); if proc.is_null() {dummy_pfnglframebuffertexturelayerproc} else {unsafe{transmute(proc)}}},
37354			mapbufferrange: {let proc = get_proc_address("glMapBufferRange"); if proc.is_null() {dummy_pfnglmapbufferrangeproc} else {unsafe{transmute(proc)}}},
37355			flushmappedbufferrange: {let proc = get_proc_address("glFlushMappedBufferRange"); if proc.is_null() {dummy_pfnglflushmappedbufferrangeproc} else {unsafe{transmute(proc)}}},
37356			bindvertexarray: {let proc = get_proc_address("glBindVertexArray"); if proc.is_null() {dummy_pfnglbindvertexarrayproc} else {unsafe{transmute(proc)}}},
37357			deletevertexarrays: {let proc = get_proc_address("glDeleteVertexArrays"); if proc.is_null() {dummy_pfngldeletevertexarraysproc} else {unsafe{transmute(proc)}}},
37358			genvertexarrays: {let proc = get_proc_address("glGenVertexArrays"); if proc.is_null() {dummy_pfnglgenvertexarraysproc} else {unsafe{transmute(proc)}}},
37359			isvertexarray: {let proc = get_proc_address("glIsVertexArray"); if proc.is_null() {dummy_pfnglisvertexarrayproc} else {unsafe{transmute(proc)}}},
37360			getintegeri_v: {let proc = get_proc_address("glGetIntegeri_v"); if proc.is_null() {dummy_pfnglgetintegeri_vproc} else {unsafe{transmute(proc)}}},
37361			begintransformfeedback: {let proc = get_proc_address("glBeginTransformFeedback"); if proc.is_null() {dummy_pfnglbegintransformfeedbackproc} else {unsafe{transmute(proc)}}},
37362			endtransformfeedback: {let proc = get_proc_address("glEndTransformFeedback"); if proc.is_null() {dummy_pfnglendtransformfeedbackproc} else {unsafe{transmute(proc)}}},
37363			bindbufferrange: {let proc = get_proc_address("glBindBufferRange"); if proc.is_null() {dummy_pfnglbindbufferrangeproc} else {unsafe{transmute(proc)}}},
37364			bindbufferbase: {let proc = get_proc_address("glBindBufferBase"); if proc.is_null() {dummy_pfnglbindbufferbaseproc} else {unsafe{transmute(proc)}}},
37365			transformfeedbackvaryings: {let proc = get_proc_address("glTransformFeedbackVaryings"); if proc.is_null() {dummy_pfngltransformfeedbackvaryingsproc} else {unsafe{transmute(proc)}}},
37366			gettransformfeedbackvarying: {let proc = get_proc_address("glGetTransformFeedbackVarying"); if proc.is_null() {dummy_pfnglgettransformfeedbackvaryingproc} else {unsafe{transmute(proc)}}},
37367			vertexattribipointer: {let proc = get_proc_address("glVertexAttribIPointer"); if proc.is_null() {dummy_pfnglvertexattribipointerproc} else {unsafe{transmute(proc)}}},
37368			getvertexattribiiv: {let proc = get_proc_address("glGetVertexAttribIiv"); if proc.is_null() {dummy_pfnglgetvertexattribiivproc} else {unsafe{transmute(proc)}}},
37369			getvertexattribiuiv: {let proc = get_proc_address("glGetVertexAttribIuiv"); if proc.is_null() {dummy_pfnglgetvertexattribiuivproc} else {unsafe{transmute(proc)}}},
37370			vertexattribi4i: {let proc = get_proc_address("glVertexAttribI4i"); if proc.is_null() {dummy_pfnglvertexattribi4iproc} else {unsafe{transmute(proc)}}},
37371			vertexattribi4ui: {let proc = get_proc_address("glVertexAttribI4ui"); if proc.is_null() {dummy_pfnglvertexattribi4uiproc} else {unsafe{transmute(proc)}}},
37372			vertexattribi4iv: {let proc = get_proc_address("glVertexAttribI4iv"); if proc.is_null() {dummy_pfnglvertexattribi4ivproc} else {unsafe{transmute(proc)}}},
37373			vertexattribi4uiv: {let proc = get_proc_address("glVertexAttribI4uiv"); if proc.is_null() {dummy_pfnglvertexattribi4uivproc} else {unsafe{transmute(proc)}}},
37374			getuniformuiv: {let proc = get_proc_address("glGetUniformuiv"); if proc.is_null() {dummy_pfnglgetuniformuivproc} else {unsafe{transmute(proc)}}},
37375			getfragdatalocation: {let proc = get_proc_address("glGetFragDataLocation"); if proc.is_null() {dummy_pfnglgetfragdatalocationproc} else {unsafe{transmute(proc)}}},
37376			uniform1ui: {let proc = get_proc_address("glUniform1ui"); if proc.is_null() {dummy_pfngluniform1uiproc} else {unsafe{transmute(proc)}}},
37377			uniform2ui: {let proc = get_proc_address("glUniform2ui"); if proc.is_null() {dummy_pfngluniform2uiproc} else {unsafe{transmute(proc)}}},
37378			uniform3ui: {let proc = get_proc_address("glUniform3ui"); if proc.is_null() {dummy_pfngluniform3uiproc} else {unsafe{transmute(proc)}}},
37379			uniform4ui: {let proc = get_proc_address("glUniform4ui"); if proc.is_null() {dummy_pfngluniform4uiproc} else {unsafe{transmute(proc)}}},
37380			uniform1uiv: {let proc = get_proc_address("glUniform1uiv"); if proc.is_null() {dummy_pfngluniform1uivproc} else {unsafe{transmute(proc)}}},
37381			uniform2uiv: {let proc = get_proc_address("glUniform2uiv"); if proc.is_null() {dummy_pfngluniform2uivproc} else {unsafe{transmute(proc)}}},
37382			uniform3uiv: {let proc = get_proc_address("glUniform3uiv"); if proc.is_null() {dummy_pfngluniform3uivproc} else {unsafe{transmute(proc)}}},
37383			uniform4uiv: {let proc = get_proc_address("glUniform4uiv"); if proc.is_null() {dummy_pfngluniform4uivproc} else {unsafe{transmute(proc)}}},
37384			clearbufferiv: {let proc = get_proc_address("glClearBufferiv"); if proc.is_null() {dummy_pfnglclearbufferivproc} else {unsafe{transmute(proc)}}},
37385			clearbufferuiv: {let proc = get_proc_address("glClearBufferuiv"); if proc.is_null() {dummy_pfnglclearbufferuivproc} else {unsafe{transmute(proc)}}},
37386			clearbufferfv: {let proc = get_proc_address("glClearBufferfv"); if proc.is_null() {dummy_pfnglclearbufferfvproc} else {unsafe{transmute(proc)}}},
37387			clearbufferfi: {let proc = get_proc_address("glClearBufferfi"); if proc.is_null() {dummy_pfnglclearbufferfiproc} else {unsafe{transmute(proc)}}},
37388			getstringi: {let proc = get_proc_address("glGetStringi"); if proc.is_null() {dummy_pfnglgetstringiproc} else {unsafe{transmute(proc)}}},
37389			copybuffersubdata: {let proc = get_proc_address("glCopyBufferSubData"); if proc.is_null() {dummy_pfnglcopybuffersubdataproc} else {unsafe{transmute(proc)}}},
37390			getuniformindices: {let proc = get_proc_address("glGetUniformIndices"); if proc.is_null() {dummy_pfnglgetuniformindicesproc} else {unsafe{transmute(proc)}}},
37391			getactiveuniformsiv: {let proc = get_proc_address("glGetActiveUniformsiv"); if proc.is_null() {dummy_pfnglgetactiveuniformsivproc} else {unsafe{transmute(proc)}}},
37392			getuniformblockindex: {let proc = get_proc_address("glGetUniformBlockIndex"); if proc.is_null() {dummy_pfnglgetuniformblockindexproc} else {unsafe{transmute(proc)}}},
37393			getactiveuniformblockiv: {let proc = get_proc_address("glGetActiveUniformBlockiv"); if proc.is_null() {dummy_pfnglgetactiveuniformblockivproc} else {unsafe{transmute(proc)}}},
37394			getactiveuniformblockname: {let proc = get_proc_address("glGetActiveUniformBlockName"); if proc.is_null() {dummy_pfnglgetactiveuniformblocknameproc} else {unsafe{transmute(proc)}}},
37395			uniformblockbinding: {let proc = get_proc_address("glUniformBlockBinding"); if proc.is_null() {dummy_pfngluniformblockbindingproc} else {unsafe{transmute(proc)}}},
37396			drawarraysinstanced: {let proc = get_proc_address("glDrawArraysInstanced"); if proc.is_null() {dummy_pfngldrawarraysinstancedproc} else {unsafe{transmute(proc)}}},
37397			drawelementsinstanced: {let proc = get_proc_address("glDrawElementsInstanced"); if proc.is_null() {dummy_pfngldrawelementsinstancedproc} else {unsafe{transmute(proc)}}},
37398			fencesync: {let proc = get_proc_address("glFenceSync"); if proc.is_null() {dummy_pfnglfencesyncproc} else {unsafe{transmute(proc)}}},
37399			issync: {let proc = get_proc_address("glIsSync"); if proc.is_null() {dummy_pfnglissyncproc} else {unsafe{transmute(proc)}}},
37400			deletesync: {let proc = get_proc_address("glDeleteSync"); if proc.is_null() {dummy_pfngldeletesyncproc} else {unsafe{transmute(proc)}}},
37401			clientwaitsync: {let proc = get_proc_address("glClientWaitSync"); if proc.is_null() {dummy_pfnglclientwaitsyncproc} else {unsafe{transmute(proc)}}},
37402			waitsync: {let proc = get_proc_address("glWaitSync"); if proc.is_null() {dummy_pfnglwaitsyncproc} else {unsafe{transmute(proc)}}},
37403			getinteger64v: {let proc = get_proc_address("glGetInteger64v"); if proc.is_null() {dummy_pfnglgetinteger64vproc} else {unsafe{transmute(proc)}}},
37404			getsynciv: {let proc = get_proc_address("glGetSynciv"); if proc.is_null() {dummy_pfnglgetsyncivproc} else {unsafe{transmute(proc)}}},
37405			getinteger64i_v: {let proc = get_proc_address("glGetInteger64i_v"); if proc.is_null() {dummy_pfnglgetinteger64i_vproc} else {unsafe{transmute(proc)}}},
37406			getbufferparameteri64v: {let proc = get_proc_address("glGetBufferParameteri64v"); if proc.is_null() {dummy_pfnglgetbufferparameteri64vproc} else {unsafe{transmute(proc)}}},
37407			gensamplers: {let proc = get_proc_address("glGenSamplers"); if proc.is_null() {dummy_pfnglgensamplersproc} else {unsafe{transmute(proc)}}},
37408			deletesamplers: {let proc = get_proc_address("glDeleteSamplers"); if proc.is_null() {dummy_pfngldeletesamplersproc} else {unsafe{transmute(proc)}}},
37409			issampler: {let proc = get_proc_address("glIsSampler"); if proc.is_null() {dummy_pfnglissamplerproc} else {unsafe{transmute(proc)}}},
37410			bindsampler: {let proc = get_proc_address("glBindSampler"); if proc.is_null() {dummy_pfnglbindsamplerproc} else {unsafe{transmute(proc)}}},
37411			samplerparameteri: {let proc = get_proc_address("glSamplerParameteri"); if proc.is_null() {dummy_pfnglsamplerparameteriproc} else {unsafe{transmute(proc)}}},
37412			samplerparameteriv: {let proc = get_proc_address("glSamplerParameteriv"); if proc.is_null() {dummy_pfnglsamplerparameterivproc} else {unsafe{transmute(proc)}}},
37413			samplerparameterf: {let proc = get_proc_address("glSamplerParameterf"); if proc.is_null() {dummy_pfnglsamplerparameterfproc} else {unsafe{transmute(proc)}}},
37414			samplerparameterfv: {let proc = get_proc_address("glSamplerParameterfv"); if proc.is_null() {dummy_pfnglsamplerparameterfvproc} else {unsafe{transmute(proc)}}},
37415			getsamplerparameteriv: {let proc = get_proc_address("glGetSamplerParameteriv"); if proc.is_null() {dummy_pfnglgetsamplerparameterivproc} else {unsafe{transmute(proc)}}},
37416			getsamplerparameterfv: {let proc = get_proc_address("glGetSamplerParameterfv"); if proc.is_null() {dummy_pfnglgetsamplerparameterfvproc} else {unsafe{transmute(proc)}}},
37417			vertexattribdivisor: {let proc = get_proc_address("glVertexAttribDivisor"); if proc.is_null() {dummy_pfnglvertexattribdivisorproc} else {unsafe{transmute(proc)}}},
37418			bindtransformfeedback: {let proc = get_proc_address("glBindTransformFeedback"); if proc.is_null() {dummy_pfnglbindtransformfeedbackproc} else {unsafe{transmute(proc)}}},
37419			deletetransformfeedbacks: {let proc = get_proc_address("glDeleteTransformFeedbacks"); if proc.is_null() {dummy_pfngldeletetransformfeedbacksproc} else {unsafe{transmute(proc)}}},
37420			gentransformfeedbacks: {let proc = get_proc_address("glGenTransformFeedbacks"); if proc.is_null() {dummy_pfnglgentransformfeedbacksproc} else {unsafe{transmute(proc)}}},
37421			istransformfeedback: {let proc = get_proc_address("glIsTransformFeedback"); if proc.is_null() {dummy_pfnglistransformfeedbackproc} else {unsafe{transmute(proc)}}},
37422			pausetransformfeedback: {let proc = get_proc_address("glPauseTransformFeedback"); if proc.is_null() {dummy_pfnglpausetransformfeedbackproc} else {unsafe{transmute(proc)}}},
37423			resumetransformfeedback: {let proc = get_proc_address("glResumeTransformFeedback"); if proc.is_null() {dummy_pfnglresumetransformfeedbackproc} else {unsafe{transmute(proc)}}},
37424			getprogrambinary: {let proc = get_proc_address("glGetProgramBinary"); if proc.is_null() {dummy_pfnglgetprogrambinaryproc} else {unsafe{transmute(proc)}}},
37425			programbinary: {let proc = get_proc_address("glProgramBinary"); if proc.is_null() {dummy_pfnglprogrambinaryproc} else {unsafe{transmute(proc)}}},
37426			programparameteri: {let proc = get_proc_address("glProgramParameteri"); if proc.is_null() {dummy_pfnglprogramparameteriproc} else {unsafe{transmute(proc)}}},
37427			invalidateframebuffer: {let proc = get_proc_address("glInvalidateFramebuffer"); if proc.is_null() {dummy_pfnglinvalidateframebufferproc} else {unsafe{transmute(proc)}}},
37428			invalidatesubframebuffer: {let proc = get_proc_address("glInvalidateSubFramebuffer"); if proc.is_null() {dummy_pfnglinvalidatesubframebufferproc} else {unsafe{transmute(proc)}}},
37429			texstorage2d: {let proc = get_proc_address("glTexStorage2D"); if proc.is_null() {dummy_pfngltexstorage2dproc} else {unsafe{transmute(proc)}}},
37430			texstorage3d: {let proc = get_proc_address("glTexStorage3D"); if proc.is_null() {dummy_pfngltexstorage3dproc} else {unsafe{transmute(proc)}}},
37431			getinternalformativ: {let proc = get_proc_address("glGetInternalformativ"); if proc.is_null() {dummy_pfnglgetinternalformativproc} else {unsafe{transmute(proc)}}},
37432		}
37433	}
37434	#[inline(always)]
37435	pub fn get_available(&self) -> bool {
37436		self.available
37437	}
37438}
37439
37440impl Default for EsVersion30 {
37441	fn default() -> Self {
37442		Self {
37443			available: false,
37444			geterror: dummy_pfnglgeterrorproc,
37445			readbuffer: dummy_pfnglreadbufferproc,
37446			drawrangeelements: dummy_pfngldrawrangeelementsproc,
37447			teximage3d: dummy_pfnglteximage3dproc,
37448			texsubimage3d: dummy_pfngltexsubimage3dproc,
37449			copytexsubimage3d: dummy_pfnglcopytexsubimage3dproc,
37450			compressedteximage3d: dummy_pfnglcompressedteximage3dproc,
37451			compressedtexsubimage3d: dummy_pfnglcompressedtexsubimage3dproc,
37452			genqueries: dummy_pfnglgenqueriesproc,
37453			deletequeries: dummy_pfngldeletequeriesproc,
37454			isquery: dummy_pfnglisqueryproc,
37455			beginquery: dummy_pfnglbeginqueryproc,
37456			endquery: dummy_pfnglendqueryproc,
37457			getqueryiv: dummy_pfnglgetqueryivproc,
37458			getqueryobjectuiv: dummy_pfnglgetqueryobjectuivproc,
37459			unmapbuffer: dummy_pfnglunmapbufferproc,
37460			getbufferpointerv: dummy_pfnglgetbufferpointervproc,
37461			drawbuffers: dummy_pfngldrawbuffersproc,
37462			uniformmatrix2x3fv: dummy_pfngluniformmatrix2x3fvproc,
37463			uniformmatrix3x2fv: dummy_pfngluniformmatrix3x2fvproc,
37464			uniformmatrix2x4fv: dummy_pfngluniformmatrix2x4fvproc,
37465			uniformmatrix4x2fv: dummy_pfngluniformmatrix4x2fvproc,
37466			uniformmatrix3x4fv: dummy_pfngluniformmatrix3x4fvproc,
37467			uniformmatrix4x3fv: dummy_pfngluniformmatrix4x3fvproc,
37468			blitframebuffer: dummy_pfnglblitframebufferproc,
37469			renderbufferstoragemultisample: dummy_pfnglrenderbufferstoragemultisampleproc,
37470			framebuffertexturelayer: dummy_pfnglframebuffertexturelayerproc,
37471			mapbufferrange: dummy_pfnglmapbufferrangeproc,
37472			flushmappedbufferrange: dummy_pfnglflushmappedbufferrangeproc,
37473			bindvertexarray: dummy_pfnglbindvertexarrayproc,
37474			deletevertexarrays: dummy_pfngldeletevertexarraysproc,
37475			genvertexarrays: dummy_pfnglgenvertexarraysproc,
37476			isvertexarray: dummy_pfnglisvertexarrayproc,
37477			getintegeri_v: dummy_pfnglgetintegeri_vproc,
37478			begintransformfeedback: dummy_pfnglbegintransformfeedbackproc,
37479			endtransformfeedback: dummy_pfnglendtransformfeedbackproc,
37480			bindbufferrange: dummy_pfnglbindbufferrangeproc,
37481			bindbufferbase: dummy_pfnglbindbufferbaseproc,
37482			transformfeedbackvaryings: dummy_pfngltransformfeedbackvaryingsproc,
37483			gettransformfeedbackvarying: dummy_pfnglgettransformfeedbackvaryingproc,
37484			vertexattribipointer: dummy_pfnglvertexattribipointerproc,
37485			getvertexattribiiv: dummy_pfnglgetvertexattribiivproc,
37486			getvertexattribiuiv: dummy_pfnglgetvertexattribiuivproc,
37487			vertexattribi4i: dummy_pfnglvertexattribi4iproc,
37488			vertexattribi4ui: dummy_pfnglvertexattribi4uiproc,
37489			vertexattribi4iv: dummy_pfnglvertexattribi4ivproc,
37490			vertexattribi4uiv: dummy_pfnglvertexattribi4uivproc,
37491			getuniformuiv: dummy_pfnglgetuniformuivproc,
37492			getfragdatalocation: dummy_pfnglgetfragdatalocationproc,
37493			uniform1ui: dummy_pfngluniform1uiproc,
37494			uniform2ui: dummy_pfngluniform2uiproc,
37495			uniform3ui: dummy_pfngluniform3uiproc,
37496			uniform4ui: dummy_pfngluniform4uiproc,
37497			uniform1uiv: dummy_pfngluniform1uivproc,
37498			uniform2uiv: dummy_pfngluniform2uivproc,
37499			uniform3uiv: dummy_pfngluniform3uivproc,
37500			uniform4uiv: dummy_pfngluniform4uivproc,
37501			clearbufferiv: dummy_pfnglclearbufferivproc,
37502			clearbufferuiv: dummy_pfnglclearbufferuivproc,
37503			clearbufferfv: dummy_pfnglclearbufferfvproc,
37504			clearbufferfi: dummy_pfnglclearbufferfiproc,
37505			getstringi: dummy_pfnglgetstringiproc,
37506			copybuffersubdata: dummy_pfnglcopybuffersubdataproc,
37507			getuniformindices: dummy_pfnglgetuniformindicesproc,
37508			getactiveuniformsiv: dummy_pfnglgetactiveuniformsivproc,
37509			getuniformblockindex: dummy_pfnglgetuniformblockindexproc,
37510			getactiveuniformblockiv: dummy_pfnglgetactiveuniformblockivproc,
37511			getactiveuniformblockname: dummy_pfnglgetactiveuniformblocknameproc,
37512			uniformblockbinding: dummy_pfngluniformblockbindingproc,
37513			drawarraysinstanced: dummy_pfngldrawarraysinstancedproc,
37514			drawelementsinstanced: dummy_pfngldrawelementsinstancedproc,
37515			fencesync: dummy_pfnglfencesyncproc,
37516			issync: dummy_pfnglissyncproc,
37517			deletesync: dummy_pfngldeletesyncproc,
37518			clientwaitsync: dummy_pfnglclientwaitsyncproc,
37519			waitsync: dummy_pfnglwaitsyncproc,
37520			getinteger64v: dummy_pfnglgetinteger64vproc,
37521			getsynciv: dummy_pfnglgetsyncivproc,
37522			getinteger64i_v: dummy_pfnglgetinteger64i_vproc,
37523			getbufferparameteri64v: dummy_pfnglgetbufferparameteri64vproc,
37524			gensamplers: dummy_pfnglgensamplersproc,
37525			deletesamplers: dummy_pfngldeletesamplersproc,
37526			issampler: dummy_pfnglissamplerproc,
37527			bindsampler: dummy_pfnglbindsamplerproc,
37528			samplerparameteri: dummy_pfnglsamplerparameteriproc,
37529			samplerparameteriv: dummy_pfnglsamplerparameterivproc,
37530			samplerparameterf: dummy_pfnglsamplerparameterfproc,
37531			samplerparameterfv: dummy_pfnglsamplerparameterfvproc,
37532			getsamplerparameteriv: dummy_pfnglgetsamplerparameterivproc,
37533			getsamplerparameterfv: dummy_pfnglgetsamplerparameterfvproc,
37534			vertexattribdivisor: dummy_pfnglvertexattribdivisorproc,
37535			bindtransformfeedback: dummy_pfnglbindtransformfeedbackproc,
37536			deletetransformfeedbacks: dummy_pfngldeletetransformfeedbacksproc,
37537			gentransformfeedbacks: dummy_pfnglgentransformfeedbacksproc,
37538			istransformfeedback: dummy_pfnglistransformfeedbackproc,
37539			pausetransformfeedback: dummy_pfnglpausetransformfeedbackproc,
37540			resumetransformfeedback: dummy_pfnglresumetransformfeedbackproc,
37541			getprogrambinary: dummy_pfnglgetprogrambinaryproc,
37542			programbinary: dummy_pfnglprogrambinaryproc,
37543			programparameteri: dummy_pfnglprogramparameteriproc,
37544			invalidateframebuffer: dummy_pfnglinvalidateframebufferproc,
37545			invalidatesubframebuffer: dummy_pfnglinvalidatesubframebufferproc,
37546			texstorage2d: dummy_pfngltexstorage2dproc,
37547			texstorage3d: dummy_pfngltexstorage3dproc,
37548			getinternalformativ: dummy_pfnglgetinternalformativproc,
37549		}
37550	}
37551}
37552impl Debug for EsVersion30 {
37553	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
37554		if self.available {
37555			f.debug_struct("EsVersion30")
37556			.field("available", &self.available)
37557			.field("readbuffer", unsafe{if transmute::<_, *const c_void>(self.readbuffer) == (dummy_pfnglreadbufferproc as *const c_void) {&null::<PFNGLREADBUFFERPROC>()} else {&self.readbuffer}})
37558			.field("drawrangeelements", unsafe{if transmute::<_, *const c_void>(self.drawrangeelements) == (dummy_pfngldrawrangeelementsproc as *const c_void) {&null::<PFNGLDRAWRANGEELEMENTSPROC>()} else {&self.drawrangeelements}})
37559			.field("teximage3d", unsafe{if transmute::<_, *const c_void>(self.teximage3d) == (dummy_pfnglteximage3dproc as *const c_void) {&null::<PFNGLTEXIMAGE3DPROC>()} else {&self.teximage3d}})
37560			.field("texsubimage3d", unsafe{if transmute::<_, *const c_void>(self.texsubimage3d) == (dummy_pfngltexsubimage3dproc as *const c_void) {&null::<PFNGLTEXSUBIMAGE3DPROC>()} else {&self.texsubimage3d}})
37561			.field("copytexsubimage3d", unsafe{if transmute::<_, *const c_void>(self.copytexsubimage3d) == (dummy_pfnglcopytexsubimage3dproc as *const c_void) {&null::<PFNGLCOPYTEXSUBIMAGE3DPROC>()} else {&self.copytexsubimage3d}})
37562			.field("compressedteximage3d", unsafe{if transmute::<_, *const c_void>(self.compressedteximage3d) == (dummy_pfnglcompressedteximage3dproc as *const c_void) {&null::<PFNGLCOMPRESSEDTEXIMAGE3DPROC>()} else {&self.compressedteximage3d}})
37563			.field("compressedtexsubimage3d", unsafe{if transmute::<_, *const c_void>(self.compressedtexsubimage3d) == (dummy_pfnglcompressedtexsubimage3dproc as *const c_void) {&null::<PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC>()} else {&self.compressedtexsubimage3d}})
37564			.field("genqueries", unsafe{if transmute::<_, *const c_void>(self.genqueries) == (dummy_pfnglgenqueriesproc as *const c_void) {&null::<PFNGLGENQUERIESPROC>()} else {&self.genqueries}})
37565			.field("deletequeries", unsafe{if transmute::<_, *const c_void>(self.deletequeries) == (dummy_pfngldeletequeriesproc as *const c_void) {&null::<PFNGLDELETEQUERIESPROC>()} else {&self.deletequeries}})
37566			.field("isquery", unsafe{if transmute::<_, *const c_void>(self.isquery) == (dummy_pfnglisqueryproc as *const c_void) {&null::<PFNGLISQUERYPROC>()} else {&self.isquery}})
37567			.field("beginquery", unsafe{if transmute::<_, *const c_void>(self.beginquery) == (dummy_pfnglbeginqueryproc as *const c_void) {&null::<PFNGLBEGINQUERYPROC>()} else {&self.beginquery}})
37568			.field("endquery", unsafe{if transmute::<_, *const c_void>(self.endquery) == (dummy_pfnglendqueryproc as *const c_void) {&null::<PFNGLENDQUERYPROC>()} else {&self.endquery}})
37569			.field("getqueryiv", unsafe{if transmute::<_, *const c_void>(self.getqueryiv) == (dummy_pfnglgetqueryivproc as *const c_void) {&null::<PFNGLGETQUERYIVPROC>()} else {&self.getqueryiv}})
37570			.field("getqueryobjectuiv", unsafe{if transmute::<_, *const c_void>(self.getqueryobjectuiv) == (dummy_pfnglgetqueryobjectuivproc as *const c_void) {&null::<PFNGLGETQUERYOBJECTUIVPROC>()} else {&self.getqueryobjectuiv}})
37571			.field("unmapbuffer", unsafe{if transmute::<_, *const c_void>(self.unmapbuffer) == (dummy_pfnglunmapbufferproc as *const c_void) {&null::<PFNGLUNMAPBUFFERPROC>()} else {&self.unmapbuffer}})
37572			.field("getbufferpointerv", unsafe{if transmute::<_, *const c_void>(self.getbufferpointerv) == (dummy_pfnglgetbufferpointervproc as *const c_void) {&null::<PFNGLGETBUFFERPOINTERVPROC>()} else {&self.getbufferpointerv}})
37573			.field("drawbuffers", unsafe{if transmute::<_, *const c_void>(self.drawbuffers) == (dummy_pfngldrawbuffersproc as *const c_void) {&null::<PFNGLDRAWBUFFERSPROC>()} else {&self.drawbuffers}})
37574			.field("uniformmatrix2x3fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix2x3fv) == (dummy_pfngluniformmatrix2x3fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX2X3FVPROC>()} else {&self.uniformmatrix2x3fv}})
37575			.field("uniformmatrix3x2fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix3x2fv) == (dummy_pfngluniformmatrix3x2fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX3X2FVPROC>()} else {&self.uniformmatrix3x2fv}})
37576			.field("uniformmatrix2x4fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix2x4fv) == (dummy_pfngluniformmatrix2x4fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX2X4FVPROC>()} else {&self.uniformmatrix2x4fv}})
37577			.field("uniformmatrix4x2fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix4x2fv) == (dummy_pfngluniformmatrix4x2fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX4X2FVPROC>()} else {&self.uniformmatrix4x2fv}})
37578			.field("uniformmatrix3x4fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix3x4fv) == (dummy_pfngluniformmatrix3x4fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX3X4FVPROC>()} else {&self.uniformmatrix3x4fv}})
37579			.field("uniformmatrix4x3fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix4x3fv) == (dummy_pfngluniformmatrix4x3fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX4X3FVPROC>()} else {&self.uniformmatrix4x3fv}})
37580			.field("blitframebuffer", unsafe{if transmute::<_, *const c_void>(self.blitframebuffer) == (dummy_pfnglblitframebufferproc as *const c_void) {&null::<PFNGLBLITFRAMEBUFFERPROC>()} else {&self.blitframebuffer}})
37581			.field("renderbufferstoragemultisample", unsafe{if transmute::<_, *const c_void>(self.renderbufferstoragemultisample) == (dummy_pfnglrenderbufferstoragemultisampleproc as *const c_void) {&null::<PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC>()} else {&self.renderbufferstoragemultisample}})
37582			.field("framebuffertexturelayer", unsafe{if transmute::<_, *const c_void>(self.framebuffertexturelayer) == (dummy_pfnglframebuffertexturelayerproc as *const c_void) {&null::<PFNGLFRAMEBUFFERTEXTURELAYERPROC>()} else {&self.framebuffertexturelayer}})
37583			.field("mapbufferrange", unsafe{if transmute::<_, *const c_void>(self.mapbufferrange) == (dummy_pfnglmapbufferrangeproc as *const c_void) {&null::<PFNGLMAPBUFFERRANGEPROC>()} else {&self.mapbufferrange}})
37584			.field("flushmappedbufferrange", unsafe{if transmute::<_, *const c_void>(self.flushmappedbufferrange) == (dummy_pfnglflushmappedbufferrangeproc as *const c_void) {&null::<PFNGLFLUSHMAPPEDBUFFERRANGEPROC>()} else {&self.flushmappedbufferrange}})
37585			.field("bindvertexarray", unsafe{if transmute::<_, *const c_void>(self.bindvertexarray) == (dummy_pfnglbindvertexarrayproc as *const c_void) {&null::<PFNGLBINDVERTEXARRAYPROC>()} else {&self.bindvertexarray}})
37586			.field("deletevertexarrays", unsafe{if transmute::<_, *const c_void>(self.deletevertexarrays) == (dummy_pfngldeletevertexarraysproc as *const c_void) {&null::<PFNGLDELETEVERTEXARRAYSPROC>()} else {&self.deletevertexarrays}})
37587			.field("genvertexarrays", unsafe{if transmute::<_, *const c_void>(self.genvertexarrays) == (dummy_pfnglgenvertexarraysproc as *const c_void) {&null::<PFNGLGENVERTEXARRAYSPROC>()} else {&self.genvertexarrays}})
37588			.field("isvertexarray", unsafe{if transmute::<_, *const c_void>(self.isvertexarray) == (dummy_pfnglisvertexarrayproc as *const c_void) {&null::<PFNGLISVERTEXARRAYPROC>()} else {&self.isvertexarray}})
37589			.field("getintegeri_v", unsafe{if transmute::<_, *const c_void>(self.getintegeri_v) == (dummy_pfnglgetintegeri_vproc as *const c_void) {&null::<PFNGLGETINTEGERI_VPROC>()} else {&self.getintegeri_v}})
37590			.field("begintransformfeedback", unsafe{if transmute::<_, *const c_void>(self.begintransformfeedback) == (dummy_pfnglbegintransformfeedbackproc as *const c_void) {&null::<PFNGLBEGINTRANSFORMFEEDBACKPROC>()} else {&self.begintransformfeedback}})
37591			.field("endtransformfeedback", unsafe{if transmute::<_, *const c_void>(self.endtransformfeedback) == (dummy_pfnglendtransformfeedbackproc as *const c_void) {&null::<PFNGLENDTRANSFORMFEEDBACKPROC>()} else {&self.endtransformfeedback}})
37592			.field("bindbufferrange", unsafe{if transmute::<_, *const c_void>(self.bindbufferrange) == (dummy_pfnglbindbufferrangeproc as *const c_void) {&null::<PFNGLBINDBUFFERRANGEPROC>()} else {&self.bindbufferrange}})
37593			.field("bindbufferbase", unsafe{if transmute::<_, *const c_void>(self.bindbufferbase) == (dummy_pfnglbindbufferbaseproc as *const c_void) {&null::<PFNGLBINDBUFFERBASEPROC>()} else {&self.bindbufferbase}})
37594			.field("transformfeedbackvaryings", unsafe{if transmute::<_, *const c_void>(self.transformfeedbackvaryings) == (dummy_pfngltransformfeedbackvaryingsproc as *const c_void) {&null::<PFNGLTRANSFORMFEEDBACKVARYINGSPROC>()} else {&self.transformfeedbackvaryings}})
37595			.field("gettransformfeedbackvarying", unsafe{if transmute::<_, *const c_void>(self.gettransformfeedbackvarying) == (dummy_pfnglgettransformfeedbackvaryingproc as *const c_void) {&null::<PFNGLGETTRANSFORMFEEDBACKVARYINGPROC>()} else {&self.gettransformfeedbackvarying}})
37596			.field("vertexattribipointer", unsafe{if transmute::<_, *const c_void>(self.vertexattribipointer) == (dummy_pfnglvertexattribipointerproc as *const c_void) {&null::<PFNGLVERTEXATTRIBIPOINTERPROC>()} else {&self.vertexattribipointer}})
37597			.field("getvertexattribiiv", unsafe{if transmute::<_, *const c_void>(self.getvertexattribiiv) == (dummy_pfnglgetvertexattribiivproc as *const c_void) {&null::<PFNGLGETVERTEXATTRIBIIVPROC>()} else {&self.getvertexattribiiv}})
37598			.field("getvertexattribiuiv", unsafe{if transmute::<_, *const c_void>(self.getvertexattribiuiv) == (dummy_pfnglgetvertexattribiuivproc as *const c_void) {&null::<PFNGLGETVERTEXATTRIBIUIVPROC>()} else {&self.getvertexattribiuiv}})
37599			.field("vertexattribi4i", unsafe{if transmute::<_, *const c_void>(self.vertexattribi4i) == (dummy_pfnglvertexattribi4iproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI4IPROC>()} else {&self.vertexattribi4i}})
37600			.field("vertexattribi4ui", unsafe{if transmute::<_, *const c_void>(self.vertexattribi4ui) == (dummy_pfnglvertexattribi4uiproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI4UIPROC>()} else {&self.vertexattribi4ui}})
37601			.field("vertexattribi4iv", unsafe{if transmute::<_, *const c_void>(self.vertexattribi4iv) == (dummy_pfnglvertexattribi4ivproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI4IVPROC>()} else {&self.vertexattribi4iv}})
37602			.field("vertexattribi4uiv", unsafe{if transmute::<_, *const c_void>(self.vertexattribi4uiv) == (dummy_pfnglvertexattribi4uivproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI4UIVPROC>()} else {&self.vertexattribi4uiv}})
37603			.field("getuniformuiv", unsafe{if transmute::<_, *const c_void>(self.getuniformuiv) == (dummy_pfnglgetuniformuivproc as *const c_void) {&null::<PFNGLGETUNIFORMUIVPROC>()} else {&self.getuniformuiv}})
37604			.field("getfragdatalocation", unsafe{if transmute::<_, *const c_void>(self.getfragdatalocation) == (dummy_pfnglgetfragdatalocationproc as *const c_void) {&null::<PFNGLGETFRAGDATALOCATIONPROC>()} else {&self.getfragdatalocation}})
37605			.field("uniform1ui", unsafe{if transmute::<_, *const c_void>(self.uniform1ui) == (dummy_pfngluniform1uiproc as *const c_void) {&null::<PFNGLUNIFORM1UIPROC>()} else {&self.uniform1ui}})
37606			.field("uniform2ui", unsafe{if transmute::<_, *const c_void>(self.uniform2ui) == (dummy_pfngluniform2uiproc as *const c_void) {&null::<PFNGLUNIFORM2UIPROC>()} else {&self.uniform2ui}})
37607			.field("uniform3ui", unsafe{if transmute::<_, *const c_void>(self.uniform3ui) == (dummy_pfngluniform3uiproc as *const c_void) {&null::<PFNGLUNIFORM3UIPROC>()} else {&self.uniform3ui}})
37608			.field("uniform4ui", unsafe{if transmute::<_, *const c_void>(self.uniform4ui) == (dummy_pfngluniform4uiproc as *const c_void) {&null::<PFNGLUNIFORM4UIPROC>()} else {&self.uniform4ui}})
37609			.field("uniform1uiv", unsafe{if transmute::<_, *const c_void>(self.uniform1uiv) == (dummy_pfngluniform1uivproc as *const c_void) {&null::<PFNGLUNIFORM1UIVPROC>()} else {&self.uniform1uiv}})
37610			.field("uniform2uiv", unsafe{if transmute::<_, *const c_void>(self.uniform2uiv) == (dummy_pfngluniform2uivproc as *const c_void) {&null::<PFNGLUNIFORM2UIVPROC>()} else {&self.uniform2uiv}})
37611			.field("uniform3uiv", unsafe{if transmute::<_, *const c_void>(self.uniform3uiv) == (dummy_pfngluniform3uivproc as *const c_void) {&null::<PFNGLUNIFORM3UIVPROC>()} else {&self.uniform3uiv}})
37612			.field("uniform4uiv", unsafe{if transmute::<_, *const c_void>(self.uniform4uiv) == (dummy_pfngluniform4uivproc as *const c_void) {&null::<PFNGLUNIFORM4UIVPROC>()} else {&self.uniform4uiv}})
37613			.field("clearbufferiv", unsafe{if transmute::<_, *const c_void>(self.clearbufferiv) == (dummy_pfnglclearbufferivproc as *const c_void) {&null::<PFNGLCLEARBUFFERIVPROC>()} else {&self.clearbufferiv}})
37614			.field("clearbufferuiv", unsafe{if transmute::<_, *const c_void>(self.clearbufferuiv) == (dummy_pfnglclearbufferuivproc as *const c_void) {&null::<PFNGLCLEARBUFFERUIVPROC>()} else {&self.clearbufferuiv}})
37615			.field("clearbufferfv", unsafe{if transmute::<_, *const c_void>(self.clearbufferfv) == (dummy_pfnglclearbufferfvproc as *const c_void) {&null::<PFNGLCLEARBUFFERFVPROC>()} else {&self.clearbufferfv}})
37616			.field("clearbufferfi", unsafe{if transmute::<_, *const c_void>(self.clearbufferfi) == (dummy_pfnglclearbufferfiproc as *const c_void) {&null::<PFNGLCLEARBUFFERFIPROC>()} else {&self.clearbufferfi}})
37617			.field("getstringi", unsafe{if transmute::<_, *const c_void>(self.getstringi) == (dummy_pfnglgetstringiproc as *const c_void) {&null::<PFNGLGETSTRINGIPROC>()} else {&self.getstringi}})
37618			.field("copybuffersubdata", unsafe{if transmute::<_, *const c_void>(self.copybuffersubdata) == (dummy_pfnglcopybuffersubdataproc as *const c_void) {&null::<PFNGLCOPYBUFFERSUBDATAPROC>()} else {&self.copybuffersubdata}})
37619			.field("getuniformindices", unsafe{if transmute::<_, *const c_void>(self.getuniformindices) == (dummy_pfnglgetuniformindicesproc as *const c_void) {&null::<PFNGLGETUNIFORMINDICESPROC>()} else {&self.getuniformindices}})
37620			.field("getactiveuniformsiv", unsafe{if transmute::<_, *const c_void>(self.getactiveuniformsiv) == (dummy_pfnglgetactiveuniformsivproc as *const c_void) {&null::<PFNGLGETACTIVEUNIFORMSIVPROC>()} else {&self.getactiveuniformsiv}})
37621			.field("getuniformblockindex", unsafe{if transmute::<_, *const c_void>(self.getuniformblockindex) == (dummy_pfnglgetuniformblockindexproc as *const c_void) {&null::<PFNGLGETUNIFORMBLOCKINDEXPROC>()} else {&self.getuniformblockindex}})
37622			.field("getactiveuniformblockiv", unsafe{if transmute::<_, *const c_void>(self.getactiveuniformblockiv) == (dummy_pfnglgetactiveuniformblockivproc as *const c_void) {&null::<PFNGLGETACTIVEUNIFORMBLOCKIVPROC>()} else {&self.getactiveuniformblockiv}})
37623			.field("getactiveuniformblockname", unsafe{if transmute::<_, *const c_void>(self.getactiveuniformblockname) == (dummy_pfnglgetactiveuniformblocknameproc as *const c_void) {&null::<PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC>()} else {&self.getactiveuniformblockname}})
37624			.field("uniformblockbinding", unsafe{if transmute::<_, *const c_void>(self.uniformblockbinding) == (dummy_pfngluniformblockbindingproc as *const c_void) {&null::<PFNGLUNIFORMBLOCKBINDINGPROC>()} else {&self.uniformblockbinding}})
37625			.field("drawarraysinstanced", unsafe{if transmute::<_, *const c_void>(self.drawarraysinstanced) == (dummy_pfngldrawarraysinstancedproc as *const c_void) {&null::<PFNGLDRAWARRAYSINSTANCEDPROC>()} else {&self.drawarraysinstanced}})
37626			.field("drawelementsinstanced", unsafe{if transmute::<_, *const c_void>(self.drawelementsinstanced) == (dummy_pfngldrawelementsinstancedproc as *const c_void) {&null::<PFNGLDRAWELEMENTSINSTANCEDPROC>()} else {&self.drawelementsinstanced}})
37627			.field("fencesync", unsafe{if transmute::<_, *const c_void>(self.fencesync) == (dummy_pfnglfencesyncproc as *const c_void) {&null::<PFNGLFENCESYNCPROC>()} else {&self.fencesync}})
37628			.field("issync", unsafe{if transmute::<_, *const c_void>(self.issync) == (dummy_pfnglissyncproc as *const c_void) {&null::<PFNGLISSYNCPROC>()} else {&self.issync}})
37629			.field("deletesync", unsafe{if transmute::<_, *const c_void>(self.deletesync) == (dummy_pfngldeletesyncproc as *const c_void) {&null::<PFNGLDELETESYNCPROC>()} else {&self.deletesync}})
37630			.field("clientwaitsync", unsafe{if transmute::<_, *const c_void>(self.clientwaitsync) == (dummy_pfnglclientwaitsyncproc as *const c_void) {&null::<PFNGLCLIENTWAITSYNCPROC>()} else {&self.clientwaitsync}})
37631			.field("waitsync", unsafe{if transmute::<_, *const c_void>(self.waitsync) == (dummy_pfnglwaitsyncproc as *const c_void) {&null::<PFNGLWAITSYNCPROC>()} else {&self.waitsync}})
37632			.field("getinteger64v", unsafe{if transmute::<_, *const c_void>(self.getinteger64v) == (dummy_pfnglgetinteger64vproc as *const c_void) {&null::<PFNGLGETINTEGER64VPROC>()} else {&self.getinteger64v}})
37633			.field("getsynciv", unsafe{if transmute::<_, *const c_void>(self.getsynciv) == (dummy_pfnglgetsyncivproc as *const c_void) {&null::<PFNGLGETSYNCIVPROC>()} else {&self.getsynciv}})
37634			.field("getinteger64i_v", unsafe{if transmute::<_, *const c_void>(self.getinteger64i_v) == (dummy_pfnglgetinteger64i_vproc as *const c_void) {&null::<PFNGLGETINTEGER64I_VPROC>()} else {&self.getinteger64i_v}})
37635			.field("getbufferparameteri64v", unsafe{if transmute::<_, *const c_void>(self.getbufferparameteri64v) == (dummy_pfnglgetbufferparameteri64vproc as *const c_void) {&null::<PFNGLGETBUFFERPARAMETERI64VPROC>()} else {&self.getbufferparameteri64v}})
37636			.field("gensamplers", unsafe{if transmute::<_, *const c_void>(self.gensamplers) == (dummy_pfnglgensamplersproc as *const c_void) {&null::<PFNGLGENSAMPLERSPROC>()} else {&self.gensamplers}})
37637			.field("deletesamplers", unsafe{if transmute::<_, *const c_void>(self.deletesamplers) == (dummy_pfngldeletesamplersproc as *const c_void) {&null::<PFNGLDELETESAMPLERSPROC>()} else {&self.deletesamplers}})
37638			.field("issampler", unsafe{if transmute::<_, *const c_void>(self.issampler) == (dummy_pfnglissamplerproc as *const c_void) {&null::<PFNGLISSAMPLERPROC>()} else {&self.issampler}})
37639			.field("bindsampler", unsafe{if transmute::<_, *const c_void>(self.bindsampler) == (dummy_pfnglbindsamplerproc as *const c_void) {&null::<PFNGLBINDSAMPLERPROC>()} else {&self.bindsampler}})
37640			.field("samplerparameteri", unsafe{if transmute::<_, *const c_void>(self.samplerparameteri) == (dummy_pfnglsamplerparameteriproc as *const c_void) {&null::<PFNGLSAMPLERPARAMETERIPROC>()} else {&self.samplerparameteri}})
37641			.field("samplerparameteriv", unsafe{if transmute::<_, *const c_void>(self.samplerparameteriv) == (dummy_pfnglsamplerparameterivproc as *const c_void) {&null::<PFNGLSAMPLERPARAMETERIVPROC>()} else {&self.samplerparameteriv}})
37642			.field("samplerparameterf", unsafe{if transmute::<_, *const c_void>(self.samplerparameterf) == (dummy_pfnglsamplerparameterfproc as *const c_void) {&null::<PFNGLSAMPLERPARAMETERFPROC>()} else {&self.samplerparameterf}})
37643			.field("samplerparameterfv", unsafe{if transmute::<_, *const c_void>(self.samplerparameterfv) == (dummy_pfnglsamplerparameterfvproc as *const c_void) {&null::<PFNGLSAMPLERPARAMETERFVPROC>()} else {&self.samplerparameterfv}})
37644			.field("getsamplerparameteriv", unsafe{if transmute::<_, *const c_void>(self.getsamplerparameteriv) == (dummy_pfnglgetsamplerparameterivproc as *const c_void) {&null::<PFNGLGETSAMPLERPARAMETERIVPROC>()} else {&self.getsamplerparameteriv}})
37645			.field("getsamplerparameterfv", unsafe{if transmute::<_, *const c_void>(self.getsamplerparameterfv) == (dummy_pfnglgetsamplerparameterfvproc as *const c_void) {&null::<PFNGLGETSAMPLERPARAMETERFVPROC>()} else {&self.getsamplerparameterfv}})
37646			.field("vertexattribdivisor", unsafe{if transmute::<_, *const c_void>(self.vertexattribdivisor) == (dummy_pfnglvertexattribdivisorproc as *const c_void) {&null::<PFNGLVERTEXATTRIBDIVISORPROC>()} else {&self.vertexattribdivisor}})
37647			.field("bindtransformfeedback", unsafe{if transmute::<_, *const c_void>(self.bindtransformfeedback) == (dummy_pfnglbindtransformfeedbackproc as *const c_void) {&null::<PFNGLBINDTRANSFORMFEEDBACKPROC>()} else {&self.bindtransformfeedback}})
37648			.field("deletetransformfeedbacks", unsafe{if transmute::<_, *const c_void>(self.deletetransformfeedbacks) == (dummy_pfngldeletetransformfeedbacksproc as *const c_void) {&null::<PFNGLDELETETRANSFORMFEEDBACKSPROC>()} else {&self.deletetransformfeedbacks}})
37649			.field("gentransformfeedbacks", unsafe{if transmute::<_, *const c_void>(self.gentransformfeedbacks) == (dummy_pfnglgentransformfeedbacksproc as *const c_void) {&null::<PFNGLGENTRANSFORMFEEDBACKSPROC>()} else {&self.gentransformfeedbacks}})
37650			.field("istransformfeedback", unsafe{if transmute::<_, *const c_void>(self.istransformfeedback) == (dummy_pfnglistransformfeedbackproc as *const c_void) {&null::<PFNGLISTRANSFORMFEEDBACKPROC>()} else {&self.istransformfeedback}})
37651			.field("pausetransformfeedback", unsafe{if transmute::<_, *const c_void>(self.pausetransformfeedback) == (dummy_pfnglpausetransformfeedbackproc as *const c_void) {&null::<PFNGLPAUSETRANSFORMFEEDBACKPROC>()} else {&self.pausetransformfeedback}})
37652			.field("resumetransformfeedback", unsafe{if transmute::<_, *const c_void>(self.resumetransformfeedback) == (dummy_pfnglresumetransformfeedbackproc as *const c_void) {&null::<PFNGLRESUMETRANSFORMFEEDBACKPROC>()} else {&self.resumetransformfeedback}})
37653			.field("getprogrambinary", unsafe{if transmute::<_, *const c_void>(self.getprogrambinary) == (dummy_pfnglgetprogrambinaryproc as *const c_void) {&null::<PFNGLGETPROGRAMBINARYPROC>()} else {&self.getprogrambinary}})
37654			.field("programbinary", unsafe{if transmute::<_, *const c_void>(self.programbinary) == (dummy_pfnglprogrambinaryproc as *const c_void) {&null::<PFNGLPROGRAMBINARYPROC>()} else {&self.programbinary}})
37655			.field("programparameteri", unsafe{if transmute::<_, *const c_void>(self.programparameteri) == (dummy_pfnglprogramparameteriproc as *const c_void) {&null::<PFNGLPROGRAMPARAMETERIPROC>()} else {&self.programparameteri}})
37656			.field("invalidateframebuffer", unsafe{if transmute::<_, *const c_void>(self.invalidateframebuffer) == (dummy_pfnglinvalidateframebufferproc as *const c_void) {&null::<PFNGLINVALIDATEFRAMEBUFFERPROC>()} else {&self.invalidateframebuffer}})
37657			.field("invalidatesubframebuffer", unsafe{if transmute::<_, *const c_void>(self.invalidatesubframebuffer) == (dummy_pfnglinvalidatesubframebufferproc as *const c_void) {&null::<PFNGLINVALIDATESUBFRAMEBUFFERPROC>()} else {&self.invalidatesubframebuffer}})
37658			.field("texstorage2d", unsafe{if transmute::<_, *const c_void>(self.texstorage2d) == (dummy_pfngltexstorage2dproc as *const c_void) {&null::<PFNGLTEXSTORAGE2DPROC>()} else {&self.texstorage2d}})
37659			.field("texstorage3d", unsafe{if transmute::<_, *const c_void>(self.texstorage3d) == (dummy_pfngltexstorage3dproc as *const c_void) {&null::<PFNGLTEXSTORAGE3DPROC>()} else {&self.texstorage3d}})
37660			.field("getinternalformativ", unsafe{if transmute::<_, *const c_void>(self.getinternalformativ) == (dummy_pfnglgetinternalformativproc as *const c_void) {&null::<PFNGLGETINTERNALFORMATIVPROC>()} else {&self.getinternalformativ}})
37661			.finish()
37662		} else {
37663			f.debug_struct("EsVersion30")
37664			.field("available", &self.available)
37665			.finish_non_exhaustive()
37666		}
37667	}
37668}
37669
37670
37671/// Functions from OpenGL ES version 3.1
37672pub trait ES_GL_3_1 {
37673	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetError.xhtml>
37674	fn glGetError(&self) -> GLenum;
37675
37676	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDispatchCompute.xhtml>
37677	fn glDispatchCompute(&self, num_groups_x: GLuint, num_groups_y: GLuint, num_groups_z: GLuint) -> Result<()>;
37678
37679	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDispatchComputeIndirect.xhtml>
37680	fn glDispatchComputeIndirect(&self, indirect: GLintptr) -> Result<()>;
37681
37682	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawArraysIndirect.xhtml>
37683	fn glDrawArraysIndirect(&self, mode: GLenum, indirect: *const c_void) -> Result<()>;
37684
37685	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawElementsIndirect.xhtml>
37686	fn glDrawElementsIndirect(&self, mode: GLenum, type_: GLenum, indirect: *const c_void) -> Result<()>;
37687
37688	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFramebufferParameteri.xhtml>
37689	fn glFramebufferParameteri(&self, target: GLenum, pname: GLenum, param: GLint) -> Result<()>;
37690
37691	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetFramebufferParameteriv.xhtml>
37692	fn glGetFramebufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
37693
37694	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramInterfaceiv.xhtml>
37695	fn glGetProgramInterfaceiv(&self, program: GLuint, programInterface: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
37696
37697	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramResourceIndex.xhtml>
37698	fn glGetProgramResourceIndex(&self, program: GLuint, programInterface: GLenum, name: *const GLchar) -> Result<GLuint>;
37699
37700	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramResourceName.xhtml>
37701	fn glGetProgramResourceName(&self, program: GLuint, programInterface: GLenum, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, name: *mut GLchar) -> Result<()>;
37702
37703	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramResourceiv.xhtml>
37704	fn glGetProgramResourceiv(&self, program: GLuint, programInterface: GLenum, index: GLuint, propCount: GLsizei, props: *const GLenum, bufSize: GLsizei, length: *mut GLsizei, params: *mut GLint) -> Result<()>;
37705
37706	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramResourceLocation.xhtml>
37707	fn glGetProgramResourceLocation(&self, program: GLuint, programInterface: GLenum, name: *const GLchar) -> Result<GLint>;
37708
37709	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUseProgramStages.xhtml>
37710	fn glUseProgramStages(&self, pipeline: GLuint, stages: GLbitfield, program: GLuint) -> Result<()>;
37711
37712	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glActiveShaderProgram.xhtml>
37713	fn glActiveShaderProgram(&self, pipeline: GLuint, program: GLuint) -> Result<()>;
37714
37715	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCreateShaderProgramv.xhtml>
37716	fn glCreateShaderProgramv(&self, type_: GLenum, count: GLsizei, strings: *const *const GLchar) -> Result<GLuint>;
37717
37718	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindProgramPipeline.xhtml>
37719	fn glBindProgramPipeline(&self, pipeline: GLuint) -> Result<()>;
37720
37721	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteProgramPipelines.xhtml>
37722	fn glDeleteProgramPipelines(&self, n: GLsizei, pipelines: *const GLuint) -> Result<()>;
37723
37724	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenProgramPipelines.xhtml>
37725	fn glGenProgramPipelines(&self, n: GLsizei, pipelines: *mut GLuint) -> Result<()>;
37726
37727	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsProgramPipeline.xhtml>
37728	fn glIsProgramPipeline(&self, pipeline: GLuint) -> Result<GLboolean>;
37729
37730	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramPipelineiv.xhtml>
37731	fn glGetProgramPipelineiv(&self, pipeline: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
37732
37733	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform1i.xhtml>
37734	fn glProgramUniform1i(&self, program: GLuint, location: GLint, v0: GLint) -> Result<()>;
37735
37736	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform2i.xhtml>
37737	fn glProgramUniform2i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint) -> Result<()>;
37738
37739	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform3i.xhtml>
37740	fn glProgramUniform3i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint, v2: GLint) -> Result<()>;
37741
37742	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform4i.xhtml>
37743	fn glProgramUniform4i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint, v2: GLint, v3: GLint) -> Result<()>;
37744
37745	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform1ui.xhtml>
37746	fn glProgramUniform1ui(&self, program: GLuint, location: GLint, v0: GLuint) -> Result<()>;
37747
37748	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform2ui.xhtml>
37749	fn glProgramUniform2ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint) -> Result<()>;
37750
37751	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform3ui.xhtml>
37752	fn glProgramUniform3ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint) -> Result<()>;
37753
37754	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform4ui.xhtml>
37755	fn glProgramUniform4ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint, v3: GLuint) -> Result<()>;
37756
37757	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform1f.xhtml>
37758	fn glProgramUniform1f(&self, program: GLuint, location: GLint, v0: GLfloat) -> Result<()>;
37759
37760	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform2f.xhtml>
37761	fn glProgramUniform2f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat) -> Result<()>;
37762
37763	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform3f.xhtml>
37764	fn glProgramUniform3f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat) -> Result<()>;
37765
37766	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform4f.xhtml>
37767	fn glProgramUniform4f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat, v3: GLfloat) -> Result<()>;
37768
37769	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform1iv.xhtml>
37770	fn glProgramUniform1iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
37771
37772	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform2iv.xhtml>
37773	fn glProgramUniform2iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
37774
37775	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform3iv.xhtml>
37776	fn glProgramUniform3iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
37777
37778	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform4iv.xhtml>
37779	fn glProgramUniform4iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
37780
37781	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform1uiv.xhtml>
37782	fn glProgramUniform1uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
37783
37784	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform2uiv.xhtml>
37785	fn glProgramUniform2uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
37786
37787	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform3uiv.xhtml>
37788	fn glProgramUniform3uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
37789
37790	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform4uiv.xhtml>
37791	fn glProgramUniform4uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
37792
37793	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform1fv.xhtml>
37794	fn glProgramUniform1fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
37795
37796	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform2fv.xhtml>
37797	fn glProgramUniform2fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
37798
37799	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform3fv.xhtml>
37800	fn glProgramUniform3fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
37801
37802	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform4fv.xhtml>
37803	fn glProgramUniform4fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
37804
37805	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix2fv.xhtml>
37806	fn glProgramUniformMatrix2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
37807
37808	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix3fv.xhtml>
37809	fn glProgramUniformMatrix3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
37810
37811	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix4fv.xhtml>
37812	fn glProgramUniformMatrix4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
37813
37814	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix2x3fv.xhtml>
37815	fn glProgramUniformMatrix2x3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
37816
37817	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix3x2fv.xhtml>
37818	fn glProgramUniformMatrix3x2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
37819
37820	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix2x4fv.xhtml>
37821	fn glProgramUniformMatrix2x4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
37822
37823	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix4x2fv.xhtml>
37824	fn glProgramUniformMatrix4x2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
37825
37826	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix3x4fv.xhtml>
37827	fn glProgramUniformMatrix3x4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
37828
37829	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix4x3fv.xhtml>
37830	fn glProgramUniformMatrix4x3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
37831
37832	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glValidateProgramPipeline.xhtml>
37833	fn glValidateProgramPipeline(&self, pipeline: GLuint) -> Result<()>;
37834
37835	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramPipelineInfoLog.xhtml>
37836	fn glGetProgramPipelineInfoLog(&self, pipeline: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()>;
37837
37838	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindImageTexture.xhtml>
37839	fn glBindImageTexture(&self, unit: GLuint, texture: GLuint, level: GLint, layered: GLboolean, layer: GLint, access: GLenum, format: GLenum) -> Result<()>;
37840
37841	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetBooleani_v.xhtml>
37842	fn glGetBooleani_v(&self, target: GLenum, index: GLuint, data: *mut GLboolean) -> Result<()>;
37843
37844	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glMemoryBarrier.xhtml>
37845	fn glMemoryBarrier(&self, barriers: GLbitfield) -> Result<()>;
37846
37847	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glMemoryBarrierByRegion.xhtml>
37848	fn glMemoryBarrierByRegion(&self, barriers: GLbitfield) -> Result<()>;
37849
37850	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexStorage2DMultisample.xhtml>
37851	fn glTexStorage2DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, fixedsamplelocations: GLboolean) -> Result<()>;
37852
37853	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetMultisamplefv.xhtml>
37854	fn glGetMultisamplefv(&self, pname: GLenum, index: GLuint, val: *mut GLfloat) -> Result<()>;
37855
37856	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glSampleMaski.xhtml>
37857	fn glSampleMaski(&self, maskNumber: GLuint, mask: GLbitfield) -> Result<()>;
37858
37859	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetTexLevelParameteriv.xhtml>
37860	fn glGetTexLevelParameteriv(&self, target: GLenum, level: GLint, pname: GLenum, params: *mut GLint) -> Result<()>;
37861
37862	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetTexLevelParameterfv.xhtml>
37863	fn glGetTexLevelParameterfv(&self, target: GLenum, level: GLint, pname: GLenum, params: *mut GLfloat) -> Result<()>;
37864
37865	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindVertexBuffer.xhtml>
37866	fn glBindVertexBuffer(&self, bindingindex: GLuint, buffer: GLuint, offset: GLintptr, stride: GLsizei) -> Result<()>;
37867
37868	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribFormat.xhtml>
37869	fn glVertexAttribFormat(&self, attribindex: GLuint, size: GLint, type_: GLenum, normalized: GLboolean, relativeoffset: GLuint) -> Result<()>;
37870
37871	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribIFormat.xhtml>
37872	fn glVertexAttribIFormat(&self, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()>;
37873
37874	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribBinding.xhtml>
37875	fn glVertexAttribBinding(&self, attribindex: GLuint, bindingindex: GLuint) -> Result<()>;
37876
37877	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexBindingDivisor.xhtml>
37878	fn glVertexBindingDivisor(&self, bindingindex: GLuint, divisor: GLuint) -> Result<()>;
37879}
37880/// Functions from OpenGL ES version 3.1
37881#[derive(Clone, Copy, PartialEq, Eq, Hash)]
37882pub struct EsVersion31 {
37883	/// Is OpenGL ES version 3.1 available
37884	available: bool,
37885
37886	/// The function pointer to `glGetError()`
37887	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetError.xhtml>
37888	pub geterror: PFNGLGETERRORPROC,
37889
37890	/// The function pointer to `glDispatchCompute()`
37891	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDispatchCompute.xhtml>
37892	pub dispatchcompute: PFNGLDISPATCHCOMPUTEPROC,
37893
37894	/// The function pointer to `glDispatchComputeIndirect()`
37895	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDispatchComputeIndirect.xhtml>
37896	pub dispatchcomputeindirect: PFNGLDISPATCHCOMPUTEINDIRECTPROC,
37897
37898	/// The function pointer to `glDrawArraysIndirect()`
37899	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawArraysIndirect.xhtml>
37900	pub drawarraysindirect: PFNGLDRAWARRAYSINDIRECTPROC,
37901
37902	/// The function pointer to `glDrawElementsIndirect()`
37903	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawElementsIndirect.xhtml>
37904	pub drawelementsindirect: PFNGLDRAWELEMENTSINDIRECTPROC,
37905
37906	/// The function pointer to `glFramebufferParameteri()`
37907	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFramebufferParameteri.xhtml>
37908	pub framebufferparameteri: PFNGLFRAMEBUFFERPARAMETERIPROC,
37909
37910	/// The function pointer to `glGetFramebufferParameteriv()`
37911	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetFramebufferParameteriv.xhtml>
37912	pub getframebufferparameteriv: PFNGLGETFRAMEBUFFERPARAMETERIVPROC,
37913
37914	/// The function pointer to `glGetProgramInterfaceiv()`
37915	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramInterfaceiv.xhtml>
37916	pub getprograminterfaceiv: PFNGLGETPROGRAMINTERFACEIVPROC,
37917
37918	/// The function pointer to `glGetProgramResourceIndex()`
37919	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramResourceIndex.xhtml>
37920	pub getprogramresourceindex: PFNGLGETPROGRAMRESOURCEINDEXPROC,
37921
37922	/// The function pointer to `glGetProgramResourceName()`
37923	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramResourceName.xhtml>
37924	pub getprogramresourcename: PFNGLGETPROGRAMRESOURCENAMEPROC,
37925
37926	/// The function pointer to `glGetProgramResourceiv()`
37927	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramResourceiv.xhtml>
37928	pub getprogramresourceiv: PFNGLGETPROGRAMRESOURCEIVPROC,
37929
37930	/// The function pointer to `glGetProgramResourceLocation()`
37931	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramResourceLocation.xhtml>
37932	pub getprogramresourcelocation: PFNGLGETPROGRAMRESOURCELOCATIONPROC,
37933
37934	/// The function pointer to `glUseProgramStages()`
37935	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUseProgramStages.xhtml>
37936	pub useprogramstages: PFNGLUSEPROGRAMSTAGESPROC,
37937
37938	/// The function pointer to `glActiveShaderProgram()`
37939	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glActiveShaderProgram.xhtml>
37940	pub activeshaderprogram: PFNGLACTIVESHADERPROGRAMPROC,
37941
37942	/// The function pointer to `glCreateShaderProgramv()`
37943	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCreateShaderProgramv.xhtml>
37944	pub createshaderprogramv: PFNGLCREATESHADERPROGRAMVPROC,
37945
37946	/// The function pointer to `glBindProgramPipeline()`
37947	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindProgramPipeline.xhtml>
37948	pub bindprogrampipeline: PFNGLBINDPROGRAMPIPELINEPROC,
37949
37950	/// The function pointer to `glDeleteProgramPipelines()`
37951	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteProgramPipelines.xhtml>
37952	pub deleteprogrampipelines: PFNGLDELETEPROGRAMPIPELINESPROC,
37953
37954	/// The function pointer to `glGenProgramPipelines()`
37955	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenProgramPipelines.xhtml>
37956	pub genprogrampipelines: PFNGLGENPROGRAMPIPELINESPROC,
37957
37958	/// The function pointer to `glIsProgramPipeline()`
37959	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsProgramPipeline.xhtml>
37960	pub isprogrampipeline: PFNGLISPROGRAMPIPELINEPROC,
37961
37962	/// The function pointer to `glGetProgramPipelineiv()`
37963	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramPipelineiv.xhtml>
37964	pub getprogrampipelineiv: PFNGLGETPROGRAMPIPELINEIVPROC,
37965
37966	/// The function pointer to `glProgramUniform1i()`
37967	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform1i.xhtml>
37968	pub programuniform1i: PFNGLPROGRAMUNIFORM1IPROC,
37969
37970	/// The function pointer to `glProgramUniform2i()`
37971	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform2i.xhtml>
37972	pub programuniform2i: PFNGLPROGRAMUNIFORM2IPROC,
37973
37974	/// The function pointer to `glProgramUniform3i()`
37975	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform3i.xhtml>
37976	pub programuniform3i: PFNGLPROGRAMUNIFORM3IPROC,
37977
37978	/// The function pointer to `glProgramUniform4i()`
37979	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform4i.xhtml>
37980	pub programuniform4i: PFNGLPROGRAMUNIFORM4IPROC,
37981
37982	/// The function pointer to `glProgramUniform1ui()`
37983	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform1ui.xhtml>
37984	pub programuniform1ui: PFNGLPROGRAMUNIFORM1UIPROC,
37985
37986	/// The function pointer to `glProgramUniform2ui()`
37987	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform2ui.xhtml>
37988	pub programuniform2ui: PFNGLPROGRAMUNIFORM2UIPROC,
37989
37990	/// The function pointer to `glProgramUniform3ui()`
37991	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform3ui.xhtml>
37992	pub programuniform3ui: PFNGLPROGRAMUNIFORM3UIPROC,
37993
37994	/// The function pointer to `glProgramUniform4ui()`
37995	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform4ui.xhtml>
37996	pub programuniform4ui: PFNGLPROGRAMUNIFORM4UIPROC,
37997
37998	/// The function pointer to `glProgramUniform1f()`
37999	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform1f.xhtml>
38000	pub programuniform1f: PFNGLPROGRAMUNIFORM1FPROC,
38001
38002	/// The function pointer to `glProgramUniform2f()`
38003	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform2f.xhtml>
38004	pub programuniform2f: PFNGLPROGRAMUNIFORM2FPROC,
38005
38006	/// The function pointer to `glProgramUniform3f()`
38007	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform3f.xhtml>
38008	pub programuniform3f: PFNGLPROGRAMUNIFORM3FPROC,
38009
38010	/// The function pointer to `glProgramUniform4f()`
38011	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform4f.xhtml>
38012	pub programuniform4f: PFNGLPROGRAMUNIFORM4FPROC,
38013
38014	/// The function pointer to `glProgramUniform1iv()`
38015	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform1iv.xhtml>
38016	pub programuniform1iv: PFNGLPROGRAMUNIFORM1IVPROC,
38017
38018	/// The function pointer to `glProgramUniform2iv()`
38019	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform2iv.xhtml>
38020	pub programuniform2iv: PFNGLPROGRAMUNIFORM2IVPROC,
38021
38022	/// The function pointer to `glProgramUniform3iv()`
38023	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform3iv.xhtml>
38024	pub programuniform3iv: PFNGLPROGRAMUNIFORM3IVPROC,
38025
38026	/// The function pointer to `glProgramUniform4iv()`
38027	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform4iv.xhtml>
38028	pub programuniform4iv: PFNGLPROGRAMUNIFORM4IVPROC,
38029
38030	/// The function pointer to `glProgramUniform1uiv()`
38031	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform1uiv.xhtml>
38032	pub programuniform1uiv: PFNGLPROGRAMUNIFORM1UIVPROC,
38033
38034	/// The function pointer to `glProgramUniform2uiv()`
38035	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform2uiv.xhtml>
38036	pub programuniform2uiv: PFNGLPROGRAMUNIFORM2UIVPROC,
38037
38038	/// The function pointer to `glProgramUniform3uiv()`
38039	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform3uiv.xhtml>
38040	pub programuniform3uiv: PFNGLPROGRAMUNIFORM3UIVPROC,
38041
38042	/// The function pointer to `glProgramUniform4uiv()`
38043	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform4uiv.xhtml>
38044	pub programuniform4uiv: PFNGLPROGRAMUNIFORM4UIVPROC,
38045
38046	/// The function pointer to `glProgramUniform1fv()`
38047	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform1fv.xhtml>
38048	pub programuniform1fv: PFNGLPROGRAMUNIFORM1FVPROC,
38049
38050	/// The function pointer to `glProgramUniform2fv()`
38051	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform2fv.xhtml>
38052	pub programuniform2fv: PFNGLPROGRAMUNIFORM2FVPROC,
38053
38054	/// The function pointer to `glProgramUniform3fv()`
38055	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform3fv.xhtml>
38056	pub programuniform3fv: PFNGLPROGRAMUNIFORM3FVPROC,
38057
38058	/// The function pointer to `glProgramUniform4fv()`
38059	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform4fv.xhtml>
38060	pub programuniform4fv: PFNGLPROGRAMUNIFORM4FVPROC,
38061
38062	/// The function pointer to `glProgramUniformMatrix2fv()`
38063	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix2fv.xhtml>
38064	pub programuniformmatrix2fv: PFNGLPROGRAMUNIFORMMATRIX2FVPROC,
38065
38066	/// The function pointer to `glProgramUniformMatrix3fv()`
38067	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix3fv.xhtml>
38068	pub programuniformmatrix3fv: PFNGLPROGRAMUNIFORMMATRIX3FVPROC,
38069
38070	/// The function pointer to `glProgramUniformMatrix4fv()`
38071	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix4fv.xhtml>
38072	pub programuniformmatrix4fv: PFNGLPROGRAMUNIFORMMATRIX4FVPROC,
38073
38074	/// The function pointer to `glProgramUniformMatrix2x3fv()`
38075	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix2x3fv.xhtml>
38076	pub programuniformmatrix2x3fv: PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC,
38077
38078	/// The function pointer to `glProgramUniformMatrix3x2fv()`
38079	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix3x2fv.xhtml>
38080	pub programuniformmatrix3x2fv: PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC,
38081
38082	/// The function pointer to `glProgramUniformMatrix2x4fv()`
38083	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix2x4fv.xhtml>
38084	pub programuniformmatrix2x4fv: PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC,
38085
38086	/// The function pointer to `glProgramUniformMatrix4x2fv()`
38087	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix4x2fv.xhtml>
38088	pub programuniformmatrix4x2fv: PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC,
38089
38090	/// The function pointer to `glProgramUniformMatrix3x4fv()`
38091	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix3x4fv.xhtml>
38092	pub programuniformmatrix3x4fv: PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC,
38093
38094	/// The function pointer to `glProgramUniformMatrix4x3fv()`
38095	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix4x3fv.xhtml>
38096	pub programuniformmatrix4x3fv: PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC,
38097
38098	/// The function pointer to `glValidateProgramPipeline()`
38099	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glValidateProgramPipeline.xhtml>
38100	pub validateprogrampipeline: PFNGLVALIDATEPROGRAMPIPELINEPROC,
38101
38102	/// The function pointer to `glGetProgramPipelineInfoLog()`
38103	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramPipelineInfoLog.xhtml>
38104	pub getprogrampipelineinfolog: PFNGLGETPROGRAMPIPELINEINFOLOGPROC,
38105
38106	/// The function pointer to `glBindImageTexture()`
38107	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindImageTexture.xhtml>
38108	pub bindimagetexture: PFNGLBINDIMAGETEXTUREPROC,
38109
38110	/// The function pointer to `glGetBooleani_v()`
38111	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetBooleani_v.xhtml>
38112	pub getbooleani_v: PFNGLGETBOOLEANI_VPROC,
38113
38114	/// The function pointer to `glMemoryBarrier()`
38115	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glMemoryBarrier.xhtml>
38116	pub memorybarrier: PFNGLMEMORYBARRIERPROC,
38117
38118	/// The function pointer to `glMemoryBarrierByRegion()`
38119	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glMemoryBarrierByRegion.xhtml>
38120	pub memorybarrierbyregion: PFNGLMEMORYBARRIERBYREGIONPROC,
38121
38122	/// The function pointer to `glTexStorage2DMultisample()`
38123	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexStorage2DMultisample.xhtml>
38124	pub texstorage2dmultisample: PFNGLTEXSTORAGE2DMULTISAMPLEPROC,
38125
38126	/// The function pointer to `glGetMultisamplefv()`
38127	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetMultisamplefv.xhtml>
38128	pub getmultisamplefv: PFNGLGETMULTISAMPLEFVPROC,
38129
38130	/// The function pointer to `glSampleMaski()`
38131	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glSampleMaski.xhtml>
38132	pub samplemaski: PFNGLSAMPLEMASKIPROC,
38133
38134	/// The function pointer to `glGetTexLevelParameteriv()`
38135	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetTexLevelParameteriv.xhtml>
38136	pub gettexlevelparameteriv: PFNGLGETTEXLEVELPARAMETERIVPROC,
38137
38138	/// The function pointer to `glGetTexLevelParameterfv()`
38139	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetTexLevelParameterfv.xhtml>
38140	pub gettexlevelparameterfv: PFNGLGETTEXLEVELPARAMETERFVPROC,
38141
38142	/// The function pointer to `glBindVertexBuffer()`
38143	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindVertexBuffer.xhtml>
38144	pub bindvertexbuffer: PFNGLBINDVERTEXBUFFERPROC,
38145
38146	/// The function pointer to `glVertexAttribFormat()`
38147	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribFormat.xhtml>
38148	pub vertexattribformat: PFNGLVERTEXATTRIBFORMATPROC,
38149
38150	/// The function pointer to `glVertexAttribIFormat()`
38151	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribIFormat.xhtml>
38152	pub vertexattribiformat: PFNGLVERTEXATTRIBIFORMATPROC,
38153
38154	/// The function pointer to `glVertexAttribBinding()`
38155	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribBinding.xhtml>
38156	pub vertexattribbinding: PFNGLVERTEXATTRIBBINDINGPROC,
38157
38158	/// The function pointer to `glVertexBindingDivisor()`
38159	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexBindingDivisor.xhtml>
38160	pub vertexbindingdivisor: PFNGLVERTEXBINDINGDIVISORPROC,
38161}
38162
38163impl ES_GL_3_1 for EsVersion31 {
38164	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetError.xhtml>
38165	#[inline(always)]
38166	fn glGetError(&self) -> GLenum {
38167		(self.geterror)()
38168	}
38169	#[inline(always)]
38170	fn glDispatchCompute(&self, num_groups_x: GLuint, num_groups_y: GLuint, num_groups_z: GLuint) -> Result<()> {
38171		#[cfg(feature = "catch_nullptr")]
38172		let ret = process_catch("glDispatchCompute", catch_unwind(||(self.dispatchcompute)(num_groups_x, num_groups_y, num_groups_z)));
38173		#[cfg(not(feature = "catch_nullptr"))]
38174		let ret = {(self.dispatchcompute)(num_groups_x, num_groups_y, num_groups_z); Ok(())};
38175		#[cfg(feature = "diagnose")]
38176		if let Ok(ret) = ret {
38177			return to_result("glDispatchCompute", ret, self.glGetError());
38178		} else {
38179			return ret
38180		}
38181		#[cfg(not(feature = "diagnose"))]
38182		return ret;
38183	}
38184	#[inline(always)]
38185	fn glDispatchComputeIndirect(&self, indirect: GLintptr) -> Result<()> {
38186		#[cfg(feature = "catch_nullptr")]
38187		let ret = process_catch("glDispatchComputeIndirect", catch_unwind(||(self.dispatchcomputeindirect)(indirect)));
38188		#[cfg(not(feature = "catch_nullptr"))]
38189		let ret = {(self.dispatchcomputeindirect)(indirect); Ok(())};
38190		#[cfg(feature = "diagnose")]
38191		if let Ok(ret) = ret {
38192			return to_result("glDispatchComputeIndirect", ret, self.glGetError());
38193		} else {
38194			return ret
38195		}
38196		#[cfg(not(feature = "diagnose"))]
38197		return ret;
38198	}
38199	#[inline(always)]
38200	fn glDrawArraysIndirect(&self, mode: GLenum, indirect: *const c_void) -> Result<()> {
38201		#[cfg(feature = "catch_nullptr")]
38202		let ret = process_catch("glDrawArraysIndirect", catch_unwind(||(self.drawarraysindirect)(mode, indirect)));
38203		#[cfg(not(feature = "catch_nullptr"))]
38204		let ret = {(self.drawarraysindirect)(mode, indirect); Ok(())};
38205		#[cfg(feature = "diagnose")]
38206		if let Ok(ret) = ret {
38207			return to_result("glDrawArraysIndirect", ret, self.glGetError());
38208		} else {
38209			return ret
38210		}
38211		#[cfg(not(feature = "diagnose"))]
38212		return ret;
38213	}
38214	#[inline(always)]
38215	fn glDrawElementsIndirect(&self, mode: GLenum, type_: GLenum, indirect: *const c_void) -> Result<()> {
38216		#[cfg(feature = "catch_nullptr")]
38217		let ret = process_catch("glDrawElementsIndirect", catch_unwind(||(self.drawelementsindirect)(mode, type_, indirect)));
38218		#[cfg(not(feature = "catch_nullptr"))]
38219		let ret = {(self.drawelementsindirect)(mode, type_, indirect); Ok(())};
38220		#[cfg(feature = "diagnose")]
38221		if let Ok(ret) = ret {
38222			return to_result("glDrawElementsIndirect", ret, self.glGetError());
38223		} else {
38224			return ret
38225		}
38226		#[cfg(not(feature = "diagnose"))]
38227		return ret;
38228	}
38229	#[inline(always)]
38230	fn glFramebufferParameteri(&self, target: GLenum, pname: GLenum, param: GLint) -> Result<()> {
38231		#[cfg(feature = "catch_nullptr")]
38232		let ret = process_catch("glFramebufferParameteri", catch_unwind(||(self.framebufferparameteri)(target, pname, param)));
38233		#[cfg(not(feature = "catch_nullptr"))]
38234		let ret = {(self.framebufferparameteri)(target, pname, param); Ok(())};
38235		#[cfg(feature = "diagnose")]
38236		if let Ok(ret) = ret {
38237			return to_result("glFramebufferParameteri", ret, self.glGetError());
38238		} else {
38239			return ret
38240		}
38241		#[cfg(not(feature = "diagnose"))]
38242		return ret;
38243	}
38244	#[inline(always)]
38245	fn glGetFramebufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
38246		#[cfg(feature = "catch_nullptr")]
38247		let ret = process_catch("glGetFramebufferParameteriv", catch_unwind(||(self.getframebufferparameteriv)(target, pname, params)));
38248		#[cfg(not(feature = "catch_nullptr"))]
38249		let ret = {(self.getframebufferparameteriv)(target, pname, params); Ok(())};
38250		#[cfg(feature = "diagnose")]
38251		if let Ok(ret) = ret {
38252			return to_result("glGetFramebufferParameteriv", ret, self.glGetError());
38253		} else {
38254			return ret
38255		}
38256		#[cfg(not(feature = "diagnose"))]
38257		return ret;
38258	}
38259	#[inline(always)]
38260	fn glGetProgramInterfaceiv(&self, program: GLuint, programInterface: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
38261		#[cfg(feature = "catch_nullptr")]
38262		let ret = process_catch("glGetProgramInterfaceiv", catch_unwind(||(self.getprograminterfaceiv)(program, programInterface, pname, params)));
38263		#[cfg(not(feature = "catch_nullptr"))]
38264		let ret = {(self.getprograminterfaceiv)(program, programInterface, pname, params); Ok(())};
38265		#[cfg(feature = "diagnose")]
38266		if let Ok(ret) = ret {
38267			return to_result("glGetProgramInterfaceiv", ret, self.glGetError());
38268		} else {
38269			return ret
38270		}
38271		#[cfg(not(feature = "diagnose"))]
38272		return ret;
38273	}
38274	#[inline(always)]
38275	fn glGetProgramResourceIndex(&self, program: GLuint, programInterface: GLenum, name: *const GLchar) -> Result<GLuint> {
38276		#[cfg(feature = "catch_nullptr")]
38277		let ret = process_catch("glGetProgramResourceIndex", catch_unwind(||(self.getprogramresourceindex)(program, programInterface, name)));
38278		#[cfg(not(feature = "catch_nullptr"))]
38279		let ret = Ok((self.getprogramresourceindex)(program, programInterface, name));
38280		#[cfg(feature = "diagnose")]
38281		if let Ok(ret) = ret {
38282			return to_result("glGetProgramResourceIndex", ret, self.glGetError());
38283		} else {
38284			return ret
38285		}
38286		#[cfg(not(feature = "diagnose"))]
38287		return ret;
38288	}
38289	#[inline(always)]
38290	fn glGetProgramResourceName(&self, program: GLuint, programInterface: GLenum, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, name: *mut GLchar) -> Result<()> {
38291		#[cfg(feature = "catch_nullptr")]
38292		let ret = process_catch("glGetProgramResourceName", catch_unwind(||(self.getprogramresourcename)(program, programInterface, index, bufSize, length, name)));
38293		#[cfg(not(feature = "catch_nullptr"))]
38294		let ret = {(self.getprogramresourcename)(program, programInterface, index, bufSize, length, name); Ok(())};
38295		#[cfg(feature = "diagnose")]
38296		if let Ok(ret) = ret {
38297			return to_result("glGetProgramResourceName", ret, self.glGetError());
38298		} else {
38299			return ret
38300		}
38301		#[cfg(not(feature = "diagnose"))]
38302		return ret;
38303	}
38304	#[inline(always)]
38305	fn glGetProgramResourceiv(&self, program: GLuint, programInterface: GLenum, index: GLuint, propCount: GLsizei, props: *const GLenum, bufSize: GLsizei, length: *mut GLsizei, params: *mut GLint) -> Result<()> {
38306		#[cfg(feature = "catch_nullptr")]
38307		let ret = process_catch("glGetProgramResourceiv", catch_unwind(||(self.getprogramresourceiv)(program, programInterface, index, propCount, props, bufSize, length, params)));
38308		#[cfg(not(feature = "catch_nullptr"))]
38309		let ret = {(self.getprogramresourceiv)(program, programInterface, index, propCount, props, bufSize, length, params); Ok(())};
38310		#[cfg(feature = "diagnose")]
38311		if let Ok(ret) = ret {
38312			return to_result("glGetProgramResourceiv", ret, self.glGetError());
38313		} else {
38314			return ret
38315		}
38316		#[cfg(not(feature = "diagnose"))]
38317		return ret;
38318	}
38319	#[inline(always)]
38320	fn glGetProgramResourceLocation(&self, program: GLuint, programInterface: GLenum, name: *const GLchar) -> Result<GLint> {
38321		#[cfg(feature = "catch_nullptr")]
38322		let ret = process_catch("glGetProgramResourceLocation", catch_unwind(||(self.getprogramresourcelocation)(program, programInterface, name)));
38323		#[cfg(not(feature = "catch_nullptr"))]
38324		let ret = Ok((self.getprogramresourcelocation)(program, programInterface, name));
38325		#[cfg(feature = "diagnose")]
38326		if let Ok(ret) = ret {
38327			return to_result("glGetProgramResourceLocation", ret, self.glGetError());
38328		} else {
38329			return ret
38330		}
38331		#[cfg(not(feature = "diagnose"))]
38332		return ret;
38333	}
38334	#[inline(always)]
38335	fn glUseProgramStages(&self, pipeline: GLuint, stages: GLbitfield, program: GLuint) -> Result<()> {
38336		#[cfg(feature = "catch_nullptr")]
38337		let ret = process_catch("glUseProgramStages", catch_unwind(||(self.useprogramstages)(pipeline, stages, program)));
38338		#[cfg(not(feature = "catch_nullptr"))]
38339		let ret = {(self.useprogramstages)(pipeline, stages, program); Ok(())};
38340		#[cfg(feature = "diagnose")]
38341		if let Ok(ret) = ret {
38342			return to_result("glUseProgramStages", ret, self.glGetError());
38343		} else {
38344			return ret
38345		}
38346		#[cfg(not(feature = "diagnose"))]
38347		return ret;
38348	}
38349	#[inline(always)]
38350	fn glActiveShaderProgram(&self, pipeline: GLuint, program: GLuint) -> Result<()> {
38351		#[cfg(feature = "catch_nullptr")]
38352		let ret = process_catch("glActiveShaderProgram", catch_unwind(||(self.activeshaderprogram)(pipeline, program)));
38353		#[cfg(not(feature = "catch_nullptr"))]
38354		let ret = {(self.activeshaderprogram)(pipeline, program); Ok(())};
38355		#[cfg(feature = "diagnose")]
38356		if let Ok(ret) = ret {
38357			return to_result("glActiveShaderProgram", ret, self.glGetError());
38358		} else {
38359			return ret
38360		}
38361		#[cfg(not(feature = "diagnose"))]
38362		return ret;
38363	}
38364	#[inline(always)]
38365	fn glCreateShaderProgramv(&self, type_: GLenum, count: GLsizei, strings: *const *const GLchar) -> Result<GLuint> {
38366		#[cfg(feature = "catch_nullptr")]
38367		let ret = process_catch("glCreateShaderProgramv", catch_unwind(||(self.createshaderprogramv)(type_, count, strings)));
38368		#[cfg(not(feature = "catch_nullptr"))]
38369		let ret = Ok((self.createshaderprogramv)(type_, count, strings));
38370		#[cfg(feature = "diagnose")]
38371		if let Ok(ret) = ret {
38372			return to_result("glCreateShaderProgramv", ret, self.glGetError());
38373		} else {
38374			return ret
38375		}
38376		#[cfg(not(feature = "diagnose"))]
38377		return ret;
38378	}
38379	#[inline(always)]
38380	fn glBindProgramPipeline(&self, pipeline: GLuint) -> Result<()> {
38381		#[cfg(feature = "catch_nullptr")]
38382		let ret = process_catch("glBindProgramPipeline", catch_unwind(||(self.bindprogrampipeline)(pipeline)));
38383		#[cfg(not(feature = "catch_nullptr"))]
38384		let ret = {(self.bindprogrampipeline)(pipeline); Ok(())};
38385		#[cfg(feature = "diagnose")]
38386		if let Ok(ret) = ret {
38387			return to_result("glBindProgramPipeline", ret, self.glGetError());
38388		} else {
38389			return ret
38390		}
38391		#[cfg(not(feature = "diagnose"))]
38392		return ret;
38393	}
38394	#[inline(always)]
38395	fn glDeleteProgramPipelines(&self, n: GLsizei, pipelines: *const GLuint) -> Result<()> {
38396		#[cfg(feature = "catch_nullptr")]
38397		let ret = process_catch("glDeleteProgramPipelines", catch_unwind(||(self.deleteprogrampipelines)(n, pipelines)));
38398		#[cfg(not(feature = "catch_nullptr"))]
38399		let ret = {(self.deleteprogrampipelines)(n, pipelines); Ok(())};
38400		#[cfg(feature = "diagnose")]
38401		if let Ok(ret) = ret {
38402			return to_result("glDeleteProgramPipelines", ret, self.glGetError());
38403		} else {
38404			return ret
38405		}
38406		#[cfg(not(feature = "diagnose"))]
38407		return ret;
38408	}
38409	#[inline(always)]
38410	fn glGenProgramPipelines(&self, n: GLsizei, pipelines: *mut GLuint) -> Result<()> {
38411		#[cfg(feature = "catch_nullptr")]
38412		let ret = process_catch("glGenProgramPipelines", catch_unwind(||(self.genprogrampipelines)(n, pipelines)));
38413		#[cfg(not(feature = "catch_nullptr"))]
38414		let ret = {(self.genprogrampipelines)(n, pipelines); Ok(())};
38415		#[cfg(feature = "diagnose")]
38416		if let Ok(ret) = ret {
38417			return to_result("glGenProgramPipelines", ret, self.glGetError());
38418		} else {
38419			return ret
38420		}
38421		#[cfg(not(feature = "diagnose"))]
38422		return ret;
38423	}
38424	#[inline(always)]
38425	fn glIsProgramPipeline(&self, pipeline: GLuint) -> Result<GLboolean> {
38426		#[cfg(feature = "catch_nullptr")]
38427		let ret = process_catch("glIsProgramPipeline", catch_unwind(||(self.isprogrampipeline)(pipeline)));
38428		#[cfg(not(feature = "catch_nullptr"))]
38429		let ret = Ok((self.isprogrampipeline)(pipeline));
38430		#[cfg(feature = "diagnose")]
38431		if let Ok(ret) = ret {
38432			return to_result("glIsProgramPipeline", ret, self.glGetError());
38433		} else {
38434			return ret
38435		}
38436		#[cfg(not(feature = "diagnose"))]
38437		return ret;
38438	}
38439	#[inline(always)]
38440	fn glGetProgramPipelineiv(&self, pipeline: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
38441		#[cfg(feature = "catch_nullptr")]
38442		let ret = process_catch("glGetProgramPipelineiv", catch_unwind(||(self.getprogrampipelineiv)(pipeline, pname, params)));
38443		#[cfg(not(feature = "catch_nullptr"))]
38444		let ret = {(self.getprogrampipelineiv)(pipeline, pname, params); Ok(())};
38445		#[cfg(feature = "diagnose")]
38446		if let Ok(ret) = ret {
38447			return to_result("glGetProgramPipelineiv", ret, self.glGetError());
38448		} else {
38449			return ret
38450		}
38451		#[cfg(not(feature = "diagnose"))]
38452		return ret;
38453	}
38454	#[inline(always)]
38455	fn glProgramUniform1i(&self, program: GLuint, location: GLint, v0: GLint) -> Result<()> {
38456		#[cfg(feature = "catch_nullptr")]
38457		let ret = process_catch("glProgramUniform1i", catch_unwind(||(self.programuniform1i)(program, location, v0)));
38458		#[cfg(not(feature = "catch_nullptr"))]
38459		let ret = {(self.programuniform1i)(program, location, v0); Ok(())};
38460		#[cfg(feature = "diagnose")]
38461		if let Ok(ret) = ret {
38462			return to_result("glProgramUniform1i", ret, self.glGetError());
38463		} else {
38464			return ret
38465		}
38466		#[cfg(not(feature = "diagnose"))]
38467		return ret;
38468	}
38469	#[inline(always)]
38470	fn glProgramUniform2i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint) -> Result<()> {
38471		#[cfg(feature = "catch_nullptr")]
38472		let ret = process_catch("glProgramUniform2i", catch_unwind(||(self.programuniform2i)(program, location, v0, v1)));
38473		#[cfg(not(feature = "catch_nullptr"))]
38474		let ret = {(self.programuniform2i)(program, location, v0, v1); Ok(())};
38475		#[cfg(feature = "diagnose")]
38476		if let Ok(ret) = ret {
38477			return to_result("glProgramUniform2i", ret, self.glGetError());
38478		} else {
38479			return ret
38480		}
38481		#[cfg(not(feature = "diagnose"))]
38482		return ret;
38483	}
38484	#[inline(always)]
38485	fn glProgramUniform3i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint, v2: GLint) -> Result<()> {
38486		#[cfg(feature = "catch_nullptr")]
38487		let ret = process_catch("glProgramUniform3i", catch_unwind(||(self.programuniform3i)(program, location, v0, v1, v2)));
38488		#[cfg(not(feature = "catch_nullptr"))]
38489		let ret = {(self.programuniform3i)(program, location, v0, v1, v2); Ok(())};
38490		#[cfg(feature = "diagnose")]
38491		if let Ok(ret) = ret {
38492			return to_result("glProgramUniform3i", ret, self.glGetError());
38493		} else {
38494			return ret
38495		}
38496		#[cfg(not(feature = "diagnose"))]
38497		return ret;
38498	}
38499	#[inline(always)]
38500	fn glProgramUniform4i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint, v2: GLint, v3: GLint) -> Result<()> {
38501		#[cfg(feature = "catch_nullptr")]
38502		let ret = process_catch("glProgramUniform4i", catch_unwind(||(self.programuniform4i)(program, location, v0, v1, v2, v3)));
38503		#[cfg(not(feature = "catch_nullptr"))]
38504		let ret = {(self.programuniform4i)(program, location, v0, v1, v2, v3); Ok(())};
38505		#[cfg(feature = "diagnose")]
38506		if let Ok(ret) = ret {
38507			return to_result("glProgramUniform4i", ret, self.glGetError());
38508		} else {
38509			return ret
38510		}
38511		#[cfg(not(feature = "diagnose"))]
38512		return ret;
38513	}
38514	#[inline(always)]
38515	fn glProgramUniform1ui(&self, program: GLuint, location: GLint, v0: GLuint) -> Result<()> {
38516		#[cfg(feature = "catch_nullptr")]
38517		let ret = process_catch("glProgramUniform1ui", catch_unwind(||(self.programuniform1ui)(program, location, v0)));
38518		#[cfg(not(feature = "catch_nullptr"))]
38519		let ret = {(self.programuniform1ui)(program, location, v0); Ok(())};
38520		#[cfg(feature = "diagnose")]
38521		if let Ok(ret) = ret {
38522			return to_result("glProgramUniform1ui", ret, self.glGetError());
38523		} else {
38524			return ret
38525		}
38526		#[cfg(not(feature = "diagnose"))]
38527		return ret;
38528	}
38529	#[inline(always)]
38530	fn glProgramUniform2ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint) -> Result<()> {
38531		#[cfg(feature = "catch_nullptr")]
38532		let ret = process_catch("glProgramUniform2ui", catch_unwind(||(self.programuniform2ui)(program, location, v0, v1)));
38533		#[cfg(not(feature = "catch_nullptr"))]
38534		let ret = {(self.programuniform2ui)(program, location, v0, v1); Ok(())};
38535		#[cfg(feature = "diagnose")]
38536		if let Ok(ret) = ret {
38537			return to_result("glProgramUniform2ui", ret, self.glGetError());
38538		} else {
38539			return ret
38540		}
38541		#[cfg(not(feature = "diagnose"))]
38542		return ret;
38543	}
38544	#[inline(always)]
38545	fn glProgramUniform3ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint) -> Result<()> {
38546		#[cfg(feature = "catch_nullptr")]
38547		let ret = process_catch("glProgramUniform3ui", catch_unwind(||(self.programuniform3ui)(program, location, v0, v1, v2)));
38548		#[cfg(not(feature = "catch_nullptr"))]
38549		let ret = {(self.programuniform3ui)(program, location, v0, v1, v2); Ok(())};
38550		#[cfg(feature = "diagnose")]
38551		if let Ok(ret) = ret {
38552			return to_result("glProgramUniform3ui", ret, self.glGetError());
38553		} else {
38554			return ret
38555		}
38556		#[cfg(not(feature = "diagnose"))]
38557		return ret;
38558	}
38559	#[inline(always)]
38560	fn glProgramUniform4ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint, v3: GLuint) -> Result<()> {
38561		#[cfg(feature = "catch_nullptr")]
38562		let ret = process_catch("glProgramUniform4ui", catch_unwind(||(self.programuniform4ui)(program, location, v0, v1, v2, v3)));
38563		#[cfg(not(feature = "catch_nullptr"))]
38564		let ret = {(self.programuniform4ui)(program, location, v0, v1, v2, v3); Ok(())};
38565		#[cfg(feature = "diagnose")]
38566		if let Ok(ret) = ret {
38567			return to_result("glProgramUniform4ui", ret, self.glGetError());
38568		} else {
38569			return ret
38570		}
38571		#[cfg(not(feature = "diagnose"))]
38572		return ret;
38573	}
38574	#[inline(always)]
38575	fn glProgramUniform1f(&self, program: GLuint, location: GLint, v0: GLfloat) -> Result<()> {
38576		#[cfg(feature = "catch_nullptr")]
38577		let ret = process_catch("glProgramUniform1f", catch_unwind(||(self.programuniform1f)(program, location, v0)));
38578		#[cfg(not(feature = "catch_nullptr"))]
38579		let ret = {(self.programuniform1f)(program, location, v0); Ok(())};
38580		#[cfg(feature = "diagnose")]
38581		if let Ok(ret) = ret {
38582			return to_result("glProgramUniform1f", ret, self.glGetError());
38583		} else {
38584			return ret
38585		}
38586		#[cfg(not(feature = "diagnose"))]
38587		return ret;
38588	}
38589	#[inline(always)]
38590	fn glProgramUniform2f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat) -> Result<()> {
38591		#[cfg(feature = "catch_nullptr")]
38592		let ret = process_catch("glProgramUniform2f", catch_unwind(||(self.programuniform2f)(program, location, v0, v1)));
38593		#[cfg(not(feature = "catch_nullptr"))]
38594		let ret = {(self.programuniform2f)(program, location, v0, v1); Ok(())};
38595		#[cfg(feature = "diagnose")]
38596		if let Ok(ret) = ret {
38597			return to_result("glProgramUniform2f", ret, self.glGetError());
38598		} else {
38599			return ret
38600		}
38601		#[cfg(not(feature = "diagnose"))]
38602		return ret;
38603	}
38604	#[inline(always)]
38605	fn glProgramUniform3f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat) -> Result<()> {
38606		#[cfg(feature = "catch_nullptr")]
38607		let ret = process_catch("glProgramUniform3f", catch_unwind(||(self.programuniform3f)(program, location, v0, v1, v2)));
38608		#[cfg(not(feature = "catch_nullptr"))]
38609		let ret = {(self.programuniform3f)(program, location, v0, v1, v2); Ok(())};
38610		#[cfg(feature = "diagnose")]
38611		if let Ok(ret) = ret {
38612			return to_result("glProgramUniform3f", ret, self.glGetError());
38613		} else {
38614			return ret
38615		}
38616		#[cfg(not(feature = "diagnose"))]
38617		return ret;
38618	}
38619	#[inline(always)]
38620	fn glProgramUniform4f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat, v3: GLfloat) -> Result<()> {
38621		#[cfg(feature = "catch_nullptr")]
38622		let ret = process_catch("glProgramUniform4f", catch_unwind(||(self.programuniform4f)(program, location, v0, v1, v2, v3)));
38623		#[cfg(not(feature = "catch_nullptr"))]
38624		let ret = {(self.programuniform4f)(program, location, v0, v1, v2, v3); Ok(())};
38625		#[cfg(feature = "diagnose")]
38626		if let Ok(ret) = ret {
38627			return to_result("glProgramUniform4f", ret, self.glGetError());
38628		} else {
38629			return ret
38630		}
38631		#[cfg(not(feature = "diagnose"))]
38632		return ret;
38633	}
38634	#[inline(always)]
38635	fn glProgramUniform1iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
38636		#[cfg(feature = "catch_nullptr")]
38637		let ret = process_catch("glProgramUniform1iv", catch_unwind(||(self.programuniform1iv)(program, location, count, value)));
38638		#[cfg(not(feature = "catch_nullptr"))]
38639		let ret = {(self.programuniform1iv)(program, location, count, value); Ok(())};
38640		#[cfg(feature = "diagnose")]
38641		if let Ok(ret) = ret {
38642			return to_result("glProgramUniform1iv", ret, self.glGetError());
38643		} else {
38644			return ret
38645		}
38646		#[cfg(not(feature = "diagnose"))]
38647		return ret;
38648	}
38649	#[inline(always)]
38650	fn glProgramUniform2iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
38651		#[cfg(feature = "catch_nullptr")]
38652		let ret = process_catch("glProgramUniform2iv", catch_unwind(||(self.programuniform2iv)(program, location, count, value)));
38653		#[cfg(not(feature = "catch_nullptr"))]
38654		let ret = {(self.programuniform2iv)(program, location, count, value); Ok(())};
38655		#[cfg(feature = "diagnose")]
38656		if let Ok(ret) = ret {
38657			return to_result("glProgramUniform2iv", ret, self.glGetError());
38658		} else {
38659			return ret
38660		}
38661		#[cfg(not(feature = "diagnose"))]
38662		return ret;
38663	}
38664	#[inline(always)]
38665	fn glProgramUniform3iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
38666		#[cfg(feature = "catch_nullptr")]
38667		let ret = process_catch("glProgramUniform3iv", catch_unwind(||(self.programuniform3iv)(program, location, count, value)));
38668		#[cfg(not(feature = "catch_nullptr"))]
38669		let ret = {(self.programuniform3iv)(program, location, count, value); Ok(())};
38670		#[cfg(feature = "diagnose")]
38671		if let Ok(ret) = ret {
38672			return to_result("glProgramUniform3iv", ret, self.glGetError());
38673		} else {
38674			return ret
38675		}
38676		#[cfg(not(feature = "diagnose"))]
38677		return ret;
38678	}
38679	#[inline(always)]
38680	fn glProgramUniform4iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
38681		#[cfg(feature = "catch_nullptr")]
38682		let ret = process_catch("glProgramUniform4iv", catch_unwind(||(self.programuniform4iv)(program, location, count, value)));
38683		#[cfg(not(feature = "catch_nullptr"))]
38684		let ret = {(self.programuniform4iv)(program, location, count, value); Ok(())};
38685		#[cfg(feature = "diagnose")]
38686		if let Ok(ret) = ret {
38687			return to_result("glProgramUniform4iv", ret, self.glGetError());
38688		} else {
38689			return ret
38690		}
38691		#[cfg(not(feature = "diagnose"))]
38692		return ret;
38693	}
38694	#[inline(always)]
38695	fn glProgramUniform1uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
38696		#[cfg(feature = "catch_nullptr")]
38697		let ret = process_catch("glProgramUniform1uiv", catch_unwind(||(self.programuniform1uiv)(program, location, count, value)));
38698		#[cfg(not(feature = "catch_nullptr"))]
38699		let ret = {(self.programuniform1uiv)(program, location, count, value); Ok(())};
38700		#[cfg(feature = "diagnose")]
38701		if let Ok(ret) = ret {
38702			return to_result("glProgramUniform1uiv", ret, self.glGetError());
38703		} else {
38704			return ret
38705		}
38706		#[cfg(not(feature = "diagnose"))]
38707		return ret;
38708	}
38709	#[inline(always)]
38710	fn glProgramUniform2uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
38711		#[cfg(feature = "catch_nullptr")]
38712		let ret = process_catch("glProgramUniform2uiv", catch_unwind(||(self.programuniform2uiv)(program, location, count, value)));
38713		#[cfg(not(feature = "catch_nullptr"))]
38714		let ret = {(self.programuniform2uiv)(program, location, count, value); Ok(())};
38715		#[cfg(feature = "diagnose")]
38716		if let Ok(ret) = ret {
38717			return to_result("glProgramUniform2uiv", ret, self.glGetError());
38718		} else {
38719			return ret
38720		}
38721		#[cfg(not(feature = "diagnose"))]
38722		return ret;
38723	}
38724	#[inline(always)]
38725	fn glProgramUniform3uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
38726		#[cfg(feature = "catch_nullptr")]
38727		let ret = process_catch("glProgramUniform3uiv", catch_unwind(||(self.programuniform3uiv)(program, location, count, value)));
38728		#[cfg(not(feature = "catch_nullptr"))]
38729		let ret = {(self.programuniform3uiv)(program, location, count, value); Ok(())};
38730		#[cfg(feature = "diagnose")]
38731		if let Ok(ret) = ret {
38732			return to_result("glProgramUniform3uiv", ret, self.glGetError());
38733		} else {
38734			return ret
38735		}
38736		#[cfg(not(feature = "diagnose"))]
38737		return ret;
38738	}
38739	#[inline(always)]
38740	fn glProgramUniform4uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
38741		#[cfg(feature = "catch_nullptr")]
38742		let ret = process_catch("glProgramUniform4uiv", catch_unwind(||(self.programuniform4uiv)(program, location, count, value)));
38743		#[cfg(not(feature = "catch_nullptr"))]
38744		let ret = {(self.programuniform4uiv)(program, location, count, value); Ok(())};
38745		#[cfg(feature = "diagnose")]
38746		if let Ok(ret) = ret {
38747			return to_result("glProgramUniform4uiv", ret, self.glGetError());
38748		} else {
38749			return ret
38750		}
38751		#[cfg(not(feature = "diagnose"))]
38752		return ret;
38753	}
38754	#[inline(always)]
38755	fn glProgramUniform1fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
38756		#[cfg(feature = "catch_nullptr")]
38757		let ret = process_catch("glProgramUniform1fv", catch_unwind(||(self.programuniform1fv)(program, location, count, value)));
38758		#[cfg(not(feature = "catch_nullptr"))]
38759		let ret = {(self.programuniform1fv)(program, location, count, value); Ok(())};
38760		#[cfg(feature = "diagnose")]
38761		if let Ok(ret) = ret {
38762			return to_result("glProgramUniform1fv", ret, self.glGetError());
38763		} else {
38764			return ret
38765		}
38766		#[cfg(not(feature = "diagnose"))]
38767		return ret;
38768	}
38769	#[inline(always)]
38770	fn glProgramUniform2fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
38771		#[cfg(feature = "catch_nullptr")]
38772		let ret = process_catch("glProgramUniform2fv", catch_unwind(||(self.programuniform2fv)(program, location, count, value)));
38773		#[cfg(not(feature = "catch_nullptr"))]
38774		let ret = {(self.programuniform2fv)(program, location, count, value); Ok(())};
38775		#[cfg(feature = "diagnose")]
38776		if let Ok(ret) = ret {
38777			return to_result("glProgramUniform2fv", ret, self.glGetError());
38778		} else {
38779			return ret
38780		}
38781		#[cfg(not(feature = "diagnose"))]
38782		return ret;
38783	}
38784	#[inline(always)]
38785	fn glProgramUniform3fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
38786		#[cfg(feature = "catch_nullptr")]
38787		let ret = process_catch("glProgramUniform3fv", catch_unwind(||(self.programuniform3fv)(program, location, count, value)));
38788		#[cfg(not(feature = "catch_nullptr"))]
38789		let ret = {(self.programuniform3fv)(program, location, count, value); Ok(())};
38790		#[cfg(feature = "diagnose")]
38791		if let Ok(ret) = ret {
38792			return to_result("glProgramUniform3fv", ret, self.glGetError());
38793		} else {
38794			return ret
38795		}
38796		#[cfg(not(feature = "diagnose"))]
38797		return ret;
38798	}
38799	#[inline(always)]
38800	fn glProgramUniform4fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
38801		#[cfg(feature = "catch_nullptr")]
38802		let ret = process_catch("glProgramUniform4fv", catch_unwind(||(self.programuniform4fv)(program, location, count, value)));
38803		#[cfg(not(feature = "catch_nullptr"))]
38804		let ret = {(self.programuniform4fv)(program, location, count, value); Ok(())};
38805		#[cfg(feature = "diagnose")]
38806		if let Ok(ret) = ret {
38807			return to_result("glProgramUniform4fv", ret, self.glGetError());
38808		} else {
38809			return ret
38810		}
38811		#[cfg(not(feature = "diagnose"))]
38812		return ret;
38813	}
38814	#[inline(always)]
38815	fn glProgramUniformMatrix2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
38816		#[cfg(feature = "catch_nullptr")]
38817		let ret = process_catch("glProgramUniformMatrix2fv", catch_unwind(||(self.programuniformmatrix2fv)(program, location, count, transpose, value)));
38818		#[cfg(not(feature = "catch_nullptr"))]
38819		let ret = {(self.programuniformmatrix2fv)(program, location, count, transpose, value); Ok(())};
38820		#[cfg(feature = "diagnose")]
38821		if let Ok(ret) = ret {
38822			return to_result("glProgramUniformMatrix2fv", ret, self.glGetError());
38823		} else {
38824			return ret
38825		}
38826		#[cfg(not(feature = "diagnose"))]
38827		return ret;
38828	}
38829	#[inline(always)]
38830	fn glProgramUniformMatrix3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
38831		#[cfg(feature = "catch_nullptr")]
38832		let ret = process_catch("glProgramUniformMatrix3fv", catch_unwind(||(self.programuniformmatrix3fv)(program, location, count, transpose, value)));
38833		#[cfg(not(feature = "catch_nullptr"))]
38834		let ret = {(self.programuniformmatrix3fv)(program, location, count, transpose, value); Ok(())};
38835		#[cfg(feature = "diagnose")]
38836		if let Ok(ret) = ret {
38837			return to_result("glProgramUniformMatrix3fv", ret, self.glGetError());
38838		} else {
38839			return ret
38840		}
38841		#[cfg(not(feature = "diagnose"))]
38842		return ret;
38843	}
38844	#[inline(always)]
38845	fn glProgramUniformMatrix4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
38846		#[cfg(feature = "catch_nullptr")]
38847		let ret = process_catch("glProgramUniformMatrix4fv", catch_unwind(||(self.programuniformmatrix4fv)(program, location, count, transpose, value)));
38848		#[cfg(not(feature = "catch_nullptr"))]
38849		let ret = {(self.programuniformmatrix4fv)(program, location, count, transpose, value); Ok(())};
38850		#[cfg(feature = "diagnose")]
38851		if let Ok(ret) = ret {
38852			return to_result("glProgramUniformMatrix4fv", ret, self.glGetError());
38853		} else {
38854			return ret
38855		}
38856		#[cfg(not(feature = "diagnose"))]
38857		return ret;
38858	}
38859	#[inline(always)]
38860	fn glProgramUniformMatrix2x3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
38861		#[cfg(feature = "catch_nullptr")]
38862		let ret = process_catch("glProgramUniformMatrix2x3fv", catch_unwind(||(self.programuniformmatrix2x3fv)(program, location, count, transpose, value)));
38863		#[cfg(not(feature = "catch_nullptr"))]
38864		let ret = {(self.programuniformmatrix2x3fv)(program, location, count, transpose, value); Ok(())};
38865		#[cfg(feature = "diagnose")]
38866		if let Ok(ret) = ret {
38867			return to_result("glProgramUniformMatrix2x3fv", ret, self.glGetError());
38868		} else {
38869			return ret
38870		}
38871		#[cfg(not(feature = "diagnose"))]
38872		return ret;
38873	}
38874	#[inline(always)]
38875	fn glProgramUniformMatrix3x2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
38876		#[cfg(feature = "catch_nullptr")]
38877		let ret = process_catch("glProgramUniformMatrix3x2fv", catch_unwind(||(self.programuniformmatrix3x2fv)(program, location, count, transpose, value)));
38878		#[cfg(not(feature = "catch_nullptr"))]
38879		let ret = {(self.programuniformmatrix3x2fv)(program, location, count, transpose, value); Ok(())};
38880		#[cfg(feature = "diagnose")]
38881		if let Ok(ret) = ret {
38882			return to_result("glProgramUniformMatrix3x2fv", ret, self.glGetError());
38883		} else {
38884			return ret
38885		}
38886		#[cfg(not(feature = "diagnose"))]
38887		return ret;
38888	}
38889	#[inline(always)]
38890	fn glProgramUniformMatrix2x4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
38891		#[cfg(feature = "catch_nullptr")]
38892		let ret = process_catch("glProgramUniformMatrix2x4fv", catch_unwind(||(self.programuniformmatrix2x4fv)(program, location, count, transpose, value)));
38893		#[cfg(not(feature = "catch_nullptr"))]
38894		let ret = {(self.programuniformmatrix2x4fv)(program, location, count, transpose, value); Ok(())};
38895		#[cfg(feature = "diagnose")]
38896		if let Ok(ret) = ret {
38897			return to_result("glProgramUniformMatrix2x4fv", ret, self.glGetError());
38898		} else {
38899			return ret
38900		}
38901		#[cfg(not(feature = "diagnose"))]
38902		return ret;
38903	}
38904	#[inline(always)]
38905	fn glProgramUniformMatrix4x2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
38906		#[cfg(feature = "catch_nullptr")]
38907		let ret = process_catch("glProgramUniformMatrix4x2fv", catch_unwind(||(self.programuniformmatrix4x2fv)(program, location, count, transpose, value)));
38908		#[cfg(not(feature = "catch_nullptr"))]
38909		let ret = {(self.programuniformmatrix4x2fv)(program, location, count, transpose, value); Ok(())};
38910		#[cfg(feature = "diagnose")]
38911		if let Ok(ret) = ret {
38912			return to_result("glProgramUniformMatrix4x2fv", ret, self.glGetError());
38913		} else {
38914			return ret
38915		}
38916		#[cfg(not(feature = "diagnose"))]
38917		return ret;
38918	}
38919	#[inline(always)]
38920	fn glProgramUniformMatrix3x4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
38921		#[cfg(feature = "catch_nullptr")]
38922		let ret = process_catch("glProgramUniformMatrix3x4fv", catch_unwind(||(self.programuniformmatrix3x4fv)(program, location, count, transpose, value)));
38923		#[cfg(not(feature = "catch_nullptr"))]
38924		let ret = {(self.programuniformmatrix3x4fv)(program, location, count, transpose, value); Ok(())};
38925		#[cfg(feature = "diagnose")]
38926		if let Ok(ret) = ret {
38927			return to_result("glProgramUniformMatrix3x4fv", ret, self.glGetError());
38928		} else {
38929			return ret
38930		}
38931		#[cfg(not(feature = "diagnose"))]
38932		return ret;
38933	}
38934	#[inline(always)]
38935	fn glProgramUniformMatrix4x3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
38936		#[cfg(feature = "catch_nullptr")]
38937		let ret = process_catch("glProgramUniformMatrix4x3fv", catch_unwind(||(self.programuniformmatrix4x3fv)(program, location, count, transpose, value)));
38938		#[cfg(not(feature = "catch_nullptr"))]
38939		let ret = {(self.programuniformmatrix4x3fv)(program, location, count, transpose, value); Ok(())};
38940		#[cfg(feature = "diagnose")]
38941		if let Ok(ret) = ret {
38942			return to_result("glProgramUniformMatrix4x3fv", ret, self.glGetError());
38943		} else {
38944			return ret
38945		}
38946		#[cfg(not(feature = "diagnose"))]
38947		return ret;
38948	}
38949	#[inline(always)]
38950	fn glValidateProgramPipeline(&self, pipeline: GLuint) -> Result<()> {
38951		#[cfg(feature = "catch_nullptr")]
38952		let ret = process_catch("glValidateProgramPipeline", catch_unwind(||(self.validateprogrampipeline)(pipeline)));
38953		#[cfg(not(feature = "catch_nullptr"))]
38954		let ret = {(self.validateprogrampipeline)(pipeline); Ok(())};
38955		#[cfg(feature = "diagnose")]
38956		if let Ok(ret) = ret {
38957			return to_result("glValidateProgramPipeline", ret, self.glGetError());
38958		} else {
38959			return ret
38960		}
38961		#[cfg(not(feature = "diagnose"))]
38962		return ret;
38963	}
38964	#[inline(always)]
38965	fn glGetProgramPipelineInfoLog(&self, pipeline: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()> {
38966		#[cfg(feature = "catch_nullptr")]
38967		let ret = process_catch("glGetProgramPipelineInfoLog", catch_unwind(||(self.getprogrampipelineinfolog)(pipeline, bufSize, length, infoLog)));
38968		#[cfg(not(feature = "catch_nullptr"))]
38969		let ret = {(self.getprogrampipelineinfolog)(pipeline, bufSize, length, infoLog); Ok(())};
38970		#[cfg(feature = "diagnose")]
38971		if let Ok(ret) = ret {
38972			return to_result("glGetProgramPipelineInfoLog", ret, self.glGetError());
38973		} else {
38974			return ret
38975		}
38976		#[cfg(not(feature = "diagnose"))]
38977		return ret;
38978	}
38979	#[inline(always)]
38980	fn glBindImageTexture(&self, unit: GLuint, texture: GLuint, level: GLint, layered: GLboolean, layer: GLint, access: GLenum, format: GLenum) -> Result<()> {
38981		#[cfg(feature = "catch_nullptr")]
38982		let ret = process_catch("glBindImageTexture", catch_unwind(||(self.bindimagetexture)(unit, texture, level, layered, layer, access, format)));
38983		#[cfg(not(feature = "catch_nullptr"))]
38984		let ret = {(self.bindimagetexture)(unit, texture, level, layered, layer, access, format); Ok(())};
38985		#[cfg(feature = "diagnose")]
38986		if let Ok(ret) = ret {
38987			return to_result("glBindImageTexture", ret, self.glGetError());
38988		} else {
38989			return ret
38990		}
38991		#[cfg(not(feature = "diagnose"))]
38992		return ret;
38993	}
38994	#[inline(always)]
38995	fn glGetBooleani_v(&self, target: GLenum, index: GLuint, data: *mut GLboolean) -> Result<()> {
38996		#[cfg(feature = "catch_nullptr")]
38997		let ret = process_catch("glGetBooleani_v", catch_unwind(||(self.getbooleani_v)(target, index, data)));
38998		#[cfg(not(feature = "catch_nullptr"))]
38999		let ret = {(self.getbooleani_v)(target, index, data); Ok(())};
39000		#[cfg(feature = "diagnose")]
39001		if let Ok(ret) = ret {
39002			return to_result("glGetBooleani_v", ret, self.glGetError());
39003		} else {
39004			return ret
39005		}
39006		#[cfg(not(feature = "diagnose"))]
39007		return ret;
39008	}
39009	#[inline(always)]
39010	fn glMemoryBarrier(&self, barriers: GLbitfield) -> Result<()> {
39011		#[cfg(feature = "catch_nullptr")]
39012		let ret = process_catch("glMemoryBarrier", catch_unwind(||(self.memorybarrier)(barriers)));
39013		#[cfg(not(feature = "catch_nullptr"))]
39014		let ret = {(self.memorybarrier)(barriers); Ok(())};
39015		#[cfg(feature = "diagnose")]
39016		if let Ok(ret) = ret {
39017			return to_result("glMemoryBarrier", ret, self.glGetError());
39018		} else {
39019			return ret
39020		}
39021		#[cfg(not(feature = "diagnose"))]
39022		return ret;
39023	}
39024	#[inline(always)]
39025	fn glMemoryBarrierByRegion(&self, barriers: GLbitfield) -> Result<()> {
39026		#[cfg(feature = "catch_nullptr")]
39027		let ret = process_catch("glMemoryBarrierByRegion", catch_unwind(||(self.memorybarrierbyregion)(barriers)));
39028		#[cfg(not(feature = "catch_nullptr"))]
39029		let ret = {(self.memorybarrierbyregion)(barriers); Ok(())};
39030		#[cfg(feature = "diagnose")]
39031		if let Ok(ret) = ret {
39032			return to_result("glMemoryBarrierByRegion", ret, self.glGetError());
39033		} else {
39034			return ret
39035		}
39036		#[cfg(not(feature = "diagnose"))]
39037		return ret;
39038	}
39039	#[inline(always)]
39040	fn glTexStorage2DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, fixedsamplelocations: GLboolean) -> Result<()> {
39041		#[cfg(feature = "catch_nullptr")]
39042		let ret = process_catch("glTexStorage2DMultisample", catch_unwind(||(self.texstorage2dmultisample)(target, samples, internalformat, width, height, fixedsamplelocations)));
39043		#[cfg(not(feature = "catch_nullptr"))]
39044		let ret = {(self.texstorage2dmultisample)(target, samples, internalformat, width, height, fixedsamplelocations); Ok(())};
39045		#[cfg(feature = "diagnose")]
39046		if let Ok(ret) = ret {
39047			return to_result("glTexStorage2DMultisample", ret, self.glGetError());
39048		} else {
39049			return ret
39050		}
39051		#[cfg(not(feature = "diagnose"))]
39052		return ret;
39053	}
39054	#[inline(always)]
39055	fn glGetMultisamplefv(&self, pname: GLenum, index: GLuint, val: *mut GLfloat) -> Result<()> {
39056		#[cfg(feature = "catch_nullptr")]
39057		let ret = process_catch("glGetMultisamplefv", catch_unwind(||(self.getmultisamplefv)(pname, index, val)));
39058		#[cfg(not(feature = "catch_nullptr"))]
39059		let ret = {(self.getmultisamplefv)(pname, index, val); Ok(())};
39060		#[cfg(feature = "diagnose")]
39061		if let Ok(ret) = ret {
39062			return to_result("glGetMultisamplefv", ret, self.glGetError());
39063		} else {
39064			return ret
39065		}
39066		#[cfg(not(feature = "diagnose"))]
39067		return ret;
39068	}
39069	#[inline(always)]
39070	fn glSampleMaski(&self, maskNumber: GLuint, mask: GLbitfield) -> Result<()> {
39071		#[cfg(feature = "catch_nullptr")]
39072		let ret = process_catch("glSampleMaski", catch_unwind(||(self.samplemaski)(maskNumber, mask)));
39073		#[cfg(not(feature = "catch_nullptr"))]
39074		let ret = {(self.samplemaski)(maskNumber, mask); Ok(())};
39075		#[cfg(feature = "diagnose")]
39076		if let Ok(ret) = ret {
39077			return to_result("glSampleMaski", ret, self.glGetError());
39078		} else {
39079			return ret
39080		}
39081		#[cfg(not(feature = "diagnose"))]
39082		return ret;
39083	}
39084	#[inline(always)]
39085	fn glGetTexLevelParameteriv(&self, target: GLenum, level: GLint, pname: GLenum, params: *mut GLint) -> Result<()> {
39086		#[cfg(feature = "catch_nullptr")]
39087		let ret = process_catch("glGetTexLevelParameteriv", catch_unwind(||(self.gettexlevelparameteriv)(target, level, pname, params)));
39088		#[cfg(not(feature = "catch_nullptr"))]
39089		let ret = {(self.gettexlevelparameteriv)(target, level, pname, params); Ok(())};
39090		#[cfg(feature = "diagnose")]
39091		if let Ok(ret) = ret {
39092			return to_result("glGetTexLevelParameteriv", ret, self.glGetError());
39093		} else {
39094			return ret
39095		}
39096		#[cfg(not(feature = "diagnose"))]
39097		return ret;
39098	}
39099	#[inline(always)]
39100	fn glGetTexLevelParameterfv(&self, target: GLenum, level: GLint, pname: GLenum, params: *mut GLfloat) -> Result<()> {
39101		#[cfg(feature = "catch_nullptr")]
39102		let ret = process_catch("glGetTexLevelParameterfv", catch_unwind(||(self.gettexlevelparameterfv)(target, level, pname, params)));
39103		#[cfg(not(feature = "catch_nullptr"))]
39104		let ret = {(self.gettexlevelparameterfv)(target, level, pname, params); Ok(())};
39105		#[cfg(feature = "diagnose")]
39106		if let Ok(ret) = ret {
39107			return to_result("glGetTexLevelParameterfv", ret, self.glGetError());
39108		} else {
39109			return ret
39110		}
39111		#[cfg(not(feature = "diagnose"))]
39112		return ret;
39113	}
39114	#[inline(always)]
39115	fn glBindVertexBuffer(&self, bindingindex: GLuint, buffer: GLuint, offset: GLintptr, stride: GLsizei) -> Result<()> {
39116		#[cfg(feature = "catch_nullptr")]
39117		let ret = process_catch("glBindVertexBuffer", catch_unwind(||(self.bindvertexbuffer)(bindingindex, buffer, offset, stride)));
39118		#[cfg(not(feature = "catch_nullptr"))]
39119		let ret = {(self.bindvertexbuffer)(bindingindex, buffer, offset, stride); Ok(())};
39120		#[cfg(feature = "diagnose")]
39121		if let Ok(ret) = ret {
39122			return to_result("glBindVertexBuffer", ret, self.glGetError());
39123		} else {
39124			return ret
39125		}
39126		#[cfg(not(feature = "diagnose"))]
39127		return ret;
39128	}
39129	#[inline(always)]
39130	fn glVertexAttribFormat(&self, attribindex: GLuint, size: GLint, type_: GLenum, normalized: GLboolean, relativeoffset: GLuint) -> Result<()> {
39131		#[cfg(feature = "catch_nullptr")]
39132		let ret = process_catch("glVertexAttribFormat", catch_unwind(||(self.vertexattribformat)(attribindex, size, type_, normalized, relativeoffset)));
39133		#[cfg(not(feature = "catch_nullptr"))]
39134		let ret = {(self.vertexattribformat)(attribindex, size, type_, normalized, relativeoffset); Ok(())};
39135		#[cfg(feature = "diagnose")]
39136		if let Ok(ret) = ret {
39137			return to_result("glVertexAttribFormat", ret, self.glGetError());
39138		} else {
39139			return ret
39140		}
39141		#[cfg(not(feature = "diagnose"))]
39142		return ret;
39143	}
39144	#[inline(always)]
39145	fn glVertexAttribIFormat(&self, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()> {
39146		#[cfg(feature = "catch_nullptr")]
39147		let ret = process_catch("glVertexAttribIFormat", catch_unwind(||(self.vertexattribiformat)(attribindex, size, type_, relativeoffset)));
39148		#[cfg(not(feature = "catch_nullptr"))]
39149		let ret = {(self.vertexattribiformat)(attribindex, size, type_, relativeoffset); Ok(())};
39150		#[cfg(feature = "diagnose")]
39151		if let Ok(ret) = ret {
39152			return to_result("glVertexAttribIFormat", ret, self.glGetError());
39153		} else {
39154			return ret
39155		}
39156		#[cfg(not(feature = "diagnose"))]
39157		return ret;
39158	}
39159	#[inline(always)]
39160	fn glVertexAttribBinding(&self, attribindex: GLuint, bindingindex: GLuint) -> Result<()> {
39161		#[cfg(feature = "catch_nullptr")]
39162		let ret = process_catch("glVertexAttribBinding", catch_unwind(||(self.vertexattribbinding)(attribindex, bindingindex)));
39163		#[cfg(not(feature = "catch_nullptr"))]
39164		let ret = {(self.vertexattribbinding)(attribindex, bindingindex); Ok(())};
39165		#[cfg(feature = "diagnose")]
39166		if let Ok(ret) = ret {
39167			return to_result("glVertexAttribBinding", ret, self.glGetError());
39168		} else {
39169			return ret
39170		}
39171		#[cfg(not(feature = "diagnose"))]
39172		return ret;
39173	}
39174	#[inline(always)]
39175	fn glVertexBindingDivisor(&self, bindingindex: GLuint, divisor: GLuint) -> Result<()> {
39176		#[cfg(feature = "catch_nullptr")]
39177		let ret = process_catch("glVertexBindingDivisor", catch_unwind(||(self.vertexbindingdivisor)(bindingindex, divisor)));
39178		#[cfg(not(feature = "catch_nullptr"))]
39179		let ret = {(self.vertexbindingdivisor)(bindingindex, divisor); Ok(())};
39180		#[cfg(feature = "diagnose")]
39181		if let Ok(ret) = ret {
39182			return to_result("glVertexBindingDivisor", ret, self.glGetError());
39183		} else {
39184			return ret
39185		}
39186		#[cfg(not(feature = "diagnose"))]
39187		return ret;
39188	}
39189}
39190
39191impl EsVersion31 {
39192	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
39193		let (_spec, major, minor, release) = base.get_version();
39194		if (major, minor, release) < (3, 1, 0) {
39195			return Self::default();
39196		}
39197		Self {
39198			available: true,
39199			geterror: {let proc = get_proc_address("glGetError"); if proc.is_null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
39200			dispatchcompute: {let proc = get_proc_address("glDispatchCompute"); if proc.is_null() {dummy_pfngldispatchcomputeproc} else {unsafe{transmute(proc)}}},
39201			dispatchcomputeindirect: {let proc = get_proc_address("glDispatchComputeIndirect"); if proc.is_null() {dummy_pfngldispatchcomputeindirectproc} else {unsafe{transmute(proc)}}},
39202			drawarraysindirect: {let proc = get_proc_address("glDrawArraysIndirect"); if proc.is_null() {dummy_pfngldrawarraysindirectproc} else {unsafe{transmute(proc)}}},
39203			drawelementsindirect: {let proc = get_proc_address("glDrawElementsIndirect"); if proc.is_null() {dummy_pfngldrawelementsindirectproc} else {unsafe{transmute(proc)}}},
39204			framebufferparameteri: {let proc = get_proc_address("glFramebufferParameteri"); if proc.is_null() {dummy_pfnglframebufferparameteriproc} else {unsafe{transmute(proc)}}},
39205			getframebufferparameteriv: {let proc = get_proc_address("glGetFramebufferParameteriv"); if proc.is_null() {dummy_pfnglgetframebufferparameterivproc} else {unsafe{transmute(proc)}}},
39206			getprograminterfaceiv: {let proc = get_proc_address("glGetProgramInterfaceiv"); if proc.is_null() {dummy_pfnglgetprograminterfaceivproc} else {unsafe{transmute(proc)}}},
39207			getprogramresourceindex: {let proc = get_proc_address("glGetProgramResourceIndex"); if proc.is_null() {dummy_pfnglgetprogramresourceindexproc} else {unsafe{transmute(proc)}}},
39208			getprogramresourcename: {let proc = get_proc_address("glGetProgramResourceName"); if proc.is_null() {dummy_pfnglgetprogramresourcenameproc} else {unsafe{transmute(proc)}}},
39209			getprogramresourceiv: {let proc = get_proc_address("glGetProgramResourceiv"); if proc.is_null() {dummy_pfnglgetprogramresourceivproc} else {unsafe{transmute(proc)}}},
39210			getprogramresourcelocation: {let proc = get_proc_address("glGetProgramResourceLocation"); if proc.is_null() {dummy_pfnglgetprogramresourcelocationproc} else {unsafe{transmute(proc)}}},
39211			useprogramstages: {let proc = get_proc_address("glUseProgramStages"); if proc.is_null() {dummy_pfngluseprogramstagesproc} else {unsafe{transmute(proc)}}},
39212			activeshaderprogram: {let proc = get_proc_address("glActiveShaderProgram"); if proc.is_null() {dummy_pfnglactiveshaderprogramproc} else {unsafe{transmute(proc)}}},
39213			createshaderprogramv: {let proc = get_proc_address("glCreateShaderProgramv"); if proc.is_null() {dummy_pfnglcreateshaderprogramvproc} else {unsafe{transmute(proc)}}},
39214			bindprogrampipeline: {let proc = get_proc_address("glBindProgramPipeline"); if proc.is_null() {dummy_pfnglbindprogrampipelineproc} else {unsafe{transmute(proc)}}},
39215			deleteprogrampipelines: {let proc = get_proc_address("glDeleteProgramPipelines"); if proc.is_null() {dummy_pfngldeleteprogrampipelinesproc} else {unsafe{transmute(proc)}}},
39216			genprogrampipelines: {let proc = get_proc_address("glGenProgramPipelines"); if proc.is_null() {dummy_pfnglgenprogrampipelinesproc} else {unsafe{transmute(proc)}}},
39217			isprogrampipeline: {let proc = get_proc_address("glIsProgramPipeline"); if proc.is_null() {dummy_pfnglisprogrampipelineproc} else {unsafe{transmute(proc)}}},
39218			getprogrampipelineiv: {let proc = get_proc_address("glGetProgramPipelineiv"); if proc.is_null() {dummy_pfnglgetprogrampipelineivproc} else {unsafe{transmute(proc)}}},
39219			programuniform1i: {let proc = get_proc_address("glProgramUniform1i"); if proc.is_null() {dummy_pfnglprogramuniform1iproc} else {unsafe{transmute(proc)}}},
39220			programuniform2i: {let proc = get_proc_address("glProgramUniform2i"); if proc.is_null() {dummy_pfnglprogramuniform2iproc} else {unsafe{transmute(proc)}}},
39221			programuniform3i: {let proc = get_proc_address("glProgramUniform3i"); if proc.is_null() {dummy_pfnglprogramuniform3iproc} else {unsafe{transmute(proc)}}},
39222			programuniform4i: {let proc = get_proc_address("glProgramUniform4i"); if proc.is_null() {dummy_pfnglprogramuniform4iproc} else {unsafe{transmute(proc)}}},
39223			programuniform1ui: {let proc = get_proc_address("glProgramUniform1ui"); if proc.is_null() {dummy_pfnglprogramuniform1uiproc} else {unsafe{transmute(proc)}}},
39224			programuniform2ui: {let proc = get_proc_address("glProgramUniform2ui"); if proc.is_null() {dummy_pfnglprogramuniform2uiproc} else {unsafe{transmute(proc)}}},
39225			programuniform3ui: {let proc = get_proc_address("glProgramUniform3ui"); if proc.is_null() {dummy_pfnglprogramuniform3uiproc} else {unsafe{transmute(proc)}}},
39226			programuniform4ui: {let proc = get_proc_address("glProgramUniform4ui"); if proc.is_null() {dummy_pfnglprogramuniform4uiproc} else {unsafe{transmute(proc)}}},
39227			programuniform1f: {let proc = get_proc_address("glProgramUniform1f"); if proc.is_null() {dummy_pfnglprogramuniform1fproc} else {unsafe{transmute(proc)}}},
39228			programuniform2f: {let proc = get_proc_address("glProgramUniform2f"); if proc.is_null() {dummy_pfnglprogramuniform2fproc} else {unsafe{transmute(proc)}}},
39229			programuniform3f: {let proc = get_proc_address("glProgramUniform3f"); if proc.is_null() {dummy_pfnglprogramuniform3fproc} else {unsafe{transmute(proc)}}},
39230			programuniform4f: {let proc = get_proc_address("glProgramUniform4f"); if proc.is_null() {dummy_pfnglprogramuniform4fproc} else {unsafe{transmute(proc)}}},
39231			programuniform1iv: {let proc = get_proc_address("glProgramUniform1iv"); if proc.is_null() {dummy_pfnglprogramuniform1ivproc} else {unsafe{transmute(proc)}}},
39232			programuniform2iv: {let proc = get_proc_address("glProgramUniform2iv"); if proc.is_null() {dummy_pfnglprogramuniform2ivproc} else {unsafe{transmute(proc)}}},
39233			programuniform3iv: {let proc = get_proc_address("glProgramUniform3iv"); if proc.is_null() {dummy_pfnglprogramuniform3ivproc} else {unsafe{transmute(proc)}}},
39234			programuniform4iv: {let proc = get_proc_address("glProgramUniform4iv"); if proc.is_null() {dummy_pfnglprogramuniform4ivproc} else {unsafe{transmute(proc)}}},
39235			programuniform1uiv: {let proc = get_proc_address("glProgramUniform1uiv"); if proc.is_null() {dummy_pfnglprogramuniform1uivproc} else {unsafe{transmute(proc)}}},
39236			programuniform2uiv: {let proc = get_proc_address("glProgramUniform2uiv"); if proc.is_null() {dummy_pfnglprogramuniform2uivproc} else {unsafe{transmute(proc)}}},
39237			programuniform3uiv: {let proc = get_proc_address("glProgramUniform3uiv"); if proc.is_null() {dummy_pfnglprogramuniform3uivproc} else {unsafe{transmute(proc)}}},
39238			programuniform4uiv: {let proc = get_proc_address("glProgramUniform4uiv"); if proc.is_null() {dummy_pfnglprogramuniform4uivproc} else {unsafe{transmute(proc)}}},
39239			programuniform1fv: {let proc = get_proc_address("glProgramUniform1fv"); if proc.is_null() {dummy_pfnglprogramuniform1fvproc} else {unsafe{transmute(proc)}}},
39240			programuniform2fv: {let proc = get_proc_address("glProgramUniform2fv"); if proc.is_null() {dummy_pfnglprogramuniform2fvproc} else {unsafe{transmute(proc)}}},
39241			programuniform3fv: {let proc = get_proc_address("glProgramUniform3fv"); if proc.is_null() {dummy_pfnglprogramuniform3fvproc} else {unsafe{transmute(proc)}}},
39242			programuniform4fv: {let proc = get_proc_address("glProgramUniform4fv"); if proc.is_null() {dummy_pfnglprogramuniform4fvproc} else {unsafe{transmute(proc)}}},
39243			programuniformmatrix2fv: {let proc = get_proc_address("glProgramUniformMatrix2fv"); if proc.is_null() {dummy_pfnglprogramuniformmatrix2fvproc} else {unsafe{transmute(proc)}}},
39244			programuniformmatrix3fv: {let proc = get_proc_address("glProgramUniformMatrix3fv"); if proc.is_null() {dummy_pfnglprogramuniformmatrix3fvproc} else {unsafe{transmute(proc)}}},
39245			programuniformmatrix4fv: {let proc = get_proc_address("glProgramUniformMatrix4fv"); if proc.is_null() {dummy_pfnglprogramuniformmatrix4fvproc} else {unsafe{transmute(proc)}}},
39246			programuniformmatrix2x3fv: {let proc = get_proc_address("glProgramUniformMatrix2x3fv"); if proc.is_null() {dummy_pfnglprogramuniformmatrix2x3fvproc} else {unsafe{transmute(proc)}}},
39247			programuniformmatrix3x2fv: {let proc = get_proc_address("glProgramUniformMatrix3x2fv"); if proc.is_null() {dummy_pfnglprogramuniformmatrix3x2fvproc} else {unsafe{transmute(proc)}}},
39248			programuniformmatrix2x4fv: {let proc = get_proc_address("glProgramUniformMatrix2x4fv"); if proc.is_null() {dummy_pfnglprogramuniformmatrix2x4fvproc} else {unsafe{transmute(proc)}}},
39249			programuniformmatrix4x2fv: {let proc = get_proc_address("glProgramUniformMatrix4x2fv"); if proc.is_null() {dummy_pfnglprogramuniformmatrix4x2fvproc} else {unsafe{transmute(proc)}}},
39250			programuniformmatrix3x4fv: {let proc = get_proc_address("glProgramUniformMatrix3x4fv"); if proc.is_null() {dummy_pfnglprogramuniformmatrix3x4fvproc} else {unsafe{transmute(proc)}}},
39251			programuniformmatrix4x3fv: {let proc = get_proc_address("glProgramUniformMatrix4x3fv"); if proc.is_null() {dummy_pfnglprogramuniformmatrix4x3fvproc} else {unsafe{transmute(proc)}}},
39252			validateprogrampipeline: {let proc = get_proc_address("glValidateProgramPipeline"); if proc.is_null() {dummy_pfnglvalidateprogrampipelineproc} else {unsafe{transmute(proc)}}},
39253			getprogrampipelineinfolog: {let proc = get_proc_address("glGetProgramPipelineInfoLog"); if proc.is_null() {dummy_pfnglgetprogrampipelineinfologproc} else {unsafe{transmute(proc)}}},
39254			bindimagetexture: {let proc = get_proc_address("glBindImageTexture"); if proc.is_null() {dummy_pfnglbindimagetextureproc} else {unsafe{transmute(proc)}}},
39255			getbooleani_v: {let proc = get_proc_address("glGetBooleani_v"); if proc.is_null() {dummy_pfnglgetbooleani_vproc} else {unsafe{transmute(proc)}}},
39256			memorybarrier: {let proc = get_proc_address("glMemoryBarrier"); if proc.is_null() {dummy_pfnglmemorybarrierproc} else {unsafe{transmute(proc)}}},
39257			memorybarrierbyregion: {let proc = get_proc_address("glMemoryBarrierByRegion"); if proc.is_null() {dummy_pfnglmemorybarrierbyregionproc} else {unsafe{transmute(proc)}}},
39258			texstorage2dmultisample: {let proc = get_proc_address("glTexStorage2DMultisample"); if proc.is_null() {dummy_pfngltexstorage2dmultisampleproc} else {unsafe{transmute(proc)}}},
39259			getmultisamplefv: {let proc = get_proc_address("glGetMultisamplefv"); if proc.is_null() {dummy_pfnglgetmultisamplefvproc} else {unsafe{transmute(proc)}}},
39260			samplemaski: {let proc = get_proc_address("glSampleMaski"); if proc.is_null() {dummy_pfnglsamplemaskiproc} else {unsafe{transmute(proc)}}},
39261			gettexlevelparameteriv: {let proc = get_proc_address("glGetTexLevelParameteriv"); if proc.is_null() {dummy_pfnglgettexlevelparameterivproc} else {unsafe{transmute(proc)}}},
39262			gettexlevelparameterfv: {let proc = get_proc_address("glGetTexLevelParameterfv"); if proc.is_null() {dummy_pfnglgettexlevelparameterfvproc} else {unsafe{transmute(proc)}}},
39263			bindvertexbuffer: {let proc = get_proc_address("glBindVertexBuffer"); if proc.is_null() {dummy_pfnglbindvertexbufferproc} else {unsafe{transmute(proc)}}},
39264			vertexattribformat: {let proc = get_proc_address("glVertexAttribFormat"); if proc.is_null() {dummy_pfnglvertexattribformatproc} else {unsafe{transmute(proc)}}},
39265			vertexattribiformat: {let proc = get_proc_address("glVertexAttribIFormat"); if proc.is_null() {dummy_pfnglvertexattribiformatproc} else {unsafe{transmute(proc)}}},
39266			vertexattribbinding: {let proc = get_proc_address("glVertexAttribBinding"); if proc.is_null() {dummy_pfnglvertexattribbindingproc} else {unsafe{transmute(proc)}}},
39267			vertexbindingdivisor: {let proc = get_proc_address("glVertexBindingDivisor"); if proc.is_null() {dummy_pfnglvertexbindingdivisorproc} else {unsafe{transmute(proc)}}},
39268		}
39269	}
39270	#[inline(always)]
39271	pub fn get_available(&self) -> bool {
39272		self.available
39273	}
39274}
39275
39276impl Default for EsVersion31 {
39277	fn default() -> Self {
39278		Self {
39279			available: false,
39280			geterror: dummy_pfnglgeterrorproc,
39281			dispatchcompute: dummy_pfngldispatchcomputeproc,
39282			dispatchcomputeindirect: dummy_pfngldispatchcomputeindirectproc,
39283			drawarraysindirect: dummy_pfngldrawarraysindirectproc,
39284			drawelementsindirect: dummy_pfngldrawelementsindirectproc,
39285			framebufferparameteri: dummy_pfnglframebufferparameteriproc,
39286			getframebufferparameteriv: dummy_pfnglgetframebufferparameterivproc,
39287			getprograminterfaceiv: dummy_pfnglgetprograminterfaceivproc,
39288			getprogramresourceindex: dummy_pfnglgetprogramresourceindexproc,
39289			getprogramresourcename: dummy_pfnglgetprogramresourcenameproc,
39290			getprogramresourceiv: dummy_pfnglgetprogramresourceivproc,
39291			getprogramresourcelocation: dummy_pfnglgetprogramresourcelocationproc,
39292			useprogramstages: dummy_pfngluseprogramstagesproc,
39293			activeshaderprogram: dummy_pfnglactiveshaderprogramproc,
39294			createshaderprogramv: dummy_pfnglcreateshaderprogramvproc,
39295			bindprogrampipeline: dummy_pfnglbindprogrampipelineproc,
39296			deleteprogrampipelines: dummy_pfngldeleteprogrampipelinesproc,
39297			genprogrampipelines: dummy_pfnglgenprogrampipelinesproc,
39298			isprogrampipeline: dummy_pfnglisprogrampipelineproc,
39299			getprogrampipelineiv: dummy_pfnglgetprogrampipelineivproc,
39300			programuniform1i: dummy_pfnglprogramuniform1iproc,
39301			programuniform2i: dummy_pfnglprogramuniform2iproc,
39302			programuniform3i: dummy_pfnglprogramuniform3iproc,
39303			programuniform4i: dummy_pfnglprogramuniform4iproc,
39304			programuniform1ui: dummy_pfnglprogramuniform1uiproc,
39305			programuniform2ui: dummy_pfnglprogramuniform2uiproc,
39306			programuniform3ui: dummy_pfnglprogramuniform3uiproc,
39307			programuniform4ui: dummy_pfnglprogramuniform4uiproc,
39308			programuniform1f: dummy_pfnglprogramuniform1fproc,
39309			programuniform2f: dummy_pfnglprogramuniform2fproc,
39310			programuniform3f: dummy_pfnglprogramuniform3fproc,
39311			programuniform4f: dummy_pfnglprogramuniform4fproc,
39312			programuniform1iv: dummy_pfnglprogramuniform1ivproc,
39313			programuniform2iv: dummy_pfnglprogramuniform2ivproc,
39314			programuniform3iv: dummy_pfnglprogramuniform3ivproc,
39315			programuniform4iv: dummy_pfnglprogramuniform4ivproc,
39316			programuniform1uiv: dummy_pfnglprogramuniform1uivproc,
39317			programuniform2uiv: dummy_pfnglprogramuniform2uivproc,
39318			programuniform3uiv: dummy_pfnglprogramuniform3uivproc,
39319			programuniform4uiv: dummy_pfnglprogramuniform4uivproc,
39320			programuniform1fv: dummy_pfnglprogramuniform1fvproc,
39321			programuniform2fv: dummy_pfnglprogramuniform2fvproc,
39322			programuniform3fv: dummy_pfnglprogramuniform3fvproc,
39323			programuniform4fv: dummy_pfnglprogramuniform4fvproc,
39324			programuniformmatrix2fv: dummy_pfnglprogramuniformmatrix2fvproc,
39325			programuniformmatrix3fv: dummy_pfnglprogramuniformmatrix3fvproc,
39326			programuniformmatrix4fv: dummy_pfnglprogramuniformmatrix4fvproc,
39327			programuniformmatrix2x3fv: dummy_pfnglprogramuniformmatrix2x3fvproc,
39328			programuniformmatrix3x2fv: dummy_pfnglprogramuniformmatrix3x2fvproc,
39329			programuniformmatrix2x4fv: dummy_pfnglprogramuniformmatrix2x4fvproc,
39330			programuniformmatrix4x2fv: dummy_pfnglprogramuniformmatrix4x2fvproc,
39331			programuniformmatrix3x4fv: dummy_pfnglprogramuniformmatrix3x4fvproc,
39332			programuniformmatrix4x3fv: dummy_pfnglprogramuniformmatrix4x3fvproc,
39333			validateprogrampipeline: dummy_pfnglvalidateprogrampipelineproc,
39334			getprogrampipelineinfolog: dummy_pfnglgetprogrampipelineinfologproc,
39335			bindimagetexture: dummy_pfnglbindimagetextureproc,
39336			getbooleani_v: dummy_pfnglgetbooleani_vproc,
39337			memorybarrier: dummy_pfnglmemorybarrierproc,
39338			memorybarrierbyregion: dummy_pfnglmemorybarrierbyregionproc,
39339			texstorage2dmultisample: dummy_pfngltexstorage2dmultisampleproc,
39340			getmultisamplefv: dummy_pfnglgetmultisamplefvproc,
39341			samplemaski: dummy_pfnglsamplemaskiproc,
39342			gettexlevelparameteriv: dummy_pfnglgettexlevelparameterivproc,
39343			gettexlevelparameterfv: dummy_pfnglgettexlevelparameterfvproc,
39344			bindvertexbuffer: dummy_pfnglbindvertexbufferproc,
39345			vertexattribformat: dummy_pfnglvertexattribformatproc,
39346			vertexattribiformat: dummy_pfnglvertexattribiformatproc,
39347			vertexattribbinding: dummy_pfnglvertexattribbindingproc,
39348			vertexbindingdivisor: dummy_pfnglvertexbindingdivisorproc,
39349		}
39350	}
39351}
39352impl Debug for EsVersion31 {
39353	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
39354		if self.available {
39355			f.debug_struct("EsVersion31")
39356			.field("available", &self.available)
39357			.field("dispatchcompute", unsafe{if transmute::<_, *const c_void>(self.dispatchcompute) == (dummy_pfngldispatchcomputeproc as *const c_void) {&null::<PFNGLDISPATCHCOMPUTEPROC>()} else {&self.dispatchcompute}})
39358			.field("dispatchcomputeindirect", unsafe{if transmute::<_, *const c_void>(self.dispatchcomputeindirect) == (dummy_pfngldispatchcomputeindirectproc as *const c_void) {&null::<PFNGLDISPATCHCOMPUTEINDIRECTPROC>()} else {&self.dispatchcomputeindirect}})
39359			.field("drawarraysindirect", unsafe{if transmute::<_, *const c_void>(self.drawarraysindirect) == (dummy_pfngldrawarraysindirectproc as *const c_void) {&null::<PFNGLDRAWARRAYSINDIRECTPROC>()} else {&self.drawarraysindirect}})
39360			.field("drawelementsindirect", unsafe{if transmute::<_, *const c_void>(self.drawelementsindirect) == (dummy_pfngldrawelementsindirectproc as *const c_void) {&null::<PFNGLDRAWELEMENTSINDIRECTPROC>()} else {&self.drawelementsindirect}})
39361			.field("framebufferparameteri", unsafe{if transmute::<_, *const c_void>(self.framebufferparameteri) == (dummy_pfnglframebufferparameteriproc as *const c_void) {&null::<PFNGLFRAMEBUFFERPARAMETERIPROC>()} else {&self.framebufferparameteri}})
39362			.field("getframebufferparameteriv", unsafe{if transmute::<_, *const c_void>(self.getframebufferparameteriv) == (dummy_pfnglgetframebufferparameterivproc as *const c_void) {&null::<PFNGLGETFRAMEBUFFERPARAMETERIVPROC>()} else {&self.getframebufferparameteriv}})
39363			.field("getprograminterfaceiv", unsafe{if transmute::<_, *const c_void>(self.getprograminterfaceiv) == (dummy_pfnglgetprograminterfaceivproc as *const c_void) {&null::<PFNGLGETPROGRAMINTERFACEIVPROC>()} else {&self.getprograminterfaceiv}})
39364			.field("getprogramresourceindex", unsafe{if transmute::<_, *const c_void>(self.getprogramresourceindex) == (dummy_pfnglgetprogramresourceindexproc as *const c_void) {&null::<PFNGLGETPROGRAMRESOURCEINDEXPROC>()} else {&self.getprogramresourceindex}})
39365			.field("getprogramresourcename", unsafe{if transmute::<_, *const c_void>(self.getprogramresourcename) == (dummy_pfnglgetprogramresourcenameproc as *const c_void) {&null::<PFNGLGETPROGRAMRESOURCENAMEPROC>()} else {&self.getprogramresourcename}})
39366			.field("getprogramresourceiv", unsafe{if transmute::<_, *const c_void>(self.getprogramresourceiv) == (dummy_pfnglgetprogramresourceivproc as *const c_void) {&null::<PFNGLGETPROGRAMRESOURCEIVPROC>()} else {&self.getprogramresourceiv}})
39367			.field("getprogramresourcelocation", unsafe{if transmute::<_, *const c_void>(self.getprogramresourcelocation) == (dummy_pfnglgetprogramresourcelocationproc as *const c_void) {&null::<PFNGLGETPROGRAMRESOURCELOCATIONPROC>()} else {&self.getprogramresourcelocation}})
39368			.field("useprogramstages", unsafe{if transmute::<_, *const c_void>(self.useprogramstages) == (dummy_pfngluseprogramstagesproc as *const c_void) {&null::<PFNGLUSEPROGRAMSTAGESPROC>()} else {&self.useprogramstages}})
39369			.field("activeshaderprogram", unsafe{if transmute::<_, *const c_void>(self.activeshaderprogram) == (dummy_pfnglactiveshaderprogramproc as *const c_void) {&null::<PFNGLACTIVESHADERPROGRAMPROC>()} else {&self.activeshaderprogram}})
39370			.field("createshaderprogramv", unsafe{if transmute::<_, *const c_void>(self.createshaderprogramv) == (dummy_pfnglcreateshaderprogramvproc as *const c_void) {&null::<PFNGLCREATESHADERPROGRAMVPROC>()} else {&self.createshaderprogramv}})
39371			.field("bindprogrampipeline", unsafe{if transmute::<_, *const c_void>(self.bindprogrampipeline) == (dummy_pfnglbindprogrampipelineproc as *const c_void) {&null::<PFNGLBINDPROGRAMPIPELINEPROC>()} else {&self.bindprogrampipeline}})
39372			.field("deleteprogrampipelines", unsafe{if transmute::<_, *const c_void>(self.deleteprogrampipelines) == (dummy_pfngldeleteprogrampipelinesproc as *const c_void) {&null::<PFNGLDELETEPROGRAMPIPELINESPROC>()} else {&self.deleteprogrampipelines}})
39373			.field("genprogrampipelines", unsafe{if transmute::<_, *const c_void>(self.genprogrampipelines) == (dummy_pfnglgenprogrampipelinesproc as *const c_void) {&null::<PFNGLGENPROGRAMPIPELINESPROC>()} else {&self.genprogrampipelines}})
39374			.field("isprogrampipeline", unsafe{if transmute::<_, *const c_void>(self.isprogrampipeline) == (dummy_pfnglisprogrampipelineproc as *const c_void) {&null::<PFNGLISPROGRAMPIPELINEPROC>()} else {&self.isprogrampipeline}})
39375			.field("getprogrampipelineiv", unsafe{if transmute::<_, *const c_void>(self.getprogrampipelineiv) == (dummy_pfnglgetprogrampipelineivproc as *const c_void) {&null::<PFNGLGETPROGRAMPIPELINEIVPROC>()} else {&self.getprogrampipelineiv}})
39376			.field("programuniform1i", unsafe{if transmute::<_, *const c_void>(self.programuniform1i) == (dummy_pfnglprogramuniform1iproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM1IPROC>()} else {&self.programuniform1i}})
39377			.field("programuniform2i", unsafe{if transmute::<_, *const c_void>(self.programuniform2i) == (dummy_pfnglprogramuniform2iproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM2IPROC>()} else {&self.programuniform2i}})
39378			.field("programuniform3i", unsafe{if transmute::<_, *const c_void>(self.programuniform3i) == (dummy_pfnglprogramuniform3iproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM3IPROC>()} else {&self.programuniform3i}})
39379			.field("programuniform4i", unsafe{if transmute::<_, *const c_void>(self.programuniform4i) == (dummy_pfnglprogramuniform4iproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM4IPROC>()} else {&self.programuniform4i}})
39380			.field("programuniform1ui", unsafe{if transmute::<_, *const c_void>(self.programuniform1ui) == (dummy_pfnglprogramuniform1uiproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM1UIPROC>()} else {&self.programuniform1ui}})
39381			.field("programuniform2ui", unsafe{if transmute::<_, *const c_void>(self.programuniform2ui) == (dummy_pfnglprogramuniform2uiproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM2UIPROC>()} else {&self.programuniform2ui}})
39382			.field("programuniform3ui", unsafe{if transmute::<_, *const c_void>(self.programuniform3ui) == (dummy_pfnglprogramuniform3uiproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM3UIPROC>()} else {&self.programuniform3ui}})
39383			.field("programuniform4ui", unsafe{if transmute::<_, *const c_void>(self.programuniform4ui) == (dummy_pfnglprogramuniform4uiproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM4UIPROC>()} else {&self.programuniform4ui}})
39384			.field("programuniform1f", unsafe{if transmute::<_, *const c_void>(self.programuniform1f) == (dummy_pfnglprogramuniform1fproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM1FPROC>()} else {&self.programuniform1f}})
39385			.field("programuniform2f", unsafe{if transmute::<_, *const c_void>(self.programuniform2f) == (dummy_pfnglprogramuniform2fproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM2FPROC>()} else {&self.programuniform2f}})
39386			.field("programuniform3f", unsafe{if transmute::<_, *const c_void>(self.programuniform3f) == (dummy_pfnglprogramuniform3fproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM3FPROC>()} else {&self.programuniform3f}})
39387			.field("programuniform4f", unsafe{if transmute::<_, *const c_void>(self.programuniform4f) == (dummy_pfnglprogramuniform4fproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM4FPROC>()} else {&self.programuniform4f}})
39388			.field("programuniform1iv", unsafe{if transmute::<_, *const c_void>(self.programuniform1iv) == (dummy_pfnglprogramuniform1ivproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM1IVPROC>()} else {&self.programuniform1iv}})
39389			.field("programuniform2iv", unsafe{if transmute::<_, *const c_void>(self.programuniform2iv) == (dummy_pfnglprogramuniform2ivproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM2IVPROC>()} else {&self.programuniform2iv}})
39390			.field("programuniform3iv", unsafe{if transmute::<_, *const c_void>(self.programuniform3iv) == (dummy_pfnglprogramuniform3ivproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM3IVPROC>()} else {&self.programuniform3iv}})
39391			.field("programuniform4iv", unsafe{if transmute::<_, *const c_void>(self.programuniform4iv) == (dummy_pfnglprogramuniform4ivproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM4IVPROC>()} else {&self.programuniform4iv}})
39392			.field("programuniform1uiv", unsafe{if transmute::<_, *const c_void>(self.programuniform1uiv) == (dummy_pfnglprogramuniform1uivproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM1UIVPROC>()} else {&self.programuniform1uiv}})
39393			.field("programuniform2uiv", unsafe{if transmute::<_, *const c_void>(self.programuniform2uiv) == (dummy_pfnglprogramuniform2uivproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM2UIVPROC>()} else {&self.programuniform2uiv}})
39394			.field("programuniform3uiv", unsafe{if transmute::<_, *const c_void>(self.programuniform3uiv) == (dummy_pfnglprogramuniform3uivproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM3UIVPROC>()} else {&self.programuniform3uiv}})
39395			.field("programuniform4uiv", unsafe{if transmute::<_, *const c_void>(self.programuniform4uiv) == (dummy_pfnglprogramuniform4uivproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM4UIVPROC>()} else {&self.programuniform4uiv}})
39396			.field("programuniform1fv", unsafe{if transmute::<_, *const c_void>(self.programuniform1fv) == (dummy_pfnglprogramuniform1fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM1FVPROC>()} else {&self.programuniform1fv}})
39397			.field("programuniform2fv", unsafe{if transmute::<_, *const c_void>(self.programuniform2fv) == (dummy_pfnglprogramuniform2fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM2FVPROC>()} else {&self.programuniform2fv}})
39398			.field("programuniform3fv", unsafe{if transmute::<_, *const c_void>(self.programuniform3fv) == (dummy_pfnglprogramuniform3fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM3FVPROC>()} else {&self.programuniform3fv}})
39399			.field("programuniform4fv", unsafe{if transmute::<_, *const c_void>(self.programuniform4fv) == (dummy_pfnglprogramuniform4fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM4FVPROC>()} else {&self.programuniform4fv}})
39400			.field("programuniformmatrix2fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix2fv) == (dummy_pfnglprogramuniformmatrix2fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX2FVPROC>()} else {&self.programuniformmatrix2fv}})
39401			.field("programuniformmatrix3fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix3fv) == (dummy_pfnglprogramuniformmatrix3fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX3FVPROC>()} else {&self.programuniformmatrix3fv}})
39402			.field("programuniformmatrix4fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix4fv) == (dummy_pfnglprogramuniformmatrix4fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX4FVPROC>()} else {&self.programuniformmatrix4fv}})
39403			.field("programuniformmatrix2x3fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix2x3fv) == (dummy_pfnglprogramuniformmatrix2x3fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC>()} else {&self.programuniformmatrix2x3fv}})
39404			.field("programuniformmatrix3x2fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix3x2fv) == (dummy_pfnglprogramuniformmatrix3x2fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC>()} else {&self.programuniformmatrix3x2fv}})
39405			.field("programuniformmatrix2x4fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix2x4fv) == (dummy_pfnglprogramuniformmatrix2x4fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC>()} else {&self.programuniformmatrix2x4fv}})
39406			.field("programuniformmatrix4x2fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix4x2fv) == (dummy_pfnglprogramuniformmatrix4x2fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC>()} else {&self.programuniformmatrix4x2fv}})
39407			.field("programuniformmatrix3x4fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix3x4fv) == (dummy_pfnglprogramuniformmatrix3x4fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC>()} else {&self.programuniformmatrix3x4fv}})
39408			.field("programuniformmatrix4x3fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix4x3fv) == (dummy_pfnglprogramuniformmatrix4x3fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC>()} else {&self.programuniformmatrix4x3fv}})
39409			.field("validateprogrampipeline", unsafe{if transmute::<_, *const c_void>(self.validateprogrampipeline) == (dummy_pfnglvalidateprogrampipelineproc as *const c_void) {&null::<PFNGLVALIDATEPROGRAMPIPELINEPROC>()} else {&self.validateprogrampipeline}})
39410			.field("getprogrampipelineinfolog", unsafe{if transmute::<_, *const c_void>(self.getprogrampipelineinfolog) == (dummy_pfnglgetprogrampipelineinfologproc as *const c_void) {&null::<PFNGLGETPROGRAMPIPELINEINFOLOGPROC>()} else {&self.getprogrampipelineinfolog}})
39411			.field("bindimagetexture", unsafe{if transmute::<_, *const c_void>(self.bindimagetexture) == (dummy_pfnglbindimagetextureproc as *const c_void) {&null::<PFNGLBINDIMAGETEXTUREPROC>()} else {&self.bindimagetexture}})
39412			.field("getbooleani_v", unsafe{if transmute::<_, *const c_void>(self.getbooleani_v) == (dummy_pfnglgetbooleani_vproc as *const c_void) {&null::<PFNGLGETBOOLEANI_VPROC>()} else {&self.getbooleani_v}})
39413			.field("memorybarrier", unsafe{if transmute::<_, *const c_void>(self.memorybarrier) == (dummy_pfnglmemorybarrierproc as *const c_void) {&null::<PFNGLMEMORYBARRIERPROC>()} else {&self.memorybarrier}})
39414			.field("memorybarrierbyregion", unsafe{if transmute::<_, *const c_void>(self.memorybarrierbyregion) == (dummy_pfnglmemorybarrierbyregionproc as *const c_void) {&null::<PFNGLMEMORYBARRIERBYREGIONPROC>()} else {&self.memorybarrierbyregion}})
39415			.field("texstorage2dmultisample", unsafe{if transmute::<_, *const c_void>(self.texstorage2dmultisample) == (dummy_pfngltexstorage2dmultisampleproc as *const c_void) {&null::<PFNGLTEXSTORAGE2DMULTISAMPLEPROC>()} else {&self.texstorage2dmultisample}})
39416			.field("getmultisamplefv", unsafe{if transmute::<_, *const c_void>(self.getmultisamplefv) == (dummy_pfnglgetmultisamplefvproc as *const c_void) {&null::<PFNGLGETMULTISAMPLEFVPROC>()} else {&self.getmultisamplefv}})
39417			.field("samplemaski", unsafe{if transmute::<_, *const c_void>(self.samplemaski) == (dummy_pfnglsamplemaskiproc as *const c_void) {&null::<PFNGLSAMPLEMASKIPROC>()} else {&self.samplemaski}})
39418			.field("gettexlevelparameteriv", unsafe{if transmute::<_, *const c_void>(self.gettexlevelparameteriv) == (dummy_pfnglgettexlevelparameterivproc as *const c_void) {&null::<PFNGLGETTEXLEVELPARAMETERIVPROC>()} else {&self.gettexlevelparameteriv}})
39419			.field("gettexlevelparameterfv", unsafe{if transmute::<_, *const c_void>(self.gettexlevelparameterfv) == (dummy_pfnglgettexlevelparameterfvproc as *const c_void) {&null::<PFNGLGETTEXLEVELPARAMETERFVPROC>()} else {&self.gettexlevelparameterfv}})
39420			.field("bindvertexbuffer", unsafe{if transmute::<_, *const c_void>(self.bindvertexbuffer) == (dummy_pfnglbindvertexbufferproc as *const c_void) {&null::<PFNGLBINDVERTEXBUFFERPROC>()} else {&self.bindvertexbuffer}})
39421			.field("vertexattribformat", unsafe{if transmute::<_, *const c_void>(self.vertexattribformat) == (dummy_pfnglvertexattribformatproc as *const c_void) {&null::<PFNGLVERTEXATTRIBFORMATPROC>()} else {&self.vertexattribformat}})
39422			.field("vertexattribiformat", unsafe{if transmute::<_, *const c_void>(self.vertexattribiformat) == (dummy_pfnglvertexattribiformatproc as *const c_void) {&null::<PFNGLVERTEXATTRIBIFORMATPROC>()} else {&self.vertexattribiformat}})
39423			.field("vertexattribbinding", unsafe{if transmute::<_, *const c_void>(self.vertexattribbinding) == (dummy_pfnglvertexattribbindingproc as *const c_void) {&null::<PFNGLVERTEXATTRIBBINDINGPROC>()} else {&self.vertexattribbinding}})
39424			.field("vertexbindingdivisor", unsafe{if transmute::<_, *const c_void>(self.vertexbindingdivisor) == (dummy_pfnglvertexbindingdivisorproc as *const c_void) {&null::<PFNGLVERTEXBINDINGDIVISORPROC>()} else {&self.vertexbindingdivisor}})
39425			.finish()
39426		} else {
39427			f.debug_struct("EsVersion31")
39428			.field("available", &self.available)
39429			.finish_non_exhaustive()
39430		}
39431	}
39432}
39433
39434/// The prototype to the OpenGL function `BlendBarrier`
39435type PFNGLBLENDBARRIERPROC = extern "system" fn();
39436
39437/// The prototype to the OpenGL function `PrimitiveBoundingBox`
39438type PFNGLPRIMITIVEBOUNDINGBOXPROC = extern "system" fn(GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
39439
39440/// The dummy function of `BlendBarrier()`
39441extern "system" fn dummy_pfnglblendbarrierproc () {
39442	panic!("OpenGL ES function pointer `glBlendBarrier()` is null.")
39443}
39444
39445/// The dummy function of `PrimitiveBoundingBox()`
39446extern "system" fn dummy_pfnglprimitiveboundingboxproc (_: GLfloat, _: GLfloat, _: GLfloat, _: GLfloat, _: GLfloat, _: GLfloat, _: GLfloat, _: GLfloat) {
39447	panic!("OpenGL ES function pointer `glPrimitiveBoundingBox()` is null.")
39448}
39449/// Constant value defined from OpenGL ES 3.2
39450pub const GL_MULTISAMPLE_LINE_WIDTH_RANGE: GLenum = 0x9381;
39451
39452/// Constant value defined from OpenGL ES 3.2
39453pub const GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY: GLenum = 0x9382;
39454
39455/// Constant value defined from OpenGL ES 3.2
39456pub const GL_MULTIPLY: GLenum = 0x9294;
39457
39458/// Constant value defined from OpenGL ES 3.2
39459pub const GL_SCREEN: GLenum = 0x9295;
39460
39461/// Constant value defined from OpenGL ES 3.2
39462pub const GL_OVERLAY: GLenum = 0x9296;
39463
39464/// Constant value defined from OpenGL ES 3.2
39465pub const GL_DARKEN: GLenum = 0x9297;
39466
39467/// Constant value defined from OpenGL ES 3.2
39468pub const GL_LIGHTEN: GLenum = 0x9298;
39469
39470/// Constant value defined from OpenGL ES 3.2
39471pub const GL_COLORDODGE: GLenum = 0x9299;
39472
39473/// Constant value defined from OpenGL ES 3.2
39474pub const GL_COLORBURN: GLenum = 0x929A;
39475
39476/// Constant value defined from OpenGL ES 3.2
39477pub const GL_HARDLIGHT: GLenum = 0x929B;
39478
39479/// Constant value defined from OpenGL ES 3.2
39480pub const GL_SOFTLIGHT: GLenum = 0x929C;
39481
39482/// Constant value defined from OpenGL ES 3.2
39483pub const GL_DIFFERENCE: GLenum = 0x929E;
39484
39485/// Constant value defined from OpenGL ES 3.2
39486pub const GL_EXCLUSION: GLenum = 0x92A0;
39487
39488/// Constant value defined from OpenGL ES 3.2
39489pub const GL_HSL_HUE: GLenum = 0x92AD;
39490
39491/// Constant value defined from OpenGL ES 3.2
39492pub const GL_HSL_SATURATION: GLenum = 0x92AE;
39493
39494/// Constant value defined from OpenGL ES 3.2
39495pub const GL_HSL_COLOR: GLenum = 0x92AF;
39496
39497/// Constant value defined from OpenGL ES 3.2
39498pub const GL_HSL_LUMINOSITY: GLenum = 0x92B0;
39499
39500/// Constant value defined from OpenGL ES 3.2
39501pub const GL_PRIMITIVE_BOUNDING_BOX: GLenum = 0x92BE;
39502
39503/// Constant value defined from OpenGL ES 3.2
39504pub const GL_COMPRESSED_RGBA_ASTC_4x4: GLenum = 0x93B0;
39505
39506/// Constant value defined from OpenGL ES 3.2
39507pub const GL_COMPRESSED_RGBA_ASTC_5x4: GLenum = 0x93B1;
39508
39509/// Constant value defined from OpenGL ES 3.2
39510pub const GL_COMPRESSED_RGBA_ASTC_5x5: GLenum = 0x93B2;
39511
39512/// Constant value defined from OpenGL ES 3.2
39513pub const GL_COMPRESSED_RGBA_ASTC_6x5: GLenum = 0x93B3;
39514
39515/// Constant value defined from OpenGL ES 3.2
39516pub const GL_COMPRESSED_RGBA_ASTC_6x6: GLenum = 0x93B4;
39517
39518/// Constant value defined from OpenGL ES 3.2
39519pub const GL_COMPRESSED_RGBA_ASTC_8x5: GLenum = 0x93B5;
39520
39521/// Constant value defined from OpenGL ES 3.2
39522pub const GL_COMPRESSED_RGBA_ASTC_8x6: GLenum = 0x93B6;
39523
39524/// Constant value defined from OpenGL ES 3.2
39525pub const GL_COMPRESSED_RGBA_ASTC_8x8: GLenum = 0x93B7;
39526
39527/// Constant value defined from OpenGL ES 3.2
39528pub const GL_COMPRESSED_RGBA_ASTC_10x5: GLenum = 0x93B8;
39529
39530/// Constant value defined from OpenGL ES 3.2
39531pub const GL_COMPRESSED_RGBA_ASTC_10x6: GLenum = 0x93B9;
39532
39533/// Constant value defined from OpenGL ES 3.2
39534pub const GL_COMPRESSED_RGBA_ASTC_10x8: GLenum = 0x93BA;
39535
39536/// Constant value defined from OpenGL ES 3.2
39537pub const GL_COMPRESSED_RGBA_ASTC_10x10: GLenum = 0x93BB;
39538
39539/// Constant value defined from OpenGL ES 3.2
39540pub const GL_COMPRESSED_RGBA_ASTC_12x10: GLenum = 0x93BC;
39541
39542/// Constant value defined from OpenGL ES 3.2
39543pub const GL_COMPRESSED_RGBA_ASTC_12x12: GLenum = 0x93BD;
39544
39545/// Constant value defined from OpenGL ES 3.2
39546pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4: GLenum = 0x93D0;
39547
39548/// Constant value defined from OpenGL ES 3.2
39549pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4: GLenum = 0x93D1;
39550
39551/// Constant value defined from OpenGL ES 3.2
39552pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5: GLenum = 0x93D2;
39553
39554/// Constant value defined from OpenGL ES 3.2
39555pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5: GLenum = 0x93D3;
39556
39557/// Constant value defined from OpenGL ES 3.2
39558pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6: GLenum = 0x93D4;
39559
39560/// Constant value defined from OpenGL ES 3.2
39561pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5: GLenum = 0x93D5;
39562
39563/// Constant value defined from OpenGL ES 3.2
39564pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6: GLenum = 0x93D6;
39565
39566/// Constant value defined from OpenGL ES 3.2
39567pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8: GLenum = 0x93D7;
39568
39569/// Constant value defined from OpenGL ES 3.2
39570pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5: GLenum = 0x93D8;
39571
39572/// Constant value defined from OpenGL ES 3.2
39573pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6: GLenum = 0x93D9;
39574
39575/// Constant value defined from OpenGL ES 3.2
39576pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8: GLenum = 0x93DA;
39577
39578/// Constant value defined from OpenGL ES 3.2
39579pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10: GLenum = 0x93DB;
39580
39581/// Constant value defined from OpenGL ES 3.2
39582pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10: GLenum = 0x93DC;
39583
39584/// Constant value defined from OpenGL ES 3.2
39585pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12: GLenum = 0x93DD;
39586
39587/// Functions from OpenGL ES version 3.2
39588pub trait ES_GL_3_2 {
39589	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetError.xhtml>
39590	fn glGetError(&self) -> GLenum;
39591
39592	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendBarrier.xhtml>
39593	fn glBlendBarrier(&self) -> Result<()>;
39594
39595	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCopyImageSubData.xhtml>
39596	fn glCopyImageSubData(&self, srcName: GLuint, srcTarget: GLenum, srcLevel: GLint, srcX: GLint, srcY: GLint, srcZ: GLint, dstName: GLuint, dstTarget: GLenum, dstLevel: GLint, dstX: GLint, dstY: GLint, dstZ: GLint, srcWidth: GLsizei, srcHeight: GLsizei, srcDepth: GLsizei) -> Result<()>;
39597
39598	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDebugMessageControl.xhtml>
39599	fn glDebugMessageControl(&self, source: GLenum, type_: GLenum, severity: GLenum, count: GLsizei, ids: *const GLuint, enabled: GLboolean) -> Result<()>;
39600
39601	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDebugMessageInsert.xhtml>
39602	fn glDebugMessageInsert(&self, source: GLenum, type_: GLenum, id: GLuint, severity: GLenum, length: GLsizei, buf: *const GLchar) -> Result<()>;
39603
39604	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDebugMessageCallback.xhtml>
39605	fn glDebugMessageCallback(&self, callback: GLDEBUGPROC, userParam: *const c_void) -> Result<()>;
39606
39607	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetDebugMessageLog.xhtml>
39608	fn glGetDebugMessageLog(&self, count: GLuint, bufSize: GLsizei, sources: *mut GLenum, types: *mut GLenum, ids: *mut GLuint, severities: *mut GLenum, lengths: *mut GLsizei, messageLog: *mut GLchar) -> Result<GLuint>;
39609
39610	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glPushDebugGroup.xhtml>
39611	fn glPushDebugGroup(&self, source: GLenum, id: GLuint, length: GLsizei, message: *const GLchar) -> Result<()>;
39612
39613	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glPopDebugGroup.xhtml>
39614	fn glPopDebugGroup(&self) -> Result<()>;
39615
39616	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glObjectLabel.xhtml>
39617	fn glObjectLabel(&self, identifier: GLenum, name: GLuint, length: GLsizei, label: *const GLchar) -> Result<()>;
39618
39619	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetObjectLabel.xhtml>
39620	fn glGetObjectLabel(&self, identifier: GLenum, name: GLuint, bufSize: GLsizei, length: *mut GLsizei, label: *mut GLchar) -> Result<()>;
39621
39622	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glObjectPtrLabel.xhtml>
39623	fn glObjectPtrLabel(&self, ptr: *const c_void, length: GLsizei, label: *const GLchar) -> Result<()>;
39624
39625	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetObjectPtrLabel.xhtml>
39626	fn glGetObjectPtrLabel(&self, ptr: *const c_void, bufSize: GLsizei, length: *mut GLsizei, label: *mut GLchar) -> Result<()>;
39627
39628	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetPointerv.xhtml>
39629	fn glGetPointerv(&self, pname: GLenum, params: *mut *mut c_void) -> Result<()>;
39630
39631	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glEnablei.xhtml>
39632	fn glEnablei(&self, target: GLenum, index: GLuint) -> Result<()>;
39633
39634	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDisablei.xhtml>
39635	fn glDisablei(&self, target: GLenum, index: GLuint) -> Result<()>;
39636
39637	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendEquationi.xhtml>
39638	fn glBlendEquationi(&self, buf: GLuint, mode: GLenum) -> Result<()>;
39639
39640	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendEquationSeparatei.xhtml>
39641	fn glBlendEquationSeparatei(&self, buf: GLuint, modeRGB: GLenum, modeAlpha: GLenum) -> Result<()>;
39642
39643	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendFunci.xhtml>
39644	fn glBlendFunci(&self, buf: GLuint, src: GLenum, dst: GLenum) -> Result<()>;
39645
39646	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendFuncSeparatei.xhtml>
39647	fn glBlendFuncSeparatei(&self, buf: GLuint, srcRGB: GLenum, dstRGB: GLenum, srcAlpha: GLenum, dstAlpha: GLenum) -> Result<()>;
39648
39649	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glColorMaski.xhtml>
39650	fn glColorMaski(&self, index: GLuint, r: GLboolean, g: GLboolean, b: GLboolean, a: GLboolean) -> Result<()>;
39651
39652	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsEnabledi.xhtml>
39653	fn glIsEnabledi(&self, target: GLenum, index: GLuint) -> Result<GLboolean>;
39654
39655	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawElementsBaseVertex.xhtml>
39656	fn glDrawElementsBaseVertex(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, basevertex: GLint) -> Result<()>;
39657
39658	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawRangeElementsBaseVertex.xhtml>
39659	fn glDrawRangeElementsBaseVertex(&self, mode: GLenum, start: GLuint, end: GLuint, count: GLsizei, type_: GLenum, indices: *const c_void, basevertex: GLint) -> Result<()>;
39660
39661	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawElementsInstancedBaseVertex.xhtml>
39662	fn glDrawElementsInstancedBaseVertex(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei, basevertex: GLint) -> Result<()>;
39663
39664	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFramebufferTexture.xhtml>
39665	fn glFramebufferTexture(&self, target: GLenum, attachment: GLenum, texture: GLuint, level: GLint) -> Result<()>;
39666
39667	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glPrimitiveBoundingBox.xhtml>
39668	fn glPrimitiveBoundingBox(&self, minX: GLfloat, minY: GLfloat, minZ: GLfloat, minW: GLfloat, maxX: GLfloat, maxY: GLfloat, maxZ: GLfloat, maxW: GLfloat) -> Result<()>;
39669
39670	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetGraphicsResetStatus.xhtml>
39671	fn glGetGraphicsResetStatus(&self) -> Result<GLenum>;
39672
39673	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glReadnPixels.xhtml>
39674	fn glReadnPixels(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, bufSize: GLsizei, data: *mut c_void) -> Result<()>;
39675
39676	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetnUniformfv.xhtml>
39677	fn glGetnUniformfv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLfloat) -> Result<()>;
39678
39679	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetnUniformiv.xhtml>
39680	fn glGetnUniformiv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLint) -> Result<()>;
39681
39682	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetnUniformuiv.xhtml>
39683	fn glGetnUniformuiv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLuint) -> Result<()>;
39684
39685	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glMinSampleShading.xhtml>
39686	fn glMinSampleShading(&self, value: GLfloat) -> Result<()>;
39687
39688	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glPatchParameteri.xhtml>
39689	fn glPatchParameteri(&self, pname: GLenum, value: GLint) -> Result<()>;
39690
39691	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexParameterIiv.xhtml>
39692	fn glTexParameterIiv(&self, target: GLenum, pname: GLenum, params: *const GLint) -> Result<()>;
39693
39694	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexParameterIuiv.xhtml>
39695	fn glTexParameterIuiv(&self, target: GLenum, pname: GLenum, params: *const GLuint) -> Result<()>;
39696
39697	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetTexParameterIiv.xhtml>
39698	fn glGetTexParameterIiv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
39699
39700	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetTexParameterIuiv.xhtml>
39701	fn glGetTexParameterIuiv(&self, target: GLenum, pname: GLenum, params: *mut GLuint) -> Result<()>;
39702
39703	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glSamplerParameterIiv.xhtml>
39704	fn glSamplerParameterIiv(&self, sampler: GLuint, pname: GLenum, param: *const GLint) -> Result<()>;
39705
39706	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glSamplerParameterIuiv.xhtml>
39707	fn glSamplerParameterIuiv(&self, sampler: GLuint, pname: GLenum, param: *const GLuint) -> Result<()>;
39708
39709	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetSamplerParameterIiv.xhtml>
39710	fn glGetSamplerParameterIiv(&self, sampler: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
39711
39712	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetSamplerParameterIuiv.xhtml>
39713	fn glGetSamplerParameterIuiv(&self, sampler: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()>;
39714
39715	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexBuffer.xhtml>
39716	fn glTexBuffer(&self, target: GLenum, internalformat: GLenum, buffer: GLuint) -> Result<()>;
39717
39718	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexBufferRange.xhtml>
39719	fn glTexBufferRange(&self, target: GLenum, internalformat: GLenum, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()>;
39720
39721	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexStorage3DMultisample.xhtml>
39722	fn glTexStorage3DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, fixedsamplelocations: GLboolean) -> Result<()>;
39723}
39724/// Functions from OpenGL ES version 3.2
39725#[derive(Clone, Copy, PartialEq, Eq, Hash)]
39726pub struct EsVersion32 {
39727	/// Is OpenGL ES version 3.2 available
39728	available: bool,
39729
39730	/// The function pointer to `glGetError()`
39731	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetError.xhtml>
39732	pub geterror: PFNGLGETERRORPROC,
39733
39734	/// The function pointer to `glBlendBarrier()`
39735	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendBarrier.xhtml>
39736	pub blendbarrier: PFNGLBLENDBARRIERPROC,
39737
39738	/// The function pointer to `glCopyImageSubData()`
39739	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCopyImageSubData.xhtml>
39740	pub copyimagesubdata: PFNGLCOPYIMAGESUBDATAPROC,
39741
39742	/// The function pointer to `glDebugMessageControl()`
39743	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDebugMessageControl.xhtml>
39744	pub debugmessagecontrol: PFNGLDEBUGMESSAGECONTROLPROC,
39745
39746	/// The function pointer to `glDebugMessageInsert()`
39747	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDebugMessageInsert.xhtml>
39748	pub debugmessageinsert: PFNGLDEBUGMESSAGEINSERTPROC,
39749
39750	/// The function pointer to `glDebugMessageCallback()`
39751	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDebugMessageCallback.xhtml>
39752	pub debugmessagecallback: PFNGLDEBUGMESSAGECALLBACKPROC,
39753
39754	/// The function pointer to `glGetDebugMessageLog()`
39755	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetDebugMessageLog.xhtml>
39756	pub getdebugmessagelog: PFNGLGETDEBUGMESSAGELOGPROC,
39757
39758	/// The function pointer to `glPushDebugGroup()`
39759	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glPushDebugGroup.xhtml>
39760	pub pushdebuggroup: PFNGLPUSHDEBUGGROUPPROC,
39761
39762	/// The function pointer to `glPopDebugGroup()`
39763	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glPopDebugGroup.xhtml>
39764	pub popdebuggroup: PFNGLPOPDEBUGGROUPPROC,
39765
39766	/// The function pointer to `glObjectLabel()`
39767	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glObjectLabel.xhtml>
39768	pub objectlabel: PFNGLOBJECTLABELPROC,
39769
39770	/// The function pointer to `glGetObjectLabel()`
39771	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetObjectLabel.xhtml>
39772	pub getobjectlabel: PFNGLGETOBJECTLABELPROC,
39773
39774	/// The function pointer to `glObjectPtrLabel()`
39775	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glObjectPtrLabel.xhtml>
39776	pub objectptrlabel: PFNGLOBJECTPTRLABELPROC,
39777
39778	/// The function pointer to `glGetObjectPtrLabel()`
39779	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetObjectPtrLabel.xhtml>
39780	pub getobjectptrlabel: PFNGLGETOBJECTPTRLABELPROC,
39781
39782	/// The function pointer to `glGetPointerv()`
39783	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetPointerv.xhtml>
39784	pub getpointerv: PFNGLGETPOINTERVPROC,
39785
39786	/// The function pointer to `glEnablei()`
39787	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glEnablei.xhtml>
39788	pub enablei: PFNGLENABLEIPROC,
39789
39790	/// The function pointer to `glDisablei()`
39791	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDisablei.xhtml>
39792	pub disablei: PFNGLDISABLEIPROC,
39793
39794	/// The function pointer to `glBlendEquationi()`
39795	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendEquationi.xhtml>
39796	pub blendequationi: PFNGLBLENDEQUATIONIPROC,
39797
39798	/// The function pointer to `glBlendEquationSeparatei()`
39799	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendEquationSeparatei.xhtml>
39800	pub blendequationseparatei: PFNGLBLENDEQUATIONSEPARATEIPROC,
39801
39802	/// The function pointer to `glBlendFunci()`
39803	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendFunci.xhtml>
39804	pub blendfunci: PFNGLBLENDFUNCIPROC,
39805
39806	/// The function pointer to `glBlendFuncSeparatei()`
39807	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendFuncSeparatei.xhtml>
39808	pub blendfuncseparatei: PFNGLBLENDFUNCSEPARATEIPROC,
39809
39810	/// The function pointer to `glColorMaski()`
39811	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glColorMaski.xhtml>
39812	pub colormaski: PFNGLCOLORMASKIPROC,
39813
39814	/// The function pointer to `glIsEnabledi()`
39815	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsEnabledi.xhtml>
39816	pub isenabledi: PFNGLISENABLEDIPROC,
39817
39818	/// The function pointer to `glDrawElementsBaseVertex()`
39819	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawElementsBaseVertex.xhtml>
39820	pub drawelementsbasevertex: PFNGLDRAWELEMENTSBASEVERTEXPROC,
39821
39822	/// The function pointer to `glDrawRangeElementsBaseVertex()`
39823	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawRangeElementsBaseVertex.xhtml>
39824	pub drawrangeelementsbasevertex: PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC,
39825
39826	/// The function pointer to `glDrawElementsInstancedBaseVertex()`
39827	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawElementsInstancedBaseVertex.xhtml>
39828	pub drawelementsinstancedbasevertex: PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC,
39829
39830	/// The function pointer to `glFramebufferTexture()`
39831	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFramebufferTexture.xhtml>
39832	pub framebuffertexture: PFNGLFRAMEBUFFERTEXTUREPROC,
39833
39834	/// The function pointer to `glPrimitiveBoundingBox()`
39835	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glPrimitiveBoundingBox.xhtml>
39836	pub primitiveboundingbox: PFNGLPRIMITIVEBOUNDINGBOXPROC,
39837
39838	/// The function pointer to `glGetGraphicsResetStatus()`
39839	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetGraphicsResetStatus.xhtml>
39840	pub getgraphicsresetstatus: PFNGLGETGRAPHICSRESETSTATUSPROC,
39841
39842	/// The function pointer to `glReadnPixels()`
39843	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glReadnPixels.xhtml>
39844	pub readnpixels: PFNGLREADNPIXELSPROC,
39845
39846	/// The function pointer to `glGetnUniformfv()`
39847	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetnUniformfv.xhtml>
39848	pub getnuniformfv: PFNGLGETNUNIFORMFVPROC,
39849
39850	/// The function pointer to `glGetnUniformiv()`
39851	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetnUniformiv.xhtml>
39852	pub getnuniformiv: PFNGLGETNUNIFORMIVPROC,
39853
39854	/// The function pointer to `glGetnUniformuiv()`
39855	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetnUniformuiv.xhtml>
39856	pub getnuniformuiv: PFNGLGETNUNIFORMUIVPROC,
39857
39858	/// The function pointer to `glMinSampleShading()`
39859	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glMinSampleShading.xhtml>
39860	pub minsampleshading: PFNGLMINSAMPLESHADINGPROC,
39861
39862	/// The function pointer to `glPatchParameteri()`
39863	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glPatchParameteri.xhtml>
39864	pub patchparameteri: PFNGLPATCHPARAMETERIPROC,
39865
39866	/// The function pointer to `glTexParameterIiv()`
39867	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexParameterIiv.xhtml>
39868	pub texparameteriiv: PFNGLTEXPARAMETERIIVPROC,
39869
39870	/// The function pointer to `glTexParameterIuiv()`
39871	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexParameterIuiv.xhtml>
39872	pub texparameteriuiv: PFNGLTEXPARAMETERIUIVPROC,
39873
39874	/// The function pointer to `glGetTexParameterIiv()`
39875	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetTexParameterIiv.xhtml>
39876	pub gettexparameteriiv: PFNGLGETTEXPARAMETERIIVPROC,
39877
39878	/// The function pointer to `glGetTexParameterIuiv()`
39879	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetTexParameterIuiv.xhtml>
39880	pub gettexparameteriuiv: PFNGLGETTEXPARAMETERIUIVPROC,
39881
39882	/// The function pointer to `glSamplerParameterIiv()`
39883	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glSamplerParameterIiv.xhtml>
39884	pub samplerparameteriiv: PFNGLSAMPLERPARAMETERIIVPROC,
39885
39886	/// The function pointer to `glSamplerParameterIuiv()`
39887	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glSamplerParameterIuiv.xhtml>
39888	pub samplerparameteriuiv: PFNGLSAMPLERPARAMETERIUIVPROC,
39889
39890	/// The function pointer to `glGetSamplerParameterIiv()`
39891	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetSamplerParameterIiv.xhtml>
39892	pub getsamplerparameteriiv: PFNGLGETSAMPLERPARAMETERIIVPROC,
39893
39894	/// The function pointer to `glGetSamplerParameterIuiv()`
39895	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetSamplerParameterIuiv.xhtml>
39896	pub getsamplerparameteriuiv: PFNGLGETSAMPLERPARAMETERIUIVPROC,
39897
39898	/// The function pointer to `glTexBuffer()`
39899	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexBuffer.xhtml>
39900	pub texbuffer: PFNGLTEXBUFFERPROC,
39901
39902	/// The function pointer to `glTexBufferRange()`
39903	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexBufferRange.xhtml>
39904	pub texbufferrange: PFNGLTEXBUFFERRANGEPROC,
39905
39906	/// The function pointer to `glTexStorage3DMultisample()`
39907	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexStorage3DMultisample.xhtml>
39908	pub texstorage3dmultisample: PFNGLTEXSTORAGE3DMULTISAMPLEPROC,
39909}
39910
39911impl ES_GL_3_2 for EsVersion32 {
39912	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetError.xhtml>
39913	#[inline(always)]
39914	fn glGetError(&self) -> GLenum {
39915		(self.geterror)()
39916	}
39917	#[inline(always)]
39918	fn glBlendBarrier(&self) -> Result<()> {
39919		#[cfg(feature = "catch_nullptr")]
39920		let ret = process_catch("glBlendBarrier", catch_unwind(||(self.blendbarrier)()));
39921		#[cfg(not(feature = "catch_nullptr"))]
39922		let ret = {(self.blendbarrier)(); Ok(())};
39923		#[cfg(feature = "diagnose")]
39924		if let Ok(ret) = ret {
39925			return to_result("glBlendBarrier", ret, self.glGetError());
39926		} else {
39927			return ret
39928		}
39929		#[cfg(not(feature = "diagnose"))]
39930		return ret;
39931	}
39932	#[inline(always)]
39933	fn glCopyImageSubData(&self, srcName: GLuint, srcTarget: GLenum, srcLevel: GLint, srcX: GLint, srcY: GLint, srcZ: GLint, dstName: GLuint, dstTarget: GLenum, dstLevel: GLint, dstX: GLint, dstY: GLint, dstZ: GLint, srcWidth: GLsizei, srcHeight: GLsizei, srcDepth: GLsizei) -> Result<()> {
39934		#[cfg(feature = "catch_nullptr")]
39935		let ret = process_catch("glCopyImageSubData", catch_unwind(||(self.copyimagesubdata)(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth)));
39936		#[cfg(not(feature = "catch_nullptr"))]
39937		let ret = {(self.copyimagesubdata)(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth); Ok(())};
39938		#[cfg(feature = "diagnose")]
39939		if let Ok(ret) = ret {
39940			return to_result("glCopyImageSubData", ret, self.glGetError());
39941		} else {
39942			return ret
39943		}
39944		#[cfg(not(feature = "diagnose"))]
39945		return ret;
39946	}
39947	#[inline(always)]
39948	fn glDebugMessageControl(&self, source: GLenum, type_: GLenum, severity: GLenum, count: GLsizei, ids: *const GLuint, enabled: GLboolean) -> Result<()> {
39949		#[cfg(feature = "catch_nullptr")]
39950		let ret = process_catch("glDebugMessageControl", catch_unwind(||(self.debugmessagecontrol)(source, type_, severity, count, ids, enabled)));
39951		#[cfg(not(feature = "catch_nullptr"))]
39952		let ret = {(self.debugmessagecontrol)(source, type_, severity, count, ids, enabled); Ok(())};
39953		#[cfg(feature = "diagnose")]
39954		if let Ok(ret) = ret {
39955			return to_result("glDebugMessageControl", ret, self.glGetError());
39956		} else {
39957			return ret
39958		}
39959		#[cfg(not(feature = "diagnose"))]
39960		return ret;
39961	}
39962	#[inline(always)]
39963	fn glDebugMessageInsert(&self, source: GLenum, type_: GLenum, id: GLuint, severity: GLenum, length: GLsizei, buf: *const GLchar) -> Result<()> {
39964		#[cfg(feature = "catch_nullptr")]
39965		let ret = process_catch("glDebugMessageInsert", catch_unwind(||(self.debugmessageinsert)(source, type_, id, severity, length, buf)));
39966		#[cfg(not(feature = "catch_nullptr"))]
39967		let ret = {(self.debugmessageinsert)(source, type_, id, severity, length, buf); Ok(())};
39968		#[cfg(feature = "diagnose")]
39969		if let Ok(ret) = ret {
39970			return to_result("glDebugMessageInsert", ret, self.glGetError());
39971		} else {
39972			return ret
39973		}
39974		#[cfg(not(feature = "diagnose"))]
39975		return ret;
39976	}
39977	#[inline(always)]
39978	fn glDebugMessageCallback(&self, callback: GLDEBUGPROC, userParam: *const c_void) -> Result<()> {
39979		#[cfg(feature = "catch_nullptr")]
39980		let ret = process_catch("glDebugMessageCallback", catch_unwind(||(self.debugmessagecallback)(callback, userParam)));
39981		#[cfg(not(feature = "catch_nullptr"))]
39982		let ret = {(self.debugmessagecallback)(callback, userParam); Ok(())};
39983		#[cfg(feature = "diagnose")]
39984		if let Ok(ret) = ret {
39985			return to_result("glDebugMessageCallback", ret, self.glGetError());
39986		} else {
39987			return ret
39988		}
39989		#[cfg(not(feature = "diagnose"))]
39990		return ret;
39991	}
39992	#[inline(always)]
39993	fn glGetDebugMessageLog(&self, count: GLuint, bufSize: GLsizei, sources: *mut GLenum, types: *mut GLenum, ids: *mut GLuint, severities: *mut GLenum, lengths: *mut GLsizei, messageLog: *mut GLchar) -> Result<GLuint> {
39994		#[cfg(feature = "catch_nullptr")]
39995		let ret = process_catch("glGetDebugMessageLog", catch_unwind(||(self.getdebugmessagelog)(count, bufSize, sources, types, ids, severities, lengths, messageLog)));
39996		#[cfg(not(feature = "catch_nullptr"))]
39997		let ret = Ok((self.getdebugmessagelog)(count, bufSize, sources, types, ids, severities, lengths, messageLog));
39998		#[cfg(feature = "diagnose")]
39999		if let Ok(ret) = ret {
40000			return to_result("glGetDebugMessageLog", ret, self.glGetError());
40001		} else {
40002			return ret
40003		}
40004		#[cfg(not(feature = "diagnose"))]
40005		return ret;
40006	}
40007	#[inline(always)]
40008	fn glPushDebugGroup(&self, source: GLenum, id: GLuint, length: GLsizei, message: *const GLchar) -> Result<()> {
40009		#[cfg(feature = "catch_nullptr")]
40010		let ret = process_catch("glPushDebugGroup", catch_unwind(||(self.pushdebuggroup)(source, id, length, message)));
40011		#[cfg(not(feature = "catch_nullptr"))]
40012		let ret = {(self.pushdebuggroup)(source, id, length, message); Ok(())};
40013		#[cfg(feature = "diagnose")]
40014		if let Ok(ret) = ret {
40015			return to_result("glPushDebugGroup", ret, self.glGetError());
40016		} else {
40017			return ret
40018		}
40019		#[cfg(not(feature = "diagnose"))]
40020		return ret;
40021	}
40022	#[inline(always)]
40023	fn glPopDebugGroup(&self) -> Result<()> {
40024		#[cfg(feature = "catch_nullptr")]
40025		let ret = process_catch("glPopDebugGroup", catch_unwind(||(self.popdebuggroup)()));
40026		#[cfg(not(feature = "catch_nullptr"))]
40027		let ret = {(self.popdebuggroup)(); Ok(())};
40028		#[cfg(feature = "diagnose")]
40029		if let Ok(ret) = ret {
40030			return to_result("glPopDebugGroup", ret, self.glGetError());
40031		} else {
40032			return ret
40033		}
40034		#[cfg(not(feature = "diagnose"))]
40035		return ret;
40036	}
40037	#[inline(always)]
40038	fn glObjectLabel(&self, identifier: GLenum, name: GLuint, length: GLsizei, label: *const GLchar) -> Result<()> {
40039		#[cfg(feature = "catch_nullptr")]
40040		let ret = process_catch("glObjectLabel", catch_unwind(||(self.objectlabel)(identifier, name, length, label)));
40041		#[cfg(not(feature = "catch_nullptr"))]
40042		let ret = {(self.objectlabel)(identifier, name, length, label); Ok(())};
40043		#[cfg(feature = "diagnose")]
40044		if let Ok(ret) = ret {
40045			return to_result("glObjectLabel", ret, self.glGetError());
40046		} else {
40047			return ret
40048		}
40049		#[cfg(not(feature = "diagnose"))]
40050		return ret;
40051	}
40052	#[inline(always)]
40053	fn glGetObjectLabel(&self, identifier: GLenum, name: GLuint, bufSize: GLsizei, length: *mut GLsizei, label: *mut GLchar) -> Result<()> {
40054		#[cfg(feature = "catch_nullptr")]
40055		let ret = process_catch("glGetObjectLabel", catch_unwind(||(self.getobjectlabel)(identifier, name, bufSize, length, label)));
40056		#[cfg(not(feature = "catch_nullptr"))]
40057		let ret = {(self.getobjectlabel)(identifier, name, bufSize, length, label); Ok(())};
40058		#[cfg(feature = "diagnose")]
40059		if let Ok(ret) = ret {
40060			return to_result("glGetObjectLabel", ret, self.glGetError());
40061		} else {
40062			return ret
40063		}
40064		#[cfg(not(feature = "diagnose"))]
40065		return ret;
40066	}
40067	#[inline(always)]
40068	fn glObjectPtrLabel(&self, ptr: *const c_void, length: GLsizei, label: *const GLchar) -> Result<()> {
40069		#[cfg(feature = "catch_nullptr")]
40070		let ret = process_catch("glObjectPtrLabel", catch_unwind(||(self.objectptrlabel)(ptr, length, label)));
40071		#[cfg(not(feature = "catch_nullptr"))]
40072		let ret = {(self.objectptrlabel)(ptr, length, label); Ok(())};
40073		#[cfg(feature = "diagnose")]
40074		if let Ok(ret) = ret {
40075			return to_result("glObjectPtrLabel", ret, self.glGetError());
40076		} else {
40077			return ret
40078		}
40079		#[cfg(not(feature = "diagnose"))]
40080		return ret;
40081	}
40082	#[inline(always)]
40083	fn glGetObjectPtrLabel(&self, ptr: *const c_void, bufSize: GLsizei, length: *mut GLsizei, label: *mut GLchar) -> Result<()> {
40084		#[cfg(feature = "catch_nullptr")]
40085		let ret = process_catch("glGetObjectPtrLabel", catch_unwind(||(self.getobjectptrlabel)(ptr, bufSize, length, label)));
40086		#[cfg(not(feature = "catch_nullptr"))]
40087		let ret = {(self.getobjectptrlabel)(ptr, bufSize, length, label); Ok(())};
40088		#[cfg(feature = "diagnose")]
40089		if let Ok(ret) = ret {
40090			return to_result("glGetObjectPtrLabel", ret, self.glGetError());
40091		} else {
40092			return ret
40093		}
40094		#[cfg(not(feature = "diagnose"))]
40095		return ret;
40096	}
40097	#[inline(always)]
40098	fn glGetPointerv(&self, pname: GLenum, params: *mut *mut c_void) -> Result<()> {
40099		#[cfg(feature = "catch_nullptr")]
40100		let ret = process_catch("glGetPointerv", catch_unwind(||(self.getpointerv)(pname, params)));
40101		#[cfg(not(feature = "catch_nullptr"))]
40102		let ret = {(self.getpointerv)(pname, params); Ok(())};
40103		#[cfg(feature = "diagnose")]
40104		if let Ok(ret) = ret {
40105			return to_result("glGetPointerv", ret, self.glGetError());
40106		} else {
40107			return ret
40108		}
40109		#[cfg(not(feature = "diagnose"))]
40110		return ret;
40111	}
40112	#[inline(always)]
40113	fn glEnablei(&self, target: GLenum, index: GLuint) -> Result<()> {
40114		#[cfg(feature = "catch_nullptr")]
40115		let ret = process_catch("glEnablei", catch_unwind(||(self.enablei)(target, index)));
40116		#[cfg(not(feature = "catch_nullptr"))]
40117		let ret = {(self.enablei)(target, index); Ok(())};
40118		#[cfg(feature = "diagnose")]
40119		if let Ok(ret) = ret {
40120			return to_result("glEnablei", ret, self.glGetError());
40121		} else {
40122			return ret
40123		}
40124		#[cfg(not(feature = "diagnose"))]
40125		return ret;
40126	}
40127	#[inline(always)]
40128	fn glDisablei(&self, target: GLenum, index: GLuint) -> Result<()> {
40129		#[cfg(feature = "catch_nullptr")]
40130		let ret = process_catch("glDisablei", catch_unwind(||(self.disablei)(target, index)));
40131		#[cfg(not(feature = "catch_nullptr"))]
40132		let ret = {(self.disablei)(target, index); Ok(())};
40133		#[cfg(feature = "diagnose")]
40134		if let Ok(ret) = ret {
40135			return to_result("glDisablei", ret, self.glGetError());
40136		} else {
40137			return ret
40138		}
40139		#[cfg(not(feature = "diagnose"))]
40140		return ret;
40141	}
40142	#[inline(always)]
40143	fn glBlendEquationi(&self, buf: GLuint, mode: GLenum) -> Result<()> {
40144		#[cfg(feature = "catch_nullptr")]
40145		let ret = process_catch("glBlendEquationi", catch_unwind(||(self.blendequationi)(buf, mode)));
40146		#[cfg(not(feature = "catch_nullptr"))]
40147		let ret = {(self.blendequationi)(buf, mode); Ok(())};
40148		#[cfg(feature = "diagnose")]
40149		if let Ok(ret) = ret {
40150			return to_result("glBlendEquationi", ret, self.glGetError());
40151		} else {
40152			return ret
40153		}
40154		#[cfg(not(feature = "diagnose"))]
40155		return ret;
40156	}
40157	#[inline(always)]
40158	fn glBlendEquationSeparatei(&self, buf: GLuint, modeRGB: GLenum, modeAlpha: GLenum) -> Result<()> {
40159		#[cfg(feature = "catch_nullptr")]
40160		let ret = process_catch("glBlendEquationSeparatei", catch_unwind(||(self.blendequationseparatei)(buf, modeRGB, modeAlpha)));
40161		#[cfg(not(feature = "catch_nullptr"))]
40162		let ret = {(self.blendequationseparatei)(buf, modeRGB, modeAlpha); Ok(())};
40163		#[cfg(feature = "diagnose")]
40164		if let Ok(ret) = ret {
40165			return to_result("glBlendEquationSeparatei", ret, self.glGetError());
40166		} else {
40167			return ret
40168		}
40169		#[cfg(not(feature = "diagnose"))]
40170		return ret;
40171	}
40172	#[inline(always)]
40173	fn glBlendFunci(&self, buf: GLuint, src: GLenum, dst: GLenum) -> Result<()> {
40174		#[cfg(feature = "catch_nullptr")]
40175		let ret = process_catch("glBlendFunci", catch_unwind(||(self.blendfunci)(buf, src, dst)));
40176		#[cfg(not(feature = "catch_nullptr"))]
40177		let ret = {(self.blendfunci)(buf, src, dst); Ok(())};
40178		#[cfg(feature = "diagnose")]
40179		if let Ok(ret) = ret {
40180			return to_result("glBlendFunci", ret, self.glGetError());
40181		} else {
40182			return ret
40183		}
40184		#[cfg(not(feature = "diagnose"))]
40185		return ret;
40186	}
40187	#[inline(always)]
40188	fn glBlendFuncSeparatei(&self, buf: GLuint, srcRGB: GLenum, dstRGB: GLenum, srcAlpha: GLenum, dstAlpha: GLenum) -> Result<()> {
40189		#[cfg(feature = "catch_nullptr")]
40190		let ret = process_catch("glBlendFuncSeparatei", catch_unwind(||(self.blendfuncseparatei)(buf, srcRGB, dstRGB, srcAlpha, dstAlpha)));
40191		#[cfg(not(feature = "catch_nullptr"))]
40192		let ret = {(self.blendfuncseparatei)(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); Ok(())};
40193		#[cfg(feature = "diagnose")]
40194		if let Ok(ret) = ret {
40195			return to_result("glBlendFuncSeparatei", ret, self.glGetError());
40196		} else {
40197			return ret
40198		}
40199		#[cfg(not(feature = "diagnose"))]
40200		return ret;
40201	}
40202	#[inline(always)]
40203	fn glColorMaski(&self, index: GLuint, r: GLboolean, g: GLboolean, b: GLboolean, a: GLboolean) -> Result<()> {
40204		#[cfg(feature = "catch_nullptr")]
40205		let ret = process_catch("glColorMaski", catch_unwind(||(self.colormaski)(index, r, g, b, a)));
40206		#[cfg(not(feature = "catch_nullptr"))]
40207		let ret = {(self.colormaski)(index, r, g, b, a); Ok(())};
40208		#[cfg(feature = "diagnose")]
40209		if let Ok(ret) = ret {
40210			return to_result("glColorMaski", ret, self.glGetError());
40211		} else {
40212			return ret
40213		}
40214		#[cfg(not(feature = "diagnose"))]
40215		return ret;
40216	}
40217	#[inline(always)]
40218	fn glIsEnabledi(&self, target: GLenum, index: GLuint) -> Result<GLboolean> {
40219		#[cfg(feature = "catch_nullptr")]
40220		let ret = process_catch("glIsEnabledi", catch_unwind(||(self.isenabledi)(target, index)));
40221		#[cfg(not(feature = "catch_nullptr"))]
40222		let ret = Ok((self.isenabledi)(target, index));
40223		#[cfg(feature = "diagnose")]
40224		if let Ok(ret) = ret {
40225			return to_result("glIsEnabledi", ret, self.glGetError());
40226		} else {
40227			return ret
40228		}
40229		#[cfg(not(feature = "diagnose"))]
40230		return ret;
40231	}
40232	#[inline(always)]
40233	fn glDrawElementsBaseVertex(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, basevertex: GLint) -> Result<()> {
40234		#[cfg(feature = "catch_nullptr")]
40235		let ret = process_catch("glDrawElementsBaseVertex", catch_unwind(||(self.drawelementsbasevertex)(mode, count, type_, indices, basevertex)));
40236		#[cfg(not(feature = "catch_nullptr"))]
40237		let ret = {(self.drawelementsbasevertex)(mode, count, type_, indices, basevertex); Ok(())};
40238		#[cfg(feature = "diagnose")]
40239		if let Ok(ret) = ret {
40240			return to_result("glDrawElementsBaseVertex", ret, self.glGetError());
40241		} else {
40242			return ret
40243		}
40244		#[cfg(not(feature = "diagnose"))]
40245		return ret;
40246	}
40247	#[inline(always)]
40248	fn glDrawRangeElementsBaseVertex(&self, mode: GLenum, start: GLuint, end: GLuint, count: GLsizei, type_: GLenum, indices: *const c_void, basevertex: GLint) -> Result<()> {
40249		#[cfg(feature = "catch_nullptr")]
40250		let ret = process_catch("glDrawRangeElementsBaseVertex", catch_unwind(||(self.drawrangeelementsbasevertex)(mode, start, end, count, type_, indices, basevertex)));
40251		#[cfg(not(feature = "catch_nullptr"))]
40252		let ret = {(self.drawrangeelementsbasevertex)(mode, start, end, count, type_, indices, basevertex); Ok(())};
40253		#[cfg(feature = "diagnose")]
40254		if let Ok(ret) = ret {
40255			return to_result("glDrawRangeElementsBaseVertex", ret, self.glGetError());
40256		} else {
40257			return ret
40258		}
40259		#[cfg(not(feature = "diagnose"))]
40260		return ret;
40261	}
40262	#[inline(always)]
40263	fn glDrawElementsInstancedBaseVertex(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei, basevertex: GLint) -> Result<()> {
40264		#[cfg(feature = "catch_nullptr")]
40265		let ret = process_catch("glDrawElementsInstancedBaseVertex", catch_unwind(||(self.drawelementsinstancedbasevertex)(mode, count, type_, indices, instancecount, basevertex)));
40266		#[cfg(not(feature = "catch_nullptr"))]
40267		let ret = {(self.drawelementsinstancedbasevertex)(mode, count, type_, indices, instancecount, basevertex); Ok(())};
40268		#[cfg(feature = "diagnose")]
40269		if let Ok(ret) = ret {
40270			return to_result("glDrawElementsInstancedBaseVertex", ret, self.glGetError());
40271		} else {
40272			return ret
40273		}
40274		#[cfg(not(feature = "diagnose"))]
40275		return ret;
40276	}
40277	#[inline(always)]
40278	fn glFramebufferTexture(&self, target: GLenum, attachment: GLenum, texture: GLuint, level: GLint) -> Result<()> {
40279		#[cfg(feature = "catch_nullptr")]
40280		let ret = process_catch("glFramebufferTexture", catch_unwind(||(self.framebuffertexture)(target, attachment, texture, level)));
40281		#[cfg(not(feature = "catch_nullptr"))]
40282		let ret = {(self.framebuffertexture)(target, attachment, texture, level); Ok(())};
40283		#[cfg(feature = "diagnose")]
40284		if let Ok(ret) = ret {
40285			return to_result("glFramebufferTexture", ret, self.glGetError());
40286		} else {
40287			return ret
40288		}
40289		#[cfg(not(feature = "diagnose"))]
40290		return ret;
40291	}
40292	#[inline(always)]
40293	fn glPrimitiveBoundingBox(&self, minX: GLfloat, minY: GLfloat, minZ: GLfloat, minW: GLfloat, maxX: GLfloat, maxY: GLfloat, maxZ: GLfloat, maxW: GLfloat) -> Result<()> {
40294		#[cfg(feature = "catch_nullptr")]
40295		let ret = process_catch("glPrimitiveBoundingBox", catch_unwind(||(self.primitiveboundingbox)(minX, minY, minZ, minW, maxX, maxY, maxZ, maxW)));
40296		#[cfg(not(feature = "catch_nullptr"))]
40297		let ret = {(self.primitiveboundingbox)(minX, minY, minZ, minW, maxX, maxY, maxZ, maxW); Ok(())};
40298		#[cfg(feature = "diagnose")]
40299		if let Ok(ret) = ret {
40300			return to_result("glPrimitiveBoundingBox", ret, self.glGetError());
40301		} else {
40302			return ret
40303		}
40304		#[cfg(not(feature = "diagnose"))]
40305		return ret;
40306	}
40307	#[inline(always)]
40308	fn glGetGraphicsResetStatus(&self) -> Result<GLenum> {
40309		#[cfg(feature = "catch_nullptr")]
40310		let ret = process_catch("glGetGraphicsResetStatus", catch_unwind(||(self.getgraphicsresetstatus)()));
40311		#[cfg(not(feature = "catch_nullptr"))]
40312		let ret = Ok((self.getgraphicsresetstatus)());
40313		#[cfg(feature = "diagnose")]
40314		if let Ok(ret) = ret {
40315			return to_result("glGetGraphicsResetStatus", ret, self.glGetError());
40316		} else {
40317			return ret
40318		}
40319		#[cfg(not(feature = "diagnose"))]
40320		return ret;
40321	}
40322	#[inline(always)]
40323	fn glReadnPixels(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, bufSize: GLsizei, data: *mut c_void) -> Result<()> {
40324		#[cfg(feature = "catch_nullptr")]
40325		let ret = process_catch("glReadnPixels", catch_unwind(||(self.readnpixels)(x, y, width, height, format, type_, bufSize, data)));
40326		#[cfg(not(feature = "catch_nullptr"))]
40327		let ret = {(self.readnpixels)(x, y, width, height, format, type_, bufSize, data); Ok(())};
40328		#[cfg(feature = "diagnose")]
40329		if let Ok(ret) = ret {
40330			return to_result("glReadnPixels", ret, self.glGetError());
40331		} else {
40332			return ret
40333		}
40334		#[cfg(not(feature = "diagnose"))]
40335		return ret;
40336	}
40337	#[inline(always)]
40338	fn glGetnUniformfv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLfloat) -> Result<()> {
40339		#[cfg(feature = "catch_nullptr")]
40340		let ret = process_catch("glGetnUniformfv", catch_unwind(||(self.getnuniformfv)(program, location, bufSize, params)));
40341		#[cfg(not(feature = "catch_nullptr"))]
40342		let ret = {(self.getnuniformfv)(program, location, bufSize, params); Ok(())};
40343		#[cfg(feature = "diagnose")]
40344		if let Ok(ret) = ret {
40345			return to_result("glGetnUniformfv", ret, self.glGetError());
40346		} else {
40347			return ret
40348		}
40349		#[cfg(not(feature = "diagnose"))]
40350		return ret;
40351	}
40352	#[inline(always)]
40353	fn glGetnUniformiv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLint) -> Result<()> {
40354		#[cfg(feature = "catch_nullptr")]
40355		let ret = process_catch("glGetnUniformiv", catch_unwind(||(self.getnuniformiv)(program, location, bufSize, params)));
40356		#[cfg(not(feature = "catch_nullptr"))]
40357		let ret = {(self.getnuniformiv)(program, location, bufSize, params); Ok(())};
40358		#[cfg(feature = "diagnose")]
40359		if let Ok(ret) = ret {
40360			return to_result("glGetnUniformiv", ret, self.glGetError());
40361		} else {
40362			return ret
40363		}
40364		#[cfg(not(feature = "diagnose"))]
40365		return ret;
40366	}
40367	#[inline(always)]
40368	fn glGetnUniformuiv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLuint) -> Result<()> {
40369		#[cfg(feature = "catch_nullptr")]
40370		let ret = process_catch("glGetnUniformuiv", catch_unwind(||(self.getnuniformuiv)(program, location, bufSize, params)));
40371		#[cfg(not(feature = "catch_nullptr"))]
40372		let ret = {(self.getnuniformuiv)(program, location, bufSize, params); Ok(())};
40373		#[cfg(feature = "diagnose")]
40374		if let Ok(ret) = ret {
40375			return to_result("glGetnUniformuiv", ret, self.glGetError());
40376		} else {
40377			return ret
40378		}
40379		#[cfg(not(feature = "diagnose"))]
40380		return ret;
40381	}
40382	#[inline(always)]
40383	fn glMinSampleShading(&self, value: GLfloat) -> Result<()> {
40384		#[cfg(feature = "catch_nullptr")]
40385		let ret = process_catch("glMinSampleShading", catch_unwind(||(self.minsampleshading)(value)));
40386		#[cfg(not(feature = "catch_nullptr"))]
40387		let ret = {(self.minsampleshading)(value); Ok(())};
40388		#[cfg(feature = "diagnose")]
40389		if let Ok(ret) = ret {
40390			return to_result("glMinSampleShading", ret, self.glGetError());
40391		} else {
40392			return ret
40393		}
40394		#[cfg(not(feature = "diagnose"))]
40395		return ret;
40396	}
40397	#[inline(always)]
40398	fn glPatchParameteri(&self, pname: GLenum, value: GLint) -> Result<()> {
40399		#[cfg(feature = "catch_nullptr")]
40400		let ret = process_catch("glPatchParameteri", catch_unwind(||(self.patchparameteri)(pname, value)));
40401		#[cfg(not(feature = "catch_nullptr"))]
40402		let ret = {(self.patchparameteri)(pname, value); Ok(())};
40403		#[cfg(feature = "diagnose")]
40404		if let Ok(ret) = ret {
40405			return to_result("glPatchParameteri", ret, self.glGetError());
40406		} else {
40407			return ret
40408		}
40409		#[cfg(not(feature = "diagnose"))]
40410		return ret;
40411	}
40412	#[inline(always)]
40413	fn glTexParameterIiv(&self, target: GLenum, pname: GLenum, params: *const GLint) -> Result<()> {
40414		#[cfg(feature = "catch_nullptr")]
40415		let ret = process_catch("glTexParameterIiv", catch_unwind(||(self.texparameteriiv)(target, pname, params)));
40416		#[cfg(not(feature = "catch_nullptr"))]
40417		let ret = {(self.texparameteriiv)(target, pname, params); Ok(())};
40418		#[cfg(feature = "diagnose")]
40419		if let Ok(ret) = ret {
40420			return to_result("glTexParameterIiv", ret, self.glGetError());
40421		} else {
40422			return ret
40423		}
40424		#[cfg(not(feature = "diagnose"))]
40425		return ret;
40426	}
40427	#[inline(always)]
40428	fn glTexParameterIuiv(&self, target: GLenum, pname: GLenum, params: *const GLuint) -> Result<()> {
40429		#[cfg(feature = "catch_nullptr")]
40430		let ret = process_catch("glTexParameterIuiv", catch_unwind(||(self.texparameteriuiv)(target, pname, params)));
40431		#[cfg(not(feature = "catch_nullptr"))]
40432		let ret = {(self.texparameteriuiv)(target, pname, params); Ok(())};
40433		#[cfg(feature = "diagnose")]
40434		if let Ok(ret) = ret {
40435			return to_result("glTexParameterIuiv", ret, self.glGetError());
40436		} else {
40437			return ret
40438		}
40439		#[cfg(not(feature = "diagnose"))]
40440		return ret;
40441	}
40442	#[inline(always)]
40443	fn glGetTexParameterIiv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
40444		#[cfg(feature = "catch_nullptr")]
40445		let ret = process_catch("glGetTexParameterIiv", catch_unwind(||(self.gettexparameteriiv)(target, pname, params)));
40446		#[cfg(not(feature = "catch_nullptr"))]
40447		let ret = {(self.gettexparameteriiv)(target, pname, params); Ok(())};
40448		#[cfg(feature = "diagnose")]
40449		if let Ok(ret) = ret {
40450			return to_result("glGetTexParameterIiv", ret, self.glGetError());
40451		} else {
40452			return ret
40453		}
40454		#[cfg(not(feature = "diagnose"))]
40455		return ret;
40456	}
40457	#[inline(always)]
40458	fn glGetTexParameterIuiv(&self, target: GLenum, pname: GLenum, params: *mut GLuint) -> Result<()> {
40459		#[cfg(feature = "catch_nullptr")]
40460		let ret = process_catch("glGetTexParameterIuiv", catch_unwind(||(self.gettexparameteriuiv)(target, pname, params)));
40461		#[cfg(not(feature = "catch_nullptr"))]
40462		let ret = {(self.gettexparameteriuiv)(target, pname, params); Ok(())};
40463		#[cfg(feature = "diagnose")]
40464		if let Ok(ret) = ret {
40465			return to_result("glGetTexParameterIuiv", ret, self.glGetError());
40466		} else {
40467			return ret
40468		}
40469		#[cfg(not(feature = "diagnose"))]
40470		return ret;
40471	}
40472	#[inline(always)]
40473	fn glSamplerParameterIiv(&self, sampler: GLuint, pname: GLenum, param: *const GLint) -> Result<()> {
40474		#[cfg(feature = "catch_nullptr")]
40475		let ret = process_catch("glSamplerParameterIiv", catch_unwind(||(self.samplerparameteriiv)(sampler, pname, param)));
40476		#[cfg(not(feature = "catch_nullptr"))]
40477		let ret = {(self.samplerparameteriiv)(sampler, pname, param); Ok(())};
40478		#[cfg(feature = "diagnose")]
40479		if let Ok(ret) = ret {
40480			return to_result("glSamplerParameterIiv", ret, self.glGetError());
40481		} else {
40482			return ret
40483		}
40484		#[cfg(not(feature = "diagnose"))]
40485		return ret;
40486	}
40487	#[inline(always)]
40488	fn glSamplerParameterIuiv(&self, sampler: GLuint, pname: GLenum, param: *const GLuint) -> Result<()> {
40489		#[cfg(feature = "catch_nullptr")]
40490		let ret = process_catch("glSamplerParameterIuiv", catch_unwind(||(self.samplerparameteriuiv)(sampler, pname, param)));
40491		#[cfg(not(feature = "catch_nullptr"))]
40492		let ret = {(self.samplerparameteriuiv)(sampler, pname, param); Ok(())};
40493		#[cfg(feature = "diagnose")]
40494		if let Ok(ret) = ret {
40495			return to_result("glSamplerParameterIuiv", ret, self.glGetError());
40496		} else {
40497			return ret
40498		}
40499		#[cfg(not(feature = "diagnose"))]
40500		return ret;
40501	}
40502	#[inline(always)]
40503	fn glGetSamplerParameterIiv(&self, sampler: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
40504		#[cfg(feature = "catch_nullptr")]
40505		let ret = process_catch("glGetSamplerParameterIiv", catch_unwind(||(self.getsamplerparameteriiv)(sampler, pname, params)));
40506		#[cfg(not(feature = "catch_nullptr"))]
40507		let ret = {(self.getsamplerparameteriiv)(sampler, pname, params); Ok(())};
40508		#[cfg(feature = "diagnose")]
40509		if let Ok(ret) = ret {
40510			return to_result("glGetSamplerParameterIiv", ret, self.glGetError());
40511		} else {
40512			return ret
40513		}
40514		#[cfg(not(feature = "diagnose"))]
40515		return ret;
40516	}
40517	#[inline(always)]
40518	fn glGetSamplerParameterIuiv(&self, sampler: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()> {
40519		#[cfg(feature = "catch_nullptr")]
40520		let ret = process_catch("glGetSamplerParameterIuiv", catch_unwind(||(self.getsamplerparameteriuiv)(sampler, pname, params)));
40521		#[cfg(not(feature = "catch_nullptr"))]
40522		let ret = {(self.getsamplerparameteriuiv)(sampler, pname, params); Ok(())};
40523		#[cfg(feature = "diagnose")]
40524		if let Ok(ret) = ret {
40525			return to_result("glGetSamplerParameterIuiv", ret, self.glGetError());
40526		} else {
40527			return ret
40528		}
40529		#[cfg(not(feature = "diagnose"))]
40530		return ret;
40531	}
40532	#[inline(always)]
40533	fn glTexBuffer(&self, target: GLenum, internalformat: GLenum, buffer: GLuint) -> Result<()> {
40534		#[cfg(feature = "catch_nullptr")]
40535		let ret = process_catch("glTexBuffer", catch_unwind(||(self.texbuffer)(target, internalformat, buffer)));
40536		#[cfg(not(feature = "catch_nullptr"))]
40537		let ret = {(self.texbuffer)(target, internalformat, buffer); Ok(())};
40538		#[cfg(feature = "diagnose")]
40539		if let Ok(ret) = ret {
40540			return to_result("glTexBuffer", ret, self.glGetError());
40541		} else {
40542			return ret
40543		}
40544		#[cfg(not(feature = "diagnose"))]
40545		return ret;
40546	}
40547	#[inline(always)]
40548	fn glTexBufferRange(&self, target: GLenum, internalformat: GLenum, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()> {
40549		#[cfg(feature = "catch_nullptr")]
40550		let ret = process_catch("glTexBufferRange", catch_unwind(||(self.texbufferrange)(target, internalformat, buffer, offset, size)));
40551		#[cfg(not(feature = "catch_nullptr"))]
40552		let ret = {(self.texbufferrange)(target, internalformat, buffer, offset, size); Ok(())};
40553		#[cfg(feature = "diagnose")]
40554		if let Ok(ret) = ret {
40555			return to_result("glTexBufferRange", ret, self.glGetError());
40556		} else {
40557			return ret
40558		}
40559		#[cfg(not(feature = "diagnose"))]
40560		return ret;
40561	}
40562	#[inline(always)]
40563	fn glTexStorage3DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, fixedsamplelocations: GLboolean) -> Result<()> {
40564		#[cfg(feature = "catch_nullptr")]
40565		let ret = process_catch("glTexStorage3DMultisample", catch_unwind(||(self.texstorage3dmultisample)(target, samples, internalformat, width, height, depth, fixedsamplelocations)));
40566		#[cfg(not(feature = "catch_nullptr"))]
40567		let ret = {(self.texstorage3dmultisample)(target, samples, internalformat, width, height, depth, fixedsamplelocations); Ok(())};
40568		#[cfg(feature = "diagnose")]
40569		if let Ok(ret) = ret {
40570			return to_result("glTexStorage3DMultisample", ret, self.glGetError());
40571		} else {
40572			return ret
40573		}
40574		#[cfg(not(feature = "diagnose"))]
40575		return ret;
40576	}
40577}
40578
40579impl EsVersion32 {
40580	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
40581		let (_spec, major, minor, release) = base.get_version();
40582		if (major, minor, release) < (3, 2, 0) {
40583			return Self::default();
40584		}
40585		Self {
40586			available: true,
40587			geterror: {let proc = get_proc_address("glGetError"); if proc.is_null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
40588			blendbarrier: {let proc = get_proc_address("glBlendBarrier"); if proc.is_null() {dummy_pfnglblendbarrierproc} else {unsafe{transmute(proc)}}},
40589			copyimagesubdata: {let proc = get_proc_address("glCopyImageSubData"); if proc.is_null() {dummy_pfnglcopyimagesubdataproc} else {unsafe{transmute(proc)}}},
40590			debugmessagecontrol: {let proc = get_proc_address("glDebugMessageControl"); if proc.is_null() {dummy_pfngldebugmessagecontrolproc} else {unsafe{transmute(proc)}}},
40591			debugmessageinsert: {let proc = get_proc_address("glDebugMessageInsert"); if proc.is_null() {dummy_pfngldebugmessageinsertproc} else {unsafe{transmute(proc)}}},
40592			debugmessagecallback: {let proc = get_proc_address("glDebugMessageCallback"); if proc.is_null() {dummy_pfngldebugmessagecallbackproc} else {unsafe{transmute(proc)}}},
40593			getdebugmessagelog: {let proc = get_proc_address("glGetDebugMessageLog"); if proc.is_null() {dummy_pfnglgetdebugmessagelogproc} else {unsafe{transmute(proc)}}},
40594			pushdebuggroup: {let proc = get_proc_address("glPushDebugGroup"); if proc.is_null() {dummy_pfnglpushdebuggroupproc} else {unsafe{transmute(proc)}}},
40595			popdebuggroup: {let proc = get_proc_address("glPopDebugGroup"); if proc.is_null() {dummy_pfnglpopdebuggroupproc} else {unsafe{transmute(proc)}}},
40596			objectlabel: {let proc = get_proc_address("glObjectLabel"); if proc.is_null() {dummy_pfnglobjectlabelproc} else {unsafe{transmute(proc)}}},
40597			getobjectlabel: {let proc = get_proc_address("glGetObjectLabel"); if proc.is_null() {dummy_pfnglgetobjectlabelproc} else {unsafe{transmute(proc)}}},
40598			objectptrlabel: {let proc = get_proc_address("glObjectPtrLabel"); if proc.is_null() {dummy_pfnglobjectptrlabelproc} else {unsafe{transmute(proc)}}},
40599			getobjectptrlabel: {let proc = get_proc_address("glGetObjectPtrLabel"); if proc.is_null() {dummy_pfnglgetobjectptrlabelproc} else {unsafe{transmute(proc)}}},
40600			getpointerv: {let proc = get_proc_address("glGetPointerv"); if proc.is_null() {dummy_pfnglgetpointervproc} else {unsafe{transmute(proc)}}},
40601			enablei: {let proc = get_proc_address("glEnablei"); if proc.is_null() {dummy_pfnglenableiproc} else {unsafe{transmute(proc)}}},
40602			disablei: {let proc = get_proc_address("glDisablei"); if proc.is_null() {dummy_pfngldisableiproc} else {unsafe{transmute(proc)}}},
40603			blendequationi: {let proc = get_proc_address("glBlendEquationi"); if proc.is_null() {dummy_pfnglblendequationiproc} else {unsafe{transmute(proc)}}},
40604			blendequationseparatei: {let proc = get_proc_address("glBlendEquationSeparatei"); if proc.is_null() {dummy_pfnglblendequationseparateiproc} else {unsafe{transmute(proc)}}},
40605			blendfunci: {let proc = get_proc_address("glBlendFunci"); if proc.is_null() {dummy_pfnglblendfunciproc} else {unsafe{transmute(proc)}}},
40606			blendfuncseparatei: {let proc = get_proc_address("glBlendFuncSeparatei"); if proc.is_null() {dummy_pfnglblendfuncseparateiproc} else {unsafe{transmute(proc)}}},
40607			colormaski: {let proc = get_proc_address("glColorMaski"); if proc.is_null() {dummy_pfnglcolormaskiproc} else {unsafe{transmute(proc)}}},
40608			isenabledi: {let proc = get_proc_address("glIsEnabledi"); if proc.is_null() {dummy_pfnglisenablediproc} else {unsafe{transmute(proc)}}},
40609			drawelementsbasevertex: {let proc = get_proc_address("glDrawElementsBaseVertex"); if proc.is_null() {dummy_pfngldrawelementsbasevertexproc} else {unsafe{transmute(proc)}}},
40610			drawrangeelementsbasevertex: {let proc = get_proc_address("glDrawRangeElementsBaseVertex"); if proc.is_null() {dummy_pfngldrawrangeelementsbasevertexproc} else {unsafe{transmute(proc)}}},
40611			drawelementsinstancedbasevertex: {let proc = get_proc_address("glDrawElementsInstancedBaseVertex"); if proc.is_null() {dummy_pfngldrawelementsinstancedbasevertexproc} else {unsafe{transmute(proc)}}},
40612			framebuffertexture: {let proc = get_proc_address("glFramebufferTexture"); if proc.is_null() {dummy_pfnglframebuffertextureproc} else {unsafe{transmute(proc)}}},
40613			primitiveboundingbox: {let proc = get_proc_address("glPrimitiveBoundingBox"); if proc.is_null() {dummy_pfnglprimitiveboundingboxproc} else {unsafe{transmute(proc)}}},
40614			getgraphicsresetstatus: {let proc = get_proc_address("glGetGraphicsResetStatus"); if proc.is_null() {dummy_pfnglgetgraphicsresetstatusproc} else {unsafe{transmute(proc)}}},
40615			readnpixels: {let proc = get_proc_address("glReadnPixels"); if proc.is_null() {dummy_pfnglreadnpixelsproc} else {unsafe{transmute(proc)}}},
40616			getnuniformfv: {let proc = get_proc_address("glGetnUniformfv"); if proc.is_null() {dummy_pfnglgetnuniformfvproc} else {unsafe{transmute(proc)}}},
40617			getnuniformiv: {let proc = get_proc_address("glGetnUniformiv"); if proc.is_null() {dummy_pfnglgetnuniformivproc} else {unsafe{transmute(proc)}}},
40618			getnuniformuiv: {let proc = get_proc_address("glGetnUniformuiv"); if proc.is_null() {dummy_pfnglgetnuniformuivproc} else {unsafe{transmute(proc)}}},
40619			minsampleshading: {let proc = get_proc_address("glMinSampleShading"); if proc.is_null() {dummy_pfnglminsampleshadingproc} else {unsafe{transmute(proc)}}},
40620			patchparameteri: {let proc = get_proc_address("glPatchParameteri"); if proc.is_null() {dummy_pfnglpatchparameteriproc} else {unsafe{transmute(proc)}}},
40621			texparameteriiv: {let proc = get_proc_address("glTexParameterIiv"); if proc.is_null() {dummy_pfngltexparameteriivproc} else {unsafe{transmute(proc)}}},
40622			texparameteriuiv: {let proc = get_proc_address("glTexParameterIuiv"); if proc.is_null() {dummy_pfngltexparameteriuivproc} else {unsafe{transmute(proc)}}},
40623			gettexparameteriiv: {let proc = get_proc_address("glGetTexParameterIiv"); if proc.is_null() {dummy_pfnglgettexparameteriivproc} else {unsafe{transmute(proc)}}},
40624			gettexparameteriuiv: {let proc = get_proc_address("glGetTexParameterIuiv"); if proc.is_null() {dummy_pfnglgettexparameteriuivproc} else {unsafe{transmute(proc)}}},
40625			samplerparameteriiv: {let proc = get_proc_address("glSamplerParameterIiv"); if proc.is_null() {dummy_pfnglsamplerparameteriivproc} else {unsafe{transmute(proc)}}},
40626			samplerparameteriuiv: {let proc = get_proc_address("glSamplerParameterIuiv"); if proc.is_null() {dummy_pfnglsamplerparameteriuivproc} else {unsafe{transmute(proc)}}},
40627			getsamplerparameteriiv: {let proc = get_proc_address("glGetSamplerParameterIiv"); if proc.is_null() {dummy_pfnglgetsamplerparameteriivproc} else {unsafe{transmute(proc)}}},
40628			getsamplerparameteriuiv: {let proc = get_proc_address("glGetSamplerParameterIuiv"); if proc.is_null() {dummy_pfnglgetsamplerparameteriuivproc} else {unsafe{transmute(proc)}}},
40629			texbuffer: {let proc = get_proc_address("glTexBuffer"); if proc.is_null() {dummy_pfngltexbufferproc} else {unsafe{transmute(proc)}}},
40630			texbufferrange: {let proc = get_proc_address("glTexBufferRange"); if proc.is_null() {dummy_pfngltexbufferrangeproc} else {unsafe{transmute(proc)}}},
40631			texstorage3dmultisample: {let proc = get_proc_address("glTexStorage3DMultisample"); if proc.is_null() {dummy_pfngltexstorage3dmultisampleproc} else {unsafe{transmute(proc)}}},
40632		}
40633	}
40634	#[inline(always)]
40635	pub fn get_available(&self) -> bool {
40636		self.available
40637	}
40638}
40639
40640impl Default for EsVersion32 {
40641	fn default() -> Self {
40642		Self {
40643			available: false,
40644			geterror: dummy_pfnglgeterrorproc,
40645			blendbarrier: dummy_pfnglblendbarrierproc,
40646			copyimagesubdata: dummy_pfnglcopyimagesubdataproc,
40647			debugmessagecontrol: dummy_pfngldebugmessagecontrolproc,
40648			debugmessageinsert: dummy_pfngldebugmessageinsertproc,
40649			debugmessagecallback: dummy_pfngldebugmessagecallbackproc,
40650			getdebugmessagelog: dummy_pfnglgetdebugmessagelogproc,
40651			pushdebuggroup: dummy_pfnglpushdebuggroupproc,
40652			popdebuggroup: dummy_pfnglpopdebuggroupproc,
40653			objectlabel: dummy_pfnglobjectlabelproc,
40654			getobjectlabel: dummy_pfnglgetobjectlabelproc,
40655			objectptrlabel: dummy_pfnglobjectptrlabelproc,
40656			getobjectptrlabel: dummy_pfnglgetobjectptrlabelproc,
40657			getpointerv: dummy_pfnglgetpointervproc,
40658			enablei: dummy_pfnglenableiproc,
40659			disablei: dummy_pfngldisableiproc,
40660			blendequationi: dummy_pfnglblendequationiproc,
40661			blendequationseparatei: dummy_pfnglblendequationseparateiproc,
40662			blendfunci: dummy_pfnglblendfunciproc,
40663			blendfuncseparatei: dummy_pfnglblendfuncseparateiproc,
40664			colormaski: dummy_pfnglcolormaskiproc,
40665			isenabledi: dummy_pfnglisenablediproc,
40666			drawelementsbasevertex: dummy_pfngldrawelementsbasevertexproc,
40667			drawrangeelementsbasevertex: dummy_pfngldrawrangeelementsbasevertexproc,
40668			drawelementsinstancedbasevertex: dummy_pfngldrawelementsinstancedbasevertexproc,
40669			framebuffertexture: dummy_pfnglframebuffertextureproc,
40670			primitiveboundingbox: dummy_pfnglprimitiveboundingboxproc,
40671			getgraphicsresetstatus: dummy_pfnglgetgraphicsresetstatusproc,
40672			readnpixels: dummy_pfnglreadnpixelsproc,
40673			getnuniformfv: dummy_pfnglgetnuniformfvproc,
40674			getnuniformiv: dummy_pfnglgetnuniformivproc,
40675			getnuniformuiv: dummy_pfnglgetnuniformuivproc,
40676			minsampleshading: dummy_pfnglminsampleshadingproc,
40677			patchparameteri: dummy_pfnglpatchparameteriproc,
40678			texparameteriiv: dummy_pfngltexparameteriivproc,
40679			texparameteriuiv: dummy_pfngltexparameteriuivproc,
40680			gettexparameteriiv: dummy_pfnglgettexparameteriivproc,
40681			gettexparameteriuiv: dummy_pfnglgettexparameteriuivproc,
40682			samplerparameteriiv: dummy_pfnglsamplerparameteriivproc,
40683			samplerparameteriuiv: dummy_pfnglsamplerparameteriuivproc,
40684			getsamplerparameteriiv: dummy_pfnglgetsamplerparameteriivproc,
40685			getsamplerparameteriuiv: dummy_pfnglgetsamplerparameteriuivproc,
40686			texbuffer: dummy_pfngltexbufferproc,
40687			texbufferrange: dummy_pfngltexbufferrangeproc,
40688			texstorage3dmultisample: dummy_pfngltexstorage3dmultisampleproc,
40689		}
40690	}
40691}
40692impl Debug for EsVersion32 {
40693	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
40694		if self.available {
40695			f.debug_struct("EsVersion32")
40696			.field("available", &self.available)
40697			.field("blendbarrier", unsafe{if transmute::<_, *const c_void>(self.blendbarrier) == (dummy_pfnglblendbarrierproc as *const c_void) {&null::<PFNGLBLENDBARRIERPROC>()} else {&self.blendbarrier}})
40698			.field("copyimagesubdata", unsafe{if transmute::<_, *const c_void>(self.copyimagesubdata) == (dummy_pfnglcopyimagesubdataproc as *const c_void) {&null::<PFNGLCOPYIMAGESUBDATAPROC>()} else {&self.copyimagesubdata}})
40699			.field("debugmessagecontrol", unsafe{if transmute::<_, *const c_void>(self.debugmessagecontrol) == (dummy_pfngldebugmessagecontrolproc as *const c_void) {&null::<PFNGLDEBUGMESSAGECONTROLPROC>()} else {&self.debugmessagecontrol}})
40700			.field("debugmessageinsert", unsafe{if transmute::<_, *const c_void>(self.debugmessageinsert) == (dummy_pfngldebugmessageinsertproc as *const c_void) {&null::<PFNGLDEBUGMESSAGEINSERTPROC>()} else {&self.debugmessageinsert}})
40701			.field("debugmessagecallback", unsafe{if transmute::<_, *const c_void>(self.debugmessagecallback) == (dummy_pfngldebugmessagecallbackproc as *const c_void) {&null::<PFNGLDEBUGMESSAGECALLBACKPROC>()} else {&self.debugmessagecallback}})
40702			.field("getdebugmessagelog", unsafe{if transmute::<_, *const c_void>(self.getdebugmessagelog) == (dummy_pfnglgetdebugmessagelogproc as *const c_void) {&null::<PFNGLGETDEBUGMESSAGELOGPROC>()} else {&self.getdebugmessagelog}})
40703			.field("pushdebuggroup", unsafe{if transmute::<_, *const c_void>(self.pushdebuggroup) == (dummy_pfnglpushdebuggroupproc as *const c_void) {&null::<PFNGLPUSHDEBUGGROUPPROC>()} else {&self.pushdebuggroup}})
40704			.field("popdebuggroup", unsafe{if transmute::<_, *const c_void>(self.popdebuggroup) == (dummy_pfnglpopdebuggroupproc as *const c_void) {&null::<PFNGLPOPDEBUGGROUPPROC>()} else {&self.popdebuggroup}})
40705			.field("objectlabel", unsafe{if transmute::<_, *const c_void>(self.objectlabel) == (dummy_pfnglobjectlabelproc as *const c_void) {&null::<PFNGLOBJECTLABELPROC>()} else {&self.objectlabel}})
40706			.field("getobjectlabel", unsafe{if transmute::<_, *const c_void>(self.getobjectlabel) == (dummy_pfnglgetobjectlabelproc as *const c_void) {&null::<PFNGLGETOBJECTLABELPROC>()} else {&self.getobjectlabel}})
40707			.field("objectptrlabel", unsafe{if transmute::<_, *const c_void>(self.objectptrlabel) == (dummy_pfnglobjectptrlabelproc as *const c_void) {&null::<PFNGLOBJECTPTRLABELPROC>()} else {&self.objectptrlabel}})
40708			.field("getobjectptrlabel", unsafe{if transmute::<_, *const c_void>(self.getobjectptrlabel) == (dummy_pfnglgetobjectptrlabelproc as *const c_void) {&null::<PFNGLGETOBJECTPTRLABELPROC>()} else {&self.getobjectptrlabel}})
40709			.field("getpointerv", unsafe{if transmute::<_, *const c_void>(self.getpointerv) == (dummy_pfnglgetpointervproc as *const c_void) {&null::<PFNGLGETPOINTERVPROC>()} else {&self.getpointerv}})
40710			.field("enablei", unsafe{if transmute::<_, *const c_void>(self.enablei) == (dummy_pfnglenableiproc as *const c_void) {&null::<PFNGLENABLEIPROC>()} else {&self.enablei}})
40711			.field("disablei", unsafe{if transmute::<_, *const c_void>(self.disablei) == (dummy_pfngldisableiproc as *const c_void) {&null::<PFNGLDISABLEIPROC>()} else {&self.disablei}})
40712			.field("blendequationi", unsafe{if transmute::<_, *const c_void>(self.blendequationi) == (dummy_pfnglblendequationiproc as *const c_void) {&null::<PFNGLBLENDEQUATIONIPROC>()} else {&self.blendequationi}})
40713			.field("blendequationseparatei", unsafe{if transmute::<_, *const c_void>(self.blendequationseparatei) == (dummy_pfnglblendequationseparateiproc as *const c_void) {&null::<PFNGLBLENDEQUATIONSEPARATEIPROC>()} else {&self.blendequationseparatei}})
40714			.field("blendfunci", unsafe{if transmute::<_, *const c_void>(self.blendfunci) == (dummy_pfnglblendfunciproc as *const c_void) {&null::<PFNGLBLENDFUNCIPROC>()} else {&self.blendfunci}})
40715			.field("blendfuncseparatei", unsafe{if transmute::<_, *const c_void>(self.blendfuncseparatei) == (dummy_pfnglblendfuncseparateiproc as *const c_void) {&null::<PFNGLBLENDFUNCSEPARATEIPROC>()} else {&self.blendfuncseparatei}})
40716			.field("colormaski", unsafe{if transmute::<_, *const c_void>(self.colormaski) == (dummy_pfnglcolormaskiproc as *const c_void) {&null::<PFNGLCOLORMASKIPROC>()} else {&self.colormaski}})
40717			.field("isenabledi", unsafe{if transmute::<_, *const c_void>(self.isenabledi) == (dummy_pfnglisenablediproc as *const c_void) {&null::<PFNGLISENABLEDIPROC>()} else {&self.isenabledi}})
40718			.field("drawelementsbasevertex", unsafe{if transmute::<_, *const c_void>(self.drawelementsbasevertex) == (dummy_pfngldrawelementsbasevertexproc as *const c_void) {&null::<PFNGLDRAWELEMENTSBASEVERTEXPROC>()} else {&self.drawelementsbasevertex}})
40719			.field("drawrangeelementsbasevertex", unsafe{if transmute::<_, *const c_void>(self.drawrangeelementsbasevertex) == (dummy_pfngldrawrangeelementsbasevertexproc as *const c_void) {&null::<PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC>()} else {&self.drawrangeelementsbasevertex}})
40720			.field("drawelementsinstancedbasevertex", unsafe{if transmute::<_, *const c_void>(self.drawelementsinstancedbasevertex) == (dummy_pfngldrawelementsinstancedbasevertexproc as *const c_void) {&null::<PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC>()} else {&self.drawelementsinstancedbasevertex}})
40721			.field("framebuffertexture", unsafe{if transmute::<_, *const c_void>(self.framebuffertexture) == (dummy_pfnglframebuffertextureproc as *const c_void) {&null::<PFNGLFRAMEBUFFERTEXTUREPROC>()} else {&self.framebuffertexture}})
40722			.field("primitiveboundingbox", unsafe{if transmute::<_, *const c_void>(self.primitiveboundingbox) == (dummy_pfnglprimitiveboundingboxproc as *const c_void) {&null::<PFNGLPRIMITIVEBOUNDINGBOXPROC>()} else {&self.primitiveboundingbox}})
40723			.field("getgraphicsresetstatus", unsafe{if transmute::<_, *const c_void>(self.getgraphicsresetstatus) == (dummy_pfnglgetgraphicsresetstatusproc as *const c_void) {&null::<PFNGLGETGRAPHICSRESETSTATUSPROC>()} else {&self.getgraphicsresetstatus}})
40724			.field("readnpixels", unsafe{if transmute::<_, *const c_void>(self.readnpixels) == (dummy_pfnglreadnpixelsproc as *const c_void) {&null::<PFNGLREADNPIXELSPROC>()} else {&self.readnpixels}})
40725			.field("getnuniformfv", unsafe{if transmute::<_, *const c_void>(self.getnuniformfv) == (dummy_pfnglgetnuniformfvproc as *const c_void) {&null::<PFNGLGETNUNIFORMFVPROC>()} else {&self.getnuniformfv}})
40726			.field("getnuniformiv", unsafe{if transmute::<_, *const c_void>(self.getnuniformiv) == (dummy_pfnglgetnuniformivproc as *const c_void) {&null::<PFNGLGETNUNIFORMIVPROC>()} else {&self.getnuniformiv}})
40727			.field("getnuniformuiv", unsafe{if transmute::<_, *const c_void>(self.getnuniformuiv) == (dummy_pfnglgetnuniformuivproc as *const c_void) {&null::<PFNGLGETNUNIFORMUIVPROC>()} else {&self.getnuniformuiv}})
40728			.field("minsampleshading", unsafe{if transmute::<_, *const c_void>(self.minsampleshading) == (dummy_pfnglminsampleshadingproc as *const c_void) {&null::<PFNGLMINSAMPLESHADINGPROC>()} else {&self.minsampleshading}})
40729			.field("patchparameteri", unsafe{if transmute::<_, *const c_void>(self.patchparameteri) == (dummy_pfnglpatchparameteriproc as *const c_void) {&null::<PFNGLPATCHPARAMETERIPROC>()} else {&self.patchparameteri}})
40730			.field("texparameteriiv", unsafe{if transmute::<_, *const c_void>(self.texparameteriiv) == (dummy_pfngltexparameteriivproc as *const c_void) {&null::<PFNGLTEXPARAMETERIIVPROC>()} else {&self.texparameteriiv}})
40731			.field("texparameteriuiv", unsafe{if transmute::<_, *const c_void>(self.texparameteriuiv) == (dummy_pfngltexparameteriuivproc as *const c_void) {&null::<PFNGLTEXPARAMETERIUIVPROC>()} else {&self.texparameteriuiv}})
40732			.field("gettexparameteriiv", unsafe{if transmute::<_, *const c_void>(self.gettexparameteriiv) == (dummy_pfnglgettexparameteriivproc as *const c_void) {&null::<PFNGLGETTEXPARAMETERIIVPROC>()} else {&self.gettexparameteriiv}})
40733			.field("gettexparameteriuiv", unsafe{if transmute::<_, *const c_void>(self.gettexparameteriuiv) == (dummy_pfnglgettexparameteriuivproc as *const c_void) {&null::<PFNGLGETTEXPARAMETERIUIVPROC>()} else {&self.gettexparameteriuiv}})
40734			.field("samplerparameteriiv", unsafe{if transmute::<_, *const c_void>(self.samplerparameteriiv) == (dummy_pfnglsamplerparameteriivproc as *const c_void) {&null::<PFNGLSAMPLERPARAMETERIIVPROC>()} else {&self.samplerparameteriiv}})
40735			.field("samplerparameteriuiv", unsafe{if transmute::<_, *const c_void>(self.samplerparameteriuiv) == (dummy_pfnglsamplerparameteriuivproc as *const c_void) {&null::<PFNGLSAMPLERPARAMETERIUIVPROC>()} else {&self.samplerparameteriuiv}})
40736			.field("getsamplerparameteriiv", unsafe{if transmute::<_, *const c_void>(self.getsamplerparameteriiv) == (dummy_pfnglgetsamplerparameteriivproc as *const c_void) {&null::<PFNGLGETSAMPLERPARAMETERIIVPROC>()} else {&self.getsamplerparameteriiv}})
40737			.field("getsamplerparameteriuiv", unsafe{if transmute::<_, *const c_void>(self.getsamplerparameteriuiv) == (dummy_pfnglgetsamplerparameteriuivproc as *const c_void) {&null::<PFNGLGETSAMPLERPARAMETERIUIVPROC>()} else {&self.getsamplerparameteriuiv}})
40738			.field("texbuffer", unsafe{if transmute::<_, *const c_void>(self.texbuffer) == (dummy_pfngltexbufferproc as *const c_void) {&null::<PFNGLTEXBUFFERPROC>()} else {&self.texbuffer}})
40739			.field("texbufferrange", unsafe{if transmute::<_, *const c_void>(self.texbufferrange) == (dummy_pfngltexbufferrangeproc as *const c_void) {&null::<PFNGLTEXBUFFERRANGEPROC>()} else {&self.texbufferrange}})
40740			.field("texstorage3dmultisample", unsafe{if transmute::<_, *const c_void>(self.texstorage3dmultisample) == (dummy_pfngltexstorage3dmultisampleproc as *const c_void) {&null::<PFNGLTEXSTORAGE3DMULTISAMPLEPROC>()} else {&self.texstorage3dmultisample}})
40741			.finish()
40742		} else {
40743			f.debug_struct("EsVersion32")
40744			.field("available", &self.available)
40745			.finish_non_exhaustive()
40746		}
40747	}
40748}
40749	/// Functions from OpenGL version 1.0 for the struct `GLCore` without dupliacted functions.
40750pub trait GL_1_0_g {
40751	/// Get the OpenGL backend version (string_version, major, minor, release)
40752	fn get_version(&self) -> (&'static str, u32, u32, u32);
40753	/// Get the OpenGL vendor string
40754	fn get_vendor(&self) -> &'static str;
40755	/// Get the OpenGL renderer string
40756	fn get_renderer(&self) -> &'static str;
40757	/// Get the OpenGL version string
40758	fn get_versionstr(&self) -> &'static str;
40759
40760	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCullFace.xhtml>
40761	fn glCullFace(&self, mode: GLenum) -> Result<()>;
40762
40763	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFrontFace.xhtml>
40764	fn glFrontFace(&self, mode: GLenum) -> Result<()>;
40765
40766	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glHint.xhtml>
40767	fn glHint(&self, target: GLenum, mode: GLenum) -> Result<()>;
40768
40769	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glLineWidth.xhtml>
40770	fn glLineWidth(&self, width: GLfloat) -> Result<()>;
40771
40772	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPointSize.xhtml>
40773	fn glPointSize(&self, size: GLfloat) -> Result<()>;
40774
40775	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPolygonMode.xhtml>
40776	fn glPolygonMode(&self, face: GLenum, mode: GLenum) -> Result<()>;
40777
40778	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glScissor.xhtml>
40779	fn glScissor(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
40780
40781	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameterf.xhtml>
40782	fn glTexParameterf(&self, target: GLenum, pname: GLenum, param: GLfloat) -> Result<()>;
40783
40784	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameterfv.xhtml>
40785	fn glTexParameterfv(&self, target: GLenum, pname: GLenum, params: *const GLfloat) -> Result<()>;
40786
40787	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameteri.xhtml>
40788	fn glTexParameteri(&self, target: GLenum, pname: GLenum, param: GLint) -> Result<()>;
40789
40790	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameteriv.xhtml>
40791	fn glTexParameteriv(&self, target: GLenum, pname: GLenum, params: *const GLint) -> Result<()>;
40792
40793	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexImage1D.xhtml>
40794	fn glTexImage1D(&self, target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, border: GLint, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
40795
40796	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexImage2D.xhtml>
40797	fn glTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
40798
40799	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawBuffer.xhtml>
40800	fn glDrawBuffer(&self, buf: GLenum) -> Result<()>;
40801
40802	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClear.xhtml>
40803	fn glClear(&self, mask: GLbitfield) -> Result<()>;
40804
40805	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearColor.xhtml>
40806	fn glClearColor(&self, red: GLfloat, green: GLfloat, blue: GLfloat, alpha: GLfloat) -> Result<()>;
40807
40808	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearStencil.xhtml>
40809	fn glClearStencil(&self, s: GLint) -> Result<()>;
40810
40811	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearDepth.xhtml>
40812	fn glClearDepth(&self, depth: GLdouble) -> Result<()>;
40813
40814	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilMask.xhtml>
40815	fn glStencilMask(&self, mask: GLuint) -> Result<()>;
40816
40817	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorMask.xhtml>
40818	fn glColorMask(&self, red: GLboolean, green: GLboolean, blue: GLboolean, alpha: GLboolean) -> Result<()>;
40819
40820	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthMask.xhtml>
40821	fn glDepthMask(&self, flag: GLboolean) -> Result<()>;
40822
40823	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDisable.xhtml>
40824	fn glDisable(&self, cap: GLenum) -> Result<()>;
40825
40826	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEnable.xhtml>
40827	fn glEnable(&self, cap: GLenum) -> Result<()>;
40828
40829	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFinish.xhtml>
40830	fn glFinish(&self) -> Result<()>;
40831
40832	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFlush.xhtml>
40833	fn glFlush(&self) -> Result<()>;
40834
40835	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendFunc.xhtml>
40836	fn glBlendFunc(&self, sfactor: GLenum, dfactor: GLenum) -> Result<()>;
40837
40838	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glLogicOp.xhtml>
40839	fn glLogicOp(&self, opcode: GLenum) -> Result<()>;
40840
40841	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilFunc.xhtml>
40842	fn glStencilFunc(&self, func: GLenum, ref_: GLint, mask: GLuint) -> Result<()>;
40843
40844	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilOp.xhtml>
40845	fn glStencilOp(&self, fail: GLenum, zfail: GLenum, zpass: GLenum) -> Result<()>;
40846
40847	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthFunc.xhtml>
40848	fn glDepthFunc(&self, func: GLenum) -> Result<()>;
40849
40850	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPixelStoref.xhtml>
40851	fn glPixelStoref(&self, pname: GLenum, param: GLfloat) -> Result<()>;
40852
40853	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPixelStorei.xhtml>
40854	fn glPixelStorei(&self, pname: GLenum, param: GLint) -> Result<()>;
40855
40856	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glReadBuffer.xhtml>
40857	fn glReadBuffer(&self, src: GLenum) -> Result<()>;
40858
40859	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glReadPixels.xhtml>
40860	fn glReadPixels(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, pixels: *mut c_void) -> Result<()>;
40861
40862	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBooleanv.xhtml>
40863	fn glGetBooleanv(&self, pname: GLenum, data: *mut GLboolean) -> Result<()>;
40864
40865	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetDoublev.xhtml>
40866	fn glGetDoublev(&self, pname: GLenum, data: *mut GLdouble) -> Result<()>;
40867
40868	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
40869	fn glGetError(&self) -> GLenum;
40870
40871	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFloatv.xhtml>
40872	fn glGetFloatv(&self, pname: GLenum, data: *mut GLfloat) -> Result<()>;
40873
40874	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetIntegerv.xhtml>
40875	fn glGetIntegerv(&self, pname: GLenum, data: *mut GLint) -> Result<()>;
40876
40877	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetString.xhtml>
40878	fn glGetString(&self, name: GLenum) -> Result<&'static str>;
40879
40880	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexImage.xhtml>
40881	fn glGetTexImage(&self, target: GLenum, level: GLint, format: GLenum, type_: GLenum, pixels: *mut c_void) -> Result<()>;
40882
40883	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexParameterfv.xhtml>
40884	fn glGetTexParameterfv(&self, target: GLenum, pname: GLenum, params: *mut GLfloat) -> Result<()>;
40885
40886	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexParameteriv.xhtml>
40887	fn glGetTexParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
40888
40889	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexLevelParameterfv.xhtml>
40890	fn glGetTexLevelParameterfv(&self, target: GLenum, level: GLint, pname: GLenum, params: *mut GLfloat) -> Result<()>;
40891
40892	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexLevelParameteriv.xhtml>
40893	fn glGetTexLevelParameteriv(&self, target: GLenum, level: GLint, pname: GLenum, params: *mut GLint) -> Result<()>;
40894
40895	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsEnabled.xhtml>
40896	fn glIsEnabled(&self, cap: GLenum) -> Result<GLboolean>;
40897
40898	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthRange.xhtml>
40899	fn glDepthRange(&self, n: GLdouble, f: GLdouble) -> Result<()>;
40900
40901	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glViewport.xhtml>
40902	fn glViewport(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
40903}
40904
40905	/// Functions from OpenGL version 1.1 for the struct `GLCore` without dupliacted functions.
40906pub trait GL_1_1_g {
40907
40908	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawArrays.xhtml>
40909	fn glDrawArrays(&self, mode: GLenum, first: GLint, count: GLsizei) -> Result<()>;
40910
40911	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElements.xhtml>
40912	fn glDrawElements(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void) -> Result<()>;
40913
40914	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetPointerv.xhtml>
40915	fn glGetPointerv(&self, pname: GLenum, params: *mut *mut c_void) -> Result<()>;
40916
40917	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPolygonOffset.xhtml>
40918	fn glPolygonOffset(&self, factor: GLfloat, units: GLfloat) -> Result<()>;
40919
40920	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTexImage1D.xhtml>
40921	fn glCopyTexImage1D(&self, target: GLenum, level: GLint, internalformat: GLenum, x: GLint, y: GLint, width: GLsizei, border: GLint) -> Result<()>;
40922
40923	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTexImage2D.xhtml>
40924	fn glCopyTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei, border: GLint) -> Result<()>;
40925
40926	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTexSubImage1D.xhtml>
40927	fn glCopyTexSubImage1D(&self, target: GLenum, level: GLint, xoffset: GLint, x: GLint, y: GLint, width: GLsizei) -> Result<()>;
40928
40929	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTexSubImage2D.xhtml>
40930	fn glCopyTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
40931
40932	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexSubImage1D.xhtml>
40933	fn glTexSubImage1D(&self, target: GLenum, level: GLint, xoffset: GLint, width: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
40934
40935	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexSubImage2D.xhtml>
40936	fn glTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
40937
40938	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindTexture.xhtml>
40939	fn glBindTexture(&self, target: GLenum, texture: GLuint) -> Result<()>;
40940
40941	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteTextures.xhtml>
40942	fn glDeleteTextures(&self, n: GLsizei, textures: *const GLuint) -> Result<()>;
40943
40944	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenTextures.xhtml>
40945	fn glGenTextures(&self, n: GLsizei, textures: *mut GLuint) -> Result<()>;
40946
40947	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsTexture.xhtml>
40948	fn glIsTexture(&self, texture: GLuint) -> Result<GLboolean>;
40949}
40950
40951	/// Functions from OpenGL version 1.2 for the struct `GLCore` without dupliacted functions.
40952pub trait GL_1_2_g {
40953
40954	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawRangeElements.xhtml>
40955	fn glDrawRangeElements(&self, mode: GLenum, start: GLuint, end: GLuint, count: GLsizei, type_: GLenum, indices: *const c_void) -> Result<()>;
40956
40957	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexImage3D.xhtml>
40958	fn glTexImage3D(&self, target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
40959
40960	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexSubImage3D.xhtml>
40961	fn glTexSubImage3D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
40962
40963	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTexSubImage3D.xhtml>
40964	fn glCopyTexSubImage3D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
40965}
40966
40967	/// Functions from OpenGL version 1.3 for the struct `GLCore` without dupliacted functions.
40968pub trait GL_1_3_g {
40969
40970	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glActiveTexture.xhtml>
40971	fn glActiveTexture(&self, texture: GLenum) -> Result<()>;
40972
40973	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSampleCoverage.xhtml>
40974	fn glSampleCoverage(&self, value: GLfloat, invert: GLboolean) -> Result<()>;
40975
40976	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexImage3D.xhtml>
40977	fn glCompressedTexImage3D(&self, target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, imageSize: GLsizei, data: *const c_void) -> Result<()>;
40978
40979	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexImage2D.xhtml>
40980	fn glCompressedTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, border: GLint, imageSize: GLsizei, data: *const c_void) -> Result<()>;
40981
40982	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexImage1D.xhtml>
40983	fn glCompressedTexImage1D(&self, target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, border: GLint, imageSize: GLsizei, data: *const c_void) -> Result<()>;
40984
40985	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexSubImage3D.xhtml>
40986	fn glCompressedTexSubImage3D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()>;
40987
40988	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexSubImage2D.xhtml>
40989	fn glCompressedTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()>;
40990
40991	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexSubImage1D.xhtml>
40992	fn glCompressedTexSubImage1D(&self, target: GLenum, level: GLint, xoffset: GLint, width: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()>;
40993
40994	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetCompressedTexImage.xhtml>
40995	fn glGetCompressedTexImage(&self, target: GLenum, level: GLint, img: *mut c_void) -> Result<()>;
40996
40997	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClientActiveTexture.xhtml>
40998	fn glClientActiveTexture(&self, texture: GLenum) -> Result<()>;
40999
41000	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1d.xhtml>
41001	fn glMultiTexCoord1d(&self, target: GLenum, s: GLdouble) -> Result<()>;
41002
41003	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1dv.xhtml>
41004	fn glMultiTexCoord1dv(&self, target: GLenum, v: *const GLdouble) -> Result<()>;
41005
41006	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1f.xhtml>
41007	fn glMultiTexCoord1f(&self, target: GLenum, s: GLfloat) -> Result<()>;
41008
41009	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1fv.xhtml>
41010	fn glMultiTexCoord1fv(&self, target: GLenum, v: *const GLfloat) -> Result<()>;
41011
41012	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1i.xhtml>
41013	fn glMultiTexCoord1i(&self, target: GLenum, s: GLint) -> Result<()>;
41014
41015	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1iv.xhtml>
41016	fn glMultiTexCoord1iv(&self, target: GLenum, v: *const GLint) -> Result<()>;
41017
41018	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1s.xhtml>
41019	fn glMultiTexCoord1s(&self, target: GLenum, s: GLshort) -> Result<()>;
41020
41021	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1sv.xhtml>
41022	fn glMultiTexCoord1sv(&self, target: GLenum, v: *const GLshort) -> Result<()>;
41023
41024	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2d.xhtml>
41025	fn glMultiTexCoord2d(&self, target: GLenum, s: GLdouble, t: GLdouble) -> Result<()>;
41026
41027	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2dv.xhtml>
41028	fn glMultiTexCoord2dv(&self, target: GLenum, v: *const GLdouble) -> Result<()>;
41029
41030	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2f.xhtml>
41031	fn glMultiTexCoord2f(&self, target: GLenum, s: GLfloat, t: GLfloat) -> Result<()>;
41032
41033	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2fv.xhtml>
41034	fn glMultiTexCoord2fv(&self, target: GLenum, v: *const GLfloat) -> Result<()>;
41035
41036	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2i.xhtml>
41037	fn glMultiTexCoord2i(&self, target: GLenum, s: GLint, t: GLint) -> Result<()>;
41038
41039	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2iv.xhtml>
41040	fn glMultiTexCoord2iv(&self, target: GLenum, v: *const GLint) -> Result<()>;
41041
41042	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2s.xhtml>
41043	fn glMultiTexCoord2s(&self, target: GLenum, s: GLshort, t: GLshort) -> Result<()>;
41044
41045	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2sv.xhtml>
41046	fn glMultiTexCoord2sv(&self, target: GLenum, v: *const GLshort) -> Result<()>;
41047
41048	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3d.xhtml>
41049	fn glMultiTexCoord3d(&self, target: GLenum, s: GLdouble, t: GLdouble, r: GLdouble) -> Result<()>;
41050
41051	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3dv.xhtml>
41052	fn glMultiTexCoord3dv(&self, target: GLenum, v: *const GLdouble) -> Result<()>;
41053
41054	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3f.xhtml>
41055	fn glMultiTexCoord3f(&self, target: GLenum, s: GLfloat, t: GLfloat, r: GLfloat) -> Result<()>;
41056
41057	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3fv.xhtml>
41058	fn glMultiTexCoord3fv(&self, target: GLenum, v: *const GLfloat) -> Result<()>;
41059
41060	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3i.xhtml>
41061	fn glMultiTexCoord3i(&self, target: GLenum, s: GLint, t: GLint, r: GLint) -> Result<()>;
41062
41063	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3iv.xhtml>
41064	fn glMultiTexCoord3iv(&self, target: GLenum, v: *const GLint) -> Result<()>;
41065
41066	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3s.xhtml>
41067	fn glMultiTexCoord3s(&self, target: GLenum, s: GLshort, t: GLshort, r: GLshort) -> Result<()>;
41068
41069	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3sv.xhtml>
41070	fn glMultiTexCoord3sv(&self, target: GLenum, v: *const GLshort) -> Result<()>;
41071
41072	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4d.xhtml>
41073	fn glMultiTexCoord4d(&self, target: GLenum, s: GLdouble, t: GLdouble, r: GLdouble, q: GLdouble) -> Result<()>;
41074
41075	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4dv.xhtml>
41076	fn glMultiTexCoord4dv(&self, target: GLenum, v: *const GLdouble) -> Result<()>;
41077
41078	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4f.xhtml>
41079	fn glMultiTexCoord4f(&self, target: GLenum, s: GLfloat, t: GLfloat, r: GLfloat, q: GLfloat) -> Result<()>;
41080
41081	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4fv.xhtml>
41082	fn glMultiTexCoord4fv(&self, target: GLenum, v: *const GLfloat) -> Result<()>;
41083
41084	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4i.xhtml>
41085	fn glMultiTexCoord4i(&self, target: GLenum, s: GLint, t: GLint, r: GLint, q: GLint) -> Result<()>;
41086
41087	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4iv.xhtml>
41088	fn glMultiTexCoord4iv(&self, target: GLenum, v: *const GLint) -> Result<()>;
41089
41090	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4s.xhtml>
41091	fn glMultiTexCoord4s(&self, target: GLenum, s: GLshort, t: GLshort, r: GLshort, q: GLshort) -> Result<()>;
41092
41093	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4sv.xhtml>
41094	fn glMultiTexCoord4sv(&self, target: GLenum, v: *const GLshort) -> Result<()>;
41095
41096	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glLoadTransposeMatrixf.xhtml>
41097	fn glLoadTransposeMatrixf(&self, m: *const GLfloat) -> Result<()>;
41098
41099	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glLoadTransposeMatrixd.xhtml>
41100	fn glLoadTransposeMatrixd(&self, m: *const GLdouble) -> Result<()>;
41101
41102	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultTransposeMatrixf.xhtml>
41103	fn glMultTransposeMatrixf(&self, m: *const GLfloat) -> Result<()>;
41104
41105	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultTransposeMatrixd.xhtml>
41106	fn glMultTransposeMatrixd(&self, m: *const GLdouble) -> Result<()>;
41107}
41108
41109	/// Functions from OpenGL version 1.4 for the struct `GLCore` without dupliacted functions.
41110pub trait GL_1_4_g {
41111
41112	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendFuncSeparate.xhtml>
41113	fn glBlendFuncSeparate(&self, sfactorRGB: GLenum, dfactorRGB: GLenum, sfactorAlpha: GLenum, dfactorAlpha: GLenum) -> Result<()>;
41114
41115	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawArrays.xhtml>
41116	fn glMultiDrawArrays(&self, mode: GLenum, first: *const GLint, count: *const GLsizei, drawcount: GLsizei) -> Result<()>;
41117
41118	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawElements.xhtml>
41119	fn glMultiDrawElements(&self, mode: GLenum, count: *const GLsizei, type_: GLenum, indices: *const *const c_void, drawcount: GLsizei) -> Result<()>;
41120
41121	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPointParameterf.xhtml>
41122	fn glPointParameterf(&self, pname: GLenum, param: GLfloat) -> Result<()>;
41123
41124	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPointParameterfv.xhtml>
41125	fn glPointParameterfv(&self, pname: GLenum, params: *const GLfloat) -> Result<()>;
41126
41127	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPointParameteri.xhtml>
41128	fn glPointParameteri(&self, pname: GLenum, param: GLint) -> Result<()>;
41129
41130	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPointParameteriv.xhtml>
41131	fn glPointParameteriv(&self, pname: GLenum, params: *const GLint) -> Result<()>;
41132
41133	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFogCoordf.xhtml>
41134	fn glFogCoordf(&self, coord: GLfloat) -> Result<()>;
41135
41136	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFogCoordfv.xhtml>
41137	fn glFogCoordfv(&self, coord: *const GLfloat) -> Result<()>;
41138
41139	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFogCoordd.xhtml>
41140	fn glFogCoordd(&self, coord: GLdouble) -> Result<()>;
41141
41142	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFogCoorddv.xhtml>
41143	fn glFogCoorddv(&self, coord: *const GLdouble) -> Result<()>;
41144
41145	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFogCoordPointer.xhtml>
41146	fn glFogCoordPointer(&self, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()>;
41147
41148	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3b.xhtml>
41149	fn glSecondaryColor3b(&self, red: GLbyte, green: GLbyte, blue: GLbyte) -> Result<()>;
41150
41151	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3bv.xhtml>
41152	fn glSecondaryColor3bv(&self, v: *const GLbyte) -> Result<()>;
41153
41154	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3d.xhtml>
41155	fn glSecondaryColor3d(&self, red: GLdouble, green: GLdouble, blue: GLdouble) -> Result<()>;
41156
41157	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3dv.xhtml>
41158	fn glSecondaryColor3dv(&self, v: *const GLdouble) -> Result<()>;
41159
41160	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3f.xhtml>
41161	fn glSecondaryColor3f(&self, red: GLfloat, green: GLfloat, blue: GLfloat) -> Result<()>;
41162
41163	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3fv.xhtml>
41164	fn glSecondaryColor3fv(&self, v: *const GLfloat) -> Result<()>;
41165
41166	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3i.xhtml>
41167	fn glSecondaryColor3i(&self, red: GLint, green: GLint, blue: GLint) -> Result<()>;
41168
41169	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3iv.xhtml>
41170	fn glSecondaryColor3iv(&self, v: *const GLint) -> Result<()>;
41171
41172	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3s.xhtml>
41173	fn glSecondaryColor3s(&self, red: GLshort, green: GLshort, blue: GLshort) -> Result<()>;
41174
41175	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3sv.xhtml>
41176	fn glSecondaryColor3sv(&self, v: *const GLshort) -> Result<()>;
41177
41178	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3ub.xhtml>
41179	fn glSecondaryColor3ub(&self, red: GLubyte, green: GLubyte, blue: GLubyte) -> Result<()>;
41180
41181	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3ubv.xhtml>
41182	fn glSecondaryColor3ubv(&self, v: *const GLubyte) -> Result<()>;
41183
41184	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3ui.xhtml>
41185	fn glSecondaryColor3ui(&self, red: GLuint, green: GLuint, blue: GLuint) -> Result<()>;
41186
41187	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3uiv.xhtml>
41188	fn glSecondaryColor3uiv(&self, v: *const GLuint) -> Result<()>;
41189
41190	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3us.xhtml>
41191	fn glSecondaryColor3us(&self, red: GLushort, green: GLushort, blue: GLushort) -> Result<()>;
41192
41193	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3usv.xhtml>
41194	fn glSecondaryColor3usv(&self, v: *const GLushort) -> Result<()>;
41195
41196	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColorPointer.xhtml>
41197	fn glSecondaryColorPointer(&self, size: GLint, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()>;
41198
41199	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2d.xhtml>
41200	fn glWindowPos2d(&self, x: GLdouble, y: GLdouble) -> Result<()>;
41201
41202	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2dv.xhtml>
41203	fn glWindowPos2dv(&self, v: *const GLdouble) -> Result<()>;
41204
41205	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2f.xhtml>
41206	fn glWindowPos2f(&self, x: GLfloat, y: GLfloat) -> Result<()>;
41207
41208	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2fv.xhtml>
41209	fn glWindowPos2fv(&self, v: *const GLfloat) -> Result<()>;
41210
41211	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2i.xhtml>
41212	fn glWindowPos2i(&self, x: GLint, y: GLint) -> Result<()>;
41213
41214	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2iv.xhtml>
41215	fn glWindowPos2iv(&self, v: *const GLint) -> Result<()>;
41216
41217	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2s.xhtml>
41218	fn glWindowPos2s(&self, x: GLshort, y: GLshort) -> Result<()>;
41219
41220	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2sv.xhtml>
41221	fn glWindowPos2sv(&self, v: *const GLshort) -> Result<()>;
41222
41223	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3d.xhtml>
41224	fn glWindowPos3d(&self, x: GLdouble, y: GLdouble, z: GLdouble) -> Result<()>;
41225
41226	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3dv.xhtml>
41227	fn glWindowPos3dv(&self, v: *const GLdouble) -> Result<()>;
41228
41229	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3f.xhtml>
41230	fn glWindowPos3f(&self, x: GLfloat, y: GLfloat, z: GLfloat) -> Result<()>;
41231
41232	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3fv.xhtml>
41233	fn glWindowPos3fv(&self, v: *const GLfloat) -> Result<()>;
41234
41235	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3i.xhtml>
41236	fn glWindowPos3i(&self, x: GLint, y: GLint, z: GLint) -> Result<()>;
41237
41238	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3iv.xhtml>
41239	fn glWindowPos3iv(&self, v: *const GLint) -> Result<()>;
41240
41241	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3s.xhtml>
41242	fn glWindowPos3s(&self, x: GLshort, y: GLshort, z: GLshort) -> Result<()>;
41243
41244	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3sv.xhtml>
41245	fn glWindowPos3sv(&self, v: *const GLshort) -> Result<()>;
41246
41247	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendColor.xhtml>
41248	fn glBlendColor(&self, red: GLfloat, green: GLfloat, blue: GLfloat, alpha: GLfloat) -> Result<()>;
41249
41250	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendEquation.xhtml>
41251	fn glBlendEquation(&self, mode: GLenum) -> Result<()>;
41252}
41253
41254	/// Functions from OpenGL version 1.5 for the struct `GLCore` without dupliacted functions.
41255pub trait GL_1_5_g {
41256
41257	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenQueries.xhtml>
41258	fn glGenQueries(&self, n: GLsizei, ids: *mut GLuint) -> Result<()>;
41259
41260	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteQueries.xhtml>
41261	fn glDeleteQueries(&self, n: GLsizei, ids: *const GLuint) -> Result<()>;
41262
41263	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsQuery.xhtml>
41264	fn glIsQuery(&self, id: GLuint) -> Result<GLboolean>;
41265
41266	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBeginQuery.xhtml>
41267	fn glBeginQuery(&self, target: GLenum, id: GLuint) -> Result<()>;
41268
41269	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEndQuery.xhtml>
41270	fn glEndQuery(&self, target: GLenum) -> Result<()>;
41271
41272	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryiv.xhtml>
41273	fn glGetQueryiv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
41274
41275	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryObjectiv.xhtml>
41276	fn glGetQueryObjectiv(&self, id: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
41277
41278	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryObjectuiv.xhtml>
41279	fn glGetQueryObjectuiv(&self, id: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()>;
41280
41281	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindBuffer.xhtml>
41282	fn glBindBuffer(&self, target: GLenum, buffer: GLuint) -> Result<()>;
41283
41284	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteBuffers.xhtml>
41285	fn glDeleteBuffers(&self, n: GLsizei, buffers: *const GLuint) -> Result<()>;
41286
41287	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenBuffers.xhtml>
41288	fn glGenBuffers(&self, n: GLsizei, buffers: *mut GLuint) -> Result<()>;
41289
41290	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsBuffer.xhtml>
41291	fn glIsBuffer(&self, buffer: GLuint) -> Result<GLboolean>;
41292
41293	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBufferData.xhtml>
41294	fn glBufferData(&self, target: GLenum, size: GLsizeiptr, data: *const c_void, usage: GLenum) -> Result<()>;
41295
41296	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBufferSubData.xhtml>
41297	fn glBufferSubData(&self, target: GLenum, offset: GLintptr, size: GLsizeiptr, data: *const c_void) -> Result<()>;
41298
41299	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBufferSubData.xhtml>
41300	fn glGetBufferSubData(&self, target: GLenum, offset: GLintptr, size: GLsizeiptr, data: *mut c_void) -> Result<()>;
41301
41302	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMapBuffer.xhtml>
41303	fn glMapBuffer(&self, target: GLenum, access: GLenum) -> Result<*mut c_void>;
41304
41305	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUnmapBuffer.xhtml>
41306	fn glUnmapBuffer(&self, target: GLenum) -> Result<GLboolean>;
41307
41308	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBufferParameteriv.xhtml>
41309	fn glGetBufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
41310
41311	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBufferPointerv.xhtml>
41312	fn glGetBufferPointerv(&self, target: GLenum, pname: GLenum, params: *mut *mut c_void) -> Result<()>;
41313}
41314
41315	/// Functions from OpenGL version 2.0 for the struct `GLCore` without dupliacted functions.
41316pub trait GL_2_0_g {
41317	fn get_shading_language_version(&self) -> &'static str;
41318
41319	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendEquationSeparate.xhtml>
41320	fn glBlendEquationSeparate(&self, modeRGB: GLenum, modeAlpha: GLenum) -> Result<()>;
41321
41322	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawBuffers.xhtml>
41323	fn glDrawBuffers(&self, n: GLsizei, bufs: *const GLenum) -> Result<()>;
41324
41325	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilOpSeparate.xhtml>
41326	fn glStencilOpSeparate(&self, face: GLenum, sfail: GLenum, dpfail: GLenum, dppass: GLenum) -> Result<()>;
41327
41328	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilFuncSeparate.xhtml>
41329	fn glStencilFuncSeparate(&self, face: GLenum, func: GLenum, ref_: GLint, mask: GLuint) -> Result<()>;
41330
41331	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilMaskSeparate.xhtml>
41332	fn glStencilMaskSeparate(&self, face: GLenum, mask: GLuint) -> Result<()>;
41333
41334	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glAttachShader.xhtml>
41335	fn glAttachShader(&self, program: GLuint, shader: GLuint) -> Result<()>;
41336
41337	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindAttribLocation.xhtml>
41338	fn glBindAttribLocation(&self, program: GLuint, index: GLuint, name: *const GLchar) -> Result<()>;
41339
41340	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompileShader.xhtml>
41341	fn glCompileShader(&self, shader: GLuint) -> Result<()>;
41342
41343	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateProgram.xhtml>
41344	fn glCreateProgram(&self) -> Result<GLuint>;
41345
41346	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateShader.xhtml>
41347	fn glCreateShader(&self, type_: GLenum) -> Result<GLuint>;
41348
41349	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteProgram.xhtml>
41350	fn glDeleteProgram(&self, program: GLuint) -> Result<()>;
41351
41352	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteShader.xhtml>
41353	fn glDeleteShader(&self, shader: GLuint) -> Result<()>;
41354
41355	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDetachShader.xhtml>
41356	fn glDetachShader(&self, program: GLuint, shader: GLuint) -> Result<()>;
41357
41358	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDisableVertexAttribArray.xhtml>
41359	fn glDisableVertexAttribArray(&self, index: GLuint) -> Result<()>;
41360
41361	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEnableVertexAttribArray.xhtml>
41362	fn glEnableVertexAttribArray(&self, index: GLuint) -> Result<()>;
41363
41364	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveAttrib.xhtml>
41365	fn glGetActiveAttrib(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLint, type_: *mut GLenum, name: *mut GLchar) -> Result<()>;
41366
41367	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveUniform.xhtml>
41368	fn glGetActiveUniform(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLint, type_: *mut GLenum, name: *mut GLchar) -> Result<()>;
41369
41370	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetAttachedShaders.xhtml>
41371	fn glGetAttachedShaders(&self, program: GLuint, maxCount: GLsizei, count: *mut GLsizei, shaders: *mut GLuint) -> Result<()>;
41372
41373	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetAttribLocation.xhtml>
41374	fn glGetAttribLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint>;
41375
41376	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramiv.xhtml>
41377	fn glGetProgramiv(&self, program: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
41378
41379	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramInfoLog.xhtml>
41380	fn glGetProgramInfoLog(&self, program: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()>;
41381
41382	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetShaderiv.xhtml>
41383	fn glGetShaderiv(&self, shader: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
41384
41385	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetShaderInfoLog.xhtml>
41386	fn glGetShaderInfoLog(&self, shader: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()>;
41387
41388	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetShaderSource.xhtml>
41389	fn glGetShaderSource(&self, shader: GLuint, bufSize: GLsizei, length: *mut GLsizei, source: *mut GLchar) -> Result<()>;
41390
41391	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformLocation.xhtml>
41392	fn glGetUniformLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint>;
41393
41394	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformfv.xhtml>
41395	fn glGetUniformfv(&self, program: GLuint, location: GLint, params: *mut GLfloat) -> Result<()>;
41396
41397	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformiv.xhtml>
41398	fn glGetUniformiv(&self, program: GLuint, location: GLint, params: *mut GLint) -> Result<()>;
41399
41400	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribdv.xhtml>
41401	fn glGetVertexAttribdv(&self, index: GLuint, pname: GLenum, params: *mut GLdouble) -> Result<()>;
41402
41403	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribfv.xhtml>
41404	fn glGetVertexAttribfv(&self, index: GLuint, pname: GLenum, params: *mut GLfloat) -> Result<()>;
41405
41406	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribiv.xhtml>
41407	fn glGetVertexAttribiv(&self, index: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
41408
41409	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribPointerv.xhtml>
41410	fn glGetVertexAttribPointerv(&self, index: GLuint, pname: GLenum, pointer: *mut *mut c_void) -> Result<()>;
41411
41412	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsProgram.xhtml>
41413	fn glIsProgram(&self, program: GLuint) -> Result<GLboolean>;
41414
41415	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsShader.xhtml>
41416	fn glIsShader(&self, shader: GLuint) -> Result<GLboolean>;
41417
41418	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glLinkProgram.xhtml>
41419	fn glLinkProgram(&self, program: GLuint) -> Result<()>;
41420
41421	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glShaderSource.xhtml>
41422	fn glShaderSource(&self, shader: GLuint, count: GLsizei, string_: *const *const GLchar, length: *const GLint) -> Result<()>;
41423
41424	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUseProgram.xhtml>
41425	fn glUseProgram(&self, program: GLuint) -> Result<()>;
41426
41427	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1f.xhtml>
41428	fn glUniform1f(&self, location: GLint, v0: GLfloat) -> Result<()>;
41429
41430	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2f.xhtml>
41431	fn glUniform2f(&self, location: GLint, v0: GLfloat, v1: GLfloat) -> Result<()>;
41432
41433	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3f.xhtml>
41434	fn glUniform3f(&self, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat) -> Result<()>;
41435
41436	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4f.xhtml>
41437	fn glUniform4f(&self, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat, v3: GLfloat) -> Result<()>;
41438
41439	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1i.xhtml>
41440	fn glUniform1i(&self, location: GLint, v0: GLint) -> Result<()>;
41441
41442	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2i.xhtml>
41443	fn glUniform2i(&self, location: GLint, v0: GLint, v1: GLint) -> Result<()>;
41444
41445	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3i.xhtml>
41446	fn glUniform3i(&self, location: GLint, v0: GLint, v1: GLint, v2: GLint) -> Result<()>;
41447
41448	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4i.xhtml>
41449	fn glUniform4i(&self, location: GLint, v0: GLint, v1: GLint, v2: GLint, v3: GLint) -> Result<()>;
41450
41451	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1fv.xhtml>
41452	fn glUniform1fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
41453
41454	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2fv.xhtml>
41455	fn glUniform2fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
41456
41457	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3fv.xhtml>
41458	fn glUniform3fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
41459
41460	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4fv.xhtml>
41461	fn glUniform4fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
41462
41463	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1iv.xhtml>
41464	fn glUniform1iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
41465
41466	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2iv.xhtml>
41467	fn glUniform2iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
41468
41469	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3iv.xhtml>
41470	fn glUniform3iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
41471
41472	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4iv.xhtml>
41473	fn glUniform4iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
41474
41475	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2fv.xhtml>
41476	fn glUniformMatrix2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
41477
41478	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3fv.xhtml>
41479	fn glUniformMatrix3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
41480
41481	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4fv.xhtml>
41482	fn glUniformMatrix4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
41483
41484	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glValidateProgram.xhtml>
41485	fn glValidateProgram(&self, program: GLuint) -> Result<()>;
41486
41487	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1d.xhtml>
41488	fn glVertexAttrib1d(&self, index: GLuint, x: GLdouble) -> Result<()>;
41489
41490	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1dv.xhtml>
41491	fn glVertexAttrib1dv(&self, index: GLuint, v: *const GLdouble) -> Result<()>;
41492
41493	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1f.xhtml>
41494	fn glVertexAttrib1f(&self, index: GLuint, x: GLfloat) -> Result<()>;
41495
41496	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1fv.xhtml>
41497	fn glVertexAttrib1fv(&self, index: GLuint, v: *const GLfloat) -> Result<()>;
41498
41499	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1s.xhtml>
41500	fn glVertexAttrib1s(&self, index: GLuint, x: GLshort) -> Result<()>;
41501
41502	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1sv.xhtml>
41503	fn glVertexAttrib1sv(&self, index: GLuint, v: *const GLshort) -> Result<()>;
41504
41505	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2d.xhtml>
41506	fn glVertexAttrib2d(&self, index: GLuint, x: GLdouble, y: GLdouble) -> Result<()>;
41507
41508	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2dv.xhtml>
41509	fn glVertexAttrib2dv(&self, index: GLuint, v: *const GLdouble) -> Result<()>;
41510
41511	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2f.xhtml>
41512	fn glVertexAttrib2f(&self, index: GLuint, x: GLfloat, y: GLfloat) -> Result<()>;
41513
41514	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2fv.xhtml>
41515	fn glVertexAttrib2fv(&self, index: GLuint, v: *const GLfloat) -> Result<()>;
41516
41517	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2s.xhtml>
41518	fn glVertexAttrib2s(&self, index: GLuint, x: GLshort, y: GLshort) -> Result<()>;
41519
41520	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2sv.xhtml>
41521	fn glVertexAttrib2sv(&self, index: GLuint, v: *const GLshort) -> Result<()>;
41522
41523	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3d.xhtml>
41524	fn glVertexAttrib3d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble) -> Result<()>;
41525
41526	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3dv.xhtml>
41527	fn glVertexAttrib3dv(&self, index: GLuint, v: *const GLdouble) -> Result<()>;
41528
41529	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3f.xhtml>
41530	fn glVertexAttrib3f(&self, index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat) -> Result<()>;
41531
41532	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3fv.xhtml>
41533	fn glVertexAttrib3fv(&self, index: GLuint, v: *const GLfloat) -> Result<()>;
41534
41535	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3s.xhtml>
41536	fn glVertexAttrib3s(&self, index: GLuint, x: GLshort, y: GLshort, z: GLshort) -> Result<()>;
41537
41538	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3sv.xhtml>
41539	fn glVertexAttrib3sv(&self, index: GLuint, v: *const GLshort) -> Result<()>;
41540
41541	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nbv.xhtml>
41542	fn glVertexAttrib4Nbv(&self, index: GLuint, v: *const GLbyte) -> Result<()>;
41543
41544	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Niv.xhtml>
41545	fn glVertexAttrib4Niv(&self, index: GLuint, v: *const GLint) -> Result<()>;
41546
41547	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nsv.xhtml>
41548	fn glVertexAttrib4Nsv(&self, index: GLuint, v: *const GLshort) -> Result<()>;
41549
41550	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nub.xhtml>
41551	fn glVertexAttrib4Nub(&self, index: GLuint, x: GLubyte, y: GLubyte, z: GLubyte, w: GLubyte) -> Result<()>;
41552
41553	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nubv.xhtml>
41554	fn glVertexAttrib4Nubv(&self, index: GLuint, v: *const GLubyte) -> Result<()>;
41555
41556	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nuiv.xhtml>
41557	fn glVertexAttrib4Nuiv(&self, index: GLuint, v: *const GLuint) -> Result<()>;
41558
41559	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nusv.xhtml>
41560	fn glVertexAttrib4Nusv(&self, index: GLuint, v: *const GLushort) -> Result<()>;
41561
41562	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4bv.xhtml>
41563	fn glVertexAttrib4bv(&self, index: GLuint, v: *const GLbyte) -> Result<()>;
41564
41565	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4d.xhtml>
41566	fn glVertexAttrib4d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble, w: GLdouble) -> Result<()>;
41567
41568	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4dv.xhtml>
41569	fn glVertexAttrib4dv(&self, index: GLuint, v: *const GLdouble) -> Result<()>;
41570
41571	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4f.xhtml>
41572	fn glVertexAttrib4f(&self, index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat, w: GLfloat) -> Result<()>;
41573
41574	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4fv.xhtml>
41575	fn glVertexAttrib4fv(&self, index: GLuint, v: *const GLfloat) -> Result<()>;
41576
41577	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4iv.xhtml>
41578	fn glVertexAttrib4iv(&self, index: GLuint, v: *const GLint) -> Result<()>;
41579
41580	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4s.xhtml>
41581	fn glVertexAttrib4s(&self, index: GLuint, x: GLshort, y: GLshort, z: GLshort, w: GLshort) -> Result<()>;
41582
41583	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4sv.xhtml>
41584	fn glVertexAttrib4sv(&self, index: GLuint, v: *const GLshort) -> Result<()>;
41585
41586	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4ubv.xhtml>
41587	fn glVertexAttrib4ubv(&self, index: GLuint, v: *const GLubyte) -> Result<()>;
41588
41589	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4uiv.xhtml>
41590	fn glVertexAttrib4uiv(&self, index: GLuint, v: *const GLuint) -> Result<()>;
41591
41592	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4usv.xhtml>
41593	fn glVertexAttrib4usv(&self, index: GLuint, v: *const GLushort) -> Result<()>;
41594
41595	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribPointer.xhtml>
41596	fn glVertexAttribPointer(&self, index: GLuint, size: GLint, type_: GLenum, normalized: GLboolean, stride: GLsizei, pointer: *const c_void) -> Result<()>;
41597}
41598
41599	/// Functions from OpenGL version 2.1 for the struct `GLCore` without dupliacted functions.
41600pub trait GL_2_1_g {
41601
41602	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2x3fv.xhtml>
41603	fn glUniformMatrix2x3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
41604
41605	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3x2fv.xhtml>
41606	fn glUniformMatrix3x2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
41607
41608	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2x4fv.xhtml>
41609	fn glUniformMatrix2x4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
41610
41611	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4x2fv.xhtml>
41612	fn glUniformMatrix4x2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
41613
41614	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3x4fv.xhtml>
41615	fn glUniformMatrix3x4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
41616
41617	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4x3fv.xhtml>
41618	fn glUniformMatrix4x3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
41619}
41620
41621	/// Functions from OpenGL version 3.0 for the struct `GLCore` without dupliacted functions.
41622pub trait GL_3_0_g {
41623
41624	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorMaski.xhtml>
41625	fn glColorMaski(&self, index: GLuint, r: GLboolean, g: GLboolean, b: GLboolean, a: GLboolean) -> Result<()>;
41626
41627	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBooleani_v.xhtml>
41628	fn glGetBooleani_v(&self, target: GLenum, index: GLuint, data: *mut GLboolean) -> Result<()>;
41629
41630	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetIntegeri_v.xhtml>
41631	fn glGetIntegeri_v(&self, target: GLenum, index: GLuint, data: *mut GLint) -> Result<()>;
41632
41633	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEnablei.xhtml>
41634	fn glEnablei(&self, target: GLenum, index: GLuint) -> Result<()>;
41635
41636	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDisablei.xhtml>
41637	fn glDisablei(&self, target: GLenum, index: GLuint) -> Result<()>;
41638
41639	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsEnabledi.xhtml>
41640	fn glIsEnabledi(&self, target: GLenum, index: GLuint) -> Result<GLboolean>;
41641
41642	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBeginTransformFeedback.xhtml>
41643	fn glBeginTransformFeedback(&self, primitiveMode: GLenum) -> Result<()>;
41644
41645	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEndTransformFeedback.xhtml>
41646	fn glEndTransformFeedback(&self) -> Result<()>;
41647
41648	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindBufferRange.xhtml>
41649	fn glBindBufferRange(&self, target: GLenum, index: GLuint, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()>;
41650
41651	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindBufferBase.xhtml>
41652	fn glBindBufferBase(&self, target: GLenum, index: GLuint, buffer: GLuint) -> Result<()>;
41653
41654	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTransformFeedbackVaryings.xhtml>
41655	fn glTransformFeedbackVaryings(&self, program: GLuint, count: GLsizei, varyings: *const *const GLchar, bufferMode: GLenum) -> Result<()>;
41656
41657	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTransformFeedbackVarying.xhtml>
41658	fn glGetTransformFeedbackVarying(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLsizei, type_: *mut GLenum, name: *mut GLchar) -> Result<()>;
41659
41660	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClampColor.xhtml>
41661	fn glClampColor(&self, target: GLenum, clamp: GLenum) -> Result<()>;
41662
41663	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBeginConditionalRender.xhtml>
41664	fn glBeginConditionalRender(&self, id: GLuint, mode: GLenum) -> Result<()>;
41665
41666	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEndConditionalRender.xhtml>
41667	fn glEndConditionalRender(&self) -> Result<()>;
41668
41669	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribIPointer.xhtml>
41670	fn glVertexAttribIPointer(&self, index: GLuint, size: GLint, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()>;
41671
41672	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribIiv.xhtml>
41673	fn glGetVertexAttribIiv(&self, index: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
41674
41675	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribIuiv.xhtml>
41676	fn glGetVertexAttribIuiv(&self, index: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()>;
41677
41678	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI1i.xhtml>
41679	fn glVertexAttribI1i(&self, index: GLuint, x: GLint) -> Result<()>;
41680
41681	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI2i.xhtml>
41682	fn glVertexAttribI2i(&self, index: GLuint, x: GLint, y: GLint) -> Result<()>;
41683
41684	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI3i.xhtml>
41685	fn glVertexAttribI3i(&self, index: GLuint, x: GLint, y: GLint, z: GLint) -> Result<()>;
41686
41687	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4i.xhtml>
41688	fn glVertexAttribI4i(&self, index: GLuint, x: GLint, y: GLint, z: GLint, w: GLint) -> Result<()>;
41689
41690	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI1ui.xhtml>
41691	fn glVertexAttribI1ui(&self, index: GLuint, x: GLuint) -> Result<()>;
41692
41693	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI2ui.xhtml>
41694	fn glVertexAttribI2ui(&self, index: GLuint, x: GLuint, y: GLuint) -> Result<()>;
41695
41696	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI3ui.xhtml>
41697	fn glVertexAttribI3ui(&self, index: GLuint, x: GLuint, y: GLuint, z: GLuint) -> Result<()>;
41698
41699	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4ui.xhtml>
41700	fn glVertexAttribI4ui(&self, index: GLuint, x: GLuint, y: GLuint, z: GLuint, w: GLuint) -> Result<()>;
41701
41702	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI1iv.xhtml>
41703	fn glVertexAttribI1iv(&self, index: GLuint, v: *const GLint) -> Result<()>;
41704
41705	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI2iv.xhtml>
41706	fn glVertexAttribI2iv(&self, index: GLuint, v: *const GLint) -> Result<()>;
41707
41708	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI3iv.xhtml>
41709	fn glVertexAttribI3iv(&self, index: GLuint, v: *const GLint) -> Result<()>;
41710
41711	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4iv.xhtml>
41712	fn glVertexAttribI4iv(&self, index: GLuint, v: *const GLint) -> Result<()>;
41713
41714	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI1uiv.xhtml>
41715	fn glVertexAttribI1uiv(&self, index: GLuint, v: *const GLuint) -> Result<()>;
41716
41717	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI2uiv.xhtml>
41718	fn glVertexAttribI2uiv(&self, index: GLuint, v: *const GLuint) -> Result<()>;
41719
41720	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI3uiv.xhtml>
41721	fn glVertexAttribI3uiv(&self, index: GLuint, v: *const GLuint) -> Result<()>;
41722
41723	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4uiv.xhtml>
41724	fn glVertexAttribI4uiv(&self, index: GLuint, v: *const GLuint) -> Result<()>;
41725
41726	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4bv.xhtml>
41727	fn glVertexAttribI4bv(&self, index: GLuint, v: *const GLbyte) -> Result<()>;
41728
41729	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4sv.xhtml>
41730	fn glVertexAttribI4sv(&self, index: GLuint, v: *const GLshort) -> Result<()>;
41731
41732	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4ubv.xhtml>
41733	fn glVertexAttribI4ubv(&self, index: GLuint, v: *const GLubyte) -> Result<()>;
41734
41735	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4usv.xhtml>
41736	fn glVertexAttribI4usv(&self, index: GLuint, v: *const GLushort) -> Result<()>;
41737
41738	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformuiv.xhtml>
41739	fn glGetUniformuiv(&self, program: GLuint, location: GLint, params: *mut GLuint) -> Result<()>;
41740
41741	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindFragDataLocation.xhtml>
41742	fn glBindFragDataLocation(&self, program: GLuint, color: GLuint, name: *const GLchar) -> Result<()>;
41743
41744	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFragDataLocation.xhtml>
41745	fn glGetFragDataLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint>;
41746
41747	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1ui.xhtml>
41748	fn glUniform1ui(&self, location: GLint, v0: GLuint) -> Result<()>;
41749
41750	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2ui.xhtml>
41751	fn glUniform2ui(&self, location: GLint, v0: GLuint, v1: GLuint) -> Result<()>;
41752
41753	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3ui.xhtml>
41754	fn glUniform3ui(&self, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint) -> Result<()>;
41755
41756	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4ui.xhtml>
41757	fn glUniform4ui(&self, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint, v3: GLuint) -> Result<()>;
41758
41759	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1uiv.xhtml>
41760	fn glUniform1uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
41761
41762	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2uiv.xhtml>
41763	fn glUniform2uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
41764
41765	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3uiv.xhtml>
41766	fn glUniform3uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
41767
41768	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4uiv.xhtml>
41769	fn glUniform4uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
41770
41771	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameterIiv.xhtml>
41772	fn glTexParameterIiv(&self, target: GLenum, pname: GLenum, params: *const GLint) -> Result<()>;
41773
41774	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameterIuiv.xhtml>
41775	fn glTexParameterIuiv(&self, target: GLenum, pname: GLenum, params: *const GLuint) -> Result<()>;
41776
41777	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexParameterIiv.xhtml>
41778	fn glGetTexParameterIiv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
41779
41780	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexParameterIuiv.xhtml>
41781	fn glGetTexParameterIuiv(&self, target: GLenum, pname: GLenum, params: *mut GLuint) -> Result<()>;
41782
41783	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferiv.xhtml>
41784	fn glClearBufferiv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLint) -> Result<()>;
41785
41786	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferuiv.xhtml>
41787	fn glClearBufferuiv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLuint) -> Result<()>;
41788
41789	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferfv.xhtml>
41790	fn glClearBufferfv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLfloat) -> Result<()>;
41791
41792	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferfi.xhtml>
41793	fn glClearBufferfi(&self, buffer: GLenum, drawbuffer: GLint, depth: GLfloat, stencil: GLint) -> Result<()>;
41794
41795	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetStringi.xhtml>
41796	fn glGetStringi(&self, name: GLenum, index: GLuint) -> Result<&'static str>;
41797
41798	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsRenderbuffer.xhtml>
41799	fn glIsRenderbuffer(&self, renderbuffer: GLuint) -> Result<GLboolean>;
41800
41801	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindRenderbuffer.xhtml>
41802	fn glBindRenderbuffer(&self, target: GLenum, renderbuffer: GLuint) -> Result<()>;
41803
41804	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteRenderbuffers.xhtml>
41805	fn glDeleteRenderbuffers(&self, n: GLsizei, renderbuffers: *const GLuint) -> Result<()>;
41806
41807	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenRenderbuffers.xhtml>
41808	fn glGenRenderbuffers(&self, n: GLsizei, renderbuffers: *mut GLuint) -> Result<()>;
41809
41810	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glRenderbufferStorage.xhtml>
41811	fn glRenderbufferStorage(&self, target: GLenum, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()>;
41812
41813	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetRenderbufferParameteriv.xhtml>
41814	fn glGetRenderbufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
41815
41816	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsFramebuffer.xhtml>
41817	fn glIsFramebuffer(&self, framebuffer: GLuint) -> Result<GLboolean>;
41818
41819	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindFramebuffer.xhtml>
41820	fn glBindFramebuffer(&self, target: GLenum, framebuffer: GLuint) -> Result<()>;
41821
41822	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteFramebuffers.xhtml>
41823	fn glDeleteFramebuffers(&self, n: GLsizei, framebuffers: *const GLuint) -> Result<()>;
41824
41825	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenFramebuffers.xhtml>
41826	fn glGenFramebuffers(&self, n: GLsizei, framebuffers: *mut GLuint) -> Result<()>;
41827
41828	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCheckFramebufferStatus.xhtml>
41829	fn glCheckFramebufferStatus(&self, target: GLenum) -> Result<GLenum>;
41830
41831	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferTexture1D.xhtml>
41832	fn glFramebufferTexture1D(&self, target: GLenum, attachment: GLenum, textarget: GLenum, texture: GLuint, level: GLint) -> Result<()>;
41833
41834	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferTexture2D.xhtml>
41835	fn glFramebufferTexture2D(&self, target: GLenum, attachment: GLenum, textarget: GLenum, texture: GLuint, level: GLint) -> Result<()>;
41836
41837	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferTexture3D.xhtml>
41838	fn glFramebufferTexture3D(&self, target: GLenum, attachment: GLenum, textarget: GLenum, texture: GLuint, level: GLint, zoffset: GLint) -> Result<()>;
41839
41840	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferRenderbuffer.xhtml>
41841	fn glFramebufferRenderbuffer(&self, target: GLenum, attachment: GLenum, renderbuffertarget: GLenum, renderbuffer: GLuint) -> Result<()>;
41842
41843	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFramebufferAttachmentParameteriv.xhtml>
41844	fn glGetFramebufferAttachmentParameteriv(&self, target: GLenum, attachment: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
41845
41846	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenerateMipmap.xhtml>
41847	fn glGenerateMipmap(&self, target: GLenum) -> Result<()>;
41848
41849	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlitFramebuffer.xhtml>
41850	fn glBlitFramebuffer(&self, srcX0: GLint, srcY0: GLint, srcX1: GLint, srcY1: GLint, dstX0: GLint, dstY0: GLint, dstX1: GLint, dstY1: GLint, mask: GLbitfield, filter: GLenum) -> Result<()>;
41851
41852	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glRenderbufferStorageMultisample.xhtml>
41853	fn glRenderbufferStorageMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()>;
41854
41855	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferTextureLayer.xhtml>
41856	fn glFramebufferTextureLayer(&self, target: GLenum, attachment: GLenum, texture: GLuint, level: GLint, layer: GLint) -> Result<()>;
41857
41858	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMapBufferRange.xhtml>
41859	fn glMapBufferRange(&self, target: GLenum, offset: GLintptr, length: GLsizeiptr, access: GLbitfield) -> Result<*mut c_void>;
41860
41861	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFlushMappedBufferRange.xhtml>
41862	fn glFlushMappedBufferRange(&self, target: GLenum, offset: GLintptr, length: GLsizeiptr) -> Result<()>;
41863
41864	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindVertexArray.xhtml>
41865	fn glBindVertexArray(&self, array: GLuint) -> Result<()>;
41866
41867	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteVertexArrays.xhtml>
41868	fn glDeleteVertexArrays(&self, n: GLsizei, arrays: *const GLuint) -> Result<()>;
41869
41870	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenVertexArrays.xhtml>
41871	fn glGenVertexArrays(&self, n: GLsizei, arrays: *mut GLuint) -> Result<()>;
41872
41873	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsVertexArray.xhtml>
41874	fn glIsVertexArray(&self, array: GLuint) -> Result<GLboolean>;
41875}
41876
41877	/// Functions from OpenGL version 3.1 for the struct `GLCore` without dupliacted functions.
41878pub trait GL_3_1_g {
41879
41880	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawArraysInstanced.xhtml>
41881	fn glDrawArraysInstanced(&self, mode: GLenum, first: GLint, count: GLsizei, instancecount: GLsizei) -> Result<()>;
41882
41883	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsInstanced.xhtml>
41884	fn glDrawElementsInstanced(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei) -> Result<()>;
41885
41886	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexBuffer.xhtml>
41887	fn glTexBuffer(&self, target: GLenum, internalformat: GLenum, buffer: GLuint) -> Result<()>;
41888
41889	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPrimitiveRestartIndex.xhtml>
41890	fn glPrimitiveRestartIndex(&self, index: GLuint) -> Result<()>;
41891
41892	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyBufferSubData.xhtml>
41893	fn glCopyBufferSubData(&self, readTarget: GLenum, writeTarget: GLenum, readOffset: GLintptr, writeOffset: GLintptr, size: GLsizeiptr) -> Result<()>;
41894
41895	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformIndices.xhtml>
41896	fn glGetUniformIndices(&self, program: GLuint, uniformCount: GLsizei, uniformNames: *const *const GLchar, uniformIndices: *mut GLuint) -> Result<()>;
41897
41898	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveUniformsiv.xhtml>
41899	fn glGetActiveUniformsiv(&self, program: GLuint, uniformCount: GLsizei, uniformIndices: *const GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
41900
41901	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveUniformName.xhtml>
41902	fn glGetActiveUniformName(&self, program: GLuint, uniformIndex: GLuint, bufSize: GLsizei, length: *mut GLsizei, uniformName: *mut GLchar) -> Result<()>;
41903
41904	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformBlockIndex.xhtml>
41905	fn glGetUniformBlockIndex(&self, program: GLuint, uniformBlockName: *const GLchar) -> Result<GLuint>;
41906
41907	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveUniformBlockiv.xhtml>
41908	fn glGetActiveUniformBlockiv(&self, program: GLuint, uniformBlockIndex: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
41909
41910	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveUniformBlockName.xhtml>
41911	fn glGetActiveUniformBlockName(&self, program: GLuint, uniformBlockIndex: GLuint, bufSize: GLsizei, length: *mut GLsizei, uniformBlockName: *mut GLchar) -> Result<()>;
41912
41913	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformBlockBinding.xhtml>
41914	fn glUniformBlockBinding(&self, program: GLuint, uniformBlockIndex: GLuint, uniformBlockBinding: GLuint) -> Result<()>;
41915}
41916
41917	/// Functions from OpenGL version 3.2 for the struct `GLCore` without dupliacted functions.
41918pub trait GL_3_2_g {
41919
41920	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsBaseVertex.xhtml>
41921	fn glDrawElementsBaseVertex(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, basevertex: GLint) -> Result<()>;
41922
41923	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawRangeElementsBaseVertex.xhtml>
41924	fn glDrawRangeElementsBaseVertex(&self, mode: GLenum, start: GLuint, end: GLuint, count: GLsizei, type_: GLenum, indices: *const c_void, basevertex: GLint) -> Result<()>;
41925
41926	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsInstancedBaseVertex.xhtml>
41927	fn glDrawElementsInstancedBaseVertex(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei, basevertex: GLint) -> Result<()>;
41928
41929	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawElementsBaseVertex.xhtml>
41930	fn glMultiDrawElementsBaseVertex(&self, mode: GLenum, count: *const GLsizei, type_: GLenum, indices: *const *const c_void, drawcount: GLsizei, basevertex: *const GLint) -> Result<()>;
41931
41932	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProvokingVertex.xhtml>
41933	fn glProvokingVertex(&self, mode: GLenum) -> Result<()>;
41934
41935	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFenceSync.xhtml>
41936	fn glFenceSync(&self, condition: GLenum, flags: GLbitfield) -> Result<GLsync>;
41937
41938	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsSync.xhtml>
41939	fn glIsSync(&self, sync: GLsync) -> Result<GLboolean>;
41940
41941	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteSync.xhtml>
41942	fn glDeleteSync(&self, sync: GLsync) -> Result<()>;
41943
41944	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClientWaitSync.xhtml>
41945	fn glClientWaitSync(&self, sync: GLsync, flags: GLbitfield, timeout: GLuint64) -> Result<GLenum>;
41946
41947	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWaitSync.xhtml>
41948	fn glWaitSync(&self, sync: GLsync, flags: GLbitfield, timeout: GLuint64) -> Result<()>;
41949
41950	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetInteger64v.xhtml>
41951	fn glGetInteger64v(&self, pname: GLenum, data: *mut GLint64) -> Result<()>;
41952
41953	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSynciv.xhtml>
41954	fn glGetSynciv(&self, sync: GLsync, pname: GLenum, count: GLsizei, length: *mut GLsizei, values: *mut GLint) -> Result<()>;
41955
41956	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetInteger64i_v.xhtml>
41957	fn glGetInteger64i_v(&self, target: GLenum, index: GLuint, data: *mut GLint64) -> Result<()>;
41958
41959	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBufferParameteri64v.xhtml>
41960	fn glGetBufferParameteri64v(&self, target: GLenum, pname: GLenum, params: *mut GLint64) -> Result<()>;
41961
41962	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferTexture.xhtml>
41963	fn glFramebufferTexture(&self, target: GLenum, attachment: GLenum, texture: GLuint, level: GLint) -> Result<()>;
41964
41965	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexImage2DMultisample.xhtml>
41966	fn glTexImage2DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, fixedsamplelocations: GLboolean) -> Result<()>;
41967
41968	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexImage3DMultisample.xhtml>
41969	fn glTexImage3DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, fixedsamplelocations: GLboolean) -> Result<()>;
41970
41971	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetMultisamplefv.xhtml>
41972	fn glGetMultisamplefv(&self, pname: GLenum, index: GLuint, val: *mut GLfloat) -> Result<()>;
41973
41974	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSampleMaski.xhtml>
41975	fn glSampleMaski(&self, maskNumber: GLuint, mask: GLbitfield) -> Result<()>;
41976}
41977
41978	/// Functions from OpenGL version 3.3 for the struct `GLCore` without dupliacted functions.
41979pub trait GL_3_3_g {
41980
41981	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindFragDataLocationIndexed.xhtml>
41982	fn glBindFragDataLocationIndexed(&self, program: GLuint, colorNumber: GLuint, index: GLuint, name: *const GLchar) -> Result<()>;
41983
41984	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFragDataIndex.xhtml>
41985	fn glGetFragDataIndex(&self, program: GLuint, name: *const GLchar) -> Result<GLint>;
41986
41987	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenSamplers.xhtml>
41988	fn glGenSamplers(&self, count: GLsizei, samplers: *mut GLuint) -> Result<()>;
41989
41990	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteSamplers.xhtml>
41991	fn glDeleteSamplers(&self, count: GLsizei, samplers: *const GLuint) -> Result<()>;
41992
41993	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsSampler.xhtml>
41994	fn glIsSampler(&self, sampler: GLuint) -> Result<GLboolean>;
41995
41996	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindSampler.xhtml>
41997	fn glBindSampler(&self, unit: GLuint, sampler: GLuint) -> Result<()>;
41998
41999	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameteri.xhtml>
42000	fn glSamplerParameteri(&self, sampler: GLuint, pname: GLenum, param: GLint) -> Result<()>;
42001
42002	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameteriv.xhtml>
42003	fn glSamplerParameteriv(&self, sampler: GLuint, pname: GLenum, param: *const GLint) -> Result<()>;
42004
42005	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameterf.xhtml>
42006	fn glSamplerParameterf(&self, sampler: GLuint, pname: GLenum, param: GLfloat) -> Result<()>;
42007
42008	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameterfv.xhtml>
42009	fn glSamplerParameterfv(&self, sampler: GLuint, pname: GLenum, param: *const GLfloat) -> Result<()>;
42010
42011	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameterIiv.xhtml>
42012	fn glSamplerParameterIiv(&self, sampler: GLuint, pname: GLenum, param: *const GLint) -> Result<()>;
42013
42014	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameterIuiv.xhtml>
42015	fn glSamplerParameterIuiv(&self, sampler: GLuint, pname: GLenum, param: *const GLuint) -> Result<()>;
42016
42017	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSamplerParameteriv.xhtml>
42018	fn glGetSamplerParameteriv(&self, sampler: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
42019
42020	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSamplerParameterIiv.xhtml>
42021	fn glGetSamplerParameterIiv(&self, sampler: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
42022
42023	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSamplerParameterfv.xhtml>
42024	fn glGetSamplerParameterfv(&self, sampler: GLuint, pname: GLenum, params: *mut GLfloat) -> Result<()>;
42025
42026	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSamplerParameterIuiv.xhtml>
42027	fn glGetSamplerParameterIuiv(&self, sampler: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()>;
42028
42029	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glQueryCounter.xhtml>
42030	fn glQueryCounter(&self, id: GLuint, target: GLenum) -> Result<()>;
42031
42032	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryObjecti64v.xhtml>
42033	fn glGetQueryObjecti64v(&self, id: GLuint, pname: GLenum, params: *mut GLint64) -> Result<()>;
42034
42035	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryObjectui64v.xhtml>
42036	fn glGetQueryObjectui64v(&self, id: GLuint, pname: GLenum, params: *mut GLuint64) -> Result<()>;
42037
42038	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribDivisor.xhtml>
42039	fn glVertexAttribDivisor(&self, index: GLuint, divisor: GLuint) -> Result<()>;
42040
42041	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP1ui.xhtml>
42042	fn glVertexAttribP1ui(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint) -> Result<()>;
42043
42044	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP1uiv.xhtml>
42045	fn glVertexAttribP1uiv(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint) -> Result<()>;
42046
42047	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP2ui.xhtml>
42048	fn glVertexAttribP2ui(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint) -> Result<()>;
42049
42050	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP2uiv.xhtml>
42051	fn glVertexAttribP2uiv(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint) -> Result<()>;
42052
42053	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP3ui.xhtml>
42054	fn glVertexAttribP3ui(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint) -> Result<()>;
42055
42056	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP3uiv.xhtml>
42057	fn glVertexAttribP3uiv(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint) -> Result<()>;
42058
42059	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP4ui.xhtml>
42060	fn glVertexAttribP4ui(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint) -> Result<()>;
42061
42062	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP4uiv.xhtml>
42063	fn glVertexAttribP4uiv(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint) -> Result<()>;
42064
42065	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP2ui.xhtml>
42066	fn glVertexP2ui(&self, type_: GLenum, value: GLuint) -> Result<()>;
42067
42068	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP2uiv.xhtml>
42069	fn glVertexP2uiv(&self, type_: GLenum, value: *const GLuint) -> Result<()>;
42070
42071	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP3ui.xhtml>
42072	fn glVertexP3ui(&self, type_: GLenum, value: GLuint) -> Result<()>;
42073
42074	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP3uiv.xhtml>
42075	fn glVertexP3uiv(&self, type_: GLenum, value: *const GLuint) -> Result<()>;
42076
42077	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP4ui.xhtml>
42078	fn glVertexP4ui(&self, type_: GLenum, value: GLuint) -> Result<()>;
42079
42080	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP4uiv.xhtml>
42081	fn glVertexP4uiv(&self, type_: GLenum, value: *const GLuint) -> Result<()>;
42082
42083	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP1ui.xhtml>
42084	fn glTexCoordP1ui(&self, type_: GLenum, coords: GLuint) -> Result<()>;
42085
42086	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP1uiv.xhtml>
42087	fn glTexCoordP1uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()>;
42088
42089	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP2ui.xhtml>
42090	fn glTexCoordP2ui(&self, type_: GLenum, coords: GLuint) -> Result<()>;
42091
42092	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP2uiv.xhtml>
42093	fn glTexCoordP2uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()>;
42094
42095	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP3ui.xhtml>
42096	fn glTexCoordP3ui(&self, type_: GLenum, coords: GLuint) -> Result<()>;
42097
42098	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP3uiv.xhtml>
42099	fn glTexCoordP3uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()>;
42100
42101	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP4ui.xhtml>
42102	fn glTexCoordP4ui(&self, type_: GLenum, coords: GLuint) -> Result<()>;
42103
42104	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP4uiv.xhtml>
42105	fn glTexCoordP4uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()>;
42106
42107	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP1ui.xhtml>
42108	fn glMultiTexCoordP1ui(&self, texture: GLenum, type_: GLenum, coords: GLuint) -> Result<()>;
42109
42110	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP1uiv.xhtml>
42111	fn glMultiTexCoordP1uiv(&self, texture: GLenum, type_: GLenum, coords: *const GLuint) -> Result<()>;
42112
42113	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP2ui.xhtml>
42114	fn glMultiTexCoordP2ui(&self, texture: GLenum, type_: GLenum, coords: GLuint) -> Result<()>;
42115
42116	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP2uiv.xhtml>
42117	fn glMultiTexCoordP2uiv(&self, texture: GLenum, type_: GLenum, coords: *const GLuint) -> Result<()>;
42118
42119	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP3ui.xhtml>
42120	fn glMultiTexCoordP3ui(&self, texture: GLenum, type_: GLenum, coords: GLuint) -> Result<()>;
42121
42122	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP3uiv.xhtml>
42123	fn glMultiTexCoordP3uiv(&self, texture: GLenum, type_: GLenum, coords: *const GLuint) -> Result<()>;
42124
42125	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP4ui.xhtml>
42126	fn glMultiTexCoordP4ui(&self, texture: GLenum, type_: GLenum, coords: GLuint) -> Result<()>;
42127
42128	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP4uiv.xhtml>
42129	fn glMultiTexCoordP4uiv(&self, texture: GLenum, type_: GLenum, coords: *const GLuint) -> Result<()>;
42130
42131	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNormalP3ui.xhtml>
42132	fn glNormalP3ui(&self, type_: GLenum, coords: GLuint) -> Result<()>;
42133
42134	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNormalP3uiv.xhtml>
42135	fn glNormalP3uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()>;
42136
42137	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorP3ui.xhtml>
42138	fn glColorP3ui(&self, type_: GLenum, color: GLuint) -> Result<()>;
42139
42140	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorP3uiv.xhtml>
42141	fn glColorP3uiv(&self, type_: GLenum, color: *const GLuint) -> Result<()>;
42142
42143	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorP4ui.xhtml>
42144	fn glColorP4ui(&self, type_: GLenum, color: GLuint) -> Result<()>;
42145
42146	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorP4uiv.xhtml>
42147	fn glColorP4uiv(&self, type_: GLenum, color: *const GLuint) -> Result<()>;
42148
42149	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColorP3ui.xhtml>
42150	fn glSecondaryColorP3ui(&self, type_: GLenum, color: GLuint) -> Result<()>;
42151
42152	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColorP3uiv.xhtml>
42153	fn glSecondaryColorP3uiv(&self, type_: GLenum, color: *const GLuint) -> Result<()>;
42154}
42155
42156	/// Functions from OpenGL version 4.0 for the struct `GLCore` without dupliacted functions.
42157pub trait GL_4_0_g {
42158
42159	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMinSampleShading.xhtml>
42160	fn glMinSampleShading(&self, value: GLfloat) -> Result<()>;
42161
42162	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendEquationi.xhtml>
42163	fn glBlendEquationi(&self, buf: GLuint, mode: GLenum) -> Result<()>;
42164
42165	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendEquationSeparatei.xhtml>
42166	fn glBlendEquationSeparatei(&self, buf: GLuint, modeRGB: GLenum, modeAlpha: GLenum) -> Result<()>;
42167
42168	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendFunci.xhtml>
42169	fn glBlendFunci(&self, buf: GLuint, src: GLenum, dst: GLenum) -> Result<()>;
42170
42171	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendFuncSeparatei.xhtml>
42172	fn glBlendFuncSeparatei(&self, buf: GLuint, srcRGB: GLenum, dstRGB: GLenum, srcAlpha: GLenum, dstAlpha: GLenum) -> Result<()>;
42173
42174	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawArraysIndirect.xhtml>
42175	fn glDrawArraysIndirect(&self, mode: GLenum, indirect: *const c_void) -> Result<()>;
42176
42177	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsIndirect.xhtml>
42178	fn glDrawElementsIndirect(&self, mode: GLenum, type_: GLenum, indirect: *const c_void) -> Result<()>;
42179
42180	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1d.xhtml>
42181	fn glUniform1d(&self, location: GLint, x: GLdouble) -> Result<()>;
42182
42183	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2d.xhtml>
42184	fn glUniform2d(&self, location: GLint, x: GLdouble, y: GLdouble) -> Result<()>;
42185
42186	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3d.xhtml>
42187	fn glUniform3d(&self, location: GLint, x: GLdouble, y: GLdouble, z: GLdouble) -> Result<()>;
42188
42189	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4d.xhtml>
42190	fn glUniform4d(&self, location: GLint, x: GLdouble, y: GLdouble, z: GLdouble, w: GLdouble) -> Result<()>;
42191
42192	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1dv.xhtml>
42193	fn glUniform1dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()>;
42194
42195	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2dv.xhtml>
42196	fn glUniform2dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()>;
42197
42198	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3dv.xhtml>
42199	fn glUniform3dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()>;
42200
42201	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4dv.xhtml>
42202	fn glUniform4dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()>;
42203
42204	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2dv.xhtml>
42205	fn glUniformMatrix2dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
42206
42207	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3dv.xhtml>
42208	fn glUniformMatrix3dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
42209
42210	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4dv.xhtml>
42211	fn glUniformMatrix4dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
42212
42213	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2x3dv.xhtml>
42214	fn glUniformMatrix2x3dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
42215
42216	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2x4dv.xhtml>
42217	fn glUniformMatrix2x4dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
42218
42219	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3x2dv.xhtml>
42220	fn glUniformMatrix3x2dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
42221
42222	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3x4dv.xhtml>
42223	fn glUniformMatrix3x4dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
42224
42225	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4x2dv.xhtml>
42226	fn glUniformMatrix4x2dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
42227
42228	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4x3dv.xhtml>
42229	fn glUniformMatrix4x3dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
42230
42231	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformdv.xhtml>
42232	fn glGetUniformdv(&self, program: GLuint, location: GLint, params: *mut GLdouble) -> Result<()>;
42233
42234	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSubroutineUniformLocation.xhtml>
42235	fn glGetSubroutineUniformLocation(&self, program: GLuint, shadertype: GLenum, name: *const GLchar) -> Result<GLint>;
42236
42237	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSubroutineIndex.xhtml>
42238	fn glGetSubroutineIndex(&self, program: GLuint, shadertype: GLenum, name: *const GLchar) -> Result<GLuint>;
42239
42240	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveSubroutineUniformiv.xhtml>
42241	fn glGetActiveSubroutineUniformiv(&self, program: GLuint, shadertype: GLenum, index: GLuint, pname: GLenum, values: *mut GLint) -> Result<()>;
42242
42243	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveSubroutineUniformName.xhtml>
42244	fn glGetActiveSubroutineUniformName(&self, program: GLuint, shadertype: GLenum, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, name: *mut GLchar) -> Result<()>;
42245
42246	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveSubroutineName.xhtml>
42247	fn glGetActiveSubroutineName(&self, program: GLuint, shadertype: GLenum, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, name: *mut GLchar) -> Result<()>;
42248
42249	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformSubroutinesuiv.xhtml>
42250	fn glUniformSubroutinesuiv(&self, shadertype: GLenum, count: GLsizei, indices: *const GLuint) -> Result<()>;
42251
42252	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformSubroutineuiv.xhtml>
42253	fn glGetUniformSubroutineuiv(&self, shadertype: GLenum, location: GLint, params: *mut GLuint) -> Result<()>;
42254
42255	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramStageiv.xhtml>
42256	fn glGetProgramStageiv(&self, program: GLuint, shadertype: GLenum, pname: GLenum, values: *mut GLint) -> Result<()>;
42257
42258	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPatchParameteri.xhtml>
42259	fn glPatchParameteri(&self, pname: GLenum, value: GLint) -> Result<()>;
42260
42261	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPatchParameterfv.xhtml>
42262	fn glPatchParameterfv(&self, pname: GLenum, values: *const GLfloat) -> Result<()>;
42263
42264	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindTransformFeedback.xhtml>
42265	fn glBindTransformFeedback(&self, target: GLenum, id: GLuint) -> Result<()>;
42266
42267	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteTransformFeedbacks.xhtml>
42268	fn glDeleteTransformFeedbacks(&self, n: GLsizei, ids: *const GLuint) -> Result<()>;
42269
42270	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenTransformFeedbacks.xhtml>
42271	fn glGenTransformFeedbacks(&self, n: GLsizei, ids: *mut GLuint) -> Result<()>;
42272
42273	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsTransformFeedback.xhtml>
42274	fn glIsTransformFeedback(&self, id: GLuint) -> Result<GLboolean>;
42275
42276	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPauseTransformFeedback.xhtml>
42277	fn glPauseTransformFeedback(&self) -> Result<()>;
42278
42279	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glResumeTransformFeedback.xhtml>
42280	fn glResumeTransformFeedback(&self) -> Result<()>;
42281
42282	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawTransformFeedback.xhtml>
42283	fn glDrawTransformFeedback(&self, mode: GLenum, id: GLuint) -> Result<()>;
42284
42285	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawTransformFeedbackStream.xhtml>
42286	fn glDrawTransformFeedbackStream(&self, mode: GLenum, id: GLuint, stream: GLuint) -> Result<()>;
42287
42288	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBeginQueryIndexed.xhtml>
42289	fn glBeginQueryIndexed(&self, target: GLenum, index: GLuint, id: GLuint) -> Result<()>;
42290
42291	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEndQueryIndexed.xhtml>
42292	fn glEndQueryIndexed(&self, target: GLenum, index: GLuint) -> Result<()>;
42293
42294	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryIndexediv.xhtml>
42295	fn glGetQueryIndexediv(&self, target: GLenum, index: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
42296}
42297
42298	/// Functions from OpenGL version 4.1 for the struct `GLCore` without dupliacted functions.
42299pub trait GL_4_1_g {
42300
42301	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glReleaseShaderCompiler.xhtml>
42302	fn glReleaseShaderCompiler(&self) -> Result<()>;
42303
42304	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glShaderBinary.xhtml>
42305	fn glShaderBinary(&self, count: GLsizei, shaders: *const GLuint, binaryFormat: GLenum, binary: *const c_void, length: GLsizei) -> Result<()>;
42306
42307	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetShaderPrecisionFormat.xhtml>
42308	fn glGetShaderPrecisionFormat(&self, shadertype: GLenum, precisiontype: GLenum, range: *mut GLint, precision: *mut GLint) -> Result<()>;
42309
42310	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthRangef.xhtml>
42311	fn glDepthRangef(&self, n: GLfloat, f: GLfloat) -> Result<()>;
42312
42313	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearDepthf.xhtml>
42314	fn glClearDepthf(&self, d: GLfloat) -> Result<()>;
42315
42316	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramBinary.xhtml>
42317	fn glGetProgramBinary(&self, program: GLuint, bufSize: GLsizei, length: *mut GLsizei, binaryFormat: *mut GLenum, binary: *mut c_void) -> Result<()>;
42318
42319	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramBinary.xhtml>
42320	fn glProgramBinary(&self, program: GLuint, binaryFormat: GLenum, binary: *const c_void, length: GLsizei) -> Result<()>;
42321
42322	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramParameteri.xhtml>
42323	fn glProgramParameteri(&self, program: GLuint, pname: GLenum, value: GLint) -> Result<()>;
42324
42325	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUseProgramStages.xhtml>
42326	fn glUseProgramStages(&self, pipeline: GLuint, stages: GLbitfield, program: GLuint) -> Result<()>;
42327
42328	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glActiveShaderProgram.xhtml>
42329	fn glActiveShaderProgram(&self, pipeline: GLuint, program: GLuint) -> Result<()>;
42330
42331	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateShaderProgramv.xhtml>
42332	fn glCreateShaderProgramv(&self, type_: GLenum, count: GLsizei, strings: *const *const GLchar) -> Result<GLuint>;
42333
42334	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindProgramPipeline.xhtml>
42335	fn glBindProgramPipeline(&self, pipeline: GLuint) -> Result<()>;
42336
42337	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteProgramPipelines.xhtml>
42338	fn glDeleteProgramPipelines(&self, n: GLsizei, pipelines: *const GLuint) -> Result<()>;
42339
42340	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenProgramPipelines.xhtml>
42341	fn glGenProgramPipelines(&self, n: GLsizei, pipelines: *mut GLuint) -> Result<()>;
42342
42343	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsProgramPipeline.xhtml>
42344	fn glIsProgramPipeline(&self, pipeline: GLuint) -> Result<GLboolean>;
42345
42346	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramPipelineiv.xhtml>
42347	fn glGetProgramPipelineiv(&self, pipeline: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
42348
42349	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1i.xhtml>
42350	fn glProgramUniform1i(&self, program: GLuint, location: GLint, v0: GLint) -> Result<()>;
42351
42352	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1iv.xhtml>
42353	fn glProgramUniform1iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
42354
42355	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1f.xhtml>
42356	fn glProgramUniform1f(&self, program: GLuint, location: GLint, v0: GLfloat) -> Result<()>;
42357
42358	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1fv.xhtml>
42359	fn glProgramUniform1fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
42360
42361	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1d.xhtml>
42362	fn glProgramUniform1d(&self, program: GLuint, location: GLint, v0: GLdouble) -> Result<()>;
42363
42364	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1dv.xhtml>
42365	fn glProgramUniform1dv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()>;
42366
42367	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1ui.xhtml>
42368	fn glProgramUniform1ui(&self, program: GLuint, location: GLint, v0: GLuint) -> Result<()>;
42369
42370	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1uiv.xhtml>
42371	fn glProgramUniform1uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
42372
42373	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2i.xhtml>
42374	fn glProgramUniform2i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint) -> Result<()>;
42375
42376	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2iv.xhtml>
42377	fn glProgramUniform2iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
42378
42379	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2f.xhtml>
42380	fn glProgramUniform2f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat) -> Result<()>;
42381
42382	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2fv.xhtml>
42383	fn glProgramUniform2fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
42384
42385	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2d.xhtml>
42386	fn glProgramUniform2d(&self, program: GLuint, location: GLint, v0: GLdouble, v1: GLdouble) -> Result<()>;
42387
42388	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2dv.xhtml>
42389	fn glProgramUniform2dv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()>;
42390
42391	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2ui.xhtml>
42392	fn glProgramUniform2ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint) -> Result<()>;
42393
42394	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2uiv.xhtml>
42395	fn glProgramUniform2uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
42396
42397	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3i.xhtml>
42398	fn glProgramUniform3i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint, v2: GLint) -> Result<()>;
42399
42400	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3iv.xhtml>
42401	fn glProgramUniform3iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
42402
42403	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3f.xhtml>
42404	fn glProgramUniform3f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat) -> Result<()>;
42405
42406	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3fv.xhtml>
42407	fn glProgramUniform3fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
42408
42409	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3d.xhtml>
42410	fn glProgramUniform3d(&self, program: GLuint, location: GLint, v0: GLdouble, v1: GLdouble, v2: GLdouble) -> Result<()>;
42411
42412	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3dv.xhtml>
42413	fn glProgramUniform3dv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()>;
42414
42415	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3ui.xhtml>
42416	fn glProgramUniform3ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint) -> Result<()>;
42417
42418	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3uiv.xhtml>
42419	fn glProgramUniform3uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
42420
42421	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4i.xhtml>
42422	fn glProgramUniform4i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint, v2: GLint, v3: GLint) -> Result<()>;
42423
42424	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4iv.xhtml>
42425	fn glProgramUniform4iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
42426
42427	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4f.xhtml>
42428	fn glProgramUniform4f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat, v3: GLfloat) -> Result<()>;
42429
42430	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4fv.xhtml>
42431	fn glProgramUniform4fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
42432
42433	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4d.xhtml>
42434	fn glProgramUniform4d(&self, program: GLuint, location: GLint, v0: GLdouble, v1: GLdouble, v2: GLdouble, v3: GLdouble) -> Result<()>;
42435
42436	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4dv.xhtml>
42437	fn glProgramUniform4dv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()>;
42438
42439	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4ui.xhtml>
42440	fn glProgramUniform4ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint, v3: GLuint) -> Result<()>;
42441
42442	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4uiv.xhtml>
42443	fn glProgramUniform4uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
42444
42445	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2fv.xhtml>
42446	fn glProgramUniformMatrix2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
42447
42448	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3fv.xhtml>
42449	fn glProgramUniformMatrix3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
42450
42451	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4fv.xhtml>
42452	fn glProgramUniformMatrix4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
42453
42454	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2dv.xhtml>
42455	fn glProgramUniformMatrix2dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
42456
42457	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3dv.xhtml>
42458	fn glProgramUniformMatrix3dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
42459
42460	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4dv.xhtml>
42461	fn glProgramUniformMatrix4dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
42462
42463	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2x3fv.xhtml>
42464	fn glProgramUniformMatrix2x3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
42465
42466	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3x2fv.xhtml>
42467	fn glProgramUniformMatrix3x2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
42468
42469	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2x4fv.xhtml>
42470	fn glProgramUniformMatrix2x4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
42471
42472	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4x2fv.xhtml>
42473	fn glProgramUniformMatrix4x2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
42474
42475	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3x4fv.xhtml>
42476	fn glProgramUniformMatrix3x4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
42477
42478	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4x3fv.xhtml>
42479	fn glProgramUniformMatrix4x3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
42480
42481	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2x3dv.xhtml>
42482	fn glProgramUniformMatrix2x3dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
42483
42484	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3x2dv.xhtml>
42485	fn glProgramUniformMatrix3x2dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
42486
42487	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2x4dv.xhtml>
42488	fn glProgramUniformMatrix2x4dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
42489
42490	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4x2dv.xhtml>
42491	fn glProgramUniformMatrix4x2dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
42492
42493	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3x4dv.xhtml>
42494	fn glProgramUniformMatrix3x4dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
42495
42496	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4x3dv.xhtml>
42497	fn glProgramUniformMatrix4x3dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
42498
42499	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glValidateProgramPipeline.xhtml>
42500	fn glValidateProgramPipeline(&self, pipeline: GLuint) -> Result<()>;
42501
42502	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramPipelineInfoLog.xhtml>
42503	fn glGetProgramPipelineInfoLog(&self, pipeline: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()>;
42504
42505	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL1d.xhtml>
42506	fn glVertexAttribL1d(&self, index: GLuint, x: GLdouble) -> Result<()>;
42507
42508	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL2d.xhtml>
42509	fn glVertexAttribL2d(&self, index: GLuint, x: GLdouble, y: GLdouble) -> Result<()>;
42510
42511	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL3d.xhtml>
42512	fn glVertexAttribL3d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble) -> Result<()>;
42513
42514	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL4d.xhtml>
42515	fn glVertexAttribL4d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble, w: GLdouble) -> Result<()>;
42516
42517	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL1dv.xhtml>
42518	fn glVertexAttribL1dv(&self, index: GLuint, v: *const GLdouble) -> Result<()>;
42519
42520	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL2dv.xhtml>
42521	fn glVertexAttribL2dv(&self, index: GLuint, v: *const GLdouble) -> Result<()>;
42522
42523	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL3dv.xhtml>
42524	fn glVertexAttribL3dv(&self, index: GLuint, v: *const GLdouble) -> Result<()>;
42525
42526	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL4dv.xhtml>
42527	fn glVertexAttribL4dv(&self, index: GLuint, v: *const GLdouble) -> Result<()>;
42528
42529	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribLPointer.xhtml>
42530	fn glVertexAttribLPointer(&self, index: GLuint, size: GLint, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()>;
42531
42532	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribLdv.xhtml>
42533	fn glGetVertexAttribLdv(&self, index: GLuint, pname: GLenum, params: *mut GLdouble) -> Result<()>;
42534
42535	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glViewportArrayv.xhtml>
42536	fn glViewportArrayv(&self, first: GLuint, count: GLsizei, v: *const GLfloat) -> Result<()>;
42537
42538	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glViewportIndexedf.xhtml>
42539	fn glViewportIndexedf(&self, index: GLuint, x: GLfloat, y: GLfloat, w: GLfloat, h: GLfloat) -> Result<()>;
42540
42541	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glViewportIndexedfv.xhtml>
42542	fn glViewportIndexedfv(&self, index: GLuint, v: *const GLfloat) -> Result<()>;
42543
42544	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glScissorArrayv.xhtml>
42545	fn glScissorArrayv(&self, first: GLuint, count: GLsizei, v: *const GLint) -> Result<()>;
42546
42547	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glScissorIndexed.xhtml>
42548	fn glScissorIndexed(&self, index: GLuint, left: GLint, bottom: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
42549
42550	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glScissorIndexedv.xhtml>
42551	fn glScissorIndexedv(&self, index: GLuint, v: *const GLint) -> Result<()>;
42552
42553	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthRangeArrayv.xhtml>
42554	fn glDepthRangeArrayv(&self, first: GLuint, count: GLsizei, v: *const GLdouble) -> Result<()>;
42555
42556	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthRangeIndexed.xhtml>
42557	fn glDepthRangeIndexed(&self, index: GLuint, n: GLdouble, f: GLdouble) -> Result<()>;
42558
42559	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFloati_v.xhtml>
42560	fn glGetFloati_v(&self, target: GLenum, index: GLuint, data: *mut GLfloat) -> Result<()>;
42561
42562	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetDoublei_v.xhtml>
42563	fn glGetDoublei_v(&self, target: GLenum, index: GLuint, data: *mut GLdouble) -> Result<()>;
42564}
42565
42566	/// Functions from OpenGL version 4.2 for the struct `GLCore` without dupliacted functions.
42567pub trait GL_4_2_g {
42568
42569	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawArraysInstancedBaseInstance.xhtml>
42570	fn glDrawArraysInstancedBaseInstance(&self, mode: GLenum, first: GLint, count: GLsizei, instancecount: GLsizei, baseinstance: GLuint) -> Result<()>;
42571
42572	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsInstancedBaseInstance.xhtml>
42573	fn glDrawElementsInstancedBaseInstance(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei, baseinstance: GLuint) -> Result<()>;
42574
42575	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsInstancedBaseVertexBaseInstance.xhtml>
42576	fn glDrawElementsInstancedBaseVertexBaseInstance(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei, basevertex: GLint, baseinstance: GLuint) -> Result<()>;
42577
42578	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetInternalformativ.xhtml>
42579	fn glGetInternalformativ(&self, target: GLenum, internalformat: GLenum, pname: GLenum, count: GLsizei, params: *mut GLint) -> Result<()>;
42580
42581	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveAtomicCounterBufferiv.xhtml>
42582	fn glGetActiveAtomicCounterBufferiv(&self, program: GLuint, bufferIndex: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
42583
42584	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindImageTexture.xhtml>
42585	fn glBindImageTexture(&self, unit: GLuint, texture: GLuint, level: GLint, layered: GLboolean, layer: GLint, access: GLenum, format: GLenum) -> Result<()>;
42586
42587	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMemoryBarrier.xhtml>
42588	fn glMemoryBarrier(&self, barriers: GLbitfield) -> Result<()>;
42589
42590	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexStorage1D.xhtml>
42591	fn glTexStorage1D(&self, target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei) -> Result<()>;
42592
42593	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexStorage2D.xhtml>
42594	fn glTexStorage2D(&self, target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()>;
42595
42596	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexStorage3D.xhtml>
42597	fn glTexStorage3D(&self, target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei) -> Result<()>;
42598
42599	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawTransformFeedbackInstanced.xhtml>
42600	fn glDrawTransformFeedbackInstanced(&self, mode: GLenum, id: GLuint, instancecount: GLsizei) -> Result<()>;
42601
42602	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawTransformFeedbackStreamInstanced.xhtml>
42603	fn glDrawTransformFeedbackStreamInstanced(&self, mode: GLenum, id: GLuint, stream: GLuint, instancecount: GLsizei) -> Result<()>;
42604}
42605
42606	/// Functions from OpenGL version 4.3 for the struct `GLCore` without dupliacted functions.
42607pub trait GL_4_3_g {
42608
42609	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferData.xhtml>
42610	fn glClearBufferData(&self, target: GLenum, internalformat: GLenum, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()>;
42611
42612	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferSubData.xhtml>
42613	fn glClearBufferSubData(&self, target: GLenum, internalformat: GLenum, offset: GLintptr, size: GLsizeiptr, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()>;
42614
42615	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDispatchCompute.xhtml>
42616	fn glDispatchCompute(&self, num_groups_x: GLuint, num_groups_y: GLuint, num_groups_z: GLuint) -> Result<()>;
42617
42618	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDispatchComputeIndirect.xhtml>
42619	fn glDispatchComputeIndirect(&self, indirect: GLintptr) -> Result<()>;
42620
42621	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyImageSubData.xhtml>
42622	fn glCopyImageSubData(&self, srcName: GLuint, srcTarget: GLenum, srcLevel: GLint, srcX: GLint, srcY: GLint, srcZ: GLint, dstName: GLuint, dstTarget: GLenum, dstLevel: GLint, dstX: GLint, dstY: GLint, dstZ: GLint, srcWidth: GLsizei, srcHeight: GLsizei, srcDepth: GLsizei) -> Result<()>;
42623
42624	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferParameteri.xhtml>
42625	fn glFramebufferParameteri(&self, target: GLenum, pname: GLenum, param: GLint) -> Result<()>;
42626
42627	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFramebufferParameteriv.xhtml>
42628	fn glGetFramebufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
42629
42630	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetInternalformati64v.xhtml>
42631	fn glGetInternalformati64v(&self, target: GLenum, internalformat: GLenum, pname: GLenum, count: GLsizei, params: *mut GLint64) -> Result<()>;
42632
42633	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateTexSubImage.xhtml>
42634	fn glInvalidateTexSubImage(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei) -> Result<()>;
42635
42636	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateTexImage.xhtml>
42637	fn glInvalidateTexImage(&self, texture: GLuint, level: GLint) -> Result<()>;
42638
42639	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateBufferSubData.xhtml>
42640	fn glInvalidateBufferSubData(&self, buffer: GLuint, offset: GLintptr, length: GLsizeiptr) -> Result<()>;
42641
42642	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateBufferData.xhtml>
42643	fn glInvalidateBufferData(&self, buffer: GLuint) -> Result<()>;
42644
42645	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateFramebuffer.xhtml>
42646	fn glInvalidateFramebuffer(&self, target: GLenum, numAttachments: GLsizei, attachments: *const GLenum) -> Result<()>;
42647
42648	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateSubFramebuffer.xhtml>
42649	fn glInvalidateSubFramebuffer(&self, target: GLenum, numAttachments: GLsizei, attachments: *const GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
42650
42651	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawArraysIndirect.xhtml>
42652	fn glMultiDrawArraysIndirect(&self, mode: GLenum, indirect: *const c_void, drawcount: GLsizei, stride: GLsizei) -> Result<()>;
42653
42654	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawElementsIndirect.xhtml>
42655	fn glMultiDrawElementsIndirect(&self, mode: GLenum, type_: GLenum, indirect: *const c_void, drawcount: GLsizei, stride: GLsizei) -> Result<()>;
42656
42657	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramInterfaceiv.xhtml>
42658	fn glGetProgramInterfaceiv(&self, program: GLuint, programInterface: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
42659
42660	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramResourceIndex.xhtml>
42661	fn glGetProgramResourceIndex(&self, program: GLuint, programInterface: GLenum, name: *const GLchar) -> Result<GLuint>;
42662
42663	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramResourceName.xhtml>
42664	fn glGetProgramResourceName(&self, program: GLuint, programInterface: GLenum, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, name: *mut GLchar) -> Result<()>;
42665
42666	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramResourceiv.xhtml>
42667	fn glGetProgramResourceiv(&self, program: GLuint, programInterface: GLenum, index: GLuint, propCount: GLsizei, props: *const GLenum, count: GLsizei, length: *mut GLsizei, params: *mut GLint) -> Result<()>;
42668
42669	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramResourceLocation.xhtml>
42670	fn glGetProgramResourceLocation(&self, program: GLuint, programInterface: GLenum, name: *const GLchar) -> Result<GLint>;
42671
42672	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramResourceLocationIndex.xhtml>
42673	fn glGetProgramResourceLocationIndex(&self, program: GLuint, programInterface: GLenum, name: *const GLchar) -> Result<GLint>;
42674
42675	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glShaderStorageBlockBinding.xhtml>
42676	fn glShaderStorageBlockBinding(&self, program: GLuint, storageBlockIndex: GLuint, storageBlockBinding: GLuint) -> Result<()>;
42677
42678	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexBufferRange.xhtml>
42679	fn glTexBufferRange(&self, target: GLenum, internalformat: GLenum, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()>;
42680
42681	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexStorage2DMultisample.xhtml>
42682	fn glTexStorage2DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, fixedsamplelocations: GLboolean) -> Result<()>;
42683
42684	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexStorage3DMultisample.xhtml>
42685	fn glTexStorage3DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, fixedsamplelocations: GLboolean) -> Result<()>;
42686
42687	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureView.xhtml>
42688	fn glTextureView(&self, texture: GLuint, target: GLenum, origtexture: GLuint, internalformat: GLenum, minlevel: GLuint, numlevels: GLuint, minlayer: GLuint, numlayers: GLuint) -> Result<()>;
42689
42690	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindVertexBuffer.xhtml>
42691	fn glBindVertexBuffer(&self, bindingindex: GLuint, buffer: GLuint, offset: GLintptr, stride: GLsizei) -> Result<()>;
42692
42693	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribFormat.xhtml>
42694	fn glVertexAttribFormat(&self, attribindex: GLuint, size: GLint, type_: GLenum, normalized: GLboolean, relativeoffset: GLuint) -> Result<()>;
42695
42696	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribIFormat.xhtml>
42697	fn glVertexAttribIFormat(&self, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()>;
42698
42699	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribLFormat.xhtml>
42700	fn glVertexAttribLFormat(&self, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()>;
42701
42702	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribBinding.xhtml>
42703	fn glVertexAttribBinding(&self, attribindex: GLuint, bindingindex: GLuint) -> Result<()>;
42704
42705	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexBindingDivisor.xhtml>
42706	fn glVertexBindingDivisor(&self, bindingindex: GLuint, divisor: GLuint) -> Result<()>;
42707
42708	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDebugMessageControl.xhtml>
42709	fn glDebugMessageControl(&self, source: GLenum, type_: GLenum, severity: GLenum, count: GLsizei, ids: *const GLuint, enabled: GLboolean) -> Result<()>;
42710
42711	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDebugMessageInsert.xhtml>
42712	fn glDebugMessageInsert(&self, source: GLenum, type_: GLenum, id: GLuint, severity: GLenum, length: GLsizei, buf: *const GLchar) -> Result<()>;
42713
42714	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDebugMessageCallback.xhtml>
42715	fn glDebugMessageCallback(&self, callback: GLDEBUGPROC, userParam: *const c_void) -> Result<()>;
42716
42717	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetDebugMessageLog.xhtml>
42718	fn glGetDebugMessageLog(&self, count: GLuint, bufSize: GLsizei, sources: *mut GLenum, types: *mut GLenum, ids: *mut GLuint, severities: *mut GLenum, lengths: *mut GLsizei, messageLog: *mut GLchar) -> Result<GLuint>;
42719
42720	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPushDebugGroup.xhtml>
42721	fn glPushDebugGroup(&self, source: GLenum, id: GLuint, length: GLsizei, message: *const GLchar) -> Result<()>;
42722
42723	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPopDebugGroup.xhtml>
42724	fn glPopDebugGroup(&self) -> Result<()>;
42725
42726	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glObjectLabel.xhtml>
42727	fn glObjectLabel(&self, identifier: GLenum, name: GLuint, length: GLsizei, label: *const GLchar) -> Result<()>;
42728
42729	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetObjectLabel.xhtml>
42730	fn glGetObjectLabel(&self, identifier: GLenum, name: GLuint, bufSize: GLsizei, length: *mut GLsizei, label: *mut GLchar) -> Result<()>;
42731
42732	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glObjectPtrLabel.xhtml>
42733	fn glObjectPtrLabel(&self, ptr: *const c_void, length: GLsizei, label: *const GLchar) -> Result<()>;
42734
42735	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetObjectPtrLabel.xhtml>
42736	fn glGetObjectPtrLabel(&self, ptr: *const c_void, bufSize: GLsizei, length: *mut GLsizei, label: *mut GLchar) -> Result<()>;
42737}
42738
42739	/// Functions from OpenGL version 4.4 for the struct `GLCore` without dupliacted functions.
42740pub trait GL_4_4_g {
42741
42742	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBufferStorage.xhtml>
42743	fn glBufferStorage(&self, target: GLenum, size: GLsizeiptr, data: *const c_void, flags: GLbitfield) -> Result<()>;
42744
42745	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearTexImage.xhtml>
42746	fn glClearTexImage(&self, texture: GLuint, level: GLint, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()>;
42747
42748	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearTexSubImage.xhtml>
42749	fn glClearTexSubImage(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()>;
42750
42751	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindBuffersBase.xhtml>
42752	fn glBindBuffersBase(&self, target: GLenum, first: GLuint, count: GLsizei, buffers: *const GLuint) -> Result<()>;
42753
42754	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindBuffersRange.xhtml>
42755	fn glBindBuffersRange(&self, target: GLenum, first: GLuint, count: GLsizei, buffers: *const GLuint, offsets: *const GLintptr, sizes: *const GLsizeiptr) -> Result<()>;
42756
42757	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindTextures.xhtml>
42758	fn glBindTextures(&self, first: GLuint, count: GLsizei, textures: *const GLuint) -> Result<()>;
42759
42760	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindSamplers.xhtml>
42761	fn glBindSamplers(&self, first: GLuint, count: GLsizei, samplers: *const GLuint) -> Result<()>;
42762
42763	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindImageTextures.xhtml>
42764	fn glBindImageTextures(&self, first: GLuint, count: GLsizei, textures: *const GLuint) -> Result<()>;
42765
42766	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindVertexBuffers.xhtml>
42767	fn glBindVertexBuffers(&self, first: GLuint, count: GLsizei, buffers: *const GLuint, offsets: *const GLintptr, strides: *const GLsizei) -> Result<()>;
42768}
42769
42770	/// Functions from OpenGL version 4.5 for the struct `GLCore` without dupliacted functions.
42771pub trait GL_4_5_g {
42772
42773	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClipControl.xhtml>
42774	fn glClipControl(&self, origin: GLenum, depth: GLenum) -> Result<()>;
42775
42776	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateTransformFeedbacks.xhtml>
42777	fn glCreateTransformFeedbacks(&self, n: GLsizei, ids: *mut GLuint) -> Result<()>;
42778
42779	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTransformFeedbackBufferBase.xhtml>
42780	fn glTransformFeedbackBufferBase(&self, xfb: GLuint, index: GLuint, buffer: GLuint) -> Result<()>;
42781
42782	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTransformFeedbackBufferRange.xhtml>
42783	fn glTransformFeedbackBufferRange(&self, xfb: GLuint, index: GLuint, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()>;
42784
42785	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTransformFeedbackiv.xhtml>
42786	fn glGetTransformFeedbackiv(&self, xfb: GLuint, pname: GLenum, param: *mut GLint) -> Result<()>;
42787
42788	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTransformFeedbacki_v.xhtml>
42789	fn glGetTransformFeedbacki_v(&self, xfb: GLuint, pname: GLenum, index: GLuint, param: *mut GLint) -> Result<()>;
42790
42791	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTransformFeedbacki64_v.xhtml>
42792	fn glGetTransformFeedbacki64_v(&self, xfb: GLuint, pname: GLenum, index: GLuint, param: *mut GLint64) -> Result<()>;
42793
42794	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateBuffers.xhtml>
42795	fn glCreateBuffers(&self, n: GLsizei, buffers: *mut GLuint) -> Result<()>;
42796
42797	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedBufferStorage.xhtml>
42798	fn glNamedBufferStorage(&self, buffer: GLuint, size: GLsizeiptr, data: *const c_void, flags: GLbitfield) -> Result<()>;
42799
42800	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedBufferData.xhtml>
42801	fn glNamedBufferData(&self, buffer: GLuint, size: GLsizeiptr, data: *const c_void, usage: GLenum) -> Result<()>;
42802
42803	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedBufferSubData.xhtml>
42804	fn glNamedBufferSubData(&self, buffer: GLuint, offset: GLintptr, size: GLsizeiptr, data: *const c_void) -> Result<()>;
42805
42806	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyNamedBufferSubData.xhtml>
42807	fn glCopyNamedBufferSubData(&self, readBuffer: GLuint, writeBuffer: GLuint, readOffset: GLintptr, writeOffset: GLintptr, size: GLsizeiptr) -> Result<()>;
42808
42809	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedBufferData.xhtml>
42810	fn glClearNamedBufferData(&self, buffer: GLuint, internalformat: GLenum, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()>;
42811
42812	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedBufferSubData.xhtml>
42813	fn glClearNamedBufferSubData(&self, buffer: GLuint, internalformat: GLenum, offset: GLintptr, size: GLsizeiptr, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()>;
42814
42815	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMapNamedBuffer.xhtml>
42816	fn glMapNamedBuffer(&self, buffer: GLuint, access: GLenum) -> Result<*mut c_void>;
42817
42818	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMapNamedBufferRange.xhtml>
42819	fn glMapNamedBufferRange(&self, buffer: GLuint, offset: GLintptr, length: GLsizeiptr, access: GLbitfield) -> Result<*mut c_void>;
42820
42821	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUnmapNamedBuffer.xhtml>
42822	fn glUnmapNamedBuffer(&self, buffer: GLuint) -> Result<GLboolean>;
42823
42824	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFlushMappedNamedBufferRange.xhtml>
42825	fn glFlushMappedNamedBufferRange(&self, buffer: GLuint, offset: GLintptr, length: GLsizeiptr) -> Result<()>;
42826
42827	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedBufferParameteriv.xhtml>
42828	fn glGetNamedBufferParameteriv(&self, buffer: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
42829
42830	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedBufferParameteri64v.xhtml>
42831	fn glGetNamedBufferParameteri64v(&self, buffer: GLuint, pname: GLenum, params: *mut GLint64) -> Result<()>;
42832
42833	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedBufferPointerv.xhtml>
42834	fn glGetNamedBufferPointerv(&self, buffer: GLuint, pname: GLenum, params: *mut *mut c_void) -> Result<()>;
42835
42836	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedBufferSubData.xhtml>
42837	fn glGetNamedBufferSubData(&self, buffer: GLuint, offset: GLintptr, size: GLsizeiptr, data: *mut c_void) -> Result<()>;
42838
42839	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateFramebuffers.xhtml>
42840	fn glCreateFramebuffers(&self, n: GLsizei, framebuffers: *mut GLuint) -> Result<()>;
42841
42842	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferRenderbuffer.xhtml>
42843	fn glNamedFramebufferRenderbuffer(&self, framebuffer: GLuint, attachment: GLenum, renderbuffertarget: GLenum, renderbuffer: GLuint) -> Result<()>;
42844
42845	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferParameteri.xhtml>
42846	fn glNamedFramebufferParameteri(&self, framebuffer: GLuint, pname: GLenum, param: GLint) -> Result<()>;
42847
42848	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferTexture.xhtml>
42849	fn glNamedFramebufferTexture(&self, framebuffer: GLuint, attachment: GLenum, texture: GLuint, level: GLint) -> Result<()>;
42850
42851	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferTextureLayer.xhtml>
42852	fn glNamedFramebufferTextureLayer(&self, framebuffer: GLuint, attachment: GLenum, texture: GLuint, level: GLint, layer: GLint) -> Result<()>;
42853
42854	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferDrawBuffer.xhtml>
42855	fn glNamedFramebufferDrawBuffer(&self, framebuffer: GLuint, buf: GLenum) -> Result<()>;
42856
42857	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferDrawBuffers.xhtml>
42858	fn glNamedFramebufferDrawBuffers(&self, framebuffer: GLuint, n: GLsizei, bufs: *const GLenum) -> Result<()>;
42859
42860	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferReadBuffer.xhtml>
42861	fn glNamedFramebufferReadBuffer(&self, framebuffer: GLuint, src: GLenum) -> Result<()>;
42862
42863	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateNamedFramebufferData.xhtml>
42864	fn glInvalidateNamedFramebufferData(&self, framebuffer: GLuint, numAttachments: GLsizei, attachments: *const GLenum) -> Result<()>;
42865
42866	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateNamedFramebufferSubData.xhtml>
42867	fn glInvalidateNamedFramebufferSubData(&self, framebuffer: GLuint, numAttachments: GLsizei, attachments: *const GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
42868
42869	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedFramebufferiv.xhtml>
42870	fn glClearNamedFramebufferiv(&self, framebuffer: GLuint, buffer: GLenum, drawbuffer: GLint, value: *const GLint) -> Result<()>;
42871
42872	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedFramebufferuiv.xhtml>
42873	fn glClearNamedFramebufferuiv(&self, framebuffer: GLuint, buffer: GLenum, drawbuffer: GLint, value: *const GLuint) -> Result<()>;
42874
42875	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedFramebufferfv.xhtml>
42876	fn glClearNamedFramebufferfv(&self, framebuffer: GLuint, buffer: GLenum, drawbuffer: GLint, value: *const GLfloat) -> Result<()>;
42877
42878	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedFramebufferfi.xhtml>
42879	fn glClearNamedFramebufferfi(&self, framebuffer: GLuint, buffer: GLenum, drawbuffer: GLint, depth: GLfloat, stencil: GLint) -> Result<()>;
42880
42881	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlitNamedFramebuffer.xhtml>
42882	fn glBlitNamedFramebuffer(&self, readFramebuffer: GLuint, drawFramebuffer: GLuint, srcX0: GLint, srcY0: GLint, srcX1: GLint, srcY1: GLint, dstX0: GLint, dstY0: GLint, dstX1: GLint, dstY1: GLint, mask: GLbitfield, filter: GLenum) -> Result<()>;
42883
42884	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCheckNamedFramebufferStatus.xhtml>
42885	fn glCheckNamedFramebufferStatus(&self, framebuffer: GLuint, target: GLenum) -> Result<GLenum>;
42886
42887	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedFramebufferParameteriv.xhtml>
42888	fn glGetNamedFramebufferParameteriv(&self, framebuffer: GLuint, pname: GLenum, param: *mut GLint) -> Result<()>;
42889
42890	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedFramebufferAttachmentParameteriv.xhtml>
42891	fn glGetNamedFramebufferAttachmentParameteriv(&self, framebuffer: GLuint, attachment: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
42892
42893	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateRenderbuffers.xhtml>
42894	fn glCreateRenderbuffers(&self, n: GLsizei, renderbuffers: *mut GLuint) -> Result<()>;
42895
42896	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedRenderbufferStorage.xhtml>
42897	fn glNamedRenderbufferStorage(&self, renderbuffer: GLuint, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()>;
42898
42899	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedRenderbufferStorageMultisample.xhtml>
42900	fn glNamedRenderbufferStorageMultisample(&self, renderbuffer: GLuint, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()>;
42901
42902	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedRenderbufferParameteriv.xhtml>
42903	fn glGetNamedRenderbufferParameteriv(&self, renderbuffer: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
42904
42905	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateTextures.xhtml>
42906	fn glCreateTextures(&self, target: GLenum, n: GLsizei, textures: *mut GLuint) -> Result<()>;
42907
42908	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureBuffer.xhtml>
42909	fn glTextureBuffer(&self, texture: GLuint, internalformat: GLenum, buffer: GLuint) -> Result<()>;
42910
42911	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureBufferRange.xhtml>
42912	fn glTextureBufferRange(&self, texture: GLuint, internalformat: GLenum, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()>;
42913
42914	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureStorage1D.xhtml>
42915	fn glTextureStorage1D(&self, texture: GLuint, levels: GLsizei, internalformat: GLenum, width: GLsizei) -> Result<()>;
42916
42917	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureStorage2D.xhtml>
42918	fn glTextureStorage2D(&self, texture: GLuint, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()>;
42919
42920	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureStorage3D.xhtml>
42921	fn glTextureStorage3D(&self, texture: GLuint, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei) -> Result<()>;
42922
42923	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureStorage2DMultisample.xhtml>
42924	fn glTextureStorage2DMultisample(&self, texture: GLuint, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, fixedsamplelocations: GLboolean) -> Result<()>;
42925
42926	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureStorage3DMultisample.xhtml>
42927	fn glTextureStorage3DMultisample(&self, texture: GLuint, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, fixedsamplelocations: GLboolean) -> Result<()>;
42928
42929	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureSubImage1D.xhtml>
42930	fn glTextureSubImage1D(&self, texture: GLuint, level: GLint, xoffset: GLint, width: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
42931
42932	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureSubImage2D.xhtml>
42933	fn glTextureSubImage2D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
42934
42935	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureSubImage3D.xhtml>
42936	fn glTextureSubImage3D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
42937
42938	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTextureSubImage1D.xhtml>
42939	fn glCompressedTextureSubImage1D(&self, texture: GLuint, level: GLint, xoffset: GLint, width: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()>;
42940
42941	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTextureSubImage2D.xhtml>
42942	fn glCompressedTextureSubImage2D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()>;
42943
42944	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTextureSubImage3D.xhtml>
42945	fn glCompressedTextureSubImage3D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()>;
42946
42947	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTextureSubImage1D.xhtml>
42948	fn glCopyTextureSubImage1D(&self, texture: GLuint, level: GLint, xoffset: GLint, x: GLint, y: GLint, width: GLsizei) -> Result<()>;
42949
42950	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTextureSubImage2D.xhtml>
42951	fn glCopyTextureSubImage2D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
42952
42953	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTextureSubImage3D.xhtml>
42954	fn glCopyTextureSubImage3D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
42955
42956	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameterf.xhtml>
42957	fn glTextureParameterf(&self, texture: GLuint, pname: GLenum, param: GLfloat) -> Result<()>;
42958
42959	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameterfv.xhtml>
42960	fn glTextureParameterfv(&self, texture: GLuint, pname: GLenum, param: *const GLfloat) -> Result<()>;
42961
42962	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameteri.xhtml>
42963	fn glTextureParameteri(&self, texture: GLuint, pname: GLenum, param: GLint) -> Result<()>;
42964
42965	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameterIiv.xhtml>
42966	fn glTextureParameterIiv(&self, texture: GLuint, pname: GLenum, params: *const GLint) -> Result<()>;
42967
42968	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameterIuiv.xhtml>
42969	fn glTextureParameterIuiv(&self, texture: GLuint, pname: GLenum, params: *const GLuint) -> Result<()>;
42970
42971	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameteriv.xhtml>
42972	fn glTextureParameteriv(&self, texture: GLuint, pname: GLenum, param: *const GLint) -> Result<()>;
42973
42974	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenerateTextureMipmap.xhtml>
42975	fn glGenerateTextureMipmap(&self, texture: GLuint) -> Result<()>;
42976
42977	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindTextureUnit.xhtml>
42978	fn glBindTextureUnit(&self, unit: GLuint, texture: GLuint) -> Result<()>;
42979
42980	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureImage.xhtml>
42981	fn glGetTextureImage(&self, texture: GLuint, level: GLint, format: GLenum, type_: GLenum, bufSize: GLsizei, pixels: *mut c_void) -> Result<()>;
42982
42983	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetCompressedTextureImage.xhtml>
42984	fn glGetCompressedTextureImage(&self, texture: GLuint, level: GLint, bufSize: GLsizei, pixels: *mut c_void) -> Result<()>;
42985
42986	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureLevelParameterfv.xhtml>
42987	fn glGetTextureLevelParameterfv(&self, texture: GLuint, level: GLint, pname: GLenum, params: *mut GLfloat) -> Result<()>;
42988
42989	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureLevelParameteriv.xhtml>
42990	fn glGetTextureLevelParameteriv(&self, texture: GLuint, level: GLint, pname: GLenum, params: *mut GLint) -> Result<()>;
42991
42992	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureParameterfv.xhtml>
42993	fn glGetTextureParameterfv(&self, texture: GLuint, pname: GLenum, params: *mut GLfloat) -> Result<()>;
42994
42995	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureParameterIiv.xhtml>
42996	fn glGetTextureParameterIiv(&self, texture: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
42997
42998	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureParameterIuiv.xhtml>
42999	fn glGetTextureParameterIuiv(&self, texture: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()>;
43000
43001	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureParameteriv.xhtml>
43002	fn glGetTextureParameteriv(&self, texture: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
43003
43004	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateVertexArrays.xhtml>
43005	fn glCreateVertexArrays(&self, n: GLsizei, arrays: *mut GLuint) -> Result<()>;
43006
43007	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDisableVertexArrayAttrib.xhtml>
43008	fn glDisableVertexArrayAttrib(&self, vaobj: GLuint, index: GLuint) -> Result<()>;
43009
43010	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEnableVertexArrayAttrib.xhtml>
43011	fn glEnableVertexArrayAttrib(&self, vaobj: GLuint, index: GLuint) -> Result<()>;
43012
43013	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayElementBuffer.xhtml>
43014	fn glVertexArrayElementBuffer(&self, vaobj: GLuint, buffer: GLuint) -> Result<()>;
43015
43016	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayVertexBuffer.xhtml>
43017	fn glVertexArrayVertexBuffer(&self, vaobj: GLuint, bindingindex: GLuint, buffer: GLuint, offset: GLintptr, stride: GLsizei) -> Result<()>;
43018
43019	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayVertexBuffers.xhtml>
43020	fn glVertexArrayVertexBuffers(&self, vaobj: GLuint, first: GLuint, count: GLsizei, buffers: *const GLuint, offsets: *const GLintptr, strides: *const GLsizei) -> Result<()>;
43021
43022	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayAttribBinding.xhtml>
43023	fn glVertexArrayAttribBinding(&self, vaobj: GLuint, attribindex: GLuint, bindingindex: GLuint) -> Result<()>;
43024
43025	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayAttribFormat.xhtml>
43026	fn glVertexArrayAttribFormat(&self, vaobj: GLuint, attribindex: GLuint, size: GLint, type_: GLenum, normalized: GLboolean, relativeoffset: GLuint) -> Result<()>;
43027
43028	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayAttribIFormat.xhtml>
43029	fn glVertexArrayAttribIFormat(&self, vaobj: GLuint, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()>;
43030
43031	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayAttribLFormat.xhtml>
43032	fn glVertexArrayAttribLFormat(&self, vaobj: GLuint, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()>;
43033
43034	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayBindingDivisor.xhtml>
43035	fn glVertexArrayBindingDivisor(&self, vaobj: GLuint, bindingindex: GLuint, divisor: GLuint) -> Result<()>;
43036
43037	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexArrayiv.xhtml>
43038	fn glGetVertexArrayiv(&self, vaobj: GLuint, pname: GLenum, param: *mut GLint) -> Result<()>;
43039
43040	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexArrayIndexediv.xhtml>
43041	fn glGetVertexArrayIndexediv(&self, vaobj: GLuint, index: GLuint, pname: GLenum, param: *mut GLint) -> Result<()>;
43042
43043	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexArrayIndexed64iv.xhtml>
43044	fn glGetVertexArrayIndexed64iv(&self, vaobj: GLuint, index: GLuint, pname: GLenum, param: *mut GLint64) -> Result<()>;
43045
43046	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateSamplers.xhtml>
43047	fn glCreateSamplers(&self, n: GLsizei, samplers: *mut GLuint) -> Result<()>;
43048
43049	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateProgramPipelines.xhtml>
43050	fn glCreateProgramPipelines(&self, n: GLsizei, pipelines: *mut GLuint) -> Result<()>;
43051
43052	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateQueries.xhtml>
43053	fn glCreateQueries(&self, target: GLenum, n: GLsizei, ids: *mut GLuint) -> Result<()>;
43054
43055	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryBufferObjecti64v.xhtml>
43056	fn glGetQueryBufferObjecti64v(&self, id: GLuint, buffer: GLuint, pname: GLenum, offset: GLintptr) -> Result<()>;
43057
43058	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryBufferObjectiv.xhtml>
43059	fn glGetQueryBufferObjectiv(&self, id: GLuint, buffer: GLuint, pname: GLenum, offset: GLintptr) -> Result<()>;
43060
43061	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryBufferObjectui64v.xhtml>
43062	fn glGetQueryBufferObjectui64v(&self, id: GLuint, buffer: GLuint, pname: GLenum, offset: GLintptr) -> Result<()>;
43063
43064	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryBufferObjectuiv.xhtml>
43065	fn glGetQueryBufferObjectuiv(&self, id: GLuint, buffer: GLuint, pname: GLenum, offset: GLintptr) -> Result<()>;
43066
43067	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMemoryBarrierByRegion.xhtml>
43068	fn glMemoryBarrierByRegion(&self, barriers: GLbitfield) -> Result<()>;
43069
43070	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureSubImage.xhtml>
43071	fn glGetTextureSubImage(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type_: GLenum, bufSize: GLsizei, pixels: *mut c_void) -> Result<()>;
43072
43073	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetCompressedTextureSubImage.xhtml>
43074	fn glGetCompressedTextureSubImage(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, bufSize: GLsizei, pixels: *mut c_void) -> Result<()>;
43075
43076	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetGraphicsResetStatus.xhtml>
43077	fn glGetGraphicsResetStatus(&self) -> Result<GLenum>;
43078
43079	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnCompressedTexImage.xhtml>
43080	fn glGetnCompressedTexImage(&self, target: GLenum, lod: GLint, bufSize: GLsizei, pixels: *mut c_void) -> Result<()>;
43081
43082	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnTexImage.xhtml>
43083	fn glGetnTexImage(&self, target: GLenum, level: GLint, format: GLenum, type_: GLenum, bufSize: GLsizei, pixels: *mut c_void) -> Result<()>;
43084
43085	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnUniformdv.xhtml>
43086	fn glGetnUniformdv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLdouble) -> Result<()>;
43087
43088	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnUniformfv.xhtml>
43089	fn glGetnUniformfv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLfloat) -> Result<()>;
43090
43091	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnUniformiv.xhtml>
43092	fn glGetnUniformiv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLint) -> Result<()>;
43093
43094	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnUniformuiv.xhtml>
43095	fn glGetnUniformuiv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLuint) -> Result<()>;
43096
43097	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glReadnPixels.xhtml>
43098	fn glReadnPixels(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, bufSize: GLsizei, data: *mut c_void) -> Result<()>;
43099
43100	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnMapdv.xhtml>
43101	fn glGetnMapdv(&self, target: GLenum, query: GLenum, bufSize: GLsizei, v: *mut GLdouble) -> Result<()>;
43102
43103	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnMapfv.xhtml>
43104	fn glGetnMapfv(&self, target: GLenum, query: GLenum, bufSize: GLsizei, v: *mut GLfloat) -> Result<()>;
43105
43106	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnMapiv.xhtml>
43107	fn glGetnMapiv(&self, target: GLenum, query: GLenum, bufSize: GLsizei, v: *mut GLint) -> Result<()>;
43108
43109	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnPixelMapfv.xhtml>
43110	fn glGetnPixelMapfv(&self, map: GLenum, bufSize: GLsizei, values: *mut GLfloat) -> Result<()>;
43111
43112	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnPixelMapuiv.xhtml>
43113	fn glGetnPixelMapuiv(&self, map: GLenum, bufSize: GLsizei, values: *mut GLuint) -> Result<()>;
43114
43115	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnPixelMapusv.xhtml>
43116	fn glGetnPixelMapusv(&self, map: GLenum, bufSize: GLsizei, values: *mut GLushort) -> Result<()>;
43117
43118	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnPolygonStipple.xhtml>
43119	fn glGetnPolygonStipple(&self, bufSize: GLsizei, pattern: *mut GLubyte) -> Result<()>;
43120
43121	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnColorTable.xhtml>
43122	fn glGetnColorTable(&self, target: GLenum, format: GLenum, type_: GLenum, bufSize: GLsizei, table: *mut c_void) -> Result<()>;
43123
43124	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnConvolutionFilter.xhtml>
43125	fn glGetnConvolutionFilter(&self, target: GLenum, format: GLenum, type_: GLenum, bufSize: GLsizei, image: *mut c_void) -> Result<()>;
43126
43127	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnSeparableFilter.xhtml>
43128	fn glGetnSeparableFilter(&self, target: GLenum, format: GLenum, type_: GLenum, rowBufSize: GLsizei, row: *mut c_void, columnBufSize: GLsizei, column: *mut c_void, span: *mut c_void) -> Result<()>;
43129
43130	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnHistogram.xhtml>
43131	fn glGetnHistogram(&self, target: GLenum, reset: GLboolean, format: GLenum, type_: GLenum, bufSize: GLsizei, values: *mut c_void) -> Result<()>;
43132
43133	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnMinmax.xhtml>
43134	fn glGetnMinmax(&self, target: GLenum, reset: GLboolean, format: GLenum, type_: GLenum, bufSize: GLsizei, values: *mut c_void) -> Result<()>;
43135
43136	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureBarrier.xhtml>
43137	fn glTextureBarrier(&self) -> Result<()>;
43138}
43139
43140	/// Functions from OpenGL version 4.6 for the struct `GLCore` without dupliacted functions.
43141pub trait GL_4_6_g {
43142
43143	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSpecializeShader.xhtml>
43144	fn glSpecializeShader(&self, shader: GLuint, pEntryPoint: *const GLchar, numSpecializationConstants: GLuint, pConstantIndex: *const GLuint, pConstantValue: *const GLuint) -> Result<()>;
43145
43146	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawArraysIndirectCount.xhtml>
43147	fn glMultiDrawArraysIndirectCount(&self, mode: GLenum, indirect: *const c_void, drawcount: GLintptr, maxdrawcount: GLsizei, stride: GLsizei) -> Result<()>;
43148
43149	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawElementsIndirectCount.xhtml>
43150	fn glMultiDrawElementsIndirectCount(&self, mode: GLenum, type_: GLenum, indirect: *const c_void, drawcount: GLintptr, maxdrawcount: GLsizei, stride: GLsizei) -> Result<()>;
43151
43152	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPolygonOffsetClamp.xhtml>
43153	fn glPolygonOffsetClamp(&self, factor: GLfloat, units: GLfloat, clamp: GLfloat) -> Result<()>;
43154}
43155
43156	/// Functions from OpenGL ES version 2.0 for the struct `GLCore` without dupliacted functions.
43157pub trait ES_GL_2_0_g {
43158}
43159
43160	/// Functions from OpenGL ES version 3.0 for the struct `GLCore` without dupliacted functions.
43161pub trait ES_GL_3_0_g {
43162}
43163
43164	/// Functions from OpenGL ES version 3.1 for the struct `GLCore` without dupliacted functions.
43165pub trait ES_GL_3_1_g {
43166}
43167
43168	/// Functions from OpenGL ES version 3.2 for the struct `GLCore` without dupliacted functions.
43169pub trait ES_GL_3_2_g {
43170
43171	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendBarrier.xhtml>
43172	fn glBlendBarrier(&self) -> Result<()>;
43173
43174	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glPrimitiveBoundingBox.xhtml>
43175	fn glPrimitiveBoundingBox(&self, minX: GLfloat, minY: GLfloat, minZ: GLfloat, minW: GLfloat, maxX: GLfloat, maxY: GLfloat, maxZ: GLfloat, maxW: GLfloat) -> Result<()>;
43176}
43177/// All of the OpenGL and OpenGL ES functions
43178#[derive(Default, Debug, Clone, Copy, PartialEq, Eq, Hash)]
43179pub struct GLCore {
43180	/// Functions from OpenGL version 1.0
43181	pub version_1_0: Version10,
43182
43183	/// Functions from OpenGL version 1.1
43184	pub version_1_1: Version11,
43185
43186	/// Functions from OpenGL version 1.2
43187	pub version_1_2: Version12,
43188
43189	/// Functions from OpenGL version 1.3
43190	pub version_1_3: Version13,
43191
43192	/// Functions from OpenGL version 1.4
43193	pub version_1_4: Version14,
43194
43195	/// Functions from OpenGL version 1.5
43196	pub version_1_5: Version15,
43197
43198	/// Functions from OpenGL version 2.0
43199	pub version_2_0: Version20,
43200
43201	/// Functions from OpenGL version 2.1
43202	pub version_2_1: Version21,
43203
43204	/// Functions from OpenGL version 3.0
43205	pub version_3_0: Version30,
43206
43207	/// Functions from OpenGL version 3.1
43208	pub version_3_1: Version31,
43209
43210	/// Functions from OpenGL version 3.2
43211	pub version_3_2: Version32,
43212
43213	/// Functions from OpenGL version 3.3
43214	pub version_3_3: Version33,
43215
43216	/// Functions from OpenGL version 4.0
43217	pub version_4_0: Version40,
43218
43219	/// Functions from OpenGL version 4.1
43220	pub version_4_1: Version41,
43221
43222	/// Functions from OpenGL version 4.2
43223	pub version_4_2: Version42,
43224
43225	/// Functions from OpenGL version 4.3
43226	pub version_4_3: Version43,
43227
43228	/// Functions from OpenGL version 4.4
43229	pub version_4_4: Version44,
43230
43231	/// Functions from OpenGL version 4.5
43232	pub version_4_5: Version45,
43233
43234	/// Functions from OpenGL version 4.6
43235	pub version_4_6: Version46,
43236
43237	/// Functions from OpenGL ES version 2.0
43238	pub esversion_2_0: EsVersion20,
43239
43240	/// Functions from OpenGL ES version 3.0
43241	pub esversion_3_0: EsVersion30,
43242
43243	/// Functions from OpenGL ES version 3.1
43244	pub esversion_3_1: EsVersion31,
43245
43246	/// Functions from OpenGL ES version 3.2
43247	pub esversion_3_2: EsVersion32,
43248
43249}
43250
43251impl GL_1_0_g for GLCore {
43252	#[inline(always)]
43253	fn get_version(&self) -> (&'static str, u32, u32, u32) {
43254		self.version_1_0.get_version()
43255	}
43256	#[inline(always)]
43257	fn get_vendor(&self) -> &'static str {
43258		self.version_1_0.get_vendor()
43259	}
43260	#[inline(always)]
43261	fn get_renderer(&self) -> &'static str {
43262		self.version_1_0.get_renderer()
43263	}
43264	#[inline(always)]
43265	fn get_versionstr(&self) -> &'static str {
43266		self.version_1_0.get_versionstr()
43267	}
43268	#[inline(always)]
43269	fn glCullFace(&self, mode: GLenum) -> Result<()> {
43270		#[cfg(feature = "catch_nullptr")]
43271		let ret = process_catch("glCullFace", catch_unwind(||(self.version_1_0.cullface)(mode)));
43272		#[cfg(not(feature = "catch_nullptr"))]
43273		let ret = {(self.version_1_0.cullface)(mode); Ok(())};
43274		#[cfg(feature = "diagnose")]
43275		if let Ok(ret) = ret {
43276			return to_result("glCullFace", ret, (self.version_1_0.geterror)());
43277		} else {
43278			return ret
43279		}
43280		#[cfg(not(feature = "diagnose"))]
43281		return ret;
43282	}
43283	#[inline(always)]
43284	fn glFrontFace(&self, mode: GLenum) -> Result<()> {
43285		#[cfg(feature = "catch_nullptr")]
43286		let ret = process_catch("glFrontFace", catch_unwind(||(self.version_1_0.frontface)(mode)));
43287		#[cfg(not(feature = "catch_nullptr"))]
43288		let ret = {(self.version_1_0.frontface)(mode); Ok(())};
43289		#[cfg(feature = "diagnose")]
43290		if let Ok(ret) = ret {
43291			return to_result("glFrontFace", ret, (self.version_1_0.geterror)());
43292		} else {
43293			return ret
43294		}
43295		#[cfg(not(feature = "diagnose"))]
43296		return ret;
43297	}
43298	#[inline(always)]
43299	fn glHint(&self, target: GLenum, mode: GLenum) -> Result<()> {
43300		#[cfg(feature = "catch_nullptr")]
43301		let ret = process_catch("glHint", catch_unwind(||(self.version_1_0.hint)(target, mode)));
43302		#[cfg(not(feature = "catch_nullptr"))]
43303		let ret = {(self.version_1_0.hint)(target, mode); Ok(())};
43304		#[cfg(feature = "diagnose")]
43305		if let Ok(ret) = ret {
43306			return to_result("glHint", ret, (self.version_1_0.geterror)());
43307		} else {
43308			return ret
43309		}
43310		#[cfg(not(feature = "diagnose"))]
43311		return ret;
43312	}
43313	#[inline(always)]
43314	fn glLineWidth(&self, width: GLfloat) -> Result<()> {
43315		#[cfg(feature = "catch_nullptr")]
43316		let ret = process_catch("glLineWidth", catch_unwind(||(self.version_1_0.linewidth)(width)));
43317		#[cfg(not(feature = "catch_nullptr"))]
43318		let ret = {(self.version_1_0.linewidth)(width); Ok(())};
43319		#[cfg(feature = "diagnose")]
43320		if let Ok(ret) = ret {
43321			return to_result("glLineWidth", ret, (self.version_1_0.geterror)());
43322		} else {
43323			return ret
43324		}
43325		#[cfg(not(feature = "diagnose"))]
43326		return ret;
43327	}
43328	#[inline(always)]
43329	fn glPointSize(&self, size: GLfloat) -> Result<()> {
43330		#[cfg(feature = "catch_nullptr")]
43331		let ret = process_catch("glPointSize", catch_unwind(||(self.version_1_0.pointsize)(size)));
43332		#[cfg(not(feature = "catch_nullptr"))]
43333		let ret = {(self.version_1_0.pointsize)(size); Ok(())};
43334		#[cfg(feature = "diagnose")]
43335		if let Ok(ret) = ret {
43336			return to_result("glPointSize", ret, (self.version_1_0.geterror)());
43337		} else {
43338			return ret
43339		}
43340		#[cfg(not(feature = "diagnose"))]
43341		return ret;
43342	}
43343	#[inline(always)]
43344	fn glPolygonMode(&self, face: GLenum, mode: GLenum) -> Result<()> {
43345		#[cfg(feature = "catch_nullptr")]
43346		let ret = process_catch("glPolygonMode", catch_unwind(||(self.version_1_0.polygonmode)(face, mode)));
43347		#[cfg(not(feature = "catch_nullptr"))]
43348		let ret = {(self.version_1_0.polygonmode)(face, mode); Ok(())};
43349		#[cfg(feature = "diagnose")]
43350		if let Ok(ret) = ret {
43351			return to_result("glPolygonMode", ret, (self.version_1_0.geterror)());
43352		} else {
43353			return ret
43354		}
43355		#[cfg(not(feature = "diagnose"))]
43356		return ret;
43357	}
43358	#[inline(always)]
43359	fn glScissor(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
43360		#[cfg(feature = "catch_nullptr")]
43361		let ret = process_catch("glScissor", catch_unwind(||(self.version_1_0.scissor)(x, y, width, height)));
43362		#[cfg(not(feature = "catch_nullptr"))]
43363		let ret = {(self.version_1_0.scissor)(x, y, width, height); Ok(())};
43364		#[cfg(feature = "diagnose")]
43365		if let Ok(ret) = ret {
43366			return to_result("glScissor", ret, (self.version_1_0.geterror)());
43367		} else {
43368			return ret
43369		}
43370		#[cfg(not(feature = "diagnose"))]
43371		return ret;
43372	}
43373	#[inline(always)]
43374	fn glTexParameterf(&self, target: GLenum, pname: GLenum, param: GLfloat) -> Result<()> {
43375		#[cfg(feature = "catch_nullptr")]
43376		let ret = process_catch("glTexParameterf", catch_unwind(||(self.version_1_0.texparameterf)(target, pname, param)));
43377		#[cfg(not(feature = "catch_nullptr"))]
43378		let ret = {(self.version_1_0.texparameterf)(target, pname, param); Ok(())};
43379		#[cfg(feature = "diagnose")]
43380		if let Ok(ret) = ret {
43381			return to_result("glTexParameterf", ret, (self.version_1_0.geterror)());
43382		} else {
43383			return ret
43384		}
43385		#[cfg(not(feature = "diagnose"))]
43386		return ret;
43387	}
43388	#[inline(always)]
43389	fn glTexParameterfv(&self, target: GLenum, pname: GLenum, params: *const GLfloat) -> Result<()> {
43390		#[cfg(feature = "catch_nullptr")]
43391		let ret = process_catch("glTexParameterfv", catch_unwind(||(self.version_1_0.texparameterfv)(target, pname, params)));
43392		#[cfg(not(feature = "catch_nullptr"))]
43393		let ret = {(self.version_1_0.texparameterfv)(target, pname, params); Ok(())};
43394		#[cfg(feature = "diagnose")]
43395		if let Ok(ret) = ret {
43396			return to_result("glTexParameterfv", ret, (self.version_1_0.geterror)());
43397		} else {
43398			return ret
43399		}
43400		#[cfg(not(feature = "diagnose"))]
43401		return ret;
43402	}
43403	#[inline(always)]
43404	fn glTexParameteri(&self, target: GLenum, pname: GLenum, param: GLint) -> Result<()> {
43405		#[cfg(feature = "catch_nullptr")]
43406		let ret = process_catch("glTexParameteri", catch_unwind(||(self.version_1_0.texparameteri)(target, pname, param)));
43407		#[cfg(not(feature = "catch_nullptr"))]
43408		let ret = {(self.version_1_0.texparameteri)(target, pname, param); Ok(())};
43409		#[cfg(feature = "diagnose")]
43410		if let Ok(ret) = ret {
43411			return to_result("glTexParameteri", ret, (self.version_1_0.geterror)());
43412		} else {
43413			return ret
43414		}
43415		#[cfg(not(feature = "diagnose"))]
43416		return ret;
43417	}
43418	#[inline(always)]
43419	fn glTexParameteriv(&self, target: GLenum, pname: GLenum, params: *const GLint) -> Result<()> {
43420		#[cfg(feature = "catch_nullptr")]
43421		let ret = process_catch("glTexParameteriv", catch_unwind(||(self.version_1_0.texparameteriv)(target, pname, params)));
43422		#[cfg(not(feature = "catch_nullptr"))]
43423		let ret = {(self.version_1_0.texparameteriv)(target, pname, params); Ok(())};
43424		#[cfg(feature = "diagnose")]
43425		if let Ok(ret) = ret {
43426			return to_result("glTexParameteriv", ret, (self.version_1_0.geterror)());
43427		} else {
43428			return ret
43429		}
43430		#[cfg(not(feature = "diagnose"))]
43431		return ret;
43432	}
43433	#[inline(always)]
43434	fn glTexImage1D(&self, target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, border: GLint, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
43435		#[cfg(feature = "catch_nullptr")]
43436		let ret = process_catch("glTexImage1D", catch_unwind(||(self.version_1_0.teximage1d)(target, level, internalformat, width, border, format, type_, pixels)));
43437		#[cfg(not(feature = "catch_nullptr"))]
43438		let ret = {(self.version_1_0.teximage1d)(target, level, internalformat, width, border, format, type_, pixels); Ok(())};
43439		#[cfg(feature = "diagnose")]
43440		if let Ok(ret) = ret {
43441			return to_result("glTexImage1D", ret, (self.version_1_0.geterror)());
43442		} else {
43443			return ret
43444		}
43445		#[cfg(not(feature = "diagnose"))]
43446		return ret;
43447	}
43448	#[inline(always)]
43449	fn glTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
43450		#[cfg(feature = "catch_nullptr")]
43451		let ret = process_catch("glTexImage2D", catch_unwind(||(self.version_1_0.teximage2d)(target, level, internalformat, width, height, border, format, type_, pixels)));
43452		#[cfg(not(feature = "catch_nullptr"))]
43453		let ret = {(self.version_1_0.teximage2d)(target, level, internalformat, width, height, border, format, type_, pixels); Ok(())};
43454		#[cfg(feature = "diagnose")]
43455		if let Ok(ret) = ret {
43456			return to_result("glTexImage2D", ret, (self.version_1_0.geterror)());
43457		} else {
43458			return ret
43459		}
43460		#[cfg(not(feature = "diagnose"))]
43461		return ret;
43462	}
43463	#[inline(always)]
43464	fn glDrawBuffer(&self, buf: GLenum) -> Result<()> {
43465		#[cfg(feature = "catch_nullptr")]
43466		let ret = process_catch("glDrawBuffer", catch_unwind(||(self.version_1_0.drawbuffer)(buf)));
43467		#[cfg(not(feature = "catch_nullptr"))]
43468		let ret = {(self.version_1_0.drawbuffer)(buf); Ok(())};
43469		#[cfg(feature = "diagnose")]
43470		if let Ok(ret) = ret {
43471			return to_result("glDrawBuffer", ret, (self.version_1_0.geterror)());
43472		} else {
43473			return ret
43474		}
43475		#[cfg(not(feature = "diagnose"))]
43476		return ret;
43477	}
43478	#[inline(always)]
43479	fn glClear(&self, mask: GLbitfield) -> Result<()> {
43480		#[cfg(feature = "catch_nullptr")]
43481		let ret = process_catch("glClear", catch_unwind(||(self.version_1_0.clear)(mask)));
43482		#[cfg(not(feature = "catch_nullptr"))]
43483		let ret = {(self.version_1_0.clear)(mask); Ok(())};
43484		#[cfg(feature = "diagnose")]
43485		if let Ok(ret) = ret {
43486			return to_result("glClear", ret, (self.version_1_0.geterror)());
43487		} else {
43488			return ret
43489		}
43490		#[cfg(not(feature = "diagnose"))]
43491		return ret;
43492	}
43493	#[inline(always)]
43494	fn glClearColor(&self, red: GLfloat, green: GLfloat, blue: GLfloat, alpha: GLfloat) -> Result<()> {
43495		#[cfg(feature = "catch_nullptr")]
43496		let ret = process_catch("glClearColor", catch_unwind(||(self.version_1_0.clearcolor)(red, green, blue, alpha)));
43497		#[cfg(not(feature = "catch_nullptr"))]
43498		let ret = {(self.version_1_0.clearcolor)(red, green, blue, alpha); Ok(())};
43499		#[cfg(feature = "diagnose")]
43500		if let Ok(ret) = ret {
43501			return to_result("glClearColor", ret, (self.version_1_0.geterror)());
43502		} else {
43503			return ret
43504		}
43505		#[cfg(not(feature = "diagnose"))]
43506		return ret;
43507	}
43508	#[inline(always)]
43509	fn glClearStencil(&self, s: GLint) -> Result<()> {
43510		#[cfg(feature = "catch_nullptr")]
43511		let ret = process_catch("glClearStencil", catch_unwind(||(self.version_1_0.clearstencil)(s)));
43512		#[cfg(not(feature = "catch_nullptr"))]
43513		let ret = {(self.version_1_0.clearstencil)(s); Ok(())};
43514		#[cfg(feature = "diagnose")]
43515		if let Ok(ret) = ret {
43516			return to_result("glClearStencil", ret, (self.version_1_0.geterror)());
43517		} else {
43518			return ret
43519		}
43520		#[cfg(not(feature = "diagnose"))]
43521		return ret;
43522	}
43523	#[inline(always)]
43524	fn glClearDepth(&self, depth: GLdouble) -> Result<()> {
43525		#[cfg(feature = "catch_nullptr")]
43526		let ret = process_catch("glClearDepth", catch_unwind(||(self.version_1_0.cleardepth)(depth)));
43527		#[cfg(not(feature = "catch_nullptr"))]
43528		let ret = {(self.version_1_0.cleardepth)(depth); Ok(())};
43529		#[cfg(feature = "diagnose")]
43530		if let Ok(ret) = ret {
43531			return to_result("glClearDepth", ret, (self.version_1_0.geterror)());
43532		} else {
43533			return ret
43534		}
43535		#[cfg(not(feature = "diagnose"))]
43536		return ret;
43537	}
43538	#[inline(always)]
43539	fn glStencilMask(&self, mask: GLuint) -> Result<()> {
43540		#[cfg(feature = "catch_nullptr")]
43541		let ret = process_catch("glStencilMask", catch_unwind(||(self.version_1_0.stencilmask)(mask)));
43542		#[cfg(not(feature = "catch_nullptr"))]
43543		let ret = {(self.version_1_0.stencilmask)(mask); Ok(())};
43544		#[cfg(feature = "diagnose")]
43545		if let Ok(ret) = ret {
43546			return to_result("glStencilMask", ret, (self.version_1_0.geterror)());
43547		} else {
43548			return ret
43549		}
43550		#[cfg(not(feature = "diagnose"))]
43551		return ret;
43552	}
43553	#[inline(always)]
43554	fn glColorMask(&self, red: GLboolean, green: GLboolean, blue: GLboolean, alpha: GLboolean) -> Result<()> {
43555		#[cfg(feature = "catch_nullptr")]
43556		let ret = process_catch("glColorMask", catch_unwind(||(self.version_1_0.colormask)(red, green, blue, alpha)));
43557		#[cfg(not(feature = "catch_nullptr"))]
43558		let ret = {(self.version_1_0.colormask)(red, green, blue, alpha); Ok(())};
43559		#[cfg(feature = "diagnose")]
43560		if let Ok(ret) = ret {
43561			return to_result("glColorMask", ret, (self.version_1_0.geterror)());
43562		} else {
43563			return ret
43564		}
43565		#[cfg(not(feature = "diagnose"))]
43566		return ret;
43567	}
43568	#[inline(always)]
43569	fn glDepthMask(&self, flag: GLboolean) -> Result<()> {
43570		#[cfg(feature = "catch_nullptr")]
43571		let ret = process_catch("glDepthMask", catch_unwind(||(self.version_1_0.depthmask)(flag)));
43572		#[cfg(not(feature = "catch_nullptr"))]
43573		let ret = {(self.version_1_0.depthmask)(flag); Ok(())};
43574		#[cfg(feature = "diagnose")]
43575		if let Ok(ret) = ret {
43576			return to_result("glDepthMask", ret, (self.version_1_0.geterror)());
43577		} else {
43578			return ret
43579		}
43580		#[cfg(not(feature = "diagnose"))]
43581		return ret;
43582	}
43583	#[inline(always)]
43584	fn glDisable(&self, cap: GLenum) -> Result<()> {
43585		#[cfg(feature = "catch_nullptr")]
43586		let ret = process_catch("glDisable", catch_unwind(||(self.version_1_0.disable)(cap)));
43587		#[cfg(not(feature = "catch_nullptr"))]
43588		let ret = {(self.version_1_0.disable)(cap); Ok(())};
43589		#[cfg(feature = "diagnose")]
43590		if let Ok(ret) = ret {
43591			return to_result("glDisable", ret, (self.version_1_0.geterror)());
43592		} else {
43593			return ret
43594		}
43595		#[cfg(not(feature = "diagnose"))]
43596		return ret;
43597	}
43598	#[inline(always)]
43599	fn glEnable(&self, cap: GLenum) -> Result<()> {
43600		#[cfg(feature = "catch_nullptr")]
43601		let ret = process_catch("glEnable", catch_unwind(||(self.version_1_0.enable)(cap)));
43602		#[cfg(not(feature = "catch_nullptr"))]
43603		let ret = {(self.version_1_0.enable)(cap); Ok(())};
43604		#[cfg(feature = "diagnose")]
43605		if let Ok(ret) = ret {
43606			return to_result("glEnable", ret, (self.version_1_0.geterror)());
43607		} else {
43608			return ret
43609		}
43610		#[cfg(not(feature = "diagnose"))]
43611		return ret;
43612	}
43613	#[inline(always)]
43614	fn glFinish(&self) -> Result<()> {
43615		#[cfg(feature = "catch_nullptr")]
43616		let ret = process_catch("glFinish", catch_unwind(||(self.version_1_0.finish)()));
43617		#[cfg(not(feature = "catch_nullptr"))]
43618		let ret = {(self.version_1_0.finish)(); Ok(())};
43619		#[cfg(feature = "diagnose")]
43620		if let Ok(ret) = ret {
43621			return to_result("glFinish", ret, (self.version_1_0.geterror)());
43622		} else {
43623			return ret
43624		}
43625		#[cfg(not(feature = "diagnose"))]
43626		return ret;
43627	}
43628	#[inline(always)]
43629	fn glFlush(&self) -> Result<()> {
43630		#[cfg(feature = "catch_nullptr")]
43631		let ret = process_catch("glFlush", catch_unwind(||(self.version_1_0.flush)()));
43632		#[cfg(not(feature = "catch_nullptr"))]
43633		let ret = {(self.version_1_0.flush)(); Ok(())};
43634		#[cfg(feature = "diagnose")]
43635		if let Ok(ret) = ret {
43636			return to_result("glFlush", ret, (self.version_1_0.geterror)());
43637		} else {
43638			return ret
43639		}
43640		#[cfg(not(feature = "diagnose"))]
43641		return ret;
43642	}
43643	#[inline(always)]
43644	fn glBlendFunc(&self, sfactor: GLenum, dfactor: GLenum) -> Result<()> {
43645		#[cfg(feature = "catch_nullptr")]
43646		let ret = process_catch("glBlendFunc", catch_unwind(||(self.version_1_0.blendfunc)(sfactor, dfactor)));
43647		#[cfg(not(feature = "catch_nullptr"))]
43648		let ret = {(self.version_1_0.blendfunc)(sfactor, dfactor); Ok(())};
43649		#[cfg(feature = "diagnose")]
43650		if let Ok(ret) = ret {
43651			return to_result("glBlendFunc", ret, (self.version_1_0.geterror)());
43652		} else {
43653			return ret
43654		}
43655		#[cfg(not(feature = "diagnose"))]
43656		return ret;
43657	}
43658	#[inline(always)]
43659	fn glLogicOp(&self, opcode: GLenum) -> Result<()> {
43660		#[cfg(feature = "catch_nullptr")]
43661		let ret = process_catch("glLogicOp", catch_unwind(||(self.version_1_0.logicop)(opcode)));
43662		#[cfg(not(feature = "catch_nullptr"))]
43663		let ret = {(self.version_1_0.logicop)(opcode); Ok(())};
43664		#[cfg(feature = "diagnose")]
43665		if let Ok(ret) = ret {
43666			return to_result("glLogicOp", ret, (self.version_1_0.geterror)());
43667		} else {
43668			return ret
43669		}
43670		#[cfg(not(feature = "diagnose"))]
43671		return ret;
43672	}
43673	#[inline(always)]
43674	fn glStencilFunc(&self, func: GLenum, ref_: GLint, mask: GLuint) -> Result<()> {
43675		#[cfg(feature = "catch_nullptr")]
43676		let ret = process_catch("glStencilFunc", catch_unwind(||(self.version_1_0.stencilfunc)(func, ref_, mask)));
43677		#[cfg(not(feature = "catch_nullptr"))]
43678		let ret = {(self.version_1_0.stencilfunc)(func, ref_, mask); Ok(())};
43679		#[cfg(feature = "diagnose")]
43680		if let Ok(ret) = ret {
43681			return to_result("glStencilFunc", ret, (self.version_1_0.geterror)());
43682		} else {
43683			return ret
43684		}
43685		#[cfg(not(feature = "diagnose"))]
43686		return ret;
43687	}
43688	#[inline(always)]
43689	fn glStencilOp(&self, fail: GLenum, zfail: GLenum, zpass: GLenum) -> Result<()> {
43690		#[cfg(feature = "catch_nullptr")]
43691		let ret = process_catch("glStencilOp", catch_unwind(||(self.version_1_0.stencilop)(fail, zfail, zpass)));
43692		#[cfg(not(feature = "catch_nullptr"))]
43693		let ret = {(self.version_1_0.stencilop)(fail, zfail, zpass); Ok(())};
43694		#[cfg(feature = "diagnose")]
43695		if let Ok(ret) = ret {
43696			return to_result("glStencilOp", ret, (self.version_1_0.geterror)());
43697		} else {
43698			return ret
43699		}
43700		#[cfg(not(feature = "diagnose"))]
43701		return ret;
43702	}
43703	#[inline(always)]
43704	fn glDepthFunc(&self, func: GLenum) -> Result<()> {
43705		#[cfg(feature = "catch_nullptr")]
43706		let ret = process_catch("glDepthFunc", catch_unwind(||(self.version_1_0.depthfunc)(func)));
43707		#[cfg(not(feature = "catch_nullptr"))]
43708		let ret = {(self.version_1_0.depthfunc)(func); Ok(())};
43709		#[cfg(feature = "diagnose")]
43710		if let Ok(ret) = ret {
43711			return to_result("glDepthFunc", ret, (self.version_1_0.geterror)());
43712		} else {
43713			return ret
43714		}
43715		#[cfg(not(feature = "diagnose"))]
43716		return ret;
43717	}
43718	#[inline(always)]
43719	fn glPixelStoref(&self, pname: GLenum, param: GLfloat) -> Result<()> {
43720		#[cfg(feature = "catch_nullptr")]
43721		let ret = process_catch("glPixelStoref", catch_unwind(||(self.version_1_0.pixelstoref)(pname, param)));
43722		#[cfg(not(feature = "catch_nullptr"))]
43723		let ret = {(self.version_1_0.pixelstoref)(pname, param); Ok(())};
43724		#[cfg(feature = "diagnose")]
43725		if let Ok(ret) = ret {
43726			return to_result("glPixelStoref", ret, (self.version_1_0.geterror)());
43727		} else {
43728			return ret
43729		}
43730		#[cfg(not(feature = "diagnose"))]
43731		return ret;
43732	}
43733	#[inline(always)]
43734	fn glPixelStorei(&self, pname: GLenum, param: GLint) -> Result<()> {
43735		#[cfg(feature = "catch_nullptr")]
43736		let ret = process_catch("glPixelStorei", catch_unwind(||(self.version_1_0.pixelstorei)(pname, param)));
43737		#[cfg(not(feature = "catch_nullptr"))]
43738		let ret = {(self.version_1_0.pixelstorei)(pname, param); Ok(())};
43739		#[cfg(feature = "diagnose")]
43740		if let Ok(ret) = ret {
43741			return to_result("glPixelStorei", ret, (self.version_1_0.geterror)());
43742		} else {
43743			return ret
43744		}
43745		#[cfg(not(feature = "diagnose"))]
43746		return ret;
43747	}
43748	#[inline(always)]
43749	fn glReadBuffer(&self, src: GLenum) -> Result<()> {
43750		#[cfg(feature = "catch_nullptr")]
43751		let ret = process_catch("glReadBuffer", catch_unwind(||(self.version_1_0.readbuffer)(src)));
43752		#[cfg(not(feature = "catch_nullptr"))]
43753		let ret = {(self.version_1_0.readbuffer)(src); Ok(())};
43754		#[cfg(feature = "diagnose")]
43755		if let Ok(ret) = ret {
43756			return to_result("glReadBuffer", ret, (self.version_1_0.geterror)());
43757		} else {
43758			return ret
43759		}
43760		#[cfg(not(feature = "diagnose"))]
43761		return ret;
43762	}
43763	#[inline(always)]
43764	fn glReadPixels(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, pixels: *mut c_void) -> Result<()> {
43765		#[cfg(feature = "catch_nullptr")]
43766		let ret = process_catch("glReadPixels", catch_unwind(||(self.version_1_0.readpixels)(x, y, width, height, format, type_, pixels)));
43767		#[cfg(not(feature = "catch_nullptr"))]
43768		let ret = {(self.version_1_0.readpixels)(x, y, width, height, format, type_, pixels); Ok(())};
43769		#[cfg(feature = "diagnose")]
43770		if let Ok(ret) = ret {
43771			return to_result("glReadPixels", ret, (self.version_1_0.geterror)());
43772		} else {
43773			return ret
43774		}
43775		#[cfg(not(feature = "diagnose"))]
43776		return ret;
43777	}
43778	#[inline(always)]
43779	fn glGetBooleanv(&self, pname: GLenum, data: *mut GLboolean) -> Result<()> {
43780		#[cfg(feature = "catch_nullptr")]
43781		let ret = process_catch("glGetBooleanv", catch_unwind(||(self.version_1_0.getbooleanv)(pname, data)));
43782		#[cfg(not(feature = "catch_nullptr"))]
43783		let ret = {(self.version_1_0.getbooleanv)(pname, data); Ok(())};
43784		#[cfg(feature = "diagnose")]
43785		if let Ok(ret) = ret {
43786			return to_result("glGetBooleanv", ret, (self.version_1_0.geterror)());
43787		} else {
43788			return ret
43789		}
43790		#[cfg(not(feature = "diagnose"))]
43791		return ret;
43792	}
43793	#[inline(always)]
43794	fn glGetDoublev(&self, pname: GLenum, data: *mut GLdouble) -> Result<()> {
43795		#[cfg(feature = "catch_nullptr")]
43796		let ret = process_catch("glGetDoublev", catch_unwind(||(self.version_1_0.getdoublev)(pname, data)));
43797		#[cfg(not(feature = "catch_nullptr"))]
43798		let ret = {(self.version_1_0.getdoublev)(pname, data); Ok(())};
43799		#[cfg(feature = "diagnose")]
43800		if let Ok(ret) = ret {
43801			return to_result("glGetDoublev", ret, (self.version_1_0.geterror)());
43802		} else {
43803			return ret
43804		}
43805		#[cfg(not(feature = "diagnose"))]
43806		return ret;
43807	}
43808	#[inline(always)]
43809	fn glGetError(&self) -> GLenum {
43810		(self.version_1_0.geterror)()
43811	}
43812	#[inline(always)]
43813	fn glGetFloatv(&self, pname: GLenum, data: *mut GLfloat) -> Result<()> {
43814		#[cfg(feature = "catch_nullptr")]
43815		let ret = process_catch("glGetFloatv", catch_unwind(||(self.version_1_0.getfloatv)(pname, data)));
43816		#[cfg(not(feature = "catch_nullptr"))]
43817		let ret = {(self.version_1_0.getfloatv)(pname, data); Ok(())};
43818		#[cfg(feature = "diagnose")]
43819		if let Ok(ret) = ret {
43820			return to_result("glGetFloatv", ret, (self.version_1_0.geterror)());
43821		} else {
43822			return ret
43823		}
43824		#[cfg(not(feature = "diagnose"))]
43825		return ret;
43826	}
43827	#[inline(always)]
43828	fn glGetIntegerv(&self, pname: GLenum, data: *mut GLint) -> Result<()> {
43829		#[cfg(feature = "catch_nullptr")]
43830		let ret = process_catch("glGetIntegerv", catch_unwind(||(self.version_1_0.getintegerv)(pname, data)));
43831		#[cfg(not(feature = "catch_nullptr"))]
43832		let ret = {(self.version_1_0.getintegerv)(pname, data); Ok(())};
43833		#[cfg(feature = "diagnose")]
43834		if let Ok(ret) = ret {
43835			return to_result("glGetIntegerv", ret, (self.version_1_0.geterror)());
43836		} else {
43837			return ret
43838		}
43839		#[cfg(not(feature = "diagnose"))]
43840		return ret;
43841	}
43842	#[inline(always)]
43843	fn glGetString(&self, name: GLenum) -> Result<&'static str> {
43844		#[cfg(feature = "catch_nullptr")]
43845		let ret = process_catch("glGetString", catch_unwind(||unsafe{CStr::from_ptr((self.version_1_0.getstring)(name) as *const i8)}.to_str().unwrap()));
43846		#[cfg(not(feature = "catch_nullptr"))]
43847		let ret = Ok(unsafe{CStr::from_ptr((self.version_1_0.getstring)(name) as *const i8)}.to_str().unwrap());
43848		#[cfg(feature = "diagnose")]
43849		if let Ok(ret) = ret {
43850			return to_result("glGetString", ret, (self.version_1_0.geterror)());
43851		} else {
43852			return ret
43853		}
43854		#[cfg(not(feature = "diagnose"))]
43855		return ret;
43856	}
43857	#[inline(always)]
43858	fn glGetTexImage(&self, target: GLenum, level: GLint, format: GLenum, type_: GLenum, pixels: *mut c_void) -> Result<()> {
43859		#[cfg(feature = "catch_nullptr")]
43860		let ret = process_catch("glGetTexImage", catch_unwind(||(self.version_1_0.getteximage)(target, level, format, type_, pixels)));
43861		#[cfg(not(feature = "catch_nullptr"))]
43862		let ret = {(self.version_1_0.getteximage)(target, level, format, type_, pixels); Ok(())};
43863		#[cfg(feature = "diagnose")]
43864		if let Ok(ret) = ret {
43865			return to_result("glGetTexImage", ret, (self.version_1_0.geterror)());
43866		} else {
43867			return ret
43868		}
43869		#[cfg(not(feature = "diagnose"))]
43870		return ret;
43871	}
43872	#[inline(always)]
43873	fn glGetTexParameterfv(&self, target: GLenum, pname: GLenum, params: *mut GLfloat) -> Result<()> {
43874		#[cfg(feature = "catch_nullptr")]
43875		let ret = process_catch("glGetTexParameterfv", catch_unwind(||(self.version_1_0.gettexparameterfv)(target, pname, params)));
43876		#[cfg(not(feature = "catch_nullptr"))]
43877		let ret = {(self.version_1_0.gettexparameterfv)(target, pname, params); Ok(())};
43878		#[cfg(feature = "diagnose")]
43879		if let Ok(ret) = ret {
43880			return to_result("glGetTexParameterfv", ret, (self.version_1_0.geterror)());
43881		} else {
43882			return ret
43883		}
43884		#[cfg(not(feature = "diagnose"))]
43885		return ret;
43886	}
43887	#[inline(always)]
43888	fn glGetTexParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
43889		#[cfg(feature = "catch_nullptr")]
43890		let ret = process_catch("glGetTexParameteriv", catch_unwind(||(self.version_1_0.gettexparameteriv)(target, pname, params)));
43891		#[cfg(not(feature = "catch_nullptr"))]
43892		let ret = {(self.version_1_0.gettexparameteriv)(target, pname, params); Ok(())};
43893		#[cfg(feature = "diagnose")]
43894		if let Ok(ret) = ret {
43895			return to_result("glGetTexParameteriv", ret, (self.version_1_0.geterror)());
43896		} else {
43897			return ret
43898		}
43899		#[cfg(not(feature = "diagnose"))]
43900		return ret;
43901	}
43902	#[inline(always)]
43903	fn glGetTexLevelParameterfv(&self, target: GLenum, level: GLint, pname: GLenum, params: *mut GLfloat) -> Result<()> {
43904		#[cfg(feature = "catch_nullptr")]
43905		let ret = process_catch("glGetTexLevelParameterfv", catch_unwind(||(self.version_1_0.gettexlevelparameterfv)(target, level, pname, params)));
43906		#[cfg(not(feature = "catch_nullptr"))]
43907		let ret = {(self.version_1_0.gettexlevelparameterfv)(target, level, pname, params); Ok(())};
43908		#[cfg(feature = "diagnose")]
43909		if let Ok(ret) = ret {
43910			return to_result("glGetTexLevelParameterfv", ret, (self.version_1_0.geterror)());
43911		} else {
43912			return ret
43913		}
43914		#[cfg(not(feature = "diagnose"))]
43915		return ret;
43916	}
43917	#[inline(always)]
43918	fn glGetTexLevelParameteriv(&self, target: GLenum, level: GLint, pname: GLenum, params: *mut GLint) -> Result<()> {
43919		#[cfg(feature = "catch_nullptr")]
43920		let ret = process_catch("glGetTexLevelParameteriv", catch_unwind(||(self.version_1_0.gettexlevelparameteriv)(target, level, pname, params)));
43921		#[cfg(not(feature = "catch_nullptr"))]
43922		let ret = {(self.version_1_0.gettexlevelparameteriv)(target, level, pname, params); Ok(())};
43923		#[cfg(feature = "diagnose")]
43924		if let Ok(ret) = ret {
43925			return to_result("glGetTexLevelParameteriv", ret, (self.version_1_0.geterror)());
43926		} else {
43927			return ret
43928		}
43929		#[cfg(not(feature = "diagnose"))]
43930		return ret;
43931	}
43932	#[inline(always)]
43933	fn glIsEnabled(&self, cap: GLenum) -> Result<GLboolean> {
43934		#[cfg(feature = "catch_nullptr")]
43935		let ret = process_catch("glIsEnabled", catch_unwind(||(self.version_1_0.isenabled)(cap)));
43936		#[cfg(not(feature = "catch_nullptr"))]
43937		let ret = Ok((self.version_1_0.isenabled)(cap));
43938		#[cfg(feature = "diagnose")]
43939		if let Ok(ret) = ret {
43940			return to_result("glIsEnabled", ret, (self.version_1_0.geterror)());
43941		} else {
43942			return ret
43943		}
43944		#[cfg(not(feature = "diagnose"))]
43945		return ret;
43946	}
43947	#[inline(always)]
43948	fn glDepthRange(&self, n: GLdouble, f: GLdouble) -> Result<()> {
43949		#[cfg(feature = "catch_nullptr")]
43950		let ret = process_catch("glDepthRange", catch_unwind(||(self.version_1_0.depthrange)(n, f)));
43951		#[cfg(not(feature = "catch_nullptr"))]
43952		let ret = {(self.version_1_0.depthrange)(n, f); Ok(())};
43953		#[cfg(feature = "diagnose")]
43954		if let Ok(ret) = ret {
43955			return to_result("glDepthRange", ret, (self.version_1_0.geterror)());
43956		} else {
43957			return ret
43958		}
43959		#[cfg(not(feature = "diagnose"))]
43960		return ret;
43961	}
43962	#[inline(always)]
43963	fn glViewport(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
43964		#[cfg(feature = "catch_nullptr")]
43965		let ret = process_catch("glViewport", catch_unwind(||(self.version_1_0.viewport)(x, y, width, height)));
43966		#[cfg(not(feature = "catch_nullptr"))]
43967		let ret = {(self.version_1_0.viewport)(x, y, width, height); Ok(())};
43968		#[cfg(feature = "diagnose")]
43969		if let Ok(ret) = ret {
43970			return to_result("glViewport", ret, (self.version_1_0.geterror)());
43971		} else {
43972			return ret
43973		}
43974		#[cfg(not(feature = "diagnose"))]
43975		return ret;
43976	}
43977}
43978
43979impl GL_1_1_g for GLCore {
43980	#[inline(always)]
43981	fn glDrawArrays(&self, mode: GLenum, first: GLint, count: GLsizei) -> Result<()> {
43982		#[cfg(feature = "catch_nullptr")]
43983		let ret = process_catch("glDrawArrays", catch_unwind(||(self.version_1_1.drawarrays)(mode, first, count)));
43984		#[cfg(not(feature = "catch_nullptr"))]
43985		let ret = {(self.version_1_1.drawarrays)(mode, first, count); Ok(())};
43986		#[cfg(feature = "diagnose")]
43987		if let Ok(ret) = ret {
43988			return to_result("glDrawArrays", ret, (self.version_1_1.geterror)());
43989		} else {
43990			return ret
43991		}
43992		#[cfg(not(feature = "diagnose"))]
43993		return ret;
43994	}
43995	#[inline(always)]
43996	fn glDrawElements(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void) -> Result<()> {
43997		#[cfg(feature = "catch_nullptr")]
43998		let ret = process_catch("glDrawElements", catch_unwind(||(self.version_1_1.drawelements)(mode, count, type_, indices)));
43999		#[cfg(not(feature = "catch_nullptr"))]
44000		let ret = {(self.version_1_1.drawelements)(mode, count, type_, indices); Ok(())};
44001		#[cfg(feature = "diagnose")]
44002		if let Ok(ret) = ret {
44003			return to_result("glDrawElements", ret, (self.version_1_1.geterror)());
44004		} else {
44005			return ret
44006		}
44007		#[cfg(not(feature = "diagnose"))]
44008		return ret;
44009	}
44010	#[inline(always)]
44011	fn glGetPointerv(&self, pname: GLenum, params: *mut *mut c_void) -> Result<()> {
44012		#[cfg(feature = "catch_nullptr")]
44013		let ret = process_catch("glGetPointerv", catch_unwind(||(self.version_1_1.getpointerv)(pname, params)));
44014		#[cfg(not(feature = "catch_nullptr"))]
44015		let ret = {(self.version_1_1.getpointerv)(pname, params); Ok(())};
44016		#[cfg(feature = "diagnose")]
44017		if let Ok(ret) = ret {
44018			return to_result("glGetPointerv", ret, (self.version_1_1.geterror)());
44019		} else {
44020			return ret
44021		}
44022		#[cfg(not(feature = "diagnose"))]
44023		return ret;
44024	}
44025	#[inline(always)]
44026	fn glPolygonOffset(&self, factor: GLfloat, units: GLfloat) -> Result<()> {
44027		#[cfg(feature = "catch_nullptr")]
44028		let ret = process_catch("glPolygonOffset", catch_unwind(||(self.version_1_1.polygonoffset)(factor, units)));
44029		#[cfg(not(feature = "catch_nullptr"))]
44030		let ret = {(self.version_1_1.polygonoffset)(factor, units); Ok(())};
44031		#[cfg(feature = "diagnose")]
44032		if let Ok(ret) = ret {
44033			return to_result("glPolygonOffset", ret, (self.version_1_1.geterror)());
44034		} else {
44035			return ret
44036		}
44037		#[cfg(not(feature = "diagnose"))]
44038		return ret;
44039	}
44040	#[inline(always)]
44041	fn glCopyTexImage1D(&self, target: GLenum, level: GLint, internalformat: GLenum, x: GLint, y: GLint, width: GLsizei, border: GLint) -> Result<()> {
44042		#[cfg(feature = "catch_nullptr")]
44043		let ret = process_catch("glCopyTexImage1D", catch_unwind(||(self.version_1_1.copyteximage1d)(target, level, internalformat, x, y, width, border)));
44044		#[cfg(not(feature = "catch_nullptr"))]
44045		let ret = {(self.version_1_1.copyteximage1d)(target, level, internalformat, x, y, width, border); Ok(())};
44046		#[cfg(feature = "diagnose")]
44047		if let Ok(ret) = ret {
44048			return to_result("glCopyTexImage1D", ret, (self.version_1_1.geterror)());
44049		} else {
44050			return ret
44051		}
44052		#[cfg(not(feature = "diagnose"))]
44053		return ret;
44054	}
44055	#[inline(always)]
44056	fn glCopyTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei, border: GLint) -> Result<()> {
44057		#[cfg(feature = "catch_nullptr")]
44058		let ret = process_catch("glCopyTexImage2D", catch_unwind(||(self.version_1_1.copyteximage2d)(target, level, internalformat, x, y, width, height, border)));
44059		#[cfg(not(feature = "catch_nullptr"))]
44060		let ret = {(self.version_1_1.copyteximage2d)(target, level, internalformat, x, y, width, height, border); Ok(())};
44061		#[cfg(feature = "diagnose")]
44062		if let Ok(ret) = ret {
44063			return to_result("glCopyTexImage2D", ret, (self.version_1_1.geterror)());
44064		} else {
44065			return ret
44066		}
44067		#[cfg(not(feature = "diagnose"))]
44068		return ret;
44069	}
44070	#[inline(always)]
44071	fn glCopyTexSubImage1D(&self, target: GLenum, level: GLint, xoffset: GLint, x: GLint, y: GLint, width: GLsizei) -> Result<()> {
44072		#[cfg(feature = "catch_nullptr")]
44073		let ret = process_catch("glCopyTexSubImage1D", catch_unwind(||(self.version_1_1.copytexsubimage1d)(target, level, xoffset, x, y, width)));
44074		#[cfg(not(feature = "catch_nullptr"))]
44075		let ret = {(self.version_1_1.copytexsubimage1d)(target, level, xoffset, x, y, width); Ok(())};
44076		#[cfg(feature = "diagnose")]
44077		if let Ok(ret) = ret {
44078			return to_result("glCopyTexSubImage1D", ret, (self.version_1_1.geterror)());
44079		} else {
44080			return ret
44081		}
44082		#[cfg(not(feature = "diagnose"))]
44083		return ret;
44084	}
44085	#[inline(always)]
44086	fn glCopyTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
44087		#[cfg(feature = "catch_nullptr")]
44088		let ret = process_catch("glCopyTexSubImage2D", catch_unwind(||(self.version_1_1.copytexsubimage2d)(target, level, xoffset, yoffset, x, y, width, height)));
44089		#[cfg(not(feature = "catch_nullptr"))]
44090		let ret = {(self.version_1_1.copytexsubimage2d)(target, level, xoffset, yoffset, x, y, width, height); Ok(())};
44091		#[cfg(feature = "diagnose")]
44092		if let Ok(ret) = ret {
44093			return to_result("glCopyTexSubImage2D", ret, (self.version_1_1.geterror)());
44094		} else {
44095			return ret
44096		}
44097		#[cfg(not(feature = "diagnose"))]
44098		return ret;
44099	}
44100	#[inline(always)]
44101	fn glTexSubImage1D(&self, target: GLenum, level: GLint, xoffset: GLint, width: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
44102		#[cfg(feature = "catch_nullptr")]
44103		let ret = process_catch("glTexSubImage1D", catch_unwind(||(self.version_1_1.texsubimage1d)(target, level, xoffset, width, format, type_, pixels)));
44104		#[cfg(not(feature = "catch_nullptr"))]
44105		let ret = {(self.version_1_1.texsubimage1d)(target, level, xoffset, width, format, type_, pixels); Ok(())};
44106		#[cfg(feature = "diagnose")]
44107		if let Ok(ret) = ret {
44108			return to_result("glTexSubImage1D", ret, (self.version_1_1.geterror)());
44109		} else {
44110			return ret
44111		}
44112		#[cfg(not(feature = "diagnose"))]
44113		return ret;
44114	}
44115	#[inline(always)]
44116	fn glTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
44117		#[cfg(feature = "catch_nullptr")]
44118		let ret = process_catch("glTexSubImage2D", catch_unwind(||(self.version_1_1.texsubimage2d)(target, level, xoffset, yoffset, width, height, format, type_, pixels)));
44119		#[cfg(not(feature = "catch_nullptr"))]
44120		let ret = {(self.version_1_1.texsubimage2d)(target, level, xoffset, yoffset, width, height, format, type_, pixels); Ok(())};
44121		#[cfg(feature = "diagnose")]
44122		if let Ok(ret) = ret {
44123			return to_result("glTexSubImage2D", ret, (self.version_1_1.geterror)());
44124		} else {
44125			return ret
44126		}
44127		#[cfg(not(feature = "diagnose"))]
44128		return ret;
44129	}
44130	#[inline(always)]
44131	fn glBindTexture(&self, target: GLenum, texture: GLuint) -> Result<()> {
44132		#[cfg(feature = "catch_nullptr")]
44133		let ret = process_catch("glBindTexture", catch_unwind(||(self.version_1_1.bindtexture)(target, texture)));
44134		#[cfg(not(feature = "catch_nullptr"))]
44135		let ret = {(self.version_1_1.bindtexture)(target, texture); Ok(())};
44136		#[cfg(feature = "diagnose")]
44137		if let Ok(ret) = ret {
44138			return to_result("glBindTexture", ret, (self.version_1_1.geterror)());
44139		} else {
44140			return ret
44141		}
44142		#[cfg(not(feature = "diagnose"))]
44143		return ret;
44144	}
44145	#[inline(always)]
44146	fn glDeleteTextures(&self, n: GLsizei, textures: *const GLuint) -> Result<()> {
44147		#[cfg(feature = "catch_nullptr")]
44148		let ret = process_catch("glDeleteTextures", catch_unwind(||(self.version_1_1.deletetextures)(n, textures)));
44149		#[cfg(not(feature = "catch_nullptr"))]
44150		let ret = {(self.version_1_1.deletetextures)(n, textures); Ok(())};
44151		#[cfg(feature = "diagnose")]
44152		if let Ok(ret) = ret {
44153			return to_result("glDeleteTextures", ret, (self.version_1_1.geterror)());
44154		} else {
44155			return ret
44156		}
44157		#[cfg(not(feature = "diagnose"))]
44158		return ret;
44159	}
44160	#[inline(always)]
44161	fn glGenTextures(&self, n: GLsizei, textures: *mut GLuint) -> Result<()> {
44162		#[cfg(feature = "catch_nullptr")]
44163		let ret = process_catch("glGenTextures", catch_unwind(||(self.version_1_1.gentextures)(n, textures)));
44164		#[cfg(not(feature = "catch_nullptr"))]
44165		let ret = {(self.version_1_1.gentextures)(n, textures); Ok(())};
44166		#[cfg(feature = "diagnose")]
44167		if let Ok(ret) = ret {
44168			return to_result("glGenTextures", ret, (self.version_1_1.geterror)());
44169		} else {
44170			return ret
44171		}
44172		#[cfg(not(feature = "diagnose"))]
44173		return ret;
44174	}
44175	#[inline(always)]
44176	fn glIsTexture(&self, texture: GLuint) -> Result<GLboolean> {
44177		#[cfg(feature = "catch_nullptr")]
44178		let ret = process_catch("glIsTexture", catch_unwind(||(self.version_1_1.istexture)(texture)));
44179		#[cfg(not(feature = "catch_nullptr"))]
44180		let ret = Ok((self.version_1_1.istexture)(texture));
44181		#[cfg(feature = "diagnose")]
44182		if let Ok(ret) = ret {
44183			return to_result("glIsTexture", ret, (self.version_1_1.geterror)());
44184		} else {
44185			return ret
44186		}
44187		#[cfg(not(feature = "diagnose"))]
44188		return ret;
44189	}
44190}
44191
44192impl GL_1_2_g for GLCore {
44193	#[inline(always)]
44194	fn glDrawRangeElements(&self, mode: GLenum, start: GLuint, end: GLuint, count: GLsizei, type_: GLenum, indices: *const c_void) -> Result<()> {
44195		#[cfg(feature = "catch_nullptr")]
44196		let ret = process_catch("glDrawRangeElements", catch_unwind(||(self.version_1_2.drawrangeelements)(mode, start, end, count, type_, indices)));
44197		#[cfg(not(feature = "catch_nullptr"))]
44198		let ret = {(self.version_1_2.drawrangeelements)(mode, start, end, count, type_, indices); Ok(())};
44199		#[cfg(feature = "diagnose")]
44200		if let Ok(ret) = ret {
44201			return to_result("glDrawRangeElements", ret, (self.version_1_2.geterror)());
44202		} else {
44203			return ret
44204		}
44205		#[cfg(not(feature = "diagnose"))]
44206		return ret;
44207	}
44208	#[inline(always)]
44209	fn glTexImage3D(&self, target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
44210		#[cfg(feature = "catch_nullptr")]
44211		let ret = process_catch("glTexImage3D", catch_unwind(||(self.version_1_2.teximage3d)(target, level, internalformat, width, height, depth, border, format, type_, pixels)));
44212		#[cfg(not(feature = "catch_nullptr"))]
44213		let ret = {(self.version_1_2.teximage3d)(target, level, internalformat, width, height, depth, border, format, type_, pixels); Ok(())};
44214		#[cfg(feature = "diagnose")]
44215		if let Ok(ret) = ret {
44216			return to_result("glTexImage3D", ret, (self.version_1_2.geterror)());
44217		} else {
44218			return ret
44219		}
44220		#[cfg(not(feature = "diagnose"))]
44221		return ret;
44222	}
44223	#[inline(always)]
44224	fn glTexSubImage3D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
44225		#[cfg(feature = "catch_nullptr")]
44226		let ret = process_catch("glTexSubImage3D", catch_unwind(||(self.version_1_2.texsubimage3d)(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, pixels)));
44227		#[cfg(not(feature = "catch_nullptr"))]
44228		let ret = {(self.version_1_2.texsubimage3d)(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, pixels); Ok(())};
44229		#[cfg(feature = "diagnose")]
44230		if let Ok(ret) = ret {
44231			return to_result("glTexSubImage3D", ret, (self.version_1_2.geterror)());
44232		} else {
44233			return ret
44234		}
44235		#[cfg(not(feature = "diagnose"))]
44236		return ret;
44237	}
44238	#[inline(always)]
44239	fn glCopyTexSubImage3D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
44240		#[cfg(feature = "catch_nullptr")]
44241		let ret = process_catch("glCopyTexSubImage3D", catch_unwind(||(self.version_1_2.copytexsubimage3d)(target, level, xoffset, yoffset, zoffset, x, y, width, height)));
44242		#[cfg(not(feature = "catch_nullptr"))]
44243		let ret = {(self.version_1_2.copytexsubimage3d)(target, level, xoffset, yoffset, zoffset, x, y, width, height); Ok(())};
44244		#[cfg(feature = "diagnose")]
44245		if let Ok(ret) = ret {
44246			return to_result("glCopyTexSubImage3D", ret, (self.version_1_2.geterror)());
44247		} else {
44248			return ret
44249		}
44250		#[cfg(not(feature = "diagnose"))]
44251		return ret;
44252	}
44253}
44254
44255impl GL_1_3_g for GLCore {
44256	#[inline(always)]
44257	fn glActiveTexture(&self, texture: GLenum) -> Result<()> {
44258		#[cfg(feature = "catch_nullptr")]
44259		let ret = process_catch("glActiveTexture", catch_unwind(||(self.version_1_3.activetexture)(texture)));
44260		#[cfg(not(feature = "catch_nullptr"))]
44261		let ret = {(self.version_1_3.activetexture)(texture); Ok(())};
44262		#[cfg(feature = "diagnose")]
44263		if let Ok(ret) = ret {
44264			return to_result("glActiveTexture", ret, (self.version_1_3.geterror)());
44265		} else {
44266			return ret
44267		}
44268		#[cfg(not(feature = "diagnose"))]
44269		return ret;
44270	}
44271	#[inline(always)]
44272	fn glSampleCoverage(&self, value: GLfloat, invert: GLboolean) -> Result<()> {
44273		#[cfg(feature = "catch_nullptr")]
44274		let ret = process_catch("glSampleCoverage", catch_unwind(||(self.version_1_3.samplecoverage)(value, invert)));
44275		#[cfg(not(feature = "catch_nullptr"))]
44276		let ret = {(self.version_1_3.samplecoverage)(value, invert); Ok(())};
44277		#[cfg(feature = "diagnose")]
44278		if let Ok(ret) = ret {
44279			return to_result("glSampleCoverage", ret, (self.version_1_3.geterror)());
44280		} else {
44281			return ret
44282		}
44283		#[cfg(not(feature = "diagnose"))]
44284		return ret;
44285	}
44286	#[inline(always)]
44287	fn glCompressedTexImage3D(&self, target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, imageSize: GLsizei, data: *const c_void) -> Result<()> {
44288		#[cfg(feature = "catch_nullptr")]
44289		let ret = process_catch("glCompressedTexImage3D", catch_unwind(||(self.version_1_3.compressedteximage3d)(target, level, internalformat, width, height, depth, border, imageSize, data)));
44290		#[cfg(not(feature = "catch_nullptr"))]
44291		let ret = {(self.version_1_3.compressedteximage3d)(target, level, internalformat, width, height, depth, border, imageSize, data); Ok(())};
44292		#[cfg(feature = "diagnose")]
44293		if let Ok(ret) = ret {
44294			return to_result("glCompressedTexImage3D", ret, (self.version_1_3.geterror)());
44295		} else {
44296			return ret
44297		}
44298		#[cfg(not(feature = "diagnose"))]
44299		return ret;
44300	}
44301	#[inline(always)]
44302	fn glCompressedTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, border: GLint, imageSize: GLsizei, data: *const c_void) -> Result<()> {
44303		#[cfg(feature = "catch_nullptr")]
44304		let ret = process_catch("glCompressedTexImage2D", catch_unwind(||(self.version_1_3.compressedteximage2d)(target, level, internalformat, width, height, border, imageSize, data)));
44305		#[cfg(not(feature = "catch_nullptr"))]
44306		let ret = {(self.version_1_3.compressedteximage2d)(target, level, internalformat, width, height, border, imageSize, data); Ok(())};
44307		#[cfg(feature = "diagnose")]
44308		if let Ok(ret) = ret {
44309			return to_result("glCompressedTexImage2D", ret, (self.version_1_3.geterror)());
44310		} else {
44311			return ret
44312		}
44313		#[cfg(not(feature = "diagnose"))]
44314		return ret;
44315	}
44316	#[inline(always)]
44317	fn glCompressedTexImage1D(&self, target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, border: GLint, imageSize: GLsizei, data: *const c_void) -> Result<()> {
44318		#[cfg(feature = "catch_nullptr")]
44319		let ret = process_catch("glCompressedTexImage1D", catch_unwind(||(self.version_1_3.compressedteximage1d)(target, level, internalformat, width, border, imageSize, data)));
44320		#[cfg(not(feature = "catch_nullptr"))]
44321		let ret = {(self.version_1_3.compressedteximage1d)(target, level, internalformat, width, border, imageSize, data); Ok(())};
44322		#[cfg(feature = "diagnose")]
44323		if let Ok(ret) = ret {
44324			return to_result("glCompressedTexImage1D", ret, (self.version_1_3.geterror)());
44325		} else {
44326			return ret
44327		}
44328		#[cfg(not(feature = "diagnose"))]
44329		return ret;
44330	}
44331	#[inline(always)]
44332	fn glCompressedTexSubImage3D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()> {
44333		#[cfg(feature = "catch_nullptr")]
44334		let ret = process_catch("glCompressedTexSubImage3D", catch_unwind(||(self.version_1_3.compressedtexsubimage3d)(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data)));
44335		#[cfg(not(feature = "catch_nullptr"))]
44336		let ret = {(self.version_1_3.compressedtexsubimage3d)(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); Ok(())};
44337		#[cfg(feature = "diagnose")]
44338		if let Ok(ret) = ret {
44339			return to_result("glCompressedTexSubImage3D", ret, (self.version_1_3.geterror)());
44340		} else {
44341			return ret
44342		}
44343		#[cfg(not(feature = "diagnose"))]
44344		return ret;
44345	}
44346	#[inline(always)]
44347	fn glCompressedTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()> {
44348		#[cfg(feature = "catch_nullptr")]
44349		let ret = process_catch("glCompressedTexSubImage2D", catch_unwind(||(self.version_1_3.compressedtexsubimage2d)(target, level, xoffset, yoffset, width, height, format, imageSize, data)));
44350		#[cfg(not(feature = "catch_nullptr"))]
44351		let ret = {(self.version_1_3.compressedtexsubimage2d)(target, level, xoffset, yoffset, width, height, format, imageSize, data); Ok(())};
44352		#[cfg(feature = "diagnose")]
44353		if let Ok(ret) = ret {
44354			return to_result("glCompressedTexSubImage2D", ret, (self.version_1_3.geterror)());
44355		} else {
44356			return ret
44357		}
44358		#[cfg(not(feature = "diagnose"))]
44359		return ret;
44360	}
44361	#[inline(always)]
44362	fn glCompressedTexSubImage1D(&self, target: GLenum, level: GLint, xoffset: GLint, width: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()> {
44363		#[cfg(feature = "catch_nullptr")]
44364		let ret = process_catch("glCompressedTexSubImage1D", catch_unwind(||(self.version_1_3.compressedtexsubimage1d)(target, level, xoffset, width, format, imageSize, data)));
44365		#[cfg(not(feature = "catch_nullptr"))]
44366		let ret = {(self.version_1_3.compressedtexsubimage1d)(target, level, xoffset, width, format, imageSize, data); Ok(())};
44367		#[cfg(feature = "diagnose")]
44368		if let Ok(ret) = ret {
44369			return to_result("glCompressedTexSubImage1D", ret, (self.version_1_3.geterror)());
44370		} else {
44371			return ret
44372		}
44373		#[cfg(not(feature = "diagnose"))]
44374		return ret;
44375	}
44376	#[inline(always)]
44377	fn glGetCompressedTexImage(&self, target: GLenum, level: GLint, img: *mut c_void) -> Result<()> {
44378		#[cfg(feature = "catch_nullptr")]
44379		let ret = process_catch("glGetCompressedTexImage", catch_unwind(||(self.version_1_3.getcompressedteximage)(target, level, img)));
44380		#[cfg(not(feature = "catch_nullptr"))]
44381		let ret = {(self.version_1_3.getcompressedteximage)(target, level, img); Ok(())};
44382		#[cfg(feature = "diagnose")]
44383		if let Ok(ret) = ret {
44384			return to_result("glGetCompressedTexImage", ret, (self.version_1_3.geterror)());
44385		} else {
44386			return ret
44387		}
44388		#[cfg(not(feature = "diagnose"))]
44389		return ret;
44390	}
44391	#[inline(always)]
44392	fn glClientActiveTexture(&self, texture: GLenum) -> Result<()> {
44393		#[cfg(feature = "catch_nullptr")]
44394		let ret = process_catch("glClientActiveTexture", catch_unwind(||(self.version_1_3.clientactivetexture)(texture)));
44395		#[cfg(not(feature = "catch_nullptr"))]
44396		let ret = {(self.version_1_3.clientactivetexture)(texture); Ok(())};
44397		#[cfg(feature = "diagnose")]
44398		if let Ok(ret) = ret {
44399			return to_result("glClientActiveTexture", ret, (self.version_1_3.geterror)());
44400		} else {
44401			return ret
44402		}
44403		#[cfg(not(feature = "diagnose"))]
44404		return ret;
44405	}
44406	#[inline(always)]
44407	fn glMultiTexCoord1d(&self, target: GLenum, s: GLdouble) -> Result<()> {
44408		#[cfg(feature = "catch_nullptr")]
44409		let ret = process_catch("glMultiTexCoord1d", catch_unwind(||(self.version_1_3.multitexcoord1d)(target, s)));
44410		#[cfg(not(feature = "catch_nullptr"))]
44411		let ret = {(self.version_1_3.multitexcoord1d)(target, s); Ok(())};
44412		#[cfg(feature = "diagnose")]
44413		if let Ok(ret) = ret {
44414			return to_result("glMultiTexCoord1d", ret, (self.version_1_3.geterror)());
44415		} else {
44416			return ret
44417		}
44418		#[cfg(not(feature = "diagnose"))]
44419		return ret;
44420	}
44421	#[inline(always)]
44422	fn glMultiTexCoord1dv(&self, target: GLenum, v: *const GLdouble) -> Result<()> {
44423		#[cfg(feature = "catch_nullptr")]
44424		let ret = process_catch("glMultiTexCoord1dv", catch_unwind(||(self.version_1_3.multitexcoord1dv)(target, v)));
44425		#[cfg(not(feature = "catch_nullptr"))]
44426		let ret = {(self.version_1_3.multitexcoord1dv)(target, v); Ok(())};
44427		#[cfg(feature = "diagnose")]
44428		if let Ok(ret) = ret {
44429			return to_result("glMultiTexCoord1dv", ret, (self.version_1_3.geterror)());
44430		} else {
44431			return ret
44432		}
44433		#[cfg(not(feature = "diagnose"))]
44434		return ret;
44435	}
44436	#[inline(always)]
44437	fn glMultiTexCoord1f(&self, target: GLenum, s: GLfloat) -> Result<()> {
44438		#[cfg(feature = "catch_nullptr")]
44439		let ret = process_catch("glMultiTexCoord1f", catch_unwind(||(self.version_1_3.multitexcoord1f)(target, s)));
44440		#[cfg(not(feature = "catch_nullptr"))]
44441		let ret = {(self.version_1_3.multitexcoord1f)(target, s); Ok(())};
44442		#[cfg(feature = "diagnose")]
44443		if let Ok(ret) = ret {
44444			return to_result("glMultiTexCoord1f", ret, (self.version_1_3.geterror)());
44445		} else {
44446			return ret
44447		}
44448		#[cfg(not(feature = "diagnose"))]
44449		return ret;
44450	}
44451	#[inline(always)]
44452	fn glMultiTexCoord1fv(&self, target: GLenum, v: *const GLfloat) -> Result<()> {
44453		#[cfg(feature = "catch_nullptr")]
44454		let ret = process_catch("glMultiTexCoord1fv", catch_unwind(||(self.version_1_3.multitexcoord1fv)(target, v)));
44455		#[cfg(not(feature = "catch_nullptr"))]
44456		let ret = {(self.version_1_3.multitexcoord1fv)(target, v); Ok(())};
44457		#[cfg(feature = "diagnose")]
44458		if let Ok(ret) = ret {
44459			return to_result("glMultiTexCoord1fv", ret, (self.version_1_3.geterror)());
44460		} else {
44461			return ret
44462		}
44463		#[cfg(not(feature = "diagnose"))]
44464		return ret;
44465	}
44466	#[inline(always)]
44467	fn glMultiTexCoord1i(&self, target: GLenum, s: GLint) -> Result<()> {
44468		#[cfg(feature = "catch_nullptr")]
44469		let ret = process_catch("glMultiTexCoord1i", catch_unwind(||(self.version_1_3.multitexcoord1i)(target, s)));
44470		#[cfg(not(feature = "catch_nullptr"))]
44471		let ret = {(self.version_1_3.multitexcoord1i)(target, s); Ok(())};
44472		#[cfg(feature = "diagnose")]
44473		if let Ok(ret) = ret {
44474			return to_result("glMultiTexCoord1i", ret, (self.version_1_3.geterror)());
44475		} else {
44476			return ret
44477		}
44478		#[cfg(not(feature = "diagnose"))]
44479		return ret;
44480	}
44481	#[inline(always)]
44482	fn glMultiTexCoord1iv(&self, target: GLenum, v: *const GLint) -> Result<()> {
44483		#[cfg(feature = "catch_nullptr")]
44484		let ret = process_catch("glMultiTexCoord1iv", catch_unwind(||(self.version_1_3.multitexcoord1iv)(target, v)));
44485		#[cfg(not(feature = "catch_nullptr"))]
44486		let ret = {(self.version_1_3.multitexcoord1iv)(target, v); Ok(())};
44487		#[cfg(feature = "diagnose")]
44488		if let Ok(ret) = ret {
44489			return to_result("glMultiTexCoord1iv", ret, (self.version_1_3.geterror)());
44490		} else {
44491			return ret
44492		}
44493		#[cfg(not(feature = "diagnose"))]
44494		return ret;
44495	}
44496	#[inline(always)]
44497	fn glMultiTexCoord1s(&self, target: GLenum, s: GLshort) -> Result<()> {
44498		#[cfg(feature = "catch_nullptr")]
44499		let ret = process_catch("glMultiTexCoord1s", catch_unwind(||(self.version_1_3.multitexcoord1s)(target, s)));
44500		#[cfg(not(feature = "catch_nullptr"))]
44501		let ret = {(self.version_1_3.multitexcoord1s)(target, s); Ok(())};
44502		#[cfg(feature = "diagnose")]
44503		if let Ok(ret) = ret {
44504			return to_result("glMultiTexCoord1s", ret, (self.version_1_3.geterror)());
44505		} else {
44506			return ret
44507		}
44508		#[cfg(not(feature = "diagnose"))]
44509		return ret;
44510	}
44511	#[inline(always)]
44512	fn glMultiTexCoord1sv(&self, target: GLenum, v: *const GLshort) -> Result<()> {
44513		#[cfg(feature = "catch_nullptr")]
44514		let ret = process_catch("glMultiTexCoord1sv", catch_unwind(||(self.version_1_3.multitexcoord1sv)(target, v)));
44515		#[cfg(not(feature = "catch_nullptr"))]
44516		let ret = {(self.version_1_3.multitexcoord1sv)(target, v); Ok(())};
44517		#[cfg(feature = "diagnose")]
44518		if let Ok(ret) = ret {
44519			return to_result("glMultiTexCoord1sv", ret, (self.version_1_3.geterror)());
44520		} else {
44521			return ret
44522		}
44523		#[cfg(not(feature = "diagnose"))]
44524		return ret;
44525	}
44526	#[inline(always)]
44527	fn glMultiTexCoord2d(&self, target: GLenum, s: GLdouble, t: GLdouble) -> Result<()> {
44528		#[cfg(feature = "catch_nullptr")]
44529		let ret = process_catch("glMultiTexCoord2d", catch_unwind(||(self.version_1_3.multitexcoord2d)(target, s, t)));
44530		#[cfg(not(feature = "catch_nullptr"))]
44531		let ret = {(self.version_1_3.multitexcoord2d)(target, s, t); Ok(())};
44532		#[cfg(feature = "diagnose")]
44533		if let Ok(ret) = ret {
44534			return to_result("glMultiTexCoord2d", ret, (self.version_1_3.geterror)());
44535		} else {
44536			return ret
44537		}
44538		#[cfg(not(feature = "diagnose"))]
44539		return ret;
44540	}
44541	#[inline(always)]
44542	fn glMultiTexCoord2dv(&self, target: GLenum, v: *const GLdouble) -> Result<()> {
44543		#[cfg(feature = "catch_nullptr")]
44544		let ret = process_catch("glMultiTexCoord2dv", catch_unwind(||(self.version_1_3.multitexcoord2dv)(target, v)));
44545		#[cfg(not(feature = "catch_nullptr"))]
44546		let ret = {(self.version_1_3.multitexcoord2dv)(target, v); Ok(())};
44547		#[cfg(feature = "diagnose")]
44548		if let Ok(ret) = ret {
44549			return to_result("glMultiTexCoord2dv", ret, (self.version_1_3.geterror)());
44550		} else {
44551			return ret
44552		}
44553		#[cfg(not(feature = "diagnose"))]
44554		return ret;
44555	}
44556	#[inline(always)]
44557	fn glMultiTexCoord2f(&self, target: GLenum, s: GLfloat, t: GLfloat) -> Result<()> {
44558		#[cfg(feature = "catch_nullptr")]
44559		let ret = process_catch("glMultiTexCoord2f", catch_unwind(||(self.version_1_3.multitexcoord2f)(target, s, t)));
44560		#[cfg(not(feature = "catch_nullptr"))]
44561		let ret = {(self.version_1_3.multitexcoord2f)(target, s, t); Ok(())};
44562		#[cfg(feature = "diagnose")]
44563		if let Ok(ret) = ret {
44564			return to_result("glMultiTexCoord2f", ret, (self.version_1_3.geterror)());
44565		} else {
44566			return ret
44567		}
44568		#[cfg(not(feature = "diagnose"))]
44569		return ret;
44570	}
44571	#[inline(always)]
44572	fn glMultiTexCoord2fv(&self, target: GLenum, v: *const GLfloat) -> Result<()> {
44573		#[cfg(feature = "catch_nullptr")]
44574		let ret = process_catch("glMultiTexCoord2fv", catch_unwind(||(self.version_1_3.multitexcoord2fv)(target, v)));
44575		#[cfg(not(feature = "catch_nullptr"))]
44576		let ret = {(self.version_1_3.multitexcoord2fv)(target, v); Ok(())};
44577		#[cfg(feature = "diagnose")]
44578		if let Ok(ret) = ret {
44579			return to_result("glMultiTexCoord2fv", ret, (self.version_1_3.geterror)());
44580		} else {
44581			return ret
44582		}
44583		#[cfg(not(feature = "diagnose"))]
44584		return ret;
44585	}
44586	#[inline(always)]
44587	fn glMultiTexCoord2i(&self, target: GLenum, s: GLint, t: GLint) -> Result<()> {
44588		#[cfg(feature = "catch_nullptr")]
44589		let ret = process_catch("glMultiTexCoord2i", catch_unwind(||(self.version_1_3.multitexcoord2i)(target, s, t)));
44590		#[cfg(not(feature = "catch_nullptr"))]
44591		let ret = {(self.version_1_3.multitexcoord2i)(target, s, t); Ok(())};
44592		#[cfg(feature = "diagnose")]
44593		if let Ok(ret) = ret {
44594			return to_result("glMultiTexCoord2i", ret, (self.version_1_3.geterror)());
44595		} else {
44596			return ret
44597		}
44598		#[cfg(not(feature = "diagnose"))]
44599		return ret;
44600	}
44601	#[inline(always)]
44602	fn glMultiTexCoord2iv(&self, target: GLenum, v: *const GLint) -> Result<()> {
44603		#[cfg(feature = "catch_nullptr")]
44604		let ret = process_catch("glMultiTexCoord2iv", catch_unwind(||(self.version_1_3.multitexcoord2iv)(target, v)));
44605		#[cfg(not(feature = "catch_nullptr"))]
44606		let ret = {(self.version_1_3.multitexcoord2iv)(target, v); Ok(())};
44607		#[cfg(feature = "diagnose")]
44608		if let Ok(ret) = ret {
44609			return to_result("glMultiTexCoord2iv", ret, (self.version_1_3.geterror)());
44610		} else {
44611			return ret
44612		}
44613		#[cfg(not(feature = "diagnose"))]
44614		return ret;
44615	}
44616	#[inline(always)]
44617	fn glMultiTexCoord2s(&self, target: GLenum, s: GLshort, t: GLshort) -> Result<()> {
44618		#[cfg(feature = "catch_nullptr")]
44619		let ret = process_catch("glMultiTexCoord2s", catch_unwind(||(self.version_1_3.multitexcoord2s)(target, s, t)));
44620		#[cfg(not(feature = "catch_nullptr"))]
44621		let ret = {(self.version_1_3.multitexcoord2s)(target, s, t); Ok(())};
44622		#[cfg(feature = "diagnose")]
44623		if let Ok(ret) = ret {
44624			return to_result("glMultiTexCoord2s", ret, (self.version_1_3.geterror)());
44625		} else {
44626			return ret
44627		}
44628		#[cfg(not(feature = "diagnose"))]
44629		return ret;
44630	}
44631	#[inline(always)]
44632	fn glMultiTexCoord2sv(&self, target: GLenum, v: *const GLshort) -> Result<()> {
44633		#[cfg(feature = "catch_nullptr")]
44634		let ret = process_catch("glMultiTexCoord2sv", catch_unwind(||(self.version_1_3.multitexcoord2sv)(target, v)));
44635		#[cfg(not(feature = "catch_nullptr"))]
44636		let ret = {(self.version_1_3.multitexcoord2sv)(target, v); Ok(())};
44637		#[cfg(feature = "diagnose")]
44638		if let Ok(ret) = ret {
44639			return to_result("glMultiTexCoord2sv", ret, (self.version_1_3.geterror)());
44640		} else {
44641			return ret
44642		}
44643		#[cfg(not(feature = "diagnose"))]
44644		return ret;
44645	}
44646	#[inline(always)]
44647	fn glMultiTexCoord3d(&self, target: GLenum, s: GLdouble, t: GLdouble, r: GLdouble) -> Result<()> {
44648		#[cfg(feature = "catch_nullptr")]
44649		let ret = process_catch("glMultiTexCoord3d", catch_unwind(||(self.version_1_3.multitexcoord3d)(target, s, t, r)));
44650		#[cfg(not(feature = "catch_nullptr"))]
44651		let ret = {(self.version_1_3.multitexcoord3d)(target, s, t, r); Ok(())};
44652		#[cfg(feature = "diagnose")]
44653		if let Ok(ret) = ret {
44654			return to_result("glMultiTexCoord3d", ret, (self.version_1_3.geterror)());
44655		} else {
44656			return ret
44657		}
44658		#[cfg(not(feature = "diagnose"))]
44659		return ret;
44660	}
44661	#[inline(always)]
44662	fn glMultiTexCoord3dv(&self, target: GLenum, v: *const GLdouble) -> Result<()> {
44663		#[cfg(feature = "catch_nullptr")]
44664		let ret = process_catch("glMultiTexCoord3dv", catch_unwind(||(self.version_1_3.multitexcoord3dv)(target, v)));
44665		#[cfg(not(feature = "catch_nullptr"))]
44666		let ret = {(self.version_1_3.multitexcoord3dv)(target, v); Ok(())};
44667		#[cfg(feature = "diagnose")]
44668		if let Ok(ret) = ret {
44669			return to_result("glMultiTexCoord3dv", ret, (self.version_1_3.geterror)());
44670		} else {
44671			return ret
44672		}
44673		#[cfg(not(feature = "diagnose"))]
44674		return ret;
44675	}
44676	#[inline(always)]
44677	fn glMultiTexCoord3f(&self, target: GLenum, s: GLfloat, t: GLfloat, r: GLfloat) -> Result<()> {
44678		#[cfg(feature = "catch_nullptr")]
44679		let ret = process_catch("glMultiTexCoord3f", catch_unwind(||(self.version_1_3.multitexcoord3f)(target, s, t, r)));
44680		#[cfg(not(feature = "catch_nullptr"))]
44681		let ret = {(self.version_1_3.multitexcoord3f)(target, s, t, r); Ok(())};
44682		#[cfg(feature = "diagnose")]
44683		if let Ok(ret) = ret {
44684			return to_result("glMultiTexCoord3f", ret, (self.version_1_3.geterror)());
44685		} else {
44686			return ret
44687		}
44688		#[cfg(not(feature = "diagnose"))]
44689		return ret;
44690	}
44691	#[inline(always)]
44692	fn glMultiTexCoord3fv(&self, target: GLenum, v: *const GLfloat) -> Result<()> {
44693		#[cfg(feature = "catch_nullptr")]
44694		let ret = process_catch("glMultiTexCoord3fv", catch_unwind(||(self.version_1_3.multitexcoord3fv)(target, v)));
44695		#[cfg(not(feature = "catch_nullptr"))]
44696		let ret = {(self.version_1_3.multitexcoord3fv)(target, v); Ok(())};
44697		#[cfg(feature = "diagnose")]
44698		if let Ok(ret) = ret {
44699			return to_result("glMultiTexCoord3fv", ret, (self.version_1_3.geterror)());
44700		} else {
44701			return ret
44702		}
44703		#[cfg(not(feature = "diagnose"))]
44704		return ret;
44705	}
44706	#[inline(always)]
44707	fn glMultiTexCoord3i(&self, target: GLenum, s: GLint, t: GLint, r: GLint) -> Result<()> {
44708		#[cfg(feature = "catch_nullptr")]
44709		let ret = process_catch("glMultiTexCoord3i", catch_unwind(||(self.version_1_3.multitexcoord3i)(target, s, t, r)));
44710		#[cfg(not(feature = "catch_nullptr"))]
44711		let ret = {(self.version_1_3.multitexcoord3i)(target, s, t, r); Ok(())};
44712		#[cfg(feature = "diagnose")]
44713		if let Ok(ret) = ret {
44714			return to_result("glMultiTexCoord3i", ret, (self.version_1_3.geterror)());
44715		} else {
44716			return ret
44717		}
44718		#[cfg(not(feature = "diagnose"))]
44719		return ret;
44720	}
44721	#[inline(always)]
44722	fn glMultiTexCoord3iv(&self, target: GLenum, v: *const GLint) -> Result<()> {
44723		#[cfg(feature = "catch_nullptr")]
44724		let ret = process_catch("glMultiTexCoord3iv", catch_unwind(||(self.version_1_3.multitexcoord3iv)(target, v)));
44725		#[cfg(not(feature = "catch_nullptr"))]
44726		let ret = {(self.version_1_3.multitexcoord3iv)(target, v); Ok(())};
44727		#[cfg(feature = "diagnose")]
44728		if let Ok(ret) = ret {
44729			return to_result("glMultiTexCoord3iv", ret, (self.version_1_3.geterror)());
44730		} else {
44731			return ret
44732		}
44733		#[cfg(not(feature = "diagnose"))]
44734		return ret;
44735	}
44736	#[inline(always)]
44737	fn glMultiTexCoord3s(&self, target: GLenum, s: GLshort, t: GLshort, r: GLshort) -> Result<()> {
44738		#[cfg(feature = "catch_nullptr")]
44739		let ret = process_catch("glMultiTexCoord3s", catch_unwind(||(self.version_1_3.multitexcoord3s)(target, s, t, r)));
44740		#[cfg(not(feature = "catch_nullptr"))]
44741		let ret = {(self.version_1_3.multitexcoord3s)(target, s, t, r); Ok(())};
44742		#[cfg(feature = "diagnose")]
44743		if let Ok(ret) = ret {
44744			return to_result("glMultiTexCoord3s", ret, (self.version_1_3.geterror)());
44745		} else {
44746			return ret
44747		}
44748		#[cfg(not(feature = "diagnose"))]
44749		return ret;
44750	}
44751	#[inline(always)]
44752	fn glMultiTexCoord3sv(&self, target: GLenum, v: *const GLshort) -> Result<()> {
44753		#[cfg(feature = "catch_nullptr")]
44754		let ret = process_catch("glMultiTexCoord3sv", catch_unwind(||(self.version_1_3.multitexcoord3sv)(target, v)));
44755		#[cfg(not(feature = "catch_nullptr"))]
44756		let ret = {(self.version_1_3.multitexcoord3sv)(target, v); Ok(())};
44757		#[cfg(feature = "diagnose")]
44758		if let Ok(ret) = ret {
44759			return to_result("glMultiTexCoord3sv", ret, (self.version_1_3.geterror)());
44760		} else {
44761			return ret
44762		}
44763		#[cfg(not(feature = "diagnose"))]
44764		return ret;
44765	}
44766	#[inline(always)]
44767	fn glMultiTexCoord4d(&self, target: GLenum, s: GLdouble, t: GLdouble, r: GLdouble, q: GLdouble) -> Result<()> {
44768		#[cfg(feature = "catch_nullptr")]
44769		let ret = process_catch("glMultiTexCoord4d", catch_unwind(||(self.version_1_3.multitexcoord4d)(target, s, t, r, q)));
44770		#[cfg(not(feature = "catch_nullptr"))]
44771		let ret = {(self.version_1_3.multitexcoord4d)(target, s, t, r, q); Ok(())};
44772		#[cfg(feature = "diagnose")]
44773		if let Ok(ret) = ret {
44774			return to_result("glMultiTexCoord4d", ret, (self.version_1_3.geterror)());
44775		} else {
44776			return ret
44777		}
44778		#[cfg(not(feature = "diagnose"))]
44779		return ret;
44780	}
44781	#[inline(always)]
44782	fn glMultiTexCoord4dv(&self, target: GLenum, v: *const GLdouble) -> Result<()> {
44783		#[cfg(feature = "catch_nullptr")]
44784		let ret = process_catch("glMultiTexCoord4dv", catch_unwind(||(self.version_1_3.multitexcoord4dv)(target, v)));
44785		#[cfg(not(feature = "catch_nullptr"))]
44786		let ret = {(self.version_1_3.multitexcoord4dv)(target, v); Ok(())};
44787		#[cfg(feature = "diagnose")]
44788		if let Ok(ret) = ret {
44789			return to_result("glMultiTexCoord4dv", ret, (self.version_1_3.geterror)());
44790		} else {
44791			return ret
44792		}
44793		#[cfg(not(feature = "diagnose"))]
44794		return ret;
44795	}
44796	#[inline(always)]
44797	fn glMultiTexCoord4f(&self, target: GLenum, s: GLfloat, t: GLfloat, r: GLfloat, q: GLfloat) -> Result<()> {
44798		#[cfg(feature = "catch_nullptr")]
44799		let ret = process_catch("glMultiTexCoord4f", catch_unwind(||(self.version_1_3.multitexcoord4f)(target, s, t, r, q)));
44800		#[cfg(not(feature = "catch_nullptr"))]
44801		let ret = {(self.version_1_3.multitexcoord4f)(target, s, t, r, q); Ok(())};
44802		#[cfg(feature = "diagnose")]
44803		if let Ok(ret) = ret {
44804			return to_result("glMultiTexCoord4f", ret, (self.version_1_3.geterror)());
44805		} else {
44806			return ret
44807		}
44808		#[cfg(not(feature = "diagnose"))]
44809		return ret;
44810	}
44811	#[inline(always)]
44812	fn glMultiTexCoord4fv(&self, target: GLenum, v: *const GLfloat) -> Result<()> {
44813		#[cfg(feature = "catch_nullptr")]
44814		let ret = process_catch("glMultiTexCoord4fv", catch_unwind(||(self.version_1_3.multitexcoord4fv)(target, v)));
44815		#[cfg(not(feature = "catch_nullptr"))]
44816		let ret = {(self.version_1_3.multitexcoord4fv)(target, v); Ok(())};
44817		#[cfg(feature = "diagnose")]
44818		if let Ok(ret) = ret {
44819			return to_result("glMultiTexCoord4fv", ret, (self.version_1_3.geterror)());
44820		} else {
44821			return ret
44822		}
44823		#[cfg(not(feature = "diagnose"))]
44824		return ret;
44825	}
44826	#[inline(always)]
44827	fn glMultiTexCoord4i(&self, target: GLenum, s: GLint, t: GLint, r: GLint, q: GLint) -> Result<()> {
44828		#[cfg(feature = "catch_nullptr")]
44829		let ret = process_catch("glMultiTexCoord4i", catch_unwind(||(self.version_1_3.multitexcoord4i)(target, s, t, r, q)));
44830		#[cfg(not(feature = "catch_nullptr"))]
44831		let ret = {(self.version_1_3.multitexcoord4i)(target, s, t, r, q); Ok(())};
44832		#[cfg(feature = "diagnose")]
44833		if let Ok(ret) = ret {
44834			return to_result("glMultiTexCoord4i", ret, (self.version_1_3.geterror)());
44835		} else {
44836			return ret
44837		}
44838		#[cfg(not(feature = "diagnose"))]
44839		return ret;
44840	}
44841	#[inline(always)]
44842	fn glMultiTexCoord4iv(&self, target: GLenum, v: *const GLint) -> Result<()> {
44843		#[cfg(feature = "catch_nullptr")]
44844		let ret = process_catch("glMultiTexCoord4iv", catch_unwind(||(self.version_1_3.multitexcoord4iv)(target, v)));
44845		#[cfg(not(feature = "catch_nullptr"))]
44846		let ret = {(self.version_1_3.multitexcoord4iv)(target, v); Ok(())};
44847		#[cfg(feature = "diagnose")]
44848		if let Ok(ret) = ret {
44849			return to_result("glMultiTexCoord4iv", ret, (self.version_1_3.geterror)());
44850		} else {
44851			return ret
44852		}
44853		#[cfg(not(feature = "diagnose"))]
44854		return ret;
44855	}
44856	#[inline(always)]
44857	fn glMultiTexCoord4s(&self, target: GLenum, s: GLshort, t: GLshort, r: GLshort, q: GLshort) -> Result<()> {
44858		#[cfg(feature = "catch_nullptr")]
44859		let ret = process_catch("glMultiTexCoord4s", catch_unwind(||(self.version_1_3.multitexcoord4s)(target, s, t, r, q)));
44860		#[cfg(not(feature = "catch_nullptr"))]
44861		let ret = {(self.version_1_3.multitexcoord4s)(target, s, t, r, q); Ok(())};
44862		#[cfg(feature = "diagnose")]
44863		if let Ok(ret) = ret {
44864			return to_result("glMultiTexCoord4s", ret, (self.version_1_3.geterror)());
44865		} else {
44866			return ret
44867		}
44868		#[cfg(not(feature = "diagnose"))]
44869		return ret;
44870	}
44871	#[inline(always)]
44872	fn glMultiTexCoord4sv(&self, target: GLenum, v: *const GLshort) -> Result<()> {
44873		#[cfg(feature = "catch_nullptr")]
44874		let ret = process_catch("glMultiTexCoord4sv", catch_unwind(||(self.version_1_3.multitexcoord4sv)(target, v)));
44875		#[cfg(not(feature = "catch_nullptr"))]
44876		let ret = {(self.version_1_3.multitexcoord4sv)(target, v); Ok(())};
44877		#[cfg(feature = "diagnose")]
44878		if let Ok(ret) = ret {
44879			return to_result("glMultiTexCoord4sv", ret, (self.version_1_3.geterror)());
44880		} else {
44881			return ret
44882		}
44883		#[cfg(not(feature = "diagnose"))]
44884		return ret;
44885	}
44886	#[inline(always)]
44887	fn glLoadTransposeMatrixf(&self, m: *const GLfloat) -> Result<()> {
44888		#[cfg(feature = "catch_nullptr")]
44889		let ret = process_catch("glLoadTransposeMatrixf", catch_unwind(||(self.version_1_3.loadtransposematrixf)(m)));
44890		#[cfg(not(feature = "catch_nullptr"))]
44891		let ret = {(self.version_1_3.loadtransposematrixf)(m); Ok(())};
44892		#[cfg(feature = "diagnose")]
44893		if let Ok(ret) = ret {
44894			return to_result("glLoadTransposeMatrixf", ret, (self.version_1_3.geterror)());
44895		} else {
44896			return ret
44897		}
44898		#[cfg(not(feature = "diagnose"))]
44899		return ret;
44900	}
44901	#[inline(always)]
44902	fn glLoadTransposeMatrixd(&self, m: *const GLdouble) -> Result<()> {
44903		#[cfg(feature = "catch_nullptr")]
44904		let ret = process_catch("glLoadTransposeMatrixd", catch_unwind(||(self.version_1_3.loadtransposematrixd)(m)));
44905		#[cfg(not(feature = "catch_nullptr"))]
44906		let ret = {(self.version_1_3.loadtransposematrixd)(m); Ok(())};
44907		#[cfg(feature = "diagnose")]
44908		if let Ok(ret) = ret {
44909			return to_result("glLoadTransposeMatrixd", ret, (self.version_1_3.geterror)());
44910		} else {
44911			return ret
44912		}
44913		#[cfg(not(feature = "diagnose"))]
44914		return ret;
44915	}
44916	#[inline(always)]
44917	fn glMultTransposeMatrixf(&self, m: *const GLfloat) -> Result<()> {
44918		#[cfg(feature = "catch_nullptr")]
44919		let ret = process_catch("glMultTransposeMatrixf", catch_unwind(||(self.version_1_3.multtransposematrixf)(m)));
44920		#[cfg(not(feature = "catch_nullptr"))]
44921		let ret = {(self.version_1_3.multtransposematrixf)(m); Ok(())};
44922		#[cfg(feature = "diagnose")]
44923		if let Ok(ret) = ret {
44924			return to_result("glMultTransposeMatrixf", ret, (self.version_1_3.geterror)());
44925		} else {
44926			return ret
44927		}
44928		#[cfg(not(feature = "diagnose"))]
44929		return ret;
44930	}
44931	#[inline(always)]
44932	fn glMultTransposeMatrixd(&self, m: *const GLdouble) -> Result<()> {
44933		#[cfg(feature = "catch_nullptr")]
44934		let ret = process_catch("glMultTransposeMatrixd", catch_unwind(||(self.version_1_3.multtransposematrixd)(m)));
44935		#[cfg(not(feature = "catch_nullptr"))]
44936		let ret = {(self.version_1_3.multtransposematrixd)(m); Ok(())};
44937		#[cfg(feature = "diagnose")]
44938		if let Ok(ret) = ret {
44939			return to_result("glMultTransposeMatrixd", ret, (self.version_1_3.geterror)());
44940		} else {
44941			return ret
44942		}
44943		#[cfg(not(feature = "diagnose"))]
44944		return ret;
44945	}
44946}
44947
44948impl GL_1_4_g for GLCore {
44949	#[inline(always)]
44950	fn glBlendFuncSeparate(&self, sfactorRGB: GLenum, dfactorRGB: GLenum, sfactorAlpha: GLenum, dfactorAlpha: GLenum) -> Result<()> {
44951		#[cfg(feature = "catch_nullptr")]
44952		let ret = process_catch("glBlendFuncSeparate", catch_unwind(||(self.version_1_4.blendfuncseparate)(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha)));
44953		#[cfg(not(feature = "catch_nullptr"))]
44954		let ret = {(self.version_1_4.blendfuncseparate)(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); Ok(())};
44955		#[cfg(feature = "diagnose")]
44956		if let Ok(ret) = ret {
44957			return to_result("glBlendFuncSeparate", ret, (self.version_1_4.geterror)());
44958		} else {
44959			return ret
44960		}
44961		#[cfg(not(feature = "diagnose"))]
44962		return ret;
44963	}
44964	#[inline(always)]
44965	fn glMultiDrawArrays(&self, mode: GLenum, first: *const GLint, count: *const GLsizei, drawcount: GLsizei) -> Result<()> {
44966		#[cfg(feature = "catch_nullptr")]
44967		let ret = process_catch("glMultiDrawArrays", catch_unwind(||(self.version_1_4.multidrawarrays)(mode, first, count, drawcount)));
44968		#[cfg(not(feature = "catch_nullptr"))]
44969		let ret = {(self.version_1_4.multidrawarrays)(mode, first, count, drawcount); Ok(())};
44970		#[cfg(feature = "diagnose")]
44971		if let Ok(ret) = ret {
44972			return to_result("glMultiDrawArrays", ret, (self.version_1_4.geterror)());
44973		} else {
44974			return ret
44975		}
44976		#[cfg(not(feature = "diagnose"))]
44977		return ret;
44978	}
44979	#[inline(always)]
44980	fn glMultiDrawElements(&self, mode: GLenum, count: *const GLsizei, type_: GLenum, indices: *const *const c_void, drawcount: GLsizei) -> Result<()> {
44981		#[cfg(feature = "catch_nullptr")]
44982		let ret = process_catch("glMultiDrawElements", catch_unwind(||(self.version_1_4.multidrawelements)(mode, count, type_, indices, drawcount)));
44983		#[cfg(not(feature = "catch_nullptr"))]
44984		let ret = {(self.version_1_4.multidrawelements)(mode, count, type_, indices, drawcount); Ok(())};
44985		#[cfg(feature = "diagnose")]
44986		if let Ok(ret) = ret {
44987			return to_result("glMultiDrawElements", ret, (self.version_1_4.geterror)());
44988		} else {
44989			return ret
44990		}
44991		#[cfg(not(feature = "diagnose"))]
44992		return ret;
44993	}
44994	#[inline(always)]
44995	fn glPointParameterf(&self, pname: GLenum, param: GLfloat) -> Result<()> {
44996		#[cfg(feature = "catch_nullptr")]
44997		let ret = process_catch("glPointParameterf", catch_unwind(||(self.version_1_4.pointparameterf)(pname, param)));
44998		#[cfg(not(feature = "catch_nullptr"))]
44999		let ret = {(self.version_1_4.pointparameterf)(pname, param); Ok(())};
45000		#[cfg(feature = "diagnose")]
45001		if let Ok(ret) = ret {
45002			return to_result("glPointParameterf", ret, (self.version_1_4.geterror)());
45003		} else {
45004			return ret
45005		}
45006		#[cfg(not(feature = "diagnose"))]
45007		return ret;
45008	}
45009	#[inline(always)]
45010	fn glPointParameterfv(&self, pname: GLenum, params: *const GLfloat) -> Result<()> {
45011		#[cfg(feature = "catch_nullptr")]
45012		let ret = process_catch("glPointParameterfv", catch_unwind(||(self.version_1_4.pointparameterfv)(pname, params)));
45013		#[cfg(not(feature = "catch_nullptr"))]
45014		let ret = {(self.version_1_4.pointparameterfv)(pname, params); Ok(())};
45015		#[cfg(feature = "diagnose")]
45016		if let Ok(ret) = ret {
45017			return to_result("glPointParameterfv", ret, (self.version_1_4.geterror)());
45018		} else {
45019			return ret
45020		}
45021		#[cfg(not(feature = "diagnose"))]
45022		return ret;
45023	}
45024	#[inline(always)]
45025	fn glPointParameteri(&self, pname: GLenum, param: GLint) -> Result<()> {
45026		#[cfg(feature = "catch_nullptr")]
45027		let ret = process_catch("glPointParameteri", catch_unwind(||(self.version_1_4.pointparameteri)(pname, param)));
45028		#[cfg(not(feature = "catch_nullptr"))]
45029		let ret = {(self.version_1_4.pointparameteri)(pname, param); Ok(())};
45030		#[cfg(feature = "diagnose")]
45031		if let Ok(ret) = ret {
45032			return to_result("glPointParameteri", ret, (self.version_1_4.geterror)());
45033		} else {
45034			return ret
45035		}
45036		#[cfg(not(feature = "diagnose"))]
45037		return ret;
45038	}
45039	#[inline(always)]
45040	fn glPointParameteriv(&self, pname: GLenum, params: *const GLint) -> Result<()> {
45041		#[cfg(feature = "catch_nullptr")]
45042		let ret = process_catch("glPointParameteriv", catch_unwind(||(self.version_1_4.pointparameteriv)(pname, params)));
45043		#[cfg(not(feature = "catch_nullptr"))]
45044		let ret = {(self.version_1_4.pointparameteriv)(pname, params); Ok(())};
45045		#[cfg(feature = "diagnose")]
45046		if let Ok(ret) = ret {
45047			return to_result("glPointParameteriv", ret, (self.version_1_4.geterror)());
45048		} else {
45049			return ret
45050		}
45051		#[cfg(not(feature = "diagnose"))]
45052		return ret;
45053	}
45054	#[inline(always)]
45055	fn glFogCoordf(&self, coord: GLfloat) -> Result<()> {
45056		#[cfg(feature = "catch_nullptr")]
45057		let ret = process_catch("glFogCoordf", catch_unwind(||(self.version_1_4.fogcoordf)(coord)));
45058		#[cfg(not(feature = "catch_nullptr"))]
45059		let ret = {(self.version_1_4.fogcoordf)(coord); Ok(())};
45060		#[cfg(feature = "diagnose")]
45061		if let Ok(ret) = ret {
45062			return to_result("glFogCoordf", ret, (self.version_1_4.geterror)());
45063		} else {
45064			return ret
45065		}
45066		#[cfg(not(feature = "diagnose"))]
45067		return ret;
45068	}
45069	#[inline(always)]
45070	fn glFogCoordfv(&self, coord: *const GLfloat) -> Result<()> {
45071		#[cfg(feature = "catch_nullptr")]
45072		let ret = process_catch("glFogCoordfv", catch_unwind(||(self.version_1_4.fogcoordfv)(coord)));
45073		#[cfg(not(feature = "catch_nullptr"))]
45074		let ret = {(self.version_1_4.fogcoordfv)(coord); Ok(())};
45075		#[cfg(feature = "diagnose")]
45076		if let Ok(ret) = ret {
45077			return to_result("glFogCoordfv", ret, (self.version_1_4.geterror)());
45078		} else {
45079			return ret
45080		}
45081		#[cfg(not(feature = "diagnose"))]
45082		return ret;
45083	}
45084	#[inline(always)]
45085	fn glFogCoordd(&self, coord: GLdouble) -> Result<()> {
45086		#[cfg(feature = "catch_nullptr")]
45087		let ret = process_catch("glFogCoordd", catch_unwind(||(self.version_1_4.fogcoordd)(coord)));
45088		#[cfg(not(feature = "catch_nullptr"))]
45089		let ret = {(self.version_1_4.fogcoordd)(coord); Ok(())};
45090		#[cfg(feature = "diagnose")]
45091		if let Ok(ret) = ret {
45092			return to_result("glFogCoordd", ret, (self.version_1_4.geterror)());
45093		} else {
45094			return ret
45095		}
45096		#[cfg(not(feature = "diagnose"))]
45097		return ret;
45098	}
45099	#[inline(always)]
45100	fn glFogCoorddv(&self, coord: *const GLdouble) -> Result<()> {
45101		#[cfg(feature = "catch_nullptr")]
45102		let ret = process_catch("glFogCoorddv", catch_unwind(||(self.version_1_4.fogcoorddv)(coord)));
45103		#[cfg(not(feature = "catch_nullptr"))]
45104		let ret = {(self.version_1_4.fogcoorddv)(coord); Ok(())};
45105		#[cfg(feature = "diagnose")]
45106		if let Ok(ret) = ret {
45107			return to_result("glFogCoorddv", ret, (self.version_1_4.geterror)());
45108		} else {
45109			return ret
45110		}
45111		#[cfg(not(feature = "diagnose"))]
45112		return ret;
45113	}
45114	#[inline(always)]
45115	fn glFogCoordPointer(&self, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()> {
45116		#[cfg(feature = "catch_nullptr")]
45117		let ret = process_catch("glFogCoordPointer", catch_unwind(||(self.version_1_4.fogcoordpointer)(type_, stride, pointer)));
45118		#[cfg(not(feature = "catch_nullptr"))]
45119		let ret = {(self.version_1_4.fogcoordpointer)(type_, stride, pointer); Ok(())};
45120		#[cfg(feature = "diagnose")]
45121		if let Ok(ret) = ret {
45122			return to_result("glFogCoordPointer", ret, (self.version_1_4.geterror)());
45123		} else {
45124			return ret
45125		}
45126		#[cfg(not(feature = "diagnose"))]
45127		return ret;
45128	}
45129	#[inline(always)]
45130	fn glSecondaryColor3b(&self, red: GLbyte, green: GLbyte, blue: GLbyte) -> Result<()> {
45131		#[cfg(feature = "catch_nullptr")]
45132		let ret = process_catch("glSecondaryColor3b", catch_unwind(||(self.version_1_4.secondarycolor3b)(red, green, blue)));
45133		#[cfg(not(feature = "catch_nullptr"))]
45134		let ret = {(self.version_1_4.secondarycolor3b)(red, green, blue); Ok(())};
45135		#[cfg(feature = "diagnose")]
45136		if let Ok(ret) = ret {
45137			return to_result("glSecondaryColor3b", ret, (self.version_1_4.geterror)());
45138		} else {
45139			return ret
45140		}
45141		#[cfg(not(feature = "diagnose"))]
45142		return ret;
45143	}
45144	#[inline(always)]
45145	fn glSecondaryColor3bv(&self, v: *const GLbyte) -> Result<()> {
45146		#[cfg(feature = "catch_nullptr")]
45147		let ret = process_catch("glSecondaryColor3bv", catch_unwind(||(self.version_1_4.secondarycolor3bv)(v)));
45148		#[cfg(not(feature = "catch_nullptr"))]
45149		let ret = {(self.version_1_4.secondarycolor3bv)(v); Ok(())};
45150		#[cfg(feature = "diagnose")]
45151		if let Ok(ret) = ret {
45152			return to_result("glSecondaryColor3bv", ret, (self.version_1_4.geterror)());
45153		} else {
45154			return ret
45155		}
45156		#[cfg(not(feature = "diagnose"))]
45157		return ret;
45158	}
45159	#[inline(always)]
45160	fn glSecondaryColor3d(&self, red: GLdouble, green: GLdouble, blue: GLdouble) -> Result<()> {
45161		#[cfg(feature = "catch_nullptr")]
45162		let ret = process_catch("glSecondaryColor3d", catch_unwind(||(self.version_1_4.secondarycolor3d)(red, green, blue)));
45163		#[cfg(not(feature = "catch_nullptr"))]
45164		let ret = {(self.version_1_4.secondarycolor3d)(red, green, blue); Ok(())};
45165		#[cfg(feature = "diagnose")]
45166		if let Ok(ret) = ret {
45167			return to_result("glSecondaryColor3d", ret, (self.version_1_4.geterror)());
45168		} else {
45169			return ret
45170		}
45171		#[cfg(not(feature = "diagnose"))]
45172		return ret;
45173	}
45174	#[inline(always)]
45175	fn glSecondaryColor3dv(&self, v: *const GLdouble) -> Result<()> {
45176		#[cfg(feature = "catch_nullptr")]
45177		let ret = process_catch("glSecondaryColor3dv", catch_unwind(||(self.version_1_4.secondarycolor3dv)(v)));
45178		#[cfg(not(feature = "catch_nullptr"))]
45179		let ret = {(self.version_1_4.secondarycolor3dv)(v); Ok(())};
45180		#[cfg(feature = "diagnose")]
45181		if let Ok(ret) = ret {
45182			return to_result("glSecondaryColor3dv", ret, (self.version_1_4.geterror)());
45183		} else {
45184			return ret
45185		}
45186		#[cfg(not(feature = "diagnose"))]
45187		return ret;
45188	}
45189	#[inline(always)]
45190	fn glSecondaryColor3f(&self, red: GLfloat, green: GLfloat, blue: GLfloat) -> Result<()> {
45191		#[cfg(feature = "catch_nullptr")]
45192		let ret = process_catch("glSecondaryColor3f", catch_unwind(||(self.version_1_4.secondarycolor3f)(red, green, blue)));
45193		#[cfg(not(feature = "catch_nullptr"))]
45194		let ret = {(self.version_1_4.secondarycolor3f)(red, green, blue); Ok(())};
45195		#[cfg(feature = "diagnose")]
45196		if let Ok(ret) = ret {
45197			return to_result("glSecondaryColor3f", ret, (self.version_1_4.geterror)());
45198		} else {
45199			return ret
45200		}
45201		#[cfg(not(feature = "diagnose"))]
45202		return ret;
45203	}
45204	#[inline(always)]
45205	fn glSecondaryColor3fv(&self, v: *const GLfloat) -> Result<()> {
45206		#[cfg(feature = "catch_nullptr")]
45207		let ret = process_catch("glSecondaryColor3fv", catch_unwind(||(self.version_1_4.secondarycolor3fv)(v)));
45208		#[cfg(not(feature = "catch_nullptr"))]
45209		let ret = {(self.version_1_4.secondarycolor3fv)(v); Ok(())};
45210		#[cfg(feature = "diagnose")]
45211		if let Ok(ret) = ret {
45212			return to_result("glSecondaryColor3fv", ret, (self.version_1_4.geterror)());
45213		} else {
45214			return ret
45215		}
45216		#[cfg(not(feature = "diagnose"))]
45217		return ret;
45218	}
45219	#[inline(always)]
45220	fn glSecondaryColor3i(&self, red: GLint, green: GLint, blue: GLint) -> Result<()> {
45221		#[cfg(feature = "catch_nullptr")]
45222		let ret = process_catch("glSecondaryColor3i", catch_unwind(||(self.version_1_4.secondarycolor3i)(red, green, blue)));
45223		#[cfg(not(feature = "catch_nullptr"))]
45224		let ret = {(self.version_1_4.secondarycolor3i)(red, green, blue); Ok(())};
45225		#[cfg(feature = "diagnose")]
45226		if let Ok(ret) = ret {
45227			return to_result("glSecondaryColor3i", ret, (self.version_1_4.geterror)());
45228		} else {
45229			return ret
45230		}
45231		#[cfg(not(feature = "diagnose"))]
45232		return ret;
45233	}
45234	#[inline(always)]
45235	fn glSecondaryColor3iv(&self, v: *const GLint) -> Result<()> {
45236		#[cfg(feature = "catch_nullptr")]
45237		let ret = process_catch("glSecondaryColor3iv", catch_unwind(||(self.version_1_4.secondarycolor3iv)(v)));
45238		#[cfg(not(feature = "catch_nullptr"))]
45239		let ret = {(self.version_1_4.secondarycolor3iv)(v); Ok(())};
45240		#[cfg(feature = "diagnose")]
45241		if let Ok(ret) = ret {
45242			return to_result("glSecondaryColor3iv", ret, (self.version_1_4.geterror)());
45243		} else {
45244			return ret
45245		}
45246		#[cfg(not(feature = "diagnose"))]
45247		return ret;
45248	}
45249	#[inline(always)]
45250	fn glSecondaryColor3s(&self, red: GLshort, green: GLshort, blue: GLshort) -> Result<()> {
45251		#[cfg(feature = "catch_nullptr")]
45252		let ret = process_catch("glSecondaryColor3s", catch_unwind(||(self.version_1_4.secondarycolor3s)(red, green, blue)));
45253		#[cfg(not(feature = "catch_nullptr"))]
45254		let ret = {(self.version_1_4.secondarycolor3s)(red, green, blue); Ok(())};
45255		#[cfg(feature = "diagnose")]
45256		if let Ok(ret) = ret {
45257			return to_result("glSecondaryColor3s", ret, (self.version_1_4.geterror)());
45258		} else {
45259			return ret
45260		}
45261		#[cfg(not(feature = "diagnose"))]
45262		return ret;
45263	}
45264	#[inline(always)]
45265	fn glSecondaryColor3sv(&self, v: *const GLshort) -> Result<()> {
45266		#[cfg(feature = "catch_nullptr")]
45267		let ret = process_catch("glSecondaryColor3sv", catch_unwind(||(self.version_1_4.secondarycolor3sv)(v)));
45268		#[cfg(not(feature = "catch_nullptr"))]
45269		let ret = {(self.version_1_4.secondarycolor3sv)(v); Ok(())};
45270		#[cfg(feature = "diagnose")]
45271		if let Ok(ret) = ret {
45272			return to_result("glSecondaryColor3sv", ret, (self.version_1_4.geterror)());
45273		} else {
45274			return ret
45275		}
45276		#[cfg(not(feature = "diagnose"))]
45277		return ret;
45278	}
45279	#[inline(always)]
45280	fn glSecondaryColor3ub(&self, red: GLubyte, green: GLubyte, blue: GLubyte) -> Result<()> {
45281		#[cfg(feature = "catch_nullptr")]
45282		let ret = process_catch("glSecondaryColor3ub", catch_unwind(||(self.version_1_4.secondarycolor3ub)(red, green, blue)));
45283		#[cfg(not(feature = "catch_nullptr"))]
45284		let ret = {(self.version_1_4.secondarycolor3ub)(red, green, blue); Ok(())};
45285		#[cfg(feature = "diagnose")]
45286		if let Ok(ret) = ret {
45287			return to_result("glSecondaryColor3ub", ret, (self.version_1_4.geterror)());
45288		} else {
45289			return ret
45290		}
45291		#[cfg(not(feature = "diagnose"))]
45292		return ret;
45293	}
45294	#[inline(always)]
45295	fn glSecondaryColor3ubv(&self, v: *const GLubyte) -> Result<()> {
45296		#[cfg(feature = "catch_nullptr")]
45297		let ret = process_catch("glSecondaryColor3ubv", catch_unwind(||(self.version_1_4.secondarycolor3ubv)(v)));
45298		#[cfg(not(feature = "catch_nullptr"))]
45299		let ret = {(self.version_1_4.secondarycolor3ubv)(v); Ok(())};
45300		#[cfg(feature = "diagnose")]
45301		if let Ok(ret) = ret {
45302			return to_result("glSecondaryColor3ubv", ret, (self.version_1_4.geterror)());
45303		} else {
45304			return ret
45305		}
45306		#[cfg(not(feature = "diagnose"))]
45307		return ret;
45308	}
45309	#[inline(always)]
45310	fn glSecondaryColor3ui(&self, red: GLuint, green: GLuint, blue: GLuint) -> Result<()> {
45311		#[cfg(feature = "catch_nullptr")]
45312		let ret = process_catch("glSecondaryColor3ui", catch_unwind(||(self.version_1_4.secondarycolor3ui)(red, green, blue)));
45313		#[cfg(not(feature = "catch_nullptr"))]
45314		let ret = {(self.version_1_4.secondarycolor3ui)(red, green, blue); Ok(())};
45315		#[cfg(feature = "diagnose")]
45316		if let Ok(ret) = ret {
45317			return to_result("glSecondaryColor3ui", ret, (self.version_1_4.geterror)());
45318		} else {
45319			return ret
45320		}
45321		#[cfg(not(feature = "diagnose"))]
45322		return ret;
45323	}
45324	#[inline(always)]
45325	fn glSecondaryColor3uiv(&self, v: *const GLuint) -> Result<()> {
45326		#[cfg(feature = "catch_nullptr")]
45327		let ret = process_catch("glSecondaryColor3uiv", catch_unwind(||(self.version_1_4.secondarycolor3uiv)(v)));
45328		#[cfg(not(feature = "catch_nullptr"))]
45329		let ret = {(self.version_1_4.secondarycolor3uiv)(v); Ok(())};
45330		#[cfg(feature = "diagnose")]
45331		if let Ok(ret) = ret {
45332			return to_result("glSecondaryColor3uiv", ret, (self.version_1_4.geterror)());
45333		} else {
45334			return ret
45335		}
45336		#[cfg(not(feature = "diagnose"))]
45337		return ret;
45338	}
45339	#[inline(always)]
45340	fn glSecondaryColor3us(&self, red: GLushort, green: GLushort, blue: GLushort) -> Result<()> {
45341		#[cfg(feature = "catch_nullptr")]
45342		let ret = process_catch("glSecondaryColor3us", catch_unwind(||(self.version_1_4.secondarycolor3us)(red, green, blue)));
45343		#[cfg(not(feature = "catch_nullptr"))]
45344		let ret = {(self.version_1_4.secondarycolor3us)(red, green, blue); Ok(())};
45345		#[cfg(feature = "diagnose")]
45346		if let Ok(ret) = ret {
45347			return to_result("glSecondaryColor3us", ret, (self.version_1_4.geterror)());
45348		} else {
45349			return ret
45350		}
45351		#[cfg(not(feature = "diagnose"))]
45352		return ret;
45353	}
45354	#[inline(always)]
45355	fn glSecondaryColor3usv(&self, v: *const GLushort) -> Result<()> {
45356		#[cfg(feature = "catch_nullptr")]
45357		let ret = process_catch("glSecondaryColor3usv", catch_unwind(||(self.version_1_4.secondarycolor3usv)(v)));
45358		#[cfg(not(feature = "catch_nullptr"))]
45359		let ret = {(self.version_1_4.secondarycolor3usv)(v); Ok(())};
45360		#[cfg(feature = "diagnose")]
45361		if let Ok(ret) = ret {
45362			return to_result("glSecondaryColor3usv", ret, (self.version_1_4.geterror)());
45363		} else {
45364			return ret
45365		}
45366		#[cfg(not(feature = "diagnose"))]
45367		return ret;
45368	}
45369	#[inline(always)]
45370	fn glSecondaryColorPointer(&self, size: GLint, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()> {
45371		#[cfg(feature = "catch_nullptr")]
45372		let ret = process_catch("glSecondaryColorPointer", catch_unwind(||(self.version_1_4.secondarycolorpointer)(size, type_, stride, pointer)));
45373		#[cfg(not(feature = "catch_nullptr"))]
45374		let ret = {(self.version_1_4.secondarycolorpointer)(size, type_, stride, pointer); Ok(())};
45375		#[cfg(feature = "diagnose")]
45376		if let Ok(ret) = ret {
45377			return to_result("glSecondaryColorPointer", ret, (self.version_1_4.geterror)());
45378		} else {
45379			return ret
45380		}
45381		#[cfg(not(feature = "diagnose"))]
45382		return ret;
45383	}
45384	#[inline(always)]
45385	fn glWindowPos2d(&self, x: GLdouble, y: GLdouble) -> Result<()> {
45386		#[cfg(feature = "catch_nullptr")]
45387		let ret = process_catch("glWindowPos2d", catch_unwind(||(self.version_1_4.windowpos2d)(x, y)));
45388		#[cfg(not(feature = "catch_nullptr"))]
45389		let ret = {(self.version_1_4.windowpos2d)(x, y); Ok(())};
45390		#[cfg(feature = "diagnose")]
45391		if let Ok(ret) = ret {
45392			return to_result("glWindowPos2d", ret, (self.version_1_4.geterror)());
45393		} else {
45394			return ret
45395		}
45396		#[cfg(not(feature = "diagnose"))]
45397		return ret;
45398	}
45399	#[inline(always)]
45400	fn glWindowPos2dv(&self, v: *const GLdouble) -> Result<()> {
45401		#[cfg(feature = "catch_nullptr")]
45402		let ret = process_catch("glWindowPos2dv", catch_unwind(||(self.version_1_4.windowpos2dv)(v)));
45403		#[cfg(not(feature = "catch_nullptr"))]
45404		let ret = {(self.version_1_4.windowpos2dv)(v); Ok(())};
45405		#[cfg(feature = "diagnose")]
45406		if let Ok(ret) = ret {
45407			return to_result("glWindowPos2dv", ret, (self.version_1_4.geterror)());
45408		} else {
45409			return ret
45410		}
45411		#[cfg(not(feature = "diagnose"))]
45412		return ret;
45413	}
45414	#[inline(always)]
45415	fn glWindowPos2f(&self, x: GLfloat, y: GLfloat) -> Result<()> {
45416		#[cfg(feature = "catch_nullptr")]
45417		let ret = process_catch("glWindowPos2f", catch_unwind(||(self.version_1_4.windowpos2f)(x, y)));
45418		#[cfg(not(feature = "catch_nullptr"))]
45419		let ret = {(self.version_1_4.windowpos2f)(x, y); Ok(())};
45420		#[cfg(feature = "diagnose")]
45421		if let Ok(ret) = ret {
45422			return to_result("glWindowPos2f", ret, (self.version_1_4.geterror)());
45423		} else {
45424			return ret
45425		}
45426		#[cfg(not(feature = "diagnose"))]
45427		return ret;
45428	}
45429	#[inline(always)]
45430	fn glWindowPos2fv(&self, v: *const GLfloat) -> Result<()> {
45431		#[cfg(feature = "catch_nullptr")]
45432		let ret = process_catch("glWindowPos2fv", catch_unwind(||(self.version_1_4.windowpos2fv)(v)));
45433		#[cfg(not(feature = "catch_nullptr"))]
45434		let ret = {(self.version_1_4.windowpos2fv)(v); Ok(())};
45435		#[cfg(feature = "diagnose")]
45436		if let Ok(ret) = ret {
45437			return to_result("glWindowPos2fv", ret, (self.version_1_4.geterror)());
45438		} else {
45439			return ret
45440		}
45441		#[cfg(not(feature = "diagnose"))]
45442		return ret;
45443	}
45444	#[inline(always)]
45445	fn glWindowPos2i(&self, x: GLint, y: GLint) -> Result<()> {
45446		#[cfg(feature = "catch_nullptr")]
45447		let ret = process_catch("glWindowPos2i", catch_unwind(||(self.version_1_4.windowpos2i)(x, y)));
45448		#[cfg(not(feature = "catch_nullptr"))]
45449		let ret = {(self.version_1_4.windowpos2i)(x, y); Ok(())};
45450		#[cfg(feature = "diagnose")]
45451		if let Ok(ret) = ret {
45452			return to_result("glWindowPos2i", ret, (self.version_1_4.geterror)());
45453		} else {
45454			return ret
45455		}
45456		#[cfg(not(feature = "diagnose"))]
45457		return ret;
45458	}
45459	#[inline(always)]
45460	fn glWindowPos2iv(&self, v: *const GLint) -> Result<()> {
45461		#[cfg(feature = "catch_nullptr")]
45462		let ret = process_catch("glWindowPos2iv", catch_unwind(||(self.version_1_4.windowpos2iv)(v)));
45463		#[cfg(not(feature = "catch_nullptr"))]
45464		let ret = {(self.version_1_4.windowpos2iv)(v); Ok(())};
45465		#[cfg(feature = "diagnose")]
45466		if let Ok(ret) = ret {
45467			return to_result("glWindowPos2iv", ret, (self.version_1_4.geterror)());
45468		} else {
45469			return ret
45470		}
45471		#[cfg(not(feature = "diagnose"))]
45472		return ret;
45473	}
45474	#[inline(always)]
45475	fn glWindowPos2s(&self, x: GLshort, y: GLshort) -> Result<()> {
45476		#[cfg(feature = "catch_nullptr")]
45477		let ret = process_catch("glWindowPos2s", catch_unwind(||(self.version_1_4.windowpos2s)(x, y)));
45478		#[cfg(not(feature = "catch_nullptr"))]
45479		let ret = {(self.version_1_4.windowpos2s)(x, y); Ok(())};
45480		#[cfg(feature = "diagnose")]
45481		if let Ok(ret) = ret {
45482			return to_result("glWindowPos2s", ret, (self.version_1_4.geterror)());
45483		} else {
45484			return ret
45485		}
45486		#[cfg(not(feature = "diagnose"))]
45487		return ret;
45488	}
45489	#[inline(always)]
45490	fn glWindowPos2sv(&self, v: *const GLshort) -> Result<()> {
45491		#[cfg(feature = "catch_nullptr")]
45492		let ret = process_catch("glWindowPos2sv", catch_unwind(||(self.version_1_4.windowpos2sv)(v)));
45493		#[cfg(not(feature = "catch_nullptr"))]
45494		let ret = {(self.version_1_4.windowpos2sv)(v); Ok(())};
45495		#[cfg(feature = "diagnose")]
45496		if let Ok(ret) = ret {
45497			return to_result("glWindowPos2sv", ret, (self.version_1_4.geterror)());
45498		} else {
45499			return ret
45500		}
45501		#[cfg(not(feature = "diagnose"))]
45502		return ret;
45503	}
45504	#[inline(always)]
45505	fn glWindowPos3d(&self, x: GLdouble, y: GLdouble, z: GLdouble) -> Result<()> {
45506		#[cfg(feature = "catch_nullptr")]
45507		let ret = process_catch("glWindowPos3d", catch_unwind(||(self.version_1_4.windowpos3d)(x, y, z)));
45508		#[cfg(not(feature = "catch_nullptr"))]
45509		let ret = {(self.version_1_4.windowpos3d)(x, y, z); Ok(())};
45510		#[cfg(feature = "diagnose")]
45511		if let Ok(ret) = ret {
45512			return to_result("glWindowPos3d", ret, (self.version_1_4.geterror)());
45513		} else {
45514			return ret
45515		}
45516		#[cfg(not(feature = "diagnose"))]
45517		return ret;
45518	}
45519	#[inline(always)]
45520	fn glWindowPos3dv(&self, v: *const GLdouble) -> Result<()> {
45521		#[cfg(feature = "catch_nullptr")]
45522		let ret = process_catch("glWindowPos3dv", catch_unwind(||(self.version_1_4.windowpos3dv)(v)));
45523		#[cfg(not(feature = "catch_nullptr"))]
45524		let ret = {(self.version_1_4.windowpos3dv)(v); Ok(())};
45525		#[cfg(feature = "diagnose")]
45526		if let Ok(ret) = ret {
45527			return to_result("glWindowPos3dv", ret, (self.version_1_4.geterror)());
45528		} else {
45529			return ret
45530		}
45531		#[cfg(not(feature = "diagnose"))]
45532		return ret;
45533	}
45534	#[inline(always)]
45535	fn glWindowPos3f(&self, x: GLfloat, y: GLfloat, z: GLfloat) -> Result<()> {
45536		#[cfg(feature = "catch_nullptr")]
45537		let ret = process_catch("glWindowPos3f", catch_unwind(||(self.version_1_4.windowpos3f)(x, y, z)));
45538		#[cfg(not(feature = "catch_nullptr"))]
45539		let ret = {(self.version_1_4.windowpos3f)(x, y, z); Ok(())};
45540		#[cfg(feature = "diagnose")]
45541		if let Ok(ret) = ret {
45542			return to_result("glWindowPos3f", ret, (self.version_1_4.geterror)());
45543		} else {
45544			return ret
45545		}
45546		#[cfg(not(feature = "diagnose"))]
45547		return ret;
45548	}
45549	#[inline(always)]
45550	fn glWindowPos3fv(&self, v: *const GLfloat) -> Result<()> {
45551		#[cfg(feature = "catch_nullptr")]
45552		let ret = process_catch("glWindowPos3fv", catch_unwind(||(self.version_1_4.windowpos3fv)(v)));
45553		#[cfg(not(feature = "catch_nullptr"))]
45554		let ret = {(self.version_1_4.windowpos3fv)(v); Ok(())};
45555		#[cfg(feature = "diagnose")]
45556		if let Ok(ret) = ret {
45557			return to_result("glWindowPos3fv", ret, (self.version_1_4.geterror)());
45558		} else {
45559			return ret
45560		}
45561		#[cfg(not(feature = "diagnose"))]
45562		return ret;
45563	}
45564	#[inline(always)]
45565	fn glWindowPos3i(&self, x: GLint, y: GLint, z: GLint) -> Result<()> {
45566		#[cfg(feature = "catch_nullptr")]
45567		let ret = process_catch("glWindowPos3i", catch_unwind(||(self.version_1_4.windowpos3i)(x, y, z)));
45568		#[cfg(not(feature = "catch_nullptr"))]
45569		let ret = {(self.version_1_4.windowpos3i)(x, y, z); Ok(())};
45570		#[cfg(feature = "diagnose")]
45571		if let Ok(ret) = ret {
45572			return to_result("glWindowPos3i", ret, (self.version_1_4.geterror)());
45573		} else {
45574			return ret
45575		}
45576		#[cfg(not(feature = "diagnose"))]
45577		return ret;
45578	}
45579	#[inline(always)]
45580	fn glWindowPos3iv(&self, v: *const GLint) -> Result<()> {
45581		#[cfg(feature = "catch_nullptr")]
45582		let ret = process_catch("glWindowPos3iv", catch_unwind(||(self.version_1_4.windowpos3iv)(v)));
45583		#[cfg(not(feature = "catch_nullptr"))]
45584		let ret = {(self.version_1_4.windowpos3iv)(v); Ok(())};
45585		#[cfg(feature = "diagnose")]
45586		if let Ok(ret) = ret {
45587			return to_result("glWindowPos3iv", ret, (self.version_1_4.geterror)());
45588		} else {
45589			return ret
45590		}
45591		#[cfg(not(feature = "diagnose"))]
45592		return ret;
45593	}
45594	#[inline(always)]
45595	fn glWindowPos3s(&self, x: GLshort, y: GLshort, z: GLshort) -> Result<()> {
45596		#[cfg(feature = "catch_nullptr")]
45597		let ret = process_catch("glWindowPos3s", catch_unwind(||(self.version_1_4.windowpos3s)(x, y, z)));
45598		#[cfg(not(feature = "catch_nullptr"))]
45599		let ret = {(self.version_1_4.windowpos3s)(x, y, z); Ok(())};
45600		#[cfg(feature = "diagnose")]
45601		if let Ok(ret) = ret {
45602			return to_result("glWindowPos3s", ret, (self.version_1_4.geterror)());
45603		} else {
45604			return ret
45605		}
45606		#[cfg(not(feature = "diagnose"))]
45607		return ret;
45608	}
45609	#[inline(always)]
45610	fn glWindowPos3sv(&self, v: *const GLshort) -> Result<()> {
45611		#[cfg(feature = "catch_nullptr")]
45612		let ret = process_catch("glWindowPos3sv", catch_unwind(||(self.version_1_4.windowpos3sv)(v)));
45613		#[cfg(not(feature = "catch_nullptr"))]
45614		let ret = {(self.version_1_4.windowpos3sv)(v); Ok(())};
45615		#[cfg(feature = "diagnose")]
45616		if let Ok(ret) = ret {
45617			return to_result("glWindowPos3sv", ret, (self.version_1_4.geterror)());
45618		} else {
45619			return ret
45620		}
45621		#[cfg(not(feature = "diagnose"))]
45622		return ret;
45623	}
45624	#[inline(always)]
45625	fn glBlendColor(&self, red: GLfloat, green: GLfloat, blue: GLfloat, alpha: GLfloat) -> Result<()> {
45626		#[cfg(feature = "catch_nullptr")]
45627		let ret = process_catch("glBlendColor", catch_unwind(||(self.version_1_4.blendcolor)(red, green, blue, alpha)));
45628		#[cfg(not(feature = "catch_nullptr"))]
45629		let ret = {(self.version_1_4.blendcolor)(red, green, blue, alpha); Ok(())};
45630		#[cfg(feature = "diagnose")]
45631		if let Ok(ret) = ret {
45632			return to_result("glBlendColor", ret, (self.version_1_4.geterror)());
45633		} else {
45634			return ret
45635		}
45636		#[cfg(not(feature = "diagnose"))]
45637		return ret;
45638	}
45639	#[inline(always)]
45640	fn glBlendEquation(&self, mode: GLenum) -> Result<()> {
45641		#[cfg(feature = "catch_nullptr")]
45642		let ret = process_catch("glBlendEquation", catch_unwind(||(self.version_1_4.blendequation)(mode)));
45643		#[cfg(not(feature = "catch_nullptr"))]
45644		let ret = {(self.version_1_4.blendequation)(mode); Ok(())};
45645		#[cfg(feature = "diagnose")]
45646		if let Ok(ret) = ret {
45647			return to_result("glBlendEquation", ret, (self.version_1_4.geterror)());
45648		} else {
45649			return ret
45650		}
45651		#[cfg(not(feature = "diagnose"))]
45652		return ret;
45653	}
45654}
45655
45656impl GL_1_5_g for GLCore {
45657	#[inline(always)]
45658	fn glGenQueries(&self, n: GLsizei, ids: *mut GLuint) -> Result<()> {
45659		#[cfg(feature = "catch_nullptr")]
45660		let ret = process_catch("glGenQueries", catch_unwind(||(self.version_1_5.genqueries)(n, ids)));
45661		#[cfg(not(feature = "catch_nullptr"))]
45662		let ret = {(self.version_1_5.genqueries)(n, ids); Ok(())};
45663		#[cfg(feature = "diagnose")]
45664		if let Ok(ret) = ret {
45665			return to_result("glGenQueries", ret, (self.version_1_5.geterror)());
45666		} else {
45667			return ret
45668		}
45669		#[cfg(not(feature = "diagnose"))]
45670		return ret;
45671	}
45672	#[inline(always)]
45673	fn glDeleteQueries(&self, n: GLsizei, ids: *const GLuint) -> Result<()> {
45674		#[cfg(feature = "catch_nullptr")]
45675		let ret = process_catch("glDeleteQueries", catch_unwind(||(self.version_1_5.deletequeries)(n, ids)));
45676		#[cfg(not(feature = "catch_nullptr"))]
45677		let ret = {(self.version_1_5.deletequeries)(n, ids); Ok(())};
45678		#[cfg(feature = "diagnose")]
45679		if let Ok(ret) = ret {
45680			return to_result("glDeleteQueries", ret, (self.version_1_5.geterror)());
45681		} else {
45682			return ret
45683		}
45684		#[cfg(not(feature = "diagnose"))]
45685		return ret;
45686	}
45687	#[inline(always)]
45688	fn glIsQuery(&self, id: GLuint) -> Result<GLboolean> {
45689		#[cfg(feature = "catch_nullptr")]
45690		let ret = process_catch("glIsQuery", catch_unwind(||(self.version_1_5.isquery)(id)));
45691		#[cfg(not(feature = "catch_nullptr"))]
45692		let ret = Ok((self.version_1_5.isquery)(id));
45693		#[cfg(feature = "diagnose")]
45694		if let Ok(ret) = ret {
45695			return to_result("glIsQuery", ret, (self.version_1_5.geterror)());
45696		} else {
45697			return ret
45698		}
45699		#[cfg(not(feature = "diagnose"))]
45700		return ret;
45701	}
45702	#[inline(always)]
45703	fn glBeginQuery(&self, target: GLenum, id: GLuint) -> Result<()> {
45704		#[cfg(feature = "catch_nullptr")]
45705		let ret = process_catch("glBeginQuery", catch_unwind(||(self.version_1_5.beginquery)(target, id)));
45706		#[cfg(not(feature = "catch_nullptr"))]
45707		let ret = {(self.version_1_5.beginquery)(target, id); Ok(())};
45708		#[cfg(feature = "diagnose")]
45709		if let Ok(ret) = ret {
45710			return to_result("glBeginQuery", ret, (self.version_1_5.geterror)());
45711		} else {
45712			return ret
45713		}
45714		#[cfg(not(feature = "diagnose"))]
45715		return ret;
45716	}
45717	#[inline(always)]
45718	fn glEndQuery(&self, target: GLenum) -> Result<()> {
45719		#[cfg(feature = "catch_nullptr")]
45720		let ret = process_catch("glEndQuery", catch_unwind(||(self.version_1_5.endquery)(target)));
45721		#[cfg(not(feature = "catch_nullptr"))]
45722		let ret = {(self.version_1_5.endquery)(target); Ok(())};
45723		#[cfg(feature = "diagnose")]
45724		if let Ok(ret) = ret {
45725			return to_result("glEndQuery", ret, (self.version_1_5.geterror)());
45726		} else {
45727			return ret
45728		}
45729		#[cfg(not(feature = "diagnose"))]
45730		return ret;
45731	}
45732	#[inline(always)]
45733	fn glGetQueryiv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
45734		#[cfg(feature = "catch_nullptr")]
45735		let ret = process_catch("glGetQueryiv", catch_unwind(||(self.version_1_5.getqueryiv)(target, pname, params)));
45736		#[cfg(not(feature = "catch_nullptr"))]
45737		let ret = {(self.version_1_5.getqueryiv)(target, pname, params); Ok(())};
45738		#[cfg(feature = "diagnose")]
45739		if let Ok(ret) = ret {
45740			return to_result("glGetQueryiv", ret, (self.version_1_5.geterror)());
45741		} else {
45742			return ret
45743		}
45744		#[cfg(not(feature = "diagnose"))]
45745		return ret;
45746	}
45747	#[inline(always)]
45748	fn glGetQueryObjectiv(&self, id: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
45749		#[cfg(feature = "catch_nullptr")]
45750		let ret = process_catch("glGetQueryObjectiv", catch_unwind(||(self.version_1_5.getqueryobjectiv)(id, pname, params)));
45751		#[cfg(not(feature = "catch_nullptr"))]
45752		let ret = {(self.version_1_5.getqueryobjectiv)(id, pname, params); Ok(())};
45753		#[cfg(feature = "diagnose")]
45754		if let Ok(ret) = ret {
45755			return to_result("glGetQueryObjectiv", ret, (self.version_1_5.geterror)());
45756		} else {
45757			return ret
45758		}
45759		#[cfg(not(feature = "diagnose"))]
45760		return ret;
45761	}
45762	#[inline(always)]
45763	fn glGetQueryObjectuiv(&self, id: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()> {
45764		#[cfg(feature = "catch_nullptr")]
45765		let ret = process_catch("glGetQueryObjectuiv", catch_unwind(||(self.version_1_5.getqueryobjectuiv)(id, pname, params)));
45766		#[cfg(not(feature = "catch_nullptr"))]
45767		let ret = {(self.version_1_5.getqueryobjectuiv)(id, pname, params); Ok(())};
45768		#[cfg(feature = "diagnose")]
45769		if let Ok(ret) = ret {
45770			return to_result("glGetQueryObjectuiv", ret, (self.version_1_5.geterror)());
45771		} else {
45772			return ret
45773		}
45774		#[cfg(not(feature = "diagnose"))]
45775		return ret;
45776	}
45777	#[inline(always)]
45778	fn glBindBuffer(&self, target: GLenum, buffer: GLuint) -> Result<()> {
45779		#[cfg(feature = "catch_nullptr")]
45780		let ret = process_catch("glBindBuffer", catch_unwind(||(self.version_1_5.bindbuffer)(target, buffer)));
45781		#[cfg(not(feature = "catch_nullptr"))]
45782		let ret = {(self.version_1_5.bindbuffer)(target, buffer); Ok(())};
45783		#[cfg(feature = "diagnose")]
45784		if let Ok(ret) = ret {
45785			return to_result("glBindBuffer", ret, (self.version_1_5.geterror)());
45786		} else {
45787			return ret
45788		}
45789		#[cfg(not(feature = "diagnose"))]
45790		return ret;
45791	}
45792	#[inline(always)]
45793	fn glDeleteBuffers(&self, n: GLsizei, buffers: *const GLuint) -> Result<()> {
45794		#[cfg(feature = "catch_nullptr")]
45795		let ret = process_catch("glDeleteBuffers", catch_unwind(||(self.version_1_5.deletebuffers)(n, buffers)));
45796		#[cfg(not(feature = "catch_nullptr"))]
45797		let ret = {(self.version_1_5.deletebuffers)(n, buffers); Ok(())};
45798		#[cfg(feature = "diagnose")]
45799		if let Ok(ret) = ret {
45800			return to_result("glDeleteBuffers", ret, (self.version_1_5.geterror)());
45801		} else {
45802			return ret
45803		}
45804		#[cfg(not(feature = "diagnose"))]
45805		return ret;
45806	}
45807	#[inline(always)]
45808	fn glGenBuffers(&self, n: GLsizei, buffers: *mut GLuint) -> Result<()> {
45809		#[cfg(feature = "catch_nullptr")]
45810		let ret = process_catch("glGenBuffers", catch_unwind(||(self.version_1_5.genbuffers)(n, buffers)));
45811		#[cfg(not(feature = "catch_nullptr"))]
45812		let ret = {(self.version_1_5.genbuffers)(n, buffers); Ok(())};
45813		#[cfg(feature = "diagnose")]
45814		if let Ok(ret) = ret {
45815			return to_result("glGenBuffers", ret, (self.version_1_5.geterror)());
45816		} else {
45817			return ret
45818		}
45819		#[cfg(not(feature = "diagnose"))]
45820		return ret;
45821	}
45822	#[inline(always)]
45823	fn glIsBuffer(&self, buffer: GLuint) -> Result<GLboolean> {
45824		#[cfg(feature = "catch_nullptr")]
45825		let ret = process_catch("glIsBuffer", catch_unwind(||(self.version_1_5.isbuffer)(buffer)));
45826		#[cfg(not(feature = "catch_nullptr"))]
45827		let ret = Ok((self.version_1_5.isbuffer)(buffer));
45828		#[cfg(feature = "diagnose")]
45829		if let Ok(ret) = ret {
45830			return to_result("glIsBuffer", ret, (self.version_1_5.geterror)());
45831		} else {
45832			return ret
45833		}
45834		#[cfg(not(feature = "diagnose"))]
45835		return ret;
45836	}
45837	#[inline(always)]
45838	fn glBufferData(&self, target: GLenum, size: GLsizeiptr, data: *const c_void, usage: GLenum) -> Result<()> {
45839		#[cfg(feature = "catch_nullptr")]
45840		let ret = process_catch("glBufferData", catch_unwind(||(self.version_1_5.bufferdata)(target, size, data, usage)));
45841		#[cfg(not(feature = "catch_nullptr"))]
45842		let ret = {(self.version_1_5.bufferdata)(target, size, data, usage); Ok(())};
45843		#[cfg(feature = "diagnose")]
45844		if let Ok(ret) = ret {
45845			return to_result("glBufferData", ret, (self.version_1_5.geterror)());
45846		} else {
45847			return ret
45848		}
45849		#[cfg(not(feature = "diagnose"))]
45850		return ret;
45851	}
45852	#[inline(always)]
45853	fn glBufferSubData(&self, target: GLenum, offset: GLintptr, size: GLsizeiptr, data: *const c_void) -> Result<()> {
45854		#[cfg(feature = "catch_nullptr")]
45855		let ret = process_catch("glBufferSubData", catch_unwind(||(self.version_1_5.buffersubdata)(target, offset, size, data)));
45856		#[cfg(not(feature = "catch_nullptr"))]
45857		let ret = {(self.version_1_5.buffersubdata)(target, offset, size, data); Ok(())};
45858		#[cfg(feature = "diagnose")]
45859		if let Ok(ret) = ret {
45860			return to_result("glBufferSubData", ret, (self.version_1_5.geterror)());
45861		} else {
45862			return ret
45863		}
45864		#[cfg(not(feature = "diagnose"))]
45865		return ret;
45866	}
45867	#[inline(always)]
45868	fn glGetBufferSubData(&self, target: GLenum, offset: GLintptr, size: GLsizeiptr, data: *mut c_void) -> Result<()> {
45869		#[cfg(feature = "catch_nullptr")]
45870		let ret = process_catch("glGetBufferSubData", catch_unwind(||(self.version_1_5.getbuffersubdata)(target, offset, size, data)));
45871		#[cfg(not(feature = "catch_nullptr"))]
45872		let ret = {(self.version_1_5.getbuffersubdata)(target, offset, size, data); Ok(())};
45873		#[cfg(feature = "diagnose")]
45874		if let Ok(ret) = ret {
45875			return to_result("glGetBufferSubData", ret, (self.version_1_5.geterror)());
45876		} else {
45877			return ret
45878		}
45879		#[cfg(not(feature = "diagnose"))]
45880		return ret;
45881	}
45882	#[inline(always)]
45883	fn glMapBuffer(&self, target: GLenum, access: GLenum) -> Result<*mut c_void> {
45884		#[cfg(feature = "catch_nullptr")]
45885		let ret = process_catch("glMapBuffer", catch_unwind(||(self.version_1_5.mapbuffer)(target, access)));
45886		#[cfg(not(feature = "catch_nullptr"))]
45887		let ret = Ok((self.version_1_5.mapbuffer)(target, access));
45888		#[cfg(feature = "diagnose")]
45889		if let Ok(ret) = ret {
45890			return to_result("glMapBuffer", ret, (self.version_1_5.geterror)());
45891		} else {
45892			return ret
45893		}
45894		#[cfg(not(feature = "diagnose"))]
45895		return ret;
45896	}
45897	#[inline(always)]
45898	fn glUnmapBuffer(&self, target: GLenum) -> Result<GLboolean> {
45899		#[cfg(feature = "catch_nullptr")]
45900		let ret = process_catch("glUnmapBuffer", catch_unwind(||(self.version_1_5.unmapbuffer)(target)));
45901		#[cfg(not(feature = "catch_nullptr"))]
45902		let ret = Ok((self.version_1_5.unmapbuffer)(target));
45903		#[cfg(feature = "diagnose")]
45904		if let Ok(ret) = ret {
45905			return to_result("glUnmapBuffer", ret, (self.version_1_5.geterror)());
45906		} else {
45907			return ret
45908		}
45909		#[cfg(not(feature = "diagnose"))]
45910		return ret;
45911	}
45912	#[inline(always)]
45913	fn glGetBufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
45914		#[cfg(feature = "catch_nullptr")]
45915		let ret = process_catch("glGetBufferParameteriv", catch_unwind(||(self.version_1_5.getbufferparameteriv)(target, pname, params)));
45916		#[cfg(not(feature = "catch_nullptr"))]
45917		let ret = {(self.version_1_5.getbufferparameteriv)(target, pname, params); Ok(())};
45918		#[cfg(feature = "diagnose")]
45919		if let Ok(ret) = ret {
45920			return to_result("glGetBufferParameteriv", ret, (self.version_1_5.geterror)());
45921		} else {
45922			return ret
45923		}
45924		#[cfg(not(feature = "diagnose"))]
45925		return ret;
45926	}
45927	#[inline(always)]
45928	fn glGetBufferPointerv(&self, target: GLenum, pname: GLenum, params: *mut *mut c_void) -> Result<()> {
45929		#[cfg(feature = "catch_nullptr")]
45930		let ret = process_catch("glGetBufferPointerv", catch_unwind(||(self.version_1_5.getbufferpointerv)(target, pname, params)));
45931		#[cfg(not(feature = "catch_nullptr"))]
45932		let ret = {(self.version_1_5.getbufferpointerv)(target, pname, params); Ok(())};
45933		#[cfg(feature = "diagnose")]
45934		if let Ok(ret) = ret {
45935			return to_result("glGetBufferPointerv", ret, (self.version_1_5.geterror)());
45936		} else {
45937			return ret
45938		}
45939		#[cfg(not(feature = "diagnose"))]
45940		return ret;
45941	}
45942}
45943
45944impl GL_2_0_g for GLCore {
45945	#[inline(always)]
45946	fn get_shading_language_version(&self) -> &'static str {
45947		self.version_2_0.shading_language_version
45948	}
45949	#[inline(always)]
45950	fn glBlendEquationSeparate(&self, modeRGB: GLenum, modeAlpha: GLenum) -> Result<()> {
45951		#[cfg(feature = "catch_nullptr")]
45952		let ret = process_catch("glBlendEquationSeparate", catch_unwind(||(self.version_2_0.blendequationseparate)(modeRGB, modeAlpha)));
45953		#[cfg(not(feature = "catch_nullptr"))]
45954		let ret = {(self.version_2_0.blendequationseparate)(modeRGB, modeAlpha); Ok(())};
45955		#[cfg(feature = "diagnose")]
45956		if let Ok(ret) = ret {
45957			return to_result("glBlendEquationSeparate", ret, (self.version_2_0.geterror)());
45958		} else {
45959			return ret
45960		}
45961		#[cfg(not(feature = "diagnose"))]
45962		return ret;
45963	}
45964	#[inline(always)]
45965	fn glDrawBuffers(&self, n: GLsizei, bufs: *const GLenum) -> Result<()> {
45966		#[cfg(feature = "catch_nullptr")]
45967		let ret = process_catch("glDrawBuffers", catch_unwind(||(self.version_2_0.drawbuffers)(n, bufs)));
45968		#[cfg(not(feature = "catch_nullptr"))]
45969		let ret = {(self.version_2_0.drawbuffers)(n, bufs); Ok(())};
45970		#[cfg(feature = "diagnose")]
45971		if let Ok(ret) = ret {
45972			return to_result("glDrawBuffers", ret, (self.version_2_0.geterror)());
45973		} else {
45974			return ret
45975		}
45976		#[cfg(not(feature = "diagnose"))]
45977		return ret;
45978	}
45979	#[inline(always)]
45980	fn glStencilOpSeparate(&self, face: GLenum, sfail: GLenum, dpfail: GLenum, dppass: GLenum) -> Result<()> {
45981		#[cfg(feature = "catch_nullptr")]
45982		let ret = process_catch("glStencilOpSeparate", catch_unwind(||(self.version_2_0.stencilopseparate)(face, sfail, dpfail, dppass)));
45983		#[cfg(not(feature = "catch_nullptr"))]
45984		let ret = {(self.version_2_0.stencilopseparate)(face, sfail, dpfail, dppass); Ok(())};
45985		#[cfg(feature = "diagnose")]
45986		if let Ok(ret) = ret {
45987			return to_result("glStencilOpSeparate", ret, (self.version_2_0.geterror)());
45988		} else {
45989			return ret
45990		}
45991		#[cfg(not(feature = "diagnose"))]
45992		return ret;
45993	}
45994	#[inline(always)]
45995	fn glStencilFuncSeparate(&self, face: GLenum, func: GLenum, ref_: GLint, mask: GLuint) -> Result<()> {
45996		#[cfg(feature = "catch_nullptr")]
45997		let ret = process_catch("glStencilFuncSeparate", catch_unwind(||(self.version_2_0.stencilfuncseparate)(face, func, ref_, mask)));
45998		#[cfg(not(feature = "catch_nullptr"))]
45999		let ret = {(self.version_2_0.stencilfuncseparate)(face, func, ref_, mask); Ok(())};
46000		#[cfg(feature = "diagnose")]
46001		if let Ok(ret) = ret {
46002			return to_result("glStencilFuncSeparate", ret, (self.version_2_0.geterror)());
46003		} else {
46004			return ret
46005		}
46006		#[cfg(not(feature = "diagnose"))]
46007		return ret;
46008	}
46009	#[inline(always)]
46010	fn glStencilMaskSeparate(&self, face: GLenum, mask: GLuint) -> Result<()> {
46011		#[cfg(feature = "catch_nullptr")]
46012		let ret = process_catch("glStencilMaskSeparate", catch_unwind(||(self.version_2_0.stencilmaskseparate)(face, mask)));
46013		#[cfg(not(feature = "catch_nullptr"))]
46014		let ret = {(self.version_2_0.stencilmaskseparate)(face, mask); Ok(())};
46015		#[cfg(feature = "diagnose")]
46016		if let Ok(ret) = ret {
46017			return to_result("glStencilMaskSeparate", ret, (self.version_2_0.geterror)());
46018		} else {
46019			return ret
46020		}
46021		#[cfg(not(feature = "diagnose"))]
46022		return ret;
46023	}
46024	#[inline(always)]
46025	fn glAttachShader(&self, program: GLuint, shader: GLuint) -> Result<()> {
46026		#[cfg(feature = "catch_nullptr")]
46027		let ret = process_catch("glAttachShader", catch_unwind(||(self.version_2_0.attachshader)(program, shader)));
46028		#[cfg(not(feature = "catch_nullptr"))]
46029		let ret = {(self.version_2_0.attachshader)(program, shader); Ok(())};
46030		#[cfg(feature = "diagnose")]
46031		if let Ok(ret) = ret {
46032			return to_result("glAttachShader", ret, (self.version_2_0.geterror)());
46033		} else {
46034			return ret
46035		}
46036		#[cfg(not(feature = "diagnose"))]
46037		return ret;
46038	}
46039	#[inline(always)]
46040	fn glBindAttribLocation(&self, program: GLuint, index: GLuint, name: *const GLchar) -> Result<()> {
46041		#[cfg(feature = "catch_nullptr")]
46042		let ret = process_catch("glBindAttribLocation", catch_unwind(||(self.version_2_0.bindattriblocation)(program, index, name)));
46043		#[cfg(not(feature = "catch_nullptr"))]
46044		let ret = {(self.version_2_0.bindattriblocation)(program, index, name); Ok(())};
46045		#[cfg(feature = "diagnose")]
46046		if let Ok(ret) = ret {
46047			return to_result("glBindAttribLocation", ret, (self.version_2_0.geterror)());
46048		} else {
46049			return ret
46050		}
46051		#[cfg(not(feature = "diagnose"))]
46052		return ret;
46053	}
46054	#[inline(always)]
46055	fn glCompileShader(&self, shader: GLuint) -> Result<()> {
46056		#[cfg(feature = "catch_nullptr")]
46057		let ret = process_catch("glCompileShader", catch_unwind(||(self.version_2_0.compileshader)(shader)));
46058		#[cfg(not(feature = "catch_nullptr"))]
46059		let ret = {(self.version_2_0.compileshader)(shader); Ok(())};
46060		#[cfg(feature = "diagnose")]
46061		if let Ok(ret) = ret {
46062			return to_result("glCompileShader", ret, (self.version_2_0.geterror)());
46063		} else {
46064			return ret
46065		}
46066		#[cfg(not(feature = "diagnose"))]
46067		return ret;
46068	}
46069	#[inline(always)]
46070	fn glCreateProgram(&self) -> Result<GLuint> {
46071		#[cfg(feature = "catch_nullptr")]
46072		let ret = process_catch("glCreateProgram", catch_unwind(||(self.version_2_0.createprogram)()));
46073		#[cfg(not(feature = "catch_nullptr"))]
46074		let ret = Ok((self.version_2_0.createprogram)());
46075		#[cfg(feature = "diagnose")]
46076		if let Ok(ret) = ret {
46077			return to_result("glCreateProgram", ret, (self.version_2_0.geterror)());
46078		} else {
46079			return ret
46080		}
46081		#[cfg(not(feature = "diagnose"))]
46082		return ret;
46083	}
46084	#[inline(always)]
46085	fn glCreateShader(&self, type_: GLenum) -> Result<GLuint> {
46086		#[cfg(feature = "catch_nullptr")]
46087		let ret = process_catch("glCreateShader", catch_unwind(||(self.version_2_0.createshader)(type_)));
46088		#[cfg(not(feature = "catch_nullptr"))]
46089		let ret = Ok((self.version_2_0.createshader)(type_));
46090		#[cfg(feature = "diagnose")]
46091		if let Ok(ret) = ret {
46092			return to_result("glCreateShader", ret, (self.version_2_0.geterror)());
46093		} else {
46094			return ret
46095		}
46096		#[cfg(not(feature = "diagnose"))]
46097		return ret;
46098	}
46099	#[inline(always)]
46100	fn glDeleteProgram(&self, program: GLuint) -> Result<()> {
46101		#[cfg(feature = "catch_nullptr")]
46102		let ret = process_catch("glDeleteProgram", catch_unwind(||(self.version_2_0.deleteprogram)(program)));
46103		#[cfg(not(feature = "catch_nullptr"))]
46104		let ret = {(self.version_2_0.deleteprogram)(program); Ok(())};
46105		#[cfg(feature = "diagnose")]
46106		if let Ok(ret) = ret {
46107			return to_result("glDeleteProgram", ret, (self.version_2_0.geterror)());
46108		} else {
46109			return ret
46110		}
46111		#[cfg(not(feature = "diagnose"))]
46112		return ret;
46113	}
46114	#[inline(always)]
46115	fn glDeleteShader(&self, shader: GLuint) -> Result<()> {
46116		#[cfg(feature = "catch_nullptr")]
46117		let ret = process_catch("glDeleteShader", catch_unwind(||(self.version_2_0.deleteshader)(shader)));
46118		#[cfg(not(feature = "catch_nullptr"))]
46119		let ret = {(self.version_2_0.deleteshader)(shader); Ok(())};
46120		#[cfg(feature = "diagnose")]
46121		if let Ok(ret) = ret {
46122			return to_result("glDeleteShader", ret, (self.version_2_0.geterror)());
46123		} else {
46124			return ret
46125		}
46126		#[cfg(not(feature = "diagnose"))]
46127		return ret;
46128	}
46129	#[inline(always)]
46130	fn glDetachShader(&self, program: GLuint, shader: GLuint) -> Result<()> {
46131		#[cfg(feature = "catch_nullptr")]
46132		let ret = process_catch("glDetachShader", catch_unwind(||(self.version_2_0.detachshader)(program, shader)));
46133		#[cfg(not(feature = "catch_nullptr"))]
46134		let ret = {(self.version_2_0.detachshader)(program, shader); Ok(())};
46135		#[cfg(feature = "diagnose")]
46136		if let Ok(ret) = ret {
46137			return to_result("glDetachShader", ret, (self.version_2_0.geterror)());
46138		} else {
46139			return ret
46140		}
46141		#[cfg(not(feature = "diagnose"))]
46142		return ret;
46143	}
46144	#[inline(always)]
46145	fn glDisableVertexAttribArray(&self, index: GLuint) -> Result<()> {
46146		#[cfg(feature = "catch_nullptr")]
46147		let ret = process_catch("glDisableVertexAttribArray", catch_unwind(||(self.version_2_0.disablevertexattribarray)(index)));
46148		#[cfg(not(feature = "catch_nullptr"))]
46149		let ret = {(self.version_2_0.disablevertexattribarray)(index); Ok(())};
46150		#[cfg(feature = "diagnose")]
46151		if let Ok(ret) = ret {
46152			return to_result("glDisableVertexAttribArray", ret, (self.version_2_0.geterror)());
46153		} else {
46154			return ret
46155		}
46156		#[cfg(not(feature = "diagnose"))]
46157		return ret;
46158	}
46159	#[inline(always)]
46160	fn glEnableVertexAttribArray(&self, index: GLuint) -> Result<()> {
46161		#[cfg(feature = "catch_nullptr")]
46162		let ret = process_catch("glEnableVertexAttribArray", catch_unwind(||(self.version_2_0.enablevertexattribarray)(index)));
46163		#[cfg(not(feature = "catch_nullptr"))]
46164		let ret = {(self.version_2_0.enablevertexattribarray)(index); Ok(())};
46165		#[cfg(feature = "diagnose")]
46166		if let Ok(ret) = ret {
46167			return to_result("glEnableVertexAttribArray", ret, (self.version_2_0.geterror)());
46168		} else {
46169			return ret
46170		}
46171		#[cfg(not(feature = "diagnose"))]
46172		return ret;
46173	}
46174	#[inline(always)]
46175	fn glGetActiveAttrib(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLint, type_: *mut GLenum, name: *mut GLchar) -> Result<()> {
46176		#[cfg(feature = "catch_nullptr")]
46177		let ret = process_catch("glGetActiveAttrib", catch_unwind(||(self.version_2_0.getactiveattrib)(program, index, bufSize, length, size, type_, name)));
46178		#[cfg(not(feature = "catch_nullptr"))]
46179		let ret = {(self.version_2_0.getactiveattrib)(program, index, bufSize, length, size, type_, name); Ok(())};
46180		#[cfg(feature = "diagnose")]
46181		if let Ok(ret) = ret {
46182			return to_result("glGetActiveAttrib", ret, (self.version_2_0.geterror)());
46183		} else {
46184			return ret
46185		}
46186		#[cfg(not(feature = "diagnose"))]
46187		return ret;
46188	}
46189	#[inline(always)]
46190	fn glGetActiveUniform(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLint, type_: *mut GLenum, name: *mut GLchar) -> Result<()> {
46191		#[cfg(feature = "catch_nullptr")]
46192		let ret = process_catch("glGetActiveUniform", catch_unwind(||(self.version_2_0.getactiveuniform)(program, index, bufSize, length, size, type_, name)));
46193		#[cfg(not(feature = "catch_nullptr"))]
46194		let ret = {(self.version_2_0.getactiveuniform)(program, index, bufSize, length, size, type_, name); Ok(())};
46195		#[cfg(feature = "diagnose")]
46196		if let Ok(ret) = ret {
46197			return to_result("glGetActiveUniform", ret, (self.version_2_0.geterror)());
46198		} else {
46199			return ret
46200		}
46201		#[cfg(not(feature = "diagnose"))]
46202		return ret;
46203	}
46204	#[inline(always)]
46205	fn glGetAttachedShaders(&self, program: GLuint, maxCount: GLsizei, count: *mut GLsizei, shaders: *mut GLuint) -> Result<()> {
46206		#[cfg(feature = "catch_nullptr")]
46207		let ret = process_catch("glGetAttachedShaders", catch_unwind(||(self.version_2_0.getattachedshaders)(program, maxCount, count, shaders)));
46208		#[cfg(not(feature = "catch_nullptr"))]
46209		let ret = {(self.version_2_0.getattachedshaders)(program, maxCount, count, shaders); Ok(())};
46210		#[cfg(feature = "diagnose")]
46211		if let Ok(ret) = ret {
46212			return to_result("glGetAttachedShaders", ret, (self.version_2_0.geterror)());
46213		} else {
46214			return ret
46215		}
46216		#[cfg(not(feature = "diagnose"))]
46217		return ret;
46218	}
46219	#[inline(always)]
46220	fn glGetAttribLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint> {
46221		#[cfg(feature = "catch_nullptr")]
46222		let ret = process_catch("glGetAttribLocation", catch_unwind(||(self.version_2_0.getattriblocation)(program, name)));
46223		#[cfg(not(feature = "catch_nullptr"))]
46224		let ret = Ok((self.version_2_0.getattriblocation)(program, name));
46225		#[cfg(feature = "diagnose")]
46226		if let Ok(ret) = ret {
46227			return to_result("glGetAttribLocation", ret, (self.version_2_0.geterror)());
46228		} else {
46229			return ret
46230		}
46231		#[cfg(not(feature = "diagnose"))]
46232		return ret;
46233	}
46234	#[inline(always)]
46235	fn glGetProgramiv(&self, program: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
46236		#[cfg(feature = "catch_nullptr")]
46237		let ret = process_catch("glGetProgramiv", catch_unwind(||(self.version_2_0.getprogramiv)(program, pname, params)));
46238		#[cfg(not(feature = "catch_nullptr"))]
46239		let ret = {(self.version_2_0.getprogramiv)(program, pname, params); Ok(())};
46240		#[cfg(feature = "diagnose")]
46241		if let Ok(ret) = ret {
46242			return to_result("glGetProgramiv", ret, (self.version_2_0.geterror)());
46243		} else {
46244			return ret
46245		}
46246		#[cfg(not(feature = "diagnose"))]
46247		return ret;
46248	}
46249	#[inline(always)]
46250	fn glGetProgramInfoLog(&self, program: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()> {
46251		#[cfg(feature = "catch_nullptr")]
46252		let ret = process_catch("glGetProgramInfoLog", catch_unwind(||(self.version_2_0.getprograminfolog)(program, bufSize, length, infoLog)));
46253		#[cfg(not(feature = "catch_nullptr"))]
46254		let ret = {(self.version_2_0.getprograminfolog)(program, bufSize, length, infoLog); Ok(())};
46255		#[cfg(feature = "diagnose")]
46256		if let Ok(ret) = ret {
46257			return to_result("glGetProgramInfoLog", ret, (self.version_2_0.geterror)());
46258		} else {
46259			return ret
46260		}
46261		#[cfg(not(feature = "diagnose"))]
46262		return ret;
46263	}
46264	#[inline(always)]
46265	fn glGetShaderiv(&self, shader: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
46266		#[cfg(feature = "catch_nullptr")]
46267		let ret = process_catch("glGetShaderiv", catch_unwind(||(self.version_2_0.getshaderiv)(shader, pname, params)));
46268		#[cfg(not(feature = "catch_nullptr"))]
46269		let ret = {(self.version_2_0.getshaderiv)(shader, pname, params); Ok(())};
46270		#[cfg(feature = "diagnose")]
46271		if let Ok(ret) = ret {
46272			return to_result("glGetShaderiv", ret, (self.version_2_0.geterror)());
46273		} else {
46274			return ret
46275		}
46276		#[cfg(not(feature = "diagnose"))]
46277		return ret;
46278	}
46279	#[inline(always)]
46280	fn glGetShaderInfoLog(&self, shader: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()> {
46281		#[cfg(feature = "catch_nullptr")]
46282		let ret = process_catch("glGetShaderInfoLog", catch_unwind(||(self.version_2_0.getshaderinfolog)(shader, bufSize, length, infoLog)));
46283		#[cfg(not(feature = "catch_nullptr"))]
46284		let ret = {(self.version_2_0.getshaderinfolog)(shader, bufSize, length, infoLog); Ok(())};
46285		#[cfg(feature = "diagnose")]
46286		if let Ok(ret) = ret {
46287			return to_result("glGetShaderInfoLog", ret, (self.version_2_0.geterror)());
46288		} else {
46289			return ret
46290		}
46291		#[cfg(not(feature = "diagnose"))]
46292		return ret;
46293	}
46294	#[inline(always)]
46295	fn glGetShaderSource(&self, shader: GLuint, bufSize: GLsizei, length: *mut GLsizei, source: *mut GLchar) -> Result<()> {
46296		#[cfg(feature = "catch_nullptr")]
46297		let ret = process_catch("glGetShaderSource", catch_unwind(||(self.version_2_0.getshadersource)(shader, bufSize, length, source)));
46298		#[cfg(not(feature = "catch_nullptr"))]
46299		let ret = {(self.version_2_0.getshadersource)(shader, bufSize, length, source); Ok(())};
46300		#[cfg(feature = "diagnose")]
46301		if let Ok(ret) = ret {
46302			return to_result("glGetShaderSource", ret, (self.version_2_0.geterror)());
46303		} else {
46304			return ret
46305		}
46306		#[cfg(not(feature = "diagnose"))]
46307		return ret;
46308	}
46309	#[inline(always)]
46310	fn glGetUniformLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint> {
46311		#[cfg(feature = "catch_nullptr")]
46312		let ret = process_catch("glGetUniformLocation", catch_unwind(||(self.version_2_0.getuniformlocation)(program, name)));
46313		#[cfg(not(feature = "catch_nullptr"))]
46314		let ret = Ok((self.version_2_0.getuniformlocation)(program, name));
46315		#[cfg(feature = "diagnose")]
46316		if let Ok(ret) = ret {
46317			return to_result("glGetUniformLocation", ret, (self.version_2_0.geterror)());
46318		} else {
46319			return ret
46320		}
46321		#[cfg(not(feature = "diagnose"))]
46322		return ret;
46323	}
46324	#[inline(always)]
46325	fn glGetUniformfv(&self, program: GLuint, location: GLint, params: *mut GLfloat) -> Result<()> {
46326		#[cfg(feature = "catch_nullptr")]
46327		let ret = process_catch("glGetUniformfv", catch_unwind(||(self.version_2_0.getuniformfv)(program, location, params)));
46328		#[cfg(not(feature = "catch_nullptr"))]
46329		let ret = {(self.version_2_0.getuniformfv)(program, location, params); Ok(())};
46330		#[cfg(feature = "diagnose")]
46331		if let Ok(ret) = ret {
46332			return to_result("glGetUniformfv", ret, (self.version_2_0.geterror)());
46333		} else {
46334			return ret
46335		}
46336		#[cfg(not(feature = "diagnose"))]
46337		return ret;
46338	}
46339	#[inline(always)]
46340	fn glGetUniformiv(&self, program: GLuint, location: GLint, params: *mut GLint) -> Result<()> {
46341		#[cfg(feature = "catch_nullptr")]
46342		let ret = process_catch("glGetUniformiv", catch_unwind(||(self.version_2_0.getuniformiv)(program, location, params)));
46343		#[cfg(not(feature = "catch_nullptr"))]
46344		let ret = {(self.version_2_0.getuniformiv)(program, location, params); Ok(())};
46345		#[cfg(feature = "diagnose")]
46346		if let Ok(ret) = ret {
46347			return to_result("glGetUniformiv", ret, (self.version_2_0.geterror)());
46348		} else {
46349			return ret
46350		}
46351		#[cfg(not(feature = "diagnose"))]
46352		return ret;
46353	}
46354	#[inline(always)]
46355	fn glGetVertexAttribdv(&self, index: GLuint, pname: GLenum, params: *mut GLdouble) -> Result<()> {
46356		#[cfg(feature = "catch_nullptr")]
46357		let ret = process_catch("glGetVertexAttribdv", catch_unwind(||(self.version_2_0.getvertexattribdv)(index, pname, params)));
46358		#[cfg(not(feature = "catch_nullptr"))]
46359		let ret = {(self.version_2_0.getvertexattribdv)(index, pname, params); Ok(())};
46360		#[cfg(feature = "diagnose")]
46361		if let Ok(ret) = ret {
46362			return to_result("glGetVertexAttribdv", ret, (self.version_2_0.geterror)());
46363		} else {
46364			return ret
46365		}
46366		#[cfg(not(feature = "diagnose"))]
46367		return ret;
46368	}
46369	#[inline(always)]
46370	fn glGetVertexAttribfv(&self, index: GLuint, pname: GLenum, params: *mut GLfloat) -> Result<()> {
46371		#[cfg(feature = "catch_nullptr")]
46372		let ret = process_catch("glGetVertexAttribfv", catch_unwind(||(self.version_2_0.getvertexattribfv)(index, pname, params)));
46373		#[cfg(not(feature = "catch_nullptr"))]
46374		let ret = {(self.version_2_0.getvertexattribfv)(index, pname, params); Ok(())};
46375		#[cfg(feature = "diagnose")]
46376		if let Ok(ret) = ret {
46377			return to_result("glGetVertexAttribfv", ret, (self.version_2_0.geterror)());
46378		} else {
46379			return ret
46380		}
46381		#[cfg(not(feature = "diagnose"))]
46382		return ret;
46383	}
46384	#[inline(always)]
46385	fn glGetVertexAttribiv(&self, index: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
46386		#[cfg(feature = "catch_nullptr")]
46387		let ret = process_catch("glGetVertexAttribiv", catch_unwind(||(self.version_2_0.getvertexattribiv)(index, pname, params)));
46388		#[cfg(not(feature = "catch_nullptr"))]
46389		let ret = {(self.version_2_0.getvertexattribiv)(index, pname, params); Ok(())};
46390		#[cfg(feature = "diagnose")]
46391		if let Ok(ret) = ret {
46392			return to_result("glGetVertexAttribiv", ret, (self.version_2_0.geterror)());
46393		} else {
46394			return ret
46395		}
46396		#[cfg(not(feature = "diagnose"))]
46397		return ret;
46398	}
46399	#[inline(always)]
46400	fn glGetVertexAttribPointerv(&self, index: GLuint, pname: GLenum, pointer: *mut *mut c_void) -> Result<()> {
46401		#[cfg(feature = "catch_nullptr")]
46402		let ret = process_catch("glGetVertexAttribPointerv", catch_unwind(||(self.version_2_0.getvertexattribpointerv)(index, pname, pointer)));
46403		#[cfg(not(feature = "catch_nullptr"))]
46404		let ret = {(self.version_2_0.getvertexattribpointerv)(index, pname, pointer); Ok(())};
46405		#[cfg(feature = "diagnose")]
46406		if let Ok(ret) = ret {
46407			return to_result("glGetVertexAttribPointerv", ret, (self.version_2_0.geterror)());
46408		} else {
46409			return ret
46410		}
46411		#[cfg(not(feature = "diagnose"))]
46412		return ret;
46413	}
46414	#[inline(always)]
46415	fn glIsProgram(&self, program: GLuint) -> Result<GLboolean> {
46416		#[cfg(feature = "catch_nullptr")]
46417		let ret = process_catch("glIsProgram", catch_unwind(||(self.version_2_0.isprogram)(program)));
46418		#[cfg(not(feature = "catch_nullptr"))]
46419		let ret = Ok((self.version_2_0.isprogram)(program));
46420		#[cfg(feature = "diagnose")]
46421		if let Ok(ret) = ret {
46422			return to_result("glIsProgram", ret, (self.version_2_0.geterror)());
46423		} else {
46424			return ret
46425		}
46426		#[cfg(not(feature = "diagnose"))]
46427		return ret;
46428	}
46429	#[inline(always)]
46430	fn glIsShader(&self, shader: GLuint) -> Result<GLboolean> {
46431		#[cfg(feature = "catch_nullptr")]
46432		let ret = process_catch("glIsShader", catch_unwind(||(self.version_2_0.isshader)(shader)));
46433		#[cfg(not(feature = "catch_nullptr"))]
46434		let ret = Ok((self.version_2_0.isshader)(shader));
46435		#[cfg(feature = "diagnose")]
46436		if let Ok(ret) = ret {
46437			return to_result("glIsShader", ret, (self.version_2_0.geterror)());
46438		} else {
46439			return ret
46440		}
46441		#[cfg(not(feature = "diagnose"))]
46442		return ret;
46443	}
46444	#[inline(always)]
46445	fn glLinkProgram(&self, program: GLuint) -> Result<()> {
46446		#[cfg(feature = "catch_nullptr")]
46447		let ret = process_catch("glLinkProgram", catch_unwind(||(self.version_2_0.linkprogram)(program)));
46448		#[cfg(not(feature = "catch_nullptr"))]
46449		let ret = {(self.version_2_0.linkprogram)(program); Ok(())};
46450		#[cfg(feature = "diagnose")]
46451		if let Ok(ret) = ret {
46452			return to_result("glLinkProgram", ret, (self.version_2_0.geterror)());
46453		} else {
46454			return ret
46455		}
46456		#[cfg(not(feature = "diagnose"))]
46457		return ret;
46458	}
46459	#[inline(always)]
46460	fn glShaderSource(&self, shader: GLuint, count: GLsizei, string_: *const *const GLchar, length: *const GLint) -> Result<()> {
46461		#[cfg(feature = "catch_nullptr")]
46462		let ret = process_catch("glShaderSource", catch_unwind(||(self.version_2_0.shadersource)(shader, count, string_, length)));
46463		#[cfg(not(feature = "catch_nullptr"))]
46464		let ret = {(self.version_2_0.shadersource)(shader, count, string_, length); Ok(())};
46465		#[cfg(feature = "diagnose")]
46466		if let Ok(ret) = ret {
46467			return to_result("glShaderSource", ret, (self.version_2_0.geterror)());
46468		} else {
46469			return ret
46470		}
46471		#[cfg(not(feature = "diagnose"))]
46472		return ret;
46473	}
46474	#[inline(always)]
46475	fn glUseProgram(&self, program: GLuint) -> Result<()> {
46476		#[cfg(feature = "catch_nullptr")]
46477		let ret = process_catch("glUseProgram", catch_unwind(||(self.version_2_0.useprogram)(program)));
46478		#[cfg(not(feature = "catch_nullptr"))]
46479		let ret = {(self.version_2_0.useprogram)(program); Ok(())};
46480		#[cfg(feature = "diagnose")]
46481		if let Ok(ret) = ret {
46482			return to_result("glUseProgram", ret, (self.version_2_0.geterror)());
46483		} else {
46484			return ret
46485		}
46486		#[cfg(not(feature = "diagnose"))]
46487		return ret;
46488	}
46489	#[inline(always)]
46490	fn glUniform1f(&self, location: GLint, v0: GLfloat) -> Result<()> {
46491		#[cfg(feature = "catch_nullptr")]
46492		let ret = process_catch("glUniform1f", catch_unwind(||(self.version_2_0.uniform1f)(location, v0)));
46493		#[cfg(not(feature = "catch_nullptr"))]
46494		let ret = {(self.version_2_0.uniform1f)(location, v0); Ok(())};
46495		#[cfg(feature = "diagnose")]
46496		if let Ok(ret) = ret {
46497			return to_result("glUniform1f", ret, (self.version_2_0.geterror)());
46498		} else {
46499			return ret
46500		}
46501		#[cfg(not(feature = "diagnose"))]
46502		return ret;
46503	}
46504	#[inline(always)]
46505	fn glUniform2f(&self, location: GLint, v0: GLfloat, v1: GLfloat) -> Result<()> {
46506		#[cfg(feature = "catch_nullptr")]
46507		let ret = process_catch("glUniform2f", catch_unwind(||(self.version_2_0.uniform2f)(location, v0, v1)));
46508		#[cfg(not(feature = "catch_nullptr"))]
46509		let ret = {(self.version_2_0.uniform2f)(location, v0, v1); Ok(())};
46510		#[cfg(feature = "diagnose")]
46511		if let Ok(ret) = ret {
46512			return to_result("glUniform2f", ret, (self.version_2_0.geterror)());
46513		} else {
46514			return ret
46515		}
46516		#[cfg(not(feature = "diagnose"))]
46517		return ret;
46518	}
46519	#[inline(always)]
46520	fn glUniform3f(&self, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat) -> Result<()> {
46521		#[cfg(feature = "catch_nullptr")]
46522		let ret = process_catch("glUniform3f", catch_unwind(||(self.version_2_0.uniform3f)(location, v0, v1, v2)));
46523		#[cfg(not(feature = "catch_nullptr"))]
46524		let ret = {(self.version_2_0.uniform3f)(location, v0, v1, v2); Ok(())};
46525		#[cfg(feature = "diagnose")]
46526		if let Ok(ret) = ret {
46527			return to_result("glUniform3f", ret, (self.version_2_0.geterror)());
46528		} else {
46529			return ret
46530		}
46531		#[cfg(not(feature = "diagnose"))]
46532		return ret;
46533	}
46534	#[inline(always)]
46535	fn glUniform4f(&self, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat, v3: GLfloat) -> Result<()> {
46536		#[cfg(feature = "catch_nullptr")]
46537		let ret = process_catch("glUniform4f", catch_unwind(||(self.version_2_0.uniform4f)(location, v0, v1, v2, v3)));
46538		#[cfg(not(feature = "catch_nullptr"))]
46539		let ret = {(self.version_2_0.uniform4f)(location, v0, v1, v2, v3); Ok(())};
46540		#[cfg(feature = "diagnose")]
46541		if let Ok(ret) = ret {
46542			return to_result("glUniform4f", ret, (self.version_2_0.geterror)());
46543		} else {
46544			return ret
46545		}
46546		#[cfg(not(feature = "diagnose"))]
46547		return ret;
46548	}
46549	#[inline(always)]
46550	fn glUniform1i(&self, location: GLint, v0: GLint) -> Result<()> {
46551		#[cfg(feature = "catch_nullptr")]
46552		let ret = process_catch("glUniform1i", catch_unwind(||(self.version_2_0.uniform1i)(location, v0)));
46553		#[cfg(not(feature = "catch_nullptr"))]
46554		let ret = {(self.version_2_0.uniform1i)(location, v0); Ok(())};
46555		#[cfg(feature = "diagnose")]
46556		if let Ok(ret) = ret {
46557			return to_result("glUniform1i", ret, (self.version_2_0.geterror)());
46558		} else {
46559			return ret
46560		}
46561		#[cfg(not(feature = "diagnose"))]
46562		return ret;
46563	}
46564	#[inline(always)]
46565	fn glUniform2i(&self, location: GLint, v0: GLint, v1: GLint) -> Result<()> {
46566		#[cfg(feature = "catch_nullptr")]
46567		let ret = process_catch("glUniform2i", catch_unwind(||(self.version_2_0.uniform2i)(location, v0, v1)));
46568		#[cfg(not(feature = "catch_nullptr"))]
46569		let ret = {(self.version_2_0.uniform2i)(location, v0, v1); Ok(())};
46570		#[cfg(feature = "diagnose")]
46571		if let Ok(ret) = ret {
46572			return to_result("glUniform2i", ret, (self.version_2_0.geterror)());
46573		} else {
46574			return ret
46575		}
46576		#[cfg(not(feature = "diagnose"))]
46577		return ret;
46578	}
46579	#[inline(always)]
46580	fn glUniform3i(&self, location: GLint, v0: GLint, v1: GLint, v2: GLint) -> Result<()> {
46581		#[cfg(feature = "catch_nullptr")]
46582		let ret = process_catch("glUniform3i", catch_unwind(||(self.version_2_0.uniform3i)(location, v0, v1, v2)));
46583		#[cfg(not(feature = "catch_nullptr"))]
46584		let ret = {(self.version_2_0.uniform3i)(location, v0, v1, v2); Ok(())};
46585		#[cfg(feature = "diagnose")]
46586		if let Ok(ret) = ret {
46587			return to_result("glUniform3i", ret, (self.version_2_0.geterror)());
46588		} else {
46589			return ret
46590		}
46591		#[cfg(not(feature = "diagnose"))]
46592		return ret;
46593	}
46594	#[inline(always)]
46595	fn glUniform4i(&self, location: GLint, v0: GLint, v1: GLint, v2: GLint, v3: GLint) -> Result<()> {
46596		#[cfg(feature = "catch_nullptr")]
46597		let ret = process_catch("glUniform4i", catch_unwind(||(self.version_2_0.uniform4i)(location, v0, v1, v2, v3)));
46598		#[cfg(not(feature = "catch_nullptr"))]
46599		let ret = {(self.version_2_0.uniform4i)(location, v0, v1, v2, v3); Ok(())};
46600		#[cfg(feature = "diagnose")]
46601		if let Ok(ret) = ret {
46602			return to_result("glUniform4i", ret, (self.version_2_0.geterror)());
46603		} else {
46604			return ret
46605		}
46606		#[cfg(not(feature = "diagnose"))]
46607		return ret;
46608	}
46609	#[inline(always)]
46610	fn glUniform1fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
46611		#[cfg(feature = "catch_nullptr")]
46612		let ret = process_catch("glUniform1fv", catch_unwind(||(self.version_2_0.uniform1fv)(location, count, value)));
46613		#[cfg(not(feature = "catch_nullptr"))]
46614		let ret = {(self.version_2_0.uniform1fv)(location, count, value); Ok(())};
46615		#[cfg(feature = "diagnose")]
46616		if let Ok(ret) = ret {
46617			return to_result("glUniform1fv", ret, (self.version_2_0.geterror)());
46618		} else {
46619			return ret
46620		}
46621		#[cfg(not(feature = "diagnose"))]
46622		return ret;
46623	}
46624	#[inline(always)]
46625	fn glUniform2fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
46626		#[cfg(feature = "catch_nullptr")]
46627		let ret = process_catch("glUniform2fv", catch_unwind(||(self.version_2_0.uniform2fv)(location, count, value)));
46628		#[cfg(not(feature = "catch_nullptr"))]
46629		let ret = {(self.version_2_0.uniform2fv)(location, count, value); Ok(())};
46630		#[cfg(feature = "diagnose")]
46631		if let Ok(ret) = ret {
46632			return to_result("glUniform2fv", ret, (self.version_2_0.geterror)());
46633		} else {
46634			return ret
46635		}
46636		#[cfg(not(feature = "diagnose"))]
46637		return ret;
46638	}
46639	#[inline(always)]
46640	fn glUniform3fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
46641		#[cfg(feature = "catch_nullptr")]
46642		let ret = process_catch("glUniform3fv", catch_unwind(||(self.version_2_0.uniform3fv)(location, count, value)));
46643		#[cfg(not(feature = "catch_nullptr"))]
46644		let ret = {(self.version_2_0.uniform3fv)(location, count, value); Ok(())};
46645		#[cfg(feature = "diagnose")]
46646		if let Ok(ret) = ret {
46647			return to_result("glUniform3fv", ret, (self.version_2_0.geterror)());
46648		} else {
46649			return ret
46650		}
46651		#[cfg(not(feature = "diagnose"))]
46652		return ret;
46653	}
46654	#[inline(always)]
46655	fn glUniform4fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
46656		#[cfg(feature = "catch_nullptr")]
46657		let ret = process_catch("glUniform4fv", catch_unwind(||(self.version_2_0.uniform4fv)(location, count, value)));
46658		#[cfg(not(feature = "catch_nullptr"))]
46659		let ret = {(self.version_2_0.uniform4fv)(location, count, value); Ok(())};
46660		#[cfg(feature = "diagnose")]
46661		if let Ok(ret) = ret {
46662			return to_result("glUniform4fv", ret, (self.version_2_0.geterror)());
46663		} else {
46664			return ret
46665		}
46666		#[cfg(not(feature = "diagnose"))]
46667		return ret;
46668	}
46669	#[inline(always)]
46670	fn glUniform1iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
46671		#[cfg(feature = "catch_nullptr")]
46672		let ret = process_catch("glUniform1iv", catch_unwind(||(self.version_2_0.uniform1iv)(location, count, value)));
46673		#[cfg(not(feature = "catch_nullptr"))]
46674		let ret = {(self.version_2_0.uniform1iv)(location, count, value); Ok(())};
46675		#[cfg(feature = "diagnose")]
46676		if let Ok(ret) = ret {
46677			return to_result("glUniform1iv", ret, (self.version_2_0.geterror)());
46678		} else {
46679			return ret
46680		}
46681		#[cfg(not(feature = "diagnose"))]
46682		return ret;
46683	}
46684	#[inline(always)]
46685	fn glUniform2iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
46686		#[cfg(feature = "catch_nullptr")]
46687		let ret = process_catch("glUniform2iv", catch_unwind(||(self.version_2_0.uniform2iv)(location, count, value)));
46688		#[cfg(not(feature = "catch_nullptr"))]
46689		let ret = {(self.version_2_0.uniform2iv)(location, count, value); Ok(())};
46690		#[cfg(feature = "diagnose")]
46691		if let Ok(ret) = ret {
46692			return to_result("glUniform2iv", ret, (self.version_2_0.geterror)());
46693		} else {
46694			return ret
46695		}
46696		#[cfg(not(feature = "diagnose"))]
46697		return ret;
46698	}
46699	#[inline(always)]
46700	fn glUniform3iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
46701		#[cfg(feature = "catch_nullptr")]
46702		let ret = process_catch("glUniform3iv", catch_unwind(||(self.version_2_0.uniform3iv)(location, count, value)));
46703		#[cfg(not(feature = "catch_nullptr"))]
46704		let ret = {(self.version_2_0.uniform3iv)(location, count, value); Ok(())};
46705		#[cfg(feature = "diagnose")]
46706		if let Ok(ret) = ret {
46707			return to_result("glUniform3iv", ret, (self.version_2_0.geterror)());
46708		} else {
46709			return ret
46710		}
46711		#[cfg(not(feature = "diagnose"))]
46712		return ret;
46713	}
46714	#[inline(always)]
46715	fn glUniform4iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
46716		#[cfg(feature = "catch_nullptr")]
46717		let ret = process_catch("glUniform4iv", catch_unwind(||(self.version_2_0.uniform4iv)(location, count, value)));
46718		#[cfg(not(feature = "catch_nullptr"))]
46719		let ret = {(self.version_2_0.uniform4iv)(location, count, value); Ok(())};
46720		#[cfg(feature = "diagnose")]
46721		if let Ok(ret) = ret {
46722			return to_result("glUniform4iv", ret, (self.version_2_0.geterror)());
46723		} else {
46724			return ret
46725		}
46726		#[cfg(not(feature = "diagnose"))]
46727		return ret;
46728	}
46729	#[inline(always)]
46730	fn glUniformMatrix2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
46731		#[cfg(feature = "catch_nullptr")]
46732		let ret = process_catch("glUniformMatrix2fv", catch_unwind(||(self.version_2_0.uniformmatrix2fv)(location, count, transpose, value)));
46733		#[cfg(not(feature = "catch_nullptr"))]
46734		let ret = {(self.version_2_0.uniformmatrix2fv)(location, count, transpose, value); Ok(())};
46735		#[cfg(feature = "diagnose")]
46736		if let Ok(ret) = ret {
46737			return to_result("glUniformMatrix2fv", ret, (self.version_2_0.geterror)());
46738		} else {
46739			return ret
46740		}
46741		#[cfg(not(feature = "diagnose"))]
46742		return ret;
46743	}
46744	#[inline(always)]
46745	fn glUniformMatrix3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
46746		#[cfg(feature = "catch_nullptr")]
46747		let ret = process_catch("glUniformMatrix3fv", catch_unwind(||(self.version_2_0.uniformmatrix3fv)(location, count, transpose, value)));
46748		#[cfg(not(feature = "catch_nullptr"))]
46749		let ret = {(self.version_2_0.uniformmatrix3fv)(location, count, transpose, value); Ok(())};
46750		#[cfg(feature = "diagnose")]
46751		if let Ok(ret) = ret {
46752			return to_result("glUniformMatrix3fv", ret, (self.version_2_0.geterror)());
46753		} else {
46754			return ret
46755		}
46756		#[cfg(not(feature = "diagnose"))]
46757		return ret;
46758	}
46759	#[inline(always)]
46760	fn glUniformMatrix4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
46761		#[cfg(feature = "catch_nullptr")]
46762		let ret = process_catch("glUniformMatrix4fv", catch_unwind(||(self.version_2_0.uniformmatrix4fv)(location, count, transpose, value)));
46763		#[cfg(not(feature = "catch_nullptr"))]
46764		let ret = {(self.version_2_0.uniformmatrix4fv)(location, count, transpose, value); Ok(())};
46765		#[cfg(feature = "diagnose")]
46766		if let Ok(ret) = ret {
46767			return to_result("glUniformMatrix4fv", ret, (self.version_2_0.geterror)());
46768		} else {
46769			return ret
46770		}
46771		#[cfg(not(feature = "diagnose"))]
46772		return ret;
46773	}
46774	#[inline(always)]
46775	fn glValidateProgram(&self, program: GLuint) -> Result<()> {
46776		#[cfg(feature = "catch_nullptr")]
46777		let ret = process_catch("glValidateProgram", catch_unwind(||(self.version_2_0.validateprogram)(program)));
46778		#[cfg(not(feature = "catch_nullptr"))]
46779		let ret = {(self.version_2_0.validateprogram)(program); Ok(())};
46780		#[cfg(feature = "diagnose")]
46781		if let Ok(ret) = ret {
46782			return to_result("glValidateProgram", ret, (self.version_2_0.geterror)());
46783		} else {
46784			return ret
46785		}
46786		#[cfg(not(feature = "diagnose"))]
46787		return ret;
46788	}
46789	#[inline(always)]
46790	fn glVertexAttrib1d(&self, index: GLuint, x: GLdouble) -> Result<()> {
46791		#[cfg(feature = "catch_nullptr")]
46792		let ret = process_catch("glVertexAttrib1d", catch_unwind(||(self.version_2_0.vertexattrib1d)(index, x)));
46793		#[cfg(not(feature = "catch_nullptr"))]
46794		let ret = {(self.version_2_0.vertexattrib1d)(index, x); Ok(())};
46795		#[cfg(feature = "diagnose")]
46796		if let Ok(ret) = ret {
46797			return to_result("glVertexAttrib1d", ret, (self.version_2_0.geterror)());
46798		} else {
46799			return ret
46800		}
46801		#[cfg(not(feature = "diagnose"))]
46802		return ret;
46803	}
46804	#[inline(always)]
46805	fn glVertexAttrib1dv(&self, index: GLuint, v: *const GLdouble) -> Result<()> {
46806		#[cfg(feature = "catch_nullptr")]
46807		let ret = process_catch("glVertexAttrib1dv", catch_unwind(||(self.version_2_0.vertexattrib1dv)(index, v)));
46808		#[cfg(not(feature = "catch_nullptr"))]
46809		let ret = {(self.version_2_0.vertexattrib1dv)(index, v); Ok(())};
46810		#[cfg(feature = "diagnose")]
46811		if let Ok(ret) = ret {
46812			return to_result("glVertexAttrib1dv", ret, (self.version_2_0.geterror)());
46813		} else {
46814			return ret
46815		}
46816		#[cfg(not(feature = "diagnose"))]
46817		return ret;
46818	}
46819	#[inline(always)]
46820	fn glVertexAttrib1f(&self, index: GLuint, x: GLfloat) -> Result<()> {
46821		#[cfg(feature = "catch_nullptr")]
46822		let ret = process_catch("glVertexAttrib1f", catch_unwind(||(self.version_2_0.vertexattrib1f)(index, x)));
46823		#[cfg(not(feature = "catch_nullptr"))]
46824		let ret = {(self.version_2_0.vertexattrib1f)(index, x); Ok(())};
46825		#[cfg(feature = "diagnose")]
46826		if let Ok(ret) = ret {
46827			return to_result("glVertexAttrib1f", ret, (self.version_2_0.geterror)());
46828		} else {
46829			return ret
46830		}
46831		#[cfg(not(feature = "diagnose"))]
46832		return ret;
46833	}
46834	#[inline(always)]
46835	fn glVertexAttrib1fv(&self, index: GLuint, v: *const GLfloat) -> Result<()> {
46836		#[cfg(feature = "catch_nullptr")]
46837		let ret = process_catch("glVertexAttrib1fv", catch_unwind(||(self.version_2_0.vertexattrib1fv)(index, v)));
46838		#[cfg(not(feature = "catch_nullptr"))]
46839		let ret = {(self.version_2_0.vertexattrib1fv)(index, v); Ok(())};
46840		#[cfg(feature = "diagnose")]
46841		if let Ok(ret) = ret {
46842			return to_result("glVertexAttrib1fv", ret, (self.version_2_0.geterror)());
46843		} else {
46844			return ret
46845		}
46846		#[cfg(not(feature = "diagnose"))]
46847		return ret;
46848	}
46849	#[inline(always)]
46850	fn glVertexAttrib1s(&self, index: GLuint, x: GLshort) -> Result<()> {
46851		#[cfg(feature = "catch_nullptr")]
46852		let ret = process_catch("glVertexAttrib1s", catch_unwind(||(self.version_2_0.vertexattrib1s)(index, x)));
46853		#[cfg(not(feature = "catch_nullptr"))]
46854		let ret = {(self.version_2_0.vertexattrib1s)(index, x); Ok(())};
46855		#[cfg(feature = "diagnose")]
46856		if let Ok(ret) = ret {
46857			return to_result("glVertexAttrib1s", ret, (self.version_2_0.geterror)());
46858		} else {
46859			return ret
46860		}
46861		#[cfg(not(feature = "diagnose"))]
46862		return ret;
46863	}
46864	#[inline(always)]
46865	fn glVertexAttrib1sv(&self, index: GLuint, v: *const GLshort) -> Result<()> {
46866		#[cfg(feature = "catch_nullptr")]
46867		let ret = process_catch("glVertexAttrib1sv", catch_unwind(||(self.version_2_0.vertexattrib1sv)(index, v)));
46868		#[cfg(not(feature = "catch_nullptr"))]
46869		let ret = {(self.version_2_0.vertexattrib1sv)(index, v); Ok(())};
46870		#[cfg(feature = "diagnose")]
46871		if let Ok(ret) = ret {
46872			return to_result("glVertexAttrib1sv", ret, (self.version_2_0.geterror)());
46873		} else {
46874			return ret
46875		}
46876		#[cfg(not(feature = "diagnose"))]
46877		return ret;
46878	}
46879	#[inline(always)]
46880	fn glVertexAttrib2d(&self, index: GLuint, x: GLdouble, y: GLdouble) -> Result<()> {
46881		#[cfg(feature = "catch_nullptr")]
46882		let ret = process_catch("glVertexAttrib2d", catch_unwind(||(self.version_2_0.vertexattrib2d)(index, x, y)));
46883		#[cfg(not(feature = "catch_nullptr"))]
46884		let ret = {(self.version_2_0.vertexattrib2d)(index, x, y); Ok(())};
46885		#[cfg(feature = "diagnose")]
46886		if let Ok(ret) = ret {
46887			return to_result("glVertexAttrib2d", ret, (self.version_2_0.geterror)());
46888		} else {
46889			return ret
46890		}
46891		#[cfg(not(feature = "diagnose"))]
46892		return ret;
46893	}
46894	#[inline(always)]
46895	fn glVertexAttrib2dv(&self, index: GLuint, v: *const GLdouble) -> Result<()> {
46896		#[cfg(feature = "catch_nullptr")]
46897		let ret = process_catch("glVertexAttrib2dv", catch_unwind(||(self.version_2_0.vertexattrib2dv)(index, v)));
46898		#[cfg(not(feature = "catch_nullptr"))]
46899		let ret = {(self.version_2_0.vertexattrib2dv)(index, v); Ok(())};
46900		#[cfg(feature = "diagnose")]
46901		if let Ok(ret) = ret {
46902			return to_result("glVertexAttrib2dv", ret, (self.version_2_0.geterror)());
46903		} else {
46904			return ret
46905		}
46906		#[cfg(not(feature = "diagnose"))]
46907		return ret;
46908	}
46909	#[inline(always)]
46910	fn glVertexAttrib2f(&self, index: GLuint, x: GLfloat, y: GLfloat) -> Result<()> {
46911		#[cfg(feature = "catch_nullptr")]
46912		let ret = process_catch("glVertexAttrib2f", catch_unwind(||(self.version_2_0.vertexattrib2f)(index, x, y)));
46913		#[cfg(not(feature = "catch_nullptr"))]
46914		let ret = {(self.version_2_0.vertexattrib2f)(index, x, y); Ok(())};
46915		#[cfg(feature = "diagnose")]
46916		if let Ok(ret) = ret {
46917			return to_result("glVertexAttrib2f", ret, (self.version_2_0.geterror)());
46918		} else {
46919			return ret
46920		}
46921		#[cfg(not(feature = "diagnose"))]
46922		return ret;
46923	}
46924	#[inline(always)]
46925	fn glVertexAttrib2fv(&self, index: GLuint, v: *const GLfloat) -> Result<()> {
46926		#[cfg(feature = "catch_nullptr")]
46927		let ret = process_catch("glVertexAttrib2fv", catch_unwind(||(self.version_2_0.vertexattrib2fv)(index, v)));
46928		#[cfg(not(feature = "catch_nullptr"))]
46929		let ret = {(self.version_2_0.vertexattrib2fv)(index, v); Ok(())};
46930		#[cfg(feature = "diagnose")]
46931		if let Ok(ret) = ret {
46932			return to_result("glVertexAttrib2fv", ret, (self.version_2_0.geterror)());
46933		} else {
46934			return ret
46935		}
46936		#[cfg(not(feature = "diagnose"))]
46937		return ret;
46938	}
46939	#[inline(always)]
46940	fn glVertexAttrib2s(&self, index: GLuint, x: GLshort, y: GLshort) -> Result<()> {
46941		#[cfg(feature = "catch_nullptr")]
46942		let ret = process_catch("glVertexAttrib2s", catch_unwind(||(self.version_2_0.vertexattrib2s)(index, x, y)));
46943		#[cfg(not(feature = "catch_nullptr"))]
46944		let ret = {(self.version_2_0.vertexattrib2s)(index, x, y); Ok(())};
46945		#[cfg(feature = "diagnose")]
46946		if let Ok(ret) = ret {
46947			return to_result("glVertexAttrib2s", ret, (self.version_2_0.geterror)());
46948		} else {
46949			return ret
46950		}
46951		#[cfg(not(feature = "diagnose"))]
46952		return ret;
46953	}
46954	#[inline(always)]
46955	fn glVertexAttrib2sv(&self, index: GLuint, v: *const GLshort) -> Result<()> {
46956		#[cfg(feature = "catch_nullptr")]
46957		let ret = process_catch("glVertexAttrib2sv", catch_unwind(||(self.version_2_0.vertexattrib2sv)(index, v)));
46958		#[cfg(not(feature = "catch_nullptr"))]
46959		let ret = {(self.version_2_0.vertexattrib2sv)(index, v); Ok(())};
46960		#[cfg(feature = "diagnose")]
46961		if let Ok(ret) = ret {
46962			return to_result("glVertexAttrib2sv", ret, (self.version_2_0.geterror)());
46963		} else {
46964			return ret
46965		}
46966		#[cfg(not(feature = "diagnose"))]
46967		return ret;
46968	}
46969	#[inline(always)]
46970	fn glVertexAttrib3d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble) -> Result<()> {
46971		#[cfg(feature = "catch_nullptr")]
46972		let ret = process_catch("glVertexAttrib3d", catch_unwind(||(self.version_2_0.vertexattrib3d)(index, x, y, z)));
46973		#[cfg(not(feature = "catch_nullptr"))]
46974		let ret = {(self.version_2_0.vertexattrib3d)(index, x, y, z); Ok(())};
46975		#[cfg(feature = "diagnose")]
46976		if let Ok(ret) = ret {
46977			return to_result("glVertexAttrib3d", ret, (self.version_2_0.geterror)());
46978		} else {
46979			return ret
46980		}
46981		#[cfg(not(feature = "diagnose"))]
46982		return ret;
46983	}
46984	#[inline(always)]
46985	fn glVertexAttrib3dv(&self, index: GLuint, v: *const GLdouble) -> Result<()> {
46986		#[cfg(feature = "catch_nullptr")]
46987		let ret = process_catch("glVertexAttrib3dv", catch_unwind(||(self.version_2_0.vertexattrib3dv)(index, v)));
46988		#[cfg(not(feature = "catch_nullptr"))]
46989		let ret = {(self.version_2_0.vertexattrib3dv)(index, v); Ok(())};
46990		#[cfg(feature = "diagnose")]
46991		if let Ok(ret) = ret {
46992			return to_result("glVertexAttrib3dv", ret, (self.version_2_0.geterror)());
46993		} else {
46994			return ret
46995		}
46996		#[cfg(not(feature = "diagnose"))]
46997		return ret;
46998	}
46999	#[inline(always)]
47000	fn glVertexAttrib3f(&self, index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat) -> Result<()> {
47001		#[cfg(feature = "catch_nullptr")]
47002		let ret = process_catch("glVertexAttrib3f", catch_unwind(||(self.version_2_0.vertexattrib3f)(index, x, y, z)));
47003		#[cfg(not(feature = "catch_nullptr"))]
47004		let ret = {(self.version_2_0.vertexattrib3f)(index, x, y, z); Ok(())};
47005		#[cfg(feature = "diagnose")]
47006		if let Ok(ret) = ret {
47007			return to_result("glVertexAttrib3f", ret, (self.version_2_0.geterror)());
47008		} else {
47009			return ret
47010		}
47011		#[cfg(not(feature = "diagnose"))]
47012		return ret;
47013	}
47014	#[inline(always)]
47015	fn glVertexAttrib3fv(&self, index: GLuint, v: *const GLfloat) -> Result<()> {
47016		#[cfg(feature = "catch_nullptr")]
47017		let ret = process_catch("glVertexAttrib3fv", catch_unwind(||(self.version_2_0.vertexattrib3fv)(index, v)));
47018		#[cfg(not(feature = "catch_nullptr"))]
47019		let ret = {(self.version_2_0.vertexattrib3fv)(index, v); Ok(())};
47020		#[cfg(feature = "diagnose")]
47021		if let Ok(ret) = ret {
47022			return to_result("glVertexAttrib3fv", ret, (self.version_2_0.geterror)());
47023		} else {
47024			return ret
47025		}
47026		#[cfg(not(feature = "diagnose"))]
47027		return ret;
47028	}
47029	#[inline(always)]
47030	fn glVertexAttrib3s(&self, index: GLuint, x: GLshort, y: GLshort, z: GLshort) -> Result<()> {
47031		#[cfg(feature = "catch_nullptr")]
47032		let ret = process_catch("glVertexAttrib3s", catch_unwind(||(self.version_2_0.vertexattrib3s)(index, x, y, z)));
47033		#[cfg(not(feature = "catch_nullptr"))]
47034		let ret = {(self.version_2_0.vertexattrib3s)(index, x, y, z); Ok(())};
47035		#[cfg(feature = "diagnose")]
47036		if let Ok(ret) = ret {
47037			return to_result("glVertexAttrib3s", ret, (self.version_2_0.geterror)());
47038		} else {
47039			return ret
47040		}
47041		#[cfg(not(feature = "diagnose"))]
47042		return ret;
47043	}
47044	#[inline(always)]
47045	fn glVertexAttrib3sv(&self, index: GLuint, v: *const GLshort) -> Result<()> {
47046		#[cfg(feature = "catch_nullptr")]
47047		let ret = process_catch("glVertexAttrib3sv", catch_unwind(||(self.version_2_0.vertexattrib3sv)(index, v)));
47048		#[cfg(not(feature = "catch_nullptr"))]
47049		let ret = {(self.version_2_0.vertexattrib3sv)(index, v); Ok(())};
47050		#[cfg(feature = "diagnose")]
47051		if let Ok(ret) = ret {
47052			return to_result("glVertexAttrib3sv", ret, (self.version_2_0.geterror)());
47053		} else {
47054			return ret
47055		}
47056		#[cfg(not(feature = "diagnose"))]
47057		return ret;
47058	}
47059	#[inline(always)]
47060	fn glVertexAttrib4Nbv(&self, index: GLuint, v: *const GLbyte) -> Result<()> {
47061		#[cfg(feature = "catch_nullptr")]
47062		let ret = process_catch("glVertexAttrib4Nbv", catch_unwind(||(self.version_2_0.vertexattrib4nbv)(index, v)));
47063		#[cfg(not(feature = "catch_nullptr"))]
47064		let ret = {(self.version_2_0.vertexattrib4nbv)(index, v); Ok(())};
47065		#[cfg(feature = "diagnose")]
47066		if let Ok(ret) = ret {
47067			return to_result("glVertexAttrib4Nbv", ret, (self.version_2_0.geterror)());
47068		} else {
47069			return ret
47070		}
47071		#[cfg(not(feature = "diagnose"))]
47072		return ret;
47073	}
47074	#[inline(always)]
47075	fn glVertexAttrib4Niv(&self, index: GLuint, v: *const GLint) -> Result<()> {
47076		#[cfg(feature = "catch_nullptr")]
47077		let ret = process_catch("glVertexAttrib4Niv", catch_unwind(||(self.version_2_0.vertexattrib4niv)(index, v)));
47078		#[cfg(not(feature = "catch_nullptr"))]
47079		let ret = {(self.version_2_0.vertexattrib4niv)(index, v); Ok(())};
47080		#[cfg(feature = "diagnose")]
47081		if let Ok(ret) = ret {
47082			return to_result("glVertexAttrib4Niv", ret, (self.version_2_0.geterror)());
47083		} else {
47084			return ret
47085		}
47086		#[cfg(not(feature = "diagnose"))]
47087		return ret;
47088	}
47089	#[inline(always)]
47090	fn glVertexAttrib4Nsv(&self, index: GLuint, v: *const GLshort) -> Result<()> {
47091		#[cfg(feature = "catch_nullptr")]
47092		let ret = process_catch("glVertexAttrib4Nsv", catch_unwind(||(self.version_2_0.vertexattrib4nsv)(index, v)));
47093		#[cfg(not(feature = "catch_nullptr"))]
47094		let ret = {(self.version_2_0.vertexattrib4nsv)(index, v); Ok(())};
47095		#[cfg(feature = "diagnose")]
47096		if let Ok(ret) = ret {
47097			return to_result("glVertexAttrib4Nsv", ret, (self.version_2_0.geterror)());
47098		} else {
47099			return ret
47100		}
47101		#[cfg(not(feature = "diagnose"))]
47102		return ret;
47103	}
47104	#[inline(always)]
47105	fn glVertexAttrib4Nub(&self, index: GLuint, x: GLubyte, y: GLubyte, z: GLubyte, w: GLubyte) -> Result<()> {
47106		#[cfg(feature = "catch_nullptr")]
47107		let ret = process_catch("glVertexAttrib4Nub", catch_unwind(||(self.version_2_0.vertexattrib4nub)(index, x, y, z, w)));
47108		#[cfg(not(feature = "catch_nullptr"))]
47109		let ret = {(self.version_2_0.vertexattrib4nub)(index, x, y, z, w); Ok(())};
47110		#[cfg(feature = "diagnose")]
47111		if let Ok(ret) = ret {
47112			return to_result("glVertexAttrib4Nub", ret, (self.version_2_0.geterror)());
47113		} else {
47114			return ret
47115		}
47116		#[cfg(not(feature = "diagnose"))]
47117		return ret;
47118	}
47119	#[inline(always)]
47120	fn glVertexAttrib4Nubv(&self, index: GLuint, v: *const GLubyte) -> Result<()> {
47121		#[cfg(feature = "catch_nullptr")]
47122		let ret = process_catch("glVertexAttrib4Nubv", catch_unwind(||(self.version_2_0.vertexattrib4nubv)(index, v)));
47123		#[cfg(not(feature = "catch_nullptr"))]
47124		let ret = {(self.version_2_0.vertexattrib4nubv)(index, v); Ok(())};
47125		#[cfg(feature = "diagnose")]
47126		if let Ok(ret) = ret {
47127			return to_result("glVertexAttrib4Nubv", ret, (self.version_2_0.geterror)());
47128		} else {
47129			return ret
47130		}
47131		#[cfg(not(feature = "diagnose"))]
47132		return ret;
47133	}
47134	#[inline(always)]
47135	fn glVertexAttrib4Nuiv(&self, index: GLuint, v: *const GLuint) -> Result<()> {
47136		#[cfg(feature = "catch_nullptr")]
47137		let ret = process_catch("glVertexAttrib4Nuiv", catch_unwind(||(self.version_2_0.vertexattrib4nuiv)(index, v)));
47138		#[cfg(not(feature = "catch_nullptr"))]
47139		let ret = {(self.version_2_0.vertexattrib4nuiv)(index, v); Ok(())};
47140		#[cfg(feature = "diagnose")]
47141		if let Ok(ret) = ret {
47142			return to_result("glVertexAttrib4Nuiv", ret, (self.version_2_0.geterror)());
47143		} else {
47144			return ret
47145		}
47146		#[cfg(not(feature = "diagnose"))]
47147		return ret;
47148	}
47149	#[inline(always)]
47150	fn glVertexAttrib4Nusv(&self, index: GLuint, v: *const GLushort) -> Result<()> {
47151		#[cfg(feature = "catch_nullptr")]
47152		let ret = process_catch("glVertexAttrib4Nusv", catch_unwind(||(self.version_2_0.vertexattrib4nusv)(index, v)));
47153		#[cfg(not(feature = "catch_nullptr"))]
47154		let ret = {(self.version_2_0.vertexattrib4nusv)(index, v); Ok(())};
47155		#[cfg(feature = "diagnose")]
47156		if let Ok(ret) = ret {
47157			return to_result("glVertexAttrib4Nusv", ret, (self.version_2_0.geterror)());
47158		} else {
47159			return ret
47160		}
47161		#[cfg(not(feature = "diagnose"))]
47162		return ret;
47163	}
47164	#[inline(always)]
47165	fn glVertexAttrib4bv(&self, index: GLuint, v: *const GLbyte) -> Result<()> {
47166		#[cfg(feature = "catch_nullptr")]
47167		let ret = process_catch("glVertexAttrib4bv", catch_unwind(||(self.version_2_0.vertexattrib4bv)(index, v)));
47168		#[cfg(not(feature = "catch_nullptr"))]
47169		let ret = {(self.version_2_0.vertexattrib4bv)(index, v); Ok(())};
47170		#[cfg(feature = "diagnose")]
47171		if let Ok(ret) = ret {
47172			return to_result("glVertexAttrib4bv", ret, (self.version_2_0.geterror)());
47173		} else {
47174			return ret
47175		}
47176		#[cfg(not(feature = "diagnose"))]
47177		return ret;
47178	}
47179	#[inline(always)]
47180	fn glVertexAttrib4d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble, w: GLdouble) -> Result<()> {
47181		#[cfg(feature = "catch_nullptr")]
47182		let ret = process_catch("glVertexAttrib4d", catch_unwind(||(self.version_2_0.vertexattrib4d)(index, x, y, z, w)));
47183		#[cfg(not(feature = "catch_nullptr"))]
47184		let ret = {(self.version_2_0.vertexattrib4d)(index, x, y, z, w); Ok(())};
47185		#[cfg(feature = "diagnose")]
47186		if let Ok(ret) = ret {
47187			return to_result("glVertexAttrib4d", ret, (self.version_2_0.geterror)());
47188		} else {
47189			return ret
47190		}
47191		#[cfg(not(feature = "diagnose"))]
47192		return ret;
47193	}
47194	#[inline(always)]
47195	fn glVertexAttrib4dv(&self, index: GLuint, v: *const GLdouble) -> Result<()> {
47196		#[cfg(feature = "catch_nullptr")]
47197		let ret = process_catch("glVertexAttrib4dv", catch_unwind(||(self.version_2_0.vertexattrib4dv)(index, v)));
47198		#[cfg(not(feature = "catch_nullptr"))]
47199		let ret = {(self.version_2_0.vertexattrib4dv)(index, v); Ok(())};
47200		#[cfg(feature = "diagnose")]
47201		if let Ok(ret) = ret {
47202			return to_result("glVertexAttrib4dv", ret, (self.version_2_0.geterror)());
47203		} else {
47204			return ret
47205		}
47206		#[cfg(not(feature = "diagnose"))]
47207		return ret;
47208	}
47209	#[inline(always)]
47210	fn glVertexAttrib4f(&self, index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat, w: GLfloat) -> Result<()> {
47211		#[cfg(feature = "catch_nullptr")]
47212		let ret = process_catch("glVertexAttrib4f", catch_unwind(||(self.version_2_0.vertexattrib4f)(index, x, y, z, w)));
47213		#[cfg(not(feature = "catch_nullptr"))]
47214		let ret = {(self.version_2_0.vertexattrib4f)(index, x, y, z, w); Ok(())};
47215		#[cfg(feature = "diagnose")]
47216		if let Ok(ret) = ret {
47217			return to_result("glVertexAttrib4f", ret, (self.version_2_0.geterror)());
47218		} else {
47219			return ret
47220		}
47221		#[cfg(not(feature = "diagnose"))]
47222		return ret;
47223	}
47224	#[inline(always)]
47225	fn glVertexAttrib4fv(&self, index: GLuint, v: *const GLfloat) -> Result<()> {
47226		#[cfg(feature = "catch_nullptr")]
47227		let ret = process_catch("glVertexAttrib4fv", catch_unwind(||(self.version_2_0.vertexattrib4fv)(index, v)));
47228		#[cfg(not(feature = "catch_nullptr"))]
47229		let ret = {(self.version_2_0.vertexattrib4fv)(index, v); Ok(())};
47230		#[cfg(feature = "diagnose")]
47231		if let Ok(ret) = ret {
47232			return to_result("glVertexAttrib4fv", ret, (self.version_2_0.geterror)());
47233		} else {
47234			return ret
47235		}
47236		#[cfg(not(feature = "diagnose"))]
47237		return ret;
47238	}
47239	#[inline(always)]
47240	fn glVertexAttrib4iv(&self, index: GLuint, v: *const GLint) -> Result<()> {
47241		#[cfg(feature = "catch_nullptr")]
47242		let ret = process_catch("glVertexAttrib4iv", catch_unwind(||(self.version_2_0.vertexattrib4iv)(index, v)));
47243		#[cfg(not(feature = "catch_nullptr"))]
47244		let ret = {(self.version_2_0.vertexattrib4iv)(index, v); Ok(())};
47245		#[cfg(feature = "diagnose")]
47246		if let Ok(ret) = ret {
47247			return to_result("glVertexAttrib4iv", ret, (self.version_2_0.geterror)());
47248		} else {
47249			return ret
47250		}
47251		#[cfg(not(feature = "diagnose"))]
47252		return ret;
47253	}
47254	#[inline(always)]
47255	fn glVertexAttrib4s(&self, index: GLuint, x: GLshort, y: GLshort, z: GLshort, w: GLshort) -> Result<()> {
47256		#[cfg(feature = "catch_nullptr")]
47257		let ret = process_catch("glVertexAttrib4s", catch_unwind(||(self.version_2_0.vertexattrib4s)(index, x, y, z, w)));
47258		#[cfg(not(feature = "catch_nullptr"))]
47259		let ret = {(self.version_2_0.vertexattrib4s)(index, x, y, z, w); Ok(())};
47260		#[cfg(feature = "diagnose")]
47261		if let Ok(ret) = ret {
47262			return to_result("glVertexAttrib4s", ret, (self.version_2_0.geterror)());
47263		} else {
47264			return ret
47265		}
47266		#[cfg(not(feature = "diagnose"))]
47267		return ret;
47268	}
47269	#[inline(always)]
47270	fn glVertexAttrib4sv(&self, index: GLuint, v: *const GLshort) -> Result<()> {
47271		#[cfg(feature = "catch_nullptr")]
47272		let ret = process_catch("glVertexAttrib4sv", catch_unwind(||(self.version_2_0.vertexattrib4sv)(index, v)));
47273		#[cfg(not(feature = "catch_nullptr"))]
47274		let ret = {(self.version_2_0.vertexattrib4sv)(index, v); Ok(())};
47275		#[cfg(feature = "diagnose")]
47276		if let Ok(ret) = ret {
47277			return to_result("glVertexAttrib4sv", ret, (self.version_2_0.geterror)());
47278		} else {
47279			return ret
47280		}
47281		#[cfg(not(feature = "diagnose"))]
47282		return ret;
47283	}
47284	#[inline(always)]
47285	fn glVertexAttrib4ubv(&self, index: GLuint, v: *const GLubyte) -> Result<()> {
47286		#[cfg(feature = "catch_nullptr")]
47287		let ret = process_catch("glVertexAttrib4ubv", catch_unwind(||(self.version_2_0.vertexattrib4ubv)(index, v)));
47288		#[cfg(not(feature = "catch_nullptr"))]
47289		let ret = {(self.version_2_0.vertexattrib4ubv)(index, v); Ok(())};
47290		#[cfg(feature = "diagnose")]
47291		if let Ok(ret) = ret {
47292			return to_result("glVertexAttrib4ubv", ret, (self.version_2_0.geterror)());
47293		} else {
47294			return ret
47295		}
47296		#[cfg(not(feature = "diagnose"))]
47297		return ret;
47298	}
47299	#[inline(always)]
47300	fn glVertexAttrib4uiv(&self, index: GLuint, v: *const GLuint) -> Result<()> {
47301		#[cfg(feature = "catch_nullptr")]
47302		let ret = process_catch("glVertexAttrib4uiv", catch_unwind(||(self.version_2_0.vertexattrib4uiv)(index, v)));
47303		#[cfg(not(feature = "catch_nullptr"))]
47304		let ret = {(self.version_2_0.vertexattrib4uiv)(index, v); Ok(())};
47305		#[cfg(feature = "diagnose")]
47306		if let Ok(ret) = ret {
47307			return to_result("glVertexAttrib4uiv", ret, (self.version_2_0.geterror)());
47308		} else {
47309			return ret
47310		}
47311		#[cfg(not(feature = "diagnose"))]
47312		return ret;
47313	}
47314	#[inline(always)]
47315	fn glVertexAttrib4usv(&self, index: GLuint, v: *const GLushort) -> Result<()> {
47316		#[cfg(feature = "catch_nullptr")]
47317		let ret = process_catch("glVertexAttrib4usv", catch_unwind(||(self.version_2_0.vertexattrib4usv)(index, v)));
47318		#[cfg(not(feature = "catch_nullptr"))]
47319		let ret = {(self.version_2_0.vertexattrib4usv)(index, v); Ok(())};
47320		#[cfg(feature = "diagnose")]
47321		if let Ok(ret) = ret {
47322			return to_result("glVertexAttrib4usv", ret, (self.version_2_0.geterror)());
47323		} else {
47324			return ret
47325		}
47326		#[cfg(not(feature = "diagnose"))]
47327		return ret;
47328	}
47329	#[inline(always)]
47330	fn glVertexAttribPointer(&self, index: GLuint, size: GLint, type_: GLenum, normalized: GLboolean, stride: GLsizei, pointer: *const c_void) -> Result<()> {
47331		#[cfg(feature = "catch_nullptr")]
47332		let ret = process_catch("glVertexAttribPointer", catch_unwind(||(self.version_2_0.vertexattribpointer)(index, size, type_, normalized, stride, pointer)));
47333		#[cfg(not(feature = "catch_nullptr"))]
47334		let ret = {(self.version_2_0.vertexattribpointer)(index, size, type_, normalized, stride, pointer); Ok(())};
47335		#[cfg(feature = "diagnose")]
47336		if let Ok(ret) = ret {
47337			return to_result("glVertexAttribPointer", ret, (self.version_2_0.geterror)());
47338		} else {
47339			return ret
47340		}
47341		#[cfg(not(feature = "diagnose"))]
47342		return ret;
47343	}
47344}
47345
47346impl GL_2_1_g for GLCore {
47347	#[inline(always)]
47348	fn glUniformMatrix2x3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
47349		#[cfg(feature = "catch_nullptr")]
47350		let ret = process_catch("glUniformMatrix2x3fv", catch_unwind(||(self.version_2_1.uniformmatrix2x3fv)(location, count, transpose, value)));
47351		#[cfg(not(feature = "catch_nullptr"))]
47352		let ret = {(self.version_2_1.uniformmatrix2x3fv)(location, count, transpose, value); Ok(())};
47353		#[cfg(feature = "diagnose")]
47354		if let Ok(ret) = ret {
47355			return to_result("glUniformMatrix2x3fv", ret, (self.version_2_1.geterror)());
47356		} else {
47357			return ret
47358		}
47359		#[cfg(not(feature = "diagnose"))]
47360		return ret;
47361	}
47362	#[inline(always)]
47363	fn glUniformMatrix3x2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
47364		#[cfg(feature = "catch_nullptr")]
47365		let ret = process_catch("glUniformMatrix3x2fv", catch_unwind(||(self.version_2_1.uniformmatrix3x2fv)(location, count, transpose, value)));
47366		#[cfg(not(feature = "catch_nullptr"))]
47367		let ret = {(self.version_2_1.uniformmatrix3x2fv)(location, count, transpose, value); Ok(())};
47368		#[cfg(feature = "diagnose")]
47369		if let Ok(ret) = ret {
47370			return to_result("glUniformMatrix3x2fv", ret, (self.version_2_1.geterror)());
47371		} else {
47372			return ret
47373		}
47374		#[cfg(not(feature = "diagnose"))]
47375		return ret;
47376	}
47377	#[inline(always)]
47378	fn glUniformMatrix2x4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
47379		#[cfg(feature = "catch_nullptr")]
47380		let ret = process_catch("glUniformMatrix2x4fv", catch_unwind(||(self.version_2_1.uniformmatrix2x4fv)(location, count, transpose, value)));
47381		#[cfg(not(feature = "catch_nullptr"))]
47382		let ret = {(self.version_2_1.uniformmatrix2x4fv)(location, count, transpose, value); Ok(())};
47383		#[cfg(feature = "diagnose")]
47384		if let Ok(ret) = ret {
47385			return to_result("glUniformMatrix2x4fv", ret, (self.version_2_1.geterror)());
47386		} else {
47387			return ret
47388		}
47389		#[cfg(not(feature = "diagnose"))]
47390		return ret;
47391	}
47392	#[inline(always)]
47393	fn glUniformMatrix4x2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
47394		#[cfg(feature = "catch_nullptr")]
47395		let ret = process_catch("glUniformMatrix4x2fv", catch_unwind(||(self.version_2_1.uniformmatrix4x2fv)(location, count, transpose, value)));
47396		#[cfg(not(feature = "catch_nullptr"))]
47397		let ret = {(self.version_2_1.uniformmatrix4x2fv)(location, count, transpose, value); Ok(())};
47398		#[cfg(feature = "diagnose")]
47399		if let Ok(ret) = ret {
47400			return to_result("glUniformMatrix4x2fv", ret, (self.version_2_1.geterror)());
47401		} else {
47402			return ret
47403		}
47404		#[cfg(not(feature = "diagnose"))]
47405		return ret;
47406	}
47407	#[inline(always)]
47408	fn glUniformMatrix3x4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
47409		#[cfg(feature = "catch_nullptr")]
47410		let ret = process_catch("glUniformMatrix3x4fv", catch_unwind(||(self.version_2_1.uniformmatrix3x4fv)(location, count, transpose, value)));
47411		#[cfg(not(feature = "catch_nullptr"))]
47412		let ret = {(self.version_2_1.uniformmatrix3x4fv)(location, count, transpose, value); Ok(())};
47413		#[cfg(feature = "diagnose")]
47414		if let Ok(ret) = ret {
47415			return to_result("glUniformMatrix3x4fv", ret, (self.version_2_1.geterror)());
47416		} else {
47417			return ret
47418		}
47419		#[cfg(not(feature = "diagnose"))]
47420		return ret;
47421	}
47422	#[inline(always)]
47423	fn glUniformMatrix4x3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
47424		#[cfg(feature = "catch_nullptr")]
47425		let ret = process_catch("glUniformMatrix4x3fv", catch_unwind(||(self.version_2_1.uniformmatrix4x3fv)(location, count, transpose, value)));
47426		#[cfg(not(feature = "catch_nullptr"))]
47427		let ret = {(self.version_2_1.uniformmatrix4x3fv)(location, count, transpose, value); Ok(())};
47428		#[cfg(feature = "diagnose")]
47429		if let Ok(ret) = ret {
47430			return to_result("glUniformMatrix4x3fv", ret, (self.version_2_1.geterror)());
47431		} else {
47432			return ret
47433		}
47434		#[cfg(not(feature = "diagnose"))]
47435		return ret;
47436	}
47437}
47438
47439impl GL_3_0_g for GLCore {
47440	#[inline(always)]
47441	fn glColorMaski(&self, index: GLuint, r: GLboolean, g: GLboolean, b: GLboolean, a: GLboolean) -> Result<()> {
47442		#[cfg(feature = "catch_nullptr")]
47443		let ret = process_catch("glColorMaski", catch_unwind(||(self.version_3_0.colormaski)(index, r, g, b, a)));
47444		#[cfg(not(feature = "catch_nullptr"))]
47445		let ret = {(self.version_3_0.colormaski)(index, r, g, b, a); Ok(())};
47446		#[cfg(feature = "diagnose")]
47447		if let Ok(ret) = ret {
47448			return to_result("glColorMaski", ret, (self.version_3_0.geterror)());
47449		} else {
47450			return ret
47451		}
47452		#[cfg(not(feature = "diagnose"))]
47453		return ret;
47454	}
47455	#[inline(always)]
47456	fn glGetBooleani_v(&self, target: GLenum, index: GLuint, data: *mut GLboolean) -> Result<()> {
47457		#[cfg(feature = "catch_nullptr")]
47458		let ret = process_catch("glGetBooleani_v", catch_unwind(||(self.version_3_0.getbooleani_v)(target, index, data)));
47459		#[cfg(not(feature = "catch_nullptr"))]
47460		let ret = {(self.version_3_0.getbooleani_v)(target, index, data); Ok(())};
47461		#[cfg(feature = "diagnose")]
47462		if let Ok(ret) = ret {
47463			return to_result("glGetBooleani_v", ret, (self.version_3_0.geterror)());
47464		} else {
47465			return ret
47466		}
47467		#[cfg(not(feature = "diagnose"))]
47468		return ret;
47469	}
47470	#[inline(always)]
47471	fn glGetIntegeri_v(&self, target: GLenum, index: GLuint, data: *mut GLint) -> Result<()> {
47472		#[cfg(feature = "catch_nullptr")]
47473		let ret = process_catch("glGetIntegeri_v", catch_unwind(||(self.version_3_0.getintegeri_v)(target, index, data)));
47474		#[cfg(not(feature = "catch_nullptr"))]
47475		let ret = {(self.version_3_0.getintegeri_v)(target, index, data); Ok(())};
47476		#[cfg(feature = "diagnose")]
47477		if let Ok(ret) = ret {
47478			return to_result("glGetIntegeri_v", ret, (self.version_3_0.geterror)());
47479		} else {
47480			return ret
47481		}
47482		#[cfg(not(feature = "diagnose"))]
47483		return ret;
47484	}
47485	#[inline(always)]
47486	fn glEnablei(&self, target: GLenum, index: GLuint) -> Result<()> {
47487		#[cfg(feature = "catch_nullptr")]
47488		let ret = process_catch("glEnablei", catch_unwind(||(self.version_3_0.enablei)(target, index)));
47489		#[cfg(not(feature = "catch_nullptr"))]
47490		let ret = {(self.version_3_0.enablei)(target, index); Ok(())};
47491		#[cfg(feature = "diagnose")]
47492		if let Ok(ret) = ret {
47493			return to_result("glEnablei", ret, (self.version_3_0.geterror)());
47494		} else {
47495			return ret
47496		}
47497		#[cfg(not(feature = "diagnose"))]
47498		return ret;
47499	}
47500	#[inline(always)]
47501	fn glDisablei(&self, target: GLenum, index: GLuint) -> Result<()> {
47502		#[cfg(feature = "catch_nullptr")]
47503		let ret = process_catch("glDisablei", catch_unwind(||(self.version_3_0.disablei)(target, index)));
47504		#[cfg(not(feature = "catch_nullptr"))]
47505		let ret = {(self.version_3_0.disablei)(target, index); Ok(())};
47506		#[cfg(feature = "diagnose")]
47507		if let Ok(ret) = ret {
47508			return to_result("glDisablei", ret, (self.version_3_0.geterror)());
47509		} else {
47510			return ret
47511		}
47512		#[cfg(not(feature = "diagnose"))]
47513		return ret;
47514	}
47515	#[inline(always)]
47516	fn glIsEnabledi(&self, target: GLenum, index: GLuint) -> Result<GLboolean> {
47517		#[cfg(feature = "catch_nullptr")]
47518		let ret = process_catch("glIsEnabledi", catch_unwind(||(self.version_3_0.isenabledi)(target, index)));
47519		#[cfg(not(feature = "catch_nullptr"))]
47520		let ret = Ok((self.version_3_0.isenabledi)(target, index));
47521		#[cfg(feature = "diagnose")]
47522		if let Ok(ret) = ret {
47523			return to_result("glIsEnabledi", ret, (self.version_3_0.geterror)());
47524		} else {
47525			return ret
47526		}
47527		#[cfg(not(feature = "diagnose"))]
47528		return ret;
47529	}
47530	#[inline(always)]
47531	fn glBeginTransformFeedback(&self, primitiveMode: GLenum) -> Result<()> {
47532		#[cfg(feature = "catch_nullptr")]
47533		let ret = process_catch("glBeginTransformFeedback", catch_unwind(||(self.version_3_0.begintransformfeedback)(primitiveMode)));
47534		#[cfg(not(feature = "catch_nullptr"))]
47535		let ret = {(self.version_3_0.begintransformfeedback)(primitiveMode); Ok(())};
47536		#[cfg(feature = "diagnose")]
47537		if let Ok(ret) = ret {
47538			return to_result("glBeginTransformFeedback", ret, (self.version_3_0.geterror)());
47539		} else {
47540			return ret
47541		}
47542		#[cfg(not(feature = "diagnose"))]
47543		return ret;
47544	}
47545	#[inline(always)]
47546	fn glEndTransformFeedback(&self) -> Result<()> {
47547		#[cfg(feature = "catch_nullptr")]
47548		let ret = process_catch("glEndTransformFeedback", catch_unwind(||(self.version_3_0.endtransformfeedback)()));
47549		#[cfg(not(feature = "catch_nullptr"))]
47550		let ret = {(self.version_3_0.endtransformfeedback)(); Ok(())};
47551		#[cfg(feature = "diagnose")]
47552		if let Ok(ret) = ret {
47553			return to_result("glEndTransformFeedback", ret, (self.version_3_0.geterror)());
47554		} else {
47555			return ret
47556		}
47557		#[cfg(not(feature = "diagnose"))]
47558		return ret;
47559	}
47560	#[inline(always)]
47561	fn glBindBufferRange(&self, target: GLenum, index: GLuint, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()> {
47562		#[cfg(feature = "catch_nullptr")]
47563		let ret = process_catch("glBindBufferRange", catch_unwind(||(self.version_3_0.bindbufferrange)(target, index, buffer, offset, size)));
47564		#[cfg(not(feature = "catch_nullptr"))]
47565		let ret = {(self.version_3_0.bindbufferrange)(target, index, buffer, offset, size); Ok(())};
47566		#[cfg(feature = "diagnose")]
47567		if let Ok(ret) = ret {
47568			return to_result("glBindBufferRange", ret, (self.version_3_0.geterror)());
47569		} else {
47570			return ret
47571		}
47572		#[cfg(not(feature = "diagnose"))]
47573		return ret;
47574	}
47575	#[inline(always)]
47576	fn glBindBufferBase(&self, target: GLenum, index: GLuint, buffer: GLuint) -> Result<()> {
47577		#[cfg(feature = "catch_nullptr")]
47578		let ret = process_catch("glBindBufferBase", catch_unwind(||(self.version_3_0.bindbufferbase)(target, index, buffer)));
47579		#[cfg(not(feature = "catch_nullptr"))]
47580		let ret = {(self.version_3_0.bindbufferbase)(target, index, buffer); Ok(())};
47581		#[cfg(feature = "diagnose")]
47582		if let Ok(ret) = ret {
47583			return to_result("glBindBufferBase", ret, (self.version_3_0.geterror)());
47584		} else {
47585			return ret
47586		}
47587		#[cfg(not(feature = "diagnose"))]
47588		return ret;
47589	}
47590	#[inline(always)]
47591	fn glTransformFeedbackVaryings(&self, program: GLuint, count: GLsizei, varyings: *const *const GLchar, bufferMode: GLenum) -> Result<()> {
47592		#[cfg(feature = "catch_nullptr")]
47593		let ret = process_catch("glTransformFeedbackVaryings", catch_unwind(||(self.version_3_0.transformfeedbackvaryings)(program, count, varyings, bufferMode)));
47594		#[cfg(not(feature = "catch_nullptr"))]
47595		let ret = {(self.version_3_0.transformfeedbackvaryings)(program, count, varyings, bufferMode); Ok(())};
47596		#[cfg(feature = "diagnose")]
47597		if let Ok(ret) = ret {
47598			return to_result("glTransformFeedbackVaryings", ret, (self.version_3_0.geterror)());
47599		} else {
47600			return ret
47601		}
47602		#[cfg(not(feature = "diagnose"))]
47603		return ret;
47604	}
47605	#[inline(always)]
47606	fn glGetTransformFeedbackVarying(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLsizei, type_: *mut GLenum, name: *mut GLchar) -> Result<()> {
47607		#[cfg(feature = "catch_nullptr")]
47608		let ret = process_catch("glGetTransformFeedbackVarying", catch_unwind(||(self.version_3_0.gettransformfeedbackvarying)(program, index, bufSize, length, size, type_, name)));
47609		#[cfg(not(feature = "catch_nullptr"))]
47610		let ret = {(self.version_3_0.gettransformfeedbackvarying)(program, index, bufSize, length, size, type_, name); Ok(())};
47611		#[cfg(feature = "diagnose")]
47612		if let Ok(ret) = ret {
47613			return to_result("glGetTransformFeedbackVarying", ret, (self.version_3_0.geterror)());
47614		} else {
47615			return ret
47616		}
47617		#[cfg(not(feature = "diagnose"))]
47618		return ret;
47619	}
47620	#[inline(always)]
47621	fn glClampColor(&self, target: GLenum, clamp: GLenum) -> Result<()> {
47622		#[cfg(feature = "catch_nullptr")]
47623		let ret = process_catch("glClampColor", catch_unwind(||(self.version_3_0.clampcolor)(target, clamp)));
47624		#[cfg(not(feature = "catch_nullptr"))]
47625		let ret = {(self.version_3_0.clampcolor)(target, clamp); Ok(())};
47626		#[cfg(feature = "diagnose")]
47627		if let Ok(ret) = ret {
47628			return to_result("glClampColor", ret, (self.version_3_0.geterror)());
47629		} else {
47630			return ret
47631		}
47632		#[cfg(not(feature = "diagnose"))]
47633		return ret;
47634	}
47635	#[inline(always)]
47636	fn glBeginConditionalRender(&self, id: GLuint, mode: GLenum) -> Result<()> {
47637		#[cfg(feature = "catch_nullptr")]
47638		let ret = process_catch("glBeginConditionalRender", catch_unwind(||(self.version_3_0.beginconditionalrender)(id, mode)));
47639		#[cfg(not(feature = "catch_nullptr"))]
47640		let ret = {(self.version_3_0.beginconditionalrender)(id, mode); Ok(())};
47641		#[cfg(feature = "diagnose")]
47642		if let Ok(ret) = ret {
47643			return to_result("glBeginConditionalRender", ret, (self.version_3_0.geterror)());
47644		} else {
47645			return ret
47646		}
47647		#[cfg(not(feature = "diagnose"))]
47648		return ret;
47649	}
47650	#[inline(always)]
47651	fn glEndConditionalRender(&self) -> Result<()> {
47652		#[cfg(feature = "catch_nullptr")]
47653		let ret = process_catch("glEndConditionalRender", catch_unwind(||(self.version_3_0.endconditionalrender)()));
47654		#[cfg(not(feature = "catch_nullptr"))]
47655		let ret = {(self.version_3_0.endconditionalrender)(); Ok(())};
47656		#[cfg(feature = "diagnose")]
47657		if let Ok(ret) = ret {
47658			return to_result("glEndConditionalRender", ret, (self.version_3_0.geterror)());
47659		} else {
47660			return ret
47661		}
47662		#[cfg(not(feature = "diagnose"))]
47663		return ret;
47664	}
47665	#[inline(always)]
47666	fn glVertexAttribIPointer(&self, index: GLuint, size: GLint, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()> {
47667		#[cfg(feature = "catch_nullptr")]
47668		let ret = process_catch("glVertexAttribIPointer", catch_unwind(||(self.version_3_0.vertexattribipointer)(index, size, type_, stride, pointer)));
47669		#[cfg(not(feature = "catch_nullptr"))]
47670		let ret = {(self.version_3_0.vertexattribipointer)(index, size, type_, stride, pointer); Ok(())};
47671		#[cfg(feature = "diagnose")]
47672		if let Ok(ret) = ret {
47673			return to_result("glVertexAttribIPointer", ret, (self.version_3_0.geterror)());
47674		} else {
47675			return ret
47676		}
47677		#[cfg(not(feature = "diagnose"))]
47678		return ret;
47679	}
47680	#[inline(always)]
47681	fn glGetVertexAttribIiv(&self, index: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
47682		#[cfg(feature = "catch_nullptr")]
47683		let ret = process_catch("glGetVertexAttribIiv", catch_unwind(||(self.version_3_0.getvertexattribiiv)(index, pname, params)));
47684		#[cfg(not(feature = "catch_nullptr"))]
47685		let ret = {(self.version_3_0.getvertexattribiiv)(index, pname, params); Ok(())};
47686		#[cfg(feature = "diagnose")]
47687		if let Ok(ret) = ret {
47688			return to_result("glGetVertexAttribIiv", ret, (self.version_3_0.geterror)());
47689		} else {
47690			return ret
47691		}
47692		#[cfg(not(feature = "diagnose"))]
47693		return ret;
47694	}
47695	#[inline(always)]
47696	fn glGetVertexAttribIuiv(&self, index: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()> {
47697		#[cfg(feature = "catch_nullptr")]
47698		let ret = process_catch("glGetVertexAttribIuiv", catch_unwind(||(self.version_3_0.getvertexattribiuiv)(index, pname, params)));
47699		#[cfg(not(feature = "catch_nullptr"))]
47700		let ret = {(self.version_3_0.getvertexattribiuiv)(index, pname, params); Ok(())};
47701		#[cfg(feature = "diagnose")]
47702		if let Ok(ret) = ret {
47703			return to_result("glGetVertexAttribIuiv", ret, (self.version_3_0.geterror)());
47704		} else {
47705			return ret
47706		}
47707		#[cfg(not(feature = "diagnose"))]
47708		return ret;
47709	}
47710	#[inline(always)]
47711	fn glVertexAttribI1i(&self, index: GLuint, x: GLint) -> Result<()> {
47712		#[cfg(feature = "catch_nullptr")]
47713		let ret = process_catch("glVertexAttribI1i", catch_unwind(||(self.version_3_0.vertexattribi1i)(index, x)));
47714		#[cfg(not(feature = "catch_nullptr"))]
47715		let ret = {(self.version_3_0.vertexattribi1i)(index, x); Ok(())};
47716		#[cfg(feature = "diagnose")]
47717		if let Ok(ret) = ret {
47718			return to_result("glVertexAttribI1i", ret, (self.version_3_0.geterror)());
47719		} else {
47720			return ret
47721		}
47722		#[cfg(not(feature = "diagnose"))]
47723		return ret;
47724	}
47725	#[inline(always)]
47726	fn glVertexAttribI2i(&self, index: GLuint, x: GLint, y: GLint) -> Result<()> {
47727		#[cfg(feature = "catch_nullptr")]
47728		let ret = process_catch("glVertexAttribI2i", catch_unwind(||(self.version_3_0.vertexattribi2i)(index, x, y)));
47729		#[cfg(not(feature = "catch_nullptr"))]
47730		let ret = {(self.version_3_0.vertexattribi2i)(index, x, y); Ok(())};
47731		#[cfg(feature = "diagnose")]
47732		if let Ok(ret) = ret {
47733			return to_result("glVertexAttribI2i", ret, (self.version_3_0.geterror)());
47734		} else {
47735			return ret
47736		}
47737		#[cfg(not(feature = "diagnose"))]
47738		return ret;
47739	}
47740	#[inline(always)]
47741	fn glVertexAttribI3i(&self, index: GLuint, x: GLint, y: GLint, z: GLint) -> Result<()> {
47742		#[cfg(feature = "catch_nullptr")]
47743		let ret = process_catch("glVertexAttribI3i", catch_unwind(||(self.version_3_0.vertexattribi3i)(index, x, y, z)));
47744		#[cfg(not(feature = "catch_nullptr"))]
47745		let ret = {(self.version_3_0.vertexattribi3i)(index, x, y, z); Ok(())};
47746		#[cfg(feature = "diagnose")]
47747		if let Ok(ret) = ret {
47748			return to_result("glVertexAttribI3i", ret, (self.version_3_0.geterror)());
47749		} else {
47750			return ret
47751		}
47752		#[cfg(not(feature = "diagnose"))]
47753		return ret;
47754	}
47755	#[inline(always)]
47756	fn glVertexAttribI4i(&self, index: GLuint, x: GLint, y: GLint, z: GLint, w: GLint) -> Result<()> {
47757		#[cfg(feature = "catch_nullptr")]
47758		let ret = process_catch("glVertexAttribI4i", catch_unwind(||(self.version_3_0.vertexattribi4i)(index, x, y, z, w)));
47759		#[cfg(not(feature = "catch_nullptr"))]
47760		let ret = {(self.version_3_0.vertexattribi4i)(index, x, y, z, w); Ok(())};
47761		#[cfg(feature = "diagnose")]
47762		if let Ok(ret) = ret {
47763			return to_result("glVertexAttribI4i", ret, (self.version_3_0.geterror)());
47764		} else {
47765			return ret
47766		}
47767		#[cfg(not(feature = "diagnose"))]
47768		return ret;
47769	}
47770	#[inline(always)]
47771	fn glVertexAttribI1ui(&self, index: GLuint, x: GLuint) -> Result<()> {
47772		#[cfg(feature = "catch_nullptr")]
47773		let ret = process_catch("glVertexAttribI1ui", catch_unwind(||(self.version_3_0.vertexattribi1ui)(index, x)));
47774		#[cfg(not(feature = "catch_nullptr"))]
47775		let ret = {(self.version_3_0.vertexattribi1ui)(index, x); Ok(())};
47776		#[cfg(feature = "diagnose")]
47777		if let Ok(ret) = ret {
47778			return to_result("glVertexAttribI1ui", ret, (self.version_3_0.geterror)());
47779		} else {
47780			return ret
47781		}
47782		#[cfg(not(feature = "diagnose"))]
47783		return ret;
47784	}
47785	#[inline(always)]
47786	fn glVertexAttribI2ui(&self, index: GLuint, x: GLuint, y: GLuint) -> Result<()> {
47787		#[cfg(feature = "catch_nullptr")]
47788		let ret = process_catch("glVertexAttribI2ui", catch_unwind(||(self.version_3_0.vertexattribi2ui)(index, x, y)));
47789		#[cfg(not(feature = "catch_nullptr"))]
47790		let ret = {(self.version_3_0.vertexattribi2ui)(index, x, y); Ok(())};
47791		#[cfg(feature = "diagnose")]
47792		if let Ok(ret) = ret {
47793			return to_result("glVertexAttribI2ui", ret, (self.version_3_0.geterror)());
47794		} else {
47795			return ret
47796		}
47797		#[cfg(not(feature = "diagnose"))]
47798		return ret;
47799	}
47800	#[inline(always)]
47801	fn glVertexAttribI3ui(&self, index: GLuint, x: GLuint, y: GLuint, z: GLuint) -> Result<()> {
47802		#[cfg(feature = "catch_nullptr")]
47803		let ret = process_catch("glVertexAttribI3ui", catch_unwind(||(self.version_3_0.vertexattribi3ui)(index, x, y, z)));
47804		#[cfg(not(feature = "catch_nullptr"))]
47805		let ret = {(self.version_3_0.vertexattribi3ui)(index, x, y, z); Ok(())};
47806		#[cfg(feature = "diagnose")]
47807		if let Ok(ret) = ret {
47808			return to_result("glVertexAttribI3ui", ret, (self.version_3_0.geterror)());
47809		} else {
47810			return ret
47811		}
47812		#[cfg(not(feature = "diagnose"))]
47813		return ret;
47814	}
47815	#[inline(always)]
47816	fn glVertexAttribI4ui(&self, index: GLuint, x: GLuint, y: GLuint, z: GLuint, w: GLuint) -> Result<()> {
47817		#[cfg(feature = "catch_nullptr")]
47818		let ret = process_catch("glVertexAttribI4ui", catch_unwind(||(self.version_3_0.vertexattribi4ui)(index, x, y, z, w)));
47819		#[cfg(not(feature = "catch_nullptr"))]
47820		let ret = {(self.version_3_0.vertexattribi4ui)(index, x, y, z, w); Ok(())};
47821		#[cfg(feature = "diagnose")]
47822		if let Ok(ret) = ret {
47823			return to_result("glVertexAttribI4ui", ret, (self.version_3_0.geterror)());
47824		} else {
47825			return ret
47826		}
47827		#[cfg(not(feature = "diagnose"))]
47828		return ret;
47829	}
47830	#[inline(always)]
47831	fn glVertexAttribI1iv(&self, index: GLuint, v: *const GLint) -> Result<()> {
47832		#[cfg(feature = "catch_nullptr")]
47833		let ret = process_catch("glVertexAttribI1iv", catch_unwind(||(self.version_3_0.vertexattribi1iv)(index, v)));
47834		#[cfg(not(feature = "catch_nullptr"))]
47835		let ret = {(self.version_3_0.vertexattribi1iv)(index, v); Ok(())};
47836		#[cfg(feature = "diagnose")]
47837		if let Ok(ret) = ret {
47838			return to_result("glVertexAttribI1iv", ret, (self.version_3_0.geterror)());
47839		} else {
47840			return ret
47841		}
47842		#[cfg(not(feature = "diagnose"))]
47843		return ret;
47844	}
47845	#[inline(always)]
47846	fn glVertexAttribI2iv(&self, index: GLuint, v: *const GLint) -> Result<()> {
47847		#[cfg(feature = "catch_nullptr")]
47848		let ret = process_catch("glVertexAttribI2iv", catch_unwind(||(self.version_3_0.vertexattribi2iv)(index, v)));
47849		#[cfg(not(feature = "catch_nullptr"))]
47850		let ret = {(self.version_3_0.vertexattribi2iv)(index, v); Ok(())};
47851		#[cfg(feature = "diagnose")]
47852		if let Ok(ret) = ret {
47853			return to_result("glVertexAttribI2iv", ret, (self.version_3_0.geterror)());
47854		} else {
47855			return ret
47856		}
47857		#[cfg(not(feature = "diagnose"))]
47858		return ret;
47859	}
47860	#[inline(always)]
47861	fn glVertexAttribI3iv(&self, index: GLuint, v: *const GLint) -> Result<()> {
47862		#[cfg(feature = "catch_nullptr")]
47863		let ret = process_catch("glVertexAttribI3iv", catch_unwind(||(self.version_3_0.vertexattribi3iv)(index, v)));
47864		#[cfg(not(feature = "catch_nullptr"))]
47865		let ret = {(self.version_3_0.vertexattribi3iv)(index, v); Ok(())};
47866		#[cfg(feature = "diagnose")]
47867		if let Ok(ret) = ret {
47868			return to_result("glVertexAttribI3iv", ret, (self.version_3_0.geterror)());
47869		} else {
47870			return ret
47871		}
47872		#[cfg(not(feature = "diagnose"))]
47873		return ret;
47874	}
47875	#[inline(always)]
47876	fn glVertexAttribI4iv(&self, index: GLuint, v: *const GLint) -> Result<()> {
47877		#[cfg(feature = "catch_nullptr")]
47878		let ret = process_catch("glVertexAttribI4iv", catch_unwind(||(self.version_3_0.vertexattribi4iv)(index, v)));
47879		#[cfg(not(feature = "catch_nullptr"))]
47880		let ret = {(self.version_3_0.vertexattribi4iv)(index, v); Ok(())};
47881		#[cfg(feature = "diagnose")]
47882		if let Ok(ret) = ret {
47883			return to_result("glVertexAttribI4iv", ret, (self.version_3_0.geterror)());
47884		} else {
47885			return ret
47886		}
47887		#[cfg(not(feature = "diagnose"))]
47888		return ret;
47889	}
47890	#[inline(always)]
47891	fn glVertexAttribI1uiv(&self, index: GLuint, v: *const GLuint) -> Result<()> {
47892		#[cfg(feature = "catch_nullptr")]
47893		let ret = process_catch("glVertexAttribI1uiv", catch_unwind(||(self.version_3_0.vertexattribi1uiv)(index, v)));
47894		#[cfg(not(feature = "catch_nullptr"))]
47895		let ret = {(self.version_3_0.vertexattribi1uiv)(index, v); Ok(())};
47896		#[cfg(feature = "diagnose")]
47897		if let Ok(ret) = ret {
47898			return to_result("glVertexAttribI1uiv", ret, (self.version_3_0.geterror)());
47899		} else {
47900			return ret
47901		}
47902		#[cfg(not(feature = "diagnose"))]
47903		return ret;
47904	}
47905	#[inline(always)]
47906	fn glVertexAttribI2uiv(&self, index: GLuint, v: *const GLuint) -> Result<()> {
47907		#[cfg(feature = "catch_nullptr")]
47908		let ret = process_catch("glVertexAttribI2uiv", catch_unwind(||(self.version_3_0.vertexattribi2uiv)(index, v)));
47909		#[cfg(not(feature = "catch_nullptr"))]
47910		let ret = {(self.version_3_0.vertexattribi2uiv)(index, v); Ok(())};
47911		#[cfg(feature = "diagnose")]
47912		if let Ok(ret) = ret {
47913			return to_result("glVertexAttribI2uiv", ret, (self.version_3_0.geterror)());
47914		} else {
47915			return ret
47916		}
47917		#[cfg(not(feature = "diagnose"))]
47918		return ret;
47919	}
47920	#[inline(always)]
47921	fn glVertexAttribI3uiv(&self, index: GLuint, v: *const GLuint) -> Result<()> {
47922		#[cfg(feature = "catch_nullptr")]
47923		let ret = process_catch("glVertexAttribI3uiv", catch_unwind(||(self.version_3_0.vertexattribi3uiv)(index, v)));
47924		#[cfg(not(feature = "catch_nullptr"))]
47925		let ret = {(self.version_3_0.vertexattribi3uiv)(index, v); Ok(())};
47926		#[cfg(feature = "diagnose")]
47927		if let Ok(ret) = ret {
47928			return to_result("glVertexAttribI3uiv", ret, (self.version_3_0.geterror)());
47929		} else {
47930			return ret
47931		}
47932		#[cfg(not(feature = "diagnose"))]
47933		return ret;
47934	}
47935	#[inline(always)]
47936	fn glVertexAttribI4uiv(&self, index: GLuint, v: *const GLuint) -> Result<()> {
47937		#[cfg(feature = "catch_nullptr")]
47938		let ret = process_catch("glVertexAttribI4uiv", catch_unwind(||(self.version_3_0.vertexattribi4uiv)(index, v)));
47939		#[cfg(not(feature = "catch_nullptr"))]
47940		let ret = {(self.version_3_0.vertexattribi4uiv)(index, v); Ok(())};
47941		#[cfg(feature = "diagnose")]
47942		if let Ok(ret) = ret {
47943			return to_result("glVertexAttribI4uiv", ret, (self.version_3_0.geterror)());
47944		} else {
47945			return ret
47946		}
47947		#[cfg(not(feature = "diagnose"))]
47948		return ret;
47949	}
47950	#[inline(always)]
47951	fn glVertexAttribI4bv(&self, index: GLuint, v: *const GLbyte) -> Result<()> {
47952		#[cfg(feature = "catch_nullptr")]
47953		let ret = process_catch("glVertexAttribI4bv", catch_unwind(||(self.version_3_0.vertexattribi4bv)(index, v)));
47954		#[cfg(not(feature = "catch_nullptr"))]
47955		let ret = {(self.version_3_0.vertexattribi4bv)(index, v); Ok(())};
47956		#[cfg(feature = "diagnose")]
47957		if let Ok(ret) = ret {
47958			return to_result("glVertexAttribI4bv", ret, (self.version_3_0.geterror)());
47959		} else {
47960			return ret
47961		}
47962		#[cfg(not(feature = "diagnose"))]
47963		return ret;
47964	}
47965	#[inline(always)]
47966	fn glVertexAttribI4sv(&self, index: GLuint, v: *const GLshort) -> Result<()> {
47967		#[cfg(feature = "catch_nullptr")]
47968		let ret = process_catch("glVertexAttribI4sv", catch_unwind(||(self.version_3_0.vertexattribi4sv)(index, v)));
47969		#[cfg(not(feature = "catch_nullptr"))]
47970		let ret = {(self.version_3_0.vertexattribi4sv)(index, v); Ok(())};
47971		#[cfg(feature = "diagnose")]
47972		if let Ok(ret) = ret {
47973			return to_result("glVertexAttribI4sv", ret, (self.version_3_0.geterror)());
47974		} else {
47975			return ret
47976		}
47977		#[cfg(not(feature = "diagnose"))]
47978		return ret;
47979	}
47980	#[inline(always)]
47981	fn glVertexAttribI4ubv(&self, index: GLuint, v: *const GLubyte) -> Result<()> {
47982		#[cfg(feature = "catch_nullptr")]
47983		let ret = process_catch("glVertexAttribI4ubv", catch_unwind(||(self.version_3_0.vertexattribi4ubv)(index, v)));
47984		#[cfg(not(feature = "catch_nullptr"))]
47985		let ret = {(self.version_3_0.vertexattribi4ubv)(index, v); Ok(())};
47986		#[cfg(feature = "diagnose")]
47987		if let Ok(ret) = ret {
47988			return to_result("glVertexAttribI4ubv", ret, (self.version_3_0.geterror)());
47989		} else {
47990			return ret
47991		}
47992		#[cfg(not(feature = "diagnose"))]
47993		return ret;
47994	}
47995	#[inline(always)]
47996	fn glVertexAttribI4usv(&self, index: GLuint, v: *const GLushort) -> Result<()> {
47997		#[cfg(feature = "catch_nullptr")]
47998		let ret = process_catch("glVertexAttribI4usv", catch_unwind(||(self.version_3_0.vertexattribi4usv)(index, v)));
47999		#[cfg(not(feature = "catch_nullptr"))]
48000		let ret = {(self.version_3_0.vertexattribi4usv)(index, v); Ok(())};
48001		#[cfg(feature = "diagnose")]
48002		if let Ok(ret) = ret {
48003			return to_result("glVertexAttribI4usv", ret, (self.version_3_0.geterror)());
48004		} else {
48005			return ret
48006		}
48007		#[cfg(not(feature = "diagnose"))]
48008		return ret;
48009	}
48010	#[inline(always)]
48011	fn glGetUniformuiv(&self, program: GLuint, location: GLint, params: *mut GLuint) -> Result<()> {
48012		#[cfg(feature = "catch_nullptr")]
48013		let ret = process_catch("glGetUniformuiv", catch_unwind(||(self.version_3_0.getuniformuiv)(program, location, params)));
48014		#[cfg(not(feature = "catch_nullptr"))]
48015		let ret = {(self.version_3_0.getuniformuiv)(program, location, params); Ok(())};
48016		#[cfg(feature = "diagnose")]
48017		if let Ok(ret) = ret {
48018			return to_result("glGetUniformuiv", ret, (self.version_3_0.geterror)());
48019		} else {
48020			return ret
48021		}
48022		#[cfg(not(feature = "diagnose"))]
48023		return ret;
48024	}
48025	#[inline(always)]
48026	fn glBindFragDataLocation(&self, program: GLuint, color: GLuint, name: *const GLchar) -> Result<()> {
48027		#[cfg(feature = "catch_nullptr")]
48028		let ret = process_catch("glBindFragDataLocation", catch_unwind(||(self.version_3_0.bindfragdatalocation)(program, color, name)));
48029		#[cfg(not(feature = "catch_nullptr"))]
48030		let ret = {(self.version_3_0.bindfragdatalocation)(program, color, name); Ok(())};
48031		#[cfg(feature = "diagnose")]
48032		if let Ok(ret) = ret {
48033			return to_result("glBindFragDataLocation", ret, (self.version_3_0.geterror)());
48034		} else {
48035			return ret
48036		}
48037		#[cfg(not(feature = "diagnose"))]
48038		return ret;
48039	}
48040	#[inline(always)]
48041	fn glGetFragDataLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint> {
48042		#[cfg(feature = "catch_nullptr")]
48043		let ret = process_catch("glGetFragDataLocation", catch_unwind(||(self.version_3_0.getfragdatalocation)(program, name)));
48044		#[cfg(not(feature = "catch_nullptr"))]
48045		let ret = Ok((self.version_3_0.getfragdatalocation)(program, name));
48046		#[cfg(feature = "diagnose")]
48047		if let Ok(ret) = ret {
48048			return to_result("glGetFragDataLocation", ret, (self.version_3_0.geterror)());
48049		} else {
48050			return ret
48051		}
48052		#[cfg(not(feature = "diagnose"))]
48053		return ret;
48054	}
48055	#[inline(always)]
48056	fn glUniform1ui(&self, location: GLint, v0: GLuint) -> Result<()> {
48057		#[cfg(feature = "catch_nullptr")]
48058		let ret = process_catch("glUniform1ui", catch_unwind(||(self.version_3_0.uniform1ui)(location, v0)));
48059		#[cfg(not(feature = "catch_nullptr"))]
48060		let ret = {(self.version_3_0.uniform1ui)(location, v0); Ok(())};
48061		#[cfg(feature = "diagnose")]
48062		if let Ok(ret) = ret {
48063			return to_result("glUniform1ui", ret, (self.version_3_0.geterror)());
48064		} else {
48065			return ret
48066		}
48067		#[cfg(not(feature = "diagnose"))]
48068		return ret;
48069	}
48070	#[inline(always)]
48071	fn glUniform2ui(&self, location: GLint, v0: GLuint, v1: GLuint) -> Result<()> {
48072		#[cfg(feature = "catch_nullptr")]
48073		let ret = process_catch("glUniform2ui", catch_unwind(||(self.version_3_0.uniform2ui)(location, v0, v1)));
48074		#[cfg(not(feature = "catch_nullptr"))]
48075		let ret = {(self.version_3_0.uniform2ui)(location, v0, v1); Ok(())};
48076		#[cfg(feature = "diagnose")]
48077		if let Ok(ret) = ret {
48078			return to_result("glUniform2ui", ret, (self.version_3_0.geterror)());
48079		} else {
48080			return ret
48081		}
48082		#[cfg(not(feature = "diagnose"))]
48083		return ret;
48084	}
48085	#[inline(always)]
48086	fn glUniform3ui(&self, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint) -> Result<()> {
48087		#[cfg(feature = "catch_nullptr")]
48088		let ret = process_catch("glUniform3ui", catch_unwind(||(self.version_3_0.uniform3ui)(location, v0, v1, v2)));
48089		#[cfg(not(feature = "catch_nullptr"))]
48090		let ret = {(self.version_3_0.uniform3ui)(location, v0, v1, v2); Ok(())};
48091		#[cfg(feature = "diagnose")]
48092		if let Ok(ret) = ret {
48093			return to_result("glUniform3ui", ret, (self.version_3_0.geterror)());
48094		} else {
48095			return ret
48096		}
48097		#[cfg(not(feature = "diagnose"))]
48098		return ret;
48099	}
48100	#[inline(always)]
48101	fn glUniform4ui(&self, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint, v3: GLuint) -> Result<()> {
48102		#[cfg(feature = "catch_nullptr")]
48103		let ret = process_catch("glUniform4ui", catch_unwind(||(self.version_3_0.uniform4ui)(location, v0, v1, v2, v3)));
48104		#[cfg(not(feature = "catch_nullptr"))]
48105		let ret = {(self.version_3_0.uniform4ui)(location, v0, v1, v2, v3); Ok(())};
48106		#[cfg(feature = "diagnose")]
48107		if let Ok(ret) = ret {
48108			return to_result("glUniform4ui", ret, (self.version_3_0.geterror)());
48109		} else {
48110			return ret
48111		}
48112		#[cfg(not(feature = "diagnose"))]
48113		return ret;
48114	}
48115	#[inline(always)]
48116	fn glUniform1uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
48117		#[cfg(feature = "catch_nullptr")]
48118		let ret = process_catch("glUniform1uiv", catch_unwind(||(self.version_3_0.uniform1uiv)(location, count, value)));
48119		#[cfg(not(feature = "catch_nullptr"))]
48120		let ret = {(self.version_3_0.uniform1uiv)(location, count, value); Ok(())};
48121		#[cfg(feature = "diagnose")]
48122		if let Ok(ret) = ret {
48123			return to_result("glUniform1uiv", ret, (self.version_3_0.geterror)());
48124		} else {
48125			return ret
48126		}
48127		#[cfg(not(feature = "diagnose"))]
48128		return ret;
48129	}
48130	#[inline(always)]
48131	fn glUniform2uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
48132		#[cfg(feature = "catch_nullptr")]
48133		let ret = process_catch("glUniform2uiv", catch_unwind(||(self.version_3_0.uniform2uiv)(location, count, value)));
48134		#[cfg(not(feature = "catch_nullptr"))]
48135		let ret = {(self.version_3_0.uniform2uiv)(location, count, value); Ok(())};
48136		#[cfg(feature = "diagnose")]
48137		if let Ok(ret) = ret {
48138			return to_result("glUniform2uiv", ret, (self.version_3_0.geterror)());
48139		} else {
48140			return ret
48141		}
48142		#[cfg(not(feature = "diagnose"))]
48143		return ret;
48144	}
48145	#[inline(always)]
48146	fn glUniform3uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
48147		#[cfg(feature = "catch_nullptr")]
48148		let ret = process_catch("glUniform3uiv", catch_unwind(||(self.version_3_0.uniform3uiv)(location, count, value)));
48149		#[cfg(not(feature = "catch_nullptr"))]
48150		let ret = {(self.version_3_0.uniform3uiv)(location, count, value); Ok(())};
48151		#[cfg(feature = "diagnose")]
48152		if let Ok(ret) = ret {
48153			return to_result("glUniform3uiv", ret, (self.version_3_0.geterror)());
48154		} else {
48155			return ret
48156		}
48157		#[cfg(not(feature = "diagnose"))]
48158		return ret;
48159	}
48160	#[inline(always)]
48161	fn glUniform4uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
48162		#[cfg(feature = "catch_nullptr")]
48163		let ret = process_catch("glUniform4uiv", catch_unwind(||(self.version_3_0.uniform4uiv)(location, count, value)));
48164		#[cfg(not(feature = "catch_nullptr"))]
48165		let ret = {(self.version_3_0.uniform4uiv)(location, count, value); Ok(())};
48166		#[cfg(feature = "diagnose")]
48167		if let Ok(ret) = ret {
48168			return to_result("glUniform4uiv", ret, (self.version_3_0.geterror)());
48169		} else {
48170			return ret
48171		}
48172		#[cfg(not(feature = "diagnose"))]
48173		return ret;
48174	}
48175	#[inline(always)]
48176	fn glTexParameterIiv(&self, target: GLenum, pname: GLenum, params: *const GLint) -> Result<()> {
48177		#[cfg(feature = "catch_nullptr")]
48178		let ret = process_catch("glTexParameterIiv", catch_unwind(||(self.version_3_0.texparameteriiv)(target, pname, params)));
48179		#[cfg(not(feature = "catch_nullptr"))]
48180		let ret = {(self.version_3_0.texparameteriiv)(target, pname, params); Ok(())};
48181		#[cfg(feature = "diagnose")]
48182		if let Ok(ret) = ret {
48183			return to_result("glTexParameterIiv", ret, (self.version_3_0.geterror)());
48184		} else {
48185			return ret
48186		}
48187		#[cfg(not(feature = "diagnose"))]
48188		return ret;
48189	}
48190	#[inline(always)]
48191	fn glTexParameterIuiv(&self, target: GLenum, pname: GLenum, params: *const GLuint) -> Result<()> {
48192		#[cfg(feature = "catch_nullptr")]
48193		let ret = process_catch("glTexParameterIuiv", catch_unwind(||(self.version_3_0.texparameteriuiv)(target, pname, params)));
48194		#[cfg(not(feature = "catch_nullptr"))]
48195		let ret = {(self.version_3_0.texparameteriuiv)(target, pname, params); Ok(())};
48196		#[cfg(feature = "diagnose")]
48197		if let Ok(ret) = ret {
48198			return to_result("glTexParameterIuiv", ret, (self.version_3_0.geterror)());
48199		} else {
48200			return ret
48201		}
48202		#[cfg(not(feature = "diagnose"))]
48203		return ret;
48204	}
48205	#[inline(always)]
48206	fn glGetTexParameterIiv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
48207		#[cfg(feature = "catch_nullptr")]
48208		let ret = process_catch("glGetTexParameterIiv", catch_unwind(||(self.version_3_0.gettexparameteriiv)(target, pname, params)));
48209		#[cfg(not(feature = "catch_nullptr"))]
48210		let ret = {(self.version_3_0.gettexparameteriiv)(target, pname, params); Ok(())};
48211		#[cfg(feature = "diagnose")]
48212		if let Ok(ret) = ret {
48213			return to_result("glGetTexParameterIiv", ret, (self.version_3_0.geterror)());
48214		} else {
48215			return ret
48216		}
48217		#[cfg(not(feature = "diagnose"))]
48218		return ret;
48219	}
48220	#[inline(always)]
48221	fn glGetTexParameterIuiv(&self, target: GLenum, pname: GLenum, params: *mut GLuint) -> Result<()> {
48222		#[cfg(feature = "catch_nullptr")]
48223		let ret = process_catch("glGetTexParameterIuiv", catch_unwind(||(self.version_3_0.gettexparameteriuiv)(target, pname, params)));
48224		#[cfg(not(feature = "catch_nullptr"))]
48225		let ret = {(self.version_3_0.gettexparameteriuiv)(target, pname, params); Ok(())};
48226		#[cfg(feature = "diagnose")]
48227		if let Ok(ret) = ret {
48228			return to_result("glGetTexParameterIuiv", ret, (self.version_3_0.geterror)());
48229		} else {
48230			return ret
48231		}
48232		#[cfg(not(feature = "diagnose"))]
48233		return ret;
48234	}
48235	#[inline(always)]
48236	fn glClearBufferiv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLint) -> Result<()> {
48237		#[cfg(feature = "catch_nullptr")]
48238		let ret = process_catch("glClearBufferiv", catch_unwind(||(self.version_3_0.clearbufferiv)(buffer, drawbuffer, value)));
48239		#[cfg(not(feature = "catch_nullptr"))]
48240		let ret = {(self.version_3_0.clearbufferiv)(buffer, drawbuffer, value); Ok(())};
48241		#[cfg(feature = "diagnose")]
48242		if let Ok(ret) = ret {
48243			return to_result("glClearBufferiv", ret, (self.version_3_0.geterror)());
48244		} else {
48245			return ret
48246		}
48247		#[cfg(not(feature = "diagnose"))]
48248		return ret;
48249	}
48250	#[inline(always)]
48251	fn glClearBufferuiv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLuint) -> Result<()> {
48252		#[cfg(feature = "catch_nullptr")]
48253		let ret = process_catch("glClearBufferuiv", catch_unwind(||(self.version_3_0.clearbufferuiv)(buffer, drawbuffer, value)));
48254		#[cfg(not(feature = "catch_nullptr"))]
48255		let ret = {(self.version_3_0.clearbufferuiv)(buffer, drawbuffer, value); Ok(())};
48256		#[cfg(feature = "diagnose")]
48257		if let Ok(ret) = ret {
48258			return to_result("glClearBufferuiv", ret, (self.version_3_0.geterror)());
48259		} else {
48260			return ret
48261		}
48262		#[cfg(not(feature = "diagnose"))]
48263		return ret;
48264	}
48265	#[inline(always)]
48266	fn glClearBufferfv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLfloat) -> Result<()> {
48267		#[cfg(feature = "catch_nullptr")]
48268		let ret = process_catch("glClearBufferfv", catch_unwind(||(self.version_3_0.clearbufferfv)(buffer, drawbuffer, value)));
48269		#[cfg(not(feature = "catch_nullptr"))]
48270		let ret = {(self.version_3_0.clearbufferfv)(buffer, drawbuffer, value); Ok(())};
48271		#[cfg(feature = "diagnose")]
48272		if let Ok(ret) = ret {
48273			return to_result("glClearBufferfv", ret, (self.version_3_0.geterror)());
48274		} else {
48275			return ret
48276		}
48277		#[cfg(not(feature = "diagnose"))]
48278		return ret;
48279	}
48280	#[inline(always)]
48281	fn glClearBufferfi(&self, buffer: GLenum, drawbuffer: GLint, depth: GLfloat, stencil: GLint) -> Result<()> {
48282		#[cfg(feature = "catch_nullptr")]
48283		let ret = process_catch("glClearBufferfi", catch_unwind(||(self.version_3_0.clearbufferfi)(buffer, drawbuffer, depth, stencil)));
48284		#[cfg(not(feature = "catch_nullptr"))]
48285		let ret = {(self.version_3_0.clearbufferfi)(buffer, drawbuffer, depth, stencil); Ok(())};
48286		#[cfg(feature = "diagnose")]
48287		if let Ok(ret) = ret {
48288			return to_result("glClearBufferfi", ret, (self.version_3_0.geterror)());
48289		} else {
48290			return ret
48291		}
48292		#[cfg(not(feature = "diagnose"))]
48293		return ret;
48294	}
48295	#[inline(always)]
48296	fn glGetStringi(&self, name: GLenum, index: GLuint) -> Result<&'static str> {
48297		#[cfg(feature = "catch_nullptr")]
48298		let ret = process_catch("glGetStringi", catch_unwind(||unsafe{CStr::from_ptr((self.version_3_0.getstringi)(name, index) as *const i8)}.to_str().unwrap()));
48299		#[cfg(not(feature = "catch_nullptr"))]
48300		let ret = Ok(unsafe{CStr::from_ptr((self.version_3_0.getstringi)(name, index) as *const i8)}.to_str().unwrap());
48301		#[cfg(feature = "diagnose")]
48302		if let Ok(ret) = ret {
48303			return to_result("glGetStringi", ret, (self.version_3_0.geterror)());
48304		} else {
48305			return ret
48306		}
48307		#[cfg(not(feature = "diagnose"))]
48308		return ret;
48309	}
48310	#[inline(always)]
48311	fn glIsRenderbuffer(&self, renderbuffer: GLuint) -> Result<GLboolean> {
48312		#[cfg(feature = "catch_nullptr")]
48313		let ret = process_catch("glIsRenderbuffer", catch_unwind(||(self.version_3_0.isrenderbuffer)(renderbuffer)));
48314		#[cfg(not(feature = "catch_nullptr"))]
48315		let ret = Ok((self.version_3_0.isrenderbuffer)(renderbuffer));
48316		#[cfg(feature = "diagnose")]
48317		if let Ok(ret) = ret {
48318			return to_result("glIsRenderbuffer", ret, (self.version_3_0.geterror)());
48319		} else {
48320			return ret
48321		}
48322		#[cfg(not(feature = "diagnose"))]
48323		return ret;
48324	}
48325	#[inline(always)]
48326	fn glBindRenderbuffer(&self, target: GLenum, renderbuffer: GLuint) -> Result<()> {
48327		#[cfg(feature = "catch_nullptr")]
48328		let ret = process_catch("glBindRenderbuffer", catch_unwind(||(self.version_3_0.bindrenderbuffer)(target, renderbuffer)));
48329		#[cfg(not(feature = "catch_nullptr"))]
48330		let ret = {(self.version_3_0.bindrenderbuffer)(target, renderbuffer); Ok(())};
48331		#[cfg(feature = "diagnose")]
48332		if let Ok(ret) = ret {
48333			return to_result("glBindRenderbuffer", ret, (self.version_3_0.geterror)());
48334		} else {
48335			return ret
48336		}
48337		#[cfg(not(feature = "diagnose"))]
48338		return ret;
48339	}
48340	#[inline(always)]
48341	fn glDeleteRenderbuffers(&self, n: GLsizei, renderbuffers: *const GLuint) -> Result<()> {
48342		#[cfg(feature = "catch_nullptr")]
48343		let ret = process_catch("glDeleteRenderbuffers", catch_unwind(||(self.version_3_0.deleterenderbuffers)(n, renderbuffers)));
48344		#[cfg(not(feature = "catch_nullptr"))]
48345		let ret = {(self.version_3_0.deleterenderbuffers)(n, renderbuffers); Ok(())};
48346		#[cfg(feature = "diagnose")]
48347		if let Ok(ret) = ret {
48348			return to_result("glDeleteRenderbuffers", ret, (self.version_3_0.geterror)());
48349		} else {
48350			return ret
48351		}
48352		#[cfg(not(feature = "diagnose"))]
48353		return ret;
48354	}
48355	#[inline(always)]
48356	fn glGenRenderbuffers(&self, n: GLsizei, renderbuffers: *mut GLuint) -> Result<()> {
48357		#[cfg(feature = "catch_nullptr")]
48358		let ret = process_catch("glGenRenderbuffers", catch_unwind(||(self.version_3_0.genrenderbuffers)(n, renderbuffers)));
48359		#[cfg(not(feature = "catch_nullptr"))]
48360		let ret = {(self.version_3_0.genrenderbuffers)(n, renderbuffers); Ok(())};
48361		#[cfg(feature = "diagnose")]
48362		if let Ok(ret) = ret {
48363			return to_result("glGenRenderbuffers", ret, (self.version_3_0.geterror)());
48364		} else {
48365			return ret
48366		}
48367		#[cfg(not(feature = "diagnose"))]
48368		return ret;
48369	}
48370	#[inline(always)]
48371	fn glRenderbufferStorage(&self, target: GLenum, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()> {
48372		#[cfg(feature = "catch_nullptr")]
48373		let ret = process_catch("glRenderbufferStorage", catch_unwind(||(self.version_3_0.renderbufferstorage)(target, internalformat, width, height)));
48374		#[cfg(not(feature = "catch_nullptr"))]
48375		let ret = {(self.version_3_0.renderbufferstorage)(target, internalformat, width, height); Ok(())};
48376		#[cfg(feature = "diagnose")]
48377		if let Ok(ret) = ret {
48378			return to_result("glRenderbufferStorage", ret, (self.version_3_0.geterror)());
48379		} else {
48380			return ret
48381		}
48382		#[cfg(not(feature = "diagnose"))]
48383		return ret;
48384	}
48385	#[inline(always)]
48386	fn glGetRenderbufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
48387		#[cfg(feature = "catch_nullptr")]
48388		let ret = process_catch("glGetRenderbufferParameteriv", catch_unwind(||(self.version_3_0.getrenderbufferparameteriv)(target, pname, params)));
48389		#[cfg(not(feature = "catch_nullptr"))]
48390		let ret = {(self.version_3_0.getrenderbufferparameteriv)(target, pname, params); Ok(())};
48391		#[cfg(feature = "diagnose")]
48392		if let Ok(ret) = ret {
48393			return to_result("glGetRenderbufferParameteriv", ret, (self.version_3_0.geterror)());
48394		} else {
48395			return ret
48396		}
48397		#[cfg(not(feature = "diagnose"))]
48398		return ret;
48399	}
48400	#[inline(always)]
48401	fn glIsFramebuffer(&self, framebuffer: GLuint) -> Result<GLboolean> {
48402		#[cfg(feature = "catch_nullptr")]
48403		let ret = process_catch("glIsFramebuffer", catch_unwind(||(self.version_3_0.isframebuffer)(framebuffer)));
48404		#[cfg(not(feature = "catch_nullptr"))]
48405		let ret = Ok((self.version_3_0.isframebuffer)(framebuffer));
48406		#[cfg(feature = "diagnose")]
48407		if let Ok(ret) = ret {
48408			return to_result("glIsFramebuffer", ret, (self.version_3_0.geterror)());
48409		} else {
48410			return ret
48411		}
48412		#[cfg(not(feature = "diagnose"))]
48413		return ret;
48414	}
48415	#[inline(always)]
48416	fn glBindFramebuffer(&self, target: GLenum, framebuffer: GLuint) -> Result<()> {
48417		#[cfg(feature = "catch_nullptr")]
48418		let ret = process_catch("glBindFramebuffer", catch_unwind(||(self.version_3_0.bindframebuffer)(target, framebuffer)));
48419		#[cfg(not(feature = "catch_nullptr"))]
48420		let ret = {(self.version_3_0.bindframebuffer)(target, framebuffer); Ok(())};
48421		#[cfg(feature = "diagnose")]
48422		if let Ok(ret) = ret {
48423			return to_result("glBindFramebuffer", ret, (self.version_3_0.geterror)());
48424		} else {
48425			return ret
48426		}
48427		#[cfg(not(feature = "diagnose"))]
48428		return ret;
48429	}
48430	#[inline(always)]
48431	fn glDeleteFramebuffers(&self, n: GLsizei, framebuffers: *const GLuint) -> Result<()> {
48432		#[cfg(feature = "catch_nullptr")]
48433		let ret = process_catch("glDeleteFramebuffers", catch_unwind(||(self.version_3_0.deleteframebuffers)(n, framebuffers)));
48434		#[cfg(not(feature = "catch_nullptr"))]
48435		let ret = {(self.version_3_0.deleteframebuffers)(n, framebuffers); Ok(())};
48436		#[cfg(feature = "diagnose")]
48437		if let Ok(ret) = ret {
48438			return to_result("glDeleteFramebuffers", ret, (self.version_3_0.geterror)());
48439		} else {
48440			return ret
48441		}
48442		#[cfg(not(feature = "diagnose"))]
48443		return ret;
48444	}
48445	#[inline(always)]
48446	fn glGenFramebuffers(&self, n: GLsizei, framebuffers: *mut GLuint) -> Result<()> {
48447		#[cfg(feature = "catch_nullptr")]
48448		let ret = process_catch("glGenFramebuffers", catch_unwind(||(self.version_3_0.genframebuffers)(n, framebuffers)));
48449		#[cfg(not(feature = "catch_nullptr"))]
48450		let ret = {(self.version_3_0.genframebuffers)(n, framebuffers); Ok(())};
48451		#[cfg(feature = "diagnose")]
48452		if let Ok(ret) = ret {
48453			return to_result("glGenFramebuffers", ret, (self.version_3_0.geterror)());
48454		} else {
48455			return ret
48456		}
48457		#[cfg(not(feature = "diagnose"))]
48458		return ret;
48459	}
48460	#[inline(always)]
48461	fn glCheckFramebufferStatus(&self, target: GLenum) -> Result<GLenum> {
48462		#[cfg(feature = "catch_nullptr")]
48463		let ret = process_catch("glCheckFramebufferStatus", catch_unwind(||(self.version_3_0.checkframebufferstatus)(target)));
48464		#[cfg(not(feature = "catch_nullptr"))]
48465		let ret = Ok((self.version_3_0.checkframebufferstatus)(target));
48466		#[cfg(feature = "diagnose")]
48467		if let Ok(ret) = ret {
48468			return to_result("glCheckFramebufferStatus", ret, (self.version_3_0.geterror)());
48469		} else {
48470			return ret
48471		}
48472		#[cfg(not(feature = "diagnose"))]
48473		return ret;
48474	}
48475	#[inline(always)]
48476	fn glFramebufferTexture1D(&self, target: GLenum, attachment: GLenum, textarget: GLenum, texture: GLuint, level: GLint) -> Result<()> {
48477		#[cfg(feature = "catch_nullptr")]
48478		let ret = process_catch("glFramebufferTexture1D", catch_unwind(||(self.version_3_0.framebuffertexture1d)(target, attachment, textarget, texture, level)));
48479		#[cfg(not(feature = "catch_nullptr"))]
48480		let ret = {(self.version_3_0.framebuffertexture1d)(target, attachment, textarget, texture, level); Ok(())};
48481		#[cfg(feature = "diagnose")]
48482		if let Ok(ret) = ret {
48483			return to_result("glFramebufferTexture1D", ret, (self.version_3_0.geterror)());
48484		} else {
48485			return ret
48486		}
48487		#[cfg(not(feature = "diagnose"))]
48488		return ret;
48489	}
48490	#[inline(always)]
48491	fn glFramebufferTexture2D(&self, target: GLenum, attachment: GLenum, textarget: GLenum, texture: GLuint, level: GLint) -> Result<()> {
48492		#[cfg(feature = "catch_nullptr")]
48493		let ret = process_catch("glFramebufferTexture2D", catch_unwind(||(self.version_3_0.framebuffertexture2d)(target, attachment, textarget, texture, level)));
48494		#[cfg(not(feature = "catch_nullptr"))]
48495		let ret = {(self.version_3_0.framebuffertexture2d)(target, attachment, textarget, texture, level); Ok(())};
48496		#[cfg(feature = "diagnose")]
48497		if let Ok(ret) = ret {
48498			return to_result("glFramebufferTexture2D", ret, (self.version_3_0.geterror)());
48499		} else {
48500			return ret
48501		}
48502		#[cfg(not(feature = "diagnose"))]
48503		return ret;
48504	}
48505	#[inline(always)]
48506	fn glFramebufferTexture3D(&self, target: GLenum, attachment: GLenum, textarget: GLenum, texture: GLuint, level: GLint, zoffset: GLint) -> Result<()> {
48507		#[cfg(feature = "catch_nullptr")]
48508		let ret = process_catch("glFramebufferTexture3D", catch_unwind(||(self.version_3_0.framebuffertexture3d)(target, attachment, textarget, texture, level, zoffset)));
48509		#[cfg(not(feature = "catch_nullptr"))]
48510		let ret = {(self.version_3_0.framebuffertexture3d)(target, attachment, textarget, texture, level, zoffset); Ok(())};
48511		#[cfg(feature = "diagnose")]
48512		if let Ok(ret) = ret {
48513			return to_result("glFramebufferTexture3D", ret, (self.version_3_0.geterror)());
48514		} else {
48515			return ret
48516		}
48517		#[cfg(not(feature = "diagnose"))]
48518		return ret;
48519	}
48520	#[inline(always)]
48521	fn glFramebufferRenderbuffer(&self, target: GLenum, attachment: GLenum, renderbuffertarget: GLenum, renderbuffer: GLuint) -> Result<()> {
48522		#[cfg(feature = "catch_nullptr")]
48523		let ret = process_catch("glFramebufferRenderbuffer", catch_unwind(||(self.version_3_0.framebufferrenderbuffer)(target, attachment, renderbuffertarget, renderbuffer)));
48524		#[cfg(not(feature = "catch_nullptr"))]
48525		let ret = {(self.version_3_0.framebufferrenderbuffer)(target, attachment, renderbuffertarget, renderbuffer); Ok(())};
48526		#[cfg(feature = "diagnose")]
48527		if let Ok(ret) = ret {
48528			return to_result("glFramebufferRenderbuffer", ret, (self.version_3_0.geterror)());
48529		} else {
48530			return ret
48531		}
48532		#[cfg(not(feature = "diagnose"))]
48533		return ret;
48534	}
48535	#[inline(always)]
48536	fn glGetFramebufferAttachmentParameteriv(&self, target: GLenum, attachment: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
48537		#[cfg(feature = "catch_nullptr")]
48538		let ret = process_catch("glGetFramebufferAttachmentParameteriv", catch_unwind(||(self.version_3_0.getframebufferattachmentparameteriv)(target, attachment, pname, params)));
48539		#[cfg(not(feature = "catch_nullptr"))]
48540		let ret = {(self.version_3_0.getframebufferattachmentparameteriv)(target, attachment, pname, params); Ok(())};
48541		#[cfg(feature = "diagnose")]
48542		if let Ok(ret) = ret {
48543			return to_result("glGetFramebufferAttachmentParameteriv", ret, (self.version_3_0.geterror)());
48544		} else {
48545			return ret
48546		}
48547		#[cfg(not(feature = "diagnose"))]
48548		return ret;
48549	}
48550	#[inline(always)]
48551	fn glGenerateMipmap(&self, target: GLenum) -> Result<()> {
48552		#[cfg(feature = "catch_nullptr")]
48553		let ret = process_catch("glGenerateMipmap", catch_unwind(||(self.version_3_0.generatemipmap)(target)));
48554		#[cfg(not(feature = "catch_nullptr"))]
48555		let ret = {(self.version_3_0.generatemipmap)(target); Ok(())};
48556		#[cfg(feature = "diagnose")]
48557		if let Ok(ret) = ret {
48558			return to_result("glGenerateMipmap", ret, (self.version_3_0.geterror)());
48559		} else {
48560			return ret
48561		}
48562		#[cfg(not(feature = "diagnose"))]
48563		return ret;
48564	}
48565	#[inline(always)]
48566	fn glBlitFramebuffer(&self, srcX0: GLint, srcY0: GLint, srcX1: GLint, srcY1: GLint, dstX0: GLint, dstY0: GLint, dstX1: GLint, dstY1: GLint, mask: GLbitfield, filter: GLenum) -> Result<()> {
48567		#[cfg(feature = "catch_nullptr")]
48568		let ret = process_catch("glBlitFramebuffer", catch_unwind(||(self.version_3_0.blitframebuffer)(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter)));
48569		#[cfg(not(feature = "catch_nullptr"))]
48570		let ret = {(self.version_3_0.blitframebuffer)(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); Ok(())};
48571		#[cfg(feature = "diagnose")]
48572		if let Ok(ret) = ret {
48573			return to_result("glBlitFramebuffer", ret, (self.version_3_0.geterror)());
48574		} else {
48575			return ret
48576		}
48577		#[cfg(not(feature = "diagnose"))]
48578		return ret;
48579	}
48580	#[inline(always)]
48581	fn glRenderbufferStorageMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()> {
48582		#[cfg(feature = "catch_nullptr")]
48583		let ret = process_catch("glRenderbufferStorageMultisample", catch_unwind(||(self.version_3_0.renderbufferstoragemultisample)(target, samples, internalformat, width, height)));
48584		#[cfg(not(feature = "catch_nullptr"))]
48585		let ret = {(self.version_3_0.renderbufferstoragemultisample)(target, samples, internalformat, width, height); Ok(())};
48586		#[cfg(feature = "diagnose")]
48587		if let Ok(ret) = ret {
48588			return to_result("glRenderbufferStorageMultisample", ret, (self.version_3_0.geterror)());
48589		} else {
48590			return ret
48591		}
48592		#[cfg(not(feature = "diagnose"))]
48593		return ret;
48594	}
48595	#[inline(always)]
48596	fn glFramebufferTextureLayer(&self, target: GLenum, attachment: GLenum, texture: GLuint, level: GLint, layer: GLint) -> Result<()> {
48597		#[cfg(feature = "catch_nullptr")]
48598		let ret = process_catch("glFramebufferTextureLayer", catch_unwind(||(self.version_3_0.framebuffertexturelayer)(target, attachment, texture, level, layer)));
48599		#[cfg(not(feature = "catch_nullptr"))]
48600		let ret = {(self.version_3_0.framebuffertexturelayer)(target, attachment, texture, level, layer); Ok(())};
48601		#[cfg(feature = "diagnose")]
48602		if let Ok(ret) = ret {
48603			return to_result("glFramebufferTextureLayer", ret, (self.version_3_0.geterror)());
48604		} else {
48605			return ret
48606		}
48607		#[cfg(not(feature = "diagnose"))]
48608		return ret;
48609	}
48610	#[inline(always)]
48611	fn glMapBufferRange(&self, target: GLenum, offset: GLintptr, length: GLsizeiptr, access: GLbitfield) -> Result<*mut c_void> {
48612		#[cfg(feature = "catch_nullptr")]
48613		let ret = process_catch("glMapBufferRange", catch_unwind(||(self.version_3_0.mapbufferrange)(target, offset, length, access)));
48614		#[cfg(not(feature = "catch_nullptr"))]
48615		let ret = Ok((self.version_3_0.mapbufferrange)(target, offset, length, access));
48616		#[cfg(feature = "diagnose")]
48617		if let Ok(ret) = ret {
48618			return to_result("glMapBufferRange", ret, (self.version_3_0.geterror)());
48619		} else {
48620			return ret
48621		}
48622		#[cfg(not(feature = "diagnose"))]
48623		return ret;
48624	}
48625	#[inline(always)]
48626	fn glFlushMappedBufferRange(&self, target: GLenum, offset: GLintptr, length: GLsizeiptr) -> Result<()> {
48627		#[cfg(feature = "catch_nullptr")]
48628		let ret = process_catch("glFlushMappedBufferRange", catch_unwind(||(self.version_3_0.flushmappedbufferrange)(target, offset, length)));
48629		#[cfg(not(feature = "catch_nullptr"))]
48630		let ret = {(self.version_3_0.flushmappedbufferrange)(target, offset, length); Ok(())};
48631		#[cfg(feature = "diagnose")]
48632		if let Ok(ret) = ret {
48633			return to_result("glFlushMappedBufferRange", ret, (self.version_3_0.geterror)());
48634		} else {
48635			return ret
48636		}
48637		#[cfg(not(feature = "diagnose"))]
48638		return ret;
48639	}
48640	#[inline(always)]
48641	fn glBindVertexArray(&self, array: GLuint) -> Result<()> {
48642		#[cfg(feature = "catch_nullptr")]
48643		let ret = process_catch("glBindVertexArray", catch_unwind(||(self.version_3_0.bindvertexarray)(array)));
48644		#[cfg(not(feature = "catch_nullptr"))]
48645		let ret = {(self.version_3_0.bindvertexarray)(array); Ok(())};
48646		#[cfg(feature = "diagnose")]
48647		if let Ok(ret) = ret {
48648			return to_result("glBindVertexArray", ret, (self.version_3_0.geterror)());
48649		} else {
48650			return ret
48651		}
48652		#[cfg(not(feature = "diagnose"))]
48653		return ret;
48654	}
48655	#[inline(always)]
48656	fn glDeleteVertexArrays(&self, n: GLsizei, arrays: *const GLuint) -> Result<()> {
48657		#[cfg(feature = "catch_nullptr")]
48658		let ret = process_catch("glDeleteVertexArrays", catch_unwind(||(self.version_3_0.deletevertexarrays)(n, arrays)));
48659		#[cfg(not(feature = "catch_nullptr"))]
48660		let ret = {(self.version_3_0.deletevertexarrays)(n, arrays); Ok(())};
48661		#[cfg(feature = "diagnose")]
48662		if let Ok(ret) = ret {
48663			return to_result("glDeleteVertexArrays", ret, (self.version_3_0.geterror)());
48664		} else {
48665			return ret
48666		}
48667		#[cfg(not(feature = "diagnose"))]
48668		return ret;
48669	}
48670	#[inline(always)]
48671	fn glGenVertexArrays(&self, n: GLsizei, arrays: *mut GLuint) -> Result<()> {
48672		#[cfg(feature = "catch_nullptr")]
48673		let ret = process_catch("glGenVertexArrays", catch_unwind(||(self.version_3_0.genvertexarrays)(n, arrays)));
48674		#[cfg(not(feature = "catch_nullptr"))]
48675		let ret = {(self.version_3_0.genvertexarrays)(n, arrays); Ok(())};
48676		#[cfg(feature = "diagnose")]
48677		if let Ok(ret) = ret {
48678			return to_result("glGenVertexArrays", ret, (self.version_3_0.geterror)());
48679		} else {
48680			return ret
48681		}
48682		#[cfg(not(feature = "diagnose"))]
48683		return ret;
48684	}
48685	#[inline(always)]
48686	fn glIsVertexArray(&self, array: GLuint) -> Result<GLboolean> {
48687		#[cfg(feature = "catch_nullptr")]
48688		let ret = process_catch("glIsVertexArray", catch_unwind(||(self.version_3_0.isvertexarray)(array)));
48689		#[cfg(not(feature = "catch_nullptr"))]
48690		let ret = Ok((self.version_3_0.isvertexarray)(array));
48691		#[cfg(feature = "diagnose")]
48692		if let Ok(ret) = ret {
48693			return to_result("glIsVertexArray", ret, (self.version_3_0.geterror)());
48694		} else {
48695			return ret
48696		}
48697		#[cfg(not(feature = "diagnose"))]
48698		return ret;
48699	}
48700}
48701
48702impl GL_3_1_g for GLCore {
48703	#[inline(always)]
48704	fn glDrawArraysInstanced(&self, mode: GLenum, first: GLint, count: GLsizei, instancecount: GLsizei) -> Result<()> {
48705		#[cfg(feature = "catch_nullptr")]
48706		let ret = process_catch("glDrawArraysInstanced", catch_unwind(||(self.version_3_1.drawarraysinstanced)(mode, first, count, instancecount)));
48707		#[cfg(not(feature = "catch_nullptr"))]
48708		let ret = {(self.version_3_1.drawarraysinstanced)(mode, first, count, instancecount); Ok(())};
48709		#[cfg(feature = "diagnose")]
48710		if let Ok(ret) = ret {
48711			return to_result("glDrawArraysInstanced", ret, (self.version_3_1.geterror)());
48712		} else {
48713			return ret
48714		}
48715		#[cfg(not(feature = "diagnose"))]
48716		return ret;
48717	}
48718	#[inline(always)]
48719	fn glDrawElementsInstanced(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei) -> Result<()> {
48720		#[cfg(feature = "catch_nullptr")]
48721		let ret = process_catch("glDrawElementsInstanced", catch_unwind(||(self.version_3_1.drawelementsinstanced)(mode, count, type_, indices, instancecount)));
48722		#[cfg(not(feature = "catch_nullptr"))]
48723		let ret = {(self.version_3_1.drawelementsinstanced)(mode, count, type_, indices, instancecount); Ok(())};
48724		#[cfg(feature = "diagnose")]
48725		if let Ok(ret) = ret {
48726			return to_result("glDrawElementsInstanced", ret, (self.version_3_1.geterror)());
48727		} else {
48728			return ret
48729		}
48730		#[cfg(not(feature = "diagnose"))]
48731		return ret;
48732	}
48733	#[inline(always)]
48734	fn glTexBuffer(&self, target: GLenum, internalformat: GLenum, buffer: GLuint) -> Result<()> {
48735		#[cfg(feature = "catch_nullptr")]
48736		let ret = process_catch("glTexBuffer", catch_unwind(||(self.version_3_1.texbuffer)(target, internalformat, buffer)));
48737		#[cfg(not(feature = "catch_nullptr"))]
48738		let ret = {(self.version_3_1.texbuffer)(target, internalformat, buffer); Ok(())};
48739		#[cfg(feature = "diagnose")]
48740		if let Ok(ret) = ret {
48741			return to_result("glTexBuffer", ret, (self.version_3_1.geterror)());
48742		} else {
48743			return ret
48744		}
48745		#[cfg(not(feature = "diagnose"))]
48746		return ret;
48747	}
48748	#[inline(always)]
48749	fn glPrimitiveRestartIndex(&self, index: GLuint) -> Result<()> {
48750		#[cfg(feature = "catch_nullptr")]
48751		let ret = process_catch("glPrimitiveRestartIndex", catch_unwind(||(self.version_3_1.primitiverestartindex)(index)));
48752		#[cfg(not(feature = "catch_nullptr"))]
48753		let ret = {(self.version_3_1.primitiverestartindex)(index); Ok(())};
48754		#[cfg(feature = "diagnose")]
48755		if let Ok(ret) = ret {
48756			return to_result("glPrimitiveRestartIndex", ret, (self.version_3_1.geterror)());
48757		} else {
48758			return ret
48759		}
48760		#[cfg(not(feature = "diagnose"))]
48761		return ret;
48762	}
48763	#[inline(always)]
48764	fn glCopyBufferSubData(&self, readTarget: GLenum, writeTarget: GLenum, readOffset: GLintptr, writeOffset: GLintptr, size: GLsizeiptr) -> Result<()> {
48765		#[cfg(feature = "catch_nullptr")]
48766		let ret = process_catch("glCopyBufferSubData", catch_unwind(||(self.version_3_1.copybuffersubdata)(readTarget, writeTarget, readOffset, writeOffset, size)));
48767		#[cfg(not(feature = "catch_nullptr"))]
48768		let ret = {(self.version_3_1.copybuffersubdata)(readTarget, writeTarget, readOffset, writeOffset, size); Ok(())};
48769		#[cfg(feature = "diagnose")]
48770		if let Ok(ret) = ret {
48771			return to_result("glCopyBufferSubData", ret, (self.version_3_1.geterror)());
48772		} else {
48773			return ret
48774		}
48775		#[cfg(not(feature = "diagnose"))]
48776		return ret;
48777	}
48778	#[inline(always)]
48779	fn glGetUniformIndices(&self, program: GLuint, uniformCount: GLsizei, uniformNames: *const *const GLchar, uniformIndices: *mut GLuint) -> Result<()> {
48780		#[cfg(feature = "catch_nullptr")]
48781		let ret = process_catch("glGetUniformIndices", catch_unwind(||(self.version_3_1.getuniformindices)(program, uniformCount, uniformNames, uniformIndices)));
48782		#[cfg(not(feature = "catch_nullptr"))]
48783		let ret = {(self.version_3_1.getuniformindices)(program, uniformCount, uniformNames, uniformIndices); Ok(())};
48784		#[cfg(feature = "diagnose")]
48785		if let Ok(ret) = ret {
48786			return to_result("glGetUniformIndices", ret, (self.version_3_1.geterror)());
48787		} else {
48788			return ret
48789		}
48790		#[cfg(not(feature = "diagnose"))]
48791		return ret;
48792	}
48793	#[inline(always)]
48794	fn glGetActiveUniformsiv(&self, program: GLuint, uniformCount: GLsizei, uniformIndices: *const GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
48795		#[cfg(feature = "catch_nullptr")]
48796		let ret = process_catch("glGetActiveUniformsiv", catch_unwind(||(self.version_3_1.getactiveuniformsiv)(program, uniformCount, uniformIndices, pname, params)));
48797		#[cfg(not(feature = "catch_nullptr"))]
48798		let ret = {(self.version_3_1.getactiveuniformsiv)(program, uniformCount, uniformIndices, pname, params); Ok(())};
48799		#[cfg(feature = "diagnose")]
48800		if let Ok(ret) = ret {
48801			return to_result("glGetActiveUniformsiv", ret, (self.version_3_1.geterror)());
48802		} else {
48803			return ret
48804		}
48805		#[cfg(not(feature = "diagnose"))]
48806		return ret;
48807	}
48808	#[inline(always)]
48809	fn glGetActiveUniformName(&self, program: GLuint, uniformIndex: GLuint, bufSize: GLsizei, length: *mut GLsizei, uniformName: *mut GLchar) -> Result<()> {
48810		#[cfg(feature = "catch_nullptr")]
48811		let ret = process_catch("glGetActiveUniformName", catch_unwind(||(self.version_3_1.getactiveuniformname)(program, uniformIndex, bufSize, length, uniformName)));
48812		#[cfg(not(feature = "catch_nullptr"))]
48813		let ret = {(self.version_3_1.getactiveuniformname)(program, uniformIndex, bufSize, length, uniformName); Ok(())};
48814		#[cfg(feature = "diagnose")]
48815		if let Ok(ret) = ret {
48816			return to_result("glGetActiveUniformName", ret, (self.version_3_1.geterror)());
48817		} else {
48818			return ret
48819		}
48820		#[cfg(not(feature = "diagnose"))]
48821		return ret;
48822	}
48823	#[inline(always)]
48824	fn glGetUniformBlockIndex(&self, program: GLuint, uniformBlockName: *const GLchar) -> Result<GLuint> {
48825		#[cfg(feature = "catch_nullptr")]
48826		let ret = process_catch("glGetUniformBlockIndex", catch_unwind(||(self.version_3_1.getuniformblockindex)(program, uniformBlockName)));
48827		#[cfg(not(feature = "catch_nullptr"))]
48828		let ret = Ok((self.version_3_1.getuniformblockindex)(program, uniformBlockName));
48829		#[cfg(feature = "diagnose")]
48830		if let Ok(ret) = ret {
48831			return to_result("glGetUniformBlockIndex", ret, (self.version_3_1.geterror)());
48832		} else {
48833			return ret
48834		}
48835		#[cfg(not(feature = "diagnose"))]
48836		return ret;
48837	}
48838	#[inline(always)]
48839	fn glGetActiveUniformBlockiv(&self, program: GLuint, uniformBlockIndex: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
48840		#[cfg(feature = "catch_nullptr")]
48841		let ret = process_catch("glGetActiveUniformBlockiv", catch_unwind(||(self.version_3_1.getactiveuniformblockiv)(program, uniformBlockIndex, pname, params)));
48842		#[cfg(not(feature = "catch_nullptr"))]
48843		let ret = {(self.version_3_1.getactiveuniformblockiv)(program, uniformBlockIndex, pname, params); Ok(())};
48844		#[cfg(feature = "diagnose")]
48845		if let Ok(ret) = ret {
48846			return to_result("glGetActiveUniformBlockiv", ret, (self.version_3_1.geterror)());
48847		} else {
48848			return ret
48849		}
48850		#[cfg(not(feature = "diagnose"))]
48851		return ret;
48852	}
48853	#[inline(always)]
48854	fn glGetActiveUniformBlockName(&self, program: GLuint, uniformBlockIndex: GLuint, bufSize: GLsizei, length: *mut GLsizei, uniformBlockName: *mut GLchar) -> Result<()> {
48855		#[cfg(feature = "catch_nullptr")]
48856		let ret = process_catch("glGetActiveUniformBlockName", catch_unwind(||(self.version_3_1.getactiveuniformblockname)(program, uniformBlockIndex, bufSize, length, uniformBlockName)));
48857		#[cfg(not(feature = "catch_nullptr"))]
48858		let ret = {(self.version_3_1.getactiveuniformblockname)(program, uniformBlockIndex, bufSize, length, uniformBlockName); Ok(())};
48859		#[cfg(feature = "diagnose")]
48860		if let Ok(ret) = ret {
48861			return to_result("glGetActiveUniformBlockName", ret, (self.version_3_1.geterror)());
48862		} else {
48863			return ret
48864		}
48865		#[cfg(not(feature = "diagnose"))]
48866		return ret;
48867	}
48868	#[inline(always)]
48869	fn glUniformBlockBinding(&self, program: GLuint, uniformBlockIndex: GLuint, uniformBlockBinding: GLuint) -> Result<()> {
48870		#[cfg(feature = "catch_nullptr")]
48871		let ret = process_catch("glUniformBlockBinding", catch_unwind(||(self.version_3_1.uniformblockbinding)(program, uniformBlockIndex, uniformBlockBinding)));
48872		#[cfg(not(feature = "catch_nullptr"))]
48873		let ret = {(self.version_3_1.uniformblockbinding)(program, uniformBlockIndex, uniformBlockBinding); Ok(())};
48874		#[cfg(feature = "diagnose")]
48875		if let Ok(ret) = ret {
48876			return to_result("glUniformBlockBinding", ret, (self.version_3_1.geterror)());
48877		} else {
48878			return ret
48879		}
48880		#[cfg(not(feature = "diagnose"))]
48881		return ret;
48882	}
48883}
48884
48885impl GL_3_2_g for GLCore {
48886	#[inline(always)]
48887	fn glDrawElementsBaseVertex(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, basevertex: GLint) -> Result<()> {
48888		#[cfg(feature = "catch_nullptr")]
48889		let ret = process_catch("glDrawElementsBaseVertex", catch_unwind(||(self.version_3_2.drawelementsbasevertex)(mode, count, type_, indices, basevertex)));
48890		#[cfg(not(feature = "catch_nullptr"))]
48891		let ret = {(self.version_3_2.drawelementsbasevertex)(mode, count, type_, indices, basevertex); Ok(())};
48892		#[cfg(feature = "diagnose")]
48893		if let Ok(ret) = ret {
48894			return to_result("glDrawElementsBaseVertex", ret, (self.version_3_2.geterror)());
48895		} else {
48896			return ret
48897		}
48898		#[cfg(not(feature = "diagnose"))]
48899		return ret;
48900	}
48901	#[inline(always)]
48902	fn glDrawRangeElementsBaseVertex(&self, mode: GLenum, start: GLuint, end: GLuint, count: GLsizei, type_: GLenum, indices: *const c_void, basevertex: GLint) -> Result<()> {
48903		#[cfg(feature = "catch_nullptr")]
48904		let ret = process_catch("glDrawRangeElementsBaseVertex", catch_unwind(||(self.version_3_2.drawrangeelementsbasevertex)(mode, start, end, count, type_, indices, basevertex)));
48905		#[cfg(not(feature = "catch_nullptr"))]
48906		let ret = {(self.version_3_2.drawrangeelementsbasevertex)(mode, start, end, count, type_, indices, basevertex); Ok(())};
48907		#[cfg(feature = "diagnose")]
48908		if let Ok(ret) = ret {
48909			return to_result("glDrawRangeElementsBaseVertex", ret, (self.version_3_2.geterror)());
48910		} else {
48911			return ret
48912		}
48913		#[cfg(not(feature = "diagnose"))]
48914		return ret;
48915	}
48916	#[inline(always)]
48917	fn glDrawElementsInstancedBaseVertex(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei, basevertex: GLint) -> Result<()> {
48918		#[cfg(feature = "catch_nullptr")]
48919		let ret = process_catch("glDrawElementsInstancedBaseVertex", catch_unwind(||(self.version_3_2.drawelementsinstancedbasevertex)(mode, count, type_, indices, instancecount, basevertex)));
48920		#[cfg(not(feature = "catch_nullptr"))]
48921		let ret = {(self.version_3_2.drawelementsinstancedbasevertex)(mode, count, type_, indices, instancecount, basevertex); Ok(())};
48922		#[cfg(feature = "diagnose")]
48923		if let Ok(ret) = ret {
48924			return to_result("glDrawElementsInstancedBaseVertex", ret, (self.version_3_2.geterror)());
48925		} else {
48926			return ret
48927		}
48928		#[cfg(not(feature = "diagnose"))]
48929		return ret;
48930	}
48931	#[inline(always)]
48932	fn glMultiDrawElementsBaseVertex(&self, mode: GLenum, count: *const GLsizei, type_: GLenum, indices: *const *const c_void, drawcount: GLsizei, basevertex: *const GLint) -> Result<()> {
48933		#[cfg(feature = "catch_nullptr")]
48934		let ret = process_catch("glMultiDrawElementsBaseVertex", catch_unwind(||(self.version_3_2.multidrawelementsbasevertex)(mode, count, type_, indices, drawcount, basevertex)));
48935		#[cfg(not(feature = "catch_nullptr"))]
48936		let ret = {(self.version_3_2.multidrawelementsbasevertex)(mode, count, type_, indices, drawcount, basevertex); Ok(())};
48937		#[cfg(feature = "diagnose")]
48938		if let Ok(ret) = ret {
48939			return to_result("glMultiDrawElementsBaseVertex", ret, (self.version_3_2.geterror)());
48940		} else {
48941			return ret
48942		}
48943		#[cfg(not(feature = "diagnose"))]
48944		return ret;
48945	}
48946	#[inline(always)]
48947	fn glProvokingVertex(&self, mode: GLenum) -> Result<()> {
48948		#[cfg(feature = "catch_nullptr")]
48949		let ret = process_catch("glProvokingVertex", catch_unwind(||(self.version_3_2.provokingvertex)(mode)));
48950		#[cfg(not(feature = "catch_nullptr"))]
48951		let ret = {(self.version_3_2.provokingvertex)(mode); Ok(())};
48952		#[cfg(feature = "diagnose")]
48953		if let Ok(ret) = ret {
48954			return to_result("glProvokingVertex", ret, (self.version_3_2.geterror)());
48955		} else {
48956			return ret
48957		}
48958		#[cfg(not(feature = "diagnose"))]
48959		return ret;
48960	}
48961	#[inline(always)]
48962	fn glFenceSync(&self, condition: GLenum, flags: GLbitfield) -> Result<GLsync> {
48963		#[cfg(feature = "catch_nullptr")]
48964		let ret = process_catch("glFenceSync", catch_unwind(||(self.version_3_2.fencesync)(condition, flags)));
48965		#[cfg(not(feature = "catch_nullptr"))]
48966		let ret = Ok((self.version_3_2.fencesync)(condition, flags));
48967		#[cfg(feature = "diagnose")]
48968		if let Ok(ret) = ret {
48969			return to_result("glFenceSync", ret, (self.version_3_2.geterror)());
48970		} else {
48971			return ret
48972		}
48973		#[cfg(not(feature = "diagnose"))]
48974		return ret;
48975	}
48976	#[inline(always)]
48977	fn glIsSync(&self, sync: GLsync) -> Result<GLboolean> {
48978		#[cfg(feature = "catch_nullptr")]
48979		let ret = process_catch("glIsSync", catch_unwind(||(self.version_3_2.issync)(sync)));
48980		#[cfg(not(feature = "catch_nullptr"))]
48981		let ret = Ok((self.version_3_2.issync)(sync));
48982		#[cfg(feature = "diagnose")]
48983		if let Ok(ret) = ret {
48984			return to_result("glIsSync", ret, (self.version_3_2.geterror)());
48985		} else {
48986			return ret
48987		}
48988		#[cfg(not(feature = "diagnose"))]
48989		return ret;
48990	}
48991	#[inline(always)]
48992	fn glDeleteSync(&self, sync: GLsync) -> Result<()> {
48993		#[cfg(feature = "catch_nullptr")]
48994		let ret = process_catch("glDeleteSync", catch_unwind(||(self.version_3_2.deletesync)(sync)));
48995		#[cfg(not(feature = "catch_nullptr"))]
48996		let ret = {(self.version_3_2.deletesync)(sync); Ok(())};
48997		#[cfg(feature = "diagnose")]
48998		if let Ok(ret) = ret {
48999			return to_result("glDeleteSync", ret, (self.version_3_2.geterror)());
49000		} else {
49001			return ret
49002		}
49003		#[cfg(not(feature = "diagnose"))]
49004		return ret;
49005	}
49006	#[inline(always)]
49007	fn glClientWaitSync(&self, sync: GLsync, flags: GLbitfield, timeout: GLuint64) -> Result<GLenum> {
49008		#[cfg(feature = "catch_nullptr")]
49009		let ret = process_catch("glClientWaitSync", catch_unwind(||(self.version_3_2.clientwaitsync)(sync, flags, timeout)));
49010		#[cfg(not(feature = "catch_nullptr"))]
49011		let ret = Ok((self.version_3_2.clientwaitsync)(sync, flags, timeout));
49012		#[cfg(feature = "diagnose")]
49013		if let Ok(ret) = ret {
49014			return to_result("glClientWaitSync", ret, (self.version_3_2.geterror)());
49015		} else {
49016			return ret
49017		}
49018		#[cfg(not(feature = "diagnose"))]
49019		return ret;
49020	}
49021	#[inline(always)]
49022	fn glWaitSync(&self, sync: GLsync, flags: GLbitfield, timeout: GLuint64) -> Result<()> {
49023		#[cfg(feature = "catch_nullptr")]
49024		let ret = process_catch("glWaitSync", catch_unwind(||(self.version_3_2.waitsync)(sync, flags, timeout)));
49025		#[cfg(not(feature = "catch_nullptr"))]
49026		let ret = {(self.version_3_2.waitsync)(sync, flags, timeout); Ok(())};
49027		#[cfg(feature = "diagnose")]
49028		if let Ok(ret) = ret {
49029			return to_result("glWaitSync", ret, (self.version_3_2.geterror)());
49030		} else {
49031			return ret
49032		}
49033		#[cfg(not(feature = "diagnose"))]
49034		return ret;
49035	}
49036	#[inline(always)]
49037	fn glGetInteger64v(&self, pname: GLenum, data: *mut GLint64) -> Result<()> {
49038		#[cfg(feature = "catch_nullptr")]
49039		let ret = process_catch("glGetInteger64v", catch_unwind(||(self.version_3_2.getinteger64v)(pname, data)));
49040		#[cfg(not(feature = "catch_nullptr"))]
49041		let ret = {(self.version_3_2.getinteger64v)(pname, data); Ok(())};
49042		#[cfg(feature = "diagnose")]
49043		if let Ok(ret) = ret {
49044			return to_result("glGetInteger64v", ret, (self.version_3_2.geterror)());
49045		} else {
49046			return ret
49047		}
49048		#[cfg(not(feature = "diagnose"))]
49049		return ret;
49050	}
49051	#[inline(always)]
49052	fn glGetSynciv(&self, sync: GLsync, pname: GLenum, count: GLsizei, length: *mut GLsizei, values: *mut GLint) -> Result<()> {
49053		#[cfg(feature = "catch_nullptr")]
49054		let ret = process_catch("glGetSynciv", catch_unwind(||(self.version_3_2.getsynciv)(sync, pname, count, length, values)));
49055		#[cfg(not(feature = "catch_nullptr"))]
49056		let ret = {(self.version_3_2.getsynciv)(sync, pname, count, length, values); Ok(())};
49057		#[cfg(feature = "diagnose")]
49058		if let Ok(ret) = ret {
49059			return to_result("glGetSynciv", ret, (self.version_3_2.geterror)());
49060		} else {
49061			return ret
49062		}
49063		#[cfg(not(feature = "diagnose"))]
49064		return ret;
49065	}
49066	#[inline(always)]
49067	fn glGetInteger64i_v(&self, target: GLenum, index: GLuint, data: *mut GLint64) -> Result<()> {
49068		#[cfg(feature = "catch_nullptr")]
49069		let ret = process_catch("glGetInteger64i_v", catch_unwind(||(self.version_3_2.getinteger64i_v)(target, index, data)));
49070		#[cfg(not(feature = "catch_nullptr"))]
49071		let ret = {(self.version_3_2.getinteger64i_v)(target, index, data); Ok(())};
49072		#[cfg(feature = "diagnose")]
49073		if let Ok(ret) = ret {
49074			return to_result("glGetInteger64i_v", ret, (self.version_3_2.geterror)());
49075		} else {
49076			return ret
49077		}
49078		#[cfg(not(feature = "diagnose"))]
49079		return ret;
49080	}
49081	#[inline(always)]
49082	fn glGetBufferParameteri64v(&self, target: GLenum, pname: GLenum, params: *mut GLint64) -> Result<()> {
49083		#[cfg(feature = "catch_nullptr")]
49084		let ret = process_catch("glGetBufferParameteri64v", catch_unwind(||(self.version_3_2.getbufferparameteri64v)(target, pname, params)));
49085		#[cfg(not(feature = "catch_nullptr"))]
49086		let ret = {(self.version_3_2.getbufferparameteri64v)(target, pname, params); Ok(())};
49087		#[cfg(feature = "diagnose")]
49088		if let Ok(ret) = ret {
49089			return to_result("glGetBufferParameteri64v", ret, (self.version_3_2.geterror)());
49090		} else {
49091			return ret
49092		}
49093		#[cfg(not(feature = "diagnose"))]
49094		return ret;
49095	}
49096	#[inline(always)]
49097	fn glFramebufferTexture(&self, target: GLenum, attachment: GLenum, texture: GLuint, level: GLint) -> Result<()> {
49098		#[cfg(feature = "catch_nullptr")]
49099		let ret = process_catch("glFramebufferTexture", catch_unwind(||(self.version_3_2.framebuffertexture)(target, attachment, texture, level)));
49100		#[cfg(not(feature = "catch_nullptr"))]
49101		let ret = {(self.version_3_2.framebuffertexture)(target, attachment, texture, level); Ok(())};
49102		#[cfg(feature = "diagnose")]
49103		if let Ok(ret) = ret {
49104			return to_result("glFramebufferTexture", ret, (self.version_3_2.geterror)());
49105		} else {
49106			return ret
49107		}
49108		#[cfg(not(feature = "diagnose"))]
49109		return ret;
49110	}
49111	#[inline(always)]
49112	fn glTexImage2DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, fixedsamplelocations: GLboolean) -> Result<()> {
49113		#[cfg(feature = "catch_nullptr")]
49114		let ret = process_catch("glTexImage2DMultisample", catch_unwind(||(self.version_3_2.teximage2dmultisample)(target, samples, internalformat, width, height, fixedsamplelocations)));
49115		#[cfg(not(feature = "catch_nullptr"))]
49116		let ret = {(self.version_3_2.teximage2dmultisample)(target, samples, internalformat, width, height, fixedsamplelocations); Ok(())};
49117		#[cfg(feature = "diagnose")]
49118		if let Ok(ret) = ret {
49119			return to_result("glTexImage2DMultisample", ret, (self.version_3_2.geterror)());
49120		} else {
49121			return ret
49122		}
49123		#[cfg(not(feature = "diagnose"))]
49124		return ret;
49125	}
49126	#[inline(always)]
49127	fn glTexImage3DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, fixedsamplelocations: GLboolean) -> Result<()> {
49128		#[cfg(feature = "catch_nullptr")]
49129		let ret = process_catch("glTexImage3DMultisample", catch_unwind(||(self.version_3_2.teximage3dmultisample)(target, samples, internalformat, width, height, depth, fixedsamplelocations)));
49130		#[cfg(not(feature = "catch_nullptr"))]
49131		let ret = {(self.version_3_2.teximage3dmultisample)(target, samples, internalformat, width, height, depth, fixedsamplelocations); Ok(())};
49132		#[cfg(feature = "diagnose")]
49133		if let Ok(ret) = ret {
49134			return to_result("glTexImage3DMultisample", ret, (self.version_3_2.geterror)());
49135		} else {
49136			return ret
49137		}
49138		#[cfg(not(feature = "diagnose"))]
49139		return ret;
49140	}
49141	#[inline(always)]
49142	fn glGetMultisamplefv(&self, pname: GLenum, index: GLuint, val: *mut GLfloat) -> Result<()> {
49143		#[cfg(feature = "catch_nullptr")]
49144		let ret = process_catch("glGetMultisamplefv", catch_unwind(||(self.version_3_2.getmultisamplefv)(pname, index, val)));
49145		#[cfg(not(feature = "catch_nullptr"))]
49146		let ret = {(self.version_3_2.getmultisamplefv)(pname, index, val); Ok(())};
49147		#[cfg(feature = "diagnose")]
49148		if let Ok(ret) = ret {
49149			return to_result("glGetMultisamplefv", ret, (self.version_3_2.geterror)());
49150		} else {
49151			return ret
49152		}
49153		#[cfg(not(feature = "diagnose"))]
49154		return ret;
49155	}
49156	#[inline(always)]
49157	fn glSampleMaski(&self, maskNumber: GLuint, mask: GLbitfield) -> Result<()> {
49158		#[cfg(feature = "catch_nullptr")]
49159		let ret = process_catch("glSampleMaski", catch_unwind(||(self.version_3_2.samplemaski)(maskNumber, mask)));
49160		#[cfg(not(feature = "catch_nullptr"))]
49161		let ret = {(self.version_3_2.samplemaski)(maskNumber, mask); Ok(())};
49162		#[cfg(feature = "diagnose")]
49163		if let Ok(ret) = ret {
49164			return to_result("glSampleMaski", ret, (self.version_3_2.geterror)());
49165		} else {
49166			return ret
49167		}
49168		#[cfg(not(feature = "diagnose"))]
49169		return ret;
49170	}
49171}
49172
49173impl GL_3_3_g for GLCore {
49174	#[inline(always)]
49175	fn glBindFragDataLocationIndexed(&self, program: GLuint, colorNumber: GLuint, index: GLuint, name: *const GLchar) -> Result<()> {
49176		#[cfg(feature = "catch_nullptr")]
49177		let ret = process_catch("glBindFragDataLocationIndexed", catch_unwind(||(self.version_3_3.bindfragdatalocationindexed)(program, colorNumber, index, name)));
49178		#[cfg(not(feature = "catch_nullptr"))]
49179		let ret = {(self.version_3_3.bindfragdatalocationindexed)(program, colorNumber, index, name); Ok(())};
49180		#[cfg(feature = "diagnose")]
49181		if let Ok(ret) = ret {
49182			return to_result("glBindFragDataLocationIndexed", ret, (self.version_3_3.geterror)());
49183		} else {
49184			return ret
49185		}
49186		#[cfg(not(feature = "diagnose"))]
49187		return ret;
49188	}
49189	#[inline(always)]
49190	fn glGetFragDataIndex(&self, program: GLuint, name: *const GLchar) -> Result<GLint> {
49191		#[cfg(feature = "catch_nullptr")]
49192		let ret = process_catch("glGetFragDataIndex", catch_unwind(||(self.version_3_3.getfragdataindex)(program, name)));
49193		#[cfg(not(feature = "catch_nullptr"))]
49194		let ret = Ok((self.version_3_3.getfragdataindex)(program, name));
49195		#[cfg(feature = "diagnose")]
49196		if let Ok(ret) = ret {
49197			return to_result("glGetFragDataIndex", ret, (self.version_3_3.geterror)());
49198		} else {
49199			return ret
49200		}
49201		#[cfg(not(feature = "diagnose"))]
49202		return ret;
49203	}
49204	#[inline(always)]
49205	fn glGenSamplers(&self, count: GLsizei, samplers: *mut GLuint) -> Result<()> {
49206		#[cfg(feature = "catch_nullptr")]
49207		let ret = process_catch("glGenSamplers", catch_unwind(||(self.version_3_3.gensamplers)(count, samplers)));
49208		#[cfg(not(feature = "catch_nullptr"))]
49209		let ret = {(self.version_3_3.gensamplers)(count, samplers); Ok(())};
49210		#[cfg(feature = "diagnose")]
49211		if let Ok(ret) = ret {
49212			return to_result("glGenSamplers", ret, (self.version_3_3.geterror)());
49213		} else {
49214			return ret
49215		}
49216		#[cfg(not(feature = "diagnose"))]
49217		return ret;
49218	}
49219	#[inline(always)]
49220	fn glDeleteSamplers(&self, count: GLsizei, samplers: *const GLuint) -> Result<()> {
49221		#[cfg(feature = "catch_nullptr")]
49222		let ret = process_catch("glDeleteSamplers", catch_unwind(||(self.version_3_3.deletesamplers)(count, samplers)));
49223		#[cfg(not(feature = "catch_nullptr"))]
49224		let ret = {(self.version_3_3.deletesamplers)(count, samplers); Ok(())};
49225		#[cfg(feature = "diagnose")]
49226		if let Ok(ret) = ret {
49227			return to_result("glDeleteSamplers", ret, (self.version_3_3.geterror)());
49228		} else {
49229			return ret
49230		}
49231		#[cfg(not(feature = "diagnose"))]
49232		return ret;
49233	}
49234	#[inline(always)]
49235	fn glIsSampler(&self, sampler: GLuint) -> Result<GLboolean> {
49236		#[cfg(feature = "catch_nullptr")]
49237		let ret = process_catch("glIsSampler", catch_unwind(||(self.version_3_3.issampler)(sampler)));
49238		#[cfg(not(feature = "catch_nullptr"))]
49239		let ret = Ok((self.version_3_3.issampler)(sampler));
49240		#[cfg(feature = "diagnose")]
49241		if let Ok(ret) = ret {
49242			return to_result("glIsSampler", ret, (self.version_3_3.geterror)());
49243		} else {
49244			return ret
49245		}
49246		#[cfg(not(feature = "diagnose"))]
49247		return ret;
49248	}
49249	#[inline(always)]
49250	fn glBindSampler(&self, unit: GLuint, sampler: GLuint) -> Result<()> {
49251		#[cfg(feature = "catch_nullptr")]
49252		let ret = process_catch("glBindSampler", catch_unwind(||(self.version_3_3.bindsampler)(unit, sampler)));
49253		#[cfg(not(feature = "catch_nullptr"))]
49254		let ret = {(self.version_3_3.bindsampler)(unit, sampler); Ok(())};
49255		#[cfg(feature = "diagnose")]
49256		if let Ok(ret) = ret {
49257			return to_result("glBindSampler", ret, (self.version_3_3.geterror)());
49258		} else {
49259			return ret
49260		}
49261		#[cfg(not(feature = "diagnose"))]
49262		return ret;
49263	}
49264	#[inline(always)]
49265	fn glSamplerParameteri(&self, sampler: GLuint, pname: GLenum, param: GLint) -> Result<()> {
49266		#[cfg(feature = "catch_nullptr")]
49267		let ret = process_catch("glSamplerParameteri", catch_unwind(||(self.version_3_3.samplerparameteri)(sampler, pname, param)));
49268		#[cfg(not(feature = "catch_nullptr"))]
49269		let ret = {(self.version_3_3.samplerparameteri)(sampler, pname, param); Ok(())};
49270		#[cfg(feature = "diagnose")]
49271		if let Ok(ret) = ret {
49272			return to_result("glSamplerParameteri", ret, (self.version_3_3.geterror)());
49273		} else {
49274			return ret
49275		}
49276		#[cfg(not(feature = "diagnose"))]
49277		return ret;
49278	}
49279	#[inline(always)]
49280	fn glSamplerParameteriv(&self, sampler: GLuint, pname: GLenum, param: *const GLint) -> Result<()> {
49281		#[cfg(feature = "catch_nullptr")]
49282		let ret = process_catch("glSamplerParameteriv", catch_unwind(||(self.version_3_3.samplerparameteriv)(sampler, pname, param)));
49283		#[cfg(not(feature = "catch_nullptr"))]
49284		let ret = {(self.version_3_3.samplerparameteriv)(sampler, pname, param); Ok(())};
49285		#[cfg(feature = "diagnose")]
49286		if let Ok(ret) = ret {
49287			return to_result("glSamplerParameteriv", ret, (self.version_3_3.geterror)());
49288		} else {
49289			return ret
49290		}
49291		#[cfg(not(feature = "diagnose"))]
49292		return ret;
49293	}
49294	#[inline(always)]
49295	fn glSamplerParameterf(&self, sampler: GLuint, pname: GLenum, param: GLfloat) -> Result<()> {
49296		#[cfg(feature = "catch_nullptr")]
49297		let ret = process_catch("glSamplerParameterf", catch_unwind(||(self.version_3_3.samplerparameterf)(sampler, pname, param)));
49298		#[cfg(not(feature = "catch_nullptr"))]
49299		let ret = {(self.version_3_3.samplerparameterf)(sampler, pname, param); Ok(())};
49300		#[cfg(feature = "diagnose")]
49301		if let Ok(ret) = ret {
49302			return to_result("glSamplerParameterf", ret, (self.version_3_3.geterror)());
49303		} else {
49304			return ret
49305		}
49306		#[cfg(not(feature = "diagnose"))]
49307		return ret;
49308	}
49309	#[inline(always)]
49310	fn glSamplerParameterfv(&self, sampler: GLuint, pname: GLenum, param: *const GLfloat) -> Result<()> {
49311		#[cfg(feature = "catch_nullptr")]
49312		let ret = process_catch("glSamplerParameterfv", catch_unwind(||(self.version_3_3.samplerparameterfv)(sampler, pname, param)));
49313		#[cfg(not(feature = "catch_nullptr"))]
49314		let ret = {(self.version_3_3.samplerparameterfv)(sampler, pname, param); Ok(())};
49315		#[cfg(feature = "diagnose")]
49316		if let Ok(ret) = ret {
49317			return to_result("glSamplerParameterfv", ret, (self.version_3_3.geterror)());
49318		} else {
49319			return ret
49320		}
49321		#[cfg(not(feature = "diagnose"))]
49322		return ret;
49323	}
49324	#[inline(always)]
49325	fn glSamplerParameterIiv(&self, sampler: GLuint, pname: GLenum, param: *const GLint) -> Result<()> {
49326		#[cfg(feature = "catch_nullptr")]
49327		let ret = process_catch("glSamplerParameterIiv", catch_unwind(||(self.version_3_3.samplerparameteriiv)(sampler, pname, param)));
49328		#[cfg(not(feature = "catch_nullptr"))]
49329		let ret = {(self.version_3_3.samplerparameteriiv)(sampler, pname, param); Ok(())};
49330		#[cfg(feature = "diagnose")]
49331		if let Ok(ret) = ret {
49332			return to_result("glSamplerParameterIiv", ret, (self.version_3_3.geterror)());
49333		} else {
49334			return ret
49335		}
49336		#[cfg(not(feature = "diagnose"))]
49337		return ret;
49338	}
49339	#[inline(always)]
49340	fn glSamplerParameterIuiv(&self, sampler: GLuint, pname: GLenum, param: *const GLuint) -> Result<()> {
49341		#[cfg(feature = "catch_nullptr")]
49342		let ret = process_catch("glSamplerParameterIuiv", catch_unwind(||(self.version_3_3.samplerparameteriuiv)(sampler, pname, param)));
49343		#[cfg(not(feature = "catch_nullptr"))]
49344		let ret = {(self.version_3_3.samplerparameteriuiv)(sampler, pname, param); Ok(())};
49345		#[cfg(feature = "diagnose")]
49346		if let Ok(ret) = ret {
49347			return to_result("glSamplerParameterIuiv", ret, (self.version_3_3.geterror)());
49348		} else {
49349			return ret
49350		}
49351		#[cfg(not(feature = "diagnose"))]
49352		return ret;
49353	}
49354	#[inline(always)]
49355	fn glGetSamplerParameteriv(&self, sampler: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
49356		#[cfg(feature = "catch_nullptr")]
49357		let ret = process_catch("glGetSamplerParameteriv", catch_unwind(||(self.version_3_3.getsamplerparameteriv)(sampler, pname, params)));
49358		#[cfg(not(feature = "catch_nullptr"))]
49359		let ret = {(self.version_3_3.getsamplerparameteriv)(sampler, pname, params); Ok(())};
49360		#[cfg(feature = "diagnose")]
49361		if let Ok(ret) = ret {
49362			return to_result("glGetSamplerParameteriv", ret, (self.version_3_3.geterror)());
49363		} else {
49364			return ret
49365		}
49366		#[cfg(not(feature = "diagnose"))]
49367		return ret;
49368	}
49369	#[inline(always)]
49370	fn glGetSamplerParameterIiv(&self, sampler: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
49371		#[cfg(feature = "catch_nullptr")]
49372		let ret = process_catch("glGetSamplerParameterIiv", catch_unwind(||(self.version_3_3.getsamplerparameteriiv)(sampler, pname, params)));
49373		#[cfg(not(feature = "catch_nullptr"))]
49374		let ret = {(self.version_3_3.getsamplerparameteriiv)(sampler, pname, params); Ok(())};
49375		#[cfg(feature = "diagnose")]
49376		if let Ok(ret) = ret {
49377			return to_result("glGetSamplerParameterIiv", ret, (self.version_3_3.geterror)());
49378		} else {
49379			return ret
49380		}
49381		#[cfg(not(feature = "diagnose"))]
49382		return ret;
49383	}
49384	#[inline(always)]
49385	fn glGetSamplerParameterfv(&self, sampler: GLuint, pname: GLenum, params: *mut GLfloat) -> Result<()> {
49386		#[cfg(feature = "catch_nullptr")]
49387		let ret = process_catch("glGetSamplerParameterfv", catch_unwind(||(self.version_3_3.getsamplerparameterfv)(sampler, pname, params)));
49388		#[cfg(not(feature = "catch_nullptr"))]
49389		let ret = {(self.version_3_3.getsamplerparameterfv)(sampler, pname, params); Ok(())};
49390		#[cfg(feature = "diagnose")]
49391		if let Ok(ret) = ret {
49392			return to_result("glGetSamplerParameterfv", ret, (self.version_3_3.geterror)());
49393		} else {
49394			return ret
49395		}
49396		#[cfg(not(feature = "diagnose"))]
49397		return ret;
49398	}
49399	#[inline(always)]
49400	fn glGetSamplerParameterIuiv(&self, sampler: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()> {
49401		#[cfg(feature = "catch_nullptr")]
49402		let ret = process_catch("glGetSamplerParameterIuiv", catch_unwind(||(self.version_3_3.getsamplerparameteriuiv)(sampler, pname, params)));
49403		#[cfg(not(feature = "catch_nullptr"))]
49404		let ret = {(self.version_3_3.getsamplerparameteriuiv)(sampler, pname, params); Ok(())};
49405		#[cfg(feature = "diagnose")]
49406		if let Ok(ret) = ret {
49407			return to_result("glGetSamplerParameterIuiv", ret, (self.version_3_3.geterror)());
49408		} else {
49409			return ret
49410		}
49411		#[cfg(not(feature = "diagnose"))]
49412		return ret;
49413	}
49414	#[inline(always)]
49415	fn glQueryCounter(&self, id: GLuint, target: GLenum) -> Result<()> {
49416		#[cfg(feature = "catch_nullptr")]
49417		let ret = process_catch("glQueryCounter", catch_unwind(||(self.version_3_3.querycounter)(id, target)));
49418		#[cfg(not(feature = "catch_nullptr"))]
49419		let ret = {(self.version_3_3.querycounter)(id, target); Ok(())};
49420		#[cfg(feature = "diagnose")]
49421		if let Ok(ret) = ret {
49422			return to_result("glQueryCounter", ret, (self.version_3_3.geterror)());
49423		} else {
49424			return ret
49425		}
49426		#[cfg(not(feature = "diagnose"))]
49427		return ret;
49428	}
49429	#[inline(always)]
49430	fn glGetQueryObjecti64v(&self, id: GLuint, pname: GLenum, params: *mut GLint64) -> Result<()> {
49431		#[cfg(feature = "catch_nullptr")]
49432		let ret = process_catch("glGetQueryObjecti64v", catch_unwind(||(self.version_3_3.getqueryobjecti64v)(id, pname, params)));
49433		#[cfg(not(feature = "catch_nullptr"))]
49434		let ret = {(self.version_3_3.getqueryobjecti64v)(id, pname, params); Ok(())};
49435		#[cfg(feature = "diagnose")]
49436		if let Ok(ret) = ret {
49437			return to_result("glGetQueryObjecti64v", ret, (self.version_3_3.geterror)());
49438		} else {
49439			return ret
49440		}
49441		#[cfg(not(feature = "diagnose"))]
49442		return ret;
49443	}
49444	#[inline(always)]
49445	fn glGetQueryObjectui64v(&self, id: GLuint, pname: GLenum, params: *mut GLuint64) -> Result<()> {
49446		#[cfg(feature = "catch_nullptr")]
49447		let ret = process_catch("glGetQueryObjectui64v", catch_unwind(||(self.version_3_3.getqueryobjectui64v)(id, pname, params)));
49448		#[cfg(not(feature = "catch_nullptr"))]
49449		let ret = {(self.version_3_3.getqueryobjectui64v)(id, pname, params); Ok(())};
49450		#[cfg(feature = "diagnose")]
49451		if let Ok(ret) = ret {
49452			return to_result("glGetQueryObjectui64v", ret, (self.version_3_3.geterror)());
49453		} else {
49454			return ret
49455		}
49456		#[cfg(not(feature = "diagnose"))]
49457		return ret;
49458	}
49459	#[inline(always)]
49460	fn glVertexAttribDivisor(&self, index: GLuint, divisor: GLuint) -> Result<()> {
49461		#[cfg(feature = "catch_nullptr")]
49462		let ret = process_catch("glVertexAttribDivisor", catch_unwind(||(self.version_3_3.vertexattribdivisor)(index, divisor)));
49463		#[cfg(not(feature = "catch_nullptr"))]
49464		let ret = {(self.version_3_3.vertexattribdivisor)(index, divisor); Ok(())};
49465		#[cfg(feature = "diagnose")]
49466		if let Ok(ret) = ret {
49467			return to_result("glVertexAttribDivisor", ret, (self.version_3_3.geterror)());
49468		} else {
49469			return ret
49470		}
49471		#[cfg(not(feature = "diagnose"))]
49472		return ret;
49473	}
49474	#[inline(always)]
49475	fn glVertexAttribP1ui(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint) -> Result<()> {
49476		#[cfg(feature = "catch_nullptr")]
49477		let ret = process_catch("glVertexAttribP1ui", catch_unwind(||(self.version_3_3.vertexattribp1ui)(index, type_, normalized, value)));
49478		#[cfg(not(feature = "catch_nullptr"))]
49479		let ret = {(self.version_3_3.vertexattribp1ui)(index, type_, normalized, value); Ok(())};
49480		#[cfg(feature = "diagnose")]
49481		if let Ok(ret) = ret {
49482			return to_result("glVertexAttribP1ui", ret, (self.version_3_3.geterror)());
49483		} else {
49484			return ret
49485		}
49486		#[cfg(not(feature = "diagnose"))]
49487		return ret;
49488	}
49489	#[inline(always)]
49490	fn glVertexAttribP1uiv(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint) -> Result<()> {
49491		#[cfg(feature = "catch_nullptr")]
49492		let ret = process_catch("glVertexAttribP1uiv", catch_unwind(||(self.version_3_3.vertexattribp1uiv)(index, type_, normalized, value)));
49493		#[cfg(not(feature = "catch_nullptr"))]
49494		let ret = {(self.version_3_3.vertexattribp1uiv)(index, type_, normalized, value); Ok(())};
49495		#[cfg(feature = "diagnose")]
49496		if let Ok(ret) = ret {
49497			return to_result("glVertexAttribP1uiv", ret, (self.version_3_3.geterror)());
49498		} else {
49499			return ret
49500		}
49501		#[cfg(not(feature = "diagnose"))]
49502		return ret;
49503	}
49504	#[inline(always)]
49505	fn glVertexAttribP2ui(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint) -> Result<()> {
49506		#[cfg(feature = "catch_nullptr")]
49507		let ret = process_catch("glVertexAttribP2ui", catch_unwind(||(self.version_3_3.vertexattribp2ui)(index, type_, normalized, value)));
49508		#[cfg(not(feature = "catch_nullptr"))]
49509		let ret = {(self.version_3_3.vertexattribp2ui)(index, type_, normalized, value); Ok(())};
49510		#[cfg(feature = "diagnose")]
49511		if let Ok(ret) = ret {
49512			return to_result("glVertexAttribP2ui", ret, (self.version_3_3.geterror)());
49513		} else {
49514			return ret
49515		}
49516		#[cfg(not(feature = "diagnose"))]
49517		return ret;
49518	}
49519	#[inline(always)]
49520	fn glVertexAttribP2uiv(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint) -> Result<()> {
49521		#[cfg(feature = "catch_nullptr")]
49522		let ret = process_catch("glVertexAttribP2uiv", catch_unwind(||(self.version_3_3.vertexattribp2uiv)(index, type_, normalized, value)));
49523		#[cfg(not(feature = "catch_nullptr"))]
49524		let ret = {(self.version_3_3.vertexattribp2uiv)(index, type_, normalized, value); Ok(())};
49525		#[cfg(feature = "diagnose")]
49526		if let Ok(ret) = ret {
49527			return to_result("glVertexAttribP2uiv", ret, (self.version_3_3.geterror)());
49528		} else {
49529			return ret
49530		}
49531		#[cfg(not(feature = "diagnose"))]
49532		return ret;
49533	}
49534	#[inline(always)]
49535	fn glVertexAttribP3ui(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint) -> Result<()> {
49536		#[cfg(feature = "catch_nullptr")]
49537		let ret = process_catch("glVertexAttribP3ui", catch_unwind(||(self.version_3_3.vertexattribp3ui)(index, type_, normalized, value)));
49538		#[cfg(not(feature = "catch_nullptr"))]
49539		let ret = {(self.version_3_3.vertexattribp3ui)(index, type_, normalized, value); Ok(())};
49540		#[cfg(feature = "diagnose")]
49541		if let Ok(ret) = ret {
49542			return to_result("glVertexAttribP3ui", ret, (self.version_3_3.geterror)());
49543		} else {
49544			return ret
49545		}
49546		#[cfg(not(feature = "diagnose"))]
49547		return ret;
49548	}
49549	#[inline(always)]
49550	fn glVertexAttribP3uiv(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint) -> Result<()> {
49551		#[cfg(feature = "catch_nullptr")]
49552		let ret = process_catch("glVertexAttribP3uiv", catch_unwind(||(self.version_3_3.vertexattribp3uiv)(index, type_, normalized, value)));
49553		#[cfg(not(feature = "catch_nullptr"))]
49554		let ret = {(self.version_3_3.vertexattribp3uiv)(index, type_, normalized, value); Ok(())};
49555		#[cfg(feature = "diagnose")]
49556		if let Ok(ret) = ret {
49557			return to_result("glVertexAttribP3uiv", ret, (self.version_3_3.geterror)());
49558		} else {
49559			return ret
49560		}
49561		#[cfg(not(feature = "diagnose"))]
49562		return ret;
49563	}
49564	#[inline(always)]
49565	fn glVertexAttribP4ui(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint) -> Result<()> {
49566		#[cfg(feature = "catch_nullptr")]
49567		let ret = process_catch("glVertexAttribP4ui", catch_unwind(||(self.version_3_3.vertexattribp4ui)(index, type_, normalized, value)));
49568		#[cfg(not(feature = "catch_nullptr"))]
49569		let ret = {(self.version_3_3.vertexattribp4ui)(index, type_, normalized, value); Ok(())};
49570		#[cfg(feature = "diagnose")]
49571		if let Ok(ret) = ret {
49572			return to_result("glVertexAttribP4ui", ret, (self.version_3_3.geterror)());
49573		} else {
49574			return ret
49575		}
49576		#[cfg(not(feature = "diagnose"))]
49577		return ret;
49578	}
49579	#[inline(always)]
49580	fn glVertexAttribP4uiv(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint) -> Result<()> {
49581		#[cfg(feature = "catch_nullptr")]
49582		let ret = process_catch("glVertexAttribP4uiv", catch_unwind(||(self.version_3_3.vertexattribp4uiv)(index, type_, normalized, value)));
49583		#[cfg(not(feature = "catch_nullptr"))]
49584		let ret = {(self.version_3_3.vertexattribp4uiv)(index, type_, normalized, value); Ok(())};
49585		#[cfg(feature = "diagnose")]
49586		if let Ok(ret) = ret {
49587			return to_result("glVertexAttribP4uiv", ret, (self.version_3_3.geterror)());
49588		} else {
49589			return ret
49590		}
49591		#[cfg(not(feature = "diagnose"))]
49592		return ret;
49593	}
49594	#[inline(always)]
49595	fn glVertexP2ui(&self, type_: GLenum, value: GLuint) -> Result<()> {
49596		#[cfg(feature = "catch_nullptr")]
49597		let ret = process_catch("glVertexP2ui", catch_unwind(||(self.version_3_3.vertexp2ui)(type_, value)));
49598		#[cfg(not(feature = "catch_nullptr"))]
49599		let ret = {(self.version_3_3.vertexp2ui)(type_, value); Ok(())};
49600		#[cfg(feature = "diagnose")]
49601		if let Ok(ret) = ret {
49602			return to_result("glVertexP2ui", ret, (self.version_3_3.geterror)());
49603		} else {
49604			return ret
49605		}
49606		#[cfg(not(feature = "diagnose"))]
49607		return ret;
49608	}
49609	#[inline(always)]
49610	fn glVertexP2uiv(&self, type_: GLenum, value: *const GLuint) -> Result<()> {
49611		#[cfg(feature = "catch_nullptr")]
49612		let ret = process_catch("glVertexP2uiv", catch_unwind(||(self.version_3_3.vertexp2uiv)(type_, value)));
49613		#[cfg(not(feature = "catch_nullptr"))]
49614		let ret = {(self.version_3_3.vertexp2uiv)(type_, value); Ok(())};
49615		#[cfg(feature = "diagnose")]
49616		if let Ok(ret) = ret {
49617			return to_result("glVertexP2uiv", ret, (self.version_3_3.geterror)());
49618		} else {
49619			return ret
49620		}
49621		#[cfg(not(feature = "diagnose"))]
49622		return ret;
49623	}
49624	#[inline(always)]
49625	fn glVertexP3ui(&self, type_: GLenum, value: GLuint) -> Result<()> {
49626		#[cfg(feature = "catch_nullptr")]
49627		let ret = process_catch("glVertexP3ui", catch_unwind(||(self.version_3_3.vertexp3ui)(type_, value)));
49628		#[cfg(not(feature = "catch_nullptr"))]
49629		let ret = {(self.version_3_3.vertexp3ui)(type_, value); Ok(())};
49630		#[cfg(feature = "diagnose")]
49631		if let Ok(ret) = ret {
49632			return to_result("glVertexP3ui", ret, (self.version_3_3.geterror)());
49633		} else {
49634			return ret
49635		}
49636		#[cfg(not(feature = "diagnose"))]
49637		return ret;
49638	}
49639	#[inline(always)]
49640	fn glVertexP3uiv(&self, type_: GLenum, value: *const GLuint) -> Result<()> {
49641		#[cfg(feature = "catch_nullptr")]
49642		let ret = process_catch("glVertexP3uiv", catch_unwind(||(self.version_3_3.vertexp3uiv)(type_, value)));
49643		#[cfg(not(feature = "catch_nullptr"))]
49644		let ret = {(self.version_3_3.vertexp3uiv)(type_, value); Ok(())};
49645		#[cfg(feature = "diagnose")]
49646		if let Ok(ret) = ret {
49647			return to_result("glVertexP3uiv", ret, (self.version_3_3.geterror)());
49648		} else {
49649			return ret
49650		}
49651		#[cfg(not(feature = "diagnose"))]
49652		return ret;
49653	}
49654	#[inline(always)]
49655	fn glVertexP4ui(&self, type_: GLenum, value: GLuint) -> Result<()> {
49656		#[cfg(feature = "catch_nullptr")]
49657		let ret = process_catch("glVertexP4ui", catch_unwind(||(self.version_3_3.vertexp4ui)(type_, value)));
49658		#[cfg(not(feature = "catch_nullptr"))]
49659		let ret = {(self.version_3_3.vertexp4ui)(type_, value); Ok(())};
49660		#[cfg(feature = "diagnose")]
49661		if let Ok(ret) = ret {
49662			return to_result("glVertexP4ui", ret, (self.version_3_3.geterror)());
49663		} else {
49664			return ret
49665		}
49666		#[cfg(not(feature = "diagnose"))]
49667		return ret;
49668	}
49669	#[inline(always)]
49670	fn glVertexP4uiv(&self, type_: GLenum, value: *const GLuint) -> Result<()> {
49671		#[cfg(feature = "catch_nullptr")]
49672		let ret = process_catch("glVertexP4uiv", catch_unwind(||(self.version_3_3.vertexp4uiv)(type_, value)));
49673		#[cfg(not(feature = "catch_nullptr"))]
49674		let ret = {(self.version_3_3.vertexp4uiv)(type_, value); Ok(())};
49675		#[cfg(feature = "diagnose")]
49676		if let Ok(ret) = ret {
49677			return to_result("glVertexP4uiv", ret, (self.version_3_3.geterror)());
49678		} else {
49679			return ret
49680		}
49681		#[cfg(not(feature = "diagnose"))]
49682		return ret;
49683	}
49684	#[inline(always)]
49685	fn glTexCoordP1ui(&self, type_: GLenum, coords: GLuint) -> Result<()> {
49686		#[cfg(feature = "catch_nullptr")]
49687		let ret = process_catch("glTexCoordP1ui", catch_unwind(||(self.version_3_3.texcoordp1ui)(type_, coords)));
49688		#[cfg(not(feature = "catch_nullptr"))]
49689		let ret = {(self.version_3_3.texcoordp1ui)(type_, coords); Ok(())};
49690		#[cfg(feature = "diagnose")]
49691		if let Ok(ret) = ret {
49692			return to_result("glTexCoordP1ui", ret, (self.version_3_3.geterror)());
49693		} else {
49694			return ret
49695		}
49696		#[cfg(not(feature = "diagnose"))]
49697		return ret;
49698	}
49699	#[inline(always)]
49700	fn glTexCoordP1uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()> {
49701		#[cfg(feature = "catch_nullptr")]
49702		let ret = process_catch("glTexCoordP1uiv", catch_unwind(||(self.version_3_3.texcoordp1uiv)(type_, coords)));
49703		#[cfg(not(feature = "catch_nullptr"))]
49704		let ret = {(self.version_3_3.texcoordp1uiv)(type_, coords); Ok(())};
49705		#[cfg(feature = "diagnose")]
49706		if let Ok(ret) = ret {
49707			return to_result("glTexCoordP1uiv", ret, (self.version_3_3.geterror)());
49708		} else {
49709			return ret
49710		}
49711		#[cfg(not(feature = "diagnose"))]
49712		return ret;
49713	}
49714	#[inline(always)]
49715	fn glTexCoordP2ui(&self, type_: GLenum, coords: GLuint) -> Result<()> {
49716		#[cfg(feature = "catch_nullptr")]
49717		let ret = process_catch("glTexCoordP2ui", catch_unwind(||(self.version_3_3.texcoordp2ui)(type_, coords)));
49718		#[cfg(not(feature = "catch_nullptr"))]
49719		let ret = {(self.version_3_3.texcoordp2ui)(type_, coords); Ok(())};
49720		#[cfg(feature = "diagnose")]
49721		if let Ok(ret) = ret {
49722			return to_result("glTexCoordP2ui", ret, (self.version_3_3.geterror)());
49723		} else {
49724			return ret
49725		}
49726		#[cfg(not(feature = "diagnose"))]
49727		return ret;
49728	}
49729	#[inline(always)]
49730	fn glTexCoordP2uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()> {
49731		#[cfg(feature = "catch_nullptr")]
49732		let ret = process_catch("glTexCoordP2uiv", catch_unwind(||(self.version_3_3.texcoordp2uiv)(type_, coords)));
49733		#[cfg(not(feature = "catch_nullptr"))]
49734		let ret = {(self.version_3_3.texcoordp2uiv)(type_, coords); Ok(())};
49735		#[cfg(feature = "diagnose")]
49736		if let Ok(ret) = ret {
49737			return to_result("glTexCoordP2uiv", ret, (self.version_3_3.geterror)());
49738		} else {
49739			return ret
49740		}
49741		#[cfg(not(feature = "diagnose"))]
49742		return ret;
49743	}
49744	#[inline(always)]
49745	fn glTexCoordP3ui(&self, type_: GLenum, coords: GLuint) -> Result<()> {
49746		#[cfg(feature = "catch_nullptr")]
49747		let ret = process_catch("glTexCoordP3ui", catch_unwind(||(self.version_3_3.texcoordp3ui)(type_, coords)));
49748		#[cfg(not(feature = "catch_nullptr"))]
49749		let ret = {(self.version_3_3.texcoordp3ui)(type_, coords); Ok(())};
49750		#[cfg(feature = "diagnose")]
49751		if let Ok(ret) = ret {
49752			return to_result("glTexCoordP3ui", ret, (self.version_3_3.geterror)());
49753		} else {
49754			return ret
49755		}
49756		#[cfg(not(feature = "diagnose"))]
49757		return ret;
49758	}
49759	#[inline(always)]
49760	fn glTexCoordP3uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()> {
49761		#[cfg(feature = "catch_nullptr")]
49762		let ret = process_catch("glTexCoordP3uiv", catch_unwind(||(self.version_3_3.texcoordp3uiv)(type_, coords)));
49763		#[cfg(not(feature = "catch_nullptr"))]
49764		let ret = {(self.version_3_3.texcoordp3uiv)(type_, coords); Ok(())};
49765		#[cfg(feature = "diagnose")]
49766		if let Ok(ret) = ret {
49767			return to_result("glTexCoordP3uiv", ret, (self.version_3_3.geterror)());
49768		} else {
49769			return ret
49770		}
49771		#[cfg(not(feature = "diagnose"))]
49772		return ret;
49773	}
49774	#[inline(always)]
49775	fn glTexCoordP4ui(&self, type_: GLenum, coords: GLuint) -> Result<()> {
49776		#[cfg(feature = "catch_nullptr")]
49777		let ret = process_catch("glTexCoordP4ui", catch_unwind(||(self.version_3_3.texcoordp4ui)(type_, coords)));
49778		#[cfg(not(feature = "catch_nullptr"))]
49779		let ret = {(self.version_3_3.texcoordp4ui)(type_, coords); Ok(())};
49780		#[cfg(feature = "diagnose")]
49781		if let Ok(ret) = ret {
49782			return to_result("glTexCoordP4ui", ret, (self.version_3_3.geterror)());
49783		} else {
49784			return ret
49785		}
49786		#[cfg(not(feature = "diagnose"))]
49787		return ret;
49788	}
49789	#[inline(always)]
49790	fn glTexCoordP4uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()> {
49791		#[cfg(feature = "catch_nullptr")]
49792		let ret = process_catch("glTexCoordP4uiv", catch_unwind(||(self.version_3_3.texcoordp4uiv)(type_, coords)));
49793		#[cfg(not(feature = "catch_nullptr"))]
49794		let ret = {(self.version_3_3.texcoordp4uiv)(type_, coords); Ok(())};
49795		#[cfg(feature = "diagnose")]
49796		if let Ok(ret) = ret {
49797			return to_result("glTexCoordP4uiv", ret, (self.version_3_3.geterror)());
49798		} else {
49799			return ret
49800		}
49801		#[cfg(not(feature = "diagnose"))]
49802		return ret;
49803	}
49804	#[inline(always)]
49805	fn glMultiTexCoordP1ui(&self, texture: GLenum, type_: GLenum, coords: GLuint) -> Result<()> {
49806		#[cfg(feature = "catch_nullptr")]
49807		let ret = process_catch("glMultiTexCoordP1ui", catch_unwind(||(self.version_3_3.multitexcoordp1ui)(texture, type_, coords)));
49808		#[cfg(not(feature = "catch_nullptr"))]
49809		let ret = {(self.version_3_3.multitexcoordp1ui)(texture, type_, coords); Ok(())};
49810		#[cfg(feature = "diagnose")]
49811		if let Ok(ret) = ret {
49812			return to_result("glMultiTexCoordP1ui", ret, (self.version_3_3.geterror)());
49813		} else {
49814			return ret
49815		}
49816		#[cfg(not(feature = "diagnose"))]
49817		return ret;
49818	}
49819	#[inline(always)]
49820	fn glMultiTexCoordP1uiv(&self, texture: GLenum, type_: GLenum, coords: *const GLuint) -> Result<()> {
49821		#[cfg(feature = "catch_nullptr")]
49822		let ret = process_catch("glMultiTexCoordP1uiv", catch_unwind(||(self.version_3_3.multitexcoordp1uiv)(texture, type_, coords)));
49823		#[cfg(not(feature = "catch_nullptr"))]
49824		let ret = {(self.version_3_3.multitexcoordp1uiv)(texture, type_, coords); Ok(())};
49825		#[cfg(feature = "diagnose")]
49826		if let Ok(ret) = ret {
49827			return to_result("glMultiTexCoordP1uiv", ret, (self.version_3_3.geterror)());
49828		} else {
49829			return ret
49830		}
49831		#[cfg(not(feature = "diagnose"))]
49832		return ret;
49833	}
49834	#[inline(always)]
49835	fn glMultiTexCoordP2ui(&self, texture: GLenum, type_: GLenum, coords: GLuint) -> Result<()> {
49836		#[cfg(feature = "catch_nullptr")]
49837		let ret = process_catch("glMultiTexCoordP2ui", catch_unwind(||(self.version_3_3.multitexcoordp2ui)(texture, type_, coords)));
49838		#[cfg(not(feature = "catch_nullptr"))]
49839		let ret = {(self.version_3_3.multitexcoordp2ui)(texture, type_, coords); Ok(())};
49840		#[cfg(feature = "diagnose")]
49841		if let Ok(ret) = ret {
49842			return to_result("glMultiTexCoordP2ui", ret, (self.version_3_3.geterror)());
49843		} else {
49844			return ret
49845		}
49846		#[cfg(not(feature = "diagnose"))]
49847		return ret;
49848	}
49849	#[inline(always)]
49850	fn glMultiTexCoordP2uiv(&self, texture: GLenum, type_: GLenum, coords: *const GLuint) -> Result<()> {
49851		#[cfg(feature = "catch_nullptr")]
49852		let ret = process_catch("glMultiTexCoordP2uiv", catch_unwind(||(self.version_3_3.multitexcoordp2uiv)(texture, type_, coords)));
49853		#[cfg(not(feature = "catch_nullptr"))]
49854		let ret = {(self.version_3_3.multitexcoordp2uiv)(texture, type_, coords); Ok(())};
49855		#[cfg(feature = "diagnose")]
49856		if let Ok(ret) = ret {
49857			return to_result("glMultiTexCoordP2uiv", ret, (self.version_3_3.geterror)());
49858		} else {
49859			return ret
49860		}
49861		#[cfg(not(feature = "diagnose"))]
49862		return ret;
49863	}
49864	#[inline(always)]
49865	fn glMultiTexCoordP3ui(&self, texture: GLenum, type_: GLenum, coords: GLuint) -> Result<()> {
49866		#[cfg(feature = "catch_nullptr")]
49867		let ret = process_catch("glMultiTexCoordP3ui", catch_unwind(||(self.version_3_3.multitexcoordp3ui)(texture, type_, coords)));
49868		#[cfg(not(feature = "catch_nullptr"))]
49869		let ret = {(self.version_3_3.multitexcoordp3ui)(texture, type_, coords); Ok(())};
49870		#[cfg(feature = "diagnose")]
49871		if let Ok(ret) = ret {
49872			return to_result("glMultiTexCoordP3ui", ret, (self.version_3_3.geterror)());
49873		} else {
49874			return ret
49875		}
49876		#[cfg(not(feature = "diagnose"))]
49877		return ret;
49878	}
49879	#[inline(always)]
49880	fn glMultiTexCoordP3uiv(&self, texture: GLenum, type_: GLenum, coords: *const GLuint) -> Result<()> {
49881		#[cfg(feature = "catch_nullptr")]
49882		let ret = process_catch("glMultiTexCoordP3uiv", catch_unwind(||(self.version_3_3.multitexcoordp3uiv)(texture, type_, coords)));
49883		#[cfg(not(feature = "catch_nullptr"))]
49884		let ret = {(self.version_3_3.multitexcoordp3uiv)(texture, type_, coords); Ok(())};
49885		#[cfg(feature = "diagnose")]
49886		if let Ok(ret) = ret {
49887			return to_result("glMultiTexCoordP3uiv", ret, (self.version_3_3.geterror)());
49888		} else {
49889			return ret
49890		}
49891		#[cfg(not(feature = "diagnose"))]
49892		return ret;
49893	}
49894	#[inline(always)]
49895	fn glMultiTexCoordP4ui(&self, texture: GLenum, type_: GLenum, coords: GLuint) -> Result<()> {
49896		#[cfg(feature = "catch_nullptr")]
49897		let ret = process_catch("glMultiTexCoordP4ui", catch_unwind(||(self.version_3_3.multitexcoordp4ui)(texture, type_, coords)));
49898		#[cfg(not(feature = "catch_nullptr"))]
49899		let ret = {(self.version_3_3.multitexcoordp4ui)(texture, type_, coords); Ok(())};
49900		#[cfg(feature = "diagnose")]
49901		if let Ok(ret) = ret {
49902			return to_result("glMultiTexCoordP4ui", ret, (self.version_3_3.geterror)());
49903		} else {
49904			return ret
49905		}
49906		#[cfg(not(feature = "diagnose"))]
49907		return ret;
49908	}
49909	#[inline(always)]
49910	fn glMultiTexCoordP4uiv(&self, texture: GLenum, type_: GLenum, coords: *const GLuint) -> Result<()> {
49911		#[cfg(feature = "catch_nullptr")]
49912		let ret = process_catch("glMultiTexCoordP4uiv", catch_unwind(||(self.version_3_3.multitexcoordp4uiv)(texture, type_, coords)));
49913		#[cfg(not(feature = "catch_nullptr"))]
49914		let ret = {(self.version_3_3.multitexcoordp4uiv)(texture, type_, coords); Ok(())};
49915		#[cfg(feature = "diagnose")]
49916		if let Ok(ret) = ret {
49917			return to_result("glMultiTexCoordP4uiv", ret, (self.version_3_3.geterror)());
49918		} else {
49919			return ret
49920		}
49921		#[cfg(not(feature = "diagnose"))]
49922		return ret;
49923	}
49924	#[inline(always)]
49925	fn glNormalP3ui(&self, type_: GLenum, coords: GLuint) -> Result<()> {
49926		#[cfg(feature = "catch_nullptr")]
49927		let ret = process_catch("glNormalP3ui", catch_unwind(||(self.version_3_3.normalp3ui)(type_, coords)));
49928		#[cfg(not(feature = "catch_nullptr"))]
49929		let ret = {(self.version_3_3.normalp3ui)(type_, coords); Ok(())};
49930		#[cfg(feature = "diagnose")]
49931		if let Ok(ret) = ret {
49932			return to_result("glNormalP3ui", ret, (self.version_3_3.geterror)());
49933		} else {
49934			return ret
49935		}
49936		#[cfg(not(feature = "diagnose"))]
49937		return ret;
49938	}
49939	#[inline(always)]
49940	fn glNormalP3uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()> {
49941		#[cfg(feature = "catch_nullptr")]
49942		let ret = process_catch("glNormalP3uiv", catch_unwind(||(self.version_3_3.normalp3uiv)(type_, coords)));
49943		#[cfg(not(feature = "catch_nullptr"))]
49944		let ret = {(self.version_3_3.normalp3uiv)(type_, coords); Ok(())};
49945		#[cfg(feature = "diagnose")]
49946		if let Ok(ret) = ret {
49947			return to_result("glNormalP3uiv", ret, (self.version_3_3.geterror)());
49948		} else {
49949			return ret
49950		}
49951		#[cfg(not(feature = "diagnose"))]
49952		return ret;
49953	}
49954	#[inline(always)]
49955	fn glColorP3ui(&self, type_: GLenum, color: GLuint) -> Result<()> {
49956		#[cfg(feature = "catch_nullptr")]
49957		let ret = process_catch("glColorP3ui", catch_unwind(||(self.version_3_3.colorp3ui)(type_, color)));
49958		#[cfg(not(feature = "catch_nullptr"))]
49959		let ret = {(self.version_3_3.colorp3ui)(type_, color); Ok(())};
49960		#[cfg(feature = "diagnose")]
49961		if let Ok(ret) = ret {
49962			return to_result("glColorP3ui", ret, (self.version_3_3.geterror)());
49963		} else {
49964			return ret
49965		}
49966		#[cfg(not(feature = "diagnose"))]
49967		return ret;
49968	}
49969	#[inline(always)]
49970	fn glColorP3uiv(&self, type_: GLenum, color: *const GLuint) -> Result<()> {
49971		#[cfg(feature = "catch_nullptr")]
49972		let ret = process_catch("glColorP3uiv", catch_unwind(||(self.version_3_3.colorp3uiv)(type_, color)));
49973		#[cfg(not(feature = "catch_nullptr"))]
49974		let ret = {(self.version_3_3.colorp3uiv)(type_, color); Ok(())};
49975		#[cfg(feature = "diagnose")]
49976		if let Ok(ret) = ret {
49977			return to_result("glColorP3uiv", ret, (self.version_3_3.geterror)());
49978		} else {
49979			return ret
49980		}
49981		#[cfg(not(feature = "diagnose"))]
49982		return ret;
49983	}
49984	#[inline(always)]
49985	fn glColorP4ui(&self, type_: GLenum, color: GLuint) -> Result<()> {
49986		#[cfg(feature = "catch_nullptr")]
49987		let ret = process_catch("glColorP4ui", catch_unwind(||(self.version_3_3.colorp4ui)(type_, color)));
49988		#[cfg(not(feature = "catch_nullptr"))]
49989		let ret = {(self.version_3_3.colorp4ui)(type_, color); Ok(())};
49990		#[cfg(feature = "diagnose")]
49991		if let Ok(ret) = ret {
49992			return to_result("glColorP4ui", ret, (self.version_3_3.geterror)());
49993		} else {
49994			return ret
49995		}
49996		#[cfg(not(feature = "diagnose"))]
49997		return ret;
49998	}
49999	#[inline(always)]
50000	fn glColorP4uiv(&self, type_: GLenum, color: *const GLuint) -> Result<()> {
50001		#[cfg(feature = "catch_nullptr")]
50002		let ret = process_catch("glColorP4uiv", catch_unwind(||(self.version_3_3.colorp4uiv)(type_, color)));
50003		#[cfg(not(feature = "catch_nullptr"))]
50004		let ret = {(self.version_3_3.colorp4uiv)(type_, color); Ok(())};
50005		#[cfg(feature = "diagnose")]
50006		if let Ok(ret) = ret {
50007			return to_result("glColorP4uiv", ret, (self.version_3_3.geterror)());
50008		} else {
50009			return ret
50010		}
50011		#[cfg(not(feature = "diagnose"))]
50012		return ret;
50013	}
50014	#[inline(always)]
50015	fn glSecondaryColorP3ui(&self, type_: GLenum, color: GLuint) -> Result<()> {
50016		#[cfg(feature = "catch_nullptr")]
50017		let ret = process_catch("glSecondaryColorP3ui", catch_unwind(||(self.version_3_3.secondarycolorp3ui)(type_, color)));
50018		#[cfg(not(feature = "catch_nullptr"))]
50019		let ret = {(self.version_3_3.secondarycolorp3ui)(type_, color); Ok(())};
50020		#[cfg(feature = "diagnose")]
50021		if let Ok(ret) = ret {
50022			return to_result("glSecondaryColorP3ui", ret, (self.version_3_3.geterror)());
50023		} else {
50024			return ret
50025		}
50026		#[cfg(not(feature = "diagnose"))]
50027		return ret;
50028	}
50029	#[inline(always)]
50030	fn glSecondaryColorP3uiv(&self, type_: GLenum, color: *const GLuint) -> Result<()> {
50031		#[cfg(feature = "catch_nullptr")]
50032		let ret = process_catch("glSecondaryColorP3uiv", catch_unwind(||(self.version_3_3.secondarycolorp3uiv)(type_, color)));
50033		#[cfg(not(feature = "catch_nullptr"))]
50034		let ret = {(self.version_3_3.secondarycolorp3uiv)(type_, color); Ok(())};
50035		#[cfg(feature = "diagnose")]
50036		if let Ok(ret) = ret {
50037			return to_result("glSecondaryColorP3uiv", ret, (self.version_3_3.geterror)());
50038		} else {
50039			return ret
50040		}
50041		#[cfg(not(feature = "diagnose"))]
50042		return ret;
50043	}
50044}
50045
50046impl GL_4_0_g for GLCore {
50047	#[inline(always)]
50048	fn glMinSampleShading(&self, value: GLfloat) -> Result<()> {
50049		#[cfg(feature = "catch_nullptr")]
50050		let ret = process_catch("glMinSampleShading", catch_unwind(||(self.version_4_0.minsampleshading)(value)));
50051		#[cfg(not(feature = "catch_nullptr"))]
50052		let ret = {(self.version_4_0.minsampleshading)(value); Ok(())};
50053		#[cfg(feature = "diagnose")]
50054		if let Ok(ret) = ret {
50055			return to_result("glMinSampleShading", ret, (self.version_4_0.geterror)());
50056		} else {
50057			return ret
50058		}
50059		#[cfg(not(feature = "diagnose"))]
50060		return ret;
50061	}
50062	#[inline(always)]
50063	fn glBlendEquationi(&self, buf: GLuint, mode: GLenum) -> Result<()> {
50064		#[cfg(feature = "catch_nullptr")]
50065		let ret = process_catch("glBlendEquationi", catch_unwind(||(self.version_4_0.blendequationi)(buf, mode)));
50066		#[cfg(not(feature = "catch_nullptr"))]
50067		let ret = {(self.version_4_0.blendequationi)(buf, mode); Ok(())};
50068		#[cfg(feature = "diagnose")]
50069		if let Ok(ret) = ret {
50070			return to_result("glBlendEquationi", ret, (self.version_4_0.geterror)());
50071		} else {
50072			return ret
50073		}
50074		#[cfg(not(feature = "diagnose"))]
50075		return ret;
50076	}
50077	#[inline(always)]
50078	fn glBlendEquationSeparatei(&self, buf: GLuint, modeRGB: GLenum, modeAlpha: GLenum) -> Result<()> {
50079		#[cfg(feature = "catch_nullptr")]
50080		let ret = process_catch("glBlendEquationSeparatei", catch_unwind(||(self.version_4_0.blendequationseparatei)(buf, modeRGB, modeAlpha)));
50081		#[cfg(not(feature = "catch_nullptr"))]
50082		let ret = {(self.version_4_0.blendequationseparatei)(buf, modeRGB, modeAlpha); Ok(())};
50083		#[cfg(feature = "diagnose")]
50084		if let Ok(ret) = ret {
50085			return to_result("glBlendEquationSeparatei", ret, (self.version_4_0.geterror)());
50086		} else {
50087			return ret
50088		}
50089		#[cfg(not(feature = "diagnose"))]
50090		return ret;
50091	}
50092	#[inline(always)]
50093	fn glBlendFunci(&self, buf: GLuint, src: GLenum, dst: GLenum) -> Result<()> {
50094		#[cfg(feature = "catch_nullptr")]
50095		let ret = process_catch("glBlendFunci", catch_unwind(||(self.version_4_0.blendfunci)(buf, src, dst)));
50096		#[cfg(not(feature = "catch_nullptr"))]
50097		let ret = {(self.version_4_0.blendfunci)(buf, src, dst); Ok(())};
50098		#[cfg(feature = "diagnose")]
50099		if let Ok(ret) = ret {
50100			return to_result("glBlendFunci", ret, (self.version_4_0.geterror)());
50101		} else {
50102			return ret
50103		}
50104		#[cfg(not(feature = "diagnose"))]
50105		return ret;
50106	}
50107	#[inline(always)]
50108	fn glBlendFuncSeparatei(&self, buf: GLuint, srcRGB: GLenum, dstRGB: GLenum, srcAlpha: GLenum, dstAlpha: GLenum) -> Result<()> {
50109		#[cfg(feature = "catch_nullptr")]
50110		let ret = process_catch("glBlendFuncSeparatei", catch_unwind(||(self.version_4_0.blendfuncseparatei)(buf, srcRGB, dstRGB, srcAlpha, dstAlpha)));
50111		#[cfg(not(feature = "catch_nullptr"))]
50112		let ret = {(self.version_4_0.blendfuncseparatei)(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); Ok(())};
50113		#[cfg(feature = "diagnose")]
50114		if let Ok(ret) = ret {
50115			return to_result("glBlendFuncSeparatei", ret, (self.version_4_0.geterror)());
50116		} else {
50117			return ret
50118		}
50119		#[cfg(not(feature = "diagnose"))]
50120		return ret;
50121	}
50122	#[inline(always)]
50123	fn glDrawArraysIndirect(&self, mode: GLenum, indirect: *const c_void) -> Result<()> {
50124		#[cfg(feature = "catch_nullptr")]
50125		let ret = process_catch("glDrawArraysIndirect", catch_unwind(||(self.version_4_0.drawarraysindirect)(mode, indirect)));
50126		#[cfg(not(feature = "catch_nullptr"))]
50127		let ret = {(self.version_4_0.drawarraysindirect)(mode, indirect); Ok(())};
50128		#[cfg(feature = "diagnose")]
50129		if let Ok(ret) = ret {
50130			return to_result("glDrawArraysIndirect", ret, (self.version_4_0.geterror)());
50131		} else {
50132			return ret
50133		}
50134		#[cfg(not(feature = "diagnose"))]
50135		return ret;
50136	}
50137	#[inline(always)]
50138	fn glDrawElementsIndirect(&self, mode: GLenum, type_: GLenum, indirect: *const c_void) -> Result<()> {
50139		#[cfg(feature = "catch_nullptr")]
50140		let ret = process_catch("glDrawElementsIndirect", catch_unwind(||(self.version_4_0.drawelementsindirect)(mode, type_, indirect)));
50141		#[cfg(not(feature = "catch_nullptr"))]
50142		let ret = {(self.version_4_0.drawelementsindirect)(mode, type_, indirect); Ok(())};
50143		#[cfg(feature = "diagnose")]
50144		if let Ok(ret) = ret {
50145			return to_result("glDrawElementsIndirect", ret, (self.version_4_0.geterror)());
50146		} else {
50147			return ret
50148		}
50149		#[cfg(not(feature = "diagnose"))]
50150		return ret;
50151	}
50152	#[inline(always)]
50153	fn glUniform1d(&self, location: GLint, x: GLdouble) -> Result<()> {
50154		#[cfg(feature = "catch_nullptr")]
50155		let ret = process_catch("glUniform1d", catch_unwind(||(self.version_4_0.uniform1d)(location, x)));
50156		#[cfg(not(feature = "catch_nullptr"))]
50157		let ret = {(self.version_4_0.uniform1d)(location, x); Ok(())};
50158		#[cfg(feature = "diagnose")]
50159		if let Ok(ret) = ret {
50160			return to_result("glUniform1d", ret, (self.version_4_0.geterror)());
50161		} else {
50162			return ret
50163		}
50164		#[cfg(not(feature = "diagnose"))]
50165		return ret;
50166	}
50167	#[inline(always)]
50168	fn glUniform2d(&self, location: GLint, x: GLdouble, y: GLdouble) -> Result<()> {
50169		#[cfg(feature = "catch_nullptr")]
50170		let ret = process_catch("glUniform2d", catch_unwind(||(self.version_4_0.uniform2d)(location, x, y)));
50171		#[cfg(not(feature = "catch_nullptr"))]
50172		let ret = {(self.version_4_0.uniform2d)(location, x, y); Ok(())};
50173		#[cfg(feature = "diagnose")]
50174		if let Ok(ret) = ret {
50175			return to_result("glUniform2d", ret, (self.version_4_0.geterror)());
50176		} else {
50177			return ret
50178		}
50179		#[cfg(not(feature = "diagnose"))]
50180		return ret;
50181	}
50182	#[inline(always)]
50183	fn glUniform3d(&self, location: GLint, x: GLdouble, y: GLdouble, z: GLdouble) -> Result<()> {
50184		#[cfg(feature = "catch_nullptr")]
50185		let ret = process_catch("glUniform3d", catch_unwind(||(self.version_4_0.uniform3d)(location, x, y, z)));
50186		#[cfg(not(feature = "catch_nullptr"))]
50187		let ret = {(self.version_4_0.uniform3d)(location, x, y, z); Ok(())};
50188		#[cfg(feature = "diagnose")]
50189		if let Ok(ret) = ret {
50190			return to_result("glUniform3d", ret, (self.version_4_0.geterror)());
50191		} else {
50192			return ret
50193		}
50194		#[cfg(not(feature = "diagnose"))]
50195		return ret;
50196	}
50197	#[inline(always)]
50198	fn glUniform4d(&self, location: GLint, x: GLdouble, y: GLdouble, z: GLdouble, w: GLdouble) -> Result<()> {
50199		#[cfg(feature = "catch_nullptr")]
50200		let ret = process_catch("glUniform4d", catch_unwind(||(self.version_4_0.uniform4d)(location, x, y, z, w)));
50201		#[cfg(not(feature = "catch_nullptr"))]
50202		let ret = {(self.version_4_0.uniform4d)(location, x, y, z, w); Ok(())};
50203		#[cfg(feature = "diagnose")]
50204		if let Ok(ret) = ret {
50205			return to_result("glUniform4d", ret, (self.version_4_0.geterror)());
50206		} else {
50207			return ret
50208		}
50209		#[cfg(not(feature = "diagnose"))]
50210		return ret;
50211	}
50212	#[inline(always)]
50213	fn glUniform1dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()> {
50214		#[cfg(feature = "catch_nullptr")]
50215		let ret = process_catch("glUniform1dv", catch_unwind(||(self.version_4_0.uniform1dv)(location, count, value)));
50216		#[cfg(not(feature = "catch_nullptr"))]
50217		let ret = {(self.version_4_0.uniform1dv)(location, count, value); Ok(())};
50218		#[cfg(feature = "diagnose")]
50219		if let Ok(ret) = ret {
50220			return to_result("glUniform1dv", ret, (self.version_4_0.geterror)());
50221		} else {
50222			return ret
50223		}
50224		#[cfg(not(feature = "diagnose"))]
50225		return ret;
50226	}
50227	#[inline(always)]
50228	fn glUniform2dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()> {
50229		#[cfg(feature = "catch_nullptr")]
50230		let ret = process_catch("glUniform2dv", catch_unwind(||(self.version_4_0.uniform2dv)(location, count, value)));
50231		#[cfg(not(feature = "catch_nullptr"))]
50232		let ret = {(self.version_4_0.uniform2dv)(location, count, value); Ok(())};
50233		#[cfg(feature = "diagnose")]
50234		if let Ok(ret) = ret {
50235			return to_result("glUniform2dv", ret, (self.version_4_0.geterror)());
50236		} else {
50237			return ret
50238		}
50239		#[cfg(not(feature = "diagnose"))]
50240		return ret;
50241	}
50242	#[inline(always)]
50243	fn glUniform3dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()> {
50244		#[cfg(feature = "catch_nullptr")]
50245		let ret = process_catch("glUniform3dv", catch_unwind(||(self.version_4_0.uniform3dv)(location, count, value)));
50246		#[cfg(not(feature = "catch_nullptr"))]
50247		let ret = {(self.version_4_0.uniform3dv)(location, count, value); Ok(())};
50248		#[cfg(feature = "diagnose")]
50249		if let Ok(ret) = ret {
50250			return to_result("glUniform3dv", ret, (self.version_4_0.geterror)());
50251		} else {
50252			return ret
50253		}
50254		#[cfg(not(feature = "diagnose"))]
50255		return ret;
50256	}
50257	#[inline(always)]
50258	fn glUniform4dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()> {
50259		#[cfg(feature = "catch_nullptr")]
50260		let ret = process_catch("glUniform4dv", catch_unwind(||(self.version_4_0.uniform4dv)(location, count, value)));
50261		#[cfg(not(feature = "catch_nullptr"))]
50262		let ret = {(self.version_4_0.uniform4dv)(location, count, value); Ok(())};
50263		#[cfg(feature = "diagnose")]
50264		if let Ok(ret) = ret {
50265			return to_result("glUniform4dv", ret, (self.version_4_0.geterror)());
50266		} else {
50267			return ret
50268		}
50269		#[cfg(not(feature = "diagnose"))]
50270		return ret;
50271	}
50272	#[inline(always)]
50273	fn glUniformMatrix2dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
50274		#[cfg(feature = "catch_nullptr")]
50275		let ret = process_catch("glUniformMatrix2dv", catch_unwind(||(self.version_4_0.uniformmatrix2dv)(location, count, transpose, value)));
50276		#[cfg(not(feature = "catch_nullptr"))]
50277		let ret = {(self.version_4_0.uniformmatrix2dv)(location, count, transpose, value); Ok(())};
50278		#[cfg(feature = "diagnose")]
50279		if let Ok(ret) = ret {
50280			return to_result("glUniformMatrix2dv", ret, (self.version_4_0.geterror)());
50281		} else {
50282			return ret
50283		}
50284		#[cfg(not(feature = "diagnose"))]
50285		return ret;
50286	}
50287	#[inline(always)]
50288	fn glUniformMatrix3dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
50289		#[cfg(feature = "catch_nullptr")]
50290		let ret = process_catch("glUniformMatrix3dv", catch_unwind(||(self.version_4_0.uniformmatrix3dv)(location, count, transpose, value)));
50291		#[cfg(not(feature = "catch_nullptr"))]
50292		let ret = {(self.version_4_0.uniformmatrix3dv)(location, count, transpose, value); Ok(())};
50293		#[cfg(feature = "diagnose")]
50294		if let Ok(ret) = ret {
50295			return to_result("glUniformMatrix3dv", ret, (self.version_4_0.geterror)());
50296		} else {
50297			return ret
50298		}
50299		#[cfg(not(feature = "diagnose"))]
50300		return ret;
50301	}
50302	#[inline(always)]
50303	fn glUniformMatrix4dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
50304		#[cfg(feature = "catch_nullptr")]
50305		let ret = process_catch("glUniformMatrix4dv", catch_unwind(||(self.version_4_0.uniformmatrix4dv)(location, count, transpose, value)));
50306		#[cfg(not(feature = "catch_nullptr"))]
50307		let ret = {(self.version_4_0.uniformmatrix4dv)(location, count, transpose, value); Ok(())};
50308		#[cfg(feature = "diagnose")]
50309		if let Ok(ret) = ret {
50310			return to_result("glUniformMatrix4dv", ret, (self.version_4_0.geterror)());
50311		} else {
50312			return ret
50313		}
50314		#[cfg(not(feature = "diagnose"))]
50315		return ret;
50316	}
50317	#[inline(always)]
50318	fn glUniformMatrix2x3dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
50319		#[cfg(feature = "catch_nullptr")]
50320		let ret = process_catch("glUniformMatrix2x3dv", catch_unwind(||(self.version_4_0.uniformmatrix2x3dv)(location, count, transpose, value)));
50321		#[cfg(not(feature = "catch_nullptr"))]
50322		let ret = {(self.version_4_0.uniformmatrix2x3dv)(location, count, transpose, value); Ok(())};
50323		#[cfg(feature = "diagnose")]
50324		if let Ok(ret) = ret {
50325			return to_result("glUniformMatrix2x3dv", ret, (self.version_4_0.geterror)());
50326		} else {
50327			return ret
50328		}
50329		#[cfg(not(feature = "diagnose"))]
50330		return ret;
50331	}
50332	#[inline(always)]
50333	fn glUniformMatrix2x4dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
50334		#[cfg(feature = "catch_nullptr")]
50335		let ret = process_catch("glUniformMatrix2x4dv", catch_unwind(||(self.version_4_0.uniformmatrix2x4dv)(location, count, transpose, value)));
50336		#[cfg(not(feature = "catch_nullptr"))]
50337		let ret = {(self.version_4_0.uniformmatrix2x4dv)(location, count, transpose, value); Ok(())};
50338		#[cfg(feature = "diagnose")]
50339		if let Ok(ret) = ret {
50340			return to_result("glUniformMatrix2x4dv", ret, (self.version_4_0.geterror)());
50341		} else {
50342			return ret
50343		}
50344		#[cfg(not(feature = "diagnose"))]
50345		return ret;
50346	}
50347	#[inline(always)]
50348	fn glUniformMatrix3x2dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
50349		#[cfg(feature = "catch_nullptr")]
50350		let ret = process_catch("glUniformMatrix3x2dv", catch_unwind(||(self.version_4_0.uniformmatrix3x2dv)(location, count, transpose, value)));
50351		#[cfg(not(feature = "catch_nullptr"))]
50352		let ret = {(self.version_4_0.uniformmatrix3x2dv)(location, count, transpose, value); Ok(())};
50353		#[cfg(feature = "diagnose")]
50354		if let Ok(ret) = ret {
50355			return to_result("glUniformMatrix3x2dv", ret, (self.version_4_0.geterror)());
50356		} else {
50357			return ret
50358		}
50359		#[cfg(not(feature = "diagnose"))]
50360		return ret;
50361	}
50362	#[inline(always)]
50363	fn glUniformMatrix3x4dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
50364		#[cfg(feature = "catch_nullptr")]
50365		let ret = process_catch("glUniformMatrix3x4dv", catch_unwind(||(self.version_4_0.uniformmatrix3x4dv)(location, count, transpose, value)));
50366		#[cfg(not(feature = "catch_nullptr"))]
50367		let ret = {(self.version_4_0.uniformmatrix3x4dv)(location, count, transpose, value); Ok(())};
50368		#[cfg(feature = "diagnose")]
50369		if let Ok(ret) = ret {
50370			return to_result("glUniformMatrix3x4dv", ret, (self.version_4_0.geterror)());
50371		} else {
50372			return ret
50373		}
50374		#[cfg(not(feature = "diagnose"))]
50375		return ret;
50376	}
50377	#[inline(always)]
50378	fn glUniformMatrix4x2dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
50379		#[cfg(feature = "catch_nullptr")]
50380		let ret = process_catch("glUniformMatrix4x2dv", catch_unwind(||(self.version_4_0.uniformmatrix4x2dv)(location, count, transpose, value)));
50381		#[cfg(not(feature = "catch_nullptr"))]
50382		let ret = {(self.version_4_0.uniformmatrix4x2dv)(location, count, transpose, value); Ok(())};
50383		#[cfg(feature = "diagnose")]
50384		if let Ok(ret) = ret {
50385			return to_result("glUniformMatrix4x2dv", ret, (self.version_4_0.geterror)());
50386		} else {
50387			return ret
50388		}
50389		#[cfg(not(feature = "diagnose"))]
50390		return ret;
50391	}
50392	#[inline(always)]
50393	fn glUniformMatrix4x3dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
50394		#[cfg(feature = "catch_nullptr")]
50395		let ret = process_catch("glUniformMatrix4x3dv", catch_unwind(||(self.version_4_0.uniformmatrix4x3dv)(location, count, transpose, value)));
50396		#[cfg(not(feature = "catch_nullptr"))]
50397		let ret = {(self.version_4_0.uniformmatrix4x3dv)(location, count, transpose, value); Ok(())};
50398		#[cfg(feature = "diagnose")]
50399		if let Ok(ret) = ret {
50400			return to_result("glUniformMatrix4x3dv", ret, (self.version_4_0.geterror)());
50401		} else {
50402			return ret
50403		}
50404		#[cfg(not(feature = "diagnose"))]
50405		return ret;
50406	}
50407	#[inline(always)]
50408	fn glGetUniformdv(&self, program: GLuint, location: GLint, params: *mut GLdouble) -> Result<()> {
50409		#[cfg(feature = "catch_nullptr")]
50410		let ret = process_catch("glGetUniformdv", catch_unwind(||(self.version_4_0.getuniformdv)(program, location, params)));
50411		#[cfg(not(feature = "catch_nullptr"))]
50412		let ret = {(self.version_4_0.getuniformdv)(program, location, params); Ok(())};
50413		#[cfg(feature = "diagnose")]
50414		if let Ok(ret) = ret {
50415			return to_result("glGetUniformdv", ret, (self.version_4_0.geterror)());
50416		} else {
50417			return ret
50418		}
50419		#[cfg(not(feature = "diagnose"))]
50420		return ret;
50421	}
50422	#[inline(always)]
50423	fn glGetSubroutineUniformLocation(&self, program: GLuint, shadertype: GLenum, name: *const GLchar) -> Result<GLint> {
50424		#[cfg(feature = "catch_nullptr")]
50425		let ret = process_catch("glGetSubroutineUniformLocation", catch_unwind(||(self.version_4_0.getsubroutineuniformlocation)(program, shadertype, name)));
50426		#[cfg(not(feature = "catch_nullptr"))]
50427		let ret = Ok((self.version_4_0.getsubroutineuniformlocation)(program, shadertype, name));
50428		#[cfg(feature = "diagnose")]
50429		if let Ok(ret) = ret {
50430			return to_result("glGetSubroutineUniformLocation", ret, (self.version_4_0.geterror)());
50431		} else {
50432			return ret
50433		}
50434		#[cfg(not(feature = "diagnose"))]
50435		return ret;
50436	}
50437	#[inline(always)]
50438	fn glGetSubroutineIndex(&self, program: GLuint, shadertype: GLenum, name: *const GLchar) -> Result<GLuint> {
50439		#[cfg(feature = "catch_nullptr")]
50440		let ret = process_catch("glGetSubroutineIndex", catch_unwind(||(self.version_4_0.getsubroutineindex)(program, shadertype, name)));
50441		#[cfg(not(feature = "catch_nullptr"))]
50442		let ret = Ok((self.version_4_0.getsubroutineindex)(program, shadertype, name));
50443		#[cfg(feature = "diagnose")]
50444		if let Ok(ret) = ret {
50445			return to_result("glGetSubroutineIndex", ret, (self.version_4_0.geterror)());
50446		} else {
50447			return ret
50448		}
50449		#[cfg(not(feature = "diagnose"))]
50450		return ret;
50451	}
50452	#[inline(always)]
50453	fn glGetActiveSubroutineUniformiv(&self, program: GLuint, shadertype: GLenum, index: GLuint, pname: GLenum, values: *mut GLint) -> Result<()> {
50454		#[cfg(feature = "catch_nullptr")]
50455		let ret = process_catch("glGetActiveSubroutineUniformiv", catch_unwind(||(self.version_4_0.getactivesubroutineuniformiv)(program, shadertype, index, pname, values)));
50456		#[cfg(not(feature = "catch_nullptr"))]
50457		let ret = {(self.version_4_0.getactivesubroutineuniformiv)(program, shadertype, index, pname, values); Ok(())};
50458		#[cfg(feature = "diagnose")]
50459		if let Ok(ret) = ret {
50460			return to_result("glGetActiveSubroutineUniformiv", ret, (self.version_4_0.geterror)());
50461		} else {
50462			return ret
50463		}
50464		#[cfg(not(feature = "diagnose"))]
50465		return ret;
50466	}
50467	#[inline(always)]
50468	fn glGetActiveSubroutineUniformName(&self, program: GLuint, shadertype: GLenum, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, name: *mut GLchar) -> Result<()> {
50469		#[cfg(feature = "catch_nullptr")]
50470		let ret = process_catch("glGetActiveSubroutineUniformName", catch_unwind(||(self.version_4_0.getactivesubroutineuniformname)(program, shadertype, index, bufSize, length, name)));
50471		#[cfg(not(feature = "catch_nullptr"))]
50472		let ret = {(self.version_4_0.getactivesubroutineuniformname)(program, shadertype, index, bufSize, length, name); Ok(())};
50473		#[cfg(feature = "diagnose")]
50474		if let Ok(ret) = ret {
50475			return to_result("glGetActiveSubroutineUniformName", ret, (self.version_4_0.geterror)());
50476		} else {
50477			return ret
50478		}
50479		#[cfg(not(feature = "diagnose"))]
50480		return ret;
50481	}
50482	#[inline(always)]
50483	fn glGetActiveSubroutineName(&self, program: GLuint, shadertype: GLenum, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, name: *mut GLchar) -> Result<()> {
50484		#[cfg(feature = "catch_nullptr")]
50485		let ret = process_catch("glGetActiveSubroutineName", catch_unwind(||(self.version_4_0.getactivesubroutinename)(program, shadertype, index, bufSize, length, name)));
50486		#[cfg(not(feature = "catch_nullptr"))]
50487		let ret = {(self.version_4_0.getactivesubroutinename)(program, shadertype, index, bufSize, length, name); Ok(())};
50488		#[cfg(feature = "diagnose")]
50489		if let Ok(ret) = ret {
50490			return to_result("glGetActiveSubroutineName", ret, (self.version_4_0.geterror)());
50491		} else {
50492			return ret
50493		}
50494		#[cfg(not(feature = "diagnose"))]
50495		return ret;
50496	}
50497	#[inline(always)]
50498	fn glUniformSubroutinesuiv(&self, shadertype: GLenum, count: GLsizei, indices: *const GLuint) -> Result<()> {
50499		#[cfg(feature = "catch_nullptr")]
50500		let ret = process_catch("glUniformSubroutinesuiv", catch_unwind(||(self.version_4_0.uniformsubroutinesuiv)(shadertype, count, indices)));
50501		#[cfg(not(feature = "catch_nullptr"))]
50502		let ret = {(self.version_4_0.uniformsubroutinesuiv)(shadertype, count, indices); Ok(())};
50503		#[cfg(feature = "diagnose")]
50504		if let Ok(ret) = ret {
50505			return to_result("glUniformSubroutinesuiv", ret, (self.version_4_0.geterror)());
50506		} else {
50507			return ret
50508		}
50509		#[cfg(not(feature = "diagnose"))]
50510		return ret;
50511	}
50512	#[inline(always)]
50513	fn glGetUniformSubroutineuiv(&self, shadertype: GLenum, location: GLint, params: *mut GLuint) -> Result<()> {
50514		#[cfg(feature = "catch_nullptr")]
50515		let ret = process_catch("glGetUniformSubroutineuiv", catch_unwind(||(self.version_4_0.getuniformsubroutineuiv)(shadertype, location, params)));
50516		#[cfg(not(feature = "catch_nullptr"))]
50517		let ret = {(self.version_4_0.getuniformsubroutineuiv)(shadertype, location, params); Ok(())};
50518		#[cfg(feature = "diagnose")]
50519		if let Ok(ret) = ret {
50520			return to_result("glGetUniformSubroutineuiv", ret, (self.version_4_0.geterror)());
50521		} else {
50522			return ret
50523		}
50524		#[cfg(not(feature = "diagnose"))]
50525		return ret;
50526	}
50527	#[inline(always)]
50528	fn glGetProgramStageiv(&self, program: GLuint, shadertype: GLenum, pname: GLenum, values: *mut GLint) -> Result<()> {
50529		#[cfg(feature = "catch_nullptr")]
50530		let ret = process_catch("glGetProgramStageiv", catch_unwind(||(self.version_4_0.getprogramstageiv)(program, shadertype, pname, values)));
50531		#[cfg(not(feature = "catch_nullptr"))]
50532		let ret = {(self.version_4_0.getprogramstageiv)(program, shadertype, pname, values); Ok(())};
50533		#[cfg(feature = "diagnose")]
50534		if let Ok(ret) = ret {
50535			return to_result("glGetProgramStageiv", ret, (self.version_4_0.geterror)());
50536		} else {
50537			return ret
50538		}
50539		#[cfg(not(feature = "diagnose"))]
50540		return ret;
50541	}
50542	#[inline(always)]
50543	fn glPatchParameteri(&self, pname: GLenum, value: GLint) -> Result<()> {
50544		#[cfg(feature = "catch_nullptr")]
50545		let ret = process_catch("glPatchParameteri", catch_unwind(||(self.version_4_0.patchparameteri)(pname, value)));
50546		#[cfg(not(feature = "catch_nullptr"))]
50547		let ret = {(self.version_4_0.patchparameteri)(pname, value); Ok(())};
50548		#[cfg(feature = "diagnose")]
50549		if let Ok(ret) = ret {
50550			return to_result("glPatchParameteri", ret, (self.version_4_0.geterror)());
50551		} else {
50552			return ret
50553		}
50554		#[cfg(not(feature = "diagnose"))]
50555		return ret;
50556	}
50557	#[inline(always)]
50558	fn glPatchParameterfv(&self, pname: GLenum, values: *const GLfloat) -> Result<()> {
50559		#[cfg(feature = "catch_nullptr")]
50560		let ret = process_catch("glPatchParameterfv", catch_unwind(||(self.version_4_0.patchparameterfv)(pname, values)));
50561		#[cfg(not(feature = "catch_nullptr"))]
50562		let ret = {(self.version_4_0.patchparameterfv)(pname, values); Ok(())};
50563		#[cfg(feature = "diagnose")]
50564		if let Ok(ret) = ret {
50565			return to_result("glPatchParameterfv", ret, (self.version_4_0.geterror)());
50566		} else {
50567			return ret
50568		}
50569		#[cfg(not(feature = "diagnose"))]
50570		return ret;
50571	}
50572	#[inline(always)]
50573	fn glBindTransformFeedback(&self, target: GLenum, id: GLuint) -> Result<()> {
50574		#[cfg(feature = "catch_nullptr")]
50575		let ret = process_catch("glBindTransformFeedback", catch_unwind(||(self.version_4_0.bindtransformfeedback)(target, id)));
50576		#[cfg(not(feature = "catch_nullptr"))]
50577		let ret = {(self.version_4_0.bindtransformfeedback)(target, id); Ok(())};
50578		#[cfg(feature = "diagnose")]
50579		if let Ok(ret) = ret {
50580			return to_result("glBindTransformFeedback", ret, (self.version_4_0.geterror)());
50581		} else {
50582			return ret
50583		}
50584		#[cfg(not(feature = "diagnose"))]
50585		return ret;
50586	}
50587	#[inline(always)]
50588	fn glDeleteTransformFeedbacks(&self, n: GLsizei, ids: *const GLuint) -> Result<()> {
50589		#[cfg(feature = "catch_nullptr")]
50590		let ret = process_catch("glDeleteTransformFeedbacks", catch_unwind(||(self.version_4_0.deletetransformfeedbacks)(n, ids)));
50591		#[cfg(not(feature = "catch_nullptr"))]
50592		let ret = {(self.version_4_0.deletetransformfeedbacks)(n, ids); Ok(())};
50593		#[cfg(feature = "diagnose")]
50594		if let Ok(ret) = ret {
50595			return to_result("glDeleteTransformFeedbacks", ret, (self.version_4_0.geterror)());
50596		} else {
50597			return ret
50598		}
50599		#[cfg(not(feature = "diagnose"))]
50600		return ret;
50601	}
50602	#[inline(always)]
50603	fn glGenTransformFeedbacks(&self, n: GLsizei, ids: *mut GLuint) -> Result<()> {
50604		#[cfg(feature = "catch_nullptr")]
50605		let ret = process_catch("glGenTransformFeedbacks", catch_unwind(||(self.version_4_0.gentransformfeedbacks)(n, ids)));
50606		#[cfg(not(feature = "catch_nullptr"))]
50607		let ret = {(self.version_4_0.gentransformfeedbacks)(n, ids); Ok(())};
50608		#[cfg(feature = "diagnose")]
50609		if let Ok(ret) = ret {
50610			return to_result("glGenTransformFeedbacks", ret, (self.version_4_0.geterror)());
50611		} else {
50612			return ret
50613		}
50614		#[cfg(not(feature = "diagnose"))]
50615		return ret;
50616	}
50617	#[inline(always)]
50618	fn glIsTransformFeedback(&self, id: GLuint) -> Result<GLboolean> {
50619		#[cfg(feature = "catch_nullptr")]
50620		let ret = process_catch("glIsTransformFeedback", catch_unwind(||(self.version_4_0.istransformfeedback)(id)));
50621		#[cfg(not(feature = "catch_nullptr"))]
50622		let ret = Ok((self.version_4_0.istransformfeedback)(id));
50623		#[cfg(feature = "diagnose")]
50624		if let Ok(ret) = ret {
50625			return to_result("glIsTransformFeedback", ret, (self.version_4_0.geterror)());
50626		} else {
50627			return ret
50628		}
50629		#[cfg(not(feature = "diagnose"))]
50630		return ret;
50631	}
50632	#[inline(always)]
50633	fn glPauseTransformFeedback(&self) -> Result<()> {
50634		#[cfg(feature = "catch_nullptr")]
50635		let ret = process_catch("glPauseTransformFeedback", catch_unwind(||(self.version_4_0.pausetransformfeedback)()));
50636		#[cfg(not(feature = "catch_nullptr"))]
50637		let ret = {(self.version_4_0.pausetransformfeedback)(); Ok(())};
50638		#[cfg(feature = "diagnose")]
50639		if let Ok(ret) = ret {
50640			return to_result("glPauseTransformFeedback", ret, (self.version_4_0.geterror)());
50641		} else {
50642			return ret
50643		}
50644		#[cfg(not(feature = "diagnose"))]
50645		return ret;
50646	}
50647	#[inline(always)]
50648	fn glResumeTransformFeedback(&self) -> Result<()> {
50649		#[cfg(feature = "catch_nullptr")]
50650		let ret = process_catch("glResumeTransformFeedback", catch_unwind(||(self.version_4_0.resumetransformfeedback)()));
50651		#[cfg(not(feature = "catch_nullptr"))]
50652		let ret = {(self.version_4_0.resumetransformfeedback)(); Ok(())};
50653		#[cfg(feature = "diagnose")]
50654		if let Ok(ret) = ret {
50655			return to_result("glResumeTransformFeedback", ret, (self.version_4_0.geterror)());
50656		} else {
50657			return ret
50658		}
50659		#[cfg(not(feature = "diagnose"))]
50660		return ret;
50661	}
50662	#[inline(always)]
50663	fn glDrawTransformFeedback(&self, mode: GLenum, id: GLuint) -> Result<()> {
50664		#[cfg(feature = "catch_nullptr")]
50665		let ret = process_catch("glDrawTransformFeedback", catch_unwind(||(self.version_4_0.drawtransformfeedback)(mode, id)));
50666		#[cfg(not(feature = "catch_nullptr"))]
50667		let ret = {(self.version_4_0.drawtransformfeedback)(mode, id); Ok(())};
50668		#[cfg(feature = "diagnose")]
50669		if let Ok(ret) = ret {
50670			return to_result("glDrawTransformFeedback", ret, (self.version_4_0.geterror)());
50671		} else {
50672			return ret
50673		}
50674		#[cfg(not(feature = "diagnose"))]
50675		return ret;
50676	}
50677	#[inline(always)]
50678	fn glDrawTransformFeedbackStream(&self, mode: GLenum, id: GLuint, stream: GLuint) -> Result<()> {
50679		#[cfg(feature = "catch_nullptr")]
50680		let ret = process_catch("glDrawTransformFeedbackStream", catch_unwind(||(self.version_4_0.drawtransformfeedbackstream)(mode, id, stream)));
50681		#[cfg(not(feature = "catch_nullptr"))]
50682		let ret = {(self.version_4_0.drawtransformfeedbackstream)(mode, id, stream); Ok(())};
50683		#[cfg(feature = "diagnose")]
50684		if let Ok(ret) = ret {
50685			return to_result("glDrawTransformFeedbackStream", ret, (self.version_4_0.geterror)());
50686		} else {
50687			return ret
50688		}
50689		#[cfg(not(feature = "diagnose"))]
50690		return ret;
50691	}
50692	#[inline(always)]
50693	fn glBeginQueryIndexed(&self, target: GLenum, index: GLuint, id: GLuint) -> Result<()> {
50694		#[cfg(feature = "catch_nullptr")]
50695		let ret = process_catch("glBeginQueryIndexed", catch_unwind(||(self.version_4_0.beginqueryindexed)(target, index, id)));
50696		#[cfg(not(feature = "catch_nullptr"))]
50697		let ret = {(self.version_4_0.beginqueryindexed)(target, index, id); Ok(())};
50698		#[cfg(feature = "diagnose")]
50699		if let Ok(ret) = ret {
50700			return to_result("glBeginQueryIndexed", ret, (self.version_4_0.geterror)());
50701		} else {
50702			return ret
50703		}
50704		#[cfg(not(feature = "diagnose"))]
50705		return ret;
50706	}
50707	#[inline(always)]
50708	fn glEndQueryIndexed(&self, target: GLenum, index: GLuint) -> Result<()> {
50709		#[cfg(feature = "catch_nullptr")]
50710		let ret = process_catch("glEndQueryIndexed", catch_unwind(||(self.version_4_0.endqueryindexed)(target, index)));
50711		#[cfg(not(feature = "catch_nullptr"))]
50712		let ret = {(self.version_4_0.endqueryindexed)(target, index); Ok(())};
50713		#[cfg(feature = "diagnose")]
50714		if let Ok(ret) = ret {
50715			return to_result("glEndQueryIndexed", ret, (self.version_4_0.geterror)());
50716		} else {
50717			return ret
50718		}
50719		#[cfg(not(feature = "diagnose"))]
50720		return ret;
50721	}
50722	#[inline(always)]
50723	fn glGetQueryIndexediv(&self, target: GLenum, index: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
50724		#[cfg(feature = "catch_nullptr")]
50725		let ret = process_catch("glGetQueryIndexediv", catch_unwind(||(self.version_4_0.getqueryindexediv)(target, index, pname, params)));
50726		#[cfg(not(feature = "catch_nullptr"))]
50727		let ret = {(self.version_4_0.getqueryindexediv)(target, index, pname, params); Ok(())};
50728		#[cfg(feature = "diagnose")]
50729		if let Ok(ret) = ret {
50730			return to_result("glGetQueryIndexediv", ret, (self.version_4_0.geterror)());
50731		} else {
50732			return ret
50733		}
50734		#[cfg(not(feature = "diagnose"))]
50735		return ret;
50736	}
50737}
50738
50739impl GL_4_1_g for GLCore {
50740	#[inline(always)]
50741	fn glReleaseShaderCompiler(&self) -> Result<()> {
50742		#[cfg(feature = "catch_nullptr")]
50743		let ret = process_catch("glReleaseShaderCompiler", catch_unwind(||(self.version_4_1.releaseshadercompiler)()));
50744		#[cfg(not(feature = "catch_nullptr"))]
50745		let ret = {(self.version_4_1.releaseshadercompiler)(); Ok(())};
50746		#[cfg(feature = "diagnose")]
50747		if let Ok(ret) = ret {
50748			return to_result("glReleaseShaderCompiler", ret, (self.version_4_1.geterror)());
50749		} else {
50750			return ret
50751		}
50752		#[cfg(not(feature = "diagnose"))]
50753		return ret;
50754	}
50755	#[inline(always)]
50756	fn glShaderBinary(&self, count: GLsizei, shaders: *const GLuint, binaryFormat: GLenum, binary: *const c_void, length: GLsizei) -> Result<()> {
50757		#[cfg(feature = "catch_nullptr")]
50758		let ret = process_catch("glShaderBinary", catch_unwind(||(self.version_4_1.shaderbinary)(count, shaders, binaryFormat, binary, length)));
50759		#[cfg(not(feature = "catch_nullptr"))]
50760		let ret = {(self.version_4_1.shaderbinary)(count, shaders, binaryFormat, binary, length); Ok(())};
50761		#[cfg(feature = "diagnose")]
50762		if let Ok(ret) = ret {
50763			return to_result("glShaderBinary", ret, (self.version_4_1.geterror)());
50764		} else {
50765			return ret
50766		}
50767		#[cfg(not(feature = "diagnose"))]
50768		return ret;
50769	}
50770	#[inline(always)]
50771	fn glGetShaderPrecisionFormat(&self, shadertype: GLenum, precisiontype: GLenum, range: *mut GLint, precision: *mut GLint) -> Result<()> {
50772		#[cfg(feature = "catch_nullptr")]
50773		let ret = process_catch("glGetShaderPrecisionFormat", catch_unwind(||(self.version_4_1.getshaderprecisionformat)(shadertype, precisiontype, range, precision)));
50774		#[cfg(not(feature = "catch_nullptr"))]
50775		let ret = {(self.version_4_1.getshaderprecisionformat)(shadertype, precisiontype, range, precision); Ok(())};
50776		#[cfg(feature = "diagnose")]
50777		if let Ok(ret) = ret {
50778			return to_result("glGetShaderPrecisionFormat", ret, (self.version_4_1.geterror)());
50779		} else {
50780			return ret
50781		}
50782		#[cfg(not(feature = "diagnose"))]
50783		return ret;
50784	}
50785	#[inline(always)]
50786	fn glDepthRangef(&self, n: GLfloat, f: GLfloat) -> Result<()> {
50787		#[cfg(feature = "catch_nullptr")]
50788		let ret = process_catch("glDepthRangef", catch_unwind(||(self.version_4_1.depthrangef)(n, f)));
50789		#[cfg(not(feature = "catch_nullptr"))]
50790		let ret = {(self.version_4_1.depthrangef)(n, f); Ok(())};
50791		#[cfg(feature = "diagnose")]
50792		if let Ok(ret) = ret {
50793			return to_result("glDepthRangef", ret, (self.version_4_1.geterror)());
50794		} else {
50795			return ret
50796		}
50797		#[cfg(not(feature = "diagnose"))]
50798		return ret;
50799	}
50800	#[inline(always)]
50801	fn glClearDepthf(&self, d: GLfloat) -> Result<()> {
50802		#[cfg(feature = "catch_nullptr")]
50803		let ret = process_catch("glClearDepthf", catch_unwind(||(self.version_4_1.cleardepthf)(d)));
50804		#[cfg(not(feature = "catch_nullptr"))]
50805		let ret = {(self.version_4_1.cleardepthf)(d); Ok(())};
50806		#[cfg(feature = "diagnose")]
50807		if let Ok(ret) = ret {
50808			return to_result("glClearDepthf", ret, (self.version_4_1.geterror)());
50809		} else {
50810			return ret
50811		}
50812		#[cfg(not(feature = "diagnose"))]
50813		return ret;
50814	}
50815	#[inline(always)]
50816	fn glGetProgramBinary(&self, program: GLuint, bufSize: GLsizei, length: *mut GLsizei, binaryFormat: *mut GLenum, binary: *mut c_void) -> Result<()> {
50817		#[cfg(feature = "catch_nullptr")]
50818		let ret = process_catch("glGetProgramBinary", catch_unwind(||(self.version_4_1.getprogrambinary)(program, bufSize, length, binaryFormat, binary)));
50819		#[cfg(not(feature = "catch_nullptr"))]
50820		let ret = {(self.version_4_1.getprogrambinary)(program, bufSize, length, binaryFormat, binary); Ok(())};
50821		#[cfg(feature = "diagnose")]
50822		if let Ok(ret) = ret {
50823			return to_result("glGetProgramBinary", ret, (self.version_4_1.geterror)());
50824		} else {
50825			return ret
50826		}
50827		#[cfg(not(feature = "diagnose"))]
50828		return ret;
50829	}
50830	#[inline(always)]
50831	fn glProgramBinary(&self, program: GLuint, binaryFormat: GLenum, binary: *const c_void, length: GLsizei) -> Result<()> {
50832		#[cfg(feature = "catch_nullptr")]
50833		let ret = process_catch("glProgramBinary", catch_unwind(||(self.version_4_1.programbinary)(program, binaryFormat, binary, length)));
50834		#[cfg(not(feature = "catch_nullptr"))]
50835		let ret = {(self.version_4_1.programbinary)(program, binaryFormat, binary, length); Ok(())};
50836		#[cfg(feature = "diagnose")]
50837		if let Ok(ret) = ret {
50838			return to_result("glProgramBinary", ret, (self.version_4_1.geterror)());
50839		} else {
50840			return ret
50841		}
50842		#[cfg(not(feature = "diagnose"))]
50843		return ret;
50844	}
50845	#[inline(always)]
50846	fn glProgramParameteri(&self, program: GLuint, pname: GLenum, value: GLint) -> Result<()> {
50847		#[cfg(feature = "catch_nullptr")]
50848		let ret = process_catch("glProgramParameteri", catch_unwind(||(self.version_4_1.programparameteri)(program, pname, value)));
50849		#[cfg(not(feature = "catch_nullptr"))]
50850		let ret = {(self.version_4_1.programparameteri)(program, pname, value); Ok(())};
50851		#[cfg(feature = "diagnose")]
50852		if let Ok(ret) = ret {
50853			return to_result("glProgramParameteri", ret, (self.version_4_1.geterror)());
50854		} else {
50855			return ret
50856		}
50857		#[cfg(not(feature = "diagnose"))]
50858		return ret;
50859	}
50860	#[inline(always)]
50861	fn glUseProgramStages(&self, pipeline: GLuint, stages: GLbitfield, program: GLuint) -> Result<()> {
50862		#[cfg(feature = "catch_nullptr")]
50863		let ret = process_catch("glUseProgramStages", catch_unwind(||(self.version_4_1.useprogramstages)(pipeline, stages, program)));
50864		#[cfg(not(feature = "catch_nullptr"))]
50865		let ret = {(self.version_4_1.useprogramstages)(pipeline, stages, program); Ok(())};
50866		#[cfg(feature = "diagnose")]
50867		if let Ok(ret) = ret {
50868			return to_result("glUseProgramStages", ret, (self.version_4_1.geterror)());
50869		} else {
50870			return ret
50871		}
50872		#[cfg(not(feature = "diagnose"))]
50873		return ret;
50874	}
50875	#[inline(always)]
50876	fn glActiveShaderProgram(&self, pipeline: GLuint, program: GLuint) -> Result<()> {
50877		#[cfg(feature = "catch_nullptr")]
50878		let ret = process_catch("glActiveShaderProgram", catch_unwind(||(self.version_4_1.activeshaderprogram)(pipeline, program)));
50879		#[cfg(not(feature = "catch_nullptr"))]
50880		let ret = {(self.version_4_1.activeshaderprogram)(pipeline, program); Ok(())};
50881		#[cfg(feature = "diagnose")]
50882		if let Ok(ret) = ret {
50883			return to_result("glActiveShaderProgram", ret, (self.version_4_1.geterror)());
50884		} else {
50885			return ret
50886		}
50887		#[cfg(not(feature = "diagnose"))]
50888		return ret;
50889	}
50890	#[inline(always)]
50891	fn glCreateShaderProgramv(&self, type_: GLenum, count: GLsizei, strings: *const *const GLchar) -> Result<GLuint> {
50892		#[cfg(feature = "catch_nullptr")]
50893		let ret = process_catch("glCreateShaderProgramv", catch_unwind(||(self.version_4_1.createshaderprogramv)(type_, count, strings)));
50894		#[cfg(not(feature = "catch_nullptr"))]
50895		let ret = Ok((self.version_4_1.createshaderprogramv)(type_, count, strings));
50896		#[cfg(feature = "diagnose")]
50897		if let Ok(ret) = ret {
50898			return to_result("glCreateShaderProgramv", ret, (self.version_4_1.geterror)());
50899		} else {
50900			return ret
50901		}
50902		#[cfg(not(feature = "diagnose"))]
50903		return ret;
50904	}
50905	#[inline(always)]
50906	fn glBindProgramPipeline(&self, pipeline: GLuint) -> Result<()> {
50907		#[cfg(feature = "catch_nullptr")]
50908		let ret = process_catch("glBindProgramPipeline", catch_unwind(||(self.version_4_1.bindprogrampipeline)(pipeline)));
50909		#[cfg(not(feature = "catch_nullptr"))]
50910		let ret = {(self.version_4_1.bindprogrampipeline)(pipeline); Ok(())};
50911		#[cfg(feature = "diagnose")]
50912		if let Ok(ret) = ret {
50913			return to_result("glBindProgramPipeline", ret, (self.version_4_1.geterror)());
50914		} else {
50915			return ret
50916		}
50917		#[cfg(not(feature = "diagnose"))]
50918		return ret;
50919	}
50920	#[inline(always)]
50921	fn glDeleteProgramPipelines(&self, n: GLsizei, pipelines: *const GLuint) -> Result<()> {
50922		#[cfg(feature = "catch_nullptr")]
50923		let ret = process_catch("glDeleteProgramPipelines", catch_unwind(||(self.version_4_1.deleteprogrampipelines)(n, pipelines)));
50924		#[cfg(not(feature = "catch_nullptr"))]
50925		let ret = {(self.version_4_1.deleteprogrampipelines)(n, pipelines); Ok(())};
50926		#[cfg(feature = "diagnose")]
50927		if let Ok(ret) = ret {
50928			return to_result("glDeleteProgramPipelines", ret, (self.version_4_1.geterror)());
50929		} else {
50930			return ret
50931		}
50932		#[cfg(not(feature = "diagnose"))]
50933		return ret;
50934	}
50935	#[inline(always)]
50936	fn glGenProgramPipelines(&self, n: GLsizei, pipelines: *mut GLuint) -> Result<()> {
50937		#[cfg(feature = "catch_nullptr")]
50938		let ret = process_catch("glGenProgramPipelines", catch_unwind(||(self.version_4_1.genprogrampipelines)(n, pipelines)));
50939		#[cfg(not(feature = "catch_nullptr"))]
50940		let ret = {(self.version_4_1.genprogrampipelines)(n, pipelines); Ok(())};
50941		#[cfg(feature = "diagnose")]
50942		if let Ok(ret) = ret {
50943			return to_result("glGenProgramPipelines", ret, (self.version_4_1.geterror)());
50944		} else {
50945			return ret
50946		}
50947		#[cfg(not(feature = "diagnose"))]
50948		return ret;
50949	}
50950	#[inline(always)]
50951	fn glIsProgramPipeline(&self, pipeline: GLuint) -> Result<GLboolean> {
50952		#[cfg(feature = "catch_nullptr")]
50953		let ret = process_catch("glIsProgramPipeline", catch_unwind(||(self.version_4_1.isprogrampipeline)(pipeline)));
50954		#[cfg(not(feature = "catch_nullptr"))]
50955		let ret = Ok((self.version_4_1.isprogrampipeline)(pipeline));
50956		#[cfg(feature = "diagnose")]
50957		if let Ok(ret) = ret {
50958			return to_result("glIsProgramPipeline", ret, (self.version_4_1.geterror)());
50959		} else {
50960			return ret
50961		}
50962		#[cfg(not(feature = "diagnose"))]
50963		return ret;
50964	}
50965	#[inline(always)]
50966	fn glGetProgramPipelineiv(&self, pipeline: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
50967		#[cfg(feature = "catch_nullptr")]
50968		let ret = process_catch("glGetProgramPipelineiv", catch_unwind(||(self.version_4_1.getprogrampipelineiv)(pipeline, pname, params)));
50969		#[cfg(not(feature = "catch_nullptr"))]
50970		let ret = {(self.version_4_1.getprogrampipelineiv)(pipeline, pname, params); Ok(())};
50971		#[cfg(feature = "diagnose")]
50972		if let Ok(ret) = ret {
50973			return to_result("glGetProgramPipelineiv", ret, (self.version_4_1.geterror)());
50974		} else {
50975			return ret
50976		}
50977		#[cfg(not(feature = "diagnose"))]
50978		return ret;
50979	}
50980	#[inline(always)]
50981	fn glProgramUniform1i(&self, program: GLuint, location: GLint, v0: GLint) -> Result<()> {
50982		#[cfg(feature = "catch_nullptr")]
50983		let ret = process_catch("glProgramUniform1i", catch_unwind(||(self.version_4_1.programuniform1i)(program, location, v0)));
50984		#[cfg(not(feature = "catch_nullptr"))]
50985		let ret = {(self.version_4_1.programuniform1i)(program, location, v0); Ok(())};
50986		#[cfg(feature = "diagnose")]
50987		if let Ok(ret) = ret {
50988			return to_result("glProgramUniform1i", ret, (self.version_4_1.geterror)());
50989		} else {
50990			return ret
50991		}
50992		#[cfg(not(feature = "diagnose"))]
50993		return ret;
50994	}
50995	#[inline(always)]
50996	fn glProgramUniform1iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
50997		#[cfg(feature = "catch_nullptr")]
50998		let ret = process_catch("glProgramUniform1iv", catch_unwind(||(self.version_4_1.programuniform1iv)(program, location, count, value)));
50999		#[cfg(not(feature = "catch_nullptr"))]
51000		let ret = {(self.version_4_1.programuniform1iv)(program, location, count, value); Ok(())};
51001		#[cfg(feature = "diagnose")]
51002		if let Ok(ret) = ret {
51003			return to_result("glProgramUniform1iv", ret, (self.version_4_1.geterror)());
51004		} else {
51005			return ret
51006		}
51007		#[cfg(not(feature = "diagnose"))]
51008		return ret;
51009	}
51010	#[inline(always)]
51011	fn glProgramUniform1f(&self, program: GLuint, location: GLint, v0: GLfloat) -> Result<()> {
51012		#[cfg(feature = "catch_nullptr")]
51013		let ret = process_catch("glProgramUniform1f", catch_unwind(||(self.version_4_1.programuniform1f)(program, location, v0)));
51014		#[cfg(not(feature = "catch_nullptr"))]
51015		let ret = {(self.version_4_1.programuniform1f)(program, location, v0); Ok(())};
51016		#[cfg(feature = "diagnose")]
51017		if let Ok(ret) = ret {
51018			return to_result("glProgramUniform1f", ret, (self.version_4_1.geterror)());
51019		} else {
51020			return ret
51021		}
51022		#[cfg(not(feature = "diagnose"))]
51023		return ret;
51024	}
51025	#[inline(always)]
51026	fn glProgramUniform1fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
51027		#[cfg(feature = "catch_nullptr")]
51028		let ret = process_catch("glProgramUniform1fv", catch_unwind(||(self.version_4_1.programuniform1fv)(program, location, count, value)));
51029		#[cfg(not(feature = "catch_nullptr"))]
51030		let ret = {(self.version_4_1.programuniform1fv)(program, location, count, value); Ok(())};
51031		#[cfg(feature = "diagnose")]
51032		if let Ok(ret) = ret {
51033			return to_result("glProgramUniform1fv", ret, (self.version_4_1.geterror)());
51034		} else {
51035			return ret
51036		}
51037		#[cfg(not(feature = "diagnose"))]
51038		return ret;
51039	}
51040	#[inline(always)]
51041	fn glProgramUniform1d(&self, program: GLuint, location: GLint, v0: GLdouble) -> Result<()> {
51042		#[cfg(feature = "catch_nullptr")]
51043		let ret = process_catch("glProgramUniform1d", catch_unwind(||(self.version_4_1.programuniform1d)(program, location, v0)));
51044		#[cfg(not(feature = "catch_nullptr"))]
51045		let ret = {(self.version_4_1.programuniform1d)(program, location, v0); Ok(())};
51046		#[cfg(feature = "diagnose")]
51047		if let Ok(ret) = ret {
51048			return to_result("glProgramUniform1d", ret, (self.version_4_1.geterror)());
51049		} else {
51050			return ret
51051		}
51052		#[cfg(not(feature = "diagnose"))]
51053		return ret;
51054	}
51055	#[inline(always)]
51056	fn glProgramUniform1dv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()> {
51057		#[cfg(feature = "catch_nullptr")]
51058		let ret = process_catch("glProgramUniform1dv", catch_unwind(||(self.version_4_1.programuniform1dv)(program, location, count, value)));
51059		#[cfg(not(feature = "catch_nullptr"))]
51060		let ret = {(self.version_4_1.programuniform1dv)(program, location, count, value); Ok(())};
51061		#[cfg(feature = "diagnose")]
51062		if let Ok(ret) = ret {
51063			return to_result("glProgramUniform1dv", ret, (self.version_4_1.geterror)());
51064		} else {
51065			return ret
51066		}
51067		#[cfg(not(feature = "diagnose"))]
51068		return ret;
51069	}
51070	#[inline(always)]
51071	fn glProgramUniform1ui(&self, program: GLuint, location: GLint, v0: GLuint) -> Result<()> {
51072		#[cfg(feature = "catch_nullptr")]
51073		let ret = process_catch("glProgramUniform1ui", catch_unwind(||(self.version_4_1.programuniform1ui)(program, location, v0)));
51074		#[cfg(not(feature = "catch_nullptr"))]
51075		let ret = {(self.version_4_1.programuniform1ui)(program, location, v0); Ok(())};
51076		#[cfg(feature = "diagnose")]
51077		if let Ok(ret) = ret {
51078			return to_result("glProgramUniform1ui", ret, (self.version_4_1.geterror)());
51079		} else {
51080			return ret
51081		}
51082		#[cfg(not(feature = "diagnose"))]
51083		return ret;
51084	}
51085	#[inline(always)]
51086	fn glProgramUniform1uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
51087		#[cfg(feature = "catch_nullptr")]
51088		let ret = process_catch("glProgramUniform1uiv", catch_unwind(||(self.version_4_1.programuniform1uiv)(program, location, count, value)));
51089		#[cfg(not(feature = "catch_nullptr"))]
51090		let ret = {(self.version_4_1.programuniform1uiv)(program, location, count, value); Ok(())};
51091		#[cfg(feature = "diagnose")]
51092		if let Ok(ret) = ret {
51093			return to_result("glProgramUniform1uiv", ret, (self.version_4_1.geterror)());
51094		} else {
51095			return ret
51096		}
51097		#[cfg(not(feature = "diagnose"))]
51098		return ret;
51099	}
51100	#[inline(always)]
51101	fn glProgramUniform2i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint) -> Result<()> {
51102		#[cfg(feature = "catch_nullptr")]
51103		let ret = process_catch("glProgramUniform2i", catch_unwind(||(self.version_4_1.programuniform2i)(program, location, v0, v1)));
51104		#[cfg(not(feature = "catch_nullptr"))]
51105		let ret = {(self.version_4_1.programuniform2i)(program, location, v0, v1); Ok(())};
51106		#[cfg(feature = "diagnose")]
51107		if let Ok(ret) = ret {
51108			return to_result("glProgramUniform2i", ret, (self.version_4_1.geterror)());
51109		} else {
51110			return ret
51111		}
51112		#[cfg(not(feature = "diagnose"))]
51113		return ret;
51114	}
51115	#[inline(always)]
51116	fn glProgramUniform2iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
51117		#[cfg(feature = "catch_nullptr")]
51118		let ret = process_catch("glProgramUniform2iv", catch_unwind(||(self.version_4_1.programuniform2iv)(program, location, count, value)));
51119		#[cfg(not(feature = "catch_nullptr"))]
51120		let ret = {(self.version_4_1.programuniform2iv)(program, location, count, value); Ok(())};
51121		#[cfg(feature = "diagnose")]
51122		if let Ok(ret) = ret {
51123			return to_result("glProgramUniform2iv", ret, (self.version_4_1.geterror)());
51124		} else {
51125			return ret
51126		}
51127		#[cfg(not(feature = "diagnose"))]
51128		return ret;
51129	}
51130	#[inline(always)]
51131	fn glProgramUniform2f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat) -> Result<()> {
51132		#[cfg(feature = "catch_nullptr")]
51133		let ret = process_catch("glProgramUniform2f", catch_unwind(||(self.version_4_1.programuniform2f)(program, location, v0, v1)));
51134		#[cfg(not(feature = "catch_nullptr"))]
51135		let ret = {(self.version_4_1.programuniform2f)(program, location, v0, v1); Ok(())};
51136		#[cfg(feature = "diagnose")]
51137		if let Ok(ret) = ret {
51138			return to_result("glProgramUniform2f", ret, (self.version_4_1.geterror)());
51139		} else {
51140			return ret
51141		}
51142		#[cfg(not(feature = "diagnose"))]
51143		return ret;
51144	}
51145	#[inline(always)]
51146	fn glProgramUniform2fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
51147		#[cfg(feature = "catch_nullptr")]
51148		let ret = process_catch("glProgramUniform2fv", catch_unwind(||(self.version_4_1.programuniform2fv)(program, location, count, value)));
51149		#[cfg(not(feature = "catch_nullptr"))]
51150		let ret = {(self.version_4_1.programuniform2fv)(program, location, count, value); Ok(())};
51151		#[cfg(feature = "diagnose")]
51152		if let Ok(ret) = ret {
51153			return to_result("glProgramUniform2fv", ret, (self.version_4_1.geterror)());
51154		} else {
51155			return ret
51156		}
51157		#[cfg(not(feature = "diagnose"))]
51158		return ret;
51159	}
51160	#[inline(always)]
51161	fn glProgramUniform2d(&self, program: GLuint, location: GLint, v0: GLdouble, v1: GLdouble) -> Result<()> {
51162		#[cfg(feature = "catch_nullptr")]
51163		let ret = process_catch("glProgramUniform2d", catch_unwind(||(self.version_4_1.programuniform2d)(program, location, v0, v1)));
51164		#[cfg(not(feature = "catch_nullptr"))]
51165		let ret = {(self.version_4_1.programuniform2d)(program, location, v0, v1); Ok(())};
51166		#[cfg(feature = "diagnose")]
51167		if let Ok(ret) = ret {
51168			return to_result("glProgramUniform2d", ret, (self.version_4_1.geterror)());
51169		} else {
51170			return ret
51171		}
51172		#[cfg(not(feature = "diagnose"))]
51173		return ret;
51174	}
51175	#[inline(always)]
51176	fn glProgramUniform2dv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()> {
51177		#[cfg(feature = "catch_nullptr")]
51178		let ret = process_catch("glProgramUniform2dv", catch_unwind(||(self.version_4_1.programuniform2dv)(program, location, count, value)));
51179		#[cfg(not(feature = "catch_nullptr"))]
51180		let ret = {(self.version_4_1.programuniform2dv)(program, location, count, value); Ok(())};
51181		#[cfg(feature = "diagnose")]
51182		if let Ok(ret) = ret {
51183			return to_result("glProgramUniform2dv", ret, (self.version_4_1.geterror)());
51184		} else {
51185			return ret
51186		}
51187		#[cfg(not(feature = "diagnose"))]
51188		return ret;
51189	}
51190	#[inline(always)]
51191	fn glProgramUniform2ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint) -> Result<()> {
51192		#[cfg(feature = "catch_nullptr")]
51193		let ret = process_catch("glProgramUniform2ui", catch_unwind(||(self.version_4_1.programuniform2ui)(program, location, v0, v1)));
51194		#[cfg(not(feature = "catch_nullptr"))]
51195		let ret = {(self.version_4_1.programuniform2ui)(program, location, v0, v1); Ok(())};
51196		#[cfg(feature = "diagnose")]
51197		if let Ok(ret) = ret {
51198			return to_result("glProgramUniform2ui", ret, (self.version_4_1.geterror)());
51199		} else {
51200			return ret
51201		}
51202		#[cfg(not(feature = "diagnose"))]
51203		return ret;
51204	}
51205	#[inline(always)]
51206	fn glProgramUniform2uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
51207		#[cfg(feature = "catch_nullptr")]
51208		let ret = process_catch("glProgramUniform2uiv", catch_unwind(||(self.version_4_1.programuniform2uiv)(program, location, count, value)));
51209		#[cfg(not(feature = "catch_nullptr"))]
51210		let ret = {(self.version_4_1.programuniform2uiv)(program, location, count, value); Ok(())};
51211		#[cfg(feature = "diagnose")]
51212		if let Ok(ret) = ret {
51213			return to_result("glProgramUniform2uiv", ret, (self.version_4_1.geterror)());
51214		} else {
51215			return ret
51216		}
51217		#[cfg(not(feature = "diagnose"))]
51218		return ret;
51219	}
51220	#[inline(always)]
51221	fn glProgramUniform3i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint, v2: GLint) -> Result<()> {
51222		#[cfg(feature = "catch_nullptr")]
51223		let ret = process_catch("glProgramUniform3i", catch_unwind(||(self.version_4_1.programuniform3i)(program, location, v0, v1, v2)));
51224		#[cfg(not(feature = "catch_nullptr"))]
51225		let ret = {(self.version_4_1.programuniform3i)(program, location, v0, v1, v2); Ok(())};
51226		#[cfg(feature = "diagnose")]
51227		if let Ok(ret) = ret {
51228			return to_result("glProgramUniform3i", ret, (self.version_4_1.geterror)());
51229		} else {
51230			return ret
51231		}
51232		#[cfg(not(feature = "diagnose"))]
51233		return ret;
51234	}
51235	#[inline(always)]
51236	fn glProgramUniform3iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
51237		#[cfg(feature = "catch_nullptr")]
51238		let ret = process_catch("glProgramUniform3iv", catch_unwind(||(self.version_4_1.programuniform3iv)(program, location, count, value)));
51239		#[cfg(not(feature = "catch_nullptr"))]
51240		let ret = {(self.version_4_1.programuniform3iv)(program, location, count, value); Ok(())};
51241		#[cfg(feature = "diagnose")]
51242		if let Ok(ret) = ret {
51243			return to_result("glProgramUniform3iv", ret, (self.version_4_1.geterror)());
51244		} else {
51245			return ret
51246		}
51247		#[cfg(not(feature = "diagnose"))]
51248		return ret;
51249	}
51250	#[inline(always)]
51251	fn glProgramUniform3f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat) -> Result<()> {
51252		#[cfg(feature = "catch_nullptr")]
51253		let ret = process_catch("glProgramUniform3f", catch_unwind(||(self.version_4_1.programuniform3f)(program, location, v0, v1, v2)));
51254		#[cfg(not(feature = "catch_nullptr"))]
51255		let ret = {(self.version_4_1.programuniform3f)(program, location, v0, v1, v2); Ok(())};
51256		#[cfg(feature = "diagnose")]
51257		if let Ok(ret) = ret {
51258			return to_result("glProgramUniform3f", ret, (self.version_4_1.geterror)());
51259		} else {
51260			return ret
51261		}
51262		#[cfg(not(feature = "diagnose"))]
51263		return ret;
51264	}
51265	#[inline(always)]
51266	fn glProgramUniform3fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
51267		#[cfg(feature = "catch_nullptr")]
51268		let ret = process_catch("glProgramUniform3fv", catch_unwind(||(self.version_4_1.programuniform3fv)(program, location, count, value)));
51269		#[cfg(not(feature = "catch_nullptr"))]
51270		let ret = {(self.version_4_1.programuniform3fv)(program, location, count, value); Ok(())};
51271		#[cfg(feature = "diagnose")]
51272		if let Ok(ret) = ret {
51273			return to_result("glProgramUniform3fv", ret, (self.version_4_1.geterror)());
51274		} else {
51275			return ret
51276		}
51277		#[cfg(not(feature = "diagnose"))]
51278		return ret;
51279	}
51280	#[inline(always)]
51281	fn glProgramUniform3d(&self, program: GLuint, location: GLint, v0: GLdouble, v1: GLdouble, v2: GLdouble) -> Result<()> {
51282		#[cfg(feature = "catch_nullptr")]
51283		let ret = process_catch("glProgramUniform3d", catch_unwind(||(self.version_4_1.programuniform3d)(program, location, v0, v1, v2)));
51284		#[cfg(not(feature = "catch_nullptr"))]
51285		let ret = {(self.version_4_1.programuniform3d)(program, location, v0, v1, v2); Ok(())};
51286		#[cfg(feature = "diagnose")]
51287		if let Ok(ret) = ret {
51288			return to_result("glProgramUniform3d", ret, (self.version_4_1.geterror)());
51289		} else {
51290			return ret
51291		}
51292		#[cfg(not(feature = "diagnose"))]
51293		return ret;
51294	}
51295	#[inline(always)]
51296	fn glProgramUniform3dv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()> {
51297		#[cfg(feature = "catch_nullptr")]
51298		let ret = process_catch("glProgramUniform3dv", catch_unwind(||(self.version_4_1.programuniform3dv)(program, location, count, value)));
51299		#[cfg(not(feature = "catch_nullptr"))]
51300		let ret = {(self.version_4_1.programuniform3dv)(program, location, count, value); Ok(())};
51301		#[cfg(feature = "diagnose")]
51302		if let Ok(ret) = ret {
51303			return to_result("glProgramUniform3dv", ret, (self.version_4_1.geterror)());
51304		} else {
51305			return ret
51306		}
51307		#[cfg(not(feature = "diagnose"))]
51308		return ret;
51309	}
51310	#[inline(always)]
51311	fn glProgramUniform3ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint) -> Result<()> {
51312		#[cfg(feature = "catch_nullptr")]
51313		let ret = process_catch("glProgramUniform3ui", catch_unwind(||(self.version_4_1.programuniform3ui)(program, location, v0, v1, v2)));
51314		#[cfg(not(feature = "catch_nullptr"))]
51315		let ret = {(self.version_4_1.programuniform3ui)(program, location, v0, v1, v2); Ok(())};
51316		#[cfg(feature = "diagnose")]
51317		if let Ok(ret) = ret {
51318			return to_result("glProgramUniform3ui", ret, (self.version_4_1.geterror)());
51319		} else {
51320			return ret
51321		}
51322		#[cfg(not(feature = "diagnose"))]
51323		return ret;
51324	}
51325	#[inline(always)]
51326	fn glProgramUniform3uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
51327		#[cfg(feature = "catch_nullptr")]
51328		let ret = process_catch("glProgramUniform3uiv", catch_unwind(||(self.version_4_1.programuniform3uiv)(program, location, count, value)));
51329		#[cfg(not(feature = "catch_nullptr"))]
51330		let ret = {(self.version_4_1.programuniform3uiv)(program, location, count, value); Ok(())};
51331		#[cfg(feature = "diagnose")]
51332		if let Ok(ret) = ret {
51333			return to_result("glProgramUniform3uiv", ret, (self.version_4_1.geterror)());
51334		} else {
51335			return ret
51336		}
51337		#[cfg(not(feature = "diagnose"))]
51338		return ret;
51339	}
51340	#[inline(always)]
51341	fn glProgramUniform4i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint, v2: GLint, v3: GLint) -> Result<()> {
51342		#[cfg(feature = "catch_nullptr")]
51343		let ret = process_catch("glProgramUniform4i", catch_unwind(||(self.version_4_1.programuniform4i)(program, location, v0, v1, v2, v3)));
51344		#[cfg(not(feature = "catch_nullptr"))]
51345		let ret = {(self.version_4_1.programuniform4i)(program, location, v0, v1, v2, v3); Ok(())};
51346		#[cfg(feature = "diagnose")]
51347		if let Ok(ret) = ret {
51348			return to_result("glProgramUniform4i", ret, (self.version_4_1.geterror)());
51349		} else {
51350			return ret
51351		}
51352		#[cfg(not(feature = "diagnose"))]
51353		return ret;
51354	}
51355	#[inline(always)]
51356	fn glProgramUniform4iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
51357		#[cfg(feature = "catch_nullptr")]
51358		let ret = process_catch("glProgramUniform4iv", catch_unwind(||(self.version_4_1.programuniform4iv)(program, location, count, value)));
51359		#[cfg(not(feature = "catch_nullptr"))]
51360		let ret = {(self.version_4_1.programuniform4iv)(program, location, count, value); Ok(())};
51361		#[cfg(feature = "diagnose")]
51362		if let Ok(ret) = ret {
51363			return to_result("glProgramUniform4iv", ret, (self.version_4_1.geterror)());
51364		} else {
51365			return ret
51366		}
51367		#[cfg(not(feature = "diagnose"))]
51368		return ret;
51369	}
51370	#[inline(always)]
51371	fn glProgramUniform4f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat, v3: GLfloat) -> Result<()> {
51372		#[cfg(feature = "catch_nullptr")]
51373		let ret = process_catch("glProgramUniform4f", catch_unwind(||(self.version_4_1.programuniform4f)(program, location, v0, v1, v2, v3)));
51374		#[cfg(not(feature = "catch_nullptr"))]
51375		let ret = {(self.version_4_1.programuniform4f)(program, location, v0, v1, v2, v3); Ok(())};
51376		#[cfg(feature = "diagnose")]
51377		if let Ok(ret) = ret {
51378			return to_result("glProgramUniform4f", ret, (self.version_4_1.geterror)());
51379		} else {
51380			return ret
51381		}
51382		#[cfg(not(feature = "diagnose"))]
51383		return ret;
51384	}
51385	#[inline(always)]
51386	fn glProgramUniform4fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
51387		#[cfg(feature = "catch_nullptr")]
51388		let ret = process_catch("glProgramUniform4fv", catch_unwind(||(self.version_4_1.programuniform4fv)(program, location, count, value)));
51389		#[cfg(not(feature = "catch_nullptr"))]
51390		let ret = {(self.version_4_1.programuniform4fv)(program, location, count, value); Ok(())};
51391		#[cfg(feature = "diagnose")]
51392		if let Ok(ret) = ret {
51393			return to_result("glProgramUniform4fv", ret, (self.version_4_1.geterror)());
51394		} else {
51395			return ret
51396		}
51397		#[cfg(not(feature = "diagnose"))]
51398		return ret;
51399	}
51400	#[inline(always)]
51401	fn glProgramUniform4d(&self, program: GLuint, location: GLint, v0: GLdouble, v1: GLdouble, v2: GLdouble, v3: GLdouble) -> Result<()> {
51402		#[cfg(feature = "catch_nullptr")]
51403		let ret = process_catch("glProgramUniform4d", catch_unwind(||(self.version_4_1.programuniform4d)(program, location, v0, v1, v2, v3)));
51404		#[cfg(not(feature = "catch_nullptr"))]
51405		let ret = {(self.version_4_1.programuniform4d)(program, location, v0, v1, v2, v3); Ok(())};
51406		#[cfg(feature = "diagnose")]
51407		if let Ok(ret) = ret {
51408			return to_result("glProgramUniform4d", ret, (self.version_4_1.geterror)());
51409		} else {
51410			return ret
51411		}
51412		#[cfg(not(feature = "diagnose"))]
51413		return ret;
51414	}
51415	#[inline(always)]
51416	fn glProgramUniform4dv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()> {
51417		#[cfg(feature = "catch_nullptr")]
51418		let ret = process_catch("glProgramUniform4dv", catch_unwind(||(self.version_4_1.programuniform4dv)(program, location, count, value)));
51419		#[cfg(not(feature = "catch_nullptr"))]
51420		let ret = {(self.version_4_1.programuniform4dv)(program, location, count, value); Ok(())};
51421		#[cfg(feature = "diagnose")]
51422		if let Ok(ret) = ret {
51423			return to_result("glProgramUniform4dv", ret, (self.version_4_1.geterror)());
51424		} else {
51425			return ret
51426		}
51427		#[cfg(not(feature = "diagnose"))]
51428		return ret;
51429	}
51430	#[inline(always)]
51431	fn glProgramUniform4ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint, v3: GLuint) -> Result<()> {
51432		#[cfg(feature = "catch_nullptr")]
51433		let ret = process_catch("glProgramUniform4ui", catch_unwind(||(self.version_4_1.programuniform4ui)(program, location, v0, v1, v2, v3)));
51434		#[cfg(not(feature = "catch_nullptr"))]
51435		let ret = {(self.version_4_1.programuniform4ui)(program, location, v0, v1, v2, v3); Ok(())};
51436		#[cfg(feature = "diagnose")]
51437		if let Ok(ret) = ret {
51438			return to_result("glProgramUniform4ui", ret, (self.version_4_1.geterror)());
51439		} else {
51440			return ret
51441		}
51442		#[cfg(not(feature = "diagnose"))]
51443		return ret;
51444	}
51445	#[inline(always)]
51446	fn glProgramUniform4uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
51447		#[cfg(feature = "catch_nullptr")]
51448		let ret = process_catch("glProgramUniform4uiv", catch_unwind(||(self.version_4_1.programuniform4uiv)(program, location, count, value)));
51449		#[cfg(not(feature = "catch_nullptr"))]
51450		let ret = {(self.version_4_1.programuniform4uiv)(program, location, count, value); Ok(())};
51451		#[cfg(feature = "diagnose")]
51452		if let Ok(ret) = ret {
51453			return to_result("glProgramUniform4uiv", ret, (self.version_4_1.geterror)());
51454		} else {
51455			return ret
51456		}
51457		#[cfg(not(feature = "diagnose"))]
51458		return ret;
51459	}
51460	#[inline(always)]
51461	fn glProgramUniformMatrix2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
51462		#[cfg(feature = "catch_nullptr")]
51463		let ret = process_catch("glProgramUniformMatrix2fv", catch_unwind(||(self.version_4_1.programuniformmatrix2fv)(program, location, count, transpose, value)));
51464		#[cfg(not(feature = "catch_nullptr"))]
51465		let ret = {(self.version_4_1.programuniformmatrix2fv)(program, location, count, transpose, value); Ok(())};
51466		#[cfg(feature = "diagnose")]
51467		if let Ok(ret) = ret {
51468			return to_result("glProgramUniformMatrix2fv", ret, (self.version_4_1.geterror)());
51469		} else {
51470			return ret
51471		}
51472		#[cfg(not(feature = "diagnose"))]
51473		return ret;
51474	}
51475	#[inline(always)]
51476	fn glProgramUniformMatrix3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
51477		#[cfg(feature = "catch_nullptr")]
51478		let ret = process_catch("glProgramUniformMatrix3fv", catch_unwind(||(self.version_4_1.programuniformmatrix3fv)(program, location, count, transpose, value)));
51479		#[cfg(not(feature = "catch_nullptr"))]
51480		let ret = {(self.version_4_1.programuniformmatrix3fv)(program, location, count, transpose, value); Ok(())};
51481		#[cfg(feature = "diagnose")]
51482		if let Ok(ret) = ret {
51483			return to_result("glProgramUniformMatrix3fv", ret, (self.version_4_1.geterror)());
51484		} else {
51485			return ret
51486		}
51487		#[cfg(not(feature = "diagnose"))]
51488		return ret;
51489	}
51490	#[inline(always)]
51491	fn glProgramUniformMatrix4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
51492		#[cfg(feature = "catch_nullptr")]
51493		let ret = process_catch("glProgramUniformMatrix4fv", catch_unwind(||(self.version_4_1.programuniformmatrix4fv)(program, location, count, transpose, value)));
51494		#[cfg(not(feature = "catch_nullptr"))]
51495		let ret = {(self.version_4_1.programuniformmatrix4fv)(program, location, count, transpose, value); Ok(())};
51496		#[cfg(feature = "diagnose")]
51497		if let Ok(ret) = ret {
51498			return to_result("glProgramUniformMatrix4fv", ret, (self.version_4_1.geterror)());
51499		} else {
51500			return ret
51501		}
51502		#[cfg(not(feature = "diagnose"))]
51503		return ret;
51504	}
51505	#[inline(always)]
51506	fn glProgramUniformMatrix2dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
51507		#[cfg(feature = "catch_nullptr")]
51508		let ret = process_catch("glProgramUniformMatrix2dv", catch_unwind(||(self.version_4_1.programuniformmatrix2dv)(program, location, count, transpose, value)));
51509		#[cfg(not(feature = "catch_nullptr"))]
51510		let ret = {(self.version_4_1.programuniformmatrix2dv)(program, location, count, transpose, value); Ok(())};
51511		#[cfg(feature = "diagnose")]
51512		if let Ok(ret) = ret {
51513			return to_result("glProgramUniformMatrix2dv", ret, (self.version_4_1.geterror)());
51514		} else {
51515			return ret
51516		}
51517		#[cfg(not(feature = "diagnose"))]
51518		return ret;
51519	}
51520	#[inline(always)]
51521	fn glProgramUniformMatrix3dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
51522		#[cfg(feature = "catch_nullptr")]
51523		let ret = process_catch("glProgramUniformMatrix3dv", catch_unwind(||(self.version_4_1.programuniformmatrix3dv)(program, location, count, transpose, value)));
51524		#[cfg(not(feature = "catch_nullptr"))]
51525		let ret = {(self.version_4_1.programuniformmatrix3dv)(program, location, count, transpose, value); Ok(())};
51526		#[cfg(feature = "diagnose")]
51527		if let Ok(ret) = ret {
51528			return to_result("glProgramUniformMatrix3dv", ret, (self.version_4_1.geterror)());
51529		} else {
51530			return ret
51531		}
51532		#[cfg(not(feature = "diagnose"))]
51533		return ret;
51534	}
51535	#[inline(always)]
51536	fn glProgramUniformMatrix4dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
51537		#[cfg(feature = "catch_nullptr")]
51538		let ret = process_catch("glProgramUniformMatrix4dv", catch_unwind(||(self.version_4_1.programuniformmatrix4dv)(program, location, count, transpose, value)));
51539		#[cfg(not(feature = "catch_nullptr"))]
51540		let ret = {(self.version_4_1.programuniformmatrix4dv)(program, location, count, transpose, value); Ok(())};
51541		#[cfg(feature = "diagnose")]
51542		if let Ok(ret) = ret {
51543			return to_result("glProgramUniformMatrix4dv", ret, (self.version_4_1.geterror)());
51544		} else {
51545			return ret
51546		}
51547		#[cfg(not(feature = "diagnose"))]
51548		return ret;
51549	}
51550	#[inline(always)]
51551	fn glProgramUniformMatrix2x3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
51552		#[cfg(feature = "catch_nullptr")]
51553		let ret = process_catch("glProgramUniformMatrix2x3fv", catch_unwind(||(self.version_4_1.programuniformmatrix2x3fv)(program, location, count, transpose, value)));
51554		#[cfg(not(feature = "catch_nullptr"))]
51555		let ret = {(self.version_4_1.programuniformmatrix2x3fv)(program, location, count, transpose, value); Ok(())};
51556		#[cfg(feature = "diagnose")]
51557		if let Ok(ret) = ret {
51558			return to_result("glProgramUniformMatrix2x3fv", ret, (self.version_4_1.geterror)());
51559		} else {
51560			return ret
51561		}
51562		#[cfg(not(feature = "diagnose"))]
51563		return ret;
51564	}
51565	#[inline(always)]
51566	fn glProgramUniformMatrix3x2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
51567		#[cfg(feature = "catch_nullptr")]
51568		let ret = process_catch("glProgramUniformMatrix3x2fv", catch_unwind(||(self.version_4_1.programuniformmatrix3x2fv)(program, location, count, transpose, value)));
51569		#[cfg(not(feature = "catch_nullptr"))]
51570		let ret = {(self.version_4_1.programuniformmatrix3x2fv)(program, location, count, transpose, value); Ok(())};
51571		#[cfg(feature = "diagnose")]
51572		if let Ok(ret) = ret {
51573			return to_result("glProgramUniformMatrix3x2fv", ret, (self.version_4_1.geterror)());
51574		} else {
51575			return ret
51576		}
51577		#[cfg(not(feature = "diagnose"))]
51578		return ret;
51579	}
51580	#[inline(always)]
51581	fn glProgramUniformMatrix2x4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
51582		#[cfg(feature = "catch_nullptr")]
51583		let ret = process_catch("glProgramUniformMatrix2x4fv", catch_unwind(||(self.version_4_1.programuniformmatrix2x4fv)(program, location, count, transpose, value)));
51584		#[cfg(not(feature = "catch_nullptr"))]
51585		let ret = {(self.version_4_1.programuniformmatrix2x4fv)(program, location, count, transpose, value); Ok(())};
51586		#[cfg(feature = "diagnose")]
51587		if let Ok(ret) = ret {
51588			return to_result("glProgramUniformMatrix2x4fv", ret, (self.version_4_1.geterror)());
51589		} else {
51590			return ret
51591		}
51592		#[cfg(not(feature = "diagnose"))]
51593		return ret;
51594	}
51595	#[inline(always)]
51596	fn glProgramUniformMatrix4x2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
51597		#[cfg(feature = "catch_nullptr")]
51598		let ret = process_catch("glProgramUniformMatrix4x2fv", catch_unwind(||(self.version_4_1.programuniformmatrix4x2fv)(program, location, count, transpose, value)));
51599		#[cfg(not(feature = "catch_nullptr"))]
51600		let ret = {(self.version_4_1.programuniformmatrix4x2fv)(program, location, count, transpose, value); Ok(())};
51601		#[cfg(feature = "diagnose")]
51602		if let Ok(ret) = ret {
51603			return to_result("glProgramUniformMatrix4x2fv", ret, (self.version_4_1.geterror)());
51604		} else {
51605			return ret
51606		}
51607		#[cfg(not(feature = "diagnose"))]
51608		return ret;
51609	}
51610	#[inline(always)]
51611	fn glProgramUniformMatrix3x4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
51612		#[cfg(feature = "catch_nullptr")]
51613		let ret = process_catch("glProgramUniformMatrix3x4fv", catch_unwind(||(self.version_4_1.programuniformmatrix3x4fv)(program, location, count, transpose, value)));
51614		#[cfg(not(feature = "catch_nullptr"))]
51615		let ret = {(self.version_4_1.programuniformmatrix3x4fv)(program, location, count, transpose, value); Ok(())};
51616		#[cfg(feature = "diagnose")]
51617		if let Ok(ret) = ret {
51618			return to_result("glProgramUniformMatrix3x4fv", ret, (self.version_4_1.geterror)());
51619		} else {
51620			return ret
51621		}
51622		#[cfg(not(feature = "diagnose"))]
51623		return ret;
51624	}
51625	#[inline(always)]
51626	fn glProgramUniformMatrix4x3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
51627		#[cfg(feature = "catch_nullptr")]
51628		let ret = process_catch("glProgramUniformMatrix4x3fv", catch_unwind(||(self.version_4_1.programuniformmatrix4x3fv)(program, location, count, transpose, value)));
51629		#[cfg(not(feature = "catch_nullptr"))]
51630		let ret = {(self.version_4_1.programuniformmatrix4x3fv)(program, location, count, transpose, value); Ok(())};
51631		#[cfg(feature = "diagnose")]
51632		if let Ok(ret) = ret {
51633			return to_result("glProgramUniformMatrix4x3fv", ret, (self.version_4_1.geterror)());
51634		} else {
51635			return ret
51636		}
51637		#[cfg(not(feature = "diagnose"))]
51638		return ret;
51639	}
51640	#[inline(always)]
51641	fn glProgramUniformMatrix2x3dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
51642		#[cfg(feature = "catch_nullptr")]
51643		let ret = process_catch("glProgramUniformMatrix2x3dv", catch_unwind(||(self.version_4_1.programuniformmatrix2x3dv)(program, location, count, transpose, value)));
51644		#[cfg(not(feature = "catch_nullptr"))]
51645		let ret = {(self.version_4_1.programuniformmatrix2x3dv)(program, location, count, transpose, value); Ok(())};
51646		#[cfg(feature = "diagnose")]
51647		if let Ok(ret) = ret {
51648			return to_result("glProgramUniformMatrix2x3dv", ret, (self.version_4_1.geterror)());
51649		} else {
51650			return ret
51651		}
51652		#[cfg(not(feature = "diagnose"))]
51653		return ret;
51654	}
51655	#[inline(always)]
51656	fn glProgramUniformMatrix3x2dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
51657		#[cfg(feature = "catch_nullptr")]
51658		let ret = process_catch("glProgramUniformMatrix3x2dv", catch_unwind(||(self.version_4_1.programuniformmatrix3x2dv)(program, location, count, transpose, value)));
51659		#[cfg(not(feature = "catch_nullptr"))]
51660		let ret = {(self.version_4_1.programuniformmatrix3x2dv)(program, location, count, transpose, value); Ok(())};
51661		#[cfg(feature = "diagnose")]
51662		if let Ok(ret) = ret {
51663			return to_result("glProgramUniformMatrix3x2dv", ret, (self.version_4_1.geterror)());
51664		} else {
51665			return ret
51666		}
51667		#[cfg(not(feature = "diagnose"))]
51668		return ret;
51669	}
51670	#[inline(always)]
51671	fn glProgramUniformMatrix2x4dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
51672		#[cfg(feature = "catch_nullptr")]
51673		let ret = process_catch("glProgramUniformMatrix2x4dv", catch_unwind(||(self.version_4_1.programuniformmatrix2x4dv)(program, location, count, transpose, value)));
51674		#[cfg(not(feature = "catch_nullptr"))]
51675		let ret = {(self.version_4_1.programuniformmatrix2x4dv)(program, location, count, transpose, value); Ok(())};
51676		#[cfg(feature = "diagnose")]
51677		if let Ok(ret) = ret {
51678			return to_result("glProgramUniformMatrix2x4dv", ret, (self.version_4_1.geterror)());
51679		} else {
51680			return ret
51681		}
51682		#[cfg(not(feature = "diagnose"))]
51683		return ret;
51684	}
51685	#[inline(always)]
51686	fn glProgramUniformMatrix4x2dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
51687		#[cfg(feature = "catch_nullptr")]
51688		let ret = process_catch("glProgramUniformMatrix4x2dv", catch_unwind(||(self.version_4_1.programuniformmatrix4x2dv)(program, location, count, transpose, value)));
51689		#[cfg(not(feature = "catch_nullptr"))]
51690		let ret = {(self.version_4_1.programuniformmatrix4x2dv)(program, location, count, transpose, value); Ok(())};
51691		#[cfg(feature = "diagnose")]
51692		if let Ok(ret) = ret {
51693			return to_result("glProgramUniformMatrix4x2dv", ret, (self.version_4_1.geterror)());
51694		} else {
51695			return ret
51696		}
51697		#[cfg(not(feature = "diagnose"))]
51698		return ret;
51699	}
51700	#[inline(always)]
51701	fn glProgramUniformMatrix3x4dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
51702		#[cfg(feature = "catch_nullptr")]
51703		let ret = process_catch("glProgramUniformMatrix3x4dv", catch_unwind(||(self.version_4_1.programuniformmatrix3x4dv)(program, location, count, transpose, value)));
51704		#[cfg(not(feature = "catch_nullptr"))]
51705		let ret = {(self.version_4_1.programuniformmatrix3x4dv)(program, location, count, transpose, value); Ok(())};
51706		#[cfg(feature = "diagnose")]
51707		if let Ok(ret) = ret {
51708			return to_result("glProgramUniformMatrix3x4dv", ret, (self.version_4_1.geterror)());
51709		} else {
51710			return ret
51711		}
51712		#[cfg(not(feature = "diagnose"))]
51713		return ret;
51714	}
51715	#[inline(always)]
51716	fn glProgramUniformMatrix4x3dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
51717		#[cfg(feature = "catch_nullptr")]
51718		let ret = process_catch("glProgramUniformMatrix4x3dv", catch_unwind(||(self.version_4_1.programuniformmatrix4x3dv)(program, location, count, transpose, value)));
51719		#[cfg(not(feature = "catch_nullptr"))]
51720		let ret = {(self.version_4_1.programuniformmatrix4x3dv)(program, location, count, transpose, value); Ok(())};
51721		#[cfg(feature = "diagnose")]
51722		if let Ok(ret) = ret {
51723			return to_result("glProgramUniformMatrix4x3dv", ret, (self.version_4_1.geterror)());
51724		} else {
51725			return ret
51726		}
51727		#[cfg(not(feature = "diagnose"))]
51728		return ret;
51729	}
51730	#[inline(always)]
51731	fn glValidateProgramPipeline(&self, pipeline: GLuint) -> Result<()> {
51732		#[cfg(feature = "catch_nullptr")]
51733		let ret = process_catch("glValidateProgramPipeline", catch_unwind(||(self.version_4_1.validateprogrampipeline)(pipeline)));
51734		#[cfg(not(feature = "catch_nullptr"))]
51735		let ret = {(self.version_4_1.validateprogrampipeline)(pipeline); Ok(())};
51736		#[cfg(feature = "diagnose")]
51737		if let Ok(ret) = ret {
51738			return to_result("glValidateProgramPipeline", ret, (self.version_4_1.geterror)());
51739		} else {
51740			return ret
51741		}
51742		#[cfg(not(feature = "diagnose"))]
51743		return ret;
51744	}
51745	#[inline(always)]
51746	fn glGetProgramPipelineInfoLog(&self, pipeline: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()> {
51747		#[cfg(feature = "catch_nullptr")]
51748		let ret = process_catch("glGetProgramPipelineInfoLog", catch_unwind(||(self.version_4_1.getprogrampipelineinfolog)(pipeline, bufSize, length, infoLog)));
51749		#[cfg(not(feature = "catch_nullptr"))]
51750		let ret = {(self.version_4_1.getprogrampipelineinfolog)(pipeline, bufSize, length, infoLog); Ok(())};
51751		#[cfg(feature = "diagnose")]
51752		if let Ok(ret) = ret {
51753			return to_result("glGetProgramPipelineInfoLog", ret, (self.version_4_1.geterror)());
51754		} else {
51755			return ret
51756		}
51757		#[cfg(not(feature = "diagnose"))]
51758		return ret;
51759	}
51760	#[inline(always)]
51761	fn glVertexAttribL1d(&self, index: GLuint, x: GLdouble) -> Result<()> {
51762		#[cfg(feature = "catch_nullptr")]
51763		let ret = process_catch("glVertexAttribL1d", catch_unwind(||(self.version_4_1.vertexattribl1d)(index, x)));
51764		#[cfg(not(feature = "catch_nullptr"))]
51765		let ret = {(self.version_4_1.vertexattribl1d)(index, x); Ok(())};
51766		#[cfg(feature = "diagnose")]
51767		if let Ok(ret) = ret {
51768			return to_result("glVertexAttribL1d", ret, (self.version_4_1.geterror)());
51769		} else {
51770			return ret
51771		}
51772		#[cfg(not(feature = "diagnose"))]
51773		return ret;
51774	}
51775	#[inline(always)]
51776	fn glVertexAttribL2d(&self, index: GLuint, x: GLdouble, y: GLdouble) -> Result<()> {
51777		#[cfg(feature = "catch_nullptr")]
51778		let ret = process_catch("glVertexAttribL2d", catch_unwind(||(self.version_4_1.vertexattribl2d)(index, x, y)));
51779		#[cfg(not(feature = "catch_nullptr"))]
51780		let ret = {(self.version_4_1.vertexattribl2d)(index, x, y); Ok(())};
51781		#[cfg(feature = "diagnose")]
51782		if let Ok(ret) = ret {
51783			return to_result("glVertexAttribL2d", ret, (self.version_4_1.geterror)());
51784		} else {
51785			return ret
51786		}
51787		#[cfg(not(feature = "diagnose"))]
51788		return ret;
51789	}
51790	#[inline(always)]
51791	fn glVertexAttribL3d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble) -> Result<()> {
51792		#[cfg(feature = "catch_nullptr")]
51793		let ret = process_catch("glVertexAttribL3d", catch_unwind(||(self.version_4_1.vertexattribl3d)(index, x, y, z)));
51794		#[cfg(not(feature = "catch_nullptr"))]
51795		let ret = {(self.version_4_1.vertexattribl3d)(index, x, y, z); Ok(())};
51796		#[cfg(feature = "diagnose")]
51797		if let Ok(ret) = ret {
51798			return to_result("glVertexAttribL3d", ret, (self.version_4_1.geterror)());
51799		} else {
51800			return ret
51801		}
51802		#[cfg(not(feature = "diagnose"))]
51803		return ret;
51804	}
51805	#[inline(always)]
51806	fn glVertexAttribL4d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble, w: GLdouble) -> Result<()> {
51807		#[cfg(feature = "catch_nullptr")]
51808		let ret = process_catch("glVertexAttribL4d", catch_unwind(||(self.version_4_1.vertexattribl4d)(index, x, y, z, w)));
51809		#[cfg(not(feature = "catch_nullptr"))]
51810		let ret = {(self.version_4_1.vertexattribl4d)(index, x, y, z, w); Ok(())};
51811		#[cfg(feature = "diagnose")]
51812		if let Ok(ret) = ret {
51813			return to_result("glVertexAttribL4d", ret, (self.version_4_1.geterror)());
51814		} else {
51815			return ret
51816		}
51817		#[cfg(not(feature = "diagnose"))]
51818		return ret;
51819	}
51820	#[inline(always)]
51821	fn glVertexAttribL1dv(&self, index: GLuint, v: *const GLdouble) -> Result<()> {
51822		#[cfg(feature = "catch_nullptr")]
51823		let ret = process_catch("glVertexAttribL1dv", catch_unwind(||(self.version_4_1.vertexattribl1dv)(index, v)));
51824		#[cfg(not(feature = "catch_nullptr"))]
51825		let ret = {(self.version_4_1.vertexattribl1dv)(index, v); Ok(())};
51826		#[cfg(feature = "diagnose")]
51827		if let Ok(ret) = ret {
51828			return to_result("glVertexAttribL1dv", ret, (self.version_4_1.geterror)());
51829		} else {
51830			return ret
51831		}
51832		#[cfg(not(feature = "diagnose"))]
51833		return ret;
51834	}
51835	#[inline(always)]
51836	fn glVertexAttribL2dv(&self, index: GLuint, v: *const GLdouble) -> Result<()> {
51837		#[cfg(feature = "catch_nullptr")]
51838		let ret = process_catch("glVertexAttribL2dv", catch_unwind(||(self.version_4_1.vertexattribl2dv)(index, v)));
51839		#[cfg(not(feature = "catch_nullptr"))]
51840		let ret = {(self.version_4_1.vertexattribl2dv)(index, v); Ok(())};
51841		#[cfg(feature = "diagnose")]
51842		if let Ok(ret) = ret {
51843			return to_result("glVertexAttribL2dv", ret, (self.version_4_1.geterror)());
51844		} else {
51845			return ret
51846		}
51847		#[cfg(not(feature = "diagnose"))]
51848		return ret;
51849	}
51850	#[inline(always)]
51851	fn glVertexAttribL3dv(&self, index: GLuint, v: *const GLdouble) -> Result<()> {
51852		#[cfg(feature = "catch_nullptr")]
51853		let ret = process_catch("glVertexAttribL3dv", catch_unwind(||(self.version_4_1.vertexattribl3dv)(index, v)));
51854		#[cfg(not(feature = "catch_nullptr"))]
51855		let ret = {(self.version_4_1.vertexattribl3dv)(index, v); Ok(())};
51856		#[cfg(feature = "diagnose")]
51857		if let Ok(ret) = ret {
51858			return to_result("glVertexAttribL3dv", ret, (self.version_4_1.geterror)());
51859		} else {
51860			return ret
51861		}
51862		#[cfg(not(feature = "diagnose"))]
51863		return ret;
51864	}
51865	#[inline(always)]
51866	fn glVertexAttribL4dv(&self, index: GLuint, v: *const GLdouble) -> Result<()> {
51867		#[cfg(feature = "catch_nullptr")]
51868		let ret = process_catch("glVertexAttribL4dv", catch_unwind(||(self.version_4_1.vertexattribl4dv)(index, v)));
51869		#[cfg(not(feature = "catch_nullptr"))]
51870		let ret = {(self.version_4_1.vertexattribl4dv)(index, v); Ok(())};
51871		#[cfg(feature = "diagnose")]
51872		if let Ok(ret) = ret {
51873			return to_result("glVertexAttribL4dv", ret, (self.version_4_1.geterror)());
51874		} else {
51875			return ret
51876		}
51877		#[cfg(not(feature = "diagnose"))]
51878		return ret;
51879	}
51880	#[inline(always)]
51881	fn glVertexAttribLPointer(&self, index: GLuint, size: GLint, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()> {
51882		#[cfg(feature = "catch_nullptr")]
51883		let ret = process_catch("glVertexAttribLPointer", catch_unwind(||(self.version_4_1.vertexattriblpointer)(index, size, type_, stride, pointer)));
51884		#[cfg(not(feature = "catch_nullptr"))]
51885		let ret = {(self.version_4_1.vertexattriblpointer)(index, size, type_, stride, pointer); Ok(())};
51886		#[cfg(feature = "diagnose")]
51887		if let Ok(ret) = ret {
51888			return to_result("glVertexAttribLPointer", ret, (self.version_4_1.geterror)());
51889		} else {
51890			return ret
51891		}
51892		#[cfg(not(feature = "diagnose"))]
51893		return ret;
51894	}
51895	#[inline(always)]
51896	fn glGetVertexAttribLdv(&self, index: GLuint, pname: GLenum, params: *mut GLdouble) -> Result<()> {
51897		#[cfg(feature = "catch_nullptr")]
51898		let ret = process_catch("glGetVertexAttribLdv", catch_unwind(||(self.version_4_1.getvertexattribldv)(index, pname, params)));
51899		#[cfg(not(feature = "catch_nullptr"))]
51900		let ret = {(self.version_4_1.getvertexattribldv)(index, pname, params); Ok(())};
51901		#[cfg(feature = "diagnose")]
51902		if let Ok(ret) = ret {
51903			return to_result("glGetVertexAttribLdv", ret, (self.version_4_1.geterror)());
51904		} else {
51905			return ret
51906		}
51907		#[cfg(not(feature = "diagnose"))]
51908		return ret;
51909	}
51910	#[inline(always)]
51911	fn glViewportArrayv(&self, first: GLuint, count: GLsizei, v: *const GLfloat) -> Result<()> {
51912		#[cfg(feature = "catch_nullptr")]
51913		let ret = process_catch("glViewportArrayv", catch_unwind(||(self.version_4_1.viewportarrayv)(first, count, v)));
51914		#[cfg(not(feature = "catch_nullptr"))]
51915		let ret = {(self.version_4_1.viewportarrayv)(first, count, v); Ok(())};
51916		#[cfg(feature = "diagnose")]
51917		if let Ok(ret) = ret {
51918			return to_result("glViewportArrayv", ret, (self.version_4_1.geterror)());
51919		} else {
51920			return ret
51921		}
51922		#[cfg(not(feature = "diagnose"))]
51923		return ret;
51924	}
51925	#[inline(always)]
51926	fn glViewportIndexedf(&self, index: GLuint, x: GLfloat, y: GLfloat, w: GLfloat, h: GLfloat) -> Result<()> {
51927		#[cfg(feature = "catch_nullptr")]
51928		let ret = process_catch("glViewportIndexedf", catch_unwind(||(self.version_4_1.viewportindexedf)(index, x, y, w, h)));
51929		#[cfg(not(feature = "catch_nullptr"))]
51930		let ret = {(self.version_4_1.viewportindexedf)(index, x, y, w, h); Ok(())};
51931		#[cfg(feature = "diagnose")]
51932		if let Ok(ret) = ret {
51933			return to_result("glViewportIndexedf", ret, (self.version_4_1.geterror)());
51934		} else {
51935			return ret
51936		}
51937		#[cfg(not(feature = "diagnose"))]
51938		return ret;
51939	}
51940	#[inline(always)]
51941	fn glViewportIndexedfv(&self, index: GLuint, v: *const GLfloat) -> Result<()> {
51942		#[cfg(feature = "catch_nullptr")]
51943		let ret = process_catch("glViewportIndexedfv", catch_unwind(||(self.version_4_1.viewportindexedfv)(index, v)));
51944		#[cfg(not(feature = "catch_nullptr"))]
51945		let ret = {(self.version_4_1.viewportindexedfv)(index, v); Ok(())};
51946		#[cfg(feature = "diagnose")]
51947		if let Ok(ret) = ret {
51948			return to_result("glViewportIndexedfv", ret, (self.version_4_1.geterror)());
51949		} else {
51950			return ret
51951		}
51952		#[cfg(not(feature = "diagnose"))]
51953		return ret;
51954	}
51955	#[inline(always)]
51956	fn glScissorArrayv(&self, first: GLuint, count: GLsizei, v: *const GLint) -> Result<()> {
51957		#[cfg(feature = "catch_nullptr")]
51958		let ret = process_catch("glScissorArrayv", catch_unwind(||(self.version_4_1.scissorarrayv)(first, count, v)));
51959		#[cfg(not(feature = "catch_nullptr"))]
51960		let ret = {(self.version_4_1.scissorarrayv)(first, count, v); Ok(())};
51961		#[cfg(feature = "diagnose")]
51962		if let Ok(ret) = ret {
51963			return to_result("glScissorArrayv", ret, (self.version_4_1.geterror)());
51964		} else {
51965			return ret
51966		}
51967		#[cfg(not(feature = "diagnose"))]
51968		return ret;
51969	}
51970	#[inline(always)]
51971	fn glScissorIndexed(&self, index: GLuint, left: GLint, bottom: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
51972		#[cfg(feature = "catch_nullptr")]
51973		let ret = process_catch("glScissorIndexed", catch_unwind(||(self.version_4_1.scissorindexed)(index, left, bottom, width, height)));
51974		#[cfg(not(feature = "catch_nullptr"))]
51975		let ret = {(self.version_4_1.scissorindexed)(index, left, bottom, width, height); Ok(())};
51976		#[cfg(feature = "diagnose")]
51977		if let Ok(ret) = ret {
51978			return to_result("glScissorIndexed", ret, (self.version_4_1.geterror)());
51979		} else {
51980			return ret
51981		}
51982		#[cfg(not(feature = "diagnose"))]
51983		return ret;
51984	}
51985	#[inline(always)]
51986	fn glScissorIndexedv(&self, index: GLuint, v: *const GLint) -> Result<()> {
51987		#[cfg(feature = "catch_nullptr")]
51988		let ret = process_catch("glScissorIndexedv", catch_unwind(||(self.version_4_1.scissorindexedv)(index, v)));
51989		#[cfg(not(feature = "catch_nullptr"))]
51990		let ret = {(self.version_4_1.scissorindexedv)(index, v); Ok(())};
51991		#[cfg(feature = "diagnose")]
51992		if let Ok(ret) = ret {
51993			return to_result("glScissorIndexedv", ret, (self.version_4_1.geterror)());
51994		} else {
51995			return ret
51996		}
51997		#[cfg(not(feature = "diagnose"))]
51998		return ret;
51999	}
52000	#[inline(always)]
52001	fn glDepthRangeArrayv(&self, first: GLuint, count: GLsizei, v: *const GLdouble) -> Result<()> {
52002		#[cfg(feature = "catch_nullptr")]
52003		let ret = process_catch("glDepthRangeArrayv", catch_unwind(||(self.version_4_1.depthrangearrayv)(first, count, v)));
52004		#[cfg(not(feature = "catch_nullptr"))]
52005		let ret = {(self.version_4_1.depthrangearrayv)(first, count, v); Ok(())};
52006		#[cfg(feature = "diagnose")]
52007		if let Ok(ret) = ret {
52008			return to_result("glDepthRangeArrayv", ret, (self.version_4_1.geterror)());
52009		} else {
52010			return ret
52011		}
52012		#[cfg(not(feature = "diagnose"))]
52013		return ret;
52014	}
52015	#[inline(always)]
52016	fn glDepthRangeIndexed(&self, index: GLuint, n: GLdouble, f: GLdouble) -> Result<()> {
52017		#[cfg(feature = "catch_nullptr")]
52018		let ret = process_catch("glDepthRangeIndexed", catch_unwind(||(self.version_4_1.depthrangeindexed)(index, n, f)));
52019		#[cfg(not(feature = "catch_nullptr"))]
52020		let ret = {(self.version_4_1.depthrangeindexed)(index, n, f); Ok(())};
52021		#[cfg(feature = "diagnose")]
52022		if let Ok(ret) = ret {
52023			return to_result("glDepthRangeIndexed", ret, (self.version_4_1.geterror)());
52024		} else {
52025			return ret
52026		}
52027		#[cfg(not(feature = "diagnose"))]
52028		return ret;
52029	}
52030	#[inline(always)]
52031	fn glGetFloati_v(&self, target: GLenum, index: GLuint, data: *mut GLfloat) -> Result<()> {
52032		#[cfg(feature = "catch_nullptr")]
52033		let ret = process_catch("glGetFloati_v", catch_unwind(||(self.version_4_1.getfloati_v)(target, index, data)));
52034		#[cfg(not(feature = "catch_nullptr"))]
52035		let ret = {(self.version_4_1.getfloati_v)(target, index, data); Ok(())};
52036		#[cfg(feature = "diagnose")]
52037		if let Ok(ret) = ret {
52038			return to_result("glGetFloati_v", ret, (self.version_4_1.geterror)());
52039		} else {
52040			return ret
52041		}
52042		#[cfg(not(feature = "diagnose"))]
52043		return ret;
52044	}
52045	#[inline(always)]
52046	fn glGetDoublei_v(&self, target: GLenum, index: GLuint, data: *mut GLdouble) -> Result<()> {
52047		#[cfg(feature = "catch_nullptr")]
52048		let ret = process_catch("glGetDoublei_v", catch_unwind(||(self.version_4_1.getdoublei_v)(target, index, data)));
52049		#[cfg(not(feature = "catch_nullptr"))]
52050		let ret = {(self.version_4_1.getdoublei_v)(target, index, data); Ok(())};
52051		#[cfg(feature = "diagnose")]
52052		if let Ok(ret) = ret {
52053			return to_result("glGetDoublei_v", ret, (self.version_4_1.geterror)());
52054		} else {
52055			return ret
52056		}
52057		#[cfg(not(feature = "diagnose"))]
52058		return ret;
52059	}
52060}
52061
52062impl GL_4_2_g for GLCore {
52063	#[inline(always)]
52064	fn glDrawArraysInstancedBaseInstance(&self, mode: GLenum, first: GLint, count: GLsizei, instancecount: GLsizei, baseinstance: GLuint) -> Result<()> {
52065		#[cfg(feature = "catch_nullptr")]
52066		let ret = process_catch("glDrawArraysInstancedBaseInstance", catch_unwind(||(self.version_4_2.drawarraysinstancedbaseinstance)(mode, first, count, instancecount, baseinstance)));
52067		#[cfg(not(feature = "catch_nullptr"))]
52068		let ret = {(self.version_4_2.drawarraysinstancedbaseinstance)(mode, first, count, instancecount, baseinstance); Ok(())};
52069		#[cfg(feature = "diagnose")]
52070		if let Ok(ret) = ret {
52071			return to_result("glDrawArraysInstancedBaseInstance", ret, (self.version_4_2.geterror)());
52072		} else {
52073			return ret
52074		}
52075		#[cfg(not(feature = "diagnose"))]
52076		return ret;
52077	}
52078	#[inline(always)]
52079	fn glDrawElementsInstancedBaseInstance(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei, baseinstance: GLuint) -> Result<()> {
52080		#[cfg(feature = "catch_nullptr")]
52081		let ret = process_catch("glDrawElementsInstancedBaseInstance", catch_unwind(||(self.version_4_2.drawelementsinstancedbaseinstance)(mode, count, type_, indices, instancecount, baseinstance)));
52082		#[cfg(not(feature = "catch_nullptr"))]
52083		let ret = {(self.version_4_2.drawelementsinstancedbaseinstance)(mode, count, type_, indices, instancecount, baseinstance); Ok(())};
52084		#[cfg(feature = "diagnose")]
52085		if let Ok(ret) = ret {
52086			return to_result("glDrawElementsInstancedBaseInstance", ret, (self.version_4_2.geterror)());
52087		} else {
52088			return ret
52089		}
52090		#[cfg(not(feature = "diagnose"))]
52091		return ret;
52092	}
52093	#[inline(always)]
52094	fn glDrawElementsInstancedBaseVertexBaseInstance(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei, basevertex: GLint, baseinstance: GLuint) -> Result<()> {
52095		#[cfg(feature = "catch_nullptr")]
52096		let ret = process_catch("glDrawElementsInstancedBaseVertexBaseInstance", catch_unwind(||(self.version_4_2.drawelementsinstancedbasevertexbaseinstance)(mode, count, type_, indices, instancecount, basevertex, baseinstance)));
52097		#[cfg(not(feature = "catch_nullptr"))]
52098		let ret = {(self.version_4_2.drawelementsinstancedbasevertexbaseinstance)(mode, count, type_, indices, instancecount, basevertex, baseinstance); Ok(())};
52099		#[cfg(feature = "diagnose")]
52100		if let Ok(ret) = ret {
52101			return to_result("glDrawElementsInstancedBaseVertexBaseInstance", ret, (self.version_4_2.geterror)());
52102		} else {
52103			return ret
52104		}
52105		#[cfg(not(feature = "diagnose"))]
52106		return ret;
52107	}
52108	#[inline(always)]
52109	fn glGetInternalformativ(&self, target: GLenum, internalformat: GLenum, pname: GLenum, count: GLsizei, params: *mut GLint) -> Result<()> {
52110		#[cfg(feature = "catch_nullptr")]
52111		let ret = process_catch("glGetInternalformativ", catch_unwind(||(self.version_4_2.getinternalformativ)(target, internalformat, pname, count, params)));
52112		#[cfg(not(feature = "catch_nullptr"))]
52113		let ret = {(self.version_4_2.getinternalformativ)(target, internalformat, pname, count, params); Ok(())};
52114		#[cfg(feature = "diagnose")]
52115		if let Ok(ret) = ret {
52116			return to_result("glGetInternalformativ", ret, (self.version_4_2.geterror)());
52117		} else {
52118			return ret
52119		}
52120		#[cfg(not(feature = "diagnose"))]
52121		return ret;
52122	}
52123	#[inline(always)]
52124	fn glGetActiveAtomicCounterBufferiv(&self, program: GLuint, bufferIndex: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
52125		#[cfg(feature = "catch_nullptr")]
52126		let ret = process_catch("glGetActiveAtomicCounterBufferiv", catch_unwind(||(self.version_4_2.getactiveatomiccounterbufferiv)(program, bufferIndex, pname, params)));
52127		#[cfg(not(feature = "catch_nullptr"))]
52128		let ret = {(self.version_4_2.getactiveatomiccounterbufferiv)(program, bufferIndex, pname, params); Ok(())};
52129		#[cfg(feature = "diagnose")]
52130		if let Ok(ret) = ret {
52131			return to_result("glGetActiveAtomicCounterBufferiv", ret, (self.version_4_2.geterror)());
52132		} else {
52133			return ret
52134		}
52135		#[cfg(not(feature = "diagnose"))]
52136		return ret;
52137	}
52138	#[inline(always)]
52139	fn glBindImageTexture(&self, unit: GLuint, texture: GLuint, level: GLint, layered: GLboolean, layer: GLint, access: GLenum, format: GLenum) -> Result<()> {
52140		#[cfg(feature = "catch_nullptr")]
52141		let ret = process_catch("glBindImageTexture", catch_unwind(||(self.version_4_2.bindimagetexture)(unit, texture, level, layered, layer, access, format)));
52142		#[cfg(not(feature = "catch_nullptr"))]
52143		let ret = {(self.version_4_2.bindimagetexture)(unit, texture, level, layered, layer, access, format); Ok(())};
52144		#[cfg(feature = "diagnose")]
52145		if let Ok(ret) = ret {
52146			return to_result("glBindImageTexture", ret, (self.version_4_2.geterror)());
52147		} else {
52148			return ret
52149		}
52150		#[cfg(not(feature = "diagnose"))]
52151		return ret;
52152	}
52153	#[inline(always)]
52154	fn glMemoryBarrier(&self, barriers: GLbitfield) -> Result<()> {
52155		#[cfg(feature = "catch_nullptr")]
52156		let ret = process_catch("glMemoryBarrier", catch_unwind(||(self.version_4_2.memorybarrier)(barriers)));
52157		#[cfg(not(feature = "catch_nullptr"))]
52158		let ret = {(self.version_4_2.memorybarrier)(barriers); Ok(())};
52159		#[cfg(feature = "diagnose")]
52160		if let Ok(ret) = ret {
52161			return to_result("glMemoryBarrier", ret, (self.version_4_2.geterror)());
52162		} else {
52163			return ret
52164		}
52165		#[cfg(not(feature = "diagnose"))]
52166		return ret;
52167	}
52168	#[inline(always)]
52169	fn glTexStorage1D(&self, target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei) -> Result<()> {
52170		#[cfg(feature = "catch_nullptr")]
52171		let ret = process_catch("glTexStorage1D", catch_unwind(||(self.version_4_2.texstorage1d)(target, levels, internalformat, width)));
52172		#[cfg(not(feature = "catch_nullptr"))]
52173		let ret = {(self.version_4_2.texstorage1d)(target, levels, internalformat, width); Ok(())};
52174		#[cfg(feature = "diagnose")]
52175		if let Ok(ret) = ret {
52176			return to_result("glTexStorage1D", ret, (self.version_4_2.geterror)());
52177		} else {
52178			return ret
52179		}
52180		#[cfg(not(feature = "diagnose"))]
52181		return ret;
52182	}
52183	#[inline(always)]
52184	fn glTexStorage2D(&self, target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()> {
52185		#[cfg(feature = "catch_nullptr")]
52186		let ret = process_catch("glTexStorage2D", catch_unwind(||(self.version_4_2.texstorage2d)(target, levels, internalformat, width, height)));
52187		#[cfg(not(feature = "catch_nullptr"))]
52188		let ret = {(self.version_4_2.texstorage2d)(target, levels, internalformat, width, height); Ok(())};
52189		#[cfg(feature = "diagnose")]
52190		if let Ok(ret) = ret {
52191			return to_result("glTexStorage2D", ret, (self.version_4_2.geterror)());
52192		} else {
52193			return ret
52194		}
52195		#[cfg(not(feature = "diagnose"))]
52196		return ret;
52197	}
52198	#[inline(always)]
52199	fn glTexStorage3D(&self, target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei) -> Result<()> {
52200		#[cfg(feature = "catch_nullptr")]
52201		let ret = process_catch("glTexStorage3D", catch_unwind(||(self.version_4_2.texstorage3d)(target, levels, internalformat, width, height, depth)));
52202		#[cfg(not(feature = "catch_nullptr"))]
52203		let ret = {(self.version_4_2.texstorage3d)(target, levels, internalformat, width, height, depth); Ok(())};
52204		#[cfg(feature = "diagnose")]
52205		if let Ok(ret) = ret {
52206			return to_result("glTexStorage3D", ret, (self.version_4_2.geterror)());
52207		} else {
52208			return ret
52209		}
52210		#[cfg(not(feature = "diagnose"))]
52211		return ret;
52212	}
52213	#[inline(always)]
52214	fn glDrawTransformFeedbackInstanced(&self, mode: GLenum, id: GLuint, instancecount: GLsizei) -> Result<()> {
52215		#[cfg(feature = "catch_nullptr")]
52216		let ret = process_catch("glDrawTransformFeedbackInstanced", catch_unwind(||(self.version_4_2.drawtransformfeedbackinstanced)(mode, id, instancecount)));
52217		#[cfg(not(feature = "catch_nullptr"))]
52218		let ret = {(self.version_4_2.drawtransformfeedbackinstanced)(mode, id, instancecount); Ok(())};
52219		#[cfg(feature = "diagnose")]
52220		if let Ok(ret) = ret {
52221			return to_result("glDrawTransformFeedbackInstanced", ret, (self.version_4_2.geterror)());
52222		} else {
52223			return ret
52224		}
52225		#[cfg(not(feature = "diagnose"))]
52226		return ret;
52227	}
52228	#[inline(always)]
52229	fn glDrawTransformFeedbackStreamInstanced(&self, mode: GLenum, id: GLuint, stream: GLuint, instancecount: GLsizei) -> Result<()> {
52230		#[cfg(feature = "catch_nullptr")]
52231		let ret = process_catch("glDrawTransformFeedbackStreamInstanced", catch_unwind(||(self.version_4_2.drawtransformfeedbackstreaminstanced)(mode, id, stream, instancecount)));
52232		#[cfg(not(feature = "catch_nullptr"))]
52233		let ret = {(self.version_4_2.drawtransformfeedbackstreaminstanced)(mode, id, stream, instancecount); Ok(())};
52234		#[cfg(feature = "diagnose")]
52235		if let Ok(ret) = ret {
52236			return to_result("glDrawTransformFeedbackStreamInstanced", ret, (self.version_4_2.geterror)());
52237		} else {
52238			return ret
52239		}
52240		#[cfg(not(feature = "diagnose"))]
52241		return ret;
52242	}
52243}
52244
52245impl GL_4_3_g for GLCore {
52246	#[inline(always)]
52247	fn glClearBufferData(&self, target: GLenum, internalformat: GLenum, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()> {
52248		#[cfg(feature = "catch_nullptr")]
52249		let ret = process_catch("glClearBufferData", catch_unwind(||(self.version_4_3.clearbufferdata)(target, internalformat, format, type_, data)));
52250		#[cfg(not(feature = "catch_nullptr"))]
52251		let ret = {(self.version_4_3.clearbufferdata)(target, internalformat, format, type_, data); Ok(())};
52252		#[cfg(feature = "diagnose")]
52253		if let Ok(ret) = ret {
52254			return to_result("glClearBufferData", ret, (self.version_4_3.geterror)());
52255		} else {
52256			return ret
52257		}
52258		#[cfg(not(feature = "diagnose"))]
52259		return ret;
52260	}
52261	#[inline(always)]
52262	fn glClearBufferSubData(&self, target: GLenum, internalformat: GLenum, offset: GLintptr, size: GLsizeiptr, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()> {
52263		#[cfg(feature = "catch_nullptr")]
52264		let ret = process_catch("glClearBufferSubData", catch_unwind(||(self.version_4_3.clearbuffersubdata)(target, internalformat, offset, size, format, type_, data)));
52265		#[cfg(not(feature = "catch_nullptr"))]
52266		let ret = {(self.version_4_3.clearbuffersubdata)(target, internalformat, offset, size, format, type_, data); Ok(())};
52267		#[cfg(feature = "diagnose")]
52268		if let Ok(ret) = ret {
52269			return to_result("glClearBufferSubData", ret, (self.version_4_3.geterror)());
52270		} else {
52271			return ret
52272		}
52273		#[cfg(not(feature = "diagnose"))]
52274		return ret;
52275	}
52276	#[inline(always)]
52277	fn glDispatchCompute(&self, num_groups_x: GLuint, num_groups_y: GLuint, num_groups_z: GLuint) -> Result<()> {
52278		#[cfg(feature = "catch_nullptr")]
52279		let ret = process_catch("glDispatchCompute", catch_unwind(||(self.version_4_3.dispatchcompute)(num_groups_x, num_groups_y, num_groups_z)));
52280		#[cfg(not(feature = "catch_nullptr"))]
52281		let ret = {(self.version_4_3.dispatchcompute)(num_groups_x, num_groups_y, num_groups_z); Ok(())};
52282		#[cfg(feature = "diagnose")]
52283		if let Ok(ret) = ret {
52284			return to_result("glDispatchCompute", ret, (self.version_4_3.geterror)());
52285		} else {
52286			return ret
52287		}
52288		#[cfg(not(feature = "diagnose"))]
52289		return ret;
52290	}
52291	#[inline(always)]
52292	fn glDispatchComputeIndirect(&self, indirect: GLintptr) -> Result<()> {
52293		#[cfg(feature = "catch_nullptr")]
52294		let ret = process_catch("glDispatchComputeIndirect", catch_unwind(||(self.version_4_3.dispatchcomputeindirect)(indirect)));
52295		#[cfg(not(feature = "catch_nullptr"))]
52296		let ret = {(self.version_4_3.dispatchcomputeindirect)(indirect); Ok(())};
52297		#[cfg(feature = "diagnose")]
52298		if let Ok(ret) = ret {
52299			return to_result("glDispatchComputeIndirect", ret, (self.version_4_3.geterror)());
52300		} else {
52301			return ret
52302		}
52303		#[cfg(not(feature = "diagnose"))]
52304		return ret;
52305	}
52306	#[inline(always)]
52307	fn glCopyImageSubData(&self, srcName: GLuint, srcTarget: GLenum, srcLevel: GLint, srcX: GLint, srcY: GLint, srcZ: GLint, dstName: GLuint, dstTarget: GLenum, dstLevel: GLint, dstX: GLint, dstY: GLint, dstZ: GLint, srcWidth: GLsizei, srcHeight: GLsizei, srcDepth: GLsizei) -> Result<()> {
52308		#[cfg(feature = "catch_nullptr")]
52309		let ret = process_catch("glCopyImageSubData", catch_unwind(||(self.version_4_3.copyimagesubdata)(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth)));
52310		#[cfg(not(feature = "catch_nullptr"))]
52311		let ret = {(self.version_4_3.copyimagesubdata)(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth); Ok(())};
52312		#[cfg(feature = "diagnose")]
52313		if let Ok(ret) = ret {
52314			return to_result("glCopyImageSubData", ret, (self.version_4_3.geterror)());
52315		} else {
52316			return ret
52317		}
52318		#[cfg(not(feature = "diagnose"))]
52319		return ret;
52320	}
52321	#[inline(always)]
52322	fn glFramebufferParameteri(&self, target: GLenum, pname: GLenum, param: GLint) -> Result<()> {
52323		#[cfg(feature = "catch_nullptr")]
52324		let ret = process_catch("glFramebufferParameteri", catch_unwind(||(self.version_4_3.framebufferparameteri)(target, pname, param)));
52325		#[cfg(not(feature = "catch_nullptr"))]
52326		let ret = {(self.version_4_3.framebufferparameteri)(target, pname, param); Ok(())};
52327		#[cfg(feature = "diagnose")]
52328		if let Ok(ret) = ret {
52329			return to_result("glFramebufferParameteri", ret, (self.version_4_3.geterror)());
52330		} else {
52331			return ret
52332		}
52333		#[cfg(not(feature = "diagnose"))]
52334		return ret;
52335	}
52336	#[inline(always)]
52337	fn glGetFramebufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
52338		#[cfg(feature = "catch_nullptr")]
52339		let ret = process_catch("glGetFramebufferParameteriv", catch_unwind(||(self.version_4_3.getframebufferparameteriv)(target, pname, params)));
52340		#[cfg(not(feature = "catch_nullptr"))]
52341		let ret = {(self.version_4_3.getframebufferparameteriv)(target, pname, params); Ok(())};
52342		#[cfg(feature = "diagnose")]
52343		if let Ok(ret) = ret {
52344			return to_result("glGetFramebufferParameteriv", ret, (self.version_4_3.geterror)());
52345		} else {
52346			return ret
52347		}
52348		#[cfg(not(feature = "diagnose"))]
52349		return ret;
52350	}
52351	#[inline(always)]
52352	fn glGetInternalformati64v(&self, target: GLenum, internalformat: GLenum, pname: GLenum, count: GLsizei, params: *mut GLint64) -> Result<()> {
52353		#[cfg(feature = "catch_nullptr")]
52354		let ret = process_catch("glGetInternalformati64v", catch_unwind(||(self.version_4_3.getinternalformati64v)(target, internalformat, pname, count, params)));
52355		#[cfg(not(feature = "catch_nullptr"))]
52356		let ret = {(self.version_4_3.getinternalformati64v)(target, internalformat, pname, count, params); Ok(())};
52357		#[cfg(feature = "diagnose")]
52358		if let Ok(ret) = ret {
52359			return to_result("glGetInternalformati64v", ret, (self.version_4_3.geterror)());
52360		} else {
52361			return ret
52362		}
52363		#[cfg(not(feature = "diagnose"))]
52364		return ret;
52365	}
52366	#[inline(always)]
52367	fn glInvalidateTexSubImage(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei) -> Result<()> {
52368		#[cfg(feature = "catch_nullptr")]
52369		let ret = process_catch("glInvalidateTexSubImage", catch_unwind(||(self.version_4_3.invalidatetexsubimage)(texture, level, xoffset, yoffset, zoffset, width, height, depth)));
52370		#[cfg(not(feature = "catch_nullptr"))]
52371		let ret = {(self.version_4_3.invalidatetexsubimage)(texture, level, xoffset, yoffset, zoffset, width, height, depth); Ok(())};
52372		#[cfg(feature = "diagnose")]
52373		if let Ok(ret) = ret {
52374			return to_result("glInvalidateTexSubImage", ret, (self.version_4_3.geterror)());
52375		} else {
52376			return ret
52377		}
52378		#[cfg(not(feature = "diagnose"))]
52379		return ret;
52380	}
52381	#[inline(always)]
52382	fn glInvalidateTexImage(&self, texture: GLuint, level: GLint) -> Result<()> {
52383		#[cfg(feature = "catch_nullptr")]
52384		let ret = process_catch("glInvalidateTexImage", catch_unwind(||(self.version_4_3.invalidateteximage)(texture, level)));
52385		#[cfg(not(feature = "catch_nullptr"))]
52386		let ret = {(self.version_4_3.invalidateteximage)(texture, level); Ok(())};
52387		#[cfg(feature = "diagnose")]
52388		if let Ok(ret) = ret {
52389			return to_result("glInvalidateTexImage", ret, (self.version_4_3.geterror)());
52390		} else {
52391			return ret
52392		}
52393		#[cfg(not(feature = "diagnose"))]
52394		return ret;
52395	}
52396	#[inline(always)]
52397	fn glInvalidateBufferSubData(&self, buffer: GLuint, offset: GLintptr, length: GLsizeiptr) -> Result<()> {
52398		#[cfg(feature = "catch_nullptr")]
52399		let ret = process_catch("glInvalidateBufferSubData", catch_unwind(||(self.version_4_3.invalidatebuffersubdata)(buffer, offset, length)));
52400		#[cfg(not(feature = "catch_nullptr"))]
52401		let ret = {(self.version_4_3.invalidatebuffersubdata)(buffer, offset, length); Ok(())};
52402		#[cfg(feature = "diagnose")]
52403		if let Ok(ret) = ret {
52404			return to_result("glInvalidateBufferSubData", ret, (self.version_4_3.geterror)());
52405		} else {
52406			return ret
52407		}
52408		#[cfg(not(feature = "diagnose"))]
52409		return ret;
52410	}
52411	#[inline(always)]
52412	fn glInvalidateBufferData(&self, buffer: GLuint) -> Result<()> {
52413		#[cfg(feature = "catch_nullptr")]
52414		let ret = process_catch("glInvalidateBufferData", catch_unwind(||(self.version_4_3.invalidatebufferdata)(buffer)));
52415		#[cfg(not(feature = "catch_nullptr"))]
52416		let ret = {(self.version_4_3.invalidatebufferdata)(buffer); Ok(())};
52417		#[cfg(feature = "diagnose")]
52418		if let Ok(ret) = ret {
52419			return to_result("glInvalidateBufferData", ret, (self.version_4_3.geterror)());
52420		} else {
52421			return ret
52422		}
52423		#[cfg(not(feature = "diagnose"))]
52424		return ret;
52425	}
52426	#[inline(always)]
52427	fn glInvalidateFramebuffer(&self, target: GLenum, numAttachments: GLsizei, attachments: *const GLenum) -> Result<()> {
52428		#[cfg(feature = "catch_nullptr")]
52429		let ret = process_catch("glInvalidateFramebuffer", catch_unwind(||(self.version_4_3.invalidateframebuffer)(target, numAttachments, attachments)));
52430		#[cfg(not(feature = "catch_nullptr"))]
52431		let ret = {(self.version_4_3.invalidateframebuffer)(target, numAttachments, attachments); Ok(())};
52432		#[cfg(feature = "diagnose")]
52433		if let Ok(ret) = ret {
52434			return to_result("glInvalidateFramebuffer", ret, (self.version_4_3.geterror)());
52435		} else {
52436			return ret
52437		}
52438		#[cfg(not(feature = "diagnose"))]
52439		return ret;
52440	}
52441	#[inline(always)]
52442	fn glInvalidateSubFramebuffer(&self, target: GLenum, numAttachments: GLsizei, attachments: *const GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
52443		#[cfg(feature = "catch_nullptr")]
52444		let ret = process_catch("glInvalidateSubFramebuffer", catch_unwind(||(self.version_4_3.invalidatesubframebuffer)(target, numAttachments, attachments, x, y, width, height)));
52445		#[cfg(not(feature = "catch_nullptr"))]
52446		let ret = {(self.version_4_3.invalidatesubframebuffer)(target, numAttachments, attachments, x, y, width, height); Ok(())};
52447		#[cfg(feature = "diagnose")]
52448		if let Ok(ret) = ret {
52449			return to_result("glInvalidateSubFramebuffer", ret, (self.version_4_3.geterror)());
52450		} else {
52451			return ret
52452		}
52453		#[cfg(not(feature = "diagnose"))]
52454		return ret;
52455	}
52456	#[inline(always)]
52457	fn glMultiDrawArraysIndirect(&self, mode: GLenum, indirect: *const c_void, drawcount: GLsizei, stride: GLsizei) -> Result<()> {
52458		#[cfg(feature = "catch_nullptr")]
52459		let ret = process_catch("glMultiDrawArraysIndirect", catch_unwind(||(self.version_4_3.multidrawarraysindirect)(mode, indirect, drawcount, stride)));
52460		#[cfg(not(feature = "catch_nullptr"))]
52461		let ret = {(self.version_4_3.multidrawarraysindirect)(mode, indirect, drawcount, stride); Ok(())};
52462		#[cfg(feature = "diagnose")]
52463		if let Ok(ret) = ret {
52464			return to_result("glMultiDrawArraysIndirect", ret, (self.version_4_3.geterror)());
52465		} else {
52466			return ret
52467		}
52468		#[cfg(not(feature = "diagnose"))]
52469		return ret;
52470	}
52471	#[inline(always)]
52472	fn glMultiDrawElementsIndirect(&self, mode: GLenum, type_: GLenum, indirect: *const c_void, drawcount: GLsizei, stride: GLsizei) -> Result<()> {
52473		#[cfg(feature = "catch_nullptr")]
52474		let ret = process_catch("glMultiDrawElementsIndirect", catch_unwind(||(self.version_4_3.multidrawelementsindirect)(mode, type_, indirect, drawcount, stride)));
52475		#[cfg(not(feature = "catch_nullptr"))]
52476		let ret = {(self.version_4_3.multidrawelementsindirect)(mode, type_, indirect, drawcount, stride); Ok(())};
52477		#[cfg(feature = "diagnose")]
52478		if let Ok(ret) = ret {
52479			return to_result("glMultiDrawElementsIndirect", ret, (self.version_4_3.geterror)());
52480		} else {
52481			return ret
52482		}
52483		#[cfg(not(feature = "diagnose"))]
52484		return ret;
52485	}
52486	#[inline(always)]
52487	fn glGetProgramInterfaceiv(&self, program: GLuint, programInterface: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
52488		#[cfg(feature = "catch_nullptr")]
52489		let ret = process_catch("glGetProgramInterfaceiv", catch_unwind(||(self.version_4_3.getprograminterfaceiv)(program, programInterface, pname, params)));
52490		#[cfg(not(feature = "catch_nullptr"))]
52491		let ret = {(self.version_4_3.getprograminterfaceiv)(program, programInterface, pname, params); Ok(())};
52492		#[cfg(feature = "diagnose")]
52493		if let Ok(ret) = ret {
52494			return to_result("glGetProgramInterfaceiv", ret, (self.version_4_3.geterror)());
52495		} else {
52496			return ret
52497		}
52498		#[cfg(not(feature = "diagnose"))]
52499		return ret;
52500	}
52501	#[inline(always)]
52502	fn glGetProgramResourceIndex(&self, program: GLuint, programInterface: GLenum, name: *const GLchar) -> Result<GLuint> {
52503		#[cfg(feature = "catch_nullptr")]
52504		let ret = process_catch("glGetProgramResourceIndex", catch_unwind(||(self.version_4_3.getprogramresourceindex)(program, programInterface, name)));
52505		#[cfg(not(feature = "catch_nullptr"))]
52506		let ret = Ok((self.version_4_3.getprogramresourceindex)(program, programInterface, name));
52507		#[cfg(feature = "diagnose")]
52508		if let Ok(ret) = ret {
52509			return to_result("glGetProgramResourceIndex", ret, (self.version_4_3.geterror)());
52510		} else {
52511			return ret
52512		}
52513		#[cfg(not(feature = "diagnose"))]
52514		return ret;
52515	}
52516	#[inline(always)]
52517	fn glGetProgramResourceName(&self, program: GLuint, programInterface: GLenum, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, name: *mut GLchar) -> Result<()> {
52518		#[cfg(feature = "catch_nullptr")]
52519		let ret = process_catch("glGetProgramResourceName", catch_unwind(||(self.version_4_3.getprogramresourcename)(program, programInterface, index, bufSize, length, name)));
52520		#[cfg(not(feature = "catch_nullptr"))]
52521		let ret = {(self.version_4_3.getprogramresourcename)(program, programInterface, index, bufSize, length, name); Ok(())};
52522		#[cfg(feature = "diagnose")]
52523		if let Ok(ret) = ret {
52524			return to_result("glGetProgramResourceName", ret, (self.version_4_3.geterror)());
52525		} else {
52526			return ret
52527		}
52528		#[cfg(not(feature = "diagnose"))]
52529		return ret;
52530	}
52531	#[inline(always)]
52532	fn glGetProgramResourceiv(&self, program: GLuint, programInterface: GLenum, index: GLuint, propCount: GLsizei, props: *const GLenum, count: GLsizei, length: *mut GLsizei, params: *mut GLint) -> Result<()> {
52533		#[cfg(feature = "catch_nullptr")]
52534		let ret = process_catch("glGetProgramResourceiv", catch_unwind(||(self.version_4_3.getprogramresourceiv)(program, programInterface, index, propCount, props, count, length, params)));
52535		#[cfg(not(feature = "catch_nullptr"))]
52536		let ret = {(self.version_4_3.getprogramresourceiv)(program, programInterface, index, propCount, props, count, length, params); Ok(())};
52537		#[cfg(feature = "diagnose")]
52538		if let Ok(ret) = ret {
52539			return to_result("glGetProgramResourceiv", ret, (self.version_4_3.geterror)());
52540		} else {
52541			return ret
52542		}
52543		#[cfg(not(feature = "diagnose"))]
52544		return ret;
52545	}
52546	#[inline(always)]
52547	fn glGetProgramResourceLocation(&self, program: GLuint, programInterface: GLenum, name: *const GLchar) -> Result<GLint> {
52548		#[cfg(feature = "catch_nullptr")]
52549		let ret = process_catch("glGetProgramResourceLocation", catch_unwind(||(self.version_4_3.getprogramresourcelocation)(program, programInterface, name)));
52550		#[cfg(not(feature = "catch_nullptr"))]
52551		let ret = Ok((self.version_4_3.getprogramresourcelocation)(program, programInterface, name));
52552		#[cfg(feature = "diagnose")]
52553		if let Ok(ret) = ret {
52554			return to_result("glGetProgramResourceLocation", ret, (self.version_4_3.geterror)());
52555		} else {
52556			return ret
52557		}
52558		#[cfg(not(feature = "diagnose"))]
52559		return ret;
52560	}
52561	#[inline(always)]
52562	fn glGetProgramResourceLocationIndex(&self, program: GLuint, programInterface: GLenum, name: *const GLchar) -> Result<GLint> {
52563		#[cfg(feature = "catch_nullptr")]
52564		let ret = process_catch("glGetProgramResourceLocationIndex", catch_unwind(||(self.version_4_3.getprogramresourcelocationindex)(program, programInterface, name)));
52565		#[cfg(not(feature = "catch_nullptr"))]
52566		let ret = Ok((self.version_4_3.getprogramresourcelocationindex)(program, programInterface, name));
52567		#[cfg(feature = "diagnose")]
52568		if let Ok(ret) = ret {
52569			return to_result("glGetProgramResourceLocationIndex", ret, (self.version_4_3.geterror)());
52570		} else {
52571			return ret
52572		}
52573		#[cfg(not(feature = "diagnose"))]
52574		return ret;
52575	}
52576	#[inline(always)]
52577	fn glShaderStorageBlockBinding(&self, program: GLuint, storageBlockIndex: GLuint, storageBlockBinding: GLuint) -> Result<()> {
52578		#[cfg(feature = "catch_nullptr")]
52579		let ret = process_catch("glShaderStorageBlockBinding", catch_unwind(||(self.version_4_3.shaderstorageblockbinding)(program, storageBlockIndex, storageBlockBinding)));
52580		#[cfg(not(feature = "catch_nullptr"))]
52581		let ret = {(self.version_4_3.shaderstorageblockbinding)(program, storageBlockIndex, storageBlockBinding); Ok(())};
52582		#[cfg(feature = "diagnose")]
52583		if let Ok(ret) = ret {
52584			return to_result("glShaderStorageBlockBinding", ret, (self.version_4_3.geterror)());
52585		} else {
52586			return ret
52587		}
52588		#[cfg(not(feature = "diagnose"))]
52589		return ret;
52590	}
52591	#[inline(always)]
52592	fn glTexBufferRange(&self, target: GLenum, internalformat: GLenum, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()> {
52593		#[cfg(feature = "catch_nullptr")]
52594		let ret = process_catch("glTexBufferRange", catch_unwind(||(self.version_4_3.texbufferrange)(target, internalformat, buffer, offset, size)));
52595		#[cfg(not(feature = "catch_nullptr"))]
52596		let ret = {(self.version_4_3.texbufferrange)(target, internalformat, buffer, offset, size); Ok(())};
52597		#[cfg(feature = "diagnose")]
52598		if let Ok(ret) = ret {
52599			return to_result("glTexBufferRange", ret, (self.version_4_3.geterror)());
52600		} else {
52601			return ret
52602		}
52603		#[cfg(not(feature = "diagnose"))]
52604		return ret;
52605	}
52606	#[inline(always)]
52607	fn glTexStorage2DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, fixedsamplelocations: GLboolean) -> Result<()> {
52608		#[cfg(feature = "catch_nullptr")]
52609		let ret = process_catch("glTexStorage2DMultisample", catch_unwind(||(self.version_4_3.texstorage2dmultisample)(target, samples, internalformat, width, height, fixedsamplelocations)));
52610		#[cfg(not(feature = "catch_nullptr"))]
52611		let ret = {(self.version_4_3.texstorage2dmultisample)(target, samples, internalformat, width, height, fixedsamplelocations); Ok(())};
52612		#[cfg(feature = "diagnose")]
52613		if let Ok(ret) = ret {
52614			return to_result("glTexStorage2DMultisample", ret, (self.version_4_3.geterror)());
52615		} else {
52616			return ret
52617		}
52618		#[cfg(not(feature = "diagnose"))]
52619		return ret;
52620	}
52621	#[inline(always)]
52622	fn glTexStorage3DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, fixedsamplelocations: GLboolean) -> Result<()> {
52623		#[cfg(feature = "catch_nullptr")]
52624		let ret = process_catch("glTexStorage3DMultisample", catch_unwind(||(self.version_4_3.texstorage3dmultisample)(target, samples, internalformat, width, height, depth, fixedsamplelocations)));
52625		#[cfg(not(feature = "catch_nullptr"))]
52626		let ret = {(self.version_4_3.texstorage3dmultisample)(target, samples, internalformat, width, height, depth, fixedsamplelocations); Ok(())};
52627		#[cfg(feature = "diagnose")]
52628		if let Ok(ret) = ret {
52629			return to_result("glTexStorage3DMultisample", ret, (self.version_4_3.geterror)());
52630		} else {
52631			return ret
52632		}
52633		#[cfg(not(feature = "diagnose"))]
52634		return ret;
52635	}
52636	#[inline(always)]
52637	fn glTextureView(&self, texture: GLuint, target: GLenum, origtexture: GLuint, internalformat: GLenum, minlevel: GLuint, numlevels: GLuint, minlayer: GLuint, numlayers: GLuint) -> Result<()> {
52638		#[cfg(feature = "catch_nullptr")]
52639		let ret = process_catch("glTextureView", catch_unwind(||(self.version_4_3.textureview)(texture, target, origtexture, internalformat, minlevel, numlevels, minlayer, numlayers)));
52640		#[cfg(not(feature = "catch_nullptr"))]
52641		let ret = {(self.version_4_3.textureview)(texture, target, origtexture, internalformat, minlevel, numlevels, minlayer, numlayers); Ok(())};
52642		#[cfg(feature = "diagnose")]
52643		if let Ok(ret) = ret {
52644			return to_result("glTextureView", ret, (self.version_4_3.geterror)());
52645		} else {
52646			return ret
52647		}
52648		#[cfg(not(feature = "diagnose"))]
52649		return ret;
52650	}
52651	#[inline(always)]
52652	fn glBindVertexBuffer(&self, bindingindex: GLuint, buffer: GLuint, offset: GLintptr, stride: GLsizei) -> Result<()> {
52653		#[cfg(feature = "catch_nullptr")]
52654		let ret = process_catch("glBindVertexBuffer", catch_unwind(||(self.version_4_3.bindvertexbuffer)(bindingindex, buffer, offset, stride)));
52655		#[cfg(not(feature = "catch_nullptr"))]
52656		let ret = {(self.version_4_3.bindvertexbuffer)(bindingindex, buffer, offset, stride); Ok(())};
52657		#[cfg(feature = "diagnose")]
52658		if let Ok(ret) = ret {
52659			return to_result("glBindVertexBuffer", ret, (self.version_4_3.geterror)());
52660		} else {
52661			return ret
52662		}
52663		#[cfg(not(feature = "diagnose"))]
52664		return ret;
52665	}
52666	#[inline(always)]
52667	fn glVertexAttribFormat(&self, attribindex: GLuint, size: GLint, type_: GLenum, normalized: GLboolean, relativeoffset: GLuint) -> Result<()> {
52668		#[cfg(feature = "catch_nullptr")]
52669		let ret = process_catch("glVertexAttribFormat", catch_unwind(||(self.version_4_3.vertexattribformat)(attribindex, size, type_, normalized, relativeoffset)));
52670		#[cfg(not(feature = "catch_nullptr"))]
52671		let ret = {(self.version_4_3.vertexattribformat)(attribindex, size, type_, normalized, relativeoffset); Ok(())};
52672		#[cfg(feature = "diagnose")]
52673		if let Ok(ret) = ret {
52674			return to_result("glVertexAttribFormat", ret, (self.version_4_3.geterror)());
52675		} else {
52676			return ret
52677		}
52678		#[cfg(not(feature = "diagnose"))]
52679		return ret;
52680	}
52681	#[inline(always)]
52682	fn glVertexAttribIFormat(&self, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()> {
52683		#[cfg(feature = "catch_nullptr")]
52684		let ret = process_catch("glVertexAttribIFormat", catch_unwind(||(self.version_4_3.vertexattribiformat)(attribindex, size, type_, relativeoffset)));
52685		#[cfg(not(feature = "catch_nullptr"))]
52686		let ret = {(self.version_4_3.vertexattribiformat)(attribindex, size, type_, relativeoffset); Ok(())};
52687		#[cfg(feature = "diagnose")]
52688		if let Ok(ret) = ret {
52689			return to_result("glVertexAttribIFormat", ret, (self.version_4_3.geterror)());
52690		} else {
52691			return ret
52692		}
52693		#[cfg(not(feature = "diagnose"))]
52694		return ret;
52695	}
52696	#[inline(always)]
52697	fn glVertexAttribLFormat(&self, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()> {
52698		#[cfg(feature = "catch_nullptr")]
52699		let ret = process_catch("glVertexAttribLFormat", catch_unwind(||(self.version_4_3.vertexattriblformat)(attribindex, size, type_, relativeoffset)));
52700		#[cfg(not(feature = "catch_nullptr"))]
52701		let ret = {(self.version_4_3.vertexattriblformat)(attribindex, size, type_, relativeoffset); Ok(())};
52702		#[cfg(feature = "diagnose")]
52703		if let Ok(ret) = ret {
52704			return to_result("glVertexAttribLFormat", ret, (self.version_4_3.geterror)());
52705		} else {
52706			return ret
52707		}
52708		#[cfg(not(feature = "diagnose"))]
52709		return ret;
52710	}
52711	#[inline(always)]
52712	fn glVertexAttribBinding(&self, attribindex: GLuint, bindingindex: GLuint) -> Result<()> {
52713		#[cfg(feature = "catch_nullptr")]
52714		let ret = process_catch("glVertexAttribBinding", catch_unwind(||(self.version_4_3.vertexattribbinding)(attribindex, bindingindex)));
52715		#[cfg(not(feature = "catch_nullptr"))]
52716		let ret = {(self.version_4_3.vertexattribbinding)(attribindex, bindingindex); Ok(())};
52717		#[cfg(feature = "diagnose")]
52718		if let Ok(ret) = ret {
52719			return to_result("glVertexAttribBinding", ret, (self.version_4_3.geterror)());
52720		} else {
52721			return ret
52722		}
52723		#[cfg(not(feature = "diagnose"))]
52724		return ret;
52725	}
52726	#[inline(always)]
52727	fn glVertexBindingDivisor(&self, bindingindex: GLuint, divisor: GLuint) -> Result<()> {
52728		#[cfg(feature = "catch_nullptr")]
52729		let ret = process_catch("glVertexBindingDivisor", catch_unwind(||(self.version_4_3.vertexbindingdivisor)(bindingindex, divisor)));
52730		#[cfg(not(feature = "catch_nullptr"))]
52731		let ret = {(self.version_4_3.vertexbindingdivisor)(bindingindex, divisor); Ok(())};
52732		#[cfg(feature = "diagnose")]
52733		if let Ok(ret) = ret {
52734			return to_result("glVertexBindingDivisor", ret, (self.version_4_3.geterror)());
52735		} else {
52736			return ret
52737		}
52738		#[cfg(not(feature = "diagnose"))]
52739		return ret;
52740	}
52741	#[inline(always)]
52742	fn glDebugMessageControl(&self, source: GLenum, type_: GLenum, severity: GLenum, count: GLsizei, ids: *const GLuint, enabled: GLboolean) -> Result<()> {
52743		#[cfg(feature = "catch_nullptr")]
52744		let ret = process_catch("glDebugMessageControl", catch_unwind(||(self.version_4_3.debugmessagecontrol)(source, type_, severity, count, ids, enabled)));
52745		#[cfg(not(feature = "catch_nullptr"))]
52746		let ret = {(self.version_4_3.debugmessagecontrol)(source, type_, severity, count, ids, enabled); Ok(())};
52747		#[cfg(feature = "diagnose")]
52748		if let Ok(ret) = ret {
52749			return to_result("glDebugMessageControl", ret, (self.version_4_3.geterror)());
52750		} else {
52751			return ret
52752		}
52753		#[cfg(not(feature = "diagnose"))]
52754		return ret;
52755	}
52756	#[inline(always)]
52757	fn glDebugMessageInsert(&self, source: GLenum, type_: GLenum, id: GLuint, severity: GLenum, length: GLsizei, buf: *const GLchar) -> Result<()> {
52758		#[cfg(feature = "catch_nullptr")]
52759		let ret = process_catch("glDebugMessageInsert", catch_unwind(||(self.version_4_3.debugmessageinsert)(source, type_, id, severity, length, buf)));
52760		#[cfg(not(feature = "catch_nullptr"))]
52761		let ret = {(self.version_4_3.debugmessageinsert)(source, type_, id, severity, length, buf); Ok(())};
52762		#[cfg(feature = "diagnose")]
52763		if let Ok(ret) = ret {
52764			return to_result("glDebugMessageInsert", ret, (self.version_4_3.geterror)());
52765		} else {
52766			return ret
52767		}
52768		#[cfg(not(feature = "diagnose"))]
52769		return ret;
52770	}
52771	#[inline(always)]
52772	fn glDebugMessageCallback(&self, callback: GLDEBUGPROC, userParam: *const c_void) -> Result<()> {
52773		#[cfg(feature = "catch_nullptr")]
52774		let ret = process_catch("glDebugMessageCallback", catch_unwind(||(self.version_4_3.debugmessagecallback)(callback, userParam)));
52775		#[cfg(not(feature = "catch_nullptr"))]
52776		let ret = {(self.version_4_3.debugmessagecallback)(callback, userParam); Ok(())};
52777		#[cfg(feature = "diagnose")]
52778		if let Ok(ret) = ret {
52779			return to_result("glDebugMessageCallback", ret, (self.version_4_3.geterror)());
52780		} else {
52781			return ret
52782		}
52783		#[cfg(not(feature = "diagnose"))]
52784		return ret;
52785	}
52786	#[inline(always)]
52787	fn glGetDebugMessageLog(&self, count: GLuint, bufSize: GLsizei, sources: *mut GLenum, types: *mut GLenum, ids: *mut GLuint, severities: *mut GLenum, lengths: *mut GLsizei, messageLog: *mut GLchar) -> Result<GLuint> {
52788		#[cfg(feature = "catch_nullptr")]
52789		let ret = process_catch("glGetDebugMessageLog", catch_unwind(||(self.version_4_3.getdebugmessagelog)(count, bufSize, sources, types, ids, severities, lengths, messageLog)));
52790		#[cfg(not(feature = "catch_nullptr"))]
52791		let ret = Ok((self.version_4_3.getdebugmessagelog)(count, bufSize, sources, types, ids, severities, lengths, messageLog));
52792		#[cfg(feature = "diagnose")]
52793		if let Ok(ret) = ret {
52794			return to_result("glGetDebugMessageLog", ret, (self.version_4_3.geterror)());
52795		} else {
52796			return ret
52797		}
52798		#[cfg(not(feature = "diagnose"))]
52799		return ret;
52800	}
52801	#[inline(always)]
52802	fn glPushDebugGroup(&self, source: GLenum, id: GLuint, length: GLsizei, message: *const GLchar) -> Result<()> {
52803		#[cfg(feature = "catch_nullptr")]
52804		let ret = process_catch("glPushDebugGroup", catch_unwind(||(self.version_4_3.pushdebuggroup)(source, id, length, message)));
52805		#[cfg(not(feature = "catch_nullptr"))]
52806		let ret = {(self.version_4_3.pushdebuggroup)(source, id, length, message); Ok(())};
52807		#[cfg(feature = "diagnose")]
52808		if let Ok(ret) = ret {
52809			return to_result("glPushDebugGroup", ret, (self.version_4_3.geterror)());
52810		} else {
52811			return ret
52812		}
52813		#[cfg(not(feature = "diagnose"))]
52814		return ret;
52815	}
52816	#[inline(always)]
52817	fn glPopDebugGroup(&self) -> Result<()> {
52818		#[cfg(feature = "catch_nullptr")]
52819		let ret = process_catch("glPopDebugGroup", catch_unwind(||(self.version_4_3.popdebuggroup)()));
52820		#[cfg(not(feature = "catch_nullptr"))]
52821		let ret = {(self.version_4_3.popdebuggroup)(); Ok(())};
52822		#[cfg(feature = "diagnose")]
52823		if let Ok(ret) = ret {
52824			return to_result("glPopDebugGroup", ret, (self.version_4_3.geterror)());
52825		} else {
52826			return ret
52827		}
52828		#[cfg(not(feature = "diagnose"))]
52829		return ret;
52830	}
52831	#[inline(always)]
52832	fn glObjectLabel(&self, identifier: GLenum, name: GLuint, length: GLsizei, label: *const GLchar) -> Result<()> {
52833		#[cfg(feature = "catch_nullptr")]
52834		let ret = process_catch("glObjectLabel", catch_unwind(||(self.version_4_3.objectlabel)(identifier, name, length, label)));
52835		#[cfg(not(feature = "catch_nullptr"))]
52836		let ret = {(self.version_4_3.objectlabel)(identifier, name, length, label); Ok(())};
52837		#[cfg(feature = "diagnose")]
52838		if let Ok(ret) = ret {
52839			return to_result("glObjectLabel", ret, (self.version_4_3.geterror)());
52840		} else {
52841			return ret
52842		}
52843		#[cfg(not(feature = "diagnose"))]
52844		return ret;
52845	}
52846	#[inline(always)]
52847	fn glGetObjectLabel(&self, identifier: GLenum, name: GLuint, bufSize: GLsizei, length: *mut GLsizei, label: *mut GLchar) -> Result<()> {
52848		#[cfg(feature = "catch_nullptr")]
52849		let ret = process_catch("glGetObjectLabel", catch_unwind(||(self.version_4_3.getobjectlabel)(identifier, name, bufSize, length, label)));
52850		#[cfg(not(feature = "catch_nullptr"))]
52851		let ret = {(self.version_4_3.getobjectlabel)(identifier, name, bufSize, length, label); Ok(())};
52852		#[cfg(feature = "diagnose")]
52853		if let Ok(ret) = ret {
52854			return to_result("glGetObjectLabel", ret, (self.version_4_3.geterror)());
52855		} else {
52856			return ret
52857		}
52858		#[cfg(not(feature = "diagnose"))]
52859		return ret;
52860	}
52861	#[inline(always)]
52862	fn glObjectPtrLabel(&self, ptr: *const c_void, length: GLsizei, label: *const GLchar) -> Result<()> {
52863		#[cfg(feature = "catch_nullptr")]
52864		let ret = process_catch("glObjectPtrLabel", catch_unwind(||(self.version_4_3.objectptrlabel)(ptr, length, label)));
52865		#[cfg(not(feature = "catch_nullptr"))]
52866		let ret = {(self.version_4_3.objectptrlabel)(ptr, length, label); Ok(())};
52867		#[cfg(feature = "diagnose")]
52868		if let Ok(ret) = ret {
52869			return to_result("glObjectPtrLabel", ret, (self.version_4_3.geterror)());
52870		} else {
52871			return ret
52872		}
52873		#[cfg(not(feature = "diagnose"))]
52874		return ret;
52875	}
52876	#[inline(always)]
52877	fn glGetObjectPtrLabel(&self, ptr: *const c_void, bufSize: GLsizei, length: *mut GLsizei, label: *mut GLchar) -> Result<()> {
52878		#[cfg(feature = "catch_nullptr")]
52879		let ret = process_catch("glGetObjectPtrLabel", catch_unwind(||(self.version_4_3.getobjectptrlabel)(ptr, bufSize, length, label)));
52880		#[cfg(not(feature = "catch_nullptr"))]
52881		let ret = {(self.version_4_3.getobjectptrlabel)(ptr, bufSize, length, label); Ok(())};
52882		#[cfg(feature = "diagnose")]
52883		if let Ok(ret) = ret {
52884			return to_result("glGetObjectPtrLabel", ret, (self.version_4_3.geterror)());
52885		} else {
52886			return ret
52887		}
52888		#[cfg(not(feature = "diagnose"))]
52889		return ret;
52890	}
52891}
52892
52893impl GL_4_4_g for GLCore {
52894	#[inline(always)]
52895	fn glBufferStorage(&self, target: GLenum, size: GLsizeiptr, data: *const c_void, flags: GLbitfield) -> Result<()> {
52896		#[cfg(feature = "catch_nullptr")]
52897		let ret = process_catch("glBufferStorage", catch_unwind(||(self.version_4_4.bufferstorage)(target, size, data, flags)));
52898		#[cfg(not(feature = "catch_nullptr"))]
52899		let ret = {(self.version_4_4.bufferstorage)(target, size, data, flags); Ok(())};
52900		#[cfg(feature = "diagnose")]
52901		if let Ok(ret) = ret {
52902			return to_result("glBufferStorage", ret, (self.version_4_4.geterror)());
52903		} else {
52904			return ret
52905		}
52906		#[cfg(not(feature = "diagnose"))]
52907		return ret;
52908	}
52909	#[inline(always)]
52910	fn glClearTexImage(&self, texture: GLuint, level: GLint, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()> {
52911		#[cfg(feature = "catch_nullptr")]
52912		let ret = process_catch("glClearTexImage", catch_unwind(||(self.version_4_4.clearteximage)(texture, level, format, type_, data)));
52913		#[cfg(not(feature = "catch_nullptr"))]
52914		let ret = {(self.version_4_4.clearteximage)(texture, level, format, type_, data); Ok(())};
52915		#[cfg(feature = "diagnose")]
52916		if let Ok(ret) = ret {
52917			return to_result("glClearTexImage", ret, (self.version_4_4.geterror)());
52918		} else {
52919			return ret
52920		}
52921		#[cfg(not(feature = "diagnose"))]
52922		return ret;
52923	}
52924	#[inline(always)]
52925	fn glClearTexSubImage(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()> {
52926		#[cfg(feature = "catch_nullptr")]
52927		let ret = process_catch("glClearTexSubImage", catch_unwind(||(self.version_4_4.cleartexsubimage)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, data)));
52928		#[cfg(not(feature = "catch_nullptr"))]
52929		let ret = {(self.version_4_4.cleartexsubimage)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, data); Ok(())};
52930		#[cfg(feature = "diagnose")]
52931		if let Ok(ret) = ret {
52932			return to_result("glClearTexSubImage", ret, (self.version_4_4.geterror)());
52933		} else {
52934			return ret
52935		}
52936		#[cfg(not(feature = "diagnose"))]
52937		return ret;
52938	}
52939	#[inline(always)]
52940	fn glBindBuffersBase(&self, target: GLenum, first: GLuint, count: GLsizei, buffers: *const GLuint) -> Result<()> {
52941		#[cfg(feature = "catch_nullptr")]
52942		let ret = process_catch("glBindBuffersBase", catch_unwind(||(self.version_4_4.bindbuffersbase)(target, first, count, buffers)));
52943		#[cfg(not(feature = "catch_nullptr"))]
52944		let ret = {(self.version_4_4.bindbuffersbase)(target, first, count, buffers); Ok(())};
52945		#[cfg(feature = "diagnose")]
52946		if let Ok(ret) = ret {
52947			return to_result("glBindBuffersBase", ret, (self.version_4_4.geterror)());
52948		} else {
52949			return ret
52950		}
52951		#[cfg(not(feature = "diagnose"))]
52952		return ret;
52953	}
52954	#[inline(always)]
52955	fn glBindBuffersRange(&self, target: GLenum, first: GLuint, count: GLsizei, buffers: *const GLuint, offsets: *const GLintptr, sizes: *const GLsizeiptr) -> Result<()> {
52956		#[cfg(feature = "catch_nullptr")]
52957		let ret = process_catch("glBindBuffersRange", catch_unwind(||(self.version_4_4.bindbuffersrange)(target, first, count, buffers, offsets, sizes)));
52958		#[cfg(not(feature = "catch_nullptr"))]
52959		let ret = {(self.version_4_4.bindbuffersrange)(target, first, count, buffers, offsets, sizes); Ok(())};
52960		#[cfg(feature = "diagnose")]
52961		if let Ok(ret) = ret {
52962			return to_result("glBindBuffersRange", ret, (self.version_4_4.geterror)());
52963		} else {
52964			return ret
52965		}
52966		#[cfg(not(feature = "diagnose"))]
52967		return ret;
52968	}
52969	#[inline(always)]
52970	fn glBindTextures(&self, first: GLuint, count: GLsizei, textures: *const GLuint) -> Result<()> {
52971		#[cfg(feature = "catch_nullptr")]
52972		let ret = process_catch("glBindTextures", catch_unwind(||(self.version_4_4.bindtextures)(first, count, textures)));
52973		#[cfg(not(feature = "catch_nullptr"))]
52974		let ret = {(self.version_4_4.bindtextures)(first, count, textures); Ok(())};
52975		#[cfg(feature = "diagnose")]
52976		if let Ok(ret) = ret {
52977			return to_result("glBindTextures", ret, (self.version_4_4.geterror)());
52978		} else {
52979			return ret
52980		}
52981		#[cfg(not(feature = "diagnose"))]
52982		return ret;
52983	}
52984	#[inline(always)]
52985	fn glBindSamplers(&self, first: GLuint, count: GLsizei, samplers: *const GLuint) -> Result<()> {
52986		#[cfg(feature = "catch_nullptr")]
52987		let ret = process_catch("glBindSamplers", catch_unwind(||(self.version_4_4.bindsamplers)(first, count, samplers)));
52988		#[cfg(not(feature = "catch_nullptr"))]
52989		let ret = {(self.version_4_4.bindsamplers)(first, count, samplers); Ok(())};
52990		#[cfg(feature = "diagnose")]
52991		if let Ok(ret) = ret {
52992			return to_result("glBindSamplers", ret, (self.version_4_4.geterror)());
52993		} else {
52994			return ret
52995		}
52996		#[cfg(not(feature = "diagnose"))]
52997		return ret;
52998	}
52999	#[inline(always)]
53000	fn glBindImageTextures(&self, first: GLuint, count: GLsizei, textures: *const GLuint) -> Result<()> {
53001		#[cfg(feature = "catch_nullptr")]
53002		let ret = process_catch("glBindImageTextures", catch_unwind(||(self.version_4_4.bindimagetextures)(first, count, textures)));
53003		#[cfg(not(feature = "catch_nullptr"))]
53004		let ret = {(self.version_4_4.bindimagetextures)(first, count, textures); Ok(())};
53005		#[cfg(feature = "diagnose")]
53006		if let Ok(ret) = ret {
53007			return to_result("glBindImageTextures", ret, (self.version_4_4.geterror)());
53008		} else {
53009			return ret
53010		}
53011		#[cfg(not(feature = "diagnose"))]
53012		return ret;
53013	}
53014	#[inline(always)]
53015	fn glBindVertexBuffers(&self, first: GLuint, count: GLsizei, buffers: *const GLuint, offsets: *const GLintptr, strides: *const GLsizei) -> Result<()> {
53016		#[cfg(feature = "catch_nullptr")]
53017		let ret = process_catch("glBindVertexBuffers", catch_unwind(||(self.version_4_4.bindvertexbuffers)(first, count, buffers, offsets, strides)));
53018		#[cfg(not(feature = "catch_nullptr"))]
53019		let ret = {(self.version_4_4.bindvertexbuffers)(first, count, buffers, offsets, strides); Ok(())};
53020		#[cfg(feature = "diagnose")]
53021		if let Ok(ret) = ret {
53022			return to_result("glBindVertexBuffers", ret, (self.version_4_4.geterror)());
53023		} else {
53024			return ret
53025		}
53026		#[cfg(not(feature = "diagnose"))]
53027		return ret;
53028	}
53029}
53030
53031impl GL_4_5_g for GLCore {
53032	#[inline(always)]
53033	fn glClipControl(&self, origin: GLenum, depth: GLenum) -> Result<()> {
53034		#[cfg(feature = "catch_nullptr")]
53035		let ret = process_catch("glClipControl", catch_unwind(||(self.version_4_5.clipcontrol)(origin, depth)));
53036		#[cfg(not(feature = "catch_nullptr"))]
53037		let ret = {(self.version_4_5.clipcontrol)(origin, depth); Ok(())};
53038		#[cfg(feature = "diagnose")]
53039		if let Ok(ret) = ret {
53040			return to_result("glClipControl", ret, (self.version_4_5.geterror)());
53041		} else {
53042			return ret
53043		}
53044		#[cfg(not(feature = "diagnose"))]
53045		return ret;
53046	}
53047	#[inline(always)]
53048	fn glCreateTransformFeedbacks(&self, n: GLsizei, ids: *mut GLuint) -> Result<()> {
53049		#[cfg(feature = "catch_nullptr")]
53050		let ret = process_catch("glCreateTransformFeedbacks", catch_unwind(||(self.version_4_5.createtransformfeedbacks)(n, ids)));
53051		#[cfg(not(feature = "catch_nullptr"))]
53052		let ret = {(self.version_4_5.createtransformfeedbacks)(n, ids); Ok(())};
53053		#[cfg(feature = "diagnose")]
53054		if let Ok(ret) = ret {
53055			return to_result("glCreateTransformFeedbacks", ret, (self.version_4_5.geterror)());
53056		} else {
53057			return ret
53058		}
53059		#[cfg(not(feature = "diagnose"))]
53060		return ret;
53061	}
53062	#[inline(always)]
53063	fn glTransformFeedbackBufferBase(&self, xfb: GLuint, index: GLuint, buffer: GLuint) -> Result<()> {
53064		#[cfg(feature = "catch_nullptr")]
53065		let ret = process_catch("glTransformFeedbackBufferBase", catch_unwind(||(self.version_4_5.transformfeedbackbufferbase)(xfb, index, buffer)));
53066		#[cfg(not(feature = "catch_nullptr"))]
53067		let ret = {(self.version_4_5.transformfeedbackbufferbase)(xfb, index, buffer); Ok(())};
53068		#[cfg(feature = "diagnose")]
53069		if let Ok(ret) = ret {
53070			return to_result("glTransformFeedbackBufferBase", ret, (self.version_4_5.geterror)());
53071		} else {
53072			return ret
53073		}
53074		#[cfg(not(feature = "diagnose"))]
53075		return ret;
53076	}
53077	#[inline(always)]
53078	fn glTransformFeedbackBufferRange(&self, xfb: GLuint, index: GLuint, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()> {
53079		#[cfg(feature = "catch_nullptr")]
53080		let ret = process_catch("glTransformFeedbackBufferRange", catch_unwind(||(self.version_4_5.transformfeedbackbufferrange)(xfb, index, buffer, offset, size)));
53081		#[cfg(not(feature = "catch_nullptr"))]
53082		let ret = {(self.version_4_5.transformfeedbackbufferrange)(xfb, index, buffer, offset, size); Ok(())};
53083		#[cfg(feature = "diagnose")]
53084		if let Ok(ret) = ret {
53085			return to_result("glTransformFeedbackBufferRange", ret, (self.version_4_5.geterror)());
53086		} else {
53087			return ret
53088		}
53089		#[cfg(not(feature = "diagnose"))]
53090		return ret;
53091	}
53092	#[inline(always)]
53093	fn glGetTransformFeedbackiv(&self, xfb: GLuint, pname: GLenum, param: *mut GLint) -> Result<()> {
53094		#[cfg(feature = "catch_nullptr")]
53095		let ret = process_catch("glGetTransformFeedbackiv", catch_unwind(||(self.version_4_5.gettransformfeedbackiv)(xfb, pname, param)));
53096		#[cfg(not(feature = "catch_nullptr"))]
53097		let ret = {(self.version_4_5.gettransformfeedbackiv)(xfb, pname, param); Ok(())};
53098		#[cfg(feature = "diagnose")]
53099		if let Ok(ret) = ret {
53100			return to_result("glGetTransformFeedbackiv", ret, (self.version_4_5.geterror)());
53101		} else {
53102			return ret
53103		}
53104		#[cfg(not(feature = "diagnose"))]
53105		return ret;
53106	}
53107	#[inline(always)]
53108	fn glGetTransformFeedbacki_v(&self, xfb: GLuint, pname: GLenum, index: GLuint, param: *mut GLint) -> Result<()> {
53109		#[cfg(feature = "catch_nullptr")]
53110		let ret = process_catch("glGetTransformFeedbacki_v", catch_unwind(||(self.version_4_5.gettransformfeedbacki_v)(xfb, pname, index, param)));
53111		#[cfg(not(feature = "catch_nullptr"))]
53112		let ret = {(self.version_4_5.gettransformfeedbacki_v)(xfb, pname, index, param); Ok(())};
53113		#[cfg(feature = "diagnose")]
53114		if let Ok(ret) = ret {
53115			return to_result("glGetTransformFeedbacki_v", ret, (self.version_4_5.geterror)());
53116		} else {
53117			return ret
53118		}
53119		#[cfg(not(feature = "diagnose"))]
53120		return ret;
53121	}
53122	#[inline(always)]
53123	fn glGetTransformFeedbacki64_v(&self, xfb: GLuint, pname: GLenum, index: GLuint, param: *mut GLint64) -> Result<()> {
53124		#[cfg(feature = "catch_nullptr")]
53125		let ret = process_catch("glGetTransformFeedbacki64_v", catch_unwind(||(self.version_4_5.gettransformfeedbacki64_v)(xfb, pname, index, param)));
53126		#[cfg(not(feature = "catch_nullptr"))]
53127		let ret = {(self.version_4_5.gettransformfeedbacki64_v)(xfb, pname, index, param); Ok(())};
53128		#[cfg(feature = "diagnose")]
53129		if let Ok(ret) = ret {
53130			return to_result("glGetTransformFeedbacki64_v", ret, (self.version_4_5.geterror)());
53131		} else {
53132			return ret
53133		}
53134		#[cfg(not(feature = "diagnose"))]
53135		return ret;
53136	}
53137	#[inline(always)]
53138	fn glCreateBuffers(&self, n: GLsizei, buffers: *mut GLuint) -> Result<()> {
53139		#[cfg(feature = "catch_nullptr")]
53140		let ret = process_catch("glCreateBuffers", catch_unwind(||(self.version_4_5.createbuffers)(n, buffers)));
53141		#[cfg(not(feature = "catch_nullptr"))]
53142		let ret = {(self.version_4_5.createbuffers)(n, buffers); Ok(())};
53143		#[cfg(feature = "diagnose")]
53144		if let Ok(ret) = ret {
53145			return to_result("glCreateBuffers", ret, (self.version_4_5.geterror)());
53146		} else {
53147			return ret
53148		}
53149		#[cfg(not(feature = "diagnose"))]
53150		return ret;
53151	}
53152	#[inline(always)]
53153	fn glNamedBufferStorage(&self, buffer: GLuint, size: GLsizeiptr, data: *const c_void, flags: GLbitfield) -> Result<()> {
53154		#[cfg(feature = "catch_nullptr")]
53155		let ret = process_catch("glNamedBufferStorage", catch_unwind(||(self.version_4_5.namedbufferstorage)(buffer, size, data, flags)));
53156		#[cfg(not(feature = "catch_nullptr"))]
53157		let ret = {(self.version_4_5.namedbufferstorage)(buffer, size, data, flags); Ok(())};
53158		#[cfg(feature = "diagnose")]
53159		if let Ok(ret) = ret {
53160			return to_result("glNamedBufferStorage", ret, (self.version_4_5.geterror)());
53161		} else {
53162			return ret
53163		}
53164		#[cfg(not(feature = "diagnose"))]
53165		return ret;
53166	}
53167	#[inline(always)]
53168	fn glNamedBufferData(&self, buffer: GLuint, size: GLsizeiptr, data: *const c_void, usage: GLenum) -> Result<()> {
53169		#[cfg(feature = "catch_nullptr")]
53170		let ret = process_catch("glNamedBufferData", catch_unwind(||(self.version_4_5.namedbufferdata)(buffer, size, data, usage)));
53171		#[cfg(not(feature = "catch_nullptr"))]
53172		let ret = {(self.version_4_5.namedbufferdata)(buffer, size, data, usage); Ok(())};
53173		#[cfg(feature = "diagnose")]
53174		if let Ok(ret) = ret {
53175			return to_result("glNamedBufferData", ret, (self.version_4_5.geterror)());
53176		} else {
53177			return ret
53178		}
53179		#[cfg(not(feature = "diagnose"))]
53180		return ret;
53181	}
53182	#[inline(always)]
53183	fn glNamedBufferSubData(&self, buffer: GLuint, offset: GLintptr, size: GLsizeiptr, data: *const c_void) -> Result<()> {
53184		#[cfg(feature = "catch_nullptr")]
53185		let ret = process_catch("glNamedBufferSubData", catch_unwind(||(self.version_4_5.namedbuffersubdata)(buffer, offset, size, data)));
53186		#[cfg(not(feature = "catch_nullptr"))]
53187		let ret = {(self.version_4_5.namedbuffersubdata)(buffer, offset, size, data); Ok(())};
53188		#[cfg(feature = "diagnose")]
53189		if let Ok(ret) = ret {
53190			return to_result("glNamedBufferSubData", ret, (self.version_4_5.geterror)());
53191		} else {
53192			return ret
53193		}
53194		#[cfg(not(feature = "diagnose"))]
53195		return ret;
53196	}
53197	#[inline(always)]
53198	fn glCopyNamedBufferSubData(&self, readBuffer: GLuint, writeBuffer: GLuint, readOffset: GLintptr, writeOffset: GLintptr, size: GLsizeiptr) -> Result<()> {
53199		#[cfg(feature = "catch_nullptr")]
53200		let ret = process_catch("glCopyNamedBufferSubData", catch_unwind(||(self.version_4_5.copynamedbuffersubdata)(readBuffer, writeBuffer, readOffset, writeOffset, size)));
53201		#[cfg(not(feature = "catch_nullptr"))]
53202		let ret = {(self.version_4_5.copynamedbuffersubdata)(readBuffer, writeBuffer, readOffset, writeOffset, size); Ok(())};
53203		#[cfg(feature = "diagnose")]
53204		if let Ok(ret) = ret {
53205			return to_result("glCopyNamedBufferSubData", ret, (self.version_4_5.geterror)());
53206		} else {
53207			return ret
53208		}
53209		#[cfg(not(feature = "diagnose"))]
53210		return ret;
53211	}
53212	#[inline(always)]
53213	fn glClearNamedBufferData(&self, buffer: GLuint, internalformat: GLenum, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()> {
53214		#[cfg(feature = "catch_nullptr")]
53215		let ret = process_catch("glClearNamedBufferData", catch_unwind(||(self.version_4_5.clearnamedbufferdata)(buffer, internalformat, format, type_, data)));
53216		#[cfg(not(feature = "catch_nullptr"))]
53217		let ret = {(self.version_4_5.clearnamedbufferdata)(buffer, internalformat, format, type_, data); Ok(())};
53218		#[cfg(feature = "diagnose")]
53219		if let Ok(ret) = ret {
53220			return to_result("glClearNamedBufferData", ret, (self.version_4_5.geterror)());
53221		} else {
53222			return ret
53223		}
53224		#[cfg(not(feature = "diagnose"))]
53225		return ret;
53226	}
53227	#[inline(always)]
53228	fn glClearNamedBufferSubData(&self, buffer: GLuint, internalformat: GLenum, offset: GLintptr, size: GLsizeiptr, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()> {
53229		#[cfg(feature = "catch_nullptr")]
53230		let ret = process_catch("glClearNamedBufferSubData", catch_unwind(||(self.version_4_5.clearnamedbuffersubdata)(buffer, internalformat, offset, size, format, type_, data)));
53231		#[cfg(not(feature = "catch_nullptr"))]
53232		let ret = {(self.version_4_5.clearnamedbuffersubdata)(buffer, internalformat, offset, size, format, type_, data); Ok(())};
53233		#[cfg(feature = "diagnose")]
53234		if let Ok(ret) = ret {
53235			return to_result("glClearNamedBufferSubData", ret, (self.version_4_5.geterror)());
53236		} else {
53237			return ret
53238		}
53239		#[cfg(not(feature = "diagnose"))]
53240		return ret;
53241	}
53242	#[inline(always)]
53243	fn glMapNamedBuffer(&self, buffer: GLuint, access: GLenum) -> Result<*mut c_void> {
53244		#[cfg(feature = "catch_nullptr")]
53245		let ret = process_catch("glMapNamedBuffer", catch_unwind(||(self.version_4_5.mapnamedbuffer)(buffer, access)));
53246		#[cfg(not(feature = "catch_nullptr"))]
53247		let ret = Ok((self.version_4_5.mapnamedbuffer)(buffer, access));
53248		#[cfg(feature = "diagnose")]
53249		if let Ok(ret) = ret {
53250			return to_result("glMapNamedBuffer", ret, (self.version_4_5.geterror)());
53251		} else {
53252			return ret
53253		}
53254		#[cfg(not(feature = "diagnose"))]
53255		return ret;
53256	}
53257	#[inline(always)]
53258	fn glMapNamedBufferRange(&self, buffer: GLuint, offset: GLintptr, length: GLsizeiptr, access: GLbitfield) -> Result<*mut c_void> {
53259		#[cfg(feature = "catch_nullptr")]
53260		let ret = process_catch("glMapNamedBufferRange", catch_unwind(||(self.version_4_5.mapnamedbufferrange)(buffer, offset, length, access)));
53261		#[cfg(not(feature = "catch_nullptr"))]
53262		let ret = Ok((self.version_4_5.mapnamedbufferrange)(buffer, offset, length, access));
53263		#[cfg(feature = "diagnose")]
53264		if let Ok(ret) = ret {
53265			return to_result("glMapNamedBufferRange", ret, (self.version_4_5.geterror)());
53266		} else {
53267			return ret
53268		}
53269		#[cfg(not(feature = "diagnose"))]
53270		return ret;
53271	}
53272	#[inline(always)]
53273	fn glUnmapNamedBuffer(&self, buffer: GLuint) -> Result<GLboolean> {
53274		#[cfg(feature = "catch_nullptr")]
53275		let ret = process_catch("glUnmapNamedBuffer", catch_unwind(||(self.version_4_5.unmapnamedbuffer)(buffer)));
53276		#[cfg(not(feature = "catch_nullptr"))]
53277		let ret = Ok((self.version_4_5.unmapnamedbuffer)(buffer));
53278		#[cfg(feature = "diagnose")]
53279		if let Ok(ret) = ret {
53280			return to_result("glUnmapNamedBuffer", ret, (self.version_4_5.geterror)());
53281		} else {
53282			return ret
53283		}
53284		#[cfg(not(feature = "diagnose"))]
53285		return ret;
53286	}
53287	#[inline(always)]
53288	fn glFlushMappedNamedBufferRange(&self, buffer: GLuint, offset: GLintptr, length: GLsizeiptr) -> Result<()> {
53289		#[cfg(feature = "catch_nullptr")]
53290		let ret = process_catch("glFlushMappedNamedBufferRange", catch_unwind(||(self.version_4_5.flushmappednamedbufferrange)(buffer, offset, length)));
53291		#[cfg(not(feature = "catch_nullptr"))]
53292		let ret = {(self.version_4_5.flushmappednamedbufferrange)(buffer, offset, length); Ok(())};
53293		#[cfg(feature = "diagnose")]
53294		if let Ok(ret) = ret {
53295			return to_result("glFlushMappedNamedBufferRange", ret, (self.version_4_5.geterror)());
53296		} else {
53297			return ret
53298		}
53299		#[cfg(not(feature = "diagnose"))]
53300		return ret;
53301	}
53302	#[inline(always)]
53303	fn glGetNamedBufferParameteriv(&self, buffer: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
53304		#[cfg(feature = "catch_nullptr")]
53305		let ret = process_catch("glGetNamedBufferParameteriv", catch_unwind(||(self.version_4_5.getnamedbufferparameteriv)(buffer, pname, params)));
53306		#[cfg(not(feature = "catch_nullptr"))]
53307		let ret = {(self.version_4_5.getnamedbufferparameteriv)(buffer, pname, params); Ok(())};
53308		#[cfg(feature = "diagnose")]
53309		if let Ok(ret) = ret {
53310			return to_result("glGetNamedBufferParameteriv", ret, (self.version_4_5.geterror)());
53311		} else {
53312			return ret
53313		}
53314		#[cfg(not(feature = "diagnose"))]
53315		return ret;
53316	}
53317	#[inline(always)]
53318	fn glGetNamedBufferParameteri64v(&self, buffer: GLuint, pname: GLenum, params: *mut GLint64) -> Result<()> {
53319		#[cfg(feature = "catch_nullptr")]
53320		let ret = process_catch("glGetNamedBufferParameteri64v", catch_unwind(||(self.version_4_5.getnamedbufferparameteri64v)(buffer, pname, params)));
53321		#[cfg(not(feature = "catch_nullptr"))]
53322		let ret = {(self.version_4_5.getnamedbufferparameteri64v)(buffer, pname, params); Ok(())};
53323		#[cfg(feature = "diagnose")]
53324		if let Ok(ret) = ret {
53325			return to_result("glGetNamedBufferParameteri64v", ret, (self.version_4_5.geterror)());
53326		} else {
53327			return ret
53328		}
53329		#[cfg(not(feature = "diagnose"))]
53330		return ret;
53331	}
53332	#[inline(always)]
53333	fn glGetNamedBufferPointerv(&self, buffer: GLuint, pname: GLenum, params: *mut *mut c_void) -> Result<()> {
53334		#[cfg(feature = "catch_nullptr")]
53335		let ret = process_catch("glGetNamedBufferPointerv", catch_unwind(||(self.version_4_5.getnamedbufferpointerv)(buffer, pname, params)));
53336		#[cfg(not(feature = "catch_nullptr"))]
53337		let ret = {(self.version_4_5.getnamedbufferpointerv)(buffer, pname, params); Ok(())};
53338		#[cfg(feature = "diagnose")]
53339		if let Ok(ret) = ret {
53340			return to_result("glGetNamedBufferPointerv", ret, (self.version_4_5.geterror)());
53341		} else {
53342			return ret
53343		}
53344		#[cfg(not(feature = "diagnose"))]
53345		return ret;
53346	}
53347	#[inline(always)]
53348	fn glGetNamedBufferSubData(&self, buffer: GLuint, offset: GLintptr, size: GLsizeiptr, data: *mut c_void) -> Result<()> {
53349		#[cfg(feature = "catch_nullptr")]
53350		let ret = process_catch("glGetNamedBufferSubData", catch_unwind(||(self.version_4_5.getnamedbuffersubdata)(buffer, offset, size, data)));
53351		#[cfg(not(feature = "catch_nullptr"))]
53352		let ret = {(self.version_4_5.getnamedbuffersubdata)(buffer, offset, size, data); Ok(())};
53353		#[cfg(feature = "diagnose")]
53354		if let Ok(ret) = ret {
53355			return to_result("glGetNamedBufferSubData", ret, (self.version_4_5.geterror)());
53356		} else {
53357			return ret
53358		}
53359		#[cfg(not(feature = "diagnose"))]
53360		return ret;
53361	}
53362	#[inline(always)]
53363	fn glCreateFramebuffers(&self, n: GLsizei, framebuffers: *mut GLuint) -> Result<()> {
53364		#[cfg(feature = "catch_nullptr")]
53365		let ret = process_catch("glCreateFramebuffers", catch_unwind(||(self.version_4_5.createframebuffers)(n, framebuffers)));
53366		#[cfg(not(feature = "catch_nullptr"))]
53367		let ret = {(self.version_4_5.createframebuffers)(n, framebuffers); Ok(())};
53368		#[cfg(feature = "diagnose")]
53369		if let Ok(ret) = ret {
53370			return to_result("glCreateFramebuffers", ret, (self.version_4_5.geterror)());
53371		} else {
53372			return ret
53373		}
53374		#[cfg(not(feature = "diagnose"))]
53375		return ret;
53376	}
53377	#[inline(always)]
53378	fn glNamedFramebufferRenderbuffer(&self, framebuffer: GLuint, attachment: GLenum, renderbuffertarget: GLenum, renderbuffer: GLuint) -> Result<()> {
53379		#[cfg(feature = "catch_nullptr")]
53380		let ret = process_catch("glNamedFramebufferRenderbuffer", catch_unwind(||(self.version_4_5.namedframebufferrenderbuffer)(framebuffer, attachment, renderbuffertarget, renderbuffer)));
53381		#[cfg(not(feature = "catch_nullptr"))]
53382		let ret = {(self.version_4_5.namedframebufferrenderbuffer)(framebuffer, attachment, renderbuffertarget, renderbuffer); Ok(())};
53383		#[cfg(feature = "diagnose")]
53384		if let Ok(ret) = ret {
53385			return to_result("glNamedFramebufferRenderbuffer", ret, (self.version_4_5.geterror)());
53386		} else {
53387			return ret
53388		}
53389		#[cfg(not(feature = "diagnose"))]
53390		return ret;
53391	}
53392	#[inline(always)]
53393	fn glNamedFramebufferParameteri(&self, framebuffer: GLuint, pname: GLenum, param: GLint) -> Result<()> {
53394		#[cfg(feature = "catch_nullptr")]
53395		let ret = process_catch("glNamedFramebufferParameteri", catch_unwind(||(self.version_4_5.namedframebufferparameteri)(framebuffer, pname, param)));
53396		#[cfg(not(feature = "catch_nullptr"))]
53397		let ret = {(self.version_4_5.namedframebufferparameteri)(framebuffer, pname, param); Ok(())};
53398		#[cfg(feature = "diagnose")]
53399		if let Ok(ret) = ret {
53400			return to_result("glNamedFramebufferParameteri", ret, (self.version_4_5.geterror)());
53401		} else {
53402			return ret
53403		}
53404		#[cfg(not(feature = "diagnose"))]
53405		return ret;
53406	}
53407	#[inline(always)]
53408	fn glNamedFramebufferTexture(&self, framebuffer: GLuint, attachment: GLenum, texture: GLuint, level: GLint) -> Result<()> {
53409		#[cfg(feature = "catch_nullptr")]
53410		let ret = process_catch("glNamedFramebufferTexture", catch_unwind(||(self.version_4_5.namedframebuffertexture)(framebuffer, attachment, texture, level)));
53411		#[cfg(not(feature = "catch_nullptr"))]
53412		let ret = {(self.version_4_5.namedframebuffertexture)(framebuffer, attachment, texture, level); Ok(())};
53413		#[cfg(feature = "diagnose")]
53414		if let Ok(ret) = ret {
53415			return to_result("glNamedFramebufferTexture", ret, (self.version_4_5.geterror)());
53416		} else {
53417			return ret
53418		}
53419		#[cfg(not(feature = "diagnose"))]
53420		return ret;
53421	}
53422	#[inline(always)]
53423	fn glNamedFramebufferTextureLayer(&self, framebuffer: GLuint, attachment: GLenum, texture: GLuint, level: GLint, layer: GLint) -> Result<()> {
53424		#[cfg(feature = "catch_nullptr")]
53425		let ret = process_catch("glNamedFramebufferTextureLayer", catch_unwind(||(self.version_4_5.namedframebuffertexturelayer)(framebuffer, attachment, texture, level, layer)));
53426		#[cfg(not(feature = "catch_nullptr"))]
53427		let ret = {(self.version_4_5.namedframebuffertexturelayer)(framebuffer, attachment, texture, level, layer); Ok(())};
53428		#[cfg(feature = "diagnose")]
53429		if let Ok(ret) = ret {
53430			return to_result("glNamedFramebufferTextureLayer", ret, (self.version_4_5.geterror)());
53431		} else {
53432			return ret
53433		}
53434		#[cfg(not(feature = "diagnose"))]
53435		return ret;
53436	}
53437	#[inline(always)]
53438	fn glNamedFramebufferDrawBuffer(&self, framebuffer: GLuint, buf: GLenum) -> Result<()> {
53439		#[cfg(feature = "catch_nullptr")]
53440		let ret = process_catch("glNamedFramebufferDrawBuffer", catch_unwind(||(self.version_4_5.namedframebufferdrawbuffer)(framebuffer, buf)));
53441		#[cfg(not(feature = "catch_nullptr"))]
53442		let ret = {(self.version_4_5.namedframebufferdrawbuffer)(framebuffer, buf); Ok(())};
53443		#[cfg(feature = "diagnose")]
53444		if let Ok(ret) = ret {
53445			return to_result("glNamedFramebufferDrawBuffer", ret, (self.version_4_5.geterror)());
53446		} else {
53447			return ret
53448		}
53449		#[cfg(not(feature = "diagnose"))]
53450		return ret;
53451	}
53452	#[inline(always)]
53453	fn glNamedFramebufferDrawBuffers(&self, framebuffer: GLuint, n: GLsizei, bufs: *const GLenum) -> Result<()> {
53454		#[cfg(feature = "catch_nullptr")]
53455		let ret = process_catch("glNamedFramebufferDrawBuffers", catch_unwind(||(self.version_4_5.namedframebufferdrawbuffers)(framebuffer, n, bufs)));
53456		#[cfg(not(feature = "catch_nullptr"))]
53457		let ret = {(self.version_4_5.namedframebufferdrawbuffers)(framebuffer, n, bufs); Ok(())};
53458		#[cfg(feature = "diagnose")]
53459		if let Ok(ret) = ret {
53460			return to_result("glNamedFramebufferDrawBuffers", ret, (self.version_4_5.geterror)());
53461		} else {
53462			return ret
53463		}
53464		#[cfg(not(feature = "diagnose"))]
53465		return ret;
53466	}
53467	#[inline(always)]
53468	fn glNamedFramebufferReadBuffer(&self, framebuffer: GLuint, src: GLenum) -> Result<()> {
53469		#[cfg(feature = "catch_nullptr")]
53470		let ret = process_catch("glNamedFramebufferReadBuffer", catch_unwind(||(self.version_4_5.namedframebufferreadbuffer)(framebuffer, src)));
53471		#[cfg(not(feature = "catch_nullptr"))]
53472		let ret = {(self.version_4_5.namedframebufferreadbuffer)(framebuffer, src); Ok(())};
53473		#[cfg(feature = "diagnose")]
53474		if let Ok(ret) = ret {
53475			return to_result("glNamedFramebufferReadBuffer", ret, (self.version_4_5.geterror)());
53476		} else {
53477			return ret
53478		}
53479		#[cfg(not(feature = "diagnose"))]
53480		return ret;
53481	}
53482	#[inline(always)]
53483	fn glInvalidateNamedFramebufferData(&self, framebuffer: GLuint, numAttachments: GLsizei, attachments: *const GLenum) -> Result<()> {
53484		#[cfg(feature = "catch_nullptr")]
53485		let ret = process_catch("glInvalidateNamedFramebufferData", catch_unwind(||(self.version_4_5.invalidatenamedframebufferdata)(framebuffer, numAttachments, attachments)));
53486		#[cfg(not(feature = "catch_nullptr"))]
53487		let ret = {(self.version_4_5.invalidatenamedframebufferdata)(framebuffer, numAttachments, attachments); Ok(())};
53488		#[cfg(feature = "diagnose")]
53489		if let Ok(ret) = ret {
53490			return to_result("glInvalidateNamedFramebufferData", ret, (self.version_4_5.geterror)());
53491		} else {
53492			return ret
53493		}
53494		#[cfg(not(feature = "diagnose"))]
53495		return ret;
53496	}
53497	#[inline(always)]
53498	fn glInvalidateNamedFramebufferSubData(&self, framebuffer: GLuint, numAttachments: GLsizei, attachments: *const GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
53499		#[cfg(feature = "catch_nullptr")]
53500		let ret = process_catch("glInvalidateNamedFramebufferSubData", catch_unwind(||(self.version_4_5.invalidatenamedframebuffersubdata)(framebuffer, numAttachments, attachments, x, y, width, height)));
53501		#[cfg(not(feature = "catch_nullptr"))]
53502		let ret = {(self.version_4_5.invalidatenamedframebuffersubdata)(framebuffer, numAttachments, attachments, x, y, width, height); Ok(())};
53503		#[cfg(feature = "diagnose")]
53504		if let Ok(ret) = ret {
53505			return to_result("glInvalidateNamedFramebufferSubData", ret, (self.version_4_5.geterror)());
53506		} else {
53507			return ret
53508		}
53509		#[cfg(not(feature = "diagnose"))]
53510		return ret;
53511	}
53512	#[inline(always)]
53513	fn glClearNamedFramebufferiv(&self, framebuffer: GLuint, buffer: GLenum, drawbuffer: GLint, value: *const GLint) -> Result<()> {
53514		#[cfg(feature = "catch_nullptr")]
53515		let ret = process_catch("glClearNamedFramebufferiv", catch_unwind(||(self.version_4_5.clearnamedframebufferiv)(framebuffer, buffer, drawbuffer, value)));
53516		#[cfg(not(feature = "catch_nullptr"))]
53517		let ret = {(self.version_4_5.clearnamedframebufferiv)(framebuffer, buffer, drawbuffer, value); Ok(())};
53518		#[cfg(feature = "diagnose")]
53519		if let Ok(ret) = ret {
53520			return to_result("glClearNamedFramebufferiv", ret, (self.version_4_5.geterror)());
53521		} else {
53522			return ret
53523		}
53524		#[cfg(not(feature = "diagnose"))]
53525		return ret;
53526	}
53527	#[inline(always)]
53528	fn glClearNamedFramebufferuiv(&self, framebuffer: GLuint, buffer: GLenum, drawbuffer: GLint, value: *const GLuint) -> Result<()> {
53529		#[cfg(feature = "catch_nullptr")]
53530		let ret = process_catch("glClearNamedFramebufferuiv", catch_unwind(||(self.version_4_5.clearnamedframebufferuiv)(framebuffer, buffer, drawbuffer, value)));
53531		#[cfg(not(feature = "catch_nullptr"))]
53532		let ret = {(self.version_4_5.clearnamedframebufferuiv)(framebuffer, buffer, drawbuffer, value); Ok(())};
53533		#[cfg(feature = "diagnose")]
53534		if let Ok(ret) = ret {
53535			return to_result("glClearNamedFramebufferuiv", ret, (self.version_4_5.geterror)());
53536		} else {
53537			return ret
53538		}
53539		#[cfg(not(feature = "diagnose"))]
53540		return ret;
53541	}
53542	#[inline(always)]
53543	fn glClearNamedFramebufferfv(&self, framebuffer: GLuint, buffer: GLenum, drawbuffer: GLint, value: *const GLfloat) -> Result<()> {
53544		#[cfg(feature = "catch_nullptr")]
53545		let ret = process_catch("glClearNamedFramebufferfv", catch_unwind(||(self.version_4_5.clearnamedframebufferfv)(framebuffer, buffer, drawbuffer, value)));
53546		#[cfg(not(feature = "catch_nullptr"))]
53547		let ret = {(self.version_4_5.clearnamedframebufferfv)(framebuffer, buffer, drawbuffer, value); Ok(())};
53548		#[cfg(feature = "diagnose")]
53549		if let Ok(ret) = ret {
53550			return to_result("glClearNamedFramebufferfv", ret, (self.version_4_5.geterror)());
53551		} else {
53552			return ret
53553		}
53554		#[cfg(not(feature = "diagnose"))]
53555		return ret;
53556	}
53557	#[inline(always)]
53558	fn glClearNamedFramebufferfi(&self, framebuffer: GLuint, buffer: GLenum, drawbuffer: GLint, depth: GLfloat, stencil: GLint) -> Result<()> {
53559		#[cfg(feature = "catch_nullptr")]
53560		let ret = process_catch("glClearNamedFramebufferfi", catch_unwind(||(self.version_4_5.clearnamedframebufferfi)(framebuffer, buffer, drawbuffer, depth, stencil)));
53561		#[cfg(not(feature = "catch_nullptr"))]
53562		let ret = {(self.version_4_5.clearnamedframebufferfi)(framebuffer, buffer, drawbuffer, depth, stencil); Ok(())};
53563		#[cfg(feature = "diagnose")]
53564		if let Ok(ret) = ret {
53565			return to_result("glClearNamedFramebufferfi", ret, (self.version_4_5.geterror)());
53566		} else {
53567			return ret
53568		}
53569		#[cfg(not(feature = "diagnose"))]
53570		return ret;
53571	}
53572	#[inline(always)]
53573	fn glBlitNamedFramebuffer(&self, readFramebuffer: GLuint, drawFramebuffer: GLuint, srcX0: GLint, srcY0: GLint, srcX1: GLint, srcY1: GLint, dstX0: GLint, dstY0: GLint, dstX1: GLint, dstY1: GLint, mask: GLbitfield, filter: GLenum) -> Result<()> {
53574		#[cfg(feature = "catch_nullptr")]
53575		let ret = process_catch("glBlitNamedFramebuffer", catch_unwind(||(self.version_4_5.blitnamedframebuffer)(readFramebuffer, drawFramebuffer, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter)));
53576		#[cfg(not(feature = "catch_nullptr"))]
53577		let ret = {(self.version_4_5.blitnamedframebuffer)(readFramebuffer, drawFramebuffer, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); Ok(())};
53578		#[cfg(feature = "diagnose")]
53579		if let Ok(ret) = ret {
53580			return to_result("glBlitNamedFramebuffer", ret, (self.version_4_5.geterror)());
53581		} else {
53582			return ret
53583		}
53584		#[cfg(not(feature = "diagnose"))]
53585		return ret;
53586	}
53587	#[inline(always)]
53588	fn glCheckNamedFramebufferStatus(&self, framebuffer: GLuint, target: GLenum) -> Result<GLenum> {
53589		#[cfg(feature = "catch_nullptr")]
53590		let ret = process_catch("glCheckNamedFramebufferStatus", catch_unwind(||(self.version_4_5.checknamedframebufferstatus)(framebuffer, target)));
53591		#[cfg(not(feature = "catch_nullptr"))]
53592		let ret = Ok((self.version_4_5.checknamedframebufferstatus)(framebuffer, target));
53593		#[cfg(feature = "diagnose")]
53594		if let Ok(ret) = ret {
53595			return to_result("glCheckNamedFramebufferStatus", ret, (self.version_4_5.geterror)());
53596		} else {
53597			return ret
53598		}
53599		#[cfg(not(feature = "diagnose"))]
53600		return ret;
53601	}
53602	#[inline(always)]
53603	fn glGetNamedFramebufferParameteriv(&self, framebuffer: GLuint, pname: GLenum, param: *mut GLint) -> Result<()> {
53604		#[cfg(feature = "catch_nullptr")]
53605		let ret = process_catch("glGetNamedFramebufferParameteriv", catch_unwind(||(self.version_4_5.getnamedframebufferparameteriv)(framebuffer, pname, param)));
53606		#[cfg(not(feature = "catch_nullptr"))]
53607		let ret = {(self.version_4_5.getnamedframebufferparameteriv)(framebuffer, pname, param); Ok(())};
53608		#[cfg(feature = "diagnose")]
53609		if let Ok(ret) = ret {
53610			return to_result("glGetNamedFramebufferParameteriv", ret, (self.version_4_5.geterror)());
53611		} else {
53612			return ret
53613		}
53614		#[cfg(not(feature = "diagnose"))]
53615		return ret;
53616	}
53617	#[inline(always)]
53618	fn glGetNamedFramebufferAttachmentParameteriv(&self, framebuffer: GLuint, attachment: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
53619		#[cfg(feature = "catch_nullptr")]
53620		let ret = process_catch("glGetNamedFramebufferAttachmentParameteriv", catch_unwind(||(self.version_4_5.getnamedframebufferattachmentparameteriv)(framebuffer, attachment, pname, params)));
53621		#[cfg(not(feature = "catch_nullptr"))]
53622		let ret = {(self.version_4_5.getnamedframebufferattachmentparameteriv)(framebuffer, attachment, pname, params); Ok(())};
53623		#[cfg(feature = "diagnose")]
53624		if let Ok(ret) = ret {
53625			return to_result("glGetNamedFramebufferAttachmentParameteriv", ret, (self.version_4_5.geterror)());
53626		} else {
53627			return ret
53628		}
53629		#[cfg(not(feature = "diagnose"))]
53630		return ret;
53631	}
53632	#[inline(always)]
53633	fn glCreateRenderbuffers(&self, n: GLsizei, renderbuffers: *mut GLuint) -> Result<()> {
53634		#[cfg(feature = "catch_nullptr")]
53635		let ret = process_catch("glCreateRenderbuffers", catch_unwind(||(self.version_4_5.createrenderbuffers)(n, renderbuffers)));
53636		#[cfg(not(feature = "catch_nullptr"))]
53637		let ret = {(self.version_4_5.createrenderbuffers)(n, renderbuffers); Ok(())};
53638		#[cfg(feature = "diagnose")]
53639		if let Ok(ret) = ret {
53640			return to_result("glCreateRenderbuffers", ret, (self.version_4_5.geterror)());
53641		} else {
53642			return ret
53643		}
53644		#[cfg(not(feature = "diagnose"))]
53645		return ret;
53646	}
53647	#[inline(always)]
53648	fn glNamedRenderbufferStorage(&self, renderbuffer: GLuint, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()> {
53649		#[cfg(feature = "catch_nullptr")]
53650		let ret = process_catch("glNamedRenderbufferStorage", catch_unwind(||(self.version_4_5.namedrenderbufferstorage)(renderbuffer, internalformat, width, height)));
53651		#[cfg(not(feature = "catch_nullptr"))]
53652		let ret = {(self.version_4_5.namedrenderbufferstorage)(renderbuffer, internalformat, width, height); Ok(())};
53653		#[cfg(feature = "diagnose")]
53654		if let Ok(ret) = ret {
53655			return to_result("glNamedRenderbufferStorage", ret, (self.version_4_5.geterror)());
53656		} else {
53657			return ret
53658		}
53659		#[cfg(not(feature = "diagnose"))]
53660		return ret;
53661	}
53662	#[inline(always)]
53663	fn glNamedRenderbufferStorageMultisample(&self, renderbuffer: GLuint, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()> {
53664		#[cfg(feature = "catch_nullptr")]
53665		let ret = process_catch("glNamedRenderbufferStorageMultisample", catch_unwind(||(self.version_4_5.namedrenderbufferstoragemultisample)(renderbuffer, samples, internalformat, width, height)));
53666		#[cfg(not(feature = "catch_nullptr"))]
53667		let ret = {(self.version_4_5.namedrenderbufferstoragemultisample)(renderbuffer, samples, internalformat, width, height); Ok(())};
53668		#[cfg(feature = "diagnose")]
53669		if let Ok(ret) = ret {
53670			return to_result("glNamedRenderbufferStorageMultisample", ret, (self.version_4_5.geterror)());
53671		} else {
53672			return ret
53673		}
53674		#[cfg(not(feature = "diagnose"))]
53675		return ret;
53676	}
53677	#[inline(always)]
53678	fn glGetNamedRenderbufferParameteriv(&self, renderbuffer: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
53679		#[cfg(feature = "catch_nullptr")]
53680		let ret = process_catch("glGetNamedRenderbufferParameteriv", catch_unwind(||(self.version_4_5.getnamedrenderbufferparameteriv)(renderbuffer, pname, params)));
53681		#[cfg(not(feature = "catch_nullptr"))]
53682		let ret = {(self.version_4_5.getnamedrenderbufferparameteriv)(renderbuffer, pname, params); Ok(())};
53683		#[cfg(feature = "diagnose")]
53684		if let Ok(ret) = ret {
53685			return to_result("glGetNamedRenderbufferParameteriv", ret, (self.version_4_5.geterror)());
53686		} else {
53687			return ret
53688		}
53689		#[cfg(not(feature = "diagnose"))]
53690		return ret;
53691	}
53692	#[inline(always)]
53693	fn glCreateTextures(&self, target: GLenum, n: GLsizei, textures: *mut GLuint) -> Result<()> {
53694		#[cfg(feature = "catch_nullptr")]
53695		let ret = process_catch("glCreateTextures", catch_unwind(||(self.version_4_5.createtextures)(target, n, textures)));
53696		#[cfg(not(feature = "catch_nullptr"))]
53697		let ret = {(self.version_4_5.createtextures)(target, n, textures); Ok(())};
53698		#[cfg(feature = "diagnose")]
53699		if let Ok(ret) = ret {
53700			return to_result("glCreateTextures", ret, (self.version_4_5.geterror)());
53701		} else {
53702			return ret
53703		}
53704		#[cfg(not(feature = "diagnose"))]
53705		return ret;
53706	}
53707	#[inline(always)]
53708	fn glTextureBuffer(&self, texture: GLuint, internalformat: GLenum, buffer: GLuint) -> Result<()> {
53709		#[cfg(feature = "catch_nullptr")]
53710		let ret = process_catch("glTextureBuffer", catch_unwind(||(self.version_4_5.texturebuffer)(texture, internalformat, buffer)));
53711		#[cfg(not(feature = "catch_nullptr"))]
53712		let ret = {(self.version_4_5.texturebuffer)(texture, internalformat, buffer); Ok(())};
53713		#[cfg(feature = "diagnose")]
53714		if let Ok(ret) = ret {
53715			return to_result("glTextureBuffer", ret, (self.version_4_5.geterror)());
53716		} else {
53717			return ret
53718		}
53719		#[cfg(not(feature = "diagnose"))]
53720		return ret;
53721	}
53722	#[inline(always)]
53723	fn glTextureBufferRange(&self, texture: GLuint, internalformat: GLenum, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()> {
53724		#[cfg(feature = "catch_nullptr")]
53725		let ret = process_catch("glTextureBufferRange", catch_unwind(||(self.version_4_5.texturebufferrange)(texture, internalformat, buffer, offset, size)));
53726		#[cfg(not(feature = "catch_nullptr"))]
53727		let ret = {(self.version_4_5.texturebufferrange)(texture, internalformat, buffer, offset, size); Ok(())};
53728		#[cfg(feature = "diagnose")]
53729		if let Ok(ret) = ret {
53730			return to_result("glTextureBufferRange", ret, (self.version_4_5.geterror)());
53731		} else {
53732			return ret
53733		}
53734		#[cfg(not(feature = "diagnose"))]
53735		return ret;
53736	}
53737	#[inline(always)]
53738	fn glTextureStorage1D(&self, texture: GLuint, levels: GLsizei, internalformat: GLenum, width: GLsizei) -> Result<()> {
53739		#[cfg(feature = "catch_nullptr")]
53740		let ret = process_catch("glTextureStorage1D", catch_unwind(||(self.version_4_5.texturestorage1d)(texture, levels, internalformat, width)));
53741		#[cfg(not(feature = "catch_nullptr"))]
53742		let ret = {(self.version_4_5.texturestorage1d)(texture, levels, internalformat, width); Ok(())};
53743		#[cfg(feature = "diagnose")]
53744		if let Ok(ret) = ret {
53745			return to_result("glTextureStorage1D", ret, (self.version_4_5.geterror)());
53746		} else {
53747			return ret
53748		}
53749		#[cfg(not(feature = "diagnose"))]
53750		return ret;
53751	}
53752	#[inline(always)]
53753	fn glTextureStorage2D(&self, texture: GLuint, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()> {
53754		#[cfg(feature = "catch_nullptr")]
53755		let ret = process_catch("glTextureStorage2D", catch_unwind(||(self.version_4_5.texturestorage2d)(texture, levels, internalformat, width, height)));
53756		#[cfg(not(feature = "catch_nullptr"))]
53757		let ret = {(self.version_4_5.texturestorage2d)(texture, levels, internalformat, width, height); Ok(())};
53758		#[cfg(feature = "diagnose")]
53759		if let Ok(ret) = ret {
53760			return to_result("glTextureStorage2D", ret, (self.version_4_5.geterror)());
53761		} else {
53762			return ret
53763		}
53764		#[cfg(not(feature = "diagnose"))]
53765		return ret;
53766	}
53767	#[inline(always)]
53768	fn glTextureStorage3D(&self, texture: GLuint, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei) -> Result<()> {
53769		#[cfg(feature = "catch_nullptr")]
53770		let ret = process_catch("glTextureStorage3D", catch_unwind(||(self.version_4_5.texturestorage3d)(texture, levels, internalformat, width, height, depth)));
53771		#[cfg(not(feature = "catch_nullptr"))]
53772		let ret = {(self.version_4_5.texturestorage3d)(texture, levels, internalformat, width, height, depth); Ok(())};
53773		#[cfg(feature = "diagnose")]
53774		if let Ok(ret) = ret {
53775			return to_result("glTextureStorage3D", ret, (self.version_4_5.geterror)());
53776		} else {
53777			return ret
53778		}
53779		#[cfg(not(feature = "diagnose"))]
53780		return ret;
53781	}
53782	#[inline(always)]
53783	fn glTextureStorage2DMultisample(&self, texture: GLuint, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, fixedsamplelocations: GLboolean) -> Result<()> {
53784		#[cfg(feature = "catch_nullptr")]
53785		let ret = process_catch("glTextureStorage2DMultisample", catch_unwind(||(self.version_4_5.texturestorage2dmultisample)(texture, samples, internalformat, width, height, fixedsamplelocations)));
53786		#[cfg(not(feature = "catch_nullptr"))]
53787		let ret = {(self.version_4_5.texturestorage2dmultisample)(texture, samples, internalformat, width, height, fixedsamplelocations); Ok(())};
53788		#[cfg(feature = "diagnose")]
53789		if let Ok(ret) = ret {
53790			return to_result("glTextureStorage2DMultisample", ret, (self.version_4_5.geterror)());
53791		} else {
53792			return ret
53793		}
53794		#[cfg(not(feature = "diagnose"))]
53795		return ret;
53796	}
53797	#[inline(always)]
53798	fn glTextureStorage3DMultisample(&self, texture: GLuint, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, fixedsamplelocations: GLboolean) -> Result<()> {
53799		#[cfg(feature = "catch_nullptr")]
53800		let ret = process_catch("glTextureStorage3DMultisample", catch_unwind(||(self.version_4_5.texturestorage3dmultisample)(texture, samples, internalformat, width, height, depth, fixedsamplelocations)));
53801		#[cfg(not(feature = "catch_nullptr"))]
53802		let ret = {(self.version_4_5.texturestorage3dmultisample)(texture, samples, internalformat, width, height, depth, fixedsamplelocations); Ok(())};
53803		#[cfg(feature = "diagnose")]
53804		if let Ok(ret) = ret {
53805			return to_result("glTextureStorage3DMultisample", ret, (self.version_4_5.geterror)());
53806		} else {
53807			return ret
53808		}
53809		#[cfg(not(feature = "diagnose"))]
53810		return ret;
53811	}
53812	#[inline(always)]
53813	fn glTextureSubImage1D(&self, texture: GLuint, level: GLint, xoffset: GLint, width: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
53814		#[cfg(feature = "catch_nullptr")]
53815		let ret = process_catch("glTextureSubImage1D", catch_unwind(||(self.version_4_5.texturesubimage1d)(texture, level, xoffset, width, format, type_, pixels)));
53816		#[cfg(not(feature = "catch_nullptr"))]
53817		let ret = {(self.version_4_5.texturesubimage1d)(texture, level, xoffset, width, format, type_, pixels); Ok(())};
53818		#[cfg(feature = "diagnose")]
53819		if let Ok(ret) = ret {
53820			return to_result("glTextureSubImage1D", ret, (self.version_4_5.geterror)());
53821		} else {
53822			return ret
53823		}
53824		#[cfg(not(feature = "diagnose"))]
53825		return ret;
53826	}
53827	#[inline(always)]
53828	fn glTextureSubImage2D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
53829		#[cfg(feature = "catch_nullptr")]
53830		let ret = process_catch("glTextureSubImage2D", catch_unwind(||(self.version_4_5.texturesubimage2d)(texture, level, xoffset, yoffset, width, height, format, type_, pixels)));
53831		#[cfg(not(feature = "catch_nullptr"))]
53832		let ret = {(self.version_4_5.texturesubimage2d)(texture, level, xoffset, yoffset, width, height, format, type_, pixels); Ok(())};
53833		#[cfg(feature = "diagnose")]
53834		if let Ok(ret) = ret {
53835			return to_result("glTextureSubImage2D", ret, (self.version_4_5.geterror)());
53836		} else {
53837			return ret
53838		}
53839		#[cfg(not(feature = "diagnose"))]
53840		return ret;
53841	}
53842	#[inline(always)]
53843	fn glTextureSubImage3D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
53844		#[cfg(feature = "catch_nullptr")]
53845		let ret = process_catch("glTextureSubImage3D", catch_unwind(||(self.version_4_5.texturesubimage3d)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, pixels)));
53846		#[cfg(not(feature = "catch_nullptr"))]
53847		let ret = {(self.version_4_5.texturesubimage3d)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, pixels); Ok(())};
53848		#[cfg(feature = "diagnose")]
53849		if let Ok(ret) = ret {
53850			return to_result("glTextureSubImage3D", ret, (self.version_4_5.geterror)());
53851		} else {
53852			return ret
53853		}
53854		#[cfg(not(feature = "diagnose"))]
53855		return ret;
53856	}
53857	#[inline(always)]
53858	fn glCompressedTextureSubImage1D(&self, texture: GLuint, level: GLint, xoffset: GLint, width: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()> {
53859		#[cfg(feature = "catch_nullptr")]
53860		let ret = process_catch("glCompressedTextureSubImage1D", catch_unwind(||(self.version_4_5.compressedtexturesubimage1d)(texture, level, xoffset, width, format, imageSize, data)));
53861		#[cfg(not(feature = "catch_nullptr"))]
53862		let ret = {(self.version_4_5.compressedtexturesubimage1d)(texture, level, xoffset, width, format, imageSize, data); Ok(())};
53863		#[cfg(feature = "diagnose")]
53864		if let Ok(ret) = ret {
53865			return to_result("glCompressedTextureSubImage1D", ret, (self.version_4_5.geterror)());
53866		} else {
53867			return ret
53868		}
53869		#[cfg(not(feature = "diagnose"))]
53870		return ret;
53871	}
53872	#[inline(always)]
53873	fn glCompressedTextureSubImage2D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()> {
53874		#[cfg(feature = "catch_nullptr")]
53875		let ret = process_catch("glCompressedTextureSubImage2D", catch_unwind(||(self.version_4_5.compressedtexturesubimage2d)(texture, level, xoffset, yoffset, width, height, format, imageSize, data)));
53876		#[cfg(not(feature = "catch_nullptr"))]
53877		let ret = {(self.version_4_5.compressedtexturesubimage2d)(texture, level, xoffset, yoffset, width, height, format, imageSize, data); Ok(())};
53878		#[cfg(feature = "diagnose")]
53879		if let Ok(ret) = ret {
53880			return to_result("glCompressedTextureSubImage2D", ret, (self.version_4_5.geterror)());
53881		} else {
53882			return ret
53883		}
53884		#[cfg(not(feature = "diagnose"))]
53885		return ret;
53886	}
53887	#[inline(always)]
53888	fn glCompressedTextureSubImage3D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()> {
53889		#[cfg(feature = "catch_nullptr")]
53890		let ret = process_catch("glCompressedTextureSubImage3D", catch_unwind(||(self.version_4_5.compressedtexturesubimage3d)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data)));
53891		#[cfg(not(feature = "catch_nullptr"))]
53892		let ret = {(self.version_4_5.compressedtexturesubimage3d)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); Ok(())};
53893		#[cfg(feature = "diagnose")]
53894		if let Ok(ret) = ret {
53895			return to_result("glCompressedTextureSubImage3D", ret, (self.version_4_5.geterror)());
53896		} else {
53897			return ret
53898		}
53899		#[cfg(not(feature = "diagnose"))]
53900		return ret;
53901	}
53902	#[inline(always)]
53903	fn glCopyTextureSubImage1D(&self, texture: GLuint, level: GLint, xoffset: GLint, x: GLint, y: GLint, width: GLsizei) -> Result<()> {
53904		#[cfg(feature = "catch_nullptr")]
53905		let ret = process_catch("glCopyTextureSubImage1D", catch_unwind(||(self.version_4_5.copytexturesubimage1d)(texture, level, xoffset, x, y, width)));
53906		#[cfg(not(feature = "catch_nullptr"))]
53907		let ret = {(self.version_4_5.copytexturesubimage1d)(texture, level, xoffset, x, y, width); Ok(())};
53908		#[cfg(feature = "diagnose")]
53909		if let Ok(ret) = ret {
53910			return to_result("glCopyTextureSubImage1D", ret, (self.version_4_5.geterror)());
53911		} else {
53912			return ret
53913		}
53914		#[cfg(not(feature = "diagnose"))]
53915		return ret;
53916	}
53917	#[inline(always)]
53918	fn glCopyTextureSubImage2D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
53919		#[cfg(feature = "catch_nullptr")]
53920		let ret = process_catch("glCopyTextureSubImage2D", catch_unwind(||(self.version_4_5.copytexturesubimage2d)(texture, level, xoffset, yoffset, x, y, width, height)));
53921		#[cfg(not(feature = "catch_nullptr"))]
53922		let ret = {(self.version_4_5.copytexturesubimage2d)(texture, level, xoffset, yoffset, x, y, width, height); Ok(())};
53923		#[cfg(feature = "diagnose")]
53924		if let Ok(ret) = ret {
53925			return to_result("glCopyTextureSubImage2D", ret, (self.version_4_5.geterror)());
53926		} else {
53927			return ret
53928		}
53929		#[cfg(not(feature = "diagnose"))]
53930		return ret;
53931	}
53932	#[inline(always)]
53933	fn glCopyTextureSubImage3D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
53934		#[cfg(feature = "catch_nullptr")]
53935		let ret = process_catch("glCopyTextureSubImage3D", catch_unwind(||(self.version_4_5.copytexturesubimage3d)(texture, level, xoffset, yoffset, zoffset, x, y, width, height)));
53936		#[cfg(not(feature = "catch_nullptr"))]
53937		let ret = {(self.version_4_5.copytexturesubimage3d)(texture, level, xoffset, yoffset, zoffset, x, y, width, height); Ok(())};
53938		#[cfg(feature = "diagnose")]
53939		if let Ok(ret) = ret {
53940			return to_result("glCopyTextureSubImage3D", ret, (self.version_4_5.geterror)());
53941		} else {
53942			return ret
53943		}
53944		#[cfg(not(feature = "diagnose"))]
53945		return ret;
53946	}
53947	#[inline(always)]
53948	fn glTextureParameterf(&self, texture: GLuint, pname: GLenum, param: GLfloat) -> Result<()> {
53949		#[cfg(feature = "catch_nullptr")]
53950		let ret = process_catch("glTextureParameterf", catch_unwind(||(self.version_4_5.textureparameterf)(texture, pname, param)));
53951		#[cfg(not(feature = "catch_nullptr"))]
53952		let ret = {(self.version_4_5.textureparameterf)(texture, pname, param); Ok(())};
53953		#[cfg(feature = "diagnose")]
53954		if let Ok(ret) = ret {
53955			return to_result("glTextureParameterf", ret, (self.version_4_5.geterror)());
53956		} else {
53957			return ret
53958		}
53959		#[cfg(not(feature = "diagnose"))]
53960		return ret;
53961	}
53962	#[inline(always)]
53963	fn glTextureParameterfv(&self, texture: GLuint, pname: GLenum, param: *const GLfloat) -> Result<()> {
53964		#[cfg(feature = "catch_nullptr")]
53965		let ret = process_catch("glTextureParameterfv", catch_unwind(||(self.version_4_5.textureparameterfv)(texture, pname, param)));
53966		#[cfg(not(feature = "catch_nullptr"))]
53967		let ret = {(self.version_4_5.textureparameterfv)(texture, pname, param); Ok(())};
53968		#[cfg(feature = "diagnose")]
53969		if let Ok(ret) = ret {
53970			return to_result("glTextureParameterfv", ret, (self.version_4_5.geterror)());
53971		} else {
53972			return ret
53973		}
53974		#[cfg(not(feature = "diagnose"))]
53975		return ret;
53976	}
53977	#[inline(always)]
53978	fn glTextureParameteri(&self, texture: GLuint, pname: GLenum, param: GLint) -> Result<()> {
53979		#[cfg(feature = "catch_nullptr")]
53980		let ret = process_catch("glTextureParameteri", catch_unwind(||(self.version_4_5.textureparameteri)(texture, pname, param)));
53981		#[cfg(not(feature = "catch_nullptr"))]
53982		let ret = {(self.version_4_5.textureparameteri)(texture, pname, param); Ok(())};
53983		#[cfg(feature = "diagnose")]
53984		if let Ok(ret) = ret {
53985			return to_result("glTextureParameteri", ret, (self.version_4_5.geterror)());
53986		} else {
53987			return ret
53988		}
53989		#[cfg(not(feature = "diagnose"))]
53990		return ret;
53991	}
53992	#[inline(always)]
53993	fn glTextureParameterIiv(&self, texture: GLuint, pname: GLenum, params: *const GLint) -> Result<()> {
53994		#[cfg(feature = "catch_nullptr")]
53995		let ret = process_catch("glTextureParameterIiv", catch_unwind(||(self.version_4_5.textureparameteriiv)(texture, pname, params)));
53996		#[cfg(not(feature = "catch_nullptr"))]
53997		let ret = {(self.version_4_5.textureparameteriiv)(texture, pname, params); Ok(())};
53998		#[cfg(feature = "diagnose")]
53999		if let Ok(ret) = ret {
54000			return to_result("glTextureParameterIiv", ret, (self.version_4_5.geterror)());
54001		} else {
54002			return ret
54003		}
54004		#[cfg(not(feature = "diagnose"))]
54005		return ret;
54006	}
54007	#[inline(always)]
54008	fn glTextureParameterIuiv(&self, texture: GLuint, pname: GLenum, params: *const GLuint) -> Result<()> {
54009		#[cfg(feature = "catch_nullptr")]
54010		let ret = process_catch("glTextureParameterIuiv", catch_unwind(||(self.version_4_5.textureparameteriuiv)(texture, pname, params)));
54011		#[cfg(not(feature = "catch_nullptr"))]
54012		let ret = {(self.version_4_5.textureparameteriuiv)(texture, pname, params); Ok(())};
54013		#[cfg(feature = "diagnose")]
54014		if let Ok(ret) = ret {
54015			return to_result("glTextureParameterIuiv", ret, (self.version_4_5.geterror)());
54016		} else {
54017			return ret
54018		}
54019		#[cfg(not(feature = "diagnose"))]
54020		return ret;
54021	}
54022	#[inline(always)]
54023	fn glTextureParameteriv(&self, texture: GLuint, pname: GLenum, param: *const GLint) -> Result<()> {
54024		#[cfg(feature = "catch_nullptr")]
54025		let ret = process_catch("glTextureParameteriv", catch_unwind(||(self.version_4_5.textureparameteriv)(texture, pname, param)));
54026		#[cfg(not(feature = "catch_nullptr"))]
54027		let ret = {(self.version_4_5.textureparameteriv)(texture, pname, param); Ok(())};
54028		#[cfg(feature = "diagnose")]
54029		if let Ok(ret) = ret {
54030			return to_result("glTextureParameteriv", ret, (self.version_4_5.geterror)());
54031		} else {
54032			return ret
54033		}
54034		#[cfg(not(feature = "diagnose"))]
54035		return ret;
54036	}
54037	#[inline(always)]
54038	fn glGenerateTextureMipmap(&self, texture: GLuint) -> Result<()> {
54039		#[cfg(feature = "catch_nullptr")]
54040		let ret = process_catch("glGenerateTextureMipmap", catch_unwind(||(self.version_4_5.generatetexturemipmap)(texture)));
54041		#[cfg(not(feature = "catch_nullptr"))]
54042		let ret = {(self.version_4_5.generatetexturemipmap)(texture); Ok(())};
54043		#[cfg(feature = "diagnose")]
54044		if let Ok(ret) = ret {
54045			return to_result("glGenerateTextureMipmap", ret, (self.version_4_5.geterror)());
54046		} else {
54047			return ret
54048		}
54049		#[cfg(not(feature = "diagnose"))]
54050		return ret;
54051	}
54052	#[inline(always)]
54053	fn glBindTextureUnit(&self, unit: GLuint, texture: GLuint) -> Result<()> {
54054		#[cfg(feature = "catch_nullptr")]
54055		let ret = process_catch("glBindTextureUnit", catch_unwind(||(self.version_4_5.bindtextureunit)(unit, texture)));
54056		#[cfg(not(feature = "catch_nullptr"))]
54057		let ret = {(self.version_4_5.bindtextureunit)(unit, texture); Ok(())};
54058		#[cfg(feature = "diagnose")]
54059		if let Ok(ret) = ret {
54060			return to_result("glBindTextureUnit", ret, (self.version_4_5.geterror)());
54061		} else {
54062			return ret
54063		}
54064		#[cfg(not(feature = "diagnose"))]
54065		return ret;
54066	}
54067	#[inline(always)]
54068	fn glGetTextureImage(&self, texture: GLuint, level: GLint, format: GLenum, type_: GLenum, bufSize: GLsizei, pixels: *mut c_void) -> Result<()> {
54069		#[cfg(feature = "catch_nullptr")]
54070		let ret = process_catch("glGetTextureImage", catch_unwind(||(self.version_4_5.gettextureimage)(texture, level, format, type_, bufSize, pixels)));
54071		#[cfg(not(feature = "catch_nullptr"))]
54072		let ret = {(self.version_4_5.gettextureimage)(texture, level, format, type_, bufSize, pixels); Ok(())};
54073		#[cfg(feature = "diagnose")]
54074		if let Ok(ret) = ret {
54075			return to_result("glGetTextureImage", ret, (self.version_4_5.geterror)());
54076		} else {
54077			return ret
54078		}
54079		#[cfg(not(feature = "diagnose"))]
54080		return ret;
54081	}
54082	#[inline(always)]
54083	fn glGetCompressedTextureImage(&self, texture: GLuint, level: GLint, bufSize: GLsizei, pixels: *mut c_void) -> Result<()> {
54084		#[cfg(feature = "catch_nullptr")]
54085		let ret = process_catch("glGetCompressedTextureImage", catch_unwind(||(self.version_4_5.getcompressedtextureimage)(texture, level, bufSize, pixels)));
54086		#[cfg(not(feature = "catch_nullptr"))]
54087		let ret = {(self.version_4_5.getcompressedtextureimage)(texture, level, bufSize, pixels); Ok(())};
54088		#[cfg(feature = "diagnose")]
54089		if let Ok(ret) = ret {
54090			return to_result("glGetCompressedTextureImage", ret, (self.version_4_5.geterror)());
54091		} else {
54092			return ret
54093		}
54094		#[cfg(not(feature = "diagnose"))]
54095		return ret;
54096	}
54097	#[inline(always)]
54098	fn glGetTextureLevelParameterfv(&self, texture: GLuint, level: GLint, pname: GLenum, params: *mut GLfloat) -> Result<()> {
54099		#[cfg(feature = "catch_nullptr")]
54100		let ret = process_catch("glGetTextureLevelParameterfv", catch_unwind(||(self.version_4_5.gettexturelevelparameterfv)(texture, level, pname, params)));
54101		#[cfg(not(feature = "catch_nullptr"))]
54102		let ret = {(self.version_4_5.gettexturelevelparameterfv)(texture, level, pname, params); Ok(())};
54103		#[cfg(feature = "diagnose")]
54104		if let Ok(ret) = ret {
54105			return to_result("glGetTextureLevelParameterfv", ret, (self.version_4_5.geterror)());
54106		} else {
54107			return ret
54108		}
54109		#[cfg(not(feature = "diagnose"))]
54110		return ret;
54111	}
54112	#[inline(always)]
54113	fn glGetTextureLevelParameteriv(&self, texture: GLuint, level: GLint, pname: GLenum, params: *mut GLint) -> Result<()> {
54114		#[cfg(feature = "catch_nullptr")]
54115		let ret = process_catch("glGetTextureLevelParameteriv", catch_unwind(||(self.version_4_5.gettexturelevelparameteriv)(texture, level, pname, params)));
54116		#[cfg(not(feature = "catch_nullptr"))]
54117		let ret = {(self.version_4_5.gettexturelevelparameteriv)(texture, level, pname, params); Ok(())};
54118		#[cfg(feature = "diagnose")]
54119		if let Ok(ret) = ret {
54120			return to_result("glGetTextureLevelParameteriv", ret, (self.version_4_5.geterror)());
54121		} else {
54122			return ret
54123		}
54124		#[cfg(not(feature = "diagnose"))]
54125		return ret;
54126	}
54127	#[inline(always)]
54128	fn glGetTextureParameterfv(&self, texture: GLuint, pname: GLenum, params: *mut GLfloat) -> Result<()> {
54129		#[cfg(feature = "catch_nullptr")]
54130		let ret = process_catch("glGetTextureParameterfv", catch_unwind(||(self.version_4_5.gettextureparameterfv)(texture, pname, params)));
54131		#[cfg(not(feature = "catch_nullptr"))]
54132		let ret = {(self.version_4_5.gettextureparameterfv)(texture, pname, params); Ok(())};
54133		#[cfg(feature = "diagnose")]
54134		if let Ok(ret) = ret {
54135			return to_result("glGetTextureParameterfv", ret, (self.version_4_5.geterror)());
54136		} else {
54137			return ret
54138		}
54139		#[cfg(not(feature = "diagnose"))]
54140		return ret;
54141	}
54142	#[inline(always)]
54143	fn glGetTextureParameterIiv(&self, texture: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
54144		#[cfg(feature = "catch_nullptr")]
54145		let ret = process_catch("glGetTextureParameterIiv", catch_unwind(||(self.version_4_5.gettextureparameteriiv)(texture, pname, params)));
54146		#[cfg(not(feature = "catch_nullptr"))]
54147		let ret = {(self.version_4_5.gettextureparameteriiv)(texture, pname, params); Ok(())};
54148		#[cfg(feature = "diagnose")]
54149		if let Ok(ret) = ret {
54150			return to_result("glGetTextureParameterIiv", ret, (self.version_4_5.geterror)());
54151		} else {
54152			return ret
54153		}
54154		#[cfg(not(feature = "diagnose"))]
54155		return ret;
54156	}
54157	#[inline(always)]
54158	fn glGetTextureParameterIuiv(&self, texture: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()> {
54159		#[cfg(feature = "catch_nullptr")]
54160		let ret = process_catch("glGetTextureParameterIuiv", catch_unwind(||(self.version_4_5.gettextureparameteriuiv)(texture, pname, params)));
54161		#[cfg(not(feature = "catch_nullptr"))]
54162		let ret = {(self.version_4_5.gettextureparameteriuiv)(texture, pname, params); Ok(())};
54163		#[cfg(feature = "diagnose")]
54164		if let Ok(ret) = ret {
54165			return to_result("glGetTextureParameterIuiv", ret, (self.version_4_5.geterror)());
54166		} else {
54167			return ret
54168		}
54169		#[cfg(not(feature = "diagnose"))]
54170		return ret;
54171	}
54172	#[inline(always)]
54173	fn glGetTextureParameteriv(&self, texture: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
54174		#[cfg(feature = "catch_nullptr")]
54175		let ret = process_catch("glGetTextureParameteriv", catch_unwind(||(self.version_4_5.gettextureparameteriv)(texture, pname, params)));
54176		#[cfg(not(feature = "catch_nullptr"))]
54177		let ret = {(self.version_4_5.gettextureparameteriv)(texture, pname, params); Ok(())};
54178		#[cfg(feature = "diagnose")]
54179		if let Ok(ret) = ret {
54180			return to_result("glGetTextureParameteriv", ret, (self.version_4_5.geterror)());
54181		} else {
54182			return ret
54183		}
54184		#[cfg(not(feature = "diagnose"))]
54185		return ret;
54186	}
54187	#[inline(always)]
54188	fn glCreateVertexArrays(&self, n: GLsizei, arrays: *mut GLuint) -> Result<()> {
54189		#[cfg(feature = "catch_nullptr")]
54190		let ret = process_catch("glCreateVertexArrays", catch_unwind(||(self.version_4_5.createvertexarrays)(n, arrays)));
54191		#[cfg(not(feature = "catch_nullptr"))]
54192		let ret = {(self.version_4_5.createvertexarrays)(n, arrays); Ok(())};
54193		#[cfg(feature = "diagnose")]
54194		if let Ok(ret) = ret {
54195			return to_result("glCreateVertexArrays", ret, (self.version_4_5.geterror)());
54196		} else {
54197			return ret
54198		}
54199		#[cfg(not(feature = "diagnose"))]
54200		return ret;
54201	}
54202	#[inline(always)]
54203	fn glDisableVertexArrayAttrib(&self, vaobj: GLuint, index: GLuint) -> Result<()> {
54204		#[cfg(feature = "catch_nullptr")]
54205		let ret = process_catch("glDisableVertexArrayAttrib", catch_unwind(||(self.version_4_5.disablevertexarrayattrib)(vaobj, index)));
54206		#[cfg(not(feature = "catch_nullptr"))]
54207		let ret = {(self.version_4_5.disablevertexarrayattrib)(vaobj, index); Ok(())};
54208		#[cfg(feature = "diagnose")]
54209		if let Ok(ret) = ret {
54210			return to_result("glDisableVertexArrayAttrib", ret, (self.version_4_5.geterror)());
54211		} else {
54212			return ret
54213		}
54214		#[cfg(not(feature = "diagnose"))]
54215		return ret;
54216	}
54217	#[inline(always)]
54218	fn glEnableVertexArrayAttrib(&self, vaobj: GLuint, index: GLuint) -> Result<()> {
54219		#[cfg(feature = "catch_nullptr")]
54220		let ret = process_catch("glEnableVertexArrayAttrib", catch_unwind(||(self.version_4_5.enablevertexarrayattrib)(vaobj, index)));
54221		#[cfg(not(feature = "catch_nullptr"))]
54222		let ret = {(self.version_4_5.enablevertexarrayattrib)(vaobj, index); Ok(())};
54223		#[cfg(feature = "diagnose")]
54224		if let Ok(ret) = ret {
54225			return to_result("glEnableVertexArrayAttrib", ret, (self.version_4_5.geterror)());
54226		} else {
54227			return ret
54228		}
54229		#[cfg(not(feature = "diagnose"))]
54230		return ret;
54231	}
54232	#[inline(always)]
54233	fn glVertexArrayElementBuffer(&self, vaobj: GLuint, buffer: GLuint) -> Result<()> {
54234		#[cfg(feature = "catch_nullptr")]
54235		let ret = process_catch("glVertexArrayElementBuffer", catch_unwind(||(self.version_4_5.vertexarrayelementbuffer)(vaobj, buffer)));
54236		#[cfg(not(feature = "catch_nullptr"))]
54237		let ret = {(self.version_4_5.vertexarrayelementbuffer)(vaobj, buffer); Ok(())};
54238		#[cfg(feature = "diagnose")]
54239		if let Ok(ret) = ret {
54240			return to_result("glVertexArrayElementBuffer", ret, (self.version_4_5.geterror)());
54241		} else {
54242			return ret
54243		}
54244		#[cfg(not(feature = "diagnose"))]
54245		return ret;
54246	}
54247	#[inline(always)]
54248	fn glVertexArrayVertexBuffer(&self, vaobj: GLuint, bindingindex: GLuint, buffer: GLuint, offset: GLintptr, stride: GLsizei) -> Result<()> {
54249		#[cfg(feature = "catch_nullptr")]
54250		let ret = process_catch("glVertexArrayVertexBuffer", catch_unwind(||(self.version_4_5.vertexarrayvertexbuffer)(vaobj, bindingindex, buffer, offset, stride)));
54251		#[cfg(not(feature = "catch_nullptr"))]
54252		let ret = {(self.version_4_5.vertexarrayvertexbuffer)(vaobj, bindingindex, buffer, offset, stride); Ok(())};
54253		#[cfg(feature = "diagnose")]
54254		if let Ok(ret) = ret {
54255			return to_result("glVertexArrayVertexBuffer", ret, (self.version_4_5.geterror)());
54256		} else {
54257			return ret
54258		}
54259		#[cfg(not(feature = "diagnose"))]
54260		return ret;
54261	}
54262	#[inline(always)]
54263	fn glVertexArrayVertexBuffers(&self, vaobj: GLuint, first: GLuint, count: GLsizei, buffers: *const GLuint, offsets: *const GLintptr, strides: *const GLsizei) -> Result<()> {
54264		#[cfg(feature = "catch_nullptr")]
54265		let ret = process_catch("glVertexArrayVertexBuffers", catch_unwind(||(self.version_4_5.vertexarrayvertexbuffers)(vaobj, first, count, buffers, offsets, strides)));
54266		#[cfg(not(feature = "catch_nullptr"))]
54267		let ret = {(self.version_4_5.vertexarrayvertexbuffers)(vaobj, first, count, buffers, offsets, strides); Ok(())};
54268		#[cfg(feature = "diagnose")]
54269		if let Ok(ret) = ret {
54270			return to_result("glVertexArrayVertexBuffers", ret, (self.version_4_5.geterror)());
54271		} else {
54272			return ret
54273		}
54274		#[cfg(not(feature = "diagnose"))]
54275		return ret;
54276	}
54277	#[inline(always)]
54278	fn glVertexArrayAttribBinding(&self, vaobj: GLuint, attribindex: GLuint, bindingindex: GLuint) -> Result<()> {
54279		#[cfg(feature = "catch_nullptr")]
54280		let ret = process_catch("glVertexArrayAttribBinding", catch_unwind(||(self.version_4_5.vertexarrayattribbinding)(vaobj, attribindex, bindingindex)));
54281		#[cfg(not(feature = "catch_nullptr"))]
54282		let ret = {(self.version_4_5.vertexarrayattribbinding)(vaobj, attribindex, bindingindex); Ok(())};
54283		#[cfg(feature = "diagnose")]
54284		if let Ok(ret) = ret {
54285			return to_result("glVertexArrayAttribBinding", ret, (self.version_4_5.geterror)());
54286		} else {
54287			return ret
54288		}
54289		#[cfg(not(feature = "diagnose"))]
54290		return ret;
54291	}
54292	#[inline(always)]
54293	fn glVertexArrayAttribFormat(&self, vaobj: GLuint, attribindex: GLuint, size: GLint, type_: GLenum, normalized: GLboolean, relativeoffset: GLuint) -> Result<()> {
54294		#[cfg(feature = "catch_nullptr")]
54295		let ret = process_catch("glVertexArrayAttribFormat", catch_unwind(||(self.version_4_5.vertexarrayattribformat)(vaobj, attribindex, size, type_, normalized, relativeoffset)));
54296		#[cfg(not(feature = "catch_nullptr"))]
54297		let ret = {(self.version_4_5.vertexarrayattribformat)(vaobj, attribindex, size, type_, normalized, relativeoffset); Ok(())};
54298		#[cfg(feature = "diagnose")]
54299		if let Ok(ret) = ret {
54300			return to_result("glVertexArrayAttribFormat", ret, (self.version_4_5.geterror)());
54301		} else {
54302			return ret
54303		}
54304		#[cfg(not(feature = "diagnose"))]
54305		return ret;
54306	}
54307	#[inline(always)]
54308	fn glVertexArrayAttribIFormat(&self, vaobj: GLuint, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()> {
54309		#[cfg(feature = "catch_nullptr")]
54310		let ret = process_catch("glVertexArrayAttribIFormat", catch_unwind(||(self.version_4_5.vertexarrayattribiformat)(vaobj, attribindex, size, type_, relativeoffset)));
54311		#[cfg(not(feature = "catch_nullptr"))]
54312		let ret = {(self.version_4_5.vertexarrayattribiformat)(vaobj, attribindex, size, type_, relativeoffset); Ok(())};
54313		#[cfg(feature = "diagnose")]
54314		if let Ok(ret) = ret {
54315			return to_result("glVertexArrayAttribIFormat", ret, (self.version_4_5.geterror)());
54316		} else {
54317			return ret
54318		}
54319		#[cfg(not(feature = "diagnose"))]
54320		return ret;
54321	}
54322	#[inline(always)]
54323	fn glVertexArrayAttribLFormat(&self, vaobj: GLuint, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()> {
54324		#[cfg(feature = "catch_nullptr")]
54325		let ret = process_catch("glVertexArrayAttribLFormat", catch_unwind(||(self.version_4_5.vertexarrayattriblformat)(vaobj, attribindex, size, type_, relativeoffset)));
54326		#[cfg(not(feature = "catch_nullptr"))]
54327		let ret = {(self.version_4_5.vertexarrayattriblformat)(vaobj, attribindex, size, type_, relativeoffset); Ok(())};
54328		#[cfg(feature = "diagnose")]
54329		if let Ok(ret) = ret {
54330			return to_result("glVertexArrayAttribLFormat", ret, (self.version_4_5.geterror)());
54331		} else {
54332			return ret
54333		}
54334		#[cfg(not(feature = "diagnose"))]
54335		return ret;
54336	}
54337	#[inline(always)]
54338	fn glVertexArrayBindingDivisor(&self, vaobj: GLuint, bindingindex: GLuint, divisor: GLuint) -> Result<()> {
54339		#[cfg(feature = "catch_nullptr")]
54340		let ret = process_catch("glVertexArrayBindingDivisor", catch_unwind(||(self.version_4_5.vertexarraybindingdivisor)(vaobj, bindingindex, divisor)));
54341		#[cfg(not(feature = "catch_nullptr"))]
54342		let ret = {(self.version_4_5.vertexarraybindingdivisor)(vaobj, bindingindex, divisor); Ok(())};
54343		#[cfg(feature = "diagnose")]
54344		if let Ok(ret) = ret {
54345			return to_result("glVertexArrayBindingDivisor", ret, (self.version_4_5.geterror)());
54346		} else {
54347			return ret
54348		}
54349		#[cfg(not(feature = "diagnose"))]
54350		return ret;
54351	}
54352	#[inline(always)]
54353	fn glGetVertexArrayiv(&self, vaobj: GLuint, pname: GLenum, param: *mut GLint) -> Result<()> {
54354		#[cfg(feature = "catch_nullptr")]
54355		let ret = process_catch("glGetVertexArrayiv", catch_unwind(||(self.version_4_5.getvertexarrayiv)(vaobj, pname, param)));
54356		#[cfg(not(feature = "catch_nullptr"))]
54357		let ret = {(self.version_4_5.getvertexarrayiv)(vaobj, pname, param); Ok(())};
54358		#[cfg(feature = "diagnose")]
54359		if let Ok(ret) = ret {
54360			return to_result("glGetVertexArrayiv", ret, (self.version_4_5.geterror)());
54361		} else {
54362			return ret
54363		}
54364		#[cfg(not(feature = "diagnose"))]
54365		return ret;
54366	}
54367	#[inline(always)]
54368	fn glGetVertexArrayIndexediv(&self, vaobj: GLuint, index: GLuint, pname: GLenum, param: *mut GLint) -> Result<()> {
54369		#[cfg(feature = "catch_nullptr")]
54370		let ret = process_catch("glGetVertexArrayIndexediv", catch_unwind(||(self.version_4_5.getvertexarrayindexediv)(vaobj, index, pname, param)));
54371		#[cfg(not(feature = "catch_nullptr"))]
54372		let ret = {(self.version_4_5.getvertexarrayindexediv)(vaobj, index, pname, param); Ok(())};
54373		#[cfg(feature = "diagnose")]
54374		if let Ok(ret) = ret {
54375			return to_result("glGetVertexArrayIndexediv", ret, (self.version_4_5.geterror)());
54376		} else {
54377			return ret
54378		}
54379		#[cfg(not(feature = "diagnose"))]
54380		return ret;
54381	}
54382	#[inline(always)]
54383	fn glGetVertexArrayIndexed64iv(&self, vaobj: GLuint, index: GLuint, pname: GLenum, param: *mut GLint64) -> Result<()> {
54384		#[cfg(feature = "catch_nullptr")]
54385		let ret = process_catch("glGetVertexArrayIndexed64iv", catch_unwind(||(self.version_4_5.getvertexarrayindexed64iv)(vaobj, index, pname, param)));
54386		#[cfg(not(feature = "catch_nullptr"))]
54387		let ret = {(self.version_4_5.getvertexarrayindexed64iv)(vaobj, index, pname, param); Ok(())};
54388		#[cfg(feature = "diagnose")]
54389		if let Ok(ret) = ret {
54390			return to_result("glGetVertexArrayIndexed64iv", ret, (self.version_4_5.geterror)());
54391		} else {
54392			return ret
54393		}
54394		#[cfg(not(feature = "diagnose"))]
54395		return ret;
54396	}
54397	#[inline(always)]
54398	fn glCreateSamplers(&self, n: GLsizei, samplers: *mut GLuint) -> Result<()> {
54399		#[cfg(feature = "catch_nullptr")]
54400		let ret = process_catch("glCreateSamplers", catch_unwind(||(self.version_4_5.createsamplers)(n, samplers)));
54401		#[cfg(not(feature = "catch_nullptr"))]
54402		let ret = {(self.version_4_5.createsamplers)(n, samplers); Ok(())};
54403		#[cfg(feature = "diagnose")]
54404		if let Ok(ret) = ret {
54405			return to_result("glCreateSamplers", ret, (self.version_4_5.geterror)());
54406		} else {
54407			return ret
54408		}
54409		#[cfg(not(feature = "diagnose"))]
54410		return ret;
54411	}
54412	#[inline(always)]
54413	fn glCreateProgramPipelines(&self, n: GLsizei, pipelines: *mut GLuint) -> Result<()> {
54414		#[cfg(feature = "catch_nullptr")]
54415		let ret = process_catch("glCreateProgramPipelines", catch_unwind(||(self.version_4_5.createprogrampipelines)(n, pipelines)));
54416		#[cfg(not(feature = "catch_nullptr"))]
54417		let ret = {(self.version_4_5.createprogrampipelines)(n, pipelines); Ok(())};
54418		#[cfg(feature = "diagnose")]
54419		if let Ok(ret) = ret {
54420			return to_result("glCreateProgramPipelines", ret, (self.version_4_5.geterror)());
54421		} else {
54422			return ret
54423		}
54424		#[cfg(not(feature = "diagnose"))]
54425		return ret;
54426	}
54427	#[inline(always)]
54428	fn glCreateQueries(&self, target: GLenum, n: GLsizei, ids: *mut GLuint) -> Result<()> {
54429		#[cfg(feature = "catch_nullptr")]
54430		let ret = process_catch("glCreateQueries", catch_unwind(||(self.version_4_5.createqueries)(target, n, ids)));
54431		#[cfg(not(feature = "catch_nullptr"))]
54432		let ret = {(self.version_4_5.createqueries)(target, n, ids); Ok(())};
54433		#[cfg(feature = "diagnose")]
54434		if let Ok(ret) = ret {
54435			return to_result("glCreateQueries", ret, (self.version_4_5.geterror)());
54436		} else {
54437			return ret
54438		}
54439		#[cfg(not(feature = "diagnose"))]
54440		return ret;
54441	}
54442	#[inline(always)]
54443	fn glGetQueryBufferObjecti64v(&self, id: GLuint, buffer: GLuint, pname: GLenum, offset: GLintptr) -> Result<()> {
54444		#[cfg(feature = "catch_nullptr")]
54445		let ret = process_catch("glGetQueryBufferObjecti64v", catch_unwind(||(self.version_4_5.getquerybufferobjecti64v)(id, buffer, pname, offset)));
54446		#[cfg(not(feature = "catch_nullptr"))]
54447		let ret = {(self.version_4_5.getquerybufferobjecti64v)(id, buffer, pname, offset); Ok(())};
54448		#[cfg(feature = "diagnose")]
54449		if let Ok(ret) = ret {
54450			return to_result("glGetQueryBufferObjecti64v", ret, (self.version_4_5.geterror)());
54451		} else {
54452			return ret
54453		}
54454		#[cfg(not(feature = "diagnose"))]
54455		return ret;
54456	}
54457	#[inline(always)]
54458	fn glGetQueryBufferObjectiv(&self, id: GLuint, buffer: GLuint, pname: GLenum, offset: GLintptr) -> Result<()> {
54459		#[cfg(feature = "catch_nullptr")]
54460		let ret = process_catch("glGetQueryBufferObjectiv", catch_unwind(||(self.version_4_5.getquerybufferobjectiv)(id, buffer, pname, offset)));
54461		#[cfg(not(feature = "catch_nullptr"))]
54462		let ret = {(self.version_4_5.getquerybufferobjectiv)(id, buffer, pname, offset); Ok(())};
54463		#[cfg(feature = "diagnose")]
54464		if let Ok(ret) = ret {
54465			return to_result("glGetQueryBufferObjectiv", ret, (self.version_4_5.geterror)());
54466		} else {
54467			return ret
54468		}
54469		#[cfg(not(feature = "diagnose"))]
54470		return ret;
54471	}
54472	#[inline(always)]
54473	fn glGetQueryBufferObjectui64v(&self, id: GLuint, buffer: GLuint, pname: GLenum, offset: GLintptr) -> Result<()> {
54474		#[cfg(feature = "catch_nullptr")]
54475		let ret = process_catch("glGetQueryBufferObjectui64v", catch_unwind(||(self.version_4_5.getquerybufferobjectui64v)(id, buffer, pname, offset)));
54476		#[cfg(not(feature = "catch_nullptr"))]
54477		let ret = {(self.version_4_5.getquerybufferobjectui64v)(id, buffer, pname, offset); Ok(())};
54478		#[cfg(feature = "diagnose")]
54479		if let Ok(ret) = ret {
54480			return to_result("glGetQueryBufferObjectui64v", ret, (self.version_4_5.geterror)());
54481		} else {
54482			return ret
54483		}
54484		#[cfg(not(feature = "diagnose"))]
54485		return ret;
54486	}
54487	#[inline(always)]
54488	fn glGetQueryBufferObjectuiv(&self, id: GLuint, buffer: GLuint, pname: GLenum, offset: GLintptr) -> Result<()> {
54489		#[cfg(feature = "catch_nullptr")]
54490		let ret = process_catch("glGetQueryBufferObjectuiv", catch_unwind(||(self.version_4_5.getquerybufferobjectuiv)(id, buffer, pname, offset)));
54491		#[cfg(not(feature = "catch_nullptr"))]
54492		let ret = {(self.version_4_5.getquerybufferobjectuiv)(id, buffer, pname, offset); Ok(())};
54493		#[cfg(feature = "diagnose")]
54494		if let Ok(ret) = ret {
54495			return to_result("glGetQueryBufferObjectuiv", ret, (self.version_4_5.geterror)());
54496		} else {
54497			return ret
54498		}
54499		#[cfg(not(feature = "diagnose"))]
54500		return ret;
54501	}
54502	#[inline(always)]
54503	fn glMemoryBarrierByRegion(&self, barriers: GLbitfield) -> Result<()> {
54504		#[cfg(feature = "catch_nullptr")]
54505		let ret = process_catch("glMemoryBarrierByRegion", catch_unwind(||(self.version_4_5.memorybarrierbyregion)(barriers)));
54506		#[cfg(not(feature = "catch_nullptr"))]
54507		let ret = {(self.version_4_5.memorybarrierbyregion)(barriers); Ok(())};
54508		#[cfg(feature = "diagnose")]
54509		if let Ok(ret) = ret {
54510			return to_result("glMemoryBarrierByRegion", ret, (self.version_4_5.geterror)());
54511		} else {
54512			return ret
54513		}
54514		#[cfg(not(feature = "diagnose"))]
54515		return ret;
54516	}
54517	#[inline(always)]
54518	fn glGetTextureSubImage(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, format: GLenum, type_: GLenum, bufSize: GLsizei, pixels: *mut c_void) -> Result<()> {
54519		#[cfg(feature = "catch_nullptr")]
54520		let ret = process_catch("glGetTextureSubImage", catch_unwind(||(self.version_4_5.gettexturesubimage)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, bufSize, pixels)));
54521		#[cfg(not(feature = "catch_nullptr"))]
54522		let ret = {(self.version_4_5.gettexturesubimage)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, bufSize, pixels); Ok(())};
54523		#[cfg(feature = "diagnose")]
54524		if let Ok(ret) = ret {
54525			return to_result("glGetTextureSubImage", ret, (self.version_4_5.geterror)());
54526		} else {
54527			return ret
54528		}
54529		#[cfg(not(feature = "diagnose"))]
54530		return ret;
54531	}
54532	#[inline(always)]
54533	fn glGetCompressedTextureSubImage(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei, bufSize: GLsizei, pixels: *mut c_void) -> Result<()> {
54534		#[cfg(feature = "catch_nullptr")]
54535		let ret = process_catch("glGetCompressedTextureSubImage", catch_unwind(||(self.version_4_5.getcompressedtexturesubimage)(texture, level, xoffset, yoffset, zoffset, width, height, depth, bufSize, pixels)));
54536		#[cfg(not(feature = "catch_nullptr"))]
54537		let ret = {(self.version_4_5.getcompressedtexturesubimage)(texture, level, xoffset, yoffset, zoffset, width, height, depth, bufSize, pixels); Ok(())};
54538		#[cfg(feature = "diagnose")]
54539		if let Ok(ret) = ret {
54540			return to_result("glGetCompressedTextureSubImage", ret, (self.version_4_5.geterror)());
54541		} else {
54542			return ret
54543		}
54544		#[cfg(not(feature = "diagnose"))]
54545		return ret;
54546	}
54547	#[inline(always)]
54548	fn glGetGraphicsResetStatus(&self) -> Result<GLenum> {
54549		#[cfg(feature = "catch_nullptr")]
54550		let ret = process_catch("glGetGraphicsResetStatus", catch_unwind(||(self.version_4_5.getgraphicsresetstatus)()));
54551		#[cfg(not(feature = "catch_nullptr"))]
54552		let ret = Ok((self.version_4_5.getgraphicsresetstatus)());
54553		#[cfg(feature = "diagnose")]
54554		if let Ok(ret) = ret {
54555			return to_result("glGetGraphicsResetStatus", ret, (self.version_4_5.geterror)());
54556		} else {
54557			return ret
54558		}
54559		#[cfg(not(feature = "diagnose"))]
54560		return ret;
54561	}
54562	#[inline(always)]
54563	fn glGetnCompressedTexImage(&self, target: GLenum, lod: GLint, bufSize: GLsizei, pixels: *mut c_void) -> Result<()> {
54564		#[cfg(feature = "catch_nullptr")]
54565		let ret = process_catch("glGetnCompressedTexImage", catch_unwind(||(self.version_4_5.getncompressedteximage)(target, lod, bufSize, pixels)));
54566		#[cfg(not(feature = "catch_nullptr"))]
54567		let ret = {(self.version_4_5.getncompressedteximage)(target, lod, bufSize, pixels); Ok(())};
54568		#[cfg(feature = "diagnose")]
54569		if let Ok(ret) = ret {
54570			return to_result("glGetnCompressedTexImage", ret, (self.version_4_5.geterror)());
54571		} else {
54572			return ret
54573		}
54574		#[cfg(not(feature = "diagnose"))]
54575		return ret;
54576	}
54577	#[inline(always)]
54578	fn glGetnTexImage(&self, target: GLenum, level: GLint, format: GLenum, type_: GLenum, bufSize: GLsizei, pixels: *mut c_void) -> Result<()> {
54579		#[cfg(feature = "catch_nullptr")]
54580		let ret = process_catch("glGetnTexImage", catch_unwind(||(self.version_4_5.getnteximage)(target, level, format, type_, bufSize, pixels)));
54581		#[cfg(not(feature = "catch_nullptr"))]
54582		let ret = {(self.version_4_5.getnteximage)(target, level, format, type_, bufSize, pixels); Ok(())};
54583		#[cfg(feature = "diagnose")]
54584		if let Ok(ret) = ret {
54585			return to_result("glGetnTexImage", ret, (self.version_4_5.geterror)());
54586		} else {
54587			return ret
54588		}
54589		#[cfg(not(feature = "diagnose"))]
54590		return ret;
54591	}
54592	#[inline(always)]
54593	fn glGetnUniformdv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLdouble) -> Result<()> {
54594		#[cfg(feature = "catch_nullptr")]
54595		let ret = process_catch("glGetnUniformdv", catch_unwind(||(self.version_4_5.getnuniformdv)(program, location, bufSize, params)));
54596		#[cfg(not(feature = "catch_nullptr"))]
54597		let ret = {(self.version_4_5.getnuniformdv)(program, location, bufSize, params); Ok(())};
54598		#[cfg(feature = "diagnose")]
54599		if let Ok(ret) = ret {
54600			return to_result("glGetnUniformdv", ret, (self.version_4_5.geterror)());
54601		} else {
54602			return ret
54603		}
54604		#[cfg(not(feature = "diagnose"))]
54605		return ret;
54606	}
54607	#[inline(always)]
54608	fn glGetnUniformfv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLfloat) -> Result<()> {
54609		#[cfg(feature = "catch_nullptr")]
54610		let ret = process_catch("glGetnUniformfv", catch_unwind(||(self.version_4_5.getnuniformfv)(program, location, bufSize, params)));
54611		#[cfg(not(feature = "catch_nullptr"))]
54612		let ret = {(self.version_4_5.getnuniformfv)(program, location, bufSize, params); Ok(())};
54613		#[cfg(feature = "diagnose")]
54614		if let Ok(ret) = ret {
54615			return to_result("glGetnUniformfv", ret, (self.version_4_5.geterror)());
54616		} else {
54617			return ret
54618		}
54619		#[cfg(not(feature = "diagnose"))]
54620		return ret;
54621	}
54622	#[inline(always)]
54623	fn glGetnUniformiv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLint) -> Result<()> {
54624		#[cfg(feature = "catch_nullptr")]
54625		let ret = process_catch("glGetnUniformiv", catch_unwind(||(self.version_4_5.getnuniformiv)(program, location, bufSize, params)));
54626		#[cfg(not(feature = "catch_nullptr"))]
54627		let ret = {(self.version_4_5.getnuniformiv)(program, location, bufSize, params); Ok(())};
54628		#[cfg(feature = "diagnose")]
54629		if let Ok(ret) = ret {
54630			return to_result("glGetnUniformiv", ret, (self.version_4_5.geterror)());
54631		} else {
54632			return ret
54633		}
54634		#[cfg(not(feature = "diagnose"))]
54635		return ret;
54636	}
54637	#[inline(always)]
54638	fn glGetnUniformuiv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLuint) -> Result<()> {
54639		#[cfg(feature = "catch_nullptr")]
54640		let ret = process_catch("glGetnUniformuiv", catch_unwind(||(self.version_4_5.getnuniformuiv)(program, location, bufSize, params)));
54641		#[cfg(not(feature = "catch_nullptr"))]
54642		let ret = {(self.version_4_5.getnuniformuiv)(program, location, bufSize, params); Ok(())};
54643		#[cfg(feature = "diagnose")]
54644		if let Ok(ret) = ret {
54645			return to_result("glGetnUniformuiv", ret, (self.version_4_5.geterror)());
54646		} else {
54647			return ret
54648		}
54649		#[cfg(not(feature = "diagnose"))]
54650		return ret;
54651	}
54652	#[inline(always)]
54653	fn glReadnPixels(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, bufSize: GLsizei, data: *mut c_void) -> Result<()> {
54654		#[cfg(feature = "catch_nullptr")]
54655		let ret = process_catch("glReadnPixels", catch_unwind(||(self.version_4_5.readnpixels)(x, y, width, height, format, type_, bufSize, data)));
54656		#[cfg(not(feature = "catch_nullptr"))]
54657		let ret = {(self.version_4_5.readnpixels)(x, y, width, height, format, type_, bufSize, data); Ok(())};
54658		#[cfg(feature = "diagnose")]
54659		if let Ok(ret) = ret {
54660			return to_result("glReadnPixels", ret, (self.version_4_5.geterror)());
54661		} else {
54662			return ret
54663		}
54664		#[cfg(not(feature = "diagnose"))]
54665		return ret;
54666	}
54667	#[inline(always)]
54668	fn glGetnMapdv(&self, target: GLenum, query: GLenum, bufSize: GLsizei, v: *mut GLdouble) -> Result<()> {
54669		#[cfg(feature = "catch_nullptr")]
54670		let ret = process_catch("glGetnMapdv", catch_unwind(||(self.version_4_5.getnmapdv)(target, query, bufSize, v)));
54671		#[cfg(not(feature = "catch_nullptr"))]
54672		let ret = {(self.version_4_5.getnmapdv)(target, query, bufSize, v); Ok(())};
54673		#[cfg(feature = "diagnose")]
54674		if let Ok(ret) = ret {
54675			return to_result("glGetnMapdv", ret, (self.version_4_5.geterror)());
54676		} else {
54677			return ret
54678		}
54679		#[cfg(not(feature = "diagnose"))]
54680		return ret;
54681	}
54682	#[inline(always)]
54683	fn glGetnMapfv(&self, target: GLenum, query: GLenum, bufSize: GLsizei, v: *mut GLfloat) -> Result<()> {
54684		#[cfg(feature = "catch_nullptr")]
54685		let ret = process_catch("glGetnMapfv", catch_unwind(||(self.version_4_5.getnmapfv)(target, query, bufSize, v)));
54686		#[cfg(not(feature = "catch_nullptr"))]
54687		let ret = {(self.version_4_5.getnmapfv)(target, query, bufSize, v); Ok(())};
54688		#[cfg(feature = "diagnose")]
54689		if let Ok(ret) = ret {
54690			return to_result("glGetnMapfv", ret, (self.version_4_5.geterror)());
54691		} else {
54692			return ret
54693		}
54694		#[cfg(not(feature = "diagnose"))]
54695		return ret;
54696	}
54697	#[inline(always)]
54698	fn glGetnMapiv(&self, target: GLenum, query: GLenum, bufSize: GLsizei, v: *mut GLint) -> Result<()> {
54699		#[cfg(feature = "catch_nullptr")]
54700		let ret = process_catch("glGetnMapiv", catch_unwind(||(self.version_4_5.getnmapiv)(target, query, bufSize, v)));
54701		#[cfg(not(feature = "catch_nullptr"))]
54702		let ret = {(self.version_4_5.getnmapiv)(target, query, bufSize, v); Ok(())};
54703		#[cfg(feature = "diagnose")]
54704		if let Ok(ret) = ret {
54705			return to_result("glGetnMapiv", ret, (self.version_4_5.geterror)());
54706		} else {
54707			return ret
54708		}
54709		#[cfg(not(feature = "diagnose"))]
54710		return ret;
54711	}
54712	#[inline(always)]
54713	fn glGetnPixelMapfv(&self, map: GLenum, bufSize: GLsizei, values: *mut GLfloat) -> Result<()> {
54714		#[cfg(feature = "catch_nullptr")]
54715		let ret = process_catch("glGetnPixelMapfv", catch_unwind(||(self.version_4_5.getnpixelmapfv)(map, bufSize, values)));
54716		#[cfg(not(feature = "catch_nullptr"))]
54717		let ret = {(self.version_4_5.getnpixelmapfv)(map, bufSize, values); Ok(())};
54718		#[cfg(feature = "diagnose")]
54719		if let Ok(ret) = ret {
54720			return to_result("glGetnPixelMapfv", ret, (self.version_4_5.geterror)());
54721		} else {
54722			return ret
54723		}
54724		#[cfg(not(feature = "diagnose"))]
54725		return ret;
54726	}
54727	#[inline(always)]
54728	fn glGetnPixelMapuiv(&self, map: GLenum, bufSize: GLsizei, values: *mut GLuint) -> Result<()> {
54729		#[cfg(feature = "catch_nullptr")]
54730		let ret = process_catch("glGetnPixelMapuiv", catch_unwind(||(self.version_4_5.getnpixelmapuiv)(map, bufSize, values)));
54731		#[cfg(not(feature = "catch_nullptr"))]
54732		let ret = {(self.version_4_5.getnpixelmapuiv)(map, bufSize, values); Ok(())};
54733		#[cfg(feature = "diagnose")]
54734		if let Ok(ret) = ret {
54735			return to_result("glGetnPixelMapuiv", ret, (self.version_4_5.geterror)());
54736		} else {
54737			return ret
54738		}
54739		#[cfg(not(feature = "diagnose"))]
54740		return ret;
54741	}
54742	#[inline(always)]
54743	fn glGetnPixelMapusv(&self, map: GLenum, bufSize: GLsizei, values: *mut GLushort) -> Result<()> {
54744		#[cfg(feature = "catch_nullptr")]
54745		let ret = process_catch("glGetnPixelMapusv", catch_unwind(||(self.version_4_5.getnpixelmapusv)(map, bufSize, values)));
54746		#[cfg(not(feature = "catch_nullptr"))]
54747		let ret = {(self.version_4_5.getnpixelmapusv)(map, bufSize, values); Ok(())};
54748		#[cfg(feature = "diagnose")]
54749		if let Ok(ret) = ret {
54750			return to_result("glGetnPixelMapusv", ret, (self.version_4_5.geterror)());
54751		} else {
54752			return ret
54753		}
54754		#[cfg(not(feature = "diagnose"))]
54755		return ret;
54756	}
54757	#[inline(always)]
54758	fn glGetnPolygonStipple(&self, bufSize: GLsizei, pattern: *mut GLubyte) -> Result<()> {
54759		#[cfg(feature = "catch_nullptr")]
54760		let ret = process_catch("glGetnPolygonStipple", catch_unwind(||(self.version_4_5.getnpolygonstipple)(bufSize, pattern)));
54761		#[cfg(not(feature = "catch_nullptr"))]
54762		let ret = {(self.version_4_5.getnpolygonstipple)(bufSize, pattern); Ok(())};
54763		#[cfg(feature = "diagnose")]
54764		if let Ok(ret) = ret {
54765			return to_result("glGetnPolygonStipple", ret, (self.version_4_5.geterror)());
54766		} else {
54767			return ret
54768		}
54769		#[cfg(not(feature = "diagnose"))]
54770		return ret;
54771	}
54772	#[inline(always)]
54773	fn glGetnColorTable(&self, target: GLenum, format: GLenum, type_: GLenum, bufSize: GLsizei, table: *mut c_void) -> Result<()> {
54774		#[cfg(feature = "catch_nullptr")]
54775		let ret = process_catch("glGetnColorTable", catch_unwind(||(self.version_4_5.getncolortable)(target, format, type_, bufSize, table)));
54776		#[cfg(not(feature = "catch_nullptr"))]
54777		let ret = {(self.version_4_5.getncolortable)(target, format, type_, bufSize, table); Ok(())};
54778		#[cfg(feature = "diagnose")]
54779		if let Ok(ret) = ret {
54780			return to_result("glGetnColorTable", ret, (self.version_4_5.geterror)());
54781		} else {
54782			return ret
54783		}
54784		#[cfg(not(feature = "diagnose"))]
54785		return ret;
54786	}
54787	#[inline(always)]
54788	fn glGetnConvolutionFilter(&self, target: GLenum, format: GLenum, type_: GLenum, bufSize: GLsizei, image: *mut c_void) -> Result<()> {
54789		#[cfg(feature = "catch_nullptr")]
54790		let ret = process_catch("glGetnConvolutionFilter", catch_unwind(||(self.version_4_5.getnconvolutionfilter)(target, format, type_, bufSize, image)));
54791		#[cfg(not(feature = "catch_nullptr"))]
54792		let ret = {(self.version_4_5.getnconvolutionfilter)(target, format, type_, bufSize, image); Ok(())};
54793		#[cfg(feature = "diagnose")]
54794		if let Ok(ret) = ret {
54795			return to_result("glGetnConvolutionFilter", ret, (self.version_4_5.geterror)());
54796		} else {
54797			return ret
54798		}
54799		#[cfg(not(feature = "diagnose"))]
54800		return ret;
54801	}
54802	#[inline(always)]
54803	fn glGetnSeparableFilter(&self, target: GLenum, format: GLenum, type_: GLenum, rowBufSize: GLsizei, row: *mut c_void, columnBufSize: GLsizei, column: *mut c_void, span: *mut c_void) -> Result<()> {
54804		#[cfg(feature = "catch_nullptr")]
54805		let ret = process_catch("glGetnSeparableFilter", catch_unwind(||(self.version_4_5.getnseparablefilter)(target, format, type_, rowBufSize, row, columnBufSize, column, span)));
54806		#[cfg(not(feature = "catch_nullptr"))]
54807		let ret = {(self.version_4_5.getnseparablefilter)(target, format, type_, rowBufSize, row, columnBufSize, column, span); Ok(())};
54808		#[cfg(feature = "diagnose")]
54809		if let Ok(ret) = ret {
54810			return to_result("glGetnSeparableFilter", ret, (self.version_4_5.geterror)());
54811		} else {
54812			return ret
54813		}
54814		#[cfg(not(feature = "diagnose"))]
54815		return ret;
54816	}
54817	#[inline(always)]
54818	fn glGetnHistogram(&self, target: GLenum, reset: GLboolean, format: GLenum, type_: GLenum, bufSize: GLsizei, values: *mut c_void) -> Result<()> {
54819		#[cfg(feature = "catch_nullptr")]
54820		let ret = process_catch("glGetnHistogram", catch_unwind(||(self.version_4_5.getnhistogram)(target, reset, format, type_, bufSize, values)));
54821		#[cfg(not(feature = "catch_nullptr"))]
54822		let ret = {(self.version_4_5.getnhistogram)(target, reset, format, type_, bufSize, values); Ok(())};
54823		#[cfg(feature = "diagnose")]
54824		if let Ok(ret) = ret {
54825			return to_result("glGetnHistogram", ret, (self.version_4_5.geterror)());
54826		} else {
54827			return ret
54828		}
54829		#[cfg(not(feature = "diagnose"))]
54830		return ret;
54831	}
54832	#[inline(always)]
54833	fn glGetnMinmax(&self, target: GLenum, reset: GLboolean, format: GLenum, type_: GLenum, bufSize: GLsizei, values: *mut c_void) -> Result<()> {
54834		#[cfg(feature = "catch_nullptr")]
54835		let ret = process_catch("glGetnMinmax", catch_unwind(||(self.version_4_5.getnminmax)(target, reset, format, type_, bufSize, values)));
54836		#[cfg(not(feature = "catch_nullptr"))]
54837		let ret = {(self.version_4_5.getnminmax)(target, reset, format, type_, bufSize, values); Ok(())};
54838		#[cfg(feature = "diagnose")]
54839		if let Ok(ret) = ret {
54840			return to_result("glGetnMinmax", ret, (self.version_4_5.geterror)());
54841		} else {
54842			return ret
54843		}
54844		#[cfg(not(feature = "diagnose"))]
54845		return ret;
54846	}
54847	#[inline(always)]
54848	fn glTextureBarrier(&self) -> Result<()> {
54849		#[cfg(feature = "catch_nullptr")]
54850		let ret = process_catch("glTextureBarrier", catch_unwind(||(self.version_4_5.texturebarrier)()));
54851		#[cfg(not(feature = "catch_nullptr"))]
54852		let ret = {(self.version_4_5.texturebarrier)(); Ok(())};
54853		#[cfg(feature = "diagnose")]
54854		if let Ok(ret) = ret {
54855			return to_result("glTextureBarrier", ret, (self.version_4_5.geterror)());
54856		} else {
54857			return ret
54858		}
54859		#[cfg(not(feature = "diagnose"))]
54860		return ret;
54861	}
54862}
54863
54864impl GL_4_6_g for GLCore {
54865	#[inline(always)]
54866	fn glSpecializeShader(&self, shader: GLuint, pEntryPoint: *const GLchar, numSpecializationConstants: GLuint, pConstantIndex: *const GLuint, pConstantValue: *const GLuint) -> Result<()> {
54867		#[cfg(feature = "catch_nullptr")]
54868		let ret = process_catch("glSpecializeShader", catch_unwind(||(self.version_4_6.specializeshader)(shader, pEntryPoint, numSpecializationConstants, pConstantIndex, pConstantValue)));
54869		#[cfg(not(feature = "catch_nullptr"))]
54870		let ret = {(self.version_4_6.specializeshader)(shader, pEntryPoint, numSpecializationConstants, pConstantIndex, pConstantValue); Ok(())};
54871		#[cfg(feature = "diagnose")]
54872		if let Ok(ret) = ret {
54873			return to_result("glSpecializeShader", ret, (self.version_4_6.geterror)());
54874		} else {
54875			return ret
54876		}
54877		#[cfg(not(feature = "diagnose"))]
54878		return ret;
54879	}
54880	#[inline(always)]
54881	fn glMultiDrawArraysIndirectCount(&self, mode: GLenum, indirect: *const c_void, drawcount: GLintptr, maxdrawcount: GLsizei, stride: GLsizei) -> Result<()> {
54882		#[cfg(feature = "catch_nullptr")]
54883		let ret = process_catch("glMultiDrawArraysIndirectCount", catch_unwind(||(self.version_4_6.multidrawarraysindirectcount)(mode, indirect, drawcount, maxdrawcount, stride)));
54884		#[cfg(not(feature = "catch_nullptr"))]
54885		let ret = {(self.version_4_6.multidrawarraysindirectcount)(mode, indirect, drawcount, maxdrawcount, stride); Ok(())};
54886		#[cfg(feature = "diagnose")]
54887		if let Ok(ret) = ret {
54888			return to_result("glMultiDrawArraysIndirectCount", ret, (self.version_4_6.geterror)());
54889		} else {
54890			return ret
54891		}
54892		#[cfg(not(feature = "diagnose"))]
54893		return ret;
54894	}
54895	#[inline(always)]
54896	fn glMultiDrawElementsIndirectCount(&self, mode: GLenum, type_: GLenum, indirect: *const c_void, drawcount: GLintptr, maxdrawcount: GLsizei, stride: GLsizei) -> Result<()> {
54897		#[cfg(feature = "catch_nullptr")]
54898		let ret = process_catch("glMultiDrawElementsIndirectCount", catch_unwind(||(self.version_4_6.multidrawelementsindirectcount)(mode, type_, indirect, drawcount, maxdrawcount, stride)));
54899		#[cfg(not(feature = "catch_nullptr"))]
54900		let ret = {(self.version_4_6.multidrawelementsindirectcount)(mode, type_, indirect, drawcount, maxdrawcount, stride); Ok(())};
54901		#[cfg(feature = "diagnose")]
54902		if let Ok(ret) = ret {
54903			return to_result("glMultiDrawElementsIndirectCount", ret, (self.version_4_6.geterror)());
54904		} else {
54905			return ret
54906		}
54907		#[cfg(not(feature = "diagnose"))]
54908		return ret;
54909	}
54910	#[inline(always)]
54911	fn glPolygonOffsetClamp(&self, factor: GLfloat, units: GLfloat, clamp: GLfloat) -> Result<()> {
54912		#[cfg(feature = "catch_nullptr")]
54913		let ret = process_catch("glPolygonOffsetClamp", catch_unwind(||(self.version_4_6.polygonoffsetclamp)(factor, units, clamp)));
54914		#[cfg(not(feature = "catch_nullptr"))]
54915		let ret = {(self.version_4_6.polygonoffsetclamp)(factor, units, clamp); Ok(())};
54916		#[cfg(feature = "diagnose")]
54917		if let Ok(ret) = ret {
54918			return to_result("glPolygonOffsetClamp", ret, (self.version_4_6.geterror)());
54919		} else {
54920			return ret
54921		}
54922		#[cfg(not(feature = "diagnose"))]
54923		return ret;
54924	}
54925}
54926
54927impl ES_GL_2_0_g for GLCore {
54928}
54929
54930impl ES_GL_3_0_g for GLCore {
54931}
54932
54933impl ES_GL_3_1_g for GLCore {
54934}
54935
54936impl ES_GL_3_2_g for GLCore {
54937	#[inline(always)]
54938	fn glBlendBarrier(&self) -> Result<()> {
54939		#[cfg(feature = "catch_nullptr")]
54940		let ret = process_catch("glBlendBarrier", catch_unwind(||(self.esversion_3_2.blendbarrier)()));
54941		#[cfg(not(feature = "catch_nullptr"))]
54942		let ret = {(self.esversion_3_2.blendbarrier)(); Ok(())};
54943		#[cfg(feature = "diagnose")]
54944		if let Ok(ret) = ret {
54945			return to_result("glBlendBarrier", ret, (self.esversion_3_2.geterror)());
54946		} else {
54947			return ret
54948		}
54949		#[cfg(not(feature = "diagnose"))]
54950		return ret;
54951	}
54952	#[inline(always)]
54953	fn glPrimitiveBoundingBox(&self, minX: GLfloat, minY: GLfloat, minZ: GLfloat, minW: GLfloat, maxX: GLfloat, maxY: GLfloat, maxZ: GLfloat, maxW: GLfloat) -> Result<()> {
54954		#[cfg(feature = "catch_nullptr")]
54955		let ret = process_catch("glPrimitiveBoundingBox", catch_unwind(||(self.esversion_3_2.primitiveboundingbox)(minX, minY, minZ, minW, maxX, maxY, maxZ, maxW)));
54956		#[cfg(not(feature = "catch_nullptr"))]
54957		let ret = {(self.esversion_3_2.primitiveboundingbox)(minX, minY, minZ, minW, maxX, maxY, maxZ, maxW); Ok(())};
54958		#[cfg(feature = "diagnose")]
54959		if let Ok(ret) = ret {
54960			return to_result("glPrimitiveBoundingBox", ret, (self.esversion_3_2.geterror)());
54961		} else {
54962			return ret
54963		}
54964		#[cfg(not(feature = "diagnose"))]
54965		return ret;
54966	}
54967}
54968
54969impl GLCore {
54970	pub fn new(mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Result<Self> {
54971		let version_1_0 = Version10::new(&mut get_proc_address)?;
54972		if !version_1_0.available {
54973			return Ok(Self::default());
54974		}
54975		Ok(Self {
54976			version_1_0,
54977			version_1_1: Version11::new(version_1_0, &mut get_proc_address),
54978			version_1_2: Version12::new(version_1_0, &mut get_proc_address),
54979			version_1_3: Version13::new(version_1_0, &mut get_proc_address),
54980			version_1_4: Version14::new(version_1_0, &mut get_proc_address),
54981			version_1_5: Version15::new(version_1_0, &mut get_proc_address),
54982			version_2_0: Version20::new(version_1_0, &mut get_proc_address),
54983			version_2_1: Version21::new(version_1_0, &mut get_proc_address),
54984			version_3_0: Version30::new(version_1_0, &mut get_proc_address),
54985			version_3_1: Version31::new(version_1_0, &mut get_proc_address),
54986			version_3_2: Version32::new(version_1_0, &mut get_proc_address),
54987			version_3_3: Version33::new(version_1_0, &mut get_proc_address),
54988			version_4_0: Version40::new(version_1_0, &mut get_proc_address),
54989			version_4_1: Version41::new(version_1_0, &mut get_proc_address),
54990			version_4_2: Version42::new(version_1_0, &mut get_proc_address),
54991			version_4_3: Version43::new(version_1_0, &mut get_proc_address),
54992			version_4_4: Version44::new(version_1_0, &mut get_proc_address),
54993			version_4_5: Version45::new(version_1_0, &mut get_proc_address),
54994			version_4_6: Version46::new(version_1_0, &mut get_proc_address),
54995			esversion_2_0: EsVersion20::new(version_1_0, &mut get_proc_address),
54996			esversion_3_0: EsVersion30::new(version_1_0, &mut get_proc_address),
54997			esversion_3_1: EsVersion31::new(version_1_0, &mut get_proc_address),
54998			esversion_3_2: EsVersion32::new(version_1_0, &mut get_proc_address),
54999		})
55000	}
55001}
55002