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)]
7use std::{
8	mem::transmute,
9	ffi::{c_void, CStr},
10	fmt::{self, Debug, Formatter},
11	panic::catch_unwind,
12	ptr::null,
13};
14
15/// The OpenGL error type
16#[derive(Debug, Clone, Copy)]
17pub enum GLCoreError {
18	NullFunctionPointer(&'static str),
19	InvalidEnum(&'static str),
20	InvalidValue(&'static str),
21	InvalidOperation(&'static str),
22	InvalidFramebufferOperation(&'static str),
23	OutOfMemory(&'static str),
24	StackUnderflow(&'static str),
25	StackOverflow(&'static str),
26	UnknownError((GLenum, &'static str)),
27}
28
29/// The result returns from this crate. It's the alias of `Result<T, GLCoreError>`
30type Result<T> = std::result::Result<T, GLCoreError>;
31
32/// Convert the constants returns from `glGetError()` to `Result<T>`
33pub fn to_result<T>(funcname: &'static str, ret: T, gl_error: GLenum) -> Result<T> {
34	match gl_error {
35		GL_NO_ERROR => Ok(ret),
36		GL_INVALID_ENUM => Err(GLCoreError::InvalidEnum(funcname)),
37		GL_INVALID_VALUE => Err(GLCoreError::InvalidValue(funcname)),
38		GL_INVALID_OPERATION => Err(GLCoreError::InvalidOperation(funcname)),
39		GL_INVALID_FRAMEBUFFER_OPERATION => Err(GLCoreError::InvalidFramebufferOperation(funcname)),
40		GL_OUT_OF_MEMORY => Err(GLCoreError::OutOfMemory(funcname)),
41		GL_STACK_UNDERFLOW => Err(GLCoreError::StackUnderflow(funcname)),
42		GL_STACK_OVERFLOW => Err(GLCoreError::StackOverflow(funcname)),
43		_ => Err(GLCoreError::UnknownError((gl_error, funcname))),
44	}
45}
46
47/// Translate the returned `Result<T>` from `std::panic::catch_unwind()` to our `Result<T>`
48pub fn process_catch<T>(funcname: &'static str, ret: std::thread::Result<T>) -> Result<T> {
49	match ret {
50		Ok(ret) => Ok(ret),
51		Err(_) => {
52			Err(GLCoreError::NullFunctionPointer(funcname))
53		}
54	}
55}
56
57/// Alias to `f32`
58pub type khronos_float_t = f32;
59
60/// Alias to `usize`
61pub type khronos_ssize_t = usize;
62
63/// Alias to `usize`
64pub type khronos_intptr_t = usize;
65
66/// Alias to `i16`
67pub type khronos_int16_t = i16;
68
69/// Alias to `i8`
70pub type khronos_int8_t = i8;
71
72/// Alias to `u8`
73pub type khronos_uint8_t = u8;
74
75/// Alias to `i32`
76pub type khronos_int32_t = i32;
77
78/// Alias to `u16`
79pub type khronos_uint16_t = u16;
80
81/// Alias to `i64`
82pub type khronos_int64_t = i64;
83
84/// Alias to `u64`
85pub type khronos_uint64_t = u64;
86/// The prototype to the OpenGL callback function `GLDEBUGPROC`
87pub type GLDEBUGPROC = extern "system" fn(GLenum, GLenum, GLuint, GLenum, GLsizei, *const GLchar, *const c_void);
88/// Alias to `c_void`
89pub type GLvoid = c_void;
90
91/// Alias to `u32`
92pub type GLenum = u32;
93
94/// Alias to `u32`
95pub type GLbitfield = u32;
96
97/// Alias to `u32`
98pub type GLuint = u32;
99
100/// Alias to `f32`
101pub type GLfloat = f32;
102
103/// Alias to `i32`
104pub type GLint = i32;
105
106/// Alias to `i32`
107pub type GLsizei = i32;
108
109/// Alias to `f64`
110pub type GLdouble = f64;
111
112/// Alias to `u8`
113pub type GLboolean = u8;
114
115/// Alias to `u8`
116pub type GLubyte = u8;
117
118/// Alias to `i16`
119pub type GLshort = i16;
120
121/// Alias to `i8`
122pub type GLbyte = i8;
123
124/// Alias to `u16`
125pub type GLushort = u16;
126
127/// The prototype to the OpenGL function `CullFace`
128type PFNGLCULLFACEPROC = extern "system" fn(GLenum);
129
130/// The prototype to the OpenGL function `FrontFace`
131type PFNGLFRONTFACEPROC = extern "system" fn(GLenum);
132
133/// The prototype to the OpenGL function `Hint`
134type PFNGLHINTPROC = extern "system" fn(GLenum, GLenum);
135
136/// The prototype to the OpenGL function `LineWidth`
137type PFNGLLINEWIDTHPROC = extern "system" fn(GLfloat);
138
139/// The prototype to the OpenGL function `PointSize`
140type PFNGLPOINTSIZEPROC = extern "system" fn(GLfloat);
141
142/// The prototype to the OpenGL function `PolygonMode`
143type PFNGLPOLYGONMODEPROC = extern "system" fn(GLenum, GLenum);
144
145/// The prototype to the OpenGL function `Scissor`
146type PFNGLSCISSORPROC = extern "system" fn(GLint, GLint, GLsizei, GLsizei);
147
148/// The prototype to the OpenGL function `TexParameterf`
149type PFNGLTEXPARAMETERFPROC = extern "system" fn(GLenum, GLenum, GLfloat);
150
151/// The prototype to the OpenGL function `TexParameterfv`
152type PFNGLTEXPARAMETERFVPROC = extern "system" fn(GLenum, GLenum, *const GLfloat);
153
154/// The prototype to the OpenGL function `TexParameteri`
155type PFNGLTEXPARAMETERIPROC = extern "system" fn(GLenum, GLenum, GLint);
156
157/// The prototype to the OpenGL function `TexParameteriv`
158type PFNGLTEXPARAMETERIVPROC = extern "system" fn(GLenum, GLenum, *const GLint);
159
160/// The prototype to the OpenGL function `TexImage1D`
161type PFNGLTEXIMAGE1DPROC = extern "system" fn(GLenum, GLint, GLint, GLsizei, GLint, GLenum, GLenum, *const c_void);
162
163/// The prototype to the OpenGL function `TexImage2D`
164type PFNGLTEXIMAGE2DPROC = extern "system" fn(GLenum, GLint, GLint, GLsizei, GLsizei, GLint, GLenum, GLenum, *const c_void);
165
166/// The prototype to the OpenGL function `DrawBuffer`
167type PFNGLDRAWBUFFERPROC = extern "system" fn(GLenum);
168
169/// The prototype to the OpenGL function `Clear`
170type PFNGLCLEARPROC = extern "system" fn(GLbitfield);
171
172/// The prototype to the OpenGL function `ClearColor`
173type PFNGLCLEARCOLORPROC = extern "system" fn(GLfloat, GLfloat, GLfloat, GLfloat);
174
175/// The prototype to the OpenGL function `ClearStencil`
176type PFNGLCLEARSTENCILPROC = extern "system" fn(GLint);
177
178/// The prototype to the OpenGL function `ClearDepth`
179type PFNGLCLEARDEPTHPROC = extern "system" fn(GLdouble);
180
181/// The prototype to the OpenGL function `StencilMask`
182type PFNGLSTENCILMASKPROC = extern "system" fn(GLuint);
183
184/// The prototype to the OpenGL function `ColorMask`
185type PFNGLCOLORMASKPROC = extern "system" fn(GLboolean, GLboolean, GLboolean, GLboolean);
186
187/// The prototype to the OpenGL function `DepthMask`
188type PFNGLDEPTHMASKPROC = extern "system" fn(GLboolean);
189
190/// The prototype to the OpenGL function `Disable`
191type PFNGLDISABLEPROC = extern "system" fn(GLenum);
192
193/// The prototype to the OpenGL function `Enable`
194type PFNGLENABLEPROC = extern "system" fn(GLenum);
195
196/// The prototype to the OpenGL function `Finish`
197type PFNGLFINISHPROC = extern "system" fn();
198
199/// The prototype to the OpenGL function `Flush`
200type PFNGLFLUSHPROC = extern "system" fn();
201
202/// The prototype to the OpenGL function `BlendFunc`
203type PFNGLBLENDFUNCPROC = extern "system" fn(GLenum, GLenum);
204
205/// The prototype to the OpenGL function `LogicOp`
206type PFNGLLOGICOPPROC = extern "system" fn(GLenum);
207
208/// The prototype to the OpenGL function `StencilFunc`
209type PFNGLSTENCILFUNCPROC = extern "system" fn(GLenum, GLint, GLuint);
210
211/// The prototype to the OpenGL function `StencilOp`
212type PFNGLSTENCILOPPROC = extern "system" fn(GLenum, GLenum, GLenum);
213
214/// The prototype to the OpenGL function `DepthFunc`
215type PFNGLDEPTHFUNCPROC = extern "system" fn(GLenum);
216
217/// The prototype to the OpenGL function `PixelStoref`
218type PFNGLPIXELSTOREFPROC = extern "system" fn(GLenum, GLfloat);
219
220/// The prototype to the OpenGL function `PixelStorei`
221type PFNGLPIXELSTOREIPROC = extern "system" fn(GLenum, GLint);
222
223/// The prototype to the OpenGL function `ReadBuffer`
224type PFNGLREADBUFFERPROC = extern "system" fn(GLenum);
225
226/// The prototype to the OpenGL function `ReadPixels`
227type PFNGLREADPIXELSPROC = extern "system" fn(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, *mut c_void);
228
229/// The prototype to the OpenGL function `GetBooleanv`
230type PFNGLGETBOOLEANVPROC = extern "system" fn(GLenum, *mut GLboolean);
231
232/// The prototype to the OpenGL function `GetDoublev`
233type PFNGLGETDOUBLEVPROC = extern "system" fn(GLenum, *mut GLdouble);
234
235/// The prototype to the OpenGL function `GetError`
236type PFNGLGETERRORPROC = extern "system" fn() -> GLenum;
237
238/// The prototype to the OpenGL function `GetFloatv`
239type PFNGLGETFLOATVPROC = extern "system" fn(GLenum, *mut GLfloat);
240
241/// The prototype to the OpenGL function `GetIntegerv`
242type PFNGLGETINTEGERVPROC = extern "system" fn(GLenum, *mut GLint);
243
244/// The prototype to the OpenGL function `GetString`
245type PFNGLGETSTRINGPROC = extern "system" fn(GLenum) -> *const GLubyte;
246
247/// The prototype to the OpenGL function `GetTexImage`
248type PFNGLGETTEXIMAGEPROC = extern "system" fn(GLenum, GLint, GLenum, GLenum, *mut c_void);
249
250/// The prototype to the OpenGL function `GetTexParameterfv`
251type PFNGLGETTEXPARAMETERFVPROC = extern "system" fn(GLenum, GLenum, *mut GLfloat);
252
253/// The prototype to the OpenGL function `GetTexParameteriv`
254type PFNGLGETTEXPARAMETERIVPROC = extern "system" fn(GLenum, GLenum, *mut GLint);
255
256/// The prototype to the OpenGL function `GetTexLevelParameterfv`
257type PFNGLGETTEXLEVELPARAMETERFVPROC = extern "system" fn(GLenum, GLint, GLenum, *mut GLfloat);
258
259/// The prototype to the OpenGL function `GetTexLevelParameteriv`
260type PFNGLGETTEXLEVELPARAMETERIVPROC = extern "system" fn(GLenum, GLint, GLenum, *mut GLint);
261
262/// The prototype to the OpenGL function `IsEnabled`
263type PFNGLISENABLEDPROC = extern "system" fn(GLenum) -> GLboolean;
264
265/// The prototype to the OpenGL function `DepthRange`
266type PFNGLDEPTHRANGEPROC = extern "system" fn(GLdouble, GLdouble);
267
268/// The prototype to the OpenGL function `Viewport`
269type PFNGLVIEWPORTPROC = extern "system" fn(GLint, GLint, GLsizei, GLsizei);
270
271/// The dummy function of `CullFace()`
272extern "system" fn dummy_pfnglcullfaceproc (_: GLenum) {
273	panic!("OpenGL function pointer `glCullFace()` is null.")
274}
275
276/// The dummy function of `FrontFace()`
277extern "system" fn dummy_pfnglfrontfaceproc (_: GLenum) {
278	panic!("OpenGL function pointer `glFrontFace()` is null.")
279}
280
281/// The dummy function of `Hint()`
282extern "system" fn dummy_pfnglhintproc (_: GLenum, _: GLenum) {
283	panic!("OpenGL function pointer `glHint()` is null.")
284}
285
286/// The dummy function of `LineWidth()`
287extern "system" fn dummy_pfngllinewidthproc (_: GLfloat) {
288	panic!("OpenGL function pointer `glLineWidth()` is null.")
289}
290
291/// The dummy function of `PointSize()`
292extern "system" fn dummy_pfnglpointsizeproc (_: GLfloat) {
293	panic!("OpenGL function pointer `glPointSize()` is null.")
294}
295
296/// The dummy function of `PolygonMode()`
297extern "system" fn dummy_pfnglpolygonmodeproc (_: GLenum, _: GLenum) {
298	panic!("OpenGL function pointer `glPolygonMode()` is null.")
299}
300
301/// The dummy function of `Scissor()`
302extern "system" fn dummy_pfnglscissorproc (_: GLint, _: GLint, _: GLsizei, _: GLsizei) {
303	panic!("OpenGL function pointer `glScissor()` is null.")
304}
305
306/// The dummy function of `TexParameterf()`
307extern "system" fn dummy_pfngltexparameterfproc (_: GLenum, _: GLenum, _: GLfloat) {
308	panic!("OpenGL function pointer `glTexParameterf()` is null.")
309}
310
311/// The dummy function of `TexParameterfv()`
312extern "system" fn dummy_pfngltexparameterfvproc (_: GLenum, _: GLenum, _: *const GLfloat) {
313	panic!("OpenGL function pointer `glTexParameterfv()` is null.")
314}
315
316/// The dummy function of `TexParameteri()`
317extern "system" fn dummy_pfngltexparameteriproc (_: GLenum, _: GLenum, _: GLint) {
318	panic!("OpenGL function pointer `glTexParameteri()` is null.")
319}
320
321/// The dummy function of `TexParameteriv()`
322extern "system" fn dummy_pfngltexparameterivproc (_: GLenum, _: GLenum, _: *const GLint) {
323	panic!("OpenGL function pointer `glTexParameteriv()` is null.")
324}
325
326/// The dummy function of `TexImage1D()`
327extern "system" fn dummy_pfnglteximage1dproc (_: GLenum, _: GLint, _: GLint, _: GLsizei, _: GLint, _: GLenum, _: GLenum, _: *const c_void) {
328	panic!("OpenGL function pointer `glTexImage1D()` is null.")
329}
330
331/// The dummy function of `TexImage2D()`
332extern "system" fn dummy_pfnglteximage2dproc (_: GLenum, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLint, _: GLenum, _: GLenum, _: *const c_void) {
333	panic!("OpenGL function pointer `glTexImage2D()` is null.")
334}
335
336/// The dummy function of `DrawBuffer()`
337extern "system" fn dummy_pfngldrawbufferproc (_: GLenum) {
338	panic!("OpenGL function pointer `glDrawBuffer()` is null.")
339}
340
341/// The dummy function of `Clear()`
342extern "system" fn dummy_pfnglclearproc (_: GLbitfield) {
343	panic!("OpenGL function pointer `glClear()` is null.")
344}
345
346/// The dummy function of `ClearColor()`
347extern "system" fn dummy_pfnglclearcolorproc (_: GLfloat, _: GLfloat, _: GLfloat, _: GLfloat) {
348	panic!("OpenGL function pointer `glClearColor()` is null.")
349}
350
351/// The dummy function of `ClearStencil()`
352extern "system" fn dummy_pfnglclearstencilproc (_: GLint) {
353	panic!("OpenGL function pointer `glClearStencil()` is null.")
354}
355
356/// The dummy function of `ClearDepth()`
357extern "system" fn dummy_pfnglcleardepthproc (_: GLdouble) {
358	panic!("OpenGL function pointer `glClearDepth()` is null.")
359}
360
361/// The dummy function of `StencilMask()`
362extern "system" fn dummy_pfnglstencilmaskproc (_: GLuint) {
363	panic!("OpenGL function pointer `glStencilMask()` is null.")
364}
365
366/// The dummy function of `ColorMask()`
367extern "system" fn dummy_pfnglcolormaskproc (_: GLboolean, _: GLboolean, _: GLboolean, _: GLboolean) {
368	panic!("OpenGL function pointer `glColorMask()` is null.")
369}
370
371/// The dummy function of `DepthMask()`
372extern "system" fn dummy_pfngldepthmaskproc (_: GLboolean) {
373	panic!("OpenGL function pointer `glDepthMask()` is null.")
374}
375
376/// The dummy function of `Disable()`
377extern "system" fn dummy_pfngldisableproc (_: GLenum) {
378	panic!("OpenGL function pointer `glDisable()` is null.")
379}
380
381/// The dummy function of `Enable()`
382extern "system" fn dummy_pfnglenableproc (_: GLenum) {
383	panic!("OpenGL function pointer `glEnable()` is null.")
384}
385
386/// The dummy function of `Finish()`
387extern "system" fn dummy_pfnglfinishproc () {
388	panic!("OpenGL function pointer `glFinish()` is null.")
389}
390
391/// The dummy function of `Flush()`
392extern "system" fn dummy_pfnglflushproc () {
393	panic!("OpenGL function pointer `glFlush()` is null.")
394}
395
396/// The dummy function of `BlendFunc()`
397extern "system" fn dummy_pfnglblendfuncproc (_: GLenum, _: GLenum) {
398	panic!("OpenGL function pointer `glBlendFunc()` is null.")
399}
400
401/// The dummy function of `LogicOp()`
402extern "system" fn dummy_pfngllogicopproc (_: GLenum) {
403	panic!("OpenGL function pointer `glLogicOp()` is null.")
404}
405
406/// The dummy function of `StencilFunc()`
407extern "system" fn dummy_pfnglstencilfuncproc (_: GLenum, _: GLint, _: GLuint) {
408	panic!("OpenGL function pointer `glStencilFunc()` is null.")
409}
410
411/// The dummy function of `StencilOp()`
412extern "system" fn dummy_pfnglstencilopproc (_: GLenum, _: GLenum, _: GLenum) {
413	panic!("OpenGL function pointer `glStencilOp()` is null.")
414}
415
416/// The dummy function of `DepthFunc()`
417extern "system" fn dummy_pfngldepthfuncproc (_: GLenum) {
418	panic!("OpenGL function pointer `glDepthFunc()` is null.")
419}
420
421/// The dummy function of `PixelStoref()`
422extern "system" fn dummy_pfnglpixelstorefproc (_: GLenum, _: GLfloat) {
423	panic!("OpenGL function pointer `glPixelStoref()` is null.")
424}
425
426/// The dummy function of `PixelStorei()`
427extern "system" fn dummy_pfnglpixelstoreiproc (_: GLenum, _: GLint) {
428	panic!("OpenGL function pointer `glPixelStorei()` is null.")
429}
430
431/// The dummy function of `ReadBuffer()`
432extern "system" fn dummy_pfnglreadbufferproc (_: GLenum) {
433	panic!("OpenGL function pointer `glReadBuffer()` is null.")
434}
435
436/// The dummy function of `ReadPixels()`
437extern "system" fn dummy_pfnglreadpixelsproc (_: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLenum, _: GLenum, _: *mut c_void) {
438	panic!("OpenGL function pointer `glReadPixels()` is null.")
439}
440
441/// The dummy function of `GetBooleanv()`
442extern "system" fn dummy_pfnglgetbooleanvproc (_: GLenum, _: *mut GLboolean) {
443	panic!("OpenGL function pointer `glGetBooleanv()` is null.")
444}
445
446/// The dummy function of `GetDoublev()`
447extern "system" fn dummy_pfnglgetdoublevproc (_: GLenum, _: *mut GLdouble) {
448	panic!("OpenGL function pointer `glGetDoublev()` is null.")
449}
450
451/// The dummy function of `GetError()`
452extern "system" fn dummy_pfnglgeterrorproc () -> GLenum {
453	panic!("OpenGL function pointer `glGetError()` is null.")
454}
455
456/// The dummy function of `GetFloatv()`
457extern "system" fn dummy_pfnglgetfloatvproc (_: GLenum, _: *mut GLfloat) {
458	panic!("OpenGL function pointer `glGetFloatv()` is null.")
459}
460
461/// The dummy function of `GetIntegerv()`
462extern "system" fn dummy_pfnglgetintegervproc (_: GLenum, _: *mut GLint) {
463	panic!("OpenGL function pointer `glGetIntegerv()` is null.")
464}
465
466/// The dummy function of `GetString()`
467extern "system" fn dummy_pfnglgetstringproc (_: GLenum) -> *const GLubyte {
468	panic!("OpenGL function pointer `glGetString()` is null.")
469}
470
471/// The dummy function of `GetTexImage()`
472extern "system" fn dummy_pfnglgetteximageproc (_: GLenum, _: GLint, _: GLenum, _: GLenum, _: *mut c_void) {
473	panic!("OpenGL function pointer `glGetTexImage()` is null.")
474}
475
476/// The dummy function of `GetTexParameterfv()`
477extern "system" fn dummy_pfnglgettexparameterfvproc (_: GLenum, _: GLenum, _: *mut GLfloat) {
478	panic!("OpenGL function pointer `glGetTexParameterfv()` is null.")
479}
480
481/// The dummy function of `GetTexParameteriv()`
482extern "system" fn dummy_pfnglgettexparameterivproc (_: GLenum, _: GLenum, _: *mut GLint) {
483	panic!("OpenGL function pointer `glGetTexParameteriv()` is null.")
484}
485
486/// The dummy function of `GetTexLevelParameterfv()`
487extern "system" fn dummy_pfnglgettexlevelparameterfvproc (_: GLenum, _: GLint, _: GLenum, _: *mut GLfloat) {
488	panic!("OpenGL function pointer `glGetTexLevelParameterfv()` is null.")
489}
490
491/// The dummy function of `GetTexLevelParameteriv()`
492extern "system" fn dummy_pfnglgettexlevelparameterivproc (_: GLenum, _: GLint, _: GLenum, _: *mut GLint) {
493	panic!("OpenGL function pointer `glGetTexLevelParameteriv()` is null.")
494}
495
496/// The dummy function of `IsEnabled()`
497extern "system" fn dummy_pfnglisenabledproc (_: GLenum) -> GLboolean {
498	panic!("OpenGL function pointer `glIsEnabled()` is null.")
499}
500
501/// The dummy function of `DepthRange()`
502extern "system" fn dummy_pfngldepthrangeproc (_: GLdouble, _: GLdouble) {
503	panic!("OpenGL function pointer `glDepthRange()` is null.")
504}
505
506/// The dummy function of `Viewport()`
507extern "system" fn dummy_pfnglviewportproc (_: GLint, _: GLint, _: GLsizei, _: GLsizei) {
508	panic!("OpenGL function pointer `glViewport()` is null.")
509}
510/// Constant value defined from OpenGL 1.0
511pub const GL_DEPTH_BUFFER_BIT: GLbitfield = 0x00000100;
512
513/// Constant value defined from OpenGL 1.0
514pub const GL_STENCIL_BUFFER_BIT: GLbitfield = 0x00000400;
515
516/// Constant value defined from OpenGL 1.0
517pub const GL_COLOR_BUFFER_BIT: GLbitfield = 0x00004000;
518
519/// Constant value defined from OpenGL 1.0
520pub const GL_FALSE: GLenum = 0;
521
522/// Constant value defined from OpenGL 1.0
523pub const GL_TRUE: GLenum = 1;
524
525/// Constant value defined from OpenGL 1.0
526pub const GL_POINTS: GLenum = 0x0000;
527
528/// Constant value defined from OpenGL 1.0
529pub const GL_LINES: GLenum = 0x0001;
530
531/// Constant value defined from OpenGL 1.0
532pub const GL_LINE_LOOP: GLenum = 0x0002;
533
534/// Constant value defined from OpenGL 1.0
535pub const GL_LINE_STRIP: GLenum = 0x0003;
536
537/// Constant value defined from OpenGL 1.0
538pub const GL_TRIANGLES: GLenum = 0x0004;
539
540/// Constant value defined from OpenGL 1.0
541pub const GL_TRIANGLE_STRIP: GLenum = 0x0005;
542
543/// Constant value defined from OpenGL 1.0
544pub const GL_TRIANGLE_FAN: GLenum = 0x0006;
545
546/// Constant value defined from OpenGL 1.0
547pub const GL_QUADS: GLenum = 0x0007;
548
549/// Constant value defined from OpenGL 1.0
550pub const GL_NEVER: GLenum = 0x0200;
551
552/// Constant value defined from OpenGL 1.0
553pub const GL_LESS: GLenum = 0x0201;
554
555/// Constant value defined from OpenGL 1.0
556pub const GL_EQUAL: GLenum = 0x0202;
557
558/// Constant value defined from OpenGL 1.0
559pub const GL_LEQUAL: GLenum = 0x0203;
560
561/// Constant value defined from OpenGL 1.0
562pub const GL_GREATER: GLenum = 0x0204;
563
564/// Constant value defined from OpenGL 1.0
565pub const GL_NOTEQUAL: GLenum = 0x0205;
566
567/// Constant value defined from OpenGL 1.0
568pub const GL_GEQUAL: GLenum = 0x0206;
569
570/// Constant value defined from OpenGL 1.0
571pub const GL_ALWAYS: GLenum = 0x0207;
572
573/// Constant value defined from OpenGL 1.0
574pub const GL_ZERO: GLenum = 0;
575
576/// Constant value defined from OpenGL 1.0
577pub const GL_ONE: GLenum = 1;
578
579/// Constant value defined from OpenGL 1.0
580pub const GL_SRC_COLOR: GLenum = 0x0300;
581
582/// Constant value defined from OpenGL 1.0
583pub const GL_ONE_MINUS_SRC_COLOR: GLenum = 0x0301;
584
585/// Constant value defined from OpenGL 1.0
586pub const GL_SRC_ALPHA: GLenum = 0x0302;
587
588/// Constant value defined from OpenGL 1.0
589pub const GL_ONE_MINUS_SRC_ALPHA: GLenum = 0x0303;
590
591/// Constant value defined from OpenGL 1.0
592pub const GL_DST_ALPHA: GLenum = 0x0304;
593
594/// Constant value defined from OpenGL 1.0
595pub const GL_ONE_MINUS_DST_ALPHA: GLenum = 0x0305;
596
597/// Constant value defined from OpenGL 1.0
598pub const GL_DST_COLOR: GLenum = 0x0306;
599
600/// Constant value defined from OpenGL 1.0
601pub const GL_ONE_MINUS_DST_COLOR: GLenum = 0x0307;
602
603/// Constant value defined from OpenGL 1.0
604pub const GL_SRC_ALPHA_SATURATE: GLenum = 0x0308;
605
606/// Constant value defined from OpenGL 1.0
607pub const GL_NONE: GLenum = 0;
608
609/// Constant value defined from OpenGL 1.0
610pub const GL_FRONT_LEFT: GLenum = 0x0400;
611
612/// Constant value defined from OpenGL 1.0
613pub const GL_FRONT_RIGHT: GLenum = 0x0401;
614
615/// Constant value defined from OpenGL 1.0
616pub const GL_BACK_LEFT: GLenum = 0x0402;
617
618/// Constant value defined from OpenGL 1.0
619pub const GL_BACK_RIGHT: GLenum = 0x0403;
620
621/// Constant value defined from OpenGL 1.0
622pub const GL_FRONT: GLenum = 0x0404;
623
624/// Constant value defined from OpenGL 1.0
625pub const GL_BACK: GLenum = 0x0405;
626
627/// Constant value defined from OpenGL 1.0
628pub const GL_LEFT: GLenum = 0x0406;
629
630/// Constant value defined from OpenGL 1.0
631pub const GL_RIGHT: GLenum = 0x0407;
632
633/// Constant value defined from OpenGL 1.0
634pub const GL_FRONT_AND_BACK: GLenum = 0x0408;
635
636/// Constant value defined from OpenGL 1.0
637pub const GL_NO_ERROR: GLenum = 0;
638
639/// Constant value defined from OpenGL 1.0
640pub const GL_INVALID_ENUM: GLenum = 0x0500;
641
642/// Constant value defined from OpenGL 1.0
643pub const GL_INVALID_VALUE: GLenum = 0x0501;
644
645/// Constant value defined from OpenGL 1.0
646pub const GL_INVALID_OPERATION: GLenum = 0x0502;
647
648/// Constant value defined from OpenGL 1.0
649pub const GL_OUT_OF_MEMORY: GLenum = 0x0505;
650
651/// Constant value defined from OpenGL 1.0
652pub const GL_CW: GLenum = 0x0900;
653
654/// Constant value defined from OpenGL 1.0
655pub const GL_CCW: GLenum = 0x0901;
656
657/// Constant value defined from OpenGL 1.0
658pub const GL_POINT_SIZE: GLenum = 0x0B11;
659
660/// Constant value defined from OpenGL 1.0
661pub const GL_POINT_SIZE_RANGE: GLenum = 0x0B12;
662
663/// Constant value defined from OpenGL 1.0
664pub const GL_POINT_SIZE_GRANULARITY: GLenum = 0x0B13;
665
666/// Constant value defined from OpenGL 1.0
667pub const GL_LINE_SMOOTH: GLenum = 0x0B20;
668
669/// Constant value defined from OpenGL 1.0
670pub const GL_LINE_WIDTH: GLenum = 0x0B21;
671
672/// Constant value defined from OpenGL 1.0
673pub const GL_LINE_WIDTH_RANGE: GLenum = 0x0B22;
674
675/// Constant value defined from OpenGL 1.0
676pub const GL_LINE_WIDTH_GRANULARITY: GLenum = 0x0B23;
677
678/// Constant value defined from OpenGL 1.0
679pub const GL_POLYGON_MODE: GLenum = 0x0B40;
680
681/// Constant value defined from OpenGL 1.0
682pub const GL_POLYGON_SMOOTH: GLenum = 0x0B41;
683
684/// Constant value defined from OpenGL 1.0
685pub const GL_CULL_FACE: GLenum = 0x0B44;
686
687/// Constant value defined from OpenGL 1.0
688pub const GL_CULL_FACE_MODE: GLenum = 0x0B45;
689
690/// Constant value defined from OpenGL 1.0
691pub const GL_FRONT_FACE: GLenum = 0x0B46;
692
693/// Constant value defined from OpenGL 1.0
694pub const GL_DEPTH_RANGE: GLenum = 0x0B70;
695
696/// Constant value defined from OpenGL 1.0
697pub const GL_DEPTH_TEST: GLenum = 0x0B71;
698
699/// Constant value defined from OpenGL 1.0
700pub const GL_DEPTH_WRITEMASK: GLenum = 0x0B72;
701
702/// Constant value defined from OpenGL 1.0
703pub const GL_DEPTH_CLEAR_VALUE: GLenum = 0x0B73;
704
705/// Constant value defined from OpenGL 1.0
706pub const GL_DEPTH_FUNC: GLenum = 0x0B74;
707
708/// Constant value defined from OpenGL 1.0
709pub const GL_STENCIL_TEST: GLenum = 0x0B90;
710
711/// Constant value defined from OpenGL 1.0
712pub const GL_STENCIL_CLEAR_VALUE: GLenum = 0x0B91;
713
714/// Constant value defined from OpenGL 1.0
715pub const GL_STENCIL_FUNC: GLenum = 0x0B92;
716
717/// Constant value defined from OpenGL 1.0
718pub const GL_STENCIL_VALUE_MASK: GLenum = 0x0B93;
719
720/// Constant value defined from OpenGL 1.0
721pub const GL_STENCIL_FAIL: GLenum = 0x0B94;
722
723/// Constant value defined from OpenGL 1.0
724pub const GL_STENCIL_PASS_DEPTH_FAIL: GLenum = 0x0B95;
725
726/// Constant value defined from OpenGL 1.0
727pub const GL_STENCIL_PASS_DEPTH_PASS: GLenum = 0x0B96;
728
729/// Constant value defined from OpenGL 1.0
730pub const GL_STENCIL_REF: GLenum = 0x0B97;
731
732/// Constant value defined from OpenGL 1.0
733pub const GL_STENCIL_WRITEMASK: GLenum = 0x0B98;
734
735/// Constant value defined from OpenGL 1.0
736pub const GL_VIEWPORT: GLenum = 0x0BA2;
737
738/// Constant value defined from OpenGL 1.0
739pub const GL_DITHER: GLenum = 0x0BD0;
740
741/// Constant value defined from OpenGL 1.0
742pub const GL_BLEND_DST: GLenum = 0x0BE0;
743
744/// Constant value defined from OpenGL 1.0
745pub const GL_BLEND_SRC: GLenum = 0x0BE1;
746
747/// Constant value defined from OpenGL 1.0
748pub const GL_BLEND: GLenum = 0x0BE2;
749
750/// Constant value defined from OpenGL 1.0
751pub const GL_LOGIC_OP_MODE: GLenum = 0x0BF0;
752
753/// Constant value defined from OpenGL 1.0
754pub const GL_DRAW_BUFFER: GLenum = 0x0C01;
755
756/// Constant value defined from OpenGL 1.0
757pub const GL_READ_BUFFER: GLenum = 0x0C02;
758
759/// Constant value defined from OpenGL 1.0
760pub const GL_SCISSOR_BOX: GLenum = 0x0C10;
761
762/// Constant value defined from OpenGL 1.0
763pub const GL_SCISSOR_TEST: GLenum = 0x0C11;
764
765/// Constant value defined from OpenGL 1.0
766pub const GL_COLOR_CLEAR_VALUE: GLenum = 0x0C22;
767
768/// Constant value defined from OpenGL 1.0
769pub const GL_COLOR_WRITEMASK: GLenum = 0x0C23;
770
771/// Constant value defined from OpenGL 1.0
772pub const GL_DOUBLEBUFFER: GLenum = 0x0C32;
773
774/// Constant value defined from OpenGL 1.0
775pub const GL_STEREO: GLenum = 0x0C33;
776
777/// Constant value defined from OpenGL 1.0
778pub const GL_LINE_SMOOTH_HINT: GLenum = 0x0C52;
779
780/// Constant value defined from OpenGL 1.0
781pub const GL_POLYGON_SMOOTH_HINT: GLenum = 0x0C53;
782
783/// Constant value defined from OpenGL 1.0
784pub const GL_UNPACK_SWAP_BYTES: GLenum = 0x0CF0;
785
786/// Constant value defined from OpenGL 1.0
787pub const GL_UNPACK_LSB_FIRST: GLenum = 0x0CF1;
788
789/// Constant value defined from OpenGL 1.0
790pub const GL_UNPACK_ROW_LENGTH: GLenum = 0x0CF2;
791
792/// Constant value defined from OpenGL 1.0
793pub const GL_UNPACK_SKIP_ROWS: GLenum = 0x0CF3;
794
795/// Constant value defined from OpenGL 1.0
796pub const GL_UNPACK_SKIP_PIXELS: GLenum = 0x0CF4;
797
798/// Constant value defined from OpenGL 1.0
799pub const GL_UNPACK_ALIGNMENT: GLenum = 0x0CF5;
800
801/// Constant value defined from OpenGL 1.0
802pub const GL_PACK_SWAP_BYTES: GLenum = 0x0D00;
803
804/// Constant value defined from OpenGL 1.0
805pub const GL_PACK_LSB_FIRST: GLenum = 0x0D01;
806
807/// Constant value defined from OpenGL 1.0
808pub const GL_PACK_ROW_LENGTH: GLenum = 0x0D02;
809
810/// Constant value defined from OpenGL 1.0
811pub const GL_PACK_SKIP_ROWS: GLenum = 0x0D03;
812
813/// Constant value defined from OpenGL 1.0
814pub const GL_PACK_SKIP_PIXELS: GLenum = 0x0D04;
815
816/// Constant value defined from OpenGL 1.0
817pub const GL_PACK_ALIGNMENT: GLenum = 0x0D05;
818
819/// Constant value defined from OpenGL 1.0
820pub const GL_MAX_TEXTURE_SIZE: GLenum = 0x0D33;
821
822/// Constant value defined from OpenGL 1.0
823pub const GL_MAX_VIEWPORT_DIMS: GLenum = 0x0D3A;
824
825/// Constant value defined from OpenGL 1.0
826pub const GL_SUBPIXEL_BITS: GLenum = 0x0D50;
827
828/// Constant value defined from OpenGL 1.0
829pub const GL_TEXTURE_1D: GLenum = 0x0DE0;
830
831/// Constant value defined from OpenGL 1.0
832pub const GL_TEXTURE_2D: GLenum = 0x0DE1;
833
834/// Constant value defined from OpenGL 1.0
835pub const GL_TEXTURE_WIDTH: GLenum = 0x1000;
836
837/// Constant value defined from OpenGL 1.0
838pub const GL_TEXTURE_HEIGHT: GLenum = 0x1001;
839
840/// Constant value defined from OpenGL 1.0
841pub const GL_TEXTURE_BORDER_COLOR: GLenum = 0x1004;
842
843/// Constant value defined from OpenGL 1.0
844pub const GL_DONT_CARE: GLenum = 0x1100;
845
846/// Constant value defined from OpenGL 1.0
847pub const GL_FASTEST: GLenum = 0x1101;
848
849/// Constant value defined from OpenGL 1.0
850pub const GL_NICEST: GLenum = 0x1102;
851
852/// Constant value defined from OpenGL 1.0
853pub const GL_BYTE: GLenum = 0x1400;
854
855/// Constant value defined from OpenGL 1.0
856pub const GL_UNSIGNED_BYTE: GLenum = 0x1401;
857
858/// Constant value defined from OpenGL 1.0
859pub const GL_SHORT: GLenum = 0x1402;
860
861/// Constant value defined from OpenGL 1.0
862pub const GL_UNSIGNED_SHORT: GLenum = 0x1403;
863
864/// Constant value defined from OpenGL 1.0
865pub const GL_INT: GLenum = 0x1404;
866
867/// Constant value defined from OpenGL 1.0
868pub const GL_UNSIGNED_INT: GLenum = 0x1405;
869
870/// Constant value defined from OpenGL 1.0
871pub const GL_FLOAT: GLenum = 0x1406;
872
873/// Constant value defined from OpenGL 1.0
874pub const GL_STACK_OVERFLOW: GLenum = 0x0503;
875
876/// Constant value defined from OpenGL 1.0
877pub const GL_STACK_UNDERFLOW: GLenum = 0x0504;
878
879/// Constant value defined from OpenGL 1.0
880pub const GL_CLEAR: GLenum = 0x1500;
881
882/// Constant value defined from OpenGL 1.0
883pub const GL_AND: GLenum = 0x1501;
884
885/// Constant value defined from OpenGL 1.0
886pub const GL_AND_REVERSE: GLenum = 0x1502;
887
888/// Constant value defined from OpenGL 1.0
889pub const GL_COPY: GLenum = 0x1503;
890
891/// Constant value defined from OpenGL 1.0
892pub const GL_AND_INVERTED: GLenum = 0x1504;
893
894/// Constant value defined from OpenGL 1.0
895pub const GL_NOOP: GLenum = 0x1505;
896
897/// Constant value defined from OpenGL 1.0
898pub const GL_XOR: GLenum = 0x1506;
899
900/// Constant value defined from OpenGL 1.0
901pub const GL_OR: GLenum = 0x1507;
902
903/// Constant value defined from OpenGL 1.0
904pub const GL_NOR: GLenum = 0x1508;
905
906/// Constant value defined from OpenGL 1.0
907pub const GL_EQUIV: GLenum = 0x1509;
908
909/// Constant value defined from OpenGL 1.0
910pub const GL_INVERT: GLenum = 0x150A;
911
912/// Constant value defined from OpenGL 1.0
913pub const GL_OR_REVERSE: GLenum = 0x150B;
914
915/// Constant value defined from OpenGL 1.0
916pub const GL_COPY_INVERTED: GLenum = 0x150C;
917
918/// Constant value defined from OpenGL 1.0
919pub const GL_OR_INVERTED: GLenum = 0x150D;
920
921/// Constant value defined from OpenGL 1.0
922pub const GL_NAND: GLenum = 0x150E;
923
924/// Constant value defined from OpenGL 1.0
925pub const GL_SET: GLenum = 0x150F;
926
927/// Constant value defined from OpenGL 1.0
928pub const GL_TEXTURE: GLenum = 0x1702;
929
930/// Constant value defined from OpenGL 1.0
931pub const GL_COLOR: GLenum = 0x1800;
932
933/// Constant value defined from OpenGL 1.0
934pub const GL_DEPTH: GLenum = 0x1801;
935
936/// Constant value defined from OpenGL 1.0
937pub const GL_STENCIL: GLenum = 0x1802;
938
939/// Constant value defined from OpenGL 1.0
940pub const GL_STENCIL_INDEX: GLenum = 0x1901;
941
942/// Constant value defined from OpenGL 1.0
943pub const GL_DEPTH_COMPONENT: GLenum = 0x1902;
944
945/// Constant value defined from OpenGL 1.0
946pub const GL_RED: GLenum = 0x1903;
947
948/// Constant value defined from OpenGL 1.0
949pub const GL_GREEN: GLenum = 0x1904;
950
951/// Constant value defined from OpenGL 1.0
952pub const GL_BLUE: GLenum = 0x1905;
953
954/// Constant value defined from OpenGL 1.0
955pub const GL_ALPHA: GLenum = 0x1906;
956
957/// Constant value defined from OpenGL 1.0
958pub const GL_RGB: GLenum = 0x1907;
959
960/// Constant value defined from OpenGL 1.0
961pub const GL_RGBA: GLenum = 0x1908;
962
963/// Constant value defined from OpenGL 1.0
964pub const GL_POINT: GLenum = 0x1B00;
965
966/// Constant value defined from OpenGL 1.0
967pub const GL_LINE: GLenum = 0x1B01;
968
969/// Constant value defined from OpenGL 1.0
970pub const GL_FILL: GLenum = 0x1B02;
971
972/// Constant value defined from OpenGL 1.0
973pub const GL_KEEP: GLenum = 0x1E00;
974
975/// Constant value defined from OpenGL 1.0
976pub const GL_REPLACE: GLenum = 0x1E01;
977
978/// Constant value defined from OpenGL 1.0
979pub const GL_INCR: GLenum = 0x1E02;
980
981/// Constant value defined from OpenGL 1.0
982pub const GL_DECR: GLenum = 0x1E03;
983
984/// Constant value defined from OpenGL 1.0
985pub const GL_VENDOR: GLenum = 0x1F00;
986
987/// Constant value defined from OpenGL 1.0
988pub const GL_RENDERER: GLenum = 0x1F01;
989
990/// Constant value defined from OpenGL 1.0
991pub const GL_VERSION: GLenum = 0x1F02;
992
993/// Constant value defined from OpenGL 1.0
994pub const GL_EXTENSIONS: GLenum = 0x1F03;
995
996/// Constant value defined from OpenGL 1.0
997pub const GL_NEAREST: GLint = 0x2600;
998
999/// Constant value defined from OpenGL 1.0
1000pub const GL_LINEAR: GLint = 0x2601;
1001
1002/// Constant value defined from OpenGL 1.0
1003pub const GL_NEAREST_MIPMAP_NEAREST: GLint = 0x2700;
1004
1005/// Constant value defined from OpenGL 1.0
1006pub const GL_LINEAR_MIPMAP_NEAREST: GLint = 0x2701;
1007
1008/// Constant value defined from OpenGL 1.0
1009pub const GL_NEAREST_MIPMAP_LINEAR: GLint = 0x2702;
1010
1011/// Constant value defined from OpenGL 1.0
1012pub const GL_LINEAR_MIPMAP_LINEAR: GLint = 0x2703;
1013
1014/// Constant value defined from OpenGL 1.0
1015pub const GL_TEXTURE_MAG_FILTER: GLenum = 0x2800;
1016
1017/// Constant value defined from OpenGL 1.0
1018pub const GL_TEXTURE_MIN_FILTER: GLenum = 0x2801;
1019
1020/// Constant value defined from OpenGL 1.0
1021pub const GL_TEXTURE_WRAP_S: GLenum = 0x2802;
1022
1023/// Constant value defined from OpenGL 1.0
1024pub const GL_TEXTURE_WRAP_T: GLenum = 0x2803;
1025
1026/// Constant value defined from OpenGL 1.0
1027pub const GL_REPEAT: GLint = 0x2901;
1028
1029/// Functions from OpenGL version 1.0
1030pub trait GL_1_0 {
1031
1032	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCullFace.xhtml>
1033	fn glCullFace(&self, mode: GLenum) -> Result<()>;
1034
1035	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFrontFace.xhtml>
1036	fn glFrontFace(&self, mode: GLenum) -> Result<()>;
1037
1038	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glHint.xhtml>
1039	fn glHint(&self, target: GLenum, mode: GLenum) -> Result<()>;
1040
1041	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glLineWidth.xhtml>
1042	fn glLineWidth(&self, width: GLfloat) -> Result<()>;
1043
1044	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPointSize.xhtml>
1045	fn glPointSize(&self, size: GLfloat) -> Result<()>;
1046
1047	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPolygonMode.xhtml>
1048	fn glPolygonMode(&self, face: GLenum, mode: GLenum) -> Result<()>;
1049
1050	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glScissor.xhtml>
1051	fn glScissor(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
1052
1053	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameterf.xhtml>
1054	fn glTexParameterf(&self, target: GLenum, pname: GLenum, param: GLfloat) -> Result<()>;
1055
1056	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameterfv.xhtml>
1057	fn glTexParameterfv(&self, target: GLenum, pname: GLenum, params: *const GLfloat) -> Result<()>;
1058
1059	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameteri.xhtml>
1060	fn glTexParameteri(&self, target: GLenum, pname: GLenum, param: GLint) -> Result<()>;
1061
1062	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameteriv.xhtml>
1063	fn glTexParameteriv(&self, target: GLenum, pname: GLenum, params: *const GLint) -> Result<()>;
1064
1065	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexImage1D.xhtml>
1066	fn glTexImage1D(&self, target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, border: GLint, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
1067
1068	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexImage2D.xhtml>
1069	fn glTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
1070
1071	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawBuffer.xhtml>
1072	fn glDrawBuffer(&self, buf: GLenum) -> Result<()>;
1073
1074	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClear.xhtml>
1075	fn glClear(&self, mask: GLbitfield) -> Result<()>;
1076
1077	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearColor.xhtml>
1078	fn glClearColor(&self, red: GLfloat, green: GLfloat, blue: GLfloat, alpha: GLfloat) -> Result<()>;
1079
1080	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearStencil.xhtml>
1081	fn glClearStencil(&self, s: GLint) -> Result<()>;
1082
1083	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearDepth.xhtml>
1084	fn glClearDepth(&self, depth: GLdouble) -> Result<()>;
1085
1086	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilMask.xhtml>
1087	fn glStencilMask(&self, mask: GLuint) -> Result<()>;
1088
1089	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorMask.xhtml>
1090	fn glColorMask(&self, red: GLboolean, green: GLboolean, blue: GLboolean, alpha: GLboolean) -> Result<()>;
1091
1092	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthMask.xhtml>
1093	fn glDepthMask(&self, flag: GLboolean) -> Result<()>;
1094
1095	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDisable.xhtml>
1096	fn glDisable(&self, cap: GLenum) -> Result<()>;
1097
1098	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEnable.xhtml>
1099	fn glEnable(&self, cap: GLenum) -> Result<()>;
1100
1101	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFinish.xhtml>
1102	fn glFinish(&self) -> Result<()>;
1103
1104	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFlush.xhtml>
1105	fn glFlush(&self) -> Result<()>;
1106
1107	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendFunc.xhtml>
1108	fn glBlendFunc(&self, sfactor: GLenum, dfactor: GLenum) -> Result<()>;
1109
1110	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glLogicOp.xhtml>
1111	fn glLogicOp(&self, opcode: GLenum) -> Result<()>;
1112
1113	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilFunc.xhtml>
1114	fn glStencilFunc(&self, func: GLenum, ref_: GLint, mask: GLuint) -> Result<()>;
1115
1116	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilOp.xhtml>
1117	fn glStencilOp(&self, fail: GLenum, zfail: GLenum, zpass: GLenum) -> Result<()>;
1118
1119	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthFunc.xhtml>
1120	fn glDepthFunc(&self, func: GLenum) -> Result<()>;
1121
1122	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPixelStoref.xhtml>
1123	fn glPixelStoref(&self, pname: GLenum, param: GLfloat) -> Result<()>;
1124
1125	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPixelStorei.xhtml>
1126	fn glPixelStorei(&self, pname: GLenum, param: GLint) -> Result<()>;
1127
1128	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glReadBuffer.xhtml>
1129	fn glReadBuffer(&self, src: GLenum) -> Result<()>;
1130
1131	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glReadPixels.xhtml>
1132	fn glReadPixels(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, pixels: *mut c_void) -> Result<()>;
1133
1134	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBooleanv.xhtml>
1135	fn glGetBooleanv(&self, pname: GLenum, data: *mut GLboolean) -> Result<()>;
1136
1137	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetDoublev.xhtml>
1138	fn glGetDoublev(&self, pname: GLenum, data: *mut GLdouble) -> Result<()>;
1139
1140	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
1141	fn glGetError(&self) -> GLenum;
1142
1143	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFloatv.xhtml>
1144	fn glGetFloatv(&self, pname: GLenum, data: *mut GLfloat) -> Result<()>;
1145
1146	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetIntegerv.xhtml>
1147	fn glGetIntegerv(&self, pname: GLenum, data: *mut GLint) -> Result<()>;
1148
1149	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetString.xhtml>
1150	fn glGetString(&self, name: GLenum) -> Result<&'static str>;
1151
1152	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexImage.xhtml>
1153	fn glGetTexImage(&self, target: GLenum, level: GLint, format: GLenum, type_: GLenum, pixels: *mut c_void) -> Result<()>;
1154
1155	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexParameterfv.xhtml>
1156	fn glGetTexParameterfv(&self, target: GLenum, pname: GLenum, params: *mut GLfloat) -> Result<()>;
1157
1158	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexParameteriv.xhtml>
1159	fn glGetTexParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
1160
1161	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexLevelParameterfv.xhtml>
1162	fn glGetTexLevelParameterfv(&self, target: GLenum, level: GLint, pname: GLenum, params: *mut GLfloat) -> Result<()>;
1163
1164	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexLevelParameteriv.xhtml>
1165	fn glGetTexLevelParameteriv(&self, target: GLenum, level: GLint, pname: GLenum, params: *mut GLint) -> Result<()>;
1166
1167	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsEnabled.xhtml>
1168	fn glIsEnabled(&self, cap: GLenum) -> Result<GLboolean>;
1169
1170	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthRange.xhtml>
1171	fn glDepthRange(&self, n: GLdouble, f: GLdouble) -> Result<()>;
1172
1173	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glViewport.xhtml>
1174	fn glViewport(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
1175	/// Get the OpenGL backend version (string_version, major, minor, release)
1176	fn get_version(&self) -> (&'static str, u32, u32, u32);
1177	/// Get the OpenGL vendor string
1178	fn get_vendor(&self) -> &'static str;
1179	/// Get the OpenGL renderer string
1180	fn get_renderer(&self) -> &'static str;
1181	/// Get the OpenGL version string
1182	fn get_versionstr(&self) -> &'static str;
1183}
1184/// Functions from OpenGL version 1.0
1185#[derive(Clone, Copy, PartialEq, Eq, Hash)]
1186pub struct Version10 {
1187	spec: &'static str,
1188	major_version: u32,
1189	minor_version: u32,
1190	release_version: u32,
1191	vendor: &'static str,
1192	renderer: &'static str,
1193	version: &'static str,
1194	/// Is OpenGL version 1.0 available
1195	available: bool,
1196	/// The function pointer to `glCullFace()`
1197	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCullFace.xhtml>
1198	pub cullface: PFNGLCULLFACEPROC,
1199
1200	/// The function pointer to `glFrontFace()`
1201	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFrontFace.xhtml>
1202	pub frontface: PFNGLFRONTFACEPROC,
1203
1204	/// The function pointer to `glHint()`
1205	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glHint.xhtml>
1206	pub hint: PFNGLHINTPROC,
1207
1208	/// The function pointer to `glLineWidth()`
1209	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glLineWidth.xhtml>
1210	pub linewidth: PFNGLLINEWIDTHPROC,
1211
1212	/// The function pointer to `glPointSize()`
1213	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPointSize.xhtml>
1214	pub pointsize: PFNGLPOINTSIZEPROC,
1215
1216	/// The function pointer to `glPolygonMode()`
1217	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPolygonMode.xhtml>
1218	pub polygonmode: PFNGLPOLYGONMODEPROC,
1219
1220	/// The function pointer to `glScissor()`
1221	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glScissor.xhtml>
1222	pub scissor: PFNGLSCISSORPROC,
1223
1224	/// The function pointer to `glTexParameterf()`
1225	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameterf.xhtml>
1226	pub texparameterf: PFNGLTEXPARAMETERFPROC,
1227
1228	/// The function pointer to `glTexParameterfv()`
1229	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameterfv.xhtml>
1230	pub texparameterfv: PFNGLTEXPARAMETERFVPROC,
1231
1232	/// The function pointer to `glTexParameteri()`
1233	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameteri.xhtml>
1234	pub texparameteri: PFNGLTEXPARAMETERIPROC,
1235
1236	/// The function pointer to `glTexParameteriv()`
1237	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameteriv.xhtml>
1238	pub texparameteriv: PFNGLTEXPARAMETERIVPROC,
1239
1240	/// The function pointer to `glTexImage1D()`
1241	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexImage1D.xhtml>
1242	pub teximage1d: PFNGLTEXIMAGE1DPROC,
1243
1244	/// The function pointer to `glTexImage2D()`
1245	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexImage2D.xhtml>
1246	pub teximage2d: PFNGLTEXIMAGE2DPROC,
1247
1248	/// The function pointer to `glDrawBuffer()`
1249	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawBuffer.xhtml>
1250	pub drawbuffer: PFNGLDRAWBUFFERPROC,
1251
1252	/// The function pointer to `glClear()`
1253	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClear.xhtml>
1254	pub clear: PFNGLCLEARPROC,
1255
1256	/// The function pointer to `glClearColor()`
1257	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearColor.xhtml>
1258	pub clearcolor: PFNGLCLEARCOLORPROC,
1259
1260	/// The function pointer to `glClearStencil()`
1261	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearStencil.xhtml>
1262	pub clearstencil: PFNGLCLEARSTENCILPROC,
1263
1264	/// The function pointer to `glClearDepth()`
1265	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearDepth.xhtml>
1266	pub cleardepth: PFNGLCLEARDEPTHPROC,
1267
1268	/// The function pointer to `glStencilMask()`
1269	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilMask.xhtml>
1270	pub stencilmask: PFNGLSTENCILMASKPROC,
1271
1272	/// The function pointer to `glColorMask()`
1273	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorMask.xhtml>
1274	pub colormask: PFNGLCOLORMASKPROC,
1275
1276	/// The function pointer to `glDepthMask()`
1277	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthMask.xhtml>
1278	pub depthmask: PFNGLDEPTHMASKPROC,
1279
1280	/// The function pointer to `glDisable()`
1281	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDisable.xhtml>
1282	pub disable: PFNGLDISABLEPROC,
1283
1284	/// The function pointer to `glEnable()`
1285	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEnable.xhtml>
1286	pub enable: PFNGLENABLEPROC,
1287
1288	/// The function pointer to `glFinish()`
1289	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFinish.xhtml>
1290	pub finish: PFNGLFINISHPROC,
1291
1292	/// The function pointer to `glFlush()`
1293	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFlush.xhtml>
1294	pub flush: PFNGLFLUSHPROC,
1295
1296	/// The function pointer to `glBlendFunc()`
1297	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendFunc.xhtml>
1298	pub blendfunc: PFNGLBLENDFUNCPROC,
1299
1300	/// The function pointer to `glLogicOp()`
1301	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glLogicOp.xhtml>
1302	pub logicop: PFNGLLOGICOPPROC,
1303
1304	/// The function pointer to `glStencilFunc()`
1305	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilFunc.xhtml>
1306	pub stencilfunc: PFNGLSTENCILFUNCPROC,
1307
1308	/// The function pointer to `glStencilOp()`
1309	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilOp.xhtml>
1310	pub stencilop: PFNGLSTENCILOPPROC,
1311
1312	/// The function pointer to `glDepthFunc()`
1313	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthFunc.xhtml>
1314	pub depthfunc: PFNGLDEPTHFUNCPROC,
1315
1316	/// The function pointer to `glPixelStoref()`
1317	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPixelStoref.xhtml>
1318	pub pixelstoref: PFNGLPIXELSTOREFPROC,
1319
1320	/// The function pointer to `glPixelStorei()`
1321	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPixelStorei.xhtml>
1322	pub pixelstorei: PFNGLPIXELSTOREIPROC,
1323
1324	/// The function pointer to `glReadBuffer()`
1325	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glReadBuffer.xhtml>
1326	pub readbuffer: PFNGLREADBUFFERPROC,
1327
1328	/// The function pointer to `glReadPixels()`
1329	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glReadPixels.xhtml>
1330	pub readpixels: PFNGLREADPIXELSPROC,
1331
1332	/// The function pointer to `glGetBooleanv()`
1333	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBooleanv.xhtml>
1334	pub getbooleanv: PFNGLGETBOOLEANVPROC,
1335
1336	/// The function pointer to `glGetDoublev()`
1337	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetDoublev.xhtml>
1338	pub getdoublev: PFNGLGETDOUBLEVPROC,
1339
1340	/// The function pointer to `glGetError()`
1341	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
1342	pub geterror: PFNGLGETERRORPROC,
1343
1344	/// The function pointer to `glGetFloatv()`
1345	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFloatv.xhtml>
1346	pub getfloatv: PFNGLGETFLOATVPROC,
1347
1348	/// The function pointer to `glGetIntegerv()`
1349	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetIntegerv.xhtml>
1350	pub getintegerv: PFNGLGETINTEGERVPROC,
1351
1352	/// The function pointer to `glGetString()`
1353	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetString.xhtml>
1354	pub getstring: PFNGLGETSTRINGPROC,
1355
1356	/// The function pointer to `glGetTexImage()`
1357	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexImage.xhtml>
1358	pub getteximage: PFNGLGETTEXIMAGEPROC,
1359
1360	/// The function pointer to `glGetTexParameterfv()`
1361	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexParameterfv.xhtml>
1362	pub gettexparameterfv: PFNGLGETTEXPARAMETERFVPROC,
1363
1364	/// The function pointer to `glGetTexParameteriv()`
1365	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexParameteriv.xhtml>
1366	pub gettexparameteriv: PFNGLGETTEXPARAMETERIVPROC,
1367
1368	/// The function pointer to `glGetTexLevelParameterfv()`
1369	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexLevelParameterfv.xhtml>
1370	pub gettexlevelparameterfv: PFNGLGETTEXLEVELPARAMETERFVPROC,
1371
1372	/// The function pointer to `glGetTexLevelParameteriv()`
1373	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexLevelParameteriv.xhtml>
1374	pub gettexlevelparameteriv: PFNGLGETTEXLEVELPARAMETERIVPROC,
1375
1376	/// The function pointer to `glIsEnabled()`
1377	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsEnabled.xhtml>
1378	pub isenabled: PFNGLISENABLEDPROC,
1379
1380	/// The function pointer to `glDepthRange()`
1381	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthRange.xhtml>
1382	pub depthrange: PFNGLDEPTHRANGEPROC,
1383
1384	/// The function pointer to `glViewport()`
1385	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glViewport.xhtml>
1386	pub viewport: PFNGLVIEWPORTPROC,
1387}
1388
1389impl GL_1_0 for Version10 {
1390	#[inline(always)]
1391	fn glCullFace(&self, mode: GLenum) -> Result<()> {
1392		let ret = process_catch("glCullFace", catch_unwind(||(self.cullface)(mode)));
1393		#[cfg(feature = "diagnose")]
1394		if let Ok(ret) = ret {
1395			return to_result("glCullFace", ret, self.glGetError());
1396		} else {
1397			return ret
1398		}
1399		#[cfg(not(feature = "diagnose"))]
1400		return ret;
1401	}
1402	#[inline(always)]
1403	fn glFrontFace(&self, mode: GLenum) -> Result<()> {
1404		let ret = process_catch("glFrontFace", catch_unwind(||(self.frontface)(mode)));
1405		#[cfg(feature = "diagnose")]
1406		if let Ok(ret) = ret {
1407			return to_result("glFrontFace", ret, self.glGetError());
1408		} else {
1409			return ret
1410		}
1411		#[cfg(not(feature = "diagnose"))]
1412		return ret;
1413	}
1414	#[inline(always)]
1415	fn glHint(&self, target: GLenum, mode: GLenum) -> Result<()> {
1416		let ret = process_catch("glHint", catch_unwind(||(self.hint)(target, mode)));
1417		#[cfg(feature = "diagnose")]
1418		if let Ok(ret) = ret {
1419			return to_result("glHint", ret, self.glGetError());
1420		} else {
1421			return ret
1422		}
1423		#[cfg(not(feature = "diagnose"))]
1424		return ret;
1425	}
1426	#[inline(always)]
1427	fn glLineWidth(&self, width: GLfloat) -> Result<()> {
1428		let ret = process_catch("glLineWidth", catch_unwind(||(self.linewidth)(width)));
1429		#[cfg(feature = "diagnose")]
1430		if let Ok(ret) = ret {
1431			return to_result("glLineWidth", ret, self.glGetError());
1432		} else {
1433			return ret
1434		}
1435		#[cfg(not(feature = "diagnose"))]
1436		return ret;
1437	}
1438	#[inline(always)]
1439	fn glPointSize(&self, size: GLfloat) -> Result<()> {
1440		let ret = process_catch("glPointSize", catch_unwind(||(self.pointsize)(size)));
1441		#[cfg(feature = "diagnose")]
1442		if let Ok(ret) = ret {
1443			return to_result("glPointSize", ret, self.glGetError());
1444		} else {
1445			return ret
1446		}
1447		#[cfg(not(feature = "diagnose"))]
1448		return ret;
1449	}
1450	#[inline(always)]
1451	fn glPolygonMode(&self, face: GLenum, mode: GLenum) -> Result<()> {
1452		let ret = process_catch("glPolygonMode", catch_unwind(||(self.polygonmode)(face, mode)));
1453		#[cfg(feature = "diagnose")]
1454		if let Ok(ret) = ret {
1455			return to_result("glPolygonMode", ret, self.glGetError());
1456		} else {
1457			return ret
1458		}
1459		#[cfg(not(feature = "diagnose"))]
1460		return ret;
1461	}
1462	#[inline(always)]
1463	fn glScissor(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
1464		let ret = process_catch("glScissor", catch_unwind(||(self.scissor)(x, y, width, height)));
1465		#[cfg(feature = "diagnose")]
1466		if let Ok(ret) = ret {
1467			return to_result("glScissor", ret, self.glGetError());
1468		} else {
1469			return ret
1470		}
1471		#[cfg(not(feature = "diagnose"))]
1472		return ret;
1473	}
1474	#[inline(always)]
1475	fn glTexParameterf(&self, target: GLenum, pname: GLenum, param: GLfloat) -> Result<()> {
1476		let ret = process_catch("glTexParameterf", catch_unwind(||(self.texparameterf)(target, pname, param)));
1477		#[cfg(feature = "diagnose")]
1478		if let Ok(ret) = ret {
1479			return to_result("glTexParameterf", ret, self.glGetError());
1480		} else {
1481			return ret
1482		}
1483		#[cfg(not(feature = "diagnose"))]
1484		return ret;
1485	}
1486	#[inline(always)]
1487	fn glTexParameterfv(&self, target: GLenum, pname: GLenum, params: *const GLfloat) -> Result<()> {
1488		let ret = process_catch("glTexParameterfv", catch_unwind(||(self.texparameterfv)(target, pname, params)));
1489		#[cfg(feature = "diagnose")]
1490		if let Ok(ret) = ret {
1491			return to_result("glTexParameterfv", ret, self.glGetError());
1492		} else {
1493			return ret
1494		}
1495		#[cfg(not(feature = "diagnose"))]
1496		return ret;
1497	}
1498	#[inline(always)]
1499	fn glTexParameteri(&self, target: GLenum, pname: GLenum, param: GLint) -> Result<()> {
1500		let ret = process_catch("glTexParameteri", catch_unwind(||(self.texparameteri)(target, pname, param)));
1501		#[cfg(feature = "diagnose")]
1502		if let Ok(ret) = ret {
1503			return to_result("glTexParameteri", ret, self.glGetError());
1504		} else {
1505			return ret
1506		}
1507		#[cfg(not(feature = "diagnose"))]
1508		return ret;
1509	}
1510	#[inline(always)]
1511	fn glTexParameteriv(&self, target: GLenum, pname: GLenum, params: *const GLint) -> Result<()> {
1512		let ret = process_catch("glTexParameteriv", catch_unwind(||(self.texparameteriv)(target, pname, params)));
1513		#[cfg(feature = "diagnose")]
1514		if let Ok(ret) = ret {
1515			return to_result("glTexParameteriv", ret, self.glGetError());
1516		} else {
1517			return ret
1518		}
1519		#[cfg(not(feature = "diagnose"))]
1520		return ret;
1521	}
1522	#[inline(always)]
1523	fn glTexImage1D(&self, target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, border: GLint, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
1524		let ret = process_catch("glTexImage1D", catch_unwind(||(self.teximage1d)(target, level, internalformat, width, border, format, type_, pixels)));
1525		#[cfg(feature = "diagnose")]
1526		if let Ok(ret) = ret {
1527			return to_result("glTexImage1D", ret, self.glGetError());
1528		} else {
1529			return ret
1530		}
1531		#[cfg(not(feature = "diagnose"))]
1532		return ret;
1533	}
1534	#[inline(always)]
1535	fn glTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
1536		let ret = process_catch("glTexImage2D", catch_unwind(||(self.teximage2d)(target, level, internalformat, width, height, border, format, type_, pixels)));
1537		#[cfg(feature = "diagnose")]
1538		if let Ok(ret) = ret {
1539			return to_result("glTexImage2D", ret, self.glGetError());
1540		} else {
1541			return ret
1542		}
1543		#[cfg(not(feature = "diagnose"))]
1544		return ret;
1545	}
1546	#[inline(always)]
1547	fn glDrawBuffer(&self, buf: GLenum) -> Result<()> {
1548		let ret = process_catch("glDrawBuffer", catch_unwind(||(self.drawbuffer)(buf)));
1549		#[cfg(feature = "diagnose")]
1550		if let Ok(ret) = ret {
1551			return to_result("glDrawBuffer", ret, self.glGetError());
1552		} else {
1553			return ret
1554		}
1555		#[cfg(not(feature = "diagnose"))]
1556		return ret;
1557	}
1558	#[inline(always)]
1559	fn glClear(&self, mask: GLbitfield) -> Result<()> {
1560		let ret = process_catch("glClear", catch_unwind(||(self.clear)(mask)));
1561		#[cfg(feature = "diagnose")]
1562		if let Ok(ret) = ret {
1563			return to_result("glClear", ret, self.glGetError());
1564		} else {
1565			return ret
1566		}
1567		#[cfg(not(feature = "diagnose"))]
1568		return ret;
1569	}
1570	#[inline(always)]
1571	fn glClearColor(&self, red: GLfloat, green: GLfloat, blue: GLfloat, alpha: GLfloat) -> Result<()> {
1572		let ret = process_catch("glClearColor", catch_unwind(||(self.clearcolor)(red, green, blue, alpha)));
1573		#[cfg(feature = "diagnose")]
1574		if let Ok(ret) = ret {
1575			return to_result("glClearColor", ret, self.glGetError());
1576		} else {
1577			return ret
1578		}
1579		#[cfg(not(feature = "diagnose"))]
1580		return ret;
1581	}
1582	#[inline(always)]
1583	fn glClearStencil(&self, s: GLint) -> Result<()> {
1584		let ret = process_catch("glClearStencil", catch_unwind(||(self.clearstencil)(s)));
1585		#[cfg(feature = "diagnose")]
1586		if let Ok(ret) = ret {
1587			return to_result("glClearStencil", ret, self.glGetError());
1588		} else {
1589			return ret
1590		}
1591		#[cfg(not(feature = "diagnose"))]
1592		return ret;
1593	}
1594	#[inline(always)]
1595	fn glClearDepth(&self, depth: GLdouble) -> Result<()> {
1596		let ret = process_catch("glClearDepth", catch_unwind(||(self.cleardepth)(depth)));
1597		#[cfg(feature = "diagnose")]
1598		if let Ok(ret) = ret {
1599			return to_result("glClearDepth", ret, self.glGetError());
1600		} else {
1601			return ret
1602		}
1603		#[cfg(not(feature = "diagnose"))]
1604		return ret;
1605	}
1606	#[inline(always)]
1607	fn glStencilMask(&self, mask: GLuint) -> Result<()> {
1608		let ret = process_catch("glStencilMask", catch_unwind(||(self.stencilmask)(mask)));
1609		#[cfg(feature = "diagnose")]
1610		if let Ok(ret) = ret {
1611			return to_result("glStencilMask", ret, self.glGetError());
1612		} else {
1613			return ret
1614		}
1615		#[cfg(not(feature = "diagnose"))]
1616		return ret;
1617	}
1618	#[inline(always)]
1619	fn glColorMask(&self, red: GLboolean, green: GLboolean, blue: GLboolean, alpha: GLboolean) -> Result<()> {
1620		let ret = process_catch("glColorMask", catch_unwind(||(self.colormask)(red, green, blue, alpha)));
1621		#[cfg(feature = "diagnose")]
1622		if let Ok(ret) = ret {
1623			return to_result("glColorMask", ret, self.glGetError());
1624		} else {
1625			return ret
1626		}
1627		#[cfg(not(feature = "diagnose"))]
1628		return ret;
1629	}
1630	#[inline(always)]
1631	fn glDepthMask(&self, flag: GLboolean) -> Result<()> {
1632		let ret = process_catch("glDepthMask", catch_unwind(||(self.depthmask)(flag)));
1633		#[cfg(feature = "diagnose")]
1634		if let Ok(ret) = ret {
1635			return to_result("glDepthMask", ret, self.glGetError());
1636		} else {
1637			return ret
1638		}
1639		#[cfg(not(feature = "diagnose"))]
1640		return ret;
1641	}
1642	#[inline(always)]
1643	fn glDisable(&self, cap: GLenum) -> Result<()> {
1644		let ret = process_catch("glDisable", catch_unwind(||(self.disable)(cap)));
1645		#[cfg(feature = "diagnose")]
1646		if let Ok(ret) = ret {
1647			return to_result("glDisable", ret, self.glGetError());
1648		} else {
1649			return ret
1650		}
1651		#[cfg(not(feature = "diagnose"))]
1652		return ret;
1653	}
1654	#[inline(always)]
1655	fn glEnable(&self, cap: GLenum) -> Result<()> {
1656		let ret = process_catch("glEnable", catch_unwind(||(self.enable)(cap)));
1657		#[cfg(feature = "diagnose")]
1658		if let Ok(ret) = ret {
1659			return to_result("glEnable", ret, self.glGetError());
1660		} else {
1661			return ret
1662		}
1663		#[cfg(not(feature = "diagnose"))]
1664		return ret;
1665	}
1666	#[inline(always)]
1667	fn glFinish(&self) -> Result<()> {
1668		let ret = process_catch("glFinish", catch_unwind(||(self.finish)()));
1669		#[cfg(feature = "diagnose")]
1670		if let Ok(ret) = ret {
1671			return to_result("glFinish", ret, self.glGetError());
1672		} else {
1673			return ret
1674		}
1675		#[cfg(not(feature = "diagnose"))]
1676		return ret;
1677	}
1678	#[inline(always)]
1679	fn glFlush(&self) -> Result<()> {
1680		let ret = process_catch("glFlush", catch_unwind(||(self.flush)()));
1681		#[cfg(feature = "diagnose")]
1682		if let Ok(ret) = ret {
1683			return to_result("glFlush", ret, self.glGetError());
1684		} else {
1685			return ret
1686		}
1687		#[cfg(not(feature = "diagnose"))]
1688		return ret;
1689	}
1690	#[inline(always)]
1691	fn glBlendFunc(&self, sfactor: GLenum, dfactor: GLenum) -> Result<()> {
1692		let ret = process_catch("glBlendFunc", catch_unwind(||(self.blendfunc)(sfactor, dfactor)));
1693		#[cfg(feature = "diagnose")]
1694		if let Ok(ret) = ret {
1695			return to_result("glBlendFunc", ret, self.glGetError());
1696		} else {
1697			return ret
1698		}
1699		#[cfg(not(feature = "diagnose"))]
1700		return ret;
1701	}
1702	#[inline(always)]
1703	fn glLogicOp(&self, opcode: GLenum) -> Result<()> {
1704		let ret = process_catch("glLogicOp", catch_unwind(||(self.logicop)(opcode)));
1705		#[cfg(feature = "diagnose")]
1706		if let Ok(ret) = ret {
1707			return to_result("glLogicOp", ret, self.glGetError());
1708		} else {
1709			return ret
1710		}
1711		#[cfg(not(feature = "diagnose"))]
1712		return ret;
1713	}
1714	#[inline(always)]
1715	fn glStencilFunc(&self, func: GLenum, ref_: GLint, mask: GLuint) -> Result<()> {
1716		let ret = process_catch("glStencilFunc", catch_unwind(||(self.stencilfunc)(func, ref_, mask)));
1717		#[cfg(feature = "diagnose")]
1718		if let Ok(ret) = ret {
1719			return to_result("glStencilFunc", ret, self.glGetError());
1720		} else {
1721			return ret
1722		}
1723		#[cfg(not(feature = "diagnose"))]
1724		return ret;
1725	}
1726	#[inline(always)]
1727	fn glStencilOp(&self, fail: GLenum, zfail: GLenum, zpass: GLenum) -> Result<()> {
1728		let ret = process_catch("glStencilOp", catch_unwind(||(self.stencilop)(fail, zfail, zpass)));
1729		#[cfg(feature = "diagnose")]
1730		if let Ok(ret) = ret {
1731			return to_result("glStencilOp", ret, self.glGetError());
1732		} else {
1733			return ret
1734		}
1735		#[cfg(not(feature = "diagnose"))]
1736		return ret;
1737	}
1738	#[inline(always)]
1739	fn glDepthFunc(&self, func: GLenum) -> Result<()> {
1740		let ret = process_catch("glDepthFunc", catch_unwind(||(self.depthfunc)(func)));
1741		#[cfg(feature = "diagnose")]
1742		if let Ok(ret) = ret {
1743			return to_result("glDepthFunc", ret, self.glGetError());
1744		} else {
1745			return ret
1746		}
1747		#[cfg(not(feature = "diagnose"))]
1748		return ret;
1749	}
1750	#[inline(always)]
1751	fn glPixelStoref(&self, pname: GLenum, param: GLfloat) -> Result<()> {
1752		let ret = process_catch("glPixelStoref", catch_unwind(||(self.pixelstoref)(pname, param)));
1753		#[cfg(feature = "diagnose")]
1754		if let Ok(ret) = ret {
1755			return to_result("glPixelStoref", ret, self.glGetError());
1756		} else {
1757			return ret
1758		}
1759		#[cfg(not(feature = "diagnose"))]
1760		return ret;
1761	}
1762	#[inline(always)]
1763	fn glPixelStorei(&self, pname: GLenum, param: GLint) -> Result<()> {
1764		let ret = process_catch("glPixelStorei", catch_unwind(||(self.pixelstorei)(pname, param)));
1765		#[cfg(feature = "diagnose")]
1766		if let Ok(ret) = ret {
1767			return to_result("glPixelStorei", ret, self.glGetError());
1768		} else {
1769			return ret
1770		}
1771		#[cfg(not(feature = "diagnose"))]
1772		return ret;
1773	}
1774	#[inline(always)]
1775	fn glReadBuffer(&self, src: GLenum) -> Result<()> {
1776		let ret = process_catch("glReadBuffer", catch_unwind(||(self.readbuffer)(src)));
1777		#[cfg(feature = "diagnose")]
1778		if let Ok(ret) = ret {
1779			return to_result("glReadBuffer", ret, self.glGetError());
1780		} else {
1781			return ret
1782		}
1783		#[cfg(not(feature = "diagnose"))]
1784		return ret;
1785	}
1786	#[inline(always)]
1787	fn glReadPixels(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, pixels: *mut c_void) -> Result<()> {
1788		let ret = process_catch("glReadPixels", catch_unwind(||(self.readpixels)(x, y, width, height, format, type_, pixels)));
1789		#[cfg(feature = "diagnose")]
1790		if let Ok(ret) = ret {
1791			return to_result("glReadPixels", ret, self.glGetError());
1792		} else {
1793			return ret
1794		}
1795		#[cfg(not(feature = "diagnose"))]
1796		return ret;
1797	}
1798	#[inline(always)]
1799	fn glGetBooleanv(&self, pname: GLenum, data: *mut GLboolean) -> Result<()> {
1800		let ret = process_catch("glGetBooleanv", catch_unwind(||(self.getbooleanv)(pname, data)));
1801		#[cfg(feature = "diagnose")]
1802		if let Ok(ret) = ret {
1803			return to_result("glGetBooleanv", ret, self.glGetError());
1804		} else {
1805			return ret
1806		}
1807		#[cfg(not(feature = "diagnose"))]
1808		return ret;
1809	}
1810	#[inline(always)]
1811	fn glGetDoublev(&self, pname: GLenum, data: *mut GLdouble) -> Result<()> {
1812		let ret = process_catch("glGetDoublev", catch_unwind(||(self.getdoublev)(pname, data)));
1813		#[cfg(feature = "diagnose")]
1814		if let Ok(ret) = ret {
1815			return to_result("glGetDoublev", ret, self.glGetError());
1816		} else {
1817			return ret
1818		}
1819		#[cfg(not(feature = "diagnose"))]
1820		return ret;
1821	}
1822	#[inline(always)]
1823	fn glGetError(&self) -> GLenum {
1824		(self.geterror)()
1825	}
1826	#[inline(always)]
1827	fn glGetFloatv(&self, pname: GLenum, data: *mut GLfloat) -> Result<()> {
1828		let ret = process_catch("glGetFloatv", catch_unwind(||(self.getfloatv)(pname, data)));
1829		#[cfg(feature = "diagnose")]
1830		if let Ok(ret) = ret {
1831			return to_result("glGetFloatv", ret, self.glGetError());
1832		} else {
1833			return ret
1834		}
1835		#[cfg(not(feature = "diagnose"))]
1836		return ret;
1837	}
1838	#[inline(always)]
1839	fn glGetIntegerv(&self, pname: GLenum, data: *mut GLint) -> Result<()> {
1840		let ret = process_catch("glGetIntegerv", catch_unwind(||(self.getintegerv)(pname, data)));
1841		#[cfg(feature = "diagnose")]
1842		if let Ok(ret) = ret {
1843			return to_result("glGetIntegerv", ret, self.glGetError());
1844		} else {
1845			return ret
1846		}
1847		#[cfg(not(feature = "diagnose"))]
1848		return ret;
1849	}
1850	#[inline(always)]
1851	fn glGetString(&self, name: GLenum) -> Result<&'static str> {
1852		let ret = process_catch("glGetString", catch_unwind(||unsafe{CStr::from_ptr((self.getstring)(name) as *const i8)}.to_str().unwrap()));
1853		#[cfg(feature = "diagnose")]
1854		if let Ok(ret) = ret {
1855			return to_result("glGetString", ret, self.glGetError());
1856		} else {
1857			return ret
1858		}
1859		#[cfg(not(feature = "diagnose"))]
1860		return ret;
1861	}
1862	#[inline(always)]
1863	fn glGetTexImage(&self, target: GLenum, level: GLint, format: GLenum, type_: GLenum, pixels: *mut c_void) -> Result<()> {
1864		let ret = process_catch("glGetTexImage", catch_unwind(||(self.getteximage)(target, level, format, type_, pixels)));
1865		#[cfg(feature = "diagnose")]
1866		if let Ok(ret) = ret {
1867			return to_result("glGetTexImage", ret, self.glGetError());
1868		} else {
1869			return ret
1870		}
1871		#[cfg(not(feature = "diagnose"))]
1872		return ret;
1873	}
1874	#[inline(always)]
1875	fn glGetTexParameterfv(&self, target: GLenum, pname: GLenum, params: *mut GLfloat) -> Result<()> {
1876		let ret = process_catch("glGetTexParameterfv", catch_unwind(||(self.gettexparameterfv)(target, pname, params)));
1877		#[cfg(feature = "diagnose")]
1878		if let Ok(ret) = ret {
1879			return to_result("glGetTexParameterfv", ret, self.glGetError());
1880		} else {
1881			return ret
1882		}
1883		#[cfg(not(feature = "diagnose"))]
1884		return ret;
1885	}
1886	#[inline(always)]
1887	fn glGetTexParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
1888		let ret = process_catch("glGetTexParameteriv", catch_unwind(||(self.gettexparameteriv)(target, pname, params)));
1889		#[cfg(feature = "diagnose")]
1890		if let Ok(ret) = ret {
1891			return to_result("glGetTexParameteriv", ret, self.glGetError());
1892		} else {
1893			return ret
1894		}
1895		#[cfg(not(feature = "diagnose"))]
1896		return ret;
1897	}
1898	#[inline(always)]
1899	fn glGetTexLevelParameterfv(&self, target: GLenum, level: GLint, pname: GLenum, params: *mut GLfloat) -> Result<()> {
1900		let ret = process_catch("glGetTexLevelParameterfv", catch_unwind(||(self.gettexlevelparameterfv)(target, level, pname, params)));
1901		#[cfg(feature = "diagnose")]
1902		if let Ok(ret) = ret {
1903			return to_result("glGetTexLevelParameterfv", ret, self.glGetError());
1904		} else {
1905			return ret
1906		}
1907		#[cfg(not(feature = "diagnose"))]
1908		return ret;
1909	}
1910	#[inline(always)]
1911	fn glGetTexLevelParameteriv(&self, target: GLenum, level: GLint, pname: GLenum, params: *mut GLint) -> Result<()> {
1912		let ret = process_catch("glGetTexLevelParameteriv", catch_unwind(||(self.gettexlevelparameteriv)(target, level, pname, params)));
1913		#[cfg(feature = "diagnose")]
1914		if let Ok(ret) = ret {
1915			return to_result("glGetTexLevelParameteriv", ret, self.glGetError());
1916		} else {
1917			return ret
1918		}
1919		#[cfg(not(feature = "diagnose"))]
1920		return ret;
1921	}
1922	#[inline(always)]
1923	fn glIsEnabled(&self, cap: GLenum) -> Result<GLboolean> {
1924		let ret = process_catch("glIsEnabled", catch_unwind(||(self.isenabled)(cap)));
1925		#[cfg(feature = "diagnose")]
1926		if let Ok(ret) = ret {
1927			return to_result("glIsEnabled", ret, self.glGetError());
1928		} else {
1929			return ret
1930		}
1931		#[cfg(not(feature = "diagnose"))]
1932		return ret;
1933	}
1934	#[inline(always)]
1935	fn glDepthRange(&self, n: GLdouble, f: GLdouble) -> Result<()> {
1936		let ret = process_catch("glDepthRange", catch_unwind(||(self.depthrange)(n, f)));
1937		#[cfg(feature = "diagnose")]
1938		if let Ok(ret) = ret {
1939			return to_result("glDepthRange", ret, self.glGetError());
1940		} else {
1941			return ret
1942		}
1943		#[cfg(not(feature = "diagnose"))]
1944		return ret;
1945	}
1946	#[inline(always)]
1947	fn glViewport(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
1948		let ret = process_catch("glViewport", catch_unwind(||(self.viewport)(x, y, width, height)));
1949		#[cfg(feature = "diagnose")]
1950		if let Ok(ret) = ret {
1951			return to_result("glViewport", ret, self.glGetError());
1952		} else {
1953			return ret
1954		}
1955		#[cfg(not(feature = "diagnose"))]
1956		return ret;
1957	}
1958	#[inline(always)]
1959	fn get_version(&self) -> (&'static str, u32, u32, u32) {
1960		(self.spec, self.major_version, self.minor_version, self.release_version)
1961	}
1962	#[inline(always)]
1963	fn get_vendor(&self) -> &'static str {
1964		self.vendor
1965	}
1966	#[inline(always)]
1967	fn get_renderer(&self) -> &'static str {
1968		self.renderer
1969	}
1970	#[inline(always)]
1971	fn get_versionstr(&self) -> &'static str {
1972		self.version
1973	}
1974}
1975
1976impl Version10 {
1977	pub fn new(mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Result<Self> {
1978		let mut ret = Self {
1979			available: true,
1980			spec: "unknown",
1981			major_version: 0,
1982			minor_version: 0,
1983			release_version: 0,
1984			vendor: "unknown",
1985			renderer: "unknown",
1986			version: "unknown",
1987			cullface: {let proc = get_proc_address("glCullFace"); if proc == null() {dummy_pfnglcullfaceproc} else {unsafe{transmute(proc)}}},
1988			frontface: {let proc = get_proc_address("glFrontFace"); if proc == null() {dummy_pfnglfrontfaceproc} else {unsafe{transmute(proc)}}},
1989			hint: {let proc = get_proc_address("glHint"); if proc == null() {dummy_pfnglhintproc} else {unsafe{transmute(proc)}}},
1990			linewidth: {let proc = get_proc_address("glLineWidth"); if proc == null() {dummy_pfngllinewidthproc} else {unsafe{transmute(proc)}}},
1991			pointsize: {let proc = get_proc_address("glPointSize"); if proc == null() {dummy_pfnglpointsizeproc} else {unsafe{transmute(proc)}}},
1992			polygonmode: {let proc = get_proc_address("glPolygonMode"); if proc == null() {dummy_pfnglpolygonmodeproc} else {unsafe{transmute(proc)}}},
1993			scissor: {let proc = get_proc_address("glScissor"); if proc == null() {dummy_pfnglscissorproc} else {unsafe{transmute(proc)}}},
1994			texparameterf: {let proc = get_proc_address("glTexParameterf"); if proc == null() {dummy_pfngltexparameterfproc} else {unsafe{transmute(proc)}}},
1995			texparameterfv: {let proc = get_proc_address("glTexParameterfv"); if proc == null() {dummy_pfngltexparameterfvproc} else {unsafe{transmute(proc)}}},
1996			texparameteri: {let proc = get_proc_address("glTexParameteri"); if proc == null() {dummy_pfngltexparameteriproc} else {unsafe{transmute(proc)}}},
1997			texparameteriv: {let proc = get_proc_address("glTexParameteriv"); if proc == null() {dummy_pfngltexparameterivproc} else {unsafe{transmute(proc)}}},
1998			teximage1d: {let proc = get_proc_address("glTexImage1D"); if proc == null() {dummy_pfnglteximage1dproc} else {unsafe{transmute(proc)}}},
1999			teximage2d: {let proc = get_proc_address("glTexImage2D"); if proc == null() {dummy_pfnglteximage2dproc} else {unsafe{transmute(proc)}}},
2000			drawbuffer: {let proc = get_proc_address("glDrawBuffer"); if proc == null() {dummy_pfngldrawbufferproc} else {unsafe{transmute(proc)}}},
2001			clear: {let proc = get_proc_address("glClear"); if proc == null() {dummy_pfnglclearproc} else {unsafe{transmute(proc)}}},
2002			clearcolor: {let proc = get_proc_address("glClearColor"); if proc == null() {dummy_pfnglclearcolorproc} else {unsafe{transmute(proc)}}},
2003			clearstencil: {let proc = get_proc_address("glClearStencil"); if proc == null() {dummy_pfnglclearstencilproc} else {unsafe{transmute(proc)}}},
2004			cleardepth: {let proc = get_proc_address("glClearDepth"); if proc == null() {dummy_pfnglcleardepthproc} else {unsafe{transmute(proc)}}},
2005			stencilmask: {let proc = get_proc_address("glStencilMask"); if proc == null() {dummy_pfnglstencilmaskproc} else {unsafe{transmute(proc)}}},
2006			colormask: {let proc = get_proc_address("glColorMask"); if proc == null() {dummy_pfnglcolormaskproc} else {unsafe{transmute(proc)}}},
2007			depthmask: {let proc = get_proc_address("glDepthMask"); if proc == null() {dummy_pfngldepthmaskproc} else {unsafe{transmute(proc)}}},
2008			disable: {let proc = get_proc_address("glDisable"); if proc == null() {dummy_pfngldisableproc} else {unsafe{transmute(proc)}}},
2009			enable: {let proc = get_proc_address("glEnable"); if proc == null() {dummy_pfnglenableproc} else {unsafe{transmute(proc)}}},
2010			finish: {let proc = get_proc_address("glFinish"); if proc == null() {dummy_pfnglfinishproc} else {unsafe{transmute(proc)}}},
2011			flush: {let proc = get_proc_address("glFlush"); if proc == null() {dummy_pfnglflushproc} else {unsafe{transmute(proc)}}},
2012			blendfunc: {let proc = get_proc_address("glBlendFunc"); if proc == null() {dummy_pfnglblendfuncproc} else {unsafe{transmute(proc)}}},
2013			logicop: {let proc = get_proc_address("glLogicOp"); if proc == null() {dummy_pfngllogicopproc} else {unsafe{transmute(proc)}}},
2014			stencilfunc: {let proc = get_proc_address("glStencilFunc"); if proc == null() {dummy_pfnglstencilfuncproc} else {unsafe{transmute(proc)}}},
2015			stencilop: {let proc = get_proc_address("glStencilOp"); if proc == null() {dummy_pfnglstencilopproc} else {unsafe{transmute(proc)}}},
2016			depthfunc: {let proc = get_proc_address("glDepthFunc"); if proc == null() {dummy_pfngldepthfuncproc} else {unsafe{transmute(proc)}}},
2017			pixelstoref: {let proc = get_proc_address("glPixelStoref"); if proc == null() {dummy_pfnglpixelstorefproc} else {unsafe{transmute(proc)}}},
2018			pixelstorei: {let proc = get_proc_address("glPixelStorei"); if proc == null() {dummy_pfnglpixelstoreiproc} else {unsafe{transmute(proc)}}},
2019			readbuffer: {let proc = get_proc_address("glReadBuffer"); if proc == null() {dummy_pfnglreadbufferproc} else {unsafe{transmute(proc)}}},
2020			readpixels: {let proc = get_proc_address("glReadPixels"); if proc == null() {dummy_pfnglreadpixelsproc} else {unsafe{transmute(proc)}}},
2021			getbooleanv: {let proc = get_proc_address("glGetBooleanv"); if proc == null() {dummy_pfnglgetbooleanvproc} else {unsafe{transmute(proc)}}},
2022			getdoublev: {let proc = get_proc_address("glGetDoublev"); if proc == null() {dummy_pfnglgetdoublevproc} else {unsafe{transmute(proc)}}},
2023			geterror: {let proc = get_proc_address("glGetError"); if proc == null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
2024			getfloatv: {let proc = get_proc_address("glGetFloatv"); if proc == null() {dummy_pfnglgetfloatvproc} else {unsafe{transmute(proc)}}},
2025			getintegerv: {let proc = get_proc_address("glGetIntegerv"); if proc == null() {dummy_pfnglgetintegervproc} else {unsafe{transmute(proc)}}},
2026			getstring: {let proc = get_proc_address("glGetString"); if proc == null() {dummy_pfnglgetstringproc} else {unsafe{transmute(proc)}}},
2027			getteximage: {let proc = get_proc_address("glGetTexImage"); if proc == null() {dummy_pfnglgetteximageproc} else {unsafe{transmute(proc)}}},
2028			gettexparameterfv: {let proc = get_proc_address("glGetTexParameterfv"); if proc == null() {dummy_pfnglgettexparameterfvproc} else {unsafe{transmute(proc)}}},
2029			gettexparameteriv: {let proc = get_proc_address("glGetTexParameteriv"); if proc == null() {dummy_pfnglgettexparameterivproc} else {unsafe{transmute(proc)}}},
2030			gettexlevelparameterfv: {let proc = get_proc_address("glGetTexLevelParameterfv"); if proc == null() {dummy_pfnglgettexlevelparameterfvproc} else {unsafe{transmute(proc)}}},
2031			gettexlevelparameteriv: {let proc = get_proc_address("glGetTexLevelParameteriv"); if proc == null() {dummy_pfnglgettexlevelparameterivproc} else {unsafe{transmute(proc)}}},
2032			isenabled: {let proc = get_proc_address("glIsEnabled"); if proc == null() {dummy_pfnglisenabledproc} else {unsafe{transmute(proc)}}},
2033			depthrange: {let proc = get_proc_address("glDepthRange"); if proc == null() {dummy_pfngldepthrangeproc} else {unsafe{transmute(proc)}}},
2034			viewport: {let proc = get_proc_address("glViewport"); if proc == null() {dummy_pfnglviewportproc} else {unsafe{transmute(proc)}}},
2035		};
2036		ret.fetch_version()?;
2037		Ok(ret)
2038	}
2039	#[inline(always)]
2040	fn fetch_version(&mut self) -> Result<()> {
2041		self.vendor = self.glGetString(GL_VENDOR)?;
2042		self.renderer = self.glGetString(GL_RENDERER)?;
2043		self.version = self.glGetString(GL_VERSION)?;
2044		self.spec = "OpenGL";
2045		let mut verstr = self.version;
2046		if verstr.starts_with("OpenGL ES ") {
2047			verstr = &verstr["OpenGL ES ".len()..];
2048			self.spec = "OpenGL ES ";
2049		} else if let Some((left, right)) = verstr.split_once(' ') {
2050			verstr = left;
2051			self.spec = right;
2052		}
2053		let mut v: Vec<&str> = verstr.split('.').collect();
2054		v.resize(3, "0");
2055		v = v.into_iter().map(|x|if x == "" {"0"} else {x}).collect();
2056		self.major_version = v[0].parse().unwrap();
2057		self.minor_version = v[1].parse().unwrap();
2058		self.release_version = v[2].parse().unwrap();
2059		Ok(())
2060	}
2061	#[inline(always)]
2062	pub fn get_available(&self) -> bool {
2063		self.available
2064	}
2065}
2066
2067impl Default for Version10 {
2068	fn default() -> Self {
2069		Self {
2070			available: false,
2071			spec: "unknown",
2072			major_version: 0,
2073			minor_version: 0,
2074			release_version: 0,
2075			vendor: "unknown",
2076			renderer: "unknown",
2077			version: "unknown",
2078			cullface: dummy_pfnglcullfaceproc,
2079			frontface: dummy_pfnglfrontfaceproc,
2080			hint: dummy_pfnglhintproc,
2081			linewidth: dummy_pfngllinewidthproc,
2082			pointsize: dummy_pfnglpointsizeproc,
2083			polygonmode: dummy_pfnglpolygonmodeproc,
2084			scissor: dummy_pfnglscissorproc,
2085			texparameterf: dummy_pfngltexparameterfproc,
2086			texparameterfv: dummy_pfngltexparameterfvproc,
2087			texparameteri: dummy_pfngltexparameteriproc,
2088			texparameteriv: dummy_pfngltexparameterivproc,
2089			teximage1d: dummy_pfnglteximage1dproc,
2090			teximage2d: dummy_pfnglteximage2dproc,
2091			drawbuffer: dummy_pfngldrawbufferproc,
2092			clear: dummy_pfnglclearproc,
2093			clearcolor: dummy_pfnglclearcolorproc,
2094			clearstencil: dummy_pfnglclearstencilproc,
2095			cleardepth: dummy_pfnglcleardepthproc,
2096			stencilmask: dummy_pfnglstencilmaskproc,
2097			colormask: dummy_pfnglcolormaskproc,
2098			depthmask: dummy_pfngldepthmaskproc,
2099			disable: dummy_pfngldisableproc,
2100			enable: dummy_pfnglenableproc,
2101			finish: dummy_pfnglfinishproc,
2102			flush: dummy_pfnglflushproc,
2103			blendfunc: dummy_pfnglblendfuncproc,
2104			logicop: dummy_pfngllogicopproc,
2105			stencilfunc: dummy_pfnglstencilfuncproc,
2106			stencilop: dummy_pfnglstencilopproc,
2107			depthfunc: dummy_pfngldepthfuncproc,
2108			pixelstoref: dummy_pfnglpixelstorefproc,
2109			pixelstorei: dummy_pfnglpixelstoreiproc,
2110			readbuffer: dummy_pfnglreadbufferproc,
2111			readpixels: dummy_pfnglreadpixelsproc,
2112			getbooleanv: dummy_pfnglgetbooleanvproc,
2113			getdoublev: dummy_pfnglgetdoublevproc,
2114			geterror: dummy_pfnglgeterrorproc,
2115			getfloatv: dummy_pfnglgetfloatvproc,
2116			getintegerv: dummy_pfnglgetintegervproc,
2117			getstring: dummy_pfnglgetstringproc,
2118			getteximage: dummy_pfnglgetteximageproc,
2119			gettexparameterfv: dummy_pfnglgettexparameterfvproc,
2120			gettexparameteriv: dummy_pfnglgettexparameterivproc,
2121			gettexlevelparameterfv: dummy_pfnglgettexlevelparameterfvproc,
2122			gettexlevelparameteriv: dummy_pfnglgettexlevelparameterivproc,
2123			isenabled: dummy_pfnglisenabledproc,
2124			depthrange: dummy_pfngldepthrangeproc,
2125			viewport: dummy_pfnglviewportproc,
2126		}
2127	}
2128}
2129impl Debug for Version10 {
2130	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
2131		if self.available {
2132			f.debug_struct("Version10")
2133			.field("available", &self.available)
2134			.field("spec", &self.spec)
2135			.field("major_version", &self.major_version)
2136			.field("minor_version", &self.minor_version)
2137			.field("release_version", &self.release_version)
2138			.field("vendor", &self.vendor)
2139			.field("renderer", &self.renderer)
2140			.field("version", &self.version)
2141			.field("cullface", unsafe{if transmute::<_, *const c_void>(self.cullface) == (dummy_pfnglcullfaceproc as *const c_void) {&null::<PFNGLCULLFACEPROC>()} else {&self.cullface}})
2142			.field("frontface", unsafe{if transmute::<_, *const c_void>(self.frontface) == (dummy_pfnglfrontfaceproc as *const c_void) {&null::<PFNGLFRONTFACEPROC>()} else {&self.frontface}})
2143			.field("hint", unsafe{if transmute::<_, *const c_void>(self.hint) == (dummy_pfnglhintproc as *const c_void) {&null::<PFNGLHINTPROC>()} else {&self.hint}})
2144			.field("linewidth", unsafe{if transmute::<_, *const c_void>(self.linewidth) == (dummy_pfngllinewidthproc as *const c_void) {&null::<PFNGLLINEWIDTHPROC>()} else {&self.linewidth}})
2145			.field("pointsize", unsafe{if transmute::<_, *const c_void>(self.pointsize) == (dummy_pfnglpointsizeproc as *const c_void) {&null::<PFNGLPOINTSIZEPROC>()} else {&self.pointsize}})
2146			.field("polygonmode", unsafe{if transmute::<_, *const c_void>(self.polygonmode) == (dummy_pfnglpolygonmodeproc as *const c_void) {&null::<PFNGLPOLYGONMODEPROC>()} else {&self.polygonmode}})
2147			.field("scissor", unsafe{if transmute::<_, *const c_void>(self.scissor) == (dummy_pfnglscissorproc as *const c_void) {&null::<PFNGLSCISSORPROC>()} else {&self.scissor}})
2148			.field("texparameterf", unsafe{if transmute::<_, *const c_void>(self.texparameterf) == (dummy_pfngltexparameterfproc as *const c_void) {&null::<PFNGLTEXPARAMETERFPROC>()} else {&self.texparameterf}})
2149			.field("texparameterfv", unsafe{if transmute::<_, *const c_void>(self.texparameterfv) == (dummy_pfngltexparameterfvproc as *const c_void) {&null::<PFNGLTEXPARAMETERFVPROC>()} else {&self.texparameterfv}})
2150			.field("texparameteri", unsafe{if transmute::<_, *const c_void>(self.texparameteri) == (dummy_pfngltexparameteriproc as *const c_void) {&null::<PFNGLTEXPARAMETERIPROC>()} else {&self.texparameteri}})
2151			.field("texparameteriv", unsafe{if transmute::<_, *const c_void>(self.texparameteriv) == (dummy_pfngltexparameterivproc as *const c_void) {&null::<PFNGLTEXPARAMETERIVPROC>()} else {&self.texparameteriv}})
2152			.field("teximage1d", unsafe{if transmute::<_, *const c_void>(self.teximage1d) == (dummy_pfnglteximage1dproc as *const c_void) {&null::<PFNGLTEXIMAGE1DPROC>()} else {&self.teximage1d}})
2153			.field("teximage2d", unsafe{if transmute::<_, *const c_void>(self.teximage2d) == (dummy_pfnglteximage2dproc as *const c_void) {&null::<PFNGLTEXIMAGE2DPROC>()} else {&self.teximage2d}})
2154			.field("drawbuffer", unsafe{if transmute::<_, *const c_void>(self.drawbuffer) == (dummy_pfngldrawbufferproc as *const c_void) {&null::<PFNGLDRAWBUFFERPROC>()} else {&self.drawbuffer}})
2155			.field("clear", unsafe{if transmute::<_, *const c_void>(self.clear) == (dummy_pfnglclearproc as *const c_void) {&null::<PFNGLCLEARPROC>()} else {&self.clear}})
2156			.field("clearcolor", unsafe{if transmute::<_, *const c_void>(self.clearcolor) == (dummy_pfnglclearcolorproc as *const c_void) {&null::<PFNGLCLEARCOLORPROC>()} else {&self.clearcolor}})
2157			.field("clearstencil", unsafe{if transmute::<_, *const c_void>(self.clearstencil) == (dummy_pfnglclearstencilproc as *const c_void) {&null::<PFNGLCLEARSTENCILPROC>()} else {&self.clearstencil}})
2158			.field("cleardepth", unsafe{if transmute::<_, *const c_void>(self.cleardepth) == (dummy_pfnglcleardepthproc as *const c_void) {&null::<PFNGLCLEARDEPTHPROC>()} else {&self.cleardepth}})
2159			.field("stencilmask", unsafe{if transmute::<_, *const c_void>(self.stencilmask) == (dummy_pfnglstencilmaskproc as *const c_void) {&null::<PFNGLSTENCILMASKPROC>()} else {&self.stencilmask}})
2160			.field("colormask", unsafe{if transmute::<_, *const c_void>(self.colormask) == (dummy_pfnglcolormaskproc as *const c_void) {&null::<PFNGLCOLORMASKPROC>()} else {&self.colormask}})
2161			.field("depthmask", unsafe{if transmute::<_, *const c_void>(self.depthmask) == (dummy_pfngldepthmaskproc as *const c_void) {&null::<PFNGLDEPTHMASKPROC>()} else {&self.depthmask}})
2162			.field("disable", unsafe{if transmute::<_, *const c_void>(self.disable) == (dummy_pfngldisableproc as *const c_void) {&null::<PFNGLDISABLEPROC>()} else {&self.disable}})
2163			.field("enable", unsafe{if transmute::<_, *const c_void>(self.enable) == (dummy_pfnglenableproc as *const c_void) {&null::<PFNGLENABLEPROC>()} else {&self.enable}})
2164			.field("finish", unsafe{if transmute::<_, *const c_void>(self.finish) == (dummy_pfnglfinishproc as *const c_void) {&null::<PFNGLFINISHPROC>()} else {&self.finish}})
2165			.field("flush", unsafe{if transmute::<_, *const c_void>(self.flush) == (dummy_pfnglflushproc as *const c_void) {&null::<PFNGLFLUSHPROC>()} else {&self.flush}})
2166			.field("blendfunc", unsafe{if transmute::<_, *const c_void>(self.blendfunc) == (dummy_pfnglblendfuncproc as *const c_void) {&null::<PFNGLBLENDFUNCPROC>()} else {&self.blendfunc}})
2167			.field("logicop", unsafe{if transmute::<_, *const c_void>(self.logicop) == (dummy_pfngllogicopproc as *const c_void) {&null::<PFNGLLOGICOPPROC>()} else {&self.logicop}})
2168			.field("stencilfunc", unsafe{if transmute::<_, *const c_void>(self.stencilfunc) == (dummy_pfnglstencilfuncproc as *const c_void) {&null::<PFNGLSTENCILFUNCPROC>()} else {&self.stencilfunc}})
2169			.field("stencilop", unsafe{if transmute::<_, *const c_void>(self.stencilop) == (dummy_pfnglstencilopproc as *const c_void) {&null::<PFNGLSTENCILOPPROC>()} else {&self.stencilop}})
2170			.field("depthfunc", unsafe{if transmute::<_, *const c_void>(self.depthfunc) == (dummy_pfngldepthfuncproc as *const c_void) {&null::<PFNGLDEPTHFUNCPROC>()} else {&self.depthfunc}})
2171			.field("pixelstoref", unsafe{if transmute::<_, *const c_void>(self.pixelstoref) == (dummy_pfnglpixelstorefproc as *const c_void) {&null::<PFNGLPIXELSTOREFPROC>()} else {&self.pixelstoref}})
2172			.field("pixelstorei", unsafe{if transmute::<_, *const c_void>(self.pixelstorei) == (dummy_pfnglpixelstoreiproc as *const c_void) {&null::<PFNGLPIXELSTOREIPROC>()} else {&self.pixelstorei}})
2173			.field("readbuffer", unsafe{if transmute::<_, *const c_void>(self.readbuffer) == (dummy_pfnglreadbufferproc as *const c_void) {&null::<PFNGLREADBUFFERPROC>()} else {&self.readbuffer}})
2174			.field("readpixels", unsafe{if transmute::<_, *const c_void>(self.readpixels) == (dummy_pfnglreadpixelsproc as *const c_void) {&null::<PFNGLREADPIXELSPROC>()} else {&self.readpixels}})
2175			.field("getbooleanv", unsafe{if transmute::<_, *const c_void>(self.getbooleanv) == (dummy_pfnglgetbooleanvproc as *const c_void) {&null::<PFNGLGETBOOLEANVPROC>()} else {&self.getbooleanv}})
2176			.field("getdoublev", unsafe{if transmute::<_, *const c_void>(self.getdoublev) == (dummy_pfnglgetdoublevproc as *const c_void) {&null::<PFNGLGETDOUBLEVPROC>()} else {&self.getdoublev}})
2177			.field("geterror", unsafe{if transmute::<_, *const c_void>(self.geterror) == (dummy_pfnglgeterrorproc as *const c_void) {&null::<PFNGLGETERRORPROC>()} else {&self.geterror}})
2178			.field("getfloatv", unsafe{if transmute::<_, *const c_void>(self.getfloatv) == (dummy_pfnglgetfloatvproc as *const c_void) {&null::<PFNGLGETFLOATVPROC>()} else {&self.getfloatv}})
2179			.field("getintegerv", unsafe{if transmute::<_, *const c_void>(self.getintegerv) == (dummy_pfnglgetintegervproc as *const c_void) {&null::<PFNGLGETINTEGERVPROC>()} else {&self.getintegerv}})
2180			.field("getstring", unsafe{if transmute::<_, *const c_void>(self.getstring) == (dummy_pfnglgetstringproc as *const c_void) {&null::<PFNGLGETSTRINGPROC>()} else {&self.getstring}})
2181			.field("getteximage", unsafe{if transmute::<_, *const c_void>(self.getteximage) == (dummy_pfnglgetteximageproc as *const c_void) {&null::<PFNGLGETTEXIMAGEPROC>()} else {&self.getteximage}})
2182			.field("gettexparameterfv", unsafe{if transmute::<_, *const c_void>(self.gettexparameterfv) == (dummy_pfnglgettexparameterfvproc as *const c_void) {&null::<PFNGLGETTEXPARAMETERFVPROC>()} else {&self.gettexparameterfv}})
2183			.field("gettexparameteriv", unsafe{if transmute::<_, *const c_void>(self.gettexparameteriv) == (dummy_pfnglgettexparameterivproc as *const c_void) {&null::<PFNGLGETTEXPARAMETERIVPROC>()} else {&self.gettexparameteriv}})
2184			.field("gettexlevelparameterfv", unsafe{if transmute::<_, *const c_void>(self.gettexlevelparameterfv) == (dummy_pfnglgettexlevelparameterfvproc as *const c_void) {&null::<PFNGLGETTEXLEVELPARAMETERFVPROC>()} else {&self.gettexlevelparameterfv}})
2185			.field("gettexlevelparameteriv", unsafe{if transmute::<_, *const c_void>(self.gettexlevelparameteriv) == (dummy_pfnglgettexlevelparameterivproc as *const c_void) {&null::<PFNGLGETTEXLEVELPARAMETERIVPROC>()} else {&self.gettexlevelparameteriv}})
2186			.field("isenabled", unsafe{if transmute::<_, *const c_void>(self.isenabled) == (dummy_pfnglisenabledproc as *const c_void) {&null::<PFNGLISENABLEDPROC>()} else {&self.isenabled}})
2187			.field("depthrange", unsafe{if transmute::<_, *const c_void>(self.depthrange) == (dummy_pfngldepthrangeproc as *const c_void) {&null::<PFNGLDEPTHRANGEPROC>()} else {&self.depthrange}})
2188			.field("viewport", unsafe{if transmute::<_, *const c_void>(self.viewport) == (dummy_pfnglviewportproc as *const c_void) {&null::<PFNGLVIEWPORTPROC>()} else {&self.viewport}})
2189			.finish()
2190		} else {
2191			f.debug_struct("Version10")
2192			.field("available", &self.available)
2193			.finish_non_exhaustive()
2194		}
2195	}
2196}
2197
2198/// Alias to `khronos_float_t`
2199pub type GLclampf = khronos_float_t;
2200
2201/// Alias to `f64`
2202pub type GLclampd = f64;
2203
2204/// The prototype to the OpenGL function `DrawArrays`
2205type PFNGLDRAWARRAYSPROC = extern "system" fn(GLenum, GLint, GLsizei);
2206
2207/// The prototype to the OpenGL function `DrawElements`
2208type PFNGLDRAWELEMENTSPROC = extern "system" fn(GLenum, GLsizei, GLenum, *const c_void);
2209
2210/// The prototype to the OpenGL function `GetPointerv`
2211type PFNGLGETPOINTERVPROC = extern "system" fn(GLenum, *mut *mut c_void);
2212
2213/// The prototype to the OpenGL function `PolygonOffset`
2214type PFNGLPOLYGONOFFSETPROC = extern "system" fn(GLfloat, GLfloat);
2215
2216/// The prototype to the OpenGL function `CopyTexImage1D`
2217type PFNGLCOPYTEXIMAGE1DPROC = extern "system" fn(GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint);
2218
2219/// The prototype to the OpenGL function `CopyTexImage2D`
2220type PFNGLCOPYTEXIMAGE2DPROC = extern "system" fn(GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint);
2221
2222/// The prototype to the OpenGL function `CopyTexSubImage1D`
2223type PFNGLCOPYTEXSUBIMAGE1DPROC = extern "system" fn(GLenum, GLint, GLint, GLint, GLint, GLsizei);
2224
2225/// The prototype to the OpenGL function `CopyTexSubImage2D`
2226type PFNGLCOPYTEXSUBIMAGE2DPROC = extern "system" fn(GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
2227
2228/// The prototype to the OpenGL function `TexSubImage1D`
2229type PFNGLTEXSUBIMAGE1DPROC = extern "system" fn(GLenum, GLint, GLint, GLsizei, GLenum, GLenum, *const c_void);
2230
2231/// The prototype to the OpenGL function `TexSubImage2D`
2232type PFNGLTEXSUBIMAGE2DPROC = extern "system" fn(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, *const c_void);
2233
2234/// The prototype to the OpenGL function `BindTexture`
2235type PFNGLBINDTEXTUREPROC = extern "system" fn(GLenum, GLuint);
2236
2237/// The prototype to the OpenGL function `DeleteTextures`
2238type PFNGLDELETETEXTURESPROC = extern "system" fn(GLsizei, *const GLuint);
2239
2240/// The prototype to the OpenGL function `GenTextures`
2241type PFNGLGENTEXTURESPROC = extern "system" fn(GLsizei, *mut GLuint);
2242
2243/// The prototype to the OpenGL function `IsTexture`
2244type PFNGLISTEXTUREPROC = extern "system" fn(GLuint) -> GLboolean;
2245
2246/// The dummy function of `DrawArrays()`
2247extern "system" fn dummy_pfngldrawarraysproc (_: GLenum, _: GLint, _: GLsizei) {
2248	panic!("OpenGL function pointer `glDrawArrays()` is null.")
2249}
2250
2251/// The dummy function of `DrawElements()`
2252extern "system" fn dummy_pfngldrawelementsproc (_: GLenum, _: GLsizei, _: GLenum, _: *const c_void) {
2253	panic!("OpenGL function pointer `glDrawElements()` is null.")
2254}
2255
2256/// The dummy function of `GetPointerv()`
2257extern "system" fn dummy_pfnglgetpointervproc (_: GLenum, _: *mut *mut c_void) {
2258	panic!("OpenGL function pointer `glGetPointerv()` is null.")
2259}
2260
2261/// The dummy function of `PolygonOffset()`
2262extern "system" fn dummy_pfnglpolygonoffsetproc (_: GLfloat, _: GLfloat) {
2263	panic!("OpenGL function pointer `glPolygonOffset()` is null.")
2264}
2265
2266/// The dummy function of `CopyTexImage1D()`
2267extern "system" fn dummy_pfnglcopyteximage1dproc (_: GLenum, _: GLint, _: GLenum, _: GLint, _: GLint, _: GLsizei, _: GLint) {
2268	panic!("OpenGL function pointer `glCopyTexImage1D()` is null.")
2269}
2270
2271/// The dummy function of `CopyTexImage2D()`
2272extern "system" fn dummy_pfnglcopyteximage2dproc (_: GLenum, _: GLint, _: GLenum, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLint) {
2273	panic!("OpenGL function pointer `glCopyTexImage2D()` is null.")
2274}
2275
2276/// The dummy function of `CopyTexSubImage1D()`
2277extern "system" fn dummy_pfnglcopytexsubimage1dproc (_: GLenum, _: GLint, _: GLint, _: GLint, _: GLint, _: GLsizei) {
2278	panic!("OpenGL function pointer `glCopyTexSubImage1D()` is null.")
2279}
2280
2281/// The dummy function of `CopyTexSubImage2D()`
2282extern "system" fn dummy_pfnglcopytexsubimage2dproc (_: GLenum, _: GLint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei) {
2283	panic!("OpenGL function pointer `glCopyTexSubImage2D()` is null.")
2284}
2285
2286/// The dummy function of `TexSubImage1D()`
2287extern "system" fn dummy_pfngltexsubimage1dproc (_: GLenum, _: GLint, _: GLint, _: GLsizei, _: GLenum, _: GLenum, _: *const c_void) {
2288	panic!("OpenGL function pointer `glTexSubImage1D()` is null.")
2289}
2290
2291/// The dummy function of `TexSubImage2D()`
2292extern "system" fn dummy_pfngltexsubimage2dproc (_: GLenum, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLenum, _: GLenum, _: *const c_void) {
2293	panic!("OpenGL function pointer `glTexSubImage2D()` is null.")
2294}
2295
2296/// The dummy function of `BindTexture()`
2297extern "system" fn dummy_pfnglbindtextureproc (_: GLenum, _: GLuint) {
2298	panic!("OpenGL function pointer `glBindTexture()` is null.")
2299}
2300
2301/// The dummy function of `DeleteTextures()`
2302extern "system" fn dummy_pfngldeletetexturesproc (_: GLsizei, _: *const GLuint) {
2303	panic!("OpenGL function pointer `glDeleteTextures()` is null.")
2304}
2305
2306/// The dummy function of `GenTextures()`
2307extern "system" fn dummy_pfnglgentexturesproc (_: GLsizei, _: *mut GLuint) {
2308	panic!("OpenGL function pointer `glGenTextures()` is null.")
2309}
2310
2311/// The dummy function of `IsTexture()`
2312extern "system" fn dummy_pfnglistextureproc (_: GLuint) -> GLboolean {
2313	panic!("OpenGL function pointer `glIsTexture()` is null.")
2314}
2315/// Constant value defined from OpenGL 1.1
2316pub const GL_COLOR_LOGIC_OP: GLenum = 0x0BF2;
2317
2318/// Constant value defined from OpenGL 1.1
2319pub const GL_POLYGON_OFFSET_UNITS: GLenum = 0x2A00;
2320
2321/// Constant value defined from OpenGL 1.1
2322pub const GL_POLYGON_OFFSET_POINT: GLenum = 0x2A01;
2323
2324/// Constant value defined from OpenGL 1.1
2325pub const GL_POLYGON_OFFSET_LINE: GLenum = 0x2A02;
2326
2327/// Constant value defined from OpenGL 1.1
2328pub const GL_POLYGON_OFFSET_FILL: GLenum = 0x8037;
2329
2330/// Constant value defined from OpenGL 1.1
2331pub const GL_POLYGON_OFFSET_FACTOR: GLenum = 0x8038;
2332
2333/// Constant value defined from OpenGL 1.1
2334pub const GL_TEXTURE_BINDING_1D: GLenum = 0x8068;
2335
2336/// Constant value defined from OpenGL 1.1
2337pub const GL_TEXTURE_BINDING_2D: GLenum = 0x8069;
2338
2339/// Constant value defined from OpenGL 1.1
2340pub const GL_TEXTURE_INTERNAL_FORMAT: GLenum = 0x1003;
2341
2342/// Constant value defined from OpenGL 1.1
2343pub const GL_TEXTURE_RED_SIZE: GLenum = 0x805C;
2344
2345/// Constant value defined from OpenGL 1.1
2346pub const GL_TEXTURE_GREEN_SIZE: GLenum = 0x805D;
2347
2348/// Constant value defined from OpenGL 1.1
2349pub const GL_TEXTURE_BLUE_SIZE: GLenum = 0x805E;
2350
2351/// Constant value defined from OpenGL 1.1
2352pub const GL_TEXTURE_ALPHA_SIZE: GLenum = 0x805F;
2353
2354/// Constant value defined from OpenGL 1.1
2355pub const GL_DOUBLE: GLenum = 0x140A;
2356
2357/// Constant value defined from OpenGL 1.1
2358pub const GL_PROXY_TEXTURE_1D: GLenum = 0x8063;
2359
2360/// Constant value defined from OpenGL 1.1
2361pub const GL_PROXY_TEXTURE_2D: GLenum = 0x8064;
2362
2363/// Constant value defined from OpenGL 1.1
2364pub const GL_R3_G3_B2: GLenum = 0x2A10;
2365
2366/// Constant value defined from OpenGL 1.1
2367pub const GL_RGB4: GLenum = 0x804F;
2368
2369/// Constant value defined from OpenGL 1.1
2370pub const GL_RGB5: GLenum = 0x8050;
2371
2372/// Constant value defined from OpenGL 1.1
2373pub const GL_RGB8: GLenum = 0x8051;
2374
2375/// Constant value defined from OpenGL 1.1
2376pub const GL_RGB10: GLenum = 0x8052;
2377
2378/// Constant value defined from OpenGL 1.1
2379pub const GL_RGB12: GLenum = 0x8053;
2380
2381/// Constant value defined from OpenGL 1.1
2382pub const GL_RGB16: GLenum = 0x8054;
2383
2384/// Constant value defined from OpenGL 1.1
2385pub const GL_RGBA2: GLenum = 0x8055;
2386
2387/// Constant value defined from OpenGL 1.1
2388pub const GL_RGBA4: GLenum = 0x8056;
2389
2390/// Constant value defined from OpenGL 1.1
2391pub const GL_RGB5_A1: GLenum = 0x8057;
2392
2393/// Constant value defined from OpenGL 1.1
2394pub const GL_RGBA8: GLenum = 0x8058;
2395
2396/// Constant value defined from OpenGL 1.1
2397pub const GL_RGB10_A2: GLenum = 0x8059;
2398
2399/// Constant value defined from OpenGL 1.1
2400pub const GL_RGBA12: GLenum = 0x805A;
2401
2402/// Constant value defined from OpenGL 1.1
2403pub const GL_RGBA16: GLenum = 0x805B;
2404
2405/// Constant value defined from OpenGL 1.1
2406pub const GL_VERTEX_ARRAY: GLenum = 0x8074;
2407
2408/// Functions from OpenGL version 1.1
2409pub trait GL_1_1 {
2410	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
2411	fn glGetError(&self) -> GLenum;
2412
2413	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawArrays.xhtml>
2414	fn glDrawArrays(&self, mode: GLenum, first: GLint, count: GLsizei) -> Result<()>;
2415
2416	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElements.xhtml>
2417	fn glDrawElements(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void) -> Result<()>;
2418
2419	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetPointerv.xhtml>
2420	fn glGetPointerv(&self, pname: GLenum, params: *mut *mut c_void) -> Result<()>;
2421
2422	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPolygonOffset.xhtml>
2423	fn glPolygonOffset(&self, factor: GLfloat, units: GLfloat) -> Result<()>;
2424
2425	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTexImage1D.xhtml>
2426	fn glCopyTexImage1D(&self, target: GLenum, level: GLint, internalformat: GLenum, x: GLint, y: GLint, width: GLsizei, border: GLint) -> Result<()>;
2427
2428	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTexImage2D.xhtml>
2429	fn glCopyTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei, border: GLint) -> Result<()>;
2430
2431	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTexSubImage1D.xhtml>
2432	fn glCopyTexSubImage1D(&self, target: GLenum, level: GLint, xoffset: GLint, x: GLint, y: GLint, width: GLsizei) -> Result<()>;
2433
2434	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTexSubImage2D.xhtml>
2435	fn glCopyTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
2436
2437	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexSubImage1D.xhtml>
2438	fn glTexSubImage1D(&self, target: GLenum, level: GLint, xoffset: GLint, width: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
2439
2440	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexSubImage2D.xhtml>
2441	fn glTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
2442
2443	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindTexture.xhtml>
2444	fn glBindTexture(&self, target: GLenum, texture: GLuint) -> Result<()>;
2445
2446	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteTextures.xhtml>
2447	fn glDeleteTextures(&self, n: GLsizei, textures: *const GLuint) -> Result<()>;
2448
2449	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenTextures.xhtml>
2450	fn glGenTextures(&self, n: GLsizei, textures: *mut GLuint) -> Result<()>;
2451
2452	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsTexture.xhtml>
2453	fn glIsTexture(&self, texture: GLuint) -> Result<GLboolean>;
2454}
2455/// Functions from OpenGL version 1.1
2456#[derive(Clone, Copy, PartialEq, Eq, Hash)]
2457pub struct Version11 {
2458	/// Is OpenGL version 1.1 available
2459	available: bool,
2460
2461	/// The function pointer to `glGetError()`
2462	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
2463	pub geterror: PFNGLGETERRORPROC,
2464
2465	/// The function pointer to `glDrawArrays()`
2466	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawArrays.xhtml>
2467	pub drawarrays: PFNGLDRAWARRAYSPROC,
2468
2469	/// The function pointer to `glDrawElements()`
2470	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElements.xhtml>
2471	pub drawelements: PFNGLDRAWELEMENTSPROC,
2472
2473	/// The function pointer to `glGetPointerv()`
2474	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetPointerv.xhtml>
2475	pub getpointerv: PFNGLGETPOINTERVPROC,
2476
2477	/// The function pointer to `glPolygonOffset()`
2478	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPolygonOffset.xhtml>
2479	pub polygonoffset: PFNGLPOLYGONOFFSETPROC,
2480
2481	/// The function pointer to `glCopyTexImage1D()`
2482	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTexImage1D.xhtml>
2483	pub copyteximage1d: PFNGLCOPYTEXIMAGE1DPROC,
2484
2485	/// The function pointer to `glCopyTexImage2D()`
2486	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTexImage2D.xhtml>
2487	pub copyteximage2d: PFNGLCOPYTEXIMAGE2DPROC,
2488
2489	/// The function pointer to `glCopyTexSubImage1D()`
2490	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTexSubImage1D.xhtml>
2491	pub copytexsubimage1d: PFNGLCOPYTEXSUBIMAGE1DPROC,
2492
2493	/// The function pointer to `glCopyTexSubImage2D()`
2494	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTexSubImage2D.xhtml>
2495	pub copytexsubimage2d: PFNGLCOPYTEXSUBIMAGE2DPROC,
2496
2497	/// The function pointer to `glTexSubImage1D()`
2498	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexSubImage1D.xhtml>
2499	pub texsubimage1d: PFNGLTEXSUBIMAGE1DPROC,
2500
2501	/// The function pointer to `glTexSubImage2D()`
2502	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexSubImage2D.xhtml>
2503	pub texsubimage2d: PFNGLTEXSUBIMAGE2DPROC,
2504
2505	/// The function pointer to `glBindTexture()`
2506	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindTexture.xhtml>
2507	pub bindtexture: PFNGLBINDTEXTUREPROC,
2508
2509	/// The function pointer to `glDeleteTextures()`
2510	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteTextures.xhtml>
2511	pub deletetextures: PFNGLDELETETEXTURESPROC,
2512
2513	/// The function pointer to `glGenTextures()`
2514	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenTextures.xhtml>
2515	pub gentextures: PFNGLGENTEXTURESPROC,
2516
2517	/// The function pointer to `glIsTexture()`
2518	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsTexture.xhtml>
2519	pub istexture: PFNGLISTEXTUREPROC,
2520}
2521
2522impl GL_1_1 for Version11 {
2523	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
2524	#[inline(always)]
2525	fn glGetError(&self) -> GLenum {
2526		(self.geterror)()
2527	}
2528	#[inline(always)]
2529	fn glDrawArrays(&self, mode: GLenum, first: GLint, count: GLsizei) -> Result<()> {
2530		let ret = process_catch("glDrawArrays", catch_unwind(||(self.drawarrays)(mode, first, count)));
2531		#[cfg(feature = "diagnose")]
2532		if let Ok(ret) = ret {
2533			return to_result("glDrawArrays", ret, self.glGetError());
2534		} else {
2535			return ret
2536		}
2537		#[cfg(not(feature = "diagnose"))]
2538		return ret;
2539	}
2540	#[inline(always)]
2541	fn glDrawElements(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void) -> Result<()> {
2542		let ret = process_catch("glDrawElements", catch_unwind(||(self.drawelements)(mode, count, type_, indices)));
2543		#[cfg(feature = "diagnose")]
2544		if let Ok(ret) = ret {
2545			return to_result("glDrawElements", ret, self.glGetError());
2546		} else {
2547			return ret
2548		}
2549		#[cfg(not(feature = "diagnose"))]
2550		return ret;
2551	}
2552	#[inline(always)]
2553	fn glGetPointerv(&self, pname: GLenum, params: *mut *mut c_void) -> Result<()> {
2554		let ret = process_catch("glGetPointerv", catch_unwind(||(self.getpointerv)(pname, params)));
2555		#[cfg(feature = "diagnose")]
2556		if let Ok(ret) = ret {
2557			return to_result("glGetPointerv", ret, self.glGetError());
2558		} else {
2559			return ret
2560		}
2561		#[cfg(not(feature = "diagnose"))]
2562		return ret;
2563	}
2564	#[inline(always)]
2565	fn glPolygonOffset(&self, factor: GLfloat, units: GLfloat) -> Result<()> {
2566		let ret = process_catch("glPolygonOffset", catch_unwind(||(self.polygonoffset)(factor, units)));
2567		#[cfg(feature = "diagnose")]
2568		if let Ok(ret) = ret {
2569			return to_result("glPolygonOffset", ret, self.glGetError());
2570		} else {
2571			return ret
2572		}
2573		#[cfg(not(feature = "diagnose"))]
2574		return ret;
2575	}
2576	#[inline(always)]
2577	fn glCopyTexImage1D(&self, target: GLenum, level: GLint, internalformat: GLenum, x: GLint, y: GLint, width: GLsizei, border: GLint) -> Result<()> {
2578		let ret = process_catch("glCopyTexImage1D", catch_unwind(||(self.copyteximage1d)(target, level, internalformat, x, y, width, border)));
2579		#[cfg(feature = "diagnose")]
2580		if let Ok(ret) = ret {
2581			return to_result("glCopyTexImage1D", ret, self.glGetError());
2582		} else {
2583			return ret
2584		}
2585		#[cfg(not(feature = "diagnose"))]
2586		return ret;
2587	}
2588	#[inline(always)]
2589	fn glCopyTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei, border: GLint) -> Result<()> {
2590		let ret = process_catch("glCopyTexImage2D", catch_unwind(||(self.copyteximage2d)(target, level, internalformat, x, y, width, height, border)));
2591		#[cfg(feature = "diagnose")]
2592		if let Ok(ret) = ret {
2593			return to_result("glCopyTexImage2D", ret, self.glGetError());
2594		} else {
2595			return ret
2596		}
2597		#[cfg(not(feature = "diagnose"))]
2598		return ret;
2599	}
2600	#[inline(always)]
2601	fn glCopyTexSubImage1D(&self, target: GLenum, level: GLint, xoffset: GLint, x: GLint, y: GLint, width: GLsizei) -> Result<()> {
2602		let ret = process_catch("glCopyTexSubImage1D", catch_unwind(||(self.copytexsubimage1d)(target, level, xoffset, x, y, width)));
2603		#[cfg(feature = "diagnose")]
2604		if let Ok(ret) = ret {
2605			return to_result("glCopyTexSubImage1D", ret, self.glGetError());
2606		} else {
2607			return ret
2608		}
2609		#[cfg(not(feature = "diagnose"))]
2610		return ret;
2611	}
2612	#[inline(always)]
2613	fn glCopyTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
2614		let ret = process_catch("glCopyTexSubImage2D", catch_unwind(||(self.copytexsubimage2d)(target, level, xoffset, yoffset, x, y, width, height)));
2615		#[cfg(feature = "diagnose")]
2616		if let Ok(ret) = ret {
2617			return to_result("glCopyTexSubImage2D", ret, self.glGetError());
2618		} else {
2619			return ret
2620		}
2621		#[cfg(not(feature = "diagnose"))]
2622		return ret;
2623	}
2624	#[inline(always)]
2625	fn glTexSubImage1D(&self, target: GLenum, level: GLint, xoffset: GLint, width: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
2626		let ret = process_catch("glTexSubImage1D", catch_unwind(||(self.texsubimage1d)(target, level, xoffset, width, format, type_, pixels)));
2627		#[cfg(feature = "diagnose")]
2628		if let Ok(ret) = ret {
2629			return to_result("glTexSubImage1D", ret, self.glGetError());
2630		} else {
2631			return ret
2632		}
2633		#[cfg(not(feature = "diagnose"))]
2634		return ret;
2635	}
2636	#[inline(always)]
2637	fn glTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
2638		let ret = process_catch("glTexSubImage2D", catch_unwind(||(self.texsubimage2d)(target, level, xoffset, yoffset, width, height, format, type_, pixels)));
2639		#[cfg(feature = "diagnose")]
2640		if let Ok(ret) = ret {
2641			return to_result("glTexSubImage2D", ret, self.glGetError());
2642		} else {
2643			return ret
2644		}
2645		#[cfg(not(feature = "diagnose"))]
2646		return ret;
2647	}
2648	#[inline(always)]
2649	fn glBindTexture(&self, target: GLenum, texture: GLuint) -> Result<()> {
2650		let ret = process_catch("glBindTexture", catch_unwind(||(self.bindtexture)(target, texture)));
2651		#[cfg(feature = "diagnose")]
2652		if let Ok(ret) = ret {
2653			return to_result("glBindTexture", ret, self.glGetError());
2654		} else {
2655			return ret
2656		}
2657		#[cfg(not(feature = "diagnose"))]
2658		return ret;
2659	}
2660	#[inline(always)]
2661	fn glDeleteTextures(&self, n: GLsizei, textures: *const GLuint) -> Result<()> {
2662		let ret = process_catch("glDeleteTextures", catch_unwind(||(self.deletetextures)(n, textures)));
2663		#[cfg(feature = "diagnose")]
2664		if let Ok(ret) = ret {
2665			return to_result("glDeleteTextures", ret, self.glGetError());
2666		} else {
2667			return ret
2668		}
2669		#[cfg(not(feature = "diagnose"))]
2670		return ret;
2671	}
2672	#[inline(always)]
2673	fn glGenTextures(&self, n: GLsizei, textures: *mut GLuint) -> Result<()> {
2674		let ret = process_catch("glGenTextures", catch_unwind(||(self.gentextures)(n, textures)));
2675		#[cfg(feature = "diagnose")]
2676		if let Ok(ret) = ret {
2677			return to_result("glGenTextures", ret, self.glGetError());
2678		} else {
2679			return ret
2680		}
2681		#[cfg(not(feature = "diagnose"))]
2682		return ret;
2683	}
2684	#[inline(always)]
2685	fn glIsTexture(&self, texture: GLuint) -> Result<GLboolean> {
2686		let ret = process_catch("glIsTexture", catch_unwind(||(self.istexture)(texture)));
2687		#[cfg(feature = "diagnose")]
2688		if let Ok(ret) = ret {
2689			return to_result("glIsTexture", ret, self.glGetError());
2690		} else {
2691			return ret
2692		}
2693		#[cfg(not(feature = "diagnose"))]
2694		return ret;
2695	}
2696}
2697
2698impl Version11 {
2699	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
2700		let (_spec, major, minor, release) = base.get_version();
2701		if (major, minor, release) < (1, 1, 0) {
2702			return Self::default();
2703		}
2704		Self {
2705			available: true,
2706			geterror: {let proc = get_proc_address("glGetError"); if proc == null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
2707			drawarrays: {let proc = get_proc_address("glDrawArrays"); if proc == null() {dummy_pfngldrawarraysproc} else {unsafe{transmute(proc)}}},
2708			drawelements: {let proc = get_proc_address("glDrawElements"); if proc == null() {dummy_pfngldrawelementsproc} else {unsafe{transmute(proc)}}},
2709			getpointerv: {let proc = get_proc_address("glGetPointerv"); if proc == null() {dummy_pfnglgetpointervproc} else {unsafe{transmute(proc)}}},
2710			polygonoffset: {let proc = get_proc_address("glPolygonOffset"); if proc == null() {dummy_pfnglpolygonoffsetproc} else {unsafe{transmute(proc)}}},
2711			copyteximage1d: {let proc = get_proc_address("glCopyTexImage1D"); if proc == null() {dummy_pfnglcopyteximage1dproc} else {unsafe{transmute(proc)}}},
2712			copyteximage2d: {let proc = get_proc_address("glCopyTexImage2D"); if proc == null() {dummy_pfnglcopyteximage2dproc} else {unsafe{transmute(proc)}}},
2713			copytexsubimage1d: {let proc = get_proc_address("glCopyTexSubImage1D"); if proc == null() {dummy_pfnglcopytexsubimage1dproc} else {unsafe{transmute(proc)}}},
2714			copytexsubimage2d: {let proc = get_proc_address("glCopyTexSubImage2D"); if proc == null() {dummy_pfnglcopytexsubimage2dproc} else {unsafe{transmute(proc)}}},
2715			texsubimage1d: {let proc = get_proc_address("glTexSubImage1D"); if proc == null() {dummy_pfngltexsubimage1dproc} else {unsafe{transmute(proc)}}},
2716			texsubimage2d: {let proc = get_proc_address("glTexSubImage2D"); if proc == null() {dummy_pfngltexsubimage2dproc} else {unsafe{transmute(proc)}}},
2717			bindtexture: {let proc = get_proc_address("glBindTexture"); if proc == null() {dummy_pfnglbindtextureproc} else {unsafe{transmute(proc)}}},
2718			deletetextures: {let proc = get_proc_address("glDeleteTextures"); if proc == null() {dummy_pfngldeletetexturesproc} else {unsafe{transmute(proc)}}},
2719			gentextures: {let proc = get_proc_address("glGenTextures"); if proc == null() {dummy_pfnglgentexturesproc} else {unsafe{transmute(proc)}}},
2720			istexture: {let proc = get_proc_address("glIsTexture"); if proc == null() {dummy_pfnglistextureproc} else {unsafe{transmute(proc)}}},
2721		}
2722	}
2723	#[inline(always)]
2724	pub fn get_available(&self) -> bool {
2725		self.available
2726	}
2727}
2728
2729impl Default for Version11 {
2730	fn default() -> Self {
2731		Self {
2732			available: false,
2733			geterror: dummy_pfnglgeterrorproc,
2734			drawarrays: dummy_pfngldrawarraysproc,
2735			drawelements: dummy_pfngldrawelementsproc,
2736			getpointerv: dummy_pfnglgetpointervproc,
2737			polygonoffset: dummy_pfnglpolygonoffsetproc,
2738			copyteximage1d: dummy_pfnglcopyteximage1dproc,
2739			copyteximage2d: dummy_pfnglcopyteximage2dproc,
2740			copytexsubimage1d: dummy_pfnglcopytexsubimage1dproc,
2741			copytexsubimage2d: dummy_pfnglcopytexsubimage2dproc,
2742			texsubimage1d: dummy_pfngltexsubimage1dproc,
2743			texsubimage2d: dummy_pfngltexsubimage2dproc,
2744			bindtexture: dummy_pfnglbindtextureproc,
2745			deletetextures: dummy_pfngldeletetexturesproc,
2746			gentextures: dummy_pfnglgentexturesproc,
2747			istexture: dummy_pfnglistextureproc,
2748		}
2749	}
2750}
2751impl Debug for Version11 {
2752	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
2753		if self.available {
2754			f.debug_struct("Version11")
2755			.field("available", &self.available)
2756			.field("drawarrays", unsafe{if transmute::<_, *const c_void>(self.drawarrays) == (dummy_pfngldrawarraysproc as *const c_void) {&null::<PFNGLDRAWARRAYSPROC>()} else {&self.drawarrays}})
2757			.field("drawelements", unsafe{if transmute::<_, *const c_void>(self.drawelements) == (dummy_pfngldrawelementsproc as *const c_void) {&null::<PFNGLDRAWELEMENTSPROC>()} else {&self.drawelements}})
2758			.field("getpointerv", unsafe{if transmute::<_, *const c_void>(self.getpointerv) == (dummy_pfnglgetpointervproc as *const c_void) {&null::<PFNGLGETPOINTERVPROC>()} else {&self.getpointerv}})
2759			.field("polygonoffset", unsafe{if transmute::<_, *const c_void>(self.polygonoffset) == (dummy_pfnglpolygonoffsetproc as *const c_void) {&null::<PFNGLPOLYGONOFFSETPROC>()} else {&self.polygonoffset}})
2760			.field("copyteximage1d", unsafe{if transmute::<_, *const c_void>(self.copyteximage1d) == (dummy_pfnglcopyteximage1dproc as *const c_void) {&null::<PFNGLCOPYTEXIMAGE1DPROC>()} else {&self.copyteximage1d}})
2761			.field("copyteximage2d", unsafe{if transmute::<_, *const c_void>(self.copyteximage2d) == (dummy_pfnglcopyteximage2dproc as *const c_void) {&null::<PFNGLCOPYTEXIMAGE2DPROC>()} else {&self.copyteximage2d}})
2762			.field("copytexsubimage1d", unsafe{if transmute::<_, *const c_void>(self.copytexsubimage1d) == (dummy_pfnglcopytexsubimage1dproc as *const c_void) {&null::<PFNGLCOPYTEXSUBIMAGE1DPROC>()} else {&self.copytexsubimage1d}})
2763			.field("copytexsubimage2d", unsafe{if transmute::<_, *const c_void>(self.copytexsubimage2d) == (dummy_pfnglcopytexsubimage2dproc as *const c_void) {&null::<PFNGLCOPYTEXSUBIMAGE2DPROC>()} else {&self.copytexsubimage2d}})
2764			.field("texsubimage1d", unsafe{if transmute::<_, *const c_void>(self.texsubimage1d) == (dummy_pfngltexsubimage1dproc as *const c_void) {&null::<PFNGLTEXSUBIMAGE1DPROC>()} else {&self.texsubimage1d}})
2765			.field("texsubimage2d", unsafe{if transmute::<_, *const c_void>(self.texsubimage2d) == (dummy_pfngltexsubimage2dproc as *const c_void) {&null::<PFNGLTEXSUBIMAGE2DPROC>()} else {&self.texsubimage2d}})
2766			.field("bindtexture", unsafe{if transmute::<_, *const c_void>(self.bindtexture) == (dummy_pfnglbindtextureproc as *const c_void) {&null::<PFNGLBINDTEXTUREPROC>()} else {&self.bindtexture}})
2767			.field("deletetextures", unsafe{if transmute::<_, *const c_void>(self.deletetextures) == (dummy_pfngldeletetexturesproc as *const c_void) {&null::<PFNGLDELETETEXTURESPROC>()} else {&self.deletetextures}})
2768			.field("gentextures", unsafe{if transmute::<_, *const c_void>(self.gentextures) == (dummy_pfnglgentexturesproc as *const c_void) {&null::<PFNGLGENTEXTURESPROC>()} else {&self.gentextures}})
2769			.field("istexture", unsafe{if transmute::<_, *const c_void>(self.istexture) == (dummy_pfnglistextureproc as *const c_void) {&null::<PFNGLISTEXTUREPROC>()} else {&self.istexture}})
2770			.finish()
2771		} else {
2772			f.debug_struct("Version11")
2773			.field("available", &self.available)
2774			.finish_non_exhaustive()
2775		}
2776	}
2777}
2778
2779/// The prototype to the OpenGL function `DrawRangeElements`
2780type PFNGLDRAWRANGEELEMENTSPROC = extern "system" fn(GLenum, GLuint, GLuint, GLsizei, GLenum, *const c_void);
2781
2782/// The prototype to the OpenGL function `TexImage3D`
2783type PFNGLTEXIMAGE3DPROC = extern "system" fn(GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, *const c_void);
2784
2785/// The prototype to the OpenGL function `TexSubImage3D`
2786type PFNGLTEXSUBIMAGE3DPROC = extern "system" fn(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, *const c_void);
2787
2788/// The prototype to the OpenGL function `CopyTexSubImage3D`
2789type PFNGLCOPYTEXSUBIMAGE3DPROC = extern "system" fn(GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
2790
2791/// The dummy function of `DrawRangeElements()`
2792extern "system" fn dummy_pfngldrawrangeelementsproc (_: GLenum, _: GLuint, _: GLuint, _: GLsizei, _: GLenum, _: *const c_void) {
2793	panic!("OpenGL function pointer `glDrawRangeElements()` is null.")
2794}
2795
2796/// The dummy function of `TexImage3D()`
2797extern "system" fn dummy_pfnglteximage3dproc (_: GLenum, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLsizei, _: GLint, _: GLenum, _: GLenum, _: *const c_void) {
2798	panic!("OpenGL function pointer `glTexImage3D()` is null.")
2799}
2800
2801/// The dummy function of `TexSubImage3D()`
2802extern "system" fn dummy_pfngltexsubimage3dproc (_: GLenum, _: GLint, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLsizei, _: GLenum, _: GLenum, _: *const c_void) {
2803	panic!("OpenGL function pointer `glTexSubImage3D()` is null.")
2804}
2805
2806/// The dummy function of `CopyTexSubImage3D()`
2807extern "system" fn dummy_pfnglcopytexsubimage3dproc (_: GLenum, _: GLint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei) {
2808	panic!("OpenGL function pointer `glCopyTexSubImage3D()` is null.")
2809}
2810/// Constant value defined from OpenGL 1.2
2811pub const GL_UNSIGNED_BYTE_3_3_2: GLenum = 0x8032;
2812
2813/// Constant value defined from OpenGL 1.2
2814pub const GL_UNSIGNED_SHORT_4_4_4_4: GLenum = 0x8033;
2815
2816/// Constant value defined from OpenGL 1.2
2817pub const GL_UNSIGNED_SHORT_5_5_5_1: GLenum = 0x8034;
2818
2819/// Constant value defined from OpenGL 1.2
2820pub const GL_UNSIGNED_INT_8_8_8_8: GLenum = 0x8035;
2821
2822/// Constant value defined from OpenGL 1.2
2823pub const GL_UNSIGNED_INT_10_10_10_2: GLenum = 0x8036;
2824
2825/// Constant value defined from OpenGL 1.2
2826pub const GL_TEXTURE_BINDING_3D: GLenum = 0x806A;
2827
2828/// Constant value defined from OpenGL 1.2
2829pub const GL_PACK_SKIP_IMAGES: GLenum = 0x806B;
2830
2831/// Constant value defined from OpenGL 1.2
2832pub const GL_PACK_IMAGE_HEIGHT: GLenum = 0x806C;
2833
2834/// Constant value defined from OpenGL 1.2
2835pub const GL_UNPACK_SKIP_IMAGES: GLenum = 0x806D;
2836
2837/// Constant value defined from OpenGL 1.2
2838pub const GL_UNPACK_IMAGE_HEIGHT: GLenum = 0x806E;
2839
2840/// Constant value defined from OpenGL 1.2
2841pub const GL_TEXTURE_3D: GLenum = 0x806F;
2842
2843/// Constant value defined from OpenGL 1.2
2844pub const GL_PROXY_TEXTURE_3D: GLenum = 0x8070;
2845
2846/// Constant value defined from OpenGL 1.2
2847pub const GL_TEXTURE_DEPTH: GLenum = 0x8071;
2848
2849/// Constant value defined from OpenGL 1.2
2850pub const GL_TEXTURE_WRAP_R: GLenum = 0x8072;
2851
2852/// Constant value defined from OpenGL 1.2
2853pub const GL_MAX_3D_TEXTURE_SIZE: GLenum = 0x8073;
2854
2855/// Constant value defined from OpenGL 1.2
2856pub const GL_UNSIGNED_BYTE_2_3_3_REV: GLenum = 0x8362;
2857
2858/// Constant value defined from OpenGL 1.2
2859pub const GL_UNSIGNED_SHORT_5_6_5: GLenum = 0x8363;
2860
2861/// Constant value defined from OpenGL 1.2
2862pub const GL_UNSIGNED_SHORT_5_6_5_REV: GLenum = 0x8364;
2863
2864/// Constant value defined from OpenGL 1.2
2865pub const GL_UNSIGNED_SHORT_4_4_4_4_REV: GLenum = 0x8365;
2866
2867/// Constant value defined from OpenGL 1.2
2868pub const GL_UNSIGNED_SHORT_1_5_5_5_REV: GLenum = 0x8366;
2869
2870/// Constant value defined from OpenGL 1.2
2871pub const GL_UNSIGNED_INT_8_8_8_8_REV: GLenum = 0x8367;
2872
2873/// Constant value defined from OpenGL 1.2
2874pub const GL_UNSIGNED_INT_2_10_10_10_REV: GLenum = 0x8368;
2875
2876/// Constant value defined from OpenGL 1.2
2877pub const GL_BGR: GLenum = 0x80E0;
2878
2879/// Constant value defined from OpenGL 1.2
2880pub const GL_BGRA: GLenum = 0x80E1;
2881
2882/// Constant value defined from OpenGL 1.2
2883pub const GL_MAX_ELEMENTS_VERTICES: GLenum = 0x80E8;
2884
2885/// Constant value defined from OpenGL 1.2
2886pub const GL_MAX_ELEMENTS_INDICES: GLenum = 0x80E9;
2887
2888/// Constant value defined from OpenGL 1.2
2889pub const GL_CLAMP_TO_EDGE: GLint = 0x812F;
2890
2891/// Constant value defined from OpenGL 1.2
2892pub const GL_TEXTURE_MIN_LOD: GLenum = 0x813A;
2893
2894/// Constant value defined from OpenGL 1.2
2895pub const GL_TEXTURE_MAX_LOD: GLenum = 0x813B;
2896
2897/// Constant value defined from OpenGL 1.2
2898pub const GL_TEXTURE_BASE_LEVEL: GLenum = 0x813C;
2899
2900/// Constant value defined from OpenGL 1.2
2901pub const GL_TEXTURE_MAX_LEVEL: GLenum = 0x813D;
2902
2903/// Constant value defined from OpenGL 1.2
2904pub const GL_SMOOTH_POINT_SIZE_RANGE: GLenum = 0x0B12;
2905
2906/// Constant value defined from OpenGL 1.2
2907pub const GL_SMOOTH_POINT_SIZE_GRANULARITY: GLenum = 0x0B13;
2908
2909/// Constant value defined from OpenGL 1.2
2910pub const GL_SMOOTH_LINE_WIDTH_RANGE: GLenum = 0x0B22;
2911
2912/// Constant value defined from OpenGL 1.2
2913pub const GL_SMOOTH_LINE_WIDTH_GRANULARITY: GLenum = 0x0B23;
2914
2915/// Constant value defined from OpenGL 1.2
2916pub const GL_ALIASED_LINE_WIDTH_RANGE: GLenum = 0x846E;
2917
2918/// Constant value defined from OpenGL 1.2
2919pub const GL_RESCALE_NORMAL: GLenum = 0x803A;
2920
2921/// Constant value defined from OpenGL 1.2
2922pub const GL_LIGHT_MODEL_COLOR_CONTROL: GLenum = 0x81F8;
2923
2924/// Constant value defined from OpenGL 1.2
2925pub const GL_SINGLE_COLOR: GLenum = 0x81F9;
2926
2927/// Constant value defined from OpenGL 1.2
2928pub const GL_SEPARATE_SPECULAR_COLOR: GLenum = 0x81FA;
2929
2930/// Constant value defined from OpenGL 1.2
2931pub const GL_ALIASED_POINT_SIZE_RANGE: GLenum = 0x846D;
2932
2933/// Functions from OpenGL version 1.2
2934pub trait GL_1_2 {
2935	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
2936	fn glGetError(&self) -> GLenum;
2937
2938	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawRangeElements.xhtml>
2939	fn glDrawRangeElements(&self, mode: GLenum, start: GLuint, end: GLuint, count: GLsizei, type_: GLenum, indices: *const c_void) -> Result<()>;
2940
2941	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexImage3D.xhtml>
2942	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<()>;
2943
2944	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexSubImage3D.xhtml>
2945	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<()>;
2946
2947	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTexSubImage3D.xhtml>
2948	fn glCopyTexSubImage3D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
2949}
2950/// Functions from OpenGL version 1.2
2951#[derive(Clone, Copy, PartialEq, Eq, Hash)]
2952pub struct Version12 {
2953	/// Is OpenGL version 1.2 available
2954	available: bool,
2955
2956	/// The function pointer to `glGetError()`
2957	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
2958	pub geterror: PFNGLGETERRORPROC,
2959
2960	/// The function pointer to `glDrawRangeElements()`
2961	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawRangeElements.xhtml>
2962	pub drawrangeelements: PFNGLDRAWRANGEELEMENTSPROC,
2963
2964	/// The function pointer to `glTexImage3D()`
2965	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexImage3D.xhtml>
2966	pub teximage3d: PFNGLTEXIMAGE3DPROC,
2967
2968	/// The function pointer to `glTexSubImage3D()`
2969	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexSubImage3D.xhtml>
2970	pub texsubimage3d: PFNGLTEXSUBIMAGE3DPROC,
2971
2972	/// The function pointer to `glCopyTexSubImage3D()`
2973	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTexSubImage3D.xhtml>
2974	pub copytexsubimage3d: PFNGLCOPYTEXSUBIMAGE3DPROC,
2975}
2976
2977impl GL_1_2 for Version12 {
2978	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
2979	#[inline(always)]
2980	fn glGetError(&self) -> GLenum {
2981		(self.geterror)()
2982	}
2983	#[inline(always)]
2984	fn glDrawRangeElements(&self, mode: GLenum, start: GLuint, end: GLuint, count: GLsizei, type_: GLenum, indices: *const c_void) -> Result<()> {
2985		let ret = process_catch("glDrawRangeElements", catch_unwind(||(self.drawrangeelements)(mode, start, end, count, type_, indices)));
2986		#[cfg(feature = "diagnose")]
2987		if let Ok(ret) = ret {
2988			return to_result("glDrawRangeElements", ret, self.glGetError());
2989		} else {
2990			return ret
2991		}
2992		#[cfg(not(feature = "diagnose"))]
2993		return ret;
2994	}
2995	#[inline(always)]
2996	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<()> {
2997		let ret = process_catch("glTexImage3D", catch_unwind(||(self.teximage3d)(target, level, internalformat, width, height, depth, border, format, type_, pixels)));
2998		#[cfg(feature = "diagnose")]
2999		if let Ok(ret) = ret {
3000			return to_result("glTexImage3D", ret, self.glGetError());
3001		} else {
3002			return ret
3003		}
3004		#[cfg(not(feature = "diagnose"))]
3005		return ret;
3006	}
3007	#[inline(always)]
3008	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<()> {
3009		let ret = process_catch("glTexSubImage3D", catch_unwind(||(self.texsubimage3d)(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, pixels)));
3010		#[cfg(feature = "diagnose")]
3011		if let Ok(ret) = ret {
3012			return to_result("glTexSubImage3D", ret, self.glGetError());
3013		} else {
3014			return ret
3015		}
3016		#[cfg(not(feature = "diagnose"))]
3017		return ret;
3018	}
3019	#[inline(always)]
3020	fn glCopyTexSubImage3D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
3021		let ret = process_catch("glCopyTexSubImage3D", catch_unwind(||(self.copytexsubimage3d)(target, level, xoffset, yoffset, zoffset, x, y, width, height)));
3022		#[cfg(feature = "diagnose")]
3023		if let Ok(ret) = ret {
3024			return to_result("glCopyTexSubImage3D", ret, self.glGetError());
3025		} else {
3026			return ret
3027		}
3028		#[cfg(not(feature = "diagnose"))]
3029		return ret;
3030	}
3031}
3032
3033impl Version12 {
3034	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
3035		let (_spec, major, minor, release) = base.get_version();
3036		if (major, minor, release) < (1, 2, 0) {
3037			return Self::default();
3038		}
3039		Self {
3040			available: true,
3041			geterror: {let proc = get_proc_address("glGetError"); if proc == null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
3042			drawrangeelements: {let proc = get_proc_address("glDrawRangeElements"); if proc == null() {dummy_pfngldrawrangeelementsproc} else {unsafe{transmute(proc)}}},
3043			teximage3d: {let proc = get_proc_address("glTexImage3D"); if proc == null() {dummy_pfnglteximage3dproc} else {unsafe{transmute(proc)}}},
3044			texsubimage3d: {let proc = get_proc_address("glTexSubImage3D"); if proc == null() {dummy_pfngltexsubimage3dproc} else {unsafe{transmute(proc)}}},
3045			copytexsubimage3d: {let proc = get_proc_address("glCopyTexSubImage3D"); if proc == null() {dummy_pfnglcopytexsubimage3dproc} else {unsafe{transmute(proc)}}},
3046		}
3047	}
3048	#[inline(always)]
3049	pub fn get_available(&self) -> bool {
3050		self.available
3051	}
3052}
3053
3054impl Default for Version12 {
3055	fn default() -> Self {
3056		Self {
3057			available: false,
3058			geterror: dummy_pfnglgeterrorproc,
3059			drawrangeelements: dummy_pfngldrawrangeelementsproc,
3060			teximage3d: dummy_pfnglteximage3dproc,
3061			texsubimage3d: dummy_pfngltexsubimage3dproc,
3062			copytexsubimage3d: dummy_pfnglcopytexsubimage3dproc,
3063		}
3064	}
3065}
3066impl Debug for Version12 {
3067	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
3068		if self.available {
3069			f.debug_struct("Version12")
3070			.field("available", &self.available)
3071			.field("drawrangeelements", unsafe{if transmute::<_, *const c_void>(self.drawrangeelements) == (dummy_pfngldrawrangeelementsproc as *const c_void) {&null::<PFNGLDRAWRANGEELEMENTSPROC>()} else {&self.drawrangeelements}})
3072			.field("teximage3d", unsafe{if transmute::<_, *const c_void>(self.teximage3d) == (dummy_pfnglteximage3dproc as *const c_void) {&null::<PFNGLTEXIMAGE3DPROC>()} else {&self.teximage3d}})
3073			.field("texsubimage3d", unsafe{if transmute::<_, *const c_void>(self.texsubimage3d) == (dummy_pfngltexsubimage3dproc as *const c_void) {&null::<PFNGLTEXSUBIMAGE3DPROC>()} else {&self.texsubimage3d}})
3074			.field("copytexsubimage3d", unsafe{if transmute::<_, *const c_void>(self.copytexsubimage3d) == (dummy_pfnglcopytexsubimage3dproc as *const c_void) {&null::<PFNGLCOPYTEXSUBIMAGE3DPROC>()} else {&self.copytexsubimage3d}})
3075			.finish()
3076		} else {
3077			f.debug_struct("Version12")
3078			.field("available", &self.available)
3079			.finish_non_exhaustive()
3080		}
3081	}
3082}
3083
3084/// The prototype to the OpenGL function `ActiveTexture`
3085type PFNGLACTIVETEXTUREPROC = extern "system" fn(GLenum);
3086
3087/// The prototype to the OpenGL function `SampleCoverage`
3088type PFNGLSAMPLECOVERAGEPROC = extern "system" fn(GLfloat, GLboolean);
3089
3090/// The prototype to the OpenGL function `CompressedTexImage3D`
3091type PFNGLCOMPRESSEDTEXIMAGE3DPROC = extern "system" fn(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, *const c_void);
3092
3093/// The prototype to the OpenGL function `CompressedTexImage2D`
3094type PFNGLCOMPRESSEDTEXIMAGE2DPROC = extern "system" fn(GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, *const c_void);
3095
3096/// The prototype to the OpenGL function `CompressedTexImage1D`
3097type PFNGLCOMPRESSEDTEXIMAGE1DPROC = extern "system" fn(GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, *const c_void);
3098
3099/// The prototype to the OpenGL function `CompressedTexSubImage3D`
3100type PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC = extern "system" fn(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, *const c_void);
3101
3102/// The prototype to the OpenGL function `CompressedTexSubImage2D`
3103type PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC = extern "system" fn(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, *const c_void);
3104
3105/// The prototype to the OpenGL function `CompressedTexSubImage1D`
3106type PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC = extern "system" fn(GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, *const c_void);
3107
3108/// The prototype to the OpenGL function `GetCompressedTexImage`
3109type PFNGLGETCOMPRESSEDTEXIMAGEPROC = extern "system" fn(GLenum, GLint, *mut c_void);
3110
3111/// The prototype to the OpenGL function `ClientActiveTexture`
3112type PFNGLCLIENTACTIVETEXTUREPROC = extern "system" fn(GLenum);
3113
3114/// The prototype to the OpenGL function `MultiTexCoord1d`
3115type PFNGLMULTITEXCOORD1DPROC = extern "system" fn(GLenum, GLdouble);
3116
3117/// The prototype to the OpenGL function `MultiTexCoord1dv`
3118type PFNGLMULTITEXCOORD1DVPROC = extern "system" fn(GLenum, *const GLdouble);
3119
3120/// The prototype to the OpenGL function `MultiTexCoord1f`
3121type PFNGLMULTITEXCOORD1FPROC = extern "system" fn(GLenum, GLfloat);
3122
3123/// The prototype to the OpenGL function `MultiTexCoord1fv`
3124type PFNGLMULTITEXCOORD1FVPROC = extern "system" fn(GLenum, *const GLfloat);
3125
3126/// The prototype to the OpenGL function `MultiTexCoord1i`
3127type PFNGLMULTITEXCOORD1IPROC = extern "system" fn(GLenum, GLint);
3128
3129/// The prototype to the OpenGL function `MultiTexCoord1iv`
3130type PFNGLMULTITEXCOORD1IVPROC = extern "system" fn(GLenum, *const GLint);
3131
3132/// The prototype to the OpenGL function `MultiTexCoord1s`
3133type PFNGLMULTITEXCOORD1SPROC = extern "system" fn(GLenum, GLshort);
3134
3135/// The prototype to the OpenGL function `MultiTexCoord1sv`
3136type PFNGLMULTITEXCOORD1SVPROC = extern "system" fn(GLenum, *const GLshort);
3137
3138/// The prototype to the OpenGL function `MultiTexCoord2d`
3139type PFNGLMULTITEXCOORD2DPROC = extern "system" fn(GLenum, GLdouble, GLdouble);
3140
3141/// The prototype to the OpenGL function `MultiTexCoord2dv`
3142type PFNGLMULTITEXCOORD2DVPROC = extern "system" fn(GLenum, *const GLdouble);
3143
3144/// The prototype to the OpenGL function `MultiTexCoord2f`
3145type PFNGLMULTITEXCOORD2FPROC = extern "system" fn(GLenum, GLfloat, GLfloat);
3146
3147/// The prototype to the OpenGL function `MultiTexCoord2fv`
3148type PFNGLMULTITEXCOORD2FVPROC = extern "system" fn(GLenum, *const GLfloat);
3149
3150/// The prototype to the OpenGL function `MultiTexCoord2i`
3151type PFNGLMULTITEXCOORD2IPROC = extern "system" fn(GLenum, GLint, GLint);
3152
3153/// The prototype to the OpenGL function `MultiTexCoord2iv`
3154type PFNGLMULTITEXCOORD2IVPROC = extern "system" fn(GLenum, *const GLint);
3155
3156/// The prototype to the OpenGL function `MultiTexCoord2s`
3157type PFNGLMULTITEXCOORD2SPROC = extern "system" fn(GLenum, GLshort, GLshort);
3158
3159/// The prototype to the OpenGL function `MultiTexCoord2sv`
3160type PFNGLMULTITEXCOORD2SVPROC = extern "system" fn(GLenum, *const GLshort);
3161
3162/// The prototype to the OpenGL function `MultiTexCoord3d`
3163type PFNGLMULTITEXCOORD3DPROC = extern "system" fn(GLenum, GLdouble, GLdouble, GLdouble);
3164
3165/// The prototype to the OpenGL function `MultiTexCoord3dv`
3166type PFNGLMULTITEXCOORD3DVPROC = extern "system" fn(GLenum, *const GLdouble);
3167
3168/// The prototype to the OpenGL function `MultiTexCoord3f`
3169type PFNGLMULTITEXCOORD3FPROC = extern "system" fn(GLenum, GLfloat, GLfloat, GLfloat);
3170
3171/// The prototype to the OpenGL function `MultiTexCoord3fv`
3172type PFNGLMULTITEXCOORD3FVPROC = extern "system" fn(GLenum, *const GLfloat);
3173
3174/// The prototype to the OpenGL function `MultiTexCoord3i`
3175type PFNGLMULTITEXCOORD3IPROC = extern "system" fn(GLenum, GLint, GLint, GLint);
3176
3177/// The prototype to the OpenGL function `MultiTexCoord3iv`
3178type PFNGLMULTITEXCOORD3IVPROC = extern "system" fn(GLenum, *const GLint);
3179
3180/// The prototype to the OpenGL function `MultiTexCoord3s`
3181type PFNGLMULTITEXCOORD3SPROC = extern "system" fn(GLenum, GLshort, GLshort, GLshort);
3182
3183/// The prototype to the OpenGL function `MultiTexCoord3sv`
3184type PFNGLMULTITEXCOORD3SVPROC = extern "system" fn(GLenum, *const GLshort);
3185
3186/// The prototype to the OpenGL function `MultiTexCoord4d`
3187type PFNGLMULTITEXCOORD4DPROC = extern "system" fn(GLenum, GLdouble, GLdouble, GLdouble, GLdouble);
3188
3189/// The prototype to the OpenGL function `MultiTexCoord4dv`
3190type PFNGLMULTITEXCOORD4DVPROC = extern "system" fn(GLenum, *const GLdouble);
3191
3192/// The prototype to the OpenGL function `MultiTexCoord4f`
3193type PFNGLMULTITEXCOORD4FPROC = extern "system" fn(GLenum, GLfloat, GLfloat, GLfloat, GLfloat);
3194
3195/// The prototype to the OpenGL function `MultiTexCoord4fv`
3196type PFNGLMULTITEXCOORD4FVPROC = extern "system" fn(GLenum, *const GLfloat);
3197
3198/// The prototype to the OpenGL function `MultiTexCoord4i`
3199type PFNGLMULTITEXCOORD4IPROC = extern "system" fn(GLenum, GLint, GLint, GLint, GLint);
3200
3201/// The prototype to the OpenGL function `MultiTexCoord4iv`
3202type PFNGLMULTITEXCOORD4IVPROC = extern "system" fn(GLenum, *const GLint);
3203
3204/// The prototype to the OpenGL function `MultiTexCoord4s`
3205type PFNGLMULTITEXCOORD4SPROC = extern "system" fn(GLenum, GLshort, GLshort, GLshort, GLshort);
3206
3207/// The prototype to the OpenGL function `MultiTexCoord4sv`
3208type PFNGLMULTITEXCOORD4SVPROC = extern "system" fn(GLenum, *const GLshort);
3209
3210/// The prototype to the OpenGL function `LoadTransposeMatrixf`
3211type PFNGLLOADTRANSPOSEMATRIXFPROC = extern "system" fn(*const GLfloat);
3212
3213/// The prototype to the OpenGL function `LoadTransposeMatrixd`
3214type PFNGLLOADTRANSPOSEMATRIXDPROC = extern "system" fn(*const GLdouble);
3215
3216/// The prototype to the OpenGL function `MultTransposeMatrixf`
3217type PFNGLMULTTRANSPOSEMATRIXFPROC = extern "system" fn(*const GLfloat);
3218
3219/// The prototype to the OpenGL function `MultTransposeMatrixd`
3220type PFNGLMULTTRANSPOSEMATRIXDPROC = extern "system" fn(*const GLdouble);
3221
3222/// The dummy function of `ActiveTexture()`
3223extern "system" fn dummy_pfnglactivetextureproc (_: GLenum) {
3224	panic!("OpenGL function pointer `glActiveTexture()` is null.")
3225}
3226
3227/// The dummy function of `SampleCoverage()`
3228extern "system" fn dummy_pfnglsamplecoverageproc (_: GLfloat, _: GLboolean) {
3229	panic!("OpenGL function pointer `glSampleCoverage()` is null.")
3230}
3231
3232/// The dummy function of `CompressedTexImage3D()`
3233extern "system" fn dummy_pfnglcompressedteximage3dproc (_: GLenum, _: GLint, _: GLenum, _: GLsizei, _: GLsizei, _: GLsizei, _: GLint, _: GLsizei, _: *const c_void) {
3234	panic!("OpenGL function pointer `glCompressedTexImage3D()` is null.")
3235}
3236
3237/// The dummy function of `CompressedTexImage2D()`
3238extern "system" fn dummy_pfnglcompressedteximage2dproc (_: GLenum, _: GLint, _: GLenum, _: GLsizei, _: GLsizei, _: GLint, _: GLsizei, _: *const c_void) {
3239	panic!("OpenGL function pointer `glCompressedTexImage2D()` is null.")
3240}
3241
3242/// The dummy function of `CompressedTexImage1D()`
3243extern "system" fn dummy_pfnglcompressedteximage1dproc (_: GLenum, _: GLint, _: GLenum, _: GLsizei, _: GLint, _: GLsizei, _: *const c_void) {
3244	panic!("OpenGL function pointer `glCompressedTexImage1D()` is null.")
3245}
3246
3247/// The dummy function of `CompressedTexSubImage3D()`
3248extern "system" fn dummy_pfnglcompressedtexsubimage3dproc (_: GLenum, _: GLint, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLsizei, _: GLenum, _: GLsizei, _: *const c_void) {
3249	panic!("OpenGL function pointer `glCompressedTexSubImage3D()` is null.")
3250}
3251
3252/// The dummy function of `CompressedTexSubImage2D()`
3253extern "system" fn dummy_pfnglcompressedtexsubimage2dproc (_: GLenum, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLenum, _: GLsizei, _: *const c_void) {
3254	panic!("OpenGL function pointer `glCompressedTexSubImage2D()` is null.")
3255}
3256
3257/// The dummy function of `CompressedTexSubImage1D()`
3258extern "system" fn dummy_pfnglcompressedtexsubimage1dproc (_: GLenum, _: GLint, _: GLint, _: GLsizei, _: GLenum, _: GLsizei, _: *const c_void) {
3259	panic!("OpenGL function pointer `glCompressedTexSubImage1D()` is null.")
3260}
3261
3262/// The dummy function of `GetCompressedTexImage()`
3263extern "system" fn dummy_pfnglgetcompressedteximageproc (_: GLenum, _: GLint, _: *mut c_void) {
3264	panic!("OpenGL function pointer `glGetCompressedTexImage()` is null.")
3265}
3266
3267/// The dummy function of `ClientActiveTexture()`
3268extern "system" fn dummy_pfnglclientactivetextureproc (_: GLenum) {
3269	panic!("OpenGL function pointer `glClientActiveTexture()` is null.")
3270}
3271
3272/// The dummy function of `MultiTexCoord1d()`
3273extern "system" fn dummy_pfnglmultitexcoord1dproc (_: GLenum, _: GLdouble) {
3274	panic!("OpenGL function pointer `glMultiTexCoord1d()` is null.")
3275}
3276
3277/// The dummy function of `MultiTexCoord1dv()`
3278extern "system" fn dummy_pfnglmultitexcoord1dvproc (_: GLenum, _: *const GLdouble) {
3279	panic!("OpenGL function pointer `glMultiTexCoord1dv()` is null.")
3280}
3281
3282/// The dummy function of `MultiTexCoord1f()`
3283extern "system" fn dummy_pfnglmultitexcoord1fproc (_: GLenum, _: GLfloat) {
3284	panic!("OpenGL function pointer `glMultiTexCoord1f()` is null.")
3285}
3286
3287/// The dummy function of `MultiTexCoord1fv()`
3288extern "system" fn dummy_pfnglmultitexcoord1fvproc (_: GLenum, _: *const GLfloat) {
3289	panic!("OpenGL function pointer `glMultiTexCoord1fv()` is null.")
3290}
3291
3292/// The dummy function of `MultiTexCoord1i()`
3293extern "system" fn dummy_pfnglmultitexcoord1iproc (_: GLenum, _: GLint) {
3294	panic!("OpenGL function pointer `glMultiTexCoord1i()` is null.")
3295}
3296
3297/// The dummy function of `MultiTexCoord1iv()`
3298extern "system" fn dummy_pfnglmultitexcoord1ivproc (_: GLenum, _: *const GLint) {
3299	panic!("OpenGL function pointer `glMultiTexCoord1iv()` is null.")
3300}
3301
3302/// The dummy function of `MultiTexCoord1s()`
3303extern "system" fn dummy_pfnglmultitexcoord1sproc (_: GLenum, _: GLshort) {
3304	panic!("OpenGL function pointer `glMultiTexCoord1s()` is null.")
3305}
3306
3307/// The dummy function of `MultiTexCoord1sv()`
3308extern "system" fn dummy_pfnglmultitexcoord1svproc (_: GLenum, _: *const GLshort) {
3309	panic!("OpenGL function pointer `glMultiTexCoord1sv()` is null.")
3310}
3311
3312/// The dummy function of `MultiTexCoord2d()`
3313extern "system" fn dummy_pfnglmultitexcoord2dproc (_: GLenum, _: GLdouble, _: GLdouble) {
3314	panic!("OpenGL function pointer `glMultiTexCoord2d()` is null.")
3315}
3316
3317/// The dummy function of `MultiTexCoord2dv()`
3318extern "system" fn dummy_pfnglmultitexcoord2dvproc (_: GLenum, _: *const GLdouble) {
3319	panic!("OpenGL function pointer `glMultiTexCoord2dv()` is null.")
3320}
3321
3322/// The dummy function of `MultiTexCoord2f()`
3323extern "system" fn dummy_pfnglmultitexcoord2fproc (_: GLenum, _: GLfloat, _: GLfloat) {
3324	panic!("OpenGL function pointer `glMultiTexCoord2f()` is null.")
3325}
3326
3327/// The dummy function of `MultiTexCoord2fv()`
3328extern "system" fn dummy_pfnglmultitexcoord2fvproc (_: GLenum, _: *const GLfloat) {
3329	panic!("OpenGL function pointer `glMultiTexCoord2fv()` is null.")
3330}
3331
3332/// The dummy function of `MultiTexCoord2i()`
3333extern "system" fn dummy_pfnglmultitexcoord2iproc (_: GLenum, _: GLint, _: GLint) {
3334	panic!("OpenGL function pointer `glMultiTexCoord2i()` is null.")
3335}
3336
3337/// The dummy function of `MultiTexCoord2iv()`
3338extern "system" fn dummy_pfnglmultitexcoord2ivproc (_: GLenum, _: *const GLint) {
3339	panic!("OpenGL function pointer `glMultiTexCoord2iv()` is null.")
3340}
3341
3342/// The dummy function of `MultiTexCoord2s()`
3343extern "system" fn dummy_pfnglmultitexcoord2sproc (_: GLenum, _: GLshort, _: GLshort) {
3344	panic!("OpenGL function pointer `glMultiTexCoord2s()` is null.")
3345}
3346
3347/// The dummy function of `MultiTexCoord2sv()`
3348extern "system" fn dummy_pfnglmultitexcoord2svproc (_: GLenum, _: *const GLshort) {
3349	panic!("OpenGL function pointer `glMultiTexCoord2sv()` is null.")
3350}
3351
3352/// The dummy function of `MultiTexCoord3d()`
3353extern "system" fn dummy_pfnglmultitexcoord3dproc (_: GLenum, _: GLdouble, _: GLdouble, _: GLdouble) {
3354	panic!("OpenGL function pointer `glMultiTexCoord3d()` is null.")
3355}
3356
3357/// The dummy function of `MultiTexCoord3dv()`
3358extern "system" fn dummy_pfnglmultitexcoord3dvproc (_: GLenum, _: *const GLdouble) {
3359	panic!("OpenGL function pointer `glMultiTexCoord3dv()` is null.")
3360}
3361
3362/// The dummy function of `MultiTexCoord3f()`
3363extern "system" fn dummy_pfnglmultitexcoord3fproc (_: GLenum, _: GLfloat, _: GLfloat, _: GLfloat) {
3364	panic!("OpenGL function pointer `glMultiTexCoord3f()` is null.")
3365}
3366
3367/// The dummy function of `MultiTexCoord3fv()`
3368extern "system" fn dummy_pfnglmultitexcoord3fvproc (_: GLenum, _: *const GLfloat) {
3369	panic!("OpenGL function pointer `glMultiTexCoord3fv()` is null.")
3370}
3371
3372/// The dummy function of `MultiTexCoord3i()`
3373extern "system" fn dummy_pfnglmultitexcoord3iproc (_: GLenum, _: GLint, _: GLint, _: GLint) {
3374	panic!("OpenGL function pointer `glMultiTexCoord3i()` is null.")
3375}
3376
3377/// The dummy function of `MultiTexCoord3iv()`
3378extern "system" fn dummy_pfnglmultitexcoord3ivproc (_: GLenum, _: *const GLint) {
3379	panic!("OpenGL function pointer `glMultiTexCoord3iv()` is null.")
3380}
3381
3382/// The dummy function of `MultiTexCoord3s()`
3383extern "system" fn dummy_pfnglmultitexcoord3sproc (_: GLenum, _: GLshort, _: GLshort, _: GLshort) {
3384	panic!("OpenGL function pointer `glMultiTexCoord3s()` is null.")
3385}
3386
3387/// The dummy function of `MultiTexCoord3sv()`
3388extern "system" fn dummy_pfnglmultitexcoord3svproc (_: GLenum, _: *const GLshort) {
3389	panic!("OpenGL function pointer `glMultiTexCoord3sv()` is null.")
3390}
3391
3392/// The dummy function of `MultiTexCoord4d()`
3393extern "system" fn dummy_pfnglmultitexcoord4dproc (_: GLenum, _: GLdouble, _: GLdouble, _: GLdouble, _: GLdouble) {
3394	panic!("OpenGL function pointer `glMultiTexCoord4d()` is null.")
3395}
3396
3397/// The dummy function of `MultiTexCoord4dv()`
3398extern "system" fn dummy_pfnglmultitexcoord4dvproc (_: GLenum, _: *const GLdouble) {
3399	panic!("OpenGL function pointer `glMultiTexCoord4dv()` is null.")
3400}
3401
3402/// The dummy function of `MultiTexCoord4f()`
3403extern "system" fn dummy_pfnglmultitexcoord4fproc (_: GLenum, _: GLfloat, _: GLfloat, _: GLfloat, _: GLfloat) {
3404	panic!("OpenGL function pointer `glMultiTexCoord4f()` is null.")
3405}
3406
3407/// The dummy function of `MultiTexCoord4fv()`
3408extern "system" fn dummy_pfnglmultitexcoord4fvproc (_: GLenum, _: *const GLfloat) {
3409	panic!("OpenGL function pointer `glMultiTexCoord4fv()` is null.")
3410}
3411
3412/// The dummy function of `MultiTexCoord4i()`
3413extern "system" fn dummy_pfnglmultitexcoord4iproc (_: GLenum, _: GLint, _: GLint, _: GLint, _: GLint) {
3414	panic!("OpenGL function pointer `glMultiTexCoord4i()` is null.")
3415}
3416
3417/// The dummy function of `MultiTexCoord4iv()`
3418extern "system" fn dummy_pfnglmultitexcoord4ivproc (_: GLenum, _: *const GLint) {
3419	panic!("OpenGL function pointer `glMultiTexCoord4iv()` is null.")
3420}
3421
3422/// The dummy function of `MultiTexCoord4s()`
3423extern "system" fn dummy_pfnglmultitexcoord4sproc (_: GLenum, _: GLshort, _: GLshort, _: GLshort, _: GLshort) {
3424	panic!("OpenGL function pointer `glMultiTexCoord4s()` is null.")
3425}
3426
3427/// The dummy function of `MultiTexCoord4sv()`
3428extern "system" fn dummy_pfnglmultitexcoord4svproc (_: GLenum, _: *const GLshort) {
3429	panic!("OpenGL function pointer `glMultiTexCoord4sv()` is null.")
3430}
3431
3432/// The dummy function of `LoadTransposeMatrixf()`
3433extern "system" fn dummy_pfnglloadtransposematrixfproc (_: *const GLfloat) {
3434	panic!("OpenGL function pointer `glLoadTransposeMatrixf()` is null.")
3435}
3436
3437/// The dummy function of `LoadTransposeMatrixd()`
3438extern "system" fn dummy_pfnglloadtransposematrixdproc (_: *const GLdouble) {
3439	panic!("OpenGL function pointer `glLoadTransposeMatrixd()` is null.")
3440}
3441
3442/// The dummy function of `MultTransposeMatrixf()`
3443extern "system" fn dummy_pfnglmulttransposematrixfproc (_: *const GLfloat) {
3444	panic!("OpenGL function pointer `glMultTransposeMatrixf()` is null.")
3445}
3446
3447/// The dummy function of `MultTransposeMatrixd()`
3448extern "system" fn dummy_pfnglmulttransposematrixdproc (_: *const GLdouble) {
3449	panic!("OpenGL function pointer `glMultTransposeMatrixd()` is null.")
3450}
3451/// Constant value defined from OpenGL 1.3
3452pub const GL_TEXTURE0: GLenum = 0x84C0;
3453
3454/// Constant value defined from OpenGL 1.3
3455pub const GL_TEXTURE1: GLenum = 0x84C1;
3456
3457/// Constant value defined from OpenGL 1.3
3458pub const GL_TEXTURE2: GLenum = 0x84C2;
3459
3460/// Constant value defined from OpenGL 1.3
3461pub const GL_TEXTURE3: GLenum = 0x84C3;
3462
3463/// Constant value defined from OpenGL 1.3
3464pub const GL_TEXTURE4: GLenum = 0x84C4;
3465
3466/// Constant value defined from OpenGL 1.3
3467pub const GL_TEXTURE5: GLenum = 0x84C5;
3468
3469/// Constant value defined from OpenGL 1.3
3470pub const GL_TEXTURE6: GLenum = 0x84C6;
3471
3472/// Constant value defined from OpenGL 1.3
3473pub const GL_TEXTURE7: GLenum = 0x84C7;
3474
3475/// Constant value defined from OpenGL 1.3
3476pub const GL_TEXTURE8: GLenum = 0x84C8;
3477
3478/// Constant value defined from OpenGL 1.3
3479pub const GL_TEXTURE9: GLenum = 0x84C9;
3480
3481/// Constant value defined from OpenGL 1.3
3482pub const GL_TEXTURE10: GLenum = 0x84CA;
3483
3484/// Constant value defined from OpenGL 1.3
3485pub const GL_TEXTURE11: GLenum = 0x84CB;
3486
3487/// Constant value defined from OpenGL 1.3
3488pub const GL_TEXTURE12: GLenum = 0x84CC;
3489
3490/// Constant value defined from OpenGL 1.3
3491pub const GL_TEXTURE13: GLenum = 0x84CD;
3492
3493/// Constant value defined from OpenGL 1.3
3494pub const GL_TEXTURE14: GLenum = 0x84CE;
3495
3496/// Constant value defined from OpenGL 1.3
3497pub const GL_TEXTURE15: GLenum = 0x84CF;
3498
3499/// Constant value defined from OpenGL 1.3
3500pub const GL_TEXTURE16: GLenum = 0x84D0;
3501
3502/// Constant value defined from OpenGL 1.3
3503pub const GL_TEXTURE17: GLenum = 0x84D1;
3504
3505/// Constant value defined from OpenGL 1.3
3506pub const GL_TEXTURE18: GLenum = 0x84D2;
3507
3508/// Constant value defined from OpenGL 1.3
3509pub const GL_TEXTURE19: GLenum = 0x84D3;
3510
3511/// Constant value defined from OpenGL 1.3
3512pub const GL_TEXTURE20: GLenum = 0x84D4;
3513
3514/// Constant value defined from OpenGL 1.3
3515pub const GL_TEXTURE21: GLenum = 0x84D5;
3516
3517/// Constant value defined from OpenGL 1.3
3518pub const GL_TEXTURE22: GLenum = 0x84D6;
3519
3520/// Constant value defined from OpenGL 1.3
3521pub const GL_TEXTURE23: GLenum = 0x84D7;
3522
3523/// Constant value defined from OpenGL 1.3
3524pub const GL_TEXTURE24: GLenum = 0x84D8;
3525
3526/// Constant value defined from OpenGL 1.3
3527pub const GL_TEXTURE25: GLenum = 0x84D9;
3528
3529/// Constant value defined from OpenGL 1.3
3530pub const GL_TEXTURE26: GLenum = 0x84DA;
3531
3532/// Constant value defined from OpenGL 1.3
3533pub const GL_TEXTURE27: GLenum = 0x84DB;
3534
3535/// Constant value defined from OpenGL 1.3
3536pub const GL_TEXTURE28: GLenum = 0x84DC;
3537
3538/// Constant value defined from OpenGL 1.3
3539pub const GL_TEXTURE29: GLenum = 0x84DD;
3540
3541/// Constant value defined from OpenGL 1.3
3542pub const GL_TEXTURE30: GLenum = 0x84DE;
3543
3544/// Constant value defined from OpenGL 1.3
3545pub const GL_TEXTURE31: GLenum = 0x84DF;
3546
3547/// Constant value defined from OpenGL 1.3
3548pub const GL_ACTIVE_TEXTURE: GLenum = 0x84E0;
3549
3550/// Constant value defined from OpenGL 1.3
3551pub const GL_MULTISAMPLE: GLenum = 0x809D;
3552
3553/// Constant value defined from OpenGL 1.3
3554pub const GL_SAMPLE_ALPHA_TO_COVERAGE: GLenum = 0x809E;
3555
3556/// Constant value defined from OpenGL 1.3
3557pub const GL_SAMPLE_ALPHA_TO_ONE: GLenum = 0x809F;
3558
3559/// Constant value defined from OpenGL 1.3
3560pub const GL_SAMPLE_COVERAGE: GLenum = 0x80A0;
3561
3562/// Constant value defined from OpenGL 1.3
3563pub const GL_SAMPLE_BUFFERS: GLenum = 0x80A8;
3564
3565/// Constant value defined from OpenGL 1.3
3566pub const GL_SAMPLES: GLenum = 0x80A9;
3567
3568/// Constant value defined from OpenGL 1.3
3569pub const GL_SAMPLE_COVERAGE_VALUE: GLenum = 0x80AA;
3570
3571/// Constant value defined from OpenGL 1.3
3572pub const GL_SAMPLE_COVERAGE_INVERT: GLenum = 0x80AB;
3573
3574/// Constant value defined from OpenGL 1.3
3575pub const GL_TEXTURE_CUBE_MAP: GLenum = 0x8513;
3576
3577/// Constant value defined from OpenGL 1.3
3578pub const GL_TEXTURE_BINDING_CUBE_MAP: GLenum = 0x8514;
3579
3580/// Constant value defined from OpenGL 1.3
3581pub const GL_TEXTURE_CUBE_MAP_POSITIVE_X: GLenum = 0x8515;
3582
3583/// Constant value defined from OpenGL 1.3
3584pub const GL_TEXTURE_CUBE_MAP_NEGATIVE_X: GLenum = 0x8516;
3585
3586/// Constant value defined from OpenGL 1.3
3587pub const GL_TEXTURE_CUBE_MAP_POSITIVE_Y: GLenum = 0x8517;
3588
3589/// Constant value defined from OpenGL 1.3
3590pub const GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: GLenum = 0x8518;
3591
3592/// Constant value defined from OpenGL 1.3
3593pub const GL_TEXTURE_CUBE_MAP_POSITIVE_Z: GLenum = 0x8519;
3594
3595/// Constant value defined from OpenGL 1.3
3596pub const GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: GLenum = 0x851A;
3597
3598/// Constant value defined from OpenGL 1.3
3599pub const GL_PROXY_TEXTURE_CUBE_MAP: GLenum = 0x851B;
3600
3601/// Constant value defined from OpenGL 1.3
3602pub const GL_MAX_CUBE_MAP_TEXTURE_SIZE: GLenum = 0x851C;
3603
3604/// Constant value defined from OpenGL 1.3
3605pub const GL_COMPRESSED_RGB: GLenum = 0x84ED;
3606
3607/// Constant value defined from OpenGL 1.3
3608pub const GL_COMPRESSED_RGBA: GLenum = 0x84EE;
3609
3610/// Constant value defined from OpenGL 1.3
3611pub const GL_TEXTURE_COMPRESSION_HINT: GLenum = 0x84EF;
3612
3613/// Constant value defined from OpenGL 1.3
3614pub const GL_TEXTURE_COMPRESSED_IMAGE_SIZE: GLenum = 0x86A0;
3615
3616/// Constant value defined from OpenGL 1.3
3617pub const GL_TEXTURE_COMPRESSED: GLenum = 0x86A1;
3618
3619/// Constant value defined from OpenGL 1.3
3620pub const GL_NUM_COMPRESSED_TEXTURE_FORMATS: GLenum = 0x86A2;
3621
3622/// Constant value defined from OpenGL 1.3
3623pub const GL_COMPRESSED_TEXTURE_FORMATS: GLenum = 0x86A3;
3624
3625/// Constant value defined from OpenGL 1.3
3626pub const GL_CLAMP_TO_BORDER: GLint = 0x812D;
3627
3628/// Constant value defined from OpenGL 1.3
3629pub const GL_CLIENT_ACTIVE_TEXTURE: GLenum = 0x84E1;
3630
3631/// Constant value defined from OpenGL 1.3
3632pub const GL_MAX_TEXTURE_UNITS: GLenum = 0x84E2;
3633
3634/// Constant value defined from OpenGL 1.3
3635pub const GL_TRANSPOSE_MODELVIEW_MATRIX: GLenum = 0x84E3;
3636
3637/// Constant value defined from OpenGL 1.3
3638pub const GL_TRANSPOSE_PROJECTION_MATRIX: GLenum = 0x84E4;
3639
3640/// Constant value defined from OpenGL 1.3
3641pub const GL_TRANSPOSE_TEXTURE_MATRIX: GLenum = 0x84E5;
3642
3643/// Constant value defined from OpenGL 1.3
3644pub const GL_TRANSPOSE_COLOR_MATRIX: GLenum = 0x84E6;
3645
3646/// Constant value defined from OpenGL 1.3
3647pub const GL_MULTISAMPLE_BIT: GLbitfield = 0x20000000;
3648
3649/// Constant value defined from OpenGL 1.3
3650pub const GL_NORMAL_MAP: GLenum = 0x8511;
3651
3652/// Constant value defined from OpenGL 1.3
3653pub const GL_REFLECTION_MAP: GLenum = 0x8512;
3654
3655/// Constant value defined from OpenGL 1.3
3656pub const GL_COMPRESSED_ALPHA: GLenum = 0x84E9;
3657
3658/// Constant value defined from OpenGL 1.3
3659pub const GL_COMPRESSED_LUMINANCE: GLenum = 0x84EA;
3660
3661/// Constant value defined from OpenGL 1.3
3662pub const GL_COMPRESSED_LUMINANCE_ALPHA: GLenum = 0x84EB;
3663
3664/// Constant value defined from OpenGL 1.3
3665pub const GL_COMPRESSED_INTENSITY: GLenum = 0x84EC;
3666
3667/// Constant value defined from OpenGL 1.3
3668pub const GL_COMBINE: GLenum = 0x8570;
3669
3670/// Constant value defined from OpenGL 1.3
3671pub const GL_COMBINE_RGB: GLenum = 0x8571;
3672
3673/// Constant value defined from OpenGL 1.3
3674pub const GL_COMBINE_ALPHA: GLenum = 0x8572;
3675
3676/// Constant value defined from OpenGL 1.3
3677pub const GL_SOURCE0_RGB: GLenum = 0x8580;
3678
3679/// Constant value defined from OpenGL 1.3
3680pub const GL_SOURCE1_RGB: GLenum = 0x8581;
3681
3682/// Constant value defined from OpenGL 1.3
3683pub const GL_SOURCE2_RGB: GLenum = 0x8582;
3684
3685/// Constant value defined from OpenGL 1.3
3686pub const GL_SOURCE0_ALPHA: GLenum = 0x8588;
3687
3688/// Constant value defined from OpenGL 1.3
3689pub const GL_SOURCE1_ALPHA: GLenum = 0x8589;
3690
3691/// Constant value defined from OpenGL 1.3
3692pub const GL_SOURCE2_ALPHA: GLenum = 0x858A;
3693
3694/// Constant value defined from OpenGL 1.3
3695pub const GL_OPERAND0_RGB: GLenum = 0x8590;
3696
3697/// Constant value defined from OpenGL 1.3
3698pub const GL_OPERAND1_RGB: GLenum = 0x8591;
3699
3700/// Constant value defined from OpenGL 1.3
3701pub const GL_OPERAND2_RGB: GLenum = 0x8592;
3702
3703/// Constant value defined from OpenGL 1.3
3704pub const GL_OPERAND0_ALPHA: GLenum = 0x8598;
3705
3706/// Constant value defined from OpenGL 1.3
3707pub const GL_OPERAND1_ALPHA: GLenum = 0x8599;
3708
3709/// Constant value defined from OpenGL 1.3
3710pub const GL_OPERAND2_ALPHA: GLenum = 0x859A;
3711
3712/// Constant value defined from OpenGL 1.3
3713pub const GL_RGB_SCALE: GLenum = 0x8573;
3714
3715/// Constant value defined from OpenGL 1.3
3716pub const GL_ADD_SIGNED: GLenum = 0x8574;
3717
3718/// Constant value defined from OpenGL 1.3
3719pub const GL_INTERPOLATE: GLenum = 0x8575;
3720
3721/// Constant value defined from OpenGL 1.3
3722pub const GL_SUBTRACT: GLenum = 0x84E7;
3723
3724/// Constant value defined from OpenGL 1.3
3725pub const GL_CONSTANT: GLenum = 0x8576;
3726
3727/// Constant value defined from OpenGL 1.3
3728pub const GL_PRIMARY_COLOR: GLenum = 0x8577;
3729
3730/// Constant value defined from OpenGL 1.3
3731pub const GL_PREVIOUS: GLenum = 0x8578;
3732
3733/// Constant value defined from OpenGL 1.3
3734pub const GL_DOT3_RGB: GLenum = 0x86AE;
3735
3736/// Constant value defined from OpenGL 1.3
3737pub const GL_DOT3_RGBA: GLenum = 0x86AF;
3738
3739/// Functions from OpenGL version 1.3
3740pub trait GL_1_3 {
3741	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
3742	fn glGetError(&self) -> GLenum;
3743
3744	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glActiveTexture.xhtml>
3745	fn glActiveTexture(&self, texture: GLenum) -> Result<()>;
3746
3747	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSampleCoverage.xhtml>
3748	fn glSampleCoverage(&self, value: GLfloat, invert: GLboolean) -> Result<()>;
3749
3750	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexImage3D.xhtml>
3751	fn glCompressedTexImage3D(&self, target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, imageSize: GLsizei, data: *const c_void) -> Result<()>;
3752
3753	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexImage2D.xhtml>
3754	fn glCompressedTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, border: GLint, imageSize: GLsizei, data: *const c_void) -> Result<()>;
3755
3756	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexImage1D.xhtml>
3757	fn glCompressedTexImage1D(&self, target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, border: GLint, imageSize: GLsizei, data: *const c_void) -> Result<()>;
3758
3759	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexSubImage3D.xhtml>
3760	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<()>;
3761
3762	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexSubImage2D.xhtml>
3763	fn glCompressedTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()>;
3764
3765	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexSubImage1D.xhtml>
3766	fn glCompressedTexSubImage1D(&self, target: GLenum, level: GLint, xoffset: GLint, width: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()>;
3767
3768	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetCompressedTexImage.xhtml>
3769	fn glGetCompressedTexImage(&self, target: GLenum, level: GLint, img: *mut c_void) -> Result<()>;
3770
3771	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClientActiveTexture.xhtml>
3772	fn glClientActiveTexture(&self, texture: GLenum) -> Result<()>;
3773
3774	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1d.xhtml>
3775	fn glMultiTexCoord1d(&self, target: GLenum, s: GLdouble) -> Result<()>;
3776
3777	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1dv.xhtml>
3778	fn glMultiTexCoord1dv(&self, target: GLenum, v: *const GLdouble) -> Result<()>;
3779
3780	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1f.xhtml>
3781	fn glMultiTexCoord1f(&self, target: GLenum, s: GLfloat) -> Result<()>;
3782
3783	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1fv.xhtml>
3784	fn glMultiTexCoord1fv(&self, target: GLenum, v: *const GLfloat) -> Result<()>;
3785
3786	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1i.xhtml>
3787	fn glMultiTexCoord1i(&self, target: GLenum, s: GLint) -> Result<()>;
3788
3789	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1iv.xhtml>
3790	fn glMultiTexCoord1iv(&self, target: GLenum, v: *const GLint) -> Result<()>;
3791
3792	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1s.xhtml>
3793	fn glMultiTexCoord1s(&self, target: GLenum, s: GLshort) -> Result<()>;
3794
3795	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1sv.xhtml>
3796	fn glMultiTexCoord1sv(&self, target: GLenum, v: *const GLshort) -> Result<()>;
3797
3798	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2d.xhtml>
3799	fn glMultiTexCoord2d(&self, target: GLenum, s: GLdouble, t: GLdouble) -> Result<()>;
3800
3801	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2dv.xhtml>
3802	fn glMultiTexCoord2dv(&self, target: GLenum, v: *const GLdouble) -> Result<()>;
3803
3804	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2f.xhtml>
3805	fn glMultiTexCoord2f(&self, target: GLenum, s: GLfloat, t: GLfloat) -> Result<()>;
3806
3807	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2fv.xhtml>
3808	fn glMultiTexCoord2fv(&self, target: GLenum, v: *const GLfloat) -> Result<()>;
3809
3810	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2i.xhtml>
3811	fn glMultiTexCoord2i(&self, target: GLenum, s: GLint, t: GLint) -> Result<()>;
3812
3813	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2iv.xhtml>
3814	fn glMultiTexCoord2iv(&self, target: GLenum, v: *const GLint) -> Result<()>;
3815
3816	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2s.xhtml>
3817	fn glMultiTexCoord2s(&self, target: GLenum, s: GLshort, t: GLshort) -> Result<()>;
3818
3819	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2sv.xhtml>
3820	fn glMultiTexCoord2sv(&self, target: GLenum, v: *const GLshort) -> Result<()>;
3821
3822	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3d.xhtml>
3823	fn glMultiTexCoord3d(&self, target: GLenum, s: GLdouble, t: GLdouble, r: GLdouble) -> Result<()>;
3824
3825	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3dv.xhtml>
3826	fn glMultiTexCoord3dv(&self, target: GLenum, v: *const GLdouble) -> Result<()>;
3827
3828	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3f.xhtml>
3829	fn glMultiTexCoord3f(&self, target: GLenum, s: GLfloat, t: GLfloat, r: GLfloat) -> Result<()>;
3830
3831	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3fv.xhtml>
3832	fn glMultiTexCoord3fv(&self, target: GLenum, v: *const GLfloat) -> Result<()>;
3833
3834	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3i.xhtml>
3835	fn glMultiTexCoord3i(&self, target: GLenum, s: GLint, t: GLint, r: GLint) -> Result<()>;
3836
3837	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3iv.xhtml>
3838	fn glMultiTexCoord3iv(&self, target: GLenum, v: *const GLint) -> Result<()>;
3839
3840	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3s.xhtml>
3841	fn glMultiTexCoord3s(&self, target: GLenum, s: GLshort, t: GLshort, r: GLshort) -> Result<()>;
3842
3843	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3sv.xhtml>
3844	fn glMultiTexCoord3sv(&self, target: GLenum, v: *const GLshort) -> Result<()>;
3845
3846	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4d.xhtml>
3847	fn glMultiTexCoord4d(&self, target: GLenum, s: GLdouble, t: GLdouble, r: GLdouble, q: GLdouble) -> Result<()>;
3848
3849	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4dv.xhtml>
3850	fn glMultiTexCoord4dv(&self, target: GLenum, v: *const GLdouble) -> Result<()>;
3851
3852	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4f.xhtml>
3853	fn glMultiTexCoord4f(&self, target: GLenum, s: GLfloat, t: GLfloat, r: GLfloat, q: GLfloat) -> Result<()>;
3854
3855	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4fv.xhtml>
3856	fn glMultiTexCoord4fv(&self, target: GLenum, v: *const GLfloat) -> Result<()>;
3857
3858	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4i.xhtml>
3859	fn glMultiTexCoord4i(&self, target: GLenum, s: GLint, t: GLint, r: GLint, q: GLint) -> Result<()>;
3860
3861	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4iv.xhtml>
3862	fn glMultiTexCoord4iv(&self, target: GLenum, v: *const GLint) -> Result<()>;
3863
3864	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4s.xhtml>
3865	fn glMultiTexCoord4s(&self, target: GLenum, s: GLshort, t: GLshort, r: GLshort, q: GLshort) -> Result<()>;
3866
3867	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4sv.xhtml>
3868	fn glMultiTexCoord4sv(&self, target: GLenum, v: *const GLshort) -> Result<()>;
3869
3870	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glLoadTransposeMatrixf.xhtml>
3871	fn glLoadTransposeMatrixf(&self, m: *const GLfloat) -> Result<()>;
3872
3873	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glLoadTransposeMatrixd.xhtml>
3874	fn glLoadTransposeMatrixd(&self, m: *const GLdouble) -> Result<()>;
3875
3876	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultTransposeMatrixf.xhtml>
3877	fn glMultTransposeMatrixf(&self, m: *const GLfloat) -> Result<()>;
3878
3879	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultTransposeMatrixd.xhtml>
3880	fn glMultTransposeMatrixd(&self, m: *const GLdouble) -> Result<()>;
3881}
3882/// Functions from OpenGL version 1.3
3883#[derive(Clone, Copy, PartialEq, Eq, Hash)]
3884pub struct Version13 {
3885	/// Is OpenGL version 1.3 available
3886	available: bool,
3887
3888	/// The function pointer to `glGetError()`
3889	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
3890	pub geterror: PFNGLGETERRORPROC,
3891
3892	/// The function pointer to `glActiveTexture()`
3893	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glActiveTexture.xhtml>
3894	pub activetexture: PFNGLACTIVETEXTUREPROC,
3895
3896	/// The function pointer to `glSampleCoverage()`
3897	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSampleCoverage.xhtml>
3898	pub samplecoverage: PFNGLSAMPLECOVERAGEPROC,
3899
3900	/// The function pointer to `glCompressedTexImage3D()`
3901	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexImage3D.xhtml>
3902	pub compressedteximage3d: PFNGLCOMPRESSEDTEXIMAGE3DPROC,
3903
3904	/// The function pointer to `glCompressedTexImage2D()`
3905	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexImage2D.xhtml>
3906	pub compressedteximage2d: PFNGLCOMPRESSEDTEXIMAGE2DPROC,
3907
3908	/// The function pointer to `glCompressedTexImage1D()`
3909	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexImage1D.xhtml>
3910	pub compressedteximage1d: PFNGLCOMPRESSEDTEXIMAGE1DPROC,
3911
3912	/// The function pointer to `glCompressedTexSubImage3D()`
3913	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexSubImage3D.xhtml>
3914	pub compressedtexsubimage3d: PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC,
3915
3916	/// The function pointer to `glCompressedTexSubImage2D()`
3917	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexSubImage2D.xhtml>
3918	pub compressedtexsubimage2d: PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC,
3919
3920	/// The function pointer to `glCompressedTexSubImage1D()`
3921	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexSubImage1D.xhtml>
3922	pub compressedtexsubimage1d: PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC,
3923
3924	/// The function pointer to `glGetCompressedTexImage()`
3925	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetCompressedTexImage.xhtml>
3926	pub getcompressedteximage: PFNGLGETCOMPRESSEDTEXIMAGEPROC,
3927
3928	/// The function pointer to `glClientActiveTexture()`
3929	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClientActiveTexture.xhtml>
3930	pub clientactivetexture: PFNGLCLIENTACTIVETEXTUREPROC,
3931
3932	/// The function pointer to `glMultiTexCoord1d()`
3933	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1d.xhtml>
3934	pub multitexcoord1d: PFNGLMULTITEXCOORD1DPROC,
3935
3936	/// The function pointer to `glMultiTexCoord1dv()`
3937	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1dv.xhtml>
3938	pub multitexcoord1dv: PFNGLMULTITEXCOORD1DVPROC,
3939
3940	/// The function pointer to `glMultiTexCoord1f()`
3941	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1f.xhtml>
3942	pub multitexcoord1f: PFNGLMULTITEXCOORD1FPROC,
3943
3944	/// The function pointer to `glMultiTexCoord1fv()`
3945	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1fv.xhtml>
3946	pub multitexcoord1fv: PFNGLMULTITEXCOORD1FVPROC,
3947
3948	/// The function pointer to `glMultiTexCoord1i()`
3949	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1i.xhtml>
3950	pub multitexcoord1i: PFNGLMULTITEXCOORD1IPROC,
3951
3952	/// The function pointer to `glMultiTexCoord1iv()`
3953	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1iv.xhtml>
3954	pub multitexcoord1iv: PFNGLMULTITEXCOORD1IVPROC,
3955
3956	/// The function pointer to `glMultiTexCoord1s()`
3957	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1s.xhtml>
3958	pub multitexcoord1s: PFNGLMULTITEXCOORD1SPROC,
3959
3960	/// The function pointer to `glMultiTexCoord1sv()`
3961	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1sv.xhtml>
3962	pub multitexcoord1sv: PFNGLMULTITEXCOORD1SVPROC,
3963
3964	/// The function pointer to `glMultiTexCoord2d()`
3965	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2d.xhtml>
3966	pub multitexcoord2d: PFNGLMULTITEXCOORD2DPROC,
3967
3968	/// The function pointer to `glMultiTexCoord2dv()`
3969	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2dv.xhtml>
3970	pub multitexcoord2dv: PFNGLMULTITEXCOORD2DVPROC,
3971
3972	/// The function pointer to `glMultiTexCoord2f()`
3973	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2f.xhtml>
3974	pub multitexcoord2f: PFNGLMULTITEXCOORD2FPROC,
3975
3976	/// The function pointer to `glMultiTexCoord2fv()`
3977	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2fv.xhtml>
3978	pub multitexcoord2fv: PFNGLMULTITEXCOORD2FVPROC,
3979
3980	/// The function pointer to `glMultiTexCoord2i()`
3981	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2i.xhtml>
3982	pub multitexcoord2i: PFNGLMULTITEXCOORD2IPROC,
3983
3984	/// The function pointer to `glMultiTexCoord2iv()`
3985	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2iv.xhtml>
3986	pub multitexcoord2iv: PFNGLMULTITEXCOORD2IVPROC,
3987
3988	/// The function pointer to `glMultiTexCoord2s()`
3989	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2s.xhtml>
3990	pub multitexcoord2s: PFNGLMULTITEXCOORD2SPROC,
3991
3992	/// The function pointer to `glMultiTexCoord2sv()`
3993	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2sv.xhtml>
3994	pub multitexcoord2sv: PFNGLMULTITEXCOORD2SVPROC,
3995
3996	/// The function pointer to `glMultiTexCoord3d()`
3997	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3d.xhtml>
3998	pub multitexcoord3d: PFNGLMULTITEXCOORD3DPROC,
3999
4000	/// The function pointer to `glMultiTexCoord3dv()`
4001	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3dv.xhtml>
4002	pub multitexcoord3dv: PFNGLMULTITEXCOORD3DVPROC,
4003
4004	/// The function pointer to `glMultiTexCoord3f()`
4005	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3f.xhtml>
4006	pub multitexcoord3f: PFNGLMULTITEXCOORD3FPROC,
4007
4008	/// The function pointer to `glMultiTexCoord3fv()`
4009	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3fv.xhtml>
4010	pub multitexcoord3fv: PFNGLMULTITEXCOORD3FVPROC,
4011
4012	/// The function pointer to `glMultiTexCoord3i()`
4013	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3i.xhtml>
4014	pub multitexcoord3i: PFNGLMULTITEXCOORD3IPROC,
4015
4016	/// The function pointer to `glMultiTexCoord3iv()`
4017	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3iv.xhtml>
4018	pub multitexcoord3iv: PFNGLMULTITEXCOORD3IVPROC,
4019
4020	/// The function pointer to `glMultiTexCoord3s()`
4021	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3s.xhtml>
4022	pub multitexcoord3s: PFNGLMULTITEXCOORD3SPROC,
4023
4024	/// The function pointer to `glMultiTexCoord3sv()`
4025	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3sv.xhtml>
4026	pub multitexcoord3sv: PFNGLMULTITEXCOORD3SVPROC,
4027
4028	/// The function pointer to `glMultiTexCoord4d()`
4029	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4d.xhtml>
4030	pub multitexcoord4d: PFNGLMULTITEXCOORD4DPROC,
4031
4032	/// The function pointer to `glMultiTexCoord4dv()`
4033	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4dv.xhtml>
4034	pub multitexcoord4dv: PFNGLMULTITEXCOORD4DVPROC,
4035
4036	/// The function pointer to `glMultiTexCoord4f()`
4037	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4f.xhtml>
4038	pub multitexcoord4f: PFNGLMULTITEXCOORD4FPROC,
4039
4040	/// The function pointer to `glMultiTexCoord4fv()`
4041	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4fv.xhtml>
4042	pub multitexcoord4fv: PFNGLMULTITEXCOORD4FVPROC,
4043
4044	/// The function pointer to `glMultiTexCoord4i()`
4045	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4i.xhtml>
4046	pub multitexcoord4i: PFNGLMULTITEXCOORD4IPROC,
4047
4048	/// The function pointer to `glMultiTexCoord4iv()`
4049	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4iv.xhtml>
4050	pub multitexcoord4iv: PFNGLMULTITEXCOORD4IVPROC,
4051
4052	/// The function pointer to `glMultiTexCoord4s()`
4053	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4s.xhtml>
4054	pub multitexcoord4s: PFNGLMULTITEXCOORD4SPROC,
4055
4056	/// The function pointer to `glMultiTexCoord4sv()`
4057	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4sv.xhtml>
4058	pub multitexcoord4sv: PFNGLMULTITEXCOORD4SVPROC,
4059
4060	/// The function pointer to `glLoadTransposeMatrixf()`
4061	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glLoadTransposeMatrixf.xhtml>
4062	pub loadtransposematrixf: PFNGLLOADTRANSPOSEMATRIXFPROC,
4063
4064	/// The function pointer to `glLoadTransposeMatrixd()`
4065	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glLoadTransposeMatrixd.xhtml>
4066	pub loadtransposematrixd: PFNGLLOADTRANSPOSEMATRIXDPROC,
4067
4068	/// The function pointer to `glMultTransposeMatrixf()`
4069	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultTransposeMatrixf.xhtml>
4070	pub multtransposematrixf: PFNGLMULTTRANSPOSEMATRIXFPROC,
4071
4072	/// The function pointer to `glMultTransposeMatrixd()`
4073	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultTransposeMatrixd.xhtml>
4074	pub multtransposematrixd: PFNGLMULTTRANSPOSEMATRIXDPROC,
4075}
4076
4077impl GL_1_3 for Version13 {
4078	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
4079	#[inline(always)]
4080	fn glGetError(&self) -> GLenum {
4081		(self.geterror)()
4082	}
4083	#[inline(always)]
4084	fn glActiveTexture(&self, texture: GLenum) -> Result<()> {
4085		let ret = process_catch("glActiveTexture", catch_unwind(||(self.activetexture)(texture)));
4086		#[cfg(feature = "diagnose")]
4087		if let Ok(ret) = ret {
4088			return to_result("glActiveTexture", ret, self.glGetError());
4089		} else {
4090			return ret
4091		}
4092		#[cfg(not(feature = "diagnose"))]
4093		return ret;
4094	}
4095	#[inline(always)]
4096	fn glSampleCoverage(&self, value: GLfloat, invert: GLboolean) -> Result<()> {
4097		let ret = process_catch("glSampleCoverage", catch_unwind(||(self.samplecoverage)(value, invert)));
4098		#[cfg(feature = "diagnose")]
4099		if let Ok(ret) = ret {
4100			return to_result("glSampleCoverage", ret, self.glGetError());
4101		} else {
4102			return ret
4103		}
4104		#[cfg(not(feature = "diagnose"))]
4105		return ret;
4106	}
4107	#[inline(always)]
4108	fn glCompressedTexImage3D(&self, target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, imageSize: GLsizei, data: *const c_void) -> Result<()> {
4109		let ret = process_catch("glCompressedTexImage3D", catch_unwind(||(self.compressedteximage3d)(target, level, internalformat, width, height, depth, border, imageSize, data)));
4110		#[cfg(feature = "diagnose")]
4111		if let Ok(ret) = ret {
4112			return to_result("glCompressedTexImage3D", ret, self.glGetError());
4113		} else {
4114			return ret
4115		}
4116		#[cfg(not(feature = "diagnose"))]
4117		return ret;
4118	}
4119	#[inline(always)]
4120	fn glCompressedTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, border: GLint, imageSize: GLsizei, data: *const c_void) -> Result<()> {
4121		let ret = process_catch("glCompressedTexImage2D", catch_unwind(||(self.compressedteximage2d)(target, level, internalformat, width, height, border, imageSize, data)));
4122		#[cfg(feature = "diagnose")]
4123		if let Ok(ret) = ret {
4124			return to_result("glCompressedTexImage2D", ret, self.glGetError());
4125		} else {
4126			return ret
4127		}
4128		#[cfg(not(feature = "diagnose"))]
4129		return ret;
4130	}
4131	#[inline(always)]
4132	fn glCompressedTexImage1D(&self, target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, border: GLint, imageSize: GLsizei, data: *const c_void) -> Result<()> {
4133		let ret = process_catch("glCompressedTexImage1D", catch_unwind(||(self.compressedteximage1d)(target, level, internalformat, width, border, imageSize, data)));
4134		#[cfg(feature = "diagnose")]
4135		if let Ok(ret) = ret {
4136			return to_result("glCompressedTexImage1D", ret, self.glGetError());
4137		} else {
4138			return ret
4139		}
4140		#[cfg(not(feature = "diagnose"))]
4141		return ret;
4142	}
4143	#[inline(always)]
4144	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<()> {
4145		let ret = process_catch("glCompressedTexSubImage3D", catch_unwind(||(self.compressedtexsubimage3d)(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data)));
4146		#[cfg(feature = "diagnose")]
4147		if let Ok(ret) = ret {
4148			return to_result("glCompressedTexSubImage3D", ret, self.glGetError());
4149		} else {
4150			return ret
4151		}
4152		#[cfg(not(feature = "diagnose"))]
4153		return ret;
4154	}
4155	#[inline(always)]
4156	fn glCompressedTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()> {
4157		let ret = process_catch("glCompressedTexSubImage2D", catch_unwind(||(self.compressedtexsubimage2d)(target, level, xoffset, yoffset, width, height, format, imageSize, data)));
4158		#[cfg(feature = "diagnose")]
4159		if let Ok(ret) = ret {
4160			return to_result("glCompressedTexSubImage2D", ret, self.glGetError());
4161		} else {
4162			return ret
4163		}
4164		#[cfg(not(feature = "diagnose"))]
4165		return ret;
4166	}
4167	#[inline(always)]
4168	fn glCompressedTexSubImage1D(&self, target: GLenum, level: GLint, xoffset: GLint, width: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()> {
4169		let ret = process_catch("glCompressedTexSubImage1D", catch_unwind(||(self.compressedtexsubimage1d)(target, level, xoffset, width, format, imageSize, data)));
4170		#[cfg(feature = "diagnose")]
4171		if let Ok(ret) = ret {
4172			return to_result("glCompressedTexSubImage1D", ret, self.glGetError());
4173		} else {
4174			return ret
4175		}
4176		#[cfg(not(feature = "diagnose"))]
4177		return ret;
4178	}
4179	#[inline(always)]
4180	fn glGetCompressedTexImage(&self, target: GLenum, level: GLint, img: *mut c_void) -> Result<()> {
4181		let ret = process_catch("glGetCompressedTexImage", catch_unwind(||(self.getcompressedteximage)(target, level, img)));
4182		#[cfg(feature = "diagnose")]
4183		if let Ok(ret) = ret {
4184			return to_result("glGetCompressedTexImage", ret, self.glGetError());
4185		} else {
4186			return ret
4187		}
4188		#[cfg(not(feature = "diagnose"))]
4189		return ret;
4190	}
4191	#[inline(always)]
4192	fn glClientActiveTexture(&self, texture: GLenum) -> Result<()> {
4193		let ret = process_catch("glClientActiveTexture", catch_unwind(||(self.clientactivetexture)(texture)));
4194		#[cfg(feature = "diagnose")]
4195		if let Ok(ret) = ret {
4196			return to_result("glClientActiveTexture", ret, self.glGetError());
4197		} else {
4198			return ret
4199		}
4200		#[cfg(not(feature = "diagnose"))]
4201		return ret;
4202	}
4203	#[inline(always)]
4204	fn glMultiTexCoord1d(&self, target: GLenum, s: GLdouble) -> Result<()> {
4205		let ret = process_catch("glMultiTexCoord1d", catch_unwind(||(self.multitexcoord1d)(target, s)));
4206		#[cfg(feature = "diagnose")]
4207		if let Ok(ret) = ret {
4208			return to_result("glMultiTexCoord1d", ret, self.glGetError());
4209		} else {
4210			return ret
4211		}
4212		#[cfg(not(feature = "diagnose"))]
4213		return ret;
4214	}
4215	#[inline(always)]
4216	fn glMultiTexCoord1dv(&self, target: GLenum, v: *const GLdouble) -> Result<()> {
4217		let ret = process_catch("glMultiTexCoord1dv", catch_unwind(||(self.multitexcoord1dv)(target, v)));
4218		#[cfg(feature = "diagnose")]
4219		if let Ok(ret) = ret {
4220			return to_result("glMultiTexCoord1dv", ret, self.glGetError());
4221		} else {
4222			return ret
4223		}
4224		#[cfg(not(feature = "diagnose"))]
4225		return ret;
4226	}
4227	#[inline(always)]
4228	fn glMultiTexCoord1f(&self, target: GLenum, s: GLfloat) -> Result<()> {
4229		let ret = process_catch("glMultiTexCoord1f", catch_unwind(||(self.multitexcoord1f)(target, s)));
4230		#[cfg(feature = "diagnose")]
4231		if let Ok(ret) = ret {
4232			return to_result("glMultiTexCoord1f", ret, self.glGetError());
4233		} else {
4234			return ret
4235		}
4236		#[cfg(not(feature = "diagnose"))]
4237		return ret;
4238	}
4239	#[inline(always)]
4240	fn glMultiTexCoord1fv(&self, target: GLenum, v: *const GLfloat) -> Result<()> {
4241		let ret = process_catch("glMultiTexCoord1fv", catch_unwind(||(self.multitexcoord1fv)(target, v)));
4242		#[cfg(feature = "diagnose")]
4243		if let Ok(ret) = ret {
4244			return to_result("glMultiTexCoord1fv", ret, self.glGetError());
4245		} else {
4246			return ret
4247		}
4248		#[cfg(not(feature = "diagnose"))]
4249		return ret;
4250	}
4251	#[inline(always)]
4252	fn glMultiTexCoord1i(&self, target: GLenum, s: GLint) -> Result<()> {
4253		let ret = process_catch("glMultiTexCoord1i", catch_unwind(||(self.multitexcoord1i)(target, s)));
4254		#[cfg(feature = "diagnose")]
4255		if let Ok(ret) = ret {
4256			return to_result("glMultiTexCoord1i", ret, self.glGetError());
4257		} else {
4258			return ret
4259		}
4260		#[cfg(not(feature = "diagnose"))]
4261		return ret;
4262	}
4263	#[inline(always)]
4264	fn glMultiTexCoord1iv(&self, target: GLenum, v: *const GLint) -> Result<()> {
4265		let ret = process_catch("glMultiTexCoord1iv", catch_unwind(||(self.multitexcoord1iv)(target, v)));
4266		#[cfg(feature = "diagnose")]
4267		if let Ok(ret) = ret {
4268			return to_result("glMultiTexCoord1iv", ret, self.glGetError());
4269		} else {
4270			return ret
4271		}
4272		#[cfg(not(feature = "diagnose"))]
4273		return ret;
4274	}
4275	#[inline(always)]
4276	fn glMultiTexCoord1s(&self, target: GLenum, s: GLshort) -> Result<()> {
4277		let ret = process_catch("glMultiTexCoord1s", catch_unwind(||(self.multitexcoord1s)(target, s)));
4278		#[cfg(feature = "diagnose")]
4279		if let Ok(ret) = ret {
4280			return to_result("glMultiTexCoord1s", ret, self.glGetError());
4281		} else {
4282			return ret
4283		}
4284		#[cfg(not(feature = "diagnose"))]
4285		return ret;
4286	}
4287	#[inline(always)]
4288	fn glMultiTexCoord1sv(&self, target: GLenum, v: *const GLshort) -> Result<()> {
4289		let ret = process_catch("glMultiTexCoord1sv", catch_unwind(||(self.multitexcoord1sv)(target, v)));
4290		#[cfg(feature = "diagnose")]
4291		if let Ok(ret) = ret {
4292			return to_result("glMultiTexCoord1sv", ret, self.glGetError());
4293		} else {
4294			return ret
4295		}
4296		#[cfg(not(feature = "diagnose"))]
4297		return ret;
4298	}
4299	#[inline(always)]
4300	fn glMultiTexCoord2d(&self, target: GLenum, s: GLdouble, t: GLdouble) -> Result<()> {
4301		let ret = process_catch("glMultiTexCoord2d", catch_unwind(||(self.multitexcoord2d)(target, s, t)));
4302		#[cfg(feature = "diagnose")]
4303		if let Ok(ret) = ret {
4304			return to_result("glMultiTexCoord2d", ret, self.glGetError());
4305		} else {
4306			return ret
4307		}
4308		#[cfg(not(feature = "diagnose"))]
4309		return ret;
4310	}
4311	#[inline(always)]
4312	fn glMultiTexCoord2dv(&self, target: GLenum, v: *const GLdouble) -> Result<()> {
4313		let ret = process_catch("glMultiTexCoord2dv", catch_unwind(||(self.multitexcoord2dv)(target, v)));
4314		#[cfg(feature = "diagnose")]
4315		if let Ok(ret) = ret {
4316			return to_result("glMultiTexCoord2dv", ret, self.glGetError());
4317		} else {
4318			return ret
4319		}
4320		#[cfg(not(feature = "diagnose"))]
4321		return ret;
4322	}
4323	#[inline(always)]
4324	fn glMultiTexCoord2f(&self, target: GLenum, s: GLfloat, t: GLfloat) -> Result<()> {
4325		let ret = process_catch("glMultiTexCoord2f", catch_unwind(||(self.multitexcoord2f)(target, s, t)));
4326		#[cfg(feature = "diagnose")]
4327		if let Ok(ret) = ret {
4328			return to_result("glMultiTexCoord2f", ret, self.glGetError());
4329		} else {
4330			return ret
4331		}
4332		#[cfg(not(feature = "diagnose"))]
4333		return ret;
4334	}
4335	#[inline(always)]
4336	fn glMultiTexCoord2fv(&self, target: GLenum, v: *const GLfloat) -> Result<()> {
4337		let ret = process_catch("glMultiTexCoord2fv", catch_unwind(||(self.multitexcoord2fv)(target, v)));
4338		#[cfg(feature = "diagnose")]
4339		if let Ok(ret) = ret {
4340			return to_result("glMultiTexCoord2fv", ret, self.glGetError());
4341		} else {
4342			return ret
4343		}
4344		#[cfg(not(feature = "diagnose"))]
4345		return ret;
4346	}
4347	#[inline(always)]
4348	fn glMultiTexCoord2i(&self, target: GLenum, s: GLint, t: GLint) -> Result<()> {
4349		let ret = process_catch("glMultiTexCoord2i", catch_unwind(||(self.multitexcoord2i)(target, s, t)));
4350		#[cfg(feature = "diagnose")]
4351		if let Ok(ret) = ret {
4352			return to_result("glMultiTexCoord2i", ret, self.glGetError());
4353		} else {
4354			return ret
4355		}
4356		#[cfg(not(feature = "diagnose"))]
4357		return ret;
4358	}
4359	#[inline(always)]
4360	fn glMultiTexCoord2iv(&self, target: GLenum, v: *const GLint) -> Result<()> {
4361		let ret = process_catch("glMultiTexCoord2iv", catch_unwind(||(self.multitexcoord2iv)(target, v)));
4362		#[cfg(feature = "diagnose")]
4363		if let Ok(ret) = ret {
4364			return to_result("glMultiTexCoord2iv", ret, self.glGetError());
4365		} else {
4366			return ret
4367		}
4368		#[cfg(not(feature = "diagnose"))]
4369		return ret;
4370	}
4371	#[inline(always)]
4372	fn glMultiTexCoord2s(&self, target: GLenum, s: GLshort, t: GLshort) -> Result<()> {
4373		let ret = process_catch("glMultiTexCoord2s", catch_unwind(||(self.multitexcoord2s)(target, s, t)));
4374		#[cfg(feature = "diagnose")]
4375		if let Ok(ret) = ret {
4376			return to_result("glMultiTexCoord2s", ret, self.glGetError());
4377		} else {
4378			return ret
4379		}
4380		#[cfg(not(feature = "diagnose"))]
4381		return ret;
4382	}
4383	#[inline(always)]
4384	fn glMultiTexCoord2sv(&self, target: GLenum, v: *const GLshort) -> Result<()> {
4385		let ret = process_catch("glMultiTexCoord2sv", catch_unwind(||(self.multitexcoord2sv)(target, v)));
4386		#[cfg(feature = "diagnose")]
4387		if let Ok(ret) = ret {
4388			return to_result("glMultiTexCoord2sv", ret, self.glGetError());
4389		} else {
4390			return ret
4391		}
4392		#[cfg(not(feature = "diagnose"))]
4393		return ret;
4394	}
4395	#[inline(always)]
4396	fn glMultiTexCoord3d(&self, target: GLenum, s: GLdouble, t: GLdouble, r: GLdouble) -> Result<()> {
4397		let ret = process_catch("glMultiTexCoord3d", catch_unwind(||(self.multitexcoord3d)(target, s, t, r)));
4398		#[cfg(feature = "diagnose")]
4399		if let Ok(ret) = ret {
4400			return to_result("glMultiTexCoord3d", ret, self.glGetError());
4401		} else {
4402			return ret
4403		}
4404		#[cfg(not(feature = "diagnose"))]
4405		return ret;
4406	}
4407	#[inline(always)]
4408	fn glMultiTexCoord3dv(&self, target: GLenum, v: *const GLdouble) -> Result<()> {
4409		let ret = process_catch("glMultiTexCoord3dv", catch_unwind(||(self.multitexcoord3dv)(target, v)));
4410		#[cfg(feature = "diagnose")]
4411		if let Ok(ret) = ret {
4412			return to_result("glMultiTexCoord3dv", ret, self.glGetError());
4413		} else {
4414			return ret
4415		}
4416		#[cfg(not(feature = "diagnose"))]
4417		return ret;
4418	}
4419	#[inline(always)]
4420	fn glMultiTexCoord3f(&self, target: GLenum, s: GLfloat, t: GLfloat, r: GLfloat) -> Result<()> {
4421		let ret = process_catch("glMultiTexCoord3f", catch_unwind(||(self.multitexcoord3f)(target, s, t, r)));
4422		#[cfg(feature = "diagnose")]
4423		if let Ok(ret) = ret {
4424			return to_result("glMultiTexCoord3f", ret, self.glGetError());
4425		} else {
4426			return ret
4427		}
4428		#[cfg(not(feature = "diagnose"))]
4429		return ret;
4430	}
4431	#[inline(always)]
4432	fn glMultiTexCoord3fv(&self, target: GLenum, v: *const GLfloat) -> Result<()> {
4433		let ret = process_catch("glMultiTexCoord3fv", catch_unwind(||(self.multitexcoord3fv)(target, v)));
4434		#[cfg(feature = "diagnose")]
4435		if let Ok(ret) = ret {
4436			return to_result("glMultiTexCoord3fv", ret, self.glGetError());
4437		} else {
4438			return ret
4439		}
4440		#[cfg(not(feature = "diagnose"))]
4441		return ret;
4442	}
4443	#[inline(always)]
4444	fn glMultiTexCoord3i(&self, target: GLenum, s: GLint, t: GLint, r: GLint) -> Result<()> {
4445		let ret = process_catch("glMultiTexCoord3i", catch_unwind(||(self.multitexcoord3i)(target, s, t, r)));
4446		#[cfg(feature = "diagnose")]
4447		if let Ok(ret) = ret {
4448			return to_result("glMultiTexCoord3i", ret, self.glGetError());
4449		} else {
4450			return ret
4451		}
4452		#[cfg(not(feature = "diagnose"))]
4453		return ret;
4454	}
4455	#[inline(always)]
4456	fn glMultiTexCoord3iv(&self, target: GLenum, v: *const GLint) -> Result<()> {
4457		let ret = process_catch("glMultiTexCoord3iv", catch_unwind(||(self.multitexcoord3iv)(target, v)));
4458		#[cfg(feature = "diagnose")]
4459		if let Ok(ret) = ret {
4460			return to_result("glMultiTexCoord3iv", ret, self.glGetError());
4461		} else {
4462			return ret
4463		}
4464		#[cfg(not(feature = "diagnose"))]
4465		return ret;
4466	}
4467	#[inline(always)]
4468	fn glMultiTexCoord3s(&self, target: GLenum, s: GLshort, t: GLshort, r: GLshort) -> Result<()> {
4469		let ret = process_catch("glMultiTexCoord3s", catch_unwind(||(self.multitexcoord3s)(target, s, t, r)));
4470		#[cfg(feature = "diagnose")]
4471		if let Ok(ret) = ret {
4472			return to_result("glMultiTexCoord3s", ret, self.glGetError());
4473		} else {
4474			return ret
4475		}
4476		#[cfg(not(feature = "diagnose"))]
4477		return ret;
4478	}
4479	#[inline(always)]
4480	fn glMultiTexCoord3sv(&self, target: GLenum, v: *const GLshort) -> Result<()> {
4481		let ret = process_catch("glMultiTexCoord3sv", catch_unwind(||(self.multitexcoord3sv)(target, v)));
4482		#[cfg(feature = "diagnose")]
4483		if let Ok(ret) = ret {
4484			return to_result("glMultiTexCoord3sv", ret, self.glGetError());
4485		} else {
4486			return ret
4487		}
4488		#[cfg(not(feature = "diagnose"))]
4489		return ret;
4490	}
4491	#[inline(always)]
4492	fn glMultiTexCoord4d(&self, target: GLenum, s: GLdouble, t: GLdouble, r: GLdouble, q: GLdouble) -> Result<()> {
4493		let ret = process_catch("glMultiTexCoord4d", catch_unwind(||(self.multitexcoord4d)(target, s, t, r, q)));
4494		#[cfg(feature = "diagnose")]
4495		if let Ok(ret) = ret {
4496			return to_result("glMultiTexCoord4d", ret, self.glGetError());
4497		} else {
4498			return ret
4499		}
4500		#[cfg(not(feature = "diagnose"))]
4501		return ret;
4502	}
4503	#[inline(always)]
4504	fn glMultiTexCoord4dv(&self, target: GLenum, v: *const GLdouble) -> Result<()> {
4505		let ret = process_catch("glMultiTexCoord4dv", catch_unwind(||(self.multitexcoord4dv)(target, v)));
4506		#[cfg(feature = "diagnose")]
4507		if let Ok(ret) = ret {
4508			return to_result("glMultiTexCoord4dv", ret, self.glGetError());
4509		} else {
4510			return ret
4511		}
4512		#[cfg(not(feature = "diagnose"))]
4513		return ret;
4514	}
4515	#[inline(always)]
4516	fn glMultiTexCoord4f(&self, target: GLenum, s: GLfloat, t: GLfloat, r: GLfloat, q: GLfloat) -> Result<()> {
4517		let ret = process_catch("glMultiTexCoord4f", catch_unwind(||(self.multitexcoord4f)(target, s, t, r, q)));
4518		#[cfg(feature = "diagnose")]
4519		if let Ok(ret) = ret {
4520			return to_result("glMultiTexCoord4f", ret, self.glGetError());
4521		} else {
4522			return ret
4523		}
4524		#[cfg(not(feature = "diagnose"))]
4525		return ret;
4526	}
4527	#[inline(always)]
4528	fn glMultiTexCoord4fv(&self, target: GLenum, v: *const GLfloat) -> Result<()> {
4529		let ret = process_catch("glMultiTexCoord4fv", catch_unwind(||(self.multitexcoord4fv)(target, v)));
4530		#[cfg(feature = "diagnose")]
4531		if let Ok(ret) = ret {
4532			return to_result("glMultiTexCoord4fv", ret, self.glGetError());
4533		} else {
4534			return ret
4535		}
4536		#[cfg(not(feature = "diagnose"))]
4537		return ret;
4538	}
4539	#[inline(always)]
4540	fn glMultiTexCoord4i(&self, target: GLenum, s: GLint, t: GLint, r: GLint, q: GLint) -> Result<()> {
4541		let ret = process_catch("glMultiTexCoord4i", catch_unwind(||(self.multitexcoord4i)(target, s, t, r, q)));
4542		#[cfg(feature = "diagnose")]
4543		if let Ok(ret) = ret {
4544			return to_result("glMultiTexCoord4i", ret, self.glGetError());
4545		} else {
4546			return ret
4547		}
4548		#[cfg(not(feature = "diagnose"))]
4549		return ret;
4550	}
4551	#[inline(always)]
4552	fn glMultiTexCoord4iv(&self, target: GLenum, v: *const GLint) -> Result<()> {
4553		let ret = process_catch("glMultiTexCoord4iv", catch_unwind(||(self.multitexcoord4iv)(target, v)));
4554		#[cfg(feature = "diagnose")]
4555		if let Ok(ret) = ret {
4556			return to_result("glMultiTexCoord4iv", ret, self.glGetError());
4557		} else {
4558			return ret
4559		}
4560		#[cfg(not(feature = "diagnose"))]
4561		return ret;
4562	}
4563	#[inline(always)]
4564	fn glMultiTexCoord4s(&self, target: GLenum, s: GLshort, t: GLshort, r: GLshort, q: GLshort) -> Result<()> {
4565		let ret = process_catch("glMultiTexCoord4s", catch_unwind(||(self.multitexcoord4s)(target, s, t, r, q)));
4566		#[cfg(feature = "diagnose")]
4567		if let Ok(ret) = ret {
4568			return to_result("glMultiTexCoord4s", ret, self.glGetError());
4569		} else {
4570			return ret
4571		}
4572		#[cfg(not(feature = "diagnose"))]
4573		return ret;
4574	}
4575	#[inline(always)]
4576	fn glMultiTexCoord4sv(&self, target: GLenum, v: *const GLshort) -> Result<()> {
4577		let ret = process_catch("glMultiTexCoord4sv", catch_unwind(||(self.multitexcoord4sv)(target, v)));
4578		#[cfg(feature = "diagnose")]
4579		if let Ok(ret) = ret {
4580			return to_result("glMultiTexCoord4sv", ret, self.glGetError());
4581		} else {
4582			return ret
4583		}
4584		#[cfg(not(feature = "diagnose"))]
4585		return ret;
4586	}
4587	#[inline(always)]
4588	fn glLoadTransposeMatrixf(&self, m: *const GLfloat) -> Result<()> {
4589		let ret = process_catch("glLoadTransposeMatrixf", catch_unwind(||(self.loadtransposematrixf)(m)));
4590		#[cfg(feature = "diagnose")]
4591		if let Ok(ret) = ret {
4592			return to_result("glLoadTransposeMatrixf", ret, self.glGetError());
4593		} else {
4594			return ret
4595		}
4596		#[cfg(not(feature = "diagnose"))]
4597		return ret;
4598	}
4599	#[inline(always)]
4600	fn glLoadTransposeMatrixd(&self, m: *const GLdouble) -> Result<()> {
4601		let ret = process_catch("glLoadTransposeMatrixd", catch_unwind(||(self.loadtransposematrixd)(m)));
4602		#[cfg(feature = "diagnose")]
4603		if let Ok(ret) = ret {
4604			return to_result("glLoadTransposeMatrixd", ret, self.glGetError());
4605		} else {
4606			return ret
4607		}
4608		#[cfg(not(feature = "diagnose"))]
4609		return ret;
4610	}
4611	#[inline(always)]
4612	fn glMultTransposeMatrixf(&self, m: *const GLfloat) -> Result<()> {
4613		let ret = process_catch("glMultTransposeMatrixf", catch_unwind(||(self.multtransposematrixf)(m)));
4614		#[cfg(feature = "diagnose")]
4615		if let Ok(ret) = ret {
4616			return to_result("glMultTransposeMatrixf", ret, self.glGetError());
4617		} else {
4618			return ret
4619		}
4620		#[cfg(not(feature = "diagnose"))]
4621		return ret;
4622	}
4623	#[inline(always)]
4624	fn glMultTransposeMatrixd(&self, m: *const GLdouble) -> Result<()> {
4625		let ret = process_catch("glMultTransposeMatrixd", catch_unwind(||(self.multtransposematrixd)(m)));
4626		#[cfg(feature = "diagnose")]
4627		if let Ok(ret) = ret {
4628			return to_result("glMultTransposeMatrixd", ret, self.glGetError());
4629		} else {
4630			return ret
4631		}
4632		#[cfg(not(feature = "diagnose"))]
4633		return ret;
4634	}
4635}
4636
4637impl Version13 {
4638	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
4639		let (_spec, major, minor, release) = base.get_version();
4640		if (major, minor, release) < (1, 3, 0) {
4641			return Self::default();
4642		}
4643		Self {
4644			available: true,
4645			geterror: {let proc = get_proc_address("glGetError"); if proc == null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
4646			activetexture: {let proc = get_proc_address("glActiveTexture"); if proc == null() {dummy_pfnglactivetextureproc} else {unsafe{transmute(proc)}}},
4647			samplecoverage: {let proc = get_proc_address("glSampleCoverage"); if proc == null() {dummy_pfnglsamplecoverageproc} else {unsafe{transmute(proc)}}},
4648			compressedteximage3d: {let proc = get_proc_address("glCompressedTexImage3D"); if proc == null() {dummy_pfnglcompressedteximage3dproc} else {unsafe{transmute(proc)}}},
4649			compressedteximage2d: {let proc = get_proc_address("glCompressedTexImage2D"); if proc == null() {dummy_pfnglcompressedteximage2dproc} else {unsafe{transmute(proc)}}},
4650			compressedteximage1d: {let proc = get_proc_address("glCompressedTexImage1D"); if proc == null() {dummy_pfnglcompressedteximage1dproc} else {unsafe{transmute(proc)}}},
4651			compressedtexsubimage3d: {let proc = get_proc_address("glCompressedTexSubImage3D"); if proc == null() {dummy_pfnglcompressedtexsubimage3dproc} else {unsafe{transmute(proc)}}},
4652			compressedtexsubimage2d: {let proc = get_proc_address("glCompressedTexSubImage2D"); if proc == null() {dummy_pfnglcompressedtexsubimage2dproc} else {unsafe{transmute(proc)}}},
4653			compressedtexsubimage1d: {let proc = get_proc_address("glCompressedTexSubImage1D"); if proc == null() {dummy_pfnglcompressedtexsubimage1dproc} else {unsafe{transmute(proc)}}},
4654			getcompressedteximage: {let proc = get_proc_address("glGetCompressedTexImage"); if proc == null() {dummy_pfnglgetcompressedteximageproc} else {unsafe{transmute(proc)}}},
4655			clientactivetexture: {let proc = get_proc_address("glClientActiveTexture"); if proc == null() {dummy_pfnglclientactivetextureproc} else {unsafe{transmute(proc)}}},
4656			multitexcoord1d: {let proc = get_proc_address("glMultiTexCoord1d"); if proc == null() {dummy_pfnglmultitexcoord1dproc} else {unsafe{transmute(proc)}}},
4657			multitexcoord1dv: {let proc = get_proc_address("glMultiTexCoord1dv"); if proc == null() {dummy_pfnglmultitexcoord1dvproc} else {unsafe{transmute(proc)}}},
4658			multitexcoord1f: {let proc = get_proc_address("glMultiTexCoord1f"); if proc == null() {dummy_pfnglmultitexcoord1fproc} else {unsafe{transmute(proc)}}},
4659			multitexcoord1fv: {let proc = get_proc_address("glMultiTexCoord1fv"); if proc == null() {dummy_pfnglmultitexcoord1fvproc} else {unsafe{transmute(proc)}}},
4660			multitexcoord1i: {let proc = get_proc_address("glMultiTexCoord1i"); if proc == null() {dummy_pfnglmultitexcoord1iproc} else {unsafe{transmute(proc)}}},
4661			multitexcoord1iv: {let proc = get_proc_address("glMultiTexCoord1iv"); if proc == null() {dummy_pfnglmultitexcoord1ivproc} else {unsafe{transmute(proc)}}},
4662			multitexcoord1s: {let proc = get_proc_address("glMultiTexCoord1s"); if proc == null() {dummy_pfnglmultitexcoord1sproc} else {unsafe{transmute(proc)}}},
4663			multitexcoord1sv: {let proc = get_proc_address("glMultiTexCoord1sv"); if proc == null() {dummy_pfnglmultitexcoord1svproc} else {unsafe{transmute(proc)}}},
4664			multitexcoord2d: {let proc = get_proc_address("glMultiTexCoord2d"); if proc == null() {dummy_pfnglmultitexcoord2dproc} else {unsafe{transmute(proc)}}},
4665			multitexcoord2dv: {let proc = get_proc_address("glMultiTexCoord2dv"); if proc == null() {dummy_pfnglmultitexcoord2dvproc} else {unsafe{transmute(proc)}}},
4666			multitexcoord2f: {let proc = get_proc_address("glMultiTexCoord2f"); if proc == null() {dummy_pfnglmultitexcoord2fproc} else {unsafe{transmute(proc)}}},
4667			multitexcoord2fv: {let proc = get_proc_address("glMultiTexCoord2fv"); if proc == null() {dummy_pfnglmultitexcoord2fvproc} else {unsafe{transmute(proc)}}},
4668			multitexcoord2i: {let proc = get_proc_address("glMultiTexCoord2i"); if proc == null() {dummy_pfnglmultitexcoord2iproc} else {unsafe{transmute(proc)}}},
4669			multitexcoord2iv: {let proc = get_proc_address("glMultiTexCoord2iv"); if proc == null() {dummy_pfnglmultitexcoord2ivproc} else {unsafe{transmute(proc)}}},
4670			multitexcoord2s: {let proc = get_proc_address("glMultiTexCoord2s"); if proc == null() {dummy_pfnglmultitexcoord2sproc} else {unsafe{transmute(proc)}}},
4671			multitexcoord2sv: {let proc = get_proc_address("glMultiTexCoord2sv"); if proc == null() {dummy_pfnglmultitexcoord2svproc} else {unsafe{transmute(proc)}}},
4672			multitexcoord3d: {let proc = get_proc_address("glMultiTexCoord3d"); if proc == null() {dummy_pfnglmultitexcoord3dproc} else {unsafe{transmute(proc)}}},
4673			multitexcoord3dv: {let proc = get_proc_address("glMultiTexCoord3dv"); if proc == null() {dummy_pfnglmultitexcoord3dvproc} else {unsafe{transmute(proc)}}},
4674			multitexcoord3f: {let proc = get_proc_address("glMultiTexCoord3f"); if proc == null() {dummy_pfnglmultitexcoord3fproc} else {unsafe{transmute(proc)}}},
4675			multitexcoord3fv: {let proc = get_proc_address("glMultiTexCoord3fv"); if proc == null() {dummy_pfnglmultitexcoord3fvproc} else {unsafe{transmute(proc)}}},
4676			multitexcoord3i: {let proc = get_proc_address("glMultiTexCoord3i"); if proc == null() {dummy_pfnglmultitexcoord3iproc} else {unsafe{transmute(proc)}}},
4677			multitexcoord3iv: {let proc = get_proc_address("glMultiTexCoord3iv"); if proc == null() {dummy_pfnglmultitexcoord3ivproc} else {unsafe{transmute(proc)}}},
4678			multitexcoord3s: {let proc = get_proc_address("glMultiTexCoord3s"); if proc == null() {dummy_pfnglmultitexcoord3sproc} else {unsafe{transmute(proc)}}},
4679			multitexcoord3sv: {let proc = get_proc_address("glMultiTexCoord3sv"); if proc == null() {dummy_pfnglmultitexcoord3svproc} else {unsafe{transmute(proc)}}},
4680			multitexcoord4d: {let proc = get_proc_address("glMultiTexCoord4d"); if proc == null() {dummy_pfnglmultitexcoord4dproc} else {unsafe{transmute(proc)}}},
4681			multitexcoord4dv: {let proc = get_proc_address("glMultiTexCoord4dv"); if proc == null() {dummy_pfnglmultitexcoord4dvproc} else {unsafe{transmute(proc)}}},
4682			multitexcoord4f: {let proc = get_proc_address("glMultiTexCoord4f"); if proc == null() {dummy_pfnglmultitexcoord4fproc} else {unsafe{transmute(proc)}}},
4683			multitexcoord4fv: {let proc = get_proc_address("glMultiTexCoord4fv"); if proc == null() {dummy_pfnglmultitexcoord4fvproc} else {unsafe{transmute(proc)}}},
4684			multitexcoord4i: {let proc = get_proc_address("glMultiTexCoord4i"); if proc == null() {dummy_pfnglmultitexcoord4iproc} else {unsafe{transmute(proc)}}},
4685			multitexcoord4iv: {let proc = get_proc_address("glMultiTexCoord4iv"); if proc == null() {dummy_pfnglmultitexcoord4ivproc} else {unsafe{transmute(proc)}}},
4686			multitexcoord4s: {let proc = get_proc_address("glMultiTexCoord4s"); if proc == null() {dummy_pfnglmultitexcoord4sproc} else {unsafe{transmute(proc)}}},
4687			multitexcoord4sv: {let proc = get_proc_address("glMultiTexCoord4sv"); if proc == null() {dummy_pfnglmultitexcoord4svproc} else {unsafe{transmute(proc)}}},
4688			loadtransposematrixf: {let proc = get_proc_address("glLoadTransposeMatrixf"); if proc == null() {dummy_pfnglloadtransposematrixfproc} else {unsafe{transmute(proc)}}},
4689			loadtransposematrixd: {let proc = get_proc_address("glLoadTransposeMatrixd"); if proc == null() {dummy_pfnglloadtransposematrixdproc} else {unsafe{transmute(proc)}}},
4690			multtransposematrixf: {let proc = get_proc_address("glMultTransposeMatrixf"); if proc == null() {dummy_pfnglmulttransposematrixfproc} else {unsafe{transmute(proc)}}},
4691			multtransposematrixd: {let proc = get_proc_address("glMultTransposeMatrixd"); if proc == null() {dummy_pfnglmulttransposematrixdproc} else {unsafe{transmute(proc)}}},
4692		}
4693	}
4694	#[inline(always)]
4695	pub fn get_available(&self) -> bool {
4696		self.available
4697	}
4698}
4699
4700impl Default for Version13 {
4701	fn default() -> Self {
4702		Self {
4703			available: false,
4704			geterror: dummy_pfnglgeterrorproc,
4705			activetexture: dummy_pfnglactivetextureproc,
4706			samplecoverage: dummy_pfnglsamplecoverageproc,
4707			compressedteximage3d: dummy_pfnglcompressedteximage3dproc,
4708			compressedteximage2d: dummy_pfnglcompressedteximage2dproc,
4709			compressedteximage1d: dummy_pfnglcompressedteximage1dproc,
4710			compressedtexsubimage3d: dummy_pfnglcompressedtexsubimage3dproc,
4711			compressedtexsubimage2d: dummy_pfnglcompressedtexsubimage2dproc,
4712			compressedtexsubimage1d: dummy_pfnglcompressedtexsubimage1dproc,
4713			getcompressedteximage: dummy_pfnglgetcompressedteximageproc,
4714			clientactivetexture: dummy_pfnglclientactivetextureproc,
4715			multitexcoord1d: dummy_pfnglmultitexcoord1dproc,
4716			multitexcoord1dv: dummy_pfnglmultitexcoord1dvproc,
4717			multitexcoord1f: dummy_pfnglmultitexcoord1fproc,
4718			multitexcoord1fv: dummy_pfnglmultitexcoord1fvproc,
4719			multitexcoord1i: dummy_pfnglmultitexcoord1iproc,
4720			multitexcoord1iv: dummy_pfnglmultitexcoord1ivproc,
4721			multitexcoord1s: dummy_pfnglmultitexcoord1sproc,
4722			multitexcoord1sv: dummy_pfnglmultitexcoord1svproc,
4723			multitexcoord2d: dummy_pfnglmultitexcoord2dproc,
4724			multitexcoord2dv: dummy_pfnglmultitexcoord2dvproc,
4725			multitexcoord2f: dummy_pfnglmultitexcoord2fproc,
4726			multitexcoord2fv: dummy_pfnglmultitexcoord2fvproc,
4727			multitexcoord2i: dummy_pfnglmultitexcoord2iproc,
4728			multitexcoord2iv: dummy_pfnglmultitexcoord2ivproc,
4729			multitexcoord2s: dummy_pfnglmultitexcoord2sproc,
4730			multitexcoord2sv: dummy_pfnglmultitexcoord2svproc,
4731			multitexcoord3d: dummy_pfnglmultitexcoord3dproc,
4732			multitexcoord3dv: dummy_pfnglmultitexcoord3dvproc,
4733			multitexcoord3f: dummy_pfnglmultitexcoord3fproc,
4734			multitexcoord3fv: dummy_pfnglmultitexcoord3fvproc,
4735			multitexcoord3i: dummy_pfnglmultitexcoord3iproc,
4736			multitexcoord3iv: dummy_pfnglmultitexcoord3ivproc,
4737			multitexcoord3s: dummy_pfnglmultitexcoord3sproc,
4738			multitexcoord3sv: dummy_pfnglmultitexcoord3svproc,
4739			multitexcoord4d: dummy_pfnglmultitexcoord4dproc,
4740			multitexcoord4dv: dummy_pfnglmultitexcoord4dvproc,
4741			multitexcoord4f: dummy_pfnglmultitexcoord4fproc,
4742			multitexcoord4fv: dummy_pfnglmultitexcoord4fvproc,
4743			multitexcoord4i: dummy_pfnglmultitexcoord4iproc,
4744			multitexcoord4iv: dummy_pfnglmultitexcoord4ivproc,
4745			multitexcoord4s: dummy_pfnglmultitexcoord4sproc,
4746			multitexcoord4sv: dummy_pfnglmultitexcoord4svproc,
4747			loadtransposematrixf: dummy_pfnglloadtransposematrixfproc,
4748			loadtransposematrixd: dummy_pfnglloadtransposematrixdproc,
4749			multtransposematrixf: dummy_pfnglmulttransposematrixfproc,
4750			multtransposematrixd: dummy_pfnglmulttransposematrixdproc,
4751		}
4752	}
4753}
4754impl Debug for Version13 {
4755	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
4756		if self.available {
4757			f.debug_struct("Version13")
4758			.field("available", &self.available)
4759			.field("activetexture", unsafe{if transmute::<_, *const c_void>(self.activetexture) == (dummy_pfnglactivetextureproc as *const c_void) {&null::<PFNGLACTIVETEXTUREPROC>()} else {&self.activetexture}})
4760			.field("samplecoverage", unsafe{if transmute::<_, *const c_void>(self.samplecoverage) == (dummy_pfnglsamplecoverageproc as *const c_void) {&null::<PFNGLSAMPLECOVERAGEPROC>()} else {&self.samplecoverage}})
4761			.field("compressedteximage3d", unsafe{if transmute::<_, *const c_void>(self.compressedteximage3d) == (dummy_pfnglcompressedteximage3dproc as *const c_void) {&null::<PFNGLCOMPRESSEDTEXIMAGE3DPROC>()} else {&self.compressedteximage3d}})
4762			.field("compressedteximage2d", unsafe{if transmute::<_, *const c_void>(self.compressedteximage2d) == (dummy_pfnglcompressedteximage2dproc as *const c_void) {&null::<PFNGLCOMPRESSEDTEXIMAGE2DPROC>()} else {&self.compressedteximage2d}})
4763			.field("compressedteximage1d", unsafe{if transmute::<_, *const c_void>(self.compressedteximage1d) == (dummy_pfnglcompressedteximage1dproc as *const c_void) {&null::<PFNGLCOMPRESSEDTEXIMAGE1DPROC>()} else {&self.compressedteximage1d}})
4764			.field("compressedtexsubimage3d", unsafe{if transmute::<_, *const c_void>(self.compressedtexsubimage3d) == (dummy_pfnglcompressedtexsubimage3dproc as *const c_void) {&null::<PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC>()} else {&self.compressedtexsubimage3d}})
4765			.field("compressedtexsubimage2d", unsafe{if transmute::<_, *const c_void>(self.compressedtexsubimage2d) == (dummy_pfnglcompressedtexsubimage2dproc as *const c_void) {&null::<PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC>()} else {&self.compressedtexsubimage2d}})
4766			.field("compressedtexsubimage1d", unsafe{if transmute::<_, *const c_void>(self.compressedtexsubimage1d) == (dummy_pfnglcompressedtexsubimage1dproc as *const c_void) {&null::<PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC>()} else {&self.compressedtexsubimage1d}})
4767			.field("getcompressedteximage", unsafe{if transmute::<_, *const c_void>(self.getcompressedteximage) == (dummy_pfnglgetcompressedteximageproc as *const c_void) {&null::<PFNGLGETCOMPRESSEDTEXIMAGEPROC>()} else {&self.getcompressedteximage}})
4768			.field("clientactivetexture", unsafe{if transmute::<_, *const c_void>(self.clientactivetexture) == (dummy_pfnglclientactivetextureproc as *const c_void) {&null::<PFNGLCLIENTACTIVETEXTUREPROC>()} else {&self.clientactivetexture}})
4769			.field("multitexcoord1d", unsafe{if transmute::<_, *const c_void>(self.multitexcoord1d) == (dummy_pfnglmultitexcoord1dproc as *const c_void) {&null::<PFNGLMULTITEXCOORD1DPROC>()} else {&self.multitexcoord1d}})
4770			.field("multitexcoord1dv", unsafe{if transmute::<_, *const c_void>(self.multitexcoord1dv) == (dummy_pfnglmultitexcoord1dvproc as *const c_void) {&null::<PFNGLMULTITEXCOORD1DVPROC>()} else {&self.multitexcoord1dv}})
4771			.field("multitexcoord1f", unsafe{if transmute::<_, *const c_void>(self.multitexcoord1f) == (dummy_pfnglmultitexcoord1fproc as *const c_void) {&null::<PFNGLMULTITEXCOORD1FPROC>()} else {&self.multitexcoord1f}})
4772			.field("multitexcoord1fv", unsafe{if transmute::<_, *const c_void>(self.multitexcoord1fv) == (dummy_pfnglmultitexcoord1fvproc as *const c_void) {&null::<PFNGLMULTITEXCOORD1FVPROC>()} else {&self.multitexcoord1fv}})
4773			.field("multitexcoord1i", unsafe{if transmute::<_, *const c_void>(self.multitexcoord1i) == (dummy_pfnglmultitexcoord1iproc as *const c_void) {&null::<PFNGLMULTITEXCOORD1IPROC>()} else {&self.multitexcoord1i}})
4774			.field("multitexcoord1iv", unsafe{if transmute::<_, *const c_void>(self.multitexcoord1iv) == (dummy_pfnglmultitexcoord1ivproc as *const c_void) {&null::<PFNGLMULTITEXCOORD1IVPROC>()} else {&self.multitexcoord1iv}})
4775			.field("multitexcoord1s", unsafe{if transmute::<_, *const c_void>(self.multitexcoord1s) == (dummy_pfnglmultitexcoord1sproc as *const c_void) {&null::<PFNGLMULTITEXCOORD1SPROC>()} else {&self.multitexcoord1s}})
4776			.field("multitexcoord1sv", unsafe{if transmute::<_, *const c_void>(self.multitexcoord1sv) == (dummy_pfnglmultitexcoord1svproc as *const c_void) {&null::<PFNGLMULTITEXCOORD1SVPROC>()} else {&self.multitexcoord1sv}})
4777			.field("multitexcoord2d", unsafe{if transmute::<_, *const c_void>(self.multitexcoord2d) == (dummy_pfnglmultitexcoord2dproc as *const c_void) {&null::<PFNGLMULTITEXCOORD2DPROC>()} else {&self.multitexcoord2d}})
4778			.field("multitexcoord2dv", unsafe{if transmute::<_, *const c_void>(self.multitexcoord2dv) == (dummy_pfnglmultitexcoord2dvproc as *const c_void) {&null::<PFNGLMULTITEXCOORD2DVPROC>()} else {&self.multitexcoord2dv}})
4779			.field("multitexcoord2f", unsafe{if transmute::<_, *const c_void>(self.multitexcoord2f) == (dummy_pfnglmultitexcoord2fproc as *const c_void) {&null::<PFNGLMULTITEXCOORD2FPROC>()} else {&self.multitexcoord2f}})
4780			.field("multitexcoord2fv", unsafe{if transmute::<_, *const c_void>(self.multitexcoord2fv) == (dummy_pfnglmultitexcoord2fvproc as *const c_void) {&null::<PFNGLMULTITEXCOORD2FVPROC>()} else {&self.multitexcoord2fv}})
4781			.field("multitexcoord2i", unsafe{if transmute::<_, *const c_void>(self.multitexcoord2i) == (dummy_pfnglmultitexcoord2iproc as *const c_void) {&null::<PFNGLMULTITEXCOORD2IPROC>()} else {&self.multitexcoord2i}})
4782			.field("multitexcoord2iv", unsafe{if transmute::<_, *const c_void>(self.multitexcoord2iv) == (dummy_pfnglmultitexcoord2ivproc as *const c_void) {&null::<PFNGLMULTITEXCOORD2IVPROC>()} else {&self.multitexcoord2iv}})
4783			.field("multitexcoord2s", unsafe{if transmute::<_, *const c_void>(self.multitexcoord2s) == (dummy_pfnglmultitexcoord2sproc as *const c_void) {&null::<PFNGLMULTITEXCOORD2SPROC>()} else {&self.multitexcoord2s}})
4784			.field("multitexcoord2sv", unsafe{if transmute::<_, *const c_void>(self.multitexcoord2sv) == (dummy_pfnglmultitexcoord2svproc as *const c_void) {&null::<PFNGLMULTITEXCOORD2SVPROC>()} else {&self.multitexcoord2sv}})
4785			.field("multitexcoord3d", unsafe{if transmute::<_, *const c_void>(self.multitexcoord3d) == (dummy_pfnglmultitexcoord3dproc as *const c_void) {&null::<PFNGLMULTITEXCOORD3DPROC>()} else {&self.multitexcoord3d}})
4786			.field("multitexcoord3dv", unsafe{if transmute::<_, *const c_void>(self.multitexcoord3dv) == (dummy_pfnglmultitexcoord3dvproc as *const c_void) {&null::<PFNGLMULTITEXCOORD3DVPROC>()} else {&self.multitexcoord3dv}})
4787			.field("multitexcoord3f", unsafe{if transmute::<_, *const c_void>(self.multitexcoord3f) == (dummy_pfnglmultitexcoord3fproc as *const c_void) {&null::<PFNGLMULTITEXCOORD3FPROC>()} else {&self.multitexcoord3f}})
4788			.field("multitexcoord3fv", unsafe{if transmute::<_, *const c_void>(self.multitexcoord3fv) == (dummy_pfnglmultitexcoord3fvproc as *const c_void) {&null::<PFNGLMULTITEXCOORD3FVPROC>()} else {&self.multitexcoord3fv}})
4789			.field("multitexcoord3i", unsafe{if transmute::<_, *const c_void>(self.multitexcoord3i) == (dummy_pfnglmultitexcoord3iproc as *const c_void) {&null::<PFNGLMULTITEXCOORD3IPROC>()} else {&self.multitexcoord3i}})
4790			.field("multitexcoord3iv", unsafe{if transmute::<_, *const c_void>(self.multitexcoord3iv) == (dummy_pfnglmultitexcoord3ivproc as *const c_void) {&null::<PFNGLMULTITEXCOORD3IVPROC>()} else {&self.multitexcoord3iv}})
4791			.field("multitexcoord3s", unsafe{if transmute::<_, *const c_void>(self.multitexcoord3s) == (dummy_pfnglmultitexcoord3sproc as *const c_void) {&null::<PFNGLMULTITEXCOORD3SPROC>()} else {&self.multitexcoord3s}})
4792			.field("multitexcoord3sv", unsafe{if transmute::<_, *const c_void>(self.multitexcoord3sv) == (dummy_pfnglmultitexcoord3svproc as *const c_void) {&null::<PFNGLMULTITEXCOORD3SVPROC>()} else {&self.multitexcoord3sv}})
4793			.field("multitexcoord4d", unsafe{if transmute::<_, *const c_void>(self.multitexcoord4d) == (dummy_pfnglmultitexcoord4dproc as *const c_void) {&null::<PFNGLMULTITEXCOORD4DPROC>()} else {&self.multitexcoord4d}})
4794			.field("multitexcoord4dv", unsafe{if transmute::<_, *const c_void>(self.multitexcoord4dv) == (dummy_pfnglmultitexcoord4dvproc as *const c_void) {&null::<PFNGLMULTITEXCOORD4DVPROC>()} else {&self.multitexcoord4dv}})
4795			.field("multitexcoord4f", unsafe{if transmute::<_, *const c_void>(self.multitexcoord4f) == (dummy_pfnglmultitexcoord4fproc as *const c_void) {&null::<PFNGLMULTITEXCOORD4FPROC>()} else {&self.multitexcoord4f}})
4796			.field("multitexcoord4fv", unsafe{if transmute::<_, *const c_void>(self.multitexcoord4fv) == (dummy_pfnglmultitexcoord4fvproc as *const c_void) {&null::<PFNGLMULTITEXCOORD4FVPROC>()} else {&self.multitexcoord4fv}})
4797			.field("multitexcoord4i", unsafe{if transmute::<_, *const c_void>(self.multitexcoord4i) == (dummy_pfnglmultitexcoord4iproc as *const c_void) {&null::<PFNGLMULTITEXCOORD4IPROC>()} else {&self.multitexcoord4i}})
4798			.field("multitexcoord4iv", unsafe{if transmute::<_, *const c_void>(self.multitexcoord4iv) == (dummy_pfnglmultitexcoord4ivproc as *const c_void) {&null::<PFNGLMULTITEXCOORD4IVPROC>()} else {&self.multitexcoord4iv}})
4799			.field("multitexcoord4s", unsafe{if transmute::<_, *const c_void>(self.multitexcoord4s) == (dummy_pfnglmultitexcoord4sproc as *const c_void) {&null::<PFNGLMULTITEXCOORD4SPROC>()} else {&self.multitexcoord4s}})
4800			.field("multitexcoord4sv", unsafe{if transmute::<_, *const c_void>(self.multitexcoord4sv) == (dummy_pfnglmultitexcoord4svproc as *const c_void) {&null::<PFNGLMULTITEXCOORD4SVPROC>()} else {&self.multitexcoord4sv}})
4801			.field("loadtransposematrixf", unsafe{if transmute::<_, *const c_void>(self.loadtransposematrixf) == (dummy_pfnglloadtransposematrixfproc as *const c_void) {&null::<PFNGLLOADTRANSPOSEMATRIXFPROC>()} else {&self.loadtransposematrixf}})
4802			.field("loadtransposematrixd", unsafe{if transmute::<_, *const c_void>(self.loadtransposematrixd) == (dummy_pfnglloadtransposematrixdproc as *const c_void) {&null::<PFNGLLOADTRANSPOSEMATRIXDPROC>()} else {&self.loadtransposematrixd}})
4803			.field("multtransposematrixf", unsafe{if transmute::<_, *const c_void>(self.multtransposematrixf) == (dummy_pfnglmulttransposematrixfproc as *const c_void) {&null::<PFNGLMULTTRANSPOSEMATRIXFPROC>()} else {&self.multtransposematrixf}})
4804			.field("multtransposematrixd", unsafe{if transmute::<_, *const c_void>(self.multtransposematrixd) == (dummy_pfnglmulttransposematrixdproc as *const c_void) {&null::<PFNGLMULTTRANSPOSEMATRIXDPROC>()} else {&self.multtransposematrixd}})
4805			.finish()
4806		} else {
4807			f.debug_struct("Version13")
4808			.field("available", &self.available)
4809			.finish_non_exhaustive()
4810		}
4811	}
4812}
4813
4814/// The prototype to the OpenGL function `BlendFuncSeparate`
4815type PFNGLBLENDFUNCSEPARATEPROC = extern "system" fn(GLenum, GLenum, GLenum, GLenum);
4816
4817/// The prototype to the OpenGL function `MultiDrawArrays`
4818type PFNGLMULTIDRAWARRAYSPROC = extern "system" fn(GLenum, *const GLint, *const GLsizei, GLsizei);
4819
4820/// The prototype to the OpenGL function `MultiDrawElements`
4821type PFNGLMULTIDRAWELEMENTSPROC = extern "system" fn(GLenum, *const GLsizei, GLenum, *const *const c_void, GLsizei);
4822
4823/// The prototype to the OpenGL function `PointParameterf`
4824type PFNGLPOINTPARAMETERFPROC = extern "system" fn(GLenum, GLfloat);
4825
4826/// The prototype to the OpenGL function `PointParameterfv`
4827type PFNGLPOINTPARAMETERFVPROC = extern "system" fn(GLenum, *const GLfloat);
4828
4829/// The prototype to the OpenGL function `PointParameteri`
4830type PFNGLPOINTPARAMETERIPROC = extern "system" fn(GLenum, GLint);
4831
4832/// The prototype to the OpenGL function `PointParameteriv`
4833type PFNGLPOINTPARAMETERIVPROC = extern "system" fn(GLenum, *const GLint);
4834
4835/// The prototype to the OpenGL function `FogCoordf`
4836type PFNGLFOGCOORDFPROC = extern "system" fn(GLfloat);
4837
4838/// The prototype to the OpenGL function `FogCoordfv`
4839type PFNGLFOGCOORDFVPROC = extern "system" fn(*const GLfloat);
4840
4841/// The prototype to the OpenGL function `FogCoordd`
4842type PFNGLFOGCOORDDPROC = extern "system" fn(GLdouble);
4843
4844/// The prototype to the OpenGL function `FogCoorddv`
4845type PFNGLFOGCOORDDVPROC = extern "system" fn(*const GLdouble);
4846
4847/// The prototype to the OpenGL function `FogCoordPointer`
4848type PFNGLFOGCOORDPOINTERPROC = extern "system" fn(GLenum, GLsizei, *const c_void);
4849
4850/// The prototype to the OpenGL function `SecondaryColor3b`
4851type PFNGLSECONDARYCOLOR3BPROC = extern "system" fn(GLbyte, GLbyte, GLbyte);
4852
4853/// The prototype to the OpenGL function `SecondaryColor3bv`
4854type PFNGLSECONDARYCOLOR3BVPROC = extern "system" fn(*const GLbyte);
4855
4856/// The prototype to the OpenGL function `SecondaryColor3d`
4857type PFNGLSECONDARYCOLOR3DPROC = extern "system" fn(GLdouble, GLdouble, GLdouble);
4858
4859/// The prototype to the OpenGL function `SecondaryColor3dv`
4860type PFNGLSECONDARYCOLOR3DVPROC = extern "system" fn(*const GLdouble);
4861
4862/// The prototype to the OpenGL function `SecondaryColor3f`
4863type PFNGLSECONDARYCOLOR3FPROC = extern "system" fn(GLfloat, GLfloat, GLfloat);
4864
4865/// The prototype to the OpenGL function `SecondaryColor3fv`
4866type PFNGLSECONDARYCOLOR3FVPROC = extern "system" fn(*const GLfloat);
4867
4868/// The prototype to the OpenGL function `SecondaryColor3i`
4869type PFNGLSECONDARYCOLOR3IPROC = extern "system" fn(GLint, GLint, GLint);
4870
4871/// The prototype to the OpenGL function `SecondaryColor3iv`
4872type PFNGLSECONDARYCOLOR3IVPROC = extern "system" fn(*const GLint);
4873
4874/// The prototype to the OpenGL function `SecondaryColor3s`
4875type PFNGLSECONDARYCOLOR3SPROC = extern "system" fn(GLshort, GLshort, GLshort);
4876
4877/// The prototype to the OpenGL function `SecondaryColor3sv`
4878type PFNGLSECONDARYCOLOR3SVPROC = extern "system" fn(*const GLshort);
4879
4880/// The prototype to the OpenGL function `SecondaryColor3ub`
4881type PFNGLSECONDARYCOLOR3UBPROC = extern "system" fn(GLubyte, GLubyte, GLubyte);
4882
4883/// The prototype to the OpenGL function `SecondaryColor3ubv`
4884type PFNGLSECONDARYCOLOR3UBVPROC = extern "system" fn(*const GLubyte);
4885
4886/// The prototype to the OpenGL function `SecondaryColor3ui`
4887type PFNGLSECONDARYCOLOR3UIPROC = extern "system" fn(GLuint, GLuint, GLuint);
4888
4889/// The prototype to the OpenGL function `SecondaryColor3uiv`
4890type PFNGLSECONDARYCOLOR3UIVPROC = extern "system" fn(*const GLuint);
4891
4892/// The prototype to the OpenGL function `SecondaryColor3us`
4893type PFNGLSECONDARYCOLOR3USPROC = extern "system" fn(GLushort, GLushort, GLushort);
4894
4895/// The prototype to the OpenGL function `SecondaryColor3usv`
4896type PFNGLSECONDARYCOLOR3USVPROC = extern "system" fn(*const GLushort);
4897
4898/// The prototype to the OpenGL function `SecondaryColorPointer`
4899type PFNGLSECONDARYCOLORPOINTERPROC = extern "system" fn(GLint, GLenum, GLsizei, *const c_void);
4900
4901/// The prototype to the OpenGL function `WindowPos2d`
4902type PFNGLWINDOWPOS2DPROC = extern "system" fn(GLdouble, GLdouble);
4903
4904/// The prototype to the OpenGL function `WindowPos2dv`
4905type PFNGLWINDOWPOS2DVPROC = extern "system" fn(*const GLdouble);
4906
4907/// The prototype to the OpenGL function `WindowPos2f`
4908type PFNGLWINDOWPOS2FPROC = extern "system" fn(GLfloat, GLfloat);
4909
4910/// The prototype to the OpenGL function `WindowPos2fv`
4911type PFNGLWINDOWPOS2FVPROC = extern "system" fn(*const GLfloat);
4912
4913/// The prototype to the OpenGL function `WindowPos2i`
4914type PFNGLWINDOWPOS2IPROC = extern "system" fn(GLint, GLint);
4915
4916/// The prototype to the OpenGL function `WindowPos2iv`
4917type PFNGLWINDOWPOS2IVPROC = extern "system" fn(*const GLint);
4918
4919/// The prototype to the OpenGL function `WindowPos2s`
4920type PFNGLWINDOWPOS2SPROC = extern "system" fn(GLshort, GLshort);
4921
4922/// The prototype to the OpenGL function `WindowPos2sv`
4923type PFNGLWINDOWPOS2SVPROC = extern "system" fn(*const GLshort);
4924
4925/// The prototype to the OpenGL function `WindowPos3d`
4926type PFNGLWINDOWPOS3DPROC = extern "system" fn(GLdouble, GLdouble, GLdouble);
4927
4928/// The prototype to the OpenGL function `WindowPos3dv`
4929type PFNGLWINDOWPOS3DVPROC = extern "system" fn(*const GLdouble);
4930
4931/// The prototype to the OpenGL function `WindowPos3f`
4932type PFNGLWINDOWPOS3FPROC = extern "system" fn(GLfloat, GLfloat, GLfloat);
4933
4934/// The prototype to the OpenGL function `WindowPos3fv`
4935type PFNGLWINDOWPOS3FVPROC = extern "system" fn(*const GLfloat);
4936
4937/// The prototype to the OpenGL function `WindowPos3i`
4938type PFNGLWINDOWPOS3IPROC = extern "system" fn(GLint, GLint, GLint);
4939
4940/// The prototype to the OpenGL function `WindowPos3iv`
4941type PFNGLWINDOWPOS3IVPROC = extern "system" fn(*const GLint);
4942
4943/// The prototype to the OpenGL function `WindowPos3s`
4944type PFNGLWINDOWPOS3SPROC = extern "system" fn(GLshort, GLshort, GLshort);
4945
4946/// The prototype to the OpenGL function `WindowPos3sv`
4947type PFNGLWINDOWPOS3SVPROC = extern "system" fn(*const GLshort);
4948
4949/// The prototype to the OpenGL function `BlendColor`
4950type PFNGLBLENDCOLORPROC = extern "system" fn(GLfloat, GLfloat, GLfloat, GLfloat);
4951
4952/// The prototype to the OpenGL function `BlendEquation`
4953type PFNGLBLENDEQUATIONPROC = extern "system" fn(GLenum);
4954
4955/// The dummy function of `BlendFuncSeparate()`
4956extern "system" fn dummy_pfnglblendfuncseparateproc (_: GLenum, _: GLenum, _: GLenum, _: GLenum) {
4957	panic!("OpenGL function pointer `glBlendFuncSeparate()` is null.")
4958}
4959
4960/// The dummy function of `MultiDrawArrays()`
4961extern "system" fn dummy_pfnglmultidrawarraysproc (_: GLenum, _: *const GLint, _: *const GLsizei, _: GLsizei) {
4962	panic!("OpenGL function pointer `glMultiDrawArrays()` is null.")
4963}
4964
4965/// The dummy function of `MultiDrawElements()`
4966extern "system" fn dummy_pfnglmultidrawelementsproc (_: GLenum, _: *const GLsizei, _: GLenum, _: *const *const c_void, _: GLsizei) {
4967	panic!("OpenGL function pointer `glMultiDrawElements()` is null.")
4968}
4969
4970/// The dummy function of `PointParameterf()`
4971extern "system" fn dummy_pfnglpointparameterfproc (_: GLenum, _: GLfloat) {
4972	panic!("OpenGL function pointer `glPointParameterf()` is null.")
4973}
4974
4975/// The dummy function of `PointParameterfv()`
4976extern "system" fn dummy_pfnglpointparameterfvproc (_: GLenum, _: *const GLfloat) {
4977	panic!("OpenGL function pointer `glPointParameterfv()` is null.")
4978}
4979
4980/// The dummy function of `PointParameteri()`
4981extern "system" fn dummy_pfnglpointparameteriproc (_: GLenum, _: GLint) {
4982	panic!("OpenGL function pointer `glPointParameteri()` is null.")
4983}
4984
4985/// The dummy function of `PointParameteriv()`
4986extern "system" fn dummy_pfnglpointparameterivproc (_: GLenum, _: *const GLint) {
4987	panic!("OpenGL function pointer `glPointParameteriv()` is null.")
4988}
4989
4990/// The dummy function of `FogCoordf()`
4991extern "system" fn dummy_pfnglfogcoordfproc (_: GLfloat) {
4992	panic!("OpenGL function pointer `glFogCoordf()` is null.")
4993}
4994
4995/// The dummy function of `FogCoordfv()`
4996extern "system" fn dummy_pfnglfogcoordfvproc (_: *const GLfloat) {
4997	panic!("OpenGL function pointer `glFogCoordfv()` is null.")
4998}
4999
5000/// The dummy function of `FogCoordd()`
5001extern "system" fn dummy_pfnglfogcoorddproc (_: GLdouble) {
5002	panic!("OpenGL function pointer `glFogCoordd()` is null.")
5003}
5004
5005/// The dummy function of `FogCoorddv()`
5006extern "system" fn dummy_pfnglfogcoorddvproc (_: *const GLdouble) {
5007	panic!("OpenGL function pointer `glFogCoorddv()` is null.")
5008}
5009
5010/// The dummy function of `FogCoordPointer()`
5011extern "system" fn dummy_pfnglfogcoordpointerproc (_: GLenum, _: GLsizei, _: *const c_void) {
5012	panic!("OpenGL function pointer `glFogCoordPointer()` is null.")
5013}
5014
5015/// The dummy function of `SecondaryColor3b()`
5016extern "system" fn dummy_pfnglsecondarycolor3bproc (_: GLbyte, _: GLbyte, _: GLbyte) {
5017	panic!("OpenGL function pointer `glSecondaryColor3b()` is null.")
5018}
5019
5020/// The dummy function of `SecondaryColor3bv()`
5021extern "system" fn dummy_pfnglsecondarycolor3bvproc (_: *const GLbyte) {
5022	panic!("OpenGL function pointer `glSecondaryColor3bv()` is null.")
5023}
5024
5025/// The dummy function of `SecondaryColor3d()`
5026extern "system" fn dummy_pfnglsecondarycolor3dproc (_: GLdouble, _: GLdouble, _: GLdouble) {
5027	panic!("OpenGL function pointer `glSecondaryColor3d()` is null.")
5028}
5029
5030/// The dummy function of `SecondaryColor3dv()`
5031extern "system" fn dummy_pfnglsecondarycolor3dvproc (_: *const GLdouble) {
5032	panic!("OpenGL function pointer `glSecondaryColor3dv()` is null.")
5033}
5034
5035/// The dummy function of `SecondaryColor3f()`
5036extern "system" fn dummy_pfnglsecondarycolor3fproc (_: GLfloat, _: GLfloat, _: GLfloat) {
5037	panic!("OpenGL function pointer `glSecondaryColor3f()` is null.")
5038}
5039
5040/// The dummy function of `SecondaryColor3fv()`
5041extern "system" fn dummy_pfnglsecondarycolor3fvproc (_: *const GLfloat) {
5042	panic!("OpenGL function pointer `glSecondaryColor3fv()` is null.")
5043}
5044
5045/// The dummy function of `SecondaryColor3i()`
5046extern "system" fn dummy_pfnglsecondarycolor3iproc (_: GLint, _: GLint, _: GLint) {
5047	panic!("OpenGL function pointer `glSecondaryColor3i()` is null.")
5048}
5049
5050/// The dummy function of `SecondaryColor3iv()`
5051extern "system" fn dummy_pfnglsecondarycolor3ivproc (_: *const GLint) {
5052	panic!("OpenGL function pointer `glSecondaryColor3iv()` is null.")
5053}
5054
5055/// The dummy function of `SecondaryColor3s()`
5056extern "system" fn dummy_pfnglsecondarycolor3sproc (_: GLshort, _: GLshort, _: GLshort) {
5057	panic!("OpenGL function pointer `glSecondaryColor3s()` is null.")
5058}
5059
5060/// The dummy function of `SecondaryColor3sv()`
5061extern "system" fn dummy_pfnglsecondarycolor3svproc (_: *const GLshort) {
5062	panic!("OpenGL function pointer `glSecondaryColor3sv()` is null.")
5063}
5064
5065/// The dummy function of `SecondaryColor3ub()`
5066extern "system" fn dummy_pfnglsecondarycolor3ubproc (_: GLubyte, _: GLubyte, _: GLubyte) {
5067	panic!("OpenGL function pointer `glSecondaryColor3ub()` is null.")
5068}
5069
5070/// The dummy function of `SecondaryColor3ubv()`
5071extern "system" fn dummy_pfnglsecondarycolor3ubvproc (_: *const GLubyte) {
5072	panic!("OpenGL function pointer `glSecondaryColor3ubv()` is null.")
5073}
5074
5075/// The dummy function of `SecondaryColor3ui()`
5076extern "system" fn dummy_pfnglsecondarycolor3uiproc (_: GLuint, _: GLuint, _: GLuint) {
5077	panic!("OpenGL function pointer `glSecondaryColor3ui()` is null.")
5078}
5079
5080/// The dummy function of `SecondaryColor3uiv()`
5081extern "system" fn dummy_pfnglsecondarycolor3uivproc (_: *const GLuint) {
5082	panic!("OpenGL function pointer `glSecondaryColor3uiv()` is null.")
5083}
5084
5085/// The dummy function of `SecondaryColor3us()`
5086extern "system" fn dummy_pfnglsecondarycolor3usproc (_: GLushort, _: GLushort, _: GLushort) {
5087	panic!("OpenGL function pointer `glSecondaryColor3us()` is null.")
5088}
5089
5090/// The dummy function of `SecondaryColor3usv()`
5091extern "system" fn dummy_pfnglsecondarycolor3usvproc (_: *const GLushort) {
5092	panic!("OpenGL function pointer `glSecondaryColor3usv()` is null.")
5093}
5094
5095/// The dummy function of `SecondaryColorPointer()`
5096extern "system" fn dummy_pfnglsecondarycolorpointerproc (_: GLint, _: GLenum, _: GLsizei, _: *const c_void) {
5097	panic!("OpenGL function pointer `glSecondaryColorPointer()` is null.")
5098}
5099
5100/// The dummy function of `WindowPos2d()`
5101extern "system" fn dummy_pfnglwindowpos2dproc (_: GLdouble, _: GLdouble) {
5102	panic!("OpenGL function pointer `glWindowPos2d()` is null.")
5103}
5104
5105/// The dummy function of `WindowPos2dv()`
5106extern "system" fn dummy_pfnglwindowpos2dvproc (_: *const GLdouble) {
5107	panic!("OpenGL function pointer `glWindowPos2dv()` is null.")
5108}
5109
5110/// The dummy function of `WindowPos2f()`
5111extern "system" fn dummy_pfnglwindowpos2fproc (_: GLfloat, _: GLfloat) {
5112	panic!("OpenGL function pointer `glWindowPos2f()` is null.")
5113}
5114
5115/// The dummy function of `WindowPos2fv()`
5116extern "system" fn dummy_pfnglwindowpos2fvproc (_: *const GLfloat) {
5117	panic!("OpenGL function pointer `glWindowPos2fv()` is null.")
5118}
5119
5120/// The dummy function of `WindowPos2i()`
5121extern "system" fn dummy_pfnglwindowpos2iproc (_: GLint, _: GLint) {
5122	panic!("OpenGL function pointer `glWindowPos2i()` is null.")
5123}
5124
5125/// The dummy function of `WindowPos2iv()`
5126extern "system" fn dummy_pfnglwindowpos2ivproc (_: *const GLint) {
5127	panic!("OpenGL function pointer `glWindowPos2iv()` is null.")
5128}
5129
5130/// The dummy function of `WindowPos2s()`
5131extern "system" fn dummy_pfnglwindowpos2sproc (_: GLshort, _: GLshort) {
5132	panic!("OpenGL function pointer `glWindowPos2s()` is null.")
5133}
5134
5135/// The dummy function of `WindowPos2sv()`
5136extern "system" fn dummy_pfnglwindowpos2svproc (_: *const GLshort) {
5137	panic!("OpenGL function pointer `glWindowPos2sv()` is null.")
5138}
5139
5140/// The dummy function of `WindowPos3d()`
5141extern "system" fn dummy_pfnglwindowpos3dproc (_: GLdouble, _: GLdouble, _: GLdouble) {
5142	panic!("OpenGL function pointer `glWindowPos3d()` is null.")
5143}
5144
5145/// The dummy function of `WindowPos3dv()`
5146extern "system" fn dummy_pfnglwindowpos3dvproc (_: *const GLdouble) {
5147	panic!("OpenGL function pointer `glWindowPos3dv()` is null.")
5148}
5149
5150/// The dummy function of `WindowPos3f()`
5151extern "system" fn dummy_pfnglwindowpos3fproc (_: GLfloat, _: GLfloat, _: GLfloat) {
5152	panic!("OpenGL function pointer `glWindowPos3f()` is null.")
5153}
5154
5155/// The dummy function of `WindowPos3fv()`
5156extern "system" fn dummy_pfnglwindowpos3fvproc (_: *const GLfloat) {
5157	panic!("OpenGL function pointer `glWindowPos3fv()` is null.")
5158}
5159
5160/// The dummy function of `WindowPos3i()`
5161extern "system" fn dummy_pfnglwindowpos3iproc (_: GLint, _: GLint, _: GLint) {
5162	panic!("OpenGL function pointer `glWindowPos3i()` is null.")
5163}
5164
5165/// The dummy function of `WindowPos3iv()`
5166extern "system" fn dummy_pfnglwindowpos3ivproc (_: *const GLint) {
5167	panic!("OpenGL function pointer `glWindowPos3iv()` is null.")
5168}
5169
5170/// The dummy function of `WindowPos3s()`
5171extern "system" fn dummy_pfnglwindowpos3sproc (_: GLshort, _: GLshort, _: GLshort) {
5172	panic!("OpenGL function pointer `glWindowPos3s()` is null.")
5173}
5174
5175/// The dummy function of `WindowPos3sv()`
5176extern "system" fn dummy_pfnglwindowpos3svproc (_: *const GLshort) {
5177	panic!("OpenGL function pointer `glWindowPos3sv()` is null.")
5178}
5179
5180/// The dummy function of `BlendColor()`
5181extern "system" fn dummy_pfnglblendcolorproc (_: GLfloat, _: GLfloat, _: GLfloat, _: GLfloat) {
5182	panic!("OpenGL function pointer `glBlendColor()` is null.")
5183}
5184
5185/// The dummy function of `BlendEquation()`
5186extern "system" fn dummy_pfnglblendequationproc (_: GLenum) {
5187	panic!("OpenGL function pointer `glBlendEquation()` is null.")
5188}
5189/// Constant value defined from OpenGL 1.4
5190pub const GL_BLEND_DST_RGB: GLenum = 0x80C8;
5191
5192/// Constant value defined from OpenGL 1.4
5193pub const GL_BLEND_SRC_RGB: GLenum = 0x80C9;
5194
5195/// Constant value defined from OpenGL 1.4
5196pub const GL_BLEND_DST_ALPHA: GLenum = 0x80CA;
5197
5198/// Constant value defined from OpenGL 1.4
5199pub const GL_BLEND_SRC_ALPHA: GLenum = 0x80CB;
5200
5201/// Constant value defined from OpenGL 1.4
5202pub const GL_POINT_FADE_THRESHOLD_SIZE: GLenum = 0x8128;
5203
5204/// Constant value defined from OpenGL 1.4
5205pub const GL_DEPTH_COMPONENT16: GLenum = 0x81A5;
5206
5207/// Constant value defined from OpenGL 1.4
5208pub const GL_DEPTH_COMPONENT24: GLenum = 0x81A6;
5209
5210/// Constant value defined from OpenGL 1.4
5211pub const GL_DEPTH_COMPONENT32: GLenum = 0x81A7;
5212
5213/// Constant value defined from OpenGL 1.4
5214pub const GL_MIRRORED_REPEAT: GLint = 0x8370;
5215
5216/// Constant value defined from OpenGL 1.4
5217pub const GL_MAX_TEXTURE_LOD_BIAS: GLenum = 0x84FD;
5218
5219/// Constant value defined from OpenGL 1.4
5220pub const GL_TEXTURE_LOD_BIAS: GLenum = 0x8501;
5221
5222/// Constant value defined from OpenGL 1.4
5223pub const GL_INCR_WRAP: GLenum = 0x8507;
5224
5225/// Constant value defined from OpenGL 1.4
5226pub const GL_DECR_WRAP: GLenum = 0x8508;
5227
5228/// Constant value defined from OpenGL 1.4
5229pub const GL_TEXTURE_DEPTH_SIZE: GLenum = 0x884A;
5230
5231/// Constant value defined from OpenGL 1.4
5232pub const GL_TEXTURE_COMPARE_MODE: GLenum = 0x884C;
5233
5234/// Constant value defined from OpenGL 1.4
5235pub const GL_TEXTURE_COMPARE_FUNC: GLenum = 0x884D;
5236
5237/// Constant value defined from OpenGL 1.4
5238pub const GL_POINT_SIZE_MIN: GLenum = 0x8126;
5239
5240/// Constant value defined from OpenGL 1.4
5241pub const GL_POINT_SIZE_MAX: GLenum = 0x8127;
5242
5243/// Constant value defined from OpenGL 1.4
5244pub const GL_POINT_DISTANCE_ATTENUATION: GLenum = 0x8129;
5245
5246/// Constant value defined from OpenGL 1.4
5247pub const GL_GENERATE_MIPMAP: GLenum = 0x8191;
5248
5249/// Constant value defined from OpenGL 1.4
5250pub const GL_GENERATE_MIPMAP_HINT: GLenum = 0x8192;
5251
5252/// Constant value defined from OpenGL 1.4
5253pub const GL_FOG_COORDINATE_SOURCE: GLenum = 0x8450;
5254
5255/// Constant value defined from OpenGL 1.4
5256pub const GL_FOG_COORDINATE: GLenum = 0x8451;
5257
5258/// Constant value defined from OpenGL 1.4
5259pub const GL_FRAGMENT_DEPTH: GLenum = 0x8452;
5260
5261/// Constant value defined from OpenGL 1.4
5262pub const GL_CURRENT_FOG_COORDINATE: GLenum = 0x8453;
5263
5264/// Constant value defined from OpenGL 1.4
5265pub const GL_FOG_COORDINATE_ARRAY_TYPE: GLenum = 0x8454;
5266
5267/// Constant value defined from OpenGL 1.4
5268pub const GL_FOG_COORDINATE_ARRAY_STRIDE: GLenum = 0x8455;
5269
5270/// Constant value defined from OpenGL 1.4
5271pub const GL_FOG_COORDINATE_ARRAY_POINTER: GLenum = 0x8456;
5272
5273/// Constant value defined from OpenGL 1.4
5274pub const GL_FOG_COORDINATE_ARRAY: GLenum = 0x8457;
5275
5276/// Constant value defined from OpenGL 1.4
5277pub const GL_COLOR_SUM: GLenum = 0x8458;
5278
5279/// Constant value defined from OpenGL 1.4
5280pub const GL_CURRENT_SECONDARY_COLOR: GLenum = 0x8459;
5281
5282/// Constant value defined from OpenGL 1.4
5283pub const GL_SECONDARY_COLOR_ARRAY_SIZE: GLenum = 0x845A;
5284
5285/// Constant value defined from OpenGL 1.4
5286pub const GL_SECONDARY_COLOR_ARRAY_TYPE: GLenum = 0x845B;
5287
5288/// Constant value defined from OpenGL 1.4
5289pub const GL_SECONDARY_COLOR_ARRAY_STRIDE: GLenum = 0x845C;
5290
5291/// Constant value defined from OpenGL 1.4
5292pub const GL_SECONDARY_COLOR_ARRAY_POINTER: GLenum = 0x845D;
5293
5294/// Constant value defined from OpenGL 1.4
5295pub const GL_SECONDARY_COLOR_ARRAY: GLenum = 0x845E;
5296
5297/// Constant value defined from OpenGL 1.4
5298pub const GL_TEXTURE_FILTER_CONTROL: GLenum = 0x8500;
5299
5300/// Constant value defined from OpenGL 1.4
5301pub const GL_DEPTH_TEXTURE_MODE: GLenum = 0x884B;
5302
5303/// Constant value defined from OpenGL 1.4
5304pub const GL_COMPARE_R_TO_TEXTURE: GLenum = 0x884E;
5305
5306/// Constant value defined from OpenGL 1.4
5307pub const GL_BLEND_COLOR: GLenum = 0x8005;
5308
5309/// Constant value defined from OpenGL 1.4
5310pub const GL_BLEND_EQUATION: GLenum = 0x8009;
5311
5312/// Constant value defined from OpenGL 1.4
5313pub const GL_CONSTANT_COLOR: GLenum = 0x8001;
5314
5315/// Constant value defined from OpenGL 1.4
5316pub const GL_ONE_MINUS_CONSTANT_COLOR: GLenum = 0x8002;
5317
5318/// Constant value defined from OpenGL 1.4
5319pub const GL_CONSTANT_ALPHA: GLenum = 0x8003;
5320
5321/// Constant value defined from OpenGL 1.4
5322pub const GL_ONE_MINUS_CONSTANT_ALPHA: GLenum = 0x8004;
5323
5324/// Constant value defined from OpenGL 1.4
5325pub const GL_FUNC_ADD: GLenum = 0x8006;
5326
5327/// Constant value defined from OpenGL 1.4
5328pub const GL_FUNC_REVERSE_SUBTRACT: GLenum = 0x800B;
5329
5330/// Constant value defined from OpenGL 1.4
5331pub const GL_FUNC_SUBTRACT: GLenum = 0x800A;
5332
5333/// Constant value defined from OpenGL 1.4
5334pub const GL_MIN: GLenum = 0x8007;
5335
5336/// Constant value defined from OpenGL 1.4
5337pub const GL_MAX: GLenum = 0x8008;
5338
5339/// Functions from OpenGL version 1.4
5340pub trait GL_1_4 {
5341	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
5342	fn glGetError(&self) -> GLenum;
5343
5344	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendFuncSeparate.xhtml>
5345	fn glBlendFuncSeparate(&self, sfactorRGB: GLenum, dfactorRGB: GLenum, sfactorAlpha: GLenum, dfactorAlpha: GLenum) -> Result<()>;
5346
5347	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawArrays.xhtml>
5348	fn glMultiDrawArrays(&self, mode: GLenum, first: *const GLint, count: *const GLsizei, drawcount: GLsizei) -> Result<()>;
5349
5350	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawElements.xhtml>
5351	fn glMultiDrawElements(&self, mode: GLenum, count: *const GLsizei, type_: GLenum, indices: *const *const c_void, drawcount: GLsizei) -> Result<()>;
5352
5353	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPointParameterf.xhtml>
5354	fn glPointParameterf(&self, pname: GLenum, param: GLfloat) -> Result<()>;
5355
5356	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPointParameterfv.xhtml>
5357	fn glPointParameterfv(&self, pname: GLenum, params: *const GLfloat) -> Result<()>;
5358
5359	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPointParameteri.xhtml>
5360	fn glPointParameteri(&self, pname: GLenum, param: GLint) -> Result<()>;
5361
5362	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPointParameteriv.xhtml>
5363	fn glPointParameteriv(&self, pname: GLenum, params: *const GLint) -> Result<()>;
5364
5365	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFogCoordf.xhtml>
5366	fn glFogCoordf(&self, coord: GLfloat) -> Result<()>;
5367
5368	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFogCoordfv.xhtml>
5369	fn glFogCoordfv(&self, coord: *const GLfloat) -> Result<()>;
5370
5371	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFogCoordd.xhtml>
5372	fn glFogCoordd(&self, coord: GLdouble) -> Result<()>;
5373
5374	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFogCoorddv.xhtml>
5375	fn glFogCoorddv(&self, coord: *const GLdouble) -> Result<()>;
5376
5377	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFogCoordPointer.xhtml>
5378	fn glFogCoordPointer(&self, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()>;
5379
5380	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3b.xhtml>
5381	fn glSecondaryColor3b(&self, red: GLbyte, green: GLbyte, blue: GLbyte) -> Result<()>;
5382
5383	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3bv.xhtml>
5384	fn glSecondaryColor3bv(&self, v: *const GLbyte) -> Result<()>;
5385
5386	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3d.xhtml>
5387	fn glSecondaryColor3d(&self, red: GLdouble, green: GLdouble, blue: GLdouble) -> Result<()>;
5388
5389	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3dv.xhtml>
5390	fn glSecondaryColor3dv(&self, v: *const GLdouble) -> Result<()>;
5391
5392	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3f.xhtml>
5393	fn glSecondaryColor3f(&self, red: GLfloat, green: GLfloat, blue: GLfloat) -> Result<()>;
5394
5395	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3fv.xhtml>
5396	fn glSecondaryColor3fv(&self, v: *const GLfloat) -> Result<()>;
5397
5398	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3i.xhtml>
5399	fn glSecondaryColor3i(&self, red: GLint, green: GLint, blue: GLint) -> Result<()>;
5400
5401	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3iv.xhtml>
5402	fn glSecondaryColor3iv(&self, v: *const GLint) -> Result<()>;
5403
5404	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3s.xhtml>
5405	fn glSecondaryColor3s(&self, red: GLshort, green: GLshort, blue: GLshort) -> Result<()>;
5406
5407	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3sv.xhtml>
5408	fn glSecondaryColor3sv(&self, v: *const GLshort) -> Result<()>;
5409
5410	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3ub.xhtml>
5411	fn glSecondaryColor3ub(&self, red: GLubyte, green: GLubyte, blue: GLubyte) -> Result<()>;
5412
5413	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3ubv.xhtml>
5414	fn glSecondaryColor3ubv(&self, v: *const GLubyte) -> Result<()>;
5415
5416	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3ui.xhtml>
5417	fn glSecondaryColor3ui(&self, red: GLuint, green: GLuint, blue: GLuint) -> Result<()>;
5418
5419	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3uiv.xhtml>
5420	fn glSecondaryColor3uiv(&self, v: *const GLuint) -> Result<()>;
5421
5422	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3us.xhtml>
5423	fn glSecondaryColor3us(&self, red: GLushort, green: GLushort, blue: GLushort) -> Result<()>;
5424
5425	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3usv.xhtml>
5426	fn glSecondaryColor3usv(&self, v: *const GLushort) -> Result<()>;
5427
5428	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColorPointer.xhtml>
5429	fn glSecondaryColorPointer(&self, size: GLint, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()>;
5430
5431	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2d.xhtml>
5432	fn glWindowPos2d(&self, x: GLdouble, y: GLdouble) -> Result<()>;
5433
5434	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2dv.xhtml>
5435	fn glWindowPos2dv(&self, v: *const GLdouble) -> Result<()>;
5436
5437	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2f.xhtml>
5438	fn glWindowPos2f(&self, x: GLfloat, y: GLfloat) -> Result<()>;
5439
5440	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2fv.xhtml>
5441	fn glWindowPos2fv(&self, v: *const GLfloat) -> Result<()>;
5442
5443	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2i.xhtml>
5444	fn glWindowPos2i(&self, x: GLint, y: GLint) -> Result<()>;
5445
5446	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2iv.xhtml>
5447	fn glWindowPos2iv(&self, v: *const GLint) -> Result<()>;
5448
5449	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2s.xhtml>
5450	fn glWindowPos2s(&self, x: GLshort, y: GLshort) -> Result<()>;
5451
5452	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2sv.xhtml>
5453	fn glWindowPos2sv(&self, v: *const GLshort) -> Result<()>;
5454
5455	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3d.xhtml>
5456	fn glWindowPos3d(&self, x: GLdouble, y: GLdouble, z: GLdouble) -> Result<()>;
5457
5458	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3dv.xhtml>
5459	fn glWindowPos3dv(&self, v: *const GLdouble) -> Result<()>;
5460
5461	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3f.xhtml>
5462	fn glWindowPos3f(&self, x: GLfloat, y: GLfloat, z: GLfloat) -> Result<()>;
5463
5464	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3fv.xhtml>
5465	fn glWindowPos3fv(&self, v: *const GLfloat) -> Result<()>;
5466
5467	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3i.xhtml>
5468	fn glWindowPos3i(&self, x: GLint, y: GLint, z: GLint) -> Result<()>;
5469
5470	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3iv.xhtml>
5471	fn glWindowPos3iv(&self, v: *const GLint) -> Result<()>;
5472
5473	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3s.xhtml>
5474	fn glWindowPos3s(&self, x: GLshort, y: GLshort, z: GLshort) -> Result<()>;
5475
5476	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3sv.xhtml>
5477	fn glWindowPos3sv(&self, v: *const GLshort) -> Result<()>;
5478
5479	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendColor.xhtml>
5480	fn glBlendColor(&self, red: GLfloat, green: GLfloat, blue: GLfloat, alpha: GLfloat) -> Result<()>;
5481
5482	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendEquation.xhtml>
5483	fn glBlendEquation(&self, mode: GLenum) -> Result<()>;
5484}
5485/// Functions from OpenGL version 1.4
5486#[derive(Clone, Copy, PartialEq, Eq, Hash)]
5487pub struct Version14 {
5488	/// Is OpenGL version 1.4 available
5489	available: bool,
5490
5491	/// The function pointer to `glGetError()`
5492	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
5493	pub geterror: PFNGLGETERRORPROC,
5494
5495	/// The function pointer to `glBlendFuncSeparate()`
5496	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendFuncSeparate.xhtml>
5497	pub blendfuncseparate: PFNGLBLENDFUNCSEPARATEPROC,
5498
5499	/// The function pointer to `glMultiDrawArrays()`
5500	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawArrays.xhtml>
5501	pub multidrawarrays: PFNGLMULTIDRAWARRAYSPROC,
5502
5503	/// The function pointer to `glMultiDrawElements()`
5504	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawElements.xhtml>
5505	pub multidrawelements: PFNGLMULTIDRAWELEMENTSPROC,
5506
5507	/// The function pointer to `glPointParameterf()`
5508	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPointParameterf.xhtml>
5509	pub pointparameterf: PFNGLPOINTPARAMETERFPROC,
5510
5511	/// The function pointer to `glPointParameterfv()`
5512	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPointParameterfv.xhtml>
5513	pub pointparameterfv: PFNGLPOINTPARAMETERFVPROC,
5514
5515	/// The function pointer to `glPointParameteri()`
5516	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPointParameteri.xhtml>
5517	pub pointparameteri: PFNGLPOINTPARAMETERIPROC,
5518
5519	/// The function pointer to `glPointParameteriv()`
5520	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPointParameteriv.xhtml>
5521	pub pointparameteriv: PFNGLPOINTPARAMETERIVPROC,
5522
5523	/// The function pointer to `glFogCoordf()`
5524	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFogCoordf.xhtml>
5525	pub fogcoordf: PFNGLFOGCOORDFPROC,
5526
5527	/// The function pointer to `glFogCoordfv()`
5528	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFogCoordfv.xhtml>
5529	pub fogcoordfv: PFNGLFOGCOORDFVPROC,
5530
5531	/// The function pointer to `glFogCoordd()`
5532	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFogCoordd.xhtml>
5533	pub fogcoordd: PFNGLFOGCOORDDPROC,
5534
5535	/// The function pointer to `glFogCoorddv()`
5536	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFogCoorddv.xhtml>
5537	pub fogcoorddv: PFNGLFOGCOORDDVPROC,
5538
5539	/// The function pointer to `glFogCoordPointer()`
5540	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFogCoordPointer.xhtml>
5541	pub fogcoordpointer: PFNGLFOGCOORDPOINTERPROC,
5542
5543	/// The function pointer to `glSecondaryColor3b()`
5544	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3b.xhtml>
5545	pub secondarycolor3b: PFNGLSECONDARYCOLOR3BPROC,
5546
5547	/// The function pointer to `glSecondaryColor3bv()`
5548	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3bv.xhtml>
5549	pub secondarycolor3bv: PFNGLSECONDARYCOLOR3BVPROC,
5550
5551	/// The function pointer to `glSecondaryColor3d()`
5552	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3d.xhtml>
5553	pub secondarycolor3d: PFNGLSECONDARYCOLOR3DPROC,
5554
5555	/// The function pointer to `glSecondaryColor3dv()`
5556	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3dv.xhtml>
5557	pub secondarycolor3dv: PFNGLSECONDARYCOLOR3DVPROC,
5558
5559	/// The function pointer to `glSecondaryColor3f()`
5560	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3f.xhtml>
5561	pub secondarycolor3f: PFNGLSECONDARYCOLOR3FPROC,
5562
5563	/// The function pointer to `glSecondaryColor3fv()`
5564	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3fv.xhtml>
5565	pub secondarycolor3fv: PFNGLSECONDARYCOLOR3FVPROC,
5566
5567	/// The function pointer to `glSecondaryColor3i()`
5568	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3i.xhtml>
5569	pub secondarycolor3i: PFNGLSECONDARYCOLOR3IPROC,
5570
5571	/// The function pointer to `glSecondaryColor3iv()`
5572	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3iv.xhtml>
5573	pub secondarycolor3iv: PFNGLSECONDARYCOLOR3IVPROC,
5574
5575	/// The function pointer to `glSecondaryColor3s()`
5576	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3s.xhtml>
5577	pub secondarycolor3s: PFNGLSECONDARYCOLOR3SPROC,
5578
5579	/// The function pointer to `glSecondaryColor3sv()`
5580	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3sv.xhtml>
5581	pub secondarycolor3sv: PFNGLSECONDARYCOLOR3SVPROC,
5582
5583	/// The function pointer to `glSecondaryColor3ub()`
5584	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3ub.xhtml>
5585	pub secondarycolor3ub: PFNGLSECONDARYCOLOR3UBPROC,
5586
5587	/// The function pointer to `glSecondaryColor3ubv()`
5588	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3ubv.xhtml>
5589	pub secondarycolor3ubv: PFNGLSECONDARYCOLOR3UBVPROC,
5590
5591	/// The function pointer to `glSecondaryColor3ui()`
5592	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3ui.xhtml>
5593	pub secondarycolor3ui: PFNGLSECONDARYCOLOR3UIPROC,
5594
5595	/// The function pointer to `glSecondaryColor3uiv()`
5596	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3uiv.xhtml>
5597	pub secondarycolor3uiv: PFNGLSECONDARYCOLOR3UIVPROC,
5598
5599	/// The function pointer to `glSecondaryColor3us()`
5600	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3us.xhtml>
5601	pub secondarycolor3us: PFNGLSECONDARYCOLOR3USPROC,
5602
5603	/// The function pointer to `glSecondaryColor3usv()`
5604	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3usv.xhtml>
5605	pub secondarycolor3usv: PFNGLSECONDARYCOLOR3USVPROC,
5606
5607	/// The function pointer to `glSecondaryColorPointer()`
5608	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColorPointer.xhtml>
5609	pub secondarycolorpointer: PFNGLSECONDARYCOLORPOINTERPROC,
5610
5611	/// The function pointer to `glWindowPos2d()`
5612	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2d.xhtml>
5613	pub windowpos2d: PFNGLWINDOWPOS2DPROC,
5614
5615	/// The function pointer to `glWindowPos2dv()`
5616	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2dv.xhtml>
5617	pub windowpos2dv: PFNGLWINDOWPOS2DVPROC,
5618
5619	/// The function pointer to `glWindowPos2f()`
5620	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2f.xhtml>
5621	pub windowpos2f: PFNGLWINDOWPOS2FPROC,
5622
5623	/// The function pointer to `glWindowPos2fv()`
5624	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2fv.xhtml>
5625	pub windowpos2fv: PFNGLWINDOWPOS2FVPROC,
5626
5627	/// The function pointer to `glWindowPos2i()`
5628	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2i.xhtml>
5629	pub windowpos2i: PFNGLWINDOWPOS2IPROC,
5630
5631	/// The function pointer to `glWindowPos2iv()`
5632	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2iv.xhtml>
5633	pub windowpos2iv: PFNGLWINDOWPOS2IVPROC,
5634
5635	/// The function pointer to `glWindowPos2s()`
5636	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2s.xhtml>
5637	pub windowpos2s: PFNGLWINDOWPOS2SPROC,
5638
5639	/// The function pointer to `glWindowPos2sv()`
5640	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2sv.xhtml>
5641	pub windowpos2sv: PFNGLWINDOWPOS2SVPROC,
5642
5643	/// The function pointer to `glWindowPos3d()`
5644	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3d.xhtml>
5645	pub windowpos3d: PFNGLWINDOWPOS3DPROC,
5646
5647	/// The function pointer to `glWindowPos3dv()`
5648	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3dv.xhtml>
5649	pub windowpos3dv: PFNGLWINDOWPOS3DVPROC,
5650
5651	/// The function pointer to `glWindowPos3f()`
5652	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3f.xhtml>
5653	pub windowpos3f: PFNGLWINDOWPOS3FPROC,
5654
5655	/// The function pointer to `glWindowPos3fv()`
5656	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3fv.xhtml>
5657	pub windowpos3fv: PFNGLWINDOWPOS3FVPROC,
5658
5659	/// The function pointer to `glWindowPos3i()`
5660	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3i.xhtml>
5661	pub windowpos3i: PFNGLWINDOWPOS3IPROC,
5662
5663	/// The function pointer to `glWindowPos3iv()`
5664	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3iv.xhtml>
5665	pub windowpos3iv: PFNGLWINDOWPOS3IVPROC,
5666
5667	/// The function pointer to `glWindowPos3s()`
5668	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3s.xhtml>
5669	pub windowpos3s: PFNGLWINDOWPOS3SPROC,
5670
5671	/// The function pointer to `glWindowPos3sv()`
5672	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3sv.xhtml>
5673	pub windowpos3sv: PFNGLWINDOWPOS3SVPROC,
5674
5675	/// The function pointer to `glBlendColor()`
5676	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendColor.xhtml>
5677	pub blendcolor: PFNGLBLENDCOLORPROC,
5678
5679	/// The function pointer to `glBlendEquation()`
5680	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendEquation.xhtml>
5681	pub blendequation: PFNGLBLENDEQUATIONPROC,
5682}
5683
5684impl GL_1_4 for Version14 {
5685	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
5686	#[inline(always)]
5687	fn glGetError(&self) -> GLenum {
5688		(self.geterror)()
5689	}
5690	#[inline(always)]
5691	fn glBlendFuncSeparate(&self, sfactorRGB: GLenum, dfactorRGB: GLenum, sfactorAlpha: GLenum, dfactorAlpha: GLenum) -> Result<()> {
5692		let ret = process_catch("glBlendFuncSeparate", catch_unwind(||(self.blendfuncseparate)(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha)));
5693		#[cfg(feature = "diagnose")]
5694		if let Ok(ret) = ret {
5695			return to_result("glBlendFuncSeparate", ret, self.glGetError());
5696		} else {
5697			return ret
5698		}
5699		#[cfg(not(feature = "diagnose"))]
5700		return ret;
5701	}
5702	#[inline(always)]
5703	fn glMultiDrawArrays(&self, mode: GLenum, first: *const GLint, count: *const GLsizei, drawcount: GLsizei) -> Result<()> {
5704		let ret = process_catch("glMultiDrawArrays", catch_unwind(||(self.multidrawarrays)(mode, first, count, drawcount)));
5705		#[cfg(feature = "diagnose")]
5706		if let Ok(ret) = ret {
5707			return to_result("glMultiDrawArrays", ret, self.glGetError());
5708		} else {
5709			return ret
5710		}
5711		#[cfg(not(feature = "diagnose"))]
5712		return ret;
5713	}
5714	#[inline(always)]
5715	fn glMultiDrawElements(&self, mode: GLenum, count: *const GLsizei, type_: GLenum, indices: *const *const c_void, drawcount: GLsizei) -> Result<()> {
5716		let ret = process_catch("glMultiDrawElements", catch_unwind(||(self.multidrawelements)(mode, count, type_, indices, drawcount)));
5717		#[cfg(feature = "diagnose")]
5718		if let Ok(ret) = ret {
5719			return to_result("glMultiDrawElements", ret, self.glGetError());
5720		} else {
5721			return ret
5722		}
5723		#[cfg(not(feature = "diagnose"))]
5724		return ret;
5725	}
5726	#[inline(always)]
5727	fn glPointParameterf(&self, pname: GLenum, param: GLfloat) -> Result<()> {
5728		let ret = process_catch("glPointParameterf", catch_unwind(||(self.pointparameterf)(pname, param)));
5729		#[cfg(feature = "diagnose")]
5730		if let Ok(ret) = ret {
5731			return to_result("glPointParameterf", ret, self.glGetError());
5732		} else {
5733			return ret
5734		}
5735		#[cfg(not(feature = "diagnose"))]
5736		return ret;
5737	}
5738	#[inline(always)]
5739	fn glPointParameterfv(&self, pname: GLenum, params: *const GLfloat) -> Result<()> {
5740		let ret = process_catch("glPointParameterfv", catch_unwind(||(self.pointparameterfv)(pname, params)));
5741		#[cfg(feature = "diagnose")]
5742		if let Ok(ret) = ret {
5743			return to_result("glPointParameterfv", ret, self.glGetError());
5744		} else {
5745			return ret
5746		}
5747		#[cfg(not(feature = "diagnose"))]
5748		return ret;
5749	}
5750	#[inline(always)]
5751	fn glPointParameteri(&self, pname: GLenum, param: GLint) -> Result<()> {
5752		let ret = process_catch("glPointParameteri", catch_unwind(||(self.pointparameteri)(pname, param)));
5753		#[cfg(feature = "diagnose")]
5754		if let Ok(ret) = ret {
5755			return to_result("glPointParameteri", ret, self.glGetError());
5756		} else {
5757			return ret
5758		}
5759		#[cfg(not(feature = "diagnose"))]
5760		return ret;
5761	}
5762	#[inline(always)]
5763	fn glPointParameteriv(&self, pname: GLenum, params: *const GLint) -> Result<()> {
5764		let ret = process_catch("glPointParameteriv", catch_unwind(||(self.pointparameteriv)(pname, params)));
5765		#[cfg(feature = "diagnose")]
5766		if let Ok(ret) = ret {
5767			return to_result("glPointParameteriv", ret, self.glGetError());
5768		} else {
5769			return ret
5770		}
5771		#[cfg(not(feature = "diagnose"))]
5772		return ret;
5773	}
5774	#[inline(always)]
5775	fn glFogCoordf(&self, coord: GLfloat) -> Result<()> {
5776		let ret = process_catch("glFogCoordf", catch_unwind(||(self.fogcoordf)(coord)));
5777		#[cfg(feature = "diagnose")]
5778		if let Ok(ret) = ret {
5779			return to_result("glFogCoordf", ret, self.glGetError());
5780		} else {
5781			return ret
5782		}
5783		#[cfg(not(feature = "diagnose"))]
5784		return ret;
5785	}
5786	#[inline(always)]
5787	fn glFogCoordfv(&self, coord: *const GLfloat) -> Result<()> {
5788		let ret = process_catch("glFogCoordfv", catch_unwind(||(self.fogcoordfv)(coord)));
5789		#[cfg(feature = "diagnose")]
5790		if let Ok(ret) = ret {
5791			return to_result("glFogCoordfv", ret, self.glGetError());
5792		} else {
5793			return ret
5794		}
5795		#[cfg(not(feature = "diagnose"))]
5796		return ret;
5797	}
5798	#[inline(always)]
5799	fn glFogCoordd(&self, coord: GLdouble) -> Result<()> {
5800		let ret = process_catch("glFogCoordd", catch_unwind(||(self.fogcoordd)(coord)));
5801		#[cfg(feature = "diagnose")]
5802		if let Ok(ret) = ret {
5803			return to_result("glFogCoordd", ret, self.glGetError());
5804		} else {
5805			return ret
5806		}
5807		#[cfg(not(feature = "diagnose"))]
5808		return ret;
5809	}
5810	#[inline(always)]
5811	fn glFogCoorddv(&self, coord: *const GLdouble) -> Result<()> {
5812		let ret = process_catch("glFogCoorddv", catch_unwind(||(self.fogcoorddv)(coord)));
5813		#[cfg(feature = "diagnose")]
5814		if let Ok(ret) = ret {
5815			return to_result("glFogCoorddv", ret, self.glGetError());
5816		} else {
5817			return ret
5818		}
5819		#[cfg(not(feature = "diagnose"))]
5820		return ret;
5821	}
5822	#[inline(always)]
5823	fn glFogCoordPointer(&self, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()> {
5824		let ret = process_catch("glFogCoordPointer", catch_unwind(||(self.fogcoordpointer)(type_, stride, pointer)));
5825		#[cfg(feature = "diagnose")]
5826		if let Ok(ret) = ret {
5827			return to_result("glFogCoordPointer", ret, self.glGetError());
5828		} else {
5829			return ret
5830		}
5831		#[cfg(not(feature = "diagnose"))]
5832		return ret;
5833	}
5834	#[inline(always)]
5835	fn glSecondaryColor3b(&self, red: GLbyte, green: GLbyte, blue: GLbyte) -> Result<()> {
5836		let ret = process_catch("glSecondaryColor3b", catch_unwind(||(self.secondarycolor3b)(red, green, blue)));
5837		#[cfg(feature = "diagnose")]
5838		if let Ok(ret) = ret {
5839			return to_result("glSecondaryColor3b", ret, self.glGetError());
5840		} else {
5841			return ret
5842		}
5843		#[cfg(not(feature = "diagnose"))]
5844		return ret;
5845	}
5846	#[inline(always)]
5847	fn glSecondaryColor3bv(&self, v: *const GLbyte) -> Result<()> {
5848		let ret = process_catch("glSecondaryColor3bv", catch_unwind(||(self.secondarycolor3bv)(v)));
5849		#[cfg(feature = "diagnose")]
5850		if let Ok(ret) = ret {
5851			return to_result("glSecondaryColor3bv", ret, self.glGetError());
5852		} else {
5853			return ret
5854		}
5855		#[cfg(not(feature = "diagnose"))]
5856		return ret;
5857	}
5858	#[inline(always)]
5859	fn glSecondaryColor3d(&self, red: GLdouble, green: GLdouble, blue: GLdouble) -> Result<()> {
5860		let ret = process_catch("glSecondaryColor3d", catch_unwind(||(self.secondarycolor3d)(red, green, blue)));
5861		#[cfg(feature = "diagnose")]
5862		if let Ok(ret) = ret {
5863			return to_result("glSecondaryColor3d", ret, self.glGetError());
5864		} else {
5865			return ret
5866		}
5867		#[cfg(not(feature = "diagnose"))]
5868		return ret;
5869	}
5870	#[inline(always)]
5871	fn glSecondaryColor3dv(&self, v: *const GLdouble) -> Result<()> {
5872		let ret = process_catch("glSecondaryColor3dv", catch_unwind(||(self.secondarycolor3dv)(v)));
5873		#[cfg(feature = "diagnose")]
5874		if let Ok(ret) = ret {
5875			return to_result("glSecondaryColor3dv", ret, self.glGetError());
5876		} else {
5877			return ret
5878		}
5879		#[cfg(not(feature = "diagnose"))]
5880		return ret;
5881	}
5882	#[inline(always)]
5883	fn glSecondaryColor3f(&self, red: GLfloat, green: GLfloat, blue: GLfloat) -> Result<()> {
5884		let ret = process_catch("glSecondaryColor3f", catch_unwind(||(self.secondarycolor3f)(red, green, blue)));
5885		#[cfg(feature = "diagnose")]
5886		if let Ok(ret) = ret {
5887			return to_result("glSecondaryColor3f", ret, self.glGetError());
5888		} else {
5889			return ret
5890		}
5891		#[cfg(not(feature = "diagnose"))]
5892		return ret;
5893	}
5894	#[inline(always)]
5895	fn glSecondaryColor3fv(&self, v: *const GLfloat) -> Result<()> {
5896		let ret = process_catch("glSecondaryColor3fv", catch_unwind(||(self.secondarycolor3fv)(v)));
5897		#[cfg(feature = "diagnose")]
5898		if let Ok(ret) = ret {
5899			return to_result("glSecondaryColor3fv", ret, self.glGetError());
5900		} else {
5901			return ret
5902		}
5903		#[cfg(not(feature = "diagnose"))]
5904		return ret;
5905	}
5906	#[inline(always)]
5907	fn glSecondaryColor3i(&self, red: GLint, green: GLint, blue: GLint) -> Result<()> {
5908		let ret = process_catch("glSecondaryColor3i", catch_unwind(||(self.secondarycolor3i)(red, green, blue)));
5909		#[cfg(feature = "diagnose")]
5910		if let Ok(ret) = ret {
5911			return to_result("glSecondaryColor3i", ret, self.glGetError());
5912		} else {
5913			return ret
5914		}
5915		#[cfg(not(feature = "diagnose"))]
5916		return ret;
5917	}
5918	#[inline(always)]
5919	fn glSecondaryColor3iv(&self, v: *const GLint) -> Result<()> {
5920		let ret = process_catch("glSecondaryColor3iv", catch_unwind(||(self.secondarycolor3iv)(v)));
5921		#[cfg(feature = "diagnose")]
5922		if let Ok(ret) = ret {
5923			return to_result("glSecondaryColor3iv", ret, self.glGetError());
5924		} else {
5925			return ret
5926		}
5927		#[cfg(not(feature = "diagnose"))]
5928		return ret;
5929	}
5930	#[inline(always)]
5931	fn glSecondaryColor3s(&self, red: GLshort, green: GLshort, blue: GLshort) -> Result<()> {
5932		let ret = process_catch("glSecondaryColor3s", catch_unwind(||(self.secondarycolor3s)(red, green, blue)));
5933		#[cfg(feature = "diagnose")]
5934		if let Ok(ret) = ret {
5935			return to_result("glSecondaryColor3s", ret, self.glGetError());
5936		} else {
5937			return ret
5938		}
5939		#[cfg(not(feature = "diagnose"))]
5940		return ret;
5941	}
5942	#[inline(always)]
5943	fn glSecondaryColor3sv(&self, v: *const GLshort) -> Result<()> {
5944		let ret = process_catch("glSecondaryColor3sv", catch_unwind(||(self.secondarycolor3sv)(v)));
5945		#[cfg(feature = "diagnose")]
5946		if let Ok(ret) = ret {
5947			return to_result("glSecondaryColor3sv", ret, self.glGetError());
5948		} else {
5949			return ret
5950		}
5951		#[cfg(not(feature = "diagnose"))]
5952		return ret;
5953	}
5954	#[inline(always)]
5955	fn glSecondaryColor3ub(&self, red: GLubyte, green: GLubyte, blue: GLubyte) -> Result<()> {
5956		let ret = process_catch("glSecondaryColor3ub", catch_unwind(||(self.secondarycolor3ub)(red, green, blue)));
5957		#[cfg(feature = "diagnose")]
5958		if let Ok(ret) = ret {
5959			return to_result("glSecondaryColor3ub", ret, self.glGetError());
5960		} else {
5961			return ret
5962		}
5963		#[cfg(not(feature = "diagnose"))]
5964		return ret;
5965	}
5966	#[inline(always)]
5967	fn glSecondaryColor3ubv(&self, v: *const GLubyte) -> Result<()> {
5968		let ret = process_catch("glSecondaryColor3ubv", catch_unwind(||(self.secondarycolor3ubv)(v)));
5969		#[cfg(feature = "diagnose")]
5970		if let Ok(ret) = ret {
5971			return to_result("glSecondaryColor3ubv", ret, self.glGetError());
5972		} else {
5973			return ret
5974		}
5975		#[cfg(not(feature = "diagnose"))]
5976		return ret;
5977	}
5978	#[inline(always)]
5979	fn glSecondaryColor3ui(&self, red: GLuint, green: GLuint, blue: GLuint) -> Result<()> {
5980		let ret = process_catch("glSecondaryColor3ui", catch_unwind(||(self.secondarycolor3ui)(red, green, blue)));
5981		#[cfg(feature = "diagnose")]
5982		if let Ok(ret) = ret {
5983			return to_result("glSecondaryColor3ui", ret, self.glGetError());
5984		} else {
5985			return ret
5986		}
5987		#[cfg(not(feature = "diagnose"))]
5988		return ret;
5989	}
5990	#[inline(always)]
5991	fn glSecondaryColor3uiv(&self, v: *const GLuint) -> Result<()> {
5992		let ret = process_catch("glSecondaryColor3uiv", catch_unwind(||(self.secondarycolor3uiv)(v)));
5993		#[cfg(feature = "diagnose")]
5994		if let Ok(ret) = ret {
5995			return to_result("glSecondaryColor3uiv", ret, self.glGetError());
5996		} else {
5997			return ret
5998		}
5999		#[cfg(not(feature = "diagnose"))]
6000		return ret;
6001	}
6002	#[inline(always)]
6003	fn glSecondaryColor3us(&self, red: GLushort, green: GLushort, blue: GLushort) -> Result<()> {
6004		let ret = process_catch("glSecondaryColor3us", catch_unwind(||(self.secondarycolor3us)(red, green, blue)));
6005		#[cfg(feature = "diagnose")]
6006		if let Ok(ret) = ret {
6007			return to_result("glSecondaryColor3us", ret, self.glGetError());
6008		} else {
6009			return ret
6010		}
6011		#[cfg(not(feature = "diagnose"))]
6012		return ret;
6013	}
6014	#[inline(always)]
6015	fn glSecondaryColor3usv(&self, v: *const GLushort) -> Result<()> {
6016		let ret = process_catch("glSecondaryColor3usv", catch_unwind(||(self.secondarycolor3usv)(v)));
6017		#[cfg(feature = "diagnose")]
6018		if let Ok(ret) = ret {
6019			return to_result("glSecondaryColor3usv", ret, self.glGetError());
6020		} else {
6021			return ret
6022		}
6023		#[cfg(not(feature = "diagnose"))]
6024		return ret;
6025	}
6026	#[inline(always)]
6027	fn glSecondaryColorPointer(&self, size: GLint, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()> {
6028		let ret = process_catch("glSecondaryColorPointer", catch_unwind(||(self.secondarycolorpointer)(size, type_, stride, pointer)));
6029		#[cfg(feature = "diagnose")]
6030		if let Ok(ret) = ret {
6031			return to_result("glSecondaryColorPointer", ret, self.glGetError());
6032		} else {
6033			return ret
6034		}
6035		#[cfg(not(feature = "diagnose"))]
6036		return ret;
6037	}
6038	#[inline(always)]
6039	fn glWindowPos2d(&self, x: GLdouble, y: GLdouble) -> Result<()> {
6040		let ret = process_catch("glWindowPos2d", catch_unwind(||(self.windowpos2d)(x, y)));
6041		#[cfg(feature = "diagnose")]
6042		if let Ok(ret) = ret {
6043			return to_result("glWindowPos2d", ret, self.glGetError());
6044		} else {
6045			return ret
6046		}
6047		#[cfg(not(feature = "diagnose"))]
6048		return ret;
6049	}
6050	#[inline(always)]
6051	fn glWindowPos2dv(&self, v: *const GLdouble) -> Result<()> {
6052		let ret = process_catch("glWindowPos2dv", catch_unwind(||(self.windowpos2dv)(v)));
6053		#[cfg(feature = "diagnose")]
6054		if let Ok(ret) = ret {
6055			return to_result("glWindowPos2dv", ret, self.glGetError());
6056		} else {
6057			return ret
6058		}
6059		#[cfg(not(feature = "diagnose"))]
6060		return ret;
6061	}
6062	#[inline(always)]
6063	fn glWindowPos2f(&self, x: GLfloat, y: GLfloat) -> Result<()> {
6064		let ret = process_catch("glWindowPos2f", catch_unwind(||(self.windowpos2f)(x, y)));
6065		#[cfg(feature = "diagnose")]
6066		if let Ok(ret) = ret {
6067			return to_result("glWindowPos2f", ret, self.glGetError());
6068		} else {
6069			return ret
6070		}
6071		#[cfg(not(feature = "diagnose"))]
6072		return ret;
6073	}
6074	#[inline(always)]
6075	fn glWindowPos2fv(&self, v: *const GLfloat) -> Result<()> {
6076		let ret = process_catch("glWindowPos2fv", catch_unwind(||(self.windowpos2fv)(v)));
6077		#[cfg(feature = "diagnose")]
6078		if let Ok(ret) = ret {
6079			return to_result("glWindowPos2fv", ret, self.glGetError());
6080		} else {
6081			return ret
6082		}
6083		#[cfg(not(feature = "diagnose"))]
6084		return ret;
6085	}
6086	#[inline(always)]
6087	fn glWindowPos2i(&self, x: GLint, y: GLint) -> Result<()> {
6088		let ret = process_catch("glWindowPos2i", catch_unwind(||(self.windowpos2i)(x, y)));
6089		#[cfg(feature = "diagnose")]
6090		if let Ok(ret) = ret {
6091			return to_result("glWindowPos2i", ret, self.glGetError());
6092		} else {
6093			return ret
6094		}
6095		#[cfg(not(feature = "diagnose"))]
6096		return ret;
6097	}
6098	#[inline(always)]
6099	fn glWindowPos2iv(&self, v: *const GLint) -> Result<()> {
6100		let ret = process_catch("glWindowPos2iv", catch_unwind(||(self.windowpos2iv)(v)));
6101		#[cfg(feature = "diagnose")]
6102		if let Ok(ret) = ret {
6103			return to_result("glWindowPos2iv", ret, self.glGetError());
6104		} else {
6105			return ret
6106		}
6107		#[cfg(not(feature = "diagnose"))]
6108		return ret;
6109	}
6110	#[inline(always)]
6111	fn glWindowPos2s(&self, x: GLshort, y: GLshort) -> Result<()> {
6112		let ret = process_catch("glWindowPos2s", catch_unwind(||(self.windowpos2s)(x, y)));
6113		#[cfg(feature = "diagnose")]
6114		if let Ok(ret) = ret {
6115			return to_result("glWindowPos2s", ret, self.glGetError());
6116		} else {
6117			return ret
6118		}
6119		#[cfg(not(feature = "diagnose"))]
6120		return ret;
6121	}
6122	#[inline(always)]
6123	fn glWindowPos2sv(&self, v: *const GLshort) -> Result<()> {
6124		let ret = process_catch("glWindowPos2sv", catch_unwind(||(self.windowpos2sv)(v)));
6125		#[cfg(feature = "diagnose")]
6126		if let Ok(ret) = ret {
6127			return to_result("glWindowPos2sv", ret, self.glGetError());
6128		} else {
6129			return ret
6130		}
6131		#[cfg(not(feature = "diagnose"))]
6132		return ret;
6133	}
6134	#[inline(always)]
6135	fn glWindowPos3d(&self, x: GLdouble, y: GLdouble, z: GLdouble) -> Result<()> {
6136		let ret = process_catch("glWindowPos3d", catch_unwind(||(self.windowpos3d)(x, y, z)));
6137		#[cfg(feature = "diagnose")]
6138		if let Ok(ret) = ret {
6139			return to_result("glWindowPos3d", ret, self.glGetError());
6140		} else {
6141			return ret
6142		}
6143		#[cfg(not(feature = "diagnose"))]
6144		return ret;
6145	}
6146	#[inline(always)]
6147	fn glWindowPos3dv(&self, v: *const GLdouble) -> Result<()> {
6148		let ret = process_catch("glWindowPos3dv", catch_unwind(||(self.windowpos3dv)(v)));
6149		#[cfg(feature = "diagnose")]
6150		if let Ok(ret) = ret {
6151			return to_result("glWindowPos3dv", ret, self.glGetError());
6152		} else {
6153			return ret
6154		}
6155		#[cfg(not(feature = "diagnose"))]
6156		return ret;
6157	}
6158	#[inline(always)]
6159	fn glWindowPos3f(&self, x: GLfloat, y: GLfloat, z: GLfloat) -> Result<()> {
6160		let ret = process_catch("glWindowPos3f", catch_unwind(||(self.windowpos3f)(x, y, z)));
6161		#[cfg(feature = "diagnose")]
6162		if let Ok(ret) = ret {
6163			return to_result("glWindowPos3f", ret, self.glGetError());
6164		} else {
6165			return ret
6166		}
6167		#[cfg(not(feature = "diagnose"))]
6168		return ret;
6169	}
6170	#[inline(always)]
6171	fn glWindowPos3fv(&self, v: *const GLfloat) -> Result<()> {
6172		let ret = process_catch("glWindowPos3fv", catch_unwind(||(self.windowpos3fv)(v)));
6173		#[cfg(feature = "diagnose")]
6174		if let Ok(ret) = ret {
6175			return to_result("glWindowPos3fv", ret, self.glGetError());
6176		} else {
6177			return ret
6178		}
6179		#[cfg(not(feature = "diagnose"))]
6180		return ret;
6181	}
6182	#[inline(always)]
6183	fn glWindowPos3i(&self, x: GLint, y: GLint, z: GLint) -> Result<()> {
6184		let ret = process_catch("glWindowPos3i", catch_unwind(||(self.windowpos3i)(x, y, z)));
6185		#[cfg(feature = "diagnose")]
6186		if let Ok(ret) = ret {
6187			return to_result("glWindowPos3i", ret, self.glGetError());
6188		} else {
6189			return ret
6190		}
6191		#[cfg(not(feature = "diagnose"))]
6192		return ret;
6193	}
6194	#[inline(always)]
6195	fn glWindowPos3iv(&self, v: *const GLint) -> Result<()> {
6196		let ret = process_catch("glWindowPos3iv", catch_unwind(||(self.windowpos3iv)(v)));
6197		#[cfg(feature = "diagnose")]
6198		if let Ok(ret) = ret {
6199			return to_result("glWindowPos3iv", ret, self.glGetError());
6200		} else {
6201			return ret
6202		}
6203		#[cfg(not(feature = "diagnose"))]
6204		return ret;
6205	}
6206	#[inline(always)]
6207	fn glWindowPos3s(&self, x: GLshort, y: GLshort, z: GLshort) -> Result<()> {
6208		let ret = process_catch("glWindowPos3s", catch_unwind(||(self.windowpos3s)(x, y, z)));
6209		#[cfg(feature = "diagnose")]
6210		if let Ok(ret) = ret {
6211			return to_result("glWindowPos3s", ret, self.glGetError());
6212		} else {
6213			return ret
6214		}
6215		#[cfg(not(feature = "diagnose"))]
6216		return ret;
6217	}
6218	#[inline(always)]
6219	fn glWindowPos3sv(&self, v: *const GLshort) -> Result<()> {
6220		let ret = process_catch("glWindowPos3sv", catch_unwind(||(self.windowpos3sv)(v)));
6221		#[cfg(feature = "diagnose")]
6222		if let Ok(ret) = ret {
6223			return to_result("glWindowPos3sv", ret, self.glGetError());
6224		} else {
6225			return ret
6226		}
6227		#[cfg(not(feature = "diagnose"))]
6228		return ret;
6229	}
6230	#[inline(always)]
6231	fn glBlendColor(&self, red: GLfloat, green: GLfloat, blue: GLfloat, alpha: GLfloat) -> Result<()> {
6232		let ret = process_catch("glBlendColor", catch_unwind(||(self.blendcolor)(red, green, blue, alpha)));
6233		#[cfg(feature = "diagnose")]
6234		if let Ok(ret) = ret {
6235			return to_result("glBlendColor", ret, self.glGetError());
6236		} else {
6237			return ret
6238		}
6239		#[cfg(not(feature = "diagnose"))]
6240		return ret;
6241	}
6242	#[inline(always)]
6243	fn glBlendEquation(&self, mode: GLenum) -> Result<()> {
6244		let ret = process_catch("glBlendEquation", catch_unwind(||(self.blendequation)(mode)));
6245		#[cfg(feature = "diagnose")]
6246		if let Ok(ret) = ret {
6247			return to_result("glBlendEquation", ret, self.glGetError());
6248		} else {
6249			return ret
6250		}
6251		#[cfg(not(feature = "diagnose"))]
6252		return ret;
6253	}
6254}
6255
6256impl Version14 {
6257	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
6258		let (_spec, major, minor, release) = base.get_version();
6259		if (major, minor, release) < (1, 4, 0) {
6260			return Self::default();
6261		}
6262		Self {
6263			available: true,
6264			geterror: {let proc = get_proc_address("glGetError"); if proc == null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
6265			blendfuncseparate: {let proc = get_proc_address("glBlendFuncSeparate"); if proc == null() {dummy_pfnglblendfuncseparateproc} else {unsafe{transmute(proc)}}},
6266			multidrawarrays: {let proc = get_proc_address("glMultiDrawArrays"); if proc == null() {dummy_pfnglmultidrawarraysproc} else {unsafe{transmute(proc)}}},
6267			multidrawelements: {let proc = get_proc_address("glMultiDrawElements"); if proc == null() {dummy_pfnglmultidrawelementsproc} else {unsafe{transmute(proc)}}},
6268			pointparameterf: {let proc = get_proc_address("glPointParameterf"); if proc == null() {dummy_pfnglpointparameterfproc} else {unsafe{transmute(proc)}}},
6269			pointparameterfv: {let proc = get_proc_address("glPointParameterfv"); if proc == null() {dummy_pfnglpointparameterfvproc} else {unsafe{transmute(proc)}}},
6270			pointparameteri: {let proc = get_proc_address("glPointParameteri"); if proc == null() {dummy_pfnglpointparameteriproc} else {unsafe{transmute(proc)}}},
6271			pointparameteriv: {let proc = get_proc_address("glPointParameteriv"); if proc == null() {dummy_pfnglpointparameterivproc} else {unsafe{transmute(proc)}}},
6272			fogcoordf: {let proc = get_proc_address("glFogCoordf"); if proc == null() {dummy_pfnglfogcoordfproc} else {unsafe{transmute(proc)}}},
6273			fogcoordfv: {let proc = get_proc_address("glFogCoordfv"); if proc == null() {dummy_pfnglfogcoordfvproc} else {unsafe{transmute(proc)}}},
6274			fogcoordd: {let proc = get_proc_address("glFogCoordd"); if proc == null() {dummy_pfnglfogcoorddproc} else {unsafe{transmute(proc)}}},
6275			fogcoorddv: {let proc = get_proc_address("glFogCoorddv"); if proc == null() {dummy_pfnglfogcoorddvproc} else {unsafe{transmute(proc)}}},
6276			fogcoordpointer: {let proc = get_proc_address("glFogCoordPointer"); if proc == null() {dummy_pfnglfogcoordpointerproc} else {unsafe{transmute(proc)}}},
6277			secondarycolor3b: {let proc = get_proc_address("glSecondaryColor3b"); if proc == null() {dummy_pfnglsecondarycolor3bproc} else {unsafe{transmute(proc)}}},
6278			secondarycolor3bv: {let proc = get_proc_address("glSecondaryColor3bv"); if proc == null() {dummy_pfnglsecondarycolor3bvproc} else {unsafe{transmute(proc)}}},
6279			secondarycolor3d: {let proc = get_proc_address("glSecondaryColor3d"); if proc == null() {dummy_pfnglsecondarycolor3dproc} else {unsafe{transmute(proc)}}},
6280			secondarycolor3dv: {let proc = get_proc_address("glSecondaryColor3dv"); if proc == null() {dummy_pfnglsecondarycolor3dvproc} else {unsafe{transmute(proc)}}},
6281			secondarycolor3f: {let proc = get_proc_address("glSecondaryColor3f"); if proc == null() {dummy_pfnglsecondarycolor3fproc} else {unsafe{transmute(proc)}}},
6282			secondarycolor3fv: {let proc = get_proc_address("glSecondaryColor3fv"); if proc == null() {dummy_pfnglsecondarycolor3fvproc} else {unsafe{transmute(proc)}}},
6283			secondarycolor3i: {let proc = get_proc_address("glSecondaryColor3i"); if proc == null() {dummy_pfnglsecondarycolor3iproc} else {unsafe{transmute(proc)}}},
6284			secondarycolor3iv: {let proc = get_proc_address("glSecondaryColor3iv"); if proc == null() {dummy_pfnglsecondarycolor3ivproc} else {unsafe{transmute(proc)}}},
6285			secondarycolor3s: {let proc = get_proc_address("glSecondaryColor3s"); if proc == null() {dummy_pfnglsecondarycolor3sproc} else {unsafe{transmute(proc)}}},
6286			secondarycolor3sv: {let proc = get_proc_address("glSecondaryColor3sv"); if proc == null() {dummy_pfnglsecondarycolor3svproc} else {unsafe{transmute(proc)}}},
6287			secondarycolor3ub: {let proc = get_proc_address("glSecondaryColor3ub"); if proc == null() {dummy_pfnglsecondarycolor3ubproc} else {unsafe{transmute(proc)}}},
6288			secondarycolor3ubv: {let proc = get_proc_address("glSecondaryColor3ubv"); if proc == null() {dummy_pfnglsecondarycolor3ubvproc} else {unsafe{transmute(proc)}}},
6289			secondarycolor3ui: {let proc = get_proc_address("glSecondaryColor3ui"); if proc == null() {dummy_pfnglsecondarycolor3uiproc} else {unsafe{transmute(proc)}}},
6290			secondarycolor3uiv: {let proc = get_proc_address("glSecondaryColor3uiv"); if proc == null() {dummy_pfnglsecondarycolor3uivproc} else {unsafe{transmute(proc)}}},
6291			secondarycolor3us: {let proc = get_proc_address("glSecondaryColor3us"); if proc == null() {dummy_pfnglsecondarycolor3usproc} else {unsafe{transmute(proc)}}},
6292			secondarycolor3usv: {let proc = get_proc_address("glSecondaryColor3usv"); if proc == null() {dummy_pfnglsecondarycolor3usvproc} else {unsafe{transmute(proc)}}},
6293			secondarycolorpointer: {let proc = get_proc_address("glSecondaryColorPointer"); if proc == null() {dummy_pfnglsecondarycolorpointerproc} else {unsafe{transmute(proc)}}},
6294			windowpos2d: {let proc = get_proc_address("glWindowPos2d"); if proc == null() {dummy_pfnglwindowpos2dproc} else {unsafe{transmute(proc)}}},
6295			windowpos2dv: {let proc = get_proc_address("glWindowPos2dv"); if proc == null() {dummy_pfnglwindowpos2dvproc} else {unsafe{transmute(proc)}}},
6296			windowpos2f: {let proc = get_proc_address("glWindowPos2f"); if proc == null() {dummy_pfnglwindowpos2fproc} else {unsafe{transmute(proc)}}},
6297			windowpos2fv: {let proc = get_proc_address("glWindowPos2fv"); if proc == null() {dummy_pfnglwindowpos2fvproc} else {unsafe{transmute(proc)}}},
6298			windowpos2i: {let proc = get_proc_address("glWindowPos2i"); if proc == null() {dummy_pfnglwindowpos2iproc} else {unsafe{transmute(proc)}}},
6299			windowpos2iv: {let proc = get_proc_address("glWindowPos2iv"); if proc == null() {dummy_pfnglwindowpos2ivproc} else {unsafe{transmute(proc)}}},
6300			windowpos2s: {let proc = get_proc_address("glWindowPos2s"); if proc == null() {dummy_pfnglwindowpos2sproc} else {unsafe{transmute(proc)}}},
6301			windowpos2sv: {let proc = get_proc_address("glWindowPos2sv"); if proc == null() {dummy_pfnglwindowpos2svproc} else {unsafe{transmute(proc)}}},
6302			windowpos3d: {let proc = get_proc_address("glWindowPos3d"); if proc == null() {dummy_pfnglwindowpos3dproc} else {unsafe{transmute(proc)}}},
6303			windowpos3dv: {let proc = get_proc_address("glWindowPos3dv"); if proc == null() {dummy_pfnglwindowpos3dvproc} else {unsafe{transmute(proc)}}},
6304			windowpos3f: {let proc = get_proc_address("glWindowPos3f"); if proc == null() {dummy_pfnglwindowpos3fproc} else {unsafe{transmute(proc)}}},
6305			windowpos3fv: {let proc = get_proc_address("glWindowPos3fv"); if proc == null() {dummy_pfnglwindowpos3fvproc} else {unsafe{transmute(proc)}}},
6306			windowpos3i: {let proc = get_proc_address("glWindowPos3i"); if proc == null() {dummy_pfnglwindowpos3iproc} else {unsafe{transmute(proc)}}},
6307			windowpos3iv: {let proc = get_proc_address("glWindowPos3iv"); if proc == null() {dummy_pfnglwindowpos3ivproc} else {unsafe{transmute(proc)}}},
6308			windowpos3s: {let proc = get_proc_address("glWindowPos3s"); if proc == null() {dummy_pfnglwindowpos3sproc} else {unsafe{transmute(proc)}}},
6309			windowpos3sv: {let proc = get_proc_address("glWindowPos3sv"); if proc == null() {dummy_pfnglwindowpos3svproc} else {unsafe{transmute(proc)}}},
6310			blendcolor: {let proc = get_proc_address("glBlendColor"); if proc == null() {dummy_pfnglblendcolorproc} else {unsafe{transmute(proc)}}},
6311			blendequation: {let proc = get_proc_address("glBlendEquation"); if proc == null() {dummy_pfnglblendequationproc} else {unsafe{transmute(proc)}}},
6312		}
6313	}
6314	#[inline(always)]
6315	pub fn get_available(&self) -> bool {
6316		self.available
6317	}
6318}
6319
6320impl Default for Version14 {
6321	fn default() -> Self {
6322		Self {
6323			available: false,
6324			geterror: dummy_pfnglgeterrorproc,
6325			blendfuncseparate: dummy_pfnglblendfuncseparateproc,
6326			multidrawarrays: dummy_pfnglmultidrawarraysproc,
6327			multidrawelements: dummy_pfnglmultidrawelementsproc,
6328			pointparameterf: dummy_pfnglpointparameterfproc,
6329			pointparameterfv: dummy_pfnglpointparameterfvproc,
6330			pointparameteri: dummy_pfnglpointparameteriproc,
6331			pointparameteriv: dummy_pfnglpointparameterivproc,
6332			fogcoordf: dummy_pfnglfogcoordfproc,
6333			fogcoordfv: dummy_pfnglfogcoordfvproc,
6334			fogcoordd: dummy_pfnglfogcoorddproc,
6335			fogcoorddv: dummy_pfnglfogcoorddvproc,
6336			fogcoordpointer: dummy_pfnglfogcoordpointerproc,
6337			secondarycolor3b: dummy_pfnglsecondarycolor3bproc,
6338			secondarycolor3bv: dummy_pfnglsecondarycolor3bvproc,
6339			secondarycolor3d: dummy_pfnglsecondarycolor3dproc,
6340			secondarycolor3dv: dummy_pfnglsecondarycolor3dvproc,
6341			secondarycolor3f: dummy_pfnglsecondarycolor3fproc,
6342			secondarycolor3fv: dummy_pfnglsecondarycolor3fvproc,
6343			secondarycolor3i: dummy_pfnglsecondarycolor3iproc,
6344			secondarycolor3iv: dummy_pfnglsecondarycolor3ivproc,
6345			secondarycolor3s: dummy_pfnglsecondarycolor3sproc,
6346			secondarycolor3sv: dummy_pfnglsecondarycolor3svproc,
6347			secondarycolor3ub: dummy_pfnglsecondarycolor3ubproc,
6348			secondarycolor3ubv: dummy_pfnglsecondarycolor3ubvproc,
6349			secondarycolor3ui: dummy_pfnglsecondarycolor3uiproc,
6350			secondarycolor3uiv: dummy_pfnglsecondarycolor3uivproc,
6351			secondarycolor3us: dummy_pfnglsecondarycolor3usproc,
6352			secondarycolor3usv: dummy_pfnglsecondarycolor3usvproc,
6353			secondarycolorpointer: dummy_pfnglsecondarycolorpointerproc,
6354			windowpos2d: dummy_pfnglwindowpos2dproc,
6355			windowpos2dv: dummy_pfnglwindowpos2dvproc,
6356			windowpos2f: dummy_pfnglwindowpos2fproc,
6357			windowpos2fv: dummy_pfnglwindowpos2fvproc,
6358			windowpos2i: dummy_pfnglwindowpos2iproc,
6359			windowpos2iv: dummy_pfnglwindowpos2ivproc,
6360			windowpos2s: dummy_pfnglwindowpos2sproc,
6361			windowpos2sv: dummy_pfnglwindowpos2svproc,
6362			windowpos3d: dummy_pfnglwindowpos3dproc,
6363			windowpos3dv: dummy_pfnglwindowpos3dvproc,
6364			windowpos3f: dummy_pfnglwindowpos3fproc,
6365			windowpos3fv: dummy_pfnglwindowpos3fvproc,
6366			windowpos3i: dummy_pfnglwindowpos3iproc,
6367			windowpos3iv: dummy_pfnglwindowpos3ivproc,
6368			windowpos3s: dummy_pfnglwindowpos3sproc,
6369			windowpos3sv: dummy_pfnglwindowpos3svproc,
6370			blendcolor: dummy_pfnglblendcolorproc,
6371			blendequation: dummy_pfnglblendequationproc,
6372		}
6373	}
6374}
6375impl Debug for Version14 {
6376	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
6377		if self.available {
6378			f.debug_struct("Version14")
6379			.field("available", &self.available)
6380			.field("blendfuncseparate", unsafe{if transmute::<_, *const c_void>(self.blendfuncseparate) == (dummy_pfnglblendfuncseparateproc as *const c_void) {&null::<PFNGLBLENDFUNCSEPARATEPROC>()} else {&self.blendfuncseparate}})
6381			.field("multidrawarrays", unsafe{if transmute::<_, *const c_void>(self.multidrawarrays) == (dummy_pfnglmultidrawarraysproc as *const c_void) {&null::<PFNGLMULTIDRAWARRAYSPROC>()} else {&self.multidrawarrays}})
6382			.field("multidrawelements", unsafe{if transmute::<_, *const c_void>(self.multidrawelements) == (dummy_pfnglmultidrawelementsproc as *const c_void) {&null::<PFNGLMULTIDRAWELEMENTSPROC>()} else {&self.multidrawelements}})
6383			.field("pointparameterf", unsafe{if transmute::<_, *const c_void>(self.pointparameterf) == (dummy_pfnglpointparameterfproc as *const c_void) {&null::<PFNGLPOINTPARAMETERFPROC>()} else {&self.pointparameterf}})
6384			.field("pointparameterfv", unsafe{if transmute::<_, *const c_void>(self.pointparameterfv) == (dummy_pfnglpointparameterfvproc as *const c_void) {&null::<PFNGLPOINTPARAMETERFVPROC>()} else {&self.pointparameterfv}})
6385			.field("pointparameteri", unsafe{if transmute::<_, *const c_void>(self.pointparameteri) == (dummy_pfnglpointparameteriproc as *const c_void) {&null::<PFNGLPOINTPARAMETERIPROC>()} else {&self.pointparameteri}})
6386			.field("pointparameteriv", unsafe{if transmute::<_, *const c_void>(self.pointparameteriv) == (dummy_pfnglpointparameterivproc as *const c_void) {&null::<PFNGLPOINTPARAMETERIVPROC>()} else {&self.pointparameteriv}})
6387			.field("fogcoordf", unsafe{if transmute::<_, *const c_void>(self.fogcoordf) == (dummy_pfnglfogcoordfproc as *const c_void) {&null::<PFNGLFOGCOORDFPROC>()} else {&self.fogcoordf}})
6388			.field("fogcoordfv", unsafe{if transmute::<_, *const c_void>(self.fogcoordfv) == (dummy_pfnglfogcoordfvproc as *const c_void) {&null::<PFNGLFOGCOORDFVPROC>()} else {&self.fogcoordfv}})
6389			.field("fogcoordd", unsafe{if transmute::<_, *const c_void>(self.fogcoordd) == (dummy_pfnglfogcoorddproc as *const c_void) {&null::<PFNGLFOGCOORDDPROC>()} else {&self.fogcoordd}})
6390			.field("fogcoorddv", unsafe{if transmute::<_, *const c_void>(self.fogcoorddv) == (dummy_pfnglfogcoorddvproc as *const c_void) {&null::<PFNGLFOGCOORDDVPROC>()} else {&self.fogcoorddv}})
6391			.field("fogcoordpointer", unsafe{if transmute::<_, *const c_void>(self.fogcoordpointer) == (dummy_pfnglfogcoordpointerproc as *const c_void) {&null::<PFNGLFOGCOORDPOINTERPROC>()} else {&self.fogcoordpointer}})
6392			.field("secondarycolor3b", unsafe{if transmute::<_, *const c_void>(self.secondarycolor3b) == (dummy_pfnglsecondarycolor3bproc as *const c_void) {&null::<PFNGLSECONDARYCOLOR3BPROC>()} else {&self.secondarycolor3b}})
6393			.field("secondarycolor3bv", unsafe{if transmute::<_, *const c_void>(self.secondarycolor3bv) == (dummy_pfnglsecondarycolor3bvproc as *const c_void) {&null::<PFNGLSECONDARYCOLOR3BVPROC>()} else {&self.secondarycolor3bv}})
6394			.field("secondarycolor3d", unsafe{if transmute::<_, *const c_void>(self.secondarycolor3d) == (dummy_pfnglsecondarycolor3dproc as *const c_void) {&null::<PFNGLSECONDARYCOLOR3DPROC>()} else {&self.secondarycolor3d}})
6395			.field("secondarycolor3dv", unsafe{if transmute::<_, *const c_void>(self.secondarycolor3dv) == (dummy_pfnglsecondarycolor3dvproc as *const c_void) {&null::<PFNGLSECONDARYCOLOR3DVPROC>()} else {&self.secondarycolor3dv}})
6396			.field("secondarycolor3f", unsafe{if transmute::<_, *const c_void>(self.secondarycolor3f) == (dummy_pfnglsecondarycolor3fproc as *const c_void) {&null::<PFNGLSECONDARYCOLOR3FPROC>()} else {&self.secondarycolor3f}})
6397			.field("secondarycolor3fv", unsafe{if transmute::<_, *const c_void>(self.secondarycolor3fv) == (dummy_pfnglsecondarycolor3fvproc as *const c_void) {&null::<PFNGLSECONDARYCOLOR3FVPROC>()} else {&self.secondarycolor3fv}})
6398			.field("secondarycolor3i", unsafe{if transmute::<_, *const c_void>(self.secondarycolor3i) == (dummy_pfnglsecondarycolor3iproc as *const c_void) {&null::<PFNGLSECONDARYCOLOR3IPROC>()} else {&self.secondarycolor3i}})
6399			.field("secondarycolor3iv", unsafe{if transmute::<_, *const c_void>(self.secondarycolor3iv) == (dummy_pfnglsecondarycolor3ivproc as *const c_void) {&null::<PFNGLSECONDARYCOLOR3IVPROC>()} else {&self.secondarycolor3iv}})
6400			.field("secondarycolor3s", unsafe{if transmute::<_, *const c_void>(self.secondarycolor3s) == (dummy_pfnglsecondarycolor3sproc as *const c_void) {&null::<PFNGLSECONDARYCOLOR3SPROC>()} else {&self.secondarycolor3s}})
6401			.field("secondarycolor3sv", unsafe{if transmute::<_, *const c_void>(self.secondarycolor3sv) == (dummy_pfnglsecondarycolor3svproc as *const c_void) {&null::<PFNGLSECONDARYCOLOR3SVPROC>()} else {&self.secondarycolor3sv}})
6402			.field("secondarycolor3ub", unsafe{if transmute::<_, *const c_void>(self.secondarycolor3ub) == (dummy_pfnglsecondarycolor3ubproc as *const c_void) {&null::<PFNGLSECONDARYCOLOR3UBPROC>()} else {&self.secondarycolor3ub}})
6403			.field("secondarycolor3ubv", unsafe{if transmute::<_, *const c_void>(self.secondarycolor3ubv) == (dummy_pfnglsecondarycolor3ubvproc as *const c_void) {&null::<PFNGLSECONDARYCOLOR3UBVPROC>()} else {&self.secondarycolor3ubv}})
6404			.field("secondarycolor3ui", unsafe{if transmute::<_, *const c_void>(self.secondarycolor3ui) == (dummy_pfnglsecondarycolor3uiproc as *const c_void) {&null::<PFNGLSECONDARYCOLOR3UIPROC>()} else {&self.secondarycolor3ui}})
6405			.field("secondarycolor3uiv", unsafe{if transmute::<_, *const c_void>(self.secondarycolor3uiv) == (dummy_pfnglsecondarycolor3uivproc as *const c_void) {&null::<PFNGLSECONDARYCOLOR3UIVPROC>()} else {&self.secondarycolor3uiv}})
6406			.field("secondarycolor3us", unsafe{if transmute::<_, *const c_void>(self.secondarycolor3us) == (dummy_pfnglsecondarycolor3usproc as *const c_void) {&null::<PFNGLSECONDARYCOLOR3USPROC>()} else {&self.secondarycolor3us}})
6407			.field("secondarycolor3usv", unsafe{if transmute::<_, *const c_void>(self.secondarycolor3usv) == (dummy_pfnglsecondarycolor3usvproc as *const c_void) {&null::<PFNGLSECONDARYCOLOR3USVPROC>()} else {&self.secondarycolor3usv}})
6408			.field("secondarycolorpointer", unsafe{if transmute::<_, *const c_void>(self.secondarycolorpointer) == (dummy_pfnglsecondarycolorpointerproc as *const c_void) {&null::<PFNGLSECONDARYCOLORPOINTERPROC>()} else {&self.secondarycolorpointer}})
6409			.field("windowpos2d", unsafe{if transmute::<_, *const c_void>(self.windowpos2d) == (dummy_pfnglwindowpos2dproc as *const c_void) {&null::<PFNGLWINDOWPOS2DPROC>()} else {&self.windowpos2d}})
6410			.field("windowpos2dv", unsafe{if transmute::<_, *const c_void>(self.windowpos2dv) == (dummy_pfnglwindowpos2dvproc as *const c_void) {&null::<PFNGLWINDOWPOS2DVPROC>()} else {&self.windowpos2dv}})
6411			.field("windowpos2f", unsafe{if transmute::<_, *const c_void>(self.windowpos2f) == (dummy_pfnglwindowpos2fproc as *const c_void) {&null::<PFNGLWINDOWPOS2FPROC>()} else {&self.windowpos2f}})
6412			.field("windowpos2fv", unsafe{if transmute::<_, *const c_void>(self.windowpos2fv) == (dummy_pfnglwindowpos2fvproc as *const c_void) {&null::<PFNGLWINDOWPOS2FVPROC>()} else {&self.windowpos2fv}})
6413			.field("windowpos2i", unsafe{if transmute::<_, *const c_void>(self.windowpos2i) == (dummy_pfnglwindowpos2iproc as *const c_void) {&null::<PFNGLWINDOWPOS2IPROC>()} else {&self.windowpos2i}})
6414			.field("windowpos2iv", unsafe{if transmute::<_, *const c_void>(self.windowpos2iv) == (dummy_pfnglwindowpos2ivproc as *const c_void) {&null::<PFNGLWINDOWPOS2IVPROC>()} else {&self.windowpos2iv}})
6415			.field("windowpos2s", unsafe{if transmute::<_, *const c_void>(self.windowpos2s) == (dummy_pfnglwindowpos2sproc as *const c_void) {&null::<PFNGLWINDOWPOS2SPROC>()} else {&self.windowpos2s}})
6416			.field("windowpos2sv", unsafe{if transmute::<_, *const c_void>(self.windowpos2sv) == (dummy_pfnglwindowpos2svproc as *const c_void) {&null::<PFNGLWINDOWPOS2SVPROC>()} else {&self.windowpos2sv}})
6417			.field("windowpos3d", unsafe{if transmute::<_, *const c_void>(self.windowpos3d) == (dummy_pfnglwindowpos3dproc as *const c_void) {&null::<PFNGLWINDOWPOS3DPROC>()} else {&self.windowpos3d}})
6418			.field("windowpos3dv", unsafe{if transmute::<_, *const c_void>(self.windowpos3dv) == (dummy_pfnglwindowpos3dvproc as *const c_void) {&null::<PFNGLWINDOWPOS3DVPROC>()} else {&self.windowpos3dv}})
6419			.field("windowpos3f", unsafe{if transmute::<_, *const c_void>(self.windowpos3f) == (dummy_pfnglwindowpos3fproc as *const c_void) {&null::<PFNGLWINDOWPOS3FPROC>()} else {&self.windowpos3f}})
6420			.field("windowpos3fv", unsafe{if transmute::<_, *const c_void>(self.windowpos3fv) == (dummy_pfnglwindowpos3fvproc as *const c_void) {&null::<PFNGLWINDOWPOS3FVPROC>()} else {&self.windowpos3fv}})
6421			.field("windowpos3i", unsafe{if transmute::<_, *const c_void>(self.windowpos3i) == (dummy_pfnglwindowpos3iproc as *const c_void) {&null::<PFNGLWINDOWPOS3IPROC>()} else {&self.windowpos3i}})
6422			.field("windowpos3iv", unsafe{if transmute::<_, *const c_void>(self.windowpos3iv) == (dummy_pfnglwindowpos3ivproc as *const c_void) {&null::<PFNGLWINDOWPOS3IVPROC>()} else {&self.windowpos3iv}})
6423			.field("windowpos3s", unsafe{if transmute::<_, *const c_void>(self.windowpos3s) == (dummy_pfnglwindowpos3sproc as *const c_void) {&null::<PFNGLWINDOWPOS3SPROC>()} else {&self.windowpos3s}})
6424			.field("windowpos3sv", unsafe{if transmute::<_, *const c_void>(self.windowpos3sv) == (dummy_pfnglwindowpos3svproc as *const c_void) {&null::<PFNGLWINDOWPOS3SVPROC>()} else {&self.windowpos3sv}})
6425			.field("blendcolor", unsafe{if transmute::<_, *const c_void>(self.blendcolor) == (dummy_pfnglblendcolorproc as *const c_void) {&null::<PFNGLBLENDCOLORPROC>()} else {&self.blendcolor}})
6426			.field("blendequation", unsafe{if transmute::<_, *const c_void>(self.blendequation) == (dummy_pfnglblendequationproc as *const c_void) {&null::<PFNGLBLENDEQUATIONPROC>()} else {&self.blendequation}})
6427			.finish()
6428		} else {
6429			f.debug_struct("Version14")
6430			.field("available", &self.available)
6431			.finish_non_exhaustive()
6432		}
6433	}
6434}
6435
6436/// Alias to `khronos_ssize_t`
6437pub type GLsizeiptr = khronos_ssize_t;
6438
6439/// Alias to `khronos_intptr_t`
6440pub type GLintptr = khronos_intptr_t;
6441
6442/// The prototype to the OpenGL function `GenQueries`
6443type PFNGLGENQUERIESPROC = extern "system" fn(GLsizei, *mut GLuint);
6444
6445/// The prototype to the OpenGL function `DeleteQueries`
6446type PFNGLDELETEQUERIESPROC = extern "system" fn(GLsizei, *const GLuint);
6447
6448/// The prototype to the OpenGL function `IsQuery`
6449type PFNGLISQUERYPROC = extern "system" fn(GLuint) -> GLboolean;
6450
6451/// The prototype to the OpenGL function `BeginQuery`
6452type PFNGLBEGINQUERYPROC = extern "system" fn(GLenum, GLuint);
6453
6454/// The prototype to the OpenGL function `EndQuery`
6455type PFNGLENDQUERYPROC = extern "system" fn(GLenum);
6456
6457/// The prototype to the OpenGL function `GetQueryiv`
6458type PFNGLGETQUERYIVPROC = extern "system" fn(GLenum, GLenum, *mut GLint);
6459
6460/// The prototype to the OpenGL function `GetQueryObjectiv`
6461type PFNGLGETQUERYOBJECTIVPROC = extern "system" fn(GLuint, GLenum, *mut GLint);
6462
6463/// The prototype to the OpenGL function `GetQueryObjectuiv`
6464type PFNGLGETQUERYOBJECTUIVPROC = extern "system" fn(GLuint, GLenum, *mut GLuint);
6465
6466/// The prototype to the OpenGL function `BindBuffer`
6467type PFNGLBINDBUFFERPROC = extern "system" fn(GLenum, GLuint);
6468
6469/// The prototype to the OpenGL function `DeleteBuffers`
6470type PFNGLDELETEBUFFERSPROC = extern "system" fn(GLsizei, *const GLuint);
6471
6472/// The prototype to the OpenGL function `GenBuffers`
6473type PFNGLGENBUFFERSPROC = extern "system" fn(GLsizei, *mut GLuint);
6474
6475/// The prototype to the OpenGL function `IsBuffer`
6476type PFNGLISBUFFERPROC = extern "system" fn(GLuint) -> GLboolean;
6477
6478/// The prototype to the OpenGL function `BufferData`
6479type PFNGLBUFFERDATAPROC = extern "system" fn(GLenum, GLsizeiptr, *const c_void, GLenum);
6480
6481/// The prototype to the OpenGL function `BufferSubData`
6482type PFNGLBUFFERSUBDATAPROC = extern "system" fn(GLenum, GLintptr, GLsizeiptr, *const c_void);
6483
6484/// The prototype to the OpenGL function `GetBufferSubData`
6485type PFNGLGETBUFFERSUBDATAPROC = extern "system" fn(GLenum, GLintptr, GLsizeiptr, *mut c_void);
6486
6487/// The prototype to the OpenGL function `MapBuffer`
6488type PFNGLMAPBUFFERPROC = extern "system" fn(GLenum, GLenum) -> *mut c_void;
6489
6490/// The prototype to the OpenGL function `UnmapBuffer`
6491type PFNGLUNMAPBUFFERPROC = extern "system" fn(GLenum) -> GLboolean;
6492
6493/// The prototype to the OpenGL function `GetBufferParameteriv`
6494type PFNGLGETBUFFERPARAMETERIVPROC = extern "system" fn(GLenum, GLenum, *mut GLint);
6495
6496/// The prototype to the OpenGL function `GetBufferPointerv`
6497type PFNGLGETBUFFERPOINTERVPROC = extern "system" fn(GLenum, GLenum, *mut *mut c_void);
6498
6499/// The dummy function of `GenQueries()`
6500extern "system" fn dummy_pfnglgenqueriesproc (_: GLsizei, _: *mut GLuint) {
6501	panic!("OpenGL function pointer `glGenQueries()` is null.")
6502}
6503
6504/// The dummy function of `DeleteQueries()`
6505extern "system" fn dummy_pfngldeletequeriesproc (_: GLsizei, _: *const GLuint) {
6506	panic!("OpenGL function pointer `glDeleteQueries()` is null.")
6507}
6508
6509/// The dummy function of `IsQuery()`
6510extern "system" fn dummy_pfnglisqueryproc (_: GLuint) -> GLboolean {
6511	panic!("OpenGL function pointer `glIsQuery()` is null.")
6512}
6513
6514/// The dummy function of `BeginQuery()`
6515extern "system" fn dummy_pfnglbeginqueryproc (_: GLenum, _: GLuint) {
6516	panic!("OpenGL function pointer `glBeginQuery()` is null.")
6517}
6518
6519/// The dummy function of `EndQuery()`
6520extern "system" fn dummy_pfnglendqueryproc (_: GLenum) {
6521	panic!("OpenGL function pointer `glEndQuery()` is null.")
6522}
6523
6524/// The dummy function of `GetQueryiv()`
6525extern "system" fn dummy_pfnglgetqueryivproc (_: GLenum, _: GLenum, _: *mut GLint) {
6526	panic!("OpenGL function pointer `glGetQueryiv()` is null.")
6527}
6528
6529/// The dummy function of `GetQueryObjectiv()`
6530extern "system" fn dummy_pfnglgetqueryobjectivproc (_: GLuint, _: GLenum, _: *mut GLint) {
6531	panic!("OpenGL function pointer `glGetQueryObjectiv()` is null.")
6532}
6533
6534/// The dummy function of `GetQueryObjectuiv()`
6535extern "system" fn dummy_pfnglgetqueryobjectuivproc (_: GLuint, _: GLenum, _: *mut GLuint) {
6536	panic!("OpenGL function pointer `glGetQueryObjectuiv()` is null.")
6537}
6538
6539/// The dummy function of `BindBuffer()`
6540extern "system" fn dummy_pfnglbindbufferproc (_: GLenum, _: GLuint) {
6541	panic!("OpenGL function pointer `glBindBuffer()` is null.")
6542}
6543
6544/// The dummy function of `DeleteBuffers()`
6545extern "system" fn dummy_pfngldeletebuffersproc (_: GLsizei, _: *const GLuint) {
6546	panic!("OpenGL function pointer `glDeleteBuffers()` is null.")
6547}
6548
6549/// The dummy function of `GenBuffers()`
6550extern "system" fn dummy_pfnglgenbuffersproc (_: GLsizei, _: *mut GLuint) {
6551	panic!("OpenGL function pointer `glGenBuffers()` is null.")
6552}
6553
6554/// The dummy function of `IsBuffer()`
6555extern "system" fn dummy_pfnglisbufferproc (_: GLuint) -> GLboolean {
6556	panic!("OpenGL function pointer `glIsBuffer()` is null.")
6557}
6558
6559/// The dummy function of `BufferData()`
6560extern "system" fn dummy_pfnglbufferdataproc (_: GLenum, _: GLsizeiptr, _: *const c_void, _: GLenum) {
6561	panic!("OpenGL function pointer `glBufferData()` is null.")
6562}
6563
6564/// The dummy function of `BufferSubData()`
6565extern "system" fn dummy_pfnglbuffersubdataproc (_: GLenum, _: GLintptr, _: GLsizeiptr, _: *const c_void) {
6566	panic!("OpenGL function pointer `glBufferSubData()` is null.")
6567}
6568
6569/// The dummy function of `GetBufferSubData()`
6570extern "system" fn dummy_pfnglgetbuffersubdataproc (_: GLenum, _: GLintptr, _: GLsizeiptr, _: *mut c_void) {
6571	panic!("OpenGL function pointer `glGetBufferSubData()` is null.")
6572}
6573
6574/// The dummy function of `MapBuffer()`
6575extern "system" fn dummy_pfnglmapbufferproc (_: GLenum, _: GLenum) -> *mut c_void {
6576	panic!("OpenGL function pointer `glMapBuffer()` is null.")
6577}
6578
6579/// The dummy function of `UnmapBuffer()`
6580extern "system" fn dummy_pfnglunmapbufferproc (_: GLenum) -> GLboolean {
6581	panic!("OpenGL function pointer `glUnmapBuffer()` is null.")
6582}
6583
6584/// The dummy function of `GetBufferParameteriv()`
6585extern "system" fn dummy_pfnglgetbufferparameterivproc (_: GLenum, _: GLenum, _: *mut GLint) {
6586	panic!("OpenGL function pointer `glGetBufferParameteriv()` is null.")
6587}
6588
6589/// The dummy function of `GetBufferPointerv()`
6590extern "system" fn dummy_pfnglgetbufferpointervproc (_: GLenum, _: GLenum, _: *mut *mut c_void) {
6591	panic!("OpenGL function pointer `glGetBufferPointerv()` is null.")
6592}
6593/// Constant value defined from OpenGL 1.5
6594pub const GL_BUFFER_SIZE: GLenum = 0x8764;
6595
6596/// Constant value defined from OpenGL 1.5
6597pub const GL_BUFFER_USAGE: GLenum = 0x8765;
6598
6599/// Constant value defined from OpenGL 1.5
6600pub const GL_QUERY_COUNTER_BITS: GLenum = 0x8864;
6601
6602/// Constant value defined from OpenGL 1.5
6603pub const GL_CURRENT_QUERY: GLenum = 0x8865;
6604
6605/// Constant value defined from OpenGL 1.5
6606pub const GL_QUERY_RESULT: GLenum = 0x8866;
6607
6608/// Constant value defined from OpenGL 1.5
6609pub const GL_QUERY_RESULT_AVAILABLE: GLenum = 0x8867;
6610
6611/// Constant value defined from OpenGL 1.5
6612pub const GL_ARRAY_BUFFER: GLenum = 0x8892;
6613
6614/// Constant value defined from OpenGL 1.5
6615pub const GL_ELEMENT_ARRAY_BUFFER: GLenum = 0x8893;
6616
6617/// Constant value defined from OpenGL 1.5
6618pub const GL_ARRAY_BUFFER_BINDING: GLenum = 0x8894;
6619
6620/// Constant value defined from OpenGL 1.5
6621pub const GL_ELEMENT_ARRAY_BUFFER_BINDING: GLenum = 0x8895;
6622
6623/// Constant value defined from OpenGL 1.5
6624pub const GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: GLenum = 0x889F;
6625
6626/// Constant value defined from OpenGL 1.5
6627pub const GL_READ_ONLY: GLenum = 0x88B8;
6628
6629/// Constant value defined from OpenGL 1.5
6630pub const GL_WRITE_ONLY: GLenum = 0x88B9;
6631
6632/// Constant value defined from OpenGL 1.5
6633pub const GL_READ_WRITE: GLenum = 0x88BA;
6634
6635/// Constant value defined from OpenGL 1.5
6636pub const GL_BUFFER_ACCESS: GLenum = 0x88BB;
6637
6638/// Constant value defined from OpenGL 1.5
6639pub const GL_BUFFER_MAPPED: GLenum = 0x88BC;
6640
6641/// Constant value defined from OpenGL 1.5
6642pub const GL_BUFFER_MAP_POINTER: GLenum = 0x88BD;
6643
6644/// Constant value defined from OpenGL 1.5
6645pub const GL_STREAM_DRAW: GLenum = 0x88E0;
6646
6647/// Constant value defined from OpenGL 1.5
6648pub const GL_STREAM_READ: GLenum = 0x88E1;
6649
6650/// Constant value defined from OpenGL 1.5
6651pub const GL_STREAM_COPY: GLenum = 0x88E2;
6652
6653/// Constant value defined from OpenGL 1.5
6654pub const GL_STATIC_DRAW: GLenum = 0x88E4;
6655
6656/// Constant value defined from OpenGL 1.5
6657pub const GL_STATIC_READ: GLenum = 0x88E5;
6658
6659/// Constant value defined from OpenGL 1.5
6660pub const GL_STATIC_COPY: GLenum = 0x88E6;
6661
6662/// Constant value defined from OpenGL 1.5
6663pub const GL_DYNAMIC_DRAW: GLenum = 0x88E8;
6664
6665/// Constant value defined from OpenGL 1.5
6666pub const GL_DYNAMIC_READ: GLenum = 0x88E9;
6667
6668/// Constant value defined from OpenGL 1.5
6669pub const GL_DYNAMIC_COPY: GLenum = 0x88EA;
6670
6671/// Constant value defined from OpenGL 1.5
6672pub const GL_SAMPLES_PASSED: GLenum = 0x8914;
6673
6674/// Constant value defined from OpenGL 1.5
6675pub const GL_SRC1_ALPHA: GLenum = 0x8589;
6676
6677/// Constant value defined from OpenGL 1.5
6678pub const GL_VERTEX_ARRAY_BUFFER_BINDING: GLenum = 0x8896;
6679
6680/// Constant value defined from OpenGL 1.5
6681pub const GL_NORMAL_ARRAY_BUFFER_BINDING: GLenum = 0x8897;
6682
6683/// Constant value defined from OpenGL 1.5
6684pub const GL_COLOR_ARRAY_BUFFER_BINDING: GLenum = 0x8898;
6685
6686/// Constant value defined from OpenGL 1.5
6687pub const GL_INDEX_ARRAY_BUFFER_BINDING: GLenum = 0x8899;
6688
6689/// Constant value defined from OpenGL 1.5
6690pub const GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING: GLenum = 0x889A;
6691
6692/// Constant value defined from OpenGL 1.5
6693pub const GL_EDGE_FLAG_ARRAY_BUFFER_BINDING: GLenum = 0x889B;
6694
6695/// Constant value defined from OpenGL 1.5
6696pub const GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING: GLenum = 0x889C;
6697
6698/// Constant value defined from OpenGL 1.5
6699pub const GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING: GLenum = 0x889D;
6700
6701/// Constant value defined from OpenGL 1.5
6702pub const GL_WEIGHT_ARRAY_BUFFER_BINDING: GLenum = 0x889E;
6703
6704/// Constant value defined from OpenGL 1.5
6705pub const GL_FOG_COORD_SRC: GLenum = 0x8450;
6706
6707/// Constant value defined from OpenGL 1.5
6708pub const GL_FOG_COORD: GLenum = 0x8451;
6709
6710/// Constant value defined from OpenGL 1.5
6711pub const GL_CURRENT_FOG_COORD: GLenum = 0x8453;
6712
6713/// Constant value defined from OpenGL 1.5
6714pub const GL_FOG_COORD_ARRAY_TYPE: GLenum = 0x8454;
6715
6716/// Constant value defined from OpenGL 1.5
6717pub const GL_FOG_COORD_ARRAY_STRIDE: GLenum = 0x8455;
6718
6719/// Constant value defined from OpenGL 1.5
6720pub const GL_FOG_COORD_ARRAY_POINTER: GLenum = 0x8456;
6721
6722/// Constant value defined from OpenGL 1.5
6723pub const GL_FOG_COORD_ARRAY: GLenum = 0x8457;
6724
6725/// Constant value defined from OpenGL 1.5
6726pub const GL_FOG_COORD_ARRAY_BUFFER_BINDING: GLenum = 0x889D;
6727
6728/// Constant value defined from OpenGL 1.5
6729pub const GL_SRC0_RGB: GLenum = 0x8580;
6730
6731/// Constant value defined from OpenGL 1.5
6732pub const GL_SRC1_RGB: GLenum = 0x8581;
6733
6734/// Constant value defined from OpenGL 1.5
6735pub const GL_SRC2_RGB: GLenum = 0x8582;
6736
6737/// Constant value defined from OpenGL 1.5
6738pub const GL_SRC0_ALPHA: GLenum = 0x8588;
6739
6740/// Constant value defined from OpenGL 1.5
6741pub const GL_SRC2_ALPHA: GLenum = 0x858A;
6742
6743/// Functions from OpenGL version 1.5
6744pub trait GL_1_5 {
6745	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
6746	fn glGetError(&self) -> GLenum;
6747
6748	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenQueries.xhtml>
6749	fn glGenQueries(&self, n: GLsizei, ids: *mut GLuint) -> Result<()>;
6750
6751	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteQueries.xhtml>
6752	fn glDeleteQueries(&self, n: GLsizei, ids: *const GLuint) -> Result<()>;
6753
6754	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsQuery.xhtml>
6755	fn glIsQuery(&self, id: GLuint) -> Result<GLboolean>;
6756
6757	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBeginQuery.xhtml>
6758	fn glBeginQuery(&self, target: GLenum, id: GLuint) -> Result<()>;
6759
6760	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEndQuery.xhtml>
6761	fn glEndQuery(&self, target: GLenum) -> Result<()>;
6762
6763	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryiv.xhtml>
6764	fn glGetQueryiv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
6765
6766	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryObjectiv.xhtml>
6767	fn glGetQueryObjectiv(&self, id: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
6768
6769	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryObjectuiv.xhtml>
6770	fn glGetQueryObjectuiv(&self, id: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()>;
6771
6772	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindBuffer.xhtml>
6773	fn glBindBuffer(&self, target: GLenum, buffer: GLuint) -> Result<()>;
6774
6775	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteBuffers.xhtml>
6776	fn glDeleteBuffers(&self, n: GLsizei, buffers: *const GLuint) -> Result<()>;
6777
6778	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenBuffers.xhtml>
6779	fn glGenBuffers(&self, n: GLsizei, buffers: *mut GLuint) -> Result<()>;
6780
6781	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsBuffer.xhtml>
6782	fn glIsBuffer(&self, buffer: GLuint) -> Result<GLboolean>;
6783
6784	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBufferData.xhtml>
6785	fn glBufferData(&self, target: GLenum, size: GLsizeiptr, data: *const c_void, usage: GLenum) -> Result<()>;
6786
6787	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBufferSubData.xhtml>
6788	fn glBufferSubData(&self, target: GLenum, offset: GLintptr, size: GLsizeiptr, data: *const c_void) -> Result<()>;
6789
6790	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBufferSubData.xhtml>
6791	fn glGetBufferSubData(&self, target: GLenum, offset: GLintptr, size: GLsizeiptr, data: *mut c_void) -> Result<()>;
6792
6793	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMapBuffer.xhtml>
6794	fn glMapBuffer(&self, target: GLenum, access: GLenum) -> Result<*mut c_void>;
6795
6796	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUnmapBuffer.xhtml>
6797	fn glUnmapBuffer(&self, target: GLenum) -> Result<GLboolean>;
6798
6799	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBufferParameteriv.xhtml>
6800	fn glGetBufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
6801
6802	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBufferPointerv.xhtml>
6803	fn glGetBufferPointerv(&self, target: GLenum, pname: GLenum, params: *mut *mut c_void) -> Result<()>;
6804}
6805/// Functions from OpenGL version 1.5
6806#[derive(Clone, Copy, PartialEq, Eq, Hash)]
6807pub struct Version15 {
6808	/// Is OpenGL version 1.5 available
6809	available: bool,
6810
6811	/// The function pointer to `glGetError()`
6812	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
6813	pub geterror: PFNGLGETERRORPROC,
6814
6815	/// The function pointer to `glGenQueries()`
6816	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenQueries.xhtml>
6817	pub genqueries: PFNGLGENQUERIESPROC,
6818
6819	/// The function pointer to `glDeleteQueries()`
6820	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteQueries.xhtml>
6821	pub deletequeries: PFNGLDELETEQUERIESPROC,
6822
6823	/// The function pointer to `glIsQuery()`
6824	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsQuery.xhtml>
6825	pub isquery: PFNGLISQUERYPROC,
6826
6827	/// The function pointer to `glBeginQuery()`
6828	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBeginQuery.xhtml>
6829	pub beginquery: PFNGLBEGINQUERYPROC,
6830
6831	/// The function pointer to `glEndQuery()`
6832	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEndQuery.xhtml>
6833	pub endquery: PFNGLENDQUERYPROC,
6834
6835	/// The function pointer to `glGetQueryiv()`
6836	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryiv.xhtml>
6837	pub getqueryiv: PFNGLGETQUERYIVPROC,
6838
6839	/// The function pointer to `glGetQueryObjectiv()`
6840	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryObjectiv.xhtml>
6841	pub getqueryobjectiv: PFNGLGETQUERYOBJECTIVPROC,
6842
6843	/// The function pointer to `glGetQueryObjectuiv()`
6844	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryObjectuiv.xhtml>
6845	pub getqueryobjectuiv: PFNGLGETQUERYOBJECTUIVPROC,
6846
6847	/// The function pointer to `glBindBuffer()`
6848	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindBuffer.xhtml>
6849	pub bindbuffer: PFNGLBINDBUFFERPROC,
6850
6851	/// The function pointer to `glDeleteBuffers()`
6852	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteBuffers.xhtml>
6853	pub deletebuffers: PFNGLDELETEBUFFERSPROC,
6854
6855	/// The function pointer to `glGenBuffers()`
6856	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenBuffers.xhtml>
6857	pub genbuffers: PFNGLGENBUFFERSPROC,
6858
6859	/// The function pointer to `glIsBuffer()`
6860	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsBuffer.xhtml>
6861	pub isbuffer: PFNGLISBUFFERPROC,
6862
6863	/// The function pointer to `glBufferData()`
6864	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBufferData.xhtml>
6865	pub bufferdata: PFNGLBUFFERDATAPROC,
6866
6867	/// The function pointer to `glBufferSubData()`
6868	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBufferSubData.xhtml>
6869	pub buffersubdata: PFNGLBUFFERSUBDATAPROC,
6870
6871	/// The function pointer to `glGetBufferSubData()`
6872	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBufferSubData.xhtml>
6873	pub getbuffersubdata: PFNGLGETBUFFERSUBDATAPROC,
6874
6875	/// The function pointer to `glMapBuffer()`
6876	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMapBuffer.xhtml>
6877	pub mapbuffer: PFNGLMAPBUFFERPROC,
6878
6879	/// The function pointer to `glUnmapBuffer()`
6880	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUnmapBuffer.xhtml>
6881	pub unmapbuffer: PFNGLUNMAPBUFFERPROC,
6882
6883	/// The function pointer to `glGetBufferParameteriv()`
6884	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBufferParameteriv.xhtml>
6885	pub getbufferparameteriv: PFNGLGETBUFFERPARAMETERIVPROC,
6886
6887	/// The function pointer to `glGetBufferPointerv()`
6888	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBufferPointerv.xhtml>
6889	pub getbufferpointerv: PFNGLGETBUFFERPOINTERVPROC,
6890}
6891
6892impl GL_1_5 for Version15 {
6893	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
6894	#[inline(always)]
6895	fn glGetError(&self) -> GLenum {
6896		(self.geterror)()
6897	}
6898	#[inline(always)]
6899	fn glGenQueries(&self, n: GLsizei, ids: *mut GLuint) -> Result<()> {
6900		let ret = process_catch("glGenQueries", catch_unwind(||(self.genqueries)(n, ids)));
6901		#[cfg(feature = "diagnose")]
6902		if let Ok(ret) = ret {
6903			return to_result("glGenQueries", ret, self.glGetError());
6904		} else {
6905			return ret
6906		}
6907		#[cfg(not(feature = "diagnose"))]
6908		return ret;
6909	}
6910	#[inline(always)]
6911	fn glDeleteQueries(&self, n: GLsizei, ids: *const GLuint) -> Result<()> {
6912		let ret = process_catch("glDeleteQueries", catch_unwind(||(self.deletequeries)(n, ids)));
6913		#[cfg(feature = "diagnose")]
6914		if let Ok(ret) = ret {
6915			return to_result("glDeleteQueries", ret, self.glGetError());
6916		} else {
6917			return ret
6918		}
6919		#[cfg(not(feature = "diagnose"))]
6920		return ret;
6921	}
6922	#[inline(always)]
6923	fn glIsQuery(&self, id: GLuint) -> Result<GLboolean> {
6924		let ret = process_catch("glIsQuery", catch_unwind(||(self.isquery)(id)));
6925		#[cfg(feature = "diagnose")]
6926		if let Ok(ret) = ret {
6927			return to_result("glIsQuery", ret, self.glGetError());
6928		} else {
6929			return ret
6930		}
6931		#[cfg(not(feature = "diagnose"))]
6932		return ret;
6933	}
6934	#[inline(always)]
6935	fn glBeginQuery(&self, target: GLenum, id: GLuint) -> Result<()> {
6936		let ret = process_catch("glBeginQuery", catch_unwind(||(self.beginquery)(target, id)));
6937		#[cfg(feature = "diagnose")]
6938		if let Ok(ret) = ret {
6939			return to_result("glBeginQuery", ret, self.glGetError());
6940		} else {
6941			return ret
6942		}
6943		#[cfg(not(feature = "diagnose"))]
6944		return ret;
6945	}
6946	#[inline(always)]
6947	fn glEndQuery(&self, target: GLenum) -> Result<()> {
6948		let ret = process_catch("glEndQuery", catch_unwind(||(self.endquery)(target)));
6949		#[cfg(feature = "diagnose")]
6950		if let Ok(ret) = ret {
6951			return to_result("glEndQuery", ret, self.glGetError());
6952		} else {
6953			return ret
6954		}
6955		#[cfg(not(feature = "diagnose"))]
6956		return ret;
6957	}
6958	#[inline(always)]
6959	fn glGetQueryiv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
6960		let ret = process_catch("glGetQueryiv", catch_unwind(||(self.getqueryiv)(target, pname, params)));
6961		#[cfg(feature = "diagnose")]
6962		if let Ok(ret) = ret {
6963			return to_result("glGetQueryiv", ret, self.glGetError());
6964		} else {
6965			return ret
6966		}
6967		#[cfg(not(feature = "diagnose"))]
6968		return ret;
6969	}
6970	#[inline(always)]
6971	fn glGetQueryObjectiv(&self, id: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
6972		let ret = process_catch("glGetQueryObjectiv", catch_unwind(||(self.getqueryobjectiv)(id, pname, params)));
6973		#[cfg(feature = "diagnose")]
6974		if let Ok(ret) = ret {
6975			return to_result("glGetQueryObjectiv", ret, self.glGetError());
6976		} else {
6977			return ret
6978		}
6979		#[cfg(not(feature = "diagnose"))]
6980		return ret;
6981	}
6982	#[inline(always)]
6983	fn glGetQueryObjectuiv(&self, id: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()> {
6984		let ret = process_catch("glGetQueryObjectuiv", catch_unwind(||(self.getqueryobjectuiv)(id, pname, params)));
6985		#[cfg(feature = "diagnose")]
6986		if let Ok(ret) = ret {
6987			return to_result("glGetQueryObjectuiv", ret, self.glGetError());
6988		} else {
6989			return ret
6990		}
6991		#[cfg(not(feature = "diagnose"))]
6992		return ret;
6993	}
6994	#[inline(always)]
6995	fn glBindBuffer(&self, target: GLenum, buffer: GLuint) -> Result<()> {
6996		let ret = process_catch("glBindBuffer", catch_unwind(||(self.bindbuffer)(target, buffer)));
6997		#[cfg(feature = "diagnose")]
6998		if let Ok(ret) = ret {
6999			return to_result("glBindBuffer", ret, self.glGetError());
7000		} else {
7001			return ret
7002		}
7003		#[cfg(not(feature = "diagnose"))]
7004		return ret;
7005	}
7006	#[inline(always)]
7007	fn glDeleteBuffers(&self, n: GLsizei, buffers: *const GLuint) -> Result<()> {
7008		let ret = process_catch("glDeleteBuffers", catch_unwind(||(self.deletebuffers)(n, buffers)));
7009		#[cfg(feature = "diagnose")]
7010		if let Ok(ret) = ret {
7011			return to_result("glDeleteBuffers", ret, self.glGetError());
7012		} else {
7013			return ret
7014		}
7015		#[cfg(not(feature = "diagnose"))]
7016		return ret;
7017	}
7018	#[inline(always)]
7019	fn glGenBuffers(&self, n: GLsizei, buffers: *mut GLuint) -> Result<()> {
7020		let ret = process_catch("glGenBuffers", catch_unwind(||(self.genbuffers)(n, buffers)));
7021		#[cfg(feature = "diagnose")]
7022		if let Ok(ret) = ret {
7023			return to_result("glGenBuffers", ret, self.glGetError());
7024		} else {
7025			return ret
7026		}
7027		#[cfg(not(feature = "diagnose"))]
7028		return ret;
7029	}
7030	#[inline(always)]
7031	fn glIsBuffer(&self, buffer: GLuint) -> Result<GLboolean> {
7032		let ret = process_catch("glIsBuffer", catch_unwind(||(self.isbuffer)(buffer)));
7033		#[cfg(feature = "diagnose")]
7034		if let Ok(ret) = ret {
7035			return to_result("glIsBuffer", ret, self.glGetError());
7036		} else {
7037			return ret
7038		}
7039		#[cfg(not(feature = "diagnose"))]
7040		return ret;
7041	}
7042	#[inline(always)]
7043	fn glBufferData(&self, target: GLenum, size: GLsizeiptr, data: *const c_void, usage: GLenum) -> Result<()> {
7044		let ret = process_catch("glBufferData", catch_unwind(||(self.bufferdata)(target, size, data, usage)));
7045		#[cfg(feature = "diagnose")]
7046		if let Ok(ret) = ret {
7047			return to_result("glBufferData", ret, self.glGetError());
7048		} else {
7049			return ret
7050		}
7051		#[cfg(not(feature = "diagnose"))]
7052		return ret;
7053	}
7054	#[inline(always)]
7055	fn glBufferSubData(&self, target: GLenum, offset: GLintptr, size: GLsizeiptr, data: *const c_void) -> Result<()> {
7056		let ret = process_catch("glBufferSubData", catch_unwind(||(self.buffersubdata)(target, offset, size, data)));
7057		#[cfg(feature = "diagnose")]
7058		if let Ok(ret) = ret {
7059			return to_result("glBufferSubData", ret, self.glGetError());
7060		} else {
7061			return ret
7062		}
7063		#[cfg(not(feature = "diagnose"))]
7064		return ret;
7065	}
7066	#[inline(always)]
7067	fn glGetBufferSubData(&self, target: GLenum, offset: GLintptr, size: GLsizeiptr, data: *mut c_void) -> Result<()> {
7068		let ret = process_catch("glGetBufferSubData", catch_unwind(||(self.getbuffersubdata)(target, offset, size, data)));
7069		#[cfg(feature = "diagnose")]
7070		if let Ok(ret) = ret {
7071			return to_result("glGetBufferSubData", ret, self.glGetError());
7072		} else {
7073			return ret
7074		}
7075		#[cfg(not(feature = "diagnose"))]
7076		return ret;
7077	}
7078	#[inline(always)]
7079	fn glMapBuffer(&self, target: GLenum, access: GLenum) -> Result<*mut c_void> {
7080		let ret = process_catch("glMapBuffer", catch_unwind(||(self.mapbuffer)(target, access)));
7081		#[cfg(feature = "diagnose")]
7082		if let Ok(ret) = ret {
7083			return to_result("glMapBuffer", ret, self.glGetError());
7084		} else {
7085			return ret
7086		}
7087		#[cfg(not(feature = "diagnose"))]
7088		return ret;
7089	}
7090	#[inline(always)]
7091	fn glUnmapBuffer(&self, target: GLenum) -> Result<GLboolean> {
7092		let ret = process_catch("glUnmapBuffer", catch_unwind(||(self.unmapbuffer)(target)));
7093		#[cfg(feature = "diagnose")]
7094		if let Ok(ret) = ret {
7095			return to_result("glUnmapBuffer", ret, self.glGetError());
7096		} else {
7097			return ret
7098		}
7099		#[cfg(not(feature = "diagnose"))]
7100		return ret;
7101	}
7102	#[inline(always)]
7103	fn glGetBufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
7104		let ret = process_catch("glGetBufferParameteriv", catch_unwind(||(self.getbufferparameteriv)(target, pname, params)));
7105		#[cfg(feature = "diagnose")]
7106		if let Ok(ret) = ret {
7107			return to_result("glGetBufferParameteriv", ret, self.glGetError());
7108		} else {
7109			return ret
7110		}
7111		#[cfg(not(feature = "diagnose"))]
7112		return ret;
7113	}
7114	#[inline(always)]
7115	fn glGetBufferPointerv(&self, target: GLenum, pname: GLenum, params: *mut *mut c_void) -> Result<()> {
7116		let ret = process_catch("glGetBufferPointerv", catch_unwind(||(self.getbufferpointerv)(target, pname, params)));
7117		#[cfg(feature = "diagnose")]
7118		if let Ok(ret) = ret {
7119			return to_result("glGetBufferPointerv", ret, self.glGetError());
7120		} else {
7121			return ret
7122		}
7123		#[cfg(not(feature = "diagnose"))]
7124		return ret;
7125	}
7126}
7127
7128impl Version15 {
7129	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
7130		let (_spec, major, minor, release) = base.get_version();
7131		if (major, minor, release) < (1, 5, 0) {
7132			return Self::default();
7133		}
7134		Self {
7135			available: true,
7136			geterror: {let proc = get_proc_address("glGetError"); if proc == null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
7137			genqueries: {let proc = get_proc_address("glGenQueries"); if proc == null() {dummy_pfnglgenqueriesproc} else {unsafe{transmute(proc)}}},
7138			deletequeries: {let proc = get_proc_address("glDeleteQueries"); if proc == null() {dummy_pfngldeletequeriesproc} else {unsafe{transmute(proc)}}},
7139			isquery: {let proc = get_proc_address("glIsQuery"); if proc == null() {dummy_pfnglisqueryproc} else {unsafe{transmute(proc)}}},
7140			beginquery: {let proc = get_proc_address("glBeginQuery"); if proc == null() {dummy_pfnglbeginqueryproc} else {unsafe{transmute(proc)}}},
7141			endquery: {let proc = get_proc_address("glEndQuery"); if proc == null() {dummy_pfnglendqueryproc} else {unsafe{transmute(proc)}}},
7142			getqueryiv: {let proc = get_proc_address("glGetQueryiv"); if proc == null() {dummy_pfnglgetqueryivproc} else {unsafe{transmute(proc)}}},
7143			getqueryobjectiv: {let proc = get_proc_address("glGetQueryObjectiv"); if proc == null() {dummy_pfnglgetqueryobjectivproc} else {unsafe{transmute(proc)}}},
7144			getqueryobjectuiv: {let proc = get_proc_address("glGetQueryObjectuiv"); if proc == null() {dummy_pfnglgetqueryobjectuivproc} else {unsafe{transmute(proc)}}},
7145			bindbuffer: {let proc = get_proc_address("glBindBuffer"); if proc == null() {dummy_pfnglbindbufferproc} else {unsafe{transmute(proc)}}},
7146			deletebuffers: {let proc = get_proc_address("glDeleteBuffers"); if proc == null() {dummy_pfngldeletebuffersproc} else {unsafe{transmute(proc)}}},
7147			genbuffers: {let proc = get_proc_address("glGenBuffers"); if proc == null() {dummy_pfnglgenbuffersproc} else {unsafe{transmute(proc)}}},
7148			isbuffer: {let proc = get_proc_address("glIsBuffer"); if proc == null() {dummy_pfnglisbufferproc} else {unsafe{transmute(proc)}}},
7149			bufferdata: {let proc = get_proc_address("glBufferData"); if proc == null() {dummy_pfnglbufferdataproc} else {unsafe{transmute(proc)}}},
7150			buffersubdata: {let proc = get_proc_address("glBufferSubData"); if proc == null() {dummy_pfnglbuffersubdataproc} else {unsafe{transmute(proc)}}},
7151			getbuffersubdata: {let proc = get_proc_address("glGetBufferSubData"); if proc == null() {dummy_pfnglgetbuffersubdataproc} else {unsafe{transmute(proc)}}},
7152			mapbuffer: {let proc = get_proc_address("glMapBuffer"); if proc == null() {dummy_pfnglmapbufferproc} else {unsafe{transmute(proc)}}},
7153			unmapbuffer: {let proc = get_proc_address("glUnmapBuffer"); if proc == null() {dummy_pfnglunmapbufferproc} else {unsafe{transmute(proc)}}},
7154			getbufferparameteriv: {let proc = get_proc_address("glGetBufferParameteriv"); if proc == null() {dummy_pfnglgetbufferparameterivproc} else {unsafe{transmute(proc)}}},
7155			getbufferpointerv: {let proc = get_proc_address("glGetBufferPointerv"); if proc == null() {dummy_pfnglgetbufferpointervproc} else {unsafe{transmute(proc)}}},
7156		}
7157	}
7158	#[inline(always)]
7159	pub fn get_available(&self) -> bool {
7160		self.available
7161	}
7162}
7163
7164impl Default for Version15 {
7165	fn default() -> Self {
7166		Self {
7167			available: false,
7168			geterror: dummy_pfnglgeterrorproc,
7169			genqueries: dummy_pfnglgenqueriesproc,
7170			deletequeries: dummy_pfngldeletequeriesproc,
7171			isquery: dummy_pfnglisqueryproc,
7172			beginquery: dummy_pfnglbeginqueryproc,
7173			endquery: dummy_pfnglendqueryproc,
7174			getqueryiv: dummy_pfnglgetqueryivproc,
7175			getqueryobjectiv: dummy_pfnglgetqueryobjectivproc,
7176			getqueryobjectuiv: dummy_pfnglgetqueryobjectuivproc,
7177			bindbuffer: dummy_pfnglbindbufferproc,
7178			deletebuffers: dummy_pfngldeletebuffersproc,
7179			genbuffers: dummy_pfnglgenbuffersproc,
7180			isbuffer: dummy_pfnglisbufferproc,
7181			bufferdata: dummy_pfnglbufferdataproc,
7182			buffersubdata: dummy_pfnglbuffersubdataproc,
7183			getbuffersubdata: dummy_pfnglgetbuffersubdataproc,
7184			mapbuffer: dummy_pfnglmapbufferproc,
7185			unmapbuffer: dummy_pfnglunmapbufferproc,
7186			getbufferparameteriv: dummy_pfnglgetbufferparameterivproc,
7187			getbufferpointerv: dummy_pfnglgetbufferpointervproc,
7188		}
7189	}
7190}
7191impl Debug for Version15 {
7192	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
7193		if self.available {
7194			f.debug_struct("Version15")
7195			.field("available", &self.available)
7196			.field("genqueries", unsafe{if transmute::<_, *const c_void>(self.genqueries) == (dummy_pfnglgenqueriesproc as *const c_void) {&null::<PFNGLGENQUERIESPROC>()} else {&self.genqueries}})
7197			.field("deletequeries", unsafe{if transmute::<_, *const c_void>(self.deletequeries) == (dummy_pfngldeletequeriesproc as *const c_void) {&null::<PFNGLDELETEQUERIESPROC>()} else {&self.deletequeries}})
7198			.field("isquery", unsafe{if transmute::<_, *const c_void>(self.isquery) == (dummy_pfnglisqueryproc as *const c_void) {&null::<PFNGLISQUERYPROC>()} else {&self.isquery}})
7199			.field("beginquery", unsafe{if transmute::<_, *const c_void>(self.beginquery) == (dummy_pfnglbeginqueryproc as *const c_void) {&null::<PFNGLBEGINQUERYPROC>()} else {&self.beginquery}})
7200			.field("endquery", unsafe{if transmute::<_, *const c_void>(self.endquery) == (dummy_pfnglendqueryproc as *const c_void) {&null::<PFNGLENDQUERYPROC>()} else {&self.endquery}})
7201			.field("getqueryiv", unsafe{if transmute::<_, *const c_void>(self.getqueryiv) == (dummy_pfnglgetqueryivproc as *const c_void) {&null::<PFNGLGETQUERYIVPROC>()} else {&self.getqueryiv}})
7202			.field("getqueryobjectiv", unsafe{if transmute::<_, *const c_void>(self.getqueryobjectiv) == (dummy_pfnglgetqueryobjectivproc as *const c_void) {&null::<PFNGLGETQUERYOBJECTIVPROC>()} else {&self.getqueryobjectiv}})
7203			.field("getqueryobjectuiv", unsafe{if transmute::<_, *const c_void>(self.getqueryobjectuiv) == (dummy_pfnglgetqueryobjectuivproc as *const c_void) {&null::<PFNGLGETQUERYOBJECTUIVPROC>()} else {&self.getqueryobjectuiv}})
7204			.field("bindbuffer", unsafe{if transmute::<_, *const c_void>(self.bindbuffer) == (dummy_pfnglbindbufferproc as *const c_void) {&null::<PFNGLBINDBUFFERPROC>()} else {&self.bindbuffer}})
7205			.field("deletebuffers", unsafe{if transmute::<_, *const c_void>(self.deletebuffers) == (dummy_pfngldeletebuffersproc as *const c_void) {&null::<PFNGLDELETEBUFFERSPROC>()} else {&self.deletebuffers}})
7206			.field("genbuffers", unsafe{if transmute::<_, *const c_void>(self.genbuffers) == (dummy_pfnglgenbuffersproc as *const c_void) {&null::<PFNGLGENBUFFERSPROC>()} else {&self.genbuffers}})
7207			.field("isbuffer", unsafe{if transmute::<_, *const c_void>(self.isbuffer) == (dummy_pfnglisbufferproc as *const c_void) {&null::<PFNGLISBUFFERPROC>()} else {&self.isbuffer}})
7208			.field("bufferdata", unsafe{if transmute::<_, *const c_void>(self.bufferdata) == (dummy_pfnglbufferdataproc as *const c_void) {&null::<PFNGLBUFFERDATAPROC>()} else {&self.bufferdata}})
7209			.field("buffersubdata", unsafe{if transmute::<_, *const c_void>(self.buffersubdata) == (dummy_pfnglbuffersubdataproc as *const c_void) {&null::<PFNGLBUFFERSUBDATAPROC>()} else {&self.buffersubdata}})
7210			.field("getbuffersubdata", unsafe{if transmute::<_, *const c_void>(self.getbuffersubdata) == (dummy_pfnglgetbuffersubdataproc as *const c_void) {&null::<PFNGLGETBUFFERSUBDATAPROC>()} else {&self.getbuffersubdata}})
7211			.field("mapbuffer", unsafe{if transmute::<_, *const c_void>(self.mapbuffer) == (dummy_pfnglmapbufferproc as *const c_void) {&null::<PFNGLMAPBUFFERPROC>()} else {&self.mapbuffer}})
7212			.field("unmapbuffer", unsafe{if transmute::<_, *const c_void>(self.unmapbuffer) == (dummy_pfnglunmapbufferproc as *const c_void) {&null::<PFNGLUNMAPBUFFERPROC>()} else {&self.unmapbuffer}})
7213			.field("getbufferparameteriv", unsafe{if transmute::<_, *const c_void>(self.getbufferparameteriv) == (dummy_pfnglgetbufferparameterivproc as *const c_void) {&null::<PFNGLGETBUFFERPARAMETERIVPROC>()} else {&self.getbufferparameteriv}})
7214			.field("getbufferpointerv", unsafe{if transmute::<_, *const c_void>(self.getbufferpointerv) == (dummy_pfnglgetbufferpointervproc as *const c_void) {&null::<PFNGLGETBUFFERPOINTERVPROC>()} else {&self.getbufferpointerv}})
7215			.finish()
7216		} else {
7217			f.debug_struct("Version15")
7218			.field("available", &self.available)
7219			.finish_non_exhaustive()
7220		}
7221	}
7222}
7223
7224/// Alias to `i8`
7225pub type GLchar = i8;
7226
7227/// The prototype to the OpenGL function `BlendEquationSeparate`
7228type PFNGLBLENDEQUATIONSEPARATEPROC = extern "system" fn(GLenum, GLenum);
7229
7230/// The prototype to the OpenGL function `DrawBuffers`
7231type PFNGLDRAWBUFFERSPROC = extern "system" fn(GLsizei, *const GLenum);
7232
7233/// The prototype to the OpenGL function `StencilOpSeparate`
7234type PFNGLSTENCILOPSEPARATEPROC = extern "system" fn(GLenum, GLenum, GLenum, GLenum);
7235
7236/// The prototype to the OpenGL function `StencilFuncSeparate`
7237type PFNGLSTENCILFUNCSEPARATEPROC = extern "system" fn(GLenum, GLenum, GLint, GLuint);
7238
7239/// The prototype to the OpenGL function `StencilMaskSeparate`
7240type PFNGLSTENCILMASKSEPARATEPROC = extern "system" fn(GLenum, GLuint);
7241
7242/// The prototype to the OpenGL function `AttachShader`
7243type PFNGLATTACHSHADERPROC = extern "system" fn(GLuint, GLuint);
7244
7245/// The prototype to the OpenGL function `BindAttribLocation`
7246type PFNGLBINDATTRIBLOCATIONPROC = extern "system" fn(GLuint, GLuint, *const GLchar);
7247
7248/// The prototype to the OpenGL function `CompileShader`
7249type PFNGLCOMPILESHADERPROC = extern "system" fn(GLuint);
7250
7251/// The prototype to the OpenGL function `CreateProgram`
7252type PFNGLCREATEPROGRAMPROC = extern "system" fn() -> GLuint;
7253
7254/// The prototype to the OpenGL function `CreateShader`
7255type PFNGLCREATESHADERPROC = extern "system" fn(GLenum) -> GLuint;
7256
7257/// The prototype to the OpenGL function `DeleteProgram`
7258type PFNGLDELETEPROGRAMPROC = extern "system" fn(GLuint);
7259
7260/// The prototype to the OpenGL function `DeleteShader`
7261type PFNGLDELETESHADERPROC = extern "system" fn(GLuint);
7262
7263/// The prototype to the OpenGL function `DetachShader`
7264type PFNGLDETACHSHADERPROC = extern "system" fn(GLuint, GLuint);
7265
7266/// The prototype to the OpenGL function `DisableVertexAttribArray`
7267type PFNGLDISABLEVERTEXATTRIBARRAYPROC = extern "system" fn(GLuint);
7268
7269/// The prototype to the OpenGL function `EnableVertexAttribArray`
7270type PFNGLENABLEVERTEXATTRIBARRAYPROC = extern "system" fn(GLuint);
7271
7272/// The prototype to the OpenGL function `GetActiveAttrib`
7273type PFNGLGETACTIVEATTRIBPROC = extern "system" fn(GLuint, GLuint, GLsizei, *mut GLsizei, *mut GLint, *mut GLenum, *mut GLchar);
7274
7275/// The prototype to the OpenGL function `GetActiveUniform`
7276type PFNGLGETACTIVEUNIFORMPROC = extern "system" fn(GLuint, GLuint, GLsizei, *mut GLsizei, *mut GLint, *mut GLenum, *mut GLchar);
7277
7278/// The prototype to the OpenGL function `GetAttachedShaders`
7279type PFNGLGETATTACHEDSHADERSPROC = extern "system" fn(GLuint, GLsizei, *mut GLsizei, *mut GLuint);
7280
7281/// The prototype to the OpenGL function `GetAttribLocation`
7282type PFNGLGETATTRIBLOCATIONPROC = extern "system" fn(GLuint, *const GLchar) -> GLint;
7283
7284/// The prototype to the OpenGL function `GetProgramiv`
7285type PFNGLGETPROGRAMIVPROC = extern "system" fn(GLuint, GLenum, *mut GLint);
7286
7287/// The prototype to the OpenGL function `GetProgramInfoLog`
7288type PFNGLGETPROGRAMINFOLOGPROC = extern "system" fn(GLuint, GLsizei, *mut GLsizei, *mut GLchar);
7289
7290/// The prototype to the OpenGL function `GetShaderiv`
7291type PFNGLGETSHADERIVPROC = extern "system" fn(GLuint, GLenum, *mut GLint);
7292
7293/// The prototype to the OpenGL function `GetShaderInfoLog`
7294type PFNGLGETSHADERINFOLOGPROC = extern "system" fn(GLuint, GLsizei, *mut GLsizei, *mut GLchar);
7295
7296/// The prototype to the OpenGL function `GetShaderSource`
7297type PFNGLGETSHADERSOURCEPROC = extern "system" fn(GLuint, GLsizei, *mut GLsizei, *mut GLchar);
7298
7299/// The prototype to the OpenGL function `GetUniformLocation`
7300type PFNGLGETUNIFORMLOCATIONPROC = extern "system" fn(GLuint, *const GLchar) -> GLint;
7301
7302/// The prototype to the OpenGL function `GetUniformfv`
7303type PFNGLGETUNIFORMFVPROC = extern "system" fn(GLuint, GLint, *mut GLfloat);
7304
7305/// The prototype to the OpenGL function `GetUniformiv`
7306type PFNGLGETUNIFORMIVPROC = extern "system" fn(GLuint, GLint, *mut GLint);
7307
7308/// The prototype to the OpenGL function `GetVertexAttribdv`
7309type PFNGLGETVERTEXATTRIBDVPROC = extern "system" fn(GLuint, GLenum, *mut GLdouble);
7310
7311/// The prototype to the OpenGL function `GetVertexAttribfv`
7312type PFNGLGETVERTEXATTRIBFVPROC = extern "system" fn(GLuint, GLenum, *mut GLfloat);
7313
7314/// The prototype to the OpenGL function `GetVertexAttribiv`
7315type PFNGLGETVERTEXATTRIBIVPROC = extern "system" fn(GLuint, GLenum, *mut GLint);
7316
7317/// The prototype to the OpenGL function `GetVertexAttribPointerv`
7318type PFNGLGETVERTEXATTRIBPOINTERVPROC = extern "system" fn(GLuint, GLenum, *mut *mut c_void);
7319
7320/// The prototype to the OpenGL function `IsProgram`
7321type PFNGLISPROGRAMPROC = extern "system" fn(GLuint) -> GLboolean;
7322
7323/// The prototype to the OpenGL function `IsShader`
7324type PFNGLISSHADERPROC = extern "system" fn(GLuint) -> GLboolean;
7325
7326/// The prototype to the OpenGL function `LinkProgram`
7327type PFNGLLINKPROGRAMPROC = extern "system" fn(GLuint);
7328
7329/// The prototype to the OpenGL function `ShaderSource`
7330type PFNGLSHADERSOURCEPROC = extern "system" fn(GLuint, GLsizei, *const *const GLchar, *const GLint);
7331
7332/// The prototype to the OpenGL function `UseProgram`
7333type PFNGLUSEPROGRAMPROC = extern "system" fn(GLuint);
7334
7335/// The prototype to the OpenGL function `Uniform1f`
7336type PFNGLUNIFORM1FPROC = extern "system" fn(GLint, GLfloat);
7337
7338/// The prototype to the OpenGL function `Uniform2f`
7339type PFNGLUNIFORM2FPROC = extern "system" fn(GLint, GLfloat, GLfloat);
7340
7341/// The prototype to the OpenGL function `Uniform3f`
7342type PFNGLUNIFORM3FPROC = extern "system" fn(GLint, GLfloat, GLfloat, GLfloat);
7343
7344/// The prototype to the OpenGL function `Uniform4f`
7345type PFNGLUNIFORM4FPROC = extern "system" fn(GLint, GLfloat, GLfloat, GLfloat, GLfloat);
7346
7347/// The prototype to the OpenGL function `Uniform1i`
7348type PFNGLUNIFORM1IPROC = extern "system" fn(GLint, GLint);
7349
7350/// The prototype to the OpenGL function `Uniform2i`
7351type PFNGLUNIFORM2IPROC = extern "system" fn(GLint, GLint, GLint);
7352
7353/// The prototype to the OpenGL function `Uniform3i`
7354type PFNGLUNIFORM3IPROC = extern "system" fn(GLint, GLint, GLint, GLint);
7355
7356/// The prototype to the OpenGL function `Uniform4i`
7357type PFNGLUNIFORM4IPROC = extern "system" fn(GLint, GLint, GLint, GLint, GLint);
7358
7359/// The prototype to the OpenGL function `Uniform1fv`
7360type PFNGLUNIFORM1FVPROC = extern "system" fn(GLint, GLsizei, *const GLfloat);
7361
7362/// The prototype to the OpenGL function `Uniform2fv`
7363type PFNGLUNIFORM2FVPROC = extern "system" fn(GLint, GLsizei, *const GLfloat);
7364
7365/// The prototype to the OpenGL function `Uniform3fv`
7366type PFNGLUNIFORM3FVPROC = extern "system" fn(GLint, GLsizei, *const GLfloat);
7367
7368/// The prototype to the OpenGL function `Uniform4fv`
7369type PFNGLUNIFORM4FVPROC = extern "system" fn(GLint, GLsizei, *const GLfloat);
7370
7371/// The prototype to the OpenGL function `Uniform1iv`
7372type PFNGLUNIFORM1IVPROC = extern "system" fn(GLint, GLsizei, *const GLint);
7373
7374/// The prototype to the OpenGL function `Uniform2iv`
7375type PFNGLUNIFORM2IVPROC = extern "system" fn(GLint, GLsizei, *const GLint);
7376
7377/// The prototype to the OpenGL function `Uniform3iv`
7378type PFNGLUNIFORM3IVPROC = extern "system" fn(GLint, GLsizei, *const GLint);
7379
7380/// The prototype to the OpenGL function `Uniform4iv`
7381type PFNGLUNIFORM4IVPROC = extern "system" fn(GLint, GLsizei, *const GLint);
7382
7383/// The prototype to the OpenGL function `UniformMatrix2fv`
7384type PFNGLUNIFORMMATRIX2FVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLfloat);
7385
7386/// The prototype to the OpenGL function `UniformMatrix3fv`
7387type PFNGLUNIFORMMATRIX3FVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLfloat);
7388
7389/// The prototype to the OpenGL function `UniformMatrix4fv`
7390type PFNGLUNIFORMMATRIX4FVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLfloat);
7391
7392/// The prototype to the OpenGL function `ValidateProgram`
7393type PFNGLVALIDATEPROGRAMPROC = extern "system" fn(GLuint);
7394
7395/// The prototype to the OpenGL function `VertexAttrib1d`
7396type PFNGLVERTEXATTRIB1DPROC = extern "system" fn(GLuint, GLdouble);
7397
7398/// The prototype to the OpenGL function `VertexAttrib1dv`
7399type PFNGLVERTEXATTRIB1DVPROC = extern "system" fn(GLuint, *const GLdouble);
7400
7401/// The prototype to the OpenGL function `VertexAttrib1f`
7402type PFNGLVERTEXATTRIB1FPROC = extern "system" fn(GLuint, GLfloat);
7403
7404/// The prototype to the OpenGL function `VertexAttrib1fv`
7405type PFNGLVERTEXATTRIB1FVPROC = extern "system" fn(GLuint, *const GLfloat);
7406
7407/// The prototype to the OpenGL function `VertexAttrib1s`
7408type PFNGLVERTEXATTRIB1SPROC = extern "system" fn(GLuint, GLshort);
7409
7410/// The prototype to the OpenGL function `VertexAttrib1sv`
7411type PFNGLVERTEXATTRIB1SVPROC = extern "system" fn(GLuint, *const GLshort);
7412
7413/// The prototype to the OpenGL function `VertexAttrib2d`
7414type PFNGLVERTEXATTRIB2DPROC = extern "system" fn(GLuint, GLdouble, GLdouble);
7415
7416/// The prototype to the OpenGL function `VertexAttrib2dv`
7417type PFNGLVERTEXATTRIB2DVPROC = extern "system" fn(GLuint, *const GLdouble);
7418
7419/// The prototype to the OpenGL function `VertexAttrib2f`
7420type PFNGLVERTEXATTRIB2FPROC = extern "system" fn(GLuint, GLfloat, GLfloat);
7421
7422/// The prototype to the OpenGL function `VertexAttrib2fv`
7423type PFNGLVERTEXATTRIB2FVPROC = extern "system" fn(GLuint, *const GLfloat);
7424
7425/// The prototype to the OpenGL function `VertexAttrib2s`
7426type PFNGLVERTEXATTRIB2SPROC = extern "system" fn(GLuint, GLshort, GLshort);
7427
7428/// The prototype to the OpenGL function `VertexAttrib2sv`
7429type PFNGLVERTEXATTRIB2SVPROC = extern "system" fn(GLuint, *const GLshort);
7430
7431/// The prototype to the OpenGL function `VertexAttrib3d`
7432type PFNGLVERTEXATTRIB3DPROC = extern "system" fn(GLuint, GLdouble, GLdouble, GLdouble);
7433
7434/// The prototype to the OpenGL function `VertexAttrib3dv`
7435type PFNGLVERTEXATTRIB3DVPROC = extern "system" fn(GLuint, *const GLdouble);
7436
7437/// The prototype to the OpenGL function `VertexAttrib3f`
7438type PFNGLVERTEXATTRIB3FPROC = extern "system" fn(GLuint, GLfloat, GLfloat, GLfloat);
7439
7440/// The prototype to the OpenGL function `VertexAttrib3fv`
7441type PFNGLVERTEXATTRIB3FVPROC = extern "system" fn(GLuint, *const GLfloat);
7442
7443/// The prototype to the OpenGL function `VertexAttrib3s`
7444type PFNGLVERTEXATTRIB3SPROC = extern "system" fn(GLuint, GLshort, GLshort, GLshort);
7445
7446/// The prototype to the OpenGL function `VertexAttrib3sv`
7447type PFNGLVERTEXATTRIB3SVPROC = extern "system" fn(GLuint, *const GLshort);
7448
7449/// The prototype to the OpenGL function `VertexAttrib4Nbv`
7450type PFNGLVERTEXATTRIB4NBVPROC = extern "system" fn(GLuint, *const GLbyte);
7451
7452/// The prototype to the OpenGL function `VertexAttrib4Niv`
7453type PFNGLVERTEXATTRIB4NIVPROC = extern "system" fn(GLuint, *const GLint);
7454
7455/// The prototype to the OpenGL function `VertexAttrib4Nsv`
7456type PFNGLVERTEXATTRIB4NSVPROC = extern "system" fn(GLuint, *const GLshort);
7457
7458/// The prototype to the OpenGL function `VertexAttrib4Nub`
7459type PFNGLVERTEXATTRIB4NUBPROC = extern "system" fn(GLuint, GLubyte, GLubyte, GLubyte, GLubyte);
7460
7461/// The prototype to the OpenGL function `VertexAttrib4Nubv`
7462type PFNGLVERTEXATTRIB4NUBVPROC = extern "system" fn(GLuint, *const GLubyte);
7463
7464/// The prototype to the OpenGL function `VertexAttrib4Nuiv`
7465type PFNGLVERTEXATTRIB4NUIVPROC = extern "system" fn(GLuint, *const GLuint);
7466
7467/// The prototype to the OpenGL function `VertexAttrib4Nusv`
7468type PFNGLVERTEXATTRIB4NUSVPROC = extern "system" fn(GLuint, *const GLushort);
7469
7470/// The prototype to the OpenGL function `VertexAttrib4bv`
7471type PFNGLVERTEXATTRIB4BVPROC = extern "system" fn(GLuint, *const GLbyte);
7472
7473/// The prototype to the OpenGL function `VertexAttrib4d`
7474type PFNGLVERTEXATTRIB4DPROC = extern "system" fn(GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
7475
7476/// The prototype to the OpenGL function `VertexAttrib4dv`
7477type PFNGLVERTEXATTRIB4DVPROC = extern "system" fn(GLuint, *const GLdouble);
7478
7479/// The prototype to the OpenGL function `VertexAttrib4f`
7480type PFNGLVERTEXATTRIB4FPROC = extern "system" fn(GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
7481
7482/// The prototype to the OpenGL function `VertexAttrib4fv`
7483type PFNGLVERTEXATTRIB4FVPROC = extern "system" fn(GLuint, *const GLfloat);
7484
7485/// The prototype to the OpenGL function `VertexAttrib4iv`
7486type PFNGLVERTEXATTRIB4IVPROC = extern "system" fn(GLuint, *const GLint);
7487
7488/// The prototype to the OpenGL function `VertexAttrib4s`
7489type PFNGLVERTEXATTRIB4SPROC = extern "system" fn(GLuint, GLshort, GLshort, GLshort, GLshort);
7490
7491/// The prototype to the OpenGL function `VertexAttrib4sv`
7492type PFNGLVERTEXATTRIB4SVPROC = extern "system" fn(GLuint, *const GLshort);
7493
7494/// The prototype to the OpenGL function `VertexAttrib4ubv`
7495type PFNGLVERTEXATTRIB4UBVPROC = extern "system" fn(GLuint, *const GLubyte);
7496
7497/// The prototype to the OpenGL function `VertexAttrib4uiv`
7498type PFNGLVERTEXATTRIB4UIVPROC = extern "system" fn(GLuint, *const GLuint);
7499
7500/// The prototype to the OpenGL function `VertexAttrib4usv`
7501type PFNGLVERTEXATTRIB4USVPROC = extern "system" fn(GLuint, *const GLushort);
7502
7503/// The prototype to the OpenGL function `VertexAttribPointer`
7504type PFNGLVERTEXATTRIBPOINTERPROC = extern "system" fn(GLuint, GLint, GLenum, GLboolean, GLsizei, *const c_void);
7505
7506/// The dummy function of `BlendEquationSeparate()`
7507extern "system" fn dummy_pfnglblendequationseparateproc (_: GLenum, _: GLenum) {
7508	panic!("OpenGL function pointer `glBlendEquationSeparate()` is null.")
7509}
7510
7511/// The dummy function of `DrawBuffers()`
7512extern "system" fn dummy_pfngldrawbuffersproc (_: GLsizei, _: *const GLenum) {
7513	panic!("OpenGL function pointer `glDrawBuffers()` is null.")
7514}
7515
7516/// The dummy function of `StencilOpSeparate()`
7517extern "system" fn dummy_pfnglstencilopseparateproc (_: GLenum, _: GLenum, _: GLenum, _: GLenum) {
7518	panic!("OpenGL function pointer `glStencilOpSeparate()` is null.")
7519}
7520
7521/// The dummy function of `StencilFuncSeparate()`
7522extern "system" fn dummy_pfnglstencilfuncseparateproc (_: GLenum, _: GLenum, _: GLint, _: GLuint) {
7523	panic!("OpenGL function pointer `glStencilFuncSeparate()` is null.")
7524}
7525
7526/// The dummy function of `StencilMaskSeparate()`
7527extern "system" fn dummy_pfnglstencilmaskseparateproc (_: GLenum, _: GLuint) {
7528	panic!("OpenGL function pointer `glStencilMaskSeparate()` is null.")
7529}
7530
7531/// The dummy function of `AttachShader()`
7532extern "system" fn dummy_pfnglattachshaderproc (_: GLuint, _: GLuint) {
7533	panic!("OpenGL function pointer `glAttachShader()` is null.")
7534}
7535
7536/// The dummy function of `BindAttribLocation()`
7537extern "system" fn dummy_pfnglbindattriblocationproc (_: GLuint, _: GLuint, _: *const GLchar) {
7538	panic!("OpenGL function pointer `glBindAttribLocation()` is null.")
7539}
7540
7541/// The dummy function of `CompileShader()`
7542extern "system" fn dummy_pfnglcompileshaderproc (_: GLuint) {
7543	panic!("OpenGL function pointer `glCompileShader()` is null.")
7544}
7545
7546/// The dummy function of `CreateProgram()`
7547extern "system" fn dummy_pfnglcreateprogramproc () -> GLuint {
7548	panic!("OpenGL function pointer `glCreateProgram()` is null.")
7549}
7550
7551/// The dummy function of `CreateShader()`
7552extern "system" fn dummy_pfnglcreateshaderproc (_: GLenum) -> GLuint {
7553	panic!("OpenGL function pointer `glCreateShader()` is null.")
7554}
7555
7556/// The dummy function of `DeleteProgram()`
7557extern "system" fn dummy_pfngldeleteprogramproc (_: GLuint) {
7558	panic!("OpenGL function pointer `glDeleteProgram()` is null.")
7559}
7560
7561/// The dummy function of `DeleteShader()`
7562extern "system" fn dummy_pfngldeleteshaderproc (_: GLuint) {
7563	panic!("OpenGL function pointer `glDeleteShader()` is null.")
7564}
7565
7566/// The dummy function of `DetachShader()`
7567extern "system" fn dummy_pfngldetachshaderproc (_: GLuint, _: GLuint) {
7568	panic!("OpenGL function pointer `glDetachShader()` is null.")
7569}
7570
7571/// The dummy function of `DisableVertexAttribArray()`
7572extern "system" fn dummy_pfngldisablevertexattribarrayproc (_: GLuint) {
7573	panic!("OpenGL function pointer `glDisableVertexAttribArray()` is null.")
7574}
7575
7576/// The dummy function of `EnableVertexAttribArray()`
7577extern "system" fn dummy_pfnglenablevertexattribarrayproc (_: GLuint) {
7578	panic!("OpenGL function pointer `glEnableVertexAttribArray()` is null.")
7579}
7580
7581/// The dummy function of `GetActiveAttrib()`
7582extern "system" fn dummy_pfnglgetactiveattribproc (_: GLuint, _: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLint, _: *mut GLenum, _: *mut GLchar) {
7583	panic!("OpenGL function pointer `glGetActiveAttrib()` is null.")
7584}
7585
7586/// The dummy function of `GetActiveUniform()`
7587extern "system" fn dummy_pfnglgetactiveuniformproc (_: GLuint, _: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLint, _: *mut GLenum, _: *mut GLchar) {
7588	panic!("OpenGL function pointer `glGetActiveUniform()` is null.")
7589}
7590
7591/// The dummy function of `GetAttachedShaders()`
7592extern "system" fn dummy_pfnglgetattachedshadersproc (_: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLuint) {
7593	panic!("OpenGL function pointer `glGetAttachedShaders()` is null.")
7594}
7595
7596/// The dummy function of `GetAttribLocation()`
7597extern "system" fn dummy_pfnglgetattriblocationproc (_: GLuint, _: *const GLchar) -> GLint {
7598	panic!("OpenGL function pointer `glGetAttribLocation()` is null.")
7599}
7600
7601/// The dummy function of `GetProgramiv()`
7602extern "system" fn dummy_pfnglgetprogramivproc (_: GLuint, _: GLenum, _: *mut GLint) {
7603	panic!("OpenGL function pointer `glGetProgramiv()` is null.")
7604}
7605
7606/// The dummy function of `GetProgramInfoLog()`
7607extern "system" fn dummy_pfnglgetprograminfologproc (_: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLchar) {
7608	panic!("OpenGL function pointer `glGetProgramInfoLog()` is null.")
7609}
7610
7611/// The dummy function of `GetShaderiv()`
7612extern "system" fn dummy_pfnglgetshaderivproc (_: GLuint, _: GLenum, _: *mut GLint) {
7613	panic!("OpenGL function pointer `glGetShaderiv()` is null.")
7614}
7615
7616/// The dummy function of `GetShaderInfoLog()`
7617extern "system" fn dummy_pfnglgetshaderinfologproc (_: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLchar) {
7618	panic!("OpenGL function pointer `glGetShaderInfoLog()` is null.")
7619}
7620
7621/// The dummy function of `GetShaderSource()`
7622extern "system" fn dummy_pfnglgetshadersourceproc (_: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLchar) {
7623	panic!("OpenGL function pointer `glGetShaderSource()` is null.")
7624}
7625
7626/// The dummy function of `GetUniformLocation()`
7627extern "system" fn dummy_pfnglgetuniformlocationproc (_: GLuint, _: *const GLchar) -> GLint {
7628	panic!("OpenGL function pointer `glGetUniformLocation()` is null.")
7629}
7630
7631/// The dummy function of `GetUniformfv()`
7632extern "system" fn dummy_pfnglgetuniformfvproc (_: GLuint, _: GLint, _: *mut GLfloat) {
7633	panic!("OpenGL function pointer `glGetUniformfv()` is null.")
7634}
7635
7636/// The dummy function of `GetUniformiv()`
7637extern "system" fn dummy_pfnglgetuniformivproc (_: GLuint, _: GLint, _: *mut GLint) {
7638	panic!("OpenGL function pointer `glGetUniformiv()` is null.")
7639}
7640
7641/// The dummy function of `GetVertexAttribdv()`
7642extern "system" fn dummy_pfnglgetvertexattribdvproc (_: GLuint, _: GLenum, _: *mut GLdouble) {
7643	panic!("OpenGL function pointer `glGetVertexAttribdv()` is null.")
7644}
7645
7646/// The dummy function of `GetVertexAttribfv()`
7647extern "system" fn dummy_pfnglgetvertexattribfvproc (_: GLuint, _: GLenum, _: *mut GLfloat) {
7648	panic!("OpenGL function pointer `glGetVertexAttribfv()` is null.")
7649}
7650
7651/// The dummy function of `GetVertexAttribiv()`
7652extern "system" fn dummy_pfnglgetvertexattribivproc (_: GLuint, _: GLenum, _: *mut GLint) {
7653	panic!("OpenGL function pointer `glGetVertexAttribiv()` is null.")
7654}
7655
7656/// The dummy function of `GetVertexAttribPointerv()`
7657extern "system" fn dummy_pfnglgetvertexattribpointervproc (_: GLuint, _: GLenum, _: *mut *mut c_void) {
7658	panic!("OpenGL function pointer `glGetVertexAttribPointerv()` is null.")
7659}
7660
7661/// The dummy function of `IsProgram()`
7662extern "system" fn dummy_pfnglisprogramproc (_: GLuint) -> GLboolean {
7663	panic!("OpenGL function pointer `glIsProgram()` is null.")
7664}
7665
7666/// The dummy function of `IsShader()`
7667extern "system" fn dummy_pfnglisshaderproc (_: GLuint) -> GLboolean {
7668	panic!("OpenGL function pointer `glIsShader()` is null.")
7669}
7670
7671/// The dummy function of `LinkProgram()`
7672extern "system" fn dummy_pfngllinkprogramproc (_: GLuint) {
7673	panic!("OpenGL function pointer `glLinkProgram()` is null.")
7674}
7675
7676/// The dummy function of `ShaderSource()`
7677extern "system" fn dummy_pfnglshadersourceproc (_: GLuint, _: GLsizei, _: *const *const GLchar, _: *const GLint) {
7678	panic!("OpenGL function pointer `glShaderSource()` is null.")
7679}
7680
7681/// The dummy function of `UseProgram()`
7682extern "system" fn dummy_pfngluseprogramproc (_: GLuint) {
7683	panic!("OpenGL function pointer `glUseProgram()` is null.")
7684}
7685
7686/// The dummy function of `Uniform1f()`
7687extern "system" fn dummy_pfngluniform1fproc (_: GLint, _: GLfloat) {
7688	panic!("OpenGL function pointer `glUniform1f()` is null.")
7689}
7690
7691/// The dummy function of `Uniform2f()`
7692extern "system" fn dummy_pfngluniform2fproc (_: GLint, _: GLfloat, _: GLfloat) {
7693	panic!("OpenGL function pointer `glUniform2f()` is null.")
7694}
7695
7696/// The dummy function of `Uniform3f()`
7697extern "system" fn dummy_pfngluniform3fproc (_: GLint, _: GLfloat, _: GLfloat, _: GLfloat) {
7698	panic!("OpenGL function pointer `glUniform3f()` is null.")
7699}
7700
7701/// The dummy function of `Uniform4f()`
7702extern "system" fn dummy_pfngluniform4fproc (_: GLint, _: GLfloat, _: GLfloat, _: GLfloat, _: GLfloat) {
7703	panic!("OpenGL function pointer `glUniform4f()` is null.")
7704}
7705
7706/// The dummy function of `Uniform1i()`
7707extern "system" fn dummy_pfngluniform1iproc (_: GLint, _: GLint) {
7708	panic!("OpenGL function pointer `glUniform1i()` is null.")
7709}
7710
7711/// The dummy function of `Uniform2i()`
7712extern "system" fn dummy_pfngluniform2iproc (_: GLint, _: GLint, _: GLint) {
7713	panic!("OpenGL function pointer `glUniform2i()` is null.")
7714}
7715
7716/// The dummy function of `Uniform3i()`
7717extern "system" fn dummy_pfngluniform3iproc (_: GLint, _: GLint, _: GLint, _: GLint) {
7718	panic!("OpenGL function pointer `glUniform3i()` is null.")
7719}
7720
7721/// The dummy function of `Uniform4i()`
7722extern "system" fn dummy_pfngluniform4iproc (_: GLint, _: GLint, _: GLint, _: GLint, _: GLint) {
7723	panic!("OpenGL function pointer `glUniform4i()` is null.")
7724}
7725
7726/// The dummy function of `Uniform1fv()`
7727extern "system" fn dummy_pfngluniform1fvproc (_: GLint, _: GLsizei, _: *const GLfloat) {
7728	panic!("OpenGL function pointer `glUniform1fv()` is null.")
7729}
7730
7731/// The dummy function of `Uniform2fv()`
7732extern "system" fn dummy_pfngluniform2fvproc (_: GLint, _: GLsizei, _: *const GLfloat) {
7733	panic!("OpenGL function pointer `glUniform2fv()` is null.")
7734}
7735
7736/// The dummy function of `Uniform3fv()`
7737extern "system" fn dummy_pfngluniform3fvproc (_: GLint, _: GLsizei, _: *const GLfloat) {
7738	panic!("OpenGL function pointer `glUniform3fv()` is null.")
7739}
7740
7741/// The dummy function of `Uniform4fv()`
7742extern "system" fn dummy_pfngluniform4fvproc (_: GLint, _: GLsizei, _: *const GLfloat) {
7743	panic!("OpenGL function pointer `glUniform4fv()` is null.")
7744}
7745
7746/// The dummy function of `Uniform1iv()`
7747extern "system" fn dummy_pfngluniform1ivproc (_: GLint, _: GLsizei, _: *const GLint) {
7748	panic!("OpenGL function pointer `glUniform1iv()` is null.")
7749}
7750
7751/// The dummy function of `Uniform2iv()`
7752extern "system" fn dummy_pfngluniform2ivproc (_: GLint, _: GLsizei, _: *const GLint) {
7753	panic!("OpenGL function pointer `glUniform2iv()` is null.")
7754}
7755
7756/// The dummy function of `Uniform3iv()`
7757extern "system" fn dummy_pfngluniform3ivproc (_: GLint, _: GLsizei, _: *const GLint) {
7758	panic!("OpenGL function pointer `glUniform3iv()` is null.")
7759}
7760
7761/// The dummy function of `Uniform4iv()`
7762extern "system" fn dummy_pfngluniform4ivproc (_: GLint, _: GLsizei, _: *const GLint) {
7763	panic!("OpenGL function pointer `glUniform4iv()` is null.")
7764}
7765
7766/// The dummy function of `UniformMatrix2fv()`
7767extern "system" fn dummy_pfngluniformmatrix2fvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
7768	panic!("OpenGL function pointer `glUniformMatrix2fv()` is null.")
7769}
7770
7771/// The dummy function of `UniformMatrix3fv()`
7772extern "system" fn dummy_pfngluniformmatrix3fvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
7773	panic!("OpenGL function pointer `glUniformMatrix3fv()` is null.")
7774}
7775
7776/// The dummy function of `UniformMatrix4fv()`
7777extern "system" fn dummy_pfngluniformmatrix4fvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
7778	panic!("OpenGL function pointer `glUniformMatrix4fv()` is null.")
7779}
7780
7781/// The dummy function of `ValidateProgram()`
7782extern "system" fn dummy_pfnglvalidateprogramproc (_: GLuint) {
7783	panic!("OpenGL function pointer `glValidateProgram()` is null.")
7784}
7785
7786/// The dummy function of `VertexAttrib1d()`
7787extern "system" fn dummy_pfnglvertexattrib1dproc (_: GLuint, _: GLdouble) {
7788	panic!("OpenGL function pointer `glVertexAttrib1d()` is null.")
7789}
7790
7791/// The dummy function of `VertexAttrib1dv()`
7792extern "system" fn dummy_pfnglvertexattrib1dvproc (_: GLuint, _: *const GLdouble) {
7793	panic!("OpenGL function pointer `glVertexAttrib1dv()` is null.")
7794}
7795
7796/// The dummy function of `VertexAttrib1f()`
7797extern "system" fn dummy_pfnglvertexattrib1fproc (_: GLuint, _: GLfloat) {
7798	panic!("OpenGL function pointer `glVertexAttrib1f()` is null.")
7799}
7800
7801/// The dummy function of `VertexAttrib1fv()`
7802extern "system" fn dummy_pfnglvertexattrib1fvproc (_: GLuint, _: *const GLfloat) {
7803	panic!("OpenGL function pointer `glVertexAttrib1fv()` is null.")
7804}
7805
7806/// The dummy function of `VertexAttrib1s()`
7807extern "system" fn dummy_pfnglvertexattrib1sproc (_: GLuint, _: GLshort) {
7808	panic!("OpenGL function pointer `glVertexAttrib1s()` is null.")
7809}
7810
7811/// The dummy function of `VertexAttrib1sv()`
7812extern "system" fn dummy_pfnglvertexattrib1svproc (_: GLuint, _: *const GLshort) {
7813	panic!("OpenGL function pointer `glVertexAttrib1sv()` is null.")
7814}
7815
7816/// The dummy function of `VertexAttrib2d()`
7817extern "system" fn dummy_pfnglvertexattrib2dproc (_: GLuint, _: GLdouble, _: GLdouble) {
7818	panic!("OpenGL function pointer `glVertexAttrib2d()` is null.")
7819}
7820
7821/// The dummy function of `VertexAttrib2dv()`
7822extern "system" fn dummy_pfnglvertexattrib2dvproc (_: GLuint, _: *const GLdouble) {
7823	panic!("OpenGL function pointer `glVertexAttrib2dv()` is null.")
7824}
7825
7826/// The dummy function of `VertexAttrib2f()`
7827extern "system" fn dummy_pfnglvertexattrib2fproc (_: GLuint, _: GLfloat, _: GLfloat) {
7828	panic!("OpenGL function pointer `glVertexAttrib2f()` is null.")
7829}
7830
7831/// The dummy function of `VertexAttrib2fv()`
7832extern "system" fn dummy_pfnglvertexattrib2fvproc (_: GLuint, _: *const GLfloat) {
7833	panic!("OpenGL function pointer `glVertexAttrib2fv()` is null.")
7834}
7835
7836/// The dummy function of `VertexAttrib2s()`
7837extern "system" fn dummy_pfnglvertexattrib2sproc (_: GLuint, _: GLshort, _: GLshort) {
7838	panic!("OpenGL function pointer `glVertexAttrib2s()` is null.")
7839}
7840
7841/// The dummy function of `VertexAttrib2sv()`
7842extern "system" fn dummy_pfnglvertexattrib2svproc (_: GLuint, _: *const GLshort) {
7843	panic!("OpenGL function pointer `glVertexAttrib2sv()` is null.")
7844}
7845
7846/// The dummy function of `VertexAttrib3d()`
7847extern "system" fn dummy_pfnglvertexattrib3dproc (_: GLuint, _: GLdouble, _: GLdouble, _: GLdouble) {
7848	panic!("OpenGL function pointer `glVertexAttrib3d()` is null.")
7849}
7850
7851/// The dummy function of `VertexAttrib3dv()`
7852extern "system" fn dummy_pfnglvertexattrib3dvproc (_: GLuint, _: *const GLdouble) {
7853	panic!("OpenGL function pointer `glVertexAttrib3dv()` is null.")
7854}
7855
7856/// The dummy function of `VertexAttrib3f()`
7857extern "system" fn dummy_pfnglvertexattrib3fproc (_: GLuint, _: GLfloat, _: GLfloat, _: GLfloat) {
7858	panic!("OpenGL function pointer `glVertexAttrib3f()` is null.")
7859}
7860
7861/// The dummy function of `VertexAttrib3fv()`
7862extern "system" fn dummy_pfnglvertexattrib3fvproc (_: GLuint, _: *const GLfloat) {
7863	panic!("OpenGL function pointer `glVertexAttrib3fv()` is null.")
7864}
7865
7866/// The dummy function of `VertexAttrib3s()`
7867extern "system" fn dummy_pfnglvertexattrib3sproc (_: GLuint, _: GLshort, _: GLshort, _: GLshort) {
7868	panic!("OpenGL function pointer `glVertexAttrib3s()` is null.")
7869}
7870
7871/// The dummy function of `VertexAttrib3sv()`
7872extern "system" fn dummy_pfnglvertexattrib3svproc (_: GLuint, _: *const GLshort) {
7873	panic!("OpenGL function pointer `glVertexAttrib3sv()` is null.")
7874}
7875
7876/// The dummy function of `VertexAttrib4Nbv()`
7877extern "system" fn dummy_pfnglvertexattrib4nbvproc (_: GLuint, _: *const GLbyte) {
7878	panic!("OpenGL function pointer `glVertexAttrib4Nbv()` is null.")
7879}
7880
7881/// The dummy function of `VertexAttrib4Niv()`
7882extern "system" fn dummy_pfnglvertexattrib4nivproc (_: GLuint, _: *const GLint) {
7883	panic!("OpenGL function pointer `glVertexAttrib4Niv()` is null.")
7884}
7885
7886/// The dummy function of `VertexAttrib4Nsv()`
7887extern "system" fn dummy_pfnglvertexattrib4nsvproc (_: GLuint, _: *const GLshort) {
7888	panic!("OpenGL function pointer `glVertexAttrib4Nsv()` is null.")
7889}
7890
7891/// The dummy function of `VertexAttrib4Nub()`
7892extern "system" fn dummy_pfnglvertexattrib4nubproc (_: GLuint, _: GLubyte, _: GLubyte, _: GLubyte, _: GLubyte) {
7893	panic!("OpenGL function pointer `glVertexAttrib4Nub()` is null.")
7894}
7895
7896/// The dummy function of `VertexAttrib4Nubv()`
7897extern "system" fn dummy_pfnglvertexattrib4nubvproc (_: GLuint, _: *const GLubyte) {
7898	panic!("OpenGL function pointer `glVertexAttrib4Nubv()` is null.")
7899}
7900
7901/// The dummy function of `VertexAttrib4Nuiv()`
7902extern "system" fn dummy_pfnglvertexattrib4nuivproc (_: GLuint, _: *const GLuint) {
7903	panic!("OpenGL function pointer `glVertexAttrib4Nuiv()` is null.")
7904}
7905
7906/// The dummy function of `VertexAttrib4Nusv()`
7907extern "system" fn dummy_pfnglvertexattrib4nusvproc (_: GLuint, _: *const GLushort) {
7908	panic!("OpenGL function pointer `glVertexAttrib4Nusv()` is null.")
7909}
7910
7911/// The dummy function of `VertexAttrib4bv()`
7912extern "system" fn dummy_pfnglvertexattrib4bvproc (_: GLuint, _: *const GLbyte) {
7913	panic!("OpenGL function pointer `glVertexAttrib4bv()` is null.")
7914}
7915
7916/// The dummy function of `VertexAttrib4d()`
7917extern "system" fn dummy_pfnglvertexattrib4dproc (_: GLuint, _: GLdouble, _: GLdouble, _: GLdouble, _: GLdouble) {
7918	panic!("OpenGL function pointer `glVertexAttrib4d()` is null.")
7919}
7920
7921/// The dummy function of `VertexAttrib4dv()`
7922extern "system" fn dummy_pfnglvertexattrib4dvproc (_: GLuint, _: *const GLdouble) {
7923	panic!("OpenGL function pointer `glVertexAttrib4dv()` is null.")
7924}
7925
7926/// The dummy function of `VertexAttrib4f()`
7927extern "system" fn dummy_pfnglvertexattrib4fproc (_: GLuint, _: GLfloat, _: GLfloat, _: GLfloat, _: GLfloat) {
7928	panic!("OpenGL function pointer `glVertexAttrib4f()` is null.")
7929}
7930
7931/// The dummy function of `VertexAttrib4fv()`
7932extern "system" fn dummy_pfnglvertexattrib4fvproc (_: GLuint, _: *const GLfloat) {
7933	panic!("OpenGL function pointer `glVertexAttrib4fv()` is null.")
7934}
7935
7936/// The dummy function of `VertexAttrib4iv()`
7937extern "system" fn dummy_pfnglvertexattrib4ivproc (_: GLuint, _: *const GLint) {
7938	panic!("OpenGL function pointer `glVertexAttrib4iv()` is null.")
7939}
7940
7941/// The dummy function of `VertexAttrib4s()`
7942extern "system" fn dummy_pfnglvertexattrib4sproc (_: GLuint, _: GLshort, _: GLshort, _: GLshort, _: GLshort) {
7943	panic!("OpenGL function pointer `glVertexAttrib4s()` is null.")
7944}
7945
7946/// The dummy function of `VertexAttrib4sv()`
7947extern "system" fn dummy_pfnglvertexattrib4svproc (_: GLuint, _: *const GLshort) {
7948	panic!("OpenGL function pointer `glVertexAttrib4sv()` is null.")
7949}
7950
7951/// The dummy function of `VertexAttrib4ubv()`
7952extern "system" fn dummy_pfnglvertexattrib4ubvproc (_: GLuint, _: *const GLubyte) {
7953	panic!("OpenGL function pointer `glVertexAttrib4ubv()` is null.")
7954}
7955
7956/// The dummy function of `VertexAttrib4uiv()`
7957extern "system" fn dummy_pfnglvertexattrib4uivproc (_: GLuint, _: *const GLuint) {
7958	panic!("OpenGL function pointer `glVertexAttrib4uiv()` is null.")
7959}
7960
7961/// The dummy function of `VertexAttrib4usv()`
7962extern "system" fn dummy_pfnglvertexattrib4usvproc (_: GLuint, _: *const GLushort) {
7963	panic!("OpenGL function pointer `glVertexAttrib4usv()` is null.")
7964}
7965
7966/// The dummy function of `VertexAttribPointer()`
7967extern "system" fn dummy_pfnglvertexattribpointerproc (_: GLuint, _: GLint, _: GLenum, _: GLboolean, _: GLsizei, _: *const c_void) {
7968	panic!("OpenGL function pointer `glVertexAttribPointer()` is null.")
7969}
7970/// Constant value defined from OpenGL 2.0
7971pub const GL_BLEND_EQUATION_RGB: GLenum = 0x8009;
7972
7973/// Constant value defined from OpenGL 2.0
7974pub const GL_VERTEX_ATTRIB_ARRAY_ENABLED: GLenum = 0x8622;
7975
7976/// Constant value defined from OpenGL 2.0
7977pub const GL_VERTEX_ATTRIB_ARRAY_SIZE: GLenum = 0x8623;
7978
7979/// Constant value defined from OpenGL 2.0
7980pub const GL_VERTEX_ATTRIB_ARRAY_STRIDE: GLenum = 0x8624;
7981
7982/// Constant value defined from OpenGL 2.0
7983pub const GL_VERTEX_ATTRIB_ARRAY_TYPE: GLenum = 0x8625;
7984
7985/// Constant value defined from OpenGL 2.0
7986pub const GL_CURRENT_VERTEX_ATTRIB: GLenum = 0x8626;
7987
7988/// Constant value defined from OpenGL 2.0
7989pub const GL_VERTEX_PROGRAM_POINT_SIZE: GLenum = 0x8642;
7990
7991/// Constant value defined from OpenGL 2.0
7992pub const GL_VERTEX_ATTRIB_ARRAY_POINTER: GLenum = 0x8645;
7993
7994/// Constant value defined from OpenGL 2.0
7995pub const GL_STENCIL_BACK_FUNC: GLenum = 0x8800;
7996
7997/// Constant value defined from OpenGL 2.0
7998pub const GL_STENCIL_BACK_FAIL: GLenum = 0x8801;
7999
8000/// Constant value defined from OpenGL 2.0
8001pub const GL_STENCIL_BACK_PASS_DEPTH_FAIL: GLenum = 0x8802;
8002
8003/// Constant value defined from OpenGL 2.0
8004pub const GL_STENCIL_BACK_PASS_DEPTH_PASS: GLenum = 0x8803;
8005
8006/// Constant value defined from OpenGL 2.0
8007pub const GL_MAX_DRAW_BUFFERS: GLenum = 0x8824;
8008
8009/// Constant value defined from OpenGL 2.0
8010pub const GL_DRAW_BUFFER0: GLenum = 0x8825;
8011
8012/// Constant value defined from OpenGL 2.0
8013pub const GL_DRAW_BUFFER1: GLenum = 0x8826;
8014
8015/// Constant value defined from OpenGL 2.0
8016pub const GL_DRAW_BUFFER2: GLenum = 0x8827;
8017
8018/// Constant value defined from OpenGL 2.0
8019pub const GL_DRAW_BUFFER3: GLenum = 0x8828;
8020
8021/// Constant value defined from OpenGL 2.0
8022pub const GL_DRAW_BUFFER4: GLenum = 0x8829;
8023
8024/// Constant value defined from OpenGL 2.0
8025pub const GL_DRAW_BUFFER5: GLenum = 0x882A;
8026
8027/// Constant value defined from OpenGL 2.0
8028pub const GL_DRAW_BUFFER6: GLenum = 0x882B;
8029
8030/// Constant value defined from OpenGL 2.0
8031pub const GL_DRAW_BUFFER7: GLenum = 0x882C;
8032
8033/// Constant value defined from OpenGL 2.0
8034pub const GL_DRAW_BUFFER8: GLenum = 0x882D;
8035
8036/// Constant value defined from OpenGL 2.0
8037pub const GL_DRAW_BUFFER9: GLenum = 0x882E;
8038
8039/// Constant value defined from OpenGL 2.0
8040pub const GL_DRAW_BUFFER10: GLenum = 0x882F;
8041
8042/// Constant value defined from OpenGL 2.0
8043pub const GL_DRAW_BUFFER11: GLenum = 0x8830;
8044
8045/// Constant value defined from OpenGL 2.0
8046pub const GL_DRAW_BUFFER12: GLenum = 0x8831;
8047
8048/// Constant value defined from OpenGL 2.0
8049pub const GL_DRAW_BUFFER13: GLenum = 0x8832;
8050
8051/// Constant value defined from OpenGL 2.0
8052pub const GL_DRAW_BUFFER14: GLenum = 0x8833;
8053
8054/// Constant value defined from OpenGL 2.0
8055pub const GL_DRAW_BUFFER15: GLenum = 0x8834;
8056
8057/// Constant value defined from OpenGL 2.0
8058pub const GL_BLEND_EQUATION_ALPHA: GLenum = 0x883D;
8059
8060/// Constant value defined from OpenGL 2.0
8061pub const GL_MAX_VERTEX_ATTRIBS: GLenum = 0x8869;
8062
8063/// Constant value defined from OpenGL 2.0
8064pub const GL_VERTEX_ATTRIB_ARRAY_NORMALIZED: GLenum = 0x886A;
8065
8066/// Constant value defined from OpenGL 2.0
8067pub const GL_MAX_TEXTURE_IMAGE_UNITS: GLenum = 0x8872;
8068
8069/// Constant value defined from OpenGL 2.0
8070pub const GL_FRAGMENT_SHADER: GLenum = 0x8B30;
8071
8072/// Constant value defined from OpenGL 2.0
8073pub const GL_VERTEX_SHADER: GLenum = 0x8B31;
8074
8075/// Constant value defined from OpenGL 2.0
8076pub const GL_MAX_FRAGMENT_UNIFORM_COMPONENTS: GLenum = 0x8B49;
8077
8078/// Constant value defined from OpenGL 2.0
8079pub const GL_MAX_VERTEX_UNIFORM_COMPONENTS: GLenum = 0x8B4A;
8080
8081/// Constant value defined from OpenGL 2.0
8082pub const GL_MAX_VARYING_FLOATS: GLenum = 0x8B4B;
8083
8084/// Constant value defined from OpenGL 2.0
8085pub const GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS: GLenum = 0x8B4C;
8086
8087/// Constant value defined from OpenGL 2.0
8088pub const GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS: GLenum = 0x8B4D;
8089
8090/// Constant value defined from OpenGL 2.0
8091pub const GL_SHADER_TYPE: GLenum = 0x8B4F;
8092
8093/// Constant value defined from OpenGL 2.0
8094pub const GL_FLOAT_VEC2: GLenum = 0x8B50;
8095
8096/// Constant value defined from OpenGL 2.0
8097pub const GL_FLOAT_VEC3: GLenum = 0x8B51;
8098
8099/// Constant value defined from OpenGL 2.0
8100pub const GL_FLOAT_VEC4: GLenum = 0x8B52;
8101
8102/// Constant value defined from OpenGL 2.0
8103pub const GL_INT_VEC2: GLenum = 0x8B53;
8104
8105/// Constant value defined from OpenGL 2.0
8106pub const GL_INT_VEC3: GLenum = 0x8B54;
8107
8108/// Constant value defined from OpenGL 2.0
8109pub const GL_INT_VEC4: GLenum = 0x8B55;
8110
8111/// Constant value defined from OpenGL 2.0
8112pub const GL_BOOL: GLenum = 0x8B56;
8113
8114/// Constant value defined from OpenGL 2.0
8115pub const GL_BOOL_VEC2: GLenum = 0x8B57;
8116
8117/// Constant value defined from OpenGL 2.0
8118pub const GL_BOOL_VEC3: GLenum = 0x8B58;
8119
8120/// Constant value defined from OpenGL 2.0
8121pub const GL_BOOL_VEC4: GLenum = 0x8B59;
8122
8123/// Constant value defined from OpenGL 2.0
8124pub const GL_FLOAT_MAT2: GLenum = 0x8B5A;
8125
8126/// Constant value defined from OpenGL 2.0
8127pub const GL_FLOAT_MAT3: GLenum = 0x8B5B;
8128
8129/// Constant value defined from OpenGL 2.0
8130pub const GL_FLOAT_MAT4: GLenum = 0x8B5C;
8131
8132/// Constant value defined from OpenGL 2.0
8133pub const GL_SAMPLER_1D: GLenum = 0x8B5D;
8134
8135/// Constant value defined from OpenGL 2.0
8136pub const GL_SAMPLER_2D: GLenum = 0x8B5E;
8137
8138/// Constant value defined from OpenGL 2.0
8139pub const GL_SAMPLER_3D: GLenum = 0x8B5F;
8140
8141/// Constant value defined from OpenGL 2.0
8142pub const GL_SAMPLER_CUBE: GLenum = 0x8B60;
8143
8144/// Constant value defined from OpenGL 2.0
8145pub const GL_SAMPLER_1D_SHADOW: GLenum = 0x8B61;
8146
8147/// Constant value defined from OpenGL 2.0
8148pub const GL_SAMPLER_2D_SHADOW: GLenum = 0x8B62;
8149
8150/// Constant value defined from OpenGL 2.0
8151pub const GL_DELETE_STATUS: GLenum = 0x8B80;
8152
8153/// Constant value defined from OpenGL 2.0
8154pub const GL_COMPILE_STATUS: GLenum = 0x8B81;
8155
8156/// Constant value defined from OpenGL 2.0
8157pub const GL_LINK_STATUS: GLenum = 0x8B82;
8158
8159/// Constant value defined from OpenGL 2.0
8160pub const GL_VALIDATE_STATUS: GLenum = 0x8B83;
8161
8162/// Constant value defined from OpenGL 2.0
8163pub const GL_INFO_LOG_LENGTH: GLenum = 0x8B84;
8164
8165/// Constant value defined from OpenGL 2.0
8166pub const GL_ATTACHED_SHADERS: GLenum = 0x8B85;
8167
8168/// Constant value defined from OpenGL 2.0
8169pub const GL_ACTIVE_UNIFORMS: GLenum = 0x8B86;
8170
8171/// Constant value defined from OpenGL 2.0
8172pub const GL_ACTIVE_UNIFORM_MAX_LENGTH: GLenum = 0x8B87;
8173
8174/// Constant value defined from OpenGL 2.0
8175pub const GL_SHADER_SOURCE_LENGTH: GLenum = 0x8B88;
8176
8177/// Constant value defined from OpenGL 2.0
8178pub const GL_ACTIVE_ATTRIBUTES: GLenum = 0x8B89;
8179
8180/// Constant value defined from OpenGL 2.0
8181pub const GL_ACTIVE_ATTRIBUTE_MAX_LENGTH: GLenum = 0x8B8A;
8182
8183/// Constant value defined from OpenGL 2.0
8184pub const GL_FRAGMENT_SHADER_DERIVATIVE_HINT: GLenum = 0x8B8B;
8185
8186/// Constant value defined from OpenGL 2.0
8187pub const GL_SHADING_LANGUAGE_VERSION: GLenum = 0x8B8C;
8188
8189/// Constant value defined from OpenGL 2.0
8190pub const GL_CURRENT_PROGRAM: GLenum = 0x8B8D;
8191
8192/// Constant value defined from OpenGL 2.0
8193pub const GL_POINT_SPRITE_COORD_ORIGIN: GLenum = 0x8CA0;
8194
8195/// Constant value defined from OpenGL 2.0
8196pub const GL_LOWER_LEFT: GLenum = 0x8CA1;
8197
8198/// Constant value defined from OpenGL 2.0
8199pub const GL_UPPER_LEFT: GLenum = 0x8CA2;
8200
8201/// Constant value defined from OpenGL 2.0
8202pub const GL_STENCIL_BACK_REF: GLenum = 0x8CA3;
8203
8204/// Constant value defined from OpenGL 2.0
8205pub const GL_STENCIL_BACK_VALUE_MASK: GLenum = 0x8CA4;
8206
8207/// Constant value defined from OpenGL 2.0
8208pub const GL_STENCIL_BACK_WRITEMASK: GLenum = 0x8CA5;
8209
8210/// Constant value defined from OpenGL 2.0
8211pub const GL_VERTEX_PROGRAM_TWO_SIDE: GLenum = 0x8643;
8212
8213/// Constant value defined from OpenGL 2.0
8214pub const GL_POINT_SPRITE: GLenum = 0x8861;
8215
8216/// Constant value defined from OpenGL 2.0
8217pub const GL_COORD_REPLACE: GLenum = 0x8862;
8218
8219/// Constant value defined from OpenGL 2.0
8220pub const GL_MAX_TEXTURE_COORDS: GLenum = 0x8871;
8221
8222/// Functions from OpenGL version 2.0
8223pub trait GL_2_0 {
8224	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
8225	fn glGetError(&self) -> GLenum;
8226
8227	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendEquationSeparate.xhtml>
8228	fn glBlendEquationSeparate(&self, modeRGB: GLenum, modeAlpha: GLenum) -> Result<()>;
8229
8230	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawBuffers.xhtml>
8231	fn glDrawBuffers(&self, n: GLsizei, bufs: *const GLenum) -> Result<()>;
8232
8233	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilOpSeparate.xhtml>
8234	fn glStencilOpSeparate(&self, face: GLenum, sfail: GLenum, dpfail: GLenum, dppass: GLenum) -> Result<()>;
8235
8236	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilFuncSeparate.xhtml>
8237	fn glStencilFuncSeparate(&self, face: GLenum, func: GLenum, ref_: GLint, mask: GLuint) -> Result<()>;
8238
8239	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilMaskSeparate.xhtml>
8240	fn glStencilMaskSeparate(&self, face: GLenum, mask: GLuint) -> Result<()>;
8241
8242	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glAttachShader.xhtml>
8243	fn glAttachShader(&self, program: GLuint, shader: GLuint) -> Result<()>;
8244
8245	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindAttribLocation.xhtml>
8246	fn glBindAttribLocation(&self, program: GLuint, index: GLuint, name: *const GLchar) -> Result<()>;
8247
8248	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompileShader.xhtml>
8249	fn glCompileShader(&self, shader: GLuint) -> Result<()>;
8250
8251	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateProgram.xhtml>
8252	fn glCreateProgram(&self) -> Result<GLuint>;
8253
8254	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateShader.xhtml>
8255	fn glCreateShader(&self, type_: GLenum) -> Result<GLuint>;
8256
8257	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteProgram.xhtml>
8258	fn glDeleteProgram(&self, program: GLuint) -> Result<()>;
8259
8260	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteShader.xhtml>
8261	fn glDeleteShader(&self, shader: GLuint) -> Result<()>;
8262
8263	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDetachShader.xhtml>
8264	fn glDetachShader(&self, program: GLuint, shader: GLuint) -> Result<()>;
8265
8266	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDisableVertexAttribArray.xhtml>
8267	fn glDisableVertexAttribArray(&self, index: GLuint) -> Result<()>;
8268
8269	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEnableVertexAttribArray.xhtml>
8270	fn glEnableVertexAttribArray(&self, index: GLuint) -> Result<()>;
8271
8272	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveAttrib.xhtml>
8273	fn glGetActiveAttrib(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLint, type_: *mut GLenum, name: *mut GLchar) -> Result<()>;
8274
8275	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveUniform.xhtml>
8276	fn glGetActiveUniform(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLint, type_: *mut GLenum, name: *mut GLchar) -> Result<()>;
8277
8278	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetAttachedShaders.xhtml>
8279	fn glGetAttachedShaders(&self, program: GLuint, maxCount: GLsizei, count: *mut GLsizei, shaders: *mut GLuint) -> Result<()>;
8280
8281	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetAttribLocation.xhtml>
8282	fn glGetAttribLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint>;
8283
8284	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramiv.xhtml>
8285	fn glGetProgramiv(&self, program: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
8286
8287	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramInfoLog.xhtml>
8288	fn glGetProgramInfoLog(&self, program: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()>;
8289
8290	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetShaderiv.xhtml>
8291	fn glGetShaderiv(&self, shader: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
8292
8293	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetShaderInfoLog.xhtml>
8294	fn glGetShaderInfoLog(&self, shader: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()>;
8295
8296	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetShaderSource.xhtml>
8297	fn glGetShaderSource(&self, shader: GLuint, bufSize: GLsizei, length: *mut GLsizei, source: *mut GLchar) -> Result<()>;
8298
8299	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformLocation.xhtml>
8300	fn glGetUniformLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint>;
8301
8302	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformfv.xhtml>
8303	fn glGetUniformfv(&self, program: GLuint, location: GLint, params: *mut GLfloat) -> Result<()>;
8304
8305	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformiv.xhtml>
8306	fn glGetUniformiv(&self, program: GLuint, location: GLint, params: *mut GLint) -> Result<()>;
8307
8308	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribdv.xhtml>
8309	fn glGetVertexAttribdv(&self, index: GLuint, pname: GLenum, params: *mut GLdouble) -> Result<()>;
8310
8311	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribfv.xhtml>
8312	fn glGetVertexAttribfv(&self, index: GLuint, pname: GLenum, params: *mut GLfloat) -> Result<()>;
8313
8314	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribiv.xhtml>
8315	fn glGetVertexAttribiv(&self, index: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
8316
8317	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribPointerv.xhtml>
8318	fn glGetVertexAttribPointerv(&self, index: GLuint, pname: GLenum, pointer: *mut *mut c_void) -> Result<()>;
8319
8320	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsProgram.xhtml>
8321	fn glIsProgram(&self, program: GLuint) -> Result<GLboolean>;
8322
8323	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsShader.xhtml>
8324	fn glIsShader(&self, shader: GLuint) -> Result<GLboolean>;
8325
8326	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glLinkProgram.xhtml>
8327	fn glLinkProgram(&self, program: GLuint) -> Result<()>;
8328
8329	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glShaderSource.xhtml>
8330	fn glShaderSource(&self, shader: GLuint, count: GLsizei, string_: *const *const GLchar, length: *const GLint) -> Result<()>;
8331
8332	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUseProgram.xhtml>
8333	fn glUseProgram(&self, program: GLuint) -> Result<()>;
8334
8335	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1f.xhtml>
8336	fn glUniform1f(&self, location: GLint, v0: GLfloat) -> Result<()>;
8337
8338	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2f.xhtml>
8339	fn glUniform2f(&self, location: GLint, v0: GLfloat, v1: GLfloat) -> Result<()>;
8340
8341	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3f.xhtml>
8342	fn glUniform3f(&self, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat) -> Result<()>;
8343
8344	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4f.xhtml>
8345	fn glUniform4f(&self, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat, v3: GLfloat) -> Result<()>;
8346
8347	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1i.xhtml>
8348	fn glUniform1i(&self, location: GLint, v0: GLint) -> Result<()>;
8349
8350	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2i.xhtml>
8351	fn glUniform2i(&self, location: GLint, v0: GLint, v1: GLint) -> Result<()>;
8352
8353	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3i.xhtml>
8354	fn glUniform3i(&self, location: GLint, v0: GLint, v1: GLint, v2: GLint) -> Result<()>;
8355
8356	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4i.xhtml>
8357	fn glUniform4i(&self, location: GLint, v0: GLint, v1: GLint, v2: GLint, v3: GLint) -> Result<()>;
8358
8359	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1fv.xhtml>
8360	fn glUniform1fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
8361
8362	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2fv.xhtml>
8363	fn glUniform2fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
8364
8365	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3fv.xhtml>
8366	fn glUniform3fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
8367
8368	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4fv.xhtml>
8369	fn glUniform4fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
8370
8371	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1iv.xhtml>
8372	fn glUniform1iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
8373
8374	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2iv.xhtml>
8375	fn glUniform2iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
8376
8377	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3iv.xhtml>
8378	fn glUniform3iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
8379
8380	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4iv.xhtml>
8381	fn glUniform4iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
8382
8383	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2fv.xhtml>
8384	fn glUniformMatrix2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
8385
8386	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3fv.xhtml>
8387	fn glUniformMatrix3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
8388
8389	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4fv.xhtml>
8390	fn glUniformMatrix4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
8391
8392	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glValidateProgram.xhtml>
8393	fn glValidateProgram(&self, program: GLuint) -> Result<()>;
8394
8395	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1d.xhtml>
8396	fn glVertexAttrib1d(&self, index: GLuint, x: GLdouble) -> Result<()>;
8397
8398	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1dv.xhtml>
8399	fn glVertexAttrib1dv(&self, index: GLuint, v: *const GLdouble) -> Result<()>;
8400
8401	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1f.xhtml>
8402	fn glVertexAttrib1f(&self, index: GLuint, x: GLfloat) -> Result<()>;
8403
8404	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1fv.xhtml>
8405	fn glVertexAttrib1fv(&self, index: GLuint, v: *const GLfloat) -> Result<()>;
8406
8407	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1s.xhtml>
8408	fn glVertexAttrib1s(&self, index: GLuint, x: GLshort) -> Result<()>;
8409
8410	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1sv.xhtml>
8411	fn glVertexAttrib1sv(&self, index: GLuint, v: *const GLshort) -> Result<()>;
8412
8413	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2d.xhtml>
8414	fn glVertexAttrib2d(&self, index: GLuint, x: GLdouble, y: GLdouble) -> Result<()>;
8415
8416	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2dv.xhtml>
8417	fn glVertexAttrib2dv(&self, index: GLuint, v: *const GLdouble) -> Result<()>;
8418
8419	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2f.xhtml>
8420	fn glVertexAttrib2f(&self, index: GLuint, x: GLfloat, y: GLfloat) -> Result<()>;
8421
8422	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2fv.xhtml>
8423	fn glVertexAttrib2fv(&self, index: GLuint, v: *const GLfloat) -> Result<()>;
8424
8425	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2s.xhtml>
8426	fn glVertexAttrib2s(&self, index: GLuint, x: GLshort, y: GLshort) -> Result<()>;
8427
8428	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2sv.xhtml>
8429	fn glVertexAttrib2sv(&self, index: GLuint, v: *const GLshort) -> Result<()>;
8430
8431	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3d.xhtml>
8432	fn glVertexAttrib3d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble) -> Result<()>;
8433
8434	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3dv.xhtml>
8435	fn glVertexAttrib3dv(&self, index: GLuint, v: *const GLdouble) -> Result<()>;
8436
8437	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3f.xhtml>
8438	fn glVertexAttrib3f(&self, index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat) -> Result<()>;
8439
8440	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3fv.xhtml>
8441	fn glVertexAttrib3fv(&self, index: GLuint, v: *const GLfloat) -> Result<()>;
8442
8443	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3s.xhtml>
8444	fn glVertexAttrib3s(&self, index: GLuint, x: GLshort, y: GLshort, z: GLshort) -> Result<()>;
8445
8446	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3sv.xhtml>
8447	fn glVertexAttrib3sv(&self, index: GLuint, v: *const GLshort) -> Result<()>;
8448
8449	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nbv.xhtml>
8450	fn glVertexAttrib4Nbv(&self, index: GLuint, v: *const GLbyte) -> Result<()>;
8451
8452	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Niv.xhtml>
8453	fn glVertexAttrib4Niv(&self, index: GLuint, v: *const GLint) -> Result<()>;
8454
8455	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nsv.xhtml>
8456	fn glVertexAttrib4Nsv(&self, index: GLuint, v: *const GLshort) -> Result<()>;
8457
8458	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nub.xhtml>
8459	fn glVertexAttrib4Nub(&self, index: GLuint, x: GLubyte, y: GLubyte, z: GLubyte, w: GLubyte) -> Result<()>;
8460
8461	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nubv.xhtml>
8462	fn glVertexAttrib4Nubv(&self, index: GLuint, v: *const GLubyte) -> Result<()>;
8463
8464	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nuiv.xhtml>
8465	fn glVertexAttrib4Nuiv(&self, index: GLuint, v: *const GLuint) -> Result<()>;
8466
8467	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nusv.xhtml>
8468	fn glVertexAttrib4Nusv(&self, index: GLuint, v: *const GLushort) -> Result<()>;
8469
8470	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4bv.xhtml>
8471	fn glVertexAttrib4bv(&self, index: GLuint, v: *const GLbyte) -> Result<()>;
8472
8473	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4d.xhtml>
8474	fn glVertexAttrib4d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble, w: GLdouble) -> Result<()>;
8475
8476	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4dv.xhtml>
8477	fn glVertexAttrib4dv(&self, index: GLuint, v: *const GLdouble) -> Result<()>;
8478
8479	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4f.xhtml>
8480	fn glVertexAttrib4f(&self, index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat, w: GLfloat) -> Result<()>;
8481
8482	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4fv.xhtml>
8483	fn glVertexAttrib4fv(&self, index: GLuint, v: *const GLfloat) -> Result<()>;
8484
8485	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4iv.xhtml>
8486	fn glVertexAttrib4iv(&self, index: GLuint, v: *const GLint) -> Result<()>;
8487
8488	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4s.xhtml>
8489	fn glVertexAttrib4s(&self, index: GLuint, x: GLshort, y: GLshort, z: GLshort, w: GLshort) -> Result<()>;
8490
8491	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4sv.xhtml>
8492	fn glVertexAttrib4sv(&self, index: GLuint, v: *const GLshort) -> Result<()>;
8493
8494	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4ubv.xhtml>
8495	fn glVertexAttrib4ubv(&self, index: GLuint, v: *const GLubyte) -> Result<()>;
8496
8497	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4uiv.xhtml>
8498	fn glVertexAttrib4uiv(&self, index: GLuint, v: *const GLuint) -> Result<()>;
8499
8500	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4usv.xhtml>
8501	fn glVertexAttrib4usv(&self, index: GLuint, v: *const GLushort) -> Result<()>;
8502
8503	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribPointer.xhtml>
8504	fn glVertexAttribPointer(&self, index: GLuint, size: GLint, type_: GLenum, normalized: GLboolean, stride: GLsizei, pointer: *const c_void) -> Result<()>;
8505	fn get_shading_language_version(&self) -> &'static str;
8506}
8507/// Functions from OpenGL version 2.0
8508#[derive(Clone, Copy, PartialEq, Eq, Hash)]
8509pub struct Version20 {
8510	/// The version of the OpenGL shading language
8511	shading_language_version: &'static str,
8512
8513	/// Is OpenGL version 2.0 available
8514	available: bool,
8515
8516	/// The function pointer to `glGetError()`
8517	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
8518	pub geterror: PFNGLGETERRORPROC,
8519
8520	/// The function pointer to `glBlendEquationSeparate()`
8521	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendEquationSeparate.xhtml>
8522	pub blendequationseparate: PFNGLBLENDEQUATIONSEPARATEPROC,
8523
8524	/// The function pointer to `glDrawBuffers()`
8525	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawBuffers.xhtml>
8526	pub drawbuffers: PFNGLDRAWBUFFERSPROC,
8527
8528	/// The function pointer to `glStencilOpSeparate()`
8529	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilOpSeparate.xhtml>
8530	pub stencilopseparate: PFNGLSTENCILOPSEPARATEPROC,
8531
8532	/// The function pointer to `glStencilFuncSeparate()`
8533	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilFuncSeparate.xhtml>
8534	pub stencilfuncseparate: PFNGLSTENCILFUNCSEPARATEPROC,
8535
8536	/// The function pointer to `glStencilMaskSeparate()`
8537	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilMaskSeparate.xhtml>
8538	pub stencilmaskseparate: PFNGLSTENCILMASKSEPARATEPROC,
8539
8540	/// The function pointer to `glAttachShader()`
8541	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glAttachShader.xhtml>
8542	pub attachshader: PFNGLATTACHSHADERPROC,
8543
8544	/// The function pointer to `glBindAttribLocation()`
8545	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindAttribLocation.xhtml>
8546	pub bindattriblocation: PFNGLBINDATTRIBLOCATIONPROC,
8547
8548	/// The function pointer to `glCompileShader()`
8549	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompileShader.xhtml>
8550	pub compileshader: PFNGLCOMPILESHADERPROC,
8551
8552	/// The function pointer to `glCreateProgram()`
8553	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateProgram.xhtml>
8554	pub createprogram: PFNGLCREATEPROGRAMPROC,
8555
8556	/// The function pointer to `glCreateShader()`
8557	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateShader.xhtml>
8558	pub createshader: PFNGLCREATESHADERPROC,
8559
8560	/// The function pointer to `glDeleteProgram()`
8561	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteProgram.xhtml>
8562	pub deleteprogram: PFNGLDELETEPROGRAMPROC,
8563
8564	/// The function pointer to `glDeleteShader()`
8565	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteShader.xhtml>
8566	pub deleteshader: PFNGLDELETESHADERPROC,
8567
8568	/// The function pointer to `glDetachShader()`
8569	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDetachShader.xhtml>
8570	pub detachshader: PFNGLDETACHSHADERPROC,
8571
8572	/// The function pointer to `glDisableVertexAttribArray()`
8573	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDisableVertexAttribArray.xhtml>
8574	pub disablevertexattribarray: PFNGLDISABLEVERTEXATTRIBARRAYPROC,
8575
8576	/// The function pointer to `glEnableVertexAttribArray()`
8577	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEnableVertexAttribArray.xhtml>
8578	pub enablevertexattribarray: PFNGLENABLEVERTEXATTRIBARRAYPROC,
8579
8580	/// The function pointer to `glGetActiveAttrib()`
8581	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveAttrib.xhtml>
8582	pub getactiveattrib: PFNGLGETACTIVEATTRIBPROC,
8583
8584	/// The function pointer to `glGetActiveUniform()`
8585	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveUniform.xhtml>
8586	pub getactiveuniform: PFNGLGETACTIVEUNIFORMPROC,
8587
8588	/// The function pointer to `glGetAttachedShaders()`
8589	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetAttachedShaders.xhtml>
8590	pub getattachedshaders: PFNGLGETATTACHEDSHADERSPROC,
8591
8592	/// The function pointer to `glGetAttribLocation()`
8593	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetAttribLocation.xhtml>
8594	pub getattriblocation: PFNGLGETATTRIBLOCATIONPROC,
8595
8596	/// The function pointer to `glGetProgramiv()`
8597	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramiv.xhtml>
8598	pub getprogramiv: PFNGLGETPROGRAMIVPROC,
8599
8600	/// The function pointer to `glGetProgramInfoLog()`
8601	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramInfoLog.xhtml>
8602	pub getprograminfolog: PFNGLGETPROGRAMINFOLOGPROC,
8603
8604	/// The function pointer to `glGetShaderiv()`
8605	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetShaderiv.xhtml>
8606	pub getshaderiv: PFNGLGETSHADERIVPROC,
8607
8608	/// The function pointer to `glGetShaderInfoLog()`
8609	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetShaderInfoLog.xhtml>
8610	pub getshaderinfolog: PFNGLGETSHADERINFOLOGPROC,
8611
8612	/// The function pointer to `glGetShaderSource()`
8613	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetShaderSource.xhtml>
8614	pub getshadersource: PFNGLGETSHADERSOURCEPROC,
8615
8616	/// The function pointer to `glGetUniformLocation()`
8617	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformLocation.xhtml>
8618	pub getuniformlocation: PFNGLGETUNIFORMLOCATIONPROC,
8619
8620	/// The function pointer to `glGetUniformfv()`
8621	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformfv.xhtml>
8622	pub getuniformfv: PFNGLGETUNIFORMFVPROC,
8623
8624	/// The function pointer to `glGetUniformiv()`
8625	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformiv.xhtml>
8626	pub getuniformiv: PFNGLGETUNIFORMIVPROC,
8627
8628	/// The function pointer to `glGetVertexAttribdv()`
8629	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribdv.xhtml>
8630	pub getvertexattribdv: PFNGLGETVERTEXATTRIBDVPROC,
8631
8632	/// The function pointer to `glGetVertexAttribfv()`
8633	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribfv.xhtml>
8634	pub getvertexattribfv: PFNGLGETVERTEXATTRIBFVPROC,
8635
8636	/// The function pointer to `glGetVertexAttribiv()`
8637	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribiv.xhtml>
8638	pub getvertexattribiv: PFNGLGETVERTEXATTRIBIVPROC,
8639
8640	/// The function pointer to `glGetVertexAttribPointerv()`
8641	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribPointerv.xhtml>
8642	pub getvertexattribpointerv: PFNGLGETVERTEXATTRIBPOINTERVPROC,
8643
8644	/// The function pointer to `glIsProgram()`
8645	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsProgram.xhtml>
8646	pub isprogram: PFNGLISPROGRAMPROC,
8647
8648	/// The function pointer to `glIsShader()`
8649	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsShader.xhtml>
8650	pub isshader: PFNGLISSHADERPROC,
8651
8652	/// The function pointer to `glLinkProgram()`
8653	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glLinkProgram.xhtml>
8654	pub linkprogram: PFNGLLINKPROGRAMPROC,
8655
8656	/// The function pointer to `glShaderSource()`
8657	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glShaderSource.xhtml>
8658	pub shadersource: PFNGLSHADERSOURCEPROC,
8659
8660	/// The function pointer to `glUseProgram()`
8661	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUseProgram.xhtml>
8662	pub useprogram: PFNGLUSEPROGRAMPROC,
8663
8664	/// The function pointer to `glUniform1f()`
8665	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1f.xhtml>
8666	pub uniform1f: PFNGLUNIFORM1FPROC,
8667
8668	/// The function pointer to `glUniform2f()`
8669	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2f.xhtml>
8670	pub uniform2f: PFNGLUNIFORM2FPROC,
8671
8672	/// The function pointer to `glUniform3f()`
8673	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3f.xhtml>
8674	pub uniform3f: PFNGLUNIFORM3FPROC,
8675
8676	/// The function pointer to `glUniform4f()`
8677	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4f.xhtml>
8678	pub uniform4f: PFNGLUNIFORM4FPROC,
8679
8680	/// The function pointer to `glUniform1i()`
8681	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1i.xhtml>
8682	pub uniform1i: PFNGLUNIFORM1IPROC,
8683
8684	/// The function pointer to `glUniform2i()`
8685	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2i.xhtml>
8686	pub uniform2i: PFNGLUNIFORM2IPROC,
8687
8688	/// The function pointer to `glUniform3i()`
8689	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3i.xhtml>
8690	pub uniform3i: PFNGLUNIFORM3IPROC,
8691
8692	/// The function pointer to `glUniform4i()`
8693	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4i.xhtml>
8694	pub uniform4i: PFNGLUNIFORM4IPROC,
8695
8696	/// The function pointer to `glUniform1fv()`
8697	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1fv.xhtml>
8698	pub uniform1fv: PFNGLUNIFORM1FVPROC,
8699
8700	/// The function pointer to `glUniform2fv()`
8701	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2fv.xhtml>
8702	pub uniform2fv: PFNGLUNIFORM2FVPROC,
8703
8704	/// The function pointer to `glUniform3fv()`
8705	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3fv.xhtml>
8706	pub uniform3fv: PFNGLUNIFORM3FVPROC,
8707
8708	/// The function pointer to `glUniform4fv()`
8709	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4fv.xhtml>
8710	pub uniform4fv: PFNGLUNIFORM4FVPROC,
8711
8712	/// The function pointer to `glUniform1iv()`
8713	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1iv.xhtml>
8714	pub uniform1iv: PFNGLUNIFORM1IVPROC,
8715
8716	/// The function pointer to `glUniform2iv()`
8717	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2iv.xhtml>
8718	pub uniform2iv: PFNGLUNIFORM2IVPROC,
8719
8720	/// The function pointer to `glUniform3iv()`
8721	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3iv.xhtml>
8722	pub uniform3iv: PFNGLUNIFORM3IVPROC,
8723
8724	/// The function pointer to `glUniform4iv()`
8725	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4iv.xhtml>
8726	pub uniform4iv: PFNGLUNIFORM4IVPROC,
8727
8728	/// The function pointer to `glUniformMatrix2fv()`
8729	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2fv.xhtml>
8730	pub uniformmatrix2fv: PFNGLUNIFORMMATRIX2FVPROC,
8731
8732	/// The function pointer to `glUniformMatrix3fv()`
8733	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3fv.xhtml>
8734	pub uniformmatrix3fv: PFNGLUNIFORMMATRIX3FVPROC,
8735
8736	/// The function pointer to `glUniformMatrix4fv()`
8737	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4fv.xhtml>
8738	pub uniformmatrix4fv: PFNGLUNIFORMMATRIX4FVPROC,
8739
8740	/// The function pointer to `glValidateProgram()`
8741	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glValidateProgram.xhtml>
8742	pub validateprogram: PFNGLVALIDATEPROGRAMPROC,
8743
8744	/// The function pointer to `glVertexAttrib1d()`
8745	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1d.xhtml>
8746	pub vertexattrib1d: PFNGLVERTEXATTRIB1DPROC,
8747
8748	/// The function pointer to `glVertexAttrib1dv()`
8749	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1dv.xhtml>
8750	pub vertexattrib1dv: PFNGLVERTEXATTRIB1DVPROC,
8751
8752	/// The function pointer to `glVertexAttrib1f()`
8753	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1f.xhtml>
8754	pub vertexattrib1f: PFNGLVERTEXATTRIB1FPROC,
8755
8756	/// The function pointer to `glVertexAttrib1fv()`
8757	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1fv.xhtml>
8758	pub vertexattrib1fv: PFNGLVERTEXATTRIB1FVPROC,
8759
8760	/// The function pointer to `glVertexAttrib1s()`
8761	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1s.xhtml>
8762	pub vertexattrib1s: PFNGLVERTEXATTRIB1SPROC,
8763
8764	/// The function pointer to `glVertexAttrib1sv()`
8765	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1sv.xhtml>
8766	pub vertexattrib1sv: PFNGLVERTEXATTRIB1SVPROC,
8767
8768	/// The function pointer to `glVertexAttrib2d()`
8769	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2d.xhtml>
8770	pub vertexattrib2d: PFNGLVERTEXATTRIB2DPROC,
8771
8772	/// The function pointer to `glVertexAttrib2dv()`
8773	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2dv.xhtml>
8774	pub vertexattrib2dv: PFNGLVERTEXATTRIB2DVPROC,
8775
8776	/// The function pointer to `glVertexAttrib2f()`
8777	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2f.xhtml>
8778	pub vertexattrib2f: PFNGLVERTEXATTRIB2FPROC,
8779
8780	/// The function pointer to `glVertexAttrib2fv()`
8781	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2fv.xhtml>
8782	pub vertexattrib2fv: PFNGLVERTEXATTRIB2FVPROC,
8783
8784	/// The function pointer to `glVertexAttrib2s()`
8785	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2s.xhtml>
8786	pub vertexattrib2s: PFNGLVERTEXATTRIB2SPROC,
8787
8788	/// The function pointer to `glVertexAttrib2sv()`
8789	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2sv.xhtml>
8790	pub vertexattrib2sv: PFNGLVERTEXATTRIB2SVPROC,
8791
8792	/// The function pointer to `glVertexAttrib3d()`
8793	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3d.xhtml>
8794	pub vertexattrib3d: PFNGLVERTEXATTRIB3DPROC,
8795
8796	/// The function pointer to `glVertexAttrib3dv()`
8797	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3dv.xhtml>
8798	pub vertexattrib3dv: PFNGLVERTEXATTRIB3DVPROC,
8799
8800	/// The function pointer to `glVertexAttrib3f()`
8801	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3f.xhtml>
8802	pub vertexattrib3f: PFNGLVERTEXATTRIB3FPROC,
8803
8804	/// The function pointer to `glVertexAttrib3fv()`
8805	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3fv.xhtml>
8806	pub vertexattrib3fv: PFNGLVERTEXATTRIB3FVPROC,
8807
8808	/// The function pointer to `glVertexAttrib3s()`
8809	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3s.xhtml>
8810	pub vertexattrib3s: PFNGLVERTEXATTRIB3SPROC,
8811
8812	/// The function pointer to `glVertexAttrib3sv()`
8813	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3sv.xhtml>
8814	pub vertexattrib3sv: PFNGLVERTEXATTRIB3SVPROC,
8815
8816	/// The function pointer to `glVertexAttrib4Nbv()`
8817	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nbv.xhtml>
8818	pub vertexattrib4nbv: PFNGLVERTEXATTRIB4NBVPROC,
8819
8820	/// The function pointer to `glVertexAttrib4Niv()`
8821	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Niv.xhtml>
8822	pub vertexattrib4niv: PFNGLVERTEXATTRIB4NIVPROC,
8823
8824	/// The function pointer to `glVertexAttrib4Nsv()`
8825	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nsv.xhtml>
8826	pub vertexattrib4nsv: PFNGLVERTEXATTRIB4NSVPROC,
8827
8828	/// The function pointer to `glVertexAttrib4Nub()`
8829	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nub.xhtml>
8830	pub vertexattrib4nub: PFNGLVERTEXATTRIB4NUBPROC,
8831
8832	/// The function pointer to `glVertexAttrib4Nubv()`
8833	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nubv.xhtml>
8834	pub vertexattrib4nubv: PFNGLVERTEXATTRIB4NUBVPROC,
8835
8836	/// The function pointer to `glVertexAttrib4Nuiv()`
8837	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nuiv.xhtml>
8838	pub vertexattrib4nuiv: PFNGLVERTEXATTRIB4NUIVPROC,
8839
8840	/// The function pointer to `glVertexAttrib4Nusv()`
8841	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nusv.xhtml>
8842	pub vertexattrib4nusv: PFNGLVERTEXATTRIB4NUSVPROC,
8843
8844	/// The function pointer to `glVertexAttrib4bv()`
8845	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4bv.xhtml>
8846	pub vertexattrib4bv: PFNGLVERTEXATTRIB4BVPROC,
8847
8848	/// The function pointer to `glVertexAttrib4d()`
8849	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4d.xhtml>
8850	pub vertexattrib4d: PFNGLVERTEXATTRIB4DPROC,
8851
8852	/// The function pointer to `glVertexAttrib4dv()`
8853	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4dv.xhtml>
8854	pub vertexattrib4dv: PFNGLVERTEXATTRIB4DVPROC,
8855
8856	/// The function pointer to `glVertexAttrib4f()`
8857	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4f.xhtml>
8858	pub vertexattrib4f: PFNGLVERTEXATTRIB4FPROC,
8859
8860	/// The function pointer to `glVertexAttrib4fv()`
8861	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4fv.xhtml>
8862	pub vertexattrib4fv: PFNGLVERTEXATTRIB4FVPROC,
8863
8864	/// The function pointer to `glVertexAttrib4iv()`
8865	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4iv.xhtml>
8866	pub vertexattrib4iv: PFNGLVERTEXATTRIB4IVPROC,
8867
8868	/// The function pointer to `glVertexAttrib4s()`
8869	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4s.xhtml>
8870	pub vertexattrib4s: PFNGLVERTEXATTRIB4SPROC,
8871
8872	/// The function pointer to `glVertexAttrib4sv()`
8873	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4sv.xhtml>
8874	pub vertexattrib4sv: PFNGLVERTEXATTRIB4SVPROC,
8875
8876	/// The function pointer to `glVertexAttrib4ubv()`
8877	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4ubv.xhtml>
8878	pub vertexattrib4ubv: PFNGLVERTEXATTRIB4UBVPROC,
8879
8880	/// The function pointer to `glVertexAttrib4uiv()`
8881	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4uiv.xhtml>
8882	pub vertexattrib4uiv: PFNGLVERTEXATTRIB4UIVPROC,
8883
8884	/// The function pointer to `glVertexAttrib4usv()`
8885	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4usv.xhtml>
8886	pub vertexattrib4usv: PFNGLVERTEXATTRIB4USVPROC,
8887
8888	/// The function pointer to `glVertexAttribPointer()`
8889	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribPointer.xhtml>
8890	pub vertexattribpointer: PFNGLVERTEXATTRIBPOINTERPROC,
8891}
8892
8893impl GL_2_0 for Version20 {
8894	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
8895	#[inline(always)]
8896	fn glGetError(&self) -> GLenum {
8897		(self.geterror)()
8898	}
8899	#[inline(always)]
8900	fn glBlendEquationSeparate(&self, modeRGB: GLenum, modeAlpha: GLenum) -> Result<()> {
8901		let ret = process_catch("glBlendEquationSeparate", catch_unwind(||(self.blendequationseparate)(modeRGB, modeAlpha)));
8902		#[cfg(feature = "diagnose")]
8903		if let Ok(ret) = ret {
8904			return to_result("glBlendEquationSeparate", ret, self.glGetError());
8905		} else {
8906			return ret
8907		}
8908		#[cfg(not(feature = "diagnose"))]
8909		return ret;
8910	}
8911	#[inline(always)]
8912	fn glDrawBuffers(&self, n: GLsizei, bufs: *const GLenum) -> Result<()> {
8913		let ret = process_catch("glDrawBuffers", catch_unwind(||(self.drawbuffers)(n, bufs)));
8914		#[cfg(feature = "diagnose")]
8915		if let Ok(ret) = ret {
8916			return to_result("glDrawBuffers", ret, self.glGetError());
8917		} else {
8918			return ret
8919		}
8920		#[cfg(not(feature = "diagnose"))]
8921		return ret;
8922	}
8923	#[inline(always)]
8924	fn glStencilOpSeparate(&self, face: GLenum, sfail: GLenum, dpfail: GLenum, dppass: GLenum) -> Result<()> {
8925		let ret = process_catch("glStencilOpSeparate", catch_unwind(||(self.stencilopseparate)(face, sfail, dpfail, dppass)));
8926		#[cfg(feature = "diagnose")]
8927		if let Ok(ret) = ret {
8928			return to_result("glStencilOpSeparate", ret, self.glGetError());
8929		} else {
8930			return ret
8931		}
8932		#[cfg(not(feature = "diagnose"))]
8933		return ret;
8934	}
8935	#[inline(always)]
8936	fn glStencilFuncSeparate(&self, face: GLenum, func: GLenum, ref_: GLint, mask: GLuint) -> Result<()> {
8937		let ret = process_catch("glStencilFuncSeparate", catch_unwind(||(self.stencilfuncseparate)(face, func, ref_, mask)));
8938		#[cfg(feature = "diagnose")]
8939		if let Ok(ret) = ret {
8940			return to_result("glStencilFuncSeparate", ret, self.glGetError());
8941		} else {
8942			return ret
8943		}
8944		#[cfg(not(feature = "diagnose"))]
8945		return ret;
8946	}
8947	#[inline(always)]
8948	fn glStencilMaskSeparate(&self, face: GLenum, mask: GLuint) -> Result<()> {
8949		let ret = process_catch("glStencilMaskSeparate", catch_unwind(||(self.stencilmaskseparate)(face, mask)));
8950		#[cfg(feature = "diagnose")]
8951		if let Ok(ret) = ret {
8952			return to_result("glStencilMaskSeparate", ret, self.glGetError());
8953		} else {
8954			return ret
8955		}
8956		#[cfg(not(feature = "diagnose"))]
8957		return ret;
8958	}
8959	#[inline(always)]
8960	fn glAttachShader(&self, program: GLuint, shader: GLuint) -> Result<()> {
8961		let ret = process_catch("glAttachShader", catch_unwind(||(self.attachshader)(program, shader)));
8962		#[cfg(feature = "diagnose")]
8963		if let Ok(ret) = ret {
8964			return to_result("glAttachShader", ret, self.glGetError());
8965		} else {
8966			return ret
8967		}
8968		#[cfg(not(feature = "diagnose"))]
8969		return ret;
8970	}
8971	#[inline(always)]
8972	fn glBindAttribLocation(&self, program: GLuint, index: GLuint, name: *const GLchar) -> Result<()> {
8973		let ret = process_catch("glBindAttribLocation", catch_unwind(||(self.bindattriblocation)(program, index, name)));
8974		#[cfg(feature = "diagnose")]
8975		if let Ok(ret) = ret {
8976			return to_result("glBindAttribLocation", ret, self.glGetError());
8977		} else {
8978			return ret
8979		}
8980		#[cfg(not(feature = "diagnose"))]
8981		return ret;
8982	}
8983	#[inline(always)]
8984	fn glCompileShader(&self, shader: GLuint) -> Result<()> {
8985		let ret = process_catch("glCompileShader", catch_unwind(||(self.compileshader)(shader)));
8986		#[cfg(feature = "diagnose")]
8987		if let Ok(ret) = ret {
8988			return to_result("glCompileShader", ret, self.glGetError());
8989		} else {
8990			return ret
8991		}
8992		#[cfg(not(feature = "diagnose"))]
8993		return ret;
8994	}
8995	#[inline(always)]
8996	fn glCreateProgram(&self) -> Result<GLuint> {
8997		let ret = process_catch("glCreateProgram", catch_unwind(||(self.createprogram)()));
8998		#[cfg(feature = "diagnose")]
8999		if let Ok(ret) = ret {
9000			return to_result("glCreateProgram", ret, self.glGetError());
9001		} else {
9002			return ret
9003		}
9004		#[cfg(not(feature = "diagnose"))]
9005		return ret;
9006	}
9007	#[inline(always)]
9008	fn glCreateShader(&self, type_: GLenum) -> Result<GLuint> {
9009		let ret = process_catch("glCreateShader", catch_unwind(||(self.createshader)(type_)));
9010		#[cfg(feature = "diagnose")]
9011		if let Ok(ret) = ret {
9012			return to_result("glCreateShader", ret, self.glGetError());
9013		} else {
9014			return ret
9015		}
9016		#[cfg(not(feature = "diagnose"))]
9017		return ret;
9018	}
9019	#[inline(always)]
9020	fn glDeleteProgram(&self, program: GLuint) -> Result<()> {
9021		let ret = process_catch("glDeleteProgram", catch_unwind(||(self.deleteprogram)(program)));
9022		#[cfg(feature = "diagnose")]
9023		if let Ok(ret) = ret {
9024			return to_result("glDeleteProgram", ret, self.glGetError());
9025		} else {
9026			return ret
9027		}
9028		#[cfg(not(feature = "diagnose"))]
9029		return ret;
9030	}
9031	#[inline(always)]
9032	fn glDeleteShader(&self, shader: GLuint) -> Result<()> {
9033		let ret = process_catch("glDeleteShader", catch_unwind(||(self.deleteshader)(shader)));
9034		#[cfg(feature = "diagnose")]
9035		if let Ok(ret) = ret {
9036			return to_result("glDeleteShader", ret, self.glGetError());
9037		} else {
9038			return ret
9039		}
9040		#[cfg(not(feature = "diagnose"))]
9041		return ret;
9042	}
9043	#[inline(always)]
9044	fn glDetachShader(&self, program: GLuint, shader: GLuint) -> Result<()> {
9045		let ret = process_catch("glDetachShader", catch_unwind(||(self.detachshader)(program, shader)));
9046		#[cfg(feature = "diagnose")]
9047		if let Ok(ret) = ret {
9048			return to_result("glDetachShader", ret, self.glGetError());
9049		} else {
9050			return ret
9051		}
9052		#[cfg(not(feature = "diagnose"))]
9053		return ret;
9054	}
9055	#[inline(always)]
9056	fn glDisableVertexAttribArray(&self, index: GLuint) -> Result<()> {
9057		let ret = process_catch("glDisableVertexAttribArray", catch_unwind(||(self.disablevertexattribarray)(index)));
9058		#[cfg(feature = "diagnose")]
9059		if let Ok(ret) = ret {
9060			return to_result("glDisableVertexAttribArray", ret, self.glGetError());
9061		} else {
9062			return ret
9063		}
9064		#[cfg(not(feature = "diagnose"))]
9065		return ret;
9066	}
9067	#[inline(always)]
9068	fn glEnableVertexAttribArray(&self, index: GLuint) -> Result<()> {
9069		let ret = process_catch("glEnableVertexAttribArray", catch_unwind(||(self.enablevertexattribarray)(index)));
9070		#[cfg(feature = "diagnose")]
9071		if let Ok(ret) = ret {
9072			return to_result("glEnableVertexAttribArray", ret, self.glGetError());
9073		} else {
9074			return ret
9075		}
9076		#[cfg(not(feature = "diagnose"))]
9077		return ret;
9078	}
9079	#[inline(always)]
9080	fn glGetActiveAttrib(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLint, type_: *mut GLenum, name: *mut GLchar) -> Result<()> {
9081		let ret = process_catch("glGetActiveAttrib", catch_unwind(||(self.getactiveattrib)(program, index, bufSize, length, size, type_, name)));
9082		#[cfg(feature = "diagnose")]
9083		if let Ok(ret) = ret {
9084			return to_result("glGetActiveAttrib", ret, self.glGetError());
9085		} else {
9086			return ret
9087		}
9088		#[cfg(not(feature = "diagnose"))]
9089		return ret;
9090	}
9091	#[inline(always)]
9092	fn glGetActiveUniform(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLint, type_: *mut GLenum, name: *mut GLchar) -> Result<()> {
9093		let ret = process_catch("glGetActiveUniform", catch_unwind(||(self.getactiveuniform)(program, index, bufSize, length, size, type_, name)));
9094		#[cfg(feature = "diagnose")]
9095		if let Ok(ret) = ret {
9096			return to_result("glGetActiveUniform", ret, self.glGetError());
9097		} else {
9098			return ret
9099		}
9100		#[cfg(not(feature = "diagnose"))]
9101		return ret;
9102	}
9103	#[inline(always)]
9104	fn glGetAttachedShaders(&self, program: GLuint, maxCount: GLsizei, count: *mut GLsizei, shaders: *mut GLuint) -> Result<()> {
9105		let ret = process_catch("glGetAttachedShaders", catch_unwind(||(self.getattachedshaders)(program, maxCount, count, shaders)));
9106		#[cfg(feature = "diagnose")]
9107		if let Ok(ret) = ret {
9108			return to_result("glGetAttachedShaders", ret, self.glGetError());
9109		} else {
9110			return ret
9111		}
9112		#[cfg(not(feature = "diagnose"))]
9113		return ret;
9114	}
9115	#[inline(always)]
9116	fn glGetAttribLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint> {
9117		let ret = process_catch("glGetAttribLocation", catch_unwind(||(self.getattriblocation)(program, name)));
9118		#[cfg(feature = "diagnose")]
9119		if let Ok(ret) = ret {
9120			return to_result("glGetAttribLocation", ret, self.glGetError());
9121		} else {
9122			return ret
9123		}
9124		#[cfg(not(feature = "diagnose"))]
9125		return ret;
9126	}
9127	#[inline(always)]
9128	fn glGetProgramiv(&self, program: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
9129		let ret = process_catch("glGetProgramiv", catch_unwind(||(self.getprogramiv)(program, pname, params)));
9130		#[cfg(feature = "diagnose")]
9131		if let Ok(ret) = ret {
9132			return to_result("glGetProgramiv", ret, self.glGetError());
9133		} else {
9134			return ret
9135		}
9136		#[cfg(not(feature = "diagnose"))]
9137		return ret;
9138	}
9139	#[inline(always)]
9140	fn glGetProgramInfoLog(&self, program: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()> {
9141		let ret = process_catch("glGetProgramInfoLog", catch_unwind(||(self.getprograminfolog)(program, bufSize, length, infoLog)));
9142		#[cfg(feature = "diagnose")]
9143		if let Ok(ret) = ret {
9144			return to_result("glGetProgramInfoLog", ret, self.glGetError());
9145		} else {
9146			return ret
9147		}
9148		#[cfg(not(feature = "diagnose"))]
9149		return ret;
9150	}
9151	#[inline(always)]
9152	fn glGetShaderiv(&self, shader: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
9153		let ret = process_catch("glGetShaderiv", catch_unwind(||(self.getshaderiv)(shader, pname, params)));
9154		#[cfg(feature = "diagnose")]
9155		if let Ok(ret) = ret {
9156			return to_result("glGetShaderiv", ret, self.glGetError());
9157		} else {
9158			return ret
9159		}
9160		#[cfg(not(feature = "diagnose"))]
9161		return ret;
9162	}
9163	#[inline(always)]
9164	fn glGetShaderInfoLog(&self, shader: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()> {
9165		let ret = process_catch("glGetShaderInfoLog", catch_unwind(||(self.getshaderinfolog)(shader, bufSize, length, infoLog)));
9166		#[cfg(feature = "diagnose")]
9167		if let Ok(ret) = ret {
9168			return to_result("glGetShaderInfoLog", ret, self.glGetError());
9169		} else {
9170			return ret
9171		}
9172		#[cfg(not(feature = "diagnose"))]
9173		return ret;
9174	}
9175	#[inline(always)]
9176	fn glGetShaderSource(&self, shader: GLuint, bufSize: GLsizei, length: *mut GLsizei, source: *mut GLchar) -> Result<()> {
9177		let ret = process_catch("glGetShaderSource", catch_unwind(||(self.getshadersource)(shader, bufSize, length, source)));
9178		#[cfg(feature = "diagnose")]
9179		if let Ok(ret) = ret {
9180			return to_result("glGetShaderSource", ret, self.glGetError());
9181		} else {
9182			return ret
9183		}
9184		#[cfg(not(feature = "diagnose"))]
9185		return ret;
9186	}
9187	#[inline(always)]
9188	fn glGetUniformLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint> {
9189		let ret = process_catch("glGetUniformLocation", catch_unwind(||(self.getuniformlocation)(program, name)));
9190		#[cfg(feature = "diagnose")]
9191		if let Ok(ret) = ret {
9192			return to_result("glGetUniformLocation", ret, self.glGetError());
9193		} else {
9194			return ret
9195		}
9196		#[cfg(not(feature = "diagnose"))]
9197		return ret;
9198	}
9199	#[inline(always)]
9200	fn glGetUniformfv(&self, program: GLuint, location: GLint, params: *mut GLfloat) -> Result<()> {
9201		let ret = process_catch("glGetUniformfv", catch_unwind(||(self.getuniformfv)(program, location, params)));
9202		#[cfg(feature = "diagnose")]
9203		if let Ok(ret) = ret {
9204			return to_result("glGetUniformfv", ret, self.glGetError());
9205		} else {
9206			return ret
9207		}
9208		#[cfg(not(feature = "diagnose"))]
9209		return ret;
9210	}
9211	#[inline(always)]
9212	fn glGetUniformiv(&self, program: GLuint, location: GLint, params: *mut GLint) -> Result<()> {
9213		let ret = process_catch("glGetUniformiv", catch_unwind(||(self.getuniformiv)(program, location, params)));
9214		#[cfg(feature = "diagnose")]
9215		if let Ok(ret) = ret {
9216			return to_result("glGetUniformiv", ret, self.glGetError());
9217		} else {
9218			return ret
9219		}
9220		#[cfg(not(feature = "diagnose"))]
9221		return ret;
9222	}
9223	#[inline(always)]
9224	fn glGetVertexAttribdv(&self, index: GLuint, pname: GLenum, params: *mut GLdouble) -> Result<()> {
9225		let ret = process_catch("glGetVertexAttribdv", catch_unwind(||(self.getvertexattribdv)(index, pname, params)));
9226		#[cfg(feature = "diagnose")]
9227		if let Ok(ret) = ret {
9228			return to_result("glGetVertexAttribdv", ret, self.glGetError());
9229		} else {
9230			return ret
9231		}
9232		#[cfg(not(feature = "diagnose"))]
9233		return ret;
9234	}
9235	#[inline(always)]
9236	fn glGetVertexAttribfv(&self, index: GLuint, pname: GLenum, params: *mut GLfloat) -> Result<()> {
9237		let ret = process_catch("glGetVertexAttribfv", catch_unwind(||(self.getvertexattribfv)(index, pname, params)));
9238		#[cfg(feature = "diagnose")]
9239		if let Ok(ret) = ret {
9240			return to_result("glGetVertexAttribfv", ret, self.glGetError());
9241		} else {
9242			return ret
9243		}
9244		#[cfg(not(feature = "diagnose"))]
9245		return ret;
9246	}
9247	#[inline(always)]
9248	fn glGetVertexAttribiv(&self, index: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
9249		let ret = process_catch("glGetVertexAttribiv", catch_unwind(||(self.getvertexattribiv)(index, pname, params)));
9250		#[cfg(feature = "diagnose")]
9251		if let Ok(ret) = ret {
9252			return to_result("glGetVertexAttribiv", ret, self.glGetError());
9253		} else {
9254			return ret
9255		}
9256		#[cfg(not(feature = "diagnose"))]
9257		return ret;
9258	}
9259	#[inline(always)]
9260	fn glGetVertexAttribPointerv(&self, index: GLuint, pname: GLenum, pointer: *mut *mut c_void) -> Result<()> {
9261		let ret = process_catch("glGetVertexAttribPointerv", catch_unwind(||(self.getvertexattribpointerv)(index, pname, pointer)));
9262		#[cfg(feature = "diagnose")]
9263		if let Ok(ret) = ret {
9264			return to_result("glGetVertexAttribPointerv", ret, self.glGetError());
9265		} else {
9266			return ret
9267		}
9268		#[cfg(not(feature = "diagnose"))]
9269		return ret;
9270	}
9271	#[inline(always)]
9272	fn glIsProgram(&self, program: GLuint) -> Result<GLboolean> {
9273		let ret = process_catch("glIsProgram", catch_unwind(||(self.isprogram)(program)));
9274		#[cfg(feature = "diagnose")]
9275		if let Ok(ret) = ret {
9276			return to_result("glIsProgram", ret, self.glGetError());
9277		} else {
9278			return ret
9279		}
9280		#[cfg(not(feature = "diagnose"))]
9281		return ret;
9282	}
9283	#[inline(always)]
9284	fn glIsShader(&self, shader: GLuint) -> Result<GLboolean> {
9285		let ret = process_catch("glIsShader", catch_unwind(||(self.isshader)(shader)));
9286		#[cfg(feature = "diagnose")]
9287		if let Ok(ret) = ret {
9288			return to_result("glIsShader", ret, self.glGetError());
9289		} else {
9290			return ret
9291		}
9292		#[cfg(not(feature = "diagnose"))]
9293		return ret;
9294	}
9295	#[inline(always)]
9296	fn glLinkProgram(&self, program: GLuint) -> Result<()> {
9297		let ret = process_catch("glLinkProgram", catch_unwind(||(self.linkprogram)(program)));
9298		#[cfg(feature = "diagnose")]
9299		if let Ok(ret) = ret {
9300			return to_result("glLinkProgram", ret, self.glGetError());
9301		} else {
9302			return ret
9303		}
9304		#[cfg(not(feature = "diagnose"))]
9305		return ret;
9306	}
9307	#[inline(always)]
9308	fn glShaderSource(&self, shader: GLuint, count: GLsizei, string_: *const *const GLchar, length: *const GLint) -> Result<()> {
9309		let ret = process_catch("glShaderSource", catch_unwind(||(self.shadersource)(shader, count, string_, length)));
9310		#[cfg(feature = "diagnose")]
9311		if let Ok(ret) = ret {
9312			return to_result("glShaderSource", ret, self.glGetError());
9313		} else {
9314			return ret
9315		}
9316		#[cfg(not(feature = "diagnose"))]
9317		return ret;
9318	}
9319	#[inline(always)]
9320	fn glUseProgram(&self, program: GLuint) -> Result<()> {
9321		let ret = process_catch("glUseProgram", catch_unwind(||(self.useprogram)(program)));
9322		#[cfg(feature = "diagnose")]
9323		if let Ok(ret) = ret {
9324			return to_result("glUseProgram", ret, self.glGetError());
9325		} else {
9326			return ret
9327		}
9328		#[cfg(not(feature = "diagnose"))]
9329		return ret;
9330	}
9331	#[inline(always)]
9332	fn glUniform1f(&self, location: GLint, v0: GLfloat) -> Result<()> {
9333		let ret = process_catch("glUniform1f", catch_unwind(||(self.uniform1f)(location, v0)));
9334		#[cfg(feature = "diagnose")]
9335		if let Ok(ret) = ret {
9336			return to_result("glUniform1f", ret, self.glGetError());
9337		} else {
9338			return ret
9339		}
9340		#[cfg(not(feature = "diagnose"))]
9341		return ret;
9342	}
9343	#[inline(always)]
9344	fn glUniform2f(&self, location: GLint, v0: GLfloat, v1: GLfloat) -> Result<()> {
9345		let ret = process_catch("glUniform2f", catch_unwind(||(self.uniform2f)(location, v0, v1)));
9346		#[cfg(feature = "diagnose")]
9347		if let Ok(ret) = ret {
9348			return to_result("glUniform2f", ret, self.glGetError());
9349		} else {
9350			return ret
9351		}
9352		#[cfg(not(feature = "diagnose"))]
9353		return ret;
9354	}
9355	#[inline(always)]
9356	fn glUniform3f(&self, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat) -> Result<()> {
9357		let ret = process_catch("glUniform3f", catch_unwind(||(self.uniform3f)(location, v0, v1, v2)));
9358		#[cfg(feature = "diagnose")]
9359		if let Ok(ret) = ret {
9360			return to_result("glUniform3f", ret, self.glGetError());
9361		} else {
9362			return ret
9363		}
9364		#[cfg(not(feature = "diagnose"))]
9365		return ret;
9366	}
9367	#[inline(always)]
9368	fn glUniform4f(&self, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat, v3: GLfloat) -> Result<()> {
9369		let ret = process_catch("glUniform4f", catch_unwind(||(self.uniform4f)(location, v0, v1, v2, v3)));
9370		#[cfg(feature = "diagnose")]
9371		if let Ok(ret) = ret {
9372			return to_result("glUniform4f", ret, self.glGetError());
9373		} else {
9374			return ret
9375		}
9376		#[cfg(not(feature = "diagnose"))]
9377		return ret;
9378	}
9379	#[inline(always)]
9380	fn glUniform1i(&self, location: GLint, v0: GLint) -> Result<()> {
9381		let ret = process_catch("glUniform1i", catch_unwind(||(self.uniform1i)(location, v0)));
9382		#[cfg(feature = "diagnose")]
9383		if let Ok(ret) = ret {
9384			return to_result("glUniform1i", ret, self.glGetError());
9385		} else {
9386			return ret
9387		}
9388		#[cfg(not(feature = "diagnose"))]
9389		return ret;
9390	}
9391	#[inline(always)]
9392	fn glUniform2i(&self, location: GLint, v0: GLint, v1: GLint) -> Result<()> {
9393		let ret = process_catch("glUniform2i", catch_unwind(||(self.uniform2i)(location, v0, v1)));
9394		#[cfg(feature = "diagnose")]
9395		if let Ok(ret) = ret {
9396			return to_result("glUniform2i", ret, self.glGetError());
9397		} else {
9398			return ret
9399		}
9400		#[cfg(not(feature = "diagnose"))]
9401		return ret;
9402	}
9403	#[inline(always)]
9404	fn glUniform3i(&self, location: GLint, v0: GLint, v1: GLint, v2: GLint) -> Result<()> {
9405		let ret = process_catch("glUniform3i", catch_unwind(||(self.uniform3i)(location, v0, v1, v2)));
9406		#[cfg(feature = "diagnose")]
9407		if let Ok(ret) = ret {
9408			return to_result("glUniform3i", ret, self.glGetError());
9409		} else {
9410			return ret
9411		}
9412		#[cfg(not(feature = "diagnose"))]
9413		return ret;
9414	}
9415	#[inline(always)]
9416	fn glUniform4i(&self, location: GLint, v0: GLint, v1: GLint, v2: GLint, v3: GLint) -> Result<()> {
9417		let ret = process_catch("glUniform4i", catch_unwind(||(self.uniform4i)(location, v0, v1, v2, v3)));
9418		#[cfg(feature = "diagnose")]
9419		if let Ok(ret) = ret {
9420			return to_result("glUniform4i", ret, self.glGetError());
9421		} else {
9422			return ret
9423		}
9424		#[cfg(not(feature = "diagnose"))]
9425		return ret;
9426	}
9427	#[inline(always)]
9428	fn glUniform1fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
9429		let ret = process_catch("glUniform1fv", catch_unwind(||(self.uniform1fv)(location, count, value)));
9430		#[cfg(feature = "diagnose")]
9431		if let Ok(ret) = ret {
9432			return to_result("glUniform1fv", ret, self.glGetError());
9433		} else {
9434			return ret
9435		}
9436		#[cfg(not(feature = "diagnose"))]
9437		return ret;
9438	}
9439	#[inline(always)]
9440	fn glUniform2fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
9441		let ret = process_catch("glUniform2fv", catch_unwind(||(self.uniform2fv)(location, count, value)));
9442		#[cfg(feature = "diagnose")]
9443		if let Ok(ret) = ret {
9444			return to_result("glUniform2fv", ret, self.glGetError());
9445		} else {
9446			return ret
9447		}
9448		#[cfg(not(feature = "diagnose"))]
9449		return ret;
9450	}
9451	#[inline(always)]
9452	fn glUniform3fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
9453		let ret = process_catch("glUniform3fv", catch_unwind(||(self.uniform3fv)(location, count, value)));
9454		#[cfg(feature = "diagnose")]
9455		if let Ok(ret) = ret {
9456			return to_result("glUniform3fv", ret, self.glGetError());
9457		} else {
9458			return ret
9459		}
9460		#[cfg(not(feature = "diagnose"))]
9461		return ret;
9462	}
9463	#[inline(always)]
9464	fn glUniform4fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
9465		let ret = process_catch("glUniform4fv", catch_unwind(||(self.uniform4fv)(location, count, value)));
9466		#[cfg(feature = "diagnose")]
9467		if let Ok(ret) = ret {
9468			return to_result("glUniform4fv", ret, self.glGetError());
9469		} else {
9470			return ret
9471		}
9472		#[cfg(not(feature = "diagnose"))]
9473		return ret;
9474	}
9475	#[inline(always)]
9476	fn glUniform1iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
9477		let ret = process_catch("glUniform1iv", catch_unwind(||(self.uniform1iv)(location, count, value)));
9478		#[cfg(feature = "diagnose")]
9479		if let Ok(ret) = ret {
9480			return to_result("glUniform1iv", ret, self.glGetError());
9481		} else {
9482			return ret
9483		}
9484		#[cfg(not(feature = "diagnose"))]
9485		return ret;
9486	}
9487	#[inline(always)]
9488	fn glUniform2iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
9489		let ret = process_catch("glUniform2iv", catch_unwind(||(self.uniform2iv)(location, count, value)));
9490		#[cfg(feature = "diagnose")]
9491		if let Ok(ret) = ret {
9492			return to_result("glUniform2iv", ret, self.glGetError());
9493		} else {
9494			return ret
9495		}
9496		#[cfg(not(feature = "diagnose"))]
9497		return ret;
9498	}
9499	#[inline(always)]
9500	fn glUniform3iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
9501		let ret = process_catch("glUniform3iv", catch_unwind(||(self.uniform3iv)(location, count, value)));
9502		#[cfg(feature = "diagnose")]
9503		if let Ok(ret) = ret {
9504			return to_result("glUniform3iv", ret, self.glGetError());
9505		} else {
9506			return ret
9507		}
9508		#[cfg(not(feature = "diagnose"))]
9509		return ret;
9510	}
9511	#[inline(always)]
9512	fn glUniform4iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
9513		let ret = process_catch("glUniform4iv", catch_unwind(||(self.uniform4iv)(location, count, value)));
9514		#[cfg(feature = "diagnose")]
9515		if let Ok(ret) = ret {
9516			return to_result("glUniform4iv", ret, self.glGetError());
9517		} else {
9518			return ret
9519		}
9520		#[cfg(not(feature = "diagnose"))]
9521		return ret;
9522	}
9523	#[inline(always)]
9524	fn glUniformMatrix2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
9525		let ret = process_catch("glUniformMatrix2fv", catch_unwind(||(self.uniformmatrix2fv)(location, count, transpose, value)));
9526		#[cfg(feature = "diagnose")]
9527		if let Ok(ret) = ret {
9528			return to_result("glUniformMatrix2fv", ret, self.glGetError());
9529		} else {
9530			return ret
9531		}
9532		#[cfg(not(feature = "diagnose"))]
9533		return ret;
9534	}
9535	#[inline(always)]
9536	fn glUniformMatrix3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
9537		let ret = process_catch("glUniformMatrix3fv", catch_unwind(||(self.uniformmatrix3fv)(location, count, transpose, value)));
9538		#[cfg(feature = "diagnose")]
9539		if let Ok(ret) = ret {
9540			return to_result("glUniformMatrix3fv", ret, self.glGetError());
9541		} else {
9542			return ret
9543		}
9544		#[cfg(not(feature = "diagnose"))]
9545		return ret;
9546	}
9547	#[inline(always)]
9548	fn glUniformMatrix4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
9549		let ret = process_catch("glUniformMatrix4fv", catch_unwind(||(self.uniformmatrix4fv)(location, count, transpose, value)));
9550		#[cfg(feature = "diagnose")]
9551		if let Ok(ret) = ret {
9552			return to_result("glUniformMatrix4fv", ret, self.glGetError());
9553		} else {
9554			return ret
9555		}
9556		#[cfg(not(feature = "diagnose"))]
9557		return ret;
9558	}
9559	#[inline(always)]
9560	fn glValidateProgram(&self, program: GLuint) -> Result<()> {
9561		let ret = process_catch("glValidateProgram", catch_unwind(||(self.validateprogram)(program)));
9562		#[cfg(feature = "diagnose")]
9563		if let Ok(ret) = ret {
9564			return to_result("glValidateProgram", ret, self.glGetError());
9565		} else {
9566			return ret
9567		}
9568		#[cfg(not(feature = "diagnose"))]
9569		return ret;
9570	}
9571	#[inline(always)]
9572	fn glVertexAttrib1d(&self, index: GLuint, x: GLdouble) -> Result<()> {
9573		let ret = process_catch("glVertexAttrib1d", catch_unwind(||(self.vertexattrib1d)(index, x)));
9574		#[cfg(feature = "diagnose")]
9575		if let Ok(ret) = ret {
9576			return to_result("glVertexAttrib1d", ret, self.glGetError());
9577		} else {
9578			return ret
9579		}
9580		#[cfg(not(feature = "diagnose"))]
9581		return ret;
9582	}
9583	#[inline(always)]
9584	fn glVertexAttrib1dv(&self, index: GLuint, v: *const GLdouble) -> Result<()> {
9585		let ret = process_catch("glVertexAttrib1dv", catch_unwind(||(self.vertexattrib1dv)(index, v)));
9586		#[cfg(feature = "diagnose")]
9587		if let Ok(ret) = ret {
9588			return to_result("glVertexAttrib1dv", ret, self.glGetError());
9589		} else {
9590			return ret
9591		}
9592		#[cfg(not(feature = "diagnose"))]
9593		return ret;
9594	}
9595	#[inline(always)]
9596	fn glVertexAttrib1f(&self, index: GLuint, x: GLfloat) -> Result<()> {
9597		let ret = process_catch("glVertexAttrib1f", catch_unwind(||(self.vertexattrib1f)(index, x)));
9598		#[cfg(feature = "diagnose")]
9599		if let Ok(ret) = ret {
9600			return to_result("glVertexAttrib1f", ret, self.glGetError());
9601		} else {
9602			return ret
9603		}
9604		#[cfg(not(feature = "diagnose"))]
9605		return ret;
9606	}
9607	#[inline(always)]
9608	fn glVertexAttrib1fv(&self, index: GLuint, v: *const GLfloat) -> Result<()> {
9609		let ret = process_catch("glVertexAttrib1fv", catch_unwind(||(self.vertexattrib1fv)(index, v)));
9610		#[cfg(feature = "diagnose")]
9611		if let Ok(ret) = ret {
9612			return to_result("glVertexAttrib1fv", ret, self.glGetError());
9613		} else {
9614			return ret
9615		}
9616		#[cfg(not(feature = "diagnose"))]
9617		return ret;
9618	}
9619	#[inline(always)]
9620	fn glVertexAttrib1s(&self, index: GLuint, x: GLshort) -> Result<()> {
9621		let ret = process_catch("glVertexAttrib1s", catch_unwind(||(self.vertexattrib1s)(index, x)));
9622		#[cfg(feature = "diagnose")]
9623		if let Ok(ret) = ret {
9624			return to_result("glVertexAttrib1s", ret, self.glGetError());
9625		} else {
9626			return ret
9627		}
9628		#[cfg(not(feature = "diagnose"))]
9629		return ret;
9630	}
9631	#[inline(always)]
9632	fn glVertexAttrib1sv(&self, index: GLuint, v: *const GLshort) -> Result<()> {
9633		let ret = process_catch("glVertexAttrib1sv", catch_unwind(||(self.vertexattrib1sv)(index, v)));
9634		#[cfg(feature = "diagnose")]
9635		if let Ok(ret) = ret {
9636			return to_result("glVertexAttrib1sv", ret, self.glGetError());
9637		} else {
9638			return ret
9639		}
9640		#[cfg(not(feature = "diagnose"))]
9641		return ret;
9642	}
9643	#[inline(always)]
9644	fn glVertexAttrib2d(&self, index: GLuint, x: GLdouble, y: GLdouble) -> Result<()> {
9645		let ret = process_catch("glVertexAttrib2d", catch_unwind(||(self.vertexattrib2d)(index, x, y)));
9646		#[cfg(feature = "diagnose")]
9647		if let Ok(ret) = ret {
9648			return to_result("glVertexAttrib2d", ret, self.glGetError());
9649		} else {
9650			return ret
9651		}
9652		#[cfg(not(feature = "diagnose"))]
9653		return ret;
9654	}
9655	#[inline(always)]
9656	fn glVertexAttrib2dv(&self, index: GLuint, v: *const GLdouble) -> Result<()> {
9657		let ret = process_catch("glVertexAttrib2dv", catch_unwind(||(self.vertexattrib2dv)(index, v)));
9658		#[cfg(feature = "diagnose")]
9659		if let Ok(ret) = ret {
9660			return to_result("glVertexAttrib2dv", ret, self.glGetError());
9661		} else {
9662			return ret
9663		}
9664		#[cfg(not(feature = "diagnose"))]
9665		return ret;
9666	}
9667	#[inline(always)]
9668	fn glVertexAttrib2f(&self, index: GLuint, x: GLfloat, y: GLfloat) -> Result<()> {
9669		let ret = process_catch("glVertexAttrib2f", catch_unwind(||(self.vertexattrib2f)(index, x, y)));
9670		#[cfg(feature = "diagnose")]
9671		if let Ok(ret) = ret {
9672			return to_result("glVertexAttrib2f", ret, self.glGetError());
9673		} else {
9674			return ret
9675		}
9676		#[cfg(not(feature = "diagnose"))]
9677		return ret;
9678	}
9679	#[inline(always)]
9680	fn glVertexAttrib2fv(&self, index: GLuint, v: *const GLfloat) -> Result<()> {
9681		let ret = process_catch("glVertexAttrib2fv", catch_unwind(||(self.vertexattrib2fv)(index, v)));
9682		#[cfg(feature = "diagnose")]
9683		if let Ok(ret) = ret {
9684			return to_result("glVertexAttrib2fv", ret, self.glGetError());
9685		} else {
9686			return ret
9687		}
9688		#[cfg(not(feature = "diagnose"))]
9689		return ret;
9690	}
9691	#[inline(always)]
9692	fn glVertexAttrib2s(&self, index: GLuint, x: GLshort, y: GLshort) -> Result<()> {
9693		let ret = process_catch("glVertexAttrib2s", catch_unwind(||(self.vertexattrib2s)(index, x, y)));
9694		#[cfg(feature = "diagnose")]
9695		if let Ok(ret) = ret {
9696			return to_result("glVertexAttrib2s", ret, self.glGetError());
9697		} else {
9698			return ret
9699		}
9700		#[cfg(not(feature = "diagnose"))]
9701		return ret;
9702	}
9703	#[inline(always)]
9704	fn glVertexAttrib2sv(&self, index: GLuint, v: *const GLshort) -> Result<()> {
9705		let ret = process_catch("glVertexAttrib2sv", catch_unwind(||(self.vertexattrib2sv)(index, v)));
9706		#[cfg(feature = "diagnose")]
9707		if let Ok(ret) = ret {
9708			return to_result("glVertexAttrib2sv", ret, self.glGetError());
9709		} else {
9710			return ret
9711		}
9712		#[cfg(not(feature = "diagnose"))]
9713		return ret;
9714	}
9715	#[inline(always)]
9716	fn glVertexAttrib3d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble) -> Result<()> {
9717		let ret = process_catch("glVertexAttrib3d", catch_unwind(||(self.vertexattrib3d)(index, x, y, z)));
9718		#[cfg(feature = "diagnose")]
9719		if let Ok(ret) = ret {
9720			return to_result("glVertexAttrib3d", ret, self.glGetError());
9721		} else {
9722			return ret
9723		}
9724		#[cfg(not(feature = "diagnose"))]
9725		return ret;
9726	}
9727	#[inline(always)]
9728	fn glVertexAttrib3dv(&self, index: GLuint, v: *const GLdouble) -> Result<()> {
9729		let ret = process_catch("glVertexAttrib3dv", catch_unwind(||(self.vertexattrib3dv)(index, v)));
9730		#[cfg(feature = "diagnose")]
9731		if let Ok(ret) = ret {
9732			return to_result("glVertexAttrib3dv", ret, self.glGetError());
9733		} else {
9734			return ret
9735		}
9736		#[cfg(not(feature = "diagnose"))]
9737		return ret;
9738	}
9739	#[inline(always)]
9740	fn glVertexAttrib3f(&self, index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat) -> Result<()> {
9741		let ret = process_catch("glVertexAttrib3f", catch_unwind(||(self.vertexattrib3f)(index, x, y, z)));
9742		#[cfg(feature = "diagnose")]
9743		if let Ok(ret) = ret {
9744			return to_result("glVertexAttrib3f", ret, self.glGetError());
9745		} else {
9746			return ret
9747		}
9748		#[cfg(not(feature = "diagnose"))]
9749		return ret;
9750	}
9751	#[inline(always)]
9752	fn glVertexAttrib3fv(&self, index: GLuint, v: *const GLfloat) -> Result<()> {
9753		let ret = process_catch("glVertexAttrib3fv", catch_unwind(||(self.vertexattrib3fv)(index, v)));
9754		#[cfg(feature = "diagnose")]
9755		if let Ok(ret) = ret {
9756			return to_result("glVertexAttrib3fv", ret, self.glGetError());
9757		} else {
9758			return ret
9759		}
9760		#[cfg(not(feature = "diagnose"))]
9761		return ret;
9762	}
9763	#[inline(always)]
9764	fn glVertexAttrib3s(&self, index: GLuint, x: GLshort, y: GLshort, z: GLshort) -> Result<()> {
9765		let ret = process_catch("glVertexAttrib3s", catch_unwind(||(self.vertexattrib3s)(index, x, y, z)));
9766		#[cfg(feature = "diagnose")]
9767		if let Ok(ret) = ret {
9768			return to_result("glVertexAttrib3s", ret, self.glGetError());
9769		} else {
9770			return ret
9771		}
9772		#[cfg(not(feature = "diagnose"))]
9773		return ret;
9774	}
9775	#[inline(always)]
9776	fn glVertexAttrib3sv(&self, index: GLuint, v: *const GLshort) -> Result<()> {
9777		let ret = process_catch("glVertexAttrib3sv", catch_unwind(||(self.vertexattrib3sv)(index, v)));
9778		#[cfg(feature = "diagnose")]
9779		if let Ok(ret) = ret {
9780			return to_result("glVertexAttrib3sv", ret, self.glGetError());
9781		} else {
9782			return ret
9783		}
9784		#[cfg(not(feature = "diagnose"))]
9785		return ret;
9786	}
9787	#[inline(always)]
9788	fn glVertexAttrib4Nbv(&self, index: GLuint, v: *const GLbyte) -> Result<()> {
9789		let ret = process_catch("glVertexAttrib4Nbv", catch_unwind(||(self.vertexattrib4nbv)(index, v)));
9790		#[cfg(feature = "diagnose")]
9791		if let Ok(ret) = ret {
9792			return to_result("glVertexAttrib4Nbv", ret, self.glGetError());
9793		} else {
9794			return ret
9795		}
9796		#[cfg(not(feature = "diagnose"))]
9797		return ret;
9798	}
9799	#[inline(always)]
9800	fn glVertexAttrib4Niv(&self, index: GLuint, v: *const GLint) -> Result<()> {
9801		let ret = process_catch("glVertexAttrib4Niv", catch_unwind(||(self.vertexattrib4niv)(index, v)));
9802		#[cfg(feature = "diagnose")]
9803		if let Ok(ret) = ret {
9804			return to_result("glVertexAttrib4Niv", ret, self.glGetError());
9805		} else {
9806			return ret
9807		}
9808		#[cfg(not(feature = "diagnose"))]
9809		return ret;
9810	}
9811	#[inline(always)]
9812	fn glVertexAttrib4Nsv(&self, index: GLuint, v: *const GLshort) -> Result<()> {
9813		let ret = process_catch("glVertexAttrib4Nsv", catch_unwind(||(self.vertexattrib4nsv)(index, v)));
9814		#[cfg(feature = "diagnose")]
9815		if let Ok(ret) = ret {
9816			return to_result("glVertexAttrib4Nsv", ret, self.glGetError());
9817		} else {
9818			return ret
9819		}
9820		#[cfg(not(feature = "diagnose"))]
9821		return ret;
9822	}
9823	#[inline(always)]
9824	fn glVertexAttrib4Nub(&self, index: GLuint, x: GLubyte, y: GLubyte, z: GLubyte, w: GLubyte) -> Result<()> {
9825		let ret = process_catch("glVertexAttrib4Nub", catch_unwind(||(self.vertexattrib4nub)(index, x, y, z, w)));
9826		#[cfg(feature = "diagnose")]
9827		if let Ok(ret) = ret {
9828			return to_result("glVertexAttrib4Nub", ret, self.glGetError());
9829		} else {
9830			return ret
9831		}
9832		#[cfg(not(feature = "diagnose"))]
9833		return ret;
9834	}
9835	#[inline(always)]
9836	fn glVertexAttrib4Nubv(&self, index: GLuint, v: *const GLubyte) -> Result<()> {
9837		let ret = process_catch("glVertexAttrib4Nubv", catch_unwind(||(self.vertexattrib4nubv)(index, v)));
9838		#[cfg(feature = "diagnose")]
9839		if let Ok(ret) = ret {
9840			return to_result("glVertexAttrib4Nubv", ret, self.glGetError());
9841		} else {
9842			return ret
9843		}
9844		#[cfg(not(feature = "diagnose"))]
9845		return ret;
9846	}
9847	#[inline(always)]
9848	fn glVertexAttrib4Nuiv(&self, index: GLuint, v: *const GLuint) -> Result<()> {
9849		let ret = process_catch("glVertexAttrib4Nuiv", catch_unwind(||(self.vertexattrib4nuiv)(index, v)));
9850		#[cfg(feature = "diagnose")]
9851		if let Ok(ret) = ret {
9852			return to_result("glVertexAttrib4Nuiv", ret, self.glGetError());
9853		} else {
9854			return ret
9855		}
9856		#[cfg(not(feature = "diagnose"))]
9857		return ret;
9858	}
9859	#[inline(always)]
9860	fn glVertexAttrib4Nusv(&self, index: GLuint, v: *const GLushort) -> Result<()> {
9861		let ret = process_catch("glVertexAttrib4Nusv", catch_unwind(||(self.vertexattrib4nusv)(index, v)));
9862		#[cfg(feature = "diagnose")]
9863		if let Ok(ret) = ret {
9864			return to_result("glVertexAttrib4Nusv", ret, self.glGetError());
9865		} else {
9866			return ret
9867		}
9868		#[cfg(not(feature = "diagnose"))]
9869		return ret;
9870	}
9871	#[inline(always)]
9872	fn glVertexAttrib4bv(&self, index: GLuint, v: *const GLbyte) -> Result<()> {
9873		let ret = process_catch("glVertexAttrib4bv", catch_unwind(||(self.vertexattrib4bv)(index, v)));
9874		#[cfg(feature = "diagnose")]
9875		if let Ok(ret) = ret {
9876			return to_result("glVertexAttrib4bv", ret, self.glGetError());
9877		} else {
9878			return ret
9879		}
9880		#[cfg(not(feature = "diagnose"))]
9881		return ret;
9882	}
9883	#[inline(always)]
9884	fn glVertexAttrib4d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble, w: GLdouble) -> Result<()> {
9885		let ret = process_catch("glVertexAttrib4d", catch_unwind(||(self.vertexattrib4d)(index, x, y, z, w)));
9886		#[cfg(feature = "diagnose")]
9887		if let Ok(ret) = ret {
9888			return to_result("glVertexAttrib4d", ret, self.glGetError());
9889		} else {
9890			return ret
9891		}
9892		#[cfg(not(feature = "diagnose"))]
9893		return ret;
9894	}
9895	#[inline(always)]
9896	fn glVertexAttrib4dv(&self, index: GLuint, v: *const GLdouble) -> Result<()> {
9897		let ret = process_catch("glVertexAttrib4dv", catch_unwind(||(self.vertexattrib4dv)(index, v)));
9898		#[cfg(feature = "diagnose")]
9899		if let Ok(ret) = ret {
9900			return to_result("glVertexAttrib4dv", ret, self.glGetError());
9901		} else {
9902			return ret
9903		}
9904		#[cfg(not(feature = "diagnose"))]
9905		return ret;
9906	}
9907	#[inline(always)]
9908	fn glVertexAttrib4f(&self, index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat, w: GLfloat) -> Result<()> {
9909		let ret = process_catch("glVertexAttrib4f", catch_unwind(||(self.vertexattrib4f)(index, x, y, z, w)));
9910		#[cfg(feature = "diagnose")]
9911		if let Ok(ret) = ret {
9912			return to_result("glVertexAttrib4f", ret, self.glGetError());
9913		} else {
9914			return ret
9915		}
9916		#[cfg(not(feature = "diagnose"))]
9917		return ret;
9918	}
9919	#[inline(always)]
9920	fn glVertexAttrib4fv(&self, index: GLuint, v: *const GLfloat) -> Result<()> {
9921		let ret = process_catch("glVertexAttrib4fv", catch_unwind(||(self.vertexattrib4fv)(index, v)));
9922		#[cfg(feature = "diagnose")]
9923		if let Ok(ret) = ret {
9924			return to_result("glVertexAttrib4fv", ret, self.glGetError());
9925		} else {
9926			return ret
9927		}
9928		#[cfg(not(feature = "diagnose"))]
9929		return ret;
9930	}
9931	#[inline(always)]
9932	fn glVertexAttrib4iv(&self, index: GLuint, v: *const GLint) -> Result<()> {
9933		let ret = process_catch("glVertexAttrib4iv", catch_unwind(||(self.vertexattrib4iv)(index, v)));
9934		#[cfg(feature = "diagnose")]
9935		if let Ok(ret) = ret {
9936			return to_result("glVertexAttrib4iv", ret, self.glGetError());
9937		} else {
9938			return ret
9939		}
9940		#[cfg(not(feature = "diagnose"))]
9941		return ret;
9942	}
9943	#[inline(always)]
9944	fn glVertexAttrib4s(&self, index: GLuint, x: GLshort, y: GLshort, z: GLshort, w: GLshort) -> Result<()> {
9945		let ret = process_catch("glVertexAttrib4s", catch_unwind(||(self.vertexattrib4s)(index, x, y, z, w)));
9946		#[cfg(feature = "diagnose")]
9947		if let Ok(ret) = ret {
9948			return to_result("glVertexAttrib4s", ret, self.glGetError());
9949		} else {
9950			return ret
9951		}
9952		#[cfg(not(feature = "diagnose"))]
9953		return ret;
9954	}
9955	#[inline(always)]
9956	fn glVertexAttrib4sv(&self, index: GLuint, v: *const GLshort) -> Result<()> {
9957		let ret = process_catch("glVertexAttrib4sv", catch_unwind(||(self.vertexattrib4sv)(index, v)));
9958		#[cfg(feature = "diagnose")]
9959		if let Ok(ret) = ret {
9960			return to_result("glVertexAttrib4sv", ret, self.glGetError());
9961		} else {
9962			return ret
9963		}
9964		#[cfg(not(feature = "diagnose"))]
9965		return ret;
9966	}
9967	#[inline(always)]
9968	fn glVertexAttrib4ubv(&self, index: GLuint, v: *const GLubyte) -> Result<()> {
9969		let ret = process_catch("glVertexAttrib4ubv", catch_unwind(||(self.vertexattrib4ubv)(index, v)));
9970		#[cfg(feature = "diagnose")]
9971		if let Ok(ret) = ret {
9972			return to_result("glVertexAttrib4ubv", ret, self.glGetError());
9973		} else {
9974			return ret
9975		}
9976		#[cfg(not(feature = "diagnose"))]
9977		return ret;
9978	}
9979	#[inline(always)]
9980	fn glVertexAttrib4uiv(&self, index: GLuint, v: *const GLuint) -> Result<()> {
9981		let ret = process_catch("glVertexAttrib4uiv", catch_unwind(||(self.vertexattrib4uiv)(index, v)));
9982		#[cfg(feature = "diagnose")]
9983		if let Ok(ret) = ret {
9984			return to_result("glVertexAttrib4uiv", ret, self.glGetError());
9985		} else {
9986			return ret
9987		}
9988		#[cfg(not(feature = "diagnose"))]
9989		return ret;
9990	}
9991	#[inline(always)]
9992	fn glVertexAttrib4usv(&self, index: GLuint, v: *const GLushort) -> Result<()> {
9993		let ret = process_catch("glVertexAttrib4usv", catch_unwind(||(self.vertexattrib4usv)(index, v)));
9994		#[cfg(feature = "diagnose")]
9995		if let Ok(ret) = ret {
9996			return to_result("glVertexAttrib4usv", ret, self.glGetError());
9997		} else {
9998			return ret
9999		}
10000		#[cfg(not(feature = "diagnose"))]
10001		return ret;
10002	}
10003	#[inline(always)]
10004	fn glVertexAttribPointer(&self, index: GLuint, size: GLint, type_: GLenum, normalized: GLboolean, stride: GLsizei, pointer: *const c_void) -> Result<()> {
10005		let ret = process_catch("glVertexAttribPointer", catch_unwind(||(self.vertexattribpointer)(index, size, type_, normalized, stride, pointer)));
10006		#[cfg(feature = "diagnose")]
10007		if let Ok(ret) = ret {
10008			return to_result("glVertexAttribPointer", ret, self.glGetError());
10009		} else {
10010			return ret
10011		}
10012		#[cfg(not(feature = "diagnose"))]
10013		return ret;
10014	}
10015	#[inline(always)]
10016	fn get_shading_language_version(&self) -> &'static str {
10017		self.shading_language_version
10018	}
10019}
10020
10021impl Version20 {
10022	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
10023		let (_spec, major, minor, release) = base.get_version();
10024		if (major, minor, release) < (2, 0, 0) {
10025			return Self::default();
10026		}
10027		Self {
10028			available: true,
10029			geterror: {let proc = get_proc_address("glGetError"); if proc == null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
10030			blendequationseparate: {let proc = get_proc_address("glBlendEquationSeparate"); if proc == null() {dummy_pfnglblendequationseparateproc} else {unsafe{transmute(proc)}}},
10031			drawbuffers: {let proc = get_proc_address("glDrawBuffers"); if proc == null() {dummy_pfngldrawbuffersproc} else {unsafe{transmute(proc)}}},
10032			stencilopseparate: {let proc = get_proc_address("glStencilOpSeparate"); if proc == null() {dummy_pfnglstencilopseparateproc} else {unsafe{transmute(proc)}}},
10033			stencilfuncseparate: {let proc = get_proc_address("glStencilFuncSeparate"); if proc == null() {dummy_pfnglstencilfuncseparateproc} else {unsafe{transmute(proc)}}},
10034			stencilmaskseparate: {let proc = get_proc_address("glStencilMaskSeparate"); if proc == null() {dummy_pfnglstencilmaskseparateproc} else {unsafe{transmute(proc)}}},
10035			attachshader: {let proc = get_proc_address("glAttachShader"); if proc == null() {dummy_pfnglattachshaderproc} else {unsafe{transmute(proc)}}},
10036			bindattriblocation: {let proc = get_proc_address("glBindAttribLocation"); if proc == null() {dummy_pfnglbindattriblocationproc} else {unsafe{transmute(proc)}}},
10037			compileshader: {let proc = get_proc_address("glCompileShader"); if proc == null() {dummy_pfnglcompileshaderproc} else {unsafe{transmute(proc)}}},
10038			createprogram: {let proc = get_proc_address("glCreateProgram"); if proc == null() {dummy_pfnglcreateprogramproc} else {unsafe{transmute(proc)}}},
10039			createshader: {let proc = get_proc_address("glCreateShader"); if proc == null() {dummy_pfnglcreateshaderproc} else {unsafe{transmute(proc)}}},
10040			deleteprogram: {let proc = get_proc_address("glDeleteProgram"); if proc == null() {dummy_pfngldeleteprogramproc} else {unsafe{transmute(proc)}}},
10041			deleteshader: {let proc = get_proc_address("glDeleteShader"); if proc == null() {dummy_pfngldeleteshaderproc} else {unsafe{transmute(proc)}}},
10042			detachshader: {let proc = get_proc_address("glDetachShader"); if proc == null() {dummy_pfngldetachshaderproc} else {unsafe{transmute(proc)}}},
10043			disablevertexattribarray: {let proc = get_proc_address("glDisableVertexAttribArray"); if proc == null() {dummy_pfngldisablevertexattribarrayproc} else {unsafe{transmute(proc)}}},
10044			enablevertexattribarray: {let proc = get_proc_address("glEnableVertexAttribArray"); if proc == null() {dummy_pfnglenablevertexattribarrayproc} else {unsafe{transmute(proc)}}},
10045			getactiveattrib: {let proc = get_proc_address("glGetActiveAttrib"); if proc == null() {dummy_pfnglgetactiveattribproc} else {unsafe{transmute(proc)}}},
10046			getactiveuniform: {let proc = get_proc_address("glGetActiveUniform"); if proc == null() {dummy_pfnglgetactiveuniformproc} else {unsafe{transmute(proc)}}},
10047			getattachedshaders: {let proc = get_proc_address("glGetAttachedShaders"); if proc == null() {dummy_pfnglgetattachedshadersproc} else {unsafe{transmute(proc)}}},
10048			getattriblocation: {let proc = get_proc_address("glGetAttribLocation"); if proc == null() {dummy_pfnglgetattriblocationproc} else {unsafe{transmute(proc)}}},
10049			getprogramiv: {let proc = get_proc_address("glGetProgramiv"); if proc == null() {dummy_pfnglgetprogramivproc} else {unsafe{transmute(proc)}}},
10050			getprograminfolog: {let proc = get_proc_address("glGetProgramInfoLog"); if proc == null() {dummy_pfnglgetprograminfologproc} else {unsafe{transmute(proc)}}},
10051			getshaderiv: {let proc = get_proc_address("glGetShaderiv"); if proc == null() {dummy_pfnglgetshaderivproc} else {unsafe{transmute(proc)}}},
10052			getshaderinfolog: {let proc = get_proc_address("glGetShaderInfoLog"); if proc == null() {dummy_pfnglgetshaderinfologproc} else {unsafe{transmute(proc)}}},
10053			getshadersource: {let proc = get_proc_address("glGetShaderSource"); if proc == null() {dummy_pfnglgetshadersourceproc} else {unsafe{transmute(proc)}}},
10054			getuniformlocation: {let proc = get_proc_address("glGetUniformLocation"); if proc == null() {dummy_pfnglgetuniformlocationproc} else {unsafe{transmute(proc)}}},
10055			getuniformfv: {let proc = get_proc_address("glGetUniformfv"); if proc == null() {dummy_pfnglgetuniformfvproc} else {unsafe{transmute(proc)}}},
10056			getuniformiv: {let proc = get_proc_address("glGetUniformiv"); if proc == null() {dummy_pfnglgetuniformivproc} else {unsafe{transmute(proc)}}},
10057			getvertexattribdv: {let proc = get_proc_address("glGetVertexAttribdv"); if proc == null() {dummy_pfnglgetvertexattribdvproc} else {unsafe{transmute(proc)}}},
10058			getvertexattribfv: {let proc = get_proc_address("glGetVertexAttribfv"); if proc == null() {dummy_pfnglgetvertexattribfvproc} else {unsafe{transmute(proc)}}},
10059			getvertexattribiv: {let proc = get_proc_address("glGetVertexAttribiv"); if proc == null() {dummy_pfnglgetvertexattribivproc} else {unsafe{transmute(proc)}}},
10060			getvertexattribpointerv: {let proc = get_proc_address("glGetVertexAttribPointerv"); if proc == null() {dummy_pfnglgetvertexattribpointervproc} else {unsafe{transmute(proc)}}},
10061			isprogram: {let proc = get_proc_address("glIsProgram"); if proc == null() {dummy_pfnglisprogramproc} else {unsafe{transmute(proc)}}},
10062			isshader: {let proc = get_proc_address("glIsShader"); if proc == null() {dummy_pfnglisshaderproc} else {unsafe{transmute(proc)}}},
10063			linkprogram: {let proc = get_proc_address("glLinkProgram"); if proc == null() {dummy_pfngllinkprogramproc} else {unsafe{transmute(proc)}}},
10064			shadersource: {let proc = get_proc_address("glShaderSource"); if proc == null() {dummy_pfnglshadersourceproc} else {unsafe{transmute(proc)}}},
10065			useprogram: {let proc = get_proc_address("glUseProgram"); if proc == null() {dummy_pfngluseprogramproc} else {unsafe{transmute(proc)}}},
10066			uniform1f: {let proc = get_proc_address("glUniform1f"); if proc == null() {dummy_pfngluniform1fproc} else {unsafe{transmute(proc)}}},
10067			uniform2f: {let proc = get_proc_address("glUniform2f"); if proc == null() {dummy_pfngluniform2fproc} else {unsafe{transmute(proc)}}},
10068			uniform3f: {let proc = get_proc_address("glUniform3f"); if proc == null() {dummy_pfngluniform3fproc} else {unsafe{transmute(proc)}}},
10069			uniform4f: {let proc = get_proc_address("glUniform4f"); if proc == null() {dummy_pfngluniform4fproc} else {unsafe{transmute(proc)}}},
10070			uniform1i: {let proc = get_proc_address("glUniform1i"); if proc == null() {dummy_pfngluniform1iproc} else {unsafe{transmute(proc)}}},
10071			uniform2i: {let proc = get_proc_address("glUniform2i"); if proc == null() {dummy_pfngluniform2iproc} else {unsafe{transmute(proc)}}},
10072			uniform3i: {let proc = get_proc_address("glUniform3i"); if proc == null() {dummy_pfngluniform3iproc} else {unsafe{transmute(proc)}}},
10073			uniform4i: {let proc = get_proc_address("glUniform4i"); if proc == null() {dummy_pfngluniform4iproc} else {unsafe{transmute(proc)}}},
10074			uniform1fv: {let proc = get_proc_address("glUniform1fv"); if proc == null() {dummy_pfngluniform1fvproc} else {unsafe{transmute(proc)}}},
10075			uniform2fv: {let proc = get_proc_address("glUniform2fv"); if proc == null() {dummy_pfngluniform2fvproc} else {unsafe{transmute(proc)}}},
10076			uniform3fv: {let proc = get_proc_address("glUniform3fv"); if proc == null() {dummy_pfngluniform3fvproc} else {unsafe{transmute(proc)}}},
10077			uniform4fv: {let proc = get_proc_address("glUniform4fv"); if proc == null() {dummy_pfngluniform4fvproc} else {unsafe{transmute(proc)}}},
10078			uniform1iv: {let proc = get_proc_address("glUniform1iv"); if proc == null() {dummy_pfngluniform1ivproc} else {unsafe{transmute(proc)}}},
10079			uniform2iv: {let proc = get_proc_address("glUniform2iv"); if proc == null() {dummy_pfngluniform2ivproc} else {unsafe{transmute(proc)}}},
10080			uniform3iv: {let proc = get_proc_address("glUniform3iv"); if proc == null() {dummy_pfngluniform3ivproc} else {unsafe{transmute(proc)}}},
10081			uniform4iv: {let proc = get_proc_address("glUniform4iv"); if proc == null() {dummy_pfngluniform4ivproc} else {unsafe{transmute(proc)}}},
10082			uniformmatrix2fv: {let proc = get_proc_address("glUniformMatrix2fv"); if proc == null() {dummy_pfngluniformmatrix2fvproc} else {unsafe{transmute(proc)}}},
10083			uniformmatrix3fv: {let proc = get_proc_address("glUniformMatrix3fv"); if proc == null() {dummy_pfngluniformmatrix3fvproc} else {unsafe{transmute(proc)}}},
10084			uniformmatrix4fv: {let proc = get_proc_address("glUniformMatrix4fv"); if proc == null() {dummy_pfngluniformmatrix4fvproc} else {unsafe{transmute(proc)}}},
10085			validateprogram: {let proc = get_proc_address("glValidateProgram"); if proc == null() {dummy_pfnglvalidateprogramproc} else {unsafe{transmute(proc)}}},
10086			vertexattrib1d: {let proc = get_proc_address("glVertexAttrib1d"); if proc == null() {dummy_pfnglvertexattrib1dproc} else {unsafe{transmute(proc)}}},
10087			vertexattrib1dv: {let proc = get_proc_address("glVertexAttrib1dv"); if proc == null() {dummy_pfnglvertexattrib1dvproc} else {unsafe{transmute(proc)}}},
10088			vertexattrib1f: {let proc = get_proc_address("glVertexAttrib1f"); if proc == null() {dummy_pfnglvertexattrib1fproc} else {unsafe{transmute(proc)}}},
10089			vertexattrib1fv: {let proc = get_proc_address("glVertexAttrib1fv"); if proc == null() {dummy_pfnglvertexattrib1fvproc} else {unsafe{transmute(proc)}}},
10090			vertexattrib1s: {let proc = get_proc_address("glVertexAttrib1s"); if proc == null() {dummy_pfnglvertexattrib1sproc} else {unsafe{transmute(proc)}}},
10091			vertexattrib1sv: {let proc = get_proc_address("glVertexAttrib1sv"); if proc == null() {dummy_pfnglvertexattrib1svproc} else {unsafe{transmute(proc)}}},
10092			vertexattrib2d: {let proc = get_proc_address("glVertexAttrib2d"); if proc == null() {dummy_pfnglvertexattrib2dproc} else {unsafe{transmute(proc)}}},
10093			vertexattrib2dv: {let proc = get_proc_address("glVertexAttrib2dv"); if proc == null() {dummy_pfnglvertexattrib2dvproc} else {unsafe{transmute(proc)}}},
10094			vertexattrib2f: {let proc = get_proc_address("glVertexAttrib2f"); if proc == null() {dummy_pfnglvertexattrib2fproc} else {unsafe{transmute(proc)}}},
10095			vertexattrib2fv: {let proc = get_proc_address("glVertexAttrib2fv"); if proc == null() {dummy_pfnglvertexattrib2fvproc} else {unsafe{transmute(proc)}}},
10096			vertexattrib2s: {let proc = get_proc_address("glVertexAttrib2s"); if proc == null() {dummy_pfnglvertexattrib2sproc} else {unsafe{transmute(proc)}}},
10097			vertexattrib2sv: {let proc = get_proc_address("glVertexAttrib2sv"); if proc == null() {dummy_pfnglvertexattrib2svproc} else {unsafe{transmute(proc)}}},
10098			vertexattrib3d: {let proc = get_proc_address("glVertexAttrib3d"); if proc == null() {dummy_pfnglvertexattrib3dproc} else {unsafe{transmute(proc)}}},
10099			vertexattrib3dv: {let proc = get_proc_address("glVertexAttrib3dv"); if proc == null() {dummy_pfnglvertexattrib3dvproc} else {unsafe{transmute(proc)}}},
10100			vertexattrib3f: {let proc = get_proc_address("glVertexAttrib3f"); if proc == null() {dummy_pfnglvertexattrib3fproc} else {unsafe{transmute(proc)}}},
10101			vertexattrib3fv: {let proc = get_proc_address("glVertexAttrib3fv"); if proc == null() {dummy_pfnglvertexattrib3fvproc} else {unsafe{transmute(proc)}}},
10102			vertexattrib3s: {let proc = get_proc_address("glVertexAttrib3s"); if proc == null() {dummy_pfnglvertexattrib3sproc} else {unsafe{transmute(proc)}}},
10103			vertexattrib3sv: {let proc = get_proc_address("glVertexAttrib3sv"); if proc == null() {dummy_pfnglvertexattrib3svproc} else {unsafe{transmute(proc)}}},
10104			vertexattrib4nbv: {let proc = get_proc_address("glVertexAttrib4Nbv"); if proc == null() {dummy_pfnglvertexattrib4nbvproc} else {unsafe{transmute(proc)}}},
10105			vertexattrib4niv: {let proc = get_proc_address("glVertexAttrib4Niv"); if proc == null() {dummy_pfnglvertexattrib4nivproc} else {unsafe{transmute(proc)}}},
10106			vertexattrib4nsv: {let proc = get_proc_address("glVertexAttrib4Nsv"); if proc == null() {dummy_pfnglvertexattrib4nsvproc} else {unsafe{transmute(proc)}}},
10107			vertexattrib4nub: {let proc = get_proc_address("glVertexAttrib4Nub"); if proc == null() {dummy_pfnglvertexattrib4nubproc} else {unsafe{transmute(proc)}}},
10108			vertexattrib4nubv: {let proc = get_proc_address("glVertexAttrib4Nubv"); if proc == null() {dummy_pfnglvertexattrib4nubvproc} else {unsafe{transmute(proc)}}},
10109			vertexattrib4nuiv: {let proc = get_proc_address("glVertexAttrib4Nuiv"); if proc == null() {dummy_pfnglvertexattrib4nuivproc} else {unsafe{transmute(proc)}}},
10110			vertexattrib4nusv: {let proc = get_proc_address("glVertexAttrib4Nusv"); if proc == null() {dummy_pfnglvertexattrib4nusvproc} else {unsafe{transmute(proc)}}},
10111			vertexattrib4bv: {let proc = get_proc_address("glVertexAttrib4bv"); if proc == null() {dummy_pfnglvertexattrib4bvproc} else {unsafe{transmute(proc)}}},
10112			vertexattrib4d: {let proc = get_proc_address("glVertexAttrib4d"); if proc == null() {dummy_pfnglvertexattrib4dproc} else {unsafe{transmute(proc)}}},
10113			vertexattrib4dv: {let proc = get_proc_address("glVertexAttrib4dv"); if proc == null() {dummy_pfnglvertexattrib4dvproc} else {unsafe{transmute(proc)}}},
10114			vertexattrib4f: {let proc = get_proc_address("glVertexAttrib4f"); if proc == null() {dummy_pfnglvertexattrib4fproc} else {unsafe{transmute(proc)}}},
10115			vertexattrib4fv: {let proc = get_proc_address("glVertexAttrib4fv"); if proc == null() {dummy_pfnglvertexattrib4fvproc} else {unsafe{transmute(proc)}}},
10116			vertexattrib4iv: {let proc = get_proc_address("glVertexAttrib4iv"); if proc == null() {dummy_pfnglvertexattrib4ivproc} else {unsafe{transmute(proc)}}},
10117			vertexattrib4s: {let proc = get_proc_address("glVertexAttrib4s"); if proc == null() {dummy_pfnglvertexattrib4sproc} else {unsafe{transmute(proc)}}},
10118			vertexattrib4sv: {let proc = get_proc_address("glVertexAttrib4sv"); if proc == null() {dummy_pfnglvertexattrib4svproc} else {unsafe{transmute(proc)}}},
10119			vertexattrib4ubv: {let proc = get_proc_address("glVertexAttrib4ubv"); if proc == null() {dummy_pfnglvertexattrib4ubvproc} else {unsafe{transmute(proc)}}},
10120			vertexattrib4uiv: {let proc = get_proc_address("glVertexAttrib4uiv"); if proc == null() {dummy_pfnglvertexattrib4uivproc} else {unsafe{transmute(proc)}}},
10121			vertexattrib4usv: {let proc = get_proc_address("glVertexAttrib4usv"); if proc == null() {dummy_pfnglvertexattrib4usvproc} else {unsafe{transmute(proc)}}},
10122			vertexattribpointer: {let proc = get_proc_address("glVertexAttribPointer"); if proc == null() {dummy_pfnglvertexattribpointerproc} else {unsafe{transmute(proc)}}},
10123			shading_language_version: base.glGetString(GL_SHADING_LANGUAGE_VERSION).unwrap(),
10124		}
10125	}
10126	#[inline(always)]
10127	pub fn get_available(&self) -> bool {
10128		self.available
10129	}
10130}
10131
10132impl Default for Version20 {
10133	fn default() -> Self {
10134		Self {
10135			available: false,
10136			geterror: dummy_pfnglgeterrorproc,
10137			blendequationseparate: dummy_pfnglblendequationseparateproc,
10138			drawbuffers: dummy_pfngldrawbuffersproc,
10139			stencilopseparate: dummy_pfnglstencilopseparateproc,
10140			stencilfuncseparate: dummy_pfnglstencilfuncseparateproc,
10141			stencilmaskseparate: dummy_pfnglstencilmaskseparateproc,
10142			attachshader: dummy_pfnglattachshaderproc,
10143			bindattriblocation: dummy_pfnglbindattriblocationproc,
10144			compileshader: dummy_pfnglcompileshaderproc,
10145			createprogram: dummy_pfnglcreateprogramproc,
10146			createshader: dummy_pfnglcreateshaderproc,
10147			deleteprogram: dummy_pfngldeleteprogramproc,
10148			deleteshader: dummy_pfngldeleteshaderproc,
10149			detachshader: dummy_pfngldetachshaderproc,
10150			disablevertexattribarray: dummy_pfngldisablevertexattribarrayproc,
10151			enablevertexattribarray: dummy_pfnglenablevertexattribarrayproc,
10152			getactiveattrib: dummy_pfnglgetactiveattribproc,
10153			getactiveuniform: dummy_pfnglgetactiveuniformproc,
10154			getattachedshaders: dummy_pfnglgetattachedshadersproc,
10155			getattriblocation: dummy_pfnglgetattriblocationproc,
10156			getprogramiv: dummy_pfnglgetprogramivproc,
10157			getprograminfolog: dummy_pfnglgetprograminfologproc,
10158			getshaderiv: dummy_pfnglgetshaderivproc,
10159			getshaderinfolog: dummy_pfnglgetshaderinfologproc,
10160			getshadersource: dummy_pfnglgetshadersourceproc,
10161			getuniformlocation: dummy_pfnglgetuniformlocationproc,
10162			getuniformfv: dummy_pfnglgetuniformfvproc,
10163			getuniformiv: dummy_pfnglgetuniformivproc,
10164			getvertexattribdv: dummy_pfnglgetvertexattribdvproc,
10165			getvertexattribfv: dummy_pfnglgetvertexattribfvproc,
10166			getvertexattribiv: dummy_pfnglgetvertexattribivproc,
10167			getvertexattribpointerv: dummy_pfnglgetvertexattribpointervproc,
10168			isprogram: dummy_pfnglisprogramproc,
10169			isshader: dummy_pfnglisshaderproc,
10170			linkprogram: dummy_pfngllinkprogramproc,
10171			shadersource: dummy_pfnglshadersourceproc,
10172			useprogram: dummy_pfngluseprogramproc,
10173			uniform1f: dummy_pfngluniform1fproc,
10174			uniform2f: dummy_pfngluniform2fproc,
10175			uniform3f: dummy_pfngluniform3fproc,
10176			uniform4f: dummy_pfngluniform4fproc,
10177			uniform1i: dummy_pfngluniform1iproc,
10178			uniform2i: dummy_pfngluniform2iproc,
10179			uniform3i: dummy_pfngluniform3iproc,
10180			uniform4i: dummy_pfngluniform4iproc,
10181			uniform1fv: dummy_pfngluniform1fvproc,
10182			uniform2fv: dummy_pfngluniform2fvproc,
10183			uniform3fv: dummy_pfngluniform3fvproc,
10184			uniform4fv: dummy_pfngluniform4fvproc,
10185			uniform1iv: dummy_pfngluniform1ivproc,
10186			uniform2iv: dummy_pfngluniform2ivproc,
10187			uniform3iv: dummy_pfngluniform3ivproc,
10188			uniform4iv: dummy_pfngluniform4ivproc,
10189			uniformmatrix2fv: dummy_pfngluniformmatrix2fvproc,
10190			uniformmatrix3fv: dummy_pfngluniformmatrix3fvproc,
10191			uniformmatrix4fv: dummy_pfngluniformmatrix4fvproc,
10192			validateprogram: dummy_pfnglvalidateprogramproc,
10193			vertexattrib1d: dummy_pfnglvertexattrib1dproc,
10194			vertexattrib1dv: dummy_pfnglvertexattrib1dvproc,
10195			vertexattrib1f: dummy_pfnglvertexattrib1fproc,
10196			vertexattrib1fv: dummy_pfnglvertexattrib1fvproc,
10197			vertexattrib1s: dummy_pfnglvertexattrib1sproc,
10198			vertexattrib1sv: dummy_pfnglvertexattrib1svproc,
10199			vertexattrib2d: dummy_pfnglvertexattrib2dproc,
10200			vertexattrib2dv: dummy_pfnglvertexattrib2dvproc,
10201			vertexattrib2f: dummy_pfnglvertexattrib2fproc,
10202			vertexattrib2fv: dummy_pfnglvertexattrib2fvproc,
10203			vertexattrib2s: dummy_pfnglvertexattrib2sproc,
10204			vertexattrib2sv: dummy_pfnglvertexattrib2svproc,
10205			vertexattrib3d: dummy_pfnglvertexattrib3dproc,
10206			vertexattrib3dv: dummy_pfnglvertexattrib3dvproc,
10207			vertexattrib3f: dummy_pfnglvertexattrib3fproc,
10208			vertexattrib3fv: dummy_pfnglvertexattrib3fvproc,
10209			vertexattrib3s: dummy_pfnglvertexattrib3sproc,
10210			vertexattrib3sv: dummy_pfnglvertexattrib3svproc,
10211			vertexattrib4nbv: dummy_pfnglvertexattrib4nbvproc,
10212			vertexattrib4niv: dummy_pfnglvertexattrib4nivproc,
10213			vertexattrib4nsv: dummy_pfnglvertexattrib4nsvproc,
10214			vertexattrib4nub: dummy_pfnglvertexattrib4nubproc,
10215			vertexattrib4nubv: dummy_pfnglvertexattrib4nubvproc,
10216			vertexattrib4nuiv: dummy_pfnglvertexattrib4nuivproc,
10217			vertexattrib4nusv: dummy_pfnglvertexattrib4nusvproc,
10218			vertexattrib4bv: dummy_pfnglvertexattrib4bvproc,
10219			vertexattrib4d: dummy_pfnglvertexattrib4dproc,
10220			vertexattrib4dv: dummy_pfnglvertexattrib4dvproc,
10221			vertexattrib4f: dummy_pfnglvertexattrib4fproc,
10222			vertexattrib4fv: dummy_pfnglvertexattrib4fvproc,
10223			vertexattrib4iv: dummy_pfnglvertexattrib4ivproc,
10224			vertexattrib4s: dummy_pfnglvertexattrib4sproc,
10225			vertexattrib4sv: dummy_pfnglvertexattrib4svproc,
10226			vertexattrib4ubv: dummy_pfnglvertexattrib4ubvproc,
10227			vertexattrib4uiv: dummy_pfnglvertexattrib4uivproc,
10228			vertexattrib4usv: dummy_pfnglvertexattrib4usvproc,
10229			vertexattribpointer: dummy_pfnglvertexattribpointerproc,
10230			shading_language_version: "unknown",
10231		}
10232	}
10233}
10234impl Debug for Version20 {
10235	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
10236		if self.available {
10237			f.debug_struct("Version20")
10238			.field("available", &self.available)
10239			.field("shading_language_version", &self.shading_language_version)
10240			.field("blendequationseparate", unsafe{if transmute::<_, *const c_void>(self.blendequationseparate) == (dummy_pfnglblendequationseparateproc as *const c_void) {&null::<PFNGLBLENDEQUATIONSEPARATEPROC>()} else {&self.blendequationseparate}})
10241			.field("drawbuffers", unsafe{if transmute::<_, *const c_void>(self.drawbuffers) == (dummy_pfngldrawbuffersproc as *const c_void) {&null::<PFNGLDRAWBUFFERSPROC>()} else {&self.drawbuffers}})
10242			.field("stencilopseparate", unsafe{if transmute::<_, *const c_void>(self.stencilopseparate) == (dummy_pfnglstencilopseparateproc as *const c_void) {&null::<PFNGLSTENCILOPSEPARATEPROC>()} else {&self.stencilopseparate}})
10243			.field("stencilfuncseparate", unsafe{if transmute::<_, *const c_void>(self.stencilfuncseparate) == (dummy_pfnglstencilfuncseparateproc as *const c_void) {&null::<PFNGLSTENCILFUNCSEPARATEPROC>()} else {&self.stencilfuncseparate}})
10244			.field("stencilmaskseparate", unsafe{if transmute::<_, *const c_void>(self.stencilmaskseparate) == (dummy_pfnglstencilmaskseparateproc as *const c_void) {&null::<PFNGLSTENCILMASKSEPARATEPROC>()} else {&self.stencilmaskseparate}})
10245			.field("attachshader", unsafe{if transmute::<_, *const c_void>(self.attachshader) == (dummy_pfnglattachshaderproc as *const c_void) {&null::<PFNGLATTACHSHADERPROC>()} else {&self.attachshader}})
10246			.field("bindattriblocation", unsafe{if transmute::<_, *const c_void>(self.bindattriblocation) == (dummy_pfnglbindattriblocationproc as *const c_void) {&null::<PFNGLBINDATTRIBLOCATIONPROC>()} else {&self.bindattriblocation}})
10247			.field("compileshader", unsafe{if transmute::<_, *const c_void>(self.compileshader) == (dummy_pfnglcompileshaderproc as *const c_void) {&null::<PFNGLCOMPILESHADERPROC>()} else {&self.compileshader}})
10248			.field("createprogram", unsafe{if transmute::<_, *const c_void>(self.createprogram) == (dummy_pfnglcreateprogramproc as *const c_void) {&null::<PFNGLCREATEPROGRAMPROC>()} else {&self.createprogram}})
10249			.field("createshader", unsafe{if transmute::<_, *const c_void>(self.createshader) == (dummy_pfnglcreateshaderproc as *const c_void) {&null::<PFNGLCREATESHADERPROC>()} else {&self.createshader}})
10250			.field("deleteprogram", unsafe{if transmute::<_, *const c_void>(self.deleteprogram) == (dummy_pfngldeleteprogramproc as *const c_void) {&null::<PFNGLDELETEPROGRAMPROC>()} else {&self.deleteprogram}})
10251			.field("deleteshader", unsafe{if transmute::<_, *const c_void>(self.deleteshader) == (dummy_pfngldeleteshaderproc as *const c_void) {&null::<PFNGLDELETESHADERPROC>()} else {&self.deleteshader}})
10252			.field("detachshader", unsafe{if transmute::<_, *const c_void>(self.detachshader) == (dummy_pfngldetachshaderproc as *const c_void) {&null::<PFNGLDETACHSHADERPROC>()} else {&self.detachshader}})
10253			.field("disablevertexattribarray", unsafe{if transmute::<_, *const c_void>(self.disablevertexattribarray) == (dummy_pfngldisablevertexattribarrayproc as *const c_void) {&null::<PFNGLDISABLEVERTEXATTRIBARRAYPROC>()} else {&self.disablevertexattribarray}})
10254			.field("enablevertexattribarray", unsafe{if transmute::<_, *const c_void>(self.enablevertexattribarray) == (dummy_pfnglenablevertexattribarrayproc as *const c_void) {&null::<PFNGLENABLEVERTEXATTRIBARRAYPROC>()} else {&self.enablevertexattribarray}})
10255			.field("getactiveattrib", unsafe{if transmute::<_, *const c_void>(self.getactiveattrib) == (dummy_pfnglgetactiveattribproc as *const c_void) {&null::<PFNGLGETACTIVEATTRIBPROC>()} else {&self.getactiveattrib}})
10256			.field("getactiveuniform", unsafe{if transmute::<_, *const c_void>(self.getactiveuniform) == (dummy_pfnglgetactiveuniformproc as *const c_void) {&null::<PFNGLGETACTIVEUNIFORMPROC>()} else {&self.getactiveuniform}})
10257			.field("getattachedshaders", unsafe{if transmute::<_, *const c_void>(self.getattachedshaders) == (dummy_pfnglgetattachedshadersproc as *const c_void) {&null::<PFNGLGETATTACHEDSHADERSPROC>()} else {&self.getattachedshaders}})
10258			.field("getattriblocation", unsafe{if transmute::<_, *const c_void>(self.getattriblocation) == (dummy_pfnglgetattriblocationproc as *const c_void) {&null::<PFNGLGETATTRIBLOCATIONPROC>()} else {&self.getattriblocation}})
10259			.field("getprogramiv", unsafe{if transmute::<_, *const c_void>(self.getprogramiv) == (dummy_pfnglgetprogramivproc as *const c_void) {&null::<PFNGLGETPROGRAMIVPROC>()} else {&self.getprogramiv}})
10260			.field("getprograminfolog", unsafe{if transmute::<_, *const c_void>(self.getprograminfolog) == (dummy_pfnglgetprograminfologproc as *const c_void) {&null::<PFNGLGETPROGRAMINFOLOGPROC>()} else {&self.getprograminfolog}})
10261			.field("getshaderiv", unsafe{if transmute::<_, *const c_void>(self.getshaderiv) == (dummy_pfnglgetshaderivproc as *const c_void) {&null::<PFNGLGETSHADERIVPROC>()} else {&self.getshaderiv}})
10262			.field("getshaderinfolog", unsafe{if transmute::<_, *const c_void>(self.getshaderinfolog) == (dummy_pfnglgetshaderinfologproc as *const c_void) {&null::<PFNGLGETSHADERINFOLOGPROC>()} else {&self.getshaderinfolog}})
10263			.field("getshadersource", unsafe{if transmute::<_, *const c_void>(self.getshadersource) == (dummy_pfnglgetshadersourceproc as *const c_void) {&null::<PFNGLGETSHADERSOURCEPROC>()} else {&self.getshadersource}})
10264			.field("getuniformlocation", unsafe{if transmute::<_, *const c_void>(self.getuniformlocation) == (dummy_pfnglgetuniformlocationproc as *const c_void) {&null::<PFNGLGETUNIFORMLOCATIONPROC>()} else {&self.getuniformlocation}})
10265			.field("getuniformfv", unsafe{if transmute::<_, *const c_void>(self.getuniformfv) == (dummy_pfnglgetuniformfvproc as *const c_void) {&null::<PFNGLGETUNIFORMFVPROC>()} else {&self.getuniformfv}})
10266			.field("getuniformiv", unsafe{if transmute::<_, *const c_void>(self.getuniformiv) == (dummy_pfnglgetuniformivproc as *const c_void) {&null::<PFNGLGETUNIFORMIVPROC>()} else {&self.getuniformiv}})
10267			.field("getvertexattribdv", unsafe{if transmute::<_, *const c_void>(self.getvertexattribdv) == (dummy_pfnglgetvertexattribdvproc as *const c_void) {&null::<PFNGLGETVERTEXATTRIBDVPROC>()} else {&self.getvertexattribdv}})
10268			.field("getvertexattribfv", unsafe{if transmute::<_, *const c_void>(self.getvertexattribfv) == (dummy_pfnglgetvertexattribfvproc as *const c_void) {&null::<PFNGLGETVERTEXATTRIBFVPROC>()} else {&self.getvertexattribfv}})
10269			.field("getvertexattribiv", unsafe{if transmute::<_, *const c_void>(self.getvertexattribiv) == (dummy_pfnglgetvertexattribivproc as *const c_void) {&null::<PFNGLGETVERTEXATTRIBIVPROC>()} else {&self.getvertexattribiv}})
10270			.field("getvertexattribpointerv", unsafe{if transmute::<_, *const c_void>(self.getvertexattribpointerv) == (dummy_pfnglgetvertexattribpointervproc as *const c_void) {&null::<PFNGLGETVERTEXATTRIBPOINTERVPROC>()} else {&self.getvertexattribpointerv}})
10271			.field("isprogram", unsafe{if transmute::<_, *const c_void>(self.isprogram) == (dummy_pfnglisprogramproc as *const c_void) {&null::<PFNGLISPROGRAMPROC>()} else {&self.isprogram}})
10272			.field("isshader", unsafe{if transmute::<_, *const c_void>(self.isshader) == (dummy_pfnglisshaderproc as *const c_void) {&null::<PFNGLISSHADERPROC>()} else {&self.isshader}})
10273			.field("linkprogram", unsafe{if transmute::<_, *const c_void>(self.linkprogram) == (dummy_pfngllinkprogramproc as *const c_void) {&null::<PFNGLLINKPROGRAMPROC>()} else {&self.linkprogram}})
10274			.field("shadersource", unsafe{if transmute::<_, *const c_void>(self.shadersource) == (dummy_pfnglshadersourceproc as *const c_void) {&null::<PFNGLSHADERSOURCEPROC>()} else {&self.shadersource}})
10275			.field("useprogram", unsafe{if transmute::<_, *const c_void>(self.useprogram) == (dummy_pfngluseprogramproc as *const c_void) {&null::<PFNGLUSEPROGRAMPROC>()} else {&self.useprogram}})
10276			.field("uniform1f", unsafe{if transmute::<_, *const c_void>(self.uniform1f) == (dummy_pfngluniform1fproc as *const c_void) {&null::<PFNGLUNIFORM1FPROC>()} else {&self.uniform1f}})
10277			.field("uniform2f", unsafe{if transmute::<_, *const c_void>(self.uniform2f) == (dummy_pfngluniform2fproc as *const c_void) {&null::<PFNGLUNIFORM2FPROC>()} else {&self.uniform2f}})
10278			.field("uniform3f", unsafe{if transmute::<_, *const c_void>(self.uniform3f) == (dummy_pfngluniform3fproc as *const c_void) {&null::<PFNGLUNIFORM3FPROC>()} else {&self.uniform3f}})
10279			.field("uniform4f", unsafe{if transmute::<_, *const c_void>(self.uniform4f) == (dummy_pfngluniform4fproc as *const c_void) {&null::<PFNGLUNIFORM4FPROC>()} else {&self.uniform4f}})
10280			.field("uniform1i", unsafe{if transmute::<_, *const c_void>(self.uniform1i) == (dummy_pfngluniform1iproc as *const c_void) {&null::<PFNGLUNIFORM1IPROC>()} else {&self.uniform1i}})
10281			.field("uniform2i", unsafe{if transmute::<_, *const c_void>(self.uniform2i) == (dummy_pfngluniform2iproc as *const c_void) {&null::<PFNGLUNIFORM2IPROC>()} else {&self.uniform2i}})
10282			.field("uniform3i", unsafe{if transmute::<_, *const c_void>(self.uniform3i) == (dummy_pfngluniform3iproc as *const c_void) {&null::<PFNGLUNIFORM3IPROC>()} else {&self.uniform3i}})
10283			.field("uniform4i", unsafe{if transmute::<_, *const c_void>(self.uniform4i) == (dummy_pfngluniform4iproc as *const c_void) {&null::<PFNGLUNIFORM4IPROC>()} else {&self.uniform4i}})
10284			.field("uniform1fv", unsafe{if transmute::<_, *const c_void>(self.uniform1fv) == (dummy_pfngluniform1fvproc as *const c_void) {&null::<PFNGLUNIFORM1FVPROC>()} else {&self.uniform1fv}})
10285			.field("uniform2fv", unsafe{if transmute::<_, *const c_void>(self.uniform2fv) == (dummy_pfngluniform2fvproc as *const c_void) {&null::<PFNGLUNIFORM2FVPROC>()} else {&self.uniform2fv}})
10286			.field("uniform3fv", unsafe{if transmute::<_, *const c_void>(self.uniform3fv) == (dummy_pfngluniform3fvproc as *const c_void) {&null::<PFNGLUNIFORM3FVPROC>()} else {&self.uniform3fv}})
10287			.field("uniform4fv", unsafe{if transmute::<_, *const c_void>(self.uniform4fv) == (dummy_pfngluniform4fvproc as *const c_void) {&null::<PFNGLUNIFORM4FVPROC>()} else {&self.uniform4fv}})
10288			.field("uniform1iv", unsafe{if transmute::<_, *const c_void>(self.uniform1iv) == (dummy_pfngluniform1ivproc as *const c_void) {&null::<PFNGLUNIFORM1IVPROC>()} else {&self.uniform1iv}})
10289			.field("uniform2iv", unsafe{if transmute::<_, *const c_void>(self.uniform2iv) == (dummy_pfngluniform2ivproc as *const c_void) {&null::<PFNGLUNIFORM2IVPROC>()} else {&self.uniform2iv}})
10290			.field("uniform3iv", unsafe{if transmute::<_, *const c_void>(self.uniform3iv) == (dummy_pfngluniform3ivproc as *const c_void) {&null::<PFNGLUNIFORM3IVPROC>()} else {&self.uniform3iv}})
10291			.field("uniform4iv", unsafe{if transmute::<_, *const c_void>(self.uniform4iv) == (dummy_pfngluniform4ivproc as *const c_void) {&null::<PFNGLUNIFORM4IVPROC>()} else {&self.uniform4iv}})
10292			.field("uniformmatrix2fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix2fv) == (dummy_pfngluniformmatrix2fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX2FVPROC>()} else {&self.uniformmatrix2fv}})
10293			.field("uniformmatrix3fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix3fv) == (dummy_pfngluniformmatrix3fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX3FVPROC>()} else {&self.uniformmatrix3fv}})
10294			.field("uniformmatrix4fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix4fv) == (dummy_pfngluniformmatrix4fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX4FVPROC>()} else {&self.uniformmatrix4fv}})
10295			.field("validateprogram", unsafe{if transmute::<_, *const c_void>(self.validateprogram) == (dummy_pfnglvalidateprogramproc as *const c_void) {&null::<PFNGLVALIDATEPROGRAMPROC>()} else {&self.validateprogram}})
10296			.field("vertexattrib1d", unsafe{if transmute::<_, *const c_void>(self.vertexattrib1d) == (dummy_pfnglvertexattrib1dproc as *const c_void) {&null::<PFNGLVERTEXATTRIB1DPROC>()} else {&self.vertexattrib1d}})
10297			.field("vertexattrib1dv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib1dv) == (dummy_pfnglvertexattrib1dvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB1DVPROC>()} else {&self.vertexattrib1dv}})
10298			.field("vertexattrib1f", unsafe{if transmute::<_, *const c_void>(self.vertexattrib1f) == (dummy_pfnglvertexattrib1fproc as *const c_void) {&null::<PFNGLVERTEXATTRIB1FPROC>()} else {&self.vertexattrib1f}})
10299			.field("vertexattrib1fv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib1fv) == (dummy_pfnglvertexattrib1fvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB1FVPROC>()} else {&self.vertexattrib1fv}})
10300			.field("vertexattrib1s", unsafe{if transmute::<_, *const c_void>(self.vertexattrib1s) == (dummy_pfnglvertexattrib1sproc as *const c_void) {&null::<PFNGLVERTEXATTRIB1SPROC>()} else {&self.vertexattrib1s}})
10301			.field("vertexattrib1sv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib1sv) == (dummy_pfnglvertexattrib1svproc as *const c_void) {&null::<PFNGLVERTEXATTRIB1SVPROC>()} else {&self.vertexattrib1sv}})
10302			.field("vertexattrib2d", unsafe{if transmute::<_, *const c_void>(self.vertexattrib2d) == (dummy_pfnglvertexattrib2dproc as *const c_void) {&null::<PFNGLVERTEXATTRIB2DPROC>()} else {&self.vertexattrib2d}})
10303			.field("vertexattrib2dv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib2dv) == (dummy_pfnglvertexattrib2dvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB2DVPROC>()} else {&self.vertexattrib2dv}})
10304			.field("vertexattrib2f", unsafe{if transmute::<_, *const c_void>(self.vertexattrib2f) == (dummy_pfnglvertexattrib2fproc as *const c_void) {&null::<PFNGLVERTEXATTRIB2FPROC>()} else {&self.vertexattrib2f}})
10305			.field("vertexattrib2fv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib2fv) == (dummy_pfnglvertexattrib2fvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB2FVPROC>()} else {&self.vertexattrib2fv}})
10306			.field("vertexattrib2s", unsafe{if transmute::<_, *const c_void>(self.vertexattrib2s) == (dummy_pfnglvertexattrib2sproc as *const c_void) {&null::<PFNGLVERTEXATTRIB2SPROC>()} else {&self.vertexattrib2s}})
10307			.field("vertexattrib2sv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib2sv) == (dummy_pfnglvertexattrib2svproc as *const c_void) {&null::<PFNGLVERTEXATTRIB2SVPROC>()} else {&self.vertexattrib2sv}})
10308			.field("vertexattrib3d", unsafe{if transmute::<_, *const c_void>(self.vertexattrib3d) == (dummy_pfnglvertexattrib3dproc as *const c_void) {&null::<PFNGLVERTEXATTRIB3DPROC>()} else {&self.vertexattrib3d}})
10309			.field("vertexattrib3dv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib3dv) == (dummy_pfnglvertexattrib3dvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB3DVPROC>()} else {&self.vertexattrib3dv}})
10310			.field("vertexattrib3f", unsafe{if transmute::<_, *const c_void>(self.vertexattrib3f) == (dummy_pfnglvertexattrib3fproc as *const c_void) {&null::<PFNGLVERTEXATTRIB3FPROC>()} else {&self.vertexattrib3f}})
10311			.field("vertexattrib3fv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib3fv) == (dummy_pfnglvertexattrib3fvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB3FVPROC>()} else {&self.vertexattrib3fv}})
10312			.field("vertexattrib3s", unsafe{if transmute::<_, *const c_void>(self.vertexattrib3s) == (dummy_pfnglvertexattrib3sproc as *const c_void) {&null::<PFNGLVERTEXATTRIB3SPROC>()} else {&self.vertexattrib3s}})
10313			.field("vertexattrib3sv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib3sv) == (dummy_pfnglvertexattrib3svproc as *const c_void) {&null::<PFNGLVERTEXATTRIB3SVPROC>()} else {&self.vertexattrib3sv}})
10314			.field("vertexattrib4nbv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4nbv) == (dummy_pfnglvertexattrib4nbvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4NBVPROC>()} else {&self.vertexattrib4nbv}})
10315			.field("vertexattrib4niv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4niv) == (dummy_pfnglvertexattrib4nivproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4NIVPROC>()} else {&self.vertexattrib4niv}})
10316			.field("vertexattrib4nsv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4nsv) == (dummy_pfnglvertexattrib4nsvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4NSVPROC>()} else {&self.vertexattrib4nsv}})
10317			.field("vertexattrib4nub", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4nub) == (dummy_pfnglvertexattrib4nubproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4NUBPROC>()} else {&self.vertexattrib4nub}})
10318			.field("vertexattrib4nubv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4nubv) == (dummy_pfnglvertexattrib4nubvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4NUBVPROC>()} else {&self.vertexattrib4nubv}})
10319			.field("vertexattrib4nuiv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4nuiv) == (dummy_pfnglvertexattrib4nuivproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4NUIVPROC>()} else {&self.vertexattrib4nuiv}})
10320			.field("vertexattrib4nusv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4nusv) == (dummy_pfnglvertexattrib4nusvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4NUSVPROC>()} else {&self.vertexattrib4nusv}})
10321			.field("vertexattrib4bv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4bv) == (dummy_pfnglvertexattrib4bvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4BVPROC>()} else {&self.vertexattrib4bv}})
10322			.field("vertexattrib4d", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4d) == (dummy_pfnglvertexattrib4dproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4DPROC>()} else {&self.vertexattrib4d}})
10323			.field("vertexattrib4dv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4dv) == (dummy_pfnglvertexattrib4dvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4DVPROC>()} else {&self.vertexattrib4dv}})
10324			.field("vertexattrib4f", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4f) == (dummy_pfnglvertexattrib4fproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4FPROC>()} else {&self.vertexattrib4f}})
10325			.field("vertexattrib4fv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4fv) == (dummy_pfnglvertexattrib4fvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4FVPROC>()} else {&self.vertexattrib4fv}})
10326			.field("vertexattrib4iv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4iv) == (dummy_pfnglvertexattrib4ivproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4IVPROC>()} else {&self.vertexattrib4iv}})
10327			.field("vertexattrib4s", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4s) == (dummy_pfnglvertexattrib4sproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4SPROC>()} else {&self.vertexattrib4s}})
10328			.field("vertexattrib4sv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4sv) == (dummy_pfnglvertexattrib4svproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4SVPROC>()} else {&self.vertexattrib4sv}})
10329			.field("vertexattrib4ubv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4ubv) == (dummy_pfnglvertexattrib4ubvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4UBVPROC>()} else {&self.vertexattrib4ubv}})
10330			.field("vertexattrib4uiv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4uiv) == (dummy_pfnglvertexattrib4uivproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4UIVPROC>()} else {&self.vertexattrib4uiv}})
10331			.field("vertexattrib4usv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4usv) == (dummy_pfnglvertexattrib4usvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4USVPROC>()} else {&self.vertexattrib4usv}})
10332			.field("vertexattribpointer", unsafe{if transmute::<_, *const c_void>(self.vertexattribpointer) == (dummy_pfnglvertexattribpointerproc as *const c_void) {&null::<PFNGLVERTEXATTRIBPOINTERPROC>()} else {&self.vertexattribpointer}})
10333			.finish()
10334		} else {
10335			f.debug_struct("Version20")
10336			.field("available", &self.available)
10337			.finish_non_exhaustive()
10338		}
10339	}
10340}
10341
10342/// The prototype to the OpenGL function `UniformMatrix2x3fv`
10343type PFNGLUNIFORMMATRIX2X3FVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLfloat);
10344
10345/// The prototype to the OpenGL function `UniformMatrix3x2fv`
10346type PFNGLUNIFORMMATRIX3X2FVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLfloat);
10347
10348/// The prototype to the OpenGL function `UniformMatrix2x4fv`
10349type PFNGLUNIFORMMATRIX2X4FVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLfloat);
10350
10351/// The prototype to the OpenGL function `UniformMatrix4x2fv`
10352type PFNGLUNIFORMMATRIX4X2FVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLfloat);
10353
10354/// The prototype to the OpenGL function `UniformMatrix3x4fv`
10355type PFNGLUNIFORMMATRIX3X4FVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLfloat);
10356
10357/// The prototype to the OpenGL function `UniformMatrix4x3fv`
10358type PFNGLUNIFORMMATRIX4X3FVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLfloat);
10359
10360/// The dummy function of `UniformMatrix2x3fv()`
10361extern "system" fn dummy_pfngluniformmatrix2x3fvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
10362	panic!("OpenGL function pointer `glUniformMatrix2x3fv()` is null.")
10363}
10364
10365/// The dummy function of `UniformMatrix3x2fv()`
10366extern "system" fn dummy_pfngluniformmatrix3x2fvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
10367	panic!("OpenGL function pointer `glUniformMatrix3x2fv()` is null.")
10368}
10369
10370/// The dummy function of `UniformMatrix2x4fv()`
10371extern "system" fn dummy_pfngluniformmatrix2x4fvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
10372	panic!("OpenGL function pointer `glUniformMatrix2x4fv()` is null.")
10373}
10374
10375/// The dummy function of `UniformMatrix4x2fv()`
10376extern "system" fn dummy_pfngluniformmatrix4x2fvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
10377	panic!("OpenGL function pointer `glUniformMatrix4x2fv()` is null.")
10378}
10379
10380/// The dummy function of `UniformMatrix3x4fv()`
10381extern "system" fn dummy_pfngluniformmatrix3x4fvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
10382	panic!("OpenGL function pointer `glUniformMatrix3x4fv()` is null.")
10383}
10384
10385/// The dummy function of `UniformMatrix4x3fv()`
10386extern "system" fn dummy_pfngluniformmatrix4x3fvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
10387	panic!("OpenGL function pointer `glUniformMatrix4x3fv()` is null.")
10388}
10389/// Constant value defined from OpenGL 2.1
10390pub const GL_PIXEL_PACK_BUFFER: GLenum = 0x88EB;
10391
10392/// Constant value defined from OpenGL 2.1
10393pub const GL_PIXEL_UNPACK_BUFFER: GLenum = 0x88EC;
10394
10395/// Constant value defined from OpenGL 2.1
10396pub const GL_PIXEL_PACK_BUFFER_BINDING: GLenum = 0x88ED;
10397
10398/// Constant value defined from OpenGL 2.1
10399pub const GL_PIXEL_UNPACK_BUFFER_BINDING: GLenum = 0x88EF;
10400
10401/// Constant value defined from OpenGL 2.1
10402pub const GL_FLOAT_MAT2x3: GLenum = 0x8B65;
10403
10404/// Constant value defined from OpenGL 2.1
10405pub const GL_FLOAT_MAT2x4: GLenum = 0x8B66;
10406
10407/// Constant value defined from OpenGL 2.1
10408pub const GL_FLOAT_MAT3x2: GLenum = 0x8B67;
10409
10410/// Constant value defined from OpenGL 2.1
10411pub const GL_FLOAT_MAT3x4: GLenum = 0x8B68;
10412
10413/// Constant value defined from OpenGL 2.1
10414pub const GL_FLOAT_MAT4x2: GLenum = 0x8B69;
10415
10416/// Constant value defined from OpenGL 2.1
10417pub const GL_FLOAT_MAT4x3: GLenum = 0x8B6A;
10418
10419/// Constant value defined from OpenGL 2.1
10420pub const GL_SRGB: GLenum = 0x8C40;
10421
10422/// Constant value defined from OpenGL 2.1
10423pub const GL_SRGB8: GLenum = 0x8C41;
10424
10425/// Constant value defined from OpenGL 2.1
10426pub const GL_SRGB_ALPHA: GLenum = 0x8C42;
10427
10428/// Constant value defined from OpenGL 2.1
10429pub const GL_SRGB8_ALPHA8: GLenum = 0x8C43;
10430
10431/// Constant value defined from OpenGL 2.1
10432pub const GL_COMPRESSED_SRGB: GLenum = 0x8C48;
10433
10434/// Constant value defined from OpenGL 2.1
10435pub const GL_COMPRESSED_SRGB_ALPHA: GLenum = 0x8C49;
10436
10437/// Constant value defined from OpenGL 2.1
10438pub const GL_CURRENT_RASTER_SECONDARY_COLOR: GLenum = 0x845F;
10439
10440/// Constant value defined from OpenGL 2.1
10441pub const GL_SLUMINANCE_ALPHA: GLenum = 0x8C44;
10442
10443/// Constant value defined from OpenGL 2.1
10444pub const GL_SLUMINANCE8_ALPHA8: GLenum = 0x8C45;
10445
10446/// Constant value defined from OpenGL 2.1
10447pub const GL_SLUMINANCE: GLenum = 0x8C46;
10448
10449/// Constant value defined from OpenGL 2.1
10450pub const GL_SLUMINANCE8: GLenum = 0x8C47;
10451
10452/// Constant value defined from OpenGL 2.1
10453pub const GL_COMPRESSED_SLUMINANCE: GLenum = 0x8C4A;
10454
10455/// Constant value defined from OpenGL 2.1
10456pub const GL_COMPRESSED_SLUMINANCE_ALPHA: GLenum = 0x8C4B;
10457
10458/// Functions from OpenGL version 2.1
10459pub trait GL_2_1 {
10460	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
10461	fn glGetError(&self) -> GLenum;
10462
10463	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2x3fv.xhtml>
10464	fn glUniformMatrix2x3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
10465
10466	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3x2fv.xhtml>
10467	fn glUniformMatrix3x2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
10468
10469	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2x4fv.xhtml>
10470	fn glUniformMatrix2x4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
10471
10472	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4x2fv.xhtml>
10473	fn glUniformMatrix4x2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
10474
10475	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3x4fv.xhtml>
10476	fn glUniformMatrix3x4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
10477
10478	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4x3fv.xhtml>
10479	fn glUniformMatrix4x3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
10480}
10481/// Functions from OpenGL version 2.1
10482#[derive(Clone, Copy, PartialEq, Eq, Hash)]
10483pub struct Version21 {
10484	/// Is OpenGL version 2.1 available
10485	available: bool,
10486
10487	/// The function pointer to `glGetError()`
10488	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
10489	pub geterror: PFNGLGETERRORPROC,
10490
10491	/// The function pointer to `glUniformMatrix2x3fv()`
10492	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2x3fv.xhtml>
10493	pub uniformmatrix2x3fv: PFNGLUNIFORMMATRIX2X3FVPROC,
10494
10495	/// The function pointer to `glUniformMatrix3x2fv()`
10496	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3x2fv.xhtml>
10497	pub uniformmatrix3x2fv: PFNGLUNIFORMMATRIX3X2FVPROC,
10498
10499	/// The function pointer to `glUniformMatrix2x4fv()`
10500	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2x4fv.xhtml>
10501	pub uniformmatrix2x4fv: PFNGLUNIFORMMATRIX2X4FVPROC,
10502
10503	/// The function pointer to `glUniformMatrix4x2fv()`
10504	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4x2fv.xhtml>
10505	pub uniformmatrix4x2fv: PFNGLUNIFORMMATRIX4X2FVPROC,
10506
10507	/// The function pointer to `glUniformMatrix3x4fv()`
10508	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3x4fv.xhtml>
10509	pub uniformmatrix3x4fv: PFNGLUNIFORMMATRIX3X4FVPROC,
10510
10511	/// The function pointer to `glUniformMatrix4x3fv()`
10512	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4x3fv.xhtml>
10513	pub uniformmatrix4x3fv: PFNGLUNIFORMMATRIX4X3FVPROC,
10514}
10515
10516impl GL_2_1 for Version21 {
10517	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
10518	#[inline(always)]
10519	fn glGetError(&self) -> GLenum {
10520		(self.geterror)()
10521	}
10522	#[inline(always)]
10523	fn glUniformMatrix2x3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
10524		let ret = process_catch("glUniformMatrix2x3fv", catch_unwind(||(self.uniformmatrix2x3fv)(location, count, transpose, value)));
10525		#[cfg(feature = "diagnose")]
10526		if let Ok(ret) = ret {
10527			return to_result("glUniformMatrix2x3fv", ret, self.glGetError());
10528		} else {
10529			return ret
10530		}
10531		#[cfg(not(feature = "diagnose"))]
10532		return ret;
10533	}
10534	#[inline(always)]
10535	fn glUniformMatrix3x2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
10536		let ret = process_catch("glUniformMatrix3x2fv", catch_unwind(||(self.uniformmatrix3x2fv)(location, count, transpose, value)));
10537		#[cfg(feature = "diagnose")]
10538		if let Ok(ret) = ret {
10539			return to_result("glUniformMatrix3x2fv", ret, self.glGetError());
10540		} else {
10541			return ret
10542		}
10543		#[cfg(not(feature = "diagnose"))]
10544		return ret;
10545	}
10546	#[inline(always)]
10547	fn glUniformMatrix2x4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
10548		let ret = process_catch("glUniformMatrix2x4fv", catch_unwind(||(self.uniformmatrix2x4fv)(location, count, transpose, value)));
10549		#[cfg(feature = "diagnose")]
10550		if let Ok(ret) = ret {
10551			return to_result("glUniformMatrix2x4fv", ret, self.glGetError());
10552		} else {
10553			return ret
10554		}
10555		#[cfg(not(feature = "diagnose"))]
10556		return ret;
10557	}
10558	#[inline(always)]
10559	fn glUniformMatrix4x2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
10560		let ret = process_catch("glUniformMatrix4x2fv", catch_unwind(||(self.uniformmatrix4x2fv)(location, count, transpose, value)));
10561		#[cfg(feature = "diagnose")]
10562		if let Ok(ret) = ret {
10563			return to_result("glUniformMatrix4x2fv", ret, self.glGetError());
10564		} else {
10565			return ret
10566		}
10567		#[cfg(not(feature = "diagnose"))]
10568		return ret;
10569	}
10570	#[inline(always)]
10571	fn glUniformMatrix3x4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
10572		let ret = process_catch("glUniformMatrix3x4fv", catch_unwind(||(self.uniformmatrix3x4fv)(location, count, transpose, value)));
10573		#[cfg(feature = "diagnose")]
10574		if let Ok(ret) = ret {
10575			return to_result("glUniformMatrix3x4fv", ret, self.glGetError());
10576		} else {
10577			return ret
10578		}
10579		#[cfg(not(feature = "diagnose"))]
10580		return ret;
10581	}
10582	#[inline(always)]
10583	fn glUniformMatrix4x3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
10584		let ret = process_catch("glUniformMatrix4x3fv", catch_unwind(||(self.uniformmatrix4x3fv)(location, count, transpose, value)));
10585		#[cfg(feature = "diagnose")]
10586		if let Ok(ret) = ret {
10587			return to_result("glUniformMatrix4x3fv", ret, self.glGetError());
10588		} else {
10589			return ret
10590		}
10591		#[cfg(not(feature = "diagnose"))]
10592		return ret;
10593	}
10594}
10595
10596impl Version21 {
10597	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
10598		let (_spec, major, minor, release) = base.get_version();
10599		if (major, minor, release) < (2, 1, 0) {
10600			return Self::default();
10601		}
10602		Self {
10603			available: true,
10604			geterror: {let proc = get_proc_address("glGetError"); if proc == null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
10605			uniformmatrix2x3fv: {let proc = get_proc_address("glUniformMatrix2x3fv"); if proc == null() {dummy_pfngluniformmatrix2x3fvproc} else {unsafe{transmute(proc)}}},
10606			uniformmatrix3x2fv: {let proc = get_proc_address("glUniformMatrix3x2fv"); if proc == null() {dummy_pfngluniformmatrix3x2fvproc} else {unsafe{transmute(proc)}}},
10607			uniformmatrix2x4fv: {let proc = get_proc_address("glUniformMatrix2x4fv"); if proc == null() {dummy_pfngluniformmatrix2x4fvproc} else {unsafe{transmute(proc)}}},
10608			uniformmatrix4x2fv: {let proc = get_proc_address("glUniformMatrix4x2fv"); if proc == null() {dummy_pfngluniformmatrix4x2fvproc} else {unsafe{transmute(proc)}}},
10609			uniformmatrix3x4fv: {let proc = get_proc_address("glUniformMatrix3x4fv"); if proc == null() {dummy_pfngluniformmatrix3x4fvproc} else {unsafe{transmute(proc)}}},
10610			uniformmatrix4x3fv: {let proc = get_proc_address("glUniformMatrix4x3fv"); if proc == null() {dummy_pfngluniformmatrix4x3fvproc} else {unsafe{transmute(proc)}}},
10611		}
10612	}
10613	#[inline(always)]
10614	pub fn get_available(&self) -> bool {
10615		self.available
10616	}
10617}
10618
10619impl Default for Version21 {
10620	fn default() -> Self {
10621		Self {
10622			available: false,
10623			geterror: dummy_pfnglgeterrorproc,
10624			uniformmatrix2x3fv: dummy_pfngluniformmatrix2x3fvproc,
10625			uniformmatrix3x2fv: dummy_pfngluniformmatrix3x2fvproc,
10626			uniformmatrix2x4fv: dummy_pfngluniformmatrix2x4fvproc,
10627			uniformmatrix4x2fv: dummy_pfngluniformmatrix4x2fvproc,
10628			uniformmatrix3x4fv: dummy_pfngluniformmatrix3x4fvproc,
10629			uniformmatrix4x3fv: dummy_pfngluniformmatrix4x3fvproc,
10630		}
10631	}
10632}
10633impl Debug for Version21 {
10634	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
10635		if self.available {
10636			f.debug_struct("Version21")
10637			.field("available", &self.available)
10638			.field("uniformmatrix2x3fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix2x3fv) == (dummy_pfngluniformmatrix2x3fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX2X3FVPROC>()} else {&self.uniformmatrix2x3fv}})
10639			.field("uniformmatrix3x2fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix3x2fv) == (dummy_pfngluniformmatrix3x2fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX3X2FVPROC>()} else {&self.uniformmatrix3x2fv}})
10640			.field("uniformmatrix2x4fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix2x4fv) == (dummy_pfngluniformmatrix2x4fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX2X4FVPROC>()} else {&self.uniformmatrix2x4fv}})
10641			.field("uniformmatrix4x2fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix4x2fv) == (dummy_pfngluniformmatrix4x2fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX4X2FVPROC>()} else {&self.uniformmatrix4x2fv}})
10642			.field("uniformmatrix3x4fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix3x4fv) == (dummy_pfngluniformmatrix3x4fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX3X4FVPROC>()} else {&self.uniformmatrix3x4fv}})
10643			.field("uniformmatrix4x3fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix4x3fv) == (dummy_pfngluniformmatrix4x3fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX4X3FVPROC>()} else {&self.uniformmatrix4x3fv}})
10644			.finish()
10645		} else {
10646			f.debug_struct("Version21")
10647			.field("available", &self.available)
10648			.finish_non_exhaustive()
10649		}
10650	}
10651}
10652
10653/// Alias to `khronos_uint16_t`
10654pub type GLhalf = khronos_uint16_t;
10655
10656/// The prototype to the OpenGL function `ColorMaski`
10657type PFNGLCOLORMASKIPROC = extern "system" fn(GLuint, GLboolean, GLboolean, GLboolean, GLboolean);
10658
10659/// The prototype to the OpenGL function `GetBooleani_v`
10660type PFNGLGETBOOLEANI_VPROC = extern "system" fn(GLenum, GLuint, *mut GLboolean);
10661
10662/// The prototype to the OpenGL function `GetIntegeri_v`
10663type PFNGLGETINTEGERI_VPROC = extern "system" fn(GLenum, GLuint, *mut GLint);
10664
10665/// The prototype to the OpenGL function `Enablei`
10666type PFNGLENABLEIPROC = extern "system" fn(GLenum, GLuint);
10667
10668/// The prototype to the OpenGL function `Disablei`
10669type PFNGLDISABLEIPROC = extern "system" fn(GLenum, GLuint);
10670
10671/// The prototype to the OpenGL function `IsEnabledi`
10672type PFNGLISENABLEDIPROC = extern "system" fn(GLenum, GLuint) -> GLboolean;
10673
10674/// The prototype to the OpenGL function `BeginTransformFeedback`
10675type PFNGLBEGINTRANSFORMFEEDBACKPROC = extern "system" fn(GLenum);
10676
10677/// The prototype to the OpenGL function `EndTransformFeedback`
10678type PFNGLENDTRANSFORMFEEDBACKPROC = extern "system" fn();
10679
10680/// The prototype to the OpenGL function `BindBufferRange`
10681type PFNGLBINDBUFFERRANGEPROC = extern "system" fn(GLenum, GLuint, GLuint, GLintptr, GLsizeiptr);
10682
10683/// The prototype to the OpenGL function `BindBufferBase`
10684type PFNGLBINDBUFFERBASEPROC = extern "system" fn(GLenum, GLuint, GLuint);
10685
10686/// The prototype to the OpenGL function `TransformFeedbackVaryings`
10687type PFNGLTRANSFORMFEEDBACKVARYINGSPROC = extern "system" fn(GLuint, GLsizei, *const *const GLchar, GLenum);
10688
10689/// The prototype to the OpenGL function `GetTransformFeedbackVarying`
10690type PFNGLGETTRANSFORMFEEDBACKVARYINGPROC = extern "system" fn(GLuint, GLuint, GLsizei, *mut GLsizei, *mut GLsizei, *mut GLenum, *mut GLchar);
10691
10692/// The prototype to the OpenGL function `ClampColor`
10693type PFNGLCLAMPCOLORPROC = extern "system" fn(GLenum, GLenum);
10694
10695/// The prototype to the OpenGL function `BeginConditionalRender`
10696type PFNGLBEGINCONDITIONALRENDERPROC = extern "system" fn(GLuint, GLenum);
10697
10698/// The prototype to the OpenGL function `EndConditionalRender`
10699type PFNGLENDCONDITIONALRENDERPROC = extern "system" fn();
10700
10701/// The prototype to the OpenGL function `VertexAttribIPointer`
10702type PFNGLVERTEXATTRIBIPOINTERPROC = extern "system" fn(GLuint, GLint, GLenum, GLsizei, *const c_void);
10703
10704/// The prototype to the OpenGL function `GetVertexAttribIiv`
10705type PFNGLGETVERTEXATTRIBIIVPROC = extern "system" fn(GLuint, GLenum, *mut GLint);
10706
10707/// The prototype to the OpenGL function `GetVertexAttribIuiv`
10708type PFNGLGETVERTEXATTRIBIUIVPROC = extern "system" fn(GLuint, GLenum, *mut GLuint);
10709
10710/// The prototype to the OpenGL function `VertexAttribI1i`
10711type PFNGLVERTEXATTRIBI1IPROC = extern "system" fn(GLuint, GLint);
10712
10713/// The prototype to the OpenGL function `VertexAttribI2i`
10714type PFNGLVERTEXATTRIBI2IPROC = extern "system" fn(GLuint, GLint, GLint);
10715
10716/// The prototype to the OpenGL function `VertexAttribI3i`
10717type PFNGLVERTEXATTRIBI3IPROC = extern "system" fn(GLuint, GLint, GLint, GLint);
10718
10719/// The prototype to the OpenGL function `VertexAttribI4i`
10720type PFNGLVERTEXATTRIBI4IPROC = extern "system" fn(GLuint, GLint, GLint, GLint, GLint);
10721
10722/// The prototype to the OpenGL function `VertexAttribI1ui`
10723type PFNGLVERTEXATTRIBI1UIPROC = extern "system" fn(GLuint, GLuint);
10724
10725/// The prototype to the OpenGL function `VertexAttribI2ui`
10726type PFNGLVERTEXATTRIBI2UIPROC = extern "system" fn(GLuint, GLuint, GLuint);
10727
10728/// The prototype to the OpenGL function `VertexAttribI3ui`
10729type PFNGLVERTEXATTRIBI3UIPROC = extern "system" fn(GLuint, GLuint, GLuint, GLuint);
10730
10731/// The prototype to the OpenGL function `VertexAttribI4ui`
10732type PFNGLVERTEXATTRIBI4UIPROC = extern "system" fn(GLuint, GLuint, GLuint, GLuint, GLuint);
10733
10734/// The prototype to the OpenGL function `VertexAttribI1iv`
10735type PFNGLVERTEXATTRIBI1IVPROC = extern "system" fn(GLuint, *const GLint);
10736
10737/// The prototype to the OpenGL function `VertexAttribI2iv`
10738type PFNGLVERTEXATTRIBI2IVPROC = extern "system" fn(GLuint, *const GLint);
10739
10740/// The prototype to the OpenGL function `VertexAttribI3iv`
10741type PFNGLVERTEXATTRIBI3IVPROC = extern "system" fn(GLuint, *const GLint);
10742
10743/// The prototype to the OpenGL function `VertexAttribI4iv`
10744type PFNGLVERTEXATTRIBI4IVPROC = extern "system" fn(GLuint, *const GLint);
10745
10746/// The prototype to the OpenGL function `VertexAttribI1uiv`
10747type PFNGLVERTEXATTRIBI1UIVPROC = extern "system" fn(GLuint, *const GLuint);
10748
10749/// The prototype to the OpenGL function `VertexAttribI2uiv`
10750type PFNGLVERTEXATTRIBI2UIVPROC = extern "system" fn(GLuint, *const GLuint);
10751
10752/// The prototype to the OpenGL function `VertexAttribI3uiv`
10753type PFNGLVERTEXATTRIBI3UIVPROC = extern "system" fn(GLuint, *const GLuint);
10754
10755/// The prototype to the OpenGL function `VertexAttribI4uiv`
10756type PFNGLVERTEXATTRIBI4UIVPROC = extern "system" fn(GLuint, *const GLuint);
10757
10758/// The prototype to the OpenGL function `VertexAttribI4bv`
10759type PFNGLVERTEXATTRIBI4BVPROC = extern "system" fn(GLuint, *const GLbyte);
10760
10761/// The prototype to the OpenGL function `VertexAttribI4sv`
10762type PFNGLVERTEXATTRIBI4SVPROC = extern "system" fn(GLuint, *const GLshort);
10763
10764/// The prototype to the OpenGL function `VertexAttribI4ubv`
10765type PFNGLVERTEXATTRIBI4UBVPROC = extern "system" fn(GLuint, *const GLubyte);
10766
10767/// The prototype to the OpenGL function `VertexAttribI4usv`
10768type PFNGLVERTEXATTRIBI4USVPROC = extern "system" fn(GLuint, *const GLushort);
10769
10770/// The prototype to the OpenGL function `GetUniformuiv`
10771type PFNGLGETUNIFORMUIVPROC = extern "system" fn(GLuint, GLint, *mut GLuint);
10772
10773/// The prototype to the OpenGL function `BindFragDataLocation`
10774type PFNGLBINDFRAGDATALOCATIONPROC = extern "system" fn(GLuint, GLuint, *const GLchar);
10775
10776/// The prototype to the OpenGL function `GetFragDataLocation`
10777type PFNGLGETFRAGDATALOCATIONPROC = extern "system" fn(GLuint, *const GLchar) -> GLint;
10778
10779/// The prototype to the OpenGL function `Uniform1ui`
10780type PFNGLUNIFORM1UIPROC = extern "system" fn(GLint, GLuint);
10781
10782/// The prototype to the OpenGL function `Uniform2ui`
10783type PFNGLUNIFORM2UIPROC = extern "system" fn(GLint, GLuint, GLuint);
10784
10785/// The prototype to the OpenGL function `Uniform3ui`
10786type PFNGLUNIFORM3UIPROC = extern "system" fn(GLint, GLuint, GLuint, GLuint);
10787
10788/// The prototype to the OpenGL function `Uniform4ui`
10789type PFNGLUNIFORM4UIPROC = extern "system" fn(GLint, GLuint, GLuint, GLuint, GLuint);
10790
10791/// The prototype to the OpenGL function `Uniform1uiv`
10792type PFNGLUNIFORM1UIVPROC = extern "system" fn(GLint, GLsizei, *const GLuint);
10793
10794/// The prototype to the OpenGL function `Uniform2uiv`
10795type PFNGLUNIFORM2UIVPROC = extern "system" fn(GLint, GLsizei, *const GLuint);
10796
10797/// The prototype to the OpenGL function `Uniform3uiv`
10798type PFNGLUNIFORM3UIVPROC = extern "system" fn(GLint, GLsizei, *const GLuint);
10799
10800/// The prototype to the OpenGL function `Uniform4uiv`
10801type PFNGLUNIFORM4UIVPROC = extern "system" fn(GLint, GLsizei, *const GLuint);
10802
10803/// The prototype to the OpenGL function `TexParameterIiv`
10804type PFNGLTEXPARAMETERIIVPROC = extern "system" fn(GLenum, GLenum, *const GLint);
10805
10806/// The prototype to the OpenGL function `TexParameterIuiv`
10807type PFNGLTEXPARAMETERIUIVPROC = extern "system" fn(GLenum, GLenum, *const GLuint);
10808
10809/// The prototype to the OpenGL function `GetTexParameterIiv`
10810type PFNGLGETTEXPARAMETERIIVPROC = extern "system" fn(GLenum, GLenum, *mut GLint);
10811
10812/// The prototype to the OpenGL function `GetTexParameterIuiv`
10813type PFNGLGETTEXPARAMETERIUIVPROC = extern "system" fn(GLenum, GLenum, *mut GLuint);
10814
10815/// The prototype to the OpenGL function `ClearBufferiv`
10816type PFNGLCLEARBUFFERIVPROC = extern "system" fn(GLenum, GLint, *const GLint);
10817
10818/// The prototype to the OpenGL function `ClearBufferuiv`
10819type PFNGLCLEARBUFFERUIVPROC = extern "system" fn(GLenum, GLint, *const GLuint);
10820
10821/// The prototype to the OpenGL function `ClearBufferfv`
10822type PFNGLCLEARBUFFERFVPROC = extern "system" fn(GLenum, GLint, *const GLfloat);
10823
10824/// The prototype to the OpenGL function `ClearBufferfi`
10825type PFNGLCLEARBUFFERFIPROC = extern "system" fn(GLenum, GLint, GLfloat, GLint);
10826
10827/// The prototype to the OpenGL function `GetStringi`
10828type PFNGLGETSTRINGIPROC = extern "system" fn(GLenum, GLuint) -> *const GLubyte;
10829
10830/// The prototype to the OpenGL function `IsRenderbuffer`
10831type PFNGLISRENDERBUFFERPROC = extern "system" fn(GLuint) -> GLboolean;
10832
10833/// The prototype to the OpenGL function `BindRenderbuffer`
10834type PFNGLBINDRENDERBUFFERPROC = extern "system" fn(GLenum, GLuint);
10835
10836/// The prototype to the OpenGL function `DeleteRenderbuffers`
10837type PFNGLDELETERENDERBUFFERSPROC = extern "system" fn(GLsizei, *const GLuint);
10838
10839/// The prototype to the OpenGL function `GenRenderbuffers`
10840type PFNGLGENRENDERBUFFERSPROC = extern "system" fn(GLsizei, *mut GLuint);
10841
10842/// The prototype to the OpenGL function `RenderbufferStorage`
10843type PFNGLRENDERBUFFERSTORAGEPROC = extern "system" fn(GLenum, GLenum, GLsizei, GLsizei);
10844
10845/// The prototype to the OpenGL function `GetRenderbufferParameteriv`
10846type PFNGLGETRENDERBUFFERPARAMETERIVPROC = extern "system" fn(GLenum, GLenum, *mut GLint);
10847
10848/// The prototype to the OpenGL function `IsFramebuffer`
10849type PFNGLISFRAMEBUFFERPROC = extern "system" fn(GLuint) -> GLboolean;
10850
10851/// The prototype to the OpenGL function `BindFramebuffer`
10852type PFNGLBINDFRAMEBUFFERPROC = extern "system" fn(GLenum, GLuint);
10853
10854/// The prototype to the OpenGL function `DeleteFramebuffers`
10855type PFNGLDELETEFRAMEBUFFERSPROC = extern "system" fn(GLsizei, *const GLuint);
10856
10857/// The prototype to the OpenGL function `GenFramebuffers`
10858type PFNGLGENFRAMEBUFFERSPROC = extern "system" fn(GLsizei, *mut GLuint);
10859
10860/// The prototype to the OpenGL function `CheckFramebufferStatus`
10861type PFNGLCHECKFRAMEBUFFERSTATUSPROC = extern "system" fn(GLenum) -> GLenum;
10862
10863/// The prototype to the OpenGL function `FramebufferTexture1D`
10864type PFNGLFRAMEBUFFERTEXTURE1DPROC = extern "system" fn(GLenum, GLenum, GLenum, GLuint, GLint);
10865
10866/// The prototype to the OpenGL function `FramebufferTexture2D`
10867type PFNGLFRAMEBUFFERTEXTURE2DPROC = extern "system" fn(GLenum, GLenum, GLenum, GLuint, GLint);
10868
10869/// The prototype to the OpenGL function `FramebufferTexture3D`
10870type PFNGLFRAMEBUFFERTEXTURE3DPROC = extern "system" fn(GLenum, GLenum, GLenum, GLuint, GLint, GLint);
10871
10872/// The prototype to the OpenGL function `FramebufferRenderbuffer`
10873type PFNGLFRAMEBUFFERRENDERBUFFERPROC = extern "system" fn(GLenum, GLenum, GLenum, GLuint);
10874
10875/// The prototype to the OpenGL function `GetFramebufferAttachmentParameteriv`
10876type PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC = extern "system" fn(GLenum, GLenum, GLenum, *mut GLint);
10877
10878/// The prototype to the OpenGL function `GenerateMipmap`
10879type PFNGLGENERATEMIPMAPPROC = extern "system" fn(GLenum);
10880
10881/// The prototype to the OpenGL function `BlitFramebuffer`
10882type PFNGLBLITFRAMEBUFFERPROC = extern "system" fn(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum);
10883
10884/// The prototype to the OpenGL function `RenderbufferStorageMultisample`
10885type PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC = extern "system" fn(GLenum, GLsizei, GLenum, GLsizei, GLsizei);
10886
10887/// The prototype to the OpenGL function `FramebufferTextureLayer`
10888type PFNGLFRAMEBUFFERTEXTURELAYERPROC = extern "system" fn(GLenum, GLenum, GLuint, GLint, GLint);
10889
10890/// The prototype to the OpenGL function `MapBufferRange`
10891type PFNGLMAPBUFFERRANGEPROC = extern "system" fn(GLenum, GLintptr, GLsizeiptr, GLbitfield) -> *mut c_void;
10892
10893/// The prototype to the OpenGL function `FlushMappedBufferRange`
10894type PFNGLFLUSHMAPPEDBUFFERRANGEPROC = extern "system" fn(GLenum, GLintptr, GLsizeiptr);
10895
10896/// The prototype to the OpenGL function `BindVertexArray`
10897type PFNGLBINDVERTEXARRAYPROC = extern "system" fn(GLuint);
10898
10899/// The prototype to the OpenGL function `DeleteVertexArrays`
10900type PFNGLDELETEVERTEXARRAYSPROC = extern "system" fn(GLsizei, *const GLuint);
10901
10902/// The prototype to the OpenGL function `GenVertexArrays`
10903type PFNGLGENVERTEXARRAYSPROC = extern "system" fn(GLsizei, *mut GLuint);
10904
10905/// The prototype to the OpenGL function `IsVertexArray`
10906type PFNGLISVERTEXARRAYPROC = extern "system" fn(GLuint) -> GLboolean;
10907
10908/// The dummy function of `ColorMaski()`
10909extern "system" fn dummy_pfnglcolormaskiproc (_: GLuint, _: GLboolean, _: GLboolean, _: GLboolean, _: GLboolean) {
10910	panic!("OpenGL function pointer `glColorMaski()` is null.")
10911}
10912
10913/// The dummy function of `GetBooleani_v()`
10914extern "system" fn dummy_pfnglgetbooleani_vproc (_: GLenum, _: GLuint, _: *mut GLboolean) {
10915	panic!("OpenGL function pointer `glGetBooleani_v()` is null.")
10916}
10917
10918/// The dummy function of `GetIntegeri_v()`
10919extern "system" fn dummy_pfnglgetintegeri_vproc (_: GLenum, _: GLuint, _: *mut GLint) {
10920	panic!("OpenGL function pointer `glGetIntegeri_v()` is null.")
10921}
10922
10923/// The dummy function of `Enablei()`
10924extern "system" fn dummy_pfnglenableiproc (_: GLenum, _: GLuint) {
10925	panic!("OpenGL function pointer `glEnablei()` is null.")
10926}
10927
10928/// The dummy function of `Disablei()`
10929extern "system" fn dummy_pfngldisableiproc (_: GLenum, _: GLuint) {
10930	panic!("OpenGL function pointer `glDisablei()` is null.")
10931}
10932
10933/// The dummy function of `IsEnabledi()`
10934extern "system" fn dummy_pfnglisenablediproc (_: GLenum, _: GLuint) -> GLboolean {
10935	panic!("OpenGL function pointer `glIsEnabledi()` is null.")
10936}
10937
10938/// The dummy function of `BeginTransformFeedback()`
10939extern "system" fn dummy_pfnglbegintransformfeedbackproc (_: GLenum) {
10940	panic!("OpenGL function pointer `glBeginTransformFeedback()` is null.")
10941}
10942
10943/// The dummy function of `EndTransformFeedback()`
10944extern "system" fn dummy_pfnglendtransformfeedbackproc () {
10945	panic!("OpenGL function pointer `glEndTransformFeedback()` is null.")
10946}
10947
10948/// The dummy function of `BindBufferRange()`
10949extern "system" fn dummy_pfnglbindbufferrangeproc (_: GLenum, _: GLuint, _: GLuint, _: GLintptr, _: GLsizeiptr) {
10950	panic!("OpenGL function pointer `glBindBufferRange()` is null.")
10951}
10952
10953/// The dummy function of `BindBufferBase()`
10954extern "system" fn dummy_pfnglbindbufferbaseproc (_: GLenum, _: GLuint, _: GLuint) {
10955	panic!("OpenGL function pointer `glBindBufferBase()` is null.")
10956}
10957
10958/// The dummy function of `TransformFeedbackVaryings()`
10959extern "system" fn dummy_pfngltransformfeedbackvaryingsproc (_: GLuint, _: GLsizei, _: *const *const GLchar, _: GLenum) {
10960	panic!("OpenGL function pointer `glTransformFeedbackVaryings()` is null.")
10961}
10962
10963/// The dummy function of `GetTransformFeedbackVarying()`
10964extern "system" fn dummy_pfnglgettransformfeedbackvaryingproc (_: GLuint, _: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLsizei, _: *mut GLenum, _: *mut GLchar) {
10965	panic!("OpenGL function pointer `glGetTransformFeedbackVarying()` is null.")
10966}
10967
10968/// The dummy function of `ClampColor()`
10969extern "system" fn dummy_pfnglclampcolorproc (_: GLenum, _: GLenum) {
10970	panic!("OpenGL function pointer `glClampColor()` is null.")
10971}
10972
10973/// The dummy function of `BeginConditionalRender()`
10974extern "system" fn dummy_pfnglbeginconditionalrenderproc (_: GLuint, _: GLenum) {
10975	panic!("OpenGL function pointer `glBeginConditionalRender()` is null.")
10976}
10977
10978/// The dummy function of `EndConditionalRender()`
10979extern "system" fn dummy_pfnglendconditionalrenderproc () {
10980	panic!("OpenGL function pointer `glEndConditionalRender()` is null.")
10981}
10982
10983/// The dummy function of `VertexAttribIPointer()`
10984extern "system" fn dummy_pfnglvertexattribipointerproc (_: GLuint, _: GLint, _: GLenum, _: GLsizei, _: *const c_void) {
10985	panic!("OpenGL function pointer `glVertexAttribIPointer()` is null.")
10986}
10987
10988/// The dummy function of `GetVertexAttribIiv()`
10989extern "system" fn dummy_pfnglgetvertexattribiivproc (_: GLuint, _: GLenum, _: *mut GLint) {
10990	panic!("OpenGL function pointer `glGetVertexAttribIiv()` is null.")
10991}
10992
10993/// The dummy function of `GetVertexAttribIuiv()`
10994extern "system" fn dummy_pfnglgetvertexattribiuivproc (_: GLuint, _: GLenum, _: *mut GLuint) {
10995	panic!("OpenGL function pointer `glGetVertexAttribIuiv()` is null.")
10996}
10997
10998/// The dummy function of `VertexAttribI1i()`
10999extern "system" fn dummy_pfnglvertexattribi1iproc (_: GLuint, _: GLint) {
11000	panic!("OpenGL function pointer `glVertexAttribI1i()` is null.")
11001}
11002
11003/// The dummy function of `VertexAttribI2i()`
11004extern "system" fn dummy_pfnglvertexattribi2iproc (_: GLuint, _: GLint, _: GLint) {
11005	panic!("OpenGL function pointer `glVertexAttribI2i()` is null.")
11006}
11007
11008/// The dummy function of `VertexAttribI3i()`
11009extern "system" fn dummy_pfnglvertexattribi3iproc (_: GLuint, _: GLint, _: GLint, _: GLint) {
11010	panic!("OpenGL function pointer `glVertexAttribI3i()` is null.")
11011}
11012
11013/// The dummy function of `VertexAttribI4i()`
11014extern "system" fn dummy_pfnglvertexattribi4iproc (_: GLuint, _: GLint, _: GLint, _: GLint, _: GLint) {
11015	panic!("OpenGL function pointer `glVertexAttribI4i()` is null.")
11016}
11017
11018/// The dummy function of `VertexAttribI1ui()`
11019extern "system" fn dummy_pfnglvertexattribi1uiproc (_: GLuint, _: GLuint) {
11020	panic!("OpenGL function pointer `glVertexAttribI1ui()` is null.")
11021}
11022
11023/// The dummy function of `VertexAttribI2ui()`
11024extern "system" fn dummy_pfnglvertexattribi2uiproc (_: GLuint, _: GLuint, _: GLuint) {
11025	panic!("OpenGL function pointer `glVertexAttribI2ui()` is null.")
11026}
11027
11028/// The dummy function of `VertexAttribI3ui()`
11029extern "system" fn dummy_pfnglvertexattribi3uiproc (_: GLuint, _: GLuint, _: GLuint, _: GLuint) {
11030	panic!("OpenGL function pointer `glVertexAttribI3ui()` is null.")
11031}
11032
11033/// The dummy function of `VertexAttribI4ui()`
11034extern "system" fn dummy_pfnglvertexattribi4uiproc (_: GLuint, _: GLuint, _: GLuint, _: GLuint, _: GLuint) {
11035	panic!("OpenGL function pointer `glVertexAttribI4ui()` is null.")
11036}
11037
11038/// The dummy function of `VertexAttribI1iv()`
11039extern "system" fn dummy_pfnglvertexattribi1ivproc (_: GLuint, _: *const GLint) {
11040	panic!("OpenGL function pointer `glVertexAttribI1iv()` is null.")
11041}
11042
11043/// The dummy function of `VertexAttribI2iv()`
11044extern "system" fn dummy_pfnglvertexattribi2ivproc (_: GLuint, _: *const GLint) {
11045	panic!("OpenGL function pointer `glVertexAttribI2iv()` is null.")
11046}
11047
11048/// The dummy function of `VertexAttribI3iv()`
11049extern "system" fn dummy_pfnglvertexattribi3ivproc (_: GLuint, _: *const GLint) {
11050	panic!("OpenGL function pointer `glVertexAttribI3iv()` is null.")
11051}
11052
11053/// The dummy function of `VertexAttribI4iv()`
11054extern "system" fn dummy_pfnglvertexattribi4ivproc (_: GLuint, _: *const GLint) {
11055	panic!("OpenGL function pointer `glVertexAttribI4iv()` is null.")
11056}
11057
11058/// The dummy function of `VertexAttribI1uiv()`
11059extern "system" fn dummy_pfnglvertexattribi1uivproc (_: GLuint, _: *const GLuint) {
11060	panic!("OpenGL function pointer `glVertexAttribI1uiv()` is null.")
11061}
11062
11063/// The dummy function of `VertexAttribI2uiv()`
11064extern "system" fn dummy_pfnglvertexattribi2uivproc (_: GLuint, _: *const GLuint) {
11065	panic!("OpenGL function pointer `glVertexAttribI2uiv()` is null.")
11066}
11067
11068/// The dummy function of `VertexAttribI3uiv()`
11069extern "system" fn dummy_pfnglvertexattribi3uivproc (_: GLuint, _: *const GLuint) {
11070	panic!("OpenGL function pointer `glVertexAttribI3uiv()` is null.")
11071}
11072
11073/// The dummy function of `VertexAttribI4uiv()`
11074extern "system" fn dummy_pfnglvertexattribi4uivproc (_: GLuint, _: *const GLuint) {
11075	panic!("OpenGL function pointer `glVertexAttribI4uiv()` is null.")
11076}
11077
11078/// The dummy function of `VertexAttribI4bv()`
11079extern "system" fn dummy_pfnglvertexattribi4bvproc (_: GLuint, _: *const GLbyte) {
11080	panic!("OpenGL function pointer `glVertexAttribI4bv()` is null.")
11081}
11082
11083/// The dummy function of `VertexAttribI4sv()`
11084extern "system" fn dummy_pfnglvertexattribi4svproc (_: GLuint, _: *const GLshort) {
11085	panic!("OpenGL function pointer `glVertexAttribI4sv()` is null.")
11086}
11087
11088/// The dummy function of `VertexAttribI4ubv()`
11089extern "system" fn dummy_pfnglvertexattribi4ubvproc (_: GLuint, _: *const GLubyte) {
11090	panic!("OpenGL function pointer `glVertexAttribI4ubv()` is null.")
11091}
11092
11093/// The dummy function of `VertexAttribI4usv()`
11094extern "system" fn dummy_pfnglvertexattribi4usvproc (_: GLuint, _: *const GLushort) {
11095	panic!("OpenGL function pointer `glVertexAttribI4usv()` is null.")
11096}
11097
11098/// The dummy function of `GetUniformuiv()`
11099extern "system" fn dummy_pfnglgetuniformuivproc (_: GLuint, _: GLint, _: *mut GLuint) {
11100	panic!("OpenGL function pointer `glGetUniformuiv()` is null.")
11101}
11102
11103/// The dummy function of `BindFragDataLocation()`
11104extern "system" fn dummy_pfnglbindfragdatalocationproc (_: GLuint, _: GLuint, _: *const GLchar) {
11105	panic!("OpenGL function pointer `glBindFragDataLocation()` is null.")
11106}
11107
11108/// The dummy function of `GetFragDataLocation()`
11109extern "system" fn dummy_pfnglgetfragdatalocationproc (_: GLuint, _: *const GLchar) -> GLint {
11110	panic!("OpenGL function pointer `glGetFragDataLocation()` is null.")
11111}
11112
11113/// The dummy function of `Uniform1ui()`
11114extern "system" fn dummy_pfngluniform1uiproc (_: GLint, _: GLuint) {
11115	panic!("OpenGL function pointer `glUniform1ui()` is null.")
11116}
11117
11118/// The dummy function of `Uniform2ui()`
11119extern "system" fn dummy_pfngluniform2uiproc (_: GLint, _: GLuint, _: GLuint) {
11120	panic!("OpenGL function pointer `glUniform2ui()` is null.")
11121}
11122
11123/// The dummy function of `Uniform3ui()`
11124extern "system" fn dummy_pfngluniform3uiproc (_: GLint, _: GLuint, _: GLuint, _: GLuint) {
11125	panic!("OpenGL function pointer `glUniform3ui()` is null.")
11126}
11127
11128/// The dummy function of `Uniform4ui()`
11129extern "system" fn dummy_pfngluniform4uiproc (_: GLint, _: GLuint, _: GLuint, _: GLuint, _: GLuint) {
11130	panic!("OpenGL function pointer `glUniform4ui()` is null.")
11131}
11132
11133/// The dummy function of `Uniform1uiv()`
11134extern "system" fn dummy_pfngluniform1uivproc (_: GLint, _: GLsizei, _: *const GLuint) {
11135	panic!("OpenGL function pointer `glUniform1uiv()` is null.")
11136}
11137
11138/// The dummy function of `Uniform2uiv()`
11139extern "system" fn dummy_pfngluniform2uivproc (_: GLint, _: GLsizei, _: *const GLuint) {
11140	panic!("OpenGL function pointer `glUniform2uiv()` is null.")
11141}
11142
11143/// The dummy function of `Uniform3uiv()`
11144extern "system" fn dummy_pfngluniform3uivproc (_: GLint, _: GLsizei, _: *const GLuint) {
11145	panic!("OpenGL function pointer `glUniform3uiv()` is null.")
11146}
11147
11148/// The dummy function of `Uniform4uiv()`
11149extern "system" fn dummy_pfngluniform4uivproc (_: GLint, _: GLsizei, _: *const GLuint) {
11150	panic!("OpenGL function pointer `glUniform4uiv()` is null.")
11151}
11152
11153/// The dummy function of `TexParameterIiv()`
11154extern "system" fn dummy_pfngltexparameteriivproc (_: GLenum, _: GLenum, _: *const GLint) {
11155	panic!("OpenGL function pointer `glTexParameterIiv()` is null.")
11156}
11157
11158/// The dummy function of `TexParameterIuiv()`
11159extern "system" fn dummy_pfngltexparameteriuivproc (_: GLenum, _: GLenum, _: *const GLuint) {
11160	panic!("OpenGL function pointer `glTexParameterIuiv()` is null.")
11161}
11162
11163/// The dummy function of `GetTexParameterIiv()`
11164extern "system" fn dummy_pfnglgettexparameteriivproc (_: GLenum, _: GLenum, _: *mut GLint) {
11165	panic!("OpenGL function pointer `glGetTexParameterIiv()` is null.")
11166}
11167
11168/// The dummy function of `GetTexParameterIuiv()`
11169extern "system" fn dummy_pfnglgettexparameteriuivproc (_: GLenum, _: GLenum, _: *mut GLuint) {
11170	panic!("OpenGL function pointer `glGetTexParameterIuiv()` is null.")
11171}
11172
11173/// The dummy function of `ClearBufferiv()`
11174extern "system" fn dummy_pfnglclearbufferivproc (_: GLenum, _: GLint, _: *const GLint) {
11175	panic!("OpenGL function pointer `glClearBufferiv()` is null.")
11176}
11177
11178/// The dummy function of `ClearBufferuiv()`
11179extern "system" fn dummy_pfnglclearbufferuivproc (_: GLenum, _: GLint, _: *const GLuint) {
11180	panic!("OpenGL function pointer `glClearBufferuiv()` is null.")
11181}
11182
11183/// The dummy function of `ClearBufferfv()`
11184extern "system" fn dummy_pfnglclearbufferfvproc (_: GLenum, _: GLint, _: *const GLfloat) {
11185	panic!("OpenGL function pointer `glClearBufferfv()` is null.")
11186}
11187
11188/// The dummy function of `ClearBufferfi()`
11189extern "system" fn dummy_pfnglclearbufferfiproc (_: GLenum, _: GLint, _: GLfloat, _: GLint) {
11190	panic!("OpenGL function pointer `glClearBufferfi()` is null.")
11191}
11192
11193/// The dummy function of `GetStringi()`
11194extern "system" fn dummy_pfnglgetstringiproc (_: GLenum, _: GLuint) -> *const GLubyte {
11195	panic!("OpenGL function pointer `glGetStringi()` is null.")
11196}
11197
11198/// The dummy function of `IsRenderbuffer()`
11199extern "system" fn dummy_pfnglisrenderbufferproc (_: GLuint) -> GLboolean {
11200	panic!("OpenGL function pointer `glIsRenderbuffer()` is null.")
11201}
11202
11203/// The dummy function of `BindRenderbuffer()`
11204extern "system" fn dummy_pfnglbindrenderbufferproc (_: GLenum, _: GLuint) {
11205	panic!("OpenGL function pointer `glBindRenderbuffer()` is null.")
11206}
11207
11208/// The dummy function of `DeleteRenderbuffers()`
11209extern "system" fn dummy_pfngldeleterenderbuffersproc (_: GLsizei, _: *const GLuint) {
11210	panic!("OpenGL function pointer `glDeleteRenderbuffers()` is null.")
11211}
11212
11213/// The dummy function of `GenRenderbuffers()`
11214extern "system" fn dummy_pfnglgenrenderbuffersproc (_: GLsizei, _: *mut GLuint) {
11215	panic!("OpenGL function pointer `glGenRenderbuffers()` is null.")
11216}
11217
11218/// The dummy function of `RenderbufferStorage()`
11219extern "system" fn dummy_pfnglrenderbufferstorageproc (_: GLenum, _: GLenum, _: GLsizei, _: GLsizei) {
11220	panic!("OpenGL function pointer `glRenderbufferStorage()` is null.")
11221}
11222
11223/// The dummy function of `GetRenderbufferParameteriv()`
11224extern "system" fn dummy_pfnglgetrenderbufferparameterivproc (_: GLenum, _: GLenum, _: *mut GLint) {
11225	panic!("OpenGL function pointer `glGetRenderbufferParameteriv()` is null.")
11226}
11227
11228/// The dummy function of `IsFramebuffer()`
11229extern "system" fn dummy_pfnglisframebufferproc (_: GLuint) -> GLboolean {
11230	panic!("OpenGL function pointer `glIsFramebuffer()` is null.")
11231}
11232
11233/// The dummy function of `BindFramebuffer()`
11234extern "system" fn dummy_pfnglbindframebufferproc (_: GLenum, _: GLuint) {
11235	panic!("OpenGL function pointer `glBindFramebuffer()` is null.")
11236}
11237
11238/// The dummy function of `DeleteFramebuffers()`
11239extern "system" fn dummy_pfngldeleteframebuffersproc (_: GLsizei, _: *const GLuint) {
11240	panic!("OpenGL function pointer `glDeleteFramebuffers()` is null.")
11241}
11242
11243/// The dummy function of `GenFramebuffers()`
11244extern "system" fn dummy_pfnglgenframebuffersproc (_: GLsizei, _: *mut GLuint) {
11245	panic!("OpenGL function pointer `glGenFramebuffers()` is null.")
11246}
11247
11248/// The dummy function of `CheckFramebufferStatus()`
11249extern "system" fn dummy_pfnglcheckframebufferstatusproc (_: GLenum) -> GLenum {
11250	panic!("OpenGL function pointer `glCheckFramebufferStatus()` is null.")
11251}
11252
11253/// The dummy function of `FramebufferTexture1D()`
11254extern "system" fn dummy_pfnglframebuffertexture1dproc (_: GLenum, _: GLenum, _: GLenum, _: GLuint, _: GLint) {
11255	panic!("OpenGL function pointer `glFramebufferTexture1D()` is null.")
11256}
11257
11258/// The dummy function of `FramebufferTexture2D()`
11259extern "system" fn dummy_pfnglframebuffertexture2dproc (_: GLenum, _: GLenum, _: GLenum, _: GLuint, _: GLint) {
11260	panic!("OpenGL function pointer `glFramebufferTexture2D()` is null.")
11261}
11262
11263/// The dummy function of `FramebufferTexture3D()`
11264extern "system" fn dummy_pfnglframebuffertexture3dproc (_: GLenum, _: GLenum, _: GLenum, _: GLuint, _: GLint, _: GLint) {
11265	panic!("OpenGL function pointer `glFramebufferTexture3D()` is null.")
11266}
11267
11268/// The dummy function of `FramebufferRenderbuffer()`
11269extern "system" fn dummy_pfnglframebufferrenderbufferproc (_: GLenum, _: GLenum, _: GLenum, _: GLuint) {
11270	panic!("OpenGL function pointer `glFramebufferRenderbuffer()` is null.")
11271}
11272
11273/// The dummy function of `GetFramebufferAttachmentParameteriv()`
11274extern "system" fn dummy_pfnglgetframebufferattachmentparameterivproc (_: GLenum, _: GLenum, _: GLenum, _: *mut GLint) {
11275	panic!("OpenGL function pointer `glGetFramebufferAttachmentParameteriv()` is null.")
11276}
11277
11278/// The dummy function of `GenerateMipmap()`
11279extern "system" fn dummy_pfnglgeneratemipmapproc (_: GLenum) {
11280	panic!("OpenGL function pointer `glGenerateMipmap()` is null.")
11281}
11282
11283/// The dummy function of `BlitFramebuffer()`
11284extern "system" fn dummy_pfnglblitframebufferproc (_: GLint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLbitfield, _: GLenum) {
11285	panic!("OpenGL function pointer `glBlitFramebuffer()` is null.")
11286}
11287
11288/// The dummy function of `RenderbufferStorageMultisample()`
11289extern "system" fn dummy_pfnglrenderbufferstoragemultisampleproc (_: GLenum, _: GLsizei, _: GLenum, _: GLsizei, _: GLsizei) {
11290	panic!("OpenGL function pointer `glRenderbufferStorageMultisample()` is null.")
11291}
11292
11293/// The dummy function of `FramebufferTextureLayer()`
11294extern "system" fn dummy_pfnglframebuffertexturelayerproc (_: GLenum, _: GLenum, _: GLuint, _: GLint, _: GLint) {
11295	panic!("OpenGL function pointer `glFramebufferTextureLayer()` is null.")
11296}
11297
11298/// The dummy function of `MapBufferRange()`
11299extern "system" fn dummy_pfnglmapbufferrangeproc (_: GLenum, _: GLintptr, _: GLsizeiptr, _: GLbitfield) -> *mut c_void {
11300	panic!("OpenGL function pointer `glMapBufferRange()` is null.")
11301}
11302
11303/// The dummy function of `FlushMappedBufferRange()`
11304extern "system" fn dummy_pfnglflushmappedbufferrangeproc (_: GLenum, _: GLintptr, _: GLsizeiptr) {
11305	panic!("OpenGL function pointer `glFlushMappedBufferRange()` is null.")
11306}
11307
11308/// The dummy function of `BindVertexArray()`
11309extern "system" fn dummy_pfnglbindvertexarrayproc (_: GLuint) {
11310	panic!("OpenGL function pointer `glBindVertexArray()` is null.")
11311}
11312
11313/// The dummy function of `DeleteVertexArrays()`
11314extern "system" fn dummy_pfngldeletevertexarraysproc (_: GLsizei, _: *const GLuint) {
11315	panic!("OpenGL function pointer `glDeleteVertexArrays()` is null.")
11316}
11317
11318/// The dummy function of `GenVertexArrays()`
11319extern "system" fn dummy_pfnglgenvertexarraysproc (_: GLsizei, _: *mut GLuint) {
11320	panic!("OpenGL function pointer `glGenVertexArrays()` is null.")
11321}
11322
11323/// The dummy function of `IsVertexArray()`
11324extern "system" fn dummy_pfnglisvertexarrayproc (_: GLuint) -> GLboolean {
11325	panic!("OpenGL function pointer `glIsVertexArray()` is null.")
11326}
11327/// Constant value defined from OpenGL 3.0
11328pub const GL_COMPARE_REF_TO_TEXTURE: GLenum = 0x884E;
11329
11330/// Constant value defined from OpenGL 3.0
11331pub const GL_CLIP_DISTANCE0: GLenum = 0x3000;
11332
11333/// Constant value defined from OpenGL 3.0
11334pub const GL_CLIP_DISTANCE1: GLenum = 0x3001;
11335
11336/// Constant value defined from OpenGL 3.0
11337pub const GL_CLIP_DISTANCE2: GLenum = 0x3002;
11338
11339/// Constant value defined from OpenGL 3.0
11340pub const GL_CLIP_DISTANCE3: GLenum = 0x3003;
11341
11342/// Constant value defined from OpenGL 3.0
11343pub const GL_CLIP_DISTANCE4: GLenum = 0x3004;
11344
11345/// Constant value defined from OpenGL 3.0
11346pub const GL_CLIP_DISTANCE5: GLenum = 0x3005;
11347
11348/// Constant value defined from OpenGL 3.0
11349pub const GL_CLIP_DISTANCE6: GLenum = 0x3006;
11350
11351/// Constant value defined from OpenGL 3.0
11352pub const GL_CLIP_DISTANCE7: GLenum = 0x3007;
11353
11354/// Constant value defined from OpenGL 3.0
11355pub const GL_MAX_CLIP_DISTANCES: GLenum = 0x0D32;
11356
11357/// Constant value defined from OpenGL 3.0
11358pub const GL_MAJOR_VERSION: GLenum = 0x821B;
11359
11360/// Constant value defined from OpenGL 3.0
11361pub const GL_MINOR_VERSION: GLenum = 0x821C;
11362
11363/// Constant value defined from OpenGL 3.0
11364pub const GL_NUM_EXTENSIONS: GLenum = 0x821D;
11365
11366/// Constant value defined from OpenGL 3.0
11367pub const GL_CONTEXT_FLAGS: GLenum = 0x821E;
11368
11369/// Constant value defined from OpenGL 3.0
11370pub const GL_COMPRESSED_RED: GLenum = 0x8225;
11371
11372/// Constant value defined from OpenGL 3.0
11373pub const GL_COMPRESSED_RG: GLenum = 0x8226;
11374
11375/// Constant value defined from OpenGL 3.0
11376pub const GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT: GLbitfield = 0x00000001;
11377
11378/// Constant value defined from OpenGL 3.0
11379pub const GL_RGBA32F: GLenum = 0x8814;
11380
11381/// Constant value defined from OpenGL 3.0
11382pub const GL_RGB32F: GLenum = 0x8815;
11383
11384/// Constant value defined from OpenGL 3.0
11385pub const GL_RGBA16F: GLenum = 0x881A;
11386
11387/// Constant value defined from OpenGL 3.0
11388pub const GL_RGB16F: GLenum = 0x881B;
11389
11390/// Constant value defined from OpenGL 3.0
11391pub const GL_VERTEX_ATTRIB_ARRAY_INTEGER: GLenum = 0x88FD;
11392
11393/// Constant value defined from OpenGL 3.0
11394pub const GL_MAX_ARRAY_TEXTURE_LAYERS: GLenum = 0x88FF;
11395
11396/// Constant value defined from OpenGL 3.0
11397pub const GL_MIN_PROGRAM_TEXEL_OFFSET: GLenum = 0x8904;
11398
11399/// Constant value defined from OpenGL 3.0
11400pub const GL_MAX_PROGRAM_TEXEL_OFFSET: GLenum = 0x8905;
11401
11402/// Constant value defined from OpenGL 3.0
11403pub const GL_CLAMP_READ_COLOR: GLenum = 0x891C;
11404
11405/// Constant value defined from OpenGL 3.0
11406pub const GL_FIXED_ONLY: GLenum = 0x891D;
11407
11408/// Constant value defined from OpenGL 3.0
11409pub const GL_MAX_VARYING_COMPONENTS: GLenum = 0x8B4B;
11410
11411/// Constant value defined from OpenGL 3.0
11412pub const GL_TEXTURE_1D_ARRAY: GLenum = 0x8C18;
11413
11414/// Constant value defined from OpenGL 3.0
11415pub const GL_PROXY_TEXTURE_1D_ARRAY: GLenum = 0x8C19;
11416
11417/// Constant value defined from OpenGL 3.0
11418pub const GL_TEXTURE_2D_ARRAY: GLenum = 0x8C1A;
11419
11420/// Constant value defined from OpenGL 3.0
11421pub const GL_PROXY_TEXTURE_2D_ARRAY: GLenum = 0x8C1B;
11422
11423/// Constant value defined from OpenGL 3.0
11424pub const GL_TEXTURE_BINDING_1D_ARRAY: GLenum = 0x8C1C;
11425
11426/// Constant value defined from OpenGL 3.0
11427pub const GL_TEXTURE_BINDING_2D_ARRAY: GLenum = 0x8C1D;
11428
11429/// Constant value defined from OpenGL 3.0
11430pub const GL_R11F_G11F_B10F: GLenum = 0x8C3A;
11431
11432/// Constant value defined from OpenGL 3.0
11433pub const GL_UNSIGNED_INT_10F_11F_11F_REV: GLenum = 0x8C3B;
11434
11435/// Constant value defined from OpenGL 3.0
11436pub const GL_RGB9_E5: GLenum = 0x8C3D;
11437
11438/// Constant value defined from OpenGL 3.0
11439pub const GL_UNSIGNED_INT_5_9_9_9_REV: GLenum = 0x8C3E;
11440
11441/// Constant value defined from OpenGL 3.0
11442pub const GL_TEXTURE_SHARED_SIZE: GLenum = 0x8C3F;
11443
11444/// Constant value defined from OpenGL 3.0
11445pub const GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH: GLenum = 0x8C76;
11446
11447/// Constant value defined from OpenGL 3.0
11448pub const GL_TRANSFORM_FEEDBACK_BUFFER_MODE: GLenum = 0x8C7F;
11449
11450/// Constant value defined from OpenGL 3.0
11451pub const GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: GLenum = 0x8C80;
11452
11453/// Constant value defined from OpenGL 3.0
11454pub const GL_TRANSFORM_FEEDBACK_VARYINGS: GLenum = 0x8C83;
11455
11456/// Constant value defined from OpenGL 3.0
11457pub const GL_TRANSFORM_FEEDBACK_BUFFER_START: GLenum = 0x8C84;
11458
11459/// Constant value defined from OpenGL 3.0
11460pub const GL_TRANSFORM_FEEDBACK_BUFFER_SIZE: GLenum = 0x8C85;
11461
11462/// Constant value defined from OpenGL 3.0
11463pub const GL_PRIMITIVES_GENERATED: GLenum = 0x8C87;
11464
11465/// Constant value defined from OpenGL 3.0
11466pub const GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: GLenum = 0x8C88;
11467
11468/// Constant value defined from OpenGL 3.0
11469pub const GL_RASTERIZER_DISCARD: GLenum = 0x8C89;
11470
11471/// Constant value defined from OpenGL 3.0
11472pub const GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: GLenum = 0x8C8A;
11473
11474/// Constant value defined from OpenGL 3.0
11475pub const GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: GLenum = 0x8C8B;
11476
11477/// Constant value defined from OpenGL 3.0
11478pub const GL_INTERLEAVED_ATTRIBS: GLenum = 0x8C8C;
11479
11480/// Constant value defined from OpenGL 3.0
11481pub const GL_SEPARATE_ATTRIBS: GLenum = 0x8C8D;
11482
11483/// Constant value defined from OpenGL 3.0
11484pub const GL_TRANSFORM_FEEDBACK_BUFFER: GLenum = 0x8C8E;
11485
11486/// Constant value defined from OpenGL 3.0
11487pub const GL_TRANSFORM_FEEDBACK_BUFFER_BINDING: GLenum = 0x8C8F;
11488
11489/// Constant value defined from OpenGL 3.0
11490pub const GL_RGBA32UI: GLenum = 0x8D70;
11491
11492/// Constant value defined from OpenGL 3.0
11493pub const GL_RGB32UI: GLenum = 0x8D71;
11494
11495/// Constant value defined from OpenGL 3.0
11496pub const GL_RGBA16UI: GLenum = 0x8D76;
11497
11498/// Constant value defined from OpenGL 3.0
11499pub const GL_RGB16UI: GLenum = 0x8D77;
11500
11501/// Constant value defined from OpenGL 3.0
11502pub const GL_RGBA8UI: GLenum = 0x8D7C;
11503
11504/// Constant value defined from OpenGL 3.0
11505pub const GL_RGB8UI: GLenum = 0x8D7D;
11506
11507/// Constant value defined from OpenGL 3.0
11508pub const GL_RGBA32I: GLenum = 0x8D82;
11509
11510/// Constant value defined from OpenGL 3.0
11511pub const GL_RGB32I: GLenum = 0x8D83;
11512
11513/// Constant value defined from OpenGL 3.0
11514pub const GL_RGBA16I: GLenum = 0x8D88;
11515
11516/// Constant value defined from OpenGL 3.0
11517pub const GL_RGB16I: GLenum = 0x8D89;
11518
11519/// Constant value defined from OpenGL 3.0
11520pub const GL_RGBA8I: GLenum = 0x8D8E;
11521
11522/// Constant value defined from OpenGL 3.0
11523pub const GL_RGB8I: GLenum = 0x8D8F;
11524
11525/// Constant value defined from OpenGL 3.0
11526pub const GL_RED_INTEGER: GLenum = 0x8D94;
11527
11528/// Constant value defined from OpenGL 3.0
11529pub const GL_GREEN_INTEGER: GLenum = 0x8D95;
11530
11531/// Constant value defined from OpenGL 3.0
11532pub const GL_BLUE_INTEGER: GLenum = 0x8D96;
11533
11534/// Constant value defined from OpenGL 3.0
11535pub const GL_RGB_INTEGER: GLenum = 0x8D98;
11536
11537/// Constant value defined from OpenGL 3.0
11538pub const GL_RGBA_INTEGER: GLenum = 0x8D99;
11539
11540/// Constant value defined from OpenGL 3.0
11541pub const GL_BGR_INTEGER: GLenum = 0x8D9A;
11542
11543/// Constant value defined from OpenGL 3.0
11544pub const GL_BGRA_INTEGER: GLenum = 0x8D9B;
11545
11546/// Constant value defined from OpenGL 3.0
11547pub const GL_SAMPLER_1D_ARRAY: GLenum = 0x8DC0;
11548
11549/// Constant value defined from OpenGL 3.0
11550pub const GL_SAMPLER_2D_ARRAY: GLenum = 0x8DC1;
11551
11552/// Constant value defined from OpenGL 3.0
11553pub const GL_SAMPLER_1D_ARRAY_SHADOW: GLenum = 0x8DC3;
11554
11555/// Constant value defined from OpenGL 3.0
11556pub const GL_SAMPLER_2D_ARRAY_SHADOW: GLenum = 0x8DC4;
11557
11558/// Constant value defined from OpenGL 3.0
11559pub const GL_SAMPLER_CUBE_SHADOW: GLenum = 0x8DC5;
11560
11561/// Constant value defined from OpenGL 3.0
11562pub const GL_UNSIGNED_INT_VEC2: GLenum = 0x8DC6;
11563
11564/// Constant value defined from OpenGL 3.0
11565pub const GL_UNSIGNED_INT_VEC3: GLenum = 0x8DC7;
11566
11567/// Constant value defined from OpenGL 3.0
11568pub const GL_UNSIGNED_INT_VEC4: GLenum = 0x8DC8;
11569
11570/// Constant value defined from OpenGL 3.0
11571pub const GL_INT_SAMPLER_1D: GLenum = 0x8DC9;
11572
11573/// Constant value defined from OpenGL 3.0
11574pub const GL_INT_SAMPLER_2D: GLenum = 0x8DCA;
11575
11576/// Constant value defined from OpenGL 3.0
11577pub const GL_INT_SAMPLER_3D: GLenum = 0x8DCB;
11578
11579/// Constant value defined from OpenGL 3.0
11580pub const GL_INT_SAMPLER_CUBE: GLenum = 0x8DCC;
11581
11582/// Constant value defined from OpenGL 3.0
11583pub const GL_INT_SAMPLER_1D_ARRAY: GLenum = 0x8DCE;
11584
11585/// Constant value defined from OpenGL 3.0
11586pub const GL_INT_SAMPLER_2D_ARRAY: GLenum = 0x8DCF;
11587
11588/// Constant value defined from OpenGL 3.0
11589pub const GL_UNSIGNED_INT_SAMPLER_1D: GLenum = 0x8DD1;
11590
11591/// Constant value defined from OpenGL 3.0
11592pub const GL_UNSIGNED_INT_SAMPLER_2D: GLenum = 0x8DD2;
11593
11594/// Constant value defined from OpenGL 3.0
11595pub const GL_UNSIGNED_INT_SAMPLER_3D: GLenum = 0x8DD3;
11596
11597/// Constant value defined from OpenGL 3.0
11598pub const GL_UNSIGNED_INT_SAMPLER_CUBE: GLenum = 0x8DD4;
11599
11600/// Constant value defined from OpenGL 3.0
11601pub const GL_UNSIGNED_INT_SAMPLER_1D_ARRAY: GLenum = 0x8DD6;
11602
11603/// Constant value defined from OpenGL 3.0
11604pub const GL_UNSIGNED_INT_SAMPLER_2D_ARRAY: GLenum = 0x8DD7;
11605
11606/// Constant value defined from OpenGL 3.0
11607pub const GL_QUERY_WAIT: GLenum = 0x8E13;
11608
11609/// Constant value defined from OpenGL 3.0
11610pub const GL_QUERY_NO_WAIT: GLenum = 0x8E14;
11611
11612/// Constant value defined from OpenGL 3.0
11613pub const GL_QUERY_BY_REGION_WAIT: GLenum = 0x8E15;
11614
11615/// Constant value defined from OpenGL 3.0
11616pub const GL_QUERY_BY_REGION_NO_WAIT: GLenum = 0x8E16;
11617
11618/// Constant value defined from OpenGL 3.0
11619pub const GL_BUFFER_ACCESS_FLAGS: GLenum = 0x911F;
11620
11621/// Constant value defined from OpenGL 3.0
11622pub const GL_BUFFER_MAP_LENGTH: GLenum = 0x9120;
11623
11624/// Constant value defined from OpenGL 3.0
11625pub const GL_BUFFER_MAP_OFFSET: GLenum = 0x9121;
11626
11627/// Constant value defined from OpenGL 3.0
11628pub const GL_DEPTH_COMPONENT32F: GLenum = 0x8CAC;
11629
11630/// Constant value defined from OpenGL 3.0
11631pub const GL_DEPTH32F_STENCIL8: GLenum = 0x8CAD;
11632
11633/// Constant value defined from OpenGL 3.0
11634pub const GL_FLOAT_32_UNSIGNED_INT_24_8_REV: GLenum = 0x8DAD;
11635
11636/// Constant value defined from OpenGL 3.0
11637pub const GL_INVALID_FRAMEBUFFER_OPERATION: GLenum = 0x0506;
11638
11639/// Constant value defined from OpenGL 3.0
11640pub const GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: GLenum = 0x8210;
11641
11642/// Constant value defined from OpenGL 3.0
11643pub const GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: GLenum = 0x8211;
11644
11645/// Constant value defined from OpenGL 3.0
11646pub const GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE: GLenum = 0x8212;
11647
11648/// Constant value defined from OpenGL 3.0
11649pub const GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: GLenum = 0x8213;
11650
11651/// Constant value defined from OpenGL 3.0
11652pub const GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: GLenum = 0x8214;
11653
11654/// Constant value defined from OpenGL 3.0
11655pub const GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: GLenum = 0x8215;
11656
11657/// Constant value defined from OpenGL 3.0
11658pub const GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: GLenum = 0x8216;
11659
11660/// Constant value defined from OpenGL 3.0
11661pub const GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: GLenum = 0x8217;
11662
11663/// Constant value defined from OpenGL 3.0
11664pub const GL_FRAMEBUFFER_DEFAULT: GLenum = 0x8218;
11665
11666/// Constant value defined from OpenGL 3.0
11667pub const GL_FRAMEBUFFER_UNDEFINED: GLenum = 0x8219;
11668
11669/// Constant value defined from OpenGL 3.0
11670pub const GL_DEPTH_STENCIL_ATTACHMENT: GLenum = 0x821A;
11671
11672/// Constant value defined from OpenGL 3.0
11673pub const GL_MAX_RENDERBUFFER_SIZE: GLenum = 0x84E8;
11674
11675/// Constant value defined from OpenGL 3.0
11676pub const GL_DEPTH_STENCIL: GLenum = 0x84F9;
11677
11678/// Constant value defined from OpenGL 3.0
11679pub const GL_UNSIGNED_INT_24_8: GLenum = 0x84FA;
11680
11681/// Constant value defined from OpenGL 3.0
11682pub const GL_DEPTH24_STENCIL8: GLenum = 0x88F0;
11683
11684/// Constant value defined from OpenGL 3.0
11685pub const GL_TEXTURE_STENCIL_SIZE: GLenum = 0x88F1;
11686
11687/// Constant value defined from OpenGL 3.0
11688pub const GL_TEXTURE_RED_TYPE: GLenum = 0x8C10;
11689
11690/// Constant value defined from OpenGL 3.0
11691pub const GL_TEXTURE_GREEN_TYPE: GLenum = 0x8C11;
11692
11693/// Constant value defined from OpenGL 3.0
11694pub const GL_TEXTURE_BLUE_TYPE: GLenum = 0x8C12;
11695
11696/// Constant value defined from OpenGL 3.0
11697pub const GL_TEXTURE_ALPHA_TYPE: GLenum = 0x8C13;
11698
11699/// Constant value defined from OpenGL 3.0
11700pub const GL_TEXTURE_DEPTH_TYPE: GLenum = 0x8C16;
11701
11702/// Constant value defined from OpenGL 3.0
11703pub const GL_UNSIGNED_NORMALIZED: GLenum = 0x8C17;
11704
11705/// Constant value defined from OpenGL 3.0
11706pub const GL_FRAMEBUFFER_BINDING: GLenum = 0x8CA6;
11707
11708/// Constant value defined from OpenGL 3.0
11709pub const GL_DRAW_FRAMEBUFFER_BINDING: GLenum = 0x8CA6;
11710
11711/// Constant value defined from OpenGL 3.0
11712pub const GL_RENDERBUFFER_BINDING: GLenum = 0x8CA7;
11713
11714/// Constant value defined from OpenGL 3.0
11715pub const GL_READ_FRAMEBUFFER: GLenum = 0x8CA8;
11716
11717/// Constant value defined from OpenGL 3.0
11718pub const GL_DRAW_FRAMEBUFFER: GLenum = 0x8CA9;
11719
11720/// Constant value defined from OpenGL 3.0
11721pub const GL_READ_FRAMEBUFFER_BINDING: GLenum = 0x8CAA;
11722
11723/// Constant value defined from OpenGL 3.0
11724pub const GL_RENDERBUFFER_SAMPLES: GLenum = 0x8CAB;
11725
11726/// Constant value defined from OpenGL 3.0
11727pub const GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: GLenum = 0x8CD0;
11728
11729/// Constant value defined from OpenGL 3.0
11730pub const GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: GLenum = 0x8CD1;
11731
11732/// Constant value defined from OpenGL 3.0
11733pub const GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: GLenum = 0x8CD2;
11734
11735/// Constant value defined from OpenGL 3.0
11736pub const GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: GLenum = 0x8CD3;
11737
11738/// Constant value defined from OpenGL 3.0
11739pub const GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: GLenum = 0x8CD4;
11740
11741/// Constant value defined from OpenGL 3.0
11742pub const GL_FRAMEBUFFER_COMPLETE: GLenum = 0x8CD5;
11743
11744/// Constant value defined from OpenGL 3.0
11745pub const GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: GLenum = 0x8CD6;
11746
11747/// Constant value defined from OpenGL 3.0
11748pub const GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: GLenum = 0x8CD7;
11749
11750/// Constant value defined from OpenGL 3.0
11751pub const GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER: GLenum = 0x8CDB;
11752
11753/// Constant value defined from OpenGL 3.0
11754pub const GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER: GLenum = 0x8CDC;
11755
11756/// Constant value defined from OpenGL 3.0
11757pub const GL_FRAMEBUFFER_UNSUPPORTED: GLenum = 0x8CDD;
11758
11759/// Constant value defined from OpenGL 3.0
11760pub const GL_MAX_COLOR_ATTACHMENTS: GLenum = 0x8CDF;
11761
11762/// Constant value defined from OpenGL 3.0
11763pub const GL_COLOR_ATTACHMENT0: GLenum = 0x8CE0;
11764
11765/// Constant value defined from OpenGL 3.0
11766pub const GL_COLOR_ATTACHMENT1: GLenum = 0x8CE1;
11767
11768/// Constant value defined from OpenGL 3.0
11769pub const GL_COLOR_ATTACHMENT2: GLenum = 0x8CE2;
11770
11771/// Constant value defined from OpenGL 3.0
11772pub const GL_COLOR_ATTACHMENT3: GLenum = 0x8CE3;
11773
11774/// Constant value defined from OpenGL 3.0
11775pub const GL_COLOR_ATTACHMENT4: GLenum = 0x8CE4;
11776
11777/// Constant value defined from OpenGL 3.0
11778pub const GL_COLOR_ATTACHMENT5: GLenum = 0x8CE5;
11779
11780/// Constant value defined from OpenGL 3.0
11781pub const GL_COLOR_ATTACHMENT6: GLenum = 0x8CE6;
11782
11783/// Constant value defined from OpenGL 3.0
11784pub const GL_COLOR_ATTACHMENT7: GLenum = 0x8CE7;
11785
11786/// Constant value defined from OpenGL 3.0
11787pub const GL_COLOR_ATTACHMENT8: GLenum = 0x8CE8;
11788
11789/// Constant value defined from OpenGL 3.0
11790pub const GL_COLOR_ATTACHMENT9: GLenum = 0x8CE9;
11791
11792/// Constant value defined from OpenGL 3.0
11793pub const GL_COLOR_ATTACHMENT10: GLenum = 0x8CEA;
11794
11795/// Constant value defined from OpenGL 3.0
11796pub const GL_COLOR_ATTACHMENT11: GLenum = 0x8CEB;
11797
11798/// Constant value defined from OpenGL 3.0
11799pub const GL_COLOR_ATTACHMENT12: GLenum = 0x8CEC;
11800
11801/// Constant value defined from OpenGL 3.0
11802pub const GL_COLOR_ATTACHMENT13: GLenum = 0x8CED;
11803
11804/// Constant value defined from OpenGL 3.0
11805pub const GL_COLOR_ATTACHMENT14: GLenum = 0x8CEE;
11806
11807/// Constant value defined from OpenGL 3.0
11808pub const GL_COLOR_ATTACHMENT15: GLenum = 0x8CEF;
11809
11810/// Constant value defined from OpenGL 3.0
11811pub const GL_COLOR_ATTACHMENT16: GLenum = 0x8CF0;
11812
11813/// Constant value defined from OpenGL 3.0
11814pub const GL_COLOR_ATTACHMENT17: GLenum = 0x8CF1;
11815
11816/// Constant value defined from OpenGL 3.0
11817pub const GL_COLOR_ATTACHMENT18: GLenum = 0x8CF2;
11818
11819/// Constant value defined from OpenGL 3.0
11820pub const GL_COLOR_ATTACHMENT19: GLenum = 0x8CF3;
11821
11822/// Constant value defined from OpenGL 3.0
11823pub const GL_COLOR_ATTACHMENT20: GLenum = 0x8CF4;
11824
11825/// Constant value defined from OpenGL 3.0
11826pub const GL_COLOR_ATTACHMENT21: GLenum = 0x8CF5;
11827
11828/// Constant value defined from OpenGL 3.0
11829pub const GL_COLOR_ATTACHMENT22: GLenum = 0x8CF6;
11830
11831/// Constant value defined from OpenGL 3.0
11832pub const GL_COLOR_ATTACHMENT23: GLenum = 0x8CF7;
11833
11834/// Constant value defined from OpenGL 3.0
11835pub const GL_COLOR_ATTACHMENT24: GLenum = 0x8CF8;
11836
11837/// Constant value defined from OpenGL 3.0
11838pub const GL_COLOR_ATTACHMENT25: GLenum = 0x8CF9;
11839
11840/// Constant value defined from OpenGL 3.0
11841pub const GL_COLOR_ATTACHMENT26: GLenum = 0x8CFA;
11842
11843/// Constant value defined from OpenGL 3.0
11844pub const GL_COLOR_ATTACHMENT27: GLenum = 0x8CFB;
11845
11846/// Constant value defined from OpenGL 3.0
11847pub const GL_COLOR_ATTACHMENT28: GLenum = 0x8CFC;
11848
11849/// Constant value defined from OpenGL 3.0
11850pub const GL_COLOR_ATTACHMENT29: GLenum = 0x8CFD;
11851
11852/// Constant value defined from OpenGL 3.0
11853pub const GL_COLOR_ATTACHMENT30: GLenum = 0x8CFE;
11854
11855/// Constant value defined from OpenGL 3.0
11856pub const GL_COLOR_ATTACHMENT31: GLenum = 0x8CFF;
11857
11858/// Constant value defined from OpenGL 3.0
11859pub const GL_DEPTH_ATTACHMENT: GLenum = 0x8D00;
11860
11861/// Constant value defined from OpenGL 3.0
11862pub const GL_STENCIL_ATTACHMENT: GLenum = 0x8D20;
11863
11864/// Constant value defined from OpenGL 3.0
11865pub const GL_FRAMEBUFFER: GLenum = 0x8D40;
11866
11867/// Constant value defined from OpenGL 3.0
11868pub const GL_RENDERBUFFER: GLenum = 0x8D41;
11869
11870/// Constant value defined from OpenGL 3.0
11871pub const GL_RENDERBUFFER_WIDTH: GLenum = 0x8D42;
11872
11873/// Constant value defined from OpenGL 3.0
11874pub const GL_RENDERBUFFER_HEIGHT: GLenum = 0x8D43;
11875
11876/// Constant value defined from OpenGL 3.0
11877pub const GL_RENDERBUFFER_INTERNAL_FORMAT: GLenum = 0x8D44;
11878
11879/// Constant value defined from OpenGL 3.0
11880pub const GL_STENCIL_INDEX1: GLenum = 0x8D46;
11881
11882/// Constant value defined from OpenGL 3.0
11883pub const GL_STENCIL_INDEX4: GLenum = 0x8D47;
11884
11885/// Constant value defined from OpenGL 3.0
11886pub const GL_STENCIL_INDEX8: GLenum = 0x8D48;
11887
11888/// Constant value defined from OpenGL 3.0
11889pub const GL_STENCIL_INDEX16: GLenum = 0x8D49;
11890
11891/// Constant value defined from OpenGL 3.0
11892pub const GL_RENDERBUFFER_RED_SIZE: GLenum = 0x8D50;
11893
11894/// Constant value defined from OpenGL 3.0
11895pub const GL_RENDERBUFFER_GREEN_SIZE: GLenum = 0x8D51;
11896
11897/// Constant value defined from OpenGL 3.0
11898pub const GL_RENDERBUFFER_BLUE_SIZE: GLenum = 0x8D52;
11899
11900/// Constant value defined from OpenGL 3.0
11901pub const GL_RENDERBUFFER_ALPHA_SIZE: GLenum = 0x8D53;
11902
11903/// Constant value defined from OpenGL 3.0
11904pub const GL_RENDERBUFFER_DEPTH_SIZE: GLenum = 0x8D54;
11905
11906/// Constant value defined from OpenGL 3.0
11907pub const GL_RENDERBUFFER_STENCIL_SIZE: GLenum = 0x8D55;
11908
11909/// Constant value defined from OpenGL 3.0
11910pub const GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: GLenum = 0x8D56;
11911
11912/// Constant value defined from OpenGL 3.0
11913pub const GL_MAX_SAMPLES: GLenum = 0x8D57;
11914
11915/// Constant value defined from OpenGL 3.0
11916pub const GL_INDEX: GLenum = 0x8222;
11917
11918/// Constant value defined from OpenGL 3.0
11919pub const GL_TEXTURE_LUMINANCE_TYPE: GLenum = 0x8C14;
11920
11921/// Constant value defined from OpenGL 3.0
11922pub const GL_TEXTURE_INTENSITY_TYPE: GLenum = 0x8C15;
11923
11924/// Constant value defined from OpenGL 3.0
11925pub const GL_FRAMEBUFFER_SRGB: GLenum = 0x8DB9;
11926
11927/// Constant value defined from OpenGL 3.0
11928pub const GL_HALF_FLOAT: GLenum = 0x140B;
11929
11930/// Constant value defined from OpenGL 3.0
11931pub const GL_MAP_READ_BIT: GLbitfield = 0x0001;
11932
11933/// Constant value defined from OpenGL 3.0
11934pub const GL_MAP_WRITE_BIT: GLbitfield = 0x0002;
11935
11936/// Constant value defined from OpenGL 3.0
11937pub const GL_MAP_INVALIDATE_RANGE_BIT: GLbitfield = 0x0004;
11938
11939/// Constant value defined from OpenGL 3.0
11940pub const GL_MAP_INVALIDATE_BUFFER_BIT: GLbitfield = 0x0008;
11941
11942/// Constant value defined from OpenGL 3.0
11943pub const GL_MAP_FLUSH_EXPLICIT_BIT: GLbitfield = 0x0010;
11944
11945/// Constant value defined from OpenGL 3.0
11946pub const GL_MAP_UNSYNCHRONIZED_BIT: GLbitfield = 0x0020;
11947
11948/// Constant value defined from OpenGL 3.0
11949pub const GL_COMPRESSED_RED_RGTC1: GLenum = 0x8DBB;
11950
11951/// Constant value defined from OpenGL 3.0
11952pub const GL_COMPRESSED_SIGNED_RED_RGTC1: GLenum = 0x8DBC;
11953
11954/// Constant value defined from OpenGL 3.0
11955pub const GL_COMPRESSED_RG_RGTC2: GLenum = 0x8DBD;
11956
11957/// Constant value defined from OpenGL 3.0
11958pub const GL_COMPRESSED_SIGNED_RG_RGTC2: GLenum = 0x8DBE;
11959
11960/// Constant value defined from OpenGL 3.0
11961pub const GL_RG: GLenum = 0x8227;
11962
11963/// Constant value defined from OpenGL 3.0
11964pub const GL_RG_INTEGER: GLenum = 0x8228;
11965
11966/// Constant value defined from OpenGL 3.0
11967pub const GL_R8: GLenum = 0x8229;
11968
11969/// Constant value defined from OpenGL 3.0
11970pub const GL_R16: GLenum = 0x822A;
11971
11972/// Constant value defined from OpenGL 3.0
11973pub const GL_RG8: GLenum = 0x822B;
11974
11975/// Constant value defined from OpenGL 3.0
11976pub const GL_RG16: GLenum = 0x822C;
11977
11978/// Constant value defined from OpenGL 3.0
11979pub const GL_R16F: GLenum = 0x822D;
11980
11981/// Constant value defined from OpenGL 3.0
11982pub const GL_R32F: GLenum = 0x822E;
11983
11984/// Constant value defined from OpenGL 3.0
11985pub const GL_RG16F: GLenum = 0x822F;
11986
11987/// Constant value defined from OpenGL 3.0
11988pub const GL_RG32F: GLenum = 0x8230;
11989
11990/// Constant value defined from OpenGL 3.0
11991pub const GL_R8I: GLenum = 0x8231;
11992
11993/// Constant value defined from OpenGL 3.0
11994pub const GL_R8UI: GLenum = 0x8232;
11995
11996/// Constant value defined from OpenGL 3.0
11997pub const GL_R16I: GLenum = 0x8233;
11998
11999/// Constant value defined from OpenGL 3.0
12000pub const GL_R16UI: GLenum = 0x8234;
12001
12002/// Constant value defined from OpenGL 3.0
12003pub const GL_R32I: GLenum = 0x8235;
12004
12005/// Constant value defined from OpenGL 3.0
12006pub const GL_R32UI: GLenum = 0x8236;
12007
12008/// Constant value defined from OpenGL 3.0
12009pub const GL_RG8I: GLenum = 0x8237;
12010
12011/// Constant value defined from OpenGL 3.0
12012pub const GL_RG8UI: GLenum = 0x8238;
12013
12014/// Constant value defined from OpenGL 3.0
12015pub const GL_RG16I: GLenum = 0x8239;
12016
12017/// Constant value defined from OpenGL 3.0
12018pub const GL_RG16UI: GLenum = 0x823A;
12019
12020/// Constant value defined from OpenGL 3.0
12021pub const GL_RG32I: GLenum = 0x823B;
12022
12023/// Constant value defined from OpenGL 3.0
12024pub const GL_RG32UI: GLenum = 0x823C;
12025
12026/// Constant value defined from OpenGL 3.0
12027pub const GL_VERTEX_ARRAY_BINDING: GLenum = 0x85B5;
12028
12029/// Constant value defined from OpenGL 3.0
12030pub const GL_CLAMP_VERTEX_COLOR: GLenum = 0x891A;
12031
12032/// Constant value defined from OpenGL 3.0
12033pub const GL_CLAMP_FRAGMENT_COLOR: GLenum = 0x891B;
12034
12035/// Constant value defined from OpenGL 3.0
12036pub const GL_ALPHA_INTEGER: GLenum = 0x8D97;
12037
12038/// Functions from OpenGL version 3.0
12039pub trait GL_3_0 {
12040	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
12041	fn glGetError(&self) -> GLenum;
12042
12043	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorMaski.xhtml>
12044	fn glColorMaski(&self, index: GLuint, r: GLboolean, g: GLboolean, b: GLboolean, a: GLboolean) -> Result<()>;
12045
12046	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBooleani_v.xhtml>
12047	fn glGetBooleani_v(&self, target: GLenum, index: GLuint, data: *mut GLboolean) -> Result<()>;
12048
12049	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetIntegeri_v.xhtml>
12050	fn glGetIntegeri_v(&self, target: GLenum, index: GLuint, data: *mut GLint) -> Result<()>;
12051
12052	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEnablei.xhtml>
12053	fn glEnablei(&self, target: GLenum, index: GLuint) -> Result<()>;
12054
12055	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDisablei.xhtml>
12056	fn glDisablei(&self, target: GLenum, index: GLuint) -> Result<()>;
12057
12058	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsEnabledi.xhtml>
12059	fn glIsEnabledi(&self, target: GLenum, index: GLuint) -> Result<GLboolean>;
12060
12061	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBeginTransformFeedback.xhtml>
12062	fn glBeginTransformFeedback(&self, primitiveMode: GLenum) -> Result<()>;
12063
12064	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEndTransformFeedback.xhtml>
12065	fn glEndTransformFeedback(&self) -> Result<()>;
12066
12067	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindBufferRange.xhtml>
12068	fn glBindBufferRange(&self, target: GLenum, index: GLuint, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()>;
12069
12070	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindBufferBase.xhtml>
12071	fn glBindBufferBase(&self, target: GLenum, index: GLuint, buffer: GLuint) -> Result<()>;
12072
12073	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTransformFeedbackVaryings.xhtml>
12074	fn glTransformFeedbackVaryings(&self, program: GLuint, count: GLsizei, varyings: *const *const GLchar, bufferMode: GLenum) -> Result<()>;
12075
12076	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTransformFeedbackVarying.xhtml>
12077	fn glGetTransformFeedbackVarying(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLsizei, type_: *mut GLenum, name: *mut GLchar) -> Result<()>;
12078
12079	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClampColor.xhtml>
12080	fn glClampColor(&self, target: GLenum, clamp: GLenum) -> Result<()>;
12081
12082	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBeginConditionalRender.xhtml>
12083	fn glBeginConditionalRender(&self, id: GLuint, mode: GLenum) -> Result<()>;
12084
12085	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEndConditionalRender.xhtml>
12086	fn glEndConditionalRender(&self) -> Result<()>;
12087
12088	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribIPointer.xhtml>
12089	fn glVertexAttribIPointer(&self, index: GLuint, size: GLint, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()>;
12090
12091	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribIiv.xhtml>
12092	fn glGetVertexAttribIiv(&self, index: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
12093
12094	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribIuiv.xhtml>
12095	fn glGetVertexAttribIuiv(&self, index: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()>;
12096
12097	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI1i.xhtml>
12098	fn glVertexAttribI1i(&self, index: GLuint, x: GLint) -> Result<()>;
12099
12100	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI2i.xhtml>
12101	fn glVertexAttribI2i(&self, index: GLuint, x: GLint, y: GLint) -> Result<()>;
12102
12103	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI3i.xhtml>
12104	fn glVertexAttribI3i(&self, index: GLuint, x: GLint, y: GLint, z: GLint) -> Result<()>;
12105
12106	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4i.xhtml>
12107	fn glVertexAttribI4i(&self, index: GLuint, x: GLint, y: GLint, z: GLint, w: GLint) -> Result<()>;
12108
12109	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI1ui.xhtml>
12110	fn glVertexAttribI1ui(&self, index: GLuint, x: GLuint) -> Result<()>;
12111
12112	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI2ui.xhtml>
12113	fn glVertexAttribI2ui(&self, index: GLuint, x: GLuint, y: GLuint) -> Result<()>;
12114
12115	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI3ui.xhtml>
12116	fn glVertexAttribI3ui(&self, index: GLuint, x: GLuint, y: GLuint, z: GLuint) -> Result<()>;
12117
12118	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4ui.xhtml>
12119	fn glVertexAttribI4ui(&self, index: GLuint, x: GLuint, y: GLuint, z: GLuint, w: GLuint) -> Result<()>;
12120
12121	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI1iv.xhtml>
12122	fn glVertexAttribI1iv(&self, index: GLuint, v: *const GLint) -> Result<()>;
12123
12124	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI2iv.xhtml>
12125	fn glVertexAttribI2iv(&self, index: GLuint, v: *const GLint) -> Result<()>;
12126
12127	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI3iv.xhtml>
12128	fn glVertexAttribI3iv(&self, index: GLuint, v: *const GLint) -> Result<()>;
12129
12130	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4iv.xhtml>
12131	fn glVertexAttribI4iv(&self, index: GLuint, v: *const GLint) -> Result<()>;
12132
12133	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI1uiv.xhtml>
12134	fn glVertexAttribI1uiv(&self, index: GLuint, v: *const GLuint) -> Result<()>;
12135
12136	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI2uiv.xhtml>
12137	fn glVertexAttribI2uiv(&self, index: GLuint, v: *const GLuint) -> Result<()>;
12138
12139	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI3uiv.xhtml>
12140	fn glVertexAttribI3uiv(&self, index: GLuint, v: *const GLuint) -> Result<()>;
12141
12142	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4uiv.xhtml>
12143	fn glVertexAttribI4uiv(&self, index: GLuint, v: *const GLuint) -> Result<()>;
12144
12145	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4bv.xhtml>
12146	fn glVertexAttribI4bv(&self, index: GLuint, v: *const GLbyte) -> Result<()>;
12147
12148	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4sv.xhtml>
12149	fn glVertexAttribI4sv(&self, index: GLuint, v: *const GLshort) -> Result<()>;
12150
12151	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4ubv.xhtml>
12152	fn glVertexAttribI4ubv(&self, index: GLuint, v: *const GLubyte) -> Result<()>;
12153
12154	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4usv.xhtml>
12155	fn glVertexAttribI4usv(&self, index: GLuint, v: *const GLushort) -> Result<()>;
12156
12157	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformuiv.xhtml>
12158	fn glGetUniformuiv(&self, program: GLuint, location: GLint, params: *mut GLuint) -> Result<()>;
12159
12160	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindFragDataLocation.xhtml>
12161	fn glBindFragDataLocation(&self, program: GLuint, color: GLuint, name: *const GLchar) -> Result<()>;
12162
12163	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFragDataLocation.xhtml>
12164	fn glGetFragDataLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint>;
12165
12166	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1ui.xhtml>
12167	fn glUniform1ui(&self, location: GLint, v0: GLuint) -> Result<()>;
12168
12169	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2ui.xhtml>
12170	fn glUniform2ui(&self, location: GLint, v0: GLuint, v1: GLuint) -> Result<()>;
12171
12172	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3ui.xhtml>
12173	fn glUniform3ui(&self, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint) -> Result<()>;
12174
12175	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4ui.xhtml>
12176	fn glUniform4ui(&self, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint, v3: GLuint) -> Result<()>;
12177
12178	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1uiv.xhtml>
12179	fn glUniform1uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
12180
12181	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2uiv.xhtml>
12182	fn glUniform2uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
12183
12184	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3uiv.xhtml>
12185	fn glUniform3uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
12186
12187	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4uiv.xhtml>
12188	fn glUniform4uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
12189
12190	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameterIiv.xhtml>
12191	fn glTexParameterIiv(&self, target: GLenum, pname: GLenum, params: *const GLint) -> Result<()>;
12192
12193	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameterIuiv.xhtml>
12194	fn glTexParameterIuiv(&self, target: GLenum, pname: GLenum, params: *const GLuint) -> Result<()>;
12195
12196	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexParameterIiv.xhtml>
12197	fn glGetTexParameterIiv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
12198
12199	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexParameterIuiv.xhtml>
12200	fn glGetTexParameterIuiv(&self, target: GLenum, pname: GLenum, params: *mut GLuint) -> Result<()>;
12201
12202	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferiv.xhtml>
12203	fn glClearBufferiv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLint) -> Result<()>;
12204
12205	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferuiv.xhtml>
12206	fn glClearBufferuiv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLuint) -> Result<()>;
12207
12208	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferfv.xhtml>
12209	fn glClearBufferfv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLfloat) -> Result<()>;
12210
12211	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferfi.xhtml>
12212	fn glClearBufferfi(&self, buffer: GLenum, drawbuffer: GLint, depth: GLfloat, stencil: GLint) -> Result<()>;
12213
12214	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetStringi.xhtml>
12215	fn glGetStringi(&self, name: GLenum, index: GLuint) -> Result<&'static str>;
12216
12217	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsRenderbuffer.xhtml>
12218	fn glIsRenderbuffer(&self, renderbuffer: GLuint) -> Result<GLboolean>;
12219
12220	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindRenderbuffer.xhtml>
12221	fn glBindRenderbuffer(&self, target: GLenum, renderbuffer: GLuint) -> Result<()>;
12222
12223	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteRenderbuffers.xhtml>
12224	fn glDeleteRenderbuffers(&self, n: GLsizei, renderbuffers: *const GLuint) -> Result<()>;
12225
12226	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenRenderbuffers.xhtml>
12227	fn glGenRenderbuffers(&self, n: GLsizei, renderbuffers: *mut GLuint) -> Result<()>;
12228
12229	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glRenderbufferStorage.xhtml>
12230	fn glRenderbufferStorage(&self, target: GLenum, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()>;
12231
12232	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetRenderbufferParameteriv.xhtml>
12233	fn glGetRenderbufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
12234
12235	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsFramebuffer.xhtml>
12236	fn glIsFramebuffer(&self, framebuffer: GLuint) -> Result<GLboolean>;
12237
12238	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindFramebuffer.xhtml>
12239	fn glBindFramebuffer(&self, target: GLenum, framebuffer: GLuint) -> Result<()>;
12240
12241	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteFramebuffers.xhtml>
12242	fn glDeleteFramebuffers(&self, n: GLsizei, framebuffers: *const GLuint) -> Result<()>;
12243
12244	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenFramebuffers.xhtml>
12245	fn glGenFramebuffers(&self, n: GLsizei, framebuffers: *mut GLuint) -> Result<()>;
12246
12247	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCheckFramebufferStatus.xhtml>
12248	fn glCheckFramebufferStatus(&self, target: GLenum) -> Result<GLenum>;
12249
12250	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferTexture1D.xhtml>
12251	fn glFramebufferTexture1D(&self, target: GLenum, attachment: GLenum, textarget: GLenum, texture: GLuint, level: GLint) -> Result<()>;
12252
12253	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferTexture2D.xhtml>
12254	fn glFramebufferTexture2D(&self, target: GLenum, attachment: GLenum, textarget: GLenum, texture: GLuint, level: GLint) -> Result<()>;
12255
12256	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferTexture3D.xhtml>
12257	fn glFramebufferTexture3D(&self, target: GLenum, attachment: GLenum, textarget: GLenum, texture: GLuint, level: GLint, zoffset: GLint) -> Result<()>;
12258
12259	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferRenderbuffer.xhtml>
12260	fn glFramebufferRenderbuffer(&self, target: GLenum, attachment: GLenum, renderbuffertarget: GLenum, renderbuffer: GLuint) -> Result<()>;
12261
12262	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFramebufferAttachmentParameteriv.xhtml>
12263	fn glGetFramebufferAttachmentParameteriv(&self, target: GLenum, attachment: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
12264
12265	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenerateMipmap.xhtml>
12266	fn glGenerateMipmap(&self, target: GLenum) -> Result<()>;
12267
12268	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlitFramebuffer.xhtml>
12269	fn glBlitFramebuffer(&self, srcX0: GLint, srcY0: GLint, srcX1: GLint, srcY1: GLint, dstX0: GLint, dstY0: GLint, dstX1: GLint, dstY1: GLint, mask: GLbitfield, filter: GLenum) -> Result<()>;
12270
12271	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glRenderbufferStorageMultisample.xhtml>
12272	fn glRenderbufferStorageMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()>;
12273
12274	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferTextureLayer.xhtml>
12275	fn glFramebufferTextureLayer(&self, target: GLenum, attachment: GLenum, texture: GLuint, level: GLint, layer: GLint) -> Result<()>;
12276
12277	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMapBufferRange.xhtml>
12278	fn glMapBufferRange(&self, target: GLenum, offset: GLintptr, length: GLsizeiptr, access: GLbitfield) -> Result<*mut c_void>;
12279
12280	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFlushMappedBufferRange.xhtml>
12281	fn glFlushMappedBufferRange(&self, target: GLenum, offset: GLintptr, length: GLsizeiptr) -> Result<()>;
12282
12283	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindVertexArray.xhtml>
12284	fn glBindVertexArray(&self, array: GLuint) -> Result<()>;
12285
12286	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteVertexArrays.xhtml>
12287	fn glDeleteVertexArrays(&self, n: GLsizei, arrays: *const GLuint) -> Result<()>;
12288
12289	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenVertexArrays.xhtml>
12290	fn glGenVertexArrays(&self, n: GLsizei, arrays: *mut GLuint) -> Result<()>;
12291
12292	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsVertexArray.xhtml>
12293	fn glIsVertexArray(&self, array: GLuint) -> Result<GLboolean>;
12294}
12295/// Functions from OpenGL version 3.0
12296#[derive(Clone, Copy, PartialEq, Eq, Hash)]
12297pub struct Version30 {
12298	/// Is OpenGL version 3.0 available
12299	available: bool,
12300
12301	/// The function pointer to `glGetError()`
12302	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
12303	pub geterror: PFNGLGETERRORPROC,
12304
12305	/// The function pointer to `glColorMaski()`
12306	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorMaski.xhtml>
12307	pub colormaski: PFNGLCOLORMASKIPROC,
12308
12309	/// The function pointer to `glGetBooleani_v()`
12310	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBooleani_v.xhtml>
12311	pub getbooleani_v: PFNGLGETBOOLEANI_VPROC,
12312
12313	/// The function pointer to `glGetIntegeri_v()`
12314	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetIntegeri_v.xhtml>
12315	pub getintegeri_v: PFNGLGETINTEGERI_VPROC,
12316
12317	/// The function pointer to `glEnablei()`
12318	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEnablei.xhtml>
12319	pub enablei: PFNGLENABLEIPROC,
12320
12321	/// The function pointer to `glDisablei()`
12322	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDisablei.xhtml>
12323	pub disablei: PFNGLDISABLEIPROC,
12324
12325	/// The function pointer to `glIsEnabledi()`
12326	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsEnabledi.xhtml>
12327	pub isenabledi: PFNGLISENABLEDIPROC,
12328
12329	/// The function pointer to `glBeginTransformFeedback()`
12330	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBeginTransformFeedback.xhtml>
12331	pub begintransformfeedback: PFNGLBEGINTRANSFORMFEEDBACKPROC,
12332
12333	/// The function pointer to `glEndTransformFeedback()`
12334	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEndTransformFeedback.xhtml>
12335	pub endtransformfeedback: PFNGLENDTRANSFORMFEEDBACKPROC,
12336
12337	/// The function pointer to `glBindBufferRange()`
12338	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindBufferRange.xhtml>
12339	pub bindbufferrange: PFNGLBINDBUFFERRANGEPROC,
12340
12341	/// The function pointer to `glBindBufferBase()`
12342	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindBufferBase.xhtml>
12343	pub bindbufferbase: PFNGLBINDBUFFERBASEPROC,
12344
12345	/// The function pointer to `glTransformFeedbackVaryings()`
12346	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTransformFeedbackVaryings.xhtml>
12347	pub transformfeedbackvaryings: PFNGLTRANSFORMFEEDBACKVARYINGSPROC,
12348
12349	/// The function pointer to `glGetTransformFeedbackVarying()`
12350	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTransformFeedbackVarying.xhtml>
12351	pub gettransformfeedbackvarying: PFNGLGETTRANSFORMFEEDBACKVARYINGPROC,
12352
12353	/// The function pointer to `glClampColor()`
12354	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClampColor.xhtml>
12355	pub clampcolor: PFNGLCLAMPCOLORPROC,
12356
12357	/// The function pointer to `glBeginConditionalRender()`
12358	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBeginConditionalRender.xhtml>
12359	pub beginconditionalrender: PFNGLBEGINCONDITIONALRENDERPROC,
12360
12361	/// The function pointer to `glEndConditionalRender()`
12362	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEndConditionalRender.xhtml>
12363	pub endconditionalrender: PFNGLENDCONDITIONALRENDERPROC,
12364
12365	/// The function pointer to `glVertexAttribIPointer()`
12366	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribIPointer.xhtml>
12367	pub vertexattribipointer: PFNGLVERTEXATTRIBIPOINTERPROC,
12368
12369	/// The function pointer to `glGetVertexAttribIiv()`
12370	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribIiv.xhtml>
12371	pub getvertexattribiiv: PFNGLGETVERTEXATTRIBIIVPROC,
12372
12373	/// The function pointer to `glGetVertexAttribIuiv()`
12374	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribIuiv.xhtml>
12375	pub getvertexattribiuiv: PFNGLGETVERTEXATTRIBIUIVPROC,
12376
12377	/// The function pointer to `glVertexAttribI1i()`
12378	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI1i.xhtml>
12379	pub vertexattribi1i: PFNGLVERTEXATTRIBI1IPROC,
12380
12381	/// The function pointer to `glVertexAttribI2i()`
12382	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI2i.xhtml>
12383	pub vertexattribi2i: PFNGLVERTEXATTRIBI2IPROC,
12384
12385	/// The function pointer to `glVertexAttribI3i()`
12386	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI3i.xhtml>
12387	pub vertexattribi3i: PFNGLVERTEXATTRIBI3IPROC,
12388
12389	/// The function pointer to `glVertexAttribI4i()`
12390	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4i.xhtml>
12391	pub vertexattribi4i: PFNGLVERTEXATTRIBI4IPROC,
12392
12393	/// The function pointer to `glVertexAttribI1ui()`
12394	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI1ui.xhtml>
12395	pub vertexattribi1ui: PFNGLVERTEXATTRIBI1UIPROC,
12396
12397	/// The function pointer to `glVertexAttribI2ui()`
12398	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI2ui.xhtml>
12399	pub vertexattribi2ui: PFNGLVERTEXATTRIBI2UIPROC,
12400
12401	/// The function pointer to `glVertexAttribI3ui()`
12402	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI3ui.xhtml>
12403	pub vertexattribi3ui: PFNGLVERTEXATTRIBI3UIPROC,
12404
12405	/// The function pointer to `glVertexAttribI4ui()`
12406	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4ui.xhtml>
12407	pub vertexattribi4ui: PFNGLVERTEXATTRIBI4UIPROC,
12408
12409	/// The function pointer to `glVertexAttribI1iv()`
12410	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI1iv.xhtml>
12411	pub vertexattribi1iv: PFNGLVERTEXATTRIBI1IVPROC,
12412
12413	/// The function pointer to `glVertexAttribI2iv()`
12414	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI2iv.xhtml>
12415	pub vertexattribi2iv: PFNGLVERTEXATTRIBI2IVPROC,
12416
12417	/// The function pointer to `glVertexAttribI3iv()`
12418	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI3iv.xhtml>
12419	pub vertexattribi3iv: PFNGLVERTEXATTRIBI3IVPROC,
12420
12421	/// The function pointer to `glVertexAttribI4iv()`
12422	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4iv.xhtml>
12423	pub vertexattribi4iv: PFNGLVERTEXATTRIBI4IVPROC,
12424
12425	/// The function pointer to `glVertexAttribI1uiv()`
12426	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI1uiv.xhtml>
12427	pub vertexattribi1uiv: PFNGLVERTEXATTRIBI1UIVPROC,
12428
12429	/// The function pointer to `glVertexAttribI2uiv()`
12430	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI2uiv.xhtml>
12431	pub vertexattribi2uiv: PFNGLVERTEXATTRIBI2UIVPROC,
12432
12433	/// The function pointer to `glVertexAttribI3uiv()`
12434	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI3uiv.xhtml>
12435	pub vertexattribi3uiv: PFNGLVERTEXATTRIBI3UIVPROC,
12436
12437	/// The function pointer to `glVertexAttribI4uiv()`
12438	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4uiv.xhtml>
12439	pub vertexattribi4uiv: PFNGLVERTEXATTRIBI4UIVPROC,
12440
12441	/// The function pointer to `glVertexAttribI4bv()`
12442	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4bv.xhtml>
12443	pub vertexattribi4bv: PFNGLVERTEXATTRIBI4BVPROC,
12444
12445	/// The function pointer to `glVertexAttribI4sv()`
12446	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4sv.xhtml>
12447	pub vertexattribi4sv: PFNGLVERTEXATTRIBI4SVPROC,
12448
12449	/// The function pointer to `glVertexAttribI4ubv()`
12450	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4ubv.xhtml>
12451	pub vertexattribi4ubv: PFNGLVERTEXATTRIBI4UBVPROC,
12452
12453	/// The function pointer to `glVertexAttribI4usv()`
12454	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4usv.xhtml>
12455	pub vertexattribi4usv: PFNGLVERTEXATTRIBI4USVPROC,
12456
12457	/// The function pointer to `glGetUniformuiv()`
12458	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformuiv.xhtml>
12459	pub getuniformuiv: PFNGLGETUNIFORMUIVPROC,
12460
12461	/// The function pointer to `glBindFragDataLocation()`
12462	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindFragDataLocation.xhtml>
12463	pub bindfragdatalocation: PFNGLBINDFRAGDATALOCATIONPROC,
12464
12465	/// The function pointer to `glGetFragDataLocation()`
12466	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFragDataLocation.xhtml>
12467	pub getfragdatalocation: PFNGLGETFRAGDATALOCATIONPROC,
12468
12469	/// The function pointer to `glUniform1ui()`
12470	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1ui.xhtml>
12471	pub uniform1ui: PFNGLUNIFORM1UIPROC,
12472
12473	/// The function pointer to `glUniform2ui()`
12474	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2ui.xhtml>
12475	pub uniform2ui: PFNGLUNIFORM2UIPROC,
12476
12477	/// The function pointer to `glUniform3ui()`
12478	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3ui.xhtml>
12479	pub uniform3ui: PFNGLUNIFORM3UIPROC,
12480
12481	/// The function pointer to `glUniform4ui()`
12482	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4ui.xhtml>
12483	pub uniform4ui: PFNGLUNIFORM4UIPROC,
12484
12485	/// The function pointer to `glUniform1uiv()`
12486	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1uiv.xhtml>
12487	pub uniform1uiv: PFNGLUNIFORM1UIVPROC,
12488
12489	/// The function pointer to `glUniform2uiv()`
12490	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2uiv.xhtml>
12491	pub uniform2uiv: PFNGLUNIFORM2UIVPROC,
12492
12493	/// The function pointer to `glUniform3uiv()`
12494	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3uiv.xhtml>
12495	pub uniform3uiv: PFNGLUNIFORM3UIVPROC,
12496
12497	/// The function pointer to `glUniform4uiv()`
12498	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4uiv.xhtml>
12499	pub uniform4uiv: PFNGLUNIFORM4UIVPROC,
12500
12501	/// The function pointer to `glTexParameterIiv()`
12502	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameterIiv.xhtml>
12503	pub texparameteriiv: PFNGLTEXPARAMETERIIVPROC,
12504
12505	/// The function pointer to `glTexParameterIuiv()`
12506	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameterIuiv.xhtml>
12507	pub texparameteriuiv: PFNGLTEXPARAMETERIUIVPROC,
12508
12509	/// The function pointer to `glGetTexParameterIiv()`
12510	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexParameterIiv.xhtml>
12511	pub gettexparameteriiv: PFNGLGETTEXPARAMETERIIVPROC,
12512
12513	/// The function pointer to `glGetTexParameterIuiv()`
12514	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexParameterIuiv.xhtml>
12515	pub gettexparameteriuiv: PFNGLGETTEXPARAMETERIUIVPROC,
12516
12517	/// The function pointer to `glClearBufferiv()`
12518	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferiv.xhtml>
12519	pub clearbufferiv: PFNGLCLEARBUFFERIVPROC,
12520
12521	/// The function pointer to `glClearBufferuiv()`
12522	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferuiv.xhtml>
12523	pub clearbufferuiv: PFNGLCLEARBUFFERUIVPROC,
12524
12525	/// The function pointer to `glClearBufferfv()`
12526	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferfv.xhtml>
12527	pub clearbufferfv: PFNGLCLEARBUFFERFVPROC,
12528
12529	/// The function pointer to `glClearBufferfi()`
12530	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferfi.xhtml>
12531	pub clearbufferfi: PFNGLCLEARBUFFERFIPROC,
12532
12533	/// The function pointer to `glGetStringi()`
12534	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetStringi.xhtml>
12535	pub getstringi: PFNGLGETSTRINGIPROC,
12536
12537	/// The function pointer to `glIsRenderbuffer()`
12538	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsRenderbuffer.xhtml>
12539	pub isrenderbuffer: PFNGLISRENDERBUFFERPROC,
12540
12541	/// The function pointer to `glBindRenderbuffer()`
12542	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindRenderbuffer.xhtml>
12543	pub bindrenderbuffer: PFNGLBINDRENDERBUFFERPROC,
12544
12545	/// The function pointer to `glDeleteRenderbuffers()`
12546	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteRenderbuffers.xhtml>
12547	pub deleterenderbuffers: PFNGLDELETERENDERBUFFERSPROC,
12548
12549	/// The function pointer to `glGenRenderbuffers()`
12550	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenRenderbuffers.xhtml>
12551	pub genrenderbuffers: PFNGLGENRENDERBUFFERSPROC,
12552
12553	/// The function pointer to `glRenderbufferStorage()`
12554	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glRenderbufferStorage.xhtml>
12555	pub renderbufferstorage: PFNGLRENDERBUFFERSTORAGEPROC,
12556
12557	/// The function pointer to `glGetRenderbufferParameteriv()`
12558	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetRenderbufferParameteriv.xhtml>
12559	pub getrenderbufferparameteriv: PFNGLGETRENDERBUFFERPARAMETERIVPROC,
12560
12561	/// The function pointer to `glIsFramebuffer()`
12562	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsFramebuffer.xhtml>
12563	pub isframebuffer: PFNGLISFRAMEBUFFERPROC,
12564
12565	/// The function pointer to `glBindFramebuffer()`
12566	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindFramebuffer.xhtml>
12567	pub bindframebuffer: PFNGLBINDFRAMEBUFFERPROC,
12568
12569	/// The function pointer to `glDeleteFramebuffers()`
12570	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteFramebuffers.xhtml>
12571	pub deleteframebuffers: PFNGLDELETEFRAMEBUFFERSPROC,
12572
12573	/// The function pointer to `glGenFramebuffers()`
12574	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenFramebuffers.xhtml>
12575	pub genframebuffers: PFNGLGENFRAMEBUFFERSPROC,
12576
12577	/// The function pointer to `glCheckFramebufferStatus()`
12578	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCheckFramebufferStatus.xhtml>
12579	pub checkframebufferstatus: PFNGLCHECKFRAMEBUFFERSTATUSPROC,
12580
12581	/// The function pointer to `glFramebufferTexture1D()`
12582	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferTexture1D.xhtml>
12583	pub framebuffertexture1d: PFNGLFRAMEBUFFERTEXTURE1DPROC,
12584
12585	/// The function pointer to `glFramebufferTexture2D()`
12586	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferTexture2D.xhtml>
12587	pub framebuffertexture2d: PFNGLFRAMEBUFFERTEXTURE2DPROC,
12588
12589	/// The function pointer to `glFramebufferTexture3D()`
12590	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferTexture3D.xhtml>
12591	pub framebuffertexture3d: PFNGLFRAMEBUFFERTEXTURE3DPROC,
12592
12593	/// The function pointer to `glFramebufferRenderbuffer()`
12594	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferRenderbuffer.xhtml>
12595	pub framebufferrenderbuffer: PFNGLFRAMEBUFFERRENDERBUFFERPROC,
12596
12597	/// The function pointer to `glGetFramebufferAttachmentParameteriv()`
12598	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFramebufferAttachmentParameteriv.xhtml>
12599	pub getframebufferattachmentparameteriv: PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC,
12600
12601	/// The function pointer to `glGenerateMipmap()`
12602	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenerateMipmap.xhtml>
12603	pub generatemipmap: PFNGLGENERATEMIPMAPPROC,
12604
12605	/// The function pointer to `glBlitFramebuffer()`
12606	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlitFramebuffer.xhtml>
12607	pub blitframebuffer: PFNGLBLITFRAMEBUFFERPROC,
12608
12609	/// The function pointer to `glRenderbufferStorageMultisample()`
12610	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glRenderbufferStorageMultisample.xhtml>
12611	pub renderbufferstoragemultisample: PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC,
12612
12613	/// The function pointer to `glFramebufferTextureLayer()`
12614	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferTextureLayer.xhtml>
12615	pub framebuffertexturelayer: PFNGLFRAMEBUFFERTEXTURELAYERPROC,
12616
12617	/// The function pointer to `glMapBufferRange()`
12618	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMapBufferRange.xhtml>
12619	pub mapbufferrange: PFNGLMAPBUFFERRANGEPROC,
12620
12621	/// The function pointer to `glFlushMappedBufferRange()`
12622	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFlushMappedBufferRange.xhtml>
12623	pub flushmappedbufferrange: PFNGLFLUSHMAPPEDBUFFERRANGEPROC,
12624
12625	/// The function pointer to `glBindVertexArray()`
12626	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindVertexArray.xhtml>
12627	pub bindvertexarray: PFNGLBINDVERTEXARRAYPROC,
12628
12629	/// The function pointer to `glDeleteVertexArrays()`
12630	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteVertexArrays.xhtml>
12631	pub deletevertexarrays: PFNGLDELETEVERTEXARRAYSPROC,
12632
12633	/// The function pointer to `glGenVertexArrays()`
12634	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenVertexArrays.xhtml>
12635	pub genvertexarrays: PFNGLGENVERTEXARRAYSPROC,
12636
12637	/// The function pointer to `glIsVertexArray()`
12638	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsVertexArray.xhtml>
12639	pub isvertexarray: PFNGLISVERTEXARRAYPROC,
12640}
12641
12642impl GL_3_0 for Version30 {
12643	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
12644	#[inline(always)]
12645	fn glGetError(&self) -> GLenum {
12646		(self.geterror)()
12647	}
12648	#[inline(always)]
12649	fn glColorMaski(&self, index: GLuint, r: GLboolean, g: GLboolean, b: GLboolean, a: GLboolean) -> Result<()> {
12650		let ret = process_catch("glColorMaski", catch_unwind(||(self.colormaski)(index, r, g, b, a)));
12651		#[cfg(feature = "diagnose")]
12652		if let Ok(ret) = ret {
12653			return to_result("glColorMaski", ret, self.glGetError());
12654		} else {
12655			return ret
12656		}
12657		#[cfg(not(feature = "diagnose"))]
12658		return ret;
12659	}
12660	#[inline(always)]
12661	fn glGetBooleani_v(&self, target: GLenum, index: GLuint, data: *mut GLboolean) -> Result<()> {
12662		let ret = process_catch("glGetBooleani_v", catch_unwind(||(self.getbooleani_v)(target, index, data)));
12663		#[cfg(feature = "diagnose")]
12664		if let Ok(ret) = ret {
12665			return to_result("glGetBooleani_v", ret, self.glGetError());
12666		} else {
12667			return ret
12668		}
12669		#[cfg(not(feature = "diagnose"))]
12670		return ret;
12671	}
12672	#[inline(always)]
12673	fn glGetIntegeri_v(&self, target: GLenum, index: GLuint, data: *mut GLint) -> Result<()> {
12674		let ret = process_catch("glGetIntegeri_v", catch_unwind(||(self.getintegeri_v)(target, index, data)));
12675		#[cfg(feature = "diagnose")]
12676		if let Ok(ret) = ret {
12677			return to_result("glGetIntegeri_v", ret, self.glGetError());
12678		} else {
12679			return ret
12680		}
12681		#[cfg(not(feature = "diagnose"))]
12682		return ret;
12683	}
12684	#[inline(always)]
12685	fn glEnablei(&self, target: GLenum, index: GLuint) -> Result<()> {
12686		let ret = process_catch("glEnablei", catch_unwind(||(self.enablei)(target, index)));
12687		#[cfg(feature = "diagnose")]
12688		if let Ok(ret) = ret {
12689			return to_result("glEnablei", ret, self.glGetError());
12690		} else {
12691			return ret
12692		}
12693		#[cfg(not(feature = "diagnose"))]
12694		return ret;
12695	}
12696	#[inline(always)]
12697	fn glDisablei(&self, target: GLenum, index: GLuint) -> Result<()> {
12698		let ret = process_catch("glDisablei", catch_unwind(||(self.disablei)(target, index)));
12699		#[cfg(feature = "diagnose")]
12700		if let Ok(ret) = ret {
12701			return to_result("glDisablei", ret, self.glGetError());
12702		} else {
12703			return ret
12704		}
12705		#[cfg(not(feature = "diagnose"))]
12706		return ret;
12707	}
12708	#[inline(always)]
12709	fn glIsEnabledi(&self, target: GLenum, index: GLuint) -> Result<GLboolean> {
12710		let ret = process_catch("glIsEnabledi", catch_unwind(||(self.isenabledi)(target, index)));
12711		#[cfg(feature = "diagnose")]
12712		if let Ok(ret) = ret {
12713			return to_result("glIsEnabledi", ret, self.glGetError());
12714		} else {
12715			return ret
12716		}
12717		#[cfg(not(feature = "diagnose"))]
12718		return ret;
12719	}
12720	#[inline(always)]
12721	fn glBeginTransformFeedback(&self, primitiveMode: GLenum) -> Result<()> {
12722		let ret = process_catch("glBeginTransformFeedback", catch_unwind(||(self.begintransformfeedback)(primitiveMode)));
12723		#[cfg(feature = "diagnose")]
12724		if let Ok(ret) = ret {
12725			return to_result("glBeginTransformFeedback", ret, self.glGetError());
12726		} else {
12727			return ret
12728		}
12729		#[cfg(not(feature = "diagnose"))]
12730		return ret;
12731	}
12732	#[inline(always)]
12733	fn glEndTransformFeedback(&self) -> Result<()> {
12734		let ret = process_catch("glEndTransformFeedback", catch_unwind(||(self.endtransformfeedback)()));
12735		#[cfg(feature = "diagnose")]
12736		if let Ok(ret) = ret {
12737			return to_result("glEndTransformFeedback", ret, self.glGetError());
12738		} else {
12739			return ret
12740		}
12741		#[cfg(not(feature = "diagnose"))]
12742		return ret;
12743	}
12744	#[inline(always)]
12745	fn glBindBufferRange(&self, target: GLenum, index: GLuint, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()> {
12746		let ret = process_catch("glBindBufferRange", catch_unwind(||(self.bindbufferrange)(target, index, buffer, offset, size)));
12747		#[cfg(feature = "diagnose")]
12748		if let Ok(ret) = ret {
12749			return to_result("glBindBufferRange", ret, self.glGetError());
12750		} else {
12751			return ret
12752		}
12753		#[cfg(not(feature = "diagnose"))]
12754		return ret;
12755	}
12756	#[inline(always)]
12757	fn glBindBufferBase(&self, target: GLenum, index: GLuint, buffer: GLuint) -> Result<()> {
12758		let ret = process_catch("glBindBufferBase", catch_unwind(||(self.bindbufferbase)(target, index, buffer)));
12759		#[cfg(feature = "diagnose")]
12760		if let Ok(ret) = ret {
12761			return to_result("glBindBufferBase", ret, self.glGetError());
12762		} else {
12763			return ret
12764		}
12765		#[cfg(not(feature = "diagnose"))]
12766		return ret;
12767	}
12768	#[inline(always)]
12769	fn glTransformFeedbackVaryings(&self, program: GLuint, count: GLsizei, varyings: *const *const GLchar, bufferMode: GLenum) -> Result<()> {
12770		let ret = process_catch("glTransformFeedbackVaryings", catch_unwind(||(self.transformfeedbackvaryings)(program, count, varyings, bufferMode)));
12771		#[cfg(feature = "diagnose")]
12772		if let Ok(ret) = ret {
12773			return to_result("glTransformFeedbackVaryings", ret, self.glGetError());
12774		} else {
12775			return ret
12776		}
12777		#[cfg(not(feature = "diagnose"))]
12778		return ret;
12779	}
12780	#[inline(always)]
12781	fn glGetTransformFeedbackVarying(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLsizei, type_: *mut GLenum, name: *mut GLchar) -> Result<()> {
12782		let ret = process_catch("glGetTransformFeedbackVarying", catch_unwind(||(self.gettransformfeedbackvarying)(program, index, bufSize, length, size, type_, name)));
12783		#[cfg(feature = "diagnose")]
12784		if let Ok(ret) = ret {
12785			return to_result("glGetTransformFeedbackVarying", ret, self.glGetError());
12786		} else {
12787			return ret
12788		}
12789		#[cfg(not(feature = "diagnose"))]
12790		return ret;
12791	}
12792	#[inline(always)]
12793	fn glClampColor(&self, target: GLenum, clamp: GLenum) -> Result<()> {
12794		let ret = process_catch("glClampColor", catch_unwind(||(self.clampcolor)(target, clamp)));
12795		#[cfg(feature = "diagnose")]
12796		if let Ok(ret) = ret {
12797			return to_result("glClampColor", ret, self.glGetError());
12798		} else {
12799			return ret
12800		}
12801		#[cfg(not(feature = "diagnose"))]
12802		return ret;
12803	}
12804	#[inline(always)]
12805	fn glBeginConditionalRender(&self, id: GLuint, mode: GLenum) -> Result<()> {
12806		let ret = process_catch("glBeginConditionalRender", catch_unwind(||(self.beginconditionalrender)(id, mode)));
12807		#[cfg(feature = "diagnose")]
12808		if let Ok(ret) = ret {
12809			return to_result("glBeginConditionalRender", ret, self.glGetError());
12810		} else {
12811			return ret
12812		}
12813		#[cfg(not(feature = "diagnose"))]
12814		return ret;
12815	}
12816	#[inline(always)]
12817	fn glEndConditionalRender(&self) -> Result<()> {
12818		let ret = process_catch("glEndConditionalRender", catch_unwind(||(self.endconditionalrender)()));
12819		#[cfg(feature = "diagnose")]
12820		if let Ok(ret) = ret {
12821			return to_result("glEndConditionalRender", ret, self.glGetError());
12822		} else {
12823			return ret
12824		}
12825		#[cfg(not(feature = "diagnose"))]
12826		return ret;
12827	}
12828	#[inline(always)]
12829	fn glVertexAttribIPointer(&self, index: GLuint, size: GLint, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()> {
12830		let ret = process_catch("glVertexAttribIPointer", catch_unwind(||(self.vertexattribipointer)(index, size, type_, stride, pointer)));
12831		#[cfg(feature = "diagnose")]
12832		if let Ok(ret) = ret {
12833			return to_result("glVertexAttribIPointer", ret, self.glGetError());
12834		} else {
12835			return ret
12836		}
12837		#[cfg(not(feature = "diagnose"))]
12838		return ret;
12839	}
12840	#[inline(always)]
12841	fn glGetVertexAttribIiv(&self, index: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
12842		let ret = process_catch("glGetVertexAttribIiv", catch_unwind(||(self.getvertexattribiiv)(index, pname, params)));
12843		#[cfg(feature = "diagnose")]
12844		if let Ok(ret) = ret {
12845			return to_result("glGetVertexAttribIiv", ret, self.glGetError());
12846		} else {
12847			return ret
12848		}
12849		#[cfg(not(feature = "diagnose"))]
12850		return ret;
12851	}
12852	#[inline(always)]
12853	fn glGetVertexAttribIuiv(&self, index: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()> {
12854		let ret = process_catch("glGetVertexAttribIuiv", catch_unwind(||(self.getvertexattribiuiv)(index, pname, params)));
12855		#[cfg(feature = "diagnose")]
12856		if let Ok(ret) = ret {
12857			return to_result("glGetVertexAttribIuiv", ret, self.glGetError());
12858		} else {
12859			return ret
12860		}
12861		#[cfg(not(feature = "diagnose"))]
12862		return ret;
12863	}
12864	#[inline(always)]
12865	fn glVertexAttribI1i(&self, index: GLuint, x: GLint) -> Result<()> {
12866		let ret = process_catch("glVertexAttribI1i", catch_unwind(||(self.vertexattribi1i)(index, x)));
12867		#[cfg(feature = "diagnose")]
12868		if let Ok(ret) = ret {
12869			return to_result("glVertexAttribI1i", ret, self.glGetError());
12870		} else {
12871			return ret
12872		}
12873		#[cfg(not(feature = "diagnose"))]
12874		return ret;
12875	}
12876	#[inline(always)]
12877	fn glVertexAttribI2i(&self, index: GLuint, x: GLint, y: GLint) -> Result<()> {
12878		let ret = process_catch("glVertexAttribI2i", catch_unwind(||(self.vertexattribi2i)(index, x, y)));
12879		#[cfg(feature = "diagnose")]
12880		if let Ok(ret) = ret {
12881			return to_result("glVertexAttribI2i", ret, self.glGetError());
12882		} else {
12883			return ret
12884		}
12885		#[cfg(not(feature = "diagnose"))]
12886		return ret;
12887	}
12888	#[inline(always)]
12889	fn glVertexAttribI3i(&self, index: GLuint, x: GLint, y: GLint, z: GLint) -> Result<()> {
12890		let ret = process_catch("glVertexAttribI3i", catch_unwind(||(self.vertexattribi3i)(index, x, y, z)));
12891		#[cfg(feature = "diagnose")]
12892		if let Ok(ret) = ret {
12893			return to_result("glVertexAttribI3i", ret, self.glGetError());
12894		} else {
12895			return ret
12896		}
12897		#[cfg(not(feature = "diagnose"))]
12898		return ret;
12899	}
12900	#[inline(always)]
12901	fn glVertexAttribI4i(&self, index: GLuint, x: GLint, y: GLint, z: GLint, w: GLint) -> Result<()> {
12902		let ret = process_catch("glVertexAttribI4i", catch_unwind(||(self.vertexattribi4i)(index, x, y, z, w)));
12903		#[cfg(feature = "diagnose")]
12904		if let Ok(ret) = ret {
12905			return to_result("glVertexAttribI4i", ret, self.glGetError());
12906		} else {
12907			return ret
12908		}
12909		#[cfg(not(feature = "diagnose"))]
12910		return ret;
12911	}
12912	#[inline(always)]
12913	fn glVertexAttribI1ui(&self, index: GLuint, x: GLuint) -> Result<()> {
12914		let ret = process_catch("glVertexAttribI1ui", catch_unwind(||(self.vertexattribi1ui)(index, x)));
12915		#[cfg(feature = "diagnose")]
12916		if let Ok(ret) = ret {
12917			return to_result("glVertexAttribI1ui", ret, self.glGetError());
12918		} else {
12919			return ret
12920		}
12921		#[cfg(not(feature = "diagnose"))]
12922		return ret;
12923	}
12924	#[inline(always)]
12925	fn glVertexAttribI2ui(&self, index: GLuint, x: GLuint, y: GLuint) -> Result<()> {
12926		let ret = process_catch("glVertexAttribI2ui", catch_unwind(||(self.vertexattribi2ui)(index, x, y)));
12927		#[cfg(feature = "diagnose")]
12928		if let Ok(ret) = ret {
12929			return to_result("glVertexAttribI2ui", ret, self.glGetError());
12930		} else {
12931			return ret
12932		}
12933		#[cfg(not(feature = "diagnose"))]
12934		return ret;
12935	}
12936	#[inline(always)]
12937	fn glVertexAttribI3ui(&self, index: GLuint, x: GLuint, y: GLuint, z: GLuint) -> Result<()> {
12938		let ret = process_catch("glVertexAttribI3ui", catch_unwind(||(self.vertexattribi3ui)(index, x, y, z)));
12939		#[cfg(feature = "diagnose")]
12940		if let Ok(ret) = ret {
12941			return to_result("glVertexAttribI3ui", ret, self.glGetError());
12942		} else {
12943			return ret
12944		}
12945		#[cfg(not(feature = "diagnose"))]
12946		return ret;
12947	}
12948	#[inline(always)]
12949	fn glVertexAttribI4ui(&self, index: GLuint, x: GLuint, y: GLuint, z: GLuint, w: GLuint) -> Result<()> {
12950		let ret = process_catch("glVertexAttribI4ui", catch_unwind(||(self.vertexattribi4ui)(index, x, y, z, w)));
12951		#[cfg(feature = "diagnose")]
12952		if let Ok(ret) = ret {
12953			return to_result("glVertexAttribI4ui", ret, self.glGetError());
12954		} else {
12955			return ret
12956		}
12957		#[cfg(not(feature = "diagnose"))]
12958		return ret;
12959	}
12960	#[inline(always)]
12961	fn glVertexAttribI1iv(&self, index: GLuint, v: *const GLint) -> Result<()> {
12962		let ret = process_catch("glVertexAttribI1iv", catch_unwind(||(self.vertexattribi1iv)(index, v)));
12963		#[cfg(feature = "diagnose")]
12964		if let Ok(ret) = ret {
12965			return to_result("glVertexAttribI1iv", ret, self.glGetError());
12966		} else {
12967			return ret
12968		}
12969		#[cfg(not(feature = "diagnose"))]
12970		return ret;
12971	}
12972	#[inline(always)]
12973	fn glVertexAttribI2iv(&self, index: GLuint, v: *const GLint) -> Result<()> {
12974		let ret = process_catch("glVertexAttribI2iv", catch_unwind(||(self.vertexattribi2iv)(index, v)));
12975		#[cfg(feature = "diagnose")]
12976		if let Ok(ret) = ret {
12977			return to_result("glVertexAttribI2iv", ret, self.glGetError());
12978		} else {
12979			return ret
12980		}
12981		#[cfg(not(feature = "diagnose"))]
12982		return ret;
12983	}
12984	#[inline(always)]
12985	fn glVertexAttribI3iv(&self, index: GLuint, v: *const GLint) -> Result<()> {
12986		let ret = process_catch("glVertexAttribI3iv", catch_unwind(||(self.vertexattribi3iv)(index, v)));
12987		#[cfg(feature = "diagnose")]
12988		if let Ok(ret) = ret {
12989			return to_result("glVertexAttribI3iv", ret, self.glGetError());
12990		} else {
12991			return ret
12992		}
12993		#[cfg(not(feature = "diagnose"))]
12994		return ret;
12995	}
12996	#[inline(always)]
12997	fn glVertexAttribI4iv(&self, index: GLuint, v: *const GLint) -> Result<()> {
12998		let ret = process_catch("glVertexAttribI4iv", catch_unwind(||(self.vertexattribi4iv)(index, v)));
12999		#[cfg(feature = "diagnose")]
13000		if let Ok(ret) = ret {
13001			return to_result("glVertexAttribI4iv", ret, self.glGetError());
13002		} else {
13003			return ret
13004		}
13005		#[cfg(not(feature = "diagnose"))]
13006		return ret;
13007	}
13008	#[inline(always)]
13009	fn glVertexAttribI1uiv(&self, index: GLuint, v: *const GLuint) -> Result<()> {
13010		let ret = process_catch("glVertexAttribI1uiv", catch_unwind(||(self.vertexattribi1uiv)(index, v)));
13011		#[cfg(feature = "diagnose")]
13012		if let Ok(ret) = ret {
13013			return to_result("glVertexAttribI1uiv", ret, self.glGetError());
13014		} else {
13015			return ret
13016		}
13017		#[cfg(not(feature = "diagnose"))]
13018		return ret;
13019	}
13020	#[inline(always)]
13021	fn glVertexAttribI2uiv(&self, index: GLuint, v: *const GLuint) -> Result<()> {
13022		let ret = process_catch("glVertexAttribI2uiv", catch_unwind(||(self.vertexattribi2uiv)(index, v)));
13023		#[cfg(feature = "diagnose")]
13024		if let Ok(ret) = ret {
13025			return to_result("glVertexAttribI2uiv", ret, self.glGetError());
13026		} else {
13027			return ret
13028		}
13029		#[cfg(not(feature = "diagnose"))]
13030		return ret;
13031	}
13032	#[inline(always)]
13033	fn glVertexAttribI3uiv(&self, index: GLuint, v: *const GLuint) -> Result<()> {
13034		let ret = process_catch("glVertexAttribI3uiv", catch_unwind(||(self.vertexattribi3uiv)(index, v)));
13035		#[cfg(feature = "diagnose")]
13036		if let Ok(ret) = ret {
13037			return to_result("glVertexAttribI3uiv", ret, self.glGetError());
13038		} else {
13039			return ret
13040		}
13041		#[cfg(not(feature = "diagnose"))]
13042		return ret;
13043	}
13044	#[inline(always)]
13045	fn glVertexAttribI4uiv(&self, index: GLuint, v: *const GLuint) -> Result<()> {
13046		let ret = process_catch("glVertexAttribI4uiv", catch_unwind(||(self.vertexattribi4uiv)(index, v)));
13047		#[cfg(feature = "diagnose")]
13048		if let Ok(ret) = ret {
13049			return to_result("glVertexAttribI4uiv", ret, self.glGetError());
13050		} else {
13051			return ret
13052		}
13053		#[cfg(not(feature = "diagnose"))]
13054		return ret;
13055	}
13056	#[inline(always)]
13057	fn glVertexAttribI4bv(&self, index: GLuint, v: *const GLbyte) -> Result<()> {
13058		let ret = process_catch("glVertexAttribI4bv", catch_unwind(||(self.vertexattribi4bv)(index, v)));
13059		#[cfg(feature = "diagnose")]
13060		if let Ok(ret) = ret {
13061			return to_result("glVertexAttribI4bv", ret, self.glGetError());
13062		} else {
13063			return ret
13064		}
13065		#[cfg(not(feature = "diagnose"))]
13066		return ret;
13067	}
13068	#[inline(always)]
13069	fn glVertexAttribI4sv(&self, index: GLuint, v: *const GLshort) -> Result<()> {
13070		let ret = process_catch("glVertexAttribI4sv", catch_unwind(||(self.vertexattribi4sv)(index, v)));
13071		#[cfg(feature = "diagnose")]
13072		if let Ok(ret) = ret {
13073			return to_result("glVertexAttribI4sv", ret, self.glGetError());
13074		} else {
13075			return ret
13076		}
13077		#[cfg(not(feature = "diagnose"))]
13078		return ret;
13079	}
13080	#[inline(always)]
13081	fn glVertexAttribI4ubv(&self, index: GLuint, v: *const GLubyte) -> Result<()> {
13082		let ret = process_catch("glVertexAttribI4ubv", catch_unwind(||(self.vertexattribi4ubv)(index, v)));
13083		#[cfg(feature = "diagnose")]
13084		if let Ok(ret) = ret {
13085			return to_result("glVertexAttribI4ubv", ret, self.glGetError());
13086		} else {
13087			return ret
13088		}
13089		#[cfg(not(feature = "diagnose"))]
13090		return ret;
13091	}
13092	#[inline(always)]
13093	fn glVertexAttribI4usv(&self, index: GLuint, v: *const GLushort) -> Result<()> {
13094		let ret = process_catch("glVertexAttribI4usv", catch_unwind(||(self.vertexattribi4usv)(index, v)));
13095		#[cfg(feature = "diagnose")]
13096		if let Ok(ret) = ret {
13097			return to_result("glVertexAttribI4usv", ret, self.glGetError());
13098		} else {
13099			return ret
13100		}
13101		#[cfg(not(feature = "diagnose"))]
13102		return ret;
13103	}
13104	#[inline(always)]
13105	fn glGetUniformuiv(&self, program: GLuint, location: GLint, params: *mut GLuint) -> Result<()> {
13106		let ret = process_catch("glGetUniformuiv", catch_unwind(||(self.getuniformuiv)(program, location, params)));
13107		#[cfg(feature = "diagnose")]
13108		if let Ok(ret) = ret {
13109			return to_result("glGetUniformuiv", ret, self.glGetError());
13110		} else {
13111			return ret
13112		}
13113		#[cfg(not(feature = "diagnose"))]
13114		return ret;
13115	}
13116	#[inline(always)]
13117	fn glBindFragDataLocation(&self, program: GLuint, color: GLuint, name: *const GLchar) -> Result<()> {
13118		let ret = process_catch("glBindFragDataLocation", catch_unwind(||(self.bindfragdatalocation)(program, color, name)));
13119		#[cfg(feature = "diagnose")]
13120		if let Ok(ret) = ret {
13121			return to_result("glBindFragDataLocation", ret, self.glGetError());
13122		} else {
13123			return ret
13124		}
13125		#[cfg(not(feature = "diagnose"))]
13126		return ret;
13127	}
13128	#[inline(always)]
13129	fn glGetFragDataLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint> {
13130		let ret = process_catch("glGetFragDataLocation", catch_unwind(||(self.getfragdatalocation)(program, name)));
13131		#[cfg(feature = "diagnose")]
13132		if let Ok(ret) = ret {
13133			return to_result("glGetFragDataLocation", ret, self.glGetError());
13134		} else {
13135			return ret
13136		}
13137		#[cfg(not(feature = "diagnose"))]
13138		return ret;
13139	}
13140	#[inline(always)]
13141	fn glUniform1ui(&self, location: GLint, v0: GLuint) -> Result<()> {
13142		let ret = process_catch("glUniform1ui", catch_unwind(||(self.uniform1ui)(location, v0)));
13143		#[cfg(feature = "diagnose")]
13144		if let Ok(ret) = ret {
13145			return to_result("glUniform1ui", ret, self.glGetError());
13146		} else {
13147			return ret
13148		}
13149		#[cfg(not(feature = "diagnose"))]
13150		return ret;
13151	}
13152	#[inline(always)]
13153	fn glUniform2ui(&self, location: GLint, v0: GLuint, v1: GLuint) -> Result<()> {
13154		let ret = process_catch("glUniform2ui", catch_unwind(||(self.uniform2ui)(location, v0, v1)));
13155		#[cfg(feature = "diagnose")]
13156		if let Ok(ret) = ret {
13157			return to_result("glUniform2ui", ret, self.glGetError());
13158		} else {
13159			return ret
13160		}
13161		#[cfg(not(feature = "diagnose"))]
13162		return ret;
13163	}
13164	#[inline(always)]
13165	fn glUniform3ui(&self, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint) -> Result<()> {
13166		let ret = process_catch("glUniform3ui", catch_unwind(||(self.uniform3ui)(location, v0, v1, v2)));
13167		#[cfg(feature = "diagnose")]
13168		if let Ok(ret) = ret {
13169			return to_result("glUniform3ui", ret, self.glGetError());
13170		} else {
13171			return ret
13172		}
13173		#[cfg(not(feature = "diagnose"))]
13174		return ret;
13175	}
13176	#[inline(always)]
13177	fn glUniform4ui(&self, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint, v3: GLuint) -> Result<()> {
13178		let ret = process_catch("glUniform4ui", catch_unwind(||(self.uniform4ui)(location, v0, v1, v2, v3)));
13179		#[cfg(feature = "diagnose")]
13180		if let Ok(ret) = ret {
13181			return to_result("glUniform4ui", ret, self.glGetError());
13182		} else {
13183			return ret
13184		}
13185		#[cfg(not(feature = "diagnose"))]
13186		return ret;
13187	}
13188	#[inline(always)]
13189	fn glUniform1uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
13190		let ret = process_catch("glUniform1uiv", catch_unwind(||(self.uniform1uiv)(location, count, value)));
13191		#[cfg(feature = "diagnose")]
13192		if let Ok(ret) = ret {
13193			return to_result("glUniform1uiv", ret, self.glGetError());
13194		} else {
13195			return ret
13196		}
13197		#[cfg(not(feature = "diagnose"))]
13198		return ret;
13199	}
13200	#[inline(always)]
13201	fn glUniform2uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
13202		let ret = process_catch("glUniform2uiv", catch_unwind(||(self.uniform2uiv)(location, count, value)));
13203		#[cfg(feature = "diagnose")]
13204		if let Ok(ret) = ret {
13205			return to_result("glUniform2uiv", ret, self.glGetError());
13206		} else {
13207			return ret
13208		}
13209		#[cfg(not(feature = "diagnose"))]
13210		return ret;
13211	}
13212	#[inline(always)]
13213	fn glUniform3uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
13214		let ret = process_catch("glUniform3uiv", catch_unwind(||(self.uniform3uiv)(location, count, value)));
13215		#[cfg(feature = "diagnose")]
13216		if let Ok(ret) = ret {
13217			return to_result("glUniform3uiv", ret, self.glGetError());
13218		} else {
13219			return ret
13220		}
13221		#[cfg(not(feature = "diagnose"))]
13222		return ret;
13223	}
13224	#[inline(always)]
13225	fn glUniform4uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
13226		let ret = process_catch("glUniform4uiv", catch_unwind(||(self.uniform4uiv)(location, count, value)));
13227		#[cfg(feature = "diagnose")]
13228		if let Ok(ret) = ret {
13229			return to_result("glUniform4uiv", ret, self.glGetError());
13230		} else {
13231			return ret
13232		}
13233		#[cfg(not(feature = "diagnose"))]
13234		return ret;
13235	}
13236	#[inline(always)]
13237	fn glTexParameterIiv(&self, target: GLenum, pname: GLenum, params: *const GLint) -> Result<()> {
13238		let ret = process_catch("glTexParameterIiv", catch_unwind(||(self.texparameteriiv)(target, pname, params)));
13239		#[cfg(feature = "diagnose")]
13240		if let Ok(ret) = ret {
13241			return to_result("glTexParameterIiv", ret, self.glGetError());
13242		} else {
13243			return ret
13244		}
13245		#[cfg(not(feature = "diagnose"))]
13246		return ret;
13247	}
13248	#[inline(always)]
13249	fn glTexParameterIuiv(&self, target: GLenum, pname: GLenum, params: *const GLuint) -> Result<()> {
13250		let ret = process_catch("glTexParameterIuiv", catch_unwind(||(self.texparameteriuiv)(target, pname, params)));
13251		#[cfg(feature = "diagnose")]
13252		if let Ok(ret) = ret {
13253			return to_result("glTexParameterIuiv", ret, self.glGetError());
13254		} else {
13255			return ret
13256		}
13257		#[cfg(not(feature = "diagnose"))]
13258		return ret;
13259	}
13260	#[inline(always)]
13261	fn glGetTexParameterIiv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
13262		let ret = process_catch("glGetTexParameterIiv", catch_unwind(||(self.gettexparameteriiv)(target, pname, params)));
13263		#[cfg(feature = "diagnose")]
13264		if let Ok(ret) = ret {
13265			return to_result("glGetTexParameterIiv", ret, self.glGetError());
13266		} else {
13267			return ret
13268		}
13269		#[cfg(not(feature = "diagnose"))]
13270		return ret;
13271	}
13272	#[inline(always)]
13273	fn glGetTexParameterIuiv(&self, target: GLenum, pname: GLenum, params: *mut GLuint) -> Result<()> {
13274		let ret = process_catch("glGetTexParameterIuiv", catch_unwind(||(self.gettexparameteriuiv)(target, pname, params)));
13275		#[cfg(feature = "diagnose")]
13276		if let Ok(ret) = ret {
13277			return to_result("glGetTexParameterIuiv", ret, self.glGetError());
13278		} else {
13279			return ret
13280		}
13281		#[cfg(not(feature = "diagnose"))]
13282		return ret;
13283	}
13284	#[inline(always)]
13285	fn glClearBufferiv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLint) -> Result<()> {
13286		let ret = process_catch("glClearBufferiv", catch_unwind(||(self.clearbufferiv)(buffer, drawbuffer, value)));
13287		#[cfg(feature = "diagnose")]
13288		if let Ok(ret) = ret {
13289			return to_result("glClearBufferiv", ret, self.glGetError());
13290		} else {
13291			return ret
13292		}
13293		#[cfg(not(feature = "diagnose"))]
13294		return ret;
13295	}
13296	#[inline(always)]
13297	fn glClearBufferuiv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLuint) -> Result<()> {
13298		let ret = process_catch("glClearBufferuiv", catch_unwind(||(self.clearbufferuiv)(buffer, drawbuffer, value)));
13299		#[cfg(feature = "diagnose")]
13300		if let Ok(ret) = ret {
13301			return to_result("glClearBufferuiv", ret, self.glGetError());
13302		} else {
13303			return ret
13304		}
13305		#[cfg(not(feature = "diagnose"))]
13306		return ret;
13307	}
13308	#[inline(always)]
13309	fn glClearBufferfv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLfloat) -> Result<()> {
13310		let ret = process_catch("glClearBufferfv", catch_unwind(||(self.clearbufferfv)(buffer, drawbuffer, value)));
13311		#[cfg(feature = "diagnose")]
13312		if let Ok(ret) = ret {
13313			return to_result("glClearBufferfv", ret, self.glGetError());
13314		} else {
13315			return ret
13316		}
13317		#[cfg(not(feature = "diagnose"))]
13318		return ret;
13319	}
13320	#[inline(always)]
13321	fn glClearBufferfi(&self, buffer: GLenum, drawbuffer: GLint, depth: GLfloat, stencil: GLint) -> Result<()> {
13322		let ret = process_catch("glClearBufferfi", catch_unwind(||(self.clearbufferfi)(buffer, drawbuffer, depth, stencil)));
13323		#[cfg(feature = "diagnose")]
13324		if let Ok(ret) = ret {
13325			return to_result("glClearBufferfi", ret, self.glGetError());
13326		} else {
13327			return ret
13328		}
13329		#[cfg(not(feature = "diagnose"))]
13330		return ret;
13331	}
13332	#[inline(always)]
13333	fn glGetStringi(&self, name: GLenum, index: GLuint) -> Result<&'static str> {
13334		let ret = process_catch("glGetStringi", catch_unwind(||unsafe{CStr::from_ptr((self.getstringi)(name, index) as *const i8)}.to_str().unwrap()));
13335		#[cfg(feature = "diagnose")]
13336		if let Ok(ret) = ret {
13337			return to_result("glGetStringi", ret, self.glGetError());
13338		} else {
13339			return ret
13340		}
13341		#[cfg(not(feature = "diagnose"))]
13342		return ret;
13343	}
13344	#[inline(always)]
13345	fn glIsRenderbuffer(&self, renderbuffer: GLuint) -> Result<GLboolean> {
13346		let ret = process_catch("glIsRenderbuffer", catch_unwind(||(self.isrenderbuffer)(renderbuffer)));
13347		#[cfg(feature = "diagnose")]
13348		if let Ok(ret) = ret {
13349			return to_result("glIsRenderbuffer", ret, self.glGetError());
13350		} else {
13351			return ret
13352		}
13353		#[cfg(not(feature = "diagnose"))]
13354		return ret;
13355	}
13356	#[inline(always)]
13357	fn glBindRenderbuffer(&self, target: GLenum, renderbuffer: GLuint) -> Result<()> {
13358		let ret = process_catch("glBindRenderbuffer", catch_unwind(||(self.bindrenderbuffer)(target, renderbuffer)));
13359		#[cfg(feature = "diagnose")]
13360		if let Ok(ret) = ret {
13361			return to_result("glBindRenderbuffer", ret, self.glGetError());
13362		} else {
13363			return ret
13364		}
13365		#[cfg(not(feature = "diagnose"))]
13366		return ret;
13367	}
13368	#[inline(always)]
13369	fn glDeleteRenderbuffers(&self, n: GLsizei, renderbuffers: *const GLuint) -> Result<()> {
13370		let ret = process_catch("glDeleteRenderbuffers", catch_unwind(||(self.deleterenderbuffers)(n, renderbuffers)));
13371		#[cfg(feature = "diagnose")]
13372		if let Ok(ret) = ret {
13373			return to_result("glDeleteRenderbuffers", ret, self.glGetError());
13374		} else {
13375			return ret
13376		}
13377		#[cfg(not(feature = "diagnose"))]
13378		return ret;
13379	}
13380	#[inline(always)]
13381	fn glGenRenderbuffers(&self, n: GLsizei, renderbuffers: *mut GLuint) -> Result<()> {
13382		let ret = process_catch("glGenRenderbuffers", catch_unwind(||(self.genrenderbuffers)(n, renderbuffers)));
13383		#[cfg(feature = "diagnose")]
13384		if let Ok(ret) = ret {
13385			return to_result("glGenRenderbuffers", ret, self.glGetError());
13386		} else {
13387			return ret
13388		}
13389		#[cfg(not(feature = "diagnose"))]
13390		return ret;
13391	}
13392	#[inline(always)]
13393	fn glRenderbufferStorage(&self, target: GLenum, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()> {
13394		let ret = process_catch("glRenderbufferStorage", catch_unwind(||(self.renderbufferstorage)(target, internalformat, width, height)));
13395		#[cfg(feature = "diagnose")]
13396		if let Ok(ret) = ret {
13397			return to_result("glRenderbufferStorage", ret, self.glGetError());
13398		} else {
13399			return ret
13400		}
13401		#[cfg(not(feature = "diagnose"))]
13402		return ret;
13403	}
13404	#[inline(always)]
13405	fn glGetRenderbufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
13406		let ret = process_catch("glGetRenderbufferParameteriv", catch_unwind(||(self.getrenderbufferparameteriv)(target, pname, params)));
13407		#[cfg(feature = "diagnose")]
13408		if let Ok(ret) = ret {
13409			return to_result("glGetRenderbufferParameteriv", ret, self.glGetError());
13410		} else {
13411			return ret
13412		}
13413		#[cfg(not(feature = "diagnose"))]
13414		return ret;
13415	}
13416	#[inline(always)]
13417	fn glIsFramebuffer(&self, framebuffer: GLuint) -> Result<GLboolean> {
13418		let ret = process_catch("glIsFramebuffer", catch_unwind(||(self.isframebuffer)(framebuffer)));
13419		#[cfg(feature = "diagnose")]
13420		if let Ok(ret) = ret {
13421			return to_result("glIsFramebuffer", ret, self.glGetError());
13422		} else {
13423			return ret
13424		}
13425		#[cfg(not(feature = "diagnose"))]
13426		return ret;
13427	}
13428	#[inline(always)]
13429	fn glBindFramebuffer(&self, target: GLenum, framebuffer: GLuint) -> Result<()> {
13430		let ret = process_catch("glBindFramebuffer", catch_unwind(||(self.bindframebuffer)(target, framebuffer)));
13431		#[cfg(feature = "diagnose")]
13432		if let Ok(ret) = ret {
13433			return to_result("glBindFramebuffer", ret, self.glGetError());
13434		} else {
13435			return ret
13436		}
13437		#[cfg(not(feature = "diagnose"))]
13438		return ret;
13439	}
13440	#[inline(always)]
13441	fn glDeleteFramebuffers(&self, n: GLsizei, framebuffers: *const GLuint) -> Result<()> {
13442		let ret = process_catch("glDeleteFramebuffers", catch_unwind(||(self.deleteframebuffers)(n, framebuffers)));
13443		#[cfg(feature = "diagnose")]
13444		if let Ok(ret) = ret {
13445			return to_result("glDeleteFramebuffers", ret, self.glGetError());
13446		} else {
13447			return ret
13448		}
13449		#[cfg(not(feature = "diagnose"))]
13450		return ret;
13451	}
13452	#[inline(always)]
13453	fn glGenFramebuffers(&self, n: GLsizei, framebuffers: *mut GLuint) -> Result<()> {
13454		let ret = process_catch("glGenFramebuffers", catch_unwind(||(self.genframebuffers)(n, framebuffers)));
13455		#[cfg(feature = "diagnose")]
13456		if let Ok(ret) = ret {
13457			return to_result("glGenFramebuffers", ret, self.glGetError());
13458		} else {
13459			return ret
13460		}
13461		#[cfg(not(feature = "diagnose"))]
13462		return ret;
13463	}
13464	#[inline(always)]
13465	fn glCheckFramebufferStatus(&self, target: GLenum) -> Result<GLenum> {
13466		let ret = process_catch("glCheckFramebufferStatus", catch_unwind(||(self.checkframebufferstatus)(target)));
13467		#[cfg(feature = "diagnose")]
13468		if let Ok(ret) = ret {
13469			return to_result("glCheckFramebufferStatus", ret, self.glGetError());
13470		} else {
13471			return ret
13472		}
13473		#[cfg(not(feature = "diagnose"))]
13474		return ret;
13475	}
13476	#[inline(always)]
13477	fn glFramebufferTexture1D(&self, target: GLenum, attachment: GLenum, textarget: GLenum, texture: GLuint, level: GLint) -> Result<()> {
13478		let ret = process_catch("glFramebufferTexture1D", catch_unwind(||(self.framebuffertexture1d)(target, attachment, textarget, texture, level)));
13479		#[cfg(feature = "diagnose")]
13480		if let Ok(ret) = ret {
13481			return to_result("glFramebufferTexture1D", ret, self.glGetError());
13482		} else {
13483			return ret
13484		}
13485		#[cfg(not(feature = "diagnose"))]
13486		return ret;
13487	}
13488	#[inline(always)]
13489	fn glFramebufferTexture2D(&self, target: GLenum, attachment: GLenum, textarget: GLenum, texture: GLuint, level: GLint) -> Result<()> {
13490		let ret = process_catch("glFramebufferTexture2D", catch_unwind(||(self.framebuffertexture2d)(target, attachment, textarget, texture, level)));
13491		#[cfg(feature = "diagnose")]
13492		if let Ok(ret) = ret {
13493			return to_result("glFramebufferTexture2D", ret, self.glGetError());
13494		} else {
13495			return ret
13496		}
13497		#[cfg(not(feature = "diagnose"))]
13498		return ret;
13499	}
13500	#[inline(always)]
13501	fn glFramebufferTexture3D(&self, target: GLenum, attachment: GLenum, textarget: GLenum, texture: GLuint, level: GLint, zoffset: GLint) -> Result<()> {
13502		let ret = process_catch("glFramebufferTexture3D", catch_unwind(||(self.framebuffertexture3d)(target, attachment, textarget, texture, level, zoffset)));
13503		#[cfg(feature = "diagnose")]
13504		if let Ok(ret) = ret {
13505			return to_result("glFramebufferTexture3D", ret, self.glGetError());
13506		} else {
13507			return ret
13508		}
13509		#[cfg(not(feature = "diagnose"))]
13510		return ret;
13511	}
13512	#[inline(always)]
13513	fn glFramebufferRenderbuffer(&self, target: GLenum, attachment: GLenum, renderbuffertarget: GLenum, renderbuffer: GLuint) -> Result<()> {
13514		let ret = process_catch("glFramebufferRenderbuffer", catch_unwind(||(self.framebufferrenderbuffer)(target, attachment, renderbuffertarget, renderbuffer)));
13515		#[cfg(feature = "diagnose")]
13516		if let Ok(ret) = ret {
13517			return to_result("glFramebufferRenderbuffer", ret, self.glGetError());
13518		} else {
13519			return ret
13520		}
13521		#[cfg(not(feature = "diagnose"))]
13522		return ret;
13523	}
13524	#[inline(always)]
13525	fn glGetFramebufferAttachmentParameteriv(&self, target: GLenum, attachment: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
13526		let ret = process_catch("glGetFramebufferAttachmentParameteriv", catch_unwind(||(self.getframebufferattachmentparameteriv)(target, attachment, pname, params)));
13527		#[cfg(feature = "diagnose")]
13528		if let Ok(ret) = ret {
13529			return to_result("glGetFramebufferAttachmentParameteriv", ret, self.glGetError());
13530		} else {
13531			return ret
13532		}
13533		#[cfg(not(feature = "diagnose"))]
13534		return ret;
13535	}
13536	#[inline(always)]
13537	fn glGenerateMipmap(&self, target: GLenum) -> Result<()> {
13538		let ret = process_catch("glGenerateMipmap", catch_unwind(||(self.generatemipmap)(target)));
13539		#[cfg(feature = "diagnose")]
13540		if let Ok(ret) = ret {
13541			return to_result("glGenerateMipmap", ret, self.glGetError());
13542		} else {
13543			return ret
13544		}
13545		#[cfg(not(feature = "diagnose"))]
13546		return ret;
13547	}
13548	#[inline(always)]
13549	fn glBlitFramebuffer(&self, srcX0: GLint, srcY0: GLint, srcX1: GLint, srcY1: GLint, dstX0: GLint, dstY0: GLint, dstX1: GLint, dstY1: GLint, mask: GLbitfield, filter: GLenum) -> Result<()> {
13550		let ret = process_catch("glBlitFramebuffer", catch_unwind(||(self.blitframebuffer)(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter)));
13551		#[cfg(feature = "diagnose")]
13552		if let Ok(ret) = ret {
13553			return to_result("glBlitFramebuffer", ret, self.glGetError());
13554		} else {
13555			return ret
13556		}
13557		#[cfg(not(feature = "diagnose"))]
13558		return ret;
13559	}
13560	#[inline(always)]
13561	fn glRenderbufferStorageMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()> {
13562		let ret = process_catch("glRenderbufferStorageMultisample", catch_unwind(||(self.renderbufferstoragemultisample)(target, samples, internalformat, width, height)));
13563		#[cfg(feature = "diagnose")]
13564		if let Ok(ret) = ret {
13565			return to_result("glRenderbufferStorageMultisample", ret, self.glGetError());
13566		} else {
13567			return ret
13568		}
13569		#[cfg(not(feature = "diagnose"))]
13570		return ret;
13571	}
13572	#[inline(always)]
13573	fn glFramebufferTextureLayer(&self, target: GLenum, attachment: GLenum, texture: GLuint, level: GLint, layer: GLint) -> Result<()> {
13574		let ret = process_catch("glFramebufferTextureLayer", catch_unwind(||(self.framebuffertexturelayer)(target, attachment, texture, level, layer)));
13575		#[cfg(feature = "diagnose")]
13576		if let Ok(ret) = ret {
13577			return to_result("glFramebufferTextureLayer", ret, self.glGetError());
13578		} else {
13579			return ret
13580		}
13581		#[cfg(not(feature = "diagnose"))]
13582		return ret;
13583	}
13584	#[inline(always)]
13585	fn glMapBufferRange(&self, target: GLenum, offset: GLintptr, length: GLsizeiptr, access: GLbitfield) -> Result<*mut c_void> {
13586		let ret = process_catch("glMapBufferRange", catch_unwind(||(self.mapbufferrange)(target, offset, length, access)));
13587		#[cfg(feature = "diagnose")]
13588		if let Ok(ret) = ret {
13589			return to_result("glMapBufferRange", ret, self.glGetError());
13590		} else {
13591			return ret
13592		}
13593		#[cfg(not(feature = "diagnose"))]
13594		return ret;
13595	}
13596	#[inline(always)]
13597	fn glFlushMappedBufferRange(&self, target: GLenum, offset: GLintptr, length: GLsizeiptr) -> Result<()> {
13598		let ret = process_catch("glFlushMappedBufferRange", catch_unwind(||(self.flushmappedbufferrange)(target, offset, length)));
13599		#[cfg(feature = "diagnose")]
13600		if let Ok(ret) = ret {
13601			return to_result("glFlushMappedBufferRange", ret, self.glGetError());
13602		} else {
13603			return ret
13604		}
13605		#[cfg(not(feature = "diagnose"))]
13606		return ret;
13607	}
13608	#[inline(always)]
13609	fn glBindVertexArray(&self, array: GLuint) -> Result<()> {
13610		let ret = process_catch("glBindVertexArray", catch_unwind(||(self.bindvertexarray)(array)));
13611		#[cfg(feature = "diagnose")]
13612		if let Ok(ret) = ret {
13613			return to_result("glBindVertexArray", ret, self.glGetError());
13614		} else {
13615			return ret
13616		}
13617		#[cfg(not(feature = "diagnose"))]
13618		return ret;
13619	}
13620	#[inline(always)]
13621	fn glDeleteVertexArrays(&self, n: GLsizei, arrays: *const GLuint) -> Result<()> {
13622		let ret = process_catch("glDeleteVertexArrays", catch_unwind(||(self.deletevertexarrays)(n, arrays)));
13623		#[cfg(feature = "diagnose")]
13624		if let Ok(ret) = ret {
13625			return to_result("glDeleteVertexArrays", ret, self.glGetError());
13626		} else {
13627			return ret
13628		}
13629		#[cfg(not(feature = "diagnose"))]
13630		return ret;
13631	}
13632	#[inline(always)]
13633	fn glGenVertexArrays(&self, n: GLsizei, arrays: *mut GLuint) -> Result<()> {
13634		let ret = process_catch("glGenVertexArrays", catch_unwind(||(self.genvertexarrays)(n, arrays)));
13635		#[cfg(feature = "diagnose")]
13636		if let Ok(ret) = ret {
13637			return to_result("glGenVertexArrays", ret, self.glGetError());
13638		} else {
13639			return ret
13640		}
13641		#[cfg(not(feature = "diagnose"))]
13642		return ret;
13643	}
13644	#[inline(always)]
13645	fn glIsVertexArray(&self, array: GLuint) -> Result<GLboolean> {
13646		let ret = process_catch("glIsVertexArray", catch_unwind(||(self.isvertexarray)(array)));
13647		#[cfg(feature = "diagnose")]
13648		if let Ok(ret) = ret {
13649			return to_result("glIsVertexArray", ret, self.glGetError());
13650		} else {
13651			return ret
13652		}
13653		#[cfg(not(feature = "diagnose"))]
13654		return ret;
13655	}
13656}
13657
13658impl Version30 {
13659	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
13660		let (_spec, major, minor, release) = base.get_version();
13661		if (major, minor, release) < (3, 0, 0) {
13662			return Self::default();
13663		}
13664		Self {
13665			available: true,
13666			geterror: {let proc = get_proc_address("glGetError"); if proc == null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
13667			colormaski: {let proc = get_proc_address("glColorMaski"); if proc == null() {dummy_pfnglcolormaskiproc} else {unsafe{transmute(proc)}}},
13668			getbooleani_v: {let proc = get_proc_address("glGetBooleani_v"); if proc == null() {dummy_pfnglgetbooleani_vproc} else {unsafe{transmute(proc)}}},
13669			getintegeri_v: {let proc = get_proc_address("glGetIntegeri_v"); if proc == null() {dummy_pfnglgetintegeri_vproc} else {unsafe{transmute(proc)}}},
13670			enablei: {let proc = get_proc_address("glEnablei"); if proc == null() {dummy_pfnglenableiproc} else {unsafe{transmute(proc)}}},
13671			disablei: {let proc = get_proc_address("glDisablei"); if proc == null() {dummy_pfngldisableiproc} else {unsafe{transmute(proc)}}},
13672			isenabledi: {let proc = get_proc_address("glIsEnabledi"); if proc == null() {dummy_pfnglisenablediproc} else {unsafe{transmute(proc)}}},
13673			begintransformfeedback: {let proc = get_proc_address("glBeginTransformFeedback"); if proc == null() {dummy_pfnglbegintransformfeedbackproc} else {unsafe{transmute(proc)}}},
13674			endtransformfeedback: {let proc = get_proc_address("glEndTransformFeedback"); if proc == null() {dummy_pfnglendtransformfeedbackproc} else {unsafe{transmute(proc)}}},
13675			bindbufferrange: {let proc = get_proc_address("glBindBufferRange"); if proc == null() {dummy_pfnglbindbufferrangeproc} else {unsafe{transmute(proc)}}},
13676			bindbufferbase: {let proc = get_proc_address("glBindBufferBase"); if proc == null() {dummy_pfnglbindbufferbaseproc} else {unsafe{transmute(proc)}}},
13677			transformfeedbackvaryings: {let proc = get_proc_address("glTransformFeedbackVaryings"); if proc == null() {dummy_pfngltransformfeedbackvaryingsproc} else {unsafe{transmute(proc)}}},
13678			gettransformfeedbackvarying: {let proc = get_proc_address("glGetTransformFeedbackVarying"); if proc == null() {dummy_pfnglgettransformfeedbackvaryingproc} else {unsafe{transmute(proc)}}},
13679			clampcolor: {let proc = get_proc_address("glClampColor"); if proc == null() {dummy_pfnglclampcolorproc} else {unsafe{transmute(proc)}}},
13680			beginconditionalrender: {let proc = get_proc_address("glBeginConditionalRender"); if proc == null() {dummy_pfnglbeginconditionalrenderproc} else {unsafe{transmute(proc)}}},
13681			endconditionalrender: {let proc = get_proc_address("glEndConditionalRender"); if proc == null() {dummy_pfnglendconditionalrenderproc} else {unsafe{transmute(proc)}}},
13682			vertexattribipointer: {let proc = get_proc_address("glVertexAttribIPointer"); if proc == null() {dummy_pfnglvertexattribipointerproc} else {unsafe{transmute(proc)}}},
13683			getvertexattribiiv: {let proc = get_proc_address("glGetVertexAttribIiv"); if proc == null() {dummy_pfnglgetvertexattribiivproc} else {unsafe{transmute(proc)}}},
13684			getvertexattribiuiv: {let proc = get_proc_address("glGetVertexAttribIuiv"); if proc == null() {dummy_pfnglgetvertexattribiuivproc} else {unsafe{transmute(proc)}}},
13685			vertexattribi1i: {let proc = get_proc_address("glVertexAttribI1i"); if proc == null() {dummy_pfnglvertexattribi1iproc} else {unsafe{transmute(proc)}}},
13686			vertexattribi2i: {let proc = get_proc_address("glVertexAttribI2i"); if proc == null() {dummy_pfnglvertexattribi2iproc} else {unsafe{transmute(proc)}}},
13687			vertexattribi3i: {let proc = get_proc_address("glVertexAttribI3i"); if proc == null() {dummy_pfnglvertexattribi3iproc} else {unsafe{transmute(proc)}}},
13688			vertexattribi4i: {let proc = get_proc_address("glVertexAttribI4i"); if proc == null() {dummy_pfnglvertexattribi4iproc} else {unsafe{transmute(proc)}}},
13689			vertexattribi1ui: {let proc = get_proc_address("glVertexAttribI1ui"); if proc == null() {dummy_pfnglvertexattribi1uiproc} else {unsafe{transmute(proc)}}},
13690			vertexattribi2ui: {let proc = get_proc_address("glVertexAttribI2ui"); if proc == null() {dummy_pfnglvertexattribi2uiproc} else {unsafe{transmute(proc)}}},
13691			vertexattribi3ui: {let proc = get_proc_address("glVertexAttribI3ui"); if proc == null() {dummy_pfnglvertexattribi3uiproc} else {unsafe{transmute(proc)}}},
13692			vertexattribi4ui: {let proc = get_proc_address("glVertexAttribI4ui"); if proc == null() {dummy_pfnglvertexattribi4uiproc} else {unsafe{transmute(proc)}}},
13693			vertexattribi1iv: {let proc = get_proc_address("glVertexAttribI1iv"); if proc == null() {dummy_pfnglvertexattribi1ivproc} else {unsafe{transmute(proc)}}},
13694			vertexattribi2iv: {let proc = get_proc_address("glVertexAttribI2iv"); if proc == null() {dummy_pfnglvertexattribi2ivproc} else {unsafe{transmute(proc)}}},
13695			vertexattribi3iv: {let proc = get_proc_address("glVertexAttribI3iv"); if proc == null() {dummy_pfnglvertexattribi3ivproc} else {unsafe{transmute(proc)}}},
13696			vertexattribi4iv: {let proc = get_proc_address("glVertexAttribI4iv"); if proc == null() {dummy_pfnglvertexattribi4ivproc} else {unsafe{transmute(proc)}}},
13697			vertexattribi1uiv: {let proc = get_proc_address("glVertexAttribI1uiv"); if proc == null() {dummy_pfnglvertexattribi1uivproc} else {unsafe{transmute(proc)}}},
13698			vertexattribi2uiv: {let proc = get_proc_address("glVertexAttribI2uiv"); if proc == null() {dummy_pfnglvertexattribi2uivproc} else {unsafe{transmute(proc)}}},
13699			vertexattribi3uiv: {let proc = get_proc_address("glVertexAttribI3uiv"); if proc == null() {dummy_pfnglvertexattribi3uivproc} else {unsafe{transmute(proc)}}},
13700			vertexattribi4uiv: {let proc = get_proc_address("glVertexAttribI4uiv"); if proc == null() {dummy_pfnglvertexattribi4uivproc} else {unsafe{transmute(proc)}}},
13701			vertexattribi4bv: {let proc = get_proc_address("glVertexAttribI4bv"); if proc == null() {dummy_pfnglvertexattribi4bvproc} else {unsafe{transmute(proc)}}},
13702			vertexattribi4sv: {let proc = get_proc_address("glVertexAttribI4sv"); if proc == null() {dummy_pfnglvertexattribi4svproc} else {unsafe{transmute(proc)}}},
13703			vertexattribi4ubv: {let proc = get_proc_address("glVertexAttribI4ubv"); if proc == null() {dummy_pfnglvertexattribi4ubvproc} else {unsafe{transmute(proc)}}},
13704			vertexattribi4usv: {let proc = get_proc_address("glVertexAttribI4usv"); if proc == null() {dummy_pfnglvertexattribi4usvproc} else {unsafe{transmute(proc)}}},
13705			getuniformuiv: {let proc = get_proc_address("glGetUniformuiv"); if proc == null() {dummy_pfnglgetuniformuivproc} else {unsafe{transmute(proc)}}},
13706			bindfragdatalocation: {let proc = get_proc_address("glBindFragDataLocation"); if proc == null() {dummy_pfnglbindfragdatalocationproc} else {unsafe{transmute(proc)}}},
13707			getfragdatalocation: {let proc = get_proc_address("glGetFragDataLocation"); if proc == null() {dummy_pfnglgetfragdatalocationproc} else {unsafe{transmute(proc)}}},
13708			uniform1ui: {let proc = get_proc_address("glUniform1ui"); if proc == null() {dummy_pfngluniform1uiproc} else {unsafe{transmute(proc)}}},
13709			uniform2ui: {let proc = get_proc_address("glUniform2ui"); if proc == null() {dummy_pfngluniform2uiproc} else {unsafe{transmute(proc)}}},
13710			uniform3ui: {let proc = get_proc_address("glUniform3ui"); if proc == null() {dummy_pfngluniform3uiproc} else {unsafe{transmute(proc)}}},
13711			uniform4ui: {let proc = get_proc_address("glUniform4ui"); if proc == null() {dummy_pfngluniform4uiproc} else {unsafe{transmute(proc)}}},
13712			uniform1uiv: {let proc = get_proc_address("glUniform1uiv"); if proc == null() {dummy_pfngluniform1uivproc} else {unsafe{transmute(proc)}}},
13713			uniform2uiv: {let proc = get_proc_address("glUniform2uiv"); if proc == null() {dummy_pfngluniform2uivproc} else {unsafe{transmute(proc)}}},
13714			uniform3uiv: {let proc = get_proc_address("glUniform3uiv"); if proc == null() {dummy_pfngluniform3uivproc} else {unsafe{transmute(proc)}}},
13715			uniform4uiv: {let proc = get_proc_address("glUniform4uiv"); if proc == null() {dummy_pfngluniform4uivproc} else {unsafe{transmute(proc)}}},
13716			texparameteriiv: {let proc = get_proc_address("glTexParameterIiv"); if proc == null() {dummy_pfngltexparameteriivproc} else {unsafe{transmute(proc)}}},
13717			texparameteriuiv: {let proc = get_proc_address("glTexParameterIuiv"); if proc == null() {dummy_pfngltexparameteriuivproc} else {unsafe{transmute(proc)}}},
13718			gettexparameteriiv: {let proc = get_proc_address("glGetTexParameterIiv"); if proc == null() {dummy_pfnglgettexparameteriivproc} else {unsafe{transmute(proc)}}},
13719			gettexparameteriuiv: {let proc = get_proc_address("glGetTexParameterIuiv"); if proc == null() {dummy_pfnglgettexparameteriuivproc} else {unsafe{transmute(proc)}}},
13720			clearbufferiv: {let proc = get_proc_address("glClearBufferiv"); if proc == null() {dummy_pfnglclearbufferivproc} else {unsafe{transmute(proc)}}},
13721			clearbufferuiv: {let proc = get_proc_address("glClearBufferuiv"); if proc == null() {dummy_pfnglclearbufferuivproc} else {unsafe{transmute(proc)}}},
13722			clearbufferfv: {let proc = get_proc_address("glClearBufferfv"); if proc == null() {dummy_pfnglclearbufferfvproc} else {unsafe{transmute(proc)}}},
13723			clearbufferfi: {let proc = get_proc_address("glClearBufferfi"); if proc == null() {dummy_pfnglclearbufferfiproc} else {unsafe{transmute(proc)}}},
13724			getstringi: {let proc = get_proc_address("glGetStringi"); if proc == null() {dummy_pfnglgetstringiproc} else {unsafe{transmute(proc)}}},
13725			isrenderbuffer: {let proc = get_proc_address("glIsRenderbuffer"); if proc == null() {dummy_pfnglisrenderbufferproc} else {unsafe{transmute(proc)}}},
13726			bindrenderbuffer: {let proc = get_proc_address("glBindRenderbuffer"); if proc == null() {dummy_pfnglbindrenderbufferproc} else {unsafe{transmute(proc)}}},
13727			deleterenderbuffers: {let proc = get_proc_address("glDeleteRenderbuffers"); if proc == null() {dummy_pfngldeleterenderbuffersproc} else {unsafe{transmute(proc)}}},
13728			genrenderbuffers: {let proc = get_proc_address("glGenRenderbuffers"); if proc == null() {dummy_pfnglgenrenderbuffersproc} else {unsafe{transmute(proc)}}},
13729			renderbufferstorage: {let proc = get_proc_address("glRenderbufferStorage"); if proc == null() {dummy_pfnglrenderbufferstorageproc} else {unsafe{transmute(proc)}}},
13730			getrenderbufferparameteriv: {let proc = get_proc_address("glGetRenderbufferParameteriv"); if proc == null() {dummy_pfnglgetrenderbufferparameterivproc} else {unsafe{transmute(proc)}}},
13731			isframebuffer: {let proc = get_proc_address("glIsFramebuffer"); if proc == null() {dummy_pfnglisframebufferproc} else {unsafe{transmute(proc)}}},
13732			bindframebuffer: {let proc = get_proc_address("glBindFramebuffer"); if proc == null() {dummy_pfnglbindframebufferproc} else {unsafe{transmute(proc)}}},
13733			deleteframebuffers: {let proc = get_proc_address("glDeleteFramebuffers"); if proc == null() {dummy_pfngldeleteframebuffersproc} else {unsafe{transmute(proc)}}},
13734			genframebuffers: {let proc = get_proc_address("glGenFramebuffers"); if proc == null() {dummy_pfnglgenframebuffersproc} else {unsafe{transmute(proc)}}},
13735			checkframebufferstatus: {let proc = get_proc_address("glCheckFramebufferStatus"); if proc == null() {dummy_pfnglcheckframebufferstatusproc} else {unsafe{transmute(proc)}}},
13736			framebuffertexture1d: {let proc = get_proc_address("glFramebufferTexture1D"); if proc == null() {dummy_pfnglframebuffertexture1dproc} else {unsafe{transmute(proc)}}},
13737			framebuffertexture2d: {let proc = get_proc_address("glFramebufferTexture2D"); if proc == null() {dummy_pfnglframebuffertexture2dproc} else {unsafe{transmute(proc)}}},
13738			framebuffertexture3d: {let proc = get_proc_address("glFramebufferTexture3D"); if proc == null() {dummy_pfnglframebuffertexture3dproc} else {unsafe{transmute(proc)}}},
13739			framebufferrenderbuffer: {let proc = get_proc_address("glFramebufferRenderbuffer"); if proc == null() {dummy_pfnglframebufferrenderbufferproc} else {unsafe{transmute(proc)}}},
13740			getframebufferattachmentparameteriv: {let proc = get_proc_address("glGetFramebufferAttachmentParameteriv"); if proc == null() {dummy_pfnglgetframebufferattachmentparameterivproc} else {unsafe{transmute(proc)}}},
13741			generatemipmap: {let proc = get_proc_address("glGenerateMipmap"); if proc == null() {dummy_pfnglgeneratemipmapproc} else {unsafe{transmute(proc)}}},
13742			blitframebuffer: {let proc = get_proc_address("glBlitFramebuffer"); if proc == null() {dummy_pfnglblitframebufferproc} else {unsafe{transmute(proc)}}},
13743			renderbufferstoragemultisample: {let proc = get_proc_address("glRenderbufferStorageMultisample"); if proc == null() {dummy_pfnglrenderbufferstoragemultisampleproc} else {unsafe{transmute(proc)}}},
13744			framebuffertexturelayer: {let proc = get_proc_address("glFramebufferTextureLayer"); if proc == null() {dummy_pfnglframebuffertexturelayerproc} else {unsafe{transmute(proc)}}},
13745			mapbufferrange: {let proc = get_proc_address("glMapBufferRange"); if proc == null() {dummy_pfnglmapbufferrangeproc} else {unsafe{transmute(proc)}}},
13746			flushmappedbufferrange: {let proc = get_proc_address("glFlushMappedBufferRange"); if proc == null() {dummy_pfnglflushmappedbufferrangeproc} else {unsafe{transmute(proc)}}},
13747			bindvertexarray: {let proc = get_proc_address("glBindVertexArray"); if proc == null() {dummy_pfnglbindvertexarrayproc} else {unsafe{transmute(proc)}}},
13748			deletevertexarrays: {let proc = get_proc_address("glDeleteVertexArrays"); if proc == null() {dummy_pfngldeletevertexarraysproc} else {unsafe{transmute(proc)}}},
13749			genvertexarrays: {let proc = get_proc_address("glGenVertexArrays"); if proc == null() {dummy_pfnglgenvertexarraysproc} else {unsafe{transmute(proc)}}},
13750			isvertexarray: {let proc = get_proc_address("glIsVertexArray"); if proc == null() {dummy_pfnglisvertexarrayproc} else {unsafe{transmute(proc)}}},
13751		}
13752	}
13753	#[inline(always)]
13754	pub fn get_available(&self) -> bool {
13755		self.available
13756	}
13757}
13758
13759impl Default for Version30 {
13760	fn default() -> Self {
13761		Self {
13762			available: false,
13763			geterror: dummy_pfnglgeterrorproc,
13764			colormaski: dummy_pfnglcolormaskiproc,
13765			getbooleani_v: dummy_pfnglgetbooleani_vproc,
13766			getintegeri_v: dummy_pfnglgetintegeri_vproc,
13767			enablei: dummy_pfnglenableiproc,
13768			disablei: dummy_pfngldisableiproc,
13769			isenabledi: dummy_pfnglisenablediproc,
13770			begintransformfeedback: dummy_pfnglbegintransformfeedbackproc,
13771			endtransformfeedback: dummy_pfnglendtransformfeedbackproc,
13772			bindbufferrange: dummy_pfnglbindbufferrangeproc,
13773			bindbufferbase: dummy_pfnglbindbufferbaseproc,
13774			transformfeedbackvaryings: dummy_pfngltransformfeedbackvaryingsproc,
13775			gettransformfeedbackvarying: dummy_pfnglgettransformfeedbackvaryingproc,
13776			clampcolor: dummy_pfnglclampcolorproc,
13777			beginconditionalrender: dummy_pfnglbeginconditionalrenderproc,
13778			endconditionalrender: dummy_pfnglendconditionalrenderproc,
13779			vertexattribipointer: dummy_pfnglvertexattribipointerproc,
13780			getvertexattribiiv: dummy_pfnglgetvertexattribiivproc,
13781			getvertexattribiuiv: dummy_pfnglgetvertexattribiuivproc,
13782			vertexattribi1i: dummy_pfnglvertexattribi1iproc,
13783			vertexattribi2i: dummy_pfnglvertexattribi2iproc,
13784			vertexattribi3i: dummy_pfnglvertexattribi3iproc,
13785			vertexattribi4i: dummy_pfnglvertexattribi4iproc,
13786			vertexattribi1ui: dummy_pfnglvertexattribi1uiproc,
13787			vertexattribi2ui: dummy_pfnglvertexattribi2uiproc,
13788			vertexattribi3ui: dummy_pfnglvertexattribi3uiproc,
13789			vertexattribi4ui: dummy_pfnglvertexattribi4uiproc,
13790			vertexattribi1iv: dummy_pfnglvertexattribi1ivproc,
13791			vertexattribi2iv: dummy_pfnglvertexattribi2ivproc,
13792			vertexattribi3iv: dummy_pfnglvertexattribi3ivproc,
13793			vertexattribi4iv: dummy_pfnglvertexattribi4ivproc,
13794			vertexattribi1uiv: dummy_pfnglvertexattribi1uivproc,
13795			vertexattribi2uiv: dummy_pfnglvertexattribi2uivproc,
13796			vertexattribi3uiv: dummy_pfnglvertexattribi3uivproc,
13797			vertexattribi4uiv: dummy_pfnglvertexattribi4uivproc,
13798			vertexattribi4bv: dummy_pfnglvertexattribi4bvproc,
13799			vertexattribi4sv: dummy_pfnglvertexattribi4svproc,
13800			vertexattribi4ubv: dummy_pfnglvertexattribi4ubvproc,
13801			vertexattribi4usv: dummy_pfnglvertexattribi4usvproc,
13802			getuniformuiv: dummy_pfnglgetuniformuivproc,
13803			bindfragdatalocation: dummy_pfnglbindfragdatalocationproc,
13804			getfragdatalocation: dummy_pfnglgetfragdatalocationproc,
13805			uniform1ui: dummy_pfngluniform1uiproc,
13806			uniform2ui: dummy_pfngluniform2uiproc,
13807			uniform3ui: dummy_pfngluniform3uiproc,
13808			uniform4ui: dummy_pfngluniform4uiproc,
13809			uniform1uiv: dummy_pfngluniform1uivproc,
13810			uniform2uiv: dummy_pfngluniform2uivproc,
13811			uniform3uiv: dummy_pfngluniform3uivproc,
13812			uniform4uiv: dummy_pfngluniform4uivproc,
13813			texparameteriiv: dummy_pfngltexparameteriivproc,
13814			texparameteriuiv: dummy_pfngltexparameteriuivproc,
13815			gettexparameteriiv: dummy_pfnglgettexparameteriivproc,
13816			gettexparameteriuiv: dummy_pfnglgettexparameteriuivproc,
13817			clearbufferiv: dummy_pfnglclearbufferivproc,
13818			clearbufferuiv: dummy_pfnglclearbufferuivproc,
13819			clearbufferfv: dummy_pfnglclearbufferfvproc,
13820			clearbufferfi: dummy_pfnglclearbufferfiproc,
13821			getstringi: dummy_pfnglgetstringiproc,
13822			isrenderbuffer: dummy_pfnglisrenderbufferproc,
13823			bindrenderbuffer: dummy_pfnglbindrenderbufferproc,
13824			deleterenderbuffers: dummy_pfngldeleterenderbuffersproc,
13825			genrenderbuffers: dummy_pfnglgenrenderbuffersproc,
13826			renderbufferstorage: dummy_pfnglrenderbufferstorageproc,
13827			getrenderbufferparameteriv: dummy_pfnglgetrenderbufferparameterivproc,
13828			isframebuffer: dummy_pfnglisframebufferproc,
13829			bindframebuffer: dummy_pfnglbindframebufferproc,
13830			deleteframebuffers: dummy_pfngldeleteframebuffersproc,
13831			genframebuffers: dummy_pfnglgenframebuffersproc,
13832			checkframebufferstatus: dummy_pfnglcheckframebufferstatusproc,
13833			framebuffertexture1d: dummy_pfnglframebuffertexture1dproc,
13834			framebuffertexture2d: dummy_pfnglframebuffertexture2dproc,
13835			framebuffertexture3d: dummy_pfnglframebuffertexture3dproc,
13836			framebufferrenderbuffer: dummy_pfnglframebufferrenderbufferproc,
13837			getframebufferattachmentparameteriv: dummy_pfnglgetframebufferattachmentparameterivproc,
13838			generatemipmap: dummy_pfnglgeneratemipmapproc,
13839			blitframebuffer: dummy_pfnglblitframebufferproc,
13840			renderbufferstoragemultisample: dummy_pfnglrenderbufferstoragemultisampleproc,
13841			framebuffertexturelayer: dummy_pfnglframebuffertexturelayerproc,
13842			mapbufferrange: dummy_pfnglmapbufferrangeproc,
13843			flushmappedbufferrange: dummy_pfnglflushmappedbufferrangeproc,
13844			bindvertexarray: dummy_pfnglbindvertexarrayproc,
13845			deletevertexarrays: dummy_pfngldeletevertexarraysproc,
13846			genvertexarrays: dummy_pfnglgenvertexarraysproc,
13847			isvertexarray: dummy_pfnglisvertexarrayproc,
13848		}
13849	}
13850}
13851impl Debug for Version30 {
13852	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
13853		if self.available {
13854			f.debug_struct("Version30")
13855			.field("available", &self.available)
13856			.field("colormaski", unsafe{if transmute::<_, *const c_void>(self.colormaski) == (dummy_pfnglcolormaskiproc as *const c_void) {&null::<PFNGLCOLORMASKIPROC>()} else {&self.colormaski}})
13857			.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}})
13858			.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}})
13859			.field("enablei", unsafe{if transmute::<_, *const c_void>(self.enablei) == (dummy_pfnglenableiproc as *const c_void) {&null::<PFNGLENABLEIPROC>()} else {&self.enablei}})
13860			.field("disablei", unsafe{if transmute::<_, *const c_void>(self.disablei) == (dummy_pfngldisableiproc as *const c_void) {&null::<PFNGLDISABLEIPROC>()} else {&self.disablei}})
13861			.field("isenabledi", unsafe{if transmute::<_, *const c_void>(self.isenabledi) == (dummy_pfnglisenablediproc as *const c_void) {&null::<PFNGLISENABLEDIPROC>()} else {&self.isenabledi}})
13862			.field("begintransformfeedback", unsafe{if transmute::<_, *const c_void>(self.begintransformfeedback) == (dummy_pfnglbegintransformfeedbackproc as *const c_void) {&null::<PFNGLBEGINTRANSFORMFEEDBACKPROC>()} else {&self.begintransformfeedback}})
13863			.field("endtransformfeedback", unsafe{if transmute::<_, *const c_void>(self.endtransformfeedback) == (dummy_pfnglendtransformfeedbackproc as *const c_void) {&null::<PFNGLENDTRANSFORMFEEDBACKPROC>()} else {&self.endtransformfeedback}})
13864			.field("bindbufferrange", unsafe{if transmute::<_, *const c_void>(self.bindbufferrange) == (dummy_pfnglbindbufferrangeproc as *const c_void) {&null::<PFNGLBINDBUFFERRANGEPROC>()} else {&self.bindbufferrange}})
13865			.field("bindbufferbase", unsafe{if transmute::<_, *const c_void>(self.bindbufferbase) == (dummy_pfnglbindbufferbaseproc as *const c_void) {&null::<PFNGLBINDBUFFERBASEPROC>()} else {&self.bindbufferbase}})
13866			.field("transformfeedbackvaryings", unsafe{if transmute::<_, *const c_void>(self.transformfeedbackvaryings) == (dummy_pfngltransformfeedbackvaryingsproc as *const c_void) {&null::<PFNGLTRANSFORMFEEDBACKVARYINGSPROC>()} else {&self.transformfeedbackvaryings}})
13867			.field("gettransformfeedbackvarying", unsafe{if transmute::<_, *const c_void>(self.gettransformfeedbackvarying) == (dummy_pfnglgettransformfeedbackvaryingproc as *const c_void) {&null::<PFNGLGETTRANSFORMFEEDBACKVARYINGPROC>()} else {&self.gettransformfeedbackvarying}})
13868			.field("clampcolor", unsafe{if transmute::<_, *const c_void>(self.clampcolor) == (dummy_pfnglclampcolorproc as *const c_void) {&null::<PFNGLCLAMPCOLORPROC>()} else {&self.clampcolor}})
13869			.field("beginconditionalrender", unsafe{if transmute::<_, *const c_void>(self.beginconditionalrender) == (dummy_pfnglbeginconditionalrenderproc as *const c_void) {&null::<PFNGLBEGINCONDITIONALRENDERPROC>()} else {&self.beginconditionalrender}})
13870			.field("endconditionalrender", unsafe{if transmute::<_, *const c_void>(self.endconditionalrender) == (dummy_pfnglendconditionalrenderproc as *const c_void) {&null::<PFNGLENDCONDITIONALRENDERPROC>()} else {&self.endconditionalrender}})
13871			.field("vertexattribipointer", unsafe{if transmute::<_, *const c_void>(self.vertexattribipointer) == (dummy_pfnglvertexattribipointerproc as *const c_void) {&null::<PFNGLVERTEXATTRIBIPOINTERPROC>()} else {&self.vertexattribipointer}})
13872			.field("getvertexattribiiv", unsafe{if transmute::<_, *const c_void>(self.getvertexattribiiv) == (dummy_pfnglgetvertexattribiivproc as *const c_void) {&null::<PFNGLGETVERTEXATTRIBIIVPROC>()} else {&self.getvertexattribiiv}})
13873			.field("getvertexattribiuiv", unsafe{if transmute::<_, *const c_void>(self.getvertexattribiuiv) == (dummy_pfnglgetvertexattribiuivproc as *const c_void) {&null::<PFNGLGETVERTEXATTRIBIUIVPROC>()} else {&self.getvertexattribiuiv}})
13874			.field("vertexattribi1i", unsafe{if transmute::<_, *const c_void>(self.vertexattribi1i) == (dummy_pfnglvertexattribi1iproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI1IPROC>()} else {&self.vertexattribi1i}})
13875			.field("vertexattribi2i", unsafe{if transmute::<_, *const c_void>(self.vertexattribi2i) == (dummy_pfnglvertexattribi2iproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI2IPROC>()} else {&self.vertexattribi2i}})
13876			.field("vertexattribi3i", unsafe{if transmute::<_, *const c_void>(self.vertexattribi3i) == (dummy_pfnglvertexattribi3iproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI3IPROC>()} else {&self.vertexattribi3i}})
13877			.field("vertexattribi4i", unsafe{if transmute::<_, *const c_void>(self.vertexattribi4i) == (dummy_pfnglvertexattribi4iproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI4IPROC>()} else {&self.vertexattribi4i}})
13878			.field("vertexattribi1ui", unsafe{if transmute::<_, *const c_void>(self.vertexattribi1ui) == (dummy_pfnglvertexattribi1uiproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI1UIPROC>()} else {&self.vertexattribi1ui}})
13879			.field("vertexattribi2ui", unsafe{if transmute::<_, *const c_void>(self.vertexattribi2ui) == (dummy_pfnglvertexattribi2uiproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI2UIPROC>()} else {&self.vertexattribi2ui}})
13880			.field("vertexattribi3ui", unsafe{if transmute::<_, *const c_void>(self.vertexattribi3ui) == (dummy_pfnglvertexattribi3uiproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI3UIPROC>()} else {&self.vertexattribi3ui}})
13881			.field("vertexattribi4ui", unsafe{if transmute::<_, *const c_void>(self.vertexattribi4ui) == (dummy_pfnglvertexattribi4uiproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI4UIPROC>()} else {&self.vertexattribi4ui}})
13882			.field("vertexattribi1iv", unsafe{if transmute::<_, *const c_void>(self.vertexattribi1iv) == (dummy_pfnglvertexattribi1ivproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI1IVPROC>()} else {&self.vertexattribi1iv}})
13883			.field("vertexattribi2iv", unsafe{if transmute::<_, *const c_void>(self.vertexattribi2iv) == (dummy_pfnglvertexattribi2ivproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI2IVPROC>()} else {&self.vertexattribi2iv}})
13884			.field("vertexattribi3iv", unsafe{if transmute::<_, *const c_void>(self.vertexattribi3iv) == (dummy_pfnglvertexattribi3ivproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI3IVPROC>()} else {&self.vertexattribi3iv}})
13885			.field("vertexattribi4iv", unsafe{if transmute::<_, *const c_void>(self.vertexattribi4iv) == (dummy_pfnglvertexattribi4ivproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI4IVPROC>()} else {&self.vertexattribi4iv}})
13886			.field("vertexattribi1uiv", unsafe{if transmute::<_, *const c_void>(self.vertexattribi1uiv) == (dummy_pfnglvertexattribi1uivproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI1UIVPROC>()} else {&self.vertexattribi1uiv}})
13887			.field("vertexattribi2uiv", unsafe{if transmute::<_, *const c_void>(self.vertexattribi2uiv) == (dummy_pfnglvertexattribi2uivproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI2UIVPROC>()} else {&self.vertexattribi2uiv}})
13888			.field("vertexattribi3uiv", unsafe{if transmute::<_, *const c_void>(self.vertexattribi3uiv) == (dummy_pfnglvertexattribi3uivproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI3UIVPROC>()} else {&self.vertexattribi3uiv}})
13889			.field("vertexattribi4uiv", unsafe{if transmute::<_, *const c_void>(self.vertexattribi4uiv) == (dummy_pfnglvertexattribi4uivproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI4UIVPROC>()} else {&self.vertexattribi4uiv}})
13890			.field("vertexattribi4bv", unsafe{if transmute::<_, *const c_void>(self.vertexattribi4bv) == (dummy_pfnglvertexattribi4bvproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI4BVPROC>()} else {&self.vertexattribi4bv}})
13891			.field("vertexattribi4sv", unsafe{if transmute::<_, *const c_void>(self.vertexattribi4sv) == (dummy_pfnglvertexattribi4svproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI4SVPROC>()} else {&self.vertexattribi4sv}})
13892			.field("vertexattribi4ubv", unsafe{if transmute::<_, *const c_void>(self.vertexattribi4ubv) == (dummy_pfnglvertexattribi4ubvproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI4UBVPROC>()} else {&self.vertexattribi4ubv}})
13893			.field("vertexattribi4usv", unsafe{if transmute::<_, *const c_void>(self.vertexattribi4usv) == (dummy_pfnglvertexattribi4usvproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI4USVPROC>()} else {&self.vertexattribi4usv}})
13894			.field("getuniformuiv", unsafe{if transmute::<_, *const c_void>(self.getuniformuiv) == (dummy_pfnglgetuniformuivproc as *const c_void) {&null::<PFNGLGETUNIFORMUIVPROC>()} else {&self.getuniformuiv}})
13895			.field("bindfragdatalocation", unsafe{if transmute::<_, *const c_void>(self.bindfragdatalocation) == (dummy_pfnglbindfragdatalocationproc as *const c_void) {&null::<PFNGLBINDFRAGDATALOCATIONPROC>()} else {&self.bindfragdatalocation}})
13896			.field("getfragdatalocation", unsafe{if transmute::<_, *const c_void>(self.getfragdatalocation) == (dummy_pfnglgetfragdatalocationproc as *const c_void) {&null::<PFNGLGETFRAGDATALOCATIONPROC>()} else {&self.getfragdatalocation}})
13897			.field("uniform1ui", unsafe{if transmute::<_, *const c_void>(self.uniform1ui) == (dummy_pfngluniform1uiproc as *const c_void) {&null::<PFNGLUNIFORM1UIPROC>()} else {&self.uniform1ui}})
13898			.field("uniform2ui", unsafe{if transmute::<_, *const c_void>(self.uniform2ui) == (dummy_pfngluniform2uiproc as *const c_void) {&null::<PFNGLUNIFORM2UIPROC>()} else {&self.uniform2ui}})
13899			.field("uniform3ui", unsafe{if transmute::<_, *const c_void>(self.uniform3ui) == (dummy_pfngluniform3uiproc as *const c_void) {&null::<PFNGLUNIFORM3UIPROC>()} else {&self.uniform3ui}})
13900			.field("uniform4ui", unsafe{if transmute::<_, *const c_void>(self.uniform4ui) == (dummy_pfngluniform4uiproc as *const c_void) {&null::<PFNGLUNIFORM4UIPROC>()} else {&self.uniform4ui}})
13901			.field("uniform1uiv", unsafe{if transmute::<_, *const c_void>(self.uniform1uiv) == (dummy_pfngluniform1uivproc as *const c_void) {&null::<PFNGLUNIFORM1UIVPROC>()} else {&self.uniform1uiv}})
13902			.field("uniform2uiv", unsafe{if transmute::<_, *const c_void>(self.uniform2uiv) == (dummy_pfngluniform2uivproc as *const c_void) {&null::<PFNGLUNIFORM2UIVPROC>()} else {&self.uniform2uiv}})
13903			.field("uniform3uiv", unsafe{if transmute::<_, *const c_void>(self.uniform3uiv) == (dummy_pfngluniform3uivproc as *const c_void) {&null::<PFNGLUNIFORM3UIVPROC>()} else {&self.uniform3uiv}})
13904			.field("uniform4uiv", unsafe{if transmute::<_, *const c_void>(self.uniform4uiv) == (dummy_pfngluniform4uivproc as *const c_void) {&null::<PFNGLUNIFORM4UIVPROC>()} else {&self.uniform4uiv}})
13905			.field("texparameteriiv", unsafe{if transmute::<_, *const c_void>(self.texparameteriiv) == (dummy_pfngltexparameteriivproc as *const c_void) {&null::<PFNGLTEXPARAMETERIIVPROC>()} else {&self.texparameteriiv}})
13906			.field("texparameteriuiv", unsafe{if transmute::<_, *const c_void>(self.texparameteriuiv) == (dummy_pfngltexparameteriuivproc as *const c_void) {&null::<PFNGLTEXPARAMETERIUIVPROC>()} else {&self.texparameteriuiv}})
13907			.field("gettexparameteriiv", unsafe{if transmute::<_, *const c_void>(self.gettexparameteriiv) == (dummy_pfnglgettexparameteriivproc as *const c_void) {&null::<PFNGLGETTEXPARAMETERIIVPROC>()} else {&self.gettexparameteriiv}})
13908			.field("gettexparameteriuiv", unsafe{if transmute::<_, *const c_void>(self.gettexparameteriuiv) == (dummy_pfnglgettexparameteriuivproc as *const c_void) {&null::<PFNGLGETTEXPARAMETERIUIVPROC>()} else {&self.gettexparameteriuiv}})
13909			.field("clearbufferiv", unsafe{if transmute::<_, *const c_void>(self.clearbufferiv) == (dummy_pfnglclearbufferivproc as *const c_void) {&null::<PFNGLCLEARBUFFERIVPROC>()} else {&self.clearbufferiv}})
13910			.field("clearbufferuiv", unsafe{if transmute::<_, *const c_void>(self.clearbufferuiv) == (dummy_pfnglclearbufferuivproc as *const c_void) {&null::<PFNGLCLEARBUFFERUIVPROC>()} else {&self.clearbufferuiv}})
13911			.field("clearbufferfv", unsafe{if transmute::<_, *const c_void>(self.clearbufferfv) == (dummy_pfnglclearbufferfvproc as *const c_void) {&null::<PFNGLCLEARBUFFERFVPROC>()} else {&self.clearbufferfv}})
13912			.field("clearbufferfi", unsafe{if transmute::<_, *const c_void>(self.clearbufferfi) == (dummy_pfnglclearbufferfiproc as *const c_void) {&null::<PFNGLCLEARBUFFERFIPROC>()} else {&self.clearbufferfi}})
13913			.field("getstringi", unsafe{if transmute::<_, *const c_void>(self.getstringi) == (dummy_pfnglgetstringiproc as *const c_void) {&null::<PFNGLGETSTRINGIPROC>()} else {&self.getstringi}})
13914			.field("isrenderbuffer", unsafe{if transmute::<_, *const c_void>(self.isrenderbuffer) == (dummy_pfnglisrenderbufferproc as *const c_void) {&null::<PFNGLISRENDERBUFFERPROC>()} else {&self.isrenderbuffer}})
13915			.field("bindrenderbuffer", unsafe{if transmute::<_, *const c_void>(self.bindrenderbuffer) == (dummy_pfnglbindrenderbufferproc as *const c_void) {&null::<PFNGLBINDRENDERBUFFERPROC>()} else {&self.bindrenderbuffer}})
13916			.field("deleterenderbuffers", unsafe{if transmute::<_, *const c_void>(self.deleterenderbuffers) == (dummy_pfngldeleterenderbuffersproc as *const c_void) {&null::<PFNGLDELETERENDERBUFFERSPROC>()} else {&self.deleterenderbuffers}})
13917			.field("genrenderbuffers", unsafe{if transmute::<_, *const c_void>(self.genrenderbuffers) == (dummy_pfnglgenrenderbuffersproc as *const c_void) {&null::<PFNGLGENRENDERBUFFERSPROC>()} else {&self.genrenderbuffers}})
13918			.field("renderbufferstorage", unsafe{if transmute::<_, *const c_void>(self.renderbufferstorage) == (dummy_pfnglrenderbufferstorageproc as *const c_void) {&null::<PFNGLRENDERBUFFERSTORAGEPROC>()} else {&self.renderbufferstorage}})
13919			.field("getrenderbufferparameteriv", unsafe{if transmute::<_, *const c_void>(self.getrenderbufferparameteriv) == (dummy_pfnglgetrenderbufferparameterivproc as *const c_void) {&null::<PFNGLGETRENDERBUFFERPARAMETERIVPROC>()} else {&self.getrenderbufferparameteriv}})
13920			.field("isframebuffer", unsafe{if transmute::<_, *const c_void>(self.isframebuffer) == (dummy_pfnglisframebufferproc as *const c_void) {&null::<PFNGLISFRAMEBUFFERPROC>()} else {&self.isframebuffer}})
13921			.field("bindframebuffer", unsafe{if transmute::<_, *const c_void>(self.bindframebuffer) == (dummy_pfnglbindframebufferproc as *const c_void) {&null::<PFNGLBINDFRAMEBUFFERPROC>()} else {&self.bindframebuffer}})
13922			.field("deleteframebuffers", unsafe{if transmute::<_, *const c_void>(self.deleteframebuffers) == (dummy_pfngldeleteframebuffersproc as *const c_void) {&null::<PFNGLDELETEFRAMEBUFFERSPROC>()} else {&self.deleteframebuffers}})
13923			.field("genframebuffers", unsafe{if transmute::<_, *const c_void>(self.genframebuffers) == (dummy_pfnglgenframebuffersproc as *const c_void) {&null::<PFNGLGENFRAMEBUFFERSPROC>()} else {&self.genframebuffers}})
13924			.field("checkframebufferstatus", unsafe{if transmute::<_, *const c_void>(self.checkframebufferstatus) == (dummy_pfnglcheckframebufferstatusproc as *const c_void) {&null::<PFNGLCHECKFRAMEBUFFERSTATUSPROC>()} else {&self.checkframebufferstatus}})
13925			.field("framebuffertexture1d", unsafe{if transmute::<_, *const c_void>(self.framebuffertexture1d) == (dummy_pfnglframebuffertexture1dproc as *const c_void) {&null::<PFNGLFRAMEBUFFERTEXTURE1DPROC>()} else {&self.framebuffertexture1d}})
13926			.field("framebuffertexture2d", unsafe{if transmute::<_, *const c_void>(self.framebuffertexture2d) == (dummy_pfnglframebuffertexture2dproc as *const c_void) {&null::<PFNGLFRAMEBUFFERTEXTURE2DPROC>()} else {&self.framebuffertexture2d}})
13927			.field("framebuffertexture3d", unsafe{if transmute::<_, *const c_void>(self.framebuffertexture3d) == (dummy_pfnglframebuffertexture3dproc as *const c_void) {&null::<PFNGLFRAMEBUFFERTEXTURE3DPROC>()} else {&self.framebuffertexture3d}})
13928			.field("framebufferrenderbuffer", unsafe{if transmute::<_, *const c_void>(self.framebufferrenderbuffer) == (dummy_pfnglframebufferrenderbufferproc as *const c_void) {&null::<PFNGLFRAMEBUFFERRENDERBUFFERPROC>()} else {&self.framebufferrenderbuffer}})
13929			.field("getframebufferattachmentparameteriv", unsafe{if transmute::<_, *const c_void>(self.getframebufferattachmentparameteriv) == (dummy_pfnglgetframebufferattachmentparameterivproc as *const c_void) {&null::<PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC>()} else {&self.getframebufferattachmentparameteriv}})
13930			.field("generatemipmap", unsafe{if transmute::<_, *const c_void>(self.generatemipmap) == (dummy_pfnglgeneratemipmapproc as *const c_void) {&null::<PFNGLGENERATEMIPMAPPROC>()} else {&self.generatemipmap}})
13931			.field("blitframebuffer", unsafe{if transmute::<_, *const c_void>(self.blitframebuffer) == (dummy_pfnglblitframebufferproc as *const c_void) {&null::<PFNGLBLITFRAMEBUFFERPROC>()} else {&self.blitframebuffer}})
13932			.field("renderbufferstoragemultisample", unsafe{if transmute::<_, *const c_void>(self.renderbufferstoragemultisample) == (dummy_pfnglrenderbufferstoragemultisampleproc as *const c_void) {&null::<PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC>()} else {&self.renderbufferstoragemultisample}})
13933			.field("framebuffertexturelayer", unsafe{if transmute::<_, *const c_void>(self.framebuffertexturelayer) == (dummy_pfnglframebuffertexturelayerproc as *const c_void) {&null::<PFNGLFRAMEBUFFERTEXTURELAYERPROC>()} else {&self.framebuffertexturelayer}})
13934			.field("mapbufferrange", unsafe{if transmute::<_, *const c_void>(self.mapbufferrange) == (dummy_pfnglmapbufferrangeproc as *const c_void) {&null::<PFNGLMAPBUFFERRANGEPROC>()} else {&self.mapbufferrange}})
13935			.field("flushmappedbufferrange", unsafe{if transmute::<_, *const c_void>(self.flushmappedbufferrange) == (dummy_pfnglflushmappedbufferrangeproc as *const c_void) {&null::<PFNGLFLUSHMAPPEDBUFFERRANGEPROC>()} else {&self.flushmappedbufferrange}})
13936			.field("bindvertexarray", unsafe{if transmute::<_, *const c_void>(self.bindvertexarray) == (dummy_pfnglbindvertexarrayproc as *const c_void) {&null::<PFNGLBINDVERTEXARRAYPROC>()} else {&self.bindvertexarray}})
13937			.field("deletevertexarrays", unsafe{if transmute::<_, *const c_void>(self.deletevertexarrays) == (dummy_pfngldeletevertexarraysproc as *const c_void) {&null::<PFNGLDELETEVERTEXARRAYSPROC>()} else {&self.deletevertexarrays}})
13938			.field("genvertexarrays", unsafe{if transmute::<_, *const c_void>(self.genvertexarrays) == (dummy_pfnglgenvertexarraysproc as *const c_void) {&null::<PFNGLGENVERTEXARRAYSPROC>()} else {&self.genvertexarrays}})
13939			.field("isvertexarray", unsafe{if transmute::<_, *const c_void>(self.isvertexarray) == (dummy_pfnglisvertexarrayproc as *const c_void) {&null::<PFNGLISVERTEXARRAYPROC>()} else {&self.isvertexarray}})
13940			.finish()
13941		} else {
13942			f.debug_struct("Version30")
13943			.field("available", &self.available)
13944			.finish_non_exhaustive()
13945		}
13946	}
13947}
13948
13949/// The prototype to the OpenGL function `DrawArraysInstanced`
13950type PFNGLDRAWARRAYSINSTANCEDPROC = extern "system" fn(GLenum, GLint, GLsizei, GLsizei);
13951
13952/// The prototype to the OpenGL function `DrawElementsInstanced`
13953type PFNGLDRAWELEMENTSINSTANCEDPROC = extern "system" fn(GLenum, GLsizei, GLenum, *const c_void, GLsizei);
13954
13955/// The prototype to the OpenGL function `TexBuffer`
13956type PFNGLTEXBUFFERPROC = extern "system" fn(GLenum, GLenum, GLuint);
13957
13958/// The prototype to the OpenGL function `PrimitiveRestartIndex`
13959type PFNGLPRIMITIVERESTARTINDEXPROC = extern "system" fn(GLuint);
13960
13961/// The prototype to the OpenGL function `CopyBufferSubData`
13962type PFNGLCOPYBUFFERSUBDATAPROC = extern "system" fn(GLenum, GLenum, GLintptr, GLintptr, GLsizeiptr);
13963
13964/// The prototype to the OpenGL function `GetUniformIndices`
13965type PFNGLGETUNIFORMINDICESPROC = extern "system" fn(GLuint, GLsizei, *const *const GLchar, *mut GLuint);
13966
13967/// The prototype to the OpenGL function `GetActiveUniformsiv`
13968type PFNGLGETACTIVEUNIFORMSIVPROC = extern "system" fn(GLuint, GLsizei, *const GLuint, GLenum, *mut GLint);
13969
13970/// The prototype to the OpenGL function `GetActiveUniformName`
13971type PFNGLGETACTIVEUNIFORMNAMEPROC = extern "system" fn(GLuint, GLuint, GLsizei, *mut GLsizei, *mut GLchar);
13972
13973/// The prototype to the OpenGL function `GetUniformBlockIndex`
13974type PFNGLGETUNIFORMBLOCKINDEXPROC = extern "system" fn(GLuint, *const GLchar) -> GLuint;
13975
13976/// The prototype to the OpenGL function `GetActiveUniformBlockiv`
13977type PFNGLGETACTIVEUNIFORMBLOCKIVPROC = extern "system" fn(GLuint, GLuint, GLenum, *mut GLint);
13978
13979/// The prototype to the OpenGL function `GetActiveUniformBlockName`
13980type PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC = extern "system" fn(GLuint, GLuint, GLsizei, *mut GLsizei, *mut GLchar);
13981
13982/// The prototype to the OpenGL function `UniformBlockBinding`
13983type PFNGLUNIFORMBLOCKBINDINGPROC = extern "system" fn(GLuint, GLuint, GLuint);
13984
13985/// The dummy function of `DrawArraysInstanced()`
13986extern "system" fn dummy_pfngldrawarraysinstancedproc (_: GLenum, _: GLint, _: GLsizei, _: GLsizei) {
13987	panic!("OpenGL function pointer `glDrawArraysInstanced()` is null.")
13988}
13989
13990/// The dummy function of `DrawElementsInstanced()`
13991extern "system" fn dummy_pfngldrawelementsinstancedproc (_: GLenum, _: GLsizei, _: GLenum, _: *const c_void, _: GLsizei) {
13992	panic!("OpenGL function pointer `glDrawElementsInstanced()` is null.")
13993}
13994
13995/// The dummy function of `TexBuffer()`
13996extern "system" fn dummy_pfngltexbufferproc (_: GLenum, _: GLenum, _: GLuint) {
13997	panic!("OpenGL function pointer `glTexBuffer()` is null.")
13998}
13999
14000/// The dummy function of `PrimitiveRestartIndex()`
14001extern "system" fn dummy_pfnglprimitiverestartindexproc (_: GLuint) {
14002	panic!("OpenGL function pointer `glPrimitiveRestartIndex()` is null.")
14003}
14004
14005/// The dummy function of `CopyBufferSubData()`
14006extern "system" fn dummy_pfnglcopybuffersubdataproc (_: GLenum, _: GLenum, _: GLintptr, _: GLintptr, _: GLsizeiptr) {
14007	panic!("OpenGL function pointer `glCopyBufferSubData()` is null.")
14008}
14009
14010/// The dummy function of `GetUniformIndices()`
14011extern "system" fn dummy_pfnglgetuniformindicesproc (_: GLuint, _: GLsizei, _: *const *const GLchar, _: *mut GLuint) {
14012	panic!("OpenGL function pointer `glGetUniformIndices()` is null.")
14013}
14014
14015/// The dummy function of `GetActiveUniformsiv()`
14016extern "system" fn dummy_pfnglgetactiveuniformsivproc (_: GLuint, _: GLsizei, _: *const GLuint, _: GLenum, _: *mut GLint) {
14017	panic!("OpenGL function pointer `glGetActiveUniformsiv()` is null.")
14018}
14019
14020/// The dummy function of `GetActiveUniformName()`
14021extern "system" fn dummy_pfnglgetactiveuniformnameproc (_: GLuint, _: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLchar) {
14022	panic!("OpenGL function pointer `glGetActiveUniformName()` is null.")
14023}
14024
14025/// The dummy function of `GetUniformBlockIndex()`
14026extern "system" fn dummy_pfnglgetuniformblockindexproc (_: GLuint, _: *const GLchar) -> GLuint {
14027	panic!("OpenGL function pointer `glGetUniformBlockIndex()` is null.")
14028}
14029
14030/// The dummy function of `GetActiveUniformBlockiv()`
14031extern "system" fn dummy_pfnglgetactiveuniformblockivproc (_: GLuint, _: GLuint, _: GLenum, _: *mut GLint) {
14032	panic!("OpenGL function pointer `glGetActiveUniformBlockiv()` is null.")
14033}
14034
14035/// The dummy function of `GetActiveUniformBlockName()`
14036extern "system" fn dummy_pfnglgetactiveuniformblocknameproc (_: GLuint, _: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLchar) {
14037	panic!("OpenGL function pointer `glGetActiveUniformBlockName()` is null.")
14038}
14039
14040/// The dummy function of `UniformBlockBinding()`
14041extern "system" fn dummy_pfngluniformblockbindingproc (_: GLuint, _: GLuint, _: GLuint) {
14042	panic!("OpenGL function pointer `glUniformBlockBinding()` is null.")
14043}
14044/// Constant value defined from OpenGL 3.1
14045pub const GL_SAMPLER_2D_RECT: GLenum = 0x8B63;
14046
14047/// Constant value defined from OpenGL 3.1
14048pub const GL_SAMPLER_2D_RECT_SHADOW: GLenum = 0x8B64;
14049
14050/// Constant value defined from OpenGL 3.1
14051pub const GL_SAMPLER_BUFFER: GLenum = 0x8DC2;
14052
14053/// Constant value defined from OpenGL 3.1
14054pub const GL_INT_SAMPLER_2D_RECT: GLenum = 0x8DCD;
14055
14056/// Constant value defined from OpenGL 3.1
14057pub const GL_INT_SAMPLER_BUFFER: GLenum = 0x8DD0;
14058
14059/// Constant value defined from OpenGL 3.1
14060pub const GL_UNSIGNED_INT_SAMPLER_2D_RECT: GLenum = 0x8DD5;
14061
14062/// Constant value defined from OpenGL 3.1
14063pub const GL_UNSIGNED_INT_SAMPLER_BUFFER: GLenum = 0x8DD8;
14064
14065/// Constant value defined from OpenGL 3.1
14066pub const GL_TEXTURE_BUFFER: GLenum = 0x8C2A;
14067
14068/// Constant value defined from OpenGL 3.1
14069pub const GL_MAX_TEXTURE_BUFFER_SIZE: GLenum = 0x8C2B;
14070
14071/// Constant value defined from OpenGL 3.1
14072pub const GL_TEXTURE_BINDING_BUFFER: GLenum = 0x8C2C;
14073
14074/// Constant value defined from OpenGL 3.1
14075pub const GL_TEXTURE_BUFFER_DATA_STORE_BINDING: GLenum = 0x8C2D;
14076
14077/// Constant value defined from OpenGL 3.1
14078pub const GL_TEXTURE_RECTANGLE: GLenum = 0x84F5;
14079
14080/// Constant value defined from OpenGL 3.1
14081pub const GL_TEXTURE_BINDING_RECTANGLE: GLenum = 0x84F6;
14082
14083/// Constant value defined from OpenGL 3.1
14084pub const GL_PROXY_TEXTURE_RECTANGLE: GLenum = 0x84F7;
14085
14086/// Constant value defined from OpenGL 3.1
14087pub const GL_MAX_RECTANGLE_TEXTURE_SIZE: GLenum = 0x84F8;
14088
14089/// Constant value defined from OpenGL 3.1
14090pub const GL_R8_SNORM: GLenum = 0x8F94;
14091
14092/// Constant value defined from OpenGL 3.1
14093pub const GL_RG8_SNORM: GLenum = 0x8F95;
14094
14095/// Constant value defined from OpenGL 3.1
14096pub const GL_RGB8_SNORM: GLenum = 0x8F96;
14097
14098/// Constant value defined from OpenGL 3.1
14099pub const GL_RGBA8_SNORM: GLenum = 0x8F97;
14100
14101/// Constant value defined from OpenGL 3.1
14102pub const GL_R16_SNORM: GLenum = 0x8F98;
14103
14104/// Constant value defined from OpenGL 3.1
14105pub const GL_RG16_SNORM: GLenum = 0x8F99;
14106
14107/// Constant value defined from OpenGL 3.1
14108pub const GL_RGB16_SNORM: GLenum = 0x8F9A;
14109
14110/// Constant value defined from OpenGL 3.1
14111pub const GL_RGBA16_SNORM: GLenum = 0x8F9B;
14112
14113/// Constant value defined from OpenGL 3.1
14114pub const GL_SIGNED_NORMALIZED: GLenum = 0x8F9C;
14115
14116/// Constant value defined from OpenGL 3.1
14117pub const GL_PRIMITIVE_RESTART: GLenum = 0x8F9D;
14118
14119/// Constant value defined from OpenGL 3.1
14120pub const GL_PRIMITIVE_RESTART_INDEX: GLenum = 0x8F9E;
14121
14122/// Constant value defined from OpenGL 3.1
14123pub const GL_COPY_READ_BUFFER: GLenum = 0x8F36;
14124
14125/// Constant value defined from OpenGL 3.1
14126pub const GL_COPY_WRITE_BUFFER: GLenum = 0x8F37;
14127
14128/// Constant value defined from OpenGL 3.1
14129pub const GL_UNIFORM_BUFFER: GLenum = 0x8A11;
14130
14131/// Constant value defined from OpenGL 3.1
14132pub const GL_UNIFORM_BUFFER_BINDING: GLenum = 0x8A28;
14133
14134/// Constant value defined from OpenGL 3.1
14135pub const GL_UNIFORM_BUFFER_START: GLenum = 0x8A29;
14136
14137/// Constant value defined from OpenGL 3.1
14138pub const GL_UNIFORM_BUFFER_SIZE: GLenum = 0x8A2A;
14139
14140/// Constant value defined from OpenGL 3.1
14141pub const GL_MAX_VERTEX_UNIFORM_BLOCKS: GLenum = 0x8A2B;
14142
14143/// Constant value defined from OpenGL 3.1
14144pub const GL_MAX_GEOMETRY_UNIFORM_BLOCKS: GLenum = 0x8A2C;
14145
14146/// Constant value defined from OpenGL 3.1
14147pub const GL_MAX_FRAGMENT_UNIFORM_BLOCKS: GLenum = 0x8A2D;
14148
14149/// Constant value defined from OpenGL 3.1
14150pub const GL_MAX_COMBINED_UNIFORM_BLOCKS: GLenum = 0x8A2E;
14151
14152/// Constant value defined from OpenGL 3.1
14153pub const GL_MAX_UNIFORM_BUFFER_BINDINGS: GLenum = 0x8A2F;
14154
14155/// Constant value defined from OpenGL 3.1
14156pub const GL_MAX_UNIFORM_BLOCK_SIZE: GLenum = 0x8A30;
14157
14158/// Constant value defined from OpenGL 3.1
14159pub const GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: GLenum = 0x8A31;
14160
14161/// Constant value defined from OpenGL 3.1
14162pub const GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS: GLenum = 0x8A32;
14163
14164/// Constant value defined from OpenGL 3.1
14165pub const GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: GLenum = 0x8A33;
14166
14167/// Constant value defined from OpenGL 3.1
14168pub const GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT: GLenum = 0x8A34;
14169
14170/// Constant value defined from OpenGL 3.1
14171pub const GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH: GLenum = 0x8A35;
14172
14173/// Constant value defined from OpenGL 3.1
14174pub const GL_ACTIVE_UNIFORM_BLOCKS: GLenum = 0x8A36;
14175
14176/// Constant value defined from OpenGL 3.1
14177pub const GL_UNIFORM_TYPE: GLenum = 0x8A37;
14178
14179/// Constant value defined from OpenGL 3.1
14180pub const GL_UNIFORM_SIZE: GLenum = 0x8A38;
14181
14182/// Constant value defined from OpenGL 3.1
14183pub const GL_UNIFORM_NAME_LENGTH: GLenum = 0x8A39;
14184
14185/// Constant value defined from OpenGL 3.1
14186pub const GL_UNIFORM_BLOCK_INDEX: GLenum = 0x8A3A;
14187
14188/// Constant value defined from OpenGL 3.1
14189pub const GL_UNIFORM_OFFSET: GLenum = 0x8A3B;
14190
14191/// Constant value defined from OpenGL 3.1
14192pub const GL_UNIFORM_ARRAY_STRIDE: GLenum = 0x8A3C;
14193
14194/// Constant value defined from OpenGL 3.1
14195pub const GL_UNIFORM_MATRIX_STRIDE: GLenum = 0x8A3D;
14196
14197/// Constant value defined from OpenGL 3.1
14198pub const GL_UNIFORM_IS_ROW_MAJOR: GLenum = 0x8A3E;
14199
14200/// Constant value defined from OpenGL 3.1
14201pub const GL_UNIFORM_BLOCK_BINDING: GLenum = 0x8A3F;
14202
14203/// Constant value defined from OpenGL 3.1
14204pub const GL_UNIFORM_BLOCK_DATA_SIZE: GLenum = 0x8A40;
14205
14206/// Constant value defined from OpenGL 3.1
14207pub const GL_UNIFORM_BLOCK_NAME_LENGTH: GLenum = 0x8A41;
14208
14209/// Constant value defined from OpenGL 3.1
14210pub const GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS: GLenum = 0x8A42;
14211
14212/// Constant value defined from OpenGL 3.1
14213pub const GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: GLenum = 0x8A43;
14214
14215/// Constant value defined from OpenGL 3.1
14216pub const GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: GLenum = 0x8A44;
14217
14218/// Constant value defined from OpenGL 3.1
14219pub const GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER: GLenum = 0x8A45;
14220
14221/// Constant value defined from OpenGL 3.1
14222pub const GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: GLenum = 0x8A46;
14223
14224/// Constant value defined from OpenGL 3.1
14225pub const GL_INVALID_INDEX: GLuint = 0xFFFFFFFFu32;
14226
14227/// Functions from OpenGL version 3.1
14228pub trait GL_3_1 {
14229	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
14230	fn glGetError(&self) -> GLenum;
14231
14232	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawArraysInstanced.xhtml>
14233	fn glDrawArraysInstanced(&self, mode: GLenum, first: GLint, count: GLsizei, instancecount: GLsizei) -> Result<()>;
14234
14235	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsInstanced.xhtml>
14236	fn glDrawElementsInstanced(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei) -> Result<()>;
14237
14238	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexBuffer.xhtml>
14239	fn glTexBuffer(&self, target: GLenum, internalformat: GLenum, buffer: GLuint) -> Result<()>;
14240
14241	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPrimitiveRestartIndex.xhtml>
14242	fn glPrimitiveRestartIndex(&self, index: GLuint) -> Result<()>;
14243
14244	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyBufferSubData.xhtml>
14245	fn glCopyBufferSubData(&self, readTarget: GLenum, writeTarget: GLenum, readOffset: GLintptr, writeOffset: GLintptr, size: GLsizeiptr) -> Result<()>;
14246
14247	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformIndices.xhtml>
14248	fn glGetUniformIndices(&self, program: GLuint, uniformCount: GLsizei, uniformNames: *const *const GLchar, uniformIndices: *mut GLuint) -> Result<()>;
14249
14250	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveUniformsiv.xhtml>
14251	fn glGetActiveUniformsiv(&self, program: GLuint, uniformCount: GLsizei, uniformIndices: *const GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
14252
14253	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveUniformName.xhtml>
14254	fn glGetActiveUniformName(&self, program: GLuint, uniformIndex: GLuint, bufSize: GLsizei, length: *mut GLsizei, uniformName: *mut GLchar) -> Result<()>;
14255
14256	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformBlockIndex.xhtml>
14257	fn glGetUniformBlockIndex(&self, program: GLuint, uniformBlockName: *const GLchar) -> Result<GLuint>;
14258
14259	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveUniformBlockiv.xhtml>
14260	fn glGetActiveUniformBlockiv(&self, program: GLuint, uniformBlockIndex: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
14261
14262	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveUniformBlockName.xhtml>
14263	fn glGetActiveUniformBlockName(&self, program: GLuint, uniformBlockIndex: GLuint, bufSize: GLsizei, length: *mut GLsizei, uniformBlockName: *mut GLchar) -> Result<()>;
14264
14265	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformBlockBinding.xhtml>
14266	fn glUniformBlockBinding(&self, program: GLuint, uniformBlockIndex: GLuint, uniformBlockBinding: GLuint) -> Result<()>;
14267}
14268/// Functions from OpenGL version 3.1
14269#[derive(Clone, Copy, PartialEq, Eq, Hash)]
14270pub struct Version31 {
14271	/// Is OpenGL version 3.1 available
14272	available: bool,
14273
14274	/// The function pointer to `glGetError()`
14275	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
14276	pub geterror: PFNGLGETERRORPROC,
14277
14278	/// The function pointer to `glDrawArraysInstanced()`
14279	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawArraysInstanced.xhtml>
14280	pub drawarraysinstanced: PFNGLDRAWARRAYSINSTANCEDPROC,
14281
14282	/// The function pointer to `glDrawElementsInstanced()`
14283	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsInstanced.xhtml>
14284	pub drawelementsinstanced: PFNGLDRAWELEMENTSINSTANCEDPROC,
14285
14286	/// The function pointer to `glTexBuffer()`
14287	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexBuffer.xhtml>
14288	pub texbuffer: PFNGLTEXBUFFERPROC,
14289
14290	/// The function pointer to `glPrimitiveRestartIndex()`
14291	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPrimitiveRestartIndex.xhtml>
14292	pub primitiverestartindex: PFNGLPRIMITIVERESTARTINDEXPROC,
14293
14294	/// The function pointer to `glCopyBufferSubData()`
14295	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyBufferSubData.xhtml>
14296	pub copybuffersubdata: PFNGLCOPYBUFFERSUBDATAPROC,
14297
14298	/// The function pointer to `glGetUniformIndices()`
14299	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformIndices.xhtml>
14300	pub getuniformindices: PFNGLGETUNIFORMINDICESPROC,
14301
14302	/// The function pointer to `glGetActiveUniformsiv()`
14303	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveUniformsiv.xhtml>
14304	pub getactiveuniformsiv: PFNGLGETACTIVEUNIFORMSIVPROC,
14305
14306	/// The function pointer to `glGetActiveUniformName()`
14307	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveUniformName.xhtml>
14308	pub getactiveuniformname: PFNGLGETACTIVEUNIFORMNAMEPROC,
14309
14310	/// The function pointer to `glGetUniformBlockIndex()`
14311	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformBlockIndex.xhtml>
14312	pub getuniformblockindex: PFNGLGETUNIFORMBLOCKINDEXPROC,
14313
14314	/// The function pointer to `glGetActiveUniformBlockiv()`
14315	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveUniformBlockiv.xhtml>
14316	pub getactiveuniformblockiv: PFNGLGETACTIVEUNIFORMBLOCKIVPROC,
14317
14318	/// The function pointer to `glGetActiveUniformBlockName()`
14319	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveUniformBlockName.xhtml>
14320	pub getactiveuniformblockname: PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC,
14321
14322	/// The function pointer to `glUniformBlockBinding()`
14323	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformBlockBinding.xhtml>
14324	pub uniformblockbinding: PFNGLUNIFORMBLOCKBINDINGPROC,
14325}
14326
14327impl GL_3_1 for Version31 {
14328	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
14329	#[inline(always)]
14330	fn glGetError(&self) -> GLenum {
14331		(self.geterror)()
14332	}
14333	#[inline(always)]
14334	fn glDrawArraysInstanced(&self, mode: GLenum, first: GLint, count: GLsizei, instancecount: GLsizei) -> Result<()> {
14335		let ret = process_catch("glDrawArraysInstanced", catch_unwind(||(self.drawarraysinstanced)(mode, first, count, instancecount)));
14336		#[cfg(feature = "diagnose")]
14337		if let Ok(ret) = ret {
14338			return to_result("glDrawArraysInstanced", ret, self.glGetError());
14339		} else {
14340			return ret
14341		}
14342		#[cfg(not(feature = "diagnose"))]
14343		return ret;
14344	}
14345	#[inline(always)]
14346	fn glDrawElementsInstanced(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei) -> Result<()> {
14347		let ret = process_catch("glDrawElementsInstanced", catch_unwind(||(self.drawelementsinstanced)(mode, count, type_, indices, instancecount)));
14348		#[cfg(feature = "diagnose")]
14349		if let Ok(ret) = ret {
14350			return to_result("glDrawElementsInstanced", ret, self.glGetError());
14351		} else {
14352			return ret
14353		}
14354		#[cfg(not(feature = "diagnose"))]
14355		return ret;
14356	}
14357	#[inline(always)]
14358	fn glTexBuffer(&self, target: GLenum, internalformat: GLenum, buffer: GLuint) -> Result<()> {
14359		let ret = process_catch("glTexBuffer", catch_unwind(||(self.texbuffer)(target, internalformat, buffer)));
14360		#[cfg(feature = "diagnose")]
14361		if let Ok(ret) = ret {
14362			return to_result("glTexBuffer", ret, self.glGetError());
14363		} else {
14364			return ret
14365		}
14366		#[cfg(not(feature = "diagnose"))]
14367		return ret;
14368	}
14369	#[inline(always)]
14370	fn glPrimitiveRestartIndex(&self, index: GLuint) -> Result<()> {
14371		let ret = process_catch("glPrimitiveRestartIndex", catch_unwind(||(self.primitiverestartindex)(index)));
14372		#[cfg(feature = "diagnose")]
14373		if let Ok(ret) = ret {
14374			return to_result("glPrimitiveRestartIndex", ret, self.glGetError());
14375		} else {
14376			return ret
14377		}
14378		#[cfg(not(feature = "diagnose"))]
14379		return ret;
14380	}
14381	#[inline(always)]
14382	fn glCopyBufferSubData(&self, readTarget: GLenum, writeTarget: GLenum, readOffset: GLintptr, writeOffset: GLintptr, size: GLsizeiptr) -> Result<()> {
14383		let ret = process_catch("glCopyBufferSubData", catch_unwind(||(self.copybuffersubdata)(readTarget, writeTarget, readOffset, writeOffset, size)));
14384		#[cfg(feature = "diagnose")]
14385		if let Ok(ret) = ret {
14386			return to_result("glCopyBufferSubData", ret, self.glGetError());
14387		} else {
14388			return ret
14389		}
14390		#[cfg(not(feature = "diagnose"))]
14391		return ret;
14392	}
14393	#[inline(always)]
14394	fn glGetUniformIndices(&self, program: GLuint, uniformCount: GLsizei, uniformNames: *const *const GLchar, uniformIndices: *mut GLuint) -> Result<()> {
14395		let ret = process_catch("glGetUniformIndices", catch_unwind(||(self.getuniformindices)(program, uniformCount, uniformNames, uniformIndices)));
14396		#[cfg(feature = "diagnose")]
14397		if let Ok(ret) = ret {
14398			return to_result("glGetUniformIndices", ret, self.glGetError());
14399		} else {
14400			return ret
14401		}
14402		#[cfg(not(feature = "diagnose"))]
14403		return ret;
14404	}
14405	#[inline(always)]
14406	fn glGetActiveUniformsiv(&self, program: GLuint, uniformCount: GLsizei, uniformIndices: *const GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
14407		let ret = process_catch("glGetActiveUniformsiv", catch_unwind(||(self.getactiveuniformsiv)(program, uniformCount, uniformIndices, pname, params)));
14408		#[cfg(feature = "diagnose")]
14409		if let Ok(ret) = ret {
14410			return to_result("glGetActiveUniformsiv", ret, self.glGetError());
14411		} else {
14412			return ret
14413		}
14414		#[cfg(not(feature = "diagnose"))]
14415		return ret;
14416	}
14417	#[inline(always)]
14418	fn glGetActiveUniformName(&self, program: GLuint, uniformIndex: GLuint, bufSize: GLsizei, length: *mut GLsizei, uniformName: *mut GLchar) -> Result<()> {
14419		let ret = process_catch("glGetActiveUniformName", catch_unwind(||(self.getactiveuniformname)(program, uniformIndex, bufSize, length, uniformName)));
14420		#[cfg(feature = "diagnose")]
14421		if let Ok(ret) = ret {
14422			return to_result("glGetActiveUniformName", ret, self.glGetError());
14423		} else {
14424			return ret
14425		}
14426		#[cfg(not(feature = "diagnose"))]
14427		return ret;
14428	}
14429	#[inline(always)]
14430	fn glGetUniformBlockIndex(&self, program: GLuint, uniformBlockName: *const GLchar) -> Result<GLuint> {
14431		let ret = process_catch("glGetUniformBlockIndex", catch_unwind(||(self.getuniformblockindex)(program, uniformBlockName)));
14432		#[cfg(feature = "diagnose")]
14433		if let Ok(ret) = ret {
14434			return to_result("glGetUniformBlockIndex", ret, self.glGetError());
14435		} else {
14436			return ret
14437		}
14438		#[cfg(not(feature = "diagnose"))]
14439		return ret;
14440	}
14441	#[inline(always)]
14442	fn glGetActiveUniformBlockiv(&self, program: GLuint, uniformBlockIndex: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
14443		let ret = process_catch("glGetActiveUniformBlockiv", catch_unwind(||(self.getactiveuniformblockiv)(program, uniformBlockIndex, pname, params)));
14444		#[cfg(feature = "diagnose")]
14445		if let Ok(ret) = ret {
14446			return to_result("glGetActiveUniformBlockiv", ret, self.glGetError());
14447		} else {
14448			return ret
14449		}
14450		#[cfg(not(feature = "diagnose"))]
14451		return ret;
14452	}
14453	#[inline(always)]
14454	fn glGetActiveUniformBlockName(&self, program: GLuint, uniformBlockIndex: GLuint, bufSize: GLsizei, length: *mut GLsizei, uniformBlockName: *mut GLchar) -> Result<()> {
14455		let ret = process_catch("glGetActiveUniformBlockName", catch_unwind(||(self.getactiveuniformblockname)(program, uniformBlockIndex, bufSize, length, uniformBlockName)));
14456		#[cfg(feature = "diagnose")]
14457		if let Ok(ret) = ret {
14458			return to_result("glGetActiveUniformBlockName", ret, self.glGetError());
14459		} else {
14460			return ret
14461		}
14462		#[cfg(not(feature = "diagnose"))]
14463		return ret;
14464	}
14465	#[inline(always)]
14466	fn glUniformBlockBinding(&self, program: GLuint, uniformBlockIndex: GLuint, uniformBlockBinding: GLuint) -> Result<()> {
14467		let ret = process_catch("glUniformBlockBinding", catch_unwind(||(self.uniformblockbinding)(program, uniformBlockIndex, uniformBlockBinding)));
14468		#[cfg(feature = "diagnose")]
14469		if let Ok(ret) = ret {
14470			return to_result("glUniformBlockBinding", ret, self.glGetError());
14471		} else {
14472			return ret
14473		}
14474		#[cfg(not(feature = "diagnose"))]
14475		return ret;
14476	}
14477}
14478
14479impl Version31 {
14480	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
14481		let (_spec, major, minor, release) = base.get_version();
14482		if (major, minor, release) < (3, 1, 0) {
14483			return Self::default();
14484		}
14485		Self {
14486			available: true,
14487			geterror: {let proc = get_proc_address("glGetError"); if proc == null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
14488			drawarraysinstanced: {let proc = get_proc_address("glDrawArraysInstanced"); if proc == null() {dummy_pfngldrawarraysinstancedproc} else {unsafe{transmute(proc)}}},
14489			drawelementsinstanced: {let proc = get_proc_address("glDrawElementsInstanced"); if proc == null() {dummy_pfngldrawelementsinstancedproc} else {unsafe{transmute(proc)}}},
14490			texbuffer: {let proc = get_proc_address("glTexBuffer"); if proc == null() {dummy_pfngltexbufferproc} else {unsafe{transmute(proc)}}},
14491			primitiverestartindex: {let proc = get_proc_address("glPrimitiveRestartIndex"); if proc == null() {dummy_pfnglprimitiverestartindexproc} else {unsafe{transmute(proc)}}},
14492			copybuffersubdata: {let proc = get_proc_address("glCopyBufferSubData"); if proc == null() {dummy_pfnglcopybuffersubdataproc} else {unsafe{transmute(proc)}}},
14493			getuniformindices: {let proc = get_proc_address("glGetUniformIndices"); if proc == null() {dummy_pfnglgetuniformindicesproc} else {unsafe{transmute(proc)}}},
14494			getactiveuniformsiv: {let proc = get_proc_address("glGetActiveUniformsiv"); if proc == null() {dummy_pfnglgetactiveuniformsivproc} else {unsafe{transmute(proc)}}},
14495			getactiveuniformname: {let proc = get_proc_address("glGetActiveUniformName"); if proc == null() {dummy_pfnglgetactiveuniformnameproc} else {unsafe{transmute(proc)}}},
14496			getuniformblockindex: {let proc = get_proc_address("glGetUniformBlockIndex"); if proc == null() {dummy_pfnglgetuniformblockindexproc} else {unsafe{transmute(proc)}}},
14497			getactiveuniformblockiv: {let proc = get_proc_address("glGetActiveUniformBlockiv"); if proc == null() {dummy_pfnglgetactiveuniformblockivproc} else {unsafe{transmute(proc)}}},
14498			getactiveuniformblockname: {let proc = get_proc_address("glGetActiveUniformBlockName"); if proc == null() {dummy_pfnglgetactiveuniformblocknameproc} else {unsafe{transmute(proc)}}},
14499			uniformblockbinding: {let proc = get_proc_address("glUniformBlockBinding"); if proc == null() {dummy_pfngluniformblockbindingproc} else {unsafe{transmute(proc)}}},
14500		}
14501	}
14502	#[inline(always)]
14503	pub fn get_available(&self) -> bool {
14504		self.available
14505	}
14506}
14507
14508impl Default for Version31 {
14509	fn default() -> Self {
14510		Self {
14511			available: false,
14512			geterror: dummy_pfnglgeterrorproc,
14513			drawarraysinstanced: dummy_pfngldrawarraysinstancedproc,
14514			drawelementsinstanced: dummy_pfngldrawelementsinstancedproc,
14515			texbuffer: dummy_pfngltexbufferproc,
14516			primitiverestartindex: dummy_pfnglprimitiverestartindexproc,
14517			copybuffersubdata: dummy_pfnglcopybuffersubdataproc,
14518			getuniformindices: dummy_pfnglgetuniformindicesproc,
14519			getactiveuniformsiv: dummy_pfnglgetactiveuniformsivproc,
14520			getactiveuniformname: dummy_pfnglgetactiveuniformnameproc,
14521			getuniformblockindex: dummy_pfnglgetuniformblockindexproc,
14522			getactiveuniformblockiv: dummy_pfnglgetactiveuniformblockivproc,
14523			getactiveuniformblockname: dummy_pfnglgetactiveuniformblocknameproc,
14524			uniformblockbinding: dummy_pfngluniformblockbindingproc,
14525		}
14526	}
14527}
14528impl Debug for Version31 {
14529	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
14530		if self.available {
14531			f.debug_struct("Version31")
14532			.field("available", &self.available)
14533			.field("drawarraysinstanced", unsafe{if transmute::<_, *const c_void>(self.drawarraysinstanced) == (dummy_pfngldrawarraysinstancedproc as *const c_void) {&null::<PFNGLDRAWARRAYSINSTANCEDPROC>()} else {&self.drawarraysinstanced}})
14534			.field("drawelementsinstanced", unsafe{if transmute::<_, *const c_void>(self.drawelementsinstanced) == (dummy_pfngldrawelementsinstancedproc as *const c_void) {&null::<PFNGLDRAWELEMENTSINSTANCEDPROC>()} else {&self.drawelementsinstanced}})
14535			.field("texbuffer", unsafe{if transmute::<_, *const c_void>(self.texbuffer) == (dummy_pfngltexbufferproc as *const c_void) {&null::<PFNGLTEXBUFFERPROC>()} else {&self.texbuffer}})
14536			.field("primitiverestartindex", unsafe{if transmute::<_, *const c_void>(self.primitiverestartindex) == (dummy_pfnglprimitiverestartindexproc as *const c_void) {&null::<PFNGLPRIMITIVERESTARTINDEXPROC>()} else {&self.primitiverestartindex}})
14537			.field("copybuffersubdata", unsafe{if transmute::<_, *const c_void>(self.copybuffersubdata) == (dummy_pfnglcopybuffersubdataproc as *const c_void) {&null::<PFNGLCOPYBUFFERSUBDATAPROC>()} else {&self.copybuffersubdata}})
14538			.field("getuniformindices", unsafe{if transmute::<_, *const c_void>(self.getuniformindices) == (dummy_pfnglgetuniformindicesproc as *const c_void) {&null::<PFNGLGETUNIFORMINDICESPROC>()} else {&self.getuniformindices}})
14539			.field("getactiveuniformsiv", unsafe{if transmute::<_, *const c_void>(self.getactiveuniformsiv) == (dummy_pfnglgetactiveuniformsivproc as *const c_void) {&null::<PFNGLGETACTIVEUNIFORMSIVPROC>()} else {&self.getactiveuniformsiv}})
14540			.field("getactiveuniformname", unsafe{if transmute::<_, *const c_void>(self.getactiveuniformname) == (dummy_pfnglgetactiveuniformnameproc as *const c_void) {&null::<PFNGLGETACTIVEUNIFORMNAMEPROC>()} else {&self.getactiveuniformname}})
14541			.field("getuniformblockindex", unsafe{if transmute::<_, *const c_void>(self.getuniformblockindex) == (dummy_pfnglgetuniformblockindexproc as *const c_void) {&null::<PFNGLGETUNIFORMBLOCKINDEXPROC>()} else {&self.getuniformblockindex}})
14542			.field("getactiveuniformblockiv", unsafe{if transmute::<_, *const c_void>(self.getactiveuniformblockiv) == (dummy_pfnglgetactiveuniformblockivproc as *const c_void) {&null::<PFNGLGETACTIVEUNIFORMBLOCKIVPROC>()} else {&self.getactiveuniformblockiv}})
14543			.field("getactiveuniformblockname", unsafe{if transmute::<_, *const c_void>(self.getactiveuniformblockname) == (dummy_pfnglgetactiveuniformblocknameproc as *const c_void) {&null::<PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC>()} else {&self.getactiveuniformblockname}})
14544			.field("uniformblockbinding", unsafe{if transmute::<_, *const c_void>(self.uniformblockbinding) == (dummy_pfngluniformblockbindingproc as *const c_void) {&null::<PFNGLUNIFORMBLOCKBINDINGPROC>()} else {&self.uniformblockbinding}})
14545			.finish()
14546		} else {
14547			f.debug_struct("Version31")
14548			.field("available", &self.available)
14549			.finish_non_exhaustive()
14550		}
14551	}
14552}
14553
14554/// Alias to `*mut c_void`
14555pub type GLsync = *mut c_void;
14556
14557/// Alias to `khronos_uint64_t`
14558pub type GLuint64 = khronos_uint64_t;
14559
14560/// Alias to `khronos_int64_t`
14561pub type GLint64 = khronos_int64_t;
14562
14563/// The prototype to the OpenGL function `DrawElementsBaseVertex`
14564type PFNGLDRAWELEMENTSBASEVERTEXPROC = extern "system" fn(GLenum, GLsizei, GLenum, *const c_void, GLint);
14565
14566/// The prototype to the OpenGL function `DrawRangeElementsBaseVertex`
14567type PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC = extern "system" fn(GLenum, GLuint, GLuint, GLsizei, GLenum, *const c_void, GLint);
14568
14569/// The prototype to the OpenGL function `DrawElementsInstancedBaseVertex`
14570type PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC = extern "system" fn(GLenum, GLsizei, GLenum, *const c_void, GLsizei, GLint);
14571
14572/// The prototype to the OpenGL function `MultiDrawElementsBaseVertex`
14573type PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC = extern "system" fn(GLenum, *const GLsizei, GLenum, *const *const c_void, GLsizei, *const GLint);
14574
14575/// The prototype to the OpenGL function `ProvokingVertex`
14576type PFNGLPROVOKINGVERTEXPROC = extern "system" fn(GLenum);
14577
14578/// The prototype to the OpenGL function `FenceSync`
14579type PFNGLFENCESYNCPROC = extern "system" fn(GLenum, GLbitfield) -> GLsync;
14580
14581/// The prototype to the OpenGL function `IsSync`
14582type PFNGLISSYNCPROC = extern "system" fn(GLsync) -> GLboolean;
14583
14584/// The prototype to the OpenGL function `DeleteSync`
14585type PFNGLDELETESYNCPROC = extern "system" fn(GLsync);
14586
14587/// The prototype to the OpenGL function `ClientWaitSync`
14588type PFNGLCLIENTWAITSYNCPROC = extern "system" fn(GLsync, GLbitfield, GLuint64) -> GLenum;
14589
14590/// The prototype to the OpenGL function `WaitSync`
14591type PFNGLWAITSYNCPROC = extern "system" fn(GLsync, GLbitfield, GLuint64);
14592
14593/// The prototype to the OpenGL function `GetInteger64v`
14594type PFNGLGETINTEGER64VPROC = extern "system" fn(GLenum, *mut GLint64);
14595
14596/// The prototype to the OpenGL function `GetSynciv`
14597type PFNGLGETSYNCIVPROC = extern "system" fn(GLsync, GLenum, GLsizei, *mut GLsizei, *mut GLint);
14598
14599/// The prototype to the OpenGL function `GetInteger64i_v`
14600type PFNGLGETINTEGER64I_VPROC = extern "system" fn(GLenum, GLuint, *mut GLint64);
14601
14602/// The prototype to the OpenGL function `GetBufferParameteri64v`
14603type PFNGLGETBUFFERPARAMETERI64VPROC = extern "system" fn(GLenum, GLenum, *mut GLint64);
14604
14605/// The prototype to the OpenGL function `FramebufferTexture`
14606type PFNGLFRAMEBUFFERTEXTUREPROC = extern "system" fn(GLenum, GLenum, GLuint, GLint);
14607
14608/// The prototype to the OpenGL function `TexImage2DMultisample`
14609type PFNGLTEXIMAGE2DMULTISAMPLEPROC = extern "system" fn(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLboolean);
14610
14611/// The prototype to the OpenGL function `TexImage3DMultisample`
14612type PFNGLTEXIMAGE3DMULTISAMPLEPROC = extern "system" fn(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean);
14613
14614/// The prototype to the OpenGL function `GetMultisamplefv`
14615type PFNGLGETMULTISAMPLEFVPROC = extern "system" fn(GLenum, GLuint, *mut GLfloat);
14616
14617/// The prototype to the OpenGL function `SampleMaski`
14618type PFNGLSAMPLEMASKIPROC = extern "system" fn(GLuint, GLbitfield);
14619
14620/// The dummy function of `DrawElementsBaseVertex()`
14621extern "system" fn dummy_pfngldrawelementsbasevertexproc (_: GLenum, _: GLsizei, _: GLenum, _: *const c_void, _: GLint) {
14622	panic!("OpenGL function pointer `glDrawElementsBaseVertex()` is null.")
14623}
14624
14625/// The dummy function of `DrawRangeElementsBaseVertex()`
14626extern "system" fn dummy_pfngldrawrangeelementsbasevertexproc (_: GLenum, _: GLuint, _: GLuint, _: GLsizei, _: GLenum, _: *const c_void, _: GLint) {
14627	panic!("OpenGL function pointer `glDrawRangeElementsBaseVertex()` is null.")
14628}
14629
14630/// The dummy function of `DrawElementsInstancedBaseVertex()`
14631extern "system" fn dummy_pfngldrawelementsinstancedbasevertexproc (_: GLenum, _: GLsizei, _: GLenum, _: *const c_void, _: GLsizei, _: GLint) {
14632	panic!("OpenGL function pointer `glDrawElementsInstancedBaseVertex()` is null.")
14633}
14634
14635/// The dummy function of `MultiDrawElementsBaseVertex()`
14636extern "system" fn dummy_pfnglmultidrawelementsbasevertexproc (_: GLenum, _: *const GLsizei, _: GLenum, _: *const *const c_void, _: GLsizei, _: *const GLint) {
14637	panic!("OpenGL function pointer `glMultiDrawElementsBaseVertex()` is null.")
14638}
14639
14640/// The dummy function of `ProvokingVertex()`
14641extern "system" fn dummy_pfnglprovokingvertexproc (_: GLenum) {
14642	panic!("OpenGL function pointer `glProvokingVertex()` is null.")
14643}
14644
14645/// The dummy function of `FenceSync()`
14646extern "system" fn dummy_pfnglfencesyncproc (_: GLenum, _: GLbitfield) -> GLsync {
14647	panic!("OpenGL function pointer `glFenceSync()` is null.")
14648}
14649
14650/// The dummy function of `IsSync()`
14651extern "system" fn dummy_pfnglissyncproc (_: GLsync) -> GLboolean {
14652	panic!("OpenGL function pointer `glIsSync()` is null.")
14653}
14654
14655/// The dummy function of `DeleteSync()`
14656extern "system" fn dummy_pfngldeletesyncproc (_: GLsync) {
14657	panic!("OpenGL function pointer `glDeleteSync()` is null.")
14658}
14659
14660/// The dummy function of `ClientWaitSync()`
14661extern "system" fn dummy_pfnglclientwaitsyncproc (_: GLsync, _: GLbitfield, _: GLuint64) -> GLenum {
14662	panic!("OpenGL function pointer `glClientWaitSync()` is null.")
14663}
14664
14665/// The dummy function of `WaitSync()`
14666extern "system" fn dummy_pfnglwaitsyncproc (_: GLsync, _: GLbitfield, _: GLuint64) {
14667	panic!("OpenGL function pointer `glWaitSync()` is null.")
14668}
14669
14670/// The dummy function of `GetInteger64v()`
14671extern "system" fn dummy_pfnglgetinteger64vproc (_: GLenum, _: *mut GLint64) {
14672	panic!("OpenGL function pointer `glGetInteger64v()` is null.")
14673}
14674
14675/// The dummy function of `GetSynciv()`
14676extern "system" fn dummy_pfnglgetsyncivproc (_: GLsync, _: GLenum, _: GLsizei, _: *mut GLsizei, _: *mut GLint) {
14677	panic!("OpenGL function pointer `glGetSynciv()` is null.")
14678}
14679
14680/// The dummy function of `GetInteger64i_v()`
14681extern "system" fn dummy_pfnglgetinteger64i_vproc (_: GLenum, _: GLuint, _: *mut GLint64) {
14682	panic!("OpenGL function pointer `glGetInteger64i_v()` is null.")
14683}
14684
14685/// The dummy function of `GetBufferParameteri64v()`
14686extern "system" fn dummy_pfnglgetbufferparameteri64vproc (_: GLenum, _: GLenum, _: *mut GLint64) {
14687	panic!("OpenGL function pointer `glGetBufferParameteri64v()` is null.")
14688}
14689
14690/// The dummy function of `FramebufferTexture()`
14691extern "system" fn dummy_pfnglframebuffertextureproc (_: GLenum, _: GLenum, _: GLuint, _: GLint) {
14692	panic!("OpenGL function pointer `glFramebufferTexture()` is null.")
14693}
14694
14695/// The dummy function of `TexImage2DMultisample()`
14696extern "system" fn dummy_pfnglteximage2dmultisampleproc (_: GLenum, _: GLsizei, _: GLenum, _: GLsizei, _: GLsizei, _: GLboolean) {
14697	panic!("OpenGL function pointer `glTexImage2DMultisample()` is null.")
14698}
14699
14700/// The dummy function of `TexImage3DMultisample()`
14701extern "system" fn dummy_pfnglteximage3dmultisampleproc (_: GLenum, _: GLsizei, _: GLenum, _: GLsizei, _: GLsizei, _: GLsizei, _: GLboolean) {
14702	panic!("OpenGL function pointer `glTexImage3DMultisample()` is null.")
14703}
14704
14705/// The dummy function of `GetMultisamplefv()`
14706extern "system" fn dummy_pfnglgetmultisamplefvproc (_: GLenum, _: GLuint, _: *mut GLfloat) {
14707	panic!("OpenGL function pointer `glGetMultisamplefv()` is null.")
14708}
14709
14710/// The dummy function of `SampleMaski()`
14711extern "system" fn dummy_pfnglsamplemaskiproc (_: GLuint, _: GLbitfield) {
14712	panic!("OpenGL function pointer `glSampleMaski()` is null.")
14713}
14714/// Constant value defined from OpenGL 3.2
14715pub const GL_CONTEXT_CORE_PROFILE_BIT: GLbitfield = 0x00000001;
14716
14717/// Constant value defined from OpenGL 3.2
14718pub const GL_CONTEXT_COMPATIBILITY_PROFILE_BIT: GLbitfield = 0x00000002;
14719
14720/// Constant value defined from OpenGL 3.2
14721pub const GL_LINES_ADJACENCY: GLenum = 0x000A;
14722
14723/// Constant value defined from OpenGL 3.2
14724pub const GL_LINE_STRIP_ADJACENCY: GLenum = 0x000B;
14725
14726/// Constant value defined from OpenGL 3.2
14727pub const GL_TRIANGLES_ADJACENCY: GLenum = 0x000C;
14728
14729/// Constant value defined from OpenGL 3.2
14730pub const GL_TRIANGLE_STRIP_ADJACENCY: GLenum = 0x000D;
14731
14732/// Constant value defined from OpenGL 3.2
14733pub const GL_PROGRAM_POINT_SIZE: GLenum = 0x8642;
14734
14735/// Constant value defined from OpenGL 3.2
14736pub const GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS: GLenum = 0x8C29;
14737
14738/// Constant value defined from OpenGL 3.2
14739pub const GL_FRAMEBUFFER_ATTACHMENT_LAYERED: GLenum = 0x8DA7;
14740
14741/// Constant value defined from OpenGL 3.2
14742pub const GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS: GLenum = 0x8DA8;
14743
14744/// Constant value defined from OpenGL 3.2
14745pub const GL_GEOMETRY_SHADER: GLenum = 0x8DD9;
14746
14747/// Constant value defined from OpenGL 3.2
14748pub const GL_GEOMETRY_VERTICES_OUT: GLenum = 0x8916;
14749
14750/// Constant value defined from OpenGL 3.2
14751pub const GL_GEOMETRY_INPUT_TYPE: GLenum = 0x8917;
14752
14753/// Constant value defined from OpenGL 3.2
14754pub const GL_GEOMETRY_OUTPUT_TYPE: GLenum = 0x8918;
14755
14756/// Constant value defined from OpenGL 3.2
14757pub const GL_MAX_GEOMETRY_UNIFORM_COMPONENTS: GLenum = 0x8DDF;
14758
14759/// Constant value defined from OpenGL 3.2
14760pub const GL_MAX_GEOMETRY_OUTPUT_VERTICES: GLenum = 0x8DE0;
14761
14762/// Constant value defined from OpenGL 3.2
14763pub const GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS: GLenum = 0x8DE1;
14764
14765/// Constant value defined from OpenGL 3.2
14766pub const GL_MAX_VERTEX_OUTPUT_COMPONENTS: GLenum = 0x9122;
14767
14768/// Constant value defined from OpenGL 3.2
14769pub const GL_MAX_GEOMETRY_INPUT_COMPONENTS: GLenum = 0x9123;
14770
14771/// Constant value defined from OpenGL 3.2
14772pub const GL_MAX_GEOMETRY_OUTPUT_COMPONENTS: GLenum = 0x9124;
14773
14774/// Constant value defined from OpenGL 3.2
14775pub const GL_MAX_FRAGMENT_INPUT_COMPONENTS: GLenum = 0x9125;
14776
14777/// Constant value defined from OpenGL 3.2
14778pub const GL_CONTEXT_PROFILE_MASK: GLenum = 0x9126;
14779
14780/// Constant value defined from OpenGL 3.2
14781pub const GL_DEPTH_CLAMP: GLenum = 0x864F;
14782
14783/// Constant value defined from OpenGL 3.2
14784pub const GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION: GLenum = 0x8E4C;
14785
14786/// Constant value defined from OpenGL 3.2
14787pub const GL_FIRST_VERTEX_CONVENTION: GLenum = 0x8E4D;
14788
14789/// Constant value defined from OpenGL 3.2
14790pub const GL_LAST_VERTEX_CONVENTION: GLenum = 0x8E4E;
14791
14792/// Constant value defined from OpenGL 3.2
14793pub const GL_PROVOKING_VERTEX: GLenum = 0x8E4F;
14794
14795/// Constant value defined from OpenGL 3.2
14796pub const GL_TEXTURE_CUBE_MAP_SEAMLESS: GLenum = 0x884F;
14797
14798/// Constant value defined from OpenGL 3.2
14799pub const GL_MAX_SERVER_WAIT_TIMEOUT: GLenum = 0x9111;
14800
14801/// Constant value defined from OpenGL 3.2
14802pub const GL_OBJECT_TYPE: GLenum = 0x9112;
14803
14804/// Constant value defined from OpenGL 3.2
14805pub const GL_SYNC_CONDITION: GLenum = 0x9113;
14806
14807/// Constant value defined from OpenGL 3.2
14808pub const GL_SYNC_STATUS: GLenum = 0x9114;
14809
14810/// Constant value defined from OpenGL 3.2
14811pub const GL_SYNC_FLAGS: GLenum = 0x9115;
14812
14813/// Constant value defined from OpenGL 3.2
14814pub const GL_SYNC_FENCE: GLenum = 0x9116;
14815
14816/// Constant value defined from OpenGL 3.2
14817pub const GL_SYNC_GPU_COMMANDS_COMPLETE: GLenum = 0x9117;
14818
14819/// Constant value defined from OpenGL 3.2
14820pub const GL_UNSIGNALED: GLenum = 0x9118;
14821
14822/// Constant value defined from OpenGL 3.2
14823pub const GL_SIGNALED: GLenum = 0x9119;
14824
14825/// Constant value defined from OpenGL 3.2
14826pub const GL_ALREADY_SIGNALED: GLenum = 0x911A;
14827
14828/// Constant value defined from OpenGL 3.2
14829pub const GL_TIMEOUT_EXPIRED: GLenum = 0x911B;
14830
14831/// Constant value defined from OpenGL 3.2
14832pub const GL_CONDITION_SATISFIED: GLenum = 0x911C;
14833
14834/// Constant value defined from OpenGL 3.2
14835pub const GL_WAIT_FAILED: GLenum = 0x911D;
14836
14837/// Constant value defined from OpenGL 3.2
14838pub const GL_TIMEOUT_IGNORED: GLuint64 = 0xFFFFFFFFFFFFFFFFu64;
14839
14840/// Constant value defined from OpenGL 3.2
14841pub const GL_SYNC_FLUSH_COMMANDS_BIT: GLbitfield = 0x00000001;
14842
14843/// Constant value defined from OpenGL 3.2
14844pub const GL_SAMPLE_POSITION: GLenum = 0x8E50;
14845
14846/// Constant value defined from OpenGL 3.2
14847pub const GL_SAMPLE_MASK: GLenum = 0x8E51;
14848
14849/// Constant value defined from OpenGL 3.2
14850pub const GL_SAMPLE_MASK_VALUE: GLenum = 0x8E52;
14851
14852/// Constant value defined from OpenGL 3.2
14853pub const GL_MAX_SAMPLE_MASK_WORDS: GLenum = 0x8E59;
14854
14855/// Constant value defined from OpenGL 3.2
14856pub const GL_TEXTURE_2D_MULTISAMPLE: GLenum = 0x9100;
14857
14858/// Constant value defined from OpenGL 3.2
14859pub const GL_PROXY_TEXTURE_2D_MULTISAMPLE: GLenum = 0x9101;
14860
14861/// Constant value defined from OpenGL 3.2
14862pub const GL_TEXTURE_2D_MULTISAMPLE_ARRAY: GLenum = 0x9102;
14863
14864/// Constant value defined from OpenGL 3.2
14865pub const GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY: GLenum = 0x9103;
14866
14867/// Constant value defined from OpenGL 3.2
14868pub const GL_TEXTURE_BINDING_2D_MULTISAMPLE: GLenum = 0x9104;
14869
14870/// Constant value defined from OpenGL 3.2
14871pub const GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY: GLenum = 0x9105;
14872
14873/// Constant value defined from OpenGL 3.2
14874pub const GL_TEXTURE_SAMPLES: GLenum = 0x9106;
14875
14876/// Constant value defined from OpenGL 3.2
14877pub const GL_TEXTURE_FIXED_SAMPLE_LOCATIONS: GLenum = 0x9107;
14878
14879/// Constant value defined from OpenGL 3.2
14880pub const GL_SAMPLER_2D_MULTISAMPLE: GLenum = 0x9108;
14881
14882/// Constant value defined from OpenGL 3.2
14883pub const GL_INT_SAMPLER_2D_MULTISAMPLE: GLenum = 0x9109;
14884
14885/// Constant value defined from OpenGL 3.2
14886pub const GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE: GLenum = 0x910A;
14887
14888/// Constant value defined from OpenGL 3.2
14889pub const GL_SAMPLER_2D_MULTISAMPLE_ARRAY: GLenum = 0x910B;
14890
14891/// Constant value defined from OpenGL 3.2
14892pub const GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY: GLenum = 0x910C;
14893
14894/// Constant value defined from OpenGL 3.2
14895pub const GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY: GLenum = 0x910D;
14896
14897/// Constant value defined from OpenGL 3.2
14898pub const GL_MAX_COLOR_TEXTURE_SAMPLES: GLenum = 0x910E;
14899
14900/// Constant value defined from OpenGL 3.2
14901pub const GL_MAX_DEPTH_TEXTURE_SAMPLES: GLenum = 0x910F;
14902
14903/// Constant value defined from OpenGL 3.2
14904pub const GL_MAX_INTEGER_SAMPLES: GLenum = 0x9110;
14905
14906/// Functions from OpenGL version 3.2
14907pub trait GL_3_2 {
14908	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
14909	fn glGetError(&self) -> GLenum;
14910
14911	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsBaseVertex.xhtml>
14912	fn glDrawElementsBaseVertex(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, basevertex: GLint) -> Result<()>;
14913
14914	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawRangeElementsBaseVertex.xhtml>
14915	fn glDrawRangeElementsBaseVertex(&self, mode: GLenum, start: GLuint, end: GLuint, count: GLsizei, type_: GLenum, indices: *const c_void, basevertex: GLint) -> Result<()>;
14916
14917	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsInstancedBaseVertex.xhtml>
14918	fn glDrawElementsInstancedBaseVertex(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei, basevertex: GLint) -> Result<()>;
14919
14920	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawElementsBaseVertex.xhtml>
14921	fn glMultiDrawElementsBaseVertex(&self, mode: GLenum, count: *const GLsizei, type_: GLenum, indices: *const *const c_void, drawcount: GLsizei, basevertex: *const GLint) -> Result<()>;
14922
14923	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProvokingVertex.xhtml>
14924	fn glProvokingVertex(&self, mode: GLenum) -> Result<()>;
14925
14926	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFenceSync.xhtml>
14927	fn glFenceSync(&self, condition: GLenum, flags: GLbitfield) -> Result<GLsync>;
14928
14929	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsSync.xhtml>
14930	fn glIsSync(&self, sync: GLsync) -> Result<GLboolean>;
14931
14932	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteSync.xhtml>
14933	fn glDeleteSync(&self, sync: GLsync) -> Result<()>;
14934
14935	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClientWaitSync.xhtml>
14936	fn glClientWaitSync(&self, sync: GLsync, flags: GLbitfield, timeout: GLuint64) -> Result<GLenum>;
14937
14938	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWaitSync.xhtml>
14939	fn glWaitSync(&self, sync: GLsync, flags: GLbitfield, timeout: GLuint64) -> Result<()>;
14940
14941	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetInteger64v.xhtml>
14942	fn glGetInteger64v(&self, pname: GLenum, data: *mut GLint64) -> Result<()>;
14943
14944	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSynciv.xhtml>
14945	fn glGetSynciv(&self, sync: GLsync, pname: GLenum, count: GLsizei, length: *mut GLsizei, values: *mut GLint) -> Result<()>;
14946
14947	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetInteger64i_v.xhtml>
14948	fn glGetInteger64i_v(&self, target: GLenum, index: GLuint, data: *mut GLint64) -> Result<()>;
14949
14950	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBufferParameteri64v.xhtml>
14951	fn glGetBufferParameteri64v(&self, target: GLenum, pname: GLenum, params: *mut GLint64) -> Result<()>;
14952
14953	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferTexture.xhtml>
14954	fn glFramebufferTexture(&self, target: GLenum, attachment: GLenum, texture: GLuint, level: GLint) -> Result<()>;
14955
14956	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexImage2DMultisample.xhtml>
14957	fn glTexImage2DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, fixedsamplelocations: GLboolean) -> Result<()>;
14958
14959	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexImage3DMultisample.xhtml>
14960	fn glTexImage3DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, fixedsamplelocations: GLboolean) -> Result<()>;
14961
14962	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetMultisamplefv.xhtml>
14963	fn glGetMultisamplefv(&self, pname: GLenum, index: GLuint, val: *mut GLfloat) -> Result<()>;
14964
14965	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSampleMaski.xhtml>
14966	fn glSampleMaski(&self, maskNumber: GLuint, mask: GLbitfield) -> Result<()>;
14967}
14968/// Functions from OpenGL version 3.2
14969#[derive(Clone, Copy, PartialEq, Eq, Hash)]
14970pub struct Version32 {
14971	/// Is OpenGL version 3.2 available
14972	available: bool,
14973
14974	/// The function pointer to `glGetError()`
14975	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
14976	pub geterror: PFNGLGETERRORPROC,
14977
14978	/// The function pointer to `glDrawElementsBaseVertex()`
14979	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsBaseVertex.xhtml>
14980	pub drawelementsbasevertex: PFNGLDRAWELEMENTSBASEVERTEXPROC,
14981
14982	/// The function pointer to `glDrawRangeElementsBaseVertex()`
14983	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawRangeElementsBaseVertex.xhtml>
14984	pub drawrangeelementsbasevertex: PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC,
14985
14986	/// The function pointer to `glDrawElementsInstancedBaseVertex()`
14987	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsInstancedBaseVertex.xhtml>
14988	pub drawelementsinstancedbasevertex: PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC,
14989
14990	/// The function pointer to `glMultiDrawElementsBaseVertex()`
14991	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawElementsBaseVertex.xhtml>
14992	pub multidrawelementsbasevertex: PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC,
14993
14994	/// The function pointer to `glProvokingVertex()`
14995	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProvokingVertex.xhtml>
14996	pub provokingvertex: PFNGLPROVOKINGVERTEXPROC,
14997
14998	/// The function pointer to `glFenceSync()`
14999	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFenceSync.xhtml>
15000	pub fencesync: PFNGLFENCESYNCPROC,
15001
15002	/// The function pointer to `glIsSync()`
15003	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsSync.xhtml>
15004	pub issync: PFNGLISSYNCPROC,
15005
15006	/// The function pointer to `glDeleteSync()`
15007	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteSync.xhtml>
15008	pub deletesync: PFNGLDELETESYNCPROC,
15009
15010	/// The function pointer to `glClientWaitSync()`
15011	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClientWaitSync.xhtml>
15012	pub clientwaitsync: PFNGLCLIENTWAITSYNCPROC,
15013
15014	/// The function pointer to `glWaitSync()`
15015	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWaitSync.xhtml>
15016	pub waitsync: PFNGLWAITSYNCPROC,
15017
15018	/// The function pointer to `glGetInteger64v()`
15019	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetInteger64v.xhtml>
15020	pub getinteger64v: PFNGLGETINTEGER64VPROC,
15021
15022	/// The function pointer to `glGetSynciv()`
15023	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSynciv.xhtml>
15024	pub getsynciv: PFNGLGETSYNCIVPROC,
15025
15026	/// The function pointer to `glGetInteger64i_v()`
15027	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetInteger64i_v.xhtml>
15028	pub getinteger64i_v: PFNGLGETINTEGER64I_VPROC,
15029
15030	/// The function pointer to `glGetBufferParameteri64v()`
15031	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBufferParameteri64v.xhtml>
15032	pub getbufferparameteri64v: PFNGLGETBUFFERPARAMETERI64VPROC,
15033
15034	/// The function pointer to `glFramebufferTexture()`
15035	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferTexture.xhtml>
15036	pub framebuffertexture: PFNGLFRAMEBUFFERTEXTUREPROC,
15037
15038	/// The function pointer to `glTexImage2DMultisample()`
15039	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexImage2DMultisample.xhtml>
15040	pub teximage2dmultisample: PFNGLTEXIMAGE2DMULTISAMPLEPROC,
15041
15042	/// The function pointer to `glTexImage3DMultisample()`
15043	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexImage3DMultisample.xhtml>
15044	pub teximage3dmultisample: PFNGLTEXIMAGE3DMULTISAMPLEPROC,
15045
15046	/// The function pointer to `glGetMultisamplefv()`
15047	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetMultisamplefv.xhtml>
15048	pub getmultisamplefv: PFNGLGETMULTISAMPLEFVPROC,
15049
15050	/// The function pointer to `glSampleMaski()`
15051	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSampleMaski.xhtml>
15052	pub samplemaski: PFNGLSAMPLEMASKIPROC,
15053}
15054
15055impl GL_3_2 for Version32 {
15056	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
15057	#[inline(always)]
15058	fn glGetError(&self) -> GLenum {
15059		(self.geterror)()
15060	}
15061	#[inline(always)]
15062	fn glDrawElementsBaseVertex(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, basevertex: GLint) -> Result<()> {
15063		let ret = process_catch("glDrawElementsBaseVertex", catch_unwind(||(self.drawelementsbasevertex)(mode, count, type_, indices, basevertex)));
15064		#[cfg(feature = "diagnose")]
15065		if let Ok(ret) = ret {
15066			return to_result("glDrawElementsBaseVertex", ret, self.glGetError());
15067		} else {
15068			return ret
15069		}
15070		#[cfg(not(feature = "diagnose"))]
15071		return ret;
15072	}
15073	#[inline(always)]
15074	fn glDrawRangeElementsBaseVertex(&self, mode: GLenum, start: GLuint, end: GLuint, count: GLsizei, type_: GLenum, indices: *const c_void, basevertex: GLint) -> Result<()> {
15075		let ret = process_catch("glDrawRangeElementsBaseVertex", catch_unwind(||(self.drawrangeelementsbasevertex)(mode, start, end, count, type_, indices, basevertex)));
15076		#[cfg(feature = "diagnose")]
15077		if let Ok(ret) = ret {
15078			return to_result("glDrawRangeElementsBaseVertex", ret, self.glGetError());
15079		} else {
15080			return ret
15081		}
15082		#[cfg(not(feature = "diagnose"))]
15083		return ret;
15084	}
15085	#[inline(always)]
15086	fn glDrawElementsInstancedBaseVertex(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei, basevertex: GLint) -> Result<()> {
15087		let ret = process_catch("glDrawElementsInstancedBaseVertex", catch_unwind(||(self.drawelementsinstancedbasevertex)(mode, count, type_, indices, instancecount, basevertex)));
15088		#[cfg(feature = "diagnose")]
15089		if let Ok(ret) = ret {
15090			return to_result("glDrawElementsInstancedBaseVertex", ret, self.glGetError());
15091		} else {
15092			return ret
15093		}
15094		#[cfg(not(feature = "diagnose"))]
15095		return ret;
15096	}
15097	#[inline(always)]
15098	fn glMultiDrawElementsBaseVertex(&self, mode: GLenum, count: *const GLsizei, type_: GLenum, indices: *const *const c_void, drawcount: GLsizei, basevertex: *const GLint) -> Result<()> {
15099		let ret = process_catch("glMultiDrawElementsBaseVertex", catch_unwind(||(self.multidrawelementsbasevertex)(mode, count, type_, indices, drawcount, basevertex)));
15100		#[cfg(feature = "diagnose")]
15101		if let Ok(ret) = ret {
15102			return to_result("glMultiDrawElementsBaseVertex", ret, self.glGetError());
15103		} else {
15104			return ret
15105		}
15106		#[cfg(not(feature = "diagnose"))]
15107		return ret;
15108	}
15109	#[inline(always)]
15110	fn glProvokingVertex(&self, mode: GLenum) -> Result<()> {
15111		let ret = process_catch("glProvokingVertex", catch_unwind(||(self.provokingvertex)(mode)));
15112		#[cfg(feature = "diagnose")]
15113		if let Ok(ret) = ret {
15114			return to_result("glProvokingVertex", ret, self.glGetError());
15115		} else {
15116			return ret
15117		}
15118		#[cfg(not(feature = "diagnose"))]
15119		return ret;
15120	}
15121	#[inline(always)]
15122	fn glFenceSync(&self, condition: GLenum, flags: GLbitfield) -> Result<GLsync> {
15123		let ret = process_catch("glFenceSync", catch_unwind(||(self.fencesync)(condition, flags)));
15124		#[cfg(feature = "diagnose")]
15125		if let Ok(ret) = ret {
15126			return to_result("glFenceSync", ret, self.glGetError());
15127		} else {
15128			return ret
15129		}
15130		#[cfg(not(feature = "diagnose"))]
15131		return ret;
15132	}
15133	#[inline(always)]
15134	fn glIsSync(&self, sync: GLsync) -> Result<GLboolean> {
15135		let ret = process_catch("glIsSync", catch_unwind(||(self.issync)(sync)));
15136		#[cfg(feature = "diagnose")]
15137		if let Ok(ret) = ret {
15138			return to_result("glIsSync", ret, self.glGetError());
15139		} else {
15140			return ret
15141		}
15142		#[cfg(not(feature = "diagnose"))]
15143		return ret;
15144	}
15145	#[inline(always)]
15146	fn glDeleteSync(&self, sync: GLsync) -> Result<()> {
15147		let ret = process_catch("glDeleteSync", catch_unwind(||(self.deletesync)(sync)));
15148		#[cfg(feature = "diagnose")]
15149		if let Ok(ret) = ret {
15150			return to_result("glDeleteSync", ret, self.glGetError());
15151		} else {
15152			return ret
15153		}
15154		#[cfg(not(feature = "diagnose"))]
15155		return ret;
15156	}
15157	#[inline(always)]
15158	fn glClientWaitSync(&self, sync: GLsync, flags: GLbitfield, timeout: GLuint64) -> Result<GLenum> {
15159		let ret = process_catch("glClientWaitSync", catch_unwind(||(self.clientwaitsync)(sync, flags, timeout)));
15160		#[cfg(feature = "diagnose")]
15161		if let Ok(ret) = ret {
15162			return to_result("glClientWaitSync", ret, self.glGetError());
15163		} else {
15164			return ret
15165		}
15166		#[cfg(not(feature = "diagnose"))]
15167		return ret;
15168	}
15169	#[inline(always)]
15170	fn glWaitSync(&self, sync: GLsync, flags: GLbitfield, timeout: GLuint64) -> Result<()> {
15171		let ret = process_catch("glWaitSync", catch_unwind(||(self.waitsync)(sync, flags, timeout)));
15172		#[cfg(feature = "diagnose")]
15173		if let Ok(ret) = ret {
15174			return to_result("glWaitSync", ret, self.glGetError());
15175		} else {
15176			return ret
15177		}
15178		#[cfg(not(feature = "diagnose"))]
15179		return ret;
15180	}
15181	#[inline(always)]
15182	fn glGetInteger64v(&self, pname: GLenum, data: *mut GLint64) -> Result<()> {
15183		let ret = process_catch("glGetInteger64v", catch_unwind(||(self.getinteger64v)(pname, data)));
15184		#[cfg(feature = "diagnose")]
15185		if let Ok(ret) = ret {
15186			return to_result("glGetInteger64v", ret, self.glGetError());
15187		} else {
15188			return ret
15189		}
15190		#[cfg(not(feature = "diagnose"))]
15191		return ret;
15192	}
15193	#[inline(always)]
15194	fn glGetSynciv(&self, sync: GLsync, pname: GLenum, count: GLsizei, length: *mut GLsizei, values: *mut GLint) -> Result<()> {
15195		let ret = process_catch("glGetSynciv", catch_unwind(||(self.getsynciv)(sync, pname, count, length, values)));
15196		#[cfg(feature = "diagnose")]
15197		if let Ok(ret) = ret {
15198			return to_result("glGetSynciv", ret, self.glGetError());
15199		} else {
15200			return ret
15201		}
15202		#[cfg(not(feature = "diagnose"))]
15203		return ret;
15204	}
15205	#[inline(always)]
15206	fn glGetInteger64i_v(&self, target: GLenum, index: GLuint, data: *mut GLint64) -> Result<()> {
15207		let ret = process_catch("glGetInteger64i_v", catch_unwind(||(self.getinteger64i_v)(target, index, data)));
15208		#[cfg(feature = "diagnose")]
15209		if let Ok(ret) = ret {
15210			return to_result("glGetInteger64i_v", ret, self.glGetError());
15211		} else {
15212			return ret
15213		}
15214		#[cfg(not(feature = "diagnose"))]
15215		return ret;
15216	}
15217	#[inline(always)]
15218	fn glGetBufferParameteri64v(&self, target: GLenum, pname: GLenum, params: *mut GLint64) -> Result<()> {
15219		let ret = process_catch("glGetBufferParameteri64v", catch_unwind(||(self.getbufferparameteri64v)(target, pname, params)));
15220		#[cfg(feature = "diagnose")]
15221		if let Ok(ret) = ret {
15222			return to_result("glGetBufferParameteri64v", ret, self.glGetError());
15223		} else {
15224			return ret
15225		}
15226		#[cfg(not(feature = "diagnose"))]
15227		return ret;
15228	}
15229	#[inline(always)]
15230	fn glFramebufferTexture(&self, target: GLenum, attachment: GLenum, texture: GLuint, level: GLint) -> Result<()> {
15231		let ret = process_catch("glFramebufferTexture", catch_unwind(||(self.framebuffertexture)(target, attachment, texture, level)));
15232		#[cfg(feature = "diagnose")]
15233		if let Ok(ret) = ret {
15234			return to_result("glFramebufferTexture", ret, self.glGetError());
15235		} else {
15236			return ret
15237		}
15238		#[cfg(not(feature = "diagnose"))]
15239		return ret;
15240	}
15241	#[inline(always)]
15242	fn glTexImage2DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, fixedsamplelocations: GLboolean) -> Result<()> {
15243		let ret = process_catch("glTexImage2DMultisample", catch_unwind(||(self.teximage2dmultisample)(target, samples, internalformat, width, height, fixedsamplelocations)));
15244		#[cfg(feature = "diagnose")]
15245		if let Ok(ret) = ret {
15246			return to_result("glTexImage2DMultisample", ret, self.glGetError());
15247		} else {
15248			return ret
15249		}
15250		#[cfg(not(feature = "diagnose"))]
15251		return ret;
15252	}
15253	#[inline(always)]
15254	fn glTexImage3DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, fixedsamplelocations: GLboolean) -> Result<()> {
15255		let ret = process_catch("glTexImage3DMultisample", catch_unwind(||(self.teximage3dmultisample)(target, samples, internalformat, width, height, depth, fixedsamplelocations)));
15256		#[cfg(feature = "diagnose")]
15257		if let Ok(ret) = ret {
15258			return to_result("glTexImage3DMultisample", ret, self.glGetError());
15259		} else {
15260			return ret
15261		}
15262		#[cfg(not(feature = "diagnose"))]
15263		return ret;
15264	}
15265	#[inline(always)]
15266	fn glGetMultisamplefv(&self, pname: GLenum, index: GLuint, val: *mut GLfloat) -> Result<()> {
15267		let ret = process_catch("glGetMultisamplefv", catch_unwind(||(self.getmultisamplefv)(pname, index, val)));
15268		#[cfg(feature = "diagnose")]
15269		if let Ok(ret) = ret {
15270			return to_result("glGetMultisamplefv", ret, self.glGetError());
15271		} else {
15272			return ret
15273		}
15274		#[cfg(not(feature = "diagnose"))]
15275		return ret;
15276	}
15277	#[inline(always)]
15278	fn glSampleMaski(&self, maskNumber: GLuint, mask: GLbitfield) -> Result<()> {
15279		let ret = process_catch("glSampleMaski", catch_unwind(||(self.samplemaski)(maskNumber, mask)));
15280		#[cfg(feature = "diagnose")]
15281		if let Ok(ret) = ret {
15282			return to_result("glSampleMaski", ret, self.glGetError());
15283		} else {
15284			return ret
15285		}
15286		#[cfg(not(feature = "diagnose"))]
15287		return ret;
15288	}
15289}
15290
15291impl Version32 {
15292	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
15293		let (_spec, major, minor, release) = base.get_version();
15294		if (major, minor, release) < (3, 2, 0) {
15295			return Self::default();
15296		}
15297		Self {
15298			available: true,
15299			geterror: {let proc = get_proc_address("glGetError"); if proc == null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
15300			drawelementsbasevertex: {let proc = get_proc_address("glDrawElementsBaseVertex"); if proc == null() {dummy_pfngldrawelementsbasevertexproc} else {unsafe{transmute(proc)}}},
15301			drawrangeelementsbasevertex: {let proc = get_proc_address("glDrawRangeElementsBaseVertex"); if proc == null() {dummy_pfngldrawrangeelementsbasevertexproc} else {unsafe{transmute(proc)}}},
15302			drawelementsinstancedbasevertex: {let proc = get_proc_address("glDrawElementsInstancedBaseVertex"); if proc == null() {dummy_pfngldrawelementsinstancedbasevertexproc} else {unsafe{transmute(proc)}}},
15303			multidrawelementsbasevertex: {let proc = get_proc_address("glMultiDrawElementsBaseVertex"); if proc == null() {dummy_pfnglmultidrawelementsbasevertexproc} else {unsafe{transmute(proc)}}},
15304			provokingvertex: {let proc = get_proc_address("glProvokingVertex"); if proc == null() {dummy_pfnglprovokingvertexproc} else {unsafe{transmute(proc)}}},
15305			fencesync: {let proc = get_proc_address("glFenceSync"); if proc == null() {dummy_pfnglfencesyncproc} else {unsafe{transmute(proc)}}},
15306			issync: {let proc = get_proc_address("glIsSync"); if proc == null() {dummy_pfnglissyncproc} else {unsafe{transmute(proc)}}},
15307			deletesync: {let proc = get_proc_address("glDeleteSync"); if proc == null() {dummy_pfngldeletesyncproc} else {unsafe{transmute(proc)}}},
15308			clientwaitsync: {let proc = get_proc_address("glClientWaitSync"); if proc == null() {dummy_pfnglclientwaitsyncproc} else {unsafe{transmute(proc)}}},
15309			waitsync: {let proc = get_proc_address("glWaitSync"); if proc == null() {dummy_pfnglwaitsyncproc} else {unsafe{transmute(proc)}}},
15310			getinteger64v: {let proc = get_proc_address("glGetInteger64v"); if proc == null() {dummy_pfnglgetinteger64vproc} else {unsafe{transmute(proc)}}},
15311			getsynciv: {let proc = get_proc_address("glGetSynciv"); if proc == null() {dummy_pfnglgetsyncivproc} else {unsafe{transmute(proc)}}},
15312			getinteger64i_v: {let proc = get_proc_address("glGetInteger64i_v"); if proc == null() {dummy_pfnglgetinteger64i_vproc} else {unsafe{transmute(proc)}}},
15313			getbufferparameteri64v: {let proc = get_proc_address("glGetBufferParameteri64v"); if proc == null() {dummy_pfnglgetbufferparameteri64vproc} else {unsafe{transmute(proc)}}},
15314			framebuffertexture: {let proc = get_proc_address("glFramebufferTexture"); if proc == null() {dummy_pfnglframebuffertextureproc} else {unsafe{transmute(proc)}}},
15315			teximage2dmultisample: {let proc = get_proc_address("glTexImage2DMultisample"); if proc == null() {dummy_pfnglteximage2dmultisampleproc} else {unsafe{transmute(proc)}}},
15316			teximage3dmultisample: {let proc = get_proc_address("glTexImage3DMultisample"); if proc == null() {dummy_pfnglteximage3dmultisampleproc} else {unsafe{transmute(proc)}}},
15317			getmultisamplefv: {let proc = get_proc_address("glGetMultisamplefv"); if proc == null() {dummy_pfnglgetmultisamplefvproc} else {unsafe{transmute(proc)}}},
15318			samplemaski: {let proc = get_proc_address("glSampleMaski"); if proc == null() {dummy_pfnglsamplemaskiproc} else {unsafe{transmute(proc)}}},
15319		}
15320	}
15321	#[inline(always)]
15322	pub fn get_available(&self) -> bool {
15323		self.available
15324	}
15325}
15326
15327impl Default for Version32 {
15328	fn default() -> Self {
15329		Self {
15330			available: false,
15331			geterror: dummy_pfnglgeterrorproc,
15332			drawelementsbasevertex: dummy_pfngldrawelementsbasevertexproc,
15333			drawrangeelementsbasevertex: dummy_pfngldrawrangeelementsbasevertexproc,
15334			drawelementsinstancedbasevertex: dummy_pfngldrawelementsinstancedbasevertexproc,
15335			multidrawelementsbasevertex: dummy_pfnglmultidrawelementsbasevertexproc,
15336			provokingvertex: dummy_pfnglprovokingvertexproc,
15337			fencesync: dummy_pfnglfencesyncproc,
15338			issync: dummy_pfnglissyncproc,
15339			deletesync: dummy_pfngldeletesyncproc,
15340			clientwaitsync: dummy_pfnglclientwaitsyncproc,
15341			waitsync: dummy_pfnglwaitsyncproc,
15342			getinteger64v: dummy_pfnglgetinteger64vproc,
15343			getsynciv: dummy_pfnglgetsyncivproc,
15344			getinteger64i_v: dummy_pfnglgetinteger64i_vproc,
15345			getbufferparameteri64v: dummy_pfnglgetbufferparameteri64vproc,
15346			framebuffertexture: dummy_pfnglframebuffertextureproc,
15347			teximage2dmultisample: dummy_pfnglteximage2dmultisampleproc,
15348			teximage3dmultisample: dummy_pfnglteximage3dmultisampleproc,
15349			getmultisamplefv: dummy_pfnglgetmultisamplefvproc,
15350			samplemaski: dummy_pfnglsamplemaskiproc,
15351		}
15352	}
15353}
15354impl Debug for Version32 {
15355	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
15356		if self.available {
15357			f.debug_struct("Version32")
15358			.field("available", &self.available)
15359			.field("drawelementsbasevertex", unsafe{if transmute::<_, *const c_void>(self.drawelementsbasevertex) == (dummy_pfngldrawelementsbasevertexproc as *const c_void) {&null::<PFNGLDRAWELEMENTSBASEVERTEXPROC>()} else {&self.drawelementsbasevertex}})
15360			.field("drawrangeelementsbasevertex", unsafe{if transmute::<_, *const c_void>(self.drawrangeelementsbasevertex) == (dummy_pfngldrawrangeelementsbasevertexproc as *const c_void) {&null::<PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC>()} else {&self.drawrangeelementsbasevertex}})
15361			.field("drawelementsinstancedbasevertex", unsafe{if transmute::<_, *const c_void>(self.drawelementsinstancedbasevertex) == (dummy_pfngldrawelementsinstancedbasevertexproc as *const c_void) {&null::<PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC>()} else {&self.drawelementsinstancedbasevertex}})
15362			.field("multidrawelementsbasevertex", unsafe{if transmute::<_, *const c_void>(self.multidrawelementsbasevertex) == (dummy_pfnglmultidrawelementsbasevertexproc as *const c_void) {&null::<PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC>()} else {&self.multidrawelementsbasevertex}})
15363			.field("provokingvertex", unsafe{if transmute::<_, *const c_void>(self.provokingvertex) == (dummy_pfnglprovokingvertexproc as *const c_void) {&null::<PFNGLPROVOKINGVERTEXPROC>()} else {&self.provokingvertex}})
15364			.field("fencesync", unsafe{if transmute::<_, *const c_void>(self.fencesync) == (dummy_pfnglfencesyncproc as *const c_void) {&null::<PFNGLFENCESYNCPROC>()} else {&self.fencesync}})
15365			.field("issync", unsafe{if transmute::<_, *const c_void>(self.issync) == (dummy_pfnglissyncproc as *const c_void) {&null::<PFNGLISSYNCPROC>()} else {&self.issync}})
15366			.field("deletesync", unsafe{if transmute::<_, *const c_void>(self.deletesync) == (dummy_pfngldeletesyncproc as *const c_void) {&null::<PFNGLDELETESYNCPROC>()} else {&self.deletesync}})
15367			.field("clientwaitsync", unsafe{if transmute::<_, *const c_void>(self.clientwaitsync) == (dummy_pfnglclientwaitsyncproc as *const c_void) {&null::<PFNGLCLIENTWAITSYNCPROC>()} else {&self.clientwaitsync}})
15368			.field("waitsync", unsafe{if transmute::<_, *const c_void>(self.waitsync) == (dummy_pfnglwaitsyncproc as *const c_void) {&null::<PFNGLWAITSYNCPROC>()} else {&self.waitsync}})
15369			.field("getinteger64v", unsafe{if transmute::<_, *const c_void>(self.getinteger64v) == (dummy_pfnglgetinteger64vproc as *const c_void) {&null::<PFNGLGETINTEGER64VPROC>()} else {&self.getinteger64v}})
15370			.field("getsynciv", unsafe{if transmute::<_, *const c_void>(self.getsynciv) == (dummy_pfnglgetsyncivproc as *const c_void) {&null::<PFNGLGETSYNCIVPROC>()} else {&self.getsynciv}})
15371			.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}})
15372			.field("getbufferparameteri64v", unsafe{if transmute::<_, *const c_void>(self.getbufferparameteri64v) == (dummy_pfnglgetbufferparameteri64vproc as *const c_void) {&null::<PFNGLGETBUFFERPARAMETERI64VPROC>()} else {&self.getbufferparameteri64v}})
15373			.field("framebuffertexture", unsafe{if transmute::<_, *const c_void>(self.framebuffertexture) == (dummy_pfnglframebuffertextureproc as *const c_void) {&null::<PFNGLFRAMEBUFFERTEXTUREPROC>()} else {&self.framebuffertexture}})
15374			.field("teximage2dmultisample", unsafe{if transmute::<_, *const c_void>(self.teximage2dmultisample) == (dummy_pfnglteximage2dmultisampleproc as *const c_void) {&null::<PFNGLTEXIMAGE2DMULTISAMPLEPROC>()} else {&self.teximage2dmultisample}})
15375			.field("teximage3dmultisample", unsafe{if transmute::<_, *const c_void>(self.teximage3dmultisample) == (dummy_pfnglteximage3dmultisampleproc as *const c_void) {&null::<PFNGLTEXIMAGE3DMULTISAMPLEPROC>()} else {&self.teximage3dmultisample}})
15376			.field("getmultisamplefv", unsafe{if transmute::<_, *const c_void>(self.getmultisamplefv) == (dummy_pfnglgetmultisamplefvproc as *const c_void) {&null::<PFNGLGETMULTISAMPLEFVPROC>()} else {&self.getmultisamplefv}})
15377			.field("samplemaski", unsafe{if transmute::<_, *const c_void>(self.samplemaski) == (dummy_pfnglsamplemaskiproc as *const c_void) {&null::<PFNGLSAMPLEMASKIPROC>()} else {&self.samplemaski}})
15378			.finish()
15379		} else {
15380			f.debug_struct("Version32")
15381			.field("available", &self.available)
15382			.finish_non_exhaustive()
15383		}
15384	}
15385}
15386
15387/// The prototype to the OpenGL function `BindFragDataLocationIndexed`
15388type PFNGLBINDFRAGDATALOCATIONINDEXEDPROC = extern "system" fn(GLuint, GLuint, GLuint, *const GLchar);
15389
15390/// The prototype to the OpenGL function `GetFragDataIndex`
15391type PFNGLGETFRAGDATAINDEXPROC = extern "system" fn(GLuint, *const GLchar) -> GLint;
15392
15393/// The prototype to the OpenGL function `GenSamplers`
15394type PFNGLGENSAMPLERSPROC = extern "system" fn(GLsizei, *mut GLuint);
15395
15396/// The prototype to the OpenGL function `DeleteSamplers`
15397type PFNGLDELETESAMPLERSPROC = extern "system" fn(GLsizei, *const GLuint);
15398
15399/// The prototype to the OpenGL function `IsSampler`
15400type PFNGLISSAMPLERPROC = extern "system" fn(GLuint) -> GLboolean;
15401
15402/// The prototype to the OpenGL function `BindSampler`
15403type PFNGLBINDSAMPLERPROC = extern "system" fn(GLuint, GLuint);
15404
15405/// The prototype to the OpenGL function `SamplerParameteri`
15406type PFNGLSAMPLERPARAMETERIPROC = extern "system" fn(GLuint, GLenum, GLint);
15407
15408/// The prototype to the OpenGL function `SamplerParameteriv`
15409type PFNGLSAMPLERPARAMETERIVPROC = extern "system" fn(GLuint, GLenum, *const GLint);
15410
15411/// The prototype to the OpenGL function `SamplerParameterf`
15412type PFNGLSAMPLERPARAMETERFPROC = extern "system" fn(GLuint, GLenum, GLfloat);
15413
15414/// The prototype to the OpenGL function `SamplerParameterfv`
15415type PFNGLSAMPLERPARAMETERFVPROC = extern "system" fn(GLuint, GLenum, *const GLfloat);
15416
15417/// The prototype to the OpenGL function `SamplerParameterIiv`
15418type PFNGLSAMPLERPARAMETERIIVPROC = extern "system" fn(GLuint, GLenum, *const GLint);
15419
15420/// The prototype to the OpenGL function `SamplerParameterIuiv`
15421type PFNGLSAMPLERPARAMETERIUIVPROC = extern "system" fn(GLuint, GLenum, *const GLuint);
15422
15423/// The prototype to the OpenGL function `GetSamplerParameteriv`
15424type PFNGLGETSAMPLERPARAMETERIVPROC = extern "system" fn(GLuint, GLenum, *mut GLint);
15425
15426/// The prototype to the OpenGL function `GetSamplerParameterIiv`
15427type PFNGLGETSAMPLERPARAMETERIIVPROC = extern "system" fn(GLuint, GLenum, *mut GLint);
15428
15429/// The prototype to the OpenGL function `GetSamplerParameterfv`
15430type PFNGLGETSAMPLERPARAMETERFVPROC = extern "system" fn(GLuint, GLenum, *mut GLfloat);
15431
15432/// The prototype to the OpenGL function `GetSamplerParameterIuiv`
15433type PFNGLGETSAMPLERPARAMETERIUIVPROC = extern "system" fn(GLuint, GLenum, *mut GLuint);
15434
15435/// The prototype to the OpenGL function `QueryCounter`
15436type PFNGLQUERYCOUNTERPROC = extern "system" fn(GLuint, GLenum);
15437
15438/// The prototype to the OpenGL function `GetQueryObjecti64v`
15439type PFNGLGETQUERYOBJECTI64VPROC = extern "system" fn(GLuint, GLenum, *mut GLint64);
15440
15441/// The prototype to the OpenGL function `GetQueryObjectui64v`
15442type PFNGLGETQUERYOBJECTUI64VPROC = extern "system" fn(GLuint, GLenum, *mut GLuint64);
15443
15444/// The prototype to the OpenGL function `VertexAttribDivisor`
15445type PFNGLVERTEXATTRIBDIVISORPROC = extern "system" fn(GLuint, GLuint);
15446
15447/// The prototype to the OpenGL function `VertexAttribP1ui`
15448type PFNGLVERTEXATTRIBP1UIPROC = extern "system" fn(GLuint, GLenum, GLboolean, GLuint);
15449
15450/// The prototype to the OpenGL function `VertexAttribP1uiv`
15451type PFNGLVERTEXATTRIBP1UIVPROC = extern "system" fn(GLuint, GLenum, GLboolean, *const GLuint);
15452
15453/// The prototype to the OpenGL function `VertexAttribP2ui`
15454type PFNGLVERTEXATTRIBP2UIPROC = extern "system" fn(GLuint, GLenum, GLboolean, GLuint);
15455
15456/// The prototype to the OpenGL function `VertexAttribP2uiv`
15457type PFNGLVERTEXATTRIBP2UIVPROC = extern "system" fn(GLuint, GLenum, GLboolean, *const GLuint);
15458
15459/// The prototype to the OpenGL function `VertexAttribP3ui`
15460type PFNGLVERTEXATTRIBP3UIPROC = extern "system" fn(GLuint, GLenum, GLboolean, GLuint);
15461
15462/// The prototype to the OpenGL function `VertexAttribP3uiv`
15463type PFNGLVERTEXATTRIBP3UIVPROC = extern "system" fn(GLuint, GLenum, GLboolean, *const GLuint);
15464
15465/// The prototype to the OpenGL function `VertexAttribP4ui`
15466type PFNGLVERTEXATTRIBP4UIPROC = extern "system" fn(GLuint, GLenum, GLboolean, GLuint);
15467
15468/// The prototype to the OpenGL function `VertexAttribP4uiv`
15469type PFNGLVERTEXATTRIBP4UIVPROC = extern "system" fn(GLuint, GLenum, GLboolean, *const GLuint);
15470
15471/// The prototype to the OpenGL function `VertexP2ui`
15472type PFNGLVERTEXP2UIPROC = extern "system" fn(GLenum, GLuint);
15473
15474/// The prototype to the OpenGL function `VertexP2uiv`
15475type PFNGLVERTEXP2UIVPROC = extern "system" fn(GLenum, *const GLuint);
15476
15477/// The prototype to the OpenGL function `VertexP3ui`
15478type PFNGLVERTEXP3UIPROC = extern "system" fn(GLenum, GLuint);
15479
15480/// The prototype to the OpenGL function `VertexP3uiv`
15481type PFNGLVERTEXP3UIVPROC = extern "system" fn(GLenum, *const GLuint);
15482
15483/// The prototype to the OpenGL function `VertexP4ui`
15484type PFNGLVERTEXP4UIPROC = extern "system" fn(GLenum, GLuint);
15485
15486/// The prototype to the OpenGL function `VertexP4uiv`
15487type PFNGLVERTEXP4UIVPROC = extern "system" fn(GLenum, *const GLuint);
15488
15489/// The prototype to the OpenGL function `TexCoordP1ui`
15490type PFNGLTEXCOORDP1UIPROC = extern "system" fn(GLenum, GLuint);
15491
15492/// The prototype to the OpenGL function `TexCoordP1uiv`
15493type PFNGLTEXCOORDP1UIVPROC = extern "system" fn(GLenum, *const GLuint);
15494
15495/// The prototype to the OpenGL function `TexCoordP2ui`
15496type PFNGLTEXCOORDP2UIPROC = extern "system" fn(GLenum, GLuint);
15497
15498/// The prototype to the OpenGL function `TexCoordP2uiv`
15499type PFNGLTEXCOORDP2UIVPROC = extern "system" fn(GLenum, *const GLuint);
15500
15501/// The prototype to the OpenGL function `TexCoordP3ui`
15502type PFNGLTEXCOORDP3UIPROC = extern "system" fn(GLenum, GLuint);
15503
15504/// The prototype to the OpenGL function `TexCoordP3uiv`
15505type PFNGLTEXCOORDP3UIVPROC = extern "system" fn(GLenum, *const GLuint);
15506
15507/// The prototype to the OpenGL function `TexCoordP4ui`
15508type PFNGLTEXCOORDP4UIPROC = extern "system" fn(GLenum, GLuint);
15509
15510/// The prototype to the OpenGL function `TexCoordP4uiv`
15511type PFNGLTEXCOORDP4UIVPROC = extern "system" fn(GLenum, *const GLuint);
15512
15513/// The prototype to the OpenGL function `MultiTexCoordP1ui`
15514type PFNGLMULTITEXCOORDP1UIPROC = extern "system" fn(GLenum, GLenum, GLuint);
15515
15516/// The prototype to the OpenGL function `MultiTexCoordP1uiv`
15517type PFNGLMULTITEXCOORDP1UIVPROC = extern "system" fn(GLenum, GLenum, *const GLuint);
15518
15519/// The prototype to the OpenGL function `MultiTexCoordP2ui`
15520type PFNGLMULTITEXCOORDP2UIPROC = extern "system" fn(GLenum, GLenum, GLuint);
15521
15522/// The prototype to the OpenGL function `MultiTexCoordP2uiv`
15523type PFNGLMULTITEXCOORDP2UIVPROC = extern "system" fn(GLenum, GLenum, *const GLuint);
15524
15525/// The prototype to the OpenGL function `MultiTexCoordP3ui`
15526type PFNGLMULTITEXCOORDP3UIPROC = extern "system" fn(GLenum, GLenum, GLuint);
15527
15528/// The prototype to the OpenGL function `MultiTexCoordP3uiv`
15529type PFNGLMULTITEXCOORDP3UIVPROC = extern "system" fn(GLenum, GLenum, *const GLuint);
15530
15531/// The prototype to the OpenGL function `MultiTexCoordP4ui`
15532type PFNGLMULTITEXCOORDP4UIPROC = extern "system" fn(GLenum, GLenum, GLuint);
15533
15534/// The prototype to the OpenGL function `MultiTexCoordP4uiv`
15535type PFNGLMULTITEXCOORDP4UIVPROC = extern "system" fn(GLenum, GLenum, *const GLuint);
15536
15537/// The prototype to the OpenGL function `NormalP3ui`
15538type PFNGLNORMALP3UIPROC = extern "system" fn(GLenum, GLuint);
15539
15540/// The prototype to the OpenGL function `NormalP3uiv`
15541type PFNGLNORMALP3UIVPROC = extern "system" fn(GLenum, *const GLuint);
15542
15543/// The prototype to the OpenGL function `ColorP3ui`
15544type PFNGLCOLORP3UIPROC = extern "system" fn(GLenum, GLuint);
15545
15546/// The prototype to the OpenGL function `ColorP3uiv`
15547type PFNGLCOLORP3UIVPROC = extern "system" fn(GLenum, *const GLuint);
15548
15549/// The prototype to the OpenGL function `ColorP4ui`
15550type PFNGLCOLORP4UIPROC = extern "system" fn(GLenum, GLuint);
15551
15552/// The prototype to the OpenGL function `ColorP4uiv`
15553type PFNGLCOLORP4UIVPROC = extern "system" fn(GLenum, *const GLuint);
15554
15555/// The prototype to the OpenGL function `SecondaryColorP3ui`
15556type PFNGLSECONDARYCOLORP3UIPROC = extern "system" fn(GLenum, GLuint);
15557
15558/// The prototype to the OpenGL function `SecondaryColorP3uiv`
15559type PFNGLSECONDARYCOLORP3UIVPROC = extern "system" fn(GLenum, *const GLuint);
15560
15561/// The dummy function of `BindFragDataLocationIndexed()`
15562extern "system" fn dummy_pfnglbindfragdatalocationindexedproc (_: GLuint, _: GLuint, _: GLuint, _: *const GLchar) {
15563	panic!("OpenGL function pointer `glBindFragDataLocationIndexed()` is null.")
15564}
15565
15566/// The dummy function of `GetFragDataIndex()`
15567extern "system" fn dummy_pfnglgetfragdataindexproc (_: GLuint, _: *const GLchar) -> GLint {
15568	panic!("OpenGL function pointer `glGetFragDataIndex()` is null.")
15569}
15570
15571/// The dummy function of `GenSamplers()`
15572extern "system" fn dummy_pfnglgensamplersproc (_: GLsizei, _: *mut GLuint) {
15573	panic!("OpenGL function pointer `glGenSamplers()` is null.")
15574}
15575
15576/// The dummy function of `DeleteSamplers()`
15577extern "system" fn dummy_pfngldeletesamplersproc (_: GLsizei, _: *const GLuint) {
15578	panic!("OpenGL function pointer `glDeleteSamplers()` is null.")
15579}
15580
15581/// The dummy function of `IsSampler()`
15582extern "system" fn dummy_pfnglissamplerproc (_: GLuint) -> GLboolean {
15583	panic!("OpenGL function pointer `glIsSampler()` is null.")
15584}
15585
15586/// The dummy function of `BindSampler()`
15587extern "system" fn dummy_pfnglbindsamplerproc (_: GLuint, _: GLuint) {
15588	panic!("OpenGL function pointer `glBindSampler()` is null.")
15589}
15590
15591/// The dummy function of `SamplerParameteri()`
15592extern "system" fn dummy_pfnglsamplerparameteriproc (_: GLuint, _: GLenum, _: GLint) {
15593	panic!("OpenGL function pointer `glSamplerParameteri()` is null.")
15594}
15595
15596/// The dummy function of `SamplerParameteriv()`
15597extern "system" fn dummy_pfnglsamplerparameterivproc (_: GLuint, _: GLenum, _: *const GLint) {
15598	panic!("OpenGL function pointer `glSamplerParameteriv()` is null.")
15599}
15600
15601/// The dummy function of `SamplerParameterf()`
15602extern "system" fn dummy_pfnglsamplerparameterfproc (_: GLuint, _: GLenum, _: GLfloat) {
15603	panic!("OpenGL function pointer `glSamplerParameterf()` is null.")
15604}
15605
15606/// The dummy function of `SamplerParameterfv()`
15607extern "system" fn dummy_pfnglsamplerparameterfvproc (_: GLuint, _: GLenum, _: *const GLfloat) {
15608	panic!("OpenGL function pointer `glSamplerParameterfv()` is null.")
15609}
15610
15611/// The dummy function of `SamplerParameterIiv()`
15612extern "system" fn dummy_pfnglsamplerparameteriivproc (_: GLuint, _: GLenum, _: *const GLint) {
15613	panic!("OpenGL function pointer `glSamplerParameterIiv()` is null.")
15614}
15615
15616/// The dummy function of `SamplerParameterIuiv()`
15617extern "system" fn dummy_pfnglsamplerparameteriuivproc (_: GLuint, _: GLenum, _: *const GLuint) {
15618	panic!("OpenGL function pointer `glSamplerParameterIuiv()` is null.")
15619}
15620
15621/// The dummy function of `GetSamplerParameteriv()`
15622extern "system" fn dummy_pfnglgetsamplerparameterivproc (_: GLuint, _: GLenum, _: *mut GLint) {
15623	panic!("OpenGL function pointer `glGetSamplerParameteriv()` is null.")
15624}
15625
15626/// The dummy function of `GetSamplerParameterIiv()`
15627extern "system" fn dummy_pfnglgetsamplerparameteriivproc (_: GLuint, _: GLenum, _: *mut GLint) {
15628	panic!("OpenGL function pointer `glGetSamplerParameterIiv()` is null.")
15629}
15630
15631/// The dummy function of `GetSamplerParameterfv()`
15632extern "system" fn dummy_pfnglgetsamplerparameterfvproc (_: GLuint, _: GLenum, _: *mut GLfloat) {
15633	panic!("OpenGL function pointer `glGetSamplerParameterfv()` is null.")
15634}
15635
15636/// The dummy function of `GetSamplerParameterIuiv()`
15637extern "system" fn dummy_pfnglgetsamplerparameteriuivproc (_: GLuint, _: GLenum, _: *mut GLuint) {
15638	panic!("OpenGL function pointer `glGetSamplerParameterIuiv()` is null.")
15639}
15640
15641/// The dummy function of `QueryCounter()`
15642extern "system" fn dummy_pfnglquerycounterproc (_: GLuint, _: GLenum) {
15643	panic!("OpenGL function pointer `glQueryCounter()` is null.")
15644}
15645
15646/// The dummy function of `GetQueryObjecti64v()`
15647extern "system" fn dummy_pfnglgetqueryobjecti64vproc (_: GLuint, _: GLenum, _: *mut GLint64) {
15648	panic!("OpenGL function pointer `glGetQueryObjecti64v()` is null.")
15649}
15650
15651/// The dummy function of `GetQueryObjectui64v()`
15652extern "system" fn dummy_pfnglgetqueryobjectui64vproc (_: GLuint, _: GLenum, _: *mut GLuint64) {
15653	panic!("OpenGL function pointer `glGetQueryObjectui64v()` is null.")
15654}
15655
15656/// The dummy function of `VertexAttribDivisor()`
15657extern "system" fn dummy_pfnglvertexattribdivisorproc (_: GLuint, _: GLuint) {
15658	panic!("OpenGL function pointer `glVertexAttribDivisor()` is null.")
15659}
15660
15661/// The dummy function of `VertexAttribP1ui()`
15662extern "system" fn dummy_pfnglvertexattribp1uiproc (_: GLuint, _: GLenum, _: GLboolean, _: GLuint) {
15663	panic!("OpenGL function pointer `glVertexAttribP1ui()` is null.")
15664}
15665
15666/// The dummy function of `VertexAttribP1uiv()`
15667extern "system" fn dummy_pfnglvertexattribp1uivproc (_: GLuint, _: GLenum, _: GLboolean, _: *const GLuint) {
15668	panic!("OpenGL function pointer `glVertexAttribP1uiv()` is null.")
15669}
15670
15671/// The dummy function of `VertexAttribP2ui()`
15672extern "system" fn dummy_pfnglvertexattribp2uiproc (_: GLuint, _: GLenum, _: GLboolean, _: GLuint) {
15673	panic!("OpenGL function pointer `glVertexAttribP2ui()` is null.")
15674}
15675
15676/// The dummy function of `VertexAttribP2uiv()`
15677extern "system" fn dummy_pfnglvertexattribp2uivproc (_: GLuint, _: GLenum, _: GLboolean, _: *const GLuint) {
15678	panic!("OpenGL function pointer `glVertexAttribP2uiv()` is null.")
15679}
15680
15681/// The dummy function of `VertexAttribP3ui()`
15682extern "system" fn dummy_pfnglvertexattribp3uiproc (_: GLuint, _: GLenum, _: GLboolean, _: GLuint) {
15683	panic!("OpenGL function pointer `glVertexAttribP3ui()` is null.")
15684}
15685
15686/// The dummy function of `VertexAttribP3uiv()`
15687extern "system" fn dummy_pfnglvertexattribp3uivproc (_: GLuint, _: GLenum, _: GLboolean, _: *const GLuint) {
15688	panic!("OpenGL function pointer `glVertexAttribP3uiv()` is null.")
15689}
15690
15691/// The dummy function of `VertexAttribP4ui()`
15692extern "system" fn dummy_pfnglvertexattribp4uiproc (_: GLuint, _: GLenum, _: GLboolean, _: GLuint) {
15693	panic!("OpenGL function pointer `glVertexAttribP4ui()` is null.")
15694}
15695
15696/// The dummy function of `VertexAttribP4uiv()`
15697extern "system" fn dummy_pfnglvertexattribp4uivproc (_: GLuint, _: GLenum, _: GLboolean, _: *const GLuint) {
15698	panic!("OpenGL function pointer `glVertexAttribP4uiv()` is null.")
15699}
15700
15701/// The dummy function of `VertexP2ui()`
15702extern "system" fn dummy_pfnglvertexp2uiproc (_: GLenum, _: GLuint) {
15703	panic!("OpenGL function pointer `glVertexP2ui()` is null.")
15704}
15705
15706/// The dummy function of `VertexP2uiv()`
15707extern "system" fn dummy_pfnglvertexp2uivproc (_: GLenum, _: *const GLuint) {
15708	panic!("OpenGL function pointer `glVertexP2uiv()` is null.")
15709}
15710
15711/// The dummy function of `VertexP3ui()`
15712extern "system" fn dummy_pfnglvertexp3uiproc (_: GLenum, _: GLuint) {
15713	panic!("OpenGL function pointer `glVertexP3ui()` is null.")
15714}
15715
15716/// The dummy function of `VertexP3uiv()`
15717extern "system" fn dummy_pfnglvertexp3uivproc (_: GLenum, _: *const GLuint) {
15718	panic!("OpenGL function pointer `glVertexP3uiv()` is null.")
15719}
15720
15721/// The dummy function of `VertexP4ui()`
15722extern "system" fn dummy_pfnglvertexp4uiproc (_: GLenum, _: GLuint) {
15723	panic!("OpenGL function pointer `glVertexP4ui()` is null.")
15724}
15725
15726/// The dummy function of `VertexP4uiv()`
15727extern "system" fn dummy_pfnglvertexp4uivproc (_: GLenum, _: *const GLuint) {
15728	panic!("OpenGL function pointer `glVertexP4uiv()` is null.")
15729}
15730
15731/// The dummy function of `TexCoordP1ui()`
15732extern "system" fn dummy_pfngltexcoordp1uiproc (_: GLenum, _: GLuint) {
15733	panic!("OpenGL function pointer `glTexCoordP1ui()` is null.")
15734}
15735
15736/// The dummy function of `TexCoordP1uiv()`
15737extern "system" fn dummy_pfngltexcoordp1uivproc (_: GLenum, _: *const GLuint) {
15738	panic!("OpenGL function pointer `glTexCoordP1uiv()` is null.")
15739}
15740
15741/// The dummy function of `TexCoordP2ui()`
15742extern "system" fn dummy_pfngltexcoordp2uiproc (_: GLenum, _: GLuint) {
15743	panic!("OpenGL function pointer `glTexCoordP2ui()` is null.")
15744}
15745
15746/// The dummy function of `TexCoordP2uiv()`
15747extern "system" fn dummy_pfngltexcoordp2uivproc (_: GLenum, _: *const GLuint) {
15748	panic!("OpenGL function pointer `glTexCoordP2uiv()` is null.")
15749}
15750
15751/// The dummy function of `TexCoordP3ui()`
15752extern "system" fn dummy_pfngltexcoordp3uiproc (_: GLenum, _: GLuint) {
15753	panic!("OpenGL function pointer `glTexCoordP3ui()` is null.")
15754}
15755
15756/// The dummy function of `TexCoordP3uiv()`
15757extern "system" fn dummy_pfngltexcoordp3uivproc (_: GLenum, _: *const GLuint) {
15758	panic!("OpenGL function pointer `glTexCoordP3uiv()` is null.")
15759}
15760
15761/// The dummy function of `TexCoordP4ui()`
15762extern "system" fn dummy_pfngltexcoordp4uiproc (_: GLenum, _: GLuint) {
15763	panic!("OpenGL function pointer `glTexCoordP4ui()` is null.")
15764}
15765
15766/// The dummy function of `TexCoordP4uiv()`
15767extern "system" fn dummy_pfngltexcoordp4uivproc (_: GLenum, _: *const GLuint) {
15768	panic!("OpenGL function pointer `glTexCoordP4uiv()` is null.")
15769}
15770
15771/// The dummy function of `MultiTexCoordP1ui()`
15772extern "system" fn dummy_pfnglmultitexcoordp1uiproc (_: GLenum, _: GLenum, _: GLuint) {
15773	panic!("OpenGL function pointer `glMultiTexCoordP1ui()` is null.")
15774}
15775
15776/// The dummy function of `MultiTexCoordP1uiv()`
15777extern "system" fn dummy_pfnglmultitexcoordp1uivproc (_: GLenum, _: GLenum, _: *const GLuint) {
15778	panic!("OpenGL function pointer `glMultiTexCoordP1uiv()` is null.")
15779}
15780
15781/// The dummy function of `MultiTexCoordP2ui()`
15782extern "system" fn dummy_pfnglmultitexcoordp2uiproc (_: GLenum, _: GLenum, _: GLuint) {
15783	panic!("OpenGL function pointer `glMultiTexCoordP2ui()` is null.")
15784}
15785
15786/// The dummy function of `MultiTexCoordP2uiv()`
15787extern "system" fn dummy_pfnglmultitexcoordp2uivproc (_: GLenum, _: GLenum, _: *const GLuint) {
15788	panic!("OpenGL function pointer `glMultiTexCoordP2uiv()` is null.")
15789}
15790
15791/// The dummy function of `MultiTexCoordP3ui()`
15792extern "system" fn dummy_pfnglmultitexcoordp3uiproc (_: GLenum, _: GLenum, _: GLuint) {
15793	panic!("OpenGL function pointer `glMultiTexCoordP3ui()` is null.")
15794}
15795
15796/// The dummy function of `MultiTexCoordP3uiv()`
15797extern "system" fn dummy_pfnglmultitexcoordp3uivproc (_: GLenum, _: GLenum, _: *const GLuint) {
15798	panic!("OpenGL function pointer `glMultiTexCoordP3uiv()` is null.")
15799}
15800
15801/// The dummy function of `MultiTexCoordP4ui()`
15802extern "system" fn dummy_pfnglmultitexcoordp4uiproc (_: GLenum, _: GLenum, _: GLuint) {
15803	panic!("OpenGL function pointer `glMultiTexCoordP4ui()` is null.")
15804}
15805
15806/// The dummy function of `MultiTexCoordP4uiv()`
15807extern "system" fn dummy_pfnglmultitexcoordp4uivproc (_: GLenum, _: GLenum, _: *const GLuint) {
15808	panic!("OpenGL function pointer `glMultiTexCoordP4uiv()` is null.")
15809}
15810
15811/// The dummy function of `NormalP3ui()`
15812extern "system" fn dummy_pfnglnormalp3uiproc (_: GLenum, _: GLuint) {
15813	panic!("OpenGL function pointer `glNormalP3ui()` is null.")
15814}
15815
15816/// The dummy function of `NormalP3uiv()`
15817extern "system" fn dummy_pfnglnormalp3uivproc (_: GLenum, _: *const GLuint) {
15818	panic!("OpenGL function pointer `glNormalP3uiv()` is null.")
15819}
15820
15821/// The dummy function of `ColorP3ui()`
15822extern "system" fn dummy_pfnglcolorp3uiproc (_: GLenum, _: GLuint) {
15823	panic!("OpenGL function pointer `glColorP3ui()` is null.")
15824}
15825
15826/// The dummy function of `ColorP3uiv()`
15827extern "system" fn dummy_pfnglcolorp3uivproc (_: GLenum, _: *const GLuint) {
15828	panic!("OpenGL function pointer `glColorP3uiv()` is null.")
15829}
15830
15831/// The dummy function of `ColorP4ui()`
15832extern "system" fn dummy_pfnglcolorp4uiproc (_: GLenum, _: GLuint) {
15833	panic!("OpenGL function pointer `glColorP4ui()` is null.")
15834}
15835
15836/// The dummy function of `ColorP4uiv()`
15837extern "system" fn dummy_pfnglcolorp4uivproc (_: GLenum, _: *const GLuint) {
15838	panic!("OpenGL function pointer `glColorP4uiv()` is null.")
15839}
15840
15841/// The dummy function of `SecondaryColorP3ui()`
15842extern "system" fn dummy_pfnglsecondarycolorp3uiproc (_: GLenum, _: GLuint) {
15843	panic!("OpenGL function pointer `glSecondaryColorP3ui()` is null.")
15844}
15845
15846/// The dummy function of `SecondaryColorP3uiv()`
15847extern "system" fn dummy_pfnglsecondarycolorp3uivproc (_: GLenum, _: *const GLuint) {
15848	panic!("OpenGL function pointer `glSecondaryColorP3uiv()` is null.")
15849}
15850/// Constant value defined from OpenGL 3.3
15851pub const GL_VERTEX_ATTRIB_ARRAY_DIVISOR: GLenum = 0x88FE;
15852
15853/// Constant value defined from OpenGL 3.3
15854pub const GL_SRC1_COLOR: GLenum = 0x88F9;
15855
15856/// Constant value defined from OpenGL 3.3
15857pub const GL_ONE_MINUS_SRC1_COLOR: GLenum = 0x88FA;
15858
15859/// Constant value defined from OpenGL 3.3
15860pub const GL_ONE_MINUS_SRC1_ALPHA: GLenum = 0x88FB;
15861
15862/// Constant value defined from OpenGL 3.3
15863pub const GL_MAX_DUAL_SOURCE_DRAW_BUFFERS: GLenum = 0x88FC;
15864
15865/// Constant value defined from OpenGL 3.3
15866pub const GL_ANY_SAMPLES_PASSED: GLenum = 0x8C2F;
15867
15868/// Constant value defined from OpenGL 3.3
15869pub const GL_SAMPLER_BINDING: GLenum = 0x8919;
15870
15871/// Constant value defined from OpenGL 3.3
15872pub const GL_RGB10_A2UI: GLenum = 0x906F;
15873
15874/// Constant value defined from OpenGL 3.3
15875pub const GL_TEXTURE_SWIZZLE_R: GLenum = 0x8E42;
15876
15877/// Constant value defined from OpenGL 3.3
15878pub const GL_TEXTURE_SWIZZLE_G: GLenum = 0x8E43;
15879
15880/// Constant value defined from OpenGL 3.3
15881pub const GL_TEXTURE_SWIZZLE_B: GLenum = 0x8E44;
15882
15883/// Constant value defined from OpenGL 3.3
15884pub const GL_TEXTURE_SWIZZLE_A: GLenum = 0x8E45;
15885
15886/// Constant value defined from OpenGL 3.3
15887pub const GL_TEXTURE_SWIZZLE_RGBA: GLenum = 0x8E46;
15888
15889/// Constant value defined from OpenGL 3.3
15890pub const GL_TIME_ELAPSED: GLenum = 0x88BF;
15891
15892/// Constant value defined from OpenGL 3.3
15893pub const GL_TIMESTAMP: GLenum = 0x8E28;
15894
15895/// Constant value defined from OpenGL 3.3
15896pub const GL_INT_2_10_10_10_REV: GLenum = 0x8D9F;
15897
15898/// Functions from OpenGL version 3.3
15899pub trait GL_3_3 {
15900	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
15901	fn glGetError(&self) -> GLenum;
15902
15903	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindFragDataLocationIndexed.xhtml>
15904	fn glBindFragDataLocationIndexed(&self, program: GLuint, colorNumber: GLuint, index: GLuint, name: *const GLchar) -> Result<()>;
15905
15906	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFragDataIndex.xhtml>
15907	fn glGetFragDataIndex(&self, program: GLuint, name: *const GLchar) -> Result<GLint>;
15908
15909	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenSamplers.xhtml>
15910	fn glGenSamplers(&self, count: GLsizei, samplers: *mut GLuint) -> Result<()>;
15911
15912	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteSamplers.xhtml>
15913	fn glDeleteSamplers(&self, count: GLsizei, samplers: *const GLuint) -> Result<()>;
15914
15915	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsSampler.xhtml>
15916	fn glIsSampler(&self, sampler: GLuint) -> Result<GLboolean>;
15917
15918	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindSampler.xhtml>
15919	fn glBindSampler(&self, unit: GLuint, sampler: GLuint) -> Result<()>;
15920
15921	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameteri.xhtml>
15922	fn glSamplerParameteri(&self, sampler: GLuint, pname: GLenum, param: GLint) -> Result<()>;
15923
15924	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameteriv.xhtml>
15925	fn glSamplerParameteriv(&self, sampler: GLuint, pname: GLenum, param: *const GLint) -> Result<()>;
15926
15927	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameterf.xhtml>
15928	fn glSamplerParameterf(&self, sampler: GLuint, pname: GLenum, param: GLfloat) -> Result<()>;
15929
15930	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameterfv.xhtml>
15931	fn glSamplerParameterfv(&self, sampler: GLuint, pname: GLenum, param: *const GLfloat) -> Result<()>;
15932
15933	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameterIiv.xhtml>
15934	fn glSamplerParameterIiv(&self, sampler: GLuint, pname: GLenum, param: *const GLint) -> Result<()>;
15935
15936	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameterIuiv.xhtml>
15937	fn glSamplerParameterIuiv(&self, sampler: GLuint, pname: GLenum, param: *const GLuint) -> Result<()>;
15938
15939	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSamplerParameteriv.xhtml>
15940	fn glGetSamplerParameteriv(&self, sampler: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
15941
15942	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSamplerParameterIiv.xhtml>
15943	fn glGetSamplerParameterIiv(&self, sampler: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
15944
15945	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSamplerParameterfv.xhtml>
15946	fn glGetSamplerParameterfv(&self, sampler: GLuint, pname: GLenum, params: *mut GLfloat) -> Result<()>;
15947
15948	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSamplerParameterIuiv.xhtml>
15949	fn glGetSamplerParameterIuiv(&self, sampler: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()>;
15950
15951	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glQueryCounter.xhtml>
15952	fn glQueryCounter(&self, id: GLuint, target: GLenum) -> Result<()>;
15953
15954	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryObjecti64v.xhtml>
15955	fn glGetQueryObjecti64v(&self, id: GLuint, pname: GLenum, params: *mut GLint64) -> Result<()>;
15956
15957	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryObjectui64v.xhtml>
15958	fn glGetQueryObjectui64v(&self, id: GLuint, pname: GLenum, params: *mut GLuint64) -> Result<()>;
15959
15960	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribDivisor.xhtml>
15961	fn glVertexAttribDivisor(&self, index: GLuint, divisor: GLuint) -> Result<()>;
15962
15963	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP1ui.xhtml>
15964	fn glVertexAttribP1ui(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint) -> Result<()>;
15965
15966	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP1uiv.xhtml>
15967	fn glVertexAttribP1uiv(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint) -> Result<()>;
15968
15969	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP2ui.xhtml>
15970	fn glVertexAttribP2ui(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint) -> Result<()>;
15971
15972	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP2uiv.xhtml>
15973	fn glVertexAttribP2uiv(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint) -> Result<()>;
15974
15975	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP3ui.xhtml>
15976	fn glVertexAttribP3ui(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint) -> Result<()>;
15977
15978	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP3uiv.xhtml>
15979	fn glVertexAttribP3uiv(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint) -> Result<()>;
15980
15981	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP4ui.xhtml>
15982	fn glVertexAttribP4ui(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint) -> Result<()>;
15983
15984	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP4uiv.xhtml>
15985	fn glVertexAttribP4uiv(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint) -> Result<()>;
15986
15987	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP2ui.xhtml>
15988	fn glVertexP2ui(&self, type_: GLenum, value: GLuint) -> Result<()>;
15989
15990	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP2uiv.xhtml>
15991	fn glVertexP2uiv(&self, type_: GLenum, value: *const GLuint) -> Result<()>;
15992
15993	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP3ui.xhtml>
15994	fn glVertexP3ui(&self, type_: GLenum, value: GLuint) -> Result<()>;
15995
15996	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP3uiv.xhtml>
15997	fn glVertexP3uiv(&self, type_: GLenum, value: *const GLuint) -> Result<()>;
15998
15999	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP4ui.xhtml>
16000	fn glVertexP4ui(&self, type_: GLenum, value: GLuint) -> Result<()>;
16001
16002	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP4uiv.xhtml>
16003	fn glVertexP4uiv(&self, type_: GLenum, value: *const GLuint) -> Result<()>;
16004
16005	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP1ui.xhtml>
16006	fn glTexCoordP1ui(&self, type_: GLenum, coords: GLuint) -> Result<()>;
16007
16008	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP1uiv.xhtml>
16009	fn glTexCoordP1uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()>;
16010
16011	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP2ui.xhtml>
16012	fn glTexCoordP2ui(&self, type_: GLenum, coords: GLuint) -> Result<()>;
16013
16014	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP2uiv.xhtml>
16015	fn glTexCoordP2uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()>;
16016
16017	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP3ui.xhtml>
16018	fn glTexCoordP3ui(&self, type_: GLenum, coords: GLuint) -> Result<()>;
16019
16020	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP3uiv.xhtml>
16021	fn glTexCoordP3uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()>;
16022
16023	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP4ui.xhtml>
16024	fn glTexCoordP4ui(&self, type_: GLenum, coords: GLuint) -> Result<()>;
16025
16026	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP4uiv.xhtml>
16027	fn glTexCoordP4uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()>;
16028
16029	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP1ui.xhtml>
16030	fn glMultiTexCoordP1ui(&self, texture: GLenum, type_: GLenum, coords: GLuint) -> Result<()>;
16031
16032	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP1uiv.xhtml>
16033	fn glMultiTexCoordP1uiv(&self, texture: GLenum, type_: GLenum, coords: *const GLuint) -> Result<()>;
16034
16035	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP2ui.xhtml>
16036	fn glMultiTexCoordP2ui(&self, texture: GLenum, type_: GLenum, coords: GLuint) -> Result<()>;
16037
16038	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP2uiv.xhtml>
16039	fn glMultiTexCoordP2uiv(&self, texture: GLenum, type_: GLenum, coords: *const GLuint) -> Result<()>;
16040
16041	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP3ui.xhtml>
16042	fn glMultiTexCoordP3ui(&self, texture: GLenum, type_: GLenum, coords: GLuint) -> Result<()>;
16043
16044	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP3uiv.xhtml>
16045	fn glMultiTexCoordP3uiv(&self, texture: GLenum, type_: GLenum, coords: *const GLuint) -> Result<()>;
16046
16047	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP4ui.xhtml>
16048	fn glMultiTexCoordP4ui(&self, texture: GLenum, type_: GLenum, coords: GLuint) -> Result<()>;
16049
16050	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP4uiv.xhtml>
16051	fn glMultiTexCoordP4uiv(&self, texture: GLenum, type_: GLenum, coords: *const GLuint) -> Result<()>;
16052
16053	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNormalP3ui.xhtml>
16054	fn glNormalP3ui(&self, type_: GLenum, coords: GLuint) -> Result<()>;
16055
16056	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNormalP3uiv.xhtml>
16057	fn glNormalP3uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()>;
16058
16059	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorP3ui.xhtml>
16060	fn glColorP3ui(&self, type_: GLenum, color: GLuint) -> Result<()>;
16061
16062	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorP3uiv.xhtml>
16063	fn glColorP3uiv(&self, type_: GLenum, color: *const GLuint) -> Result<()>;
16064
16065	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorP4ui.xhtml>
16066	fn glColorP4ui(&self, type_: GLenum, color: GLuint) -> Result<()>;
16067
16068	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorP4uiv.xhtml>
16069	fn glColorP4uiv(&self, type_: GLenum, color: *const GLuint) -> Result<()>;
16070
16071	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColorP3ui.xhtml>
16072	fn glSecondaryColorP3ui(&self, type_: GLenum, color: GLuint) -> Result<()>;
16073
16074	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColorP3uiv.xhtml>
16075	fn glSecondaryColorP3uiv(&self, type_: GLenum, color: *const GLuint) -> Result<()>;
16076}
16077/// Functions from OpenGL version 3.3
16078#[derive(Clone, Copy, PartialEq, Eq, Hash)]
16079pub struct Version33 {
16080	/// Is OpenGL version 3.3 available
16081	available: bool,
16082
16083	/// The function pointer to `glGetError()`
16084	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
16085	pub geterror: PFNGLGETERRORPROC,
16086
16087	/// The function pointer to `glBindFragDataLocationIndexed()`
16088	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindFragDataLocationIndexed.xhtml>
16089	pub bindfragdatalocationindexed: PFNGLBINDFRAGDATALOCATIONINDEXEDPROC,
16090
16091	/// The function pointer to `glGetFragDataIndex()`
16092	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFragDataIndex.xhtml>
16093	pub getfragdataindex: PFNGLGETFRAGDATAINDEXPROC,
16094
16095	/// The function pointer to `glGenSamplers()`
16096	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenSamplers.xhtml>
16097	pub gensamplers: PFNGLGENSAMPLERSPROC,
16098
16099	/// The function pointer to `glDeleteSamplers()`
16100	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteSamplers.xhtml>
16101	pub deletesamplers: PFNGLDELETESAMPLERSPROC,
16102
16103	/// The function pointer to `glIsSampler()`
16104	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsSampler.xhtml>
16105	pub issampler: PFNGLISSAMPLERPROC,
16106
16107	/// The function pointer to `glBindSampler()`
16108	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindSampler.xhtml>
16109	pub bindsampler: PFNGLBINDSAMPLERPROC,
16110
16111	/// The function pointer to `glSamplerParameteri()`
16112	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameteri.xhtml>
16113	pub samplerparameteri: PFNGLSAMPLERPARAMETERIPROC,
16114
16115	/// The function pointer to `glSamplerParameteriv()`
16116	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameteriv.xhtml>
16117	pub samplerparameteriv: PFNGLSAMPLERPARAMETERIVPROC,
16118
16119	/// The function pointer to `glSamplerParameterf()`
16120	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameterf.xhtml>
16121	pub samplerparameterf: PFNGLSAMPLERPARAMETERFPROC,
16122
16123	/// The function pointer to `glSamplerParameterfv()`
16124	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameterfv.xhtml>
16125	pub samplerparameterfv: PFNGLSAMPLERPARAMETERFVPROC,
16126
16127	/// The function pointer to `glSamplerParameterIiv()`
16128	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameterIiv.xhtml>
16129	pub samplerparameteriiv: PFNGLSAMPLERPARAMETERIIVPROC,
16130
16131	/// The function pointer to `glSamplerParameterIuiv()`
16132	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameterIuiv.xhtml>
16133	pub samplerparameteriuiv: PFNGLSAMPLERPARAMETERIUIVPROC,
16134
16135	/// The function pointer to `glGetSamplerParameteriv()`
16136	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSamplerParameteriv.xhtml>
16137	pub getsamplerparameteriv: PFNGLGETSAMPLERPARAMETERIVPROC,
16138
16139	/// The function pointer to `glGetSamplerParameterIiv()`
16140	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSamplerParameterIiv.xhtml>
16141	pub getsamplerparameteriiv: PFNGLGETSAMPLERPARAMETERIIVPROC,
16142
16143	/// The function pointer to `glGetSamplerParameterfv()`
16144	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSamplerParameterfv.xhtml>
16145	pub getsamplerparameterfv: PFNGLGETSAMPLERPARAMETERFVPROC,
16146
16147	/// The function pointer to `glGetSamplerParameterIuiv()`
16148	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSamplerParameterIuiv.xhtml>
16149	pub getsamplerparameteriuiv: PFNGLGETSAMPLERPARAMETERIUIVPROC,
16150
16151	/// The function pointer to `glQueryCounter()`
16152	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glQueryCounter.xhtml>
16153	pub querycounter: PFNGLQUERYCOUNTERPROC,
16154
16155	/// The function pointer to `glGetQueryObjecti64v()`
16156	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryObjecti64v.xhtml>
16157	pub getqueryobjecti64v: PFNGLGETQUERYOBJECTI64VPROC,
16158
16159	/// The function pointer to `glGetQueryObjectui64v()`
16160	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryObjectui64v.xhtml>
16161	pub getqueryobjectui64v: PFNGLGETQUERYOBJECTUI64VPROC,
16162
16163	/// The function pointer to `glVertexAttribDivisor()`
16164	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribDivisor.xhtml>
16165	pub vertexattribdivisor: PFNGLVERTEXATTRIBDIVISORPROC,
16166
16167	/// The function pointer to `glVertexAttribP1ui()`
16168	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP1ui.xhtml>
16169	pub vertexattribp1ui: PFNGLVERTEXATTRIBP1UIPROC,
16170
16171	/// The function pointer to `glVertexAttribP1uiv()`
16172	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP1uiv.xhtml>
16173	pub vertexattribp1uiv: PFNGLVERTEXATTRIBP1UIVPROC,
16174
16175	/// The function pointer to `glVertexAttribP2ui()`
16176	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP2ui.xhtml>
16177	pub vertexattribp2ui: PFNGLVERTEXATTRIBP2UIPROC,
16178
16179	/// The function pointer to `glVertexAttribP2uiv()`
16180	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP2uiv.xhtml>
16181	pub vertexattribp2uiv: PFNGLVERTEXATTRIBP2UIVPROC,
16182
16183	/// The function pointer to `glVertexAttribP3ui()`
16184	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP3ui.xhtml>
16185	pub vertexattribp3ui: PFNGLVERTEXATTRIBP3UIPROC,
16186
16187	/// The function pointer to `glVertexAttribP3uiv()`
16188	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP3uiv.xhtml>
16189	pub vertexattribp3uiv: PFNGLVERTEXATTRIBP3UIVPROC,
16190
16191	/// The function pointer to `glVertexAttribP4ui()`
16192	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP4ui.xhtml>
16193	pub vertexattribp4ui: PFNGLVERTEXATTRIBP4UIPROC,
16194
16195	/// The function pointer to `glVertexAttribP4uiv()`
16196	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP4uiv.xhtml>
16197	pub vertexattribp4uiv: PFNGLVERTEXATTRIBP4UIVPROC,
16198
16199	/// The function pointer to `glVertexP2ui()`
16200	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP2ui.xhtml>
16201	pub vertexp2ui: PFNGLVERTEXP2UIPROC,
16202
16203	/// The function pointer to `glVertexP2uiv()`
16204	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP2uiv.xhtml>
16205	pub vertexp2uiv: PFNGLVERTEXP2UIVPROC,
16206
16207	/// The function pointer to `glVertexP3ui()`
16208	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP3ui.xhtml>
16209	pub vertexp3ui: PFNGLVERTEXP3UIPROC,
16210
16211	/// The function pointer to `glVertexP3uiv()`
16212	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP3uiv.xhtml>
16213	pub vertexp3uiv: PFNGLVERTEXP3UIVPROC,
16214
16215	/// The function pointer to `glVertexP4ui()`
16216	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP4ui.xhtml>
16217	pub vertexp4ui: PFNGLVERTEXP4UIPROC,
16218
16219	/// The function pointer to `glVertexP4uiv()`
16220	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP4uiv.xhtml>
16221	pub vertexp4uiv: PFNGLVERTEXP4UIVPROC,
16222
16223	/// The function pointer to `glTexCoordP1ui()`
16224	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP1ui.xhtml>
16225	pub texcoordp1ui: PFNGLTEXCOORDP1UIPROC,
16226
16227	/// The function pointer to `glTexCoordP1uiv()`
16228	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP1uiv.xhtml>
16229	pub texcoordp1uiv: PFNGLTEXCOORDP1UIVPROC,
16230
16231	/// The function pointer to `glTexCoordP2ui()`
16232	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP2ui.xhtml>
16233	pub texcoordp2ui: PFNGLTEXCOORDP2UIPROC,
16234
16235	/// The function pointer to `glTexCoordP2uiv()`
16236	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP2uiv.xhtml>
16237	pub texcoordp2uiv: PFNGLTEXCOORDP2UIVPROC,
16238
16239	/// The function pointer to `glTexCoordP3ui()`
16240	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP3ui.xhtml>
16241	pub texcoordp3ui: PFNGLTEXCOORDP3UIPROC,
16242
16243	/// The function pointer to `glTexCoordP3uiv()`
16244	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP3uiv.xhtml>
16245	pub texcoordp3uiv: PFNGLTEXCOORDP3UIVPROC,
16246
16247	/// The function pointer to `glTexCoordP4ui()`
16248	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP4ui.xhtml>
16249	pub texcoordp4ui: PFNGLTEXCOORDP4UIPROC,
16250
16251	/// The function pointer to `glTexCoordP4uiv()`
16252	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP4uiv.xhtml>
16253	pub texcoordp4uiv: PFNGLTEXCOORDP4UIVPROC,
16254
16255	/// The function pointer to `glMultiTexCoordP1ui()`
16256	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP1ui.xhtml>
16257	pub multitexcoordp1ui: PFNGLMULTITEXCOORDP1UIPROC,
16258
16259	/// The function pointer to `glMultiTexCoordP1uiv()`
16260	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP1uiv.xhtml>
16261	pub multitexcoordp1uiv: PFNGLMULTITEXCOORDP1UIVPROC,
16262
16263	/// The function pointer to `glMultiTexCoordP2ui()`
16264	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP2ui.xhtml>
16265	pub multitexcoordp2ui: PFNGLMULTITEXCOORDP2UIPROC,
16266
16267	/// The function pointer to `glMultiTexCoordP2uiv()`
16268	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP2uiv.xhtml>
16269	pub multitexcoordp2uiv: PFNGLMULTITEXCOORDP2UIVPROC,
16270
16271	/// The function pointer to `glMultiTexCoordP3ui()`
16272	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP3ui.xhtml>
16273	pub multitexcoordp3ui: PFNGLMULTITEXCOORDP3UIPROC,
16274
16275	/// The function pointer to `glMultiTexCoordP3uiv()`
16276	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP3uiv.xhtml>
16277	pub multitexcoordp3uiv: PFNGLMULTITEXCOORDP3UIVPROC,
16278
16279	/// The function pointer to `glMultiTexCoordP4ui()`
16280	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP4ui.xhtml>
16281	pub multitexcoordp4ui: PFNGLMULTITEXCOORDP4UIPROC,
16282
16283	/// The function pointer to `glMultiTexCoordP4uiv()`
16284	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP4uiv.xhtml>
16285	pub multitexcoordp4uiv: PFNGLMULTITEXCOORDP4UIVPROC,
16286
16287	/// The function pointer to `glNormalP3ui()`
16288	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNormalP3ui.xhtml>
16289	pub normalp3ui: PFNGLNORMALP3UIPROC,
16290
16291	/// The function pointer to `glNormalP3uiv()`
16292	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNormalP3uiv.xhtml>
16293	pub normalp3uiv: PFNGLNORMALP3UIVPROC,
16294
16295	/// The function pointer to `glColorP3ui()`
16296	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorP3ui.xhtml>
16297	pub colorp3ui: PFNGLCOLORP3UIPROC,
16298
16299	/// The function pointer to `glColorP3uiv()`
16300	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorP3uiv.xhtml>
16301	pub colorp3uiv: PFNGLCOLORP3UIVPROC,
16302
16303	/// The function pointer to `glColorP4ui()`
16304	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorP4ui.xhtml>
16305	pub colorp4ui: PFNGLCOLORP4UIPROC,
16306
16307	/// The function pointer to `glColorP4uiv()`
16308	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorP4uiv.xhtml>
16309	pub colorp4uiv: PFNGLCOLORP4UIVPROC,
16310
16311	/// The function pointer to `glSecondaryColorP3ui()`
16312	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColorP3ui.xhtml>
16313	pub secondarycolorp3ui: PFNGLSECONDARYCOLORP3UIPROC,
16314
16315	/// The function pointer to `glSecondaryColorP3uiv()`
16316	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColorP3uiv.xhtml>
16317	pub secondarycolorp3uiv: PFNGLSECONDARYCOLORP3UIVPROC,
16318}
16319
16320impl GL_3_3 for Version33 {
16321	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
16322	#[inline(always)]
16323	fn glGetError(&self) -> GLenum {
16324		(self.geterror)()
16325	}
16326	#[inline(always)]
16327	fn glBindFragDataLocationIndexed(&self, program: GLuint, colorNumber: GLuint, index: GLuint, name: *const GLchar) -> Result<()> {
16328		let ret = process_catch("glBindFragDataLocationIndexed", catch_unwind(||(self.bindfragdatalocationindexed)(program, colorNumber, index, name)));
16329		#[cfg(feature = "diagnose")]
16330		if let Ok(ret) = ret {
16331			return to_result("glBindFragDataLocationIndexed", ret, self.glGetError());
16332		} else {
16333			return ret
16334		}
16335		#[cfg(not(feature = "diagnose"))]
16336		return ret;
16337	}
16338	#[inline(always)]
16339	fn glGetFragDataIndex(&self, program: GLuint, name: *const GLchar) -> Result<GLint> {
16340		let ret = process_catch("glGetFragDataIndex", catch_unwind(||(self.getfragdataindex)(program, name)));
16341		#[cfg(feature = "diagnose")]
16342		if let Ok(ret) = ret {
16343			return to_result("glGetFragDataIndex", ret, self.glGetError());
16344		} else {
16345			return ret
16346		}
16347		#[cfg(not(feature = "diagnose"))]
16348		return ret;
16349	}
16350	#[inline(always)]
16351	fn glGenSamplers(&self, count: GLsizei, samplers: *mut GLuint) -> Result<()> {
16352		let ret = process_catch("glGenSamplers", catch_unwind(||(self.gensamplers)(count, samplers)));
16353		#[cfg(feature = "diagnose")]
16354		if let Ok(ret) = ret {
16355			return to_result("glGenSamplers", ret, self.glGetError());
16356		} else {
16357			return ret
16358		}
16359		#[cfg(not(feature = "diagnose"))]
16360		return ret;
16361	}
16362	#[inline(always)]
16363	fn glDeleteSamplers(&self, count: GLsizei, samplers: *const GLuint) -> Result<()> {
16364		let ret = process_catch("glDeleteSamplers", catch_unwind(||(self.deletesamplers)(count, samplers)));
16365		#[cfg(feature = "diagnose")]
16366		if let Ok(ret) = ret {
16367			return to_result("glDeleteSamplers", ret, self.glGetError());
16368		} else {
16369			return ret
16370		}
16371		#[cfg(not(feature = "diagnose"))]
16372		return ret;
16373	}
16374	#[inline(always)]
16375	fn glIsSampler(&self, sampler: GLuint) -> Result<GLboolean> {
16376		let ret = process_catch("glIsSampler", catch_unwind(||(self.issampler)(sampler)));
16377		#[cfg(feature = "diagnose")]
16378		if let Ok(ret) = ret {
16379			return to_result("glIsSampler", ret, self.glGetError());
16380		} else {
16381			return ret
16382		}
16383		#[cfg(not(feature = "diagnose"))]
16384		return ret;
16385	}
16386	#[inline(always)]
16387	fn glBindSampler(&self, unit: GLuint, sampler: GLuint) -> Result<()> {
16388		let ret = process_catch("glBindSampler", catch_unwind(||(self.bindsampler)(unit, sampler)));
16389		#[cfg(feature = "diagnose")]
16390		if let Ok(ret) = ret {
16391			return to_result("glBindSampler", ret, self.glGetError());
16392		} else {
16393			return ret
16394		}
16395		#[cfg(not(feature = "diagnose"))]
16396		return ret;
16397	}
16398	#[inline(always)]
16399	fn glSamplerParameteri(&self, sampler: GLuint, pname: GLenum, param: GLint) -> Result<()> {
16400		let ret = process_catch("glSamplerParameteri", catch_unwind(||(self.samplerparameteri)(sampler, pname, param)));
16401		#[cfg(feature = "diagnose")]
16402		if let Ok(ret) = ret {
16403			return to_result("glSamplerParameteri", ret, self.glGetError());
16404		} else {
16405			return ret
16406		}
16407		#[cfg(not(feature = "diagnose"))]
16408		return ret;
16409	}
16410	#[inline(always)]
16411	fn glSamplerParameteriv(&self, sampler: GLuint, pname: GLenum, param: *const GLint) -> Result<()> {
16412		let ret = process_catch("glSamplerParameteriv", catch_unwind(||(self.samplerparameteriv)(sampler, pname, param)));
16413		#[cfg(feature = "diagnose")]
16414		if let Ok(ret) = ret {
16415			return to_result("glSamplerParameteriv", ret, self.glGetError());
16416		} else {
16417			return ret
16418		}
16419		#[cfg(not(feature = "diagnose"))]
16420		return ret;
16421	}
16422	#[inline(always)]
16423	fn glSamplerParameterf(&self, sampler: GLuint, pname: GLenum, param: GLfloat) -> Result<()> {
16424		let ret = process_catch("glSamplerParameterf", catch_unwind(||(self.samplerparameterf)(sampler, pname, param)));
16425		#[cfg(feature = "diagnose")]
16426		if let Ok(ret) = ret {
16427			return to_result("glSamplerParameterf", ret, self.glGetError());
16428		} else {
16429			return ret
16430		}
16431		#[cfg(not(feature = "diagnose"))]
16432		return ret;
16433	}
16434	#[inline(always)]
16435	fn glSamplerParameterfv(&self, sampler: GLuint, pname: GLenum, param: *const GLfloat) -> Result<()> {
16436		let ret = process_catch("glSamplerParameterfv", catch_unwind(||(self.samplerparameterfv)(sampler, pname, param)));
16437		#[cfg(feature = "diagnose")]
16438		if let Ok(ret) = ret {
16439			return to_result("glSamplerParameterfv", ret, self.glGetError());
16440		} else {
16441			return ret
16442		}
16443		#[cfg(not(feature = "diagnose"))]
16444		return ret;
16445	}
16446	#[inline(always)]
16447	fn glSamplerParameterIiv(&self, sampler: GLuint, pname: GLenum, param: *const GLint) -> Result<()> {
16448		let ret = process_catch("glSamplerParameterIiv", catch_unwind(||(self.samplerparameteriiv)(sampler, pname, param)));
16449		#[cfg(feature = "diagnose")]
16450		if let Ok(ret) = ret {
16451			return to_result("glSamplerParameterIiv", ret, self.glGetError());
16452		} else {
16453			return ret
16454		}
16455		#[cfg(not(feature = "diagnose"))]
16456		return ret;
16457	}
16458	#[inline(always)]
16459	fn glSamplerParameterIuiv(&self, sampler: GLuint, pname: GLenum, param: *const GLuint) -> Result<()> {
16460		let ret = process_catch("glSamplerParameterIuiv", catch_unwind(||(self.samplerparameteriuiv)(sampler, pname, param)));
16461		#[cfg(feature = "diagnose")]
16462		if let Ok(ret) = ret {
16463			return to_result("glSamplerParameterIuiv", ret, self.glGetError());
16464		} else {
16465			return ret
16466		}
16467		#[cfg(not(feature = "diagnose"))]
16468		return ret;
16469	}
16470	#[inline(always)]
16471	fn glGetSamplerParameteriv(&self, sampler: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
16472		let ret = process_catch("glGetSamplerParameteriv", catch_unwind(||(self.getsamplerparameteriv)(sampler, pname, params)));
16473		#[cfg(feature = "diagnose")]
16474		if let Ok(ret) = ret {
16475			return to_result("glGetSamplerParameteriv", ret, self.glGetError());
16476		} else {
16477			return ret
16478		}
16479		#[cfg(not(feature = "diagnose"))]
16480		return ret;
16481	}
16482	#[inline(always)]
16483	fn glGetSamplerParameterIiv(&self, sampler: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
16484		let ret = process_catch("glGetSamplerParameterIiv", catch_unwind(||(self.getsamplerparameteriiv)(sampler, pname, params)));
16485		#[cfg(feature = "diagnose")]
16486		if let Ok(ret) = ret {
16487			return to_result("glGetSamplerParameterIiv", ret, self.glGetError());
16488		} else {
16489			return ret
16490		}
16491		#[cfg(not(feature = "diagnose"))]
16492		return ret;
16493	}
16494	#[inline(always)]
16495	fn glGetSamplerParameterfv(&self, sampler: GLuint, pname: GLenum, params: *mut GLfloat) -> Result<()> {
16496		let ret = process_catch("glGetSamplerParameterfv", catch_unwind(||(self.getsamplerparameterfv)(sampler, pname, params)));
16497		#[cfg(feature = "diagnose")]
16498		if let Ok(ret) = ret {
16499			return to_result("glGetSamplerParameterfv", ret, self.glGetError());
16500		} else {
16501			return ret
16502		}
16503		#[cfg(not(feature = "diagnose"))]
16504		return ret;
16505	}
16506	#[inline(always)]
16507	fn glGetSamplerParameterIuiv(&self, sampler: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()> {
16508		let ret = process_catch("glGetSamplerParameterIuiv", catch_unwind(||(self.getsamplerparameteriuiv)(sampler, pname, params)));
16509		#[cfg(feature = "diagnose")]
16510		if let Ok(ret) = ret {
16511			return to_result("glGetSamplerParameterIuiv", ret, self.glGetError());
16512		} else {
16513			return ret
16514		}
16515		#[cfg(not(feature = "diagnose"))]
16516		return ret;
16517	}
16518	#[inline(always)]
16519	fn glQueryCounter(&self, id: GLuint, target: GLenum) -> Result<()> {
16520		let ret = process_catch("glQueryCounter", catch_unwind(||(self.querycounter)(id, target)));
16521		#[cfg(feature = "diagnose")]
16522		if let Ok(ret) = ret {
16523			return to_result("glQueryCounter", ret, self.glGetError());
16524		} else {
16525			return ret
16526		}
16527		#[cfg(not(feature = "diagnose"))]
16528		return ret;
16529	}
16530	#[inline(always)]
16531	fn glGetQueryObjecti64v(&self, id: GLuint, pname: GLenum, params: *mut GLint64) -> Result<()> {
16532		let ret = process_catch("glGetQueryObjecti64v", catch_unwind(||(self.getqueryobjecti64v)(id, pname, params)));
16533		#[cfg(feature = "diagnose")]
16534		if let Ok(ret) = ret {
16535			return to_result("glGetQueryObjecti64v", ret, self.glGetError());
16536		} else {
16537			return ret
16538		}
16539		#[cfg(not(feature = "diagnose"))]
16540		return ret;
16541	}
16542	#[inline(always)]
16543	fn glGetQueryObjectui64v(&self, id: GLuint, pname: GLenum, params: *mut GLuint64) -> Result<()> {
16544		let ret = process_catch("glGetQueryObjectui64v", catch_unwind(||(self.getqueryobjectui64v)(id, pname, params)));
16545		#[cfg(feature = "diagnose")]
16546		if let Ok(ret) = ret {
16547			return to_result("glGetQueryObjectui64v", ret, self.glGetError());
16548		} else {
16549			return ret
16550		}
16551		#[cfg(not(feature = "diagnose"))]
16552		return ret;
16553	}
16554	#[inline(always)]
16555	fn glVertexAttribDivisor(&self, index: GLuint, divisor: GLuint) -> Result<()> {
16556		let ret = process_catch("glVertexAttribDivisor", catch_unwind(||(self.vertexattribdivisor)(index, divisor)));
16557		#[cfg(feature = "diagnose")]
16558		if let Ok(ret) = ret {
16559			return to_result("glVertexAttribDivisor", ret, self.glGetError());
16560		} else {
16561			return ret
16562		}
16563		#[cfg(not(feature = "diagnose"))]
16564		return ret;
16565	}
16566	#[inline(always)]
16567	fn glVertexAttribP1ui(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint) -> Result<()> {
16568		let ret = process_catch("glVertexAttribP1ui", catch_unwind(||(self.vertexattribp1ui)(index, type_, normalized, value)));
16569		#[cfg(feature = "diagnose")]
16570		if let Ok(ret) = ret {
16571			return to_result("glVertexAttribP1ui", ret, self.glGetError());
16572		} else {
16573			return ret
16574		}
16575		#[cfg(not(feature = "diagnose"))]
16576		return ret;
16577	}
16578	#[inline(always)]
16579	fn glVertexAttribP1uiv(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint) -> Result<()> {
16580		let ret = process_catch("glVertexAttribP1uiv", catch_unwind(||(self.vertexattribp1uiv)(index, type_, normalized, value)));
16581		#[cfg(feature = "diagnose")]
16582		if let Ok(ret) = ret {
16583			return to_result("glVertexAttribP1uiv", ret, self.glGetError());
16584		} else {
16585			return ret
16586		}
16587		#[cfg(not(feature = "diagnose"))]
16588		return ret;
16589	}
16590	#[inline(always)]
16591	fn glVertexAttribP2ui(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint) -> Result<()> {
16592		let ret = process_catch("glVertexAttribP2ui", catch_unwind(||(self.vertexattribp2ui)(index, type_, normalized, value)));
16593		#[cfg(feature = "diagnose")]
16594		if let Ok(ret) = ret {
16595			return to_result("glVertexAttribP2ui", ret, self.glGetError());
16596		} else {
16597			return ret
16598		}
16599		#[cfg(not(feature = "diagnose"))]
16600		return ret;
16601	}
16602	#[inline(always)]
16603	fn glVertexAttribP2uiv(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint) -> Result<()> {
16604		let ret = process_catch("glVertexAttribP2uiv", catch_unwind(||(self.vertexattribp2uiv)(index, type_, normalized, value)));
16605		#[cfg(feature = "diagnose")]
16606		if let Ok(ret) = ret {
16607			return to_result("glVertexAttribP2uiv", ret, self.glGetError());
16608		} else {
16609			return ret
16610		}
16611		#[cfg(not(feature = "diagnose"))]
16612		return ret;
16613	}
16614	#[inline(always)]
16615	fn glVertexAttribP3ui(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint) -> Result<()> {
16616		let ret = process_catch("glVertexAttribP3ui", catch_unwind(||(self.vertexattribp3ui)(index, type_, normalized, value)));
16617		#[cfg(feature = "diagnose")]
16618		if let Ok(ret) = ret {
16619			return to_result("glVertexAttribP3ui", ret, self.glGetError());
16620		} else {
16621			return ret
16622		}
16623		#[cfg(not(feature = "diagnose"))]
16624		return ret;
16625	}
16626	#[inline(always)]
16627	fn glVertexAttribP3uiv(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint) -> Result<()> {
16628		let ret = process_catch("glVertexAttribP3uiv", catch_unwind(||(self.vertexattribp3uiv)(index, type_, normalized, value)));
16629		#[cfg(feature = "diagnose")]
16630		if let Ok(ret) = ret {
16631			return to_result("glVertexAttribP3uiv", ret, self.glGetError());
16632		} else {
16633			return ret
16634		}
16635		#[cfg(not(feature = "diagnose"))]
16636		return ret;
16637	}
16638	#[inline(always)]
16639	fn glVertexAttribP4ui(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint) -> Result<()> {
16640		let ret = process_catch("glVertexAttribP4ui", catch_unwind(||(self.vertexattribp4ui)(index, type_, normalized, value)));
16641		#[cfg(feature = "diagnose")]
16642		if let Ok(ret) = ret {
16643			return to_result("glVertexAttribP4ui", ret, self.glGetError());
16644		} else {
16645			return ret
16646		}
16647		#[cfg(not(feature = "diagnose"))]
16648		return ret;
16649	}
16650	#[inline(always)]
16651	fn glVertexAttribP4uiv(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint) -> Result<()> {
16652		let ret = process_catch("glVertexAttribP4uiv", catch_unwind(||(self.vertexattribp4uiv)(index, type_, normalized, value)));
16653		#[cfg(feature = "diagnose")]
16654		if let Ok(ret) = ret {
16655			return to_result("glVertexAttribP4uiv", ret, self.glGetError());
16656		} else {
16657			return ret
16658		}
16659		#[cfg(not(feature = "diagnose"))]
16660		return ret;
16661	}
16662	#[inline(always)]
16663	fn glVertexP2ui(&self, type_: GLenum, value: GLuint) -> Result<()> {
16664		let ret = process_catch("glVertexP2ui", catch_unwind(||(self.vertexp2ui)(type_, value)));
16665		#[cfg(feature = "diagnose")]
16666		if let Ok(ret) = ret {
16667			return to_result("glVertexP2ui", ret, self.glGetError());
16668		} else {
16669			return ret
16670		}
16671		#[cfg(not(feature = "diagnose"))]
16672		return ret;
16673	}
16674	#[inline(always)]
16675	fn glVertexP2uiv(&self, type_: GLenum, value: *const GLuint) -> Result<()> {
16676		let ret = process_catch("glVertexP2uiv", catch_unwind(||(self.vertexp2uiv)(type_, value)));
16677		#[cfg(feature = "diagnose")]
16678		if let Ok(ret) = ret {
16679			return to_result("glVertexP2uiv", ret, self.glGetError());
16680		} else {
16681			return ret
16682		}
16683		#[cfg(not(feature = "diagnose"))]
16684		return ret;
16685	}
16686	#[inline(always)]
16687	fn glVertexP3ui(&self, type_: GLenum, value: GLuint) -> Result<()> {
16688		let ret = process_catch("glVertexP3ui", catch_unwind(||(self.vertexp3ui)(type_, value)));
16689		#[cfg(feature = "diagnose")]
16690		if let Ok(ret) = ret {
16691			return to_result("glVertexP3ui", ret, self.glGetError());
16692		} else {
16693			return ret
16694		}
16695		#[cfg(not(feature = "diagnose"))]
16696		return ret;
16697	}
16698	#[inline(always)]
16699	fn glVertexP3uiv(&self, type_: GLenum, value: *const GLuint) -> Result<()> {
16700		let ret = process_catch("glVertexP3uiv", catch_unwind(||(self.vertexp3uiv)(type_, value)));
16701		#[cfg(feature = "diagnose")]
16702		if let Ok(ret) = ret {
16703			return to_result("glVertexP3uiv", ret, self.glGetError());
16704		} else {
16705			return ret
16706		}
16707		#[cfg(not(feature = "diagnose"))]
16708		return ret;
16709	}
16710	#[inline(always)]
16711	fn glVertexP4ui(&self, type_: GLenum, value: GLuint) -> Result<()> {
16712		let ret = process_catch("glVertexP4ui", catch_unwind(||(self.vertexp4ui)(type_, value)));
16713		#[cfg(feature = "diagnose")]
16714		if let Ok(ret) = ret {
16715			return to_result("glVertexP4ui", ret, self.glGetError());
16716		} else {
16717			return ret
16718		}
16719		#[cfg(not(feature = "diagnose"))]
16720		return ret;
16721	}
16722	#[inline(always)]
16723	fn glVertexP4uiv(&self, type_: GLenum, value: *const GLuint) -> Result<()> {
16724		let ret = process_catch("glVertexP4uiv", catch_unwind(||(self.vertexp4uiv)(type_, value)));
16725		#[cfg(feature = "diagnose")]
16726		if let Ok(ret) = ret {
16727			return to_result("glVertexP4uiv", ret, self.glGetError());
16728		} else {
16729			return ret
16730		}
16731		#[cfg(not(feature = "diagnose"))]
16732		return ret;
16733	}
16734	#[inline(always)]
16735	fn glTexCoordP1ui(&self, type_: GLenum, coords: GLuint) -> Result<()> {
16736		let ret = process_catch("glTexCoordP1ui", catch_unwind(||(self.texcoordp1ui)(type_, coords)));
16737		#[cfg(feature = "diagnose")]
16738		if let Ok(ret) = ret {
16739			return to_result("glTexCoordP1ui", ret, self.glGetError());
16740		} else {
16741			return ret
16742		}
16743		#[cfg(not(feature = "diagnose"))]
16744		return ret;
16745	}
16746	#[inline(always)]
16747	fn glTexCoordP1uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()> {
16748		let ret = process_catch("glTexCoordP1uiv", catch_unwind(||(self.texcoordp1uiv)(type_, coords)));
16749		#[cfg(feature = "diagnose")]
16750		if let Ok(ret) = ret {
16751			return to_result("glTexCoordP1uiv", ret, self.glGetError());
16752		} else {
16753			return ret
16754		}
16755		#[cfg(not(feature = "diagnose"))]
16756		return ret;
16757	}
16758	#[inline(always)]
16759	fn glTexCoordP2ui(&self, type_: GLenum, coords: GLuint) -> Result<()> {
16760		let ret = process_catch("glTexCoordP2ui", catch_unwind(||(self.texcoordp2ui)(type_, coords)));
16761		#[cfg(feature = "diagnose")]
16762		if let Ok(ret) = ret {
16763			return to_result("glTexCoordP2ui", ret, self.glGetError());
16764		} else {
16765			return ret
16766		}
16767		#[cfg(not(feature = "diagnose"))]
16768		return ret;
16769	}
16770	#[inline(always)]
16771	fn glTexCoordP2uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()> {
16772		let ret = process_catch("glTexCoordP2uiv", catch_unwind(||(self.texcoordp2uiv)(type_, coords)));
16773		#[cfg(feature = "diagnose")]
16774		if let Ok(ret) = ret {
16775			return to_result("glTexCoordP2uiv", ret, self.glGetError());
16776		} else {
16777			return ret
16778		}
16779		#[cfg(not(feature = "diagnose"))]
16780		return ret;
16781	}
16782	#[inline(always)]
16783	fn glTexCoordP3ui(&self, type_: GLenum, coords: GLuint) -> Result<()> {
16784		let ret = process_catch("glTexCoordP3ui", catch_unwind(||(self.texcoordp3ui)(type_, coords)));
16785		#[cfg(feature = "diagnose")]
16786		if let Ok(ret) = ret {
16787			return to_result("glTexCoordP3ui", ret, self.glGetError());
16788		} else {
16789			return ret
16790		}
16791		#[cfg(not(feature = "diagnose"))]
16792		return ret;
16793	}
16794	#[inline(always)]
16795	fn glTexCoordP3uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()> {
16796		let ret = process_catch("glTexCoordP3uiv", catch_unwind(||(self.texcoordp3uiv)(type_, coords)));
16797		#[cfg(feature = "diagnose")]
16798		if let Ok(ret) = ret {
16799			return to_result("glTexCoordP3uiv", ret, self.glGetError());
16800		} else {
16801			return ret
16802		}
16803		#[cfg(not(feature = "diagnose"))]
16804		return ret;
16805	}
16806	#[inline(always)]
16807	fn glTexCoordP4ui(&self, type_: GLenum, coords: GLuint) -> Result<()> {
16808		let ret = process_catch("glTexCoordP4ui", catch_unwind(||(self.texcoordp4ui)(type_, coords)));
16809		#[cfg(feature = "diagnose")]
16810		if let Ok(ret) = ret {
16811			return to_result("glTexCoordP4ui", ret, self.glGetError());
16812		} else {
16813			return ret
16814		}
16815		#[cfg(not(feature = "diagnose"))]
16816		return ret;
16817	}
16818	#[inline(always)]
16819	fn glTexCoordP4uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()> {
16820		let ret = process_catch("glTexCoordP4uiv", catch_unwind(||(self.texcoordp4uiv)(type_, coords)));
16821		#[cfg(feature = "diagnose")]
16822		if let Ok(ret) = ret {
16823			return to_result("glTexCoordP4uiv", ret, self.glGetError());
16824		} else {
16825			return ret
16826		}
16827		#[cfg(not(feature = "diagnose"))]
16828		return ret;
16829	}
16830	#[inline(always)]
16831	fn glMultiTexCoordP1ui(&self, texture: GLenum, type_: GLenum, coords: GLuint) -> Result<()> {
16832		let ret = process_catch("glMultiTexCoordP1ui", catch_unwind(||(self.multitexcoordp1ui)(texture, type_, coords)));
16833		#[cfg(feature = "diagnose")]
16834		if let Ok(ret) = ret {
16835			return to_result("glMultiTexCoordP1ui", ret, self.glGetError());
16836		} else {
16837			return ret
16838		}
16839		#[cfg(not(feature = "diagnose"))]
16840		return ret;
16841	}
16842	#[inline(always)]
16843	fn glMultiTexCoordP1uiv(&self, texture: GLenum, type_: GLenum, coords: *const GLuint) -> Result<()> {
16844		let ret = process_catch("glMultiTexCoordP1uiv", catch_unwind(||(self.multitexcoordp1uiv)(texture, type_, coords)));
16845		#[cfg(feature = "diagnose")]
16846		if let Ok(ret) = ret {
16847			return to_result("glMultiTexCoordP1uiv", ret, self.glGetError());
16848		} else {
16849			return ret
16850		}
16851		#[cfg(not(feature = "diagnose"))]
16852		return ret;
16853	}
16854	#[inline(always)]
16855	fn glMultiTexCoordP2ui(&self, texture: GLenum, type_: GLenum, coords: GLuint) -> Result<()> {
16856		let ret = process_catch("glMultiTexCoordP2ui", catch_unwind(||(self.multitexcoordp2ui)(texture, type_, coords)));
16857		#[cfg(feature = "diagnose")]
16858		if let Ok(ret) = ret {
16859			return to_result("glMultiTexCoordP2ui", ret, self.glGetError());
16860		} else {
16861			return ret
16862		}
16863		#[cfg(not(feature = "diagnose"))]
16864		return ret;
16865	}
16866	#[inline(always)]
16867	fn glMultiTexCoordP2uiv(&self, texture: GLenum, type_: GLenum, coords: *const GLuint) -> Result<()> {
16868		let ret = process_catch("glMultiTexCoordP2uiv", catch_unwind(||(self.multitexcoordp2uiv)(texture, type_, coords)));
16869		#[cfg(feature = "diagnose")]
16870		if let Ok(ret) = ret {
16871			return to_result("glMultiTexCoordP2uiv", ret, self.glGetError());
16872		} else {
16873			return ret
16874		}
16875		#[cfg(not(feature = "diagnose"))]
16876		return ret;
16877	}
16878	#[inline(always)]
16879	fn glMultiTexCoordP3ui(&self, texture: GLenum, type_: GLenum, coords: GLuint) -> Result<()> {
16880		let ret = process_catch("glMultiTexCoordP3ui", catch_unwind(||(self.multitexcoordp3ui)(texture, type_, coords)));
16881		#[cfg(feature = "diagnose")]
16882		if let Ok(ret) = ret {
16883			return to_result("glMultiTexCoordP3ui", ret, self.glGetError());
16884		} else {
16885			return ret
16886		}
16887		#[cfg(not(feature = "diagnose"))]
16888		return ret;
16889	}
16890	#[inline(always)]
16891	fn glMultiTexCoordP3uiv(&self, texture: GLenum, type_: GLenum, coords: *const GLuint) -> Result<()> {
16892		let ret = process_catch("glMultiTexCoordP3uiv", catch_unwind(||(self.multitexcoordp3uiv)(texture, type_, coords)));
16893		#[cfg(feature = "diagnose")]
16894		if let Ok(ret) = ret {
16895			return to_result("glMultiTexCoordP3uiv", ret, self.glGetError());
16896		} else {
16897			return ret
16898		}
16899		#[cfg(not(feature = "diagnose"))]
16900		return ret;
16901	}
16902	#[inline(always)]
16903	fn glMultiTexCoordP4ui(&self, texture: GLenum, type_: GLenum, coords: GLuint) -> Result<()> {
16904		let ret = process_catch("glMultiTexCoordP4ui", catch_unwind(||(self.multitexcoordp4ui)(texture, type_, coords)));
16905		#[cfg(feature = "diagnose")]
16906		if let Ok(ret) = ret {
16907			return to_result("glMultiTexCoordP4ui", ret, self.glGetError());
16908		} else {
16909			return ret
16910		}
16911		#[cfg(not(feature = "diagnose"))]
16912		return ret;
16913	}
16914	#[inline(always)]
16915	fn glMultiTexCoordP4uiv(&self, texture: GLenum, type_: GLenum, coords: *const GLuint) -> Result<()> {
16916		let ret = process_catch("glMultiTexCoordP4uiv", catch_unwind(||(self.multitexcoordp4uiv)(texture, type_, coords)));
16917		#[cfg(feature = "diagnose")]
16918		if let Ok(ret) = ret {
16919			return to_result("glMultiTexCoordP4uiv", ret, self.glGetError());
16920		} else {
16921			return ret
16922		}
16923		#[cfg(not(feature = "diagnose"))]
16924		return ret;
16925	}
16926	#[inline(always)]
16927	fn glNormalP3ui(&self, type_: GLenum, coords: GLuint) -> Result<()> {
16928		let ret = process_catch("glNormalP3ui", catch_unwind(||(self.normalp3ui)(type_, coords)));
16929		#[cfg(feature = "diagnose")]
16930		if let Ok(ret) = ret {
16931			return to_result("glNormalP3ui", ret, self.glGetError());
16932		} else {
16933			return ret
16934		}
16935		#[cfg(not(feature = "diagnose"))]
16936		return ret;
16937	}
16938	#[inline(always)]
16939	fn glNormalP3uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()> {
16940		let ret = process_catch("glNormalP3uiv", catch_unwind(||(self.normalp3uiv)(type_, coords)));
16941		#[cfg(feature = "diagnose")]
16942		if let Ok(ret) = ret {
16943			return to_result("glNormalP3uiv", ret, self.glGetError());
16944		} else {
16945			return ret
16946		}
16947		#[cfg(not(feature = "diagnose"))]
16948		return ret;
16949	}
16950	#[inline(always)]
16951	fn glColorP3ui(&self, type_: GLenum, color: GLuint) -> Result<()> {
16952		let ret = process_catch("glColorP3ui", catch_unwind(||(self.colorp3ui)(type_, color)));
16953		#[cfg(feature = "diagnose")]
16954		if let Ok(ret) = ret {
16955			return to_result("glColorP3ui", ret, self.glGetError());
16956		} else {
16957			return ret
16958		}
16959		#[cfg(not(feature = "diagnose"))]
16960		return ret;
16961	}
16962	#[inline(always)]
16963	fn glColorP3uiv(&self, type_: GLenum, color: *const GLuint) -> Result<()> {
16964		let ret = process_catch("glColorP3uiv", catch_unwind(||(self.colorp3uiv)(type_, color)));
16965		#[cfg(feature = "diagnose")]
16966		if let Ok(ret) = ret {
16967			return to_result("glColorP3uiv", ret, self.glGetError());
16968		} else {
16969			return ret
16970		}
16971		#[cfg(not(feature = "diagnose"))]
16972		return ret;
16973	}
16974	#[inline(always)]
16975	fn glColorP4ui(&self, type_: GLenum, color: GLuint) -> Result<()> {
16976		let ret = process_catch("glColorP4ui", catch_unwind(||(self.colorp4ui)(type_, color)));
16977		#[cfg(feature = "diagnose")]
16978		if let Ok(ret) = ret {
16979			return to_result("glColorP4ui", ret, self.glGetError());
16980		} else {
16981			return ret
16982		}
16983		#[cfg(not(feature = "diagnose"))]
16984		return ret;
16985	}
16986	#[inline(always)]
16987	fn glColorP4uiv(&self, type_: GLenum, color: *const GLuint) -> Result<()> {
16988		let ret = process_catch("glColorP4uiv", catch_unwind(||(self.colorp4uiv)(type_, color)));
16989		#[cfg(feature = "diagnose")]
16990		if let Ok(ret) = ret {
16991			return to_result("glColorP4uiv", ret, self.glGetError());
16992		} else {
16993			return ret
16994		}
16995		#[cfg(not(feature = "diagnose"))]
16996		return ret;
16997	}
16998	#[inline(always)]
16999	fn glSecondaryColorP3ui(&self, type_: GLenum, color: GLuint) -> Result<()> {
17000		let ret = process_catch("glSecondaryColorP3ui", catch_unwind(||(self.secondarycolorp3ui)(type_, color)));
17001		#[cfg(feature = "diagnose")]
17002		if let Ok(ret) = ret {
17003			return to_result("glSecondaryColorP3ui", ret, self.glGetError());
17004		} else {
17005			return ret
17006		}
17007		#[cfg(not(feature = "diagnose"))]
17008		return ret;
17009	}
17010	#[inline(always)]
17011	fn glSecondaryColorP3uiv(&self, type_: GLenum, color: *const GLuint) -> Result<()> {
17012		let ret = process_catch("glSecondaryColorP3uiv", catch_unwind(||(self.secondarycolorp3uiv)(type_, color)));
17013		#[cfg(feature = "diagnose")]
17014		if let Ok(ret) = ret {
17015			return to_result("glSecondaryColorP3uiv", ret, self.glGetError());
17016		} else {
17017			return ret
17018		}
17019		#[cfg(not(feature = "diagnose"))]
17020		return ret;
17021	}
17022}
17023
17024impl Version33 {
17025	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
17026		let (_spec, major, minor, release) = base.get_version();
17027		if (major, minor, release) < (3, 3, 0) {
17028			return Self::default();
17029		}
17030		Self {
17031			available: true,
17032			geterror: {let proc = get_proc_address("glGetError"); if proc == null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
17033			bindfragdatalocationindexed: {let proc = get_proc_address("glBindFragDataLocationIndexed"); if proc == null() {dummy_pfnglbindfragdatalocationindexedproc} else {unsafe{transmute(proc)}}},
17034			getfragdataindex: {let proc = get_proc_address("glGetFragDataIndex"); if proc == null() {dummy_pfnglgetfragdataindexproc} else {unsafe{transmute(proc)}}},
17035			gensamplers: {let proc = get_proc_address("glGenSamplers"); if proc == null() {dummy_pfnglgensamplersproc} else {unsafe{transmute(proc)}}},
17036			deletesamplers: {let proc = get_proc_address("glDeleteSamplers"); if proc == null() {dummy_pfngldeletesamplersproc} else {unsafe{transmute(proc)}}},
17037			issampler: {let proc = get_proc_address("glIsSampler"); if proc == null() {dummy_pfnglissamplerproc} else {unsafe{transmute(proc)}}},
17038			bindsampler: {let proc = get_proc_address("glBindSampler"); if proc == null() {dummy_pfnglbindsamplerproc} else {unsafe{transmute(proc)}}},
17039			samplerparameteri: {let proc = get_proc_address("glSamplerParameteri"); if proc == null() {dummy_pfnglsamplerparameteriproc} else {unsafe{transmute(proc)}}},
17040			samplerparameteriv: {let proc = get_proc_address("glSamplerParameteriv"); if proc == null() {dummy_pfnglsamplerparameterivproc} else {unsafe{transmute(proc)}}},
17041			samplerparameterf: {let proc = get_proc_address("glSamplerParameterf"); if proc == null() {dummy_pfnglsamplerparameterfproc} else {unsafe{transmute(proc)}}},
17042			samplerparameterfv: {let proc = get_proc_address("glSamplerParameterfv"); if proc == null() {dummy_pfnglsamplerparameterfvproc} else {unsafe{transmute(proc)}}},
17043			samplerparameteriiv: {let proc = get_proc_address("glSamplerParameterIiv"); if proc == null() {dummy_pfnglsamplerparameteriivproc} else {unsafe{transmute(proc)}}},
17044			samplerparameteriuiv: {let proc = get_proc_address("glSamplerParameterIuiv"); if proc == null() {dummy_pfnglsamplerparameteriuivproc} else {unsafe{transmute(proc)}}},
17045			getsamplerparameteriv: {let proc = get_proc_address("glGetSamplerParameteriv"); if proc == null() {dummy_pfnglgetsamplerparameterivproc} else {unsafe{transmute(proc)}}},
17046			getsamplerparameteriiv: {let proc = get_proc_address("glGetSamplerParameterIiv"); if proc == null() {dummy_pfnglgetsamplerparameteriivproc} else {unsafe{transmute(proc)}}},
17047			getsamplerparameterfv: {let proc = get_proc_address("glGetSamplerParameterfv"); if proc == null() {dummy_pfnglgetsamplerparameterfvproc} else {unsafe{transmute(proc)}}},
17048			getsamplerparameteriuiv: {let proc = get_proc_address("glGetSamplerParameterIuiv"); if proc == null() {dummy_pfnglgetsamplerparameteriuivproc} else {unsafe{transmute(proc)}}},
17049			querycounter: {let proc = get_proc_address("glQueryCounter"); if proc == null() {dummy_pfnglquerycounterproc} else {unsafe{transmute(proc)}}},
17050			getqueryobjecti64v: {let proc = get_proc_address("glGetQueryObjecti64v"); if proc == null() {dummy_pfnglgetqueryobjecti64vproc} else {unsafe{transmute(proc)}}},
17051			getqueryobjectui64v: {let proc = get_proc_address("glGetQueryObjectui64v"); if proc == null() {dummy_pfnglgetqueryobjectui64vproc} else {unsafe{transmute(proc)}}},
17052			vertexattribdivisor: {let proc = get_proc_address("glVertexAttribDivisor"); if proc == null() {dummy_pfnglvertexattribdivisorproc} else {unsafe{transmute(proc)}}},
17053			vertexattribp1ui: {let proc = get_proc_address("glVertexAttribP1ui"); if proc == null() {dummy_pfnglvertexattribp1uiproc} else {unsafe{transmute(proc)}}},
17054			vertexattribp1uiv: {let proc = get_proc_address("glVertexAttribP1uiv"); if proc == null() {dummy_pfnglvertexattribp1uivproc} else {unsafe{transmute(proc)}}},
17055			vertexattribp2ui: {let proc = get_proc_address("glVertexAttribP2ui"); if proc == null() {dummy_pfnglvertexattribp2uiproc} else {unsafe{transmute(proc)}}},
17056			vertexattribp2uiv: {let proc = get_proc_address("glVertexAttribP2uiv"); if proc == null() {dummy_pfnglvertexattribp2uivproc} else {unsafe{transmute(proc)}}},
17057			vertexattribp3ui: {let proc = get_proc_address("glVertexAttribP3ui"); if proc == null() {dummy_pfnglvertexattribp3uiproc} else {unsafe{transmute(proc)}}},
17058			vertexattribp3uiv: {let proc = get_proc_address("glVertexAttribP3uiv"); if proc == null() {dummy_pfnglvertexattribp3uivproc} else {unsafe{transmute(proc)}}},
17059			vertexattribp4ui: {let proc = get_proc_address("glVertexAttribP4ui"); if proc == null() {dummy_pfnglvertexattribp4uiproc} else {unsafe{transmute(proc)}}},
17060			vertexattribp4uiv: {let proc = get_proc_address("glVertexAttribP4uiv"); if proc == null() {dummy_pfnglvertexattribp4uivproc} else {unsafe{transmute(proc)}}},
17061			vertexp2ui: {let proc = get_proc_address("glVertexP2ui"); if proc == null() {dummy_pfnglvertexp2uiproc} else {unsafe{transmute(proc)}}},
17062			vertexp2uiv: {let proc = get_proc_address("glVertexP2uiv"); if proc == null() {dummy_pfnglvertexp2uivproc} else {unsafe{transmute(proc)}}},
17063			vertexp3ui: {let proc = get_proc_address("glVertexP3ui"); if proc == null() {dummy_pfnglvertexp3uiproc} else {unsafe{transmute(proc)}}},
17064			vertexp3uiv: {let proc = get_proc_address("glVertexP3uiv"); if proc == null() {dummy_pfnglvertexp3uivproc} else {unsafe{transmute(proc)}}},
17065			vertexp4ui: {let proc = get_proc_address("glVertexP4ui"); if proc == null() {dummy_pfnglvertexp4uiproc} else {unsafe{transmute(proc)}}},
17066			vertexp4uiv: {let proc = get_proc_address("glVertexP4uiv"); if proc == null() {dummy_pfnglvertexp4uivproc} else {unsafe{transmute(proc)}}},
17067			texcoordp1ui: {let proc = get_proc_address("glTexCoordP1ui"); if proc == null() {dummy_pfngltexcoordp1uiproc} else {unsafe{transmute(proc)}}},
17068			texcoordp1uiv: {let proc = get_proc_address("glTexCoordP1uiv"); if proc == null() {dummy_pfngltexcoordp1uivproc} else {unsafe{transmute(proc)}}},
17069			texcoordp2ui: {let proc = get_proc_address("glTexCoordP2ui"); if proc == null() {dummy_pfngltexcoordp2uiproc} else {unsafe{transmute(proc)}}},
17070			texcoordp2uiv: {let proc = get_proc_address("glTexCoordP2uiv"); if proc == null() {dummy_pfngltexcoordp2uivproc} else {unsafe{transmute(proc)}}},
17071			texcoordp3ui: {let proc = get_proc_address("glTexCoordP3ui"); if proc == null() {dummy_pfngltexcoordp3uiproc} else {unsafe{transmute(proc)}}},
17072			texcoordp3uiv: {let proc = get_proc_address("glTexCoordP3uiv"); if proc == null() {dummy_pfngltexcoordp3uivproc} else {unsafe{transmute(proc)}}},
17073			texcoordp4ui: {let proc = get_proc_address("glTexCoordP4ui"); if proc == null() {dummy_pfngltexcoordp4uiproc} else {unsafe{transmute(proc)}}},
17074			texcoordp4uiv: {let proc = get_proc_address("glTexCoordP4uiv"); if proc == null() {dummy_pfngltexcoordp4uivproc} else {unsafe{transmute(proc)}}},
17075			multitexcoordp1ui: {let proc = get_proc_address("glMultiTexCoordP1ui"); if proc == null() {dummy_pfnglmultitexcoordp1uiproc} else {unsafe{transmute(proc)}}},
17076			multitexcoordp1uiv: {let proc = get_proc_address("glMultiTexCoordP1uiv"); if proc == null() {dummy_pfnglmultitexcoordp1uivproc} else {unsafe{transmute(proc)}}},
17077			multitexcoordp2ui: {let proc = get_proc_address("glMultiTexCoordP2ui"); if proc == null() {dummy_pfnglmultitexcoordp2uiproc} else {unsafe{transmute(proc)}}},
17078			multitexcoordp2uiv: {let proc = get_proc_address("glMultiTexCoordP2uiv"); if proc == null() {dummy_pfnglmultitexcoordp2uivproc} else {unsafe{transmute(proc)}}},
17079			multitexcoordp3ui: {let proc = get_proc_address("glMultiTexCoordP3ui"); if proc == null() {dummy_pfnglmultitexcoordp3uiproc} else {unsafe{transmute(proc)}}},
17080			multitexcoordp3uiv: {let proc = get_proc_address("glMultiTexCoordP3uiv"); if proc == null() {dummy_pfnglmultitexcoordp3uivproc} else {unsafe{transmute(proc)}}},
17081			multitexcoordp4ui: {let proc = get_proc_address("glMultiTexCoordP4ui"); if proc == null() {dummy_pfnglmultitexcoordp4uiproc} else {unsafe{transmute(proc)}}},
17082			multitexcoordp4uiv: {let proc = get_proc_address("glMultiTexCoordP4uiv"); if proc == null() {dummy_pfnglmultitexcoordp4uivproc} else {unsafe{transmute(proc)}}},
17083			normalp3ui: {let proc = get_proc_address("glNormalP3ui"); if proc == null() {dummy_pfnglnormalp3uiproc} else {unsafe{transmute(proc)}}},
17084			normalp3uiv: {let proc = get_proc_address("glNormalP3uiv"); if proc == null() {dummy_pfnglnormalp3uivproc} else {unsafe{transmute(proc)}}},
17085			colorp3ui: {let proc = get_proc_address("glColorP3ui"); if proc == null() {dummy_pfnglcolorp3uiproc} else {unsafe{transmute(proc)}}},
17086			colorp3uiv: {let proc = get_proc_address("glColorP3uiv"); if proc == null() {dummy_pfnglcolorp3uivproc} else {unsafe{transmute(proc)}}},
17087			colorp4ui: {let proc = get_proc_address("glColorP4ui"); if proc == null() {dummy_pfnglcolorp4uiproc} else {unsafe{transmute(proc)}}},
17088			colorp4uiv: {let proc = get_proc_address("glColorP4uiv"); if proc == null() {dummy_pfnglcolorp4uivproc} else {unsafe{transmute(proc)}}},
17089			secondarycolorp3ui: {let proc = get_proc_address("glSecondaryColorP3ui"); if proc == null() {dummy_pfnglsecondarycolorp3uiproc} else {unsafe{transmute(proc)}}},
17090			secondarycolorp3uiv: {let proc = get_proc_address("glSecondaryColorP3uiv"); if proc == null() {dummy_pfnglsecondarycolorp3uivproc} else {unsafe{transmute(proc)}}},
17091		}
17092	}
17093	#[inline(always)]
17094	pub fn get_available(&self) -> bool {
17095		self.available
17096	}
17097}
17098
17099impl Default for Version33 {
17100	fn default() -> Self {
17101		Self {
17102			available: false,
17103			geterror: dummy_pfnglgeterrorproc,
17104			bindfragdatalocationindexed: dummy_pfnglbindfragdatalocationindexedproc,
17105			getfragdataindex: dummy_pfnglgetfragdataindexproc,
17106			gensamplers: dummy_pfnglgensamplersproc,
17107			deletesamplers: dummy_pfngldeletesamplersproc,
17108			issampler: dummy_pfnglissamplerproc,
17109			bindsampler: dummy_pfnglbindsamplerproc,
17110			samplerparameteri: dummy_pfnglsamplerparameteriproc,
17111			samplerparameteriv: dummy_pfnglsamplerparameterivproc,
17112			samplerparameterf: dummy_pfnglsamplerparameterfproc,
17113			samplerparameterfv: dummy_pfnglsamplerparameterfvproc,
17114			samplerparameteriiv: dummy_pfnglsamplerparameteriivproc,
17115			samplerparameteriuiv: dummy_pfnglsamplerparameteriuivproc,
17116			getsamplerparameteriv: dummy_pfnglgetsamplerparameterivproc,
17117			getsamplerparameteriiv: dummy_pfnglgetsamplerparameteriivproc,
17118			getsamplerparameterfv: dummy_pfnglgetsamplerparameterfvproc,
17119			getsamplerparameteriuiv: dummy_pfnglgetsamplerparameteriuivproc,
17120			querycounter: dummy_pfnglquerycounterproc,
17121			getqueryobjecti64v: dummy_pfnglgetqueryobjecti64vproc,
17122			getqueryobjectui64v: dummy_pfnglgetqueryobjectui64vproc,
17123			vertexattribdivisor: dummy_pfnglvertexattribdivisorproc,
17124			vertexattribp1ui: dummy_pfnglvertexattribp1uiproc,
17125			vertexattribp1uiv: dummy_pfnglvertexattribp1uivproc,
17126			vertexattribp2ui: dummy_pfnglvertexattribp2uiproc,
17127			vertexattribp2uiv: dummy_pfnglvertexattribp2uivproc,
17128			vertexattribp3ui: dummy_pfnglvertexattribp3uiproc,
17129			vertexattribp3uiv: dummy_pfnglvertexattribp3uivproc,
17130			vertexattribp4ui: dummy_pfnglvertexattribp4uiproc,
17131			vertexattribp4uiv: dummy_pfnglvertexattribp4uivproc,
17132			vertexp2ui: dummy_pfnglvertexp2uiproc,
17133			vertexp2uiv: dummy_pfnglvertexp2uivproc,
17134			vertexp3ui: dummy_pfnglvertexp3uiproc,
17135			vertexp3uiv: dummy_pfnglvertexp3uivproc,
17136			vertexp4ui: dummy_pfnglvertexp4uiproc,
17137			vertexp4uiv: dummy_pfnglvertexp4uivproc,
17138			texcoordp1ui: dummy_pfngltexcoordp1uiproc,
17139			texcoordp1uiv: dummy_pfngltexcoordp1uivproc,
17140			texcoordp2ui: dummy_pfngltexcoordp2uiproc,
17141			texcoordp2uiv: dummy_pfngltexcoordp2uivproc,
17142			texcoordp3ui: dummy_pfngltexcoordp3uiproc,
17143			texcoordp3uiv: dummy_pfngltexcoordp3uivproc,
17144			texcoordp4ui: dummy_pfngltexcoordp4uiproc,
17145			texcoordp4uiv: dummy_pfngltexcoordp4uivproc,
17146			multitexcoordp1ui: dummy_pfnglmultitexcoordp1uiproc,
17147			multitexcoordp1uiv: dummy_pfnglmultitexcoordp1uivproc,
17148			multitexcoordp2ui: dummy_pfnglmultitexcoordp2uiproc,
17149			multitexcoordp2uiv: dummy_pfnglmultitexcoordp2uivproc,
17150			multitexcoordp3ui: dummy_pfnglmultitexcoordp3uiproc,
17151			multitexcoordp3uiv: dummy_pfnglmultitexcoordp3uivproc,
17152			multitexcoordp4ui: dummy_pfnglmultitexcoordp4uiproc,
17153			multitexcoordp4uiv: dummy_pfnglmultitexcoordp4uivproc,
17154			normalp3ui: dummy_pfnglnormalp3uiproc,
17155			normalp3uiv: dummy_pfnglnormalp3uivproc,
17156			colorp3ui: dummy_pfnglcolorp3uiproc,
17157			colorp3uiv: dummy_pfnglcolorp3uivproc,
17158			colorp4ui: dummy_pfnglcolorp4uiproc,
17159			colorp4uiv: dummy_pfnglcolorp4uivproc,
17160			secondarycolorp3ui: dummy_pfnglsecondarycolorp3uiproc,
17161			secondarycolorp3uiv: dummy_pfnglsecondarycolorp3uivproc,
17162		}
17163	}
17164}
17165impl Debug for Version33 {
17166	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
17167		if self.available {
17168			f.debug_struct("Version33")
17169			.field("available", &self.available)
17170			.field("bindfragdatalocationindexed", unsafe{if transmute::<_, *const c_void>(self.bindfragdatalocationindexed) == (dummy_pfnglbindfragdatalocationindexedproc as *const c_void) {&null::<PFNGLBINDFRAGDATALOCATIONINDEXEDPROC>()} else {&self.bindfragdatalocationindexed}})
17171			.field("getfragdataindex", unsafe{if transmute::<_, *const c_void>(self.getfragdataindex) == (dummy_pfnglgetfragdataindexproc as *const c_void) {&null::<PFNGLGETFRAGDATAINDEXPROC>()} else {&self.getfragdataindex}})
17172			.field("gensamplers", unsafe{if transmute::<_, *const c_void>(self.gensamplers) == (dummy_pfnglgensamplersproc as *const c_void) {&null::<PFNGLGENSAMPLERSPROC>()} else {&self.gensamplers}})
17173			.field("deletesamplers", unsafe{if transmute::<_, *const c_void>(self.deletesamplers) == (dummy_pfngldeletesamplersproc as *const c_void) {&null::<PFNGLDELETESAMPLERSPROC>()} else {&self.deletesamplers}})
17174			.field("issampler", unsafe{if transmute::<_, *const c_void>(self.issampler) == (dummy_pfnglissamplerproc as *const c_void) {&null::<PFNGLISSAMPLERPROC>()} else {&self.issampler}})
17175			.field("bindsampler", unsafe{if transmute::<_, *const c_void>(self.bindsampler) == (dummy_pfnglbindsamplerproc as *const c_void) {&null::<PFNGLBINDSAMPLERPROC>()} else {&self.bindsampler}})
17176			.field("samplerparameteri", unsafe{if transmute::<_, *const c_void>(self.samplerparameteri) == (dummy_pfnglsamplerparameteriproc as *const c_void) {&null::<PFNGLSAMPLERPARAMETERIPROC>()} else {&self.samplerparameteri}})
17177			.field("samplerparameteriv", unsafe{if transmute::<_, *const c_void>(self.samplerparameteriv) == (dummy_pfnglsamplerparameterivproc as *const c_void) {&null::<PFNGLSAMPLERPARAMETERIVPROC>()} else {&self.samplerparameteriv}})
17178			.field("samplerparameterf", unsafe{if transmute::<_, *const c_void>(self.samplerparameterf) == (dummy_pfnglsamplerparameterfproc as *const c_void) {&null::<PFNGLSAMPLERPARAMETERFPROC>()} else {&self.samplerparameterf}})
17179			.field("samplerparameterfv", unsafe{if transmute::<_, *const c_void>(self.samplerparameterfv) == (dummy_pfnglsamplerparameterfvproc as *const c_void) {&null::<PFNGLSAMPLERPARAMETERFVPROC>()} else {&self.samplerparameterfv}})
17180			.field("samplerparameteriiv", unsafe{if transmute::<_, *const c_void>(self.samplerparameteriiv) == (dummy_pfnglsamplerparameteriivproc as *const c_void) {&null::<PFNGLSAMPLERPARAMETERIIVPROC>()} else {&self.samplerparameteriiv}})
17181			.field("samplerparameteriuiv", unsafe{if transmute::<_, *const c_void>(self.samplerparameteriuiv) == (dummy_pfnglsamplerparameteriuivproc as *const c_void) {&null::<PFNGLSAMPLERPARAMETERIUIVPROC>()} else {&self.samplerparameteriuiv}})
17182			.field("getsamplerparameteriv", unsafe{if transmute::<_, *const c_void>(self.getsamplerparameteriv) == (dummy_pfnglgetsamplerparameterivproc as *const c_void) {&null::<PFNGLGETSAMPLERPARAMETERIVPROC>()} else {&self.getsamplerparameteriv}})
17183			.field("getsamplerparameteriiv", unsafe{if transmute::<_, *const c_void>(self.getsamplerparameteriiv) == (dummy_pfnglgetsamplerparameteriivproc as *const c_void) {&null::<PFNGLGETSAMPLERPARAMETERIIVPROC>()} else {&self.getsamplerparameteriiv}})
17184			.field("getsamplerparameterfv", unsafe{if transmute::<_, *const c_void>(self.getsamplerparameterfv) == (dummy_pfnglgetsamplerparameterfvproc as *const c_void) {&null::<PFNGLGETSAMPLERPARAMETERFVPROC>()} else {&self.getsamplerparameterfv}})
17185			.field("getsamplerparameteriuiv", unsafe{if transmute::<_, *const c_void>(self.getsamplerparameteriuiv) == (dummy_pfnglgetsamplerparameteriuivproc as *const c_void) {&null::<PFNGLGETSAMPLERPARAMETERIUIVPROC>()} else {&self.getsamplerparameteriuiv}})
17186			.field("querycounter", unsafe{if transmute::<_, *const c_void>(self.querycounter) == (dummy_pfnglquerycounterproc as *const c_void) {&null::<PFNGLQUERYCOUNTERPROC>()} else {&self.querycounter}})
17187			.field("getqueryobjecti64v", unsafe{if transmute::<_, *const c_void>(self.getqueryobjecti64v) == (dummy_pfnglgetqueryobjecti64vproc as *const c_void) {&null::<PFNGLGETQUERYOBJECTI64VPROC>()} else {&self.getqueryobjecti64v}})
17188			.field("getqueryobjectui64v", unsafe{if transmute::<_, *const c_void>(self.getqueryobjectui64v) == (dummy_pfnglgetqueryobjectui64vproc as *const c_void) {&null::<PFNGLGETQUERYOBJECTUI64VPROC>()} else {&self.getqueryobjectui64v}})
17189			.field("vertexattribdivisor", unsafe{if transmute::<_, *const c_void>(self.vertexattribdivisor) == (dummy_pfnglvertexattribdivisorproc as *const c_void) {&null::<PFNGLVERTEXATTRIBDIVISORPROC>()} else {&self.vertexattribdivisor}})
17190			.field("vertexattribp1ui", unsafe{if transmute::<_, *const c_void>(self.vertexattribp1ui) == (dummy_pfnglvertexattribp1uiproc as *const c_void) {&null::<PFNGLVERTEXATTRIBP1UIPROC>()} else {&self.vertexattribp1ui}})
17191			.field("vertexattribp1uiv", unsafe{if transmute::<_, *const c_void>(self.vertexattribp1uiv) == (dummy_pfnglvertexattribp1uivproc as *const c_void) {&null::<PFNGLVERTEXATTRIBP1UIVPROC>()} else {&self.vertexattribp1uiv}})
17192			.field("vertexattribp2ui", unsafe{if transmute::<_, *const c_void>(self.vertexattribp2ui) == (dummy_pfnglvertexattribp2uiproc as *const c_void) {&null::<PFNGLVERTEXATTRIBP2UIPROC>()} else {&self.vertexattribp2ui}})
17193			.field("vertexattribp2uiv", unsafe{if transmute::<_, *const c_void>(self.vertexattribp2uiv) == (dummy_pfnglvertexattribp2uivproc as *const c_void) {&null::<PFNGLVERTEXATTRIBP2UIVPROC>()} else {&self.vertexattribp2uiv}})
17194			.field("vertexattribp3ui", unsafe{if transmute::<_, *const c_void>(self.vertexattribp3ui) == (dummy_pfnglvertexattribp3uiproc as *const c_void) {&null::<PFNGLVERTEXATTRIBP3UIPROC>()} else {&self.vertexattribp3ui}})
17195			.field("vertexattribp3uiv", unsafe{if transmute::<_, *const c_void>(self.vertexattribp3uiv) == (dummy_pfnglvertexattribp3uivproc as *const c_void) {&null::<PFNGLVERTEXATTRIBP3UIVPROC>()} else {&self.vertexattribp3uiv}})
17196			.field("vertexattribp4ui", unsafe{if transmute::<_, *const c_void>(self.vertexattribp4ui) == (dummy_pfnglvertexattribp4uiproc as *const c_void) {&null::<PFNGLVERTEXATTRIBP4UIPROC>()} else {&self.vertexattribp4ui}})
17197			.field("vertexattribp4uiv", unsafe{if transmute::<_, *const c_void>(self.vertexattribp4uiv) == (dummy_pfnglvertexattribp4uivproc as *const c_void) {&null::<PFNGLVERTEXATTRIBP4UIVPROC>()} else {&self.vertexattribp4uiv}})
17198			.field("vertexp2ui", unsafe{if transmute::<_, *const c_void>(self.vertexp2ui) == (dummy_pfnglvertexp2uiproc as *const c_void) {&null::<PFNGLVERTEXP2UIPROC>()} else {&self.vertexp2ui}})
17199			.field("vertexp2uiv", unsafe{if transmute::<_, *const c_void>(self.vertexp2uiv) == (dummy_pfnglvertexp2uivproc as *const c_void) {&null::<PFNGLVERTEXP2UIVPROC>()} else {&self.vertexp2uiv}})
17200			.field("vertexp3ui", unsafe{if transmute::<_, *const c_void>(self.vertexp3ui) == (dummy_pfnglvertexp3uiproc as *const c_void) {&null::<PFNGLVERTEXP3UIPROC>()} else {&self.vertexp3ui}})
17201			.field("vertexp3uiv", unsafe{if transmute::<_, *const c_void>(self.vertexp3uiv) == (dummy_pfnglvertexp3uivproc as *const c_void) {&null::<PFNGLVERTEXP3UIVPROC>()} else {&self.vertexp3uiv}})
17202			.field("vertexp4ui", unsafe{if transmute::<_, *const c_void>(self.vertexp4ui) == (dummy_pfnglvertexp4uiproc as *const c_void) {&null::<PFNGLVERTEXP4UIPROC>()} else {&self.vertexp4ui}})
17203			.field("vertexp4uiv", unsafe{if transmute::<_, *const c_void>(self.vertexp4uiv) == (dummy_pfnglvertexp4uivproc as *const c_void) {&null::<PFNGLVERTEXP4UIVPROC>()} else {&self.vertexp4uiv}})
17204			.field("texcoordp1ui", unsafe{if transmute::<_, *const c_void>(self.texcoordp1ui) == (dummy_pfngltexcoordp1uiproc as *const c_void) {&null::<PFNGLTEXCOORDP1UIPROC>()} else {&self.texcoordp1ui}})
17205			.field("texcoordp1uiv", unsafe{if transmute::<_, *const c_void>(self.texcoordp1uiv) == (dummy_pfngltexcoordp1uivproc as *const c_void) {&null::<PFNGLTEXCOORDP1UIVPROC>()} else {&self.texcoordp1uiv}})
17206			.field("texcoordp2ui", unsafe{if transmute::<_, *const c_void>(self.texcoordp2ui) == (dummy_pfngltexcoordp2uiproc as *const c_void) {&null::<PFNGLTEXCOORDP2UIPROC>()} else {&self.texcoordp2ui}})
17207			.field("texcoordp2uiv", unsafe{if transmute::<_, *const c_void>(self.texcoordp2uiv) == (dummy_pfngltexcoordp2uivproc as *const c_void) {&null::<PFNGLTEXCOORDP2UIVPROC>()} else {&self.texcoordp2uiv}})
17208			.field("texcoordp3ui", unsafe{if transmute::<_, *const c_void>(self.texcoordp3ui) == (dummy_pfngltexcoordp3uiproc as *const c_void) {&null::<PFNGLTEXCOORDP3UIPROC>()} else {&self.texcoordp3ui}})
17209			.field("texcoordp3uiv", unsafe{if transmute::<_, *const c_void>(self.texcoordp3uiv) == (dummy_pfngltexcoordp3uivproc as *const c_void) {&null::<PFNGLTEXCOORDP3UIVPROC>()} else {&self.texcoordp3uiv}})
17210			.field("texcoordp4ui", unsafe{if transmute::<_, *const c_void>(self.texcoordp4ui) == (dummy_pfngltexcoordp4uiproc as *const c_void) {&null::<PFNGLTEXCOORDP4UIPROC>()} else {&self.texcoordp4ui}})
17211			.field("texcoordp4uiv", unsafe{if transmute::<_, *const c_void>(self.texcoordp4uiv) == (dummy_pfngltexcoordp4uivproc as *const c_void) {&null::<PFNGLTEXCOORDP4UIVPROC>()} else {&self.texcoordp4uiv}})
17212			.field("multitexcoordp1ui", unsafe{if transmute::<_, *const c_void>(self.multitexcoordp1ui) == (dummy_pfnglmultitexcoordp1uiproc as *const c_void) {&null::<PFNGLMULTITEXCOORDP1UIPROC>()} else {&self.multitexcoordp1ui}})
17213			.field("multitexcoordp1uiv", unsafe{if transmute::<_, *const c_void>(self.multitexcoordp1uiv) == (dummy_pfnglmultitexcoordp1uivproc as *const c_void) {&null::<PFNGLMULTITEXCOORDP1UIVPROC>()} else {&self.multitexcoordp1uiv}})
17214			.field("multitexcoordp2ui", unsafe{if transmute::<_, *const c_void>(self.multitexcoordp2ui) == (dummy_pfnglmultitexcoordp2uiproc as *const c_void) {&null::<PFNGLMULTITEXCOORDP2UIPROC>()} else {&self.multitexcoordp2ui}})
17215			.field("multitexcoordp2uiv", unsafe{if transmute::<_, *const c_void>(self.multitexcoordp2uiv) == (dummy_pfnglmultitexcoordp2uivproc as *const c_void) {&null::<PFNGLMULTITEXCOORDP2UIVPROC>()} else {&self.multitexcoordp2uiv}})
17216			.field("multitexcoordp3ui", unsafe{if transmute::<_, *const c_void>(self.multitexcoordp3ui) == (dummy_pfnglmultitexcoordp3uiproc as *const c_void) {&null::<PFNGLMULTITEXCOORDP3UIPROC>()} else {&self.multitexcoordp3ui}})
17217			.field("multitexcoordp3uiv", unsafe{if transmute::<_, *const c_void>(self.multitexcoordp3uiv) == (dummy_pfnglmultitexcoordp3uivproc as *const c_void) {&null::<PFNGLMULTITEXCOORDP3UIVPROC>()} else {&self.multitexcoordp3uiv}})
17218			.field("multitexcoordp4ui", unsafe{if transmute::<_, *const c_void>(self.multitexcoordp4ui) == (dummy_pfnglmultitexcoordp4uiproc as *const c_void) {&null::<PFNGLMULTITEXCOORDP4UIPROC>()} else {&self.multitexcoordp4ui}})
17219			.field("multitexcoordp4uiv", unsafe{if transmute::<_, *const c_void>(self.multitexcoordp4uiv) == (dummy_pfnglmultitexcoordp4uivproc as *const c_void) {&null::<PFNGLMULTITEXCOORDP4UIVPROC>()} else {&self.multitexcoordp4uiv}})
17220			.field("normalp3ui", unsafe{if transmute::<_, *const c_void>(self.normalp3ui) == (dummy_pfnglnormalp3uiproc as *const c_void) {&null::<PFNGLNORMALP3UIPROC>()} else {&self.normalp3ui}})
17221			.field("normalp3uiv", unsafe{if transmute::<_, *const c_void>(self.normalp3uiv) == (dummy_pfnglnormalp3uivproc as *const c_void) {&null::<PFNGLNORMALP3UIVPROC>()} else {&self.normalp3uiv}})
17222			.field("colorp3ui", unsafe{if transmute::<_, *const c_void>(self.colorp3ui) == (dummy_pfnglcolorp3uiproc as *const c_void) {&null::<PFNGLCOLORP3UIPROC>()} else {&self.colorp3ui}})
17223			.field("colorp3uiv", unsafe{if transmute::<_, *const c_void>(self.colorp3uiv) == (dummy_pfnglcolorp3uivproc as *const c_void) {&null::<PFNGLCOLORP3UIVPROC>()} else {&self.colorp3uiv}})
17224			.field("colorp4ui", unsafe{if transmute::<_, *const c_void>(self.colorp4ui) == (dummy_pfnglcolorp4uiproc as *const c_void) {&null::<PFNGLCOLORP4UIPROC>()} else {&self.colorp4ui}})
17225			.field("colorp4uiv", unsafe{if transmute::<_, *const c_void>(self.colorp4uiv) == (dummy_pfnglcolorp4uivproc as *const c_void) {&null::<PFNGLCOLORP4UIVPROC>()} else {&self.colorp4uiv}})
17226			.field("secondarycolorp3ui", unsafe{if transmute::<_, *const c_void>(self.secondarycolorp3ui) == (dummy_pfnglsecondarycolorp3uiproc as *const c_void) {&null::<PFNGLSECONDARYCOLORP3UIPROC>()} else {&self.secondarycolorp3ui}})
17227			.field("secondarycolorp3uiv", unsafe{if transmute::<_, *const c_void>(self.secondarycolorp3uiv) == (dummy_pfnglsecondarycolorp3uivproc as *const c_void) {&null::<PFNGLSECONDARYCOLORP3UIVPROC>()} else {&self.secondarycolorp3uiv}})
17228			.finish()
17229		} else {
17230			f.debug_struct("Version33")
17231			.field("available", &self.available)
17232			.finish_non_exhaustive()
17233		}
17234	}
17235}
17236
17237/// The prototype to the OpenGL function `MinSampleShading`
17238type PFNGLMINSAMPLESHADINGPROC = extern "system" fn(GLfloat);
17239
17240/// The prototype to the OpenGL function `BlendEquationi`
17241type PFNGLBLENDEQUATIONIPROC = extern "system" fn(GLuint, GLenum);
17242
17243/// The prototype to the OpenGL function `BlendEquationSeparatei`
17244type PFNGLBLENDEQUATIONSEPARATEIPROC = extern "system" fn(GLuint, GLenum, GLenum);
17245
17246/// The prototype to the OpenGL function `BlendFunci`
17247type PFNGLBLENDFUNCIPROC = extern "system" fn(GLuint, GLenum, GLenum);
17248
17249/// The prototype to the OpenGL function `BlendFuncSeparatei`
17250type PFNGLBLENDFUNCSEPARATEIPROC = extern "system" fn(GLuint, GLenum, GLenum, GLenum, GLenum);
17251
17252/// The prototype to the OpenGL function `DrawArraysIndirect`
17253type PFNGLDRAWARRAYSINDIRECTPROC = extern "system" fn(GLenum, *const c_void);
17254
17255/// The prototype to the OpenGL function `DrawElementsIndirect`
17256type PFNGLDRAWELEMENTSINDIRECTPROC = extern "system" fn(GLenum, GLenum, *const c_void);
17257
17258/// The prototype to the OpenGL function `Uniform1d`
17259type PFNGLUNIFORM1DPROC = extern "system" fn(GLint, GLdouble);
17260
17261/// The prototype to the OpenGL function `Uniform2d`
17262type PFNGLUNIFORM2DPROC = extern "system" fn(GLint, GLdouble, GLdouble);
17263
17264/// The prototype to the OpenGL function `Uniform3d`
17265type PFNGLUNIFORM3DPROC = extern "system" fn(GLint, GLdouble, GLdouble, GLdouble);
17266
17267/// The prototype to the OpenGL function `Uniform4d`
17268type PFNGLUNIFORM4DPROC = extern "system" fn(GLint, GLdouble, GLdouble, GLdouble, GLdouble);
17269
17270/// The prototype to the OpenGL function `Uniform1dv`
17271type PFNGLUNIFORM1DVPROC = extern "system" fn(GLint, GLsizei, *const GLdouble);
17272
17273/// The prototype to the OpenGL function `Uniform2dv`
17274type PFNGLUNIFORM2DVPROC = extern "system" fn(GLint, GLsizei, *const GLdouble);
17275
17276/// The prototype to the OpenGL function `Uniform3dv`
17277type PFNGLUNIFORM3DVPROC = extern "system" fn(GLint, GLsizei, *const GLdouble);
17278
17279/// The prototype to the OpenGL function `Uniform4dv`
17280type PFNGLUNIFORM4DVPROC = extern "system" fn(GLint, GLsizei, *const GLdouble);
17281
17282/// The prototype to the OpenGL function `UniformMatrix2dv`
17283type PFNGLUNIFORMMATRIX2DVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLdouble);
17284
17285/// The prototype to the OpenGL function `UniformMatrix3dv`
17286type PFNGLUNIFORMMATRIX3DVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLdouble);
17287
17288/// The prototype to the OpenGL function `UniformMatrix4dv`
17289type PFNGLUNIFORMMATRIX4DVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLdouble);
17290
17291/// The prototype to the OpenGL function `UniformMatrix2x3dv`
17292type PFNGLUNIFORMMATRIX2X3DVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLdouble);
17293
17294/// The prototype to the OpenGL function `UniformMatrix2x4dv`
17295type PFNGLUNIFORMMATRIX2X4DVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLdouble);
17296
17297/// The prototype to the OpenGL function `UniformMatrix3x2dv`
17298type PFNGLUNIFORMMATRIX3X2DVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLdouble);
17299
17300/// The prototype to the OpenGL function `UniformMatrix3x4dv`
17301type PFNGLUNIFORMMATRIX3X4DVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLdouble);
17302
17303/// The prototype to the OpenGL function `UniformMatrix4x2dv`
17304type PFNGLUNIFORMMATRIX4X2DVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLdouble);
17305
17306/// The prototype to the OpenGL function `UniformMatrix4x3dv`
17307type PFNGLUNIFORMMATRIX4X3DVPROC = extern "system" fn(GLint, GLsizei, GLboolean, *const GLdouble);
17308
17309/// The prototype to the OpenGL function `GetUniformdv`
17310type PFNGLGETUNIFORMDVPROC = extern "system" fn(GLuint, GLint, *mut GLdouble);
17311
17312/// The prototype to the OpenGL function `GetSubroutineUniformLocation`
17313type PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC = extern "system" fn(GLuint, GLenum, *const GLchar) -> GLint;
17314
17315/// The prototype to the OpenGL function `GetSubroutineIndex`
17316type PFNGLGETSUBROUTINEINDEXPROC = extern "system" fn(GLuint, GLenum, *const GLchar) -> GLuint;
17317
17318/// The prototype to the OpenGL function `GetActiveSubroutineUniformiv`
17319type PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC = extern "system" fn(GLuint, GLenum, GLuint, GLenum, *mut GLint);
17320
17321/// The prototype to the OpenGL function `GetActiveSubroutineUniformName`
17322type PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC = extern "system" fn(GLuint, GLenum, GLuint, GLsizei, *mut GLsizei, *mut GLchar);
17323
17324/// The prototype to the OpenGL function `GetActiveSubroutineName`
17325type PFNGLGETACTIVESUBROUTINENAMEPROC = extern "system" fn(GLuint, GLenum, GLuint, GLsizei, *mut GLsizei, *mut GLchar);
17326
17327/// The prototype to the OpenGL function `UniformSubroutinesuiv`
17328type PFNGLUNIFORMSUBROUTINESUIVPROC = extern "system" fn(GLenum, GLsizei, *const GLuint);
17329
17330/// The prototype to the OpenGL function `GetUniformSubroutineuiv`
17331type PFNGLGETUNIFORMSUBROUTINEUIVPROC = extern "system" fn(GLenum, GLint, *mut GLuint);
17332
17333/// The prototype to the OpenGL function `GetProgramStageiv`
17334type PFNGLGETPROGRAMSTAGEIVPROC = extern "system" fn(GLuint, GLenum, GLenum, *mut GLint);
17335
17336/// The prototype to the OpenGL function `PatchParameteri`
17337type PFNGLPATCHPARAMETERIPROC = extern "system" fn(GLenum, GLint);
17338
17339/// The prototype to the OpenGL function `PatchParameterfv`
17340type PFNGLPATCHPARAMETERFVPROC = extern "system" fn(GLenum, *const GLfloat);
17341
17342/// The prototype to the OpenGL function `BindTransformFeedback`
17343type PFNGLBINDTRANSFORMFEEDBACKPROC = extern "system" fn(GLenum, GLuint);
17344
17345/// The prototype to the OpenGL function `DeleteTransformFeedbacks`
17346type PFNGLDELETETRANSFORMFEEDBACKSPROC = extern "system" fn(GLsizei, *const GLuint);
17347
17348/// The prototype to the OpenGL function `GenTransformFeedbacks`
17349type PFNGLGENTRANSFORMFEEDBACKSPROC = extern "system" fn(GLsizei, *mut GLuint);
17350
17351/// The prototype to the OpenGL function `IsTransformFeedback`
17352type PFNGLISTRANSFORMFEEDBACKPROC = extern "system" fn(GLuint) -> GLboolean;
17353
17354/// The prototype to the OpenGL function `PauseTransformFeedback`
17355type PFNGLPAUSETRANSFORMFEEDBACKPROC = extern "system" fn();
17356
17357/// The prototype to the OpenGL function `ResumeTransformFeedback`
17358type PFNGLRESUMETRANSFORMFEEDBACKPROC = extern "system" fn();
17359
17360/// The prototype to the OpenGL function `DrawTransformFeedback`
17361type PFNGLDRAWTRANSFORMFEEDBACKPROC = extern "system" fn(GLenum, GLuint);
17362
17363/// The prototype to the OpenGL function `DrawTransformFeedbackStream`
17364type PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC = extern "system" fn(GLenum, GLuint, GLuint);
17365
17366/// The prototype to the OpenGL function `BeginQueryIndexed`
17367type PFNGLBEGINQUERYINDEXEDPROC = extern "system" fn(GLenum, GLuint, GLuint);
17368
17369/// The prototype to the OpenGL function `EndQueryIndexed`
17370type PFNGLENDQUERYINDEXEDPROC = extern "system" fn(GLenum, GLuint);
17371
17372/// The prototype to the OpenGL function `GetQueryIndexediv`
17373type PFNGLGETQUERYINDEXEDIVPROC = extern "system" fn(GLenum, GLuint, GLenum, *mut GLint);
17374
17375/// The dummy function of `MinSampleShading()`
17376extern "system" fn dummy_pfnglminsampleshadingproc (_: GLfloat) {
17377	panic!("OpenGL function pointer `glMinSampleShading()` is null.")
17378}
17379
17380/// The dummy function of `BlendEquationi()`
17381extern "system" fn dummy_pfnglblendequationiproc (_: GLuint, _: GLenum) {
17382	panic!("OpenGL function pointer `glBlendEquationi()` is null.")
17383}
17384
17385/// The dummy function of `BlendEquationSeparatei()`
17386extern "system" fn dummy_pfnglblendequationseparateiproc (_: GLuint, _: GLenum, _: GLenum) {
17387	panic!("OpenGL function pointer `glBlendEquationSeparatei()` is null.")
17388}
17389
17390/// The dummy function of `BlendFunci()`
17391extern "system" fn dummy_pfnglblendfunciproc (_: GLuint, _: GLenum, _: GLenum) {
17392	panic!("OpenGL function pointer `glBlendFunci()` is null.")
17393}
17394
17395/// The dummy function of `BlendFuncSeparatei()`
17396extern "system" fn dummy_pfnglblendfuncseparateiproc (_: GLuint, _: GLenum, _: GLenum, _: GLenum, _: GLenum) {
17397	panic!("OpenGL function pointer `glBlendFuncSeparatei()` is null.")
17398}
17399
17400/// The dummy function of `DrawArraysIndirect()`
17401extern "system" fn dummy_pfngldrawarraysindirectproc (_: GLenum, _: *const c_void) {
17402	panic!("OpenGL function pointer `glDrawArraysIndirect()` is null.")
17403}
17404
17405/// The dummy function of `DrawElementsIndirect()`
17406extern "system" fn dummy_pfngldrawelementsindirectproc (_: GLenum, _: GLenum, _: *const c_void) {
17407	panic!("OpenGL function pointer `glDrawElementsIndirect()` is null.")
17408}
17409
17410/// The dummy function of `Uniform1d()`
17411extern "system" fn dummy_pfngluniform1dproc (_: GLint, _: GLdouble) {
17412	panic!("OpenGL function pointer `glUniform1d()` is null.")
17413}
17414
17415/// The dummy function of `Uniform2d()`
17416extern "system" fn dummy_pfngluniform2dproc (_: GLint, _: GLdouble, _: GLdouble) {
17417	panic!("OpenGL function pointer `glUniform2d()` is null.")
17418}
17419
17420/// The dummy function of `Uniform3d()`
17421extern "system" fn dummy_pfngluniform3dproc (_: GLint, _: GLdouble, _: GLdouble, _: GLdouble) {
17422	panic!("OpenGL function pointer `glUniform3d()` is null.")
17423}
17424
17425/// The dummy function of `Uniform4d()`
17426extern "system" fn dummy_pfngluniform4dproc (_: GLint, _: GLdouble, _: GLdouble, _: GLdouble, _: GLdouble) {
17427	panic!("OpenGL function pointer `glUniform4d()` is null.")
17428}
17429
17430/// The dummy function of `Uniform1dv()`
17431extern "system" fn dummy_pfngluniform1dvproc (_: GLint, _: GLsizei, _: *const GLdouble) {
17432	panic!("OpenGL function pointer `glUniform1dv()` is null.")
17433}
17434
17435/// The dummy function of `Uniform2dv()`
17436extern "system" fn dummy_pfngluniform2dvproc (_: GLint, _: GLsizei, _: *const GLdouble) {
17437	panic!("OpenGL function pointer `glUniform2dv()` is null.")
17438}
17439
17440/// The dummy function of `Uniform3dv()`
17441extern "system" fn dummy_pfngluniform3dvproc (_: GLint, _: GLsizei, _: *const GLdouble) {
17442	panic!("OpenGL function pointer `glUniform3dv()` is null.")
17443}
17444
17445/// The dummy function of `Uniform4dv()`
17446extern "system" fn dummy_pfngluniform4dvproc (_: GLint, _: GLsizei, _: *const GLdouble) {
17447	panic!("OpenGL function pointer `glUniform4dv()` is null.")
17448}
17449
17450/// The dummy function of `UniformMatrix2dv()`
17451extern "system" fn dummy_pfngluniformmatrix2dvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
17452	panic!("OpenGL function pointer `glUniformMatrix2dv()` is null.")
17453}
17454
17455/// The dummy function of `UniformMatrix3dv()`
17456extern "system" fn dummy_pfngluniformmatrix3dvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
17457	panic!("OpenGL function pointer `glUniformMatrix3dv()` is null.")
17458}
17459
17460/// The dummy function of `UniformMatrix4dv()`
17461extern "system" fn dummy_pfngluniformmatrix4dvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
17462	panic!("OpenGL function pointer `glUniformMatrix4dv()` is null.")
17463}
17464
17465/// The dummy function of `UniformMatrix2x3dv()`
17466extern "system" fn dummy_pfngluniformmatrix2x3dvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
17467	panic!("OpenGL function pointer `glUniformMatrix2x3dv()` is null.")
17468}
17469
17470/// The dummy function of `UniformMatrix2x4dv()`
17471extern "system" fn dummy_pfngluniformmatrix2x4dvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
17472	panic!("OpenGL function pointer `glUniformMatrix2x4dv()` is null.")
17473}
17474
17475/// The dummy function of `UniformMatrix3x2dv()`
17476extern "system" fn dummy_pfngluniformmatrix3x2dvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
17477	panic!("OpenGL function pointer `glUniformMatrix3x2dv()` is null.")
17478}
17479
17480/// The dummy function of `UniformMatrix3x4dv()`
17481extern "system" fn dummy_pfngluniformmatrix3x4dvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
17482	panic!("OpenGL function pointer `glUniformMatrix3x4dv()` is null.")
17483}
17484
17485/// The dummy function of `UniformMatrix4x2dv()`
17486extern "system" fn dummy_pfngluniformmatrix4x2dvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
17487	panic!("OpenGL function pointer `glUniformMatrix4x2dv()` is null.")
17488}
17489
17490/// The dummy function of `UniformMatrix4x3dv()`
17491extern "system" fn dummy_pfngluniformmatrix4x3dvproc (_: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
17492	panic!("OpenGL function pointer `glUniformMatrix4x3dv()` is null.")
17493}
17494
17495/// The dummy function of `GetUniformdv()`
17496extern "system" fn dummy_pfnglgetuniformdvproc (_: GLuint, _: GLint, _: *mut GLdouble) {
17497	panic!("OpenGL function pointer `glGetUniformdv()` is null.")
17498}
17499
17500/// The dummy function of `GetSubroutineUniformLocation()`
17501extern "system" fn dummy_pfnglgetsubroutineuniformlocationproc (_: GLuint, _: GLenum, _: *const GLchar) -> GLint {
17502	panic!("OpenGL function pointer `glGetSubroutineUniformLocation()` is null.")
17503}
17504
17505/// The dummy function of `GetSubroutineIndex()`
17506extern "system" fn dummy_pfnglgetsubroutineindexproc (_: GLuint, _: GLenum, _: *const GLchar) -> GLuint {
17507	panic!("OpenGL function pointer `glGetSubroutineIndex()` is null.")
17508}
17509
17510/// The dummy function of `GetActiveSubroutineUniformiv()`
17511extern "system" fn dummy_pfnglgetactivesubroutineuniformivproc (_: GLuint, _: GLenum, _: GLuint, _: GLenum, _: *mut GLint) {
17512	panic!("OpenGL function pointer `glGetActiveSubroutineUniformiv()` is null.")
17513}
17514
17515/// The dummy function of `GetActiveSubroutineUniformName()`
17516extern "system" fn dummy_pfnglgetactivesubroutineuniformnameproc (_: GLuint, _: GLenum, _: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLchar) {
17517	panic!("OpenGL function pointer `glGetActiveSubroutineUniformName()` is null.")
17518}
17519
17520/// The dummy function of `GetActiveSubroutineName()`
17521extern "system" fn dummy_pfnglgetactivesubroutinenameproc (_: GLuint, _: GLenum, _: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLchar) {
17522	panic!("OpenGL function pointer `glGetActiveSubroutineName()` is null.")
17523}
17524
17525/// The dummy function of `UniformSubroutinesuiv()`
17526extern "system" fn dummy_pfngluniformsubroutinesuivproc (_: GLenum, _: GLsizei, _: *const GLuint) {
17527	panic!("OpenGL function pointer `glUniformSubroutinesuiv()` is null.")
17528}
17529
17530/// The dummy function of `GetUniformSubroutineuiv()`
17531extern "system" fn dummy_pfnglgetuniformsubroutineuivproc (_: GLenum, _: GLint, _: *mut GLuint) {
17532	panic!("OpenGL function pointer `glGetUniformSubroutineuiv()` is null.")
17533}
17534
17535/// The dummy function of `GetProgramStageiv()`
17536extern "system" fn dummy_pfnglgetprogramstageivproc (_: GLuint, _: GLenum, _: GLenum, _: *mut GLint) {
17537	panic!("OpenGL function pointer `glGetProgramStageiv()` is null.")
17538}
17539
17540/// The dummy function of `PatchParameteri()`
17541extern "system" fn dummy_pfnglpatchparameteriproc (_: GLenum, _: GLint) {
17542	panic!("OpenGL function pointer `glPatchParameteri()` is null.")
17543}
17544
17545/// The dummy function of `PatchParameterfv()`
17546extern "system" fn dummy_pfnglpatchparameterfvproc (_: GLenum, _: *const GLfloat) {
17547	panic!("OpenGL function pointer `glPatchParameterfv()` is null.")
17548}
17549
17550/// The dummy function of `BindTransformFeedback()`
17551extern "system" fn dummy_pfnglbindtransformfeedbackproc (_: GLenum, _: GLuint) {
17552	panic!("OpenGL function pointer `glBindTransformFeedback()` is null.")
17553}
17554
17555/// The dummy function of `DeleteTransformFeedbacks()`
17556extern "system" fn dummy_pfngldeletetransformfeedbacksproc (_: GLsizei, _: *const GLuint) {
17557	panic!("OpenGL function pointer `glDeleteTransformFeedbacks()` is null.")
17558}
17559
17560/// The dummy function of `GenTransformFeedbacks()`
17561extern "system" fn dummy_pfnglgentransformfeedbacksproc (_: GLsizei, _: *mut GLuint) {
17562	panic!("OpenGL function pointer `glGenTransformFeedbacks()` is null.")
17563}
17564
17565/// The dummy function of `IsTransformFeedback()`
17566extern "system" fn dummy_pfnglistransformfeedbackproc (_: GLuint) -> GLboolean {
17567	panic!("OpenGL function pointer `glIsTransformFeedback()` is null.")
17568}
17569
17570/// The dummy function of `PauseTransformFeedback()`
17571extern "system" fn dummy_pfnglpausetransformfeedbackproc () {
17572	panic!("OpenGL function pointer `glPauseTransformFeedback()` is null.")
17573}
17574
17575/// The dummy function of `ResumeTransformFeedback()`
17576extern "system" fn dummy_pfnglresumetransformfeedbackproc () {
17577	panic!("OpenGL function pointer `glResumeTransformFeedback()` is null.")
17578}
17579
17580/// The dummy function of `DrawTransformFeedback()`
17581extern "system" fn dummy_pfngldrawtransformfeedbackproc (_: GLenum, _: GLuint) {
17582	panic!("OpenGL function pointer `glDrawTransformFeedback()` is null.")
17583}
17584
17585/// The dummy function of `DrawTransformFeedbackStream()`
17586extern "system" fn dummy_pfngldrawtransformfeedbackstreamproc (_: GLenum, _: GLuint, _: GLuint) {
17587	panic!("OpenGL function pointer `glDrawTransformFeedbackStream()` is null.")
17588}
17589
17590/// The dummy function of `BeginQueryIndexed()`
17591extern "system" fn dummy_pfnglbeginqueryindexedproc (_: GLenum, _: GLuint, _: GLuint) {
17592	panic!("OpenGL function pointer `glBeginQueryIndexed()` is null.")
17593}
17594
17595/// The dummy function of `EndQueryIndexed()`
17596extern "system" fn dummy_pfnglendqueryindexedproc (_: GLenum, _: GLuint) {
17597	panic!("OpenGL function pointer `glEndQueryIndexed()` is null.")
17598}
17599
17600/// The dummy function of `GetQueryIndexediv()`
17601extern "system" fn dummy_pfnglgetqueryindexedivproc (_: GLenum, _: GLuint, _: GLenum, _: *mut GLint) {
17602	panic!("OpenGL function pointer `glGetQueryIndexediv()` is null.")
17603}
17604/// Constant value defined from OpenGL 4.0
17605pub const GL_SAMPLE_SHADING: GLenum = 0x8C36;
17606
17607/// Constant value defined from OpenGL 4.0
17608pub const GL_MIN_SAMPLE_SHADING_VALUE: GLenum = 0x8C37;
17609
17610/// Constant value defined from OpenGL 4.0
17611pub const GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET: GLenum = 0x8E5E;
17612
17613/// Constant value defined from OpenGL 4.0
17614pub const GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET: GLenum = 0x8E5F;
17615
17616/// Constant value defined from OpenGL 4.0
17617pub const GL_TEXTURE_CUBE_MAP_ARRAY: GLenum = 0x9009;
17618
17619/// Constant value defined from OpenGL 4.0
17620pub const GL_TEXTURE_BINDING_CUBE_MAP_ARRAY: GLenum = 0x900A;
17621
17622/// Constant value defined from OpenGL 4.0
17623pub const GL_PROXY_TEXTURE_CUBE_MAP_ARRAY: GLenum = 0x900B;
17624
17625/// Constant value defined from OpenGL 4.0
17626pub const GL_SAMPLER_CUBE_MAP_ARRAY: GLenum = 0x900C;
17627
17628/// Constant value defined from OpenGL 4.0
17629pub const GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW: GLenum = 0x900D;
17630
17631/// Constant value defined from OpenGL 4.0
17632pub const GL_INT_SAMPLER_CUBE_MAP_ARRAY: GLenum = 0x900E;
17633
17634/// Constant value defined from OpenGL 4.0
17635pub const GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY: GLenum = 0x900F;
17636
17637/// Constant value defined from OpenGL 4.0
17638pub const GL_DRAW_INDIRECT_BUFFER: GLenum = 0x8F3F;
17639
17640/// Constant value defined from OpenGL 4.0
17641pub const GL_DRAW_INDIRECT_BUFFER_BINDING: GLenum = 0x8F43;
17642
17643/// Constant value defined from OpenGL 4.0
17644pub const GL_GEOMETRY_SHADER_INVOCATIONS: GLenum = 0x887F;
17645
17646/// Constant value defined from OpenGL 4.0
17647pub const GL_MAX_GEOMETRY_SHADER_INVOCATIONS: GLenum = 0x8E5A;
17648
17649/// Constant value defined from OpenGL 4.0
17650pub const GL_MIN_FRAGMENT_INTERPOLATION_OFFSET: GLenum = 0x8E5B;
17651
17652/// Constant value defined from OpenGL 4.0
17653pub const GL_MAX_FRAGMENT_INTERPOLATION_OFFSET: GLenum = 0x8E5C;
17654
17655/// Constant value defined from OpenGL 4.0
17656pub const GL_FRAGMENT_INTERPOLATION_OFFSET_BITS: GLenum = 0x8E5D;
17657
17658/// Constant value defined from OpenGL 4.0
17659pub const GL_MAX_VERTEX_STREAMS: GLenum = 0x8E71;
17660
17661/// Constant value defined from OpenGL 4.0
17662pub const GL_DOUBLE_VEC2: GLenum = 0x8FFC;
17663
17664/// Constant value defined from OpenGL 4.0
17665pub const GL_DOUBLE_VEC3: GLenum = 0x8FFD;
17666
17667/// Constant value defined from OpenGL 4.0
17668pub const GL_DOUBLE_VEC4: GLenum = 0x8FFE;
17669
17670/// Constant value defined from OpenGL 4.0
17671pub const GL_DOUBLE_MAT2: GLenum = 0x8F46;
17672
17673/// Constant value defined from OpenGL 4.0
17674pub const GL_DOUBLE_MAT3: GLenum = 0x8F47;
17675
17676/// Constant value defined from OpenGL 4.0
17677pub const GL_DOUBLE_MAT4: GLenum = 0x8F48;
17678
17679/// Constant value defined from OpenGL 4.0
17680pub const GL_DOUBLE_MAT2x3: GLenum = 0x8F49;
17681
17682/// Constant value defined from OpenGL 4.0
17683pub const GL_DOUBLE_MAT2x4: GLenum = 0x8F4A;
17684
17685/// Constant value defined from OpenGL 4.0
17686pub const GL_DOUBLE_MAT3x2: GLenum = 0x8F4B;
17687
17688/// Constant value defined from OpenGL 4.0
17689pub const GL_DOUBLE_MAT3x4: GLenum = 0x8F4C;
17690
17691/// Constant value defined from OpenGL 4.0
17692pub const GL_DOUBLE_MAT4x2: GLenum = 0x8F4D;
17693
17694/// Constant value defined from OpenGL 4.0
17695pub const GL_DOUBLE_MAT4x3: GLenum = 0x8F4E;
17696
17697/// Constant value defined from OpenGL 4.0
17698pub const GL_ACTIVE_SUBROUTINES: GLenum = 0x8DE5;
17699
17700/// Constant value defined from OpenGL 4.0
17701pub const GL_ACTIVE_SUBROUTINE_UNIFORMS: GLenum = 0x8DE6;
17702
17703/// Constant value defined from OpenGL 4.0
17704pub const GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS: GLenum = 0x8E47;
17705
17706/// Constant value defined from OpenGL 4.0
17707pub const GL_ACTIVE_SUBROUTINE_MAX_LENGTH: GLenum = 0x8E48;
17708
17709/// Constant value defined from OpenGL 4.0
17710pub const GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH: GLenum = 0x8E49;
17711
17712/// Constant value defined from OpenGL 4.0
17713pub const GL_MAX_SUBROUTINES: GLenum = 0x8DE7;
17714
17715/// Constant value defined from OpenGL 4.0
17716pub const GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS: GLenum = 0x8DE8;
17717
17718/// Constant value defined from OpenGL 4.0
17719pub const GL_NUM_COMPATIBLE_SUBROUTINES: GLenum = 0x8E4A;
17720
17721/// Constant value defined from OpenGL 4.0
17722pub const GL_COMPATIBLE_SUBROUTINES: GLenum = 0x8E4B;
17723
17724/// Constant value defined from OpenGL 4.0
17725pub const GL_PATCHES: GLenum = 0x000E;
17726
17727/// Constant value defined from OpenGL 4.0
17728pub const GL_PATCH_VERTICES: GLenum = 0x8E72;
17729
17730/// Constant value defined from OpenGL 4.0
17731pub const GL_PATCH_DEFAULT_INNER_LEVEL: GLenum = 0x8E73;
17732
17733/// Constant value defined from OpenGL 4.0
17734pub const GL_PATCH_DEFAULT_OUTER_LEVEL: GLenum = 0x8E74;
17735
17736/// Constant value defined from OpenGL 4.0
17737pub const GL_TESS_CONTROL_OUTPUT_VERTICES: GLenum = 0x8E75;
17738
17739/// Constant value defined from OpenGL 4.0
17740pub const GL_TESS_GEN_MODE: GLenum = 0x8E76;
17741
17742/// Constant value defined from OpenGL 4.0
17743pub const GL_TESS_GEN_SPACING: GLenum = 0x8E77;
17744
17745/// Constant value defined from OpenGL 4.0
17746pub const GL_TESS_GEN_VERTEX_ORDER: GLenum = 0x8E78;
17747
17748/// Constant value defined from OpenGL 4.0
17749pub const GL_TESS_GEN_POINT_MODE: GLenum = 0x8E79;
17750
17751/// Constant value defined from OpenGL 4.0
17752pub const GL_ISOLINES: GLenum = 0x8E7A;
17753
17754/// Constant value defined from OpenGL 4.0
17755pub const GL_FRACTIONAL_ODD: GLenum = 0x8E7B;
17756
17757/// Constant value defined from OpenGL 4.0
17758pub const GL_FRACTIONAL_EVEN: GLenum = 0x8E7C;
17759
17760/// Constant value defined from OpenGL 4.0
17761pub const GL_MAX_PATCH_VERTICES: GLenum = 0x8E7D;
17762
17763/// Constant value defined from OpenGL 4.0
17764pub const GL_MAX_TESS_GEN_LEVEL: GLenum = 0x8E7E;
17765
17766/// Constant value defined from OpenGL 4.0
17767pub const GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS: GLenum = 0x8E7F;
17768
17769/// Constant value defined from OpenGL 4.0
17770pub const GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS: GLenum = 0x8E80;
17771
17772/// Constant value defined from OpenGL 4.0
17773pub const GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS: GLenum = 0x8E81;
17774
17775/// Constant value defined from OpenGL 4.0
17776pub const GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS: GLenum = 0x8E82;
17777
17778/// Constant value defined from OpenGL 4.0
17779pub const GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS: GLenum = 0x8E83;
17780
17781/// Constant value defined from OpenGL 4.0
17782pub const GL_MAX_TESS_PATCH_COMPONENTS: GLenum = 0x8E84;
17783
17784/// Constant value defined from OpenGL 4.0
17785pub const GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS: GLenum = 0x8E85;
17786
17787/// Constant value defined from OpenGL 4.0
17788pub const GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS: GLenum = 0x8E86;
17789
17790/// Constant value defined from OpenGL 4.0
17791pub const GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS: GLenum = 0x8E89;
17792
17793/// Constant value defined from OpenGL 4.0
17794pub const GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS: GLenum = 0x8E8A;
17795
17796/// Constant value defined from OpenGL 4.0
17797pub const GL_MAX_TESS_CONTROL_INPUT_COMPONENTS: GLenum = 0x886C;
17798
17799/// Constant value defined from OpenGL 4.0
17800pub const GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS: GLenum = 0x886D;
17801
17802/// Constant value defined from OpenGL 4.0
17803pub const GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS: GLenum = 0x8E1E;
17804
17805/// Constant value defined from OpenGL 4.0
17806pub const GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS: GLenum = 0x8E1F;
17807
17808/// Constant value defined from OpenGL 4.0
17809pub const GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER: GLenum = 0x84F0;
17810
17811/// Constant value defined from OpenGL 4.0
17812pub const GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER: GLenum = 0x84F1;
17813
17814/// Constant value defined from OpenGL 4.0
17815pub const GL_TESS_EVALUATION_SHADER: GLenum = 0x8E87;
17816
17817/// Constant value defined from OpenGL 4.0
17818pub const GL_TESS_CONTROL_SHADER: GLenum = 0x8E88;
17819
17820/// Constant value defined from OpenGL 4.0
17821pub const GL_TRANSFORM_FEEDBACK: GLenum = 0x8E22;
17822
17823/// Constant value defined from OpenGL 4.0
17824pub const GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED: GLenum = 0x8E23;
17825
17826/// Constant value defined from OpenGL 4.0
17827pub const GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE: GLenum = 0x8E24;
17828
17829/// Constant value defined from OpenGL 4.0
17830pub const GL_TRANSFORM_FEEDBACK_BINDING: GLenum = 0x8E25;
17831
17832/// Constant value defined from OpenGL 4.0
17833pub const GL_MAX_TRANSFORM_FEEDBACK_BUFFERS: GLenum = 0x8E70;
17834
17835/// Functions from OpenGL version 4.0
17836pub trait GL_4_0 {
17837	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
17838	fn glGetError(&self) -> GLenum;
17839
17840	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMinSampleShading.xhtml>
17841	fn glMinSampleShading(&self, value: GLfloat) -> Result<()>;
17842
17843	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendEquationi.xhtml>
17844	fn glBlendEquationi(&self, buf: GLuint, mode: GLenum) -> Result<()>;
17845
17846	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendEquationSeparatei.xhtml>
17847	fn glBlendEquationSeparatei(&self, buf: GLuint, modeRGB: GLenum, modeAlpha: GLenum) -> Result<()>;
17848
17849	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendFunci.xhtml>
17850	fn glBlendFunci(&self, buf: GLuint, src: GLenum, dst: GLenum) -> Result<()>;
17851
17852	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendFuncSeparatei.xhtml>
17853	fn glBlendFuncSeparatei(&self, buf: GLuint, srcRGB: GLenum, dstRGB: GLenum, srcAlpha: GLenum, dstAlpha: GLenum) -> Result<()>;
17854
17855	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawArraysIndirect.xhtml>
17856	fn glDrawArraysIndirect(&self, mode: GLenum, indirect: *const c_void) -> Result<()>;
17857
17858	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsIndirect.xhtml>
17859	fn glDrawElementsIndirect(&self, mode: GLenum, type_: GLenum, indirect: *const c_void) -> Result<()>;
17860
17861	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1d.xhtml>
17862	fn glUniform1d(&self, location: GLint, x: GLdouble) -> Result<()>;
17863
17864	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2d.xhtml>
17865	fn glUniform2d(&self, location: GLint, x: GLdouble, y: GLdouble) -> Result<()>;
17866
17867	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3d.xhtml>
17868	fn glUniform3d(&self, location: GLint, x: GLdouble, y: GLdouble, z: GLdouble) -> Result<()>;
17869
17870	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4d.xhtml>
17871	fn glUniform4d(&self, location: GLint, x: GLdouble, y: GLdouble, z: GLdouble, w: GLdouble) -> Result<()>;
17872
17873	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1dv.xhtml>
17874	fn glUniform1dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()>;
17875
17876	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2dv.xhtml>
17877	fn glUniform2dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()>;
17878
17879	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3dv.xhtml>
17880	fn glUniform3dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()>;
17881
17882	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4dv.xhtml>
17883	fn glUniform4dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()>;
17884
17885	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2dv.xhtml>
17886	fn glUniformMatrix2dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
17887
17888	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3dv.xhtml>
17889	fn glUniformMatrix3dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
17890
17891	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4dv.xhtml>
17892	fn glUniformMatrix4dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
17893
17894	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2x3dv.xhtml>
17895	fn glUniformMatrix2x3dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
17896
17897	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2x4dv.xhtml>
17898	fn glUniformMatrix2x4dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
17899
17900	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3x2dv.xhtml>
17901	fn glUniformMatrix3x2dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
17902
17903	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3x4dv.xhtml>
17904	fn glUniformMatrix3x4dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
17905
17906	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4x2dv.xhtml>
17907	fn glUniformMatrix4x2dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
17908
17909	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4x3dv.xhtml>
17910	fn glUniformMatrix4x3dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
17911
17912	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformdv.xhtml>
17913	fn glGetUniformdv(&self, program: GLuint, location: GLint, params: *mut GLdouble) -> Result<()>;
17914
17915	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSubroutineUniformLocation.xhtml>
17916	fn glGetSubroutineUniformLocation(&self, program: GLuint, shadertype: GLenum, name: *const GLchar) -> Result<GLint>;
17917
17918	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSubroutineIndex.xhtml>
17919	fn glGetSubroutineIndex(&self, program: GLuint, shadertype: GLenum, name: *const GLchar) -> Result<GLuint>;
17920
17921	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveSubroutineUniformiv.xhtml>
17922	fn glGetActiveSubroutineUniformiv(&self, program: GLuint, shadertype: GLenum, index: GLuint, pname: GLenum, values: *mut GLint) -> Result<()>;
17923
17924	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveSubroutineUniformName.xhtml>
17925	fn glGetActiveSubroutineUniformName(&self, program: GLuint, shadertype: GLenum, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, name: *mut GLchar) -> Result<()>;
17926
17927	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveSubroutineName.xhtml>
17928	fn glGetActiveSubroutineName(&self, program: GLuint, shadertype: GLenum, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, name: *mut GLchar) -> Result<()>;
17929
17930	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformSubroutinesuiv.xhtml>
17931	fn glUniformSubroutinesuiv(&self, shadertype: GLenum, count: GLsizei, indices: *const GLuint) -> Result<()>;
17932
17933	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformSubroutineuiv.xhtml>
17934	fn glGetUniformSubroutineuiv(&self, shadertype: GLenum, location: GLint, params: *mut GLuint) -> Result<()>;
17935
17936	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramStageiv.xhtml>
17937	fn glGetProgramStageiv(&self, program: GLuint, shadertype: GLenum, pname: GLenum, values: *mut GLint) -> Result<()>;
17938
17939	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPatchParameteri.xhtml>
17940	fn glPatchParameteri(&self, pname: GLenum, value: GLint) -> Result<()>;
17941
17942	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPatchParameterfv.xhtml>
17943	fn glPatchParameterfv(&self, pname: GLenum, values: *const GLfloat) -> Result<()>;
17944
17945	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindTransformFeedback.xhtml>
17946	fn glBindTransformFeedback(&self, target: GLenum, id: GLuint) -> Result<()>;
17947
17948	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteTransformFeedbacks.xhtml>
17949	fn glDeleteTransformFeedbacks(&self, n: GLsizei, ids: *const GLuint) -> Result<()>;
17950
17951	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenTransformFeedbacks.xhtml>
17952	fn glGenTransformFeedbacks(&self, n: GLsizei, ids: *mut GLuint) -> Result<()>;
17953
17954	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsTransformFeedback.xhtml>
17955	fn glIsTransformFeedback(&self, id: GLuint) -> Result<GLboolean>;
17956
17957	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPauseTransformFeedback.xhtml>
17958	fn glPauseTransformFeedback(&self) -> Result<()>;
17959
17960	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glResumeTransformFeedback.xhtml>
17961	fn glResumeTransformFeedback(&self) -> Result<()>;
17962
17963	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawTransformFeedback.xhtml>
17964	fn glDrawTransformFeedback(&self, mode: GLenum, id: GLuint) -> Result<()>;
17965
17966	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawTransformFeedbackStream.xhtml>
17967	fn glDrawTransformFeedbackStream(&self, mode: GLenum, id: GLuint, stream: GLuint) -> Result<()>;
17968
17969	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBeginQueryIndexed.xhtml>
17970	fn glBeginQueryIndexed(&self, target: GLenum, index: GLuint, id: GLuint) -> Result<()>;
17971
17972	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEndQueryIndexed.xhtml>
17973	fn glEndQueryIndexed(&self, target: GLenum, index: GLuint) -> Result<()>;
17974
17975	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryIndexediv.xhtml>
17976	fn glGetQueryIndexediv(&self, target: GLenum, index: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
17977}
17978/// Functions from OpenGL version 4.0
17979#[derive(Clone, Copy, PartialEq, Eq, Hash)]
17980pub struct Version40 {
17981	/// Is OpenGL version 4.0 available
17982	available: bool,
17983
17984	/// The function pointer to `glGetError()`
17985	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
17986	pub geterror: PFNGLGETERRORPROC,
17987
17988	/// The function pointer to `glMinSampleShading()`
17989	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMinSampleShading.xhtml>
17990	pub minsampleshading: PFNGLMINSAMPLESHADINGPROC,
17991
17992	/// The function pointer to `glBlendEquationi()`
17993	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendEquationi.xhtml>
17994	pub blendequationi: PFNGLBLENDEQUATIONIPROC,
17995
17996	/// The function pointer to `glBlendEquationSeparatei()`
17997	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendEquationSeparatei.xhtml>
17998	pub blendequationseparatei: PFNGLBLENDEQUATIONSEPARATEIPROC,
17999
18000	/// The function pointer to `glBlendFunci()`
18001	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendFunci.xhtml>
18002	pub blendfunci: PFNGLBLENDFUNCIPROC,
18003
18004	/// The function pointer to `glBlendFuncSeparatei()`
18005	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendFuncSeparatei.xhtml>
18006	pub blendfuncseparatei: PFNGLBLENDFUNCSEPARATEIPROC,
18007
18008	/// The function pointer to `glDrawArraysIndirect()`
18009	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawArraysIndirect.xhtml>
18010	pub drawarraysindirect: PFNGLDRAWARRAYSINDIRECTPROC,
18011
18012	/// The function pointer to `glDrawElementsIndirect()`
18013	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsIndirect.xhtml>
18014	pub drawelementsindirect: PFNGLDRAWELEMENTSINDIRECTPROC,
18015
18016	/// The function pointer to `glUniform1d()`
18017	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1d.xhtml>
18018	pub uniform1d: PFNGLUNIFORM1DPROC,
18019
18020	/// The function pointer to `glUniform2d()`
18021	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2d.xhtml>
18022	pub uniform2d: PFNGLUNIFORM2DPROC,
18023
18024	/// The function pointer to `glUniform3d()`
18025	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3d.xhtml>
18026	pub uniform3d: PFNGLUNIFORM3DPROC,
18027
18028	/// The function pointer to `glUniform4d()`
18029	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4d.xhtml>
18030	pub uniform4d: PFNGLUNIFORM4DPROC,
18031
18032	/// The function pointer to `glUniform1dv()`
18033	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1dv.xhtml>
18034	pub uniform1dv: PFNGLUNIFORM1DVPROC,
18035
18036	/// The function pointer to `glUniform2dv()`
18037	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2dv.xhtml>
18038	pub uniform2dv: PFNGLUNIFORM2DVPROC,
18039
18040	/// The function pointer to `glUniform3dv()`
18041	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3dv.xhtml>
18042	pub uniform3dv: PFNGLUNIFORM3DVPROC,
18043
18044	/// The function pointer to `glUniform4dv()`
18045	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4dv.xhtml>
18046	pub uniform4dv: PFNGLUNIFORM4DVPROC,
18047
18048	/// The function pointer to `glUniformMatrix2dv()`
18049	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2dv.xhtml>
18050	pub uniformmatrix2dv: PFNGLUNIFORMMATRIX2DVPROC,
18051
18052	/// The function pointer to `glUniformMatrix3dv()`
18053	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3dv.xhtml>
18054	pub uniformmatrix3dv: PFNGLUNIFORMMATRIX3DVPROC,
18055
18056	/// The function pointer to `glUniformMatrix4dv()`
18057	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4dv.xhtml>
18058	pub uniformmatrix4dv: PFNGLUNIFORMMATRIX4DVPROC,
18059
18060	/// The function pointer to `glUniformMatrix2x3dv()`
18061	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2x3dv.xhtml>
18062	pub uniformmatrix2x3dv: PFNGLUNIFORMMATRIX2X3DVPROC,
18063
18064	/// The function pointer to `glUniformMatrix2x4dv()`
18065	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2x4dv.xhtml>
18066	pub uniformmatrix2x4dv: PFNGLUNIFORMMATRIX2X4DVPROC,
18067
18068	/// The function pointer to `glUniformMatrix3x2dv()`
18069	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3x2dv.xhtml>
18070	pub uniformmatrix3x2dv: PFNGLUNIFORMMATRIX3X2DVPROC,
18071
18072	/// The function pointer to `glUniformMatrix3x4dv()`
18073	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3x4dv.xhtml>
18074	pub uniformmatrix3x4dv: PFNGLUNIFORMMATRIX3X4DVPROC,
18075
18076	/// The function pointer to `glUniformMatrix4x2dv()`
18077	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4x2dv.xhtml>
18078	pub uniformmatrix4x2dv: PFNGLUNIFORMMATRIX4X2DVPROC,
18079
18080	/// The function pointer to `glUniformMatrix4x3dv()`
18081	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4x3dv.xhtml>
18082	pub uniformmatrix4x3dv: PFNGLUNIFORMMATRIX4X3DVPROC,
18083
18084	/// The function pointer to `glGetUniformdv()`
18085	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformdv.xhtml>
18086	pub getuniformdv: PFNGLGETUNIFORMDVPROC,
18087
18088	/// The function pointer to `glGetSubroutineUniformLocation()`
18089	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSubroutineUniformLocation.xhtml>
18090	pub getsubroutineuniformlocation: PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC,
18091
18092	/// The function pointer to `glGetSubroutineIndex()`
18093	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSubroutineIndex.xhtml>
18094	pub getsubroutineindex: PFNGLGETSUBROUTINEINDEXPROC,
18095
18096	/// The function pointer to `glGetActiveSubroutineUniformiv()`
18097	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveSubroutineUniformiv.xhtml>
18098	pub getactivesubroutineuniformiv: PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC,
18099
18100	/// The function pointer to `glGetActiveSubroutineUniformName()`
18101	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveSubroutineUniformName.xhtml>
18102	pub getactivesubroutineuniformname: PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC,
18103
18104	/// The function pointer to `glGetActiveSubroutineName()`
18105	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveSubroutineName.xhtml>
18106	pub getactivesubroutinename: PFNGLGETACTIVESUBROUTINENAMEPROC,
18107
18108	/// The function pointer to `glUniformSubroutinesuiv()`
18109	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformSubroutinesuiv.xhtml>
18110	pub uniformsubroutinesuiv: PFNGLUNIFORMSUBROUTINESUIVPROC,
18111
18112	/// The function pointer to `glGetUniformSubroutineuiv()`
18113	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformSubroutineuiv.xhtml>
18114	pub getuniformsubroutineuiv: PFNGLGETUNIFORMSUBROUTINEUIVPROC,
18115
18116	/// The function pointer to `glGetProgramStageiv()`
18117	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramStageiv.xhtml>
18118	pub getprogramstageiv: PFNGLGETPROGRAMSTAGEIVPROC,
18119
18120	/// The function pointer to `glPatchParameteri()`
18121	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPatchParameteri.xhtml>
18122	pub patchparameteri: PFNGLPATCHPARAMETERIPROC,
18123
18124	/// The function pointer to `glPatchParameterfv()`
18125	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPatchParameterfv.xhtml>
18126	pub patchparameterfv: PFNGLPATCHPARAMETERFVPROC,
18127
18128	/// The function pointer to `glBindTransformFeedback()`
18129	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindTransformFeedback.xhtml>
18130	pub bindtransformfeedback: PFNGLBINDTRANSFORMFEEDBACKPROC,
18131
18132	/// The function pointer to `glDeleteTransformFeedbacks()`
18133	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteTransformFeedbacks.xhtml>
18134	pub deletetransformfeedbacks: PFNGLDELETETRANSFORMFEEDBACKSPROC,
18135
18136	/// The function pointer to `glGenTransformFeedbacks()`
18137	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenTransformFeedbacks.xhtml>
18138	pub gentransformfeedbacks: PFNGLGENTRANSFORMFEEDBACKSPROC,
18139
18140	/// The function pointer to `glIsTransformFeedback()`
18141	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsTransformFeedback.xhtml>
18142	pub istransformfeedback: PFNGLISTRANSFORMFEEDBACKPROC,
18143
18144	/// The function pointer to `glPauseTransformFeedback()`
18145	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPauseTransformFeedback.xhtml>
18146	pub pausetransformfeedback: PFNGLPAUSETRANSFORMFEEDBACKPROC,
18147
18148	/// The function pointer to `glResumeTransformFeedback()`
18149	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glResumeTransformFeedback.xhtml>
18150	pub resumetransformfeedback: PFNGLRESUMETRANSFORMFEEDBACKPROC,
18151
18152	/// The function pointer to `glDrawTransformFeedback()`
18153	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawTransformFeedback.xhtml>
18154	pub drawtransformfeedback: PFNGLDRAWTRANSFORMFEEDBACKPROC,
18155
18156	/// The function pointer to `glDrawTransformFeedbackStream()`
18157	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawTransformFeedbackStream.xhtml>
18158	pub drawtransformfeedbackstream: PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC,
18159
18160	/// The function pointer to `glBeginQueryIndexed()`
18161	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBeginQueryIndexed.xhtml>
18162	pub beginqueryindexed: PFNGLBEGINQUERYINDEXEDPROC,
18163
18164	/// The function pointer to `glEndQueryIndexed()`
18165	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEndQueryIndexed.xhtml>
18166	pub endqueryindexed: PFNGLENDQUERYINDEXEDPROC,
18167
18168	/// The function pointer to `glGetQueryIndexediv()`
18169	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryIndexediv.xhtml>
18170	pub getqueryindexediv: PFNGLGETQUERYINDEXEDIVPROC,
18171}
18172
18173impl GL_4_0 for Version40 {
18174	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
18175	#[inline(always)]
18176	fn glGetError(&self) -> GLenum {
18177		(self.geterror)()
18178	}
18179	#[inline(always)]
18180	fn glMinSampleShading(&self, value: GLfloat) -> Result<()> {
18181		let ret = process_catch("glMinSampleShading", catch_unwind(||(self.minsampleshading)(value)));
18182		#[cfg(feature = "diagnose")]
18183		if let Ok(ret) = ret {
18184			return to_result("glMinSampleShading", ret, self.glGetError());
18185		} else {
18186			return ret
18187		}
18188		#[cfg(not(feature = "diagnose"))]
18189		return ret;
18190	}
18191	#[inline(always)]
18192	fn glBlendEquationi(&self, buf: GLuint, mode: GLenum) -> Result<()> {
18193		let ret = process_catch("glBlendEquationi", catch_unwind(||(self.blendequationi)(buf, mode)));
18194		#[cfg(feature = "diagnose")]
18195		if let Ok(ret) = ret {
18196			return to_result("glBlendEquationi", ret, self.glGetError());
18197		} else {
18198			return ret
18199		}
18200		#[cfg(not(feature = "diagnose"))]
18201		return ret;
18202	}
18203	#[inline(always)]
18204	fn glBlendEquationSeparatei(&self, buf: GLuint, modeRGB: GLenum, modeAlpha: GLenum) -> Result<()> {
18205		let ret = process_catch("glBlendEquationSeparatei", catch_unwind(||(self.blendequationseparatei)(buf, modeRGB, modeAlpha)));
18206		#[cfg(feature = "diagnose")]
18207		if let Ok(ret) = ret {
18208			return to_result("glBlendEquationSeparatei", ret, self.glGetError());
18209		} else {
18210			return ret
18211		}
18212		#[cfg(not(feature = "diagnose"))]
18213		return ret;
18214	}
18215	#[inline(always)]
18216	fn glBlendFunci(&self, buf: GLuint, src: GLenum, dst: GLenum) -> Result<()> {
18217		let ret = process_catch("glBlendFunci", catch_unwind(||(self.blendfunci)(buf, src, dst)));
18218		#[cfg(feature = "diagnose")]
18219		if let Ok(ret) = ret {
18220			return to_result("glBlendFunci", ret, self.glGetError());
18221		} else {
18222			return ret
18223		}
18224		#[cfg(not(feature = "diagnose"))]
18225		return ret;
18226	}
18227	#[inline(always)]
18228	fn glBlendFuncSeparatei(&self, buf: GLuint, srcRGB: GLenum, dstRGB: GLenum, srcAlpha: GLenum, dstAlpha: GLenum) -> Result<()> {
18229		let ret = process_catch("glBlendFuncSeparatei", catch_unwind(||(self.blendfuncseparatei)(buf, srcRGB, dstRGB, srcAlpha, dstAlpha)));
18230		#[cfg(feature = "diagnose")]
18231		if let Ok(ret) = ret {
18232			return to_result("glBlendFuncSeparatei", ret, self.glGetError());
18233		} else {
18234			return ret
18235		}
18236		#[cfg(not(feature = "diagnose"))]
18237		return ret;
18238	}
18239	#[inline(always)]
18240	fn glDrawArraysIndirect(&self, mode: GLenum, indirect: *const c_void) -> Result<()> {
18241		let ret = process_catch("glDrawArraysIndirect", catch_unwind(||(self.drawarraysindirect)(mode, indirect)));
18242		#[cfg(feature = "diagnose")]
18243		if let Ok(ret) = ret {
18244			return to_result("glDrawArraysIndirect", ret, self.glGetError());
18245		} else {
18246			return ret
18247		}
18248		#[cfg(not(feature = "diagnose"))]
18249		return ret;
18250	}
18251	#[inline(always)]
18252	fn glDrawElementsIndirect(&self, mode: GLenum, type_: GLenum, indirect: *const c_void) -> Result<()> {
18253		let ret = process_catch("glDrawElementsIndirect", catch_unwind(||(self.drawelementsindirect)(mode, type_, indirect)));
18254		#[cfg(feature = "diagnose")]
18255		if let Ok(ret) = ret {
18256			return to_result("glDrawElementsIndirect", ret, self.glGetError());
18257		} else {
18258			return ret
18259		}
18260		#[cfg(not(feature = "diagnose"))]
18261		return ret;
18262	}
18263	#[inline(always)]
18264	fn glUniform1d(&self, location: GLint, x: GLdouble) -> Result<()> {
18265		let ret = process_catch("glUniform1d", catch_unwind(||(self.uniform1d)(location, x)));
18266		#[cfg(feature = "diagnose")]
18267		if let Ok(ret) = ret {
18268			return to_result("glUniform1d", ret, self.glGetError());
18269		} else {
18270			return ret
18271		}
18272		#[cfg(not(feature = "diagnose"))]
18273		return ret;
18274	}
18275	#[inline(always)]
18276	fn glUniform2d(&self, location: GLint, x: GLdouble, y: GLdouble) -> Result<()> {
18277		let ret = process_catch("glUniform2d", catch_unwind(||(self.uniform2d)(location, x, y)));
18278		#[cfg(feature = "diagnose")]
18279		if let Ok(ret) = ret {
18280			return to_result("glUniform2d", ret, self.glGetError());
18281		} else {
18282			return ret
18283		}
18284		#[cfg(not(feature = "diagnose"))]
18285		return ret;
18286	}
18287	#[inline(always)]
18288	fn glUniform3d(&self, location: GLint, x: GLdouble, y: GLdouble, z: GLdouble) -> Result<()> {
18289		let ret = process_catch("glUniform3d", catch_unwind(||(self.uniform3d)(location, x, y, z)));
18290		#[cfg(feature = "diagnose")]
18291		if let Ok(ret) = ret {
18292			return to_result("glUniform3d", ret, self.glGetError());
18293		} else {
18294			return ret
18295		}
18296		#[cfg(not(feature = "diagnose"))]
18297		return ret;
18298	}
18299	#[inline(always)]
18300	fn glUniform4d(&self, location: GLint, x: GLdouble, y: GLdouble, z: GLdouble, w: GLdouble) -> Result<()> {
18301		let ret = process_catch("glUniform4d", catch_unwind(||(self.uniform4d)(location, x, y, z, w)));
18302		#[cfg(feature = "diagnose")]
18303		if let Ok(ret) = ret {
18304			return to_result("glUniform4d", ret, self.glGetError());
18305		} else {
18306			return ret
18307		}
18308		#[cfg(not(feature = "diagnose"))]
18309		return ret;
18310	}
18311	#[inline(always)]
18312	fn glUniform1dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()> {
18313		let ret = process_catch("glUniform1dv", catch_unwind(||(self.uniform1dv)(location, count, value)));
18314		#[cfg(feature = "diagnose")]
18315		if let Ok(ret) = ret {
18316			return to_result("glUniform1dv", ret, self.glGetError());
18317		} else {
18318			return ret
18319		}
18320		#[cfg(not(feature = "diagnose"))]
18321		return ret;
18322	}
18323	#[inline(always)]
18324	fn glUniform2dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()> {
18325		let ret = process_catch("glUniform2dv", catch_unwind(||(self.uniform2dv)(location, count, value)));
18326		#[cfg(feature = "diagnose")]
18327		if let Ok(ret) = ret {
18328			return to_result("glUniform2dv", ret, self.glGetError());
18329		} else {
18330			return ret
18331		}
18332		#[cfg(not(feature = "diagnose"))]
18333		return ret;
18334	}
18335	#[inline(always)]
18336	fn glUniform3dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()> {
18337		let ret = process_catch("glUniform3dv", catch_unwind(||(self.uniform3dv)(location, count, value)));
18338		#[cfg(feature = "diagnose")]
18339		if let Ok(ret) = ret {
18340			return to_result("glUniform3dv", ret, self.glGetError());
18341		} else {
18342			return ret
18343		}
18344		#[cfg(not(feature = "diagnose"))]
18345		return ret;
18346	}
18347	#[inline(always)]
18348	fn glUniform4dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()> {
18349		let ret = process_catch("glUniform4dv", catch_unwind(||(self.uniform4dv)(location, count, value)));
18350		#[cfg(feature = "diagnose")]
18351		if let Ok(ret) = ret {
18352			return to_result("glUniform4dv", ret, self.glGetError());
18353		} else {
18354			return ret
18355		}
18356		#[cfg(not(feature = "diagnose"))]
18357		return ret;
18358	}
18359	#[inline(always)]
18360	fn glUniformMatrix2dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
18361		let ret = process_catch("glUniformMatrix2dv", catch_unwind(||(self.uniformmatrix2dv)(location, count, transpose, value)));
18362		#[cfg(feature = "diagnose")]
18363		if let Ok(ret) = ret {
18364			return to_result("glUniformMatrix2dv", ret, self.glGetError());
18365		} else {
18366			return ret
18367		}
18368		#[cfg(not(feature = "diagnose"))]
18369		return ret;
18370	}
18371	#[inline(always)]
18372	fn glUniformMatrix3dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
18373		let ret = process_catch("glUniformMatrix3dv", catch_unwind(||(self.uniformmatrix3dv)(location, count, transpose, value)));
18374		#[cfg(feature = "diagnose")]
18375		if let Ok(ret) = ret {
18376			return to_result("glUniformMatrix3dv", ret, self.glGetError());
18377		} else {
18378			return ret
18379		}
18380		#[cfg(not(feature = "diagnose"))]
18381		return ret;
18382	}
18383	#[inline(always)]
18384	fn glUniformMatrix4dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
18385		let ret = process_catch("glUniformMatrix4dv", catch_unwind(||(self.uniformmatrix4dv)(location, count, transpose, value)));
18386		#[cfg(feature = "diagnose")]
18387		if let Ok(ret) = ret {
18388			return to_result("glUniformMatrix4dv", ret, self.glGetError());
18389		} else {
18390			return ret
18391		}
18392		#[cfg(not(feature = "diagnose"))]
18393		return ret;
18394	}
18395	#[inline(always)]
18396	fn glUniformMatrix2x3dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
18397		let ret = process_catch("glUniformMatrix2x3dv", catch_unwind(||(self.uniformmatrix2x3dv)(location, count, transpose, value)));
18398		#[cfg(feature = "diagnose")]
18399		if let Ok(ret) = ret {
18400			return to_result("glUniformMatrix2x3dv", ret, self.glGetError());
18401		} else {
18402			return ret
18403		}
18404		#[cfg(not(feature = "diagnose"))]
18405		return ret;
18406	}
18407	#[inline(always)]
18408	fn glUniformMatrix2x4dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
18409		let ret = process_catch("glUniformMatrix2x4dv", catch_unwind(||(self.uniformmatrix2x4dv)(location, count, transpose, value)));
18410		#[cfg(feature = "diagnose")]
18411		if let Ok(ret) = ret {
18412			return to_result("glUniformMatrix2x4dv", ret, self.glGetError());
18413		} else {
18414			return ret
18415		}
18416		#[cfg(not(feature = "diagnose"))]
18417		return ret;
18418	}
18419	#[inline(always)]
18420	fn glUniformMatrix3x2dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
18421		let ret = process_catch("glUniformMatrix3x2dv", catch_unwind(||(self.uniformmatrix3x2dv)(location, count, transpose, value)));
18422		#[cfg(feature = "diagnose")]
18423		if let Ok(ret) = ret {
18424			return to_result("glUniformMatrix3x2dv", ret, self.glGetError());
18425		} else {
18426			return ret
18427		}
18428		#[cfg(not(feature = "diagnose"))]
18429		return ret;
18430	}
18431	#[inline(always)]
18432	fn glUniformMatrix3x4dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
18433		let ret = process_catch("glUniformMatrix3x4dv", catch_unwind(||(self.uniformmatrix3x4dv)(location, count, transpose, value)));
18434		#[cfg(feature = "diagnose")]
18435		if let Ok(ret) = ret {
18436			return to_result("glUniformMatrix3x4dv", ret, self.glGetError());
18437		} else {
18438			return ret
18439		}
18440		#[cfg(not(feature = "diagnose"))]
18441		return ret;
18442	}
18443	#[inline(always)]
18444	fn glUniformMatrix4x2dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
18445		let ret = process_catch("glUniformMatrix4x2dv", catch_unwind(||(self.uniformmatrix4x2dv)(location, count, transpose, value)));
18446		#[cfg(feature = "diagnose")]
18447		if let Ok(ret) = ret {
18448			return to_result("glUniformMatrix4x2dv", ret, self.glGetError());
18449		} else {
18450			return ret
18451		}
18452		#[cfg(not(feature = "diagnose"))]
18453		return ret;
18454	}
18455	#[inline(always)]
18456	fn glUniformMatrix4x3dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
18457		let ret = process_catch("glUniformMatrix4x3dv", catch_unwind(||(self.uniformmatrix4x3dv)(location, count, transpose, value)));
18458		#[cfg(feature = "diagnose")]
18459		if let Ok(ret) = ret {
18460			return to_result("glUniformMatrix4x3dv", ret, self.glGetError());
18461		} else {
18462			return ret
18463		}
18464		#[cfg(not(feature = "diagnose"))]
18465		return ret;
18466	}
18467	#[inline(always)]
18468	fn glGetUniformdv(&self, program: GLuint, location: GLint, params: *mut GLdouble) -> Result<()> {
18469		let ret = process_catch("glGetUniformdv", catch_unwind(||(self.getuniformdv)(program, location, params)));
18470		#[cfg(feature = "diagnose")]
18471		if let Ok(ret) = ret {
18472			return to_result("glGetUniformdv", ret, self.glGetError());
18473		} else {
18474			return ret
18475		}
18476		#[cfg(not(feature = "diagnose"))]
18477		return ret;
18478	}
18479	#[inline(always)]
18480	fn glGetSubroutineUniformLocation(&self, program: GLuint, shadertype: GLenum, name: *const GLchar) -> Result<GLint> {
18481		let ret = process_catch("glGetSubroutineUniformLocation", catch_unwind(||(self.getsubroutineuniformlocation)(program, shadertype, name)));
18482		#[cfg(feature = "diagnose")]
18483		if let Ok(ret) = ret {
18484			return to_result("glGetSubroutineUniformLocation", ret, self.glGetError());
18485		} else {
18486			return ret
18487		}
18488		#[cfg(not(feature = "diagnose"))]
18489		return ret;
18490	}
18491	#[inline(always)]
18492	fn glGetSubroutineIndex(&self, program: GLuint, shadertype: GLenum, name: *const GLchar) -> Result<GLuint> {
18493		let ret = process_catch("glGetSubroutineIndex", catch_unwind(||(self.getsubroutineindex)(program, shadertype, name)));
18494		#[cfg(feature = "diagnose")]
18495		if let Ok(ret) = ret {
18496			return to_result("glGetSubroutineIndex", ret, self.glGetError());
18497		} else {
18498			return ret
18499		}
18500		#[cfg(not(feature = "diagnose"))]
18501		return ret;
18502	}
18503	#[inline(always)]
18504	fn glGetActiveSubroutineUniformiv(&self, program: GLuint, shadertype: GLenum, index: GLuint, pname: GLenum, values: *mut GLint) -> Result<()> {
18505		let ret = process_catch("glGetActiveSubroutineUniformiv", catch_unwind(||(self.getactivesubroutineuniformiv)(program, shadertype, index, pname, values)));
18506		#[cfg(feature = "diagnose")]
18507		if let Ok(ret) = ret {
18508			return to_result("glGetActiveSubroutineUniformiv", ret, self.glGetError());
18509		} else {
18510			return ret
18511		}
18512		#[cfg(not(feature = "diagnose"))]
18513		return ret;
18514	}
18515	#[inline(always)]
18516	fn glGetActiveSubroutineUniformName(&self, program: GLuint, shadertype: GLenum, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, name: *mut GLchar) -> Result<()> {
18517		let ret = process_catch("glGetActiveSubroutineUniformName", catch_unwind(||(self.getactivesubroutineuniformname)(program, shadertype, index, bufSize, length, name)));
18518		#[cfg(feature = "diagnose")]
18519		if let Ok(ret) = ret {
18520			return to_result("glGetActiveSubroutineUniformName", ret, self.glGetError());
18521		} else {
18522			return ret
18523		}
18524		#[cfg(not(feature = "diagnose"))]
18525		return ret;
18526	}
18527	#[inline(always)]
18528	fn glGetActiveSubroutineName(&self, program: GLuint, shadertype: GLenum, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, name: *mut GLchar) -> Result<()> {
18529		let ret = process_catch("glGetActiveSubroutineName", catch_unwind(||(self.getactivesubroutinename)(program, shadertype, index, bufSize, length, name)));
18530		#[cfg(feature = "diagnose")]
18531		if let Ok(ret) = ret {
18532			return to_result("glGetActiveSubroutineName", ret, self.glGetError());
18533		} else {
18534			return ret
18535		}
18536		#[cfg(not(feature = "diagnose"))]
18537		return ret;
18538	}
18539	#[inline(always)]
18540	fn glUniformSubroutinesuiv(&self, shadertype: GLenum, count: GLsizei, indices: *const GLuint) -> Result<()> {
18541		let ret = process_catch("glUniformSubroutinesuiv", catch_unwind(||(self.uniformsubroutinesuiv)(shadertype, count, indices)));
18542		#[cfg(feature = "diagnose")]
18543		if let Ok(ret) = ret {
18544			return to_result("glUniformSubroutinesuiv", ret, self.glGetError());
18545		} else {
18546			return ret
18547		}
18548		#[cfg(not(feature = "diagnose"))]
18549		return ret;
18550	}
18551	#[inline(always)]
18552	fn glGetUniformSubroutineuiv(&self, shadertype: GLenum, location: GLint, params: *mut GLuint) -> Result<()> {
18553		let ret = process_catch("glGetUniformSubroutineuiv", catch_unwind(||(self.getuniformsubroutineuiv)(shadertype, location, params)));
18554		#[cfg(feature = "diagnose")]
18555		if let Ok(ret) = ret {
18556			return to_result("glGetUniformSubroutineuiv", ret, self.glGetError());
18557		} else {
18558			return ret
18559		}
18560		#[cfg(not(feature = "diagnose"))]
18561		return ret;
18562	}
18563	#[inline(always)]
18564	fn glGetProgramStageiv(&self, program: GLuint, shadertype: GLenum, pname: GLenum, values: *mut GLint) -> Result<()> {
18565		let ret = process_catch("glGetProgramStageiv", catch_unwind(||(self.getprogramstageiv)(program, shadertype, pname, values)));
18566		#[cfg(feature = "diagnose")]
18567		if let Ok(ret) = ret {
18568			return to_result("glGetProgramStageiv", ret, self.glGetError());
18569		} else {
18570			return ret
18571		}
18572		#[cfg(not(feature = "diagnose"))]
18573		return ret;
18574	}
18575	#[inline(always)]
18576	fn glPatchParameteri(&self, pname: GLenum, value: GLint) -> Result<()> {
18577		let ret = process_catch("glPatchParameteri", catch_unwind(||(self.patchparameteri)(pname, value)));
18578		#[cfg(feature = "diagnose")]
18579		if let Ok(ret) = ret {
18580			return to_result("glPatchParameteri", ret, self.glGetError());
18581		} else {
18582			return ret
18583		}
18584		#[cfg(not(feature = "diagnose"))]
18585		return ret;
18586	}
18587	#[inline(always)]
18588	fn glPatchParameterfv(&self, pname: GLenum, values: *const GLfloat) -> Result<()> {
18589		let ret = process_catch("glPatchParameterfv", catch_unwind(||(self.patchparameterfv)(pname, values)));
18590		#[cfg(feature = "diagnose")]
18591		if let Ok(ret) = ret {
18592			return to_result("glPatchParameterfv", ret, self.glGetError());
18593		} else {
18594			return ret
18595		}
18596		#[cfg(not(feature = "diagnose"))]
18597		return ret;
18598	}
18599	#[inline(always)]
18600	fn glBindTransformFeedback(&self, target: GLenum, id: GLuint) -> Result<()> {
18601		let ret = process_catch("glBindTransformFeedback", catch_unwind(||(self.bindtransformfeedback)(target, id)));
18602		#[cfg(feature = "diagnose")]
18603		if let Ok(ret) = ret {
18604			return to_result("glBindTransformFeedback", ret, self.glGetError());
18605		} else {
18606			return ret
18607		}
18608		#[cfg(not(feature = "diagnose"))]
18609		return ret;
18610	}
18611	#[inline(always)]
18612	fn glDeleteTransformFeedbacks(&self, n: GLsizei, ids: *const GLuint) -> Result<()> {
18613		let ret = process_catch("glDeleteTransformFeedbacks", catch_unwind(||(self.deletetransformfeedbacks)(n, ids)));
18614		#[cfg(feature = "diagnose")]
18615		if let Ok(ret) = ret {
18616			return to_result("glDeleteTransformFeedbacks", ret, self.glGetError());
18617		} else {
18618			return ret
18619		}
18620		#[cfg(not(feature = "diagnose"))]
18621		return ret;
18622	}
18623	#[inline(always)]
18624	fn glGenTransformFeedbacks(&self, n: GLsizei, ids: *mut GLuint) -> Result<()> {
18625		let ret = process_catch("glGenTransformFeedbacks", catch_unwind(||(self.gentransformfeedbacks)(n, ids)));
18626		#[cfg(feature = "diagnose")]
18627		if let Ok(ret) = ret {
18628			return to_result("glGenTransformFeedbacks", ret, self.glGetError());
18629		} else {
18630			return ret
18631		}
18632		#[cfg(not(feature = "diagnose"))]
18633		return ret;
18634	}
18635	#[inline(always)]
18636	fn glIsTransformFeedback(&self, id: GLuint) -> Result<GLboolean> {
18637		let ret = process_catch("glIsTransformFeedback", catch_unwind(||(self.istransformfeedback)(id)));
18638		#[cfg(feature = "diagnose")]
18639		if let Ok(ret) = ret {
18640			return to_result("glIsTransformFeedback", ret, self.glGetError());
18641		} else {
18642			return ret
18643		}
18644		#[cfg(not(feature = "diagnose"))]
18645		return ret;
18646	}
18647	#[inline(always)]
18648	fn glPauseTransformFeedback(&self) -> Result<()> {
18649		let ret = process_catch("glPauseTransformFeedback", catch_unwind(||(self.pausetransformfeedback)()));
18650		#[cfg(feature = "diagnose")]
18651		if let Ok(ret) = ret {
18652			return to_result("glPauseTransformFeedback", ret, self.glGetError());
18653		} else {
18654			return ret
18655		}
18656		#[cfg(not(feature = "diagnose"))]
18657		return ret;
18658	}
18659	#[inline(always)]
18660	fn glResumeTransformFeedback(&self) -> Result<()> {
18661		let ret = process_catch("glResumeTransformFeedback", catch_unwind(||(self.resumetransformfeedback)()));
18662		#[cfg(feature = "diagnose")]
18663		if let Ok(ret) = ret {
18664			return to_result("glResumeTransformFeedback", ret, self.glGetError());
18665		} else {
18666			return ret
18667		}
18668		#[cfg(not(feature = "diagnose"))]
18669		return ret;
18670	}
18671	#[inline(always)]
18672	fn glDrawTransformFeedback(&self, mode: GLenum, id: GLuint) -> Result<()> {
18673		let ret = process_catch("glDrawTransformFeedback", catch_unwind(||(self.drawtransformfeedback)(mode, id)));
18674		#[cfg(feature = "diagnose")]
18675		if let Ok(ret) = ret {
18676			return to_result("glDrawTransformFeedback", ret, self.glGetError());
18677		} else {
18678			return ret
18679		}
18680		#[cfg(not(feature = "diagnose"))]
18681		return ret;
18682	}
18683	#[inline(always)]
18684	fn glDrawTransformFeedbackStream(&self, mode: GLenum, id: GLuint, stream: GLuint) -> Result<()> {
18685		let ret = process_catch("glDrawTransformFeedbackStream", catch_unwind(||(self.drawtransformfeedbackstream)(mode, id, stream)));
18686		#[cfg(feature = "diagnose")]
18687		if let Ok(ret) = ret {
18688			return to_result("glDrawTransformFeedbackStream", ret, self.glGetError());
18689		} else {
18690			return ret
18691		}
18692		#[cfg(not(feature = "diagnose"))]
18693		return ret;
18694	}
18695	#[inline(always)]
18696	fn glBeginQueryIndexed(&self, target: GLenum, index: GLuint, id: GLuint) -> Result<()> {
18697		let ret = process_catch("glBeginQueryIndexed", catch_unwind(||(self.beginqueryindexed)(target, index, id)));
18698		#[cfg(feature = "diagnose")]
18699		if let Ok(ret) = ret {
18700			return to_result("glBeginQueryIndexed", ret, self.glGetError());
18701		} else {
18702			return ret
18703		}
18704		#[cfg(not(feature = "diagnose"))]
18705		return ret;
18706	}
18707	#[inline(always)]
18708	fn glEndQueryIndexed(&self, target: GLenum, index: GLuint) -> Result<()> {
18709		let ret = process_catch("glEndQueryIndexed", catch_unwind(||(self.endqueryindexed)(target, index)));
18710		#[cfg(feature = "diagnose")]
18711		if let Ok(ret) = ret {
18712			return to_result("glEndQueryIndexed", ret, self.glGetError());
18713		} else {
18714			return ret
18715		}
18716		#[cfg(not(feature = "diagnose"))]
18717		return ret;
18718	}
18719	#[inline(always)]
18720	fn glGetQueryIndexediv(&self, target: GLenum, index: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
18721		let ret = process_catch("glGetQueryIndexediv", catch_unwind(||(self.getqueryindexediv)(target, index, pname, params)));
18722		#[cfg(feature = "diagnose")]
18723		if let Ok(ret) = ret {
18724			return to_result("glGetQueryIndexediv", ret, self.glGetError());
18725		} else {
18726			return ret
18727		}
18728		#[cfg(not(feature = "diagnose"))]
18729		return ret;
18730	}
18731}
18732
18733impl Version40 {
18734	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
18735		let (_spec, major, minor, release) = base.get_version();
18736		if (major, minor, release) < (4, 0, 0) {
18737			return Self::default();
18738		}
18739		Self {
18740			available: true,
18741			geterror: {let proc = get_proc_address("glGetError"); if proc == null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
18742			minsampleshading: {let proc = get_proc_address("glMinSampleShading"); if proc == null() {dummy_pfnglminsampleshadingproc} else {unsafe{transmute(proc)}}},
18743			blendequationi: {let proc = get_proc_address("glBlendEquationi"); if proc == null() {dummy_pfnglblendequationiproc} else {unsafe{transmute(proc)}}},
18744			blendequationseparatei: {let proc = get_proc_address("glBlendEquationSeparatei"); if proc == null() {dummy_pfnglblendequationseparateiproc} else {unsafe{transmute(proc)}}},
18745			blendfunci: {let proc = get_proc_address("glBlendFunci"); if proc == null() {dummy_pfnglblendfunciproc} else {unsafe{transmute(proc)}}},
18746			blendfuncseparatei: {let proc = get_proc_address("glBlendFuncSeparatei"); if proc == null() {dummy_pfnglblendfuncseparateiproc} else {unsafe{transmute(proc)}}},
18747			drawarraysindirect: {let proc = get_proc_address("glDrawArraysIndirect"); if proc == null() {dummy_pfngldrawarraysindirectproc} else {unsafe{transmute(proc)}}},
18748			drawelementsindirect: {let proc = get_proc_address("glDrawElementsIndirect"); if proc == null() {dummy_pfngldrawelementsindirectproc} else {unsafe{transmute(proc)}}},
18749			uniform1d: {let proc = get_proc_address("glUniform1d"); if proc == null() {dummy_pfngluniform1dproc} else {unsafe{transmute(proc)}}},
18750			uniform2d: {let proc = get_proc_address("glUniform2d"); if proc == null() {dummy_pfngluniform2dproc} else {unsafe{transmute(proc)}}},
18751			uniform3d: {let proc = get_proc_address("glUniform3d"); if proc == null() {dummy_pfngluniform3dproc} else {unsafe{transmute(proc)}}},
18752			uniform4d: {let proc = get_proc_address("glUniform4d"); if proc == null() {dummy_pfngluniform4dproc} else {unsafe{transmute(proc)}}},
18753			uniform1dv: {let proc = get_proc_address("glUniform1dv"); if proc == null() {dummy_pfngluniform1dvproc} else {unsafe{transmute(proc)}}},
18754			uniform2dv: {let proc = get_proc_address("glUniform2dv"); if proc == null() {dummy_pfngluniform2dvproc} else {unsafe{transmute(proc)}}},
18755			uniform3dv: {let proc = get_proc_address("glUniform3dv"); if proc == null() {dummy_pfngluniform3dvproc} else {unsafe{transmute(proc)}}},
18756			uniform4dv: {let proc = get_proc_address("glUniform4dv"); if proc == null() {dummy_pfngluniform4dvproc} else {unsafe{transmute(proc)}}},
18757			uniformmatrix2dv: {let proc = get_proc_address("glUniformMatrix2dv"); if proc == null() {dummy_pfngluniformmatrix2dvproc} else {unsafe{transmute(proc)}}},
18758			uniformmatrix3dv: {let proc = get_proc_address("glUniformMatrix3dv"); if proc == null() {dummy_pfngluniformmatrix3dvproc} else {unsafe{transmute(proc)}}},
18759			uniformmatrix4dv: {let proc = get_proc_address("glUniformMatrix4dv"); if proc == null() {dummy_pfngluniformmatrix4dvproc} else {unsafe{transmute(proc)}}},
18760			uniformmatrix2x3dv: {let proc = get_proc_address("glUniformMatrix2x3dv"); if proc == null() {dummy_pfngluniformmatrix2x3dvproc} else {unsafe{transmute(proc)}}},
18761			uniformmatrix2x4dv: {let proc = get_proc_address("glUniformMatrix2x4dv"); if proc == null() {dummy_pfngluniformmatrix2x4dvproc} else {unsafe{transmute(proc)}}},
18762			uniformmatrix3x2dv: {let proc = get_proc_address("glUniformMatrix3x2dv"); if proc == null() {dummy_pfngluniformmatrix3x2dvproc} else {unsafe{transmute(proc)}}},
18763			uniformmatrix3x4dv: {let proc = get_proc_address("glUniformMatrix3x4dv"); if proc == null() {dummy_pfngluniformmatrix3x4dvproc} else {unsafe{transmute(proc)}}},
18764			uniformmatrix4x2dv: {let proc = get_proc_address("glUniformMatrix4x2dv"); if proc == null() {dummy_pfngluniformmatrix4x2dvproc} else {unsafe{transmute(proc)}}},
18765			uniformmatrix4x3dv: {let proc = get_proc_address("glUniformMatrix4x3dv"); if proc == null() {dummy_pfngluniformmatrix4x3dvproc} else {unsafe{transmute(proc)}}},
18766			getuniformdv: {let proc = get_proc_address("glGetUniformdv"); if proc == null() {dummy_pfnglgetuniformdvproc} else {unsafe{transmute(proc)}}},
18767			getsubroutineuniformlocation: {let proc = get_proc_address("glGetSubroutineUniformLocation"); if proc == null() {dummy_pfnglgetsubroutineuniformlocationproc} else {unsafe{transmute(proc)}}},
18768			getsubroutineindex: {let proc = get_proc_address("glGetSubroutineIndex"); if proc == null() {dummy_pfnglgetsubroutineindexproc} else {unsafe{transmute(proc)}}},
18769			getactivesubroutineuniformiv: {let proc = get_proc_address("glGetActiveSubroutineUniformiv"); if proc == null() {dummy_pfnglgetactivesubroutineuniformivproc} else {unsafe{transmute(proc)}}},
18770			getactivesubroutineuniformname: {let proc = get_proc_address("glGetActiveSubroutineUniformName"); if proc == null() {dummy_pfnglgetactivesubroutineuniformnameproc} else {unsafe{transmute(proc)}}},
18771			getactivesubroutinename: {let proc = get_proc_address("glGetActiveSubroutineName"); if proc == null() {dummy_pfnglgetactivesubroutinenameproc} else {unsafe{transmute(proc)}}},
18772			uniformsubroutinesuiv: {let proc = get_proc_address("glUniformSubroutinesuiv"); if proc == null() {dummy_pfngluniformsubroutinesuivproc} else {unsafe{transmute(proc)}}},
18773			getuniformsubroutineuiv: {let proc = get_proc_address("glGetUniformSubroutineuiv"); if proc == null() {dummy_pfnglgetuniformsubroutineuivproc} else {unsafe{transmute(proc)}}},
18774			getprogramstageiv: {let proc = get_proc_address("glGetProgramStageiv"); if proc == null() {dummy_pfnglgetprogramstageivproc} else {unsafe{transmute(proc)}}},
18775			patchparameteri: {let proc = get_proc_address("glPatchParameteri"); if proc == null() {dummy_pfnglpatchparameteriproc} else {unsafe{transmute(proc)}}},
18776			patchparameterfv: {let proc = get_proc_address("glPatchParameterfv"); if proc == null() {dummy_pfnglpatchparameterfvproc} else {unsafe{transmute(proc)}}},
18777			bindtransformfeedback: {let proc = get_proc_address("glBindTransformFeedback"); if proc == null() {dummy_pfnglbindtransformfeedbackproc} else {unsafe{transmute(proc)}}},
18778			deletetransformfeedbacks: {let proc = get_proc_address("glDeleteTransformFeedbacks"); if proc == null() {dummy_pfngldeletetransformfeedbacksproc} else {unsafe{transmute(proc)}}},
18779			gentransformfeedbacks: {let proc = get_proc_address("glGenTransformFeedbacks"); if proc == null() {dummy_pfnglgentransformfeedbacksproc} else {unsafe{transmute(proc)}}},
18780			istransformfeedback: {let proc = get_proc_address("glIsTransformFeedback"); if proc == null() {dummy_pfnglistransformfeedbackproc} else {unsafe{transmute(proc)}}},
18781			pausetransformfeedback: {let proc = get_proc_address("glPauseTransformFeedback"); if proc == null() {dummy_pfnglpausetransformfeedbackproc} else {unsafe{transmute(proc)}}},
18782			resumetransformfeedback: {let proc = get_proc_address("glResumeTransformFeedback"); if proc == null() {dummy_pfnglresumetransformfeedbackproc} else {unsafe{transmute(proc)}}},
18783			drawtransformfeedback: {let proc = get_proc_address("glDrawTransformFeedback"); if proc == null() {dummy_pfngldrawtransformfeedbackproc} else {unsafe{transmute(proc)}}},
18784			drawtransformfeedbackstream: {let proc = get_proc_address("glDrawTransformFeedbackStream"); if proc == null() {dummy_pfngldrawtransformfeedbackstreamproc} else {unsafe{transmute(proc)}}},
18785			beginqueryindexed: {let proc = get_proc_address("glBeginQueryIndexed"); if proc == null() {dummy_pfnglbeginqueryindexedproc} else {unsafe{transmute(proc)}}},
18786			endqueryindexed: {let proc = get_proc_address("glEndQueryIndexed"); if proc == null() {dummy_pfnglendqueryindexedproc} else {unsafe{transmute(proc)}}},
18787			getqueryindexediv: {let proc = get_proc_address("glGetQueryIndexediv"); if proc == null() {dummy_pfnglgetqueryindexedivproc} else {unsafe{transmute(proc)}}},
18788		}
18789	}
18790	#[inline(always)]
18791	pub fn get_available(&self) -> bool {
18792		self.available
18793	}
18794}
18795
18796impl Default for Version40 {
18797	fn default() -> Self {
18798		Self {
18799			available: false,
18800			geterror: dummy_pfnglgeterrorproc,
18801			minsampleshading: dummy_pfnglminsampleshadingproc,
18802			blendequationi: dummy_pfnglblendequationiproc,
18803			blendequationseparatei: dummy_pfnglblendequationseparateiproc,
18804			blendfunci: dummy_pfnglblendfunciproc,
18805			blendfuncseparatei: dummy_pfnglblendfuncseparateiproc,
18806			drawarraysindirect: dummy_pfngldrawarraysindirectproc,
18807			drawelementsindirect: dummy_pfngldrawelementsindirectproc,
18808			uniform1d: dummy_pfngluniform1dproc,
18809			uniform2d: dummy_pfngluniform2dproc,
18810			uniform3d: dummy_pfngluniform3dproc,
18811			uniform4d: dummy_pfngluniform4dproc,
18812			uniform1dv: dummy_pfngluniform1dvproc,
18813			uniform2dv: dummy_pfngluniform2dvproc,
18814			uniform3dv: dummy_pfngluniform3dvproc,
18815			uniform4dv: dummy_pfngluniform4dvproc,
18816			uniformmatrix2dv: dummy_pfngluniformmatrix2dvproc,
18817			uniformmatrix3dv: dummy_pfngluniformmatrix3dvproc,
18818			uniformmatrix4dv: dummy_pfngluniformmatrix4dvproc,
18819			uniformmatrix2x3dv: dummy_pfngluniformmatrix2x3dvproc,
18820			uniformmatrix2x4dv: dummy_pfngluniformmatrix2x4dvproc,
18821			uniformmatrix3x2dv: dummy_pfngluniformmatrix3x2dvproc,
18822			uniformmatrix3x4dv: dummy_pfngluniformmatrix3x4dvproc,
18823			uniformmatrix4x2dv: dummy_pfngluniformmatrix4x2dvproc,
18824			uniformmatrix4x3dv: dummy_pfngluniformmatrix4x3dvproc,
18825			getuniformdv: dummy_pfnglgetuniformdvproc,
18826			getsubroutineuniformlocation: dummy_pfnglgetsubroutineuniformlocationproc,
18827			getsubroutineindex: dummy_pfnglgetsubroutineindexproc,
18828			getactivesubroutineuniformiv: dummy_pfnglgetactivesubroutineuniformivproc,
18829			getactivesubroutineuniformname: dummy_pfnglgetactivesubroutineuniformnameproc,
18830			getactivesubroutinename: dummy_pfnglgetactivesubroutinenameproc,
18831			uniformsubroutinesuiv: dummy_pfngluniformsubroutinesuivproc,
18832			getuniformsubroutineuiv: dummy_pfnglgetuniformsubroutineuivproc,
18833			getprogramstageiv: dummy_pfnglgetprogramstageivproc,
18834			patchparameteri: dummy_pfnglpatchparameteriproc,
18835			patchparameterfv: dummy_pfnglpatchparameterfvproc,
18836			bindtransformfeedback: dummy_pfnglbindtransformfeedbackproc,
18837			deletetransformfeedbacks: dummy_pfngldeletetransformfeedbacksproc,
18838			gentransformfeedbacks: dummy_pfnglgentransformfeedbacksproc,
18839			istransformfeedback: dummy_pfnglistransformfeedbackproc,
18840			pausetransformfeedback: dummy_pfnglpausetransformfeedbackproc,
18841			resumetransformfeedback: dummy_pfnglresumetransformfeedbackproc,
18842			drawtransformfeedback: dummy_pfngldrawtransformfeedbackproc,
18843			drawtransformfeedbackstream: dummy_pfngldrawtransformfeedbackstreamproc,
18844			beginqueryindexed: dummy_pfnglbeginqueryindexedproc,
18845			endqueryindexed: dummy_pfnglendqueryindexedproc,
18846			getqueryindexediv: dummy_pfnglgetqueryindexedivproc,
18847		}
18848	}
18849}
18850impl Debug for Version40 {
18851	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
18852		if self.available {
18853			f.debug_struct("Version40")
18854			.field("available", &self.available)
18855			.field("minsampleshading", unsafe{if transmute::<_, *const c_void>(self.minsampleshading) == (dummy_pfnglminsampleshadingproc as *const c_void) {&null::<PFNGLMINSAMPLESHADINGPROC>()} else {&self.minsampleshading}})
18856			.field("blendequationi", unsafe{if transmute::<_, *const c_void>(self.blendequationi) == (dummy_pfnglblendequationiproc as *const c_void) {&null::<PFNGLBLENDEQUATIONIPROC>()} else {&self.blendequationi}})
18857			.field("blendequationseparatei", unsafe{if transmute::<_, *const c_void>(self.blendequationseparatei) == (dummy_pfnglblendequationseparateiproc as *const c_void) {&null::<PFNGLBLENDEQUATIONSEPARATEIPROC>()} else {&self.blendequationseparatei}})
18858			.field("blendfunci", unsafe{if transmute::<_, *const c_void>(self.blendfunci) == (dummy_pfnglblendfunciproc as *const c_void) {&null::<PFNGLBLENDFUNCIPROC>()} else {&self.blendfunci}})
18859			.field("blendfuncseparatei", unsafe{if transmute::<_, *const c_void>(self.blendfuncseparatei) == (dummy_pfnglblendfuncseparateiproc as *const c_void) {&null::<PFNGLBLENDFUNCSEPARATEIPROC>()} else {&self.blendfuncseparatei}})
18860			.field("drawarraysindirect", unsafe{if transmute::<_, *const c_void>(self.drawarraysindirect) == (dummy_pfngldrawarraysindirectproc as *const c_void) {&null::<PFNGLDRAWARRAYSINDIRECTPROC>()} else {&self.drawarraysindirect}})
18861			.field("drawelementsindirect", unsafe{if transmute::<_, *const c_void>(self.drawelementsindirect) == (dummy_pfngldrawelementsindirectproc as *const c_void) {&null::<PFNGLDRAWELEMENTSINDIRECTPROC>()} else {&self.drawelementsindirect}})
18862			.field("uniform1d", unsafe{if transmute::<_, *const c_void>(self.uniform1d) == (dummy_pfngluniform1dproc as *const c_void) {&null::<PFNGLUNIFORM1DPROC>()} else {&self.uniform1d}})
18863			.field("uniform2d", unsafe{if transmute::<_, *const c_void>(self.uniform2d) == (dummy_pfngluniform2dproc as *const c_void) {&null::<PFNGLUNIFORM2DPROC>()} else {&self.uniform2d}})
18864			.field("uniform3d", unsafe{if transmute::<_, *const c_void>(self.uniform3d) == (dummy_pfngluniform3dproc as *const c_void) {&null::<PFNGLUNIFORM3DPROC>()} else {&self.uniform3d}})
18865			.field("uniform4d", unsafe{if transmute::<_, *const c_void>(self.uniform4d) == (dummy_pfngluniform4dproc as *const c_void) {&null::<PFNGLUNIFORM4DPROC>()} else {&self.uniform4d}})
18866			.field("uniform1dv", unsafe{if transmute::<_, *const c_void>(self.uniform1dv) == (dummy_pfngluniform1dvproc as *const c_void) {&null::<PFNGLUNIFORM1DVPROC>()} else {&self.uniform1dv}})
18867			.field("uniform2dv", unsafe{if transmute::<_, *const c_void>(self.uniform2dv) == (dummy_pfngluniform2dvproc as *const c_void) {&null::<PFNGLUNIFORM2DVPROC>()} else {&self.uniform2dv}})
18868			.field("uniform3dv", unsafe{if transmute::<_, *const c_void>(self.uniform3dv) == (dummy_pfngluniform3dvproc as *const c_void) {&null::<PFNGLUNIFORM3DVPROC>()} else {&self.uniform3dv}})
18869			.field("uniform4dv", unsafe{if transmute::<_, *const c_void>(self.uniform4dv) == (dummy_pfngluniform4dvproc as *const c_void) {&null::<PFNGLUNIFORM4DVPROC>()} else {&self.uniform4dv}})
18870			.field("uniformmatrix2dv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix2dv) == (dummy_pfngluniformmatrix2dvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX2DVPROC>()} else {&self.uniformmatrix2dv}})
18871			.field("uniformmatrix3dv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix3dv) == (dummy_pfngluniformmatrix3dvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX3DVPROC>()} else {&self.uniformmatrix3dv}})
18872			.field("uniformmatrix4dv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix4dv) == (dummy_pfngluniformmatrix4dvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX4DVPROC>()} else {&self.uniformmatrix4dv}})
18873			.field("uniformmatrix2x3dv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix2x3dv) == (dummy_pfngluniformmatrix2x3dvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX2X3DVPROC>()} else {&self.uniformmatrix2x3dv}})
18874			.field("uniformmatrix2x4dv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix2x4dv) == (dummy_pfngluniformmatrix2x4dvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX2X4DVPROC>()} else {&self.uniformmatrix2x4dv}})
18875			.field("uniformmatrix3x2dv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix3x2dv) == (dummy_pfngluniformmatrix3x2dvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX3X2DVPROC>()} else {&self.uniformmatrix3x2dv}})
18876			.field("uniformmatrix3x4dv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix3x4dv) == (dummy_pfngluniformmatrix3x4dvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX3X4DVPROC>()} else {&self.uniformmatrix3x4dv}})
18877			.field("uniformmatrix4x2dv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix4x2dv) == (dummy_pfngluniformmatrix4x2dvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX4X2DVPROC>()} else {&self.uniformmatrix4x2dv}})
18878			.field("uniformmatrix4x3dv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix4x3dv) == (dummy_pfngluniformmatrix4x3dvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX4X3DVPROC>()} else {&self.uniformmatrix4x3dv}})
18879			.field("getuniformdv", unsafe{if transmute::<_, *const c_void>(self.getuniformdv) == (dummy_pfnglgetuniformdvproc as *const c_void) {&null::<PFNGLGETUNIFORMDVPROC>()} else {&self.getuniformdv}})
18880			.field("getsubroutineuniformlocation", unsafe{if transmute::<_, *const c_void>(self.getsubroutineuniformlocation) == (dummy_pfnglgetsubroutineuniformlocationproc as *const c_void) {&null::<PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC>()} else {&self.getsubroutineuniformlocation}})
18881			.field("getsubroutineindex", unsafe{if transmute::<_, *const c_void>(self.getsubroutineindex) == (dummy_pfnglgetsubroutineindexproc as *const c_void) {&null::<PFNGLGETSUBROUTINEINDEXPROC>()} else {&self.getsubroutineindex}})
18882			.field("getactivesubroutineuniformiv", unsafe{if transmute::<_, *const c_void>(self.getactivesubroutineuniformiv) == (dummy_pfnglgetactivesubroutineuniformivproc as *const c_void) {&null::<PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC>()} else {&self.getactivesubroutineuniformiv}})
18883			.field("getactivesubroutineuniformname", unsafe{if transmute::<_, *const c_void>(self.getactivesubroutineuniformname) == (dummy_pfnglgetactivesubroutineuniformnameproc as *const c_void) {&null::<PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC>()} else {&self.getactivesubroutineuniformname}})
18884			.field("getactivesubroutinename", unsafe{if transmute::<_, *const c_void>(self.getactivesubroutinename) == (dummy_pfnglgetactivesubroutinenameproc as *const c_void) {&null::<PFNGLGETACTIVESUBROUTINENAMEPROC>()} else {&self.getactivesubroutinename}})
18885			.field("uniformsubroutinesuiv", unsafe{if transmute::<_, *const c_void>(self.uniformsubroutinesuiv) == (dummy_pfngluniformsubroutinesuivproc as *const c_void) {&null::<PFNGLUNIFORMSUBROUTINESUIVPROC>()} else {&self.uniformsubroutinesuiv}})
18886			.field("getuniformsubroutineuiv", unsafe{if transmute::<_, *const c_void>(self.getuniformsubroutineuiv) == (dummy_pfnglgetuniformsubroutineuivproc as *const c_void) {&null::<PFNGLGETUNIFORMSUBROUTINEUIVPROC>()} else {&self.getuniformsubroutineuiv}})
18887			.field("getprogramstageiv", unsafe{if transmute::<_, *const c_void>(self.getprogramstageiv) == (dummy_pfnglgetprogramstageivproc as *const c_void) {&null::<PFNGLGETPROGRAMSTAGEIVPROC>()} else {&self.getprogramstageiv}})
18888			.field("patchparameteri", unsafe{if transmute::<_, *const c_void>(self.patchparameteri) == (dummy_pfnglpatchparameteriproc as *const c_void) {&null::<PFNGLPATCHPARAMETERIPROC>()} else {&self.patchparameteri}})
18889			.field("patchparameterfv", unsafe{if transmute::<_, *const c_void>(self.patchparameterfv) == (dummy_pfnglpatchparameterfvproc as *const c_void) {&null::<PFNGLPATCHPARAMETERFVPROC>()} else {&self.patchparameterfv}})
18890			.field("bindtransformfeedback", unsafe{if transmute::<_, *const c_void>(self.bindtransformfeedback) == (dummy_pfnglbindtransformfeedbackproc as *const c_void) {&null::<PFNGLBINDTRANSFORMFEEDBACKPROC>()} else {&self.bindtransformfeedback}})
18891			.field("deletetransformfeedbacks", unsafe{if transmute::<_, *const c_void>(self.deletetransformfeedbacks) == (dummy_pfngldeletetransformfeedbacksproc as *const c_void) {&null::<PFNGLDELETETRANSFORMFEEDBACKSPROC>()} else {&self.deletetransformfeedbacks}})
18892			.field("gentransformfeedbacks", unsafe{if transmute::<_, *const c_void>(self.gentransformfeedbacks) == (dummy_pfnglgentransformfeedbacksproc as *const c_void) {&null::<PFNGLGENTRANSFORMFEEDBACKSPROC>()} else {&self.gentransformfeedbacks}})
18893			.field("istransformfeedback", unsafe{if transmute::<_, *const c_void>(self.istransformfeedback) == (dummy_pfnglistransformfeedbackproc as *const c_void) {&null::<PFNGLISTRANSFORMFEEDBACKPROC>()} else {&self.istransformfeedback}})
18894			.field("pausetransformfeedback", unsafe{if transmute::<_, *const c_void>(self.pausetransformfeedback) == (dummy_pfnglpausetransformfeedbackproc as *const c_void) {&null::<PFNGLPAUSETRANSFORMFEEDBACKPROC>()} else {&self.pausetransformfeedback}})
18895			.field("resumetransformfeedback", unsafe{if transmute::<_, *const c_void>(self.resumetransformfeedback) == (dummy_pfnglresumetransformfeedbackproc as *const c_void) {&null::<PFNGLRESUMETRANSFORMFEEDBACKPROC>()} else {&self.resumetransformfeedback}})
18896			.field("drawtransformfeedback", unsafe{if transmute::<_, *const c_void>(self.drawtransformfeedback) == (dummy_pfngldrawtransformfeedbackproc as *const c_void) {&null::<PFNGLDRAWTRANSFORMFEEDBACKPROC>()} else {&self.drawtransformfeedback}})
18897			.field("drawtransformfeedbackstream", unsafe{if transmute::<_, *const c_void>(self.drawtransformfeedbackstream) == (dummy_pfngldrawtransformfeedbackstreamproc as *const c_void) {&null::<PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC>()} else {&self.drawtransformfeedbackstream}})
18898			.field("beginqueryindexed", unsafe{if transmute::<_, *const c_void>(self.beginqueryindexed) == (dummy_pfnglbeginqueryindexedproc as *const c_void) {&null::<PFNGLBEGINQUERYINDEXEDPROC>()} else {&self.beginqueryindexed}})
18899			.field("endqueryindexed", unsafe{if transmute::<_, *const c_void>(self.endqueryindexed) == (dummy_pfnglendqueryindexedproc as *const c_void) {&null::<PFNGLENDQUERYINDEXEDPROC>()} else {&self.endqueryindexed}})
18900			.field("getqueryindexediv", unsafe{if transmute::<_, *const c_void>(self.getqueryindexediv) == (dummy_pfnglgetqueryindexedivproc as *const c_void) {&null::<PFNGLGETQUERYINDEXEDIVPROC>()} else {&self.getqueryindexediv}})
18901			.finish()
18902		} else {
18903			f.debug_struct("Version40")
18904			.field("available", &self.available)
18905			.finish_non_exhaustive()
18906		}
18907	}
18908}
18909
18910/// The prototype to the OpenGL function `ReleaseShaderCompiler`
18911type PFNGLRELEASESHADERCOMPILERPROC = extern "system" fn();
18912
18913/// The prototype to the OpenGL function `ShaderBinary`
18914type PFNGLSHADERBINARYPROC = extern "system" fn(GLsizei, *const GLuint, GLenum, *const c_void, GLsizei);
18915
18916/// The prototype to the OpenGL function `GetShaderPrecisionFormat`
18917type PFNGLGETSHADERPRECISIONFORMATPROC = extern "system" fn(GLenum, GLenum, *mut GLint, *mut GLint);
18918
18919/// The prototype to the OpenGL function `DepthRangef`
18920type PFNGLDEPTHRANGEFPROC = extern "system" fn(GLfloat, GLfloat);
18921
18922/// The prototype to the OpenGL function `ClearDepthf`
18923type PFNGLCLEARDEPTHFPROC = extern "system" fn(GLfloat);
18924
18925/// The prototype to the OpenGL function `GetProgramBinary`
18926type PFNGLGETPROGRAMBINARYPROC = extern "system" fn(GLuint, GLsizei, *mut GLsizei, *mut GLenum, *mut c_void);
18927
18928/// The prototype to the OpenGL function `ProgramBinary`
18929type PFNGLPROGRAMBINARYPROC = extern "system" fn(GLuint, GLenum, *const c_void, GLsizei);
18930
18931/// The prototype to the OpenGL function `ProgramParameteri`
18932type PFNGLPROGRAMPARAMETERIPROC = extern "system" fn(GLuint, GLenum, GLint);
18933
18934/// The prototype to the OpenGL function `UseProgramStages`
18935type PFNGLUSEPROGRAMSTAGESPROC = extern "system" fn(GLuint, GLbitfield, GLuint);
18936
18937/// The prototype to the OpenGL function `ActiveShaderProgram`
18938type PFNGLACTIVESHADERPROGRAMPROC = extern "system" fn(GLuint, GLuint);
18939
18940/// The prototype to the OpenGL function `CreateShaderProgramv`
18941type PFNGLCREATESHADERPROGRAMVPROC = extern "system" fn(GLenum, GLsizei, *const *const GLchar) -> GLuint;
18942
18943/// The prototype to the OpenGL function `BindProgramPipeline`
18944type PFNGLBINDPROGRAMPIPELINEPROC = extern "system" fn(GLuint);
18945
18946/// The prototype to the OpenGL function `DeleteProgramPipelines`
18947type PFNGLDELETEPROGRAMPIPELINESPROC = extern "system" fn(GLsizei, *const GLuint);
18948
18949/// The prototype to the OpenGL function `GenProgramPipelines`
18950type PFNGLGENPROGRAMPIPELINESPROC = extern "system" fn(GLsizei, *mut GLuint);
18951
18952/// The prototype to the OpenGL function `IsProgramPipeline`
18953type PFNGLISPROGRAMPIPELINEPROC = extern "system" fn(GLuint) -> GLboolean;
18954
18955/// The prototype to the OpenGL function `GetProgramPipelineiv`
18956type PFNGLGETPROGRAMPIPELINEIVPROC = extern "system" fn(GLuint, GLenum, *mut GLint);
18957
18958/// The prototype to the OpenGL function `ProgramUniform1i`
18959type PFNGLPROGRAMUNIFORM1IPROC = extern "system" fn(GLuint, GLint, GLint);
18960
18961/// The prototype to the OpenGL function `ProgramUniform1iv`
18962type PFNGLPROGRAMUNIFORM1IVPROC = extern "system" fn(GLuint, GLint, GLsizei, *const GLint);
18963
18964/// The prototype to the OpenGL function `ProgramUniform1f`
18965type PFNGLPROGRAMUNIFORM1FPROC = extern "system" fn(GLuint, GLint, GLfloat);
18966
18967/// The prototype to the OpenGL function `ProgramUniform1fv`
18968type PFNGLPROGRAMUNIFORM1FVPROC = extern "system" fn(GLuint, GLint, GLsizei, *const GLfloat);
18969
18970/// The prototype to the OpenGL function `ProgramUniform1d`
18971type PFNGLPROGRAMUNIFORM1DPROC = extern "system" fn(GLuint, GLint, GLdouble);
18972
18973/// The prototype to the OpenGL function `ProgramUniform1dv`
18974type PFNGLPROGRAMUNIFORM1DVPROC = extern "system" fn(GLuint, GLint, GLsizei, *const GLdouble);
18975
18976/// The prototype to the OpenGL function `ProgramUniform1ui`
18977type PFNGLPROGRAMUNIFORM1UIPROC = extern "system" fn(GLuint, GLint, GLuint);
18978
18979/// The prototype to the OpenGL function `ProgramUniform1uiv`
18980type PFNGLPROGRAMUNIFORM1UIVPROC = extern "system" fn(GLuint, GLint, GLsizei, *const GLuint);
18981
18982/// The prototype to the OpenGL function `ProgramUniform2i`
18983type PFNGLPROGRAMUNIFORM2IPROC = extern "system" fn(GLuint, GLint, GLint, GLint);
18984
18985/// The prototype to the OpenGL function `ProgramUniform2iv`
18986type PFNGLPROGRAMUNIFORM2IVPROC = extern "system" fn(GLuint, GLint, GLsizei, *const GLint);
18987
18988/// The prototype to the OpenGL function `ProgramUniform2f`
18989type PFNGLPROGRAMUNIFORM2FPROC = extern "system" fn(GLuint, GLint, GLfloat, GLfloat);
18990
18991/// The prototype to the OpenGL function `ProgramUniform2fv`
18992type PFNGLPROGRAMUNIFORM2FVPROC = extern "system" fn(GLuint, GLint, GLsizei, *const GLfloat);
18993
18994/// The prototype to the OpenGL function `ProgramUniform2d`
18995type PFNGLPROGRAMUNIFORM2DPROC = extern "system" fn(GLuint, GLint, GLdouble, GLdouble);
18996
18997/// The prototype to the OpenGL function `ProgramUniform2dv`
18998type PFNGLPROGRAMUNIFORM2DVPROC = extern "system" fn(GLuint, GLint, GLsizei, *const GLdouble);
18999
19000/// The prototype to the OpenGL function `ProgramUniform2ui`
19001type PFNGLPROGRAMUNIFORM2UIPROC = extern "system" fn(GLuint, GLint, GLuint, GLuint);
19002
19003/// The prototype to the OpenGL function `ProgramUniform2uiv`
19004type PFNGLPROGRAMUNIFORM2UIVPROC = extern "system" fn(GLuint, GLint, GLsizei, *const GLuint);
19005
19006/// The prototype to the OpenGL function `ProgramUniform3i`
19007type PFNGLPROGRAMUNIFORM3IPROC = extern "system" fn(GLuint, GLint, GLint, GLint, GLint);
19008
19009/// The prototype to the OpenGL function `ProgramUniform3iv`
19010type PFNGLPROGRAMUNIFORM3IVPROC = extern "system" fn(GLuint, GLint, GLsizei, *const GLint);
19011
19012/// The prototype to the OpenGL function `ProgramUniform3f`
19013type PFNGLPROGRAMUNIFORM3FPROC = extern "system" fn(GLuint, GLint, GLfloat, GLfloat, GLfloat);
19014
19015/// The prototype to the OpenGL function `ProgramUniform3fv`
19016type PFNGLPROGRAMUNIFORM3FVPROC = extern "system" fn(GLuint, GLint, GLsizei, *const GLfloat);
19017
19018/// The prototype to the OpenGL function `ProgramUniform3d`
19019type PFNGLPROGRAMUNIFORM3DPROC = extern "system" fn(GLuint, GLint, GLdouble, GLdouble, GLdouble);
19020
19021/// The prototype to the OpenGL function `ProgramUniform3dv`
19022type PFNGLPROGRAMUNIFORM3DVPROC = extern "system" fn(GLuint, GLint, GLsizei, *const GLdouble);
19023
19024/// The prototype to the OpenGL function `ProgramUniform3ui`
19025type PFNGLPROGRAMUNIFORM3UIPROC = extern "system" fn(GLuint, GLint, GLuint, GLuint, GLuint);
19026
19027/// The prototype to the OpenGL function `ProgramUniform3uiv`
19028type PFNGLPROGRAMUNIFORM3UIVPROC = extern "system" fn(GLuint, GLint, GLsizei, *const GLuint);
19029
19030/// The prototype to the OpenGL function `ProgramUniform4i`
19031type PFNGLPROGRAMUNIFORM4IPROC = extern "system" fn(GLuint, GLint, GLint, GLint, GLint, GLint);
19032
19033/// The prototype to the OpenGL function `ProgramUniform4iv`
19034type PFNGLPROGRAMUNIFORM4IVPROC = extern "system" fn(GLuint, GLint, GLsizei, *const GLint);
19035
19036/// The prototype to the OpenGL function `ProgramUniform4f`
19037type PFNGLPROGRAMUNIFORM4FPROC = extern "system" fn(GLuint, GLint, GLfloat, GLfloat, GLfloat, GLfloat);
19038
19039/// The prototype to the OpenGL function `ProgramUniform4fv`
19040type PFNGLPROGRAMUNIFORM4FVPROC = extern "system" fn(GLuint, GLint, GLsizei, *const GLfloat);
19041
19042/// The prototype to the OpenGL function `ProgramUniform4d`
19043type PFNGLPROGRAMUNIFORM4DPROC = extern "system" fn(GLuint, GLint, GLdouble, GLdouble, GLdouble, GLdouble);
19044
19045/// The prototype to the OpenGL function `ProgramUniform4dv`
19046type PFNGLPROGRAMUNIFORM4DVPROC = extern "system" fn(GLuint, GLint, GLsizei, *const GLdouble);
19047
19048/// The prototype to the OpenGL function `ProgramUniform4ui`
19049type PFNGLPROGRAMUNIFORM4UIPROC = extern "system" fn(GLuint, GLint, GLuint, GLuint, GLuint, GLuint);
19050
19051/// The prototype to the OpenGL function `ProgramUniform4uiv`
19052type PFNGLPROGRAMUNIFORM4UIVPROC = extern "system" fn(GLuint, GLint, GLsizei, *const GLuint);
19053
19054/// The prototype to the OpenGL function `ProgramUniformMatrix2fv`
19055type PFNGLPROGRAMUNIFORMMATRIX2FVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLfloat);
19056
19057/// The prototype to the OpenGL function `ProgramUniformMatrix3fv`
19058type PFNGLPROGRAMUNIFORMMATRIX3FVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLfloat);
19059
19060/// The prototype to the OpenGL function `ProgramUniformMatrix4fv`
19061type PFNGLPROGRAMUNIFORMMATRIX4FVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLfloat);
19062
19063/// The prototype to the OpenGL function `ProgramUniformMatrix2dv`
19064type PFNGLPROGRAMUNIFORMMATRIX2DVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLdouble);
19065
19066/// The prototype to the OpenGL function `ProgramUniformMatrix3dv`
19067type PFNGLPROGRAMUNIFORMMATRIX3DVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLdouble);
19068
19069/// The prototype to the OpenGL function `ProgramUniformMatrix4dv`
19070type PFNGLPROGRAMUNIFORMMATRIX4DVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLdouble);
19071
19072/// The prototype to the OpenGL function `ProgramUniformMatrix2x3fv`
19073type PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLfloat);
19074
19075/// The prototype to the OpenGL function `ProgramUniformMatrix3x2fv`
19076type PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLfloat);
19077
19078/// The prototype to the OpenGL function `ProgramUniformMatrix2x4fv`
19079type PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLfloat);
19080
19081/// The prototype to the OpenGL function `ProgramUniformMatrix4x2fv`
19082type PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLfloat);
19083
19084/// The prototype to the OpenGL function `ProgramUniformMatrix3x4fv`
19085type PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLfloat);
19086
19087/// The prototype to the OpenGL function `ProgramUniformMatrix4x3fv`
19088type PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLfloat);
19089
19090/// The prototype to the OpenGL function `ProgramUniformMatrix2x3dv`
19091type PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLdouble);
19092
19093/// The prototype to the OpenGL function `ProgramUniformMatrix3x2dv`
19094type PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLdouble);
19095
19096/// The prototype to the OpenGL function `ProgramUniformMatrix2x4dv`
19097type PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLdouble);
19098
19099/// The prototype to the OpenGL function `ProgramUniformMatrix4x2dv`
19100type PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLdouble);
19101
19102/// The prototype to the OpenGL function `ProgramUniformMatrix3x4dv`
19103type PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLdouble);
19104
19105/// The prototype to the OpenGL function `ProgramUniformMatrix4x3dv`
19106type PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC = extern "system" fn(GLuint, GLint, GLsizei, GLboolean, *const GLdouble);
19107
19108/// The prototype to the OpenGL function `ValidateProgramPipeline`
19109type PFNGLVALIDATEPROGRAMPIPELINEPROC = extern "system" fn(GLuint);
19110
19111/// The prototype to the OpenGL function `GetProgramPipelineInfoLog`
19112type PFNGLGETPROGRAMPIPELINEINFOLOGPROC = extern "system" fn(GLuint, GLsizei, *mut GLsizei, *mut GLchar);
19113
19114/// The prototype to the OpenGL function `VertexAttribL1d`
19115type PFNGLVERTEXATTRIBL1DPROC = extern "system" fn(GLuint, GLdouble);
19116
19117/// The prototype to the OpenGL function `VertexAttribL2d`
19118type PFNGLVERTEXATTRIBL2DPROC = extern "system" fn(GLuint, GLdouble, GLdouble);
19119
19120/// The prototype to the OpenGL function `VertexAttribL3d`
19121type PFNGLVERTEXATTRIBL3DPROC = extern "system" fn(GLuint, GLdouble, GLdouble, GLdouble);
19122
19123/// The prototype to the OpenGL function `VertexAttribL4d`
19124type PFNGLVERTEXATTRIBL4DPROC = extern "system" fn(GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
19125
19126/// The prototype to the OpenGL function `VertexAttribL1dv`
19127type PFNGLVERTEXATTRIBL1DVPROC = extern "system" fn(GLuint, *const GLdouble);
19128
19129/// The prototype to the OpenGL function `VertexAttribL2dv`
19130type PFNGLVERTEXATTRIBL2DVPROC = extern "system" fn(GLuint, *const GLdouble);
19131
19132/// The prototype to the OpenGL function `VertexAttribL3dv`
19133type PFNGLVERTEXATTRIBL3DVPROC = extern "system" fn(GLuint, *const GLdouble);
19134
19135/// The prototype to the OpenGL function `VertexAttribL4dv`
19136type PFNGLVERTEXATTRIBL4DVPROC = extern "system" fn(GLuint, *const GLdouble);
19137
19138/// The prototype to the OpenGL function `VertexAttribLPointer`
19139type PFNGLVERTEXATTRIBLPOINTERPROC = extern "system" fn(GLuint, GLint, GLenum, GLsizei, *const c_void);
19140
19141/// The prototype to the OpenGL function `GetVertexAttribLdv`
19142type PFNGLGETVERTEXATTRIBLDVPROC = extern "system" fn(GLuint, GLenum, *mut GLdouble);
19143
19144/// The prototype to the OpenGL function `ViewportArrayv`
19145type PFNGLVIEWPORTARRAYVPROC = extern "system" fn(GLuint, GLsizei, *const GLfloat);
19146
19147/// The prototype to the OpenGL function `ViewportIndexedf`
19148type PFNGLVIEWPORTINDEXEDFPROC = extern "system" fn(GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
19149
19150/// The prototype to the OpenGL function `ViewportIndexedfv`
19151type PFNGLVIEWPORTINDEXEDFVPROC = extern "system" fn(GLuint, *const GLfloat);
19152
19153/// The prototype to the OpenGL function `ScissorArrayv`
19154type PFNGLSCISSORARRAYVPROC = extern "system" fn(GLuint, GLsizei, *const GLint);
19155
19156/// The prototype to the OpenGL function `ScissorIndexed`
19157type PFNGLSCISSORINDEXEDPROC = extern "system" fn(GLuint, GLint, GLint, GLsizei, GLsizei);
19158
19159/// The prototype to the OpenGL function `ScissorIndexedv`
19160type PFNGLSCISSORINDEXEDVPROC = extern "system" fn(GLuint, *const GLint);
19161
19162/// The prototype to the OpenGL function `DepthRangeArrayv`
19163type PFNGLDEPTHRANGEARRAYVPROC = extern "system" fn(GLuint, GLsizei, *const GLdouble);
19164
19165/// The prototype to the OpenGL function `DepthRangeIndexed`
19166type PFNGLDEPTHRANGEINDEXEDPROC = extern "system" fn(GLuint, GLdouble, GLdouble);
19167
19168/// The prototype to the OpenGL function `GetFloati_v`
19169type PFNGLGETFLOATI_VPROC = extern "system" fn(GLenum, GLuint, *mut GLfloat);
19170
19171/// The prototype to the OpenGL function `GetDoublei_v`
19172type PFNGLGETDOUBLEI_VPROC = extern "system" fn(GLenum, GLuint, *mut GLdouble);
19173
19174/// The dummy function of `ReleaseShaderCompiler()`
19175extern "system" fn dummy_pfnglreleaseshadercompilerproc () {
19176	panic!("OpenGL function pointer `glReleaseShaderCompiler()` is null.")
19177}
19178
19179/// The dummy function of `ShaderBinary()`
19180extern "system" fn dummy_pfnglshaderbinaryproc (_: GLsizei, _: *const GLuint, _: GLenum, _: *const c_void, _: GLsizei) {
19181	panic!("OpenGL function pointer `glShaderBinary()` is null.")
19182}
19183
19184/// The dummy function of `GetShaderPrecisionFormat()`
19185extern "system" fn dummy_pfnglgetshaderprecisionformatproc (_: GLenum, _: GLenum, _: *mut GLint, _: *mut GLint) {
19186	panic!("OpenGL function pointer `glGetShaderPrecisionFormat()` is null.")
19187}
19188
19189/// The dummy function of `DepthRangef()`
19190extern "system" fn dummy_pfngldepthrangefproc (_: GLfloat, _: GLfloat) {
19191	panic!("OpenGL function pointer `glDepthRangef()` is null.")
19192}
19193
19194/// The dummy function of `ClearDepthf()`
19195extern "system" fn dummy_pfnglcleardepthfproc (_: GLfloat) {
19196	panic!("OpenGL function pointer `glClearDepthf()` is null.")
19197}
19198
19199/// The dummy function of `GetProgramBinary()`
19200extern "system" fn dummy_pfnglgetprogrambinaryproc (_: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLenum, _: *mut c_void) {
19201	panic!("OpenGL function pointer `glGetProgramBinary()` is null.")
19202}
19203
19204/// The dummy function of `ProgramBinary()`
19205extern "system" fn dummy_pfnglprogrambinaryproc (_: GLuint, _: GLenum, _: *const c_void, _: GLsizei) {
19206	panic!("OpenGL function pointer `glProgramBinary()` is null.")
19207}
19208
19209/// The dummy function of `ProgramParameteri()`
19210extern "system" fn dummy_pfnglprogramparameteriproc (_: GLuint, _: GLenum, _: GLint) {
19211	panic!("OpenGL function pointer `glProgramParameteri()` is null.")
19212}
19213
19214/// The dummy function of `UseProgramStages()`
19215extern "system" fn dummy_pfngluseprogramstagesproc (_: GLuint, _: GLbitfield, _: GLuint) {
19216	panic!("OpenGL function pointer `glUseProgramStages()` is null.")
19217}
19218
19219/// The dummy function of `ActiveShaderProgram()`
19220extern "system" fn dummy_pfnglactiveshaderprogramproc (_: GLuint, _: GLuint) {
19221	panic!("OpenGL function pointer `glActiveShaderProgram()` is null.")
19222}
19223
19224/// The dummy function of `CreateShaderProgramv()`
19225extern "system" fn dummy_pfnglcreateshaderprogramvproc (_: GLenum, _: GLsizei, _: *const *const GLchar) -> GLuint {
19226	panic!("OpenGL function pointer `glCreateShaderProgramv()` is null.")
19227}
19228
19229/// The dummy function of `BindProgramPipeline()`
19230extern "system" fn dummy_pfnglbindprogrampipelineproc (_: GLuint) {
19231	panic!("OpenGL function pointer `glBindProgramPipeline()` is null.")
19232}
19233
19234/// The dummy function of `DeleteProgramPipelines()`
19235extern "system" fn dummy_pfngldeleteprogrampipelinesproc (_: GLsizei, _: *const GLuint) {
19236	panic!("OpenGL function pointer `glDeleteProgramPipelines()` is null.")
19237}
19238
19239/// The dummy function of `GenProgramPipelines()`
19240extern "system" fn dummy_pfnglgenprogrampipelinesproc (_: GLsizei, _: *mut GLuint) {
19241	panic!("OpenGL function pointer `glGenProgramPipelines()` is null.")
19242}
19243
19244/// The dummy function of `IsProgramPipeline()`
19245extern "system" fn dummy_pfnglisprogrampipelineproc (_: GLuint) -> GLboolean {
19246	panic!("OpenGL function pointer `glIsProgramPipeline()` is null.")
19247}
19248
19249/// The dummy function of `GetProgramPipelineiv()`
19250extern "system" fn dummy_pfnglgetprogrampipelineivproc (_: GLuint, _: GLenum, _: *mut GLint) {
19251	panic!("OpenGL function pointer `glGetProgramPipelineiv()` is null.")
19252}
19253
19254/// The dummy function of `ProgramUniform1i()`
19255extern "system" fn dummy_pfnglprogramuniform1iproc (_: GLuint, _: GLint, _: GLint) {
19256	panic!("OpenGL function pointer `glProgramUniform1i()` is null.")
19257}
19258
19259/// The dummy function of `ProgramUniform1iv()`
19260extern "system" fn dummy_pfnglprogramuniform1ivproc (_: GLuint, _: GLint, _: GLsizei, _: *const GLint) {
19261	panic!("OpenGL function pointer `glProgramUniform1iv()` is null.")
19262}
19263
19264/// The dummy function of `ProgramUniform1f()`
19265extern "system" fn dummy_pfnglprogramuniform1fproc (_: GLuint, _: GLint, _: GLfloat) {
19266	panic!("OpenGL function pointer `glProgramUniform1f()` is null.")
19267}
19268
19269/// The dummy function of `ProgramUniform1fv()`
19270extern "system" fn dummy_pfnglprogramuniform1fvproc (_: GLuint, _: GLint, _: GLsizei, _: *const GLfloat) {
19271	panic!("OpenGL function pointer `glProgramUniform1fv()` is null.")
19272}
19273
19274/// The dummy function of `ProgramUniform1d()`
19275extern "system" fn dummy_pfnglprogramuniform1dproc (_: GLuint, _: GLint, _: GLdouble) {
19276	panic!("OpenGL function pointer `glProgramUniform1d()` is null.")
19277}
19278
19279/// The dummy function of `ProgramUniform1dv()`
19280extern "system" fn dummy_pfnglprogramuniform1dvproc (_: GLuint, _: GLint, _: GLsizei, _: *const GLdouble) {
19281	panic!("OpenGL function pointer `glProgramUniform1dv()` is null.")
19282}
19283
19284/// The dummy function of `ProgramUniform1ui()`
19285extern "system" fn dummy_pfnglprogramuniform1uiproc (_: GLuint, _: GLint, _: GLuint) {
19286	panic!("OpenGL function pointer `glProgramUniform1ui()` is null.")
19287}
19288
19289/// The dummy function of `ProgramUniform1uiv()`
19290extern "system" fn dummy_pfnglprogramuniform1uivproc (_: GLuint, _: GLint, _: GLsizei, _: *const GLuint) {
19291	panic!("OpenGL function pointer `glProgramUniform1uiv()` is null.")
19292}
19293
19294/// The dummy function of `ProgramUniform2i()`
19295extern "system" fn dummy_pfnglprogramuniform2iproc (_: GLuint, _: GLint, _: GLint, _: GLint) {
19296	panic!("OpenGL function pointer `glProgramUniform2i()` is null.")
19297}
19298
19299/// The dummy function of `ProgramUniform2iv()`
19300extern "system" fn dummy_pfnglprogramuniform2ivproc (_: GLuint, _: GLint, _: GLsizei, _: *const GLint) {
19301	panic!("OpenGL function pointer `glProgramUniform2iv()` is null.")
19302}
19303
19304/// The dummy function of `ProgramUniform2f()`
19305extern "system" fn dummy_pfnglprogramuniform2fproc (_: GLuint, _: GLint, _: GLfloat, _: GLfloat) {
19306	panic!("OpenGL function pointer `glProgramUniform2f()` is null.")
19307}
19308
19309/// The dummy function of `ProgramUniform2fv()`
19310extern "system" fn dummy_pfnglprogramuniform2fvproc (_: GLuint, _: GLint, _: GLsizei, _: *const GLfloat) {
19311	panic!("OpenGL function pointer `glProgramUniform2fv()` is null.")
19312}
19313
19314/// The dummy function of `ProgramUniform2d()`
19315extern "system" fn dummy_pfnglprogramuniform2dproc (_: GLuint, _: GLint, _: GLdouble, _: GLdouble) {
19316	panic!("OpenGL function pointer `glProgramUniform2d()` is null.")
19317}
19318
19319/// The dummy function of `ProgramUniform2dv()`
19320extern "system" fn dummy_pfnglprogramuniform2dvproc (_: GLuint, _: GLint, _: GLsizei, _: *const GLdouble) {
19321	panic!("OpenGL function pointer `glProgramUniform2dv()` is null.")
19322}
19323
19324/// The dummy function of `ProgramUniform2ui()`
19325extern "system" fn dummy_pfnglprogramuniform2uiproc (_: GLuint, _: GLint, _: GLuint, _: GLuint) {
19326	panic!("OpenGL function pointer `glProgramUniform2ui()` is null.")
19327}
19328
19329/// The dummy function of `ProgramUniform2uiv()`
19330extern "system" fn dummy_pfnglprogramuniform2uivproc (_: GLuint, _: GLint, _: GLsizei, _: *const GLuint) {
19331	panic!("OpenGL function pointer `glProgramUniform2uiv()` is null.")
19332}
19333
19334/// The dummy function of `ProgramUniform3i()`
19335extern "system" fn dummy_pfnglprogramuniform3iproc (_: GLuint, _: GLint, _: GLint, _: GLint, _: GLint) {
19336	panic!("OpenGL function pointer `glProgramUniform3i()` is null.")
19337}
19338
19339/// The dummy function of `ProgramUniform3iv()`
19340extern "system" fn dummy_pfnglprogramuniform3ivproc (_: GLuint, _: GLint, _: GLsizei, _: *const GLint) {
19341	panic!("OpenGL function pointer `glProgramUniform3iv()` is null.")
19342}
19343
19344/// The dummy function of `ProgramUniform3f()`
19345extern "system" fn dummy_pfnglprogramuniform3fproc (_: GLuint, _: GLint, _: GLfloat, _: GLfloat, _: GLfloat) {
19346	panic!("OpenGL function pointer `glProgramUniform3f()` is null.")
19347}
19348
19349/// The dummy function of `ProgramUniform3fv()`
19350extern "system" fn dummy_pfnglprogramuniform3fvproc (_: GLuint, _: GLint, _: GLsizei, _: *const GLfloat) {
19351	panic!("OpenGL function pointer `glProgramUniform3fv()` is null.")
19352}
19353
19354/// The dummy function of `ProgramUniform3d()`
19355extern "system" fn dummy_pfnglprogramuniform3dproc (_: GLuint, _: GLint, _: GLdouble, _: GLdouble, _: GLdouble) {
19356	panic!("OpenGL function pointer `glProgramUniform3d()` is null.")
19357}
19358
19359/// The dummy function of `ProgramUniform3dv()`
19360extern "system" fn dummy_pfnglprogramuniform3dvproc (_: GLuint, _: GLint, _: GLsizei, _: *const GLdouble) {
19361	panic!("OpenGL function pointer `glProgramUniform3dv()` is null.")
19362}
19363
19364/// The dummy function of `ProgramUniform3ui()`
19365extern "system" fn dummy_pfnglprogramuniform3uiproc (_: GLuint, _: GLint, _: GLuint, _: GLuint, _: GLuint) {
19366	panic!("OpenGL function pointer `glProgramUniform3ui()` is null.")
19367}
19368
19369/// The dummy function of `ProgramUniform3uiv()`
19370extern "system" fn dummy_pfnglprogramuniform3uivproc (_: GLuint, _: GLint, _: GLsizei, _: *const GLuint) {
19371	panic!("OpenGL function pointer `glProgramUniform3uiv()` is null.")
19372}
19373
19374/// The dummy function of `ProgramUniform4i()`
19375extern "system" fn dummy_pfnglprogramuniform4iproc (_: GLuint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLint) {
19376	panic!("OpenGL function pointer `glProgramUniform4i()` is null.")
19377}
19378
19379/// The dummy function of `ProgramUniform4iv()`
19380extern "system" fn dummy_pfnglprogramuniform4ivproc (_: GLuint, _: GLint, _: GLsizei, _: *const GLint) {
19381	panic!("OpenGL function pointer `glProgramUniform4iv()` is null.")
19382}
19383
19384/// The dummy function of `ProgramUniform4f()`
19385extern "system" fn dummy_pfnglprogramuniform4fproc (_: GLuint, _: GLint, _: GLfloat, _: GLfloat, _: GLfloat, _: GLfloat) {
19386	panic!("OpenGL function pointer `glProgramUniform4f()` is null.")
19387}
19388
19389/// The dummy function of `ProgramUniform4fv()`
19390extern "system" fn dummy_pfnglprogramuniform4fvproc (_: GLuint, _: GLint, _: GLsizei, _: *const GLfloat) {
19391	panic!("OpenGL function pointer `glProgramUniform4fv()` is null.")
19392}
19393
19394/// The dummy function of `ProgramUniform4d()`
19395extern "system" fn dummy_pfnglprogramuniform4dproc (_: GLuint, _: GLint, _: GLdouble, _: GLdouble, _: GLdouble, _: GLdouble) {
19396	panic!("OpenGL function pointer `glProgramUniform4d()` is null.")
19397}
19398
19399/// The dummy function of `ProgramUniform4dv()`
19400extern "system" fn dummy_pfnglprogramuniform4dvproc (_: GLuint, _: GLint, _: GLsizei, _: *const GLdouble) {
19401	panic!("OpenGL function pointer `glProgramUniform4dv()` is null.")
19402}
19403
19404/// The dummy function of `ProgramUniform4ui()`
19405extern "system" fn dummy_pfnglprogramuniform4uiproc (_: GLuint, _: GLint, _: GLuint, _: GLuint, _: GLuint, _: GLuint) {
19406	panic!("OpenGL function pointer `glProgramUniform4ui()` is null.")
19407}
19408
19409/// The dummy function of `ProgramUniform4uiv()`
19410extern "system" fn dummy_pfnglprogramuniform4uivproc (_: GLuint, _: GLint, _: GLsizei, _: *const GLuint) {
19411	panic!("OpenGL function pointer `glProgramUniform4uiv()` is null.")
19412}
19413
19414/// The dummy function of `ProgramUniformMatrix2fv()`
19415extern "system" fn dummy_pfnglprogramuniformmatrix2fvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
19416	panic!("OpenGL function pointer `glProgramUniformMatrix2fv()` is null.")
19417}
19418
19419/// The dummy function of `ProgramUniformMatrix3fv()`
19420extern "system" fn dummy_pfnglprogramuniformmatrix3fvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
19421	panic!("OpenGL function pointer `glProgramUniformMatrix3fv()` is null.")
19422}
19423
19424/// The dummy function of `ProgramUniformMatrix4fv()`
19425extern "system" fn dummy_pfnglprogramuniformmatrix4fvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
19426	panic!("OpenGL function pointer `glProgramUniformMatrix4fv()` is null.")
19427}
19428
19429/// The dummy function of `ProgramUniformMatrix2dv()`
19430extern "system" fn dummy_pfnglprogramuniformmatrix2dvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
19431	panic!("OpenGL function pointer `glProgramUniformMatrix2dv()` is null.")
19432}
19433
19434/// The dummy function of `ProgramUniformMatrix3dv()`
19435extern "system" fn dummy_pfnglprogramuniformmatrix3dvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
19436	panic!("OpenGL function pointer `glProgramUniformMatrix3dv()` is null.")
19437}
19438
19439/// The dummy function of `ProgramUniformMatrix4dv()`
19440extern "system" fn dummy_pfnglprogramuniformmatrix4dvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
19441	panic!("OpenGL function pointer `glProgramUniformMatrix4dv()` is null.")
19442}
19443
19444/// The dummy function of `ProgramUniformMatrix2x3fv()`
19445extern "system" fn dummy_pfnglprogramuniformmatrix2x3fvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
19446	panic!("OpenGL function pointer `glProgramUniformMatrix2x3fv()` is null.")
19447}
19448
19449/// The dummy function of `ProgramUniformMatrix3x2fv()`
19450extern "system" fn dummy_pfnglprogramuniformmatrix3x2fvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
19451	panic!("OpenGL function pointer `glProgramUniformMatrix3x2fv()` is null.")
19452}
19453
19454/// The dummy function of `ProgramUniformMatrix2x4fv()`
19455extern "system" fn dummy_pfnglprogramuniformmatrix2x4fvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
19456	panic!("OpenGL function pointer `glProgramUniformMatrix2x4fv()` is null.")
19457}
19458
19459/// The dummy function of `ProgramUniformMatrix4x2fv()`
19460extern "system" fn dummy_pfnglprogramuniformmatrix4x2fvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
19461	panic!("OpenGL function pointer `glProgramUniformMatrix4x2fv()` is null.")
19462}
19463
19464/// The dummy function of `ProgramUniformMatrix3x4fv()`
19465extern "system" fn dummy_pfnglprogramuniformmatrix3x4fvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
19466	panic!("OpenGL function pointer `glProgramUniformMatrix3x4fv()` is null.")
19467}
19468
19469/// The dummy function of `ProgramUniformMatrix4x3fv()`
19470extern "system" fn dummy_pfnglprogramuniformmatrix4x3fvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLfloat) {
19471	panic!("OpenGL function pointer `glProgramUniformMatrix4x3fv()` is null.")
19472}
19473
19474/// The dummy function of `ProgramUniformMatrix2x3dv()`
19475extern "system" fn dummy_pfnglprogramuniformmatrix2x3dvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
19476	panic!("OpenGL function pointer `glProgramUniformMatrix2x3dv()` is null.")
19477}
19478
19479/// The dummy function of `ProgramUniformMatrix3x2dv()`
19480extern "system" fn dummy_pfnglprogramuniformmatrix3x2dvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
19481	panic!("OpenGL function pointer `glProgramUniformMatrix3x2dv()` is null.")
19482}
19483
19484/// The dummy function of `ProgramUniformMatrix2x4dv()`
19485extern "system" fn dummy_pfnglprogramuniformmatrix2x4dvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
19486	panic!("OpenGL function pointer `glProgramUniformMatrix2x4dv()` is null.")
19487}
19488
19489/// The dummy function of `ProgramUniformMatrix4x2dv()`
19490extern "system" fn dummy_pfnglprogramuniformmatrix4x2dvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
19491	panic!("OpenGL function pointer `glProgramUniformMatrix4x2dv()` is null.")
19492}
19493
19494/// The dummy function of `ProgramUniformMatrix3x4dv()`
19495extern "system" fn dummy_pfnglprogramuniformmatrix3x4dvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
19496	panic!("OpenGL function pointer `glProgramUniformMatrix3x4dv()` is null.")
19497}
19498
19499/// The dummy function of `ProgramUniformMatrix4x3dv()`
19500extern "system" fn dummy_pfnglprogramuniformmatrix4x3dvproc (_: GLuint, _: GLint, _: GLsizei, _: GLboolean, _: *const GLdouble) {
19501	panic!("OpenGL function pointer `glProgramUniformMatrix4x3dv()` is null.")
19502}
19503
19504/// The dummy function of `ValidateProgramPipeline()`
19505extern "system" fn dummy_pfnglvalidateprogrampipelineproc (_: GLuint) {
19506	panic!("OpenGL function pointer `glValidateProgramPipeline()` is null.")
19507}
19508
19509/// The dummy function of `GetProgramPipelineInfoLog()`
19510extern "system" fn dummy_pfnglgetprogrampipelineinfologproc (_: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLchar) {
19511	panic!("OpenGL function pointer `glGetProgramPipelineInfoLog()` is null.")
19512}
19513
19514/// The dummy function of `VertexAttribL1d()`
19515extern "system" fn dummy_pfnglvertexattribl1dproc (_: GLuint, _: GLdouble) {
19516	panic!("OpenGL function pointer `glVertexAttribL1d()` is null.")
19517}
19518
19519/// The dummy function of `VertexAttribL2d()`
19520extern "system" fn dummy_pfnglvertexattribl2dproc (_: GLuint, _: GLdouble, _: GLdouble) {
19521	panic!("OpenGL function pointer `glVertexAttribL2d()` is null.")
19522}
19523
19524/// The dummy function of `VertexAttribL3d()`
19525extern "system" fn dummy_pfnglvertexattribl3dproc (_: GLuint, _: GLdouble, _: GLdouble, _: GLdouble) {
19526	panic!("OpenGL function pointer `glVertexAttribL3d()` is null.")
19527}
19528
19529/// The dummy function of `VertexAttribL4d()`
19530extern "system" fn dummy_pfnglvertexattribl4dproc (_: GLuint, _: GLdouble, _: GLdouble, _: GLdouble, _: GLdouble) {
19531	panic!("OpenGL function pointer `glVertexAttribL4d()` is null.")
19532}
19533
19534/// The dummy function of `VertexAttribL1dv()`
19535extern "system" fn dummy_pfnglvertexattribl1dvproc (_: GLuint, _: *const GLdouble) {
19536	panic!("OpenGL function pointer `glVertexAttribL1dv()` is null.")
19537}
19538
19539/// The dummy function of `VertexAttribL2dv()`
19540extern "system" fn dummy_pfnglvertexattribl2dvproc (_: GLuint, _: *const GLdouble) {
19541	panic!("OpenGL function pointer `glVertexAttribL2dv()` is null.")
19542}
19543
19544/// The dummy function of `VertexAttribL3dv()`
19545extern "system" fn dummy_pfnglvertexattribl3dvproc (_: GLuint, _: *const GLdouble) {
19546	panic!("OpenGL function pointer `glVertexAttribL3dv()` is null.")
19547}
19548
19549/// The dummy function of `VertexAttribL4dv()`
19550extern "system" fn dummy_pfnglvertexattribl4dvproc (_: GLuint, _: *const GLdouble) {
19551	panic!("OpenGL function pointer `glVertexAttribL4dv()` is null.")
19552}
19553
19554/// The dummy function of `VertexAttribLPointer()`
19555extern "system" fn dummy_pfnglvertexattriblpointerproc (_: GLuint, _: GLint, _: GLenum, _: GLsizei, _: *const c_void) {
19556	panic!("OpenGL function pointer `glVertexAttribLPointer()` is null.")
19557}
19558
19559/// The dummy function of `GetVertexAttribLdv()`
19560extern "system" fn dummy_pfnglgetvertexattribldvproc (_: GLuint, _: GLenum, _: *mut GLdouble) {
19561	panic!("OpenGL function pointer `glGetVertexAttribLdv()` is null.")
19562}
19563
19564/// The dummy function of `ViewportArrayv()`
19565extern "system" fn dummy_pfnglviewportarrayvproc (_: GLuint, _: GLsizei, _: *const GLfloat) {
19566	panic!("OpenGL function pointer `glViewportArrayv()` is null.")
19567}
19568
19569/// The dummy function of `ViewportIndexedf()`
19570extern "system" fn dummy_pfnglviewportindexedfproc (_: GLuint, _: GLfloat, _: GLfloat, _: GLfloat, _: GLfloat) {
19571	panic!("OpenGL function pointer `glViewportIndexedf()` is null.")
19572}
19573
19574/// The dummy function of `ViewportIndexedfv()`
19575extern "system" fn dummy_pfnglviewportindexedfvproc (_: GLuint, _: *const GLfloat) {
19576	panic!("OpenGL function pointer `glViewportIndexedfv()` is null.")
19577}
19578
19579/// The dummy function of `ScissorArrayv()`
19580extern "system" fn dummy_pfnglscissorarrayvproc (_: GLuint, _: GLsizei, _: *const GLint) {
19581	panic!("OpenGL function pointer `glScissorArrayv()` is null.")
19582}
19583
19584/// The dummy function of `ScissorIndexed()`
19585extern "system" fn dummy_pfnglscissorindexedproc (_: GLuint, _: GLint, _: GLint, _: GLsizei, _: GLsizei) {
19586	panic!("OpenGL function pointer `glScissorIndexed()` is null.")
19587}
19588
19589/// The dummy function of `ScissorIndexedv()`
19590extern "system" fn dummy_pfnglscissorindexedvproc (_: GLuint, _: *const GLint) {
19591	panic!("OpenGL function pointer `glScissorIndexedv()` is null.")
19592}
19593
19594/// The dummy function of `DepthRangeArrayv()`
19595extern "system" fn dummy_pfngldepthrangearrayvproc (_: GLuint, _: GLsizei, _: *const GLdouble) {
19596	panic!("OpenGL function pointer `glDepthRangeArrayv()` is null.")
19597}
19598
19599/// The dummy function of `DepthRangeIndexed()`
19600extern "system" fn dummy_pfngldepthrangeindexedproc (_: GLuint, _: GLdouble, _: GLdouble) {
19601	panic!("OpenGL function pointer `glDepthRangeIndexed()` is null.")
19602}
19603
19604/// The dummy function of `GetFloati_v()`
19605extern "system" fn dummy_pfnglgetfloati_vproc (_: GLenum, _: GLuint, _: *mut GLfloat) {
19606	panic!("OpenGL function pointer `glGetFloati_v()` is null.")
19607}
19608
19609/// The dummy function of `GetDoublei_v()`
19610extern "system" fn dummy_pfnglgetdoublei_vproc (_: GLenum, _: GLuint, _: *mut GLdouble) {
19611	panic!("OpenGL function pointer `glGetDoublei_v()` is null.")
19612}
19613/// Constant value defined from OpenGL 4.1
19614pub const GL_FIXED: GLenum = 0x140C;
19615
19616/// Constant value defined from OpenGL 4.1
19617pub const GL_IMPLEMENTATION_COLOR_READ_TYPE: GLenum = 0x8B9A;
19618
19619/// Constant value defined from OpenGL 4.1
19620pub const GL_IMPLEMENTATION_COLOR_READ_FORMAT: GLenum = 0x8B9B;
19621
19622/// Constant value defined from OpenGL 4.1
19623pub const GL_LOW_FLOAT: GLenum = 0x8DF0;
19624
19625/// Constant value defined from OpenGL 4.1
19626pub const GL_MEDIUM_FLOAT: GLenum = 0x8DF1;
19627
19628/// Constant value defined from OpenGL 4.1
19629pub const GL_HIGH_FLOAT: GLenum = 0x8DF2;
19630
19631/// Constant value defined from OpenGL 4.1
19632pub const GL_LOW_INT: GLenum = 0x8DF3;
19633
19634/// Constant value defined from OpenGL 4.1
19635pub const GL_MEDIUM_INT: GLenum = 0x8DF4;
19636
19637/// Constant value defined from OpenGL 4.1
19638pub const GL_HIGH_INT: GLenum = 0x8DF5;
19639
19640/// Constant value defined from OpenGL 4.1
19641pub const GL_SHADER_COMPILER: GLenum = 0x8DFA;
19642
19643/// Constant value defined from OpenGL 4.1
19644pub const GL_SHADER_BINARY_FORMATS: GLenum = 0x8DF8;
19645
19646/// Constant value defined from OpenGL 4.1
19647pub const GL_NUM_SHADER_BINARY_FORMATS: GLenum = 0x8DF9;
19648
19649/// Constant value defined from OpenGL 4.1
19650pub const GL_MAX_VERTEX_UNIFORM_VECTORS: GLenum = 0x8DFB;
19651
19652/// Constant value defined from OpenGL 4.1
19653pub const GL_MAX_VARYING_VECTORS: GLenum = 0x8DFC;
19654
19655/// Constant value defined from OpenGL 4.1
19656pub const GL_MAX_FRAGMENT_UNIFORM_VECTORS: GLenum = 0x8DFD;
19657
19658/// Constant value defined from OpenGL 4.1
19659pub const GL_RGB565: GLenum = 0x8D62;
19660
19661/// Constant value defined from OpenGL 4.1
19662pub const GL_PROGRAM_BINARY_RETRIEVABLE_HINT: GLenum = 0x8257;
19663
19664/// Constant value defined from OpenGL 4.1
19665pub const GL_PROGRAM_BINARY_LENGTH: GLenum = 0x8741;
19666
19667/// Constant value defined from OpenGL 4.1
19668pub const GL_NUM_PROGRAM_BINARY_FORMATS: GLenum = 0x87FE;
19669
19670/// Constant value defined from OpenGL 4.1
19671pub const GL_PROGRAM_BINARY_FORMATS: GLenum = 0x87FF;
19672
19673/// Constant value defined from OpenGL 4.1
19674pub const GL_VERTEX_SHADER_BIT: GLbitfield = 0x00000001;
19675
19676/// Constant value defined from OpenGL 4.1
19677pub const GL_FRAGMENT_SHADER_BIT: GLbitfield = 0x00000002;
19678
19679/// Constant value defined from OpenGL 4.1
19680pub const GL_GEOMETRY_SHADER_BIT: GLbitfield = 0x00000004;
19681
19682/// Constant value defined from OpenGL 4.1
19683pub const GL_TESS_CONTROL_SHADER_BIT: GLbitfield = 0x00000008;
19684
19685/// Constant value defined from OpenGL 4.1
19686pub const GL_TESS_EVALUATION_SHADER_BIT: GLbitfield = 0x00000010;
19687
19688/// Constant value defined from OpenGL 4.1
19689pub const GL_ALL_SHADER_BITS: GLbitfield = 0xFFFFFFFF;
19690
19691/// Constant value defined from OpenGL 4.1
19692pub const GL_PROGRAM_SEPARABLE: GLenum = 0x8258;
19693
19694/// Constant value defined from OpenGL 4.1
19695pub const GL_ACTIVE_PROGRAM: GLenum = 0x8259;
19696
19697/// Constant value defined from OpenGL 4.1
19698pub const GL_PROGRAM_PIPELINE_BINDING: GLenum = 0x825A;
19699
19700/// Constant value defined from OpenGL 4.1
19701pub const GL_MAX_VIEWPORTS: GLenum = 0x825B;
19702
19703/// Constant value defined from OpenGL 4.1
19704pub const GL_VIEWPORT_SUBPIXEL_BITS: GLenum = 0x825C;
19705
19706/// Constant value defined from OpenGL 4.1
19707pub const GL_VIEWPORT_BOUNDS_RANGE: GLenum = 0x825D;
19708
19709/// Constant value defined from OpenGL 4.1
19710pub const GL_LAYER_PROVOKING_VERTEX: GLenum = 0x825E;
19711
19712/// Constant value defined from OpenGL 4.1
19713pub const GL_VIEWPORT_INDEX_PROVOKING_VERTEX: GLenum = 0x825F;
19714
19715/// Constant value defined from OpenGL 4.1
19716pub const GL_UNDEFINED_VERTEX: GLenum = 0x8260;
19717
19718/// Functions from OpenGL version 4.1
19719pub trait GL_4_1 {
19720	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
19721	fn glGetError(&self) -> GLenum;
19722
19723	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glReleaseShaderCompiler.xhtml>
19724	fn glReleaseShaderCompiler(&self) -> Result<()>;
19725
19726	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glShaderBinary.xhtml>
19727	fn glShaderBinary(&self, count: GLsizei, shaders: *const GLuint, binaryFormat: GLenum, binary: *const c_void, length: GLsizei) -> Result<()>;
19728
19729	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetShaderPrecisionFormat.xhtml>
19730	fn glGetShaderPrecisionFormat(&self, shadertype: GLenum, precisiontype: GLenum, range: *mut GLint, precision: *mut GLint) -> Result<()>;
19731
19732	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthRangef.xhtml>
19733	fn glDepthRangef(&self, n: GLfloat, f: GLfloat) -> Result<()>;
19734
19735	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearDepthf.xhtml>
19736	fn glClearDepthf(&self, d: GLfloat) -> Result<()>;
19737
19738	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramBinary.xhtml>
19739	fn glGetProgramBinary(&self, program: GLuint, bufSize: GLsizei, length: *mut GLsizei, binaryFormat: *mut GLenum, binary: *mut c_void) -> Result<()>;
19740
19741	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramBinary.xhtml>
19742	fn glProgramBinary(&self, program: GLuint, binaryFormat: GLenum, binary: *const c_void, length: GLsizei) -> Result<()>;
19743
19744	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramParameteri.xhtml>
19745	fn glProgramParameteri(&self, program: GLuint, pname: GLenum, value: GLint) -> Result<()>;
19746
19747	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUseProgramStages.xhtml>
19748	fn glUseProgramStages(&self, pipeline: GLuint, stages: GLbitfield, program: GLuint) -> Result<()>;
19749
19750	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glActiveShaderProgram.xhtml>
19751	fn glActiveShaderProgram(&self, pipeline: GLuint, program: GLuint) -> Result<()>;
19752
19753	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateShaderProgramv.xhtml>
19754	fn glCreateShaderProgramv(&self, type_: GLenum, count: GLsizei, strings: *const *const GLchar) -> Result<GLuint>;
19755
19756	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindProgramPipeline.xhtml>
19757	fn glBindProgramPipeline(&self, pipeline: GLuint) -> Result<()>;
19758
19759	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteProgramPipelines.xhtml>
19760	fn glDeleteProgramPipelines(&self, n: GLsizei, pipelines: *const GLuint) -> Result<()>;
19761
19762	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenProgramPipelines.xhtml>
19763	fn glGenProgramPipelines(&self, n: GLsizei, pipelines: *mut GLuint) -> Result<()>;
19764
19765	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsProgramPipeline.xhtml>
19766	fn glIsProgramPipeline(&self, pipeline: GLuint) -> Result<GLboolean>;
19767
19768	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramPipelineiv.xhtml>
19769	fn glGetProgramPipelineiv(&self, pipeline: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
19770
19771	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1i.xhtml>
19772	fn glProgramUniform1i(&self, program: GLuint, location: GLint, v0: GLint) -> Result<()>;
19773
19774	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1iv.xhtml>
19775	fn glProgramUniform1iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
19776
19777	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1f.xhtml>
19778	fn glProgramUniform1f(&self, program: GLuint, location: GLint, v0: GLfloat) -> Result<()>;
19779
19780	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1fv.xhtml>
19781	fn glProgramUniform1fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
19782
19783	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1d.xhtml>
19784	fn glProgramUniform1d(&self, program: GLuint, location: GLint, v0: GLdouble) -> Result<()>;
19785
19786	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1dv.xhtml>
19787	fn glProgramUniform1dv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()>;
19788
19789	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1ui.xhtml>
19790	fn glProgramUniform1ui(&self, program: GLuint, location: GLint, v0: GLuint) -> Result<()>;
19791
19792	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1uiv.xhtml>
19793	fn glProgramUniform1uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
19794
19795	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2i.xhtml>
19796	fn glProgramUniform2i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint) -> Result<()>;
19797
19798	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2iv.xhtml>
19799	fn glProgramUniform2iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
19800
19801	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2f.xhtml>
19802	fn glProgramUniform2f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat) -> Result<()>;
19803
19804	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2fv.xhtml>
19805	fn glProgramUniform2fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
19806
19807	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2d.xhtml>
19808	fn glProgramUniform2d(&self, program: GLuint, location: GLint, v0: GLdouble, v1: GLdouble) -> Result<()>;
19809
19810	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2dv.xhtml>
19811	fn glProgramUniform2dv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()>;
19812
19813	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2ui.xhtml>
19814	fn glProgramUniform2ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint) -> Result<()>;
19815
19816	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2uiv.xhtml>
19817	fn glProgramUniform2uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
19818
19819	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3i.xhtml>
19820	fn glProgramUniform3i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint, v2: GLint) -> Result<()>;
19821
19822	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3iv.xhtml>
19823	fn glProgramUniform3iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
19824
19825	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3f.xhtml>
19826	fn glProgramUniform3f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat) -> Result<()>;
19827
19828	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3fv.xhtml>
19829	fn glProgramUniform3fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
19830
19831	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3d.xhtml>
19832	fn glProgramUniform3d(&self, program: GLuint, location: GLint, v0: GLdouble, v1: GLdouble, v2: GLdouble) -> Result<()>;
19833
19834	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3dv.xhtml>
19835	fn glProgramUniform3dv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()>;
19836
19837	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3ui.xhtml>
19838	fn glProgramUniform3ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint) -> Result<()>;
19839
19840	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3uiv.xhtml>
19841	fn glProgramUniform3uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
19842
19843	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4i.xhtml>
19844	fn glProgramUniform4i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint, v2: GLint, v3: GLint) -> Result<()>;
19845
19846	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4iv.xhtml>
19847	fn glProgramUniform4iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
19848
19849	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4f.xhtml>
19850	fn glProgramUniform4f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat, v3: GLfloat) -> Result<()>;
19851
19852	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4fv.xhtml>
19853	fn glProgramUniform4fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
19854
19855	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4d.xhtml>
19856	fn glProgramUniform4d(&self, program: GLuint, location: GLint, v0: GLdouble, v1: GLdouble, v2: GLdouble, v3: GLdouble) -> Result<()>;
19857
19858	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4dv.xhtml>
19859	fn glProgramUniform4dv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()>;
19860
19861	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4ui.xhtml>
19862	fn glProgramUniform4ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint, v3: GLuint) -> Result<()>;
19863
19864	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4uiv.xhtml>
19865	fn glProgramUniform4uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
19866
19867	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2fv.xhtml>
19868	fn glProgramUniformMatrix2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
19869
19870	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3fv.xhtml>
19871	fn glProgramUniformMatrix3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
19872
19873	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4fv.xhtml>
19874	fn glProgramUniformMatrix4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
19875
19876	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2dv.xhtml>
19877	fn glProgramUniformMatrix2dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
19878
19879	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3dv.xhtml>
19880	fn glProgramUniformMatrix3dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
19881
19882	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4dv.xhtml>
19883	fn glProgramUniformMatrix4dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
19884
19885	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2x3fv.xhtml>
19886	fn glProgramUniformMatrix2x3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
19887
19888	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3x2fv.xhtml>
19889	fn glProgramUniformMatrix3x2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
19890
19891	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2x4fv.xhtml>
19892	fn glProgramUniformMatrix2x4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
19893
19894	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4x2fv.xhtml>
19895	fn glProgramUniformMatrix4x2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
19896
19897	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3x4fv.xhtml>
19898	fn glProgramUniformMatrix3x4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
19899
19900	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4x3fv.xhtml>
19901	fn glProgramUniformMatrix4x3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
19902
19903	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2x3dv.xhtml>
19904	fn glProgramUniformMatrix2x3dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
19905
19906	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3x2dv.xhtml>
19907	fn glProgramUniformMatrix3x2dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
19908
19909	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2x4dv.xhtml>
19910	fn glProgramUniformMatrix2x4dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
19911
19912	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4x2dv.xhtml>
19913	fn glProgramUniformMatrix4x2dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
19914
19915	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3x4dv.xhtml>
19916	fn glProgramUniformMatrix3x4dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
19917
19918	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4x3dv.xhtml>
19919	fn glProgramUniformMatrix4x3dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
19920
19921	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glValidateProgramPipeline.xhtml>
19922	fn glValidateProgramPipeline(&self, pipeline: GLuint) -> Result<()>;
19923
19924	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramPipelineInfoLog.xhtml>
19925	fn glGetProgramPipelineInfoLog(&self, pipeline: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()>;
19926
19927	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL1d.xhtml>
19928	fn glVertexAttribL1d(&self, index: GLuint, x: GLdouble) -> Result<()>;
19929
19930	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL2d.xhtml>
19931	fn glVertexAttribL2d(&self, index: GLuint, x: GLdouble, y: GLdouble) -> Result<()>;
19932
19933	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL3d.xhtml>
19934	fn glVertexAttribL3d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble) -> Result<()>;
19935
19936	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL4d.xhtml>
19937	fn glVertexAttribL4d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble, w: GLdouble) -> Result<()>;
19938
19939	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL1dv.xhtml>
19940	fn glVertexAttribL1dv(&self, index: GLuint, v: *const GLdouble) -> Result<()>;
19941
19942	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL2dv.xhtml>
19943	fn glVertexAttribL2dv(&self, index: GLuint, v: *const GLdouble) -> Result<()>;
19944
19945	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL3dv.xhtml>
19946	fn glVertexAttribL3dv(&self, index: GLuint, v: *const GLdouble) -> Result<()>;
19947
19948	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL4dv.xhtml>
19949	fn glVertexAttribL4dv(&self, index: GLuint, v: *const GLdouble) -> Result<()>;
19950
19951	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribLPointer.xhtml>
19952	fn glVertexAttribLPointer(&self, index: GLuint, size: GLint, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()>;
19953
19954	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribLdv.xhtml>
19955	fn glGetVertexAttribLdv(&self, index: GLuint, pname: GLenum, params: *mut GLdouble) -> Result<()>;
19956
19957	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glViewportArrayv.xhtml>
19958	fn glViewportArrayv(&self, first: GLuint, count: GLsizei, v: *const GLfloat) -> Result<()>;
19959
19960	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glViewportIndexedf.xhtml>
19961	fn glViewportIndexedf(&self, index: GLuint, x: GLfloat, y: GLfloat, w: GLfloat, h: GLfloat) -> Result<()>;
19962
19963	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glViewportIndexedfv.xhtml>
19964	fn glViewportIndexedfv(&self, index: GLuint, v: *const GLfloat) -> Result<()>;
19965
19966	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glScissorArrayv.xhtml>
19967	fn glScissorArrayv(&self, first: GLuint, count: GLsizei, v: *const GLint) -> Result<()>;
19968
19969	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glScissorIndexed.xhtml>
19970	fn glScissorIndexed(&self, index: GLuint, left: GLint, bottom: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
19971
19972	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glScissorIndexedv.xhtml>
19973	fn glScissorIndexedv(&self, index: GLuint, v: *const GLint) -> Result<()>;
19974
19975	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthRangeArrayv.xhtml>
19976	fn glDepthRangeArrayv(&self, first: GLuint, count: GLsizei, v: *const GLdouble) -> Result<()>;
19977
19978	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthRangeIndexed.xhtml>
19979	fn glDepthRangeIndexed(&self, index: GLuint, n: GLdouble, f: GLdouble) -> Result<()>;
19980
19981	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFloati_v.xhtml>
19982	fn glGetFloati_v(&self, target: GLenum, index: GLuint, data: *mut GLfloat) -> Result<()>;
19983
19984	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetDoublei_v.xhtml>
19985	fn glGetDoublei_v(&self, target: GLenum, index: GLuint, data: *mut GLdouble) -> Result<()>;
19986}
19987/// Functions from OpenGL version 4.1
19988#[derive(Clone, Copy, PartialEq, Eq, Hash)]
19989pub struct Version41 {
19990	/// Is OpenGL version 4.1 available
19991	available: bool,
19992
19993	/// The function pointer to `glGetError()`
19994	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
19995	pub geterror: PFNGLGETERRORPROC,
19996
19997	/// The function pointer to `glReleaseShaderCompiler()`
19998	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glReleaseShaderCompiler.xhtml>
19999	pub releaseshadercompiler: PFNGLRELEASESHADERCOMPILERPROC,
20000
20001	/// The function pointer to `glShaderBinary()`
20002	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glShaderBinary.xhtml>
20003	pub shaderbinary: PFNGLSHADERBINARYPROC,
20004
20005	/// The function pointer to `glGetShaderPrecisionFormat()`
20006	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetShaderPrecisionFormat.xhtml>
20007	pub getshaderprecisionformat: PFNGLGETSHADERPRECISIONFORMATPROC,
20008
20009	/// The function pointer to `glDepthRangef()`
20010	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthRangef.xhtml>
20011	pub depthrangef: PFNGLDEPTHRANGEFPROC,
20012
20013	/// The function pointer to `glClearDepthf()`
20014	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearDepthf.xhtml>
20015	pub cleardepthf: PFNGLCLEARDEPTHFPROC,
20016
20017	/// The function pointer to `glGetProgramBinary()`
20018	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramBinary.xhtml>
20019	pub getprogrambinary: PFNGLGETPROGRAMBINARYPROC,
20020
20021	/// The function pointer to `glProgramBinary()`
20022	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramBinary.xhtml>
20023	pub programbinary: PFNGLPROGRAMBINARYPROC,
20024
20025	/// The function pointer to `glProgramParameteri()`
20026	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramParameteri.xhtml>
20027	pub programparameteri: PFNGLPROGRAMPARAMETERIPROC,
20028
20029	/// The function pointer to `glUseProgramStages()`
20030	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUseProgramStages.xhtml>
20031	pub useprogramstages: PFNGLUSEPROGRAMSTAGESPROC,
20032
20033	/// The function pointer to `glActiveShaderProgram()`
20034	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glActiveShaderProgram.xhtml>
20035	pub activeshaderprogram: PFNGLACTIVESHADERPROGRAMPROC,
20036
20037	/// The function pointer to `glCreateShaderProgramv()`
20038	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateShaderProgramv.xhtml>
20039	pub createshaderprogramv: PFNGLCREATESHADERPROGRAMVPROC,
20040
20041	/// The function pointer to `glBindProgramPipeline()`
20042	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindProgramPipeline.xhtml>
20043	pub bindprogrampipeline: PFNGLBINDPROGRAMPIPELINEPROC,
20044
20045	/// The function pointer to `glDeleteProgramPipelines()`
20046	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteProgramPipelines.xhtml>
20047	pub deleteprogrampipelines: PFNGLDELETEPROGRAMPIPELINESPROC,
20048
20049	/// The function pointer to `glGenProgramPipelines()`
20050	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenProgramPipelines.xhtml>
20051	pub genprogrampipelines: PFNGLGENPROGRAMPIPELINESPROC,
20052
20053	/// The function pointer to `glIsProgramPipeline()`
20054	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsProgramPipeline.xhtml>
20055	pub isprogrampipeline: PFNGLISPROGRAMPIPELINEPROC,
20056
20057	/// The function pointer to `glGetProgramPipelineiv()`
20058	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramPipelineiv.xhtml>
20059	pub getprogrampipelineiv: PFNGLGETPROGRAMPIPELINEIVPROC,
20060
20061	/// The function pointer to `glProgramUniform1i()`
20062	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1i.xhtml>
20063	pub programuniform1i: PFNGLPROGRAMUNIFORM1IPROC,
20064
20065	/// The function pointer to `glProgramUniform1iv()`
20066	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1iv.xhtml>
20067	pub programuniform1iv: PFNGLPROGRAMUNIFORM1IVPROC,
20068
20069	/// The function pointer to `glProgramUniform1f()`
20070	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1f.xhtml>
20071	pub programuniform1f: PFNGLPROGRAMUNIFORM1FPROC,
20072
20073	/// The function pointer to `glProgramUniform1fv()`
20074	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1fv.xhtml>
20075	pub programuniform1fv: PFNGLPROGRAMUNIFORM1FVPROC,
20076
20077	/// The function pointer to `glProgramUniform1d()`
20078	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1d.xhtml>
20079	pub programuniform1d: PFNGLPROGRAMUNIFORM1DPROC,
20080
20081	/// The function pointer to `glProgramUniform1dv()`
20082	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1dv.xhtml>
20083	pub programuniform1dv: PFNGLPROGRAMUNIFORM1DVPROC,
20084
20085	/// The function pointer to `glProgramUniform1ui()`
20086	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1ui.xhtml>
20087	pub programuniform1ui: PFNGLPROGRAMUNIFORM1UIPROC,
20088
20089	/// The function pointer to `glProgramUniform1uiv()`
20090	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1uiv.xhtml>
20091	pub programuniform1uiv: PFNGLPROGRAMUNIFORM1UIVPROC,
20092
20093	/// The function pointer to `glProgramUniform2i()`
20094	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2i.xhtml>
20095	pub programuniform2i: PFNGLPROGRAMUNIFORM2IPROC,
20096
20097	/// The function pointer to `glProgramUniform2iv()`
20098	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2iv.xhtml>
20099	pub programuniform2iv: PFNGLPROGRAMUNIFORM2IVPROC,
20100
20101	/// The function pointer to `glProgramUniform2f()`
20102	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2f.xhtml>
20103	pub programuniform2f: PFNGLPROGRAMUNIFORM2FPROC,
20104
20105	/// The function pointer to `glProgramUniform2fv()`
20106	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2fv.xhtml>
20107	pub programuniform2fv: PFNGLPROGRAMUNIFORM2FVPROC,
20108
20109	/// The function pointer to `glProgramUniform2d()`
20110	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2d.xhtml>
20111	pub programuniform2d: PFNGLPROGRAMUNIFORM2DPROC,
20112
20113	/// The function pointer to `glProgramUniform2dv()`
20114	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2dv.xhtml>
20115	pub programuniform2dv: PFNGLPROGRAMUNIFORM2DVPROC,
20116
20117	/// The function pointer to `glProgramUniform2ui()`
20118	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2ui.xhtml>
20119	pub programuniform2ui: PFNGLPROGRAMUNIFORM2UIPROC,
20120
20121	/// The function pointer to `glProgramUniform2uiv()`
20122	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2uiv.xhtml>
20123	pub programuniform2uiv: PFNGLPROGRAMUNIFORM2UIVPROC,
20124
20125	/// The function pointer to `glProgramUniform3i()`
20126	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3i.xhtml>
20127	pub programuniform3i: PFNGLPROGRAMUNIFORM3IPROC,
20128
20129	/// The function pointer to `glProgramUniform3iv()`
20130	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3iv.xhtml>
20131	pub programuniform3iv: PFNGLPROGRAMUNIFORM3IVPROC,
20132
20133	/// The function pointer to `glProgramUniform3f()`
20134	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3f.xhtml>
20135	pub programuniform3f: PFNGLPROGRAMUNIFORM3FPROC,
20136
20137	/// The function pointer to `glProgramUniform3fv()`
20138	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3fv.xhtml>
20139	pub programuniform3fv: PFNGLPROGRAMUNIFORM3FVPROC,
20140
20141	/// The function pointer to `glProgramUniform3d()`
20142	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3d.xhtml>
20143	pub programuniform3d: PFNGLPROGRAMUNIFORM3DPROC,
20144
20145	/// The function pointer to `glProgramUniform3dv()`
20146	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3dv.xhtml>
20147	pub programuniform3dv: PFNGLPROGRAMUNIFORM3DVPROC,
20148
20149	/// The function pointer to `glProgramUniform3ui()`
20150	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3ui.xhtml>
20151	pub programuniform3ui: PFNGLPROGRAMUNIFORM3UIPROC,
20152
20153	/// The function pointer to `glProgramUniform3uiv()`
20154	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3uiv.xhtml>
20155	pub programuniform3uiv: PFNGLPROGRAMUNIFORM3UIVPROC,
20156
20157	/// The function pointer to `glProgramUniform4i()`
20158	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4i.xhtml>
20159	pub programuniform4i: PFNGLPROGRAMUNIFORM4IPROC,
20160
20161	/// The function pointer to `glProgramUniform4iv()`
20162	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4iv.xhtml>
20163	pub programuniform4iv: PFNGLPROGRAMUNIFORM4IVPROC,
20164
20165	/// The function pointer to `glProgramUniform4f()`
20166	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4f.xhtml>
20167	pub programuniform4f: PFNGLPROGRAMUNIFORM4FPROC,
20168
20169	/// The function pointer to `glProgramUniform4fv()`
20170	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4fv.xhtml>
20171	pub programuniform4fv: PFNGLPROGRAMUNIFORM4FVPROC,
20172
20173	/// The function pointer to `glProgramUniform4d()`
20174	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4d.xhtml>
20175	pub programuniform4d: PFNGLPROGRAMUNIFORM4DPROC,
20176
20177	/// The function pointer to `glProgramUniform4dv()`
20178	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4dv.xhtml>
20179	pub programuniform4dv: PFNGLPROGRAMUNIFORM4DVPROC,
20180
20181	/// The function pointer to `glProgramUniform4ui()`
20182	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4ui.xhtml>
20183	pub programuniform4ui: PFNGLPROGRAMUNIFORM4UIPROC,
20184
20185	/// The function pointer to `glProgramUniform4uiv()`
20186	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4uiv.xhtml>
20187	pub programuniform4uiv: PFNGLPROGRAMUNIFORM4UIVPROC,
20188
20189	/// The function pointer to `glProgramUniformMatrix2fv()`
20190	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2fv.xhtml>
20191	pub programuniformmatrix2fv: PFNGLPROGRAMUNIFORMMATRIX2FVPROC,
20192
20193	/// The function pointer to `glProgramUniformMatrix3fv()`
20194	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3fv.xhtml>
20195	pub programuniformmatrix3fv: PFNGLPROGRAMUNIFORMMATRIX3FVPROC,
20196
20197	/// The function pointer to `glProgramUniformMatrix4fv()`
20198	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4fv.xhtml>
20199	pub programuniformmatrix4fv: PFNGLPROGRAMUNIFORMMATRIX4FVPROC,
20200
20201	/// The function pointer to `glProgramUniformMatrix2dv()`
20202	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2dv.xhtml>
20203	pub programuniformmatrix2dv: PFNGLPROGRAMUNIFORMMATRIX2DVPROC,
20204
20205	/// The function pointer to `glProgramUniformMatrix3dv()`
20206	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3dv.xhtml>
20207	pub programuniformmatrix3dv: PFNGLPROGRAMUNIFORMMATRIX3DVPROC,
20208
20209	/// The function pointer to `glProgramUniformMatrix4dv()`
20210	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4dv.xhtml>
20211	pub programuniformmatrix4dv: PFNGLPROGRAMUNIFORMMATRIX4DVPROC,
20212
20213	/// The function pointer to `glProgramUniformMatrix2x3fv()`
20214	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2x3fv.xhtml>
20215	pub programuniformmatrix2x3fv: PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC,
20216
20217	/// The function pointer to `glProgramUniformMatrix3x2fv()`
20218	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3x2fv.xhtml>
20219	pub programuniformmatrix3x2fv: PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC,
20220
20221	/// The function pointer to `glProgramUniformMatrix2x4fv()`
20222	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2x4fv.xhtml>
20223	pub programuniformmatrix2x4fv: PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC,
20224
20225	/// The function pointer to `glProgramUniformMatrix4x2fv()`
20226	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4x2fv.xhtml>
20227	pub programuniformmatrix4x2fv: PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC,
20228
20229	/// The function pointer to `glProgramUniformMatrix3x4fv()`
20230	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3x4fv.xhtml>
20231	pub programuniformmatrix3x4fv: PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC,
20232
20233	/// The function pointer to `glProgramUniformMatrix4x3fv()`
20234	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4x3fv.xhtml>
20235	pub programuniformmatrix4x3fv: PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC,
20236
20237	/// The function pointer to `glProgramUniformMatrix2x3dv()`
20238	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2x3dv.xhtml>
20239	pub programuniformmatrix2x3dv: PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC,
20240
20241	/// The function pointer to `glProgramUniformMatrix3x2dv()`
20242	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3x2dv.xhtml>
20243	pub programuniformmatrix3x2dv: PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC,
20244
20245	/// The function pointer to `glProgramUniformMatrix2x4dv()`
20246	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2x4dv.xhtml>
20247	pub programuniformmatrix2x4dv: PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC,
20248
20249	/// The function pointer to `glProgramUniformMatrix4x2dv()`
20250	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4x2dv.xhtml>
20251	pub programuniformmatrix4x2dv: PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC,
20252
20253	/// The function pointer to `glProgramUniformMatrix3x4dv()`
20254	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3x4dv.xhtml>
20255	pub programuniformmatrix3x4dv: PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC,
20256
20257	/// The function pointer to `glProgramUniformMatrix4x3dv()`
20258	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4x3dv.xhtml>
20259	pub programuniformmatrix4x3dv: PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC,
20260
20261	/// The function pointer to `glValidateProgramPipeline()`
20262	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glValidateProgramPipeline.xhtml>
20263	pub validateprogrampipeline: PFNGLVALIDATEPROGRAMPIPELINEPROC,
20264
20265	/// The function pointer to `glGetProgramPipelineInfoLog()`
20266	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramPipelineInfoLog.xhtml>
20267	pub getprogrampipelineinfolog: PFNGLGETPROGRAMPIPELINEINFOLOGPROC,
20268
20269	/// The function pointer to `glVertexAttribL1d()`
20270	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL1d.xhtml>
20271	pub vertexattribl1d: PFNGLVERTEXATTRIBL1DPROC,
20272
20273	/// The function pointer to `glVertexAttribL2d()`
20274	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL2d.xhtml>
20275	pub vertexattribl2d: PFNGLVERTEXATTRIBL2DPROC,
20276
20277	/// The function pointer to `glVertexAttribL3d()`
20278	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL3d.xhtml>
20279	pub vertexattribl3d: PFNGLVERTEXATTRIBL3DPROC,
20280
20281	/// The function pointer to `glVertexAttribL4d()`
20282	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL4d.xhtml>
20283	pub vertexattribl4d: PFNGLVERTEXATTRIBL4DPROC,
20284
20285	/// The function pointer to `glVertexAttribL1dv()`
20286	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL1dv.xhtml>
20287	pub vertexattribl1dv: PFNGLVERTEXATTRIBL1DVPROC,
20288
20289	/// The function pointer to `glVertexAttribL2dv()`
20290	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL2dv.xhtml>
20291	pub vertexattribl2dv: PFNGLVERTEXATTRIBL2DVPROC,
20292
20293	/// The function pointer to `glVertexAttribL3dv()`
20294	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL3dv.xhtml>
20295	pub vertexattribl3dv: PFNGLVERTEXATTRIBL3DVPROC,
20296
20297	/// The function pointer to `glVertexAttribL4dv()`
20298	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL4dv.xhtml>
20299	pub vertexattribl4dv: PFNGLVERTEXATTRIBL4DVPROC,
20300
20301	/// The function pointer to `glVertexAttribLPointer()`
20302	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribLPointer.xhtml>
20303	pub vertexattriblpointer: PFNGLVERTEXATTRIBLPOINTERPROC,
20304
20305	/// The function pointer to `glGetVertexAttribLdv()`
20306	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribLdv.xhtml>
20307	pub getvertexattribldv: PFNGLGETVERTEXATTRIBLDVPROC,
20308
20309	/// The function pointer to `glViewportArrayv()`
20310	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glViewportArrayv.xhtml>
20311	pub viewportarrayv: PFNGLVIEWPORTARRAYVPROC,
20312
20313	/// The function pointer to `glViewportIndexedf()`
20314	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glViewportIndexedf.xhtml>
20315	pub viewportindexedf: PFNGLVIEWPORTINDEXEDFPROC,
20316
20317	/// The function pointer to `glViewportIndexedfv()`
20318	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glViewportIndexedfv.xhtml>
20319	pub viewportindexedfv: PFNGLVIEWPORTINDEXEDFVPROC,
20320
20321	/// The function pointer to `glScissorArrayv()`
20322	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glScissorArrayv.xhtml>
20323	pub scissorarrayv: PFNGLSCISSORARRAYVPROC,
20324
20325	/// The function pointer to `glScissorIndexed()`
20326	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glScissorIndexed.xhtml>
20327	pub scissorindexed: PFNGLSCISSORINDEXEDPROC,
20328
20329	/// The function pointer to `glScissorIndexedv()`
20330	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glScissorIndexedv.xhtml>
20331	pub scissorindexedv: PFNGLSCISSORINDEXEDVPROC,
20332
20333	/// The function pointer to `glDepthRangeArrayv()`
20334	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthRangeArrayv.xhtml>
20335	pub depthrangearrayv: PFNGLDEPTHRANGEARRAYVPROC,
20336
20337	/// The function pointer to `glDepthRangeIndexed()`
20338	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthRangeIndexed.xhtml>
20339	pub depthrangeindexed: PFNGLDEPTHRANGEINDEXEDPROC,
20340
20341	/// The function pointer to `glGetFloati_v()`
20342	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFloati_v.xhtml>
20343	pub getfloati_v: PFNGLGETFLOATI_VPROC,
20344
20345	/// The function pointer to `glGetDoublei_v()`
20346	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetDoublei_v.xhtml>
20347	pub getdoublei_v: PFNGLGETDOUBLEI_VPROC,
20348}
20349
20350impl GL_4_1 for Version41 {
20351	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
20352	#[inline(always)]
20353	fn glGetError(&self) -> GLenum {
20354		(self.geterror)()
20355	}
20356	#[inline(always)]
20357	fn glReleaseShaderCompiler(&self) -> Result<()> {
20358		let ret = process_catch("glReleaseShaderCompiler", catch_unwind(||(self.releaseshadercompiler)()));
20359		#[cfg(feature = "diagnose")]
20360		if let Ok(ret) = ret {
20361			return to_result("glReleaseShaderCompiler", ret, self.glGetError());
20362		} else {
20363			return ret
20364		}
20365		#[cfg(not(feature = "diagnose"))]
20366		return ret;
20367	}
20368	#[inline(always)]
20369	fn glShaderBinary(&self, count: GLsizei, shaders: *const GLuint, binaryFormat: GLenum, binary: *const c_void, length: GLsizei) -> Result<()> {
20370		let ret = process_catch("glShaderBinary", catch_unwind(||(self.shaderbinary)(count, shaders, binaryFormat, binary, length)));
20371		#[cfg(feature = "diagnose")]
20372		if let Ok(ret) = ret {
20373			return to_result("glShaderBinary", ret, self.glGetError());
20374		} else {
20375			return ret
20376		}
20377		#[cfg(not(feature = "diagnose"))]
20378		return ret;
20379	}
20380	#[inline(always)]
20381	fn glGetShaderPrecisionFormat(&self, shadertype: GLenum, precisiontype: GLenum, range: *mut GLint, precision: *mut GLint) -> Result<()> {
20382		let ret = process_catch("glGetShaderPrecisionFormat", catch_unwind(||(self.getshaderprecisionformat)(shadertype, precisiontype, range, precision)));
20383		#[cfg(feature = "diagnose")]
20384		if let Ok(ret) = ret {
20385			return to_result("glGetShaderPrecisionFormat", ret, self.glGetError());
20386		} else {
20387			return ret
20388		}
20389		#[cfg(not(feature = "diagnose"))]
20390		return ret;
20391	}
20392	#[inline(always)]
20393	fn glDepthRangef(&self, n: GLfloat, f: GLfloat) -> Result<()> {
20394		let ret = process_catch("glDepthRangef", catch_unwind(||(self.depthrangef)(n, f)));
20395		#[cfg(feature = "diagnose")]
20396		if let Ok(ret) = ret {
20397			return to_result("glDepthRangef", ret, self.glGetError());
20398		} else {
20399			return ret
20400		}
20401		#[cfg(not(feature = "diagnose"))]
20402		return ret;
20403	}
20404	#[inline(always)]
20405	fn glClearDepthf(&self, d: GLfloat) -> Result<()> {
20406		let ret = process_catch("glClearDepthf", catch_unwind(||(self.cleardepthf)(d)));
20407		#[cfg(feature = "diagnose")]
20408		if let Ok(ret) = ret {
20409			return to_result("glClearDepthf", ret, self.glGetError());
20410		} else {
20411			return ret
20412		}
20413		#[cfg(not(feature = "diagnose"))]
20414		return ret;
20415	}
20416	#[inline(always)]
20417	fn glGetProgramBinary(&self, program: GLuint, bufSize: GLsizei, length: *mut GLsizei, binaryFormat: *mut GLenum, binary: *mut c_void) -> Result<()> {
20418		let ret = process_catch("glGetProgramBinary", catch_unwind(||(self.getprogrambinary)(program, bufSize, length, binaryFormat, binary)));
20419		#[cfg(feature = "diagnose")]
20420		if let Ok(ret) = ret {
20421			return to_result("glGetProgramBinary", ret, self.glGetError());
20422		} else {
20423			return ret
20424		}
20425		#[cfg(not(feature = "diagnose"))]
20426		return ret;
20427	}
20428	#[inline(always)]
20429	fn glProgramBinary(&self, program: GLuint, binaryFormat: GLenum, binary: *const c_void, length: GLsizei) -> Result<()> {
20430		let ret = process_catch("glProgramBinary", catch_unwind(||(self.programbinary)(program, binaryFormat, binary, length)));
20431		#[cfg(feature = "diagnose")]
20432		if let Ok(ret) = ret {
20433			return to_result("glProgramBinary", ret, self.glGetError());
20434		} else {
20435			return ret
20436		}
20437		#[cfg(not(feature = "diagnose"))]
20438		return ret;
20439	}
20440	#[inline(always)]
20441	fn glProgramParameteri(&self, program: GLuint, pname: GLenum, value: GLint) -> Result<()> {
20442		let ret = process_catch("glProgramParameteri", catch_unwind(||(self.programparameteri)(program, pname, value)));
20443		#[cfg(feature = "diagnose")]
20444		if let Ok(ret) = ret {
20445			return to_result("glProgramParameteri", ret, self.glGetError());
20446		} else {
20447			return ret
20448		}
20449		#[cfg(not(feature = "diagnose"))]
20450		return ret;
20451	}
20452	#[inline(always)]
20453	fn glUseProgramStages(&self, pipeline: GLuint, stages: GLbitfield, program: GLuint) -> Result<()> {
20454		let ret = process_catch("glUseProgramStages", catch_unwind(||(self.useprogramstages)(pipeline, stages, program)));
20455		#[cfg(feature = "diagnose")]
20456		if let Ok(ret) = ret {
20457			return to_result("glUseProgramStages", ret, self.glGetError());
20458		} else {
20459			return ret
20460		}
20461		#[cfg(not(feature = "diagnose"))]
20462		return ret;
20463	}
20464	#[inline(always)]
20465	fn glActiveShaderProgram(&self, pipeline: GLuint, program: GLuint) -> Result<()> {
20466		let ret = process_catch("glActiveShaderProgram", catch_unwind(||(self.activeshaderprogram)(pipeline, program)));
20467		#[cfg(feature = "diagnose")]
20468		if let Ok(ret) = ret {
20469			return to_result("glActiveShaderProgram", ret, self.glGetError());
20470		} else {
20471			return ret
20472		}
20473		#[cfg(not(feature = "diagnose"))]
20474		return ret;
20475	}
20476	#[inline(always)]
20477	fn glCreateShaderProgramv(&self, type_: GLenum, count: GLsizei, strings: *const *const GLchar) -> Result<GLuint> {
20478		let ret = process_catch("glCreateShaderProgramv", catch_unwind(||(self.createshaderprogramv)(type_, count, strings)));
20479		#[cfg(feature = "diagnose")]
20480		if let Ok(ret) = ret {
20481			return to_result("glCreateShaderProgramv", ret, self.glGetError());
20482		} else {
20483			return ret
20484		}
20485		#[cfg(not(feature = "diagnose"))]
20486		return ret;
20487	}
20488	#[inline(always)]
20489	fn glBindProgramPipeline(&self, pipeline: GLuint) -> Result<()> {
20490		let ret = process_catch("glBindProgramPipeline", catch_unwind(||(self.bindprogrampipeline)(pipeline)));
20491		#[cfg(feature = "diagnose")]
20492		if let Ok(ret) = ret {
20493			return to_result("glBindProgramPipeline", ret, self.glGetError());
20494		} else {
20495			return ret
20496		}
20497		#[cfg(not(feature = "diagnose"))]
20498		return ret;
20499	}
20500	#[inline(always)]
20501	fn glDeleteProgramPipelines(&self, n: GLsizei, pipelines: *const GLuint) -> Result<()> {
20502		let ret = process_catch("glDeleteProgramPipelines", catch_unwind(||(self.deleteprogrampipelines)(n, pipelines)));
20503		#[cfg(feature = "diagnose")]
20504		if let Ok(ret) = ret {
20505			return to_result("glDeleteProgramPipelines", ret, self.glGetError());
20506		} else {
20507			return ret
20508		}
20509		#[cfg(not(feature = "diagnose"))]
20510		return ret;
20511	}
20512	#[inline(always)]
20513	fn glGenProgramPipelines(&self, n: GLsizei, pipelines: *mut GLuint) -> Result<()> {
20514		let ret = process_catch("glGenProgramPipelines", catch_unwind(||(self.genprogrampipelines)(n, pipelines)));
20515		#[cfg(feature = "diagnose")]
20516		if let Ok(ret) = ret {
20517			return to_result("glGenProgramPipelines", ret, self.glGetError());
20518		} else {
20519			return ret
20520		}
20521		#[cfg(not(feature = "diagnose"))]
20522		return ret;
20523	}
20524	#[inline(always)]
20525	fn glIsProgramPipeline(&self, pipeline: GLuint) -> Result<GLboolean> {
20526		let ret = process_catch("glIsProgramPipeline", catch_unwind(||(self.isprogrampipeline)(pipeline)));
20527		#[cfg(feature = "diagnose")]
20528		if let Ok(ret) = ret {
20529			return to_result("glIsProgramPipeline", ret, self.glGetError());
20530		} else {
20531			return ret
20532		}
20533		#[cfg(not(feature = "diagnose"))]
20534		return ret;
20535	}
20536	#[inline(always)]
20537	fn glGetProgramPipelineiv(&self, pipeline: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
20538		let ret = process_catch("glGetProgramPipelineiv", catch_unwind(||(self.getprogrampipelineiv)(pipeline, pname, params)));
20539		#[cfg(feature = "diagnose")]
20540		if let Ok(ret) = ret {
20541			return to_result("glGetProgramPipelineiv", ret, self.glGetError());
20542		} else {
20543			return ret
20544		}
20545		#[cfg(not(feature = "diagnose"))]
20546		return ret;
20547	}
20548	#[inline(always)]
20549	fn glProgramUniform1i(&self, program: GLuint, location: GLint, v0: GLint) -> Result<()> {
20550		let ret = process_catch("glProgramUniform1i", catch_unwind(||(self.programuniform1i)(program, location, v0)));
20551		#[cfg(feature = "diagnose")]
20552		if let Ok(ret) = ret {
20553			return to_result("glProgramUniform1i", ret, self.glGetError());
20554		} else {
20555			return ret
20556		}
20557		#[cfg(not(feature = "diagnose"))]
20558		return ret;
20559	}
20560	#[inline(always)]
20561	fn glProgramUniform1iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
20562		let ret = process_catch("glProgramUniform1iv", catch_unwind(||(self.programuniform1iv)(program, location, count, value)));
20563		#[cfg(feature = "diagnose")]
20564		if let Ok(ret) = ret {
20565			return to_result("glProgramUniform1iv", ret, self.glGetError());
20566		} else {
20567			return ret
20568		}
20569		#[cfg(not(feature = "diagnose"))]
20570		return ret;
20571	}
20572	#[inline(always)]
20573	fn glProgramUniform1f(&self, program: GLuint, location: GLint, v0: GLfloat) -> Result<()> {
20574		let ret = process_catch("glProgramUniform1f", catch_unwind(||(self.programuniform1f)(program, location, v0)));
20575		#[cfg(feature = "diagnose")]
20576		if let Ok(ret) = ret {
20577			return to_result("glProgramUniform1f", ret, self.glGetError());
20578		} else {
20579			return ret
20580		}
20581		#[cfg(not(feature = "diagnose"))]
20582		return ret;
20583	}
20584	#[inline(always)]
20585	fn glProgramUniform1fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
20586		let ret = process_catch("glProgramUniform1fv", catch_unwind(||(self.programuniform1fv)(program, location, count, value)));
20587		#[cfg(feature = "diagnose")]
20588		if let Ok(ret) = ret {
20589			return to_result("glProgramUniform1fv", ret, self.glGetError());
20590		} else {
20591			return ret
20592		}
20593		#[cfg(not(feature = "diagnose"))]
20594		return ret;
20595	}
20596	#[inline(always)]
20597	fn glProgramUniform1d(&self, program: GLuint, location: GLint, v0: GLdouble) -> Result<()> {
20598		let ret = process_catch("glProgramUniform1d", catch_unwind(||(self.programuniform1d)(program, location, v0)));
20599		#[cfg(feature = "diagnose")]
20600		if let Ok(ret) = ret {
20601			return to_result("glProgramUniform1d", ret, self.glGetError());
20602		} else {
20603			return ret
20604		}
20605		#[cfg(not(feature = "diagnose"))]
20606		return ret;
20607	}
20608	#[inline(always)]
20609	fn glProgramUniform1dv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()> {
20610		let ret = process_catch("glProgramUniform1dv", catch_unwind(||(self.programuniform1dv)(program, location, count, value)));
20611		#[cfg(feature = "diagnose")]
20612		if let Ok(ret) = ret {
20613			return to_result("glProgramUniform1dv", ret, self.glGetError());
20614		} else {
20615			return ret
20616		}
20617		#[cfg(not(feature = "diagnose"))]
20618		return ret;
20619	}
20620	#[inline(always)]
20621	fn glProgramUniform1ui(&self, program: GLuint, location: GLint, v0: GLuint) -> Result<()> {
20622		let ret = process_catch("glProgramUniform1ui", catch_unwind(||(self.programuniform1ui)(program, location, v0)));
20623		#[cfg(feature = "diagnose")]
20624		if let Ok(ret) = ret {
20625			return to_result("glProgramUniform1ui", ret, self.glGetError());
20626		} else {
20627			return ret
20628		}
20629		#[cfg(not(feature = "diagnose"))]
20630		return ret;
20631	}
20632	#[inline(always)]
20633	fn glProgramUniform1uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
20634		let ret = process_catch("glProgramUniform1uiv", catch_unwind(||(self.programuniform1uiv)(program, location, count, value)));
20635		#[cfg(feature = "diagnose")]
20636		if let Ok(ret) = ret {
20637			return to_result("glProgramUniform1uiv", ret, self.glGetError());
20638		} else {
20639			return ret
20640		}
20641		#[cfg(not(feature = "diagnose"))]
20642		return ret;
20643	}
20644	#[inline(always)]
20645	fn glProgramUniform2i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint) -> Result<()> {
20646		let ret = process_catch("glProgramUniform2i", catch_unwind(||(self.programuniform2i)(program, location, v0, v1)));
20647		#[cfg(feature = "diagnose")]
20648		if let Ok(ret) = ret {
20649			return to_result("glProgramUniform2i", ret, self.glGetError());
20650		} else {
20651			return ret
20652		}
20653		#[cfg(not(feature = "diagnose"))]
20654		return ret;
20655	}
20656	#[inline(always)]
20657	fn glProgramUniform2iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
20658		let ret = process_catch("glProgramUniform2iv", catch_unwind(||(self.programuniform2iv)(program, location, count, value)));
20659		#[cfg(feature = "diagnose")]
20660		if let Ok(ret) = ret {
20661			return to_result("glProgramUniform2iv", ret, self.glGetError());
20662		} else {
20663			return ret
20664		}
20665		#[cfg(not(feature = "diagnose"))]
20666		return ret;
20667	}
20668	#[inline(always)]
20669	fn glProgramUniform2f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat) -> Result<()> {
20670		let ret = process_catch("glProgramUniform2f", catch_unwind(||(self.programuniform2f)(program, location, v0, v1)));
20671		#[cfg(feature = "diagnose")]
20672		if let Ok(ret) = ret {
20673			return to_result("glProgramUniform2f", ret, self.glGetError());
20674		} else {
20675			return ret
20676		}
20677		#[cfg(not(feature = "diagnose"))]
20678		return ret;
20679	}
20680	#[inline(always)]
20681	fn glProgramUniform2fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
20682		let ret = process_catch("glProgramUniform2fv", catch_unwind(||(self.programuniform2fv)(program, location, count, value)));
20683		#[cfg(feature = "diagnose")]
20684		if let Ok(ret) = ret {
20685			return to_result("glProgramUniform2fv", ret, self.glGetError());
20686		} else {
20687			return ret
20688		}
20689		#[cfg(not(feature = "diagnose"))]
20690		return ret;
20691	}
20692	#[inline(always)]
20693	fn glProgramUniform2d(&self, program: GLuint, location: GLint, v0: GLdouble, v1: GLdouble) -> Result<()> {
20694		let ret = process_catch("glProgramUniform2d", catch_unwind(||(self.programuniform2d)(program, location, v0, v1)));
20695		#[cfg(feature = "diagnose")]
20696		if let Ok(ret) = ret {
20697			return to_result("glProgramUniform2d", ret, self.glGetError());
20698		} else {
20699			return ret
20700		}
20701		#[cfg(not(feature = "diagnose"))]
20702		return ret;
20703	}
20704	#[inline(always)]
20705	fn glProgramUniform2dv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()> {
20706		let ret = process_catch("glProgramUniform2dv", catch_unwind(||(self.programuniform2dv)(program, location, count, value)));
20707		#[cfg(feature = "diagnose")]
20708		if let Ok(ret) = ret {
20709			return to_result("glProgramUniform2dv", ret, self.glGetError());
20710		} else {
20711			return ret
20712		}
20713		#[cfg(not(feature = "diagnose"))]
20714		return ret;
20715	}
20716	#[inline(always)]
20717	fn glProgramUniform2ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint) -> Result<()> {
20718		let ret = process_catch("glProgramUniform2ui", catch_unwind(||(self.programuniform2ui)(program, location, v0, v1)));
20719		#[cfg(feature = "diagnose")]
20720		if let Ok(ret) = ret {
20721			return to_result("glProgramUniform2ui", ret, self.glGetError());
20722		} else {
20723			return ret
20724		}
20725		#[cfg(not(feature = "diagnose"))]
20726		return ret;
20727	}
20728	#[inline(always)]
20729	fn glProgramUniform2uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
20730		let ret = process_catch("glProgramUniform2uiv", catch_unwind(||(self.programuniform2uiv)(program, location, count, value)));
20731		#[cfg(feature = "diagnose")]
20732		if let Ok(ret) = ret {
20733			return to_result("glProgramUniform2uiv", ret, self.glGetError());
20734		} else {
20735			return ret
20736		}
20737		#[cfg(not(feature = "diagnose"))]
20738		return ret;
20739	}
20740	#[inline(always)]
20741	fn glProgramUniform3i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint, v2: GLint) -> Result<()> {
20742		let ret = process_catch("glProgramUniform3i", catch_unwind(||(self.programuniform3i)(program, location, v0, v1, v2)));
20743		#[cfg(feature = "diagnose")]
20744		if let Ok(ret) = ret {
20745			return to_result("glProgramUniform3i", ret, self.glGetError());
20746		} else {
20747			return ret
20748		}
20749		#[cfg(not(feature = "diagnose"))]
20750		return ret;
20751	}
20752	#[inline(always)]
20753	fn glProgramUniform3iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
20754		let ret = process_catch("glProgramUniform3iv", catch_unwind(||(self.programuniform3iv)(program, location, count, value)));
20755		#[cfg(feature = "diagnose")]
20756		if let Ok(ret) = ret {
20757			return to_result("glProgramUniform3iv", ret, self.glGetError());
20758		} else {
20759			return ret
20760		}
20761		#[cfg(not(feature = "diagnose"))]
20762		return ret;
20763	}
20764	#[inline(always)]
20765	fn glProgramUniform3f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat) -> Result<()> {
20766		let ret = process_catch("glProgramUniform3f", catch_unwind(||(self.programuniform3f)(program, location, v0, v1, v2)));
20767		#[cfg(feature = "diagnose")]
20768		if let Ok(ret) = ret {
20769			return to_result("glProgramUniform3f", ret, self.glGetError());
20770		} else {
20771			return ret
20772		}
20773		#[cfg(not(feature = "diagnose"))]
20774		return ret;
20775	}
20776	#[inline(always)]
20777	fn glProgramUniform3fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
20778		let ret = process_catch("glProgramUniform3fv", catch_unwind(||(self.programuniform3fv)(program, location, count, value)));
20779		#[cfg(feature = "diagnose")]
20780		if let Ok(ret) = ret {
20781			return to_result("glProgramUniform3fv", ret, self.glGetError());
20782		} else {
20783			return ret
20784		}
20785		#[cfg(not(feature = "diagnose"))]
20786		return ret;
20787	}
20788	#[inline(always)]
20789	fn glProgramUniform3d(&self, program: GLuint, location: GLint, v0: GLdouble, v1: GLdouble, v2: GLdouble) -> Result<()> {
20790		let ret = process_catch("glProgramUniform3d", catch_unwind(||(self.programuniform3d)(program, location, v0, v1, v2)));
20791		#[cfg(feature = "diagnose")]
20792		if let Ok(ret) = ret {
20793			return to_result("glProgramUniform3d", ret, self.glGetError());
20794		} else {
20795			return ret
20796		}
20797		#[cfg(not(feature = "diagnose"))]
20798		return ret;
20799	}
20800	#[inline(always)]
20801	fn glProgramUniform3dv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()> {
20802		let ret = process_catch("glProgramUniform3dv", catch_unwind(||(self.programuniform3dv)(program, location, count, value)));
20803		#[cfg(feature = "diagnose")]
20804		if let Ok(ret) = ret {
20805			return to_result("glProgramUniform3dv", ret, self.glGetError());
20806		} else {
20807			return ret
20808		}
20809		#[cfg(not(feature = "diagnose"))]
20810		return ret;
20811	}
20812	#[inline(always)]
20813	fn glProgramUniform3ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint) -> Result<()> {
20814		let ret = process_catch("glProgramUniform3ui", catch_unwind(||(self.programuniform3ui)(program, location, v0, v1, v2)));
20815		#[cfg(feature = "diagnose")]
20816		if let Ok(ret) = ret {
20817			return to_result("glProgramUniform3ui", ret, self.glGetError());
20818		} else {
20819			return ret
20820		}
20821		#[cfg(not(feature = "diagnose"))]
20822		return ret;
20823	}
20824	#[inline(always)]
20825	fn glProgramUniform3uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
20826		let ret = process_catch("glProgramUniform3uiv", catch_unwind(||(self.programuniform3uiv)(program, location, count, value)));
20827		#[cfg(feature = "diagnose")]
20828		if let Ok(ret) = ret {
20829			return to_result("glProgramUniform3uiv", ret, self.glGetError());
20830		} else {
20831			return ret
20832		}
20833		#[cfg(not(feature = "diagnose"))]
20834		return ret;
20835	}
20836	#[inline(always)]
20837	fn glProgramUniform4i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint, v2: GLint, v3: GLint) -> Result<()> {
20838		let ret = process_catch("glProgramUniform4i", catch_unwind(||(self.programuniform4i)(program, location, v0, v1, v2, v3)));
20839		#[cfg(feature = "diagnose")]
20840		if let Ok(ret) = ret {
20841			return to_result("glProgramUniform4i", ret, self.glGetError());
20842		} else {
20843			return ret
20844		}
20845		#[cfg(not(feature = "diagnose"))]
20846		return ret;
20847	}
20848	#[inline(always)]
20849	fn glProgramUniform4iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
20850		let ret = process_catch("glProgramUniform4iv", catch_unwind(||(self.programuniform4iv)(program, location, count, value)));
20851		#[cfg(feature = "diagnose")]
20852		if let Ok(ret) = ret {
20853			return to_result("glProgramUniform4iv", ret, self.glGetError());
20854		} else {
20855			return ret
20856		}
20857		#[cfg(not(feature = "diagnose"))]
20858		return ret;
20859	}
20860	#[inline(always)]
20861	fn glProgramUniform4f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat, v3: GLfloat) -> Result<()> {
20862		let ret = process_catch("glProgramUniform4f", catch_unwind(||(self.programuniform4f)(program, location, v0, v1, v2, v3)));
20863		#[cfg(feature = "diagnose")]
20864		if let Ok(ret) = ret {
20865			return to_result("glProgramUniform4f", ret, self.glGetError());
20866		} else {
20867			return ret
20868		}
20869		#[cfg(not(feature = "diagnose"))]
20870		return ret;
20871	}
20872	#[inline(always)]
20873	fn glProgramUniform4fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
20874		let ret = process_catch("glProgramUniform4fv", catch_unwind(||(self.programuniform4fv)(program, location, count, value)));
20875		#[cfg(feature = "diagnose")]
20876		if let Ok(ret) = ret {
20877			return to_result("glProgramUniform4fv", ret, self.glGetError());
20878		} else {
20879			return ret
20880		}
20881		#[cfg(not(feature = "diagnose"))]
20882		return ret;
20883	}
20884	#[inline(always)]
20885	fn glProgramUniform4d(&self, program: GLuint, location: GLint, v0: GLdouble, v1: GLdouble, v2: GLdouble, v3: GLdouble) -> Result<()> {
20886		let ret = process_catch("glProgramUniform4d", catch_unwind(||(self.programuniform4d)(program, location, v0, v1, v2, v3)));
20887		#[cfg(feature = "diagnose")]
20888		if let Ok(ret) = ret {
20889			return to_result("glProgramUniform4d", ret, self.glGetError());
20890		} else {
20891			return ret
20892		}
20893		#[cfg(not(feature = "diagnose"))]
20894		return ret;
20895	}
20896	#[inline(always)]
20897	fn glProgramUniform4dv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()> {
20898		let ret = process_catch("glProgramUniform4dv", catch_unwind(||(self.programuniform4dv)(program, location, count, value)));
20899		#[cfg(feature = "diagnose")]
20900		if let Ok(ret) = ret {
20901			return to_result("glProgramUniform4dv", ret, self.glGetError());
20902		} else {
20903			return ret
20904		}
20905		#[cfg(not(feature = "diagnose"))]
20906		return ret;
20907	}
20908	#[inline(always)]
20909	fn glProgramUniform4ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint, v3: GLuint) -> Result<()> {
20910		let ret = process_catch("glProgramUniform4ui", catch_unwind(||(self.programuniform4ui)(program, location, v0, v1, v2, v3)));
20911		#[cfg(feature = "diagnose")]
20912		if let Ok(ret) = ret {
20913			return to_result("glProgramUniform4ui", ret, self.glGetError());
20914		} else {
20915			return ret
20916		}
20917		#[cfg(not(feature = "diagnose"))]
20918		return ret;
20919	}
20920	#[inline(always)]
20921	fn glProgramUniform4uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
20922		let ret = process_catch("glProgramUniform4uiv", catch_unwind(||(self.programuniform4uiv)(program, location, count, value)));
20923		#[cfg(feature = "diagnose")]
20924		if let Ok(ret) = ret {
20925			return to_result("glProgramUniform4uiv", ret, self.glGetError());
20926		} else {
20927			return ret
20928		}
20929		#[cfg(not(feature = "diagnose"))]
20930		return ret;
20931	}
20932	#[inline(always)]
20933	fn glProgramUniformMatrix2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
20934		let ret = process_catch("glProgramUniformMatrix2fv", catch_unwind(||(self.programuniformmatrix2fv)(program, location, count, transpose, value)));
20935		#[cfg(feature = "diagnose")]
20936		if let Ok(ret) = ret {
20937			return to_result("glProgramUniformMatrix2fv", ret, self.glGetError());
20938		} else {
20939			return ret
20940		}
20941		#[cfg(not(feature = "diagnose"))]
20942		return ret;
20943	}
20944	#[inline(always)]
20945	fn glProgramUniformMatrix3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
20946		let ret = process_catch("glProgramUniformMatrix3fv", catch_unwind(||(self.programuniformmatrix3fv)(program, location, count, transpose, value)));
20947		#[cfg(feature = "diagnose")]
20948		if let Ok(ret) = ret {
20949			return to_result("glProgramUniformMatrix3fv", ret, self.glGetError());
20950		} else {
20951			return ret
20952		}
20953		#[cfg(not(feature = "diagnose"))]
20954		return ret;
20955	}
20956	#[inline(always)]
20957	fn glProgramUniformMatrix4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
20958		let ret = process_catch("glProgramUniformMatrix4fv", catch_unwind(||(self.programuniformmatrix4fv)(program, location, count, transpose, value)));
20959		#[cfg(feature = "diagnose")]
20960		if let Ok(ret) = ret {
20961			return to_result("glProgramUniformMatrix4fv", ret, self.glGetError());
20962		} else {
20963			return ret
20964		}
20965		#[cfg(not(feature = "diagnose"))]
20966		return ret;
20967	}
20968	#[inline(always)]
20969	fn glProgramUniformMatrix2dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
20970		let ret = process_catch("glProgramUniformMatrix2dv", catch_unwind(||(self.programuniformmatrix2dv)(program, location, count, transpose, value)));
20971		#[cfg(feature = "diagnose")]
20972		if let Ok(ret) = ret {
20973			return to_result("glProgramUniformMatrix2dv", ret, self.glGetError());
20974		} else {
20975			return ret
20976		}
20977		#[cfg(not(feature = "diagnose"))]
20978		return ret;
20979	}
20980	#[inline(always)]
20981	fn glProgramUniformMatrix3dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
20982		let ret = process_catch("glProgramUniformMatrix3dv", catch_unwind(||(self.programuniformmatrix3dv)(program, location, count, transpose, value)));
20983		#[cfg(feature = "diagnose")]
20984		if let Ok(ret) = ret {
20985			return to_result("glProgramUniformMatrix3dv", ret, self.glGetError());
20986		} else {
20987			return ret
20988		}
20989		#[cfg(not(feature = "diagnose"))]
20990		return ret;
20991	}
20992	#[inline(always)]
20993	fn glProgramUniformMatrix4dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
20994		let ret = process_catch("glProgramUniformMatrix4dv", catch_unwind(||(self.programuniformmatrix4dv)(program, location, count, transpose, value)));
20995		#[cfg(feature = "diagnose")]
20996		if let Ok(ret) = ret {
20997			return to_result("glProgramUniformMatrix4dv", ret, self.glGetError());
20998		} else {
20999			return ret
21000		}
21001		#[cfg(not(feature = "diagnose"))]
21002		return ret;
21003	}
21004	#[inline(always)]
21005	fn glProgramUniformMatrix2x3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
21006		let ret = process_catch("glProgramUniformMatrix2x3fv", catch_unwind(||(self.programuniformmatrix2x3fv)(program, location, count, transpose, value)));
21007		#[cfg(feature = "diagnose")]
21008		if let Ok(ret) = ret {
21009			return to_result("glProgramUniformMatrix2x3fv", ret, self.glGetError());
21010		} else {
21011			return ret
21012		}
21013		#[cfg(not(feature = "diagnose"))]
21014		return ret;
21015	}
21016	#[inline(always)]
21017	fn glProgramUniformMatrix3x2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
21018		let ret = process_catch("glProgramUniformMatrix3x2fv", catch_unwind(||(self.programuniformmatrix3x2fv)(program, location, count, transpose, value)));
21019		#[cfg(feature = "diagnose")]
21020		if let Ok(ret) = ret {
21021			return to_result("glProgramUniformMatrix3x2fv", ret, self.glGetError());
21022		} else {
21023			return ret
21024		}
21025		#[cfg(not(feature = "diagnose"))]
21026		return ret;
21027	}
21028	#[inline(always)]
21029	fn glProgramUniformMatrix2x4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
21030		let ret = process_catch("glProgramUniformMatrix2x4fv", catch_unwind(||(self.programuniformmatrix2x4fv)(program, location, count, transpose, value)));
21031		#[cfg(feature = "diagnose")]
21032		if let Ok(ret) = ret {
21033			return to_result("glProgramUniformMatrix2x4fv", ret, self.glGetError());
21034		} else {
21035			return ret
21036		}
21037		#[cfg(not(feature = "diagnose"))]
21038		return ret;
21039	}
21040	#[inline(always)]
21041	fn glProgramUniformMatrix4x2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
21042		let ret = process_catch("glProgramUniformMatrix4x2fv", catch_unwind(||(self.programuniformmatrix4x2fv)(program, location, count, transpose, value)));
21043		#[cfg(feature = "diagnose")]
21044		if let Ok(ret) = ret {
21045			return to_result("glProgramUniformMatrix4x2fv", ret, self.glGetError());
21046		} else {
21047			return ret
21048		}
21049		#[cfg(not(feature = "diagnose"))]
21050		return ret;
21051	}
21052	#[inline(always)]
21053	fn glProgramUniformMatrix3x4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
21054		let ret = process_catch("glProgramUniformMatrix3x4fv", catch_unwind(||(self.programuniformmatrix3x4fv)(program, location, count, transpose, value)));
21055		#[cfg(feature = "diagnose")]
21056		if let Ok(ret) = ret {
21057			return to_result("glProgramUniformMatrix3x4fv", ret, self.glGetError());
21058		} else {
21059			return ret
21060		}
21061		#[cfg(not(feature = "diagnose"))]
21062		return ret;
21063	}
21064	#[inline(always)]
21065	fn glProgramUniformMatrix4x3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
21066		let ret = process_catch("glProgramUniformMatrix4x3fv", catch_unwind(||(self.programuniformmatrix4x3fv)(program, location, count, transpose, value)));
21067		#[cfg(feature = "diagnose")]
21068		if let Ok(ret) = ret {
21069			return to_result("glProgramUniformMatrix4x3fv", ret, self.glGetError());
21070		} else {
21071			return ret
21072		}
21073		#[cfg(not(feature = "diagnose"))]
21074		return ret;
21075	}
21076	#[inline(always)]
21077	fn glProgramUniformMatrix2x3dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
21078		let ret = process_catch("glProgramUniformMatrix2x3dv", catch_unwind(||(self.programuniformmatrix2x3dv)(program, location, count, transpose, value)));
21079		#[cfg(feature = "diagnose")]
21080		if let Ok(ret) = ret {
21081			return to_result("glProgramUniformMatrix2x3dv", ret, self.glGetError());
21082		} else {
21083			return ret
21084		}
21085		#[cfg(not(feature = "diagnose"))]
21086		return ret;
21087	}
21088	#[inline(always)]
21089	fn glProgramUniformMatrix3x2dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
21090		let ret = process_catch("glProgramUniformMatrix3x2dv", catch_unwind(||(self.programuniformmatrix3x2dv)(program, location, count, transpose, value)));
21091		#[cfg(feature = "diagnose")]
21092		if let Ok(ret) = ret {
21093			return to_result("glProgramUniformMatrix3x2dv", ret, self.glGetError());
21094		} else {
21095			return ret
21096		}
21097		#[cfg(not(feature = "diagnose"))]
21098		return ret;
21099	}
21100	#[inline(always)]
21101	fn glProgramUniformMatrix2x4dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
21102		let ret = process_catch("glProgramUniformMatrix2x4dv", catch_unwind(||(self.programuniformmatrix2x4dv)(program, location, count, transpose, value)));
21103		#[cfg(feature = "diagnose")]
21104		if let Ok(ret) = ret {
21105			return to_result("glProgramUniformMatrix2x4dv", ret, self.glGetError());
21106		} else {
21107			return ret
21108		}
21109		#[cfg(not(feature = "diagnose"))]
21110		return ret;
21111	}
21112	#[inline(always)]
21113	fn glProgramUniformMatrix4x2dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
21114		let ret = process_catch("glProgramUniformMatrix4x2dv", catch_unwind(||(self.programuniformmatrix4x2dv)(program, location, count, transpose, value)));
21115		#[cfg(feature = "diagnose")]
21116		if let Ok(ret) = ret {
21117			return to_result("glProgramUniformMatrix4x2dv", ret, self.glGetError());
21118		} else {
21119			return ret
21120		}
21121		#[cfg(not(feature = "diagnose"))]
21122		return ret;
21123	}
21124	#[inline(always)]
21125	fn glProgramUniformMatrix3x4dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
21126		let ret = process_catch("glProgramUniformMatrix3x4dv", catch_unwind(||(self.programuniformmatrix3x4dv)(program, location, count, transpose, value)));
21127		#[cfg(feature = "diagnose")]
21128		if let Ok(ret) = ret {
21129			return to_result("glProgramUniformMatrix3x4dv", ret, self.glGetError());
21130		} else {
21131			return ret
21132		}
21133		#[cfg(not(feature = "diagnose"))]
21134		return ret;
21135	}
21136	#[inline(always)]
21137	fn glProgramUniformMatrix4x3dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
21138		let ret = process_catch("glProgramUniformMatrix4x3dv", catch_unwind(||(self.programuniformmatrix4x3dv)(program, location, count, transpose, value)));
21139		#[cfg(feature = "diagnose")]
21140		if let Ok(ret) = ret {
21141			return to_result("glProgramUniformMatrix4x3dv", ret, self.glGetError());
21142		} else {
21143			return ret
21144		}
21145		#[cfg(not(feature = "diagnose"))]
21146		return ret;
21147	}
21148	#[inline(always)]
21149	fn glValidateProgramPipeline(&self, pipeline: GLuint) -> Result<()> {
21150		let ret = process_catch("glValidateProgramPipeline", catch_unwind(||(self.validateprogrampipeline)(pipeline)));
21151		#[cfg(feature = "diagnose")]
21152		if let Ok(ret) = ret {
21153			return to_result("glValidateProgramPipeline", ret, self.glGetError());
21154		} else {
21155			return ret
21156		}
21157		#[cfg(not(feature = "diagnose"))]
21158		return ret;
21159	}
21160	#[inline(always)]
21161	fn glGetProgramPipelineInfoLog(&self, pipeline: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()> {
21162		let ret = process_catch("glGetProgramPipelineInfoLog", catch_unwind(||(self.getprogrampipelineinfolog)(pipeline, bufSize, length, infoLog)));
21163		#[cfg(feature = "diagnose")]
21164		if let Ok(ret) = ret {
21165			return to_result("glGetProgramPipelineInfoLog", ret, self.glGetError());
21166		} else {
21167			return ret
21168		}
21169		#[cfg(not(feature = "diagnose"))]
21170		return ret;
21171	}
21172	#[inline(always)]
21173	fn glVertexAttribL1d(&self, index: GLuint, x: GLdouble) -> Result<()> {
21174		let ret = process_catch("glVertexAttribL1d", catch_unwind(||(self.vertexattribl1d)(index, x)));
21175		#[cfg(feature = "diagnose")]
21176		if let Ok(ret) = ret {
21177			return to_result("glVertexAttribL1d", ret, self.glGetError());
21178		} else {
21179			return ret
21180		}
21181		#[cfg(not(feature = "diagnose"))]
21182		return ret;
21183	}
21184	#[inline(always)]
21185	fn glVertexAttribL2d(&self, index: GLuint, x: GLdouble, y: GLdouble) -> Result<()> {
21186		let ret = process_catch("glVertexAttribL2d", catch_unwind(||(self.vertexattribl2d)(index, x, y)));
21187		#[cfg(feature = "diagnose")]
21188		if let Ok(ret) = ret {
21189			return to_result("glVertexAttribL2d", ret, self.glGetError());
21190		} else {
21191			return ret
21192		}
21193		#[cfg(not(feature = "diagnose"))]
21194		return ret;
21195	}
21196	#[inline(always)]
21197	fn glVertexAttribL3d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble) -> Result<()> {
21198		let ret = process_catch("glVertexAttribL3d", catch_unwind(||(self.vertexattribl3d)(index, x, y, z)));
21199		#[cfg(feature = "diagnose")]
21200		if let Ok(ret) = ret {
21201			return to_result("glVertexAttribL3d", ret, self.glGetError());
21202		} else {
21203			return ret
21204		}
21205		#[cfg(not(feature = "diagnose"))]
21206		return ret;
21207	}
21208	#[inline(always)]
21209	fn glVertexAttribL4d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble, w: GLdouble) -> Result<()> {
21210		let ret = process_catch("glVertexAttribL4d", catch_unwind(||(self.vertexattribl4d)(index, x, y, z, w)));
21211		#[cfg(feature = "diagnose")]
21212		if let Ok(ret) = ret {
21213			return to_result("glVertexAttribL4d", ret, self.glGetError());
21214		} else {
21215			return ret
21216		}
21217		#[cfg(not(feature = "diagnose"))]
21218		return ret;
21219	}
21220	#[inline(always)]
21221	fn glVertexAttribL1dv(&self, index: GLuint, v: *const GLdouble) -> Result<()> {
21222		let ret = process_catch("glVertexAttribL1dv", catch_unwind(||(self.vertexattribl1dv)(index, v)));
21223		#[cfg(feature = "diagnose")]
21224		if let Ok(ret) = ret {
21225			return to_result("glVertexAttribL1dv", ret, self.glGetError());
21226		} else {
21227			return ret
21228		}
21229		#[cfg(not(feature = "diagnose"))]
21230		return ret;
21231	}
21232	#[inline(always)]
21233	fn glVertexAttribL2dv(&self, index: GLuint, v: *const GLdouble) -> Result<()> {
21234		let ret = process_catch("glVertexAttribL2dv", catch_unwind(||(self.vertexattribl2dv)(index, v)));
21235		#[cfg(feature = "diagnose")]
21236		if let Ok(ret) = ret {
21237			return to_result("glVertexAttribL2dv", ret, self.glGetError());
21238		} else {
21239			return ret
21240		}
21241		#[cfg(not(feature = "diagnose"))]
21242		return ret;
21243	}
21244	#[inline(always)]
21245	fn glVertexAttribL3dv(&self, index: GLuint, v: *const GLdouble) -> Result<()> {
21246		let ret = process_catch("glVertexAttribL3dv", catch_unwind(||(self.vertexattribl3dv)(index, v)));
21247		#[cfg(feature = "diagnose")]
21248		if let Ok(ret) = ret {
21249			return to_result("glVertexAttribL3dv", ret, self.glGetError());
21250		} else {
21251			return ret
21252		}
21253		#[cfg(not(feature = "diagnose"))]
21254		return ret;
21255	}
21256	#[inline(always)]
21257	fn glVertexAttribL4dv(&self, index: GLuint, v: *const GLdouble) -> Result<()> {
21258		let ret = process_catch("glVertexAttribL4dv", catch_unwind(||(self.vertexattribl4dv)(index, v)));
21259		#[cfg(feature = "diagnose")]
21260		if let Ok(ret) = ret {
21261			return to_result("glVertexAttribL4dv", ret, self.glGetError());
21262		} else {
21263			return ret
21264		}
21265		#[cfg(not(feature = "diagnose"))]
21266		return ret;
21267	}
21268	#[inline(always)]
21269	fn glVertexAttribLPointer(&self, index: GLuint, size: GLint, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()> {
21270		let ret = process_catch("glVertexAttribLPointer", catch_unwind(||(self.vertexattriblpointer)(index, size, type_, stride, pointer)));
21271		#[cfg(feature = "diagnose")]
21272		if let Ok(ret) = ret {
21273			return to_result("glVertexAttribLPointer", ret, self.glGetError());
21274		} else {
21275			return ret
21276		}
21277		#[cfg(not(feature = "diagnose"))]
21278		return ret;
21279	}
21280	#[inline(always)]
21281	fn glGetVertexAttribLdv(&self, index: GLuint, pname: GLenum, params: *mut GLdouble) -> Result<()> {
21282		let ret = process_catch("glGetVertexAttribLdv", catch_unwind(||(self.getvertexattribldv)(index, pname, params)));
21283		#[cfg(feature = "diagnose")]
21284		if let Ok(ret) = ret {
21285			return to_result("glGetVertexAttribLdv", ret, self.glGetError());
21286		} else {
21287			return ret
21288		}
21289		#[cfg(not(feature = "diagnose"))]
21290		return ret;
21291	}
21292	#[inline(always)]
21293	fn glViewportArrayv(&self, first: GLuint, count: GLsizei, v: *const GLfloat) -> Result<()> {
21294		let ret = process_catch("glViewportArrayv", catch_unwind(||(self.viewportarrayv)(first, count, v)));
21295		#[cfg(feature = "diagnose")]
21296		if let Ok(ret) = ret {
21297			return to_result("glViewportArrayv", ret, self.glGetError());
21298		} else {
21299			return ret
21300		}
21301		#[cfg(not(feature = "diagnose"))]
21302		return ret;
21303	}
21304	#[inline(always)]
21305	fn glViewportIndexedf(&self, index: GLuint, x: GLfloat, y: GLfloat, w: GLfloat, h: GLfloat) -> Result<()> {
21306		let ret = process_catch("glViewportIndexedf", catch_unwind(||(self.viewportindexedf)(index, x, y, w, h)));
21307		#[cfg(feature = "diagnose")]
21308		if let Ok(ret) = ret {
21309			return to_result("glViewportIndexedf", ret, self.glGetError());
21310		} else {
21311			return ret
21312		}
21313		#[cfg(not(feature = "diagnose"))]
21314		return ret;
21315	}
21316	#[inline(always)]
21317	fn glViewportIndexedfv(&self, index: GLuint, v: *const GLfloat) -> Result<()> {
21318		let ret = process_catch("glViewportIndexedfv", catch_unwind(||(self.viewportindexedfv)(index, v)));
21319		#[cfg(feature = "diagnose")]
21320		if let Ok(ret) = ret {
21321			return to_result("glViewportIndexedfv", ret, self.glGetError());
21322		} else {
21323			return ret
21324		}
21325		#[cfg(not(feature = "diagnose"))]
21326		return ret;
21327	}
21328	#[inline(always)]
21329	fn glScissorArrayv(&self, first: GLuint, count: GLsizei, v: *const GLint) -> Result<()> {
21330		let ret = process_catch("glScissorArrayv", catch_unwind(||(self.scissorarrayv)(first, count, v)));
21331		#[cfg(feature = "diagnose")]
21332		if let Ok(ret) = ret {
21333			return to_result("glScissorArrayv", ret, self.glGetError());
21334		} else {
21335			return ret
21336		}
21337		#[cfg(not(feature = "diagnose"))]
21338		return ret;
21339	}
21340	#[inline(always)]
21341	fn glScissorIndexed(&self, index: GLuint, left: GLint, bottom: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
21342		let ret = process_catch("glScissorIndexed", catch_unwind(||(self.scissorindexed)(index, left, bottom, width, height)));
21343		#[cfg(feature = "diagnose")]
21344		if let Ok(ret) = ret {
21345			return to_result("glScissorIndexed", ret, self.glGetError());
21346		} else {
21347			return ret
21348		}
21349		#[cfg(not(feature = "diagnose"))]
21350		return ret;
21351	}
21352	#[inline(always)]
21353	fn glScissorIndexedv(&self, index: GLuint, v: *const GLint) -> Result<()> {
21354		let ret = process_catch("glScissorIndexedv", catch_unwind(||(self.scissorindexedv)(index, v)));
21355		#[cfg(feature = "diagnose")]
21356		if let Ok(ret) = ret {
21357			return to_result("glScissorIndexedv", ret, self.glGetError());
21358		} else {
21359			return ret
21360		}
21361		#[cfg(not(feature = "diagnose"))]
21362		return ret;
21363	}
21364	#[inline(always)]
21365	fn glDepthRangeArrayv(&self, first: GLuint, count: GLsizei, v: *const GLdouble) -> Result<()> {
21366		let ret = process_catch("glDepthRangeArrayv", catch_unwind(||(self.depthrangearrayv)(first, count, v)));
21367		#[cfg(feature = "diagnose")]
21368		if let Ok(ret) = ret {
21369			return to_result("glDepthRangeArrayv", ret, self.glGetError());
21370		} else {
21371			return ret
21372		}
21373		#[cfg(not(feature = "diagnose"))]
21374		return ret;
21375	}
21376	#[inline(always)]
21377	fn glDepthRangeIndexed(&self, index: GLuint, n: GLdouble, f: GLdouble) -> Result<()> {
21378		let ret = process_catch("glDepthRangeIndexed", catch_unwind(||(self.depthrangeindexed)(index, n, f)));
21379		#[cfg(feature = "diagnose")]
21380		if let Ok(ret) = ret {
21381			return to_result("glDepthRangeIndexed", ret, self.glGetError());
21382		} else {
21383			return ret
21384		}
21385		#[cfg(not(feature = "diagnose"))]
21386		return ret;
21387	}
21388	#[inline(always)]
21389	fn glGetFloati_v(&self, target: GLenum, index: GLuint, data: *mut GLfloat) -> Result<()> {
21390		let ret = process_catch("glGetFloati_v", catch_unwind(||(self.getfloati_v)(target, index, data)));
21391		#[cfg(feature = "diagnose")]
21392		if let Ok(ret) = ret {
21393			return to_result("glGetFloati_v", ret, self.glGetError());
21394		} else {
21395			return ret
21396		}
21397		#[cfg(not(feature = "diagnose"))]
21398		return ret;
21399	}
21400	#[inline(always)]
21401	fn glGetDoublei_v(&self, target: GLenum, index: GLuint, data: *mut GLdouble) -> Result<()> {
21402		let ret = process_catch("glGetDoublei_v", catch_unwind(||(self.getdoublei_v)(target, index, data)));
21403		#[cfg(feature = "diagnose")]
21404		if let Ok(ret) = ret {
21405			return to_result("glGetDoublei_v", ret, self.glGetError());
21406		} else {
21407			return ret
21408		}
21409		#[cfg(not(feature = "diagnose"))]
21410		return ret;
21411	}
21412}
21413
21414impl Version41 {
21415	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
21416		let (_spec, major, minor, release) = base.get_version();
21417		if (major, minor, release) < (4, 1, 0) {
21418			return Self::default();
21419		}
21420		Self {
21421			available: true,
21422			geterror: {let proc = get_proc_address("glGetError"); if proc == null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
21423			releaseshadercompiler: {let proc = get_proc_address("glReleaseShaderCompiler"); if proc == null() {dummy_pfnglreleaseshadercompilerproc} else {unsafe{transmute(proc)}}},
21424			shaderbinary: {let proc = get_proc_address("glShaderBinary"); if proc == null() {dummy_pfnglshaderbinaryproc} else {unsafe{transmute(proc)}}},
21425			getshaderprecisionformat: {let proc = get_proc_address("glGetShaderPrecisionFormat"); if proc == null() {dummy_pfnglgetshaderprecisionformatproc} else {unsafe{transmute(proc)}}},
21426			depthrangef: {let proc = get_proc_address("glDepthRangef"); if proc == null() {dummy_pfngldepthrangefproc} else {unsafe{transmute(proc)}}},
21427			cleardepthf: {let proc = get_proc_address("glClearDepthf"); if proc == null() {dummy_pfnglcleardepthfproc} else {unsafe{transmute(proc)}}},
21428			getprogrambinary: {let proc = get_proc_address("glGetProgramBinary"); if proc == null() {dummy_pfnglgetprogrambinaryproc} else {unsafe{transmute(proc)}}},
21429			programbinary: {let proc = get_proc_address("glProgramBinary"); if proc == null() {dummy_pfnglprogrambinaryproc} else {unsafe{transmute(proc)}}},
21430			programparameteri: {let proc = get_proc_address("glProgramParameteri"); if proc == null() {dummy_pfnglprogramparameteriproc} else {unsafe{transmute(proc)}}},
21431			useprogramstages: {let proc = get_proc_address("glUseProgramStages"); if proc == null() {dummy_pfngluseprogramstagesproc} else {unsafe{transmute(proc)}}},
21432			activeshaderprogram: {let proc = get_proc_address("glActiveShaderProgram"); if proc == null() {dummy_pfnglactiveshaderprogramproc} else {unsafe{transmute(proc)}}},
21433			createshaderprogramv: {let proc = get_proc_address("glCreateShaderProgramv"); if proc == null() {dummy_pfnglcreateshaderprogramvproc} else {unsafe{transmute(proc)}}},
21434			bindprogrampipeline: {let proc = get_proc_address("glBindProgramPipeline"); if proc == null() {dummy_pfnglbindprogrampipelineproc} else {unsafe{transmute(proc)}}},
21435			deleteprogrampipelines: {let proc = get_proc_address("glDeleteProgramPipelines"); if proc == null() {dummy_pfngldeleteprogrampipelinesproc} else {unsafe{transmute(proc)}}},
21436			genprogrampipelines: {let proc = get_proc_address("glGenProgramPipelines"); if proc == null() {dummy_pfnglgenprogrampipelinesproc} else {unsafe{transmute(proc)}}},
21437			isprogrampipeline: {let proc = get_proc_address("glIsProgramPipeline"); if proc == null() {dummy_pfnglisprogrampipelineproc} else {unsafe{transmute(proc)}}},
21438			getprogrampipelineiv: {let proc = get_proc_address("glGetProgramPipelineiv"); if proc == null() {dummy_pfnglgetprogrampipelineivproc} else {unsafe{transmute(proc)}}},
21439			programuniform1i: {let proc = get_proc_address("glProgramUniform1i"); if proc == null() {dummy_pfnglprogramuniform1iproc} else {unsafe{transmute(proc)}}},
21440			programuniform1iv: {let proc = get_proc_address("glProgramUniform1iv"); if proc == null() {dummy_pfnglprogramuniform1ivproc} else {unsafe{transmute(proc)}}},
21441			programuniform1f: {let proc = get_proc_address("glProgramUniform1f"); if proc == null() {dummy_pfnglprogramuniform1fproc} else {unsafe{transmute(proc)}}},
21442			programuniform1fv: {let proc = get_proc_address("glProgramUniform1fv"); if proc == null() {dummy_pfnglprogramuniform1fvproc} else {unsafe{transmute(proc)}}},
21443			programuniform1d: {let proc = get_proc_address("glProgramUniform1d"); if proc == null() {dummy_pfnglprogramuniform1dproc} else {unsafe{transmute(proc)}}},
21444			programuniform1dv: {let proc = get_proc_address("glProgramUniform1dv"); if proc == null() {dummy_pfnglprogramuniform1dvproc} else {unsafe{transmute(proc)}}},
21445			programuniform1ui: {let proc = get_proc_address("glProgramUniform1ui"); if proc == null() {dummy_pfnglprogramuniform1uiproc} else {unsafe{transmute(proc)}}},
21446			programuniform1uiv: {let proc = get_proc_address("glProgramUniform1uiv"); if proc == null() {dummy_pfnglprogramuniform1uivproc} else {unsafe{transmute(proc)}}},
21447			programuniform2i: {let proc = get_proc_address("glProgramUniform2i"); if proc == null() {dummy_pfnglprogramuniform2iproc} else {unsafe{transmute(proc)}}},
21448			programuniform2iv: {let proc = get_proc_address("glProgramUniform2iv"); if proc == null() {dummy_pfnglprogramuniform2ivproc} else {unsafe{transmute(proc)}}},
21449			programuniform2f: {let proc = get_proc_address("glProgramUniform2f"); if proc == null() {dummy_pfnglprogramuniform2fproc} else {unsafe{transmute(proc)}}},
21450			programuniform2fv: {let proc = get_proc_address("glProgramUniform2fv"); if proc == null() {dummy_pfnglprogramuniform2fvproc} else {unsafe{transmute(proc)}}},
21451			programuniform2d: {let proc = get_proc_address("glProgramUniform2d"); if proc == null() {dummy_pfnglprogramuniform2dproc} else {unsafe{transmute(proc)}}},
21452			programuniform2dv: {let proc = get_proc_address("glProgramUniform2dv"); if proc == null() {dummy_pfnglprogramuniform2dvproc} else {unsafe{transmute(proc)}}},
21453			programuniform2ui: {let proc = get_proc_address("glProgramUniform2ui"); if proc == null() {dummy_pfnglprogramuniform2uiproc} else {unsafe{transmute(proc)}}},
21454			programuniform2uiv: {let proc = get_proc_address("glProgramUniform2uiv"); if proc == null() {dummy_pfnglprogramuniform2uivproc} else {unsafe{transmute(proc)}}},
21455			programuniform3i: {let proc = get_proc_address("glProgramUniform3i"); if proc == null() {dummy_pfnglprogramuniform3iproc} else {unsafe{transmute(proc)}}},
21456			programuniform3iv: {let proc = get_proc_address("glProgramUniform3iv"); if proc == null() {dummy_pfnglprogramuniform3ivproc} else {unsafe{transmute(proc)}}},
21457			programuniform3f: {let proc = get_proc_address("glProgramUniform3f"); if proc == null() {dummy_pfnglprogramuniform3fproc} else {unsafe{transmute(proc)}}},
21458			programuniform3fv: {let proc = get_proc_address("glProgramUniform3fv"); if proc == null() {dummy_pfnglprogramuniform3fvproc} else {unsafe{transmute(proc)}}},
21459			programuniform3d: {let proc = get_proc_address("glProgramUniform3d"); if proc == null() {dummy_pfnglprogramuniform3dproc} else {unsafe{transmute(proc)}}},
21460			programuniform3dv: {let proc = get_proc_address("glProgramUniform3dv"); if proc == null() {dummy_pfnglprogramuniform3dvproc} else {unsafe{transmute(proc)}}},
21461			programuniform3ui: {let proc = get_proc_address("glProgramUniform3ui"); if proc == null() {dummy_pfnglprogramuniform3uiproc} else {unsafe{transmute(proc)}}},
21462			programuniform3uiv: {let proc = get_proc_address("glProgramUniform3uiv"); if proc == null() {dummy_pfnglprogramuniform3uivproc} else {unsafe{transmute(proc)}}},
21463			programuniform4i: {let proc = get_proc_address("glProgramUniform4i"); if proc == null() {dummy_pfnglprogramuniform4iproc} else {unsafe{transmute(proc)}}},
21464			programuniform4iv: {let proc = get_proc_address("glProgramUniform4iv"); if proc == null() {dummy_pfnglprogramuniform4ivproc} else {unsafe{transmute(proc)}}},
21465			programuniform4f: {let proc = get_proc_address("glProgramUniform4f"); if proc == null() {dummy_pfnglprogramuniform4fproc} else {unsafe{transmute(proc)}}},
21466			programuniform4fv: {let proc = get_proc_address("glProgramUniform4fv"); if proc == null() {dummy_pfnglprogramuniform4fvproc} else {unsafe{transmute(proc)}}},
21467			programuniform4d: {let proc = get_proc_address("glProgramUniform4d"); if proc == null() {dummy_pfnglprogramuniform4dproc} else {unsafe{transmute(proc)}}},
21468			programuniform4dv: {let proc = get_proc_address("glProgramUniform4dv"); if proc == null() {dummy_pfnglprogramuniform4dvproc} else {unsafe{transmute(proc)}}},
21469			programuniform4ui: {let proc = get_proc_address("glProgramUniform4ui"); if proc == null() {dummy_pfnglprogramuniform4uiproc} else {unsafe{transmute(proc)}}},
21470			programuniform4uiv: {let proc = get_proc_address("glProgramUniform4uiv"); if proc == null() {dummy_pfnglprogramuniform4uivproc} else {unsafe{transmute(proc)}}},
21471			programuniformmatrix2fv: {let proc = get_proc_address("glProgramUniformMatrix2fv"); if proc == null() {dummy_pfnglprogramuniformmatrix2fvproc} else {unsafe{transmute(proc)}}},
21472			programuniformmatrix3fv: {let proc = get_proc_address("glProgramUniformMatrix3fv"); if proc == null() {dummy_pfnglprogramuniformmatrix3fvproc} else {unsafe{transmute(proc)}}},
21473			programuniformmatrix4fv: {let proc = get_proc_address("glProgramUniformMatrix4fv"); if proc == null() {dummy_pfnglprogramuniformmatrix4fvproc} else {unsafe{transmute(proc)}}},
21474			programuniformmatrix2dv: {let proc = get_proc_address("glProgramUniformMatrix2dv"); if proc == null() {dummy_pfnglprogramuniformmatrix2dvproc} else {unsafe{transmute(proc)}}},
21475			programuniformmatrix3dv: {let proc = get_proc_address("glProgramUniformMatrix3dv"); if proc == null() {dummy_pfnglprogramuniformmatrix3dvproc} else {unsafe{transmute(proc)}}},
21476			programuniformmatrix4dv: {let proc = get_proc_address("glProgramUniformMatrix4dv"); if proc == null() {dummy_pfnglprogramuniformmatrix4dvproc} else {unsafe{transmute(proc)}}},
21477			programuniformmatrix2x3fv: {let proc = get_proc_address("glProgramUniformMatrix2x3fv"); if proc == null() {dummy_pfnglprogramuniformmatrix2x3fvproc} else {unsafe{transmute(proc)}}},
21478			programuniformmatrix3x2fv: {let proc = get_proc_address("glProgramUniformMatrix3x2fv"); if proc == null() {dummy_pfnglprogramuniformmatrix3x2fvproc} else {unsafe{transmute(proc)}}},
21479			programuniformmatrix2x4fv: {let proc = get_proc_address("glProgramUniformMatrix2x4fv"); if proc == null() {dummy_pfnglprogramuniformmatrix2x4fvproc} else {unsafe{transmute(proc)}}},
21480			programuniformmatrix4x2fv: {let proc = get_proc_address("glProgramUniformMatrix4x2fv"); if proc == null() {dummy_pfnglprogramuniformmatrix4x2fvproc} else {unsafe{transmute(proc)}}},
21481			programuniformmatrix3x4fv: {let proc = get_proc_address("glProgramUniformMatrix3x4fv"); if proc == null() {dummy_pfnglprogramuniformmatrix3x4fvproc} else {unsafe{transmute(proc)}}},
21482			programuniformmatrix4x3fv: {let proc = get_proc_address("glProgramUniformMatrix4x3fv"); if proc == null() {dummy_pfnglprogramuniformmatrix4x3fvproc} else {unsafe{transmute(proc)}}},
21483			programuniformmatrix2x3dv: {let proc = get_proc_address("glProgramUniformMatrix2x3dv"); if proc == null() {dummy_pfnglprogramuniformmatrix2x3dvproc} else {unsafe{transmute(proc)}}},
21484			programuniformmatrix3x2dv: {let proc = get_proc_address("glProgramUniformMatrix3x2dv"); if proc == null() {dummy_pfnglprogramuniformmatrix3x2dvproc} else {unsafe{transmute(proc)}}},
21485			programuniformmatrix2x4dv: {let proc = get_proc_address("glProgramUniformMatrix2x4dv"); if proc == null() {dummy_pfnglprogramuniformmatrix2x4dvproc} else {unsafe{transmute(proc)}}},
21486			programuniformmatrix4x2dv: {let proc = get_proc_address("glProgramUniformMatrix4x2dv"); if proc == null() {dummy_pfnglprogramuniformmatrix4x2dvproc} else {unsafe{transmute(proc)}}},
21487			programuniformmatrix3x4dv: {let proc = get_proc_address("glProgramUniformMatrix3x4dv"); if proc == null() {dummy_pfnglprogramuniformmatrix3x4dvproc} else {unsafe{transmute(proc)}}},
21488			programuniformmatrix4x3dv: {let proc = get_proc_address("glProgramUniformMatrix4x3dv"); if proc == null() {dummy_pfnglprogramuniformmatrix4x3dvproc} else {unsafe{transmute(proc)}}},
21489			validateprogrampipeline: {let proc = get_proc_address("glValidateProgramPipeline"); if proc == null() {dummy_pfnglvalidateprogrampipelineproc} else {unsafe{transmute(proc)}}},
21490			getprogrampipelineinfolog: {let proc = get_proc_address("glGetProgramPipelineInfoLog"); if proc == null() {dummy_pfnglgetprogrampipelineinfologproc} else {unsafe{transmute(proc)}}},
21491			vertexattribl1d: {let proc = get_proc_address("glVertexAttribL1d"); if proc == null() {dummy_pfnglvertexattribl1dproc} else {unsafe{transmute(proc)}}},
21492			vertexattribl2d: {let proc = get_proc_address("glVertexAttribL2d"); if proc == null() {dummy_pfnglvertexattribl2dproc} else {unsafe{transmute(proc)}}},
21493			vertexattribl3d: {let proc = get_proc_address("glVertexAttribL3d"); if proc == null() {dummy_pfnglvertexattribl3dproc} else {unsafe{transmute(proc)}}},
21494			vertexattribl4d: {let proc = get_proc_address("glVertexAttribL4d"); if proc == null() {dummy_pfnglvertexattribl4dproc} else {unsafe{transmute(proc)}}},
21495			vertexattribl1dv: {let proc = get_proc_address("glVertexAttribL1dv"); if proc == null() {dummy_pfnglvertexattribl1dvproc} else {unsafe{transmute(proc)}}},
21496			vertexattribl2dv: {let proc = get_proc_address("glVertexAttribL2dv"); if proc == null() {dummy_pfnglvertexattribl2dvproc} else {unsafe{transmute(proc)}}},
21497			vertexattribl3dv: {let proc = get_proc_address("glVertexAttribL3dv"); if proc == null() {dummy_pfnglvertexattribl3dvproc} else {unsafe{transmute(proc)}}},
21498			vertexattribl4dv: {let proc = get_proc_address("glVertexAttribL4dv"); if proc == null() {dummy_pfnglvertexattribl4dvproc} else {unsafe{transmute(proc)}}},
21499			vertexattriblpointer: {let proc = get_proc_address("glVertexAttribLPointer"); if proc == null() {dummy_pfnglvertexattriblpointerproc} else {unsafe{transmute(proc)}}},
21500			getvertexattribldv: {let proc = get_proc_address("glGetVertexAttribLdv"); if proc == null() {dummy_pfnglgetvertexattribldvproc} else {unsafe{transmute(proc)}}},
21501			viewportarrayv: {let proc = get_proc_address("glViewportArrayv"); if proc == null() {dummy_pfnglviewportarrayvproc} else {unsafe{transmute(proc)}}},
21502			viewportindexedf: {let proc = get_proc_address("glViewportIndexedf"); if proc == null() {dummy_pfnglviewportindexedfproc} else {unsafe{transmute(proc)}}},
21503			viewportindexedfv: {let proc = get_proc_address("glViewportIndexedfv"); if proc == null() {dummy_pfnglviewportindexedfvproc} else {unsafe{transmute(proc)}}},
21504			scissorarrayv: {let proc = get_proc_address("glScissorArrayv"); if proc == null() {dummy_pfnglscissorarrayvproc} else {unsafe{transmute(proc)}}},
21505			scissorindexed: {let proc = get_proc_address("glScissorIndexed"); if proc == null() {dummy_pfnglscissorindexedproc} else {unsafe{transmute(proc)}}},
21506			scissorindexedv: {let proc = get_proc_address("glScissorIndexedv"); if proc == null() {dummy_pfnglscissorindexedvproc} else {unsafe{transmute(proc)}}},
21507			depthrangearrayv: {let proc = get_proc_address("glDepthRangeArrayv"); if proc == null() {dummy_pfngldepthrangearrayvproc} else {unsafe{transmute(proc)}}},
21508			depthrangeindexed: {let proc = get_proc_address("glDepthRangeIndexed"); if proc == null() {dummy_pfngldepthrangeindexedproc} else {unsafe{transmute(proc)}}},
21509			getfloati_v: {let proc = get_proc_address("glGetFloati_v"); if proc == null() {dummy_pfnglgetfloati_vproc} else {unsafe{transmute(proc)}}},
21510			getdoublei_v: {let proc = get_proc_address("glGetDoublei_v"); if proc == null() {dummy_pfnglgetdoublei_vproc} else {unsafe{transmute(proc)}}},
21511		}
21512	}
21513	#[inline(always)]
21514	pub fn get_available(&self) -> bool {
21515		self.available
21516	}
21517}
21518
21519impl Default for Version41 {
21520	fn default() -> Self {
21521		Self {
21522			available: false,
21523			geterror: dummy_pfnglgeterrorproc,
21524			releaseshadercompiler: dummy_pfnglreleaseshadercompilerproc,
21525			shaderbinary: dummy_pfnglshaderbinaryproc,
21526			getshaderprecisionformat: dummy_pfnglgetshaderprecisionformatproc,
21527			depthrangef: dummy_pfngldepthrangefproc,
21528			cleardepthf: dummy_pfnglcleardepthfproc,
21529			getprogrambinary: dummy_pfnglgetprogrambinaryproc,
21530			programbinary: dummy_pfnglprogrambinaryproc,
21531			programparameteri: dummy_pfnglprogramparameteriproc,
21532			useprogramstages: dummy_pfngluseprogramstagesproc,
21533			activeshaderprogram: dummy_pfnglactiveshaderprogramproc,
21534			createshaderprogramv: dummy_pfnglcreateshaderprogramvproc,
21535			bindprogrampipeline: dummy_pfnglbindprogrampipelineproc,
21536			deleteprogrampipelines: dummy_pfngldeleteprogrampipelinesproc,
21537			genprogrampipelines: dummy_pfnglgenprogrampipelinesproc,
21538			isprogrampipeline: dummy_pfnglisprogrampipelineproc,
21539			getprogrampipelineiv: dummy_pfnglgetprogrampipelineivproc,
21540			programuniform1i: dummy_pfnglprogramuniform1iproc,
21541			programuniform1iv: dummy_pfnglprogramuniform1ivproc,
21542			programuniform1f: dummy_pfnglprogramuniform1fproc,
21543			programuniform1fv: dummy_pfnglprogramuniform1fvproc,
21544			programuniform1d: dummy_pfnglprogramuniform1dproc,
21545			programuniform1dv: dummy_pfnglprogramuniform1dvproc,
21546			programuniform1ui: dummy_pfnglprogramuniform1uiproc,
21547			programuniform1uiv: dummy_pfnglprogramuniform1uivproc,
21548			programuniform2i: dummy_pfnglprogramuniform2iproc,
21549			programuniform2iv: dummy_pfnglprogramuniform2ivproc,
21550			programuniform2f: dummy_pfnglprogramuniform2fproc,
21551			programuniform2fv: dummy_pfnglprogramuniform2fvproc,
21552			programuniform2d: dummy_pfnglprogramuniform2dproc,
21553			programuniform2dv: dummy_pfnglprogramuniform2dvproc,
21554			programuniform2ui: dummy_pfnglprogramuniform2uiproc,
21555			programuniform2uiv: dummy_pfnglprogramuniform2uivproc,
21556			programuniform3i: dummy_pfnglprogramuniform3iproc,
21557			programuniform3iv: dummy_pfnglprogramuniform3ivproc,
21558			programuniform3f: dummy_pfnglprogramuniform3fproc,
21559			programuniform3fv: dummy_pfnglprogramuniform3fvproc,
21560			programuniform3d: dummy_pfnglprogramuniform3dproc,
21561			programuniform3dv: dummy_pfnglprogramuniform3dvproc,
21562			programuniform3ui: dummy_pfnglprogramuniform3uiproc,
21563			programuniform3uiv: dummy_pfnglprogramuniform3uivproc,
21564			programuniform4i: dummy_pfnglprogramuniform4iproc,
21565			programuniform4iv: dummy_pfnglprogramuniform4ivproc,
21566			programuniform4f: dummy_pfnglprogramuniform4fproc,
21567			programuniform4fv: dummy_pfnglprogramuniform4fvproc,
21568			programuniform4d: dummy_pfnglprogramuniform4dproc,
21569			programuniform4dv: dummy_pfnglprogramuniform4dvproc,
21570			programuniform4ui: dummy_pfnglprogramuniform4uiproc,
21571			programuniform4uiv: dummy_pfnglprogramuniform4uivproc,
21572			programuniformmatrix2fv: dummy_pfnglprogramuniformmatrix2fvproc,
21573			programuniformmatrix3fv: dummy_pfnglprogramuniformmatrix3fvproc,
21574			programuniformmatrix4fv: dummy_pfnglprogramuniformmatrix4fvproc,
21575			programuniformmatrix2dv: dummy_pfnglprogramuniformmatrix2dvproc,
21576			programuniformmatrix3dv: dummy_pfnglprogramuniformmatrix3dvproc,
21577			programuniformmatrix4dv: dummy_pfnglprogramuniformmatrix4dvproc,
21578			programuniformmatrix2x3fv: dummy_pfnglprogramuniformmatrix2x3fvproc,
21579			programuniformmatrix3x2fv: dummy_pfnglprogramuniformmatrix3x2fvproc,
21580			programuniformmatrix2x4fv: dummy_pfnglprogramuniformmatrix2x4fvproc,
21581			programuniformmatrix4x2fv: dummy_pfnglprogramuniformmatrix4x2fvproc,
21582			programuniformmatrix3x4fv: dummy_pfnglprogramuniformmatrix3x4fvproc,
21583			programuniformmatrix4x3fv: dummy_pfnglprogramuniformmatrix4x3fvproc,
21584			programuniformmatrix2x3dv: dummy_pfnglprogramuniformmatrix2x3dvproc,
21585			programuniformmatrix3x2dv: dummy_pfnglprogramuniformmatrix3x2dvproc,
21586			programuniformmatrix2x4dv: dummy_pfnglprogramuniformmatrix2x4dvproc,
21587			programuniformmatrix4x2dv: dummy_pfnglprogramuniformmatrix4x2dvproc,
21588			programuniformmatrix3x4dv: dummy_pfnglprogramuniformmatrix3x4dvproc,
21589			programuniformmatrix4x3dv: dummy_pfnglprogramuniformmatrix4x3dvproc,
21590			validateprogrampipeline: dummy_pfnglvalidateprogrampipelineproc,
21591			getprogrampipelineinfolog: dummy_pfnglgetprogrampipelineinfologproc,
21592			vertexattribl1d: dummy_pfnglvertexattribl1dproc,
21593			vertexattribl2d: dummy_pfnglvertexattribl2dproc,
21594			vertexattribl3d: dummy_pfnglvertexattribl3dproc,
21595			vertexattribl4d: dummy_pfnglvertexattribl4dproc,
21596			vertexattribl1dv: dummy_pfnglvertexattribl1dvproc,
21597			vertexattribl2dv: dummy_pfnglvertexattribl2dvproc,
21598			vertexattribl3dv: dummy_pfnglvertexattribl3dvproc,
21599			vertexattribl4dv: dummy_pfnglvertexattribl4dvproc,
21600			vertexattriblpointer: dummy_pfnglvertexattriblpointerproc,
21601			getvertexattribldv: dummy_pfnglgetvertexattribldvproc,
21602			viewportarrayv: dummy_pfnglviewportarrayvproc,
21603			viewportindexedf: dummy_pfnglviewportindexedfproc,
21604			viewportindexedfv: dummy_pfnglviewportindexedfvproc,
21605			scissorarrayv: dummy_pfnglscissorarrayvproc,
21606			scissorindexed: dummy_pfnglscissorindexedproc,
21607			scissorindexedv: dummy_pfnglscissorindexedvproc,
21608			depthrangearrayv: dummy_pfngldepthrangearrayvproc,
21609			depthrangeindexed: dummy_pfngldepthrangeindexedproc,
21610			getfloati_v: dummy_pfnglgetfloati_vproc,
21611			getdoublei_v: dummy_pfnglgetdoublei_vproc,
21612		}
21613	}
21614}
21615impl Debug for Version41 {
21616	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
21617		if self.available {
21618			f.debug_struct("Version41")
21619			.field("available", &self.available)
21620			.field("releaseshadercompiler", unsafe{if transmute::<_, *const c_void>(self.releaseshadercompiler) == (dummy_pfnglreleaseshadercompilerproc as *const c_void) {&null::<PFNGLRELEASESHADERCOMPILERPROC>()} else {&self.releaseshadercompiler}})
21621			.field("shaderbinary", unsafe{if transmute::<_, *const c_void>(self.shaderbinary) == (dummy_pfnglshaderbinaryproc as *const c_void) {&null::<PFNGLSHADERBINARYPROC>()} else {&self.shaderbinary}})
21622			.field("getshaderprecisionformat", unsafe{if transmute::<_, *const c_void>(self.getshaderprecisionformat) == (dummy_pfnglgetshaderprecisionformatproc as *const c_void) {&null::<PFNGLGETSHADERPRECISIONFORMATPROC>()} else {&self.getshaderprecisionformat}})
21623			.field("depthrangef", unsafe{if transmute::<_, *const c_void>(self.depthrangef) == (dummy_pfngldepthrangefproc as *const c_void) {&null::<PFNGLDEPTHRANGEFPROC>()} else {&self.depthrangef}})
21624			.field("cleardepthf", unsafe{if transmute::<_, *const c_void>(self.cleardepthf) == (dummy_pfnglcleardepthfproc as *const c_void) {&null::<PFNGLCLEARDEPTHFPROC>()} else {&self.cleardepthf}})
21625			.field("getprogrambinary", unsafe{if transmute::<_, *const c_void>(self.getprogrambinary) == (dummy_pfnglgetprogrambinaryproc as *const c_void) {&null::<PFNGLGETPROGRAMBINARYPROC>()} else {&self.getprogrambinary}})
21626			.field("programbinary", unsafe{if transmute::<_, *const c_void>(self.programbinary) == (dummy_pfnglprogrambinaryproc as *const c_void) {&null::<PFNGLPROGRAMBINARYPROC>()} else {&self.programbinary}})
21627			.field("programparameteri", unsafe{if transmute::<_, *const c_void>(self.programparameteri) == (dummy_pfnglprogramparameteriproc as *const c_void) {&null::<PFNGLPROGRAMPARAMETERIPROC>()} else {&self.programparameteri}})
21628			.field("useprogramstages", unsafe{if transmute::<_, *const c_void>(self.useprogramstages) == (dummy_pfngluseprogramstagesproc as *const c_void) {&null::<PFNGLUSEPROGRAMSTAGESPROC>()} else {&self.useprogramstages}})
21629			.field("activeshaderprogram", unsafe{if transmute::<_, *const c_void>(self.activeshaderprogram) == (dummy_pfnglactiveshaderprogramproc as *const c_void) {&null::<PFNGLACTIVESHADERPROGRAMPROC>()} else {&self.activeshaderprogram}})
21630			.field("createshaderprogramv", unsafe{if transmute::<_, *const c_void>(self.createshaderprogramv) == (dummy_pfnglcreateshaderprogramvproc as *const c_void) {&null::<PFNGLCREATESHADERPROGRAMVPROC>()} else {&self.createshaderprogramv}})
21631			.field("bindprogrampipeline", unsafe{if transmute::<_, *const c_void>(self.bindprogrampipeline) == (dummy_pfnglbindprogrampipelineproc as *const c_void) {&null::<PFNGLBINDPROGRAMPIPELINEPROC>()} else {&self.bindprogrampipeline}})
21632			.field("deleteprogrampipelines", unsafe{if transmute::<_, *const c_void>(self.deleteprogrampipelines) == (dummy_pfngldeleteprogrampipelinesproc as *const c_void) {&null::<PFNGLDELETEPROGRAMPIPELINESPROC>()} else {&self.deleteprogrampipelines}})
21633			.field("genprogrampipelines", unsafe{if transmute::<_, *const c_void>(self.genprogrampipelines) == (dummy_pfnglgenprogrampipelinesproc as *const c_void) {&null::<PFNGLGENPROGRAMPIPELINESPROC>()} else {&self.genprogrampipelines}})
21634			.field("isprogrampipeline", unsafe{if transmute::<_, *const c_void>(self.isprogrampipeline) == (dummy_pfnglisprogrampipelineproc as *const c_void) {&null::<PFNGLISPROGRAMPIPELINEPROC>()} else {&self.isprogrampipeline}})
21635			.field("getprogrampipelineiv", unsafe{if transmute::<_, *const c_void>(self.getprogrampipelineiv) == (dummy_pfnglgetprogrampipelineivproc as *const c_void) {&null::<PFNGLGETPROGRAMPIPELINEIVPROC>()} else {&self.getprogrampipelineiv}})
21636			.field("programuniform1i", unsafe{if transmute::<_, *const c_void>(self.programuniform1i) == (dummy_pfnglprogramuniform1iproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM1IPROC>()} else {&self.programuniform1i}})
21637			.field("programuniform1iv", unsafe{if transmute::<_, *const c_void>(self.programuniform1iv) == (dummy_pfnglprogramuniform1ivproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM1IVPROC>()} else {&self.programuniform1iv}})
21638			.field("programuniform1f", unsafe{if transmute::<_, *const c_void>(self.programuniform1f) == (dummy_pfnglprogramuniform1fproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM1FPROC>()} else {&self.programuniform1f}})
21639			.field("programuniform1fv", unsafe{if transmute::<_, *const c_void>(self.programuniform1fv) == (dummy_pfnglprogramuniform1fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM1FVPROC>()} else {&self.programuniform1fv}})
21640			.field("programuniform1d", unsafe{if transmute::<_, *const c_void>(self.programuniform1d) == (dummy_pfnglprogramuniform1dproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM1DPROC>()} else {&self.programuniform1d}})
21641			.field("programuniform1dv", unsafe{if transmute::<_, *const c_void>(self.programuniform1dv) == (dummy_pfnglprogramuniform1dvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM1DVPROC>()} else {&self.programuniform1dv}})
21642			.field("programuniform1ui", unsafe{if transmute::<_, *const c_void>(self.programuniform1ui) == (dummy_pfnglprogramuniform1uiproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM1UIPROC>()} else {&self.programuniform1ui}})
21643			.field("programuniform1uiv", unsafe{if transmute::<_, *const c_void>(self.programuniform1uiv) == (dummy_pfnglprogramuniform1uivproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM1UIVPROC>()} else {&self.programuniform1uiv}})
21644			.field("programuniform2i", unsafe{if transmute::<_, *const c_void>(self.programuniform2i) == (dummy_pfnglprogramuniform2iproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM2IPROC>()} else {&self.programuniform2i}})
21645			.field("programuniform2iv", unsafe{if transmute::<_, *const c_void>(self.programuniform2iv) == (dummy_pfnglprogramuniform2ivproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM2IVPROC>()} else {&self.programuniform2iv}})
21646			.field("programuniform2f", unsafe{if transmute::<_, *const c_void>(self.programuniform2f) == (dummy_pfnglprogramuniform2fproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM2FPROC>()} else {&self.programuniform2f}})
21647			.field("programuniform2fv", unsafe{if transmute::<_, *const c_void>(self.programuniform2fv) == (dummy_pfnglprogramuniform2fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM2FVPROC>()} else {&self.programuniform2fv}})
21648			.field("programuniform2d", unsafe{if transmute::<_, *const c_void>(self.programuniform2d) == (dummy_pfnglprogramuniform2dproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM2DPROC>()} else {&self.programuniform2d}})
21649			.field("programuniform2dv", unsafe{if transmute::<_, *const c_void>(self.programuniform2dv) == (dummy_pfnglprogramuniform2dvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM2DVPROC>()} else {&self.programuniform2dv}})
21650			.field("programuniform2ui", unsafe{if transmute::<_, *const c_void>(self.programuniform2ui) == (dummy_pfnglprogramuniform2uiproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM2UIPROC>()} else {&self.programuniform2ui}})
21651			.field("programuniform2uiv", unsafe{if transmute::<_, *const c_void>(self.programuniform2uiv) == (dummy_pfnglprogramuniform2uivproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM2UIVPROC>()} else {&self.programuniform2uiv}})
21652			.field("programuniform3i", unsafe{if transmute::<_, *const c_void>(self.programuniform3i) == (dummy_pfnglprogramuniform3iproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM3IPROC>()} else {&self.programuniform3i}})
21653			.field("programuniform3iv", unsafe{if transmute::<_, *const c_void>(self.programuniform3iv) == (dummy_pfnglprogramuniform3ivproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM3IVPROC>()} else {&self.programuniform3iv}})
21654			.field("programuniform3f", unsafe{if transmute::<_, *const c_void>(self.programuniform3f) == (dummy_pfnglprogramuniform3fproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM3FPROC>()} else {&self.programuniform3f}})
21655			.field("programuniform3fv", unsafe{if transmute::<_, *const c_void>(self.programuniform3fv) == (dummy_pfnglprogramuniform3fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM3FVPROC>()} else {&self.programuniform3fv}})
21656			.field("programuniform3d", unsafe{if transmute::<_, *const c_void>(self.programuniform3d) == (dummy_pfnglprogramuniform3dproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM3DPROC>()} else {&self.programuniform3d}})
21657			.field("programuniform3dv", unsafe{if transmute::<_, *const c_void>(self.programuniform3dv) == (dummy_pfnglprogramuniform3dvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM3DVPROC>()} else {&self.programuniform3dv}})
21658			.field("programuniform3ui", unsafe{if transmute::<_, *const c_void>(self.programuniform3ui) == (dummy_pfnglprogramuniform3uiproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM3UIPROC>()} else {&self.programuniform3ui}})
21659			.field("programuniform3uiv", unsafe{if transmute::<_, *const c_void>(self.programuniform3uiv) == (dummy_pfnglprogramuniform3uivproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM3UIVPROC>()} else {&self.programuniform3uiv}})
21660			.field("programuniform4i", unsafe{if transmute::<_, *const c_void>(self.programuniform4i) == (dummy_pfnglprogramuniform4iproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM4IPROC>()} else {&self.programuniform4i}})
21661			.field("programuniform4iv", unsafe{if transmute::<_, *const c_void>(self.programuniform4iv) == (dummy_pfnglprogramuniform4ivproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM4IVPROC>()} else {&self.programuniform4iv}})
21662			.field("programuniform4f", unsafe{if transmute::<_, *const c_void>(self.programuniform4f) == (dummy_pfnglprogramuniform4fproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM4FPROC>()} else {&self.programuniform4f}})
21663			.field("programuniform4fv", unsafe{if transmute::<_, *const c_void>(self.programuniform4fv) == (dummy_pfnglprogramuniform4fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM4FVPROC>()} else {&self.programuniform4fv}})
21664			.field("programuniform4d", unsafe{if transmute::<_, *const c_void>(self.programuniform4d) == (dummy_pfnglprogramuniform4dproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM4DPROC>()} else {&self.programuniform4d}})
21665			.field("programuniform4dv", unsafe{if transmute::<_, *const c_void>(self.programuniform4dv) == (dummy_pfnglprogramuniform4dvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM4DVPROC>()} else {&self.programuniform4dv}})
21666			.field("programuniform4ui", unsafe{if transmute::<_, *const c_void>(self.programuniform4ui) == (dummy_pfnglprogramuniform4uiproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM4UIPROC>()} else {&self.programuniform4ui}})
21667			.field("programuniform4uiv", unsafe{if transmute::<_, *const c_void>(self.programuniform4uiv) == (dummy_pfnglprogramuniform4uivproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM4UIVPROC>()} else {&self.programuniform4uiv}})
21668			.field("programuniformmatrix2fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix2fv) == (dummy_pfnglprogramuniformmatrix2fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX2FVPROC>()} else {&self.programuniformmatrix2fv}})
21669			.field("programuniformmatrix3fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix3fv) == (dummy_pfnglprogramuniformmatrix3fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX3FVPROC>()} else {&self.programuniformmatrix3fv}})
21670			.field("programuniformmatrix4fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix4fv) == (dummy_pfnglprogramuniformmatrix4fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX4FVPROC>()} else {&self.programuniformmatrix4fv}})
21671			.field("programuniformmatrix2dv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix2dv) == (dummy_pfnglprogramuniformmatrix2dvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX2DVPROC>()} else {&self.programuniformmatrix2dv}})
21672			.field("programuniformmatrix3dv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix3dv) == (dummy_pfnglprogramuniformmatrix3dvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX3DVPROC>()} else {&self.programuniformmatrix3dv}})
21673			.field("programuniformmatrix4dv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix4dv) == (dummy_pfnglprogramuniformmatrix4dvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX4DVPROC>()} else {&self.programuniformmatrix4dv}})
21674			.field("programuniformmatrix2x3fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix2x3fv) == (dummy_pfnglprogramuniformmatrix2x3fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC>()} else {&self.programuniformmatrix2x3fv}})
21675			.field("programuniformmatrix3x2fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix3x2fv) == (dummy_pfnglprogramuniformmatrix3x2fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC>()} else {&self.programuniformmatrix3x2fv}})
21676			.field("programuniformmatrix2x4fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix2x4fv) == (dummy_pfnglprogramuniformmatrix2x4fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC>()} else {&self.programuniformmatrix2x4fv}})
21677			.field("programuniformmatrix4x2fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix4x2fv) == (dummy_pfnglprogramuniformmatrix4x2fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC>()} else {&self.programuniformmatrix4x2fv}})
21678			.field("programuniformmatrix3x4fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix3x4fv) == (dummy_pfnglprogramuniformmatrix3x4fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC>()} else {&self.programuniformmatrix3x4fv}})
21679			.field("programuniformmatrix4x3fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix4x3fv) == (dummy_pfnglprogramuniformmatrix4x3fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC>()} else {&self.programuniformmatrix4x3fv}})
21680			.field("programuniformmatrix2x3dv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix2x3dv) == (dummy_pfnglprogramuniformmatrix2x3dvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC>()} else {&self.programuniformmatrix2x3dv}})
21681			.field("programuniformmatrix3x2dv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix3x2dv) == (dummy_pfnglprogramuniformmatrix3x2dvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC>()} else {&self.programuniformmatrix3x2dv}})
21682			.field("programuniformmatrix2x4dv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix2x4dv) == (dummy_pfnglprogramuniformmatrix2x4dvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC>()} else {&self.programuniformmatrix2x4dv}})
21683			.field("programuniformmatrix4x2dv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix4x2dv) == (dummy_pfnglprogramuniformmatrix4x2dvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC>()} else {&self.programuniformmatrix4x2dv}})
21684			.field("programuniformmatrix3x4dv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix3x4dv) == (dummy_pfnglprogramuniformmatrix3x4dvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC>()} else {&self.programuniformmatrix3x4dv}})
21685			.field("programuniformmatrix4x3dv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix4x3dv) == (dummy_pfnglprogramuniformmatrix4x3dvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC>()} else {&self.programuniformmatrix4x3dv}})
21686			.field("validateprogrampipeline", unsafe{if transmute::<_, *const c_void>(self.validateprogrampipeline) == (dummy_pfnglvalidateprogrampipelineproc as *const c_void) {&null::<PFNGLVALIDATEPROGRAMPIPELINEPROC>()} else {&self.validateprogrampipeline}})
21687			.field("getprogrampipelineinfolog", unsafe{if transmute::<_, *const c_void>(self.getprogrampipelineinfolog) == (dummy_pfnglgetprogrampipelineinfologproc as *const c_void) {&null::<PFNGLGETPROGRAMPIPELINEINFOLOGPROC>()} else {&self.getprogrampipelineinfolog}})
21688			.field("vertexattribl1d", unsafe{if transmute::<_, *const c_void>(self.vertexattribl1d) == (dummy_pfnglvertexattribl1dproc as *const c_void) {&null::<PFNGLVERTEXATTRIBL1DPROC>()} else {&self.vertexattribl1d}})
21689			.field("vertexattribl2d", unsafe{if transmute::<_, *const c_void>(self.vertexattribl2d) == (dummy_pfnglvertexattribl2dproc as *const c_void) {&null::<PFNGLVERTEXATTRIBL2DPROC>()} else {&self.vertexattribl2d}})
21690			.field("vertexattribl3d", unsafe{if transmute::<_, *const c_void>(self.vertexattribl3d) == (dummy_pfnglvertexattribl3dproc as *const c_void) {&null::<PFNGLVERTEXATTRIBL3DPROC>()} else {&self.vertexattribl3d}})
21691			.field("vertexattribl4d", unsafe{if transmute::<_, *const c_void>(self.vertexattribl4d) == (dummy_pfnglvertexattribl4dproc as *const c_void) {&null::<PFNGLVERTEXATTRIBL4DPROC>()} else {&self.vertexattribl4d}})
21692			.field("vertexattribl1dv", unsafe{if transmute::<_, *const c_void>(self.vertexattribl1dv) == (dummy_pfnglvertexattribl1dvproc as *const c_void) {&null::<PFNGLVERTEXATTRIBL1DVPROC>()} else {&self.vertexattribl1dv}})
21693			.field("vertexattribl2dv", unsafe{if transmute::<_, *const c_void>(self.vertexattribl2dv) == (dummy_pfnglvertexattribl2dvproc as *const c_void) {&null::<PFNGLVERTEXATTRIBL2DVPROC>()} else {&self.vertexattribl2dv}})
21694			.field("vertexattribl3dv", unsafe{if transmute::<_, *const c_void>(self.vertexattribl3dv) == (dummy_pfnglvertexattribl3dvproc as *const c_void) {&null::<PFNGLVERTEXATTRIBL3DVPROC>()} else {&self.vertexattribl3dv}})
21695			.field("vertexattribl4dv", unsafe{if transmute::<_, *const c_void>(self.vertexattribl4dv) == (dummy_pfnglvertexattribl4dvproc as *const c_void) {&null::<PFNGLVERTEXATTRIBL4DVPROC>()} else {&self.vertexattribl4dv}})
21696			.field("vertexattriblpointer", unsafe{if transmute::<_, *const c_void>(self.vertexattriblpointer) == (dummy_pfnglvertexattriblpointerproc as *const c_void) {&null::<PFNGLVERTEXATTRIBLPOINTERPROC>()} else {&self.vertexattriblpointer}})
21697			.field("getvertexattribldv", unsafe{if transmute::<_, *const c_void>(self.getvertexattribldv) == (dummy_pfnglgetvertexattribldvproc as *const c_void) {&null::<PFNGLGETVERTEXATTRIBLDVPROC>()} else {&self.getvertexattribldv}})
21698			.field("viewportarrayv", unsafe{if transmute::<_, *const c_void>(self.viewportarrayv) == (dummy_pfnglviewportarrayvproc as *const c_void) {&null::<PFNGLVIEWPORTARRAYVPROC>()} else {&self.viewportarrayv}})
21699			.field("viewportindexedf", unsafe{if transmute::<_, *const c_void>(self.viewportindexedf) == (dummy_pfnglviewportindexedfproc as *const c_void) {&null::<PFNGLVIEWPORTINDEXEDFPROC>()} else {&self.viewportindexedf}})
21700			.field("viewportindexedfv", unsafe{if transmute::<_, *const c_void>(self.viewportindexedfv) == (dummy_pfnglviewportindexedfvproc as *const c_void) {&null::<PFNGLVIEWPORTINDEXEDFVPROC>()} else {&self.viewportindexedfv}})
21701			.field("scissorarrayv", unsafe{if transmute::<_, *const c_void>(self.scissorarrayv) == (dummy_pfnglscissorarrayvproc as *const c_void) {&null::<PFNGLSCISSORARRAYVPROC>()} else {&self.scissorarrayv}})
21702			.field("scissorindexed", unsafe{if transmute::<_, *const c_void>(self.scissorindexed) == (dummy_pfnglscissorindexedproc as *const c_void) {&null::<PFNGLSCISSORINDEXEDPROC>()} else {&self.scissorindexed}})
21703			.field("scissorindexedv", unsafe{if transmute::<_, *const c_void>(self.scissorindexedv) == (dummy_pfnglscissorindexedvproc as *const c_void) {&null::<PFNGLSCISSORINDEXEDVPROC>()} else {&self.scissorindexedv}})
21704			.field("depthrangearrayv", unsafe{if transmute::<_, *const c_void>(self.depthrangearrayv) == (dummy_pfngldepthrangearrayvproc as *const c_void) {&null::<PFNGLDEPTHRANGEARRAYVPROC>()} else {&self.depthrangearrayv}})
21705			.field("depthrangeindexed", unsafe{if transmute::<_, *const c_void>(self.depthrangeindexed) == (dummy_pfngldepthrangeindexedproc as *const c_void) {&null::<PFNGLDEPTHRANGEINDEXEDPROC>()} else {&self.depthrangeindexed}})
21706			.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}})
21707			.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}})
21708			.finish()
21709		} else {
21710			f.debug_struct("Version41")
21711			.field("available", &self.available)
21712			.finish_non_exhaustive()
21713		}
21714	}
21715}
21716
21717/// The prototype to the OpenGL function `DrawArraysInstancedBaseInstance`
21718type PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC = extern "system" fn(GLenum, GLint, GLsizei, GLsizei, GLuint);
21719
21720/// The prototype to the OpenGL function `DrawElementsInstancedBaseInstance`
21721type PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC = extern "system" fn(GLenum, GLsizei, GLenum, *const c_void, GLsizei, GLuint);
21722
21723/// The prototype to the OpenGL function `DrawElementsInstancedBaseVertexBaseInstance`
21724type PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC = extern "system" fn(GLenum, GLsizei, GLenum, *const c_void, GLsizei, GLint, GLuint);
21725
21726/// The prototype to the OpenGL function `GetInternalformativ`
21727type PFNGLGETINTERNALFORMATIVPROC = extern "system" fn(GLenum, GLenum, GLenum, GLsizei, *mut GLint);
21728
21729/// The prototype to the OpenGL function `GetActiveAtomicCounterBufferiv`
21730type PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC = extern "system" fn(GLuint, GLuint, GLenum, *mut GLint);
21731
21732/// The prototype to the OpenGL function `BindImageTexture`
21733type PFNGLBINDIMAGETEXTUREPROC = extern "system" fn(GLuint, GLuint, GLint, GLboolean, GLint, GLenum, GLenum);
21734
21735/// The prototype to the OpenGL function `MemoryBarrier`
21736type PFNGLMEMORYBARRIERPROC = extern "system" fn(GLbitfield);
21737
21738/// The prototype to the OpenGL function `TexStorage1D`
21739type PFNGLTEXSTORAGE1DPROC = extern "system" fn(GLenum, GLsizei, GLenum, GLsizei);
21740
21741/// The prototype to the OpenGL function `TexStorage2D`
21742type PFNGLTEXSTORAGE2DPROC = extern "system" fn(GLenum, GLsizei, GLenum, GLsizei, GLsizei);
21743
21744/// The prototype to the OpenGL function `TexStorage3D`
21745type PFNGLTEXSTORAGE3DPROC = extern "system" fn(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei);
21746
21747/// The prototype to the OpenGL function `DrawTransformFeedbackInstanced`
21748type PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC = extern "system" fn(GLenum, GLuint, GLsizei);
21749
21750/// The prototype to the OpenGL function `DrawTransformFeedbackStreamInstanced`
21751type PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC = extern "system" fn(GLenum, GLuint, GLuint, GLsizei);
21752
21753/// The dummy function of `DrawArraysInstancedBaseInstance()`
21754extern "system" fn dummy_pfngldrawarraysinstancedbaseinstanceproc (_: GLenum, _: GLint, _: GLsizei, _: GLsizei, _: GLuint) {
21755	panic!("OpenGL function pointer `glDrawArraysInstancedBaseInstance()` is null.")
21756}
21757
21758/// The dummy function of `DrawElementsInstancedBaseInstance()`
21759extern "system" fn dummy_pfngldrawelementsinstancedbaseinstanceproc (_: GLenum, _: GLsizei, _: GLenum, _: *const c_void, _: GLsizei, _: GLuint) {
21760	panic!("OpenGL function pointer `glDrawElementsInstancedBaseInstance()` is null.")
21761}
21762
21763/// The dummy function of `DrawElementsInstancedBaseVertexBaseInstance()`
21764extern "system" fn dummy_pfngldrawelementsinstancedbasevertexbaseinstanceproc (_: GLenum, _: GLsizei, _: GLenum, _: *const c_void, _: GLsizei, _: GLint, _: GLuint) {
21765	panic!("OpenGL function pointer `glDrawElementsInstancedBaseVertexBaseInstance()` is null.")
21766}
21767
21768/// The dummy function of `GetInternalformativ()`
21769extern "system" fn dummy_pfnglgetinternalformativproc (_: GLenum, _: GLenum, _: GLenum, _: GLsizei, _: *mut GLint) {
21770	panic!("OpenGL function pointer `glGetInternalformativ()` is null.")
21771}
21772
21773/// The dummy function of `GetActiveAtomicCounterBufferiv()`
21774extern "system" fn dummy_pfnglgetactiveatomiccounterbufferivproc (_: GLuint, _: GLuint, _: GLenum, _: *mut GLint) {
21775	panic!("OpenGL function pointer `glGetActiveAtomicCounterBufferiv()` is null.")
21776}
21777
21778/// The dummy function of `BindImageTexture()`
21779extern "system" fn dummy_pfnglbindimagetextureproc (_: GLuint, _: GLuint, _: GLint, _: GLboolean, _: GLint, _: GLenum, _: GLenum) {
21780	panic!("OpenGL function pointer `glBindImageTexture()` is null.")
21781}
21782
21783/// The dummy function of `MemoryBarrier()`
21784extern "system" fn dummy_pfnglmemorybarrierproc (_: GLbitfield) {
21785	panic!("OpenGL function pointer `glMemoryBarrier()` is null.")
21786}
21787
21788/// The dummy function of `TexStorage1D()`
21789extern "system" fn dummy_pfngltexstorage1dproc (_: GLenum, _: GLsizei, _: GLenum, _: GLsizei) {
21790	panic!("OpenGL function pointer `glTexStorage1D()` is null.")
21791}
21792
21793/// The dummy function of `TexStorage2D()`
21794extern "system" fn dummy_pfngltexstorage2dproc (_: GLenum, _: GLsizei, _: GLenum, _: GLsizei, _: GLsizei) {
21795	panic!("OpenGL function pointer `glTexStorage2D()` is null.")
21796}
21797
21798/// The dummy function of `TexStorage3D()`
21799extern "system" fn dummy_pfngltexstorage3dproc (_: GLenum, _: GLsizei, _: GLenum, _: GLsizei, _: GLsizei, _: GLsizei) {
21800	panic!("OpenGL function pointer `glTexStorage3D()` is null.")
21801}
21802
21803/// The dummy function of `DrawTransformFeedbackInstanced()`
21804extern "system" fn dummy_pfngldrawtransformfeedbackinstancedproc (_: GLenum, _: GLuint, _: GLsizei) {
21805	panic!("OpenGL function pointer `glDrawTransformFeedbackInstanced()` is null.")
21806}
21807
21808/// The dummy function of `DrawTransformFeedbackStreamInstanced()`
21809extern "system" fn dummy_pfngldrawtransformfeedbackstreaminstancedproc (_: GLenum, _: GLuint, _: GLuint, _: GLsizei) {
21810	panic!("OpenGL function pointer `glDrawTransformFeedbackStreamInstanced()` is null.")
21811}
21812/// Constant value defined from OpenGL 4.2
21813pub const GL_COPY_READ_BUFFER_BINDING: GLenum = 0x8F36;
21814
21815/// Constant value defined from OpenGL 4.2
21816pub const GL_COPY_WRITE_BUFFER_BINDING: GLenum = 0x8F37;
21817
21818/// Constant value defined from OpenGL 4.2
21819pub const GL_TRANSFORM_FEEDBACK_ACTIVE: GLenum = 0x8E24;
21820
21821/// Constant value defined from OpenGL 4.2
21822pub const GL_TRANSFORM_FEEDBACK_PAUSED: GLenum = 0x8E23;
21823
21824/// Constant value defined from OpenGL 4.2
21825pub const GL_UNPACK_COMPRESSED_BLOCK_WIDTH: GLenum = 0x9127;
21826
21827/// Constant value defined from OpenGL 4.2
21828pub const GL_UNPACK_COMPRESSED_BLOCK_HEIGHT: GLenum = 0x9128;
21829
21830/// Constant value defined from OpenGL 4.2
21831pub const GL_UNPACK_COMPRESSED_BLOCK_DEPTH: GLenum = 0x9129;
21832
21833/// Constant value defined from OpenGL 4.2
21834pub const GL_UNPACK_COMPRESSED_BLOCK_SIZE: GLenum = 0x912A;
21835
21836/// Constant value defined from OpenGL 4.2
21837pub const GL_PACK_COMPRESSED_BLOCK_WIDTH: GLenum = 0x912B;
21838
21839/// Constant value defined from OpenGL 4.2
21840pub const GL_PACK_COMPRESSED_BLOCK_HEIGHT: GLenum = 0x912C;
21841
21842/// Constant value defined from OpenGL 4.2
21843pub const GL_PACK_COMPRESSED_BLOCK_DEPTH: GLenum = 0x912D;
21844
21845/// Constant value defined from OpenGL 4.2
21846pub const GL_PACK_COMPRESSED_BLOCK_SIZE: GLenum = 0x912E;
21847
21848/// Constant value defined from OpenGL 4.2
21849pub const GL_NUM_SAMPLE_COUNTS: GLenum = 0x9380;
21850
21851/// Constant value defined from OpenGL 4.2
21852pub const GL_MIN_MAP_BUFFER_ALIGNMENT: GLenum = 0x90BC;
21853
21854/// Constant value defined from OpenGL 4.2
21855pub const GL_ATOMIC_COUNTER_BUFFER: GLenum = 0x92C0;
21856
21857/// Constant value defined from OpenGL 4.2
21858pub const GL_ATOMIC_COUNTER_BUFFER_BINDING: GLenum = 0x92C1;
21859
21860/// Constant value defined from OpenGL 4.2
21861pub const GL_ATOMIC_COUNTER_BUFFER_START: GLenum = 0x92C2;
21862
21863/// Constant value defined from OpenGL 4.2
21864pub const GL_ATOMIC_COUNTER_BUFFER_SIZE: GLenum = 0x92C3;
21865
21866/// Constant value defined from OpenGL 4.2
21867pub const GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE: GLenum = 0x92C4;
21868
21869/// Constant value defined from OpenGL 4.2
21870pub const GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS: GLenum = 0x92C5;
21871
21872/// Constant value defined from OpenGL 4.2
21873pub const GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES: GLenum = 0x92C6;
21874
21875/// Constant value defined from OpenGL 4.2
21876pub const GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER: GLenum = 0x92C7;
21877
21878/// Constant value defined from OpenGL 4.2
21879pub const GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER: GLenum = 0x92C8;
21880
21881/// Constant value defined from OpenGL 4.2
21882pub const GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER: GLenum = 0x92C9;
21883
21884/// Constant value defined from OpenGL 4.2
21885pub const GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER: GLenum = 0x92CA;
21886
21887/// Constant value defined from OpenGL 4.2
21888pub const GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER: GLenum = 0x92CB;
21889
21890/// Constant value defined from OpenGL 4.2
21891pub const GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92CC;
21892
21893/// Constant value defined from OpenGL 4.2
21894pub const GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92CD;
21895
21896/// Constant value defined from OpenGL 4.2
21897pub const GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92CE;
21898
21899/// Constant value defined from OpenGL 4.2
21900pub const GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92CF;
21901
21902/// Constant value defined from OpenGL 4.2
21903pub const GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92D0;
21904
21905/// Constant value defined from OpenGL 4.2
21906pub const GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92D1;
21907
21908/// Constant value defined from OpenGL 4.2
21909pub const GL_MAX_VERTEX_ATOMIC_COUNTERS: GLenum = 0x92D2;
21910
21911/// Constant value defined from OpenGL 4.2
21912pub const GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS: GLenum = 0x92D3;
21913
21914/// Constant value defined from OpenGL 4.2
21915pub const GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS: GLenum = 0x92D4;
21916
21917/// Constant value defined from OpenGL 4.2
21918pub const GL_MAX_GEOMETRY_ATOMIC_COUNTERS: GLenum = 0x92D5;
21919
21920/// Constant value defined from OpenGL 4.2
21921pub const GL_MAX_FRAGMENT_ATOMIC_COUNTERS: GLenum = 0x92D6;
21922
21923/// Constant value defined from OpenGL 4.2
21924pub const GL_MAX_COMBINED_ATOMIC_COUNTERS: GLenum = 0x92D7;
21925
21926/// Constant value defined from OpenGL 4.2
21927pub const GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE: GLenum = 0x92D8;
21928
21929/// Constant value defined from OpenGL 4.2
21930pub const GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS: GLenum = 0x92DC;
21931
21932/// Constant value defined from OpenGL 4.2
21933pub const GL_ACTIVE_ATOMIC_COUNTER_BUFFERS: GLenum = 0x92D9;
21934
21935/// Constant value defined from OpenGL 4.2
21936pub const GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX: GLenum = 0x92DA;
21937
21938/// Constant value defined from OpenGL 4.2
21939pub const GL_UNSIGNED_INT_ATOMIC_COUNTER: GLenum = 0x92DB;
21940
21941/// Constant value defined from OpenGL 4.2
21942pub const GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT: GLbitfield = 0x00000001;
21943
21944/// Constant value defined from OpenGL 4.2
21945pub const GL_ELEMENT_ARRAY_BARRIER_BIT: GLbitfield = 0x00000002;
21946
21947/// Constant value defined from OpenGL 4.2
21948pub const GL_UNIFORM_BARRIER_BIT: GLbitfield = 0x00000004;
21949
21950/// Constant value defined from OpenGL 4.2
21951pub const GL_TEXTURE_FETCH_BARRIER_BIT: GLbitfield = 0x00000008;
21952
21953/// Constant value defined from OpenGL 4.2
21954pub const GL_SHADER_IMAGE_ACCESS_BARRIER_BIT: GLbitfield = 0x00000020;
21955
21956/// Constant value defined from OpenGL 4.2
21957pub const GL_COMMAND_BARRIER_BIT: GLbitfield = 0x00000040;
21958
21959/// Constant value defined from OpenGL 4.2
21960pub const GL_PIXEL_BUFFER_BARRIER_BIT: GLbitfield = 0x00000080;
21961
21962/// Constant value defined from OpenGL 4.2
21963pub const GL_TEXTURE_UPDATE_BARRIER_BIT: GLbitfield = 0x00000100;
21964
21965/// Constant value defined from OpenGL 4.2
21966pub const GL_BUFFER_UPDATE_BARRIER_BIT: GLbitfield = 0x00000200;
21967
21968/// Constant value defined from OpenGL 4.2
21969pub const GL_FRAMEBUFFER_BARRIER_BIT: GLbitfield = 0x00000400;
21970
21971/// Constant value defined from OpenGL 4.2
21972pub const GL_TRANSFORM_FEEDBACK_BARRIER_BIT: GLbitfield = 0x00000800;
21973
21974/// Constant value defined from OpenGL 4.2
21975pub const GL_ATOMIC_COUNTER_BARRIER_BIT: GLbitfield = 0x00001000;
21976
21977/// Constant value defined from OpenGL 4.2
21978pub const GL_ALL_BARRIER_BITS: GLbitfield = 0xFFFFFFFF;
21979
21980/// Constant value defined from OpenGL 4.2
21981pub const GL_MAX_IMAGE_UNITS: GLenum = 0x8F38;
21982
21983/// Constant value defined from OpenGL 4.2
21984pub const GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS: GLenum = 0x8F39;
21985
21986/// Constant value defined from OpenGL 4.2
21987pub const GL_IMAGE_BINDING_NAME: GLenum = 0x8F3A;
21988
21989/// Constant value defined from OpenGL 4.2
21990pub const GL_IMAGE_BINDING_LEVEL: GLenum = 0x8F3B;
21991
21992/// Constant value defined from OpenGL 4.2
21993pub const GL_IMAGE_BINDING_LAYERED: GLenum = 0x8F3C;
21994
21995/// Constant value defined from OpenGL 4.2
21996pub const GL_IMAGE_BINDING_LAYER: GLenum = 0x8F3D;
21997
21998/// Constant value defined from OpenGL 4.2
21999pub const GL_IMAGE_BINDING_ACCESS: GLenum = 0x8F3E;
22000
22001/// Constant value defined from OpenGL 4.2
22002pub const GL_IMAGE_1D: GLenum = 0x904C;
22003
22004/// Constant value defined from OpenGL 4.2
22005pub const GL_IMAGE_2D: GLenum = 0x904D;
22006
22007/// Constant value defined from OpenGL 4.2
22008pub const GL_IMAGE_3D: GLenum = 0x904E;
22009
22010/// Constant value defined from OpenGL 4.2
22011pub const GL_IMAGE_2D_RECT: GLenum = 0x904F;
22012
22013/// Constant value defined from OpenGL 4.2
22014pub const GL_IMAGE_CUBE: GLenum = 0x9050;
22015
22016/// Constant value defined from OpenGL 4.2
22017pub const GL_IMAGE_BUFFER: GLenum = 0x9051;
22018
22019/// Constant value defined from OpenGL 4.2
22020pub const GL_IMAGE_1D_ARRAY: GLenum = 0x9052;
22021
22022/// Constant value defined from OpenGL 4.2
22023pub const GL_IMAGE_2D_ARRAY: GLenum = 0x9053;
22024
22025/// Constant value defined from OpenGL 4.2
22026pub const GL_IMAGE_CUBE_MAP_ARRAY: GLenum = 0x9054;
22027
22028/// Constant value defined from OpenGL 4.2
22029pub const GL_IMAGE_2D_MULTISAMPLE: GLenum = 0x9055;
22030
22031/// Constant value defined from OpenGL 4.2
22032pub const GL_IMAGE_2D_MULTISAMPLE_ARRAY: GLenum = 0x9056;
22033
22034/// Constant value defined from OpenGL 4.2
22035pub const GL_INT_IMAGE_1D: GLenum = 0x9057;
22036
22037/// Constant value defined from OpenGL 4.2
22038pub const GL_INT_IMAGE_2D: GLenum = 0x9058;
22039
22040/// Constant value defined from OpenGL 4.2
22041pub const GL_INT_IMAGE_3D: GLenum = 0x9059;
22042
22043/// Constant value defined from OpenGL 4.2
22044pub const GL_INT_IMAGE_2D_RECT: GLenum = 0x905A;
22045
22046/// Constant value defined from OpenGL 4.2
22047pub const GL_INT_IMAGE_CUBE: GLenum = 0x905B;
22048
22049/// Constant value defined from OpenGL 4.2
22050pub const GL_INT_IMAGE_BUFFER: GLenum = 0x905C;
22051
22052/// Constant value defined from OpenGL 4.2
22053pub const GL_INT_IMAGE_1D_ARRAY: GLenum = 0x905D;
22054
22055/// Constant value defined from OpenGL 4.2
22056pub const GL_INT_IMAGE_2D_ARRAY: GLenum = 0x905E;
22057
22058/// Constant value defined from OpenGL 4.2
22059pub const GL_INT_IMAGE_CUBE_MAP_ARRAY: GLenum = 0x905F;
22060
22061/// Constant value defined from OpenGL 4.2
22062pub const GL_INT_IMAGE_2D_MULTISAMPLE: GLenum = 0x9060;
22063
22064/// Constant value defined from OpenGL 4.2
22065pub const GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY: GLenum = 0x9061;
22066
22067/// Constant value defined from OpenGL 4.2
22068pub const GL_UNSIGNED_INT_IMAGE_1D: GLenum = 0x9062;
22069
22070/// Constant value defined from OpenGL 4.2
22071pub const GL_UNSIGNED_INT_IMAGE_2D: GLenum = 0x9063;
22072
22073/// Constant value defined from OpenGL 4.2
22074pub const GL_UNSIGNED_INT_IMAGE_3D: GLenum = 0x9064;
22075
22076/// Constant value defined from OpenGL 4.2
22077pub const GL_UNSIGNED_INT_IMAGE_2D_RECT: GLenum = 0x9065;
22078
22079/// Constant value defined from OpenGL 4.2
22080pub const GL_UNSIGNED_INT_IMAGE_CUBE: GLenum = 0x9066;
22081
22082/// Constant value defined from OpenGL 4.2
22083pub const GL_UNSIGNED_INT_IMAGE_BUFFER: GLenum = 0x9067;
22084
22085/// Constant value defined from OpenGL 4.2
22086pub const GL_UNSIGNED_INT_IMAGE_1D_ARRAY: GLenum = 0x9068;
22087
22088/// Constant value defined from OpenGL 4.2
22089pub const GL_UNSIGNED_INT_IMAGE_2D_ARRAY: GLenum = 0x9069;
22090
22091/// Constant value defined from OpenGL 4.2
22092pub const GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY: GLenum = 0x906A;
22093
22094/// Constant value defined from OpenGL 4.2
22095pub const GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE: GLenum = 0x906B;
22096
22097/// Constant value defined from OpenGL 4.2
22098pub const GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY: GLenum = 0x906C;
22099
22100/// Constant value defined from OpenGL 4.2
22101pub const GL_MAX_IMAGE_SAMPLES: GLenum = 0x906D;
22102
22103/// Constant value defined from OpenGL 4.2
22104pub const GL_IMAGE_BINDING_FORMAT: GLenum = 0x906E;
22105
22106/// Constant value defined from OpenGL 4.2
22107pub const GL_IMAGE_FORMAT_COMPATIBILITY_TYPE: GLenum = 0x90C7;
22108
22109/// Constant value defined from OpenGL 4.2
22110pub const GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE: GLenum = 0x90C8;
22111
22112/// Constant value defined from OpenGL 4.2
22113pub const GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS: GLenum = 0x90C9;
22114
22115/// Constant value defined from OpenGL 4.2
22116pub const GL_MAX_VERTEX_IMAGE_UNIFORMS: GLenum = 0x90CA;
22117
22118/// Constant value defined from OpenGL 4.2
22119pub const GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS: GLenum = 0x90CB;
22120
22121/// Constant value defined from OpenGL 4.2
22122pub const GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS: GLenum = 0x90CC;
22123
22124/// Constant value defined from OpenGL 4.2
22125pub const GL_MAX_GEOMETRY_IMAGE_UNIFORMS: GLenum = 0x90CD;
22126
22127/// Constant value defined from OpenGL 4.2
22128pub const GL_MAX_FRAGMENT_IMAGE_UNIFORMS: GLenum = 0x90CE;
22129
22130/// Constant value defined from OpenGL 4.2
22131pub const GL_MAX_COMBINED_IMAGE_UNIFORMS: GLenum = 0x90CF;
22132
22133/// Constant value defined from OpenGL 4.2
22134pub const GL_COMPRESSED_RGBA_BPTC_UNORM: GLenum = 0x8E8C;
22135
22136/// Constant value defined from OpenGL 4.2
22137pub const GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM: GLenum = 0x8E8D;
22138
22139/// Constant value defined from OpenGL 4.2
22140pub const GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT: GLenum = 0x8E8E;
22141
22142/// Constant value defined from OpenGL 4.2
22143pub const GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT: GLenum = 0x8E8F;
22144
22145/// Constant value defined from OpenGL 4.2
22146pub const GL_TEXTURE_IMMUTABLE_FORMAT: GLenum = 0x912F;
22147
22148/// Functions from OpenGL version 4.2
22149pub trait GL_4_2 {
22150	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
22151	fn glGetError(&self) -> GLenum;
22152
22153	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawArraysInstancedBaseInstance.xhtml>
22154	fn glDrawArraysInstancedBaseInstance(&self, mode: GLenum, first: GLint, count: GLsizei, instancecount: GLsizei, baseinstance: GLuint) -> Result<()>;
22155
22156	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsInstancedBaseInstance.xhtml>
22157	fn glDrawElementsInstancedBaseInstance(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei, baseinstance: GLuint) -> Result<()>;
22158
22159	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsInstancedBaseVertexBaseInstance.xhtml>
22160	fn glDrawElementsInstancedBaseVertexBaseInstance(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei, basevertex: GLint, baseinstance: GLuint) -> Result<()>;
22161
22162	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetInternalformativ.xhtml>
22163	fn glGetInternalformativ(&self, target: GLenum, internalformat: GLenum, pname: GLenum, count: GLsizei, params: *mut GLint) -> Result<()>;
22164
22165	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveAtomicCounterBufferiv.xhtml>
22166	fn glGetActiveAtomicCounterBufferiv(&self, program: GLuint, bufferIndex: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
22167
22168	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindImageTexture.xhtml>
22169	fn glBindImageTexture(&self, unit: GLuint, texture: GLuint, level: GLint, layered: GLboolean, layer: GLint, access: GLenum, format: GLenum) -> Result<()>;
22170
22171	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMemoryBarrier.xhtml>
22172	fn glMemoryBarrier(&self, barriers: GLbitfield) -> Result<()>;
22173
22174	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexStorage1D.xhtml>
22175	fn glTexStorage1D(&self, target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei) -> Result<()>;
22176
22177	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexStorage2D.xhtml>
22178	fn glTexStorage2D(&self, target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()>;
22179
22180	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexStorage3D.xhtml>
22181	fn glTexStorage3D(&self, target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei) -> Result<()>;
22182
22183	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawTransformFeedbackInstanced.xhtml>
22184	fn glDrawTransformFeedbackInstanced(&self, mode: GLenum, id: GLuint, instancecount: GLsizei) -> Result<()>;
22185
22186	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawTransformFeedbackStreamInstanced.xhtml>
22187	fn glDrawTransformFeedbackStreamInstanced(&self, mode: GLenum, id: GLuint, stream: GLuint, instancecount: GLsizei) -> Result<()>;
22188}
22189/// Functions from OpenGL version 4.2
22190#[derive(Clone, Copy, PartialEq, Eq, Hash)]
22191pub struct Version42 {
22192	/// Is OpenGL version 4.2 available
22193	available: bool,
22194
22195	/// The function pointer to `glGetError()`
22196	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
22197	pub geterror: PFNGLGETERRORPROC,
22198
22199	/// The function pointer to `glDrawArraysInstancedBaseInstance()`
22200	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawArraysInstancedBaseInstance.xhtml>
22201	pub drawarraysinstancedbaseinstance: PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC,
22202
22203	/// The function pointer to `glDrawElementsInstancedBaseInstance()`
22204	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsInstancedBaseInstance.xhtml>
22205	pub drawelementsinstancedbaseinstance: PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC,
22206
22207	/// The function pointer to `glDrawElementsInstancedBaseVertexBaseInstance()`
22208	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsInstancedBaseVertexBaseInstance.xhtml>
22209	pub drawelementsinstancedbasevertexbaseinstance: PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC,
22210
22211	/// The function pointer to `glGetInternalformativ()`
22212	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetInternalformativ.xhtml>
22213	pub getinternalformativ: PFNGLGETINTERNALFORMATIVPROC,
22214
22215	/// The function pointer to `glGetActiveAtomicCounterBufferiv()`
22216	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveAtomicCounterBufferiv.xhtml>
22217	pub getactiveatomiccounterbufferiv: PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC,
22218
22219	/// The function pointer to `glBindImageTexture()`
22220	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindImageTexture.xhtml>
22221	pub bindimagetexture: PFNGLBINDIMAGETEXTUREPROC,
22222
22223	/// The function pointer to `glMemoryBarrier()`
22224	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMemoryBarrier.xhtml>
22225	pub memorybarrier: PFNGLMEMORYBARRIERPROC,
22226
22227	/// The function pointer to `glTexStorage1D()`
22228	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexStorage1D.xhtml>
22229	pub texstorage1d: PFNGLTEXSTORAGE1DPROC,
22230
22231	/// The function pointer to `glTexStorage2D()`
22232	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexStorage2D.xhtml>
22233	pub texstorage2d: PFNGLTEXSTORAGE2DPROC,
22234
22235	/// The function pointer to `glTexStorage3D()`
22236	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexStorage3D.xhtml>
22237	pub texstorage3d: PFNGLTEXSTORAGE3DPROC,
22238
22239	/// The function pointer to `glDrawTransformFeedbackInstanced()`
22240	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawTransformFeedbackInstanced.xhtml>
22241	pub drawtransformfeedbackinstanced: PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC,
22242
22243	/// The function pointer to `glDrawTransformFeedbackStreamInstanced()`
22244	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawTransformFeedbackStreamInstanced.xhtml>
22245	pub drawtransformfeedbackstreaminstanced: PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC,
22246}
22247
22248impl GL_4_2 for Version42 {
22249	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
22250	#[inline(always)]
22251	fn glGetError(&self) -> GLenum {
22252		(self.geterror)()
22253	}
22254	#[inline(always)]
22255	fn glDrawArraysInstancedBaseInstance(&self, mode: GLenum, first: GLint, count: GLsizei, instancecount: GLsizei, baseinstance: GLuint) -> Result<()> {
22256		let ret = process_catch("glDrawArraysInstancedBaseInstance", catch_unwind(||(self.drawarraysinstancedbaseinstance)(mode, first, count, instancecount, baseinstance)));
22257		#[cfg(feature = "diagnose")]
22258		if let Ok(ret) = ret {
22259			return to_result("glDrawArraysInstancedBaseInstance", ret, self.glGetError());
22260		} else {
22261			return ret
22262		}
22263		#[cfg(not(feature = "diagnose"))]
22264		return ret;
22265	}
22266	#[inline(always)]
22267	fn glDrawElementsInstancedBaseInstance(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei, baseinstance: GLuint) -> Result<()> {
22268		let ret = process_catch("glDrawElementsInstancedBaseInstance", catch_unwind(||(self.drawelementsinstancedbaseinstance)(mode, count, type_, indices, instancecount, baseinstance)));
22269		#[cfg(feature = "diagnose")]
22270		if let Ok(ret) = ret {
22271			return to_result("glDrawElementsInstancedBaseInstance", ret, self.glGetError());
22272		} else {
22273			return ret
22274		}
22275		#[cfg(not(feature = "diagnose"))]
22276		return ret;
22277	}
22278	#[inline(always)]
22279	fn glDrawElementsInstancedBaseVertexBaseInstance(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei, basevertex: GLint, baseinstance: GLuint) -> Result<()> {
22280		let ret = process_catch("glDrawElementsInstancedBaseVertexBaseInstance", catch_unwind(||(self.drawelementsinstancedbasevertexbaseinstance)(mode, count, type_, indices, instancecount, basevertex, baseinstance)));
22281		#[cfg(feature = "diagnose")]
22282		if let Ok(ret) = ret {
22283			return to_result("glDrawElementsInstancedBaseVertexBaseInstance", ret, self.glGetError());
22284		} else {
22285			return ret
22286		}
22287		#[cfg(not(feature = "diagnose"))]
22288		return ret;
22289	}
22290	#[inline(always)]
22291	fn glGetInternalformativ(&self, target: GLenum, internalformat: GLenum, pname: GLenum, count: GLsizei, params: *mut GLint) -> Result<()> {
22292		let ret = process_catch("glGetInternalformativ", catch_unwind(||(self.getinternalformativ)(target, internalformat, pname, count, params)));
22293		#[cfg(feature = "diagnose")]
22294		if let Ok(ret) = ret {
22295			return to_result("glGetInternalformativ", ret, self.glGetError());
22296		} else {
22297			return ret
22298		}
22299		#[cfg(not(feature = "diagnose"))]
22300		return ret;
22301	}
22302	#[inline(always)]
22303	fn glGetActiveAtomicCounterBufferiv(&self, program: GLuint, bufferIndex: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
22304		let ret = process_catch("glGetActiveAtomicCounterBufferiv", catch_unwind(||(self.getactiveatomiccounterbufferiv)(program, bufferIndex, pname, params)));
22305		#[cfg(feature = "diagnose")]
22306		if let Ok(ret) = ret {
22307			return to_result("glGetActiveAtomicCounterBufferiv", ret, self.glGetError());
22308		} else {
22309			return ret
22310		}
22311		#[cfg(not(feature = "diagnose"))]
22312		return ret;
22313	}
22314	#[inline(always)]
22315	fn glBindImageTexture(&self, unit: GLuint, texture: GLuint, level: GLint, layered: GLboolean, layer: GLint, access: GLenum, format: GLenum) -> Result<()> {
22316		let ret = process_catch("glBindImageTexture", catch_unwind(||(self.bindimagetexture)(unit, texture, level, layered, layer, access, format)));
22317		#[cfg(feature = "diagnose")]
22318		if let Ok(ret) = ret {
22319			return to_result("glBindImageTexture", ret, self.glGetError());
22320		} else {
22321			return ret
22322		}
22323		#[cfg(not(feature = "diagnose"))]
22324		return ret;
22325	}
22326	#[inline(always)]
22327	fn glMemoryBarrier(&self, barriers: GLbitfield) -> Result<()> {
22328		let ret = process_catch("glMemoryBarrier", catch_unwind(||(self.memorybarrier)(barriers)));
22329		#[cfg(feature = "diagnose")]
22330		if let Ok(ret) = ret {
22331			return to_result("glMemoryBarrier", ret, self.glGetError());
22332		} else {
22333			return ret
22334		}
22335		#[cfg(not(feature = "diagnose"))]
22336		return ret;
22337	}
22338	#[inline(always)]
22339	fn glTexStorage1D(&self, target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei) -> Result<()> {
22340		let ret = process_catch("glTexStorage1D", catch_unwind(||(self.texstorage1d)(target, levels, internalformat, width)));
22341		#[cfg(feature = "diagnose")]
22342		if let Ok(ret) = ret {
22343			return to_result("glTexStorage1D", ret, self.glGetError());
22344		} else {
22345			return ret
22346		}
22347		#[cfg(not(feature = "diagnose"))]
22348		return ret;
22349	}
22350	#[inline(always)]
22351	fn glTexStorage2D(&self, target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()> {
22352		let ret = process_catch("glTexStorage2D", catch_unwind(||(self.texstorage2d)(target, levels, internalformat, width, height)));
22353		#[cfg(feature = "diagnose")]
22354		if let Ok(ret) = ret {
22355			return to_result("glTexStorage2D", ret, self.glGetError());
22356		} else {
22357			return ret
22358		}
22359		#[cfg(not(feature = "diagnose"))]
22360		return ret;
22361	}
22362	#[inline(always)]
22363	fn glTexStorage3D(&self, target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei) -> Result<()> {
22364		let ret = process_catch("glTexStorage3D", catch_unwind(||(self.texstorage3d)(target, levels, internalformat, width, height, depth)));
22365		#[cfg(feature = "diagnose")]
22366		if let Ok(ret) = ret {
22367			return to_result("glTexStorage3D", ret, self.glGetError());
22368		} else {
22369			return ret
22370		}
22371		#[cfg(not(feature = "diagnose"))]
22372		return ret;
22373	}
22374	#[inline(always)]
22375	fn glDrawTransformFeedbackInstanced(&self, mode: GLenum, id: GLuint, instancecount: GLsizei) -> Result<()> {
22376		let ret = process_catch("glDrawTransformFeedbackInstanced", catch_unwind(||(self.drawtransformfeedbackinstanced)(mode, id, instancecount)));
22377		#[cfg(feature = "diagnose")]
22378		if let Ok(ret) = ret {
22379			return to_result("glDrawTransformFeedbackInstanced", ret, self.glGetError());
22380		} else {
22381			return ret
22382		}
22383		#[cfg(not(feature = "diagnose"))]
22384		return ret;
22385	}
22386	#[inline(always)]
22387	fn glDrawTransformFeedbackStreamInstanced(&self, mode: GLenum, id: GLuint, stream: GLuint, instancecount: GLsizei) -> Result<()> {
22388		let ret = process_catch("glDrawTransformFeedbackStreamInstanced", catch_unwind(||(self.drawtransformfeedbackstreaminstanced)(mode, id, stream, instancecount)));
22389		#[cfg(feature = "diagnose")]
22390		if let Ok(ret) = ret {
22391			return to_result("glDrawTransformFeedbackStreamInstanced", ret, self.glGetError());
22392		} else {
22393			return ret
22394		}
22395		#[cfg(not(feature = "diagnose"))]
22396		return ret;
22397	}
22398}
22399
22400impl Version42 {
22401	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
22402		let (_spec, major, minor, release) = base.get_version();
22403		if (major, minor, release) < (4, 2, 0) {
22404			return Self::default();
22405		}
22406		Self {
22407			available: true,
22408			geterror: {let proc = get_proc_address("glGetError"); if proc == null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
22409			drawarraysinstancedbaseinstance: {let proc = get_proc_address("glDrawArraysInstancedBaseInstance"); if proc == null() {dummy_pfngldrawarraysinstancedbaseinstanceproc} else {unsafe{transmute(proc)}}},
22410			drawelementsinstancedbaseinstance: {let proc = get_proc_address("glDrawElementsInstancedBaseInstance"); if proc == null() {dummy_pfngldrawelementsinstancedbaseinstanceproc} else {unsafe{transmute(proc)}}},
22411			drawelementsinstancedbasevertexbaseinstance: {let proc = get_proc_address("glDrawElementsInstancedBaseVertexBaseInstance"); if proc == null() {dummy_pfngldrawelementsinstancedbasevertexbaseinstanceproc} else {unsafe{transmute(proc)}}},
22412			getinternalformativ: {let proc = get_proc_address("glGetInternalformativ"); if proc == null() {dummy_pfnglgetinternalformativproc} else {unsafe{transmute(proc)}}},
22413			getactiveatomiccounterbufferiv: {let proc = get_proc_address("glGetActiveAtomicCounterBufferiv"); if proc == null() {dummy_pfnglgetactiveatomiccounterbufferivproc} else {unsafe{transmute(proc)}}},
22414			bindimagetexture: {let proc = get_proc_address("glBindImageTexture"); if proc == null() {dummy_pfnglbindimagetextureproc} else {unsafe{transmute(proc)}}},
22415			memorybarrier: {let proc = get_proc_address("glMemoryBarrier"); if proc == null() {dummy_pfnglmemorybarrierproc} else {unsafe{transmute(proc)}}},
22416			texstorage1d: {let proc = get_proc_address("glTexStorage1D"); if proc == null() {dummy_pfngltexstorage1dproc} else {unsafe{transmute(proc)}}},
22417			texstorage2d: {let proc = get_proc_address("glTexStorage2D"); if proc == null() {dummy_pfngltexstorage2dproc} else {unsafe{transmute(proc)}}},
22418			texstorage3d: {let proc = get_proc_address("glTexStorage3D"); if proc == null() {dummy_pfngltexstorage3dproc} else {unsafe{transmute(proc)}}},
22419			drawtransformfeedbackinstanced: {let proc = get_proc_address("glDrawTransformFeedbackInstanced"); if proc == null() {dummy_pfngldrawtransformfeedbackinstancedproc} else {unsafe{transmute(proc)}}},
22420			drawtransformfeedbackstreaminstanced: {let proc = get_proc_address("glDrawTransformFeedbackStreamInstanced"); if proc == null() {dummy_pfngldrawtransformfeedbackstreaminstancedproc} else {unsafe{transmute(proc)}}},
22421		}
22422	}
22423	#[inline(always)]
22424	pub fn get_available(&self) -> bool {
22425		self.available
22426	}
22427}
22428
22429impl Default for Version42 {
22430	fn default() -> Self {
22431		Self {
22432			available: false,
22433			geterror: dummy_pfnglgeterrorproc,
22434			drawarraysinstancedbaseinstance: dummy_pfngldrawarraysinstancedbaseinstanceproc,
22435			drawelementsinstancedbaseinstance: dummy_pfngldrawelementsinstancedbaseinstanceproc,
22436			drawelementsinstancedbasevertexbaseinstance: dummy_pfngldrawelementsinstancedbasevertexbaseinstanceproc,
22437			getinternalformativ: dummy_pfnglgetinternalformativproc,
22438			getactiveatomiccounterbufferiv: dummy_pfnglgetactiveatomiccounterbufferivproc,
22439			bindimagetexture: dummy_pfnglbindimagetextureproc,
22440			memorybarrier: dummy_pfnglmemorybarrierproc,
22441			texstorage1d: dummy_pfngltexstorage1dproc,
22442			texstorage2d: dummy_pfngltexstorage2dproc,
22443			texstorage3d: dummy_pfngltexstorage3dproc,
22444			drawtransformfeedbackinstanced: dummy_pfngldrawtransformfeedbackinstancedproc,
22445			drawtransformfeedbackstreaminstanced: dummy_pfngldrawtransformfeedbackstreaminstancedproc,
22446		}
22447	}
22448}
22449impl Debug for Version42 {
22450	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
22451		if self.available {
22452			f.debug_struct("Version42")
22453			.field("available", &self.available)
22454			.field("drawarraysinstancedbaseinstance", unsafe{if transmute::<_, *const c_void>(self.drawarraysinstancedbaseinstance) == (dummy_pfngldrawarraysinstancedbaseinstanceproc as *const c_void) {&null::<PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC>()} else {&self.drawarraysinstancedbaseinstance}})
22455			.field("drawelementsinstancedbaseinstance", unsafe{if transmute::<_, *const c_void>(self.drawelementsinstancedbaseinstance) == (dummy_pfngldrawelementsinstancedbaseinstanceproc as *const c_void) {&null::<PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC>()} else {&self.drawelementsinstancedbaseinstance}})
22456			.field("drawelementsinstancedbasevertexbaseinstance", unsafe{if transmute::<_, *const c_void>(self.drawelementsinstancedbasevertexbaseinstance) == (dummy_pfngldrawelementsinstancedbasevertexbaseinstanceproc as *const c_void) {&null::<PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC>()} else {&self.drawelementsinstancedbasevertexbaseinstance}})
22457			.field("getinternalformativ", unsafe{if transmute::<_, *const c_void>(self.getinternalformativ) == (dummy_pfnglgetinternalformativproc as *const c_void) {&null::<PFNGLGETINTERNALFORMATIVPROC>()} else {&self.getinternalformativ}})
22458			.field("getactiveatomiccounterbufferiv", unsafe{if transmute::<_, *const c_void>(self.getactiveatomiccounterbufferiv) == (dummy_pfnglgetactiveatomiccounterbufferivproc as *const c_void) {&null::<PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC>()} else {&self.getactiveatomiccounterbufferiv}})
22459			.field("bindimagetexture", unsafe{if transmute::<_, *const c_void>(self.bindimagetexture) == (dummy_pfnglbindimagetextureproc as *const c_void) {&null::<PFNGLBINDIMAGETEXTUREPROC>()} else {&self.bindimagetexture}})
22460			.field("memorybarrier", unsafe{if transmute::<_, *const c_void>(self.memorybarrier) == (dummy_pfnglmemorybarrierproc as *const c_void) {&null::<PFNGLMEMORYBARRIERPROC>()} else {&self.memorybarrier}})
22461			.field("texstorage1d", unsafe{if transmute::<_, *const c_void>(self.texstorage1d) == (dummy_pfngltexstorage1dproc as *const c_void) {&null::<PFNGLTEXSTORAGE1DPROC>()} else {&self.texstorage1d}})
22462			.field("texstorage2d", unsafe{if transmute::<_, *const c_void>(self.texstorage2d) == (dummy_pfngltexstorage2dproc as *const c_void) {&null::<PFNGLTEXSTORAGE2DPROC>()} else {&self.texstorage2d}})
22463			.field("texstorage3d", unsafe{if transmute::<_, *const c_void>(self.texstorage3d) == (dummy_pfngltexstorage3dproc as *const c_void) {&null::<PFNGLTEXSTORAGE3DPROC>()} else {&self.texstorage3d}})
22464			.field("drawtransformfeedbackinstanced", unsafe{if transmute::<_, *const c_void>(self.drawtransformfeedbackinstanced) == (dummy_pfngldrawtransformfeedbackinstancedproc as *const c_void) {&null::<PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC>()} else {&self.drawtransformfeedbackinstanced}})
22465			.field("drawtransformfeedbackstreaminstanced", unsafe{if transmute::<_, *const c_void>(self.drawtransformfeedbackstreaminstanced) == (dummy_pfngldrawtransformfeedbackstreaminstancedproc as *const c_void) {&null::<PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC>()} else {&self.drawtransformfeedbackstreaminstanced}})
22466			.finish()
22467		} else {
22468			f.debug_struct("Version42")
22469			.field("available", &self.available)
22470			.finish_non_exhaustive()
22471		}
22472	}
22473}
22474
22475/// The prototype to the OpenGL function `ClearBufferData`
22476type PFNGLCLEARBUFFERDATAPROC = extern "system" fn(GLenum, GLenum, GLenum, GLenum, *const c_void);
22477
22478/// The prototype to the OpenGL function `ClearBufferSubData`
22479type PFNGLCLEARBUFFERSUBDATAPROC = extern "system" fn(GLenum, GLenum, GLintptr, GLsizeiptr, GLenum, GLenum, *const c_void);
22480
22481/// The prototype to the OpenGL function `DispatchCompute`
22482type PFNGLDISPATCHCOMPUTEPROC = extern "system" fn(GLuint, GLuint, GLuint);
22483
22484/// The prototype to the OpenGL function `DispatchComputeIndirect`
22485type PFNGLDISPATCHCOMPUTEINDIRECTPROC = extern "system" fn(GLintptr);
22486
22487/// The prototype to the OpenGL function `CopyImageSubData`
22488type PFNGLCOPYIMAGESUBDATAPROC = extern "system" fn(GLuint, GLenum, GLint, GLint, GLint, GLint, GLuint, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei);
22489
22490/// The prototype to the OpenGL function `FramebufferParameteri`
22491type PFNGLFRAMEBUFFERPARAMETERIPROC = extern "system" fn(GLenum, GLenum, GLint);
22492
22493/// The prototype to the OpenGL function `GetFramebufferParameteriv`
22494type PFNGLGETFRAMEBUFFERPARAMETERIVPROC = extern "system" fn(GLenum, GLenum, *mut GLint);
22495
22496/// The prototype to the OpenGL function `GetInternalformati64v`
22497type PFNGLGETINTERNALFORMATI64VPROC = extern "system" fn(GLenum, GLenum, GLenum, GLsizei, *mut GLint64);
22498
22499/// The prototype to the OpenGL function `InvalidateTexSubImage`
22500type PFNGLINVALIDATETEXSUBIMAGEPROC = extern "system" fn(GLuint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei);
22501
22502/// The prototype to the OpenGL function `InvalidateTexImage`
22503type PFNGLINVALIDATETEXIMAGEPROC = extern "system" fn(GLuint, GLint);
22504
22505/// The prototype to the OpenGL function `InvalidateBufferSubData`
22506type PFNGLINVALIDATEBUFFERSUBDATAPROC = extern "system" fn(GLuint, GLintptr, GLsizeiptr);
22507
22508/// The prototype to the OpenGL function `InvalidateBufferData`
22509type PFNGLINVALIDATEBUFFERDATAPROC = extern "system" fn(GLuint);
22510
22511/// The prototype to the OpenGL function `InvalidateFramebuffer`
22512type PFNGLINVALIDATEFRAMEBUFFERPROC = extern "system" fn(GLenum, GLsizei, *const GLenum);
22513
22514/// The prototype to the OpenGL function `InvalidateSubFramebuffer`
22515type PFNGLINVALIDATESUBFRAMEBUFFERPROC = extern "system" fn(GLenum, GLsizei, *const GLenum, GLint, GLint, GLsizei, GLsizei);
22516
22517/// The prototype to the OpenGL function `MultiDrawArraysIndirect`
22518type PFNGLMULTIDRAWARRAYSINDIRECTPROC = extern "system" fn(GLenum, *const c_void, GLsizei, GLsizei);
22519
22520/// The prototype to the OpenGL function `MultiDrawElementsIndirect`
22521type PFNGLMULTIDRAWELEMENTSINDIRECTPROC = extern "system" fn(GLenum, GLenum, *const c_void, GLsizei, GLsizei);
22522
22523/// The prototype to the OpenGL function `GetProgramInterfaceiv`
22524type PFNGLGETPROGRAMINTERFACEIVPROC = extern "system" fn(GLuint, GLenum, GLenum, *mut GLint);
22525
22526/// The prototype to the OpenGL function `GetProgramResourceIndex`
22527type PFNGLGETPROGRAMRESOURCEINDEXPROC = extern "system" fn(GLuint, GLenum, *const GLchar) -> GLuint;
22528
22529/// The prototype to the OpenGL function `GetProgramResourceName`
22530type PFNGLGETPROGRAMRESOURCENAMEPROC = extern "system" fn(GLuint, GLenum, GLuint, GLsizei, *mut GLsizei, *mut GLchar);
22531
22532/// The prototype to the OpenGL function `GetProgramResourceiv`
22533type PFNGLGETPROGRAMRESOURCEIVPROC = extern "system" fn(GLuint, GLenum, GLuint, GLsizei, *const GLenum, GLsizei, *mut GLsizei, *mut GLint);
22534
22535/// The prototype to the OpenGL function `GetProgramResourceLocation`
22536type PFNGLGETPROGRAMRESOURCELOCATIONPROC = extern "system" fn(GLuint, GLenum, *const GLchar) -> GLint;
22537
22538/// The prototype to the OpenGL function `GetProgramResourceLocationIndex`
22539type PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC = extern "system" fn(GLuint, GLenum, *const GLchar) -> GLint;
22540
22541/// The prototype to the OpenGL function `ShaderStorageBlockBinding`
22542type PFNGLSHADERSTORAGEBLOCKBINDINGPROC = extern "system" fn(GLuint, GLuint, GLuint);
22543
22544/// The prototype to the OpenGL function `TexBufferRange`
22545type PFNGLTEXBUFFERRANGEPROC = extern "system" fn(GLenum, GLenum, GLuint, GLintptr, GLsizeiptr);
22546
22547/// The prototype to the OpenGL function `TexStorage2DMultisample`
22548type PFNGLTEXSTORAGE2DMULTISAMPLEPROC = extern "system" fn(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLboolean);
22549
22550/// The prototype to the OpenGL function `TexStorage3DMultisample`
22551type PFNGLTEXSTORAGE3DMULTISAMPLEPROC = extern "system" fn(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean);
22552
22553/// The prototype to the OpenGL function `TextureView`
22554type PFNGLTEXTUREVIEWPROC = extern "system" fn(GLuint, GLenum, GLuint, GLenum, GLuint, GLuint, GLuint, GLuint);
22555
22556/// The prototype to the OpenGL function `BindVertexBuffer`
22557type PFNGLBINDVERTEXBUFFERPROC = extern "system" fn(GLuint, GLuint, GLintptr, GLsizei);
22558
22559/// The prototype to the OpenGL function `VertexAttribFormat`
22560type PFNGLVERTEXATTRIBFORMATPROC = extern "system" fn(GLuint, GLint, GLenum, GLboolean, GLuint);
22561
22562/// The prototype to the OpenGL function `VertexAttribIFormat`
22563type PFNGLVERTEXATTRIBIFORMATPROC = extern "system" fn(GLuint, GLint, GLenum, GLuint);
22564
22565/// The prototype to the OpenGL function `VertexAttribLFormat`
22566type PFNGLVERTEXATTRIBLFORMATPROC = extern "system" fn(GLuint, GLint, GLenum, GLuint);
22567
22568/// The prototype to the OpenGL function `VertexAttribBinding`
22569type PFNGLVERTEXATTRIBBINDINGPROC = extern "system" fn(GLuint, GLuint);
22570
22571/// The prototype to the OpenGL function `VertexBindingDivisor`
22572type PFNGLVERTEXBINDINGDIVISORPROC = extern "system" fn(GLuint, GLuint);
22573
22574/// The prototype to the OpenGL function `DebugMessageControl`
22575type PFNGLDEBUGMESSAGECONTROLPROC = extern "system" fn(GLenum, GLenum, GLenum, GLsizei, *const GLuint, GLboolean);
22576
22577/// The prototype to the OpenGL function `DebugMessageInsert`
22578type PFNGLDEBUGMESSAGEINSERTPROC = extern "system" fn(GLenum, GLenum, GLuint, GLenum, GLsizei, *const GLchar);
22579
22580/// The prototype to the OpenGL function `DebugMessageCallback`
22581type PFNGLDEBUGMESSAGECALLBACKPROC = extern "system" fn(GLDEBUGPROC, *const c_void);
22582
22583/// The prototype to the OpenGL function `GetDebugMessageLog`
22584type PFNGLGETDEBUGMESSAGELOGPROC = extern "system" fn(GLuint, GLsizei, *mut GLenum, *mut GLenum, *mut GLuint, *mut GLenum, *mut GLsizei, *mut GLchar) -> GLuint;
22585
22586/// The prototype to the OpenGL function `PushDebugGroup`
22587type PFNGLPUSHDEBUGGROUPPROC = extern "system" fn(GLenum, GLuint, GLsizei, *const GLchar);
22588
22589/// The prototype to the OpenGL function `PopDebugGroup`
22590type PFNGLPOPDEBUGGROUPPROC = extern "system" fn();
22591
22592/// The prototype to the OpenGL function `ObjectLabel`
22593type PFNGLOBJECTLABELPROC = extern "system" fn(GLenum, GLuint, GLsizei, *const GLchar);
22594
22595/// The prototype to the OpenGL function `GetObjectLabel`
22596type PFNGLGETOBJECTLABELPROC = extern "system" fn(GLenum, GLuint, GLsizei, *mut GLsizei, *mut GLchar);
22597
22598/// The prototype to the OpenGL function `ObjectPtrLabel`
22599type PFNGLOBJECTPTRLABELPROC = extern "system" fn(*const c_void, GLsizei, *const GLchar);
22600
22601/// The prototype to the OpenGL function `GetObjectPtrLabel`
22602type PFNGLGETOBJECTPTRLABELPROC = extern "system" fn(*const c_void, GLsizei, *mut GLsizei, *mut GLchar);
22603
22604/// The dummy function of `ClearBufferData()`
22605extern "system" fn dummy_pfnglclearbufferdataproc (_: GLenum, _: GLenum, _: GLenum, _: GLenum, _: *const c_void) {
22606	panic!("OpenGL function pointer `glClearBufferData()` is null.")
22607}
22608
22609/// The dummy function of `ClearBufferSubData()`
22610extern "system" fn dummy_pfnglclearbuffersubdataproc (_: GLenum, _: GLenum, _: GLintptr, _: GLsizeiptr, _: GLenum, _: GLenum, _: *const c_void) {
22611	panic!("OpenGL function pointer `glClearBufferSubData()` is null.")
22612}
22613
22614/// The dummy function of `DispatchCompute()`
22615extern "system" fn dummy_pfngldispatchcomputeproc (_: GLuint, _: GLuint, _: GLuint) {
22616	panic!("OpenGL function pointer `glDispatchCompute()` is null.")
22617}
22618
22619/// The dummy function of `DispatchComputeIndirect()`
22620extern "system" fn dummy_pfngldispatchcomputeindirectproc (_: GLintptr) {
22621	panic!("OpenGL function pointer `glDispatchComputeIndirect()` is null.")
22622}
22623
22624/// The dummy function of `CopyImageSubData()`
22625extern "system" fn dummy_pfnglcopyimagesubdataproc (_: GLuint, _: GLenum, _: GLint, _: GLint, _: GLint, _: GLint, _: GLuint, _: GLenum, _: GLint, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLsizei) {
22626	panic!("OpenGL function pointer `glCopyImageSubData()` is null.")
22627}
22628
22629/// The dummy function of `FramebufferParameteri()`
22630extern "system" fn dummy_pfnglframebufferparameteriproc (_: GLenum, _: GLenum, _: GLint) {
22631	panic!("OpenGL function pointer `glFramebufferParameteri()` is null.")
22632}
22633
22634/// The dummy function of `GetFramebufferParameteriv()`
22635extern "system" fn dummy_pfnglgetframebufferparameterivproc (_: GLenum, _: GLenum, _: *mut GLint) {
22636	panic!("OpenGL function pointer `glGetFramebufferParameteriv()` is null.")
22637}
22638
22639/// The dummy function of `GetInternalformati64v()`
22640extern "system" fn dummy_pfnglgetinternalformati64vproc (_: GLenum, _: GLenum, _: GLenum, _: GLsizei, _: *mut GLint64) {
22641	panic!("OpenGL function pointer `glGetInternalformati64v()` is null.")
22642}
22643
22644/// The dummy function of `InvalidateTexSubImage()`
22645extern "system" fn dummy_pfnglinvalidatetexsubimageproc (_: GLuint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLsizei) {
22646	panic!("OpenGL function pointer `glInvalidateTexSubImage()` is null.")
22647}
22648
22649/// The dummy function of `InvalidateTexImage()`
22650extern "system" fn dummy_pfnglinvalidateteximageproc (_: GLuint, _: GLint) {
22651	panic!("OpenGL function pointer `glInvalidateTexImage()` is null.")
22652}
22653
22654/// The dummy function of `InvalidateBufferSubData()`
22655extern "system" fn dummy_pfnglinvalidatebuffersubdataproc (_: GLuint, _: GLintptr, _: GLsizeiptr) {
22656	panic!("OpenGL function pointer `glInvalidateBufferSubData()` is null.")
22657}
22658
22659/// The dummy function of `InvalidateBufferData()`
22660extern "system" fn dummy_pfnglinvalidatebufferdataproc (_: GLuint) {
22661	panic!("OpenGL function pointer `glInvalidateBufferData()` is null.")
22662}
22663
22664/// The dummy function of `InvalidateFramebuffer()`
22665extern "system" fn dummy_pfnglinvalidateframebufferproc (_: GLenum, _: GLsizei, _: *const GLenum) {
22666	panic!("OpenGL function pointer `glInvalidateFramebuffer()` is null.")
22667}
22668
22669/// The dummy function of `InvalidateSubFramebuffer()`
22670extern "system" fn dummy_pfnglinvalidatesubframebufferproc (_: GLenum, _: GLsizei, _: *const GLenum, _: GLint, _: GLint, _: GLsizei, _: GLsizei) {
22671	panic!("OpenGL function pointer `glInvalidateSubFramebuffer()` is null.")
22672}
22673
22674/// The dummy function of `MultiDrawArraysIndirect()`
22675extern "system" fn dummy_pfnglmultidrawarraysindirectproc (_: GLenum, _: *const c_void, _: GLsizei, _: GLsizei) {
22676	panic!("OpenGL function pointer `glMultiDrawArraysIndirect()` is null.")
22677}
22678
22679/// The dummy function of `MultiDrawElementsIndirect()`
22680extern "system" fn dummy_pfnglmultidrawelementsindirectproc (_: GLenum, _: GLenum, _: *const c_void, _: GLsizei, _: GLsizei) {
22681	panic!("OpenGL function pointer `glMultiDrawElementsIndirect()` is null.")
22682}
22683
22684/// The dummy function of `GetProgramInterfaceiv()`
22685extern "system" fn dummy_pfnglgetprograminterfaceivproc (_: GLuint, _: GLenum, _: GLenum, _: *mut GLint) {
22686	panic!("OpenGL function pointer `glGetProgramInterfaceiv()` is null.")
22687}
22688
22689/// The dummy function of `GetProgramResourceIndex()`
22690extern "system" fn dummy_pfnglgetprogramresourceindexproc (_: GLuint, _: GLenum, _: *const GLchar) -> GLuint {
22691	panic!("OpenGL function pointer `glGetProgramResourceIndex()` is null.")
22692}
22693
22694/// The dummy function of `GetProgramResourceName()`
22695extern "system" fn dummy_pfnglgetprogramresourcenameproc (_: GLuint, _: GLenum, _: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLchar) {
22696	panic!("OpenGL function pointer `glGetProgramResourceName()` is null.")
22697}
22698
22699/// The dummy function of `GetProgramResourceiv()`
22700extern "system" fn dummy_pfnglgetprogramresourceivproc (_: GLuint, _: GLenum, _: GLuint, _: GLsizei, _: *const GLenum, _: GLsizei, _: *mut GLsizei, _: *mut GLint) {
22701	panic!("OpenGL function pointer `glGetProgramResourceiv()` is null.")
22702}
22703
22704/// The dummy function of `GetProgramResourceLocation()`
22705extern "system" fn dummy_pfnglgetprogramresourcelocationproc (_: GLuint, _: GLenum, _: *const GLchar) -> GLint {
22706	panic!("OpenGL function pointer `glGetProgramResourceLocation()` is null.")
22707}
22708
22709/// The dummy function of `GetProgramResourceLocationIndex()`
22710extern "system" fn dummy_pfnglgetprogramresourcelocationindexproc (_: GLuint, _: GLenum, _: *const GLchar) -> GLint {
22711	panic!("OpenGL function pointer `glGetProgramResourceLocationIndex()` is null.")
22712}
22713
22714/// The dummy function of `ShaderStorageBlockBinding()`
22715extern "system" fn dummy_pfnglshaderstorageblockbindingproc (_: GLuint, _: GLuint, _: GLuint) {
22716	panic!("OpenGL function pointer `glShaderStorageBlockBinding()` is null.")
22717}
22718
22719/// The dummy function of `TexBufferRange()`
22720extern "system" fn dummy_pfngltexbufferrangeproc (_: GLenum, _: GLenum, _: GLuint, _: GLintptr, _: GLsizeiptr) {
22721	panic!("OpenGL function pointer `glTexBufferRange()` is null.")
22722}
22723
22724/// The dummy function of `TexStorage2DMultisample()`
22725extern "system" fn dummy_pfngltexstorage2dmultisampleproc (_: GLenum, _: GLsizei, _: GLenum, _: GLsizei, _: GLsizei, _: GLboolean) {
22726	panic!("OpenGL function pointer `glTexStorage2DMultisample()` is null.")
22727}
22728
22729/// The dummy function of `TexStorage3DMultisample()`
22730extern "system" fn dummy_pfngltexstorage3dmultisampleproc (_: GLenum, _: GLsizei, _: GLenum, _: GLsizei, _: GLsizei, _: GLsizei, _: GLboolean) {
22731	panic!("OpenGL function pointer `glTexStorage3DMultisample()` is null.")
22732}
22733
22734/// The dummy function of `TextureView()`
22735extern "system" fn dummy_pfngltextureviewproc (_: GLuint, _: GLenum, _: GLuint, _: GLenum, _: GLuint, _: GLuint, _: GLuint, _: GLuint) {
22736	panic!("OpenGL function pointer `glTextureView()` is null.")
22737}
22738
22739/// The dummy function of `BindVertexBuffer()`
22740extern "system" fn dummy_pfnglbindvertexbufferproc (_: GLuint, _: GLuint, _: GLintptr, _: GLsizei) {
22741	panic!("OpenGL function pointer `glBindVertexBuffer()` is null.")
22742}
22743
22744/// The dummy function of `VertexAttribFormat()`
22745extern "system" fn dummy_pfnglvertexattribformatproc (_: GLuint, _: GLint, _: GLenum, _: GLboolean, _: GLuint) {
22746	panic!("OpenGL function pointer `glVertexAttribFormat()` is null.")
22747}
22748
22749/// The dummy function of `VertexAttribIFormat()`
22750extern "system" fn dummy_pfnglvertexattribiformatproc (_: GLuint, _: GLint, _: GLenum, _: GLuint) {
22751	panic!("OpenGL function pointer `glVertexAttribIFormat()` is null.")
22752}
22753
22754/// The dummy function of `VertexAttribLFormat()`
22755extern "system" fn dummy_pfnglvertexattriblformatproc (_: GLuint, _: GLint, _: GLenum, _: GLuint) {
22756	panic!("OpenGL function pointer `glVertexAttribLFormat()` is null.")
22757}
22758
22759/// The dummy function of `VertexAttribBinding()`
22760extern "system" fn dummy_pfnglvertexattribbindingproc (_: GLuint, _: GLuint) {
22761	panic!("OpenGL function pointer `glVertexAttribBinding()` is null.")
22762}
22763
22764/// The dummy function of `VertexBindingDivisor()`
22765extern "system" fn dummy_pfnglvertexbindingdivisorproc (_: GLuint, _: GLuint) {
22766	panic!("OpenGL function pointer `glVertexBindingDivisor()` is null.")
22767}
22768
22769/// The dummy function of `DebugMessageControl()`
22770extern "system" fn dummy_pfngldebugmessagecontrolproc (_: GLenum, _: GLenum, _: GLenum, _: GLsizei, _: *const GLuint, _: GLboolean) {
22771	panic!("OpenGL function pointer `glDebugMessageControl()` is null.")
22772}
22773
22774/// The dummy function of `DebugMessageInsert()`
22775extern "system" fn dummy_pfngldebugmessageinsertproc (_: GLenum, _: GLenum, _: GLuint, _: GLenum, _: GLsizei, _: *const GLchar) {
22776	panic!("OpenGL function pointer `glDebugMessageInsert()` is null.")
22777}
22778
22779/// The dummy function of `DebugMessageCallback()`
22780extern "system" fn dummy_pfngldebugmessagecallbackproc (_: GLDEBUGPROC, _: *const c_void) {
22781	panic!("OpenGL function pointer `glDebugMessageCallback()` is null.")
22782}
22783
22784/// The dummy function of `GetDebugMessageLog()`
22785extern "system" fn dummy_pfnglgetdebugmessagelogproc (_: GLuint, _: GLsizei, _: *mut GLenum, _: *mut GLenum, _: *mut GLuint, _: *mut GLenum, _: *mut GLsizei, _: *mut GLchar) -> GLuint {
22786	panic!("OpenGL function pointer `glGetDebugMessageLog()` is null.")
22787}
22788
22789/// The dummy function of `PushDebugGroup()`
22790extern "system" fn dummy_pfnglpushdebuggroupproc (_: GLenum, _: GLuint, _: GLsizei, _: *const GLchar) {
22791	panic!("OpenGL function pointer `glPushDebugGroup()` is null.")
22792}
22793
22794/// The dummy function of `PopDebugGroup()`
22795extern "system" fn dummy_pfnglpopdebuggroupproc () {
22796	panic!("OpenGL function pointer `glPopDebugGroup()` is null.")
22797}
22798
22799/// The dummy function of `ObjectLabel()`
22800extern "system" fn dummy_pfnglobjectlabelproc (_: GLenum, _: GLuint, _: GLsizei, _: *const GLchar) {
22801	panic!("OpenGL function pointer `glObjectLabel()` is null.")
22802}
22803
22804/// The dummy function of `GetObjectLabel()`
22805extern "system" fn dummy_pfnglgetobjectlabelproc (_: GLenum, _: GLuint, _: GLsizei, _: *mut GLsizei, _: *mut GLchar) {
22806	panic!("OpenGL function pointer `glGetObjectLabel()` is null.")
22807}
22808
22809/// The dummy function of `ObjectPtrLabel()`
22810extern "system" fn dummy_pfnglobjectptrlabelproc (_: *const c_void, _: GLsizei, _: *const GLchar) {
22811	panic!("OpenGL function pointer `glObjectPtrLabel()` is null.")
22812}
22813
22814/// The dummy function of `GetObjectPtrLabel()`
22815extern "system" fn dummy_pfnglgetobjectptrlabelproc (_: *const c_void, _: GLsizei, _: *mut GLsizei, _: *mut GLchar) {
22816	panic!("OpenGL function pointer `glGetObjectPtrLabel()` is null.")
22817}
22818/// Constant value defined from OpenGL 4.3
22819pub const GL_NUM_SHADING_LANGUAGE_VERSIONS: GLenum = 0x82E9;
22820
22821/// Constant value defined from OpenGL 4.3
22822pub const GL_VERTEX_ATTRIB_ARRAY_LONG: GLenum = 0x874E;
22823
22824/// Constant value defined from OpenGL 4.3
22825pub const GL_COMPRESSED_RGB8_ETC2: GLenum = 0x9274;
22826
22827/// Constant value defined from OpenGL 4.3
22828pub const GL_COMPRESSED_SRGB8_ETC2: GLenum = 0x9275;
22829
22830/// Constant value defined from OpenGL 4.3
22831pub const GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: GLenum = 0x9276;
22832
22833/// Constant value defined from OpenGL 4.3
22834pub const GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: GLenum = 0x9277;
22835
22836/// Constant value defined from OpenGL 4.3
22837pub const GL_COMPRESSED_RGBA8_ETC2_EAC: GLenum = 0x9278;
22838
22839/// Constant value defined from OpenGL 4.3
22840pub const GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: GLenum = 0x9279;
22841
22842/// Constant value defined from OpenGL 4.3
22843pub const GL_COMPRESSED_R11_EAC: GLenum = 0x9270;
22844
22845/// Constant value defined from OpenGL 4.3
22846pub const GL_COMPRESSED_SIGNED_R11_EAC: GLenum = 0x9271;
22847
22848/// Constant value defined from OpenGL 4.3
22849pub const GL_COMPRESSED_RG11_EAC: GLenum = 0x9272;
22850
22851/// Constant value defined from OpenGL 4.3
22852pub const GL_COMPRESSED_SIGNED_RG11_EAC: GLenum = 0x9273;
22853
22854/// Constant value defined from OpenGL 4.3
22855pub const GL_PRIMITIVE_RESTART_FIXED_INDEX: GLenum = 0x8D69;
22856
22857/// Constant value defined from OpenGL 4.3
22858pub const GL_ANY_SAMPLES_PASSED_CONSERVATIVE: GLenum = 0x8D6A;
22859
22860/// Constant value defined from OpenGL 4.3
22861pub const GL_MAX_ELEMENT_INDEX: GLenum = 0x8D6B;
22862
22863/// Constant value defined from OpenGL 4.3
22864pub const GL_COMPUTE_SHADER: GLenum = 0x91B9;
22865
22866/// Constant value defined from OpenGL 4.3
22867pub const GL_MAX_COMPUTE_UNIFORM_BLOCKS: GLenum = 0x91BB;
22868
22869/// Constant value defined from OpenGL 4.3
22870pub const GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS: GLenum = 0x91BC;
22871
22872/// Constant value defined from OpenGL 4.3
22873pub const GL_MAX_COMPUTE_IMAGE_UNIFORMS: GLenum = 0x91BD;
22874
22875/// Constant value defined from OpenGL 4.3
22876pub const GL_MAX_COMPUTE_SHARED_MEMORY_SIZE: GLenum = 0x8262;
22877
22878/// Constant value defined from OpenGL 4.3
22879pub const GL_MAX_COMPUTE_UNIFORM_COMPONENTS: GLenum = 0x8263;
22880
22881/// Constant value defined from OpenGL 4.3
22882pub const GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS: GLenum = 0x8264;
22883
22884/// Constant value defined from OpenGL 4.3
22885pub const GL_MAX_COMPUTE_ATOMIC_COUNTERS: GLenum = 0x8265;
22886
22887/// Constant value defined from OpenGL 4.3
22888pub const GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS: GLenum = 0x8266;
22889
22890/// Constant value defined from OpenGL 4.3
22891pub const GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS: GLenum = 0x90EB;
22892
22893/// Constant value defined from OpenGL 4.3
22894pub const GL_MAX_COMPUTE_WORK_GROUP_COUNT: GLenum = 0x91BE;
22895
22896/// Constant value defined from OpenGL 4.3
22897pub const GL_MAX_COMPUTE_WORK_GROUP_SIZE: GLenum = 0x91BF;
22898
22899/// Constant value defined from OpenGL 4.3
22900pub const GL_COMPUTE_WORK_GROUP_SIZE: GLenum = 0x8267;
22901
22902/// Constant value defined from OpenGL 4.3
22903pub const GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER: GLenum = 0x90EC;
22904
22905/// Constant value defined from OpenGL 4.3
22906pub const GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER: GLenum = 0x90ED;
22907
22908/// Constant value defined from OpenGL 4.3
22909pub const GL_DISPATCH_INDIRECT_BUFFER: GLenum = 0x90EE;
22910
22911/// Constant value defined from OpenGL 4.3
22912pub const GL_DISPATCH_INDIRECT_BUFFER_BINDING: GLenum = 0x90EF;
22913
22914/// Constant value defined from OpenGL 4.3
22915pub const GL_COMPUTE_SHADER_BIT: GLbitfield = 0x00000020;
22916
22917/// Constant value defined from OpenGL 4.3
22918pub const GL_DEBUG_OUTPUT_SYNCHRONOUS: GLenum = 0x8242;
22919
22920/// Constant value defined from OpenGL 4.3
22921pub const GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH: GLenum = 0x8243;
22922
22923/// Constant value defined from OpenGL 4.3
22924pub const GL_DEBUG_CALLBACK_FUNCTION: GLenum = 0x8244;
22925
22926/// Constant value defined from OpenGL 4.3
22927pub const GL_DEBUG_CALLBACK_USER_PARAM: GLenum = 0x8245;
22928
22929/// Constant value defined from OpenGL 4.3
22930pub const GL_DEBUG_SOURCE_API: GLenum = 0x8246;
22931
22932/// Constant value defined from OpenGL 4.3
22933pub const GL_DEBUG_SOURCE_WINDOW_SYSTEM: GLenum = 0x8247;
22934
22935/// Constant value defined from OpenGL 4.3
22936pub const GL_DEBUG_SOURCE_SHADER_COMPILER: GLenum = 0x8248;
22937
22938/// Constant value defined from OpenGL 4.3
22939pub const GL_DEBUG_SOURCE_THIRD_PARTY: GLenum = 0x8249;
22940
22941/// Constant value defined from OpenGL 4.3
22942pub const GL_DEBUG_SOURCE_APPLICATION: GLenum = 0x824A;
22943
22944/// Constant value defined from OpenGL 4.3
22945pub const GL_DEBUG_SOURCE_OTHER: GLenum = 0x824B;
22946
22947/// Constant value defined from OpenGL 4.3
22948pub const GL_DEBUG_TYPE_ERROR: GLenum = 0x824C;
22949
22950/// Constant value defined from OpenGL 4.3
22951pub const GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR: GLenum = 0x824D;
22952
22953/// Constant value defined from OpenGL 4.3
22954pub const GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR: GLenum = 0x824E;
22955
22956/// Constant value defined from OpenGL 4.3
22957pub const GL_DEBUG_TYPE_PORTABILITY: GLenum = 0x824F;
22958
22959/// Constant value defined from OpenGL 4.3
22960pub const GL_DEBUG_TYPE_PERFORMANCE: GLenum = 0x8250;
22961
22962/// Constant value defined from OpenGL 4.3
22963pub const GL_DEBUG_TYPE_OTHER: GLenum = 0x8251;
22964
22965/// Constant value defined from OpenGL 4.3
22966pub const GL_MAX_DEBUG_MESSAGE_LENGTH: GLenum = 0x9143;
22967
22968/// Constant value defined from OpenGL 4.3
22969pub const GL_MAX_DEBUG_LOGGED_MESSAGES: GLenum = 0x9144;
22970
22971/// Constant value defined from OpenGL 4.3
22972pub const GL_DEBUG_LOGGED_MESSAGES: GLenum = 0x9145;
22973
22974/// Constant value defined from OpenGL 4.3
22975pub const GL_DEBUG_SEVERITY_HIGH: GLenum = 0x9146;
22976
22977/// Constant value defined from OpenGL 4.3
22978pub const GL_DEBUG_SEVERITY_MEDIUM: GLenum = 0x9147;
22979
22980/// Constant value defined from OpenGL 4.3
22981pub const GL_DEBUG_SEVERITY_LOW: GLenum = 0x9148;
22982
22983/// Constant value defined from OpenGL 4.3
22984pub const GL_DEBUG_TYPE_MARKER: GLenum = 0x8268;
22985
22986/// Constant value defined from OpenGL 4.3
22987pub const GL_DEBUG_TYPE_PUSH_GROUP: GLenum = 0x8269;
22988
22989/// Constant value defined from OpenGL 4.3
22990pub const GL_DEBUG_TYPE_POP_GROUP: GLenum = 0x826A;
22991
22992/// Constant value defined from OpenGL 4.3
22993pub const GL_DEBUG_SEVERITY_NOTIFICATION: GLenum = 0x826B;
22994
22995/// Constant value defined from OpenGL 4.3
22996pub const GL_MAX_DEBUG_GROUP_STACK_DEPTH: GLenum = 0x826C;
22997
22998/// Constant value defined from OpenGL 4.3
22999pub const GL_DEBUG_GROUP_STACK_DEPTH: GLenum = 0x826D;
23000
23001/// Constant value defined from OpenGL 4.3
23002pub const GL_BUFFER: GLenum = 0x82E0;
23003
23004/// Constant value defined from OpenGL 4.3
23005pub const GL_SHADER: GLenum = 0x82E1;
23006
23007/// Constant value defined from OpenGL 4.3
23008pub const GL_PROGRAM: GLenum = 0x82E2;
23009
23010/// Constant value defined from OpenGL 4.3
23011pub const GL_QUERY: GLenum = 0x82E3;
23012
23013/// Constant value defined from OpenGL 4.3
23014pub const GL_PROGRAM_PIPELINE: GLenum = 0x82E4;
23015
23016/// Constant value defined from OpenGL 4.3
23017pub const GL_SAMPLER: GLenum = 0x82E6;
23018
23019/// Constant value defined from OpenGL 4.3
23020pub const GL_MAX_LABEL_LENGTH: GLenum = 0x82E8;
23021
23022/// Constant value defined from OpenGL 4.3
23023pub const GL_DEBUG_OUTPUT: GLenum = 0x92E0;
23024
23025/// Constant value defined from OpenGL 4.3
23026pub const GL_CONTEXT_FLAG_DEBUG_BIT: GLbitfield = 0x00000002;
23027
23028/// Constant value defined from OpenGL 4.3
23029pub const GL_MAX_UNIFORM_LOCATIONS: GLenum = 0x826E;
23030
23031/// Constant value defined from OpenGL 4.3
23032pub const GL_FRAMEBUFFER_DEFAULT_WIDTH: GLenum = 0x9310;
23033
23034/// Constant value defined from OpenGL 4.3
23035pub const GL_FRAMEBUFFER_DEFAULT_HEIGHT: GLenum = 0x9311;
23036
23037/// Constant value defined from OpenGL 4.3
23038pub const GL_FRAMEBUFFER_DEFAULT_LAYERS: GLenum = 0x9312;
23039
23040/// Constant value defined from OpenGL 4.3
23041pub const GL_FRAMEBUFFER_DEFAULT_SAMPLES: GLenum = 0x9313;
23042
23043/// Constant value defined from OpenGL 4.3
23044pub const GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS: GLenum = 0x9314;
23045
23046/// Constant value defined from OpenGL 4.3
23047pub const GL_MAX_FRAMEBUFFER_WIDTH: GLenum = 0x9315;
23048
23049/// Constant value defined from OpenGL 4.3
23050pub const GL_MAX_FRAMEBUFFER_HEIGHT: GLenum = 0x9316;
23051
23052/// Constant value defined from OpenGL 4.3
23053pub const GL_MAX_FRAMEBUFFER_LAYERS: GLenum = 0x9317;
23054
23055/// Constant value defined from OpenGL 4.3
23056pub const GL_MAX_FRAMEBUFFER_SAMPLES: GLenum = 0x9318;
23057
23058/// Constant value defined from OpenGL 4.3
23059pub const GL_INTERNALFORMAT_SUPPORTED: GLenum = 0x826F;
23060
23061/// Constant value defined from OpenGL 4.3
23062pub const GL_INTERNALFORMAT_PREFERRED: GLenum = 0x8270;
23063
23064/// Constant value defined from OpenGL 4.3
23065pub const GL_INTERNALFORMAT_RED_SIZE: GLenum = 0x8271;
23066
23067/// Constant value defined from OpenGL 4.3
23068pub const GL_INTERNALFORMAT_GREEN_SIZE: GLenum = 0x8272;
23069
23070/// Constant value defined from OpenGL 4.3
23071pub const GL_INTERNALFORMAT_BLUE_SIZE: GLenum = 0x8273;
23072
23073/// Constant value defined from OpenGL 4.3
23074pub const GL_INTERNALFORMAT_ALPHA_SIZE: GLenum = 0x8274;
23075
23076/// Constant value defined from OpenGL 4.3
23077pub const GL_INTERNALFORMAT_DEPTH_SIZE: GLenum = 0x8275;
23078
23079/// Constant value defined from OpenGL 4.3
23080pub const GL_INTERNALFORMAT_STENCIL_SIZE: GLenum = 0x8276;
23081
23082/// Constant value defined from OpenGL 4.3
23083pub const GL_INTERNALFORMAT_SHARED_SIZE: GLenum = 0x8277;
23084
23085/// Constant value defined from OpenGL 4.3
23086pub const GL_INTERNALFORMAT_RED_TYPE: GLenum = 0x8278;
23087
23088/// Constant value defined from OpenGL 4.3
23089pub const GL_INTERNALFORMAT_GREEN_TYPE: GLenum = 0x8279;
23090
23091/// Constant value defined from OpenGL 4.3
23092pub const GL_INTERNALFORMAT_BLUE_TYPE: GLenum = 0x827A;
23093
23094/// Constant value defined from OpenGL 4.3
23095pub const GL_INTERNALFORMAT_ALPHA_TYPE: GLenum = 0x827B;
23096
23097/// Constant value defined from OpenGL 4.3
23098pub const GL_INTERNALFORMAT_DEPTH_TYPE: GLenum = 0x827C;
23099
23100/// Constant value defined from OpenGL 4.3
23101pub const GL_INTERNALFORMAT_STENCIL_TYPE: GLenum = 0x827D;
23102
23103/// Constant value defined from OpenGL 4.3
23104pub const GL_MAX_WIDTH: GLenum = 0x827E;
23105
23106/// Constant value defined from OpenGL 4.3
23107pub const GL_MAX_HEIGHT: GLenum = 0x827F;
23108
23109/// Constant value defined from OpenGL 4.3
23110pub const GL_MAX_DEPTH: GLenum = 0x8280;
23111
23112/// Constant value defined from OpenGL 4.3
23113pub const GL_MAX_LAYERS: GLenum = 0x8281;
23114
23115/// Constant value defined from OpenGL 4.3
23116pub const GL_MAX_COMBINED_DIMENSIONS: GLenum = 0x8282;
23117
23118/// Constant value defined from OpenGL 4.3
23119pub const GL_COLOR_COMPONENTS: GLenum = 0x8283;
23120
23121/// Constant value defined from OpenGL 4.3
23122pub const GL_DEPTH_COMPONENTS: GLenum = 0x8284;
23123
23124/// Constant value defined from OpenGL 4.3
23125pub const GL_STENCIL_COMPONENTS: GLenum = 0x8285;
23126
23127/// Constant value defined from OpenGL 4.3
23128pub const GL_COLOR_RENDERABLE: GLenum = 0x8286;
23129
23130/// Constant value defined from OpenGL 4.3
23131pub const GL_DEPTH_RENDERABLE: GLenum = 0x8287;
23132
23133/// Constant value defined from OpenGL 4.3
23134pub const GL_STENCIL_RENDERABLE: GLenum = 0x8288;
23135
23136/// Constant value defined from OpenGL 4.3
23137pub const GL_FRAMEBUFFER_RENDERABLE: GLenum = 0x8289;
23138
23139/// Constant value defined from OpenGL 4.3
23140pub const GL_FRAMEBUFFER_RENDERABLE_LAYERED: GLenum = 0x828A;
23141
23142/// Constant value defined from OpenGL 4.3
23143pub const GL_FRAMEBUFFER_BLEND: GLenum = 0x828B;
23144
23145/// Constant value defined from OpenGL 4.3
23146pub const GL_READ_PIXELS: GLenum = 0x828C;
23147
23148/// Constant value defined from OpenGL 4.3
23149pub const GL_READ_PIXELS_FORMAT: GLenum = 0x828D;
23150
23151/// Constant value defined from OpenGL 4.3
23152pub const GL_READ_PIXELS_TYPE: GLenum = 0x828E;
23153
23154/// Constant value defined from OpenGL 4.3
23155pub const GL_TEXTURE_IMAGE_FORMAT: GLenum = 0x828F;
23156
23157/// Constant value defined from OpenGL 4.3
23158pub const GL_TEXTURE_IMAGE_TYPE: GLenum = 0x8290;
23159
23160/// Constant value defined from OpenGL 4.3
23161pub const GL_GET_TEXTURE_IMAGE_FORMAT: GLenum = 0x8291;
23162
23163/// Constant value defined from OpenGL 4.3
23164pub const GL_GET_TEXTURE_IMAGE_TYPE: GLenum = 0x8292;
23165
23166/// Constant value defined from OpenGL 4.3
23167pub const GL_MIPMAP: GLenum = 0x8293;
23168
23169/// Constant value defined from OpenGL 4.3
23170pub const GL_MANUAL_GENERATE_MIPMAP: GLenum = 0x8294;
23171
23172/// Constant value defined from OpenGL 4.3
23173pub const GL_AUTO_GENERATE_MIPMAP: GLenum = 0x8295;
23174
23175/// Constant value defined from OpenGL 4.3
23176pub const GL_COLOR_ENCODING: GLenum = 0x8296;
23177
23178/// Constant value defined from OpenGL 4.3
23179pub const GL_SRGB_READ: GLenum = 0x8297;
23180
23181/// Constant value defined from OpenGL 4.3
23182pub const GL_SRGB_WRITE: GLenum = 0x8298;
23183
23184/// Constant value defined from OpenGL 4.3
23185pub const GL_FILTER: GLenum = 0x829A;
23186
23187/// Constant value defined from OpenGL 4.3
23188pub const GL_VERTEX_TEXTURE: GLenum = 0x829B;
23189
23190/// Constant value defined from OpenGL 4.3
23191pub const GL_TESS_CONTROL_TEXTURE: GLenum = 0x829C;
23192
23193/// Constant value defined from OpenGL 4.3
23194pub const GL_TESS_EVALUATION_TEXTURE: GLenum = 0x829D;
23195
23196/// Constant value defined from OpenGL 4.3
23197pub const GL_GEOMETRY_TEXTURE: GLenum = 0x829E;
23198
23199/// Constant value defined from OpenGL 4.3
23200pub const GL_FRAGMENT_TEXTURE: GLenum = 0x829F;
23201
23202/// Constant value defined from OpenGL 4.3
23203pub const GL_COMPUTE_TEXTURE: GLenum = 0x82A0;
23204
23205/// Constant value defined from OpenGL 4.3
23206pub const GL_TEXTURE_SHADOW: GLenum = 0x82A1;
23207
23208/// Constant value defined from OpenGL 4.3
23209pub const GL_TEXTURE_GATHER: GLenum = 0x82A2;
23210
23211/// Constant value defined from OpenGL 4.3
23212pub const GL_TEXTURE_GATHER_SHADOW: GLenum = 0x82A3;
23213
23214/// Constant value defined from OpenGL 4.3
23215pub const GL_SHADER_IMAGE_LOAD: GLenum = 0x82A4;
23216
23217/// Constant value defined from OpenGL 4.3
23218pub const GL_SHADER_IMAGE_STORE: GLenum = 0x82A5;
23219
23220/// Constant value defined from OpenGL 4.3
23221pub const GL_SHADER_IMAGE_ATOMIC: GLenum = 0x82A6;
23222
23223/// Constant value defined from OpenGL 4.3
23224pub const GL_IMAGE_TEXEL_SIZE: GLenum = 0x82A7;
23225
23226/// Constant value defined from OpenGL 4.3
23227pub const GL_IMAGE_COMPATIBILITY_CLASS: GLenum = 0x82A8;
23228
23229/// Constant value defined from OpenGL 4.3
23230pub const GL_IMAGE_PIXEL_FORMAT: GLenum = 0x82A9;
23231
23232/// Constant value defined from OpenGL 4.3
23233pub const GL_IMAGE_PIXEL_TYPE: GLenum = 0x82AA;
23234
23235/// Constant value defined from OpenGL 4.3
23236pub const GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST: GLenum = 0x82AC;
23237
23238/// Constant value defined from OpenGL 4.3
23239pub const GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST: GLenum = 0x82AD;
23240
23241/// Constant value defined from OpenGL 4.3
23242pub const GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE: GLenum = 0x82AE;
23243
23244/// Constant value defined from OpenGL 4.3
23245pub const GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE: GLenum = 0x82AF;
23246
23247/// Constant value defined from OpenGL 4.3
23248pub const GL_TEXTURE_COMPRESSED_BLOCK_WIDTH: GLenum = 0x82B1;
23249
23250/// Constant value defined from OpenGL 4.3
23251pub const GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT: GLenum = 0x82B2;
23252
23253/// Constant value defined from OpenGL 4.3
23254pub const GL_TEXTURE_COMPRESSED_BLOCK_SIZE: GLenum = 0x82B3;
23255
23256/// Constant value defined from OpenGL 4.3
23257pub const GL_CLEAR_BUFFER: GLenum = 0x82B4;
23258
23259/// Constant value defined from OpenGL 4.3
23260pub const GL_TEXTURE_VIEW: GLenum = 0x82B5;
23261
23262/// Constant value defined from OpenGL 4.3
23263pub const GL_VIEW_COMPATIBILITY_CLASS: GLenum = 0x82B6;
23264
23265/// Constant value defined from OpenGL 4.3
23266pub const GL_FULL_SUPPORT: GLenum = 0x82B7;
23267
23268/// Constant value defined from OpenGL 4.3
23269pub const GL_CAVEAT_SUPPORT: GLenum = 0x82B8;
23270
23271/// Constant value defined from OpenGL 4.3
23272pub const GL_IMAGE_CLASS_4_X_32: GLenum = 0x82B9;
23273
23274/// Constant value defined from OpenGL 4.3
23275pub const GL_IMAGE_CLASS_2_X_32: GLenum = 0x82BA;
23276
23277/// Constant value defined from OpenGL 4.3
23278pub const GL_IMAGE_CLASS_1_X_32: GLenum = 0x82BB;
23279
23280/// Constant value defined from OpenGL 4.3
23281pub const GL_IMAGE_CLASS_4_X_16: GLenum = 0x82BC;
23282
23283/// Constant value defined from OpenGL 4.3
23284pub const GL_IMAGE_CLASS_2_X_16: GLenum = 0x82BD;
23285
23286/// Constant value defined from OpenGL 4.3
23287pub const GL_IMAGE_CLASS_1_X_16: GLenum = 0x82BE;
23288
23289/// Constant value defined from OpenGL 4.3
23290pub const GL_IMAGE_CLASS_4_X_8: GLenum = 0x82BF;
23291
23292/// Constant value defined from OpenGL 4.3
23293pub const GL_IMAGE_CLASS_2_X_8: GLenum = 0x82C0;
23294
23295/// Constant value defined from OpenGL 4.3
23296pub const GL_IMAGE_CLASS_1_X_8: GLenum = 0x82C1;
23297
23298/// Constant value defined from OpenGL 4.3
23299pub const GL_IMAGE_CLASS_11_11_10: GLenum = 0x82C2;
23300
23301/// Constant value defined from OpenGL 4.3
23302pub const GL_IMAGE_CLASS_10_10_10_2: GLenum = 0x82C3;
23303
23304/// Constant value defined from OpenGL 4.3
23305pub const GL_VIEW_CLASS_128_BITS: GLenum = 0x82C4;
23306
23307/// Constant value defined from OpenGL 4.3
23308pub const GL_VIEW_CLASS_96_BITS: GLenum = 0x82C5;
23309
23310/// Constant value defined from OpenGL 4.3
23311pub const GL_VIEW_CLASS_64_BITS: GLenum = 0x82C6;
23312
23313/// Constant value defined from OpenGL 4.3
23314pub const GL_VIEW_CLASS_48_BITS: GLenum = 0x82C7;
23315
23316/// Constant value defined from OpenGL 4.3
23317pub const GL_VIEW_CLASS_32_BITS: GLenum = 0x82C8;
23318
23319/// Constant value defined from OpenGL 4.3
23320pub const GL_VIEW_CLASS_24_BITS: GLenum = 0x82C9;
23321
23322/// Constant value defined from OpenGL 4.3
23323pub const GL_VIEW_CLASS_16_BITS: GLenum = 0x82CA;
23324
23325/// Constant value defined from OpenGL 4.3
23326pub const GL_VIEW_CLASS_8_BITS: GLenum = 0x82CB;
23327
23328/// Constant value defined from OpenGL 4.3
23329pub const GL_VIEW_CLASS_S3TC_DXT1_RGB: GLenum = 0x82CC;
23330
23331/// Constant value defined from OpenGL 4.3
23332pub const GL_VIEW_CLASS_S3TC_DXT1_RGBA: GLenum = 0x82CD;
23333
23334/// Constant value defined from OpenGL 4.3
23335pub const GL_VIEW_CLASS_S3TC_DXT3_RGBA: GLenum = 0x82CE;
23336
23337/// Constant value defined from OpenGL 4.3
23338pub const GL_VIEW_CLASS_S3TC_DXT5_RGBA: GLenum = 0x82CF;
23339
23340/// Constant value defined from OpenGL 4.3
23341pub const GL_VIEW_CLASS_RGTC1_RED: GLenum = 0x82D0;
23342
23343/// Constant value defined from OpenGL 4.3
23344pub const GL_VIEW_CLASS_RGTC2_RG: GLenum = 0x82D1;
23345
23346/// Constant value defined from OpenGL 4.3
23347pub const GL_VIEW_CLASS_BPTC_UNORM: GLenum = 0x82D2;
23348
23349/// Constant value defined from OpenGL 4.3
23350pub const GL_VIEW_CLASS_BPTC_FLOAT: GLenum = 0x82D3;
23351
23352/// Constant value defined from OpenGL 4.3
23353pub const GL_UNIFORM: GLenum = 0x92E1;
23354
23355/// Constant value defined from OpenGL 4.3
23356pub const GL_UNIFORM_BLOCK: GLenum = 0x92E2;
23357
23358/// Constant value defined from OpenGL 4.3
23359pub const GL_PROGRAM_INPUT: GLenum = 0x92E3;
23360
23361/// Constant value defined from OpenGL 4.3
23362pub const GL_PROGRAM_OUTPUT: GLenum = 0x92E4;
23363
23364/// Constant value defined from OpenGL 4.3
23365pub const GL_BUFFER_VARIABLE: GLenum = 0x92E5;
23366
23367/// Constant value defined from OpenGL 4.3
23368pub const GL_SHADER_STORAGE_BLOCK: GLenum = 0x92E6;
23369
23370/// Constant value defined from OpenGL 4.3
23371pub const GL_VERTEX_SUBROUTINE: GLenum = 0x92E8;
23372
23373/// Constant value defined from OpenGL 4.3
23374pub const GL_TESS_CONTROL_SUBROUTINE: GLenum = 0x92E9;
23375
23376/// Constant value defined from OpenGL 4.3
23377pub const GL_TESS_EVALUATION_SUBROUTINE: GLenum = 0x92EA;
23378
23379/// Constant value defined from OpenGL 4.3
23380pub const GL_GEOMETRY_SUBROUTINE: GLenum = 0x92EB;
23381
23382/// Constant value defined from OpenGL 4.3
23383pub const GL_FRAGMENT_SUBROUTINE: GLenum = 0x92EC;
23384
23385/// Constant value defined from OpenGL 4.3
23386pub const GL_COMPUTE_SUBROUTINE: GLenum = 0x92ED;
23387
23388/// Constant value defined from OpenGL 4.3
23389pub const GL_VERTEX_SUBROUTINE_UNIFORM: GLenum = 0x92EE;
23390
23391/// Constant value defined from OpenGL 4.3
23392pub const GL_TESS_CONTROL_SUBROUTINE_UNIFORM: GLenum = 0x92EF;
23393
23394/// Constant value defined from OpenGL 4.3
23395pub const GL_TESS_EVALUATION_SUBROUTINE_UNIFORM: GLenum = 0x92F0;
23396
23397/// Constant value defined from OpenGL 4.3
23398pub const GL_GEOMETRY_SUBROUTINE_UNIFORM: GLenum = 0x92F1;
23399
23400/// Constant value defined from OpenGL 4.3
23401pub const GL_FRAGMENT_SUBROUTINE_UNIFORM: GLenum = 0x92F2;
23402
23403/// Constant value defined from OpenGL 4.3
23404pub const GL_COMPUTE_SUBROUTINE_UNIFORM: GLenum = 0x92F3;
23405
23406/// Constant value defined from OpenGL 4.3
23407pub const GL_TRANSFORM_FEEDBACK_VARYING: GLenum = 0x92F4;
23408
23409/// Constant value defined from OpenGL 4.3
23410pub const GL_ACTIVE_RESOURCES: GLenum = 0x92F5;
23411
23412/// Constant value defined from OpenGL 4.3
23413pub const GL_MAX_NAME_LENGTH: GLenum = 0x92F6;
23414
23415/// Constant value defined from OpenGL 4.3
23416pub const GL_MAX_NUM_ACTIVE_VARIABLES: GLenum = 0x92F7;
23417
23418/// Constant value defined from OpenGL 4.3
23419pub const GL_MAX_NUM_COMPATIBLE_SUBROUTINES: GLenum = 0x92F8;
23420
23421/// Constant value defined from OpenGL 4.3
23422pub const GL_NAME_LENGTH: GLenum = 0x92F9;
23423
23424/// Constant value defined from OpenGL 4.3
23425pub const GL_TYPE: GLenum = 0x92FA;
23426
23427/// Constant value defined from OpenGL 4.3
23428pub const GL_ARRAY_SIZE: GLenum = 0x92FB;
23429
23430/// Constant value defined from OpenGL 4.3
23431pub const GL_OFFSET: GLenum = 0x92FC;
23432
23433/// Constant value defined from OpenGL 4.3
23434pub const GL_BLOCK_INDEX: GLenum = 0x92FD;
23435
23436/// Constant value defined from OpenGL 4.3
23437pub const GL_ARRAY_STRIDE: GLenum = 0x92FE;
23438
23439/// Constant value defined from OpenGL 4.3
23440pub const GL_MATRIX_STRIDE: GLenum = 0x92FF;
23441
23442/// Constant value defined from OpenGL 4.3
23443pub const GL_IS_ROW_MAJOR: GLenum = 0x9300;
23444
23445/// Constant value defined from OpenGL 4.3
23446pub const GL_ATOMIC_COUNTER_BUFFER_INDEX: GLenum = 0x9301;
23447
23448/// Constant value defined from OpenGL 4.3
23449pub const GL_BUFFER_BINDING: GLenum = 0x9302;
23450
23451/// Constant value defined from OpenGL 4.3
23452pub const GL_BUFFER_DATA_SIZE: GLenum = 0x9303;
23453
23454/// Constant value defined from OpenGL 4.3
23455pub const GL_NUM_ACTIVE_VARIABLES: GLenum = 0x9304;
23456
23457/// Constant value defined from OpenGL 4.3
23458pub const GL_ACTIVE_VARIABLES: GLenum = 0x9305;
23459
23460/// Constant value defined from OpenGL 4.3
23461pub const GL_REFERENCED_BY_VERTEX_SHADER: GLenum = 0x9306;
23462
23463/// Constant value defined from OpenGL 4.3
23464pub const GL_REFERENCED_BY_TESS_CONTROL_SHADER: GLenum = 0x9307;
23465
23466/// Constant value defined from OpenGL 4.3
23467pub const GL_REFERENCED_BY_TESS_EVALUATION_SHADER: GLenum = 0x9308;
23468
23469/// Constant value defined from OpenGL 4.3
23470pub const GL_REFERENCED_BY_GEOMETRY_SHADER: GLenum = 0x9309;
23471
23472/// Constant value defined from OpenGL 4.3
23473pub const GL_REFERENCED_BY_FRAGMENT_SHADER: GLenum = 0x930A;
23474
23475/// Constant value defined from OpenGL 4.3
23476pub const GL_REFERENCED_BY_COMPUTE_SHADER: GLenum = 0x930B;
23477
23478/// Constant value defined from OpenGL 4.3
23479pub const GL_TOP_LEVEL_ARRAY_SIZE: GLenum = 0x930C;
23480
23481/// Constant value defined from OpenGL 4.3
23482pub const GL_TOP_LEVEL_ARRAY_STRIDE: GLenum = 0x930D;
23483
23484/// Constant value defined from OpenGL 4.3
23485pub const GL_LOCATION: GLenum = 0x930E;
23486
23487/// Constant value defined from OpenGL 4.3
23488pub const GL_LOCATION_INDEX: GLenum = 0x930F;
23489
23490/// Constant value defined from OpenGL 4.3
23491pub const GL_IS_PER_PATCH: GLenum = 0x92E7;
23492
23493/// Constant value defined from OpenGL 4.3
23494pub const GL_SHADER_STORAGE_BUFFER: GLenum = 0x90D2;
23495
23496/// Constant value defined from OpenGL 4.3
23497pub const GL_SHADER_STORAGE_BUFFER_BINDING: GLenum = 0x90D3;
23498
23499/// Constant value defined from OpenGL 4.3
23500pub const GL_SHADER_STORAGE_BUFFER_START: GLenum = 0x90D4;
23501
23502/// Constant value defined from OpenGL 4.3
23503pub const GL_SHADER_STORAGE_BUFFER_SIZE: GLenum = 0x90D5;
23504
23505/// Constant value defined from OpenGL 4.3
23506pub const GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS: GLenum = 0x90D6;
23507
23508/// Constant value defined from OpenGL 4.3
23509pub const GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS: GLenum = 0x90D7;
23510
23511/// Constant value defined from OpenGL 4.3
23512pub const GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS: GLenum = 0x90D8;
23513
23514/// Constant value defined from OpenGL 4.3
23515pub const GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS: GLenum = 0x90D9;
23516
23517/// Constant value defined from OpenGL 4.3
23518pub const GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS: GLenum = 0x90DA;
23519
23520/// Constant value defined from OpenGL 4.3
23521pub const GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS: GLenum = 0x90DB;
23522
23523/// Constant value defined from OpenGL 4.3
23524pub const GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS: GLenum = 0x90DC;
23525
23526/// Constant value defined from OpenGL 4.3
23527pub const GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS: GLenum = 0x90DD;
23528
23529/// Constant value defined from OpenGL 4.3
23530pub const GL_MAX_SHADER_STORAGE_BLOCK_SIZE: GLenum = 0x90DE;
23531
23532/// Constant value defined from OpenGL 4.3
23533pub const GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT: GLenum = 0x90DF;
23534
23535/// Constant value defined from OpenGL 4.3
23536pub const GL_SHADER_STORAGE_BARRIER_BIT: GLbitfield = 0x00002000;
23537
23538/// Constant value defined from OpenGL 4.3
23539pub const GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES: GLenum = 0x8F39;
23540
23541/// Constant value defined from OpenGL 4.3
23542pub const GL_DEPTH_STENCIL_TEXTURE_MODE: GLenum = 0x90EA;
23543
23544/// Constant value defined from OpenGL 4.3
23545pub const GL_TEXTURE_BUFFER_OFFSET: GLenum = 0x919D;
23546
23547/// Constant value defined from OpenGL 4.3
23548pub const GL_TEXTURE_BUFFER_SIZE: GLenum = 0x919E;
23549
23550/// Constant value defined from OpenGL 4.3
23551pub const GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT: GLenum = 0x919F;
23552
23553/// Constant value defined from OpenGL 4.3
23554pub const GL_TEXTURE_VIEW_MIN_LEVEL: GLenum = 0x82DB;
23555
23556/// Constant value defined from OpenGL 4.3
23557pub const GL_TEXTURE_VIEW_NUM_LEVELS: GLenum = 0x82DC;
23558
23559/// Constant value defined from OpenGL 4.3
23560pub const GL_TEXTURE_VIEW_MIN_LAYER: GLenum = 0x82DD;
23561
23562/// Constant value defined from OpenGL 4.3
23563pub const GL_TEXTURE_VIEW_NUM_LAYERS: GLenum = 0x82DE;
23564
23565/// Constant value defined from OpenGL 4.3
23566pub const GL_TEXTURE_IMMUTABLE_LEVELS: GLenum = 0x82DF;
23567
23568/// Constant value defined from OpenGL 4.3
23569pub const GL_VERTEX_ATTRIB_BINDING: GLenum = 0x82D4;
23570
23571/// Constant value defined from OpenGL 4.3
23572pub const GL_VERTEX_ATTRIB_RELATIVE_OFFSET: GLenum = 0x82D5;
23573
23574/// Constant value defined from OpenGL 4.3
23575pub const GL_VERTEX_BINDING_DIVISOR: GLenum = 0x82D6;
23576
23577/// Constant value defined from OpenGL 4.3
23578pub const GL_VERTEX_BINDING_OFFSET: GLenum = 0x82D7;
23579
23580/// Constant value defined from OpenGL 4.3
23581pub const GL_VERTEX_BINDING_STRIDE: GLenum = 0x82D8;
23582
23583/// Constant value defined from OpenGL 4.3
23584pub const GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET: GLenum = 0x82D9;
23585
23586/// Constant value defined from OpenGL 4.3
23587pub const GL_MAX_VERTEX_ATTRIB_BINDINGS: GLenum = 0x82DA;
23588
23589/// Constant value defined from OpenGL 4.3
23590pub const GL_VERTEX_BINDING_BUFFER: GLenum = 0x8F4F;
23591
23592/// Constant value defined from OpenGL 4.3
23593pub const GL_DISPLAY_LIST: GLenum = 0x82E7;
23594
23595/// Functions from OpenGL version 4.3
23596pub trait GL_4_3 {
23597	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
23598	fn glGetError(&self) -> GLenum;
23599
23600	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferData.xhtml>
23601	fn glClearBufferData(&self, target: GLenum, internalformat: GLenum, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()>;
23602
23603	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferSubData.xhtml>
23604	fn glClearBufferSubData(&self, target: GLenum, internalformat: GLenum, offset: GLintptr, size: GLsizeiptr, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()>;
23605
23606	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDispatchCompute.xhtml>
23607	fn glDispatchCompute(&self, num_groups_x: GLuint, num_groups_y: GLuint, num_groups_z: GLuint) -> Result<()>;
23608
23609	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDispatchComputeIndirect.xhtml>
23610	fn glDispatchComputeIndirect(&self, indirect: GLintptr) -> Result<()>;
23611
23612	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyImageSubData.xhtml>
23613	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<()>;
23614
23615	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferParameteri.xhtml>
23616	fn glFramebufferParameteri(&self, target: GLenum, pname: GLenum, param: GLint) -> Result<()>;
23617
23618	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFramebufferParameteriv.xhtml>
23619	fn glGetFramebufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
23620
23621	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetInternalformati64v.xhtml>
23622	fn glGetInternalformati64v(&self, target: GLenum, internalformat: GLenum, pname: GLenum, count: GLsizei, params: *mut GLint64) -> Result<()>;
23623
23624	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateTexSubImage.xhtml>
23625	fn glInvalidateTexSubImage(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei) -> Result<()>;
23626
23627	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateTexImage.xhtml>
23628	fn glInvalidateTexImage(&self, texture: GLuint, level: GLint) -> Result<()>;
23629
23630	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateBufferSubData.xhtml>
23631	fn glInvalidateBufferSubData(&self, buffer: GLuint, offset: GLintptr, length: GLsizeiptr) -> Result<()>;
23632
23633	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateBufferData.xhtml>
23634	fn glInvalidateBufferData(&self, buffer: GLuint) -> Result<()>;
23635
23636	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateFramebuffer.xhtml>
23637	fn glInvalidateFramebuffer(&self, target: GLenum, numAttachments: GLsizei, attachments: *const GLenum) -> Result<()>;
23638
23639	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateSubFramebuffer.xhtml>
23640	fn glInvalidateSubFramebuffer(&self, target: GLenum, numAttachments: GLsizei, attachments: *const GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
23641
23642	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawArraysIndirect.xhtml>
23643	fn glMultiDrawArraysIndirect(&self, mode: GLenum, indirect: *const c_void, drawcount: GLsizei, stride: GLsizei) -> Result<()>;
23644
23645	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawElementsIndirect.xhtml>
23646	fn glMultiDrawElementsIndirect(&self, mode: GLenum, type_: GLenum, indirect: *const c_void, drawcount: GLsizei, stride: GLsizei) -> Result<()>;
23647
23648	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramInterfaceiv.xhtml>
23649	fn glGetProgramInterfaceiv(&self, program: GLuint, programInterface: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
23650
23651	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramResourceIndex.xhtml>
23652	fn glGetProgramResourceIndex(&self, program: GLuint, programInterface: GLenum, name: *const GLchar) -> Result<GLuint>;
23653
23654	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramResourceName.xhtml>
23655	fn glGetProgramResourceName(&self, program: GLuint, programInterface: GLenum, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, name: *mut GLchar) -> Result<()>;
23656
23657	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramResourceiv.xhtml>
23658	fn glGetProgramResourceiv(&self, program: GLuint, programInterface: GLenum, index: GLuint, propCount: GLsizei, props: *const GLenum, count: GLsizei, length: *mut GLsizei, params: *mut GLint) -> Result<()>;
23659
23660	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramResourceLocation.xhtml>
23661	fn glGetProgramResourceLocation(&self, program: GLuint, programInterface: GLenum, name: *const GLchar) -> Result<GLint>;
23662
23663	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramResourceLocationIndex.xhtml>
23664	fn glGetProgramResourceLocationIndex(&self, program: GLuint, programInterface: GLenum, name: *const GLchar) -> Result<GLint>;
23665
23666	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glShaderStorageBlockBinding.xhtml>
23667	fn glShaderStorageBlockBinding(&self, program: GLuint, storageBlockIndex: GLuint, storageBlockBinding: GLuint) -> Result<()>;
23668
23669	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexBufferRange.xhtml>
23670	fn glTexBufferRange(&self, target: GLenum, internalformat: GLenum, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()>;
23671
23672	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexStorage2DMultisample.xhtml>
23673	fn glTexStorage2DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, fixedsamplelocations: GLboolean) -> Result<()>;
23674
23675	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexStorage3DMultisample.xhtml>
23676	fn glTexStorage3DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, fixedsamplelocations: GLboolean) -> Result<()>;
23677
23678	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureView.xhtml>
23679	fn glTextureView(&self, texture: GLuint, target: GLenum, origtexture: GLuint, internalformat: GLenum, minlevel: GLuint, numlevels: GLuint, minlayer: GLuint, numlayers: GLuint) -> Result<()>;
23680
23681	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindVertexBuffer.xhtml>
23682	fn glBindVertexBuffer(&self, bindingindex: GLuint, buffer: GLuint, offset: GLintptr, stride: GLsizei) -> Result<()>;
23683
23684	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribFormat.xhtml>
23685	fn glVertexAttribFormat(&self, attribindex: GLuint, size: GLint, type_: GLenum, normalized: GLboolean, relativeoffset: GLuint) -> Result<()>;
23686
23687	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribIFormat.xhtml>
23688	fn glVertexAttribIFormat(&self, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()>;
23689
23690	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribLFormat.xhtml>
23691	fn glVertexAttribLFormat(&self, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()>;
23692
23693	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribBinding.xhtml>
23694	fn glVertexAttribBinding(&self, attribindex: GLuint, bindingindex: GLuint) -> Result<()>;
23695
23696	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexBindingDivisor.xhtml>
23697	fn glVertexBindingDivisor(&self, bindingindex: GLuint, divisor: GLuint) -> Result<()>;
23698
23699	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDebugMessageControl.xhtml>
23700	fn glDebugMessageControl(&self, source: GLenum, type_: GLenum, severity: GLenum, count: GLsizei, ids: *const GLuint, enabled: GLboolean) -> Result<()>;
23701
23702	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDebugMessageInsert.xhtml>
23703	fn glDebugMessageInsert(&self, source: GLenum, type_: GLenum, id: GLuint, severity: GLenum, length: GLsizei, buf: *const GLchar) -> Result<()>;
23704
23705	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDebugMessageCallback.xhtml>
23706	fn glDebugMessageCallback(&self, callback: GLDEBUGPROC, userParam: *const c_void) -> Result<()>;
23707
23708	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetDebugMessageLog.xhtml>
23709	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>;
23710
23711	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPushDebugGroup.xhtml>
23712	fn glPushDebugGroup(&self, source: GLenum, id: GLuint, length: GLsizei, message: *const GLchar) -> Result<()>;
23713
23714	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPopDebugGroup.xhtml>
23715	fn glPopDebugGroup(&self) -> Result<()>;
23716
23717	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glObjectLabel.xhtml>
23718	fn glObjectLabel(&self, identifier: GLenum, name: GLuint, length: GLsizei, label: *const GLchar) -> Result<()>;
23719
23720	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetObjectLabel.xhtml>
23721	fn glGetObjectLabel(&self, identifier: GLenum, name: GLuint, bufSize: GLsizei, length: *mut GLsizei, label: *mut GLchar) -> Result<()>;
23722
23723	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glObjectPtrLabel.xhtml>
23724	fn glObjectPtrLabel(&self, ptr: *const c_void, length: GLsizei, label: *const GLchar) -> Result<()>;
23725
23726	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetObjectPtrLabel.xhtml>
23727	fn glGetObjectPtrLabel(&self, ptr: *const c_void, bufSize: GLsizei, length: *mut GLsizei, label: *mut GLchar) -> Result<()>;
23728}
23729/// Functions from OpenGL version 4.3
23730#[derive(Clone, Copy, PartialEq, Eq, Hash)]
23731pub struct Version43 {
23732	/// Is OpenGL version 4.3 available
23733	available: bool,
23734
23735	/// The function pointer to `glGetError()`
23736	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
23737	pub geterror: PFNGLGETERRORPROC,
23738
23739	/// The function pointer to `glClearBufferData()`
23740	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferData.xhtml>
23741	pub clearbufferdata: PFNGLCLEARBUFFERDATAPROC,
23742
23743	/// The function pointer to `glClearBufferSubData()`
23744	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferSubData.xhtml>
23745	pub clearbuffersubdata: PFNGLCLEARBUFFERSUBDATAPROC,
23746
23747	/// The function pointer to `glDispatchCompute()`
23748	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDispatchCompute.xhtml>
23749	pub dispatchcompute: PFNGLDISPATCHCOMPUTEPROC,
23750
23751	/// The function pointer to `glDispatchComputeIndirect()`
23752	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDispatchComputeIndirect.xhtml>
23753	pub dispatchcomputeindirect: PFNGLDISPATCHCOMPUTEINDIRECTPROC,
23754
23755	/// The function pointer to `glCopyImageSubData()`
23756	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyImageSubData.xhtml>
23757	pub copyimagesubdata: PFNGLCOPYIMAGESUBDATAPROC,
23758
23759	/// The function pointer to `glFramebufferParameteri()`
23760	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferParameteri.xhtml>
23761	pub framebufferparameteri: PFNGLFRAMEBUFFERPARAMETERIPROC,
23762
23763	/// The function pointer to `glGetFramebufferParameteriv()`
23764	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFramebufferParameteriv.xhtml>
23765	pub getframebufferparameteriv: PFNGLGETFRAMEBUFFERPARAMETERIVPROC,
23766
23767	/// The function pointer to `glGetInternalformati64v()`
23768	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetInternalformati64v.xhtml>
23769	pub getinternalformati64v: PFNGLGETINTERNALFORMATI64VPROC,
23770
23771	/// The function pointer to `glInvalidateTexSubImage()`
23772	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateTexSubImage.xhtml>
23773	pub invalidatetexsubimage: PFNGLINVALIDATETEXSUBIMAGEPROC,
23774
23775	/// The function pointer to `glInvalidateTexImage()`
23776	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateTexImage.xhtml>
23777	pub invalidateteximage: PFNGLINVALIDATETEXIMAGEPROC,
23778
23779	/// The function pointer to `glInvalidateBufferSubData()`
23780	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateBufferSubData.xhtml>
23781	pub invalidatebuffersubdata: PFNGLINVALIDATEBUFFERSUBDATAPROC,
23782
23783	/// The function pointer to `glInvalidateBufferData()`
23784	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateBufferData.xhtml>
23785	pub invalidatebufferdata: PFNGLINVALIDATEBUFFERDATAPROC,
23786
23787	/// The function pointer to `glInvalidateFramebuffer()`
23788	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateFramebuffer.xhtml>
23789	pub invalidateframebuffer: PFNGLINVALIDATEFRAMEBUFFERPROC,
23790
23791	/// The function pointer to `glInvalidateSubFramebuffer()`
23792	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateSubFramebuffer.xhtml>
23793	pub invalidatesubframebuffer: PFNGLINVALIDATESUBFRAMEBUFFERPROC,
23794
23795	/// The function pointer to `glMultiDrawArraysIndirect()`
23796	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawArraysIndirect.xhtml>
23797	pub multidrawarraysindirect: PFNGLMULTIDRAWARRAYSINDIRECTPROC,
23798
23799	/// The function pointer to `glMultiDrawElementsIndirect()`
23800	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawElementsIndirect.xhtml>
23801	pub multidrawelementsindirect: PFNGLMULTIDRAWELEMENTSINDIRECTPROC,
23802
23803	/// The function pointer to `glGetProgramInterfaceiv()`
23804	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramInterfaceiv.xhtml>
23805	pub getprograminterfaceiv: PFNGLGETPROGRAMINTERFACEIVPROC,
23806
23807	/// The function pointer to `glGetProgramResourceIndex()`
23808	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramResourceIndex.xhtml>
23809	pub getprogramresourceindex: PFNGLGETPROGRAMRESOURCEINDEXPROC,
23810
23811	/// The function pointer to `glGetProgramResourceName()`
23812	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramResourceName.xhtml>
23813	pub getprogramresourcename: PFNGLGETPROGRAMRESOURCENAMEPROC,
23814
23815	/// The function pointer to `glGetProgramResourceiv()`
23816	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramResourceiv.xhtml>
23817	pub getprogramresourceiv: PFNGLGETPROGRAMRESOURCEIVPROC,
23818
23819	/// The function pointer to `glGetProgramResourceLocation()`
23820	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramResourceLocation.xhtml>
23821	pub getprogramresourcelocation: PFNGLGETPROGRAMRESOURCELOCATIONPROC,
23822
23823	/// The function pointer to `glGetProgramResourceLocationIndex()`
23824	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramResourceLocationIndex.xhtml>
23825	pub getprogramresourcelocationindex: PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC,
23826
23827	/// The function pointer to `glShaderStorageBlockBinding()`
23828	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glShaderStorageBlockBinding.xhtml>
23829	pub shaderstorageblockbinding: PFNGLSHADERSTORAGEBLOCKBINDINGPROC,
23830
23831	/// The function pointer to `glTexBufferRange()`
23832	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexBufferRange.xhtml>
23833	pub texbufferrange: PFNGLTEXBUFFERRANGEPROC,
23834
23835	/// The function pointer to `glTexStorage2DMultisample()`
23836	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexStorage2DMultisample.xhtml>
23837	pub texstorage2dmultisample: PFNGLTEXSTORAGE2DMULTISAMPLEPROC,
23838
23839	/// The function pointer to `glTexStorage3DMultisample()`
23840	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexStorage3DMultisample.xhtml>
23841	pub texstorage3dmultisample: PFNGLTEXSTORAGE3DMULTISAMPLEPROC,
23842
23843	/// The function pointer to `glTextureView()`
23844	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureView.xhtml>
23845	pub textureview: PFNGLTEXTUREVIEWPROC,
23846
23847	/// The function pointer to `glBindVertexBuffer()`
23848	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindVertexBuffer.xhtml>
23849	pub bindvertexbuffer: PFNGLBINDVERTEXBUFFERPROC,
23850
23851	/// The function pointer to `glVertexAttribFormat()`
23852	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribFormat.xhtml>
23853	pub vertexattribformat: PFNGLVERTEXATTRIBFORMATPROC,
23854
23855	/// The function pointer to `glVertexAttribIFormat()`
23856	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribIFormat.xhtml>
23857	pub vertexattribiformat: PFNGLVERTEXATTRIBIFORMATPROC,
23858
23859	/// The function pointer to `glVertexAttribLFormat()`
23860	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribLFormat.xhtml>
23861	pub vertexattriblformat: PFNGLVERTEXATTRIBLFORMATPROC,
23862
23863	/// The function pointer to `glVertexAttribBinding()`
23864	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribBinding.xhtml>
23865	pub vertexattribbinding: PFNGLVERTEXATTRIBBINDINGPROC,
23866
23867	/// The function pointer to `glVertexBindingDivisor()`
23868	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexBindingDivisor.xhtml>
23869	pub vertexbindingdivisor: PFNGLVERTEXBINDINGDIVISORPROC,
23870
23871	/// The function pointer to `glDebugMessageControl()`
23872	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDebugMessageControl.xhtml>
23873	pub debugmessagecontrol: PFNGLDEBUGMESSAGECONTROLPROC,
23874
23875	/// The function pointer to `glDebugMessageInsert()`
23876	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDebugMessageInsert.xhtml>
23877	pub debugmessageinsert: PFNGLDEBUGMESSAGEINSERTPROC,
23878
23879	/// The function pointer to `glDebugMessageCallback()`
23880	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDebugMessageCallback.xhtml>
23881	pub debugmessagecallback: PFNGLDEBUGMESSAGECALLBACKPROC,
23882
23883	/// The function pointer to `glGetDebugMessageLog()`
23884	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetDebugMessageLog.xhtml>
23885	pub getdebugmessagelog: PFNGLGETDEBUGMESSAGELOGPROC,
23886
23887	/// The function pointer to `glPushDebugGroup()`
23888	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPushDebugGroup.xhtml>
23889	pub pushdebuggroup: PFNGLPUSHDEBUGGROUPPROC,
23890
23891	/// The function pointer to `glPopDebugGroup()`
23892	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPopDebugGroup.xhtml>
23893	pub popdebuggroup: PFNGLPOPDEBUGGROUPPROC,
23894
23895	/// The function pointer to `glObjectLabel()`
23896	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glObjectLabel.xhtml>
23897	pub objectlabel: PFNGLOBJECTLABELPROC,
23898
23899	/// The function pointer to `glGetObjectLabel()`
23900	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetObjectLabel.xhtml>
23901	pub getobjectlabel: PFNGLGETOBJECTLABELPROC,
23902
23903	/// The function pointer to `glObjectPtrLabel()`
23904	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glObjectPtrLabel.xhtml>
23905	pub objectptrlabel: PFNGLOBJECTPTRLABELPROC,
23906
23907	/// The function pointer to `glGetObjectPtrLabel()`
23908	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetObjectPtrLabel.xhtml>
23909	pub getobjectptrlabel: PFNGLGETOBJECTPTRLABELPROC,
23910}
23911
23912impl GL_4_3 for Version43 {
23913	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
23914	#[inline(always)]
23915	fn glGetError(&self) -> GLenum {
23916		(self.geterror)()
23917	}
23918	#[inline(always)]
23919	fn glClearBufferData(&self, target: GLenum, internalformat: GLenum, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()> {
23920		let ret = process_catch("glClearBufferData", catch_unwind(||(self.clearbufferdata)(target, internalformat, format, type_, data)));
23921		#[cfg(feature = "diagnose")]
23922		if let Ok(ret) = ret {
23923			return to_result("glClearBufferData", ret, self.glGetError());
23924		} else {
23925			return ret
23926		}
23927		#[cfg(not(feature = "diagnose"))]
23928		return ret;
23929	}
23930	#[inline(always)]
23931	fn glClearBufferSubData(&self, target: GLenum, internalformat: GLenum, offset: GLintptr, size: GLsizeiptr, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()> {
23932		let ret = process_catch("glClearBufferSubData", catch_unwind(||(self.clearbuffersubdata)(target, internalformat, offset, size, format, type_, data)));
23933		#[cfg(feature = "diagnose")]
23934		if let Ok(ret) = ret {
23935			return to_result("glClearBufferSubData", ret, self.glGetError());
23936		} else {
23937			return ret
23938		}
23939		#[cfg(not(feature = "diagnose"))]
23940		return ret;
23941	}
23942	#[inline(always)]
23943	fn glDispatchCompute(&self, num_groups_x: GLuint, num_groups_y: GLuint, num_groups_z: GLuint) -> Result<()> {
23944		let ret = process_catch("glDispatchCompute", catch_unwind(||(self.dispatchcompute)(num_groups_x, num_groups_y, num_groups_z)));
23945		#[cfg(feature = "diagnose")]
23946		if let Ok(ret) = ret {
23947			return to_result("glDispatchCompute", ret, self.glGetError());
23948		} else {
23949			return ret
23950		}
23951		#[cfg(not(feature = "diagnose"))]
23952		return ret;
23953	}
23954	#[inline(always)]
23955	fn glDispatchComputeIndirect(&self, indirect: GLintptr) -> Result<()> {
23956		let ret = process_catch("glDispatchComputeIndirect", catch_unwind(||(self.dispatchcomputeindirect)(indirect)));
23957		#[cfg(feature = "diagnose")]
23958		if let Ok(ret) = ret {
23959			return to_result("glDispatchComputeIndirect", ret, self.glGetError());
23960		} else {
23961			return ret
23962		}
23963		#[cfg(not(feature = "diagnose"))]
23964		return ret;
23965	}
23966	#[inline(always)]
23967	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<()> {
23968		let ret = process_catch("glCopyImageSubData", catch_unwind(||(self.copyimagesubdata)(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth)));
23969		#[cfg(feature = "diagnose")]
23970		if let Ok(ret) = ret {
23971			return to_result("glCopyImageSubData", ret, self.glGetError());
23972		} else {
23973			return ret
23974		}
23975		#[cfg(not(feature = "diagnose"))]
23976		return ret;
23977	}
23978	#[inline(always)]
23979	fn glFramebufferParameteri(&self, target: GLenum, pname: GLenum, param: GLint) -> Result<()> {
23980		let ret = process_catch("glFramebufferParameteri", catch_unwind(||(self.framebufferparameteri)(target, pname, param)));
23981		#[cfg(feature = "diagnose")]
23982		if let Ok(ret) = ret {
23983			return to_result("glFramebufferParameteri", ret, self.glGetError());
23984		} else {
23985			return ret
23986		}
23987		#[cfg(not(feature = "diagnose"))]
23988		return ret;
23989	}
23990	#[inline(always)]
23991	fn glGetFramebufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
23992		let ret = process_catch("glGetFramebufferParameteriv", catch_unwind(||(self.getframebufferparameteriv)(target, pname, params)));
23993		#[cfg(feature = "diagnose")]
23994		if let Ok(ret) = ret {
23995			return to_result("glGetFramebufferParameteriv", ret, self.glGetError());
23996		} else {
23997			return ret
23998		}
23999		#[cfg(not(feature = "diagnose"))]
24000		return ret;
24001	}
24002	#[inline(always)]
24003	fn glGetInternalformati64v(&self, target: GLenum, internalformat: GLenum, pname: GLenum, count: GLsizei, params: *mut GLint64) -> Result<()> {
24004		let ret = process_catch("glGetInternalformati64v", catch_unwind(||(self.getinternalformati64v)(target, internalformat, pname, count, params)));
24005		#[cfg(feature = "diagnose")]
24006		if let Ok(ret) = ret {
24007			return to_result("glGetInternalformati64v", ret, self.glGetError());
24008		} else {
24009			return ret
24010		}
24011		#[cfg(not(feature = "diagnose"))]
24012		return ret;
24013	}
24014	#[inline(always)]
24015	fn glInvalidateTexSubImage(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei) -> Result<()> {
24016		let ret = process_catch("glInvalidateTexSubImage", catch_unwind(||(self.invalidatetexsubimage)(texture, level, xoffset, yoffset, zoffset, width, height, depth)));
24017		#[cfg(feature = "diagnose")]
24018		if let Ok(ret) = ret {
24019			return to_result("glInvalidateTexSubImage", ret, self.glGetError());
24020		} else {
24021			return ret
24022		}
24023		#[cfg(not(feature = "diagnose"))]
24024		return ret;
24025	}
24026	#[inline(always)]
24027	fn glInvalidateTexImage(&self, texture: GLuint, level: GLint) -> Result<()> {
24028		let ret = process_catch("glInvalidateTexImage", catch_unwind(||(self.invalidateteximage)(texture, level)));
24029		#[cfg(feature = "diagnose")]
24030		if let Ok(ret) = ret {
24031			return to_result("glInvalidateTexImage", ret, self.glGetError());
24032		} else {
24033			return ret
24034		}
24035		#[cfg(not(feature = "diagnose"))]
24036		return ret;
24037	}
24038	#[inline(always)]
24039	fn glInvalidateBufferSubData(&self, buffer: GLuint, offset: GLintptr, length: GLsizeiptr) -> Result<()> {
24040		let ret = process_catch("glInvalidateBufferSubData", catch_unwind(||(self.invalidatebuffersubdata)(buffer, offset, length)));
24041		#[cfg(feature = "diagnose")]
24042		if let Ok(ret) = ret {
24043			return to_result("glInvalidateBufferSubData", ret, self.glGetError());
24044		} else {
24045			return ret
24046		}
24047		#[cfg(not(feature = "diagnose"))]
24048		return ret;
24049	}
24050	#[inline(always)]
24051	fn glInvalidateBufferData(&self, buffer: GLuint) -> Result<()> {
24052		let ret = process_catch("glInvalidateBufferData", catch_unwind(||(self.invalidatebufferdata)(buffer)));
24053		#[cfg(feature = "diagnose")]
24054		if let Ok(ret) = ret {
24055			return to_result("glInvalidateBufferData", ret, self.glGetError());
24056		} else {
24057			return ret
24058		}
24059		#[cfg(not(feature = "diagnose"))]
24060		return ret;
24061	}
24062	#[inline(always)]
24063	fn glInvalidateFramebuffer(&self, target: GLenum, numAttachments: GLsizei, attachments: *const GLenum) -> Result<()> {
24064		let ret = process_catch("glInvalidateFramebuffer", catch_unwind(||(self.invalidateframebuffer)(target, numAttachments, attachments)));
24065		#[cfg(feature = "diagnose")]
24066		if let Ok(ret) = ret {
24067			return to_result("glInvalidateFramebuffer", ret, self.glGetError());
24068		} else {
24069			return ret
24070		}
24071		#[cfg(not(feature = "diagnose"))]
24072		return ret;
24073	}
24074	#[inline(always)]
24075	fn glInvalidateSubFramebuffer(&self, target: GLenum, numAttachments: GLsizei, attachments: *const GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
24076		let ret = process_catch("glInvalidateSubFramebuffer", catch_unwind(||(self.invalidatesubframebuffer)(target, numAttachments, attachments, x, y, width, height)));
24077		#[cfg(feature = "diagnose")]
24078		if let Ok(ret) = ret {
24079			return to_result("glInvalidateSubFramebuffer", ret, self.glGetError());
24080		} else {
24081			return ret
24082		}
24083		#[cfg(not(feature = "diagnose"))]
24084		return ret;
24085	}
24086	#[inline(always)]
24087	fn glMultiDrawArraysIndirect(&self, mode: GLenum, indirect: *const c_void, drawcount: GLsizei, stride: GLsizei) -> Result<()> {
24088		let ret = process_catch("glMultiDrawArraysIndirect", catch_unwind(||(self.multidrawarraysindirect)(mode, indirect, drawcount, stride)));
24089		#[cfg(feature = "diagnose")]
24090		if let Ok(ret) = ret {
24091			return to_result("glMultiDrawArraysIndirect", ret, self.glGetError());
24092		} else {
24093			return ret
24094		}
24095		#[cfg(not(feature = "diagnose"))]
24096		return ret;
24097	}
24098	#[inline(always)]
24099	fn glMultiDrawElementsIndirect(&self, mode: GLenum, type_: GLenum, indirect: *const c_void, drawcount: GLsizei, stride: GLsizei) -> Result<()> {
24100		let ret = process_catch("glMultiDrawElementsIndirect", catch_unwind(||(self.multidrawelementsindirect)(mode, type_, indirect, drawcount, stride)));
24101		#[cfg(feature = "diagnose")]
24102		if let Ok(ret) = ret {
24103			return to_result("glMultiDrawElementsIndirect", ret, self.glGetError());
24104		} else {
24105			return ret
24106		}
24107		#[cfg(not(feature = "diagnose"))]
24108		return ret;
24109	}
24110	#[inline(always)]
24111	fn glGetProgramInterfaceiv(&self, program: GLuint, programInterface: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
24112		let ret = process_catch("glGetProgramInterfaceiv", catch_unwind(||(self.getprograminterfaceiv)(program, programInterface, pname, params)));
24113		#[cfg(feature = "diagnose")]
24114		if let Ok(ret) = ret {
24115			return to_result("glGetProgramInterfaceiv", ret, self.glGetError());
24116		} else {
24117			return ret
24118		}
24119		#[cfg(not(feature = "diagnose"))]
24120		return ret;
24121	}
24122	#[inline(always)]
24123	fn glGetProgramResourceIndex(&self, program: GLuint, programInterface: GLenum, name: *const GLchar) -> Result<GLuint> {
24124		let ret = process_catch("glGetProgramResourceIndex", catch_unwind(||(self.getprogramresourceindex)(program, programInterface, name)));
24125		#[cfg(feature = "diagnose")]
24126		if let Ok(ret) = ret {
24127			return to_result("glGetProgramResourceIndex", ret, self.glGetError());
24128		} else {
24129			return ret
24130		}
24131		#[cfg(not(feature = "diagnose"))]
24132		return ret;
24133	}
24134	#[inline(always)]
24135	fn glGetProgramResourceName(&self, program: GLuint, programInterface: GLenum, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, name: *mut GLchar) -> Result<()> {
24136		let ret = process_catch("glGetProgramResourceName", catch_unwind(||(self.getprogramresourcename)(program, programInterface, index, bufSize, length, name)));
24137		#[cfg(feature = "diagnose")]
24138		if let Ok(ret) = ret {
24139			return to_result("glGetProgramResourceName", ret, self.glGetError());
24140		} else {
24141			return ret
24142		}
24143		#[cfg(not(feature = "diagnose"))]
24144		return ret;
24145	}
24146	#[inline(always)]
24147	fn glGetProgramResourceiv(&self, program: GLuint, programInterface: GLenum, index: GLuint, propCount: GLsizei, props: *const GLenum, count: GLsizei, length: *mut GLsizei, params: *mut GLint) -> Result<()> {
24148		let ret = process_catch("glGetProgramResourceiv", catch_unwind(||(self.getprogramresourceiv)(program, programInterface, index, propCount, props, count, length, params)));
24149		#[cfg(feature = "diagnose")]
24150		if let Ok(ret) = ret {
24151			return to_result("glGetProgramResourceiv", ret, self.glGetError());
24152		} else {
24153			return ret
24154		}
24155		#[cfg(not(feature = "diagnose"))]
24156		return ret;
24157	}
24158	#[inline(always)]
24159	fn glGetProgramResourceLocation(&self, program: GLuint, programInterface: GLenum, name: *const GLchar) -> Result<GLint> {
24160		let ret = process_catch("glGetProgramResourceLocation", catch_unwind(||(self.getprogramresourcelocation)(program, programInterface, name)));
24161		#[cfg(feature = "diagnose")]
24162		if let Ok(ret) = ret {
24163			return to_result("glGetProgramResourceLocation", ret, self.glGetError());
24164		} else {
24165			return ret
24166		}
24167		#[cfg(not(feature = "diagnose"))]
24168		return ret;
24169	}
24170	#[inline(always)]
24171	fn glGetProgramResourceLocationIndex(&self, program: GLuint, programInterface: GLenum, name: *const GLchar) -> Result<GLint> {
24172		let ret = process_catch("glGetProgramResourceLocationIndex", catch_unwind(||(self.getprogramresourcelocationindex)(program, programInterface, name)));
24173		#[cfg(feature = "diagnose")]
24174		if let Ok(ret) = ret {
24175			return to_result("glGetProgramResourceLocationIndex", ret, self.glGetError());
24176		} else {
24177			return ret
24178		}
24179		#[cfg(not(feature = "diagnose"))]
24180		return ret;
24181	}
24182	#[inline(always)]
24183	fn glShaderStorageBlockBinding(&self, program: GLuint, storageBlockIndex: GLuint, storageBlockBinding: GLuint) -> Result<()> {
24184		let ret = process_catch("glShaderStorageBlockBinding", catch_unwind(||(self.shaderstorageblockbinding)(program, storageBlockIndex, storageBlockBinding)));
24185		#[cfg(feature = "diagnose")]
24186		if let Ok(ret) = ret {
24187			return to_result("glShaderStorageBlockBinding", ret, self.glGetError());
24188		} else {
24189			return ret
24190		}
24191		#[cfg(not(feature = "diagnose"))]
24192		return ret;
24193	}
24194	#[inline(always)]
24195	fn glTexBufferRange(&self, target: GLenum, internalformat: GLenum, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()> {
24196		let ret = process_catch("glTexBufferRange", catch_unwind(||(self.texbufferrange)(target, internalformat, buffer, offset, size)));
24197		#[cfg(feature = "diagnose")]
24198		if let Ok(ret) = ret {
24199			return to_result("glTexBufferRange", ret, self.glGetError());
24200		} else {
24201			return ret
24202		}
24203		#[cfg(not(feature = "diagnose"))]
24204		return ret;
24205	}
24206	#[inline(always)]
24207	fn glTexStorage2DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, fixedsamplelocations: GLboolean) -> Result<()> {
24208		let ret = process_catch("glTexStorage2DMultisample", catch_unwind(||(self.texstorage2dmultisample)(target, samples, internalformat, width, height, fixedsamplelocations)));
24209		#[cfg(feature = "diagnose")]
24210		if let Ok(ret) = ret {
24211			return to_result("glTexStorage2DMultisample", ret, self.glGetError());
24212		} else {
24213			return ret
24214		}
24215		#[cfg(not(feature = "diagnose"))]
24216		return ret;
24217	}
24218	#[inline(always)]
24219	fn glTexStorage3DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, fixedsamplelocations: GLboolean) -> Result<()> {
24220		let ret = process_catch("glTexStorage3DMultisample", catch_unwind(||(self.texstorage3dmultisample)(target, samples, internalformat, width, height, depth, fixedsamplelocations)));
24221		#[cfg(feature = "diagnose")]
24222		if let Ok(ret) = ret {
24223			return to_result("glTexStorage3DMultisample", ret, self.glGetError());
24224		} else {
24225			return ret
24226		}
24227		#[cfg(not(feature = "diagnose"))]
24228		return ret;
24229	}
24230	#[inline(always)]
24231	fn glTextureView(&self, texture: GLuint, target: GLenum, origtexture: GLuint, internalformat: GLenum, minlevel: GLuint, numlevels: GLuint, minlayer: GLuint, numlayers: GLuint) -> Result<()> {
24232		let ret = process_catch("glTextureView", catch_unwind(||(self.textureview)(texture, target, origtexture, internalformat, minlevel, numlevels, minlayer, numlayers)));
24233		#[cfg(feature = "diagnose")]
24234		if let Ok(ret) = ret {
24235			return to_result("glTextureView", ret, self.glGetError());
24236		} else {
24237			return ret
24238		}
24239		#[cfg(not(feature = "diagnose"))]
24240		return ret;
24241	}
24242	#[inline(always)]
24243	fn glBindVertexBuffer(&self, bindingindex: GLuint, buffer: GLuint, offset: GLintptr, stride: GLsizei) -> Result<()> {
24244		let ret = process_catch("glBindVertexBuffer", catch_unwind(||(self.bindvertexbuffer)(bindingindex, buffer, offset, stride)));
24245		#[cfg(feature = "diagnose")]
24246		if let Ok(ret) = ret {
24247			return to_result("glBindVertexBuffer", ret, self.glGetError());
24248		} else {
24249			return ret
24250		}
24251		#[cfg(not(feature = "diagnose"))]
24252		return ret;
24253	}
24254	#[inline(always)]
24255	fn glVertexAttribFormat(&self, attribindex: GLuint, size: GLint, type_: GLenum, normalized: GLboolean, relativeoffset: GLuint) -> Result<()> {
24256		let ret = process_catch("glVertexAttribFormat", catch_unwind(||(self.vertexattribformat)(attribindex, size, type_, normalized, relativeoffset)));
24257		#[cfg(feature = "diagnose")]
24258		if let Ok(ret) = ret {
24259			return to_result("glVertexAttribFormat", ret, self.glGetError());
24260		} else {
24261			return ret
24262		}
24263		#[cfg(not(feature = "diagnose"))]
24264		return ret;
24265	}
24266	#[inline(always)]
24267	fn glVertexAttribIFormat(&self, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()> {
24268		let ret = process_catch("glVertexAttribIFormat", catch_unwind(||(self.vertexattribiformat)(attribindex, size, type_, relativeoffset)));
24269		#[cfg(feature = "diagnose")]
24270		if let Ok(ret) = ret {
24271			return to_result("glVertexAttribIFormat", ret, self.glGetError());
24272		} else {
24273			return ret
24274		}
24275		#[cfg(not(feature = "diagnose"))]
24276		return ret;
24277	}
24278	#[inline(always)]
24279	fn glVertexAttribLFormat(&self, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()> {
24280		let ret = process_catch("glVertexAttribLFormat", catch_unwind(||(self.vertexattriblformat)(attribindex, size, type_, relativeoffset)));
24281		#[cfg(feature = "diagnose")]
24282		if let Ok(ret) = ret {
24283			return to_result("glVertexAttribLFormat", ret, self.glGetError());
24284		} else {
24285			return ret
24286		}
24287		#[cfg(not(feature = "diagnose"))]
24288		return ret;
24289	}
24290	#[inline(always)]
24291	fn glVertexAttribBinding(&self, attribindex: GLuint, bindingindex: GLuint) -> Result<()> {
24292		let ret = process_catch("glVertexAttribBinding", catch_unwind(||(self.vertexattribbinding)(attribindex, bindingindex)));
24293		#[cfg(feature = "diagnose")]
24294		if let Ok(ret) = ret {
24295			return to_result("glVertexAttribBinding", ret, self.glGetError());
24296		} else {
24297			return ret
24298		}
24299		#[cfg(not(feature = "diagnose"))]
24300		return ret;
24301	}
24302	#[inline(always)]
24303	fn glVertexBindingDivisor(&self, bindingindex: GLuint, divisor: GLuint) -> Result<()> {
24304		let ret = process_catch("glVertexBindingDivisor", catch_unwind(||(self.vertexbindingdivisor)(bindingindex, divisor)));
24305		#[cfg(feature = "diagnose")]
24306		if let Ok(ret) = ret {
24307			return to_result("glVertexBindingDivisor", ret, self.glGetError());
24308		} else {
24309			return ret
24310		}
24311		#[cfg(not(feature = "diagnose"))]
24312		return ret;
24313	}
24314	#[inline(always)]
24315	fn glDebugMessageControl(&self, source: GLenum, type_: GLenum, severity: GLenum, count: GLsizei, ids: *const GLuint, enabled: GLboolean) -> Result<()> {
24316		let ret = process_catch("glDebugMessageControl", catch_unwind(||(self.debugmessagecontrol)(source, type_, severity, count, ids, enabled)));
24317		#[cfg(feature = "diagnose")]
24318		if let Ok(ret) = ret {
24319			return to_result("glDebugMessageControl", ret, self.glGetError());
24320		} else {
24321			return ret
24322		}
24323		#[cfg(not(feature = "diagnose"))]
24324		return ret;
24325	}
24326	#[inline(always)]
24327	fn glDebugMessageInsert(&self, source: GLenum, type_: GLenum, id: GLuint, severity: GLenum, length: GLsizei, buf: *const GLchar) -> Result<()> {
24328		let ret = process_catch("glDebugMessageInsert", catch_unwind(||(self.debugmessageinsert)(source, type_, id, severity, length, buf)));
24329		#[cfg(feature = "diagnose")]
24330		if let Ok(ret) = ret {
24331			return to_result("glDebugMessageInsert", ret, self.glGetError());
24332		} else {
24333			return ret
24334		}
24335		#[cfg(not(feature = "diagnose"))]
24336		return ret;
24337	}
24338	#[inline(always)]
24339	fn glDebugMessageCallback(&self, callback: GLDEBUGPROC, userParam: *const c_void) -> Result<()> {
24340		let ret = process_catch("glDebugMessageCallback", catch_unwind(||(self.debugmessagecallback)(callback, userParam)));
24341		#[cfg(feature = "diagnose")]
24342		if let Ok(ret) = ret {
24343			return to_result("glDebugMessageCallback", ret, self.glGetError());
24344		} else {
24345			return ret
24346		}
24347		#[cfg(not(feature = "diagnose"))]
24348		return ret;
24349	}
24350	#[inline(always)]
24351	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> {
24352		let ret = process_catch("glGetDebugMessageLog", catch_unwind(||(self.getdebugmessagelog)(count, bufSize, sources, types, ids, severities, lengths, messageLog)));
24353		#[cfg(feature = "diagnose")]
24354		if let Ok(ret) = ret {
24355			return to_result("glGetDebugMessageLog", ret, self.glGetError());
24356		} else {
24357			return ret
24358		}
24359		#[cfg(not(feature = "diagnose"))]
24360		return ret;
24361	}
24362	#[inline(always)]
24363	fn glPushDebugGroup(&self, source: GLenum, id: GLuint, length: GLsizei, message: *const GLchar) -> Result<()> {
24364		let ret = process_catch("glPushDebugGroup", catch_unwind(||(self.pushdebuggroup)(source, id, length, message)));
24365		#[cfg(feature = "diagnose")]
24366		if let Ok(ret) = ret {
24367			return to_result("glPushDebugGroup", ret, self.glGetError());
24368		} else {
24369			return ret
24370		}
24371		#[cfg(not(feature = "diagnose"))]
24372		return ret;
24373	}
24374	#[inline(always)]
24375	fn glPopDebugGroup(&self) -> Result<()> {
24376		let ret = process_catch("glPopDebugGroup", catch_unwind(||(self.popdebuggroup)()));
24377		#[cfg(feature = "diagnose")]
24378		if let Ok(ret) = ret {
24379			return to_result("glPopDebugGroup", ret, self.glGetError());
24380		} else {
24381			return ret
24382		}
24383		#[cfg(not(feature = "diagnose"))]
24384		return ret;
24385	}
24386	#[inline(always)]
24387	fn glObjectLabel(&self, identifier: GLenum, name: GLuint, length: GLsizei, label: *const GLchar) -> Result<()> {
24388		let ret = process_catch("glObjectLabel", catch_unwind(||(self.objectlabel)(identifier, name, length, label)));
24389		#[cfg(feature = "diagnose")]
24390		if let Ok(ret) = ret {
24391			return to_result("glObjectLabel", ret, self.glGetError());
24392		} else {
24393			return ret
24394		}
24395		#[cfg(not(feature = "diagnose"))]
24396		return ret;
24397	}
24398	#[inline(always)]
24399	fn glGetObjectLabel(&self, identifier: GLenum, name: GLuint, bufSize: GLsizei, length: *mut GLsizei, label: *mut GLchar) -> Result<()> {
24400		let ret = process_catch("glGetObjectLabel", catch_unwind(||(self.getobjectlabel)(identifier, name, bufSize, length, label)));
24401		#[cfg(feature = "diagnose")]
24402		if let Ok(ret) = ret {
24403			return to_result("glGetObjectLabel", ret, self.glGetError());
24404		} else {
24405			return ret
24406		}
24407		#[cfg(not(feature = "diagnose"))]
24408		return ret;
24409	}
24410	#[inline(always)]
24411	fn glObjectPtrLabel(&self, ptr: *const c_void, length: GLsizei, label: *const GLchar) -> Result<()> {
24412		let ret = process_catch("glObjectPtrLabel", catch_unwind(||(self.objectptrlabel)(ptr, length, label)));
24413		#[cfg(feature = "diagnose")]
24414		if let Ok(ret) = ret {
24415			return to_result("glObjectPtrLabel", ret, self.glGetError());
24416		} else {
24417			return ret
24418		}
24419		#[cfg(not(feature = "diagnose"))]
24420		return ret;
24421	}
24422	#[inline(always)]
24423	fn glGetObjectPtrLabel(&self, ptr: *const c_void, bufSize: GLsizei, length: *mut GLsizei, label: *mut GLchar) -> Result<()> {
24424		let ret = process_catch("glGetObjectPtrLabel", catch_unwind(||(self.getobjectptrlabel)(ptr, bufSize, length, label)));
24425		#[cfg(feature = "diagnose")]
24426		if let Ok(ret) = ret {
24427			return to_result("glGetObjectPtrLabel", ret, self.glGetError());
24428		} else {
24429			return ret
24430		}
24431		#[cfg(not(feature = "diagnose"))]
24432		return ret;
24433	}
24434}
24435
24436impl Version43 {
24437	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
24438		let (_spec, major, minor, release) = base.get_version();
24439		if (major, minor, release) < (4, 3, 0) {
24440			return Self::default();
24441		}
24442		Self {
24443			available: true,
24444			geterror: {let proc = get_proc_address("glGetError"); if proc == null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
24445			clearbufferdata: {let proc = get_proc_address("glClearBufferData"); if proc == null() {dummy_pfnglclearbufferdataproc} else {unsafe{transmute(proc)}}},
24446			clearbuffersubdata: {let proc = get_proc_address("glClearBufferSubData"); if proc == null() {dummy_pfnglclearbuffersubdataproc} else {unsafe{transmute(proc)}}},
24447			dispatchcompute: {let proc = get_proc_address("glDispatchCompute"); if proc == null() {dummy_pfngldispatchcomputeproc} else {unsafe{transmute(proc)}}},
24448			dispatchcomputeindirect: {let proc = get_proc_address("glDispatchComputeIndirect"); if proc == null() {dummy_pfngldispatchcomputeindirectproc} else {unsafe{transmute(proc)}}},
24449			copyimagesubdata: {let proc = get_proc_address("glCopyImageSubData"); if proc == null() {dummy_pfnglcopyimagesubdataproc} else {unsafe{transmute(proc)}}},
24450			framebufferparameteri: {let proc = get_proc_address("glFramebufferParameteri"); if proc == null() {dummy_pfnglframebufferparameteriproc} else {unsafe{transmute(proc)}}},
24451			getframebufferparameteriv: {let proc = get_proc_address("glGetFramebufferParameteriv"); if proc == null() {dummy_pfnglgetframebufferparameterivproc} else {unsafe{transmute(proc)}}},
24452			getinternalformati64v: {let proc = get_proc_address("glGetInternalformati64v"); if proc == null() {dummy_pfnglgetinternalformati64vproc} else {unsafe{transmute(proc)}}},
24453			invalidatetexsubimage: {let proc = get_proc_address("glInvalidateTexSubImage"); if proc == null() {dummy_pfnglinvalidatetexsubimageproc} else {unsafe{transmute(proc)}}},
24454			invalidateteximage: {let proc = get_proc_address("glInvalidateTexImage"); if proc == null() {dummy_pfnglinvalidateteximageproc} else {unsafe{transmute(proc)}}},
24455			invalidatebuffersubdata: {let proc = get_proc_address("glInvalidateBufferSubData"); if proc == null() {dummy_pfnglinvalidatebuffersubdataproc} else {unsafe{transmute(proc)}}},
24456			invalidatebufferdata: {let proc = get_proc_address("glInvalidateBufferData"); if proc == null() {dummy_pfnglinvalidatebufferdataproc} else {unsafe{transmute(proc)}}},
24457			invalidateframebuffer: {let proc = get_proc_address("glInvalidateFramebuffer"); if proc == null() {dummy_pfnglinvalidateframebufferproc} else {unsafe{transmute(proc)}}},
24458			invalidatesubframebuffer: {let proc = get_proc_address("glInvalidateSubFramebuffer"); if proc == null() {dummy_pfnglinvalidatesubframebufferproc} else {unsafe{transmute(proc)}}},
24459			multidrawarraysindirect: {let proc = get_proc_address("glMultiDrawArraysIndirect"); if proc == null() {dummy_pfnglmultidrawarraysindirectproc} else {unsafe{transmute(proc)}}},
24460			multidrawelementsindirect: {let proc = get_proc_address("glMultiDrawElementsIndirect"); if proc == null() {dummy_pfnglmultidrawelementsindirectproc} else {unsafe{transmute(proc)}}},
24461			getprograminterfaceiv: {let proc = get_proc_address("glGetProgramInterfaceiv"); if proc == null() {dummy_pfnglgetprograminterfaceivproc} else {unsafe{transmute(proc)}}},
24462			getprogramresourceindex: {let proc = get_proc_address("glGetProgramResourceIndex"); if proc == null() {dummy_pfnglgetprogramresourceindexproc} else {unsafe{transmute(proc)}}},
24463			getprogramresourcename: {let proc = get_proc_address("glGetProgramResourceName"); if proc == null() {dummy_pfnglgetprogramresourcenameproc} else {unsafe{transmute(proc)}}},
24464			getprogramresourceiv: {let proc = get_proc_address("glGetProgramResourceiv"); if proc == null() {dummy_pfnglgetprogramresourceivproc} else {unsafe{transmute(proc)}}},
24465			getprogramresourcelocation: {let proc = get_proc_address("glGetProgramResourceLocation"); if proc == null() {dummy_pfnglgetprogramresourcelocationproc} else {unsafe{transmute(proc)}}},
24466			getprogramresourcelocationindex: {let proc = get_proc_address("glGetProgramResourceLocationIndex"); if proc == null() {dummy_pfnglgetprogramresourcelocationindexproc} else {unsafe{transmute(proc)}}},
24467			shaderstorageblockbinding: {let proc = get_proc_address("glShaderStorageBlockBinding"); if proc == null() {dummy_pfnglshaderstorageblockbindingproc} else {unsafe{transmute(proc)}}},
24468			texbufferrange: {let proc = get_proc_address("glTexBufferRange"); if proc == null() {dummy_pfngltexbufferrangeproc} else {unsafe{transmute(proc)}}},
24469			texstorage2dmultisample: {let proc = get_proc_address("glTexStorage2DMultisample"); if proc == null() {dummy_pfngltexstorage2dmultisampleproc} else {unsafe{transmute(proc)}}},
24470			texstorage3dmultisample: {let proc = get_proc_address("glTexStorage3DMultisample"); if proc == null() {dummy_pfngltexstorage3dmultisampleproc} else {unsafe{transmute(proc)}}},
24471			textureview: {let proc = get_proc_address("glTextureView"); if proc == null() {dummy_pfngltextureviewproc} else {unsafe{transmute(proc)}}},
24472			bindvertexbuffer: {let proc = get_proc_address("glBindVertexBuffer"); if proc == null() {dummy_pfnglbindvertexbufferproc} else {unsafe{transmute(proc)}}},
24473			vertexattribformat: {let proc = get_proc_address("glVertexAttribFormat"); if proc == null() {dummy_pfnglvertexattribformatproc} else {unsafe{transmute(proc)}}},
24474			vertexattribiformat: {let proc = get_proc_address("glVertexAttribIFormat"); if proc == null() {dummy_pfnglvertexattribiformatproc} else {unsafe{transmute(proc)}}},
24475			vertexattriblformat: {let proc = get_proc_address("glVertexAttribLFormat"); if proc == null() {dummy_pfnglvertexattriblformatproc} else {unsafe{transmute(proc)}}},
24476			vertexattribbinding: {let proc = get_proc_address("glVertexAttribBinding"); if proc == null() {dummy_pfnglvertexattribbindingproc} else {unsafe{transmute(proc)}}},
24477			vertexbindingdivisor: {let proc = get_proc_address("glVertexBindingDivisor"); if proc == null() {dummy_pfnglvertexbindingdivisorproc} else {unsafe{transmute(proc)}}},
24478			debugmessagecontrol: {let proc = get_proc_address("glDebugMessageControl"); if proc == null() {dummy_pfngldebugmessagecontrolproc} else {unsafe{transmute(proc)}}},
24479			debugmessageinsert: {let proc = get_proc_address("glDebugMessageInsert"); if proc == null() {dummy_pfngldebugmessageinsertproc} else {unsafe{transmute(proc)}}},
24480			debugmessagecallback: {let proc = get_proc_address("glDebugMessageCallback"); if proc == null() {dummy_pfngldebugmessagecallbackproc} else {unsafe{transmute(proc)}}},
24481			getdebugmessagelog: {let proc = get_proc_address("glGetDebugMessageLog"); if proc == null() {dummy_pfnglgetdebugmessagelogproc} else {unsafe{transmute(proc)}}},
24482			pushdebuggroup: {let proc = get_proc_address("glPushDebugGroup"); if proc == null() {dummy_pfnglpushdebuggroupproc} else {unsafe{transmute(proc)}}},
24483			popdebuggroup: {let proc = get_proc_address("glPopDebugGroup"); if proc == null() {dummy_pfnglpopdebuggroupproc} else {unsafe{transmute(proc)}}},
24484			objectlabel: {let proc = get_proc_address("glObjectLabel"); if proc == null() {dummy_pfnglobjectlabelproc} else {unsafe{transmute(proc)}}},
24485			getobjectlabel: {let proc = get_proc_address("glGetObjectLabel"); if proc == null() {dummy_pfnglgetobjectlabelproc} else {unsafe{transmute(proc)}}},
24486			objectptrlabel: {let proc = get_proc_address("glObjectPtrLabel"); if proc == null() {dummy_pfnglobjectptrlabelproc} else {unsafe{transmute(proc)}}},
24487			getobjectptrlabel: {let proc = get_proc_address("glGetObjectPtrLabel"); if proc == null() {dummy_pfnglgetobjectptrlabelproc} else {unsafe{transmute(proc)}}},
24488		}
24489	}
24490	#[inline(always)]
24491	pub fn get_available(&self) -> bool {
24492		self.available
24493	}
24494}
24495
24496impl Default for Version43 {
24497	fn default() -> Self {
24498		Self {
24499			available: false,
24500			geterror: dummy_pfnglgeterrorproc,
24501			clearbufferdata: dummy_pfnglclearbufferdataproc,
24502			clearbuffersubdata: dummy_pfnglclearbuffersubdataproc,
24503			dispatchcompute: dummy_pfngldispatchcomputeproc,
24504			dispatchcomputeindirect: dummy_pfngldispatchcomputeindirectproc,
24505			copyimagesubdata: dummy_pfnglcopyimagesubdataproc,
24506			framebufferparameteri: dummy_pfnglframebufferparameteriproc,
24507			getframebufferparameteriv: dummy_pfnglgetframebufferparameterivproc,
24508			getinternalformati64v: dummy_pfnglgetinternalformati64vproc,
24509			invalidatetexsubimage: dummy_pfnglinvalidatetexsubimageproc,
24510			invalidateteximage: dummy_pfnglinvalidateteximageproc,
24511			invalidatebuffersubdata: dummy_pfnglinvalidatebuffersubdataproc,
24512			invalidatebufferdata: dummy_pfnglinvalidatebufferdataproc,
24513			invalidateframebuffer: dummy_pfnglinvalidateframebufferproc,
24514			invalidatesubframebuffer: dummy_pfnglinvalidatesubframebufferproc,
24515			multidrawarraysindirect: dummy_pfnglmultidrawarraysindirectproc,
24516			multidrawelementsindirect: dummy_pfnglmultidrawelementsindirectproc,
24517			getprograminterfaceiv: dummy_pfnglgetprograminterfaceivproc,
24518			getprogramresourceindex: dummy_pfnglgetprogramresourceindexproc,
24519			getprogramresourcename: dummy_pfnglgetprogramresourcenameproc,
24520			getprogramresourceiv: dummy_pfnglgetprogramresourceivproc,
24521			getprogramresourcelocation: dummy_pfnglgetprogramresourcelocationproc,
24522			getprogramresourcelocationindex: dummy_pfnglgetprogramresourcelocationindexproc,
24523			shaderstorageblockbinding: dummy_pfnglshaderstorageblockbindingproc,
24524			texbufferrange: dummy_pfngltexbufferrangeproc,
24525			texstorage2dmultisample: dummy_pfngltexstorage2dmultisampleproc,
24526			texstorage3dmultisample: dummy_pfngltexstorage3dmultisampleproc,
24527			textureview: dummy_pfngltextureviewproc,
24528			bindvertexbuffer: dummy_pfnglbindvertexbufferproc,
24529			vertexattribformat: dummy_pfnglvertexattribformatproc,
24530			vertexattribiformat: dummy_pfnglvertexattribiformatproc,
24531			vertexattriblformat: dummy_pfnglvertexattriblformatproc,
24532			vertexattribbinding: dummy_pfnglvertexattribbindingproc,
24533			vertexbindingdivisor: dummy_pfnglvertexbindingdivisorproc,
24534			debugmessagecontrol: dummy_pfngldebugmessagecontrolproc,
24535			debugmessageinsert: dummy_pfngldebugmessageinsertproc,
24536			debugmessagecallback: dummy_pfngldebugmessagecallbackproc,
24537			getdebugmessagelog: dummy_pfnglgetdebugmessagelogproc,
24538			pushdebuggroup: dummy_pfnglpushdebuggroupproc,
24539			popdebuggroup: dummy_pfnglpopdebuggroupproc,
24540			objectlabel: dummy_pfnglobjectlabelproc,
24541			getobjectlabel: dummy_pfnglgetobjectlabelproc,
24542			objectptrlabel: dummy_pfnglobjectptrlabelproc,
24543			getobjectptrlabel: dummy_pfnglgetobjectptrlabelproc,
24544		}
24545	}
24546}
24547impl Debug for Version43 {
24548	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
24549		if self.available {
24550			f.debug_struct("Version43")
24551			.field("available", &self.available)
24552			.field("clearbufferdata", unsafe{if transmute::<_, *const c_void>(self.clearbufferdata) == (dummy_pfnglclearbufferdataproc as *const c_void) {&null::<PFNGLCLEARBUFFERDATAPROC>()} else {&self.clearbufferdata}})
24553			.field("clearbuffersubdata", unsafe{if transmute::<_, *const c_void>(self.clearbuffersubdata) == (dummy_pfnglclearbuffersubdataproc as *const c_void) {&null::<PFNGLCLEARBUFFERSUBDATAPROC>()} else {&self.clearbuffersubdata}})
24554			.field("dispatchcompute", unsafe{if transmute::<_, *const c_void>(self.dispatchcompute) == (dummy_pfngldispatchcomputeproc as *const c_void) {&null::<PFNGLDISPATCHCOMPUTEPROC>()} else {&self.dispatchcompute}})
24555			.field("dispatchcomputeindirect", unsafe{if transmute::<_, *const c_void>(self.dispatchcomputeindirect) == (dummy_pfngldispatchcomputeindirectproc as *const c_void) {&null::<PFNGLDISPATCHCOMPUTEINDIRECTPROC>()} else {&self.dispatchcomputeindirect}})
24556			.field("copyimagesubdata", unsafe{if transmute::<_, *const c_void>(self.copyimagesubdata) == (dummy_pfnglcopyimagesubdataproc as *const c_void) {&null::<PFNGLCOPYIMAGESUBDATAPROC>()} else {&self.copyimagesubdata}})
24557			.field("framebufferparameteri", unsafe{if transmute::<_, *const c_void>(self.framebufferparameteri) == (dummy_pfnglframebufferparameteriproc as *const c_void) {&null::<PFNGLFRAMEBUFFERPARAMETERIPROC>()} else {&self.framebufferparameteri}})
24558			.field("getframebufferparameteriv", unsafe{if transmute::<_, *const c_void>(self.getframebufferparameteriv) == (dummy_pfnglgetframebufferparameterivproc as *const c_void) {&null::<PFNGLGETFRAMEBUFFERPARAMETERIVPROC>()} else {&self.getframebufferparameteriv}})
24559			.field("getinternalformati64v", unsafe{if transmute::<_, *const c_void>(self.getinternalformati64v) == (dummy_pfnglgetinternalformati64vproc as *const c_void) {&null::<PFNGLGETINTERNALFORMATI64VPROC>()} else {&self.getinternalformati64v}})
24560			.field("invalidatetexsubimage", unsafe{if transmute::<_, *const c_void>(self.invalidatetexsubimage) == (dummy_pfnglinvalidatetexsubimageproc as *const c_void) {&null::<PFNGLINVALIDATETEXSUBIMAGEPROC>()} else {&self.invalidatetexsubimage}})
24561			.field("invalidateteximage", unsafe{if transmute::<_, *const c_void>(self.invalidateteximage) == (dummy_pfnglinvalidateteximageproc as *const c_void) {&null::<PFNGLINVALIDATETEXIMAGEPROC>()} else {&self.invalidateteximage}})
24562			.field("invalidatebuffersubdata", unsafe{if transmute::<_, *const c_void>(self.invalidatebuffersubdata) == (dummy_pfnglinvalidatebuffersubdataproc as *const c_void) {&null::<PFNGLINVALIDATEBUFFERSUBDATAPROC>()} else {&self.invalidatebuffersubdata}})
24563			.field("invalidatebufferdata", unsafe{if transmute::<_, *const c_void>(self.invalidatebufferdata) == (dummy_pfnglinvalidatebufferdataproc as *const c_void) {&null::<PFNGLINVALIDATEBUFFERDATAPROC>()} else {&self.invalidatebufferdata}})
24564			.field("invalidateframebuffer", unsafe{if transmute::<_, *const c_void>(self.invalidateframebuffer) == (dummy_pfnglinvalidateframebufferproc as *const c_void) {&null::<PFNGLINVALIDATEFRAMEBUFFERPROC>()} else {&self.invalidateframebuffer}})
24565			.field("invalidatesubframebuffer", unsafe{if transmute::<_, *const c_void>(self.invalidatesubframebuffer) == (dummy_pfnglinvalidatesubframebufferproc as *const c_void) {&null::<PFNGLINVALIDATESUBFRAMEBUFFERPROC>()} else {&self.invalidatesubframebuffer}})
24566			.field("multidrawarraysindirect", unsafe{if transmute::<_, *const c_void>(self.multidrawarraysindirect) == (dummy_pfnglmultidrawarraysindirectproc as *const c_void) {&null::<PFNGLMULTIDRAWARRAYSINDIRECTPROC>()} else {&self.multidrawarraysindirect}})
24567			.field("multidrawelementsindirect", unsafe{if transmute::<_, *const c_void>(self.multidrawelementsindirect) == (dummy_pfnglmultidrawelementsindirectproc as *const c_void) {&null::<PFNGLMULTIDRAWELEMENTSINDIRECTPROC>()} else {&self.multidrawelementsindirect}})
24568			.field("getprograminterfaceiv", unsafe{if transmute::<_, *const c_void>(self.getprograminterfaceiv) == (dummy_pfnglgetprograminterfaceivproc as *const c_void) {&null::<PFNGLGETPROGRAMINTERFACEIVPROC>()} else {&self.getprograminterfaceiv}})
24569			.field("getprogramresourceindex", unsafe{if transmute::<_, *const c_void>(self.getprogramresourceindex) == (dummy_pfnglgetprogramresourceindexproc as *const c_void) {&null::<PFNGLGETPROGRAMRESOURCEINDEXPROC>()} else {&self.getprogramresourceindex}})
24570			.field("getprogramresourcename", unsafe{if transmute::<_, *const c_void>(self.getprogramresourcename) == (dummy_pfnglgetprogramresourcenameproc as *const c_void) {&null::<PFNGLGETPROGRAMRESOURCENAMEPROC>()} else {&self.getprogramresourcename}})
24571			.field("getprogramresourceiv", unsafe{if transmute::<_, *const c_void>(self.getprogramresourceiv) == (dummy_pfnglgetprogramresourceivproc as *const c_void) {&null::<PFNGLGETPROGRAMRESOURCEIVPROC>()} else {&self.getprogramresourceiv}})
24572			.field("getprogramresourcelocation", unsafe{if transmute::<_, *const c_void>(self.getprogramresourcelocation) == (dummy_pfnglgetprogramresourcelocationproc as *const c_void) {&null::<PFNGLGETPROGRAMRESOURCELOCATIONPROC>()} else {&self.getprogramresourcelocation}})
24573			.field("getprogramresourcelocationindex", unsafe{if transmute::<_, *const c_void>(self.getprogramresourcelocationindex) == (dummy_pfnglgetprogramresourcelocationindexproc as *const c_void) {&null::<PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC>()} else {&self.getprogramresourcelocationindex}})
24574			.field("shaderstorageblockbinding", unsafe{if transmute::<_, *const c_void>(self.shaderstorageblockbinding) == (dummy_pfnglshaderstorageblockbindingproc as *const c_void) {&null::<PFNGLSHADERSTORAGEBLOCKBINDINGPROC>()} else {&self.shaderstorageblockbinding}})
24575			.field("texbufferrange", unsafe{if transmute::<_, *const c_void>(self.texbufferrange) == (dummy_pfngltexbufferrangeproc as *const c_void) {&null::<PFNGLTEXBUFFERRANGEPROC>()} else {&self.texbufferrange}})
24576			.field("texstorage2dmultisample", unsafe{if transmute::<_, *const c_void>(self.texstorage2dmultisample) == (dummy_pfngltexstorage2dmultisampleproc as *const c_void) {&null::<PFNGLTEXSTORAGE2DMULTISAMPLEPROC>()} else {&self.texstorage2dmultisample}})
24577			.field("texstorage3dmultisample", unsafe{if transmute::<_, *const c_void>(self.texstorage3dmultisample) == (dummy_pfngltexstorage3dmultisampleproc as *const c_void) {&null::<PFNGLTEXSTORAGE3DMULTISAMPLEPROC>()} else {&self.texstorage3dmultisample}})
24578			.field("textureview", unsafe{if transmute::<_, *const c_void>(self.textureview) == (dummy_pfngltextureviewproc as *const c_void) {&null::<PFNGLTEXTUREVIEWPROC>()} else {&self.textureview}})
24579			.field("bindvertexbuffer", unsafe{if transmute::<_, *const c_void>(self.bindvertexbuffer) == (dummy_pfnglbindvertexbufferproc as *const c_void) {&null::<PFNGLBINDVERTEXBUFFERPROC>()} else {&self.bindvertexbuffer}})
24580			.field("vertexattribformat", unsafe{if transmute::<_, *const c_void>(self.vertexattribformat) == (dummy_pfnglvertexattribformatproc as *const c_void) {&null::<PFNGLVERTEXATTRIBFORMATPROC>()} else {&self.vertexattribformat}})
24581			.field("vertexattribiformat", unsafe{if transmute::<_, *const c_void>(self.vertexattribiformat) == (dummy_pfnglvertexattribiformatproc as *const c_void) {&null::<PFNGLVERTEXATTRIBIFORMATPROC>()} else {&self.vertexattribiformat}})
24582			.field("vertexattriblformat", unsafe{if transmute::<_, *const c_void>(self.vertexattriblformat) == (dummy_pfnglvertexattriblformatproc as *const c_void) {&null::<PFNGLVERTEXATTRIBLFORMATPROC>()} else {&self.vertexattriblformat}})
24583			.field("vertexattribbinding", unsafe{if transmute::<_, *const c_void>(self.vertexattribbinding) == (dummy_pfnglvertexattribbindingproc as *const c_void) {&null::<PFNGLVERTEXATTRIBBINDINGPROC>()} else {&self.vertexattribbinding}})
24584			.field("vertexbindingdivisor", unsafe{if transmute::<_, *const c_void>(self.vertexbindingdivisor) == (dummy_pfnglvertexbindingdivisorproc as *const c_void) {&null::<PFNGLVERTEXBINDINGDIVISORPROC>()} else {&self.vertexbindingdivisor}})
24585			.field("debugmessagecontrol", unsafe{if transmute::<_, *const c_void>(self.debugmessagecontrol) == (dummy_pfngldebugmessagecontrolproc as *const c_void) {&null::<PFNGLDEBUGMESSAGECONTROLPROC>()} else {&self.debugmessagecontrol}})
24586			.field("debugmessageinsert", unsafe{if transmute::<_, *const c_void>(self.debugmessageinsert) == (dummy_pfngldebugmessageinsertproc as *const c_void) {&null::<PFNGLDEBUGMESSAGEINSERTPROC>()} else {&self.debugmessageinsert}})
24587			.field("debugmessagecallback", unsafe{if transmute::<_, *const c_void>(self.debugmessagecallback) == (dummy_pfngldebugmessagecallbackproc as *const c_void) {&null::<PFNGLDEBUGMESSAGECALLBACKPROC>()} else {&self.debugmessagecallback}})
24588			.field("getdebugmessagelog", unsafe{if transmute::<_, *const c_void>(self.getdebugmessagelog) == (dummy_pfnglgetdebugmessagelogproc as *const c_void) {&null::<PFNGLGETDEBUGMESSAGELOGPROC>()} else {&self.getdebugmessagelog}})
24589			.field("pushdebuggroup", unsafe{if transmute::<_, *const c_void>(self.pushdebuggroup) == (dummy_pfnglpushdebuggroupproc as *const c_void) {&null::<PFNGLPUSHDEBUGGROUPPROC>()} else {&self.pushdebuggroup}})
24590			.field("popdebuggroup", unsafe{if transmute::<_, *const c_void>(self.popdebuggroup) == (dummy_pfnglpopdebuggroupproc as *const c_void) {&null::<PFNGLPOPDEBUGGROUPPROC>()} else {&self.popdebuggroup}})
24591			.field("objectlabel", unsafe{if transmute::<_, *const c_void>(self.objectlabel) == (dummy_pfnglobjectlabelproc as *const c_void) {&null::<PFNGLOBJECTLABELPROC>()} else {&self.objectlabel}})
24592			.field("getobjectlabel", unsafe{if transmute::<_, *const c_void>(self.getobjectlabel) == (dummy_pfnglgetobjectlabelproc as *const c_void) {&null::<PFNGLGETOBJECTLABELPROC>()} else {&self.getobjectlabel}})
24593			.field("objectptrlabel", unsafe{if transmute::<_, *const c_void>(self.objectptrlabel) == (dummy_pfnglobjectptrlabelproc as *const c_void) {&null::<PFNGLOBJECTPTRLABELPROC>()} else {&self.objectptrlabel}})
24594			.field("getobjectptrlabel", unsafe{if transmute::<_, *const c_void>(self.getobjectptrlabel) == (dummy_pfnglgetobjectptrlabelproc as *const c_void) {&null::<PFNGLGETOBJECTPTRLABELPROC>()} else {&self.getobjectptrlabel}})
24595			.finish()
24596		} else {
24597			f.debug_struct("Version43")
24598			.field("available", &self.available)
24599			.finish_non_exhaustive()
24600		}
24601	}
24602}
24603
24604/// The prototype to the OpenGL function `BufferStorage`
24605type PFNGLBUFFERSTORAGEPROC = extern "system" fn(GLenum, GLsizeiptr, *const c_void, GLbitfield);
24606
24607/// The prototype to the OpenGL function `ClearTexImage`
24608type PFNGLCLEARTEXIMAGEPROC = extern "system" fn(GLuint, GLint, GLenum, GLenum, *const c_void);
24609
24610/// The prototype to the OpenGL function `ClearTexSubImage`
24611type PFNGLCLEARTEXSUBIMAGEPROC = extern "system" fn(GLuint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, *const c_void);
24612
24613/// The prototype to the OpenGL function `BindBuffersBase`
24614type PFNGLBINDBUFFERSBASEPROC = extern "system" fn(GLenum, GLuint, GLsizei, *const GLuint);
24615
24616/// The prototype to the OpenGL function `BindBuffersRange`
24617type PFNGLBINDBUFFERSRANGEPROC = extern "system" fn(GLenum, GLuint, GLsizei, *const GLuint, *const GLintptr, *const GLsizeiptr);
24618
24619/// The prototype to the OpenGL function `BindTextures`
24620type PFNGLBINDTEXTURESPROC = extern "system" fn(GLuint, GLsizei, *const GLuint);
24621
24622/// The prototype to the OpenGL function `BindSamplers`
24623type PFNGLBINDSAMPLERSPROC = extern "system" fn(GLuint, GLsizei, *const GLuint);
24624
24625/// The prototype to the OpenGL function `BindImageTextures`
24626type PFNGLBINDIMAGETEXTURESPROC = extern "system" fn(GLuint, GLsizei, *const GLuint);
24627
24628/// The prototype to the OpenGL function `BindVertexBuffers`
24629type PFNGLBINDVERTEXBUFFERSPROC = extern "system" fn(GLuint, GLsizei, *const GLuint, *const GLintptr, *const GLsizei);
24630
24631/// The dummy function of `BufferStorage()`
24632extern "system" fn dummy_pfnglbufferstorageproc (_: GLenum, _: GLsizeiptr, _: *const c_void, _: GLbitfield) {
24633	panic!("OpenGL function pointer `glBufferStorage()` is null.")
24634}
24635
24636/// The dummy function of `ClearTexImage()`
24637extern "system" fn dummy_pfnglclearteximageproc (_: GLuint, _: GLint, _: GLenum, _: GLenum, _: *const c_void) {
24638	panic!("OpenGL function pointer `glClearTexImage()` is null.")
24639}
24640
24641/// The dummy function of `ClearTexSubImage()`
24642extern "system" fn dummy_pfnglcleartexsubimageproc (_: GLuint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLsizei, _: GLenum, _: GLenum, _: *const c_void) {
24643	panic!("OpenGL function pointer `glClearTexSubImage()` is null.")
24644}
24645
24646/// The dummy function of `BindBuffersBase()`
24647extern "system" fn dummy_pfnglbindbuffersbaseproc (_: GLenum, _: GLuint, _: GLsizei, _: *const GLuint) {
24648	panic!("OpenGL function pointer `glBindBuffersBase()` is null.")
24649}
24650
24651/// The dummy function of `BindBuffersRange()`
24652extern "system" fn dummy_pfnglbindbuffersrangeproc (_: GLenum, _: GLuint, _: GLsizei, _: *const GLuint, _: *const GLintptr, _: *const GLsizeiptr) {
24653	panic!("OpenGL function pointer `glBindBuffersRange()` is null.")
24654}
24655
24656/// The dummy function of `BindTextures()`
24657extern "system" fn dummy_pfnglbindtexturesproc (_: GLuint, _: GLsizei, _: *const GLuint) {
24658	panic!("OpenGL function pointer `glBindTextures()` is null.")
24659}
24660
24661/// The dummy function of `BindSamplers()`
24662extern "system" fn dummy_pfnglbindsamplersproc (_: GLuint, _: GLsizei, _: *const GLuint) {
24663	panic!("OpenGL function pointer `glBindSamplers()` is null.")
24664}
24665
24666/// The dummy function of `BindImageTextures()`
24667extern "system" fn dummy_pfnglbindimagetexturesproc (_: GLuint, _: GLsizei, _: *const GLuint) {
24668	panic!("OpenGL function pointer `glBindImageTextures()` is null.")
24669}
24670
24671/// The dummy function of `BindVertexBuffers()`
24672extern "system" fn dummy_pfnglbindvertexbuffersproc (_: GLuint, _: GLsizei, _: *const GLuint, _: *const GLintptr, _: *const GLsizei) {
24673	panic!("OpenGL function pointer `glBindVertexBuffers()` is null.")
24674}
24675/// Constant value defined from OpenGL 4.4
24676pub const GL_MAX_VERTEX_ATTRIB_STRIDE: GLenum = 0x82E5;
24677
24678/// Constant value defined from OpenGL 4.4
24679pub const GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED: GLenum = 0x8221;
24680
24681/// Constant value defined from OpenGL 4.4
24682pub const GL_TEXTURE_BUFFER_BINDING: GLenum = 0x8C2A;
24683
24684/// Constant value defined from OpenGL 4.4
24685pub const GL_MAP_PERSISTENT_BIT: GLbitfield = 0x0040;
24686
24687/// Constant value defined from OpenGL 4.4
24688pub const GL_MAP_COHERENT_BIT: GLbitfield = 0x0080;
24689
24690/// Constant value defined from OpenGL 4.4
24691pub const GL_DYNAMIC_STORAGE_BIT: GLbitfield = 0x0100;
24692
24693/// Constant value defined from OpenGL 4.4
24694pub const GL_CLIENT_STORAGE_BIT: GLbitfield = 0x0200;
24695
24696/// Constant value defined from OpenGL 4.4
24697pub const GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT: GLbitfield = 0x00004000;
24698
24699/// Constant value defined from OpenGL 4.4
24700pub const GL_BUFFER_IMMUTABLE_STORAGE: GLenum = 0x821F;
24701
24702/// Constant value defined from OpenGL 4.4
24703pub const GL_BUFFER_STORAGE_FLAGS: GLenum = 0x8220;
24704
24705/// Constant value defined from OpenGL 4.4
24706pub const GL_CLEAR_TEXTURE: GLenum = 0x9365;
24707
24708/// Constant value defined from OpenGL 4.4
24709pub const GL_LOCATION_COMPONENT: GLenum = 0x934A;
24710
24711/// Constant value defined from OpenGL 4.4
24712pub const GL_TRANSFORM_FEEDBACK_BUFFER_INDEX: GLenum = 0x934B;
24713
24714/// Constant value defined from OpenGL 4.4
24715pub const GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE: GLenum = 0x934C;
24716
24717/// Constant value defined from OpenGL 4.4
24718pub const GL_QUERY_BUFFER: GLenum = 0x9192;
24719
24720/// Constant value defined from OpenGL 4.4
24721pub const GL_QUERY_BUFFER_BARRIER_BIT: GLbitfield = 0x00008000;
24722
24723/// Constant value defined from OpenGL 4.4
24724pub const GL_QUERY_BUFFER_BINDING: GLenum = 0x9193;
24725
24726/// Constant value defined from OpenGL 4.4
24727pub const GL_QUERY_RESULT_NO_WAIT: GLenum = 0x9194;
24728
24729/// Constant value defined from OpenGL 4.4
24730pub const GL_MIRROR_CLAMP_TO_EDGE: GLenum = 0x8743;
24731
24732/// Functions from OpenGL version 4.4
24733pub trait GL_4_4 {
24734	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
24735	fn glGetError(&self) -> GLenum;
24736
24737	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBufferStorage.xhtml>
24738	fn glBufferStorage(&self, target: GLenum, size: GLsizeiptr, data: *const c_void, flags: GLbitfield) -> Result<()>;
24739
24740	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearTexImage.xhtml>
24741	fn glClearTexImage(&self, texture: GLuint, level: GLint, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()>;
24742
24743	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearTexSubImage.xhtml>
24744	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<()>;
24745
24746	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindBuffersBase.xhtml>
24747	fn glBindBuffersBase(&self, target: GLenum, first: GLuint, count: GLsizei, buffers: *const GLuint) -> Result<()>;
24748
24749	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindBuffersRange.xhtml>
24750	fn glBindBuffersRange(&self, target: GLenum, first: GLuint, count: GLsizei, buffers: *const GLuint, offsets: *const GLintptr, sizes: *const GLsizeiptr) -> Result<()>;
24751
24752	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindTextures.xhtml>
24753	fn glBindTextures(&self, first: GLuint, count: GLsizei, textures: *const GLuint) -> Result<()>;
24754
24755	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindSamplers.xhtml>
24756	fn glBindSamplers(&self, first: GLuint, count: GLsizei, samplers: *const GLuint) -> Result<()>;
24757
24758	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindImageTextures.xhtml>
24759	fn glBindImageTextures(&self, first: GLuint, count: GLsizei, textures: *const GLuint) -> Result<()>;
24760
24761	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindVertexBuffers.xhtml>
24762	fn glBindVertexBuffers(&self, first: GLuint, count: GLsizei, buffers: *const GLuint, offsets: *const GLintptr, strides: *const GLsizei) -> Result<()>;
24763}
24764/// Functions from OpenGL version 4.4
24765#[derive(Clone, Copy, PartialEq, Eq, Hash)]
24766pub struct Version44 {
24767	/// Is OpenGL version 4.4 available
24768	available: bool,
24769
24770	/// The function pointer to `glGetError()`
24771	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
24772	pub geterror: PFNGLGETERRORPROC,
24773
24774	/// The function pointer to `glBufferStorage()`
24775	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBufferStorage.xhtml>
24776	pub bufferstorage: PFNGLBUFFERSTORAGEPROC,
24777
24778	/// The function pointer to `glClearTexImage()`
24779	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearTexImage.xhtml>
24780	pub clearteximage: PFNGLCLEARTEXIMAGEPROC,
24781
24782	/// The function pointer to `glClearTexSubImage()`
24783	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearTexSubImage.xhtml>
24784	pub cleartexsubimage: PFNGLCLEARTEXSUBIMAGEPROC,
24785
24786	/// The function pointer to `glBindBuffersBase()`
24787	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindBuffersBase.xhtml>
24788	pub bindbuffersbase: PFNGLBINDBUFFERSBASEPROC,
24789
24790	/// The function pointer to `glBindBuffersRange()`
24791	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindBuffersRange.xhtml>
24792	pub bindbuffersrange: PFNGLBINDBUFFERSRANGEPROC,
24793
24794	/// The function pointer to `glBindTextures()`
24795	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindTextures.xhtml>
24796	pub bindtextures: PFNGLBINDTEXTURESPROC,
24797
24798	/// The function pointer to `glBindSamplers()`
24799	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindSamplers.xhtml>
24800	pub bindsamplers: PFNGLBINDSAMPLERSPROC,
24801
24802	/// The function pointer to `glBindImageTextures()`
24803	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindImageTextures.xhtml>
24804	pub bindimagetextures: PFNGLBINDIMAGETEXTURESPROC,
24805
24806	/// The function pointer to `glBindVertexBuffers()`
24807	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindVertexBuffers.xhtml>
24808	pub bindvertexbuffers: PFNGLBINDVERTEXBUFFERSPROC,
24809}
24810
24811impl GL_4_4 for Version44 {
24812	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
24813	#[inline(always)]
24814	fn glGetError(&self) -> GLenum {
24815		(self.geterror)()
24816	}
24817	#[inline(always)]
24818	fn glBufferStorage(&self, target: GLenum, size: GLsizeiptr, data: *const c_void, flags: GLbitfield) -> Result<()> {
24819		let ret = process_catch("glBufferStorage", catch_unwind(||(self.bufferstorage)(target, size, data, flags)));
24820		#[cfg(feature = "diagnose")]
24821		if let Ok(ret) = ret {
24822			return to_result("glBufferStorage", ret, self.glGetError());
24823		} else {
24824			return ret
24825		}
24826		#[cfg(not(feature = "diagnose"))]
24827		return ret;
24828	}
24829	#[inline(always)]
24830	fn glClearTexImage(&self, texture: GLuint, level: GLint, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()> {
24831		let ret = process_catch("glClearTexImage", catch_unwind(||(self.clearteximage)(texture, level, format, type_, data)));
24832		#[cfg(feature = "diagnose")]
24833		if let Ok(ret) = ret {
24834			return to_result("glClearTexImage", ret, self.glGetError());
24835		} else {
24836			return ret
24837		}
24838		#[cfg(not(feature = "diagnose"))]
24839		return ret;
24840	}
24841	#[inline(always)]
24842	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<()> {
24843		let ret = process_catch("glClearTexSubImage", catch_unwind(||(self.cleartexsubimage)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, data)));
24844		#[cfg(feature = "diagnose")]
24845		if let Ok(ret) = ret {
24846			return to_result("glClearTexSubImage", ret, self.glGetError());
24847		} else {
24848			return ret
24849		}
24850		#[cfg(not(feature = "diagnose"))]
24851		return ret;
24852	}
24853	#[inline(always)]
24854	fn glBindBuffersBase(&self, target: GLenum, first: GLuint, count: GLsizei, buffers: *const GLuint) -> Result<()> {
24855		let ret = process_catch("glBindBuffersBase", catch_unwind(||(self.bindbuffersbase)(target, first, count, buffers)));
24856		#[cfg(feature = "diagnose")]
24857		if let Ok(ret) = ret {
24858			return to_result("glBindBuffersBase", ret, self.glGetError());
24859		} else {
24860			return ret
24861		}
24862		#[cfg(not(feature = "diagnose"))]
24863		return ret;
24864	}
24865	#[inline(always)]
24866	fn glBindBuffersRange(&self, target: GLenum, first: GLuint, count: GLsizei, buffers: *const GLuint, offsets: *const GLintptr, sizes: *const GLsizeiptr) -> Result<()> {
24867		let ret = process_catch("glBindBuffersRange", catch_unwind(||(self.bindbuffersrange)(target, first, count, buffers, offsets, sizes)));
24868		#[cfg(feature = "diagnose")]
24869		if let Ok(ret) = ret {
24870			return to_result("glBindBuffersRange", ret, self.glGetError());
24871		} else {
24872			return ret
24873		}
24874		#[cfg(not(feature = "diagnose"))]
24875		return ret;
24876	}
24877	#[inline(always)]
24878	fn glBindTextures(&self, first: GLuint, count: GLsizei, textures: *const GLuint) -> Result<()> {
24879		let ret = process_catch("glBindTextures", catch_unwind(||(self.bindtextures)(first, count, textures)));
24880		#[cfg(feature = "diagnose")]
24881		if let Ok(ret) = ret {
24882			return to_result("glBindTextures", ret, self.glGetError());
24883		} else {
24884			return ret
24885		}
24886		#[cfg(not(feature = "diagnose"))]
24887		return ret;
24888	}
24889	#[inline(always)]
24890	fn glBindSamplers(&self, first: GLuint, count: GLsizei, samplers: *const GLuint) -> Result<()> {
24891		let ret = process_catch("glBindSamplers", catch_unwind(||(self.bindsamplers)(first, count, samplers)));
24892		#[cfg(feature = "diagnose")]
24893		if let Ok(ret) = ret {
24894			return to_result("glBindSamplers", ret, self.glGetError());
24895		} else {
24896			return ret
24897		}
24898		#[cfg(not(feature = "diagnose"))]
24899		return ret;
24900	}
24901	#[inline(always)]
24902	fn glBindImageTextures(&self, first: GLuint, count: GLsizei, textures: *const GLuint) -> Result<()> {
24903		let ret = process_catch("glBindImageTextures", catch_unwind(||(self.bindimagetextures)(first, count, textures)));
24904		#[cfg(feature = "diagnose")]
24905		if let Ok(ret) = ret {
24906			return to_result("glBindImageTextures", ret, self.glGetError());
24907		} else {
24908			return ret
24909		}
24910		#[cfg(not(feature = "diagnose"))]
24911		return ret;
24912	}
24913	#[inline(always)]
24914	fn glBindVertexBuffers(&self, first: GLuint, count: GLsizei, buffers: *const GLuint, offsets: *const GLintptr, strides: *const GLsizei) -> Result<()> {
24915		let ret = process_catch("glBindVertexBuffers", catch_unwind(||(self.bindvertexbuffers)(first, count, buffers, offsets, strides)));
24916		#[cfg(feature = "diagnose")]
24917		if let Ok(ret) = ret {
24918			return to_result("glBindVertexBuffers", ret, self.glGetError());
24919		} else {
24920			return ret
24921		}
24922		#[cfg(not(feature = "diagnose"))]
24923		return ret;
24924	}
24925}
24926
24927impl Version44 {
24928	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
24929		let (_spec, major, minor, release) = base.get_version();
24930		if (major, minor, release) < (4, 4, 0) {
24931			return Self::default();
24932		}
24933		Self {
24934			available: true,
24935			geterror: {let proc = get_proc_address("glGetError"); if proc == null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
24936			bufferstorage: {let proc = get_proc_address("glBufferStorage"); if proc == null() {dummy_pfnglbufferstorageproc} else {unsafe{transmute(proc)}}},
24937			clearteximage: {let proc = get_proc_address("glClearTexImage"); if proc == null() {dummy_pfnglclearteximageproc} else {unsafe{transmute(proc)}}},
24938			cleartexsubimage: {let proc = get_proc_address("glClearTexSubImage"); if proc == null() {dummy_pfnglcleartexsubimageproc} else {unsafe{transmute(proc)}}},
24939			bindbuffersbase: {let proc = get_proc_address("glBindBuffersBase"); if proc == null() {dummy_pfnglbindbuffersbaseproc} else {unsafe{transmute(proc)}}},
24940			bindbuffersrange: {let proc = get_proc_address("glBindBuffersRange"); if proc == null() {dummy_pfnglbindbuffersrangeproc} else {unsafe{transmute(proc)}}},
24941			bindtextures: {let proc = get_proc_address("glBindTextures"); if proc == null() {dummy_pfnglbindtexturesproc} else {unsafe{transmute(proc)}}},
24942			bindsamplers: {let proc = get_proc_address("glBindSamplers"); if proc == null() {dummy_pfnglbindsamplersproc} else {unsafe{transmute(proc)}}},
24943			bindimagetextures: {let proc = get_proc_address("glBindImageTextures"); if proc == null() {dummy_pfnglbindimagetexturesproc} else {unsafe{transmute(proc)}}},
24944			bindvertexbuffers: {let proc = get_proc_address("glBindVertexBuffers"); if proc == null() {dummy_pfnglbindvertexbuffersproc} else {unsafe{transmute(proc)}}},
24945		}
24946	}
24947	#[inline(always)]
24948	pub fn get_available(&self) -> bool {
24949		self.available
24950	}
24951}
24952
24953impl Default for Version44 {
24954	fn default() -> Self {
24955		Self {
24956			available: false,
24957			geterror: dummy_pfnglgeterrorproc,
24958			bufferstorage: dummy_pfnglbufferstorageproc,
24959			clearteximage: dummy_pfnglclearteximageproc,
24960			cleartexsubimage: dummy_pfnglcleartexsubimageproc,
24961			bindbuffersbase: dummy_pfnglbindbuffersbaseproc,
24962			bindbuffersrange: dummy_pfnglbindbuffersrangeproc,
24963			bindtextures: dummy_pfnglbindtexturesproc,
24964			bindsamplers: dummy_pfnglbindsamplersproc,
24965			bindimagetextures: dummy_pfnglbindimagetexturesproc,
24966			bindvertexbuffers: dummy_pfnglbindvertexbuffersproc,
24967		}
24968	}
24969}
24970impl Debug for Version44 {
24971	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
24972		if self.available {
24973			f.debug_struct("Version44")
24974			.field("available", &self.available)
24975			.field("bufferstorage", unsafe{if transmute::<_, *const c_void>(self.bufferstorage) == (dummy_pfnglbufferstorageproc as *const c_void) {&null::<PFNGLBUFFERSTORAGEPROC>()} else {&self.bufferstorage}})
24976			.field("clearteximage", unsafe{if transmute::<_, *const c_void>(self.clearteximage) == (dummy_pfnglclearteximageproc as *const c_void) {&null::<PFNGLCLEARTEXIMAGEPROC>()} else {&self.clearteximage}})
24977			.field("cleartexsubimage", unsafe{if transmute::<_, *const c_void>(self.cleartexsubimage) == (dummy_pfnglcleartexsubimageproc as *const c_void) {&null::<PFNGLCLEARTEXSUBIMAGEPROC>()} else {&self.cleartexsubimage}})
24978			.field("bindbuffersbase", unsafe{if transmute::<_, *const c_void>(self.bindbuffersbase) == (dummy_pfnglbindbuffersbaseproc as *const c_void) {&null::<PFNGLBINDBUFFERSBASEPROC>()} else {&self.bindbuffersbase}})
24979			.field("bindbuffersrange", unsafe{if transmute::<_, *const c_void>(self.bindbuffersrange) == (dummy_pfnglbindbuffersrangeproc as *const c_void) {&null::<PFNGLBINDBUFFERSRANGEPROC>()} else {&self.bindbuffersrange}})
24980			.field("bindtextures", unsafe{if transmute::<_, *const c_void>(self.bindtextures) == (dummy_pfnglbindtexturesproc as *const c_void) {&null::<PFNGLBINDTEXTURESPROC>()} else {&self.bindtextures}})
24981			.field("bindsamplers", unsafe{if transmute::<_, *const c_void>(self.bindsamplers) == (dummy_pfnglbindsamplersproc as *const c_void) {&null::<PFNGLBINDSAMPLERSPROC>()} else {&self.bindsamplers}})
24982			.field("bindimagetextures", unsafe{if transmute::<_, *const c_void>(self.bindimagetextures) == (dummy_pfnglbindimagetexturesproc as *const c_void) {&null::<PFNGLBINDIMAGETEXTURESPROC>()} else {&self.bindimagetextures}})
24983			.field("bindvertexbuffers", unsafe{if transmute::<_, *const c_void>(self.bindvertexbuffers) == (dummy_pfnglbindvertexbuffersproc as *const c_void) {&null::<PFNGLBINDVERTEXBUFFERSPROC>()} else {&self.bindvertexbuffers}})
24984			.finish()
24985		} else {
24986			f.debug_struct("Version44")
24987			.field("available", &self.available)
24988			.finish_non_exhaustive()
24989		}
24990	}
24991}
24992
24993/// The prototype to the OpenGL function `ClipControl`
24994type PFNGLCLIPCONTROLPROC = extern "system" fn(GLenum, GLenum);
24995
24996/// The prototype to the OpenGL function `CreateTransformFeedbacks`
24997type PFNGLCREATETRANSFORMFEEDBACKSPROC = extern "system" fn(GLsizei, *mut GLuint);
24998
24999/// The prototype to the OpenGL function `TransformFeedbackBufferBase`
25000type PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC = extern "system" fn(GLuint, GLuint, GLuint);
25001
25002/// The prototype to the OpenGL function `TransformFeedbackBufferRange`
25003type PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC = extern "system" fn(GLuint, GLuint, GLuint, GLintptr, GLsizeiptr);
25004
25005/// The prototype to the OpenGL function `GetTransformFeedbackiv`
25006type PFNGLGETTRANSFORMFEEDBACKIVPROC = extern "system" fn(GLuint, GLenum, *mut GLint);
25007
25008/// The prototype to the OpenGL function `GetTransformFeedbacki_v`
25009type PFNGLGETTRANSFORMFEEDBACKI_VPROC = extern "system" fn(GLuint, GLenum, GLuint, *mut GLint);
25010
25011/// The prototype to the OpenGL function `GetTransformFeedbacki64_v`
25012type PFNGLGETTRANSFORMFEEDBACKI64_VPROC = extern "system" fn(GLuint, GLenum, GLuint, *mut GLint64);
25013
25014/// The prototype to the OpenGL function `CreateBuffers`
25015type PFNGLCREATEBUFFERSPROC = extern "system" fn(GLsizei, *mut GLuint);
25016
25017/// The prototype to the OpenGL function `NamedBufferStorage`
25018type PFNGLNAMEDBUFFERSTORAGEPROC = extern "system" fn(GLuint, GLsizeiptr, *const c_void, GLbitfield);
25019
25020/// The prototype to the OpenGL function `NamedBufferData`
25021type PFNGLNAMEDBUFFERDATAPROC = extern "system" fn(GLuint, GLsizeiptr, *const c_void, GLenum);
25022
25023/// The prototype to the OpenGL function `NamedBufferSubData`
25024type PFNGLNAMEDBUFFERSUBDATAPROC = extern "system" fn(GLuint, GLintptr, GLsizeiptr, *const c_void);
25025
25026/// The prototype to the OpenGL function `CopyNamedBufferSubData`
25027type PFNGLCOPYNAMEDBUFFERSUBDATAPROC = extern "system" fn(GLuint, GLuint, GLintptr, GLintptr, GLsizeiptr);
25028
25029/// The prototype to the OpenGL function `ClearNamedBufferData`
25030type PFNGLCLEARNAMEDBUFFERDATAPROC = extern "system" fn(GLuint, GLenum, GLenum, GLenum, *const c_void);
25031
25032/// The prototype to the OpenGL function `ClearNamedBufferSubData`
25033type PFNGLCLEARNAMEDBUFFERSUBDATAPROC = extern "system" fn(GLuint, GLenum, GLintptr, GLsizeiptr, GLenum, GLenum, *const c_void);
25034
25035/// The prototype to the OpenGL function `MapNamedBuffer`
25036type PFNGLMAPNAMEDBUFFERPROC = extern "system" fn(GLuint, GLenum) -> *mut c_void;
25037
25038/// The prototype to the OpenGL function `MapNamedBufferRange`
25039type PFNGLMAPNAMEDBUFFERRANGEPROC = extern "system" fn(GLuint, GLintptr, GLsizeiptr, GLbitfield) -> *mut c_void;
25040
25041/// The prototype to the OpenGL function `UnmapNamedBuffer`
25042type PFNGLUNMAPNAMEDBUFFERPROC = extern "system" fn(GLuint) -> GLboolean;
25043
25044/// The prototype to the OpenGL function `FlushMappedNamedBufferRange`
25045type PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC = extern "system" fn(GLuint, GLintptr, GLsizeiptr);
25046
25047/// The prototype to the OpenGL function `GetNamedBufferParameteriv`
25048type PFNGLGETNAMEDBUFFERPARAMETERIVPROC = extern "system" fn(GLuint, GLenum, *mut GLint);
25049
25050/// The prototype to the OpenGL function `GetNamedBufferParameteri64v`
25051type PFNGLGETNAMEDBUFFERPARAMETERI64VPROC = extern "system" fn(GLuint, GLenum, *mut GLint64);
25052
25053/// The prototype to the OpenGL function `GetNamedBufferPointerv`
25054type PFNGLGETNAMEDBUFFERPOINTERVPROC = extern "system" fn(GLuint, GLenum, *mut *mut c_void);
25055
25056/// The prototype to the OpenGL function `GetNamedBufferSubData`
25057type PFNGLGETNAMEDBUFFERSUBDATAPROC = extern "system" fn(GLuint, GLintptr, GLsizeiptr, *mut c_void);
25058
25059/// The prototype to the OpenGL function `CreateFramebuffers`
25060type PFNGLCREATEFRAMEBUFFERSPROC = extern "system" fn(GLsizei, *mut GLuint);
25061
25062/// The prototype to the OpenGL function `NamedFramebufferRenderbuffer`
25063type PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC = extern "system" fn(GLuint, GLenum, GLenum, GLuint);
25064
25065/// The prototype to the OpenGL function `NamedFramebufferParameteri`
25066type PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC = extern "system" fn(GLuint, GLenum, GLint);
25067
25068/// The prototype to the OpenGL function `NamedFramebufferTexture`
25069type PFNGLNAMEDFRAMEBUFFERTEXTUREPROC = extern "system" fn(GLuint, GLenum, GLuint, GLint);
25070
25071/// The prototype to the OpenGL function `NamedFramebufferTextureLayer`
25072type PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC = extern "system" fn(GLuint, GLenum, GLuint, GLint, GLint);
25073
25074/// The prototype to the OpenGL function `NamedFramebufferDrawBuffer`
25075type PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC = extern "system" fn(GLuint, GLenum);
25076
25077/// The prototype to the OpenGL function `NamedFramebufferDrawBuffers`
25078type PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC = extern "system" fn(GLuint, GLsizei, *const GLenum);
25079
25080/// The prototype to the OpenGL function `NamedFramebufferReadBuffer`
25081type PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC = extern "system" fn(GLuint, GLenum);
25082
25083/// The prototype to the OpenGL function `InvalidateNamedFramebufferData`
25084type PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC = extern "system" fn(GLuint, GLsizei, *const GLenum);
25085
25086/// The prototype to the OpenGL function `InvalidateNamedFramebufferSubData`
25087type PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC = extern "system" fn(GLuint, GLsizei, *const GLenum, GLint, GLint, GLsizei, GLsizei);
25088
25089/// The prototype to the OpenGL function `ClearNamedFramebufferiv`
25090type PFNGLCLEARNAMEDFRAMEBUFFERIVPROC = extern "system" fn(GLuint, GLenum, GLint, *const GLint);
25091
25092/// The prototype to the OpenGL function `ClearNamedFramebufferuiv`
25093type PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC = extern "system" fn(GLuint, GLenum, GLint, *const GLuint);
25094
25095/// The prototype to the OpenGL function `ClearNamedFramebufferfv`
25096type PFNGLCLEARNAMEDFRAMEBUFFERFVPROC = extern "system" fn(GLuint, GLenum, GLint, *const GLfloat);
25097
25098/// The prototype to the OpenGL function `ClearNamedFramebufferfi`
25099type PFNGLCLEARNAMEDFRAMEBUFFERFIPROC = extern "system" fn(GLuint, GLenum, GLint, GLfloat, GLint);
25100
25101/// The prototype to the OpenGL function `BlitNamedFramebuffer`
25102type PFNGLBLITNAMEDFRAMEBUFFERPROC = extern "system" fn(GLuint, GLuint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum);
25103
25104/// The prototype to the OpenGL function `CheckNamedFramebufferStatus`
25105type PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC = extern "system" fn(GLuint, GLenum) -> GLenum;
25106
25107/// The prototype to the OpenGL function `GetNamedFramebufferParameteriv`
25108type PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC = extern "system" fn(GLuint, GLenum, *mut GLint);
25109
25110/// The prototype to the OpenGL function `GetNamedFramebufferAttachmentParameteriv`
25111type PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC = extern "system" fn(GLuint, GLenum, GLenum, *mut GLint);
25112
25113/// The prototype to the OpenGL function `CreateRenderbuffers`
25114type PFNGLCREATERENDERBUFFERSPROC = extern "system" fn(GLsizei, *mut GLuint);
25115
25116/// The prototype to the OpenGL function `NamedRenderbufferStorage`
25117type PFNGLNAMEDRENDERBUFFERSTORAGEPROC = extern "system" fn(GLuint, GLenum, GLsizei, GLsizei);
25118
25119/// The prototype to the OpenGL function `NamedRenderbufferStorageMultisample`
25120type PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC = extern "system" fn(GLuint, GLsizei, GLenum, GLsizei, GLsizei);
25121
25122/// The prototype to the OpenGL function `GetNamedRenderbufferParameteriv`
25123type PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC = extern "system" fn(GLuint, GLenum, *mut GLint);
25124
25125/// The prototype to the OpenGL function `CreateTextures`
25126type PFNGLCREATETEXTURESPROC = extern "system" fn(GLenum, GLsizei, *mut GLuint);
25127
25128/// The prototype to the OpenGL function `TextureBuffer`
25129type PFNGLTEXTUREBUFFERPROC = extern "system" fn(GLuint, GLenum, GLuint);
25130
25131/// The prototype to the OpenGL function `TextureBufferRange`
25132type PFNGLTEXTUREBUFFERRANGEPROC = extern "system" fn(GLuint, GLenum, GLuint, GLintptr, GLsizeiptr);
25133
25134/// The prototype to the OpenGL function `TextureStorage1D`
25135type PFNGLTEXTURESTORAGE1DPROC = extern "system" fn(GLuint, GLsizei, GLenum, GLsizei);
25136
25137/// The prototype to the OpenGL function `TextureStorage2D`
25138type PFNGLTEXTURESTORAGE2DPROC = extern "system" fn(GLuint, GLsizei, GLenum, GLsizei, GLsizei);
25139
25140/// The prototype to the OpenGL function `TextureStorage3D`
25141type PFNGLTEXTURESTORAGE3DPROC = extern "system" fn(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLsizei);
25142
25143/// The prototype to the OpenGL function `TextureStorage2DMultisample`
25144type PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC = extern "system" fn(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLboolean);
25145
25146/// The prototype to the OpenGL function `TextureStorage3DMultisample`
25147type PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC = extern "system" fn(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean);
25148
25149/// The prototype to the OpenGL function `TextureSubImage1D`
25150type PFNGLTEXTURESUBIMAGE1DPROC = extern "system" fn(GLuint, GLint, GLint, GLsizei, GLenum, GLenum, *const c_void);
25151
25152/// The prototype to the OpenGL function `TextureSubImage2D`
25153type PFNGLTEXTURESUBIMAGE2DPROC = extern "system" fn(GLuint, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, *const c_void);
25154
25155/// The prototype to the OpenGL function `TextureSubImage3D`
25156type PFNGLTEXTURESUBIMAGE3DPROC = extern "system" fn(GLuint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, *const c_void);
25157
25158/// The prototype to the OpenGL function `CompressedTextureSubImage1D`
25159type PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC = extern "system" fn(GLuint, GLint, GLint, GLsizei, GLenum, GLsizei, *const c_void);
25160
25161/// The prototype to the OpenGL function `CompressedTextureSubImage2D`
25162type PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC = extern "system" fn(GLuint, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, *const c_void);
25163
25164/// The prototype to the OpenGL function `CompressedTextureSubImage3D`
25165type PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC = extern "system" fn(GLuint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, *const c_void);
25166
25167/// The prototype to the OpenGL function `CopyTextureSubImage1D`
25168type PFNGLCOPYTEXTURESUBIMAGE1DPROC = extern "system" fn(GLuint, GLint, GLint, GLint, GLint, GLsizei);
25169
25170/// The prototype to the OpenGL function `CopyTextureSubImage2D`
25171type PFNGLCOPYTEXTURESUBIMAGE2DPROC = extern "system" fn(GLuint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
25172
25173/// The prototype to the OpenGL function `CopyTextureSubImage3D`
25174type PFNGLCOPYTEXTURESUBIMAGE3DPROC = extern "system" fn(GLuint, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
25175
25176/// The prototype to the OpenGL function `TextureParameterf`
25177type PFNGLTEXTUREPARAMETERFPROC = extern "system" fn(GLuint, GLenum, GLfloat);
25178
25179/// The prototype to the OpenGL function `TextureParameterfv`
25180type PFNGLTEXTUREPARAMETERFVPROC = extern "system" fn(GLuint, GLenum, *const GLfloat);
25181
25182/// The prototype to the OpenGL function `TextureParameteri`
25183type PFNGLTEXTUREPARAMETERIPROC = extern "system" fn(GLuint, GLenum, GLint);
25184
25185/// The prototype to the OpenGL function `TextureParameterIiv`
25186type PFNGLTEXTUREPARAMETERIIVPROC = extern "system" fn(GLuint, GLenum, *const GLint);
25187
25188/// The prototype to the OpenGL function `TextureParameterIuiv`
25189type PFNGLTEXTUREPARAMETERIUIVPROC = extern "system" fn(GLuint, GLenum, *const GLuint);
25190
25191/// The prototype to the OpenGL function `TextureParameteriv`
25192type PFNGLTEXTUREPARAMETERIVPROC = extern "system" fn(GLuint, GLenum, *const GLint);
25193
25194/// The prototype to the OpenGL function `GenerateTextureMipmap`
25195type PFNGLGENERATETEXTUREMIPMAPPROC = extern "system" fn(GLuint);
25196
25197/// The prototype to the OpenGL function `BindTextureUnit`
25198type PFNGLBINDTEXTUREUNITPROC = extern "system" fn(GLuint, GLuint);
25199
25200/// The prototype to the OpenGL function `GetTextureImage`
25201type PFNGLGETTEXTUREIMAGEPROC = extern "system" fn(GLuint, GLint, GLenum, GLenum, GLsizei, *mut c_void);
25202
25203/// The prototype to the OpenGL function `GetCompressedTextureImage`
25204type PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC = extern "system" fn(GLuint, GLint, GLsizei, *mut c_void);
25205
25206/// The prototype to the OpenGL function `GetTextureLevelParameterfv`
25207type PFNGLGETTEXTURELEVELPARAMETERFVPROC = extern "system" fn(GLuint, GLint, GLenum, *mut GLfloat);
25208
25209/// The prototype to the OpenGL function `GetTextureLevelParameteriv`
25210type PFNGLGETTEXTURELEVELPARAMETERIVPROC = extern "system" fn(GLuint, GLint, GLenum, *mut GLint);
25211
25212/// The prototype to the OpenGL function `GetTextureParameterfv`
25213type PFNGLGETTEXTUREPARAMETERFVPROC = extern "system" fn(GLuint, GLenum, *mut GLfloat);
25214
25215/// The prototype to the OpenGL function `GetTextureParameterIiv`
25216type PFNGLGETTEXTUREPARAMETERIIVPROC = extern "system" fn(GLuint, GLenum, *mut GLint);
25217
25218/// The prototype to the OpenGL function `GetTextureParameterIuiv`
25219type PFNGLGETTEXTUREPARAMETERIUIVPROC = extern "system" fn(GLuint, GLenum, *mut GLuint);
25220
25221/// The prototype to the OpenGL function `GetTextureParameteriv`
25222type PFNGLGETTEXTUREPARAMETERIVPROC = extern "system" fn(GLuint, GLenum, *mut GLint);
25223
25224/// The prototype to the OpenGL function `CreateVertexArrays`
25225type PFNGLCREATEVERTEXARRAYSPROC = extern "system" fn(GLsizei, *mut GLuint);
25226
25227/// The prototype to the OpenGL function `DisableVertexArrayAttrib`
25228type PFNGLDISABLEVERTEXARRAYATTRIBPROC = extern "system" fn(GLuint, GLuint);
25229
25230/// The prototype to the OpenGL function `EnableVertexArrayAttrib`
25231type PFNGLENABLEVERTEXARRAYATTRIBPROC = extern "system" fn(GLuint, GLuint);
25232
25233/// The prototype to the OpenGL function `VertexArrayElementBuffer`
25234type PFNGLVERTEXARRAYELEMENTBUFFERPROC = extern "system" fn(GLuint, GLuint);
25235
25236/// The prototype to the OpenGL function `VertexArrayVertexBuffer`
25237type PFNGLVERTEXARRAYVERTEXBUFFERPROC = extern "system" fn(GLuint, GLuint, GLuint, GLintptr, GLsizei);
25238
25239/// The prototype to the OpenGL function `VertexArrayVertexBuffers`
25240type PFNGLVERTEXARRAYVERTEXBUFFERSPROC = extern "system" fn(GLuint, GLuint, GLsizei, *const GLuint, *const GLintptr, *const GLsizei);
25241
25242/// The prototype to the OpenGL function `VertexArrayAttribBinding`
25243type PFNGLVERTEXARRAYATTRIBBINDINGPROC = extern "system" fn(GLuint, GLuint, GLuint);
25244
25245/// The prototype to the OpenGL function `VertexArrayAttribFormat`
25246type PFNGLVERTEXARRAYATTRIBFORMATPROC = extern "system" fn(GLuint, GLuint, GLint, GLenum, GLboolean, GLuint);
25247
25248/// The prototype to the OpenGL function `VertexArrayAttribIFormat`
25249type PFNGLVERTEXARRAYATTRIBIFORMATPROC = extern "system" fn(GLuint, GLuint, GLint, GLenum, GLuint);
25250
25251/// The prototype to the OpenGL function `VertexArrayAttribLFormat`
25252type PFNGLVERTEXARRAYATTRIBLFORMATPROC = extern "system" fn(GLuint, GLuint, GLint, GLenum, GLuint);
25253
25254/// The prototype to the OpenGL function `VertexArrayBindingDivisor`
25255type PFNGLVERTEXARRAYBINDINGDIVISORPROC = extern "system" fn(GLuint, GLuint, GLuint);
25256
25257/// The prototype to the OpenGL function `GetVertexArrayiv`
25258type PFNGLGETVERTEXARRAYIVPROC = extern "system" fn(GLuint, GLenum, *mut GLint);
25259
25260/// The prototype to the OpenGL function `GetVertexArrayIndexediv`
25261type PFNGLGETVERTEXARRAYINDEXEDIVPROC = extern "system" fn(GLuint, GLuint, GLenum, *mut GLint);
25262
25263/// The prototype to the OpenGL function `GetVertexArrayIndexed64iv`
25264type PFNGLGETVERTEXARRAYINDEXED64IVPROC = extern "system" fn(GLuint, GLuint, GLenum, *mut GLint64);
25265
25266/// The prototype to the OpenGL function `CreateSamplers`
25267type PFNGLCREATESAMPLERSPROC = extern "system" fn(GLsizei, *mut GLuint);
25268
25269/// The prototype to the OpenGL function `CreateProgramPipelines`
25270type PFNGLCREATEPROGRAMPIPELINESPROC = extern "system" fn(GLsizei, *mut GLuint);
25271
25272/// The prototype to the OpenGL function `CreateQueries`
25273type PFNGLCREATEQUERIESPROC = extern "system" fn(GLenum, GLsizei, *mut GLuint);
25274
25275/// The prototype to the OpenGL function `GetQueryBufferObjecti64v`
25276type PFNGLGETQUERYBUFFEROBJECTI64VPROC = extern "system" fn(GLuint, GLuint, GLenum, GLintptr);
25277
25278/// The prototype to the OpenGL function `GetQueryBufferObjectiv`
25279type PFNGLGETQUERYBUFFEROBJECTIVPROC = extern "system" fn(GLuint, GLuint, GLenum, GLintptr);
25280
25281/// The prototype to the OpenGL function `GetQueryBufferObjectui64v`
25282type PFNGLGETQUERYBUFFEROBJECTUI64VPROC = extern "system" fn(GLuint, GLuint, GLenum, GLintptr);
25283
25284/// The prototype to the OpenGL function `GetQueryBufferObjectuiv`
25285type PFNGLGETQUERYBUFFEROBJECTUIVPROC = extern "system" fn(GLuint, GLuint, GLenum, GLintptr);
25286
25287/// The prototype to the OpenGL function `MemoryBarrierByRegion`
25288type PFNGLMEMORYBARRIERBYREGIONPROC = extern "system" fn(GLbitfield);
25289
25290/// The prototype to the OpenGL function `GetTextureSubImage`
25291type PFNGLGETTEXTURESUBIMAGEPROC = extern "system" fn(GLuint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, GLsizei, *mut c_void);
25292
25293/// The prototype to the OpenGL function `GetCompressedTextureSubImage`
25294type PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC = extern "system" fn(GLuint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLsizei, *mut c_void);
25295
25296/// The prototype to the OpenGL function `GetGraphicsResetStatus`
25297type PFNGLGETGRAPHICSRESETSTATUSPROC = extern "system" fn() -> GLenum;
25298
25299/// The prototype to the OpenGL function `GetnCompressedTexImage`
25300type PFNGLGETNCOMPRESSEDTEXIMAGEPROC = extern "system" fn(GLenum, GLint, GLsizei, *mut c_void);
25301
25302/// The prototype to the OpenGL function `GetnTexImage`
25303type PFNGLGETNTEXIMAGEPROC = extern "system" fn(GLenum, GLint, GLenum, GLenum, GLsizei, *mut c_void);
25304
25305/// The prototype to the OpenGL function `GetnUniformdv`
25306type PFNGLGETNUNIFORMDVPROC = extern "system" fn(GLuint, GLint, GLsizei, *mut GLdouble);
25307
25308/// The prototype to the OpenGL function `GetnUniformfv`
25309type PFNGLGETNUNIFORMFVPROC = extern "system" fn(GLuint, GLint, GLsizei, *mut GLfloat);
25310
25311/// The prototype to the OpenGL function `GetnUniformiv`
25312type PFNGLGETNUNIFORMIVPROC = extern "system" fn(GLuint, GLint, GLsizei, *mut GLint);
25313
25314/// The prototype to the OpenGL function `GetnUniformuiv`
25315type PFNGLGETNUNIFORMUIVPROC = extern "system" fn(GLuint, GLint, GLsizei, *mut GLuint);
25316
25317/// The prototype to the OpenGL function `ReadnPixels`
25318type PFNGLREADNPIXELSPROC = extern "system" fn(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLsizei, *mut c_void);
25319
25320/// The prototype to the OpenGL function `GetnMapdv`
25321type PFNGLGETNMAPDVPROC = extern "system" fn(GLenum, GLenum, GLsizei, *mut GLdouble);
25322
25323/// The prototype to the OpenGL function `GetnMapfv`
25324type PFNGLGETNMAPFVPROC = extern "system" fn(GLenum, GLenum, GLsizei, *mut GLfloat);
25325
25326/// The prototype to the OpenGL function `GetnMapiv`
25327type PFNGLGETNMAPIVPROC = extern "system" fn(GLenum, GLenum, GLsizei, *mut GLint);
25328
25329/// The prototype to the OpenGL function `GetnPixelMapfv`
25330type PFNGLGETNPIXELMAPFVPROC = extern "system" fn(GLenum, GLsizei, *mut GLfloat);
25331
25332/// The prototype to the OpenGL function `GetnPixelMapuiv`
25333type PFNGLGETNPIXELMAPUIVPROC = extern "system" fn(GLenum, GLsizei, *mut GLuint);
25334
25335/// The prototype to the OpenGL function `GetnPixelMapusv`
25336type PFNGLGETNPIXELMAPUSVPROC = extern "system" fn(GLenum, GLsizei, *mut GLushort);
25337
25338/// The prototype to the OpenGL function `GetnPolygonStipple`
25339type PFNGLGETNPOLYGONSTIPPLEPROC = extern "system" fn(GLsizei, *mut GLubyte);
25340
25341/// The prototype to the OpenGL function `GetnColorTable`
25342type PFNGLGETNCOLORTABLEPROC = extern "system" fn(GLenum, GLenum, GLenum, GLsizei, *mut c_void);
25343
25344/// The prototype to the OpenGL function `GetnConvolutionFilter`
25345type PFNGLGETNCONVOLUTIONFILTERPROC = extern "system" fn(GLenum, GLenum, GLenum, GLsizei, *mut c_void);
25346
25347/// The prototype to the OpenGL function `GetnSeparableFilter`
25348type PFNGLGETNSEPARABLEFILTERPROC = extern "system" fn(GLenum, GLenum, GLenum, GLsizei, *mut c_void, GLsizei, *mut c_void, *mut c_void);
25349
25350/// The prototype to the OpenGL function `GetnHistogram`
25351type PFNGLGETNHISTOGRAMPROC = extern "system" fn(GLenum, GLboolean, GLenum, GLenum, GLsizei, *mut c_void);
25352
25353/// The prototype to the OpenGL function `GetnMinmax`
25354type PFNGLGETNMINMAXPROC = extern "system" fn(GLenum, GLboolean, GLenum, GLenum, GLsizei, *mut c_void);
25355
25356/// The prototype to the OpenGL function `TextureBarrier`
25357type PFNGLTEXTUREBARRIERPROC = extern "system" fn();
25358
25359/// The dummy function of `ClipControl()`
25360extern "system" fn dummy_pfnglclipcontrolproc (_: GLenum, _: GLenum) {
25361	panic!("OpenGL function pointer `glClipControl()` is null.")
25362}
25363
25364/// The dummy function of `CreateTransformFeedbacks()`
25365extern "system" fn dummy_pfnglcreatetransformfeedbacksproc (_: GLsizei, _: *mut GLuint) {
25366	panic!("OpenGL function pointer `glCreateTransformFeedbacks()` is null.")
25367}
25368
25369/// The dummy function of `TransformFeedbackBufferBase()`
25370extern "system" fn dummy_pfngltransformfeedbackbufferbaseproc (_: GLuint, _: GLuint, _: GLuint) {
25371	panic!("OpenGL function pointer `glTransformFeedbackBufferBase()` is null.")
25372}
25373
25374/// The dummy function of `TransformFeedbackBufferRange()`
25375extern "system" fn dummy_pfngltransformfeedbackbufferrangeproc (_: GLuint, _: GLuint, _: GLuint, _: GLintptr, _: GLsizeiptr) {
25376	panic!("OpenGL function pointer `glTransformFeedbackBufferRange()` is null.")
25377}
25378
25379/// The dummy function of `GetTransformFeedbackiv()`
25380extern "system" fn dummy_pfnglgettransformfeedbackivproc (_: GLuint, _: GLenum, _: *mut GLint) {
25381	panic!("OpenGL function pointer `glGetTransformFeedbackiv()` is null.")
25382}
25383
25384/// The dummy function of `GetTransformFeedbacki_v()`
25385extern "system" fn dummy_pfnglgettransformfeedbacki_vproc (_: GLuint, _: GLenum, _: GLuint, _: *mut GLint) {
25386	panic!("OpenGL function pointer `glGetTransformFeedbacki_v()` is null.")
25387}
25388
25389/// The dummy function of `GetTransformFeedbacki64_v()`
25390extern "system" fn dummy_pfnglgettransformfeedbacki64_vproc (_: GLuint, _: GLenum, _: GLuint, _: *mut GLint64) {
25391	panic!("OpenGL function pointer `glGetTransformFeedbacki64_v()` is null.")
25392}
25393
25394/// The dummy function of `CreateBuffers()`
25395extern "system" fn dummy_pfnglcreatebuffersproc (_: GLsizei, _: *mut GLuint) {
25396	panic!("OpenGL function pointer `glCreateBuffers()` is null.")
25397}
25398
25399/// The dummy function of `NamedBufferStorage()`
25400extern "system" fn dummy_pfnglnamedbufferstorageproc (_: GLuint, _: GLsizeiptr, _: *const c_void, _: GLbitfield) {
25401	panic!("OpenGL function pointer `glNamedBufferStorage()` is null.")
25402}
25403
25404/// The dummy function of `NamedBufferData()`
25405extern "system" fn dummy_pfnglnamedbufferdataproc (_: GLuint, _: GLsizeiptr, _: *const c_void, _: GLenum) {
25406	panic!("OpenGL function pointer `glNamedBufferData()` is null.")
25407}
25408
25409/// The dummy function of `NamedBufferSubData()`
25410extern "system" fn dummy_pfnglnamedbuffersubdataproc (_: GLuint, _: GLintptr, _: GLsizeiptr, _: *const c_void) {
25411	panic!("OpenGL function pointer `glNamedBufferSubData()` is null.")
25412}
25413
25414/// The dummy function of `CopyNamedBufferSubData()`
25415extern "system" fn dummy_pfnglcopynamedbuffersubdataproc (_: GLuint, _: GLuint, _: GLintptr, _: GLintptr, _: GLsizeiptr) {
25416	panic!("OpenGL function pointer `glCopyNamedBufferSubData()` is null.")
25417}
25418
25419/// The dummy function of `ClearNamedBufferData()`
25420extern "system" fn dummy_pfnglclearnamedbufferdataproc (_: GLuint, _: GLenum, _: GLenum, _: GLenum, _: *const c_void) {
25421	panic!("OpenGL function pointer `glClearNamedBufferData()` is null.")
25422}
25423
25424/// The dummy function of `ClearNamedBufferSubData()`
25425extern "system" fn dummy_pfnglclearnamedbuffersubdataproc (_: GLuint, _: GLenum, _: GLintptr, _: GLsizeiptr, _: GLenum, _: GLenum, _: *const c_void) {
25426	panic!("OpenGL function pointer `glClearNamedBufferSubData()` is null.")
25427}
25428
25429/// The dummy function of `MapNamedBuffer()`
25430extern "system" fn dummy_pfnglmapnamedbufferproc (_: GLuint, _: GLenum) -> *mut c_void {
25431	panic!("OpenGL function pointer `glMapNamedBuffer()` is null.")
25432}
25433
25434/// The dummy function of `MapNamedBufferRange()`
25435extern "system" fn dummy_pfnglmapnamedbufferrangeproc (_: GLuint, _: GLintptr, _: GLsizeiptr, _: GLbitfield) -> *mut c_void {
25436	panic!("OpenGL function pointer `glMapNamedBufferRange()` is null.")
25437}
25438
25439/// The dummy function of `UnmapNamedBuffer()`
25440extern "system" fn dummy_pfnglunmapnamedbufferproc (_: GLuint) -> GLboolean {
25441	panic!("OpenGL function pointer `glUnmapNamedBuffer()` is null.")
25442}
25443
25444/// The dummy function of `FlushMappedNamedBufferRange()`
25445extern "system" fn dummy_pfnglflushmappednamedbufferrangeproc (_: GLuint, _: GLintptr, _: GLsizeiptr) {
25446	panic!("OpenGL function pointer `glFlushMappedNamedBufferRange()` is null.")
25447}
25448
25449/// The dummy function of `GetNamedBufferParameteriv()`
25450extern "system" fn dummy_pfnglgetnamedbufferparameterivproc (_: GLuint, _: GLenum, _: *mut GLint) {
25451	panic!("OpenGL function pointer `glGetNamedBufferParameteriv()` is null.")
25452}
25453
25454/// The dummy function of `GetNamedBufferParameteri64v()`
25455extern "system" fn dummy_pfnglgetnamedbufferparameteri64vproc (_: GLuint, _: GLenum, _: *mut GLint64) {
25456	panic!("OpenGL function pointer `glGetNamedBufferParameteri64v()` is null.")
25457}
25458
25459/// The dummy function of `GetNamedBufferPointerv()`
25460extern "system" fn dummy_pfnglgetnamedbufferpointervproc (_: GLuint, _: GLenum, _: *mut *mut c_void) {
25461	panic!("OpenGL function pointer `glGetNamedBufferPointerv()` is null.")
25462}
25463
25464/// The dummy function of `GetNamedBufferSubData()`
25465extern "system" fn dummy_pfnglgetnamedbuffersubdataproc (_: GLuint, _: GLintptr, _: GLsizeiptr, _: *mut c_void) {
25466	panic!("OpenGL function pointer `glGetNamedBufferSubData()` is null.")
25467}
25468
25469/// The dummy function of `CreateFramebuffers()`
25470extern "system" fn dummy_pfnglcreateframebuffersproc (_: GLsizei, _: *mut GLuint) {
25471	panic!("OpenGL function pointer `glCreateFramebuffers()` is null.")
25472}
25473
25474/// The dummy function of `NamedFramebufferRenderbuffer()`
25475extern "system" fn dummy_pfnglnamedframebufferrenderbufferproc (_: GLuint, _: GLenum, _: GLenum, _: GLuint) {
25476	panic!("OpenGL function pointer `glNamedFramebufferRenderbuffer()` is null.")
25477}
25478
25479/// The dummy function of `NamedFramebufferParameteri()`
25480extern "system" fn dummy_pfnglnamedframebufferparameteriproc (_: GLuint, _: GLenum, _: GLint) {
25481	panic!("OpenGL function pointer `glNamedFramebufferParameteri()` is null.")
25482}
25483
25484/// The dummy function of `NamedFramebufferTexture()`
25485extern "system" fn dummy_pfnglnamedframebuffertextureproc (_: GLuint, _: GLenum, _: GLuint, _: GLint) {
25486	panic!("OpenGL function pointer `glNamedFramebufferTexture()` is null.")
25487}
25488
25489/// The dummy function of `NamedFramebufferTextureLayer()`
25490extern "system" fn dummy_pfnglnamedframebuffertexturelayerproc (_: GLuint, _: GLenum, _: GLuint, _: GLint, _: GLint) {
25491	panic!("OpenGL function pointer `glNamedFramebufferTextureLayer()` is null.")
25492}
25493
25494/// The dummy function of `NamedFramebufferDrawBuffer()`
25495extern "system" fn dummy_pfnglnamedframebufferdrawbufferproc (_: GLuint, _: GLenum) {
25496	panic!("OpenGL function pointer `glNamedFramebufferDrawBuffer()` is null.")
25497}
25498
25499/// The dummy function of `NamedFramebufferDrawBuffers()`
25500extern "system" fn dummy_pfnglnamedframebufferdrawbuffersproc (_: GLuint, _: GLsizei, _: *const GLenum) {
25501	panic!("OpenGL function pointer `glNamedFramebufferDrawBuffers()` is null.")
25502}
25503
25504/// The dummy function of `NamedFramebufferReadBuffer()`
25505extern "system" fn dummy_pfnglnamedframebufferreadbufferproc (_: GLuint, _: GLenum) {
25506	panic!("OpenGL function pointer `glNamedFramebufferReadBuffer()` is null.")
25507}
25508
25509/// The dummy function of `InvalidateNamedFramebufferData()`
25510extern "system" fn dummy_pfnglinvalidatenamedframebufferdataproc (_: GLuint, _: GLsizei, _: *const GLenum) {
25511	panic!("OpenGL function pointer `glInvalidateNamedFramebufferData()` is null.")
25512}
25513
25514/// The dummy function of `InvalidateNamedFramebufferSubData()`
25515extern "system" fn dummy_pfnglinvalidatenamedframebuffersubdataproc (_: GLuint, _: GLsizei, _: *const GLenum, _: GLint, _: GLint, _: GLsizei, _: GLsizei) {
25516	panic!("OpenGL function pointer `glInvalidateNamedFramebufferSubData()` is null.")
25517}
25518
25519/// The dummy function of `ClearNamedFramebufferiv()`
25520extern "system" fn dummy_pfnglclearnamedframebufferivproc (_: GLuint, _: GLenum, _: GLint, _: *const GLint) {
25521	panic!("OpenGL function pointer `glClearNamedFramebufferiv()` is null.")
25522}
25523
25524/// The dummy function of `ClearNamedFramebufferuiv()`
25525extern "system" fn dummy_pfnglclearnamedframebufferuivproc (_: GLuint, _: GLenum, _: GLint, _: *const GLuint) {
25526	panic!("OpenGL function pointer `glClearNamedFramebufferuiv()` is null.")
25527}
25528
25529/// The dummy function of `ClearNamedFramebufferfv()`
25530extern "system" fn dummy_pfnglclearnamedframebufferfvproc (_: GLuint, _: GLenum, _: GLint, _: *const GLfloat) {
25531	panic!("OpenGL function pointer `glClearNamedFramebufferfv()` is null.")
25532}
25533
25534/// The dummy function of `ClearNamedFramebufferfi()`
25535extern "system" fn dummy_pfnglclearnamedframebufferfiproc (_: GLuint, _: GLenum, _: GLint, _: GLfloat, _: GLint) {
25536	panic!("OpenGL function pointer `glClearNamedFramebufferfi()` is null.")
25537}
25538
25539/// The dummy function of `BlitNamedFramebuffer()`
25540extern "system" fn dummy_pfnglblitnamedframebufferproc (_: GLuint, _: GLuint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLbitfield, _: GLenum) {
25541	panic!("OpenGL function pointer `glBlitNamedFramebuffer()` is null.")
25542}
25543
25544/// The dummy function of `CheckNamedFramebufferStatus()`
25545extern "system" fn dummy_pfnglchecknamedframebufferstatusproc (_: GLuint, _: GLenum) -> GLenum {
25546	panic!("OpenGL function pointer `glCheckNamedFramebufferStatus()` is null.")
25547}
25548
25549/// The dummy function of `GetNamedFramebufferParameteriv()`
25550extern "system" fn dummy_pfnglgetnamedframebufferparameterivproc (_: GLuint, _: GLenum, _: *mut GLint) {
25551	panic!("OpenGL function pointer `glGetNamedFramebufferParameteriv()` is null.")
25552}
25553
25554/// The dummy function of `GetNamedFramebufferAttachmentParameteriv()`
25555extern "system" fn dummy_pfnglgetnamedframebufferattachmentparameterivproc (_: GLuint, _: GLenum, _: GLenum, _: *mut GLint) {
25556	panic!("OpenGL function pointer `glGetNamedFramebufferAttachmentParameteriv()` is null.")
25557}
25558
25559/// The dummy function of `CreateRenderbuffers()`
25560extern "system" fn dummy_pfnglcreaterenderbuffersproc (_: GLsizei, _: *mut GLuint) {
25561	panic!("OpenGL function pointer `glCreateRenderbuffers()` is null.")
25562}
25563
25564/// The dummy function of `NamedRenderbufferStorage()`
25565extern "system" fn dummy_pfnglnamedrenderbufferstorageproc (_: GLuint, _: GLenum, _: GLsizei, _: GLsizei) {
25566	panic!("OpenGL function pointer `glNamedRenderbufferStorage()` is null.")
25567}
25568
25569/// The dummy function of `NamedRenderbufferStorageMultisample()`
25570extern "system" fn dummy_pfnglnamedrenderbufferstoragemultisampleproc (_: GLuint, _: GLsizei, _: GLenum, _: GLsizei, _: GLsizei) {
25571	panic!("OpenGL function pointer `glNamedRenderbufferStorageMultisample()` is null.")
25572}
25573
25574/// The dummy function of `GetNamedRenderbufferParameteriv()`
25575extern "system" fn dummy_pfnglgetnamedrenderbufferparameterivproc (_: GLuint, _: GLenum, _: *mut GLint) {
25576	panic!("OpenGL function pointer `glGetNamedRenderbufferParameteriv()` is null.")
25577}
25578
25579/// The dummy function of `CreateTextures()`
25580extern "system" fn dummy_pfnglcreatetexturesproc (_: GLenum, _: GLsizei, _: *mut GLuint) {
25581	panic!("OpenGL function pointer `glCreateTextures()` is null.")
25582}
25583
25584/// The dummy function of `TextureBuffer()`
25585extern "system" fn dummy_pfngltexturebufferproc (_: GLuint, _: GLenum, _: GLuint) {
25586	panic!("OpenGL function pointer `glTextureBuffer()` is null.")
25587}
25588
25589/// The dummy function of `TextureBufferRange()`
25590extern "system" fn dummy_pfngltexturebufferrangeproc (_: GLuint, _: GLenum, _: GLuint, _: GLintptr, _: GLsizeiptr) {
25591	panic!("OpenGL function pointer `glTextureBufferRange()` is null.")
25592}
25593
25594/// The dummy function of `TextureStorage1D()`
25595extern "system" fn dummy_pfngltexturestorage1dproc (_: GLuint, _: GLsizei, _: GLenum, _: GLsizei) {
25596	panic!("OpenGL function pointer `glTextureStorage1D()` is null.")
25597}
25598
25599/// The dummy function of `TextureStorage2D()`
25600extern "system" fn dummy_pfngltexturestorage2dproc (_: GLuint, _: GLsizei, _: GLenum, _: GLsizei, _: GLsizei) {
25601	panic!("OpenGL function pointer `glTextureStorage2D()` is null.")
25602}
25603
25604/// The dummy function of `TextureStorage3D()`
25605extern "system" fn dummy_pfngltexturestorage3dproc (_: GLuint, _: GLsizei, _: GLenum, _: GLsizei, _: GLsizei, _: GLsizei) {
25606	panic!("OpenGL function pointer `glTextureStorage3D()` is null.")
25607}
25608
25609/// The dummy function of `TextureStorage2DMultisample()`
25610extern "system" fn dummy_pfngltexturestorage2dmultisampleproc (_: GLuint, _: GLsizei, _: GLenum, _: GLsizei, _: GLsizei, _: GLboolean) {
25611	panic!("OpenGL function pointer `glTextureStorage2DMultisample()` is null.")
25612}
25613
25614/// The dummy function of `TextureStorage3DMultisample()`
25615extern "system" fn dummy_pfngltexturestorage3dmultisampleproc (_: GLuint, _: GLsizei, _: GLenum, _: GLsizei, _: GLsizei, _: GLsizei, _: GLboolean) {
25616	panic!("OpenGL function pointer `glTextureStorage3DMultisample()` is null.")
25617}
25618
25619/// The dummy function of `TextureSubImage1D()`
25620extern "system" fn dummy_pfngltexturesubimage1dproc (_: GLuint, _: GLint, _: GLint, _: GLsizei, _: GLenum, _: GLenum, _: *const c_void) {
25621	panic!("OpenGL function pointer `glTextureSubImage1D()` is null.")
25622}
25623
25624/// The dummy function of `TextureSubImage2D()`
25625extern "system" fn dummy_pfngltexturesubimage2dproc (_: GLuint, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLenum, _: GLenum, _: *const c_void) {
25626	panic!("OpenGL function pointer `glTextureSubImage2D()` is null.")
25627}
25628
25629/// The dummy function of `TextureSubImage3D()`
25630extern "system" fn dummy_pfngltexturesubimage3dproc (_: GLuint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLsizei, _: GLenum, _: GLenum, _: *const c_void) {
25631	panic!("OpenGL function pointer `glTextureSubImage3D()` is null.")
25632}
25633
25634/// The dummy function of `CompressedTextureSubImage1D()`
25635extern "system" fn dummy_pfnglcompressedtexturesubimage1dproc (_: GLuint, _: GLint, _: GLint, _: GLsizei, _: GLenum, _: GLsizei, _: *const c_void) {
25636	panic!("OpenGL function pointer `glCompressedTextureSubImage1D()` is null.")
25637}
25638
25639/// The dummy function of `CompressedTextureSubImage2D()`
25640extern "system" fn dummy_pfnglcompressedtexturesubimage2dproc (_: GLuint, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLenum, _: GLsizei, _: *const c_void) {
25641	panic!("OpenGL function pointer `glCompressedTextureSubImage2D()` is null.")
25642}
25643
25644/// The dummy function of `CompressedTextureSubImage3D()`
25645extern "system" fn dummy_pfnglcompressedtexturesubimage3dproc (_: GLuint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLsizei, _: GLenum, _: GLsizei, _: *const c_void) {
25646	panic!("OpenGL function pointer `glCompressedTextureSubImage3D()` is null.")
25647}
25648
25649/// The dummy function of `CopyTextureSubImage1D()`
25650extern "system" fn dummy_pfnglcopytexturesubimage1dproc (_: GLuint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLsizei) {
25651	panic!("OpenGL function pointer `glCopyTextureSubImage1D()` is null.")
25652}
25653
25654/// The dummy function of `CopyTextureSubImage2D()`
25655extern "system" fn dummy_pfnglcopytexturesubimage2dproc (_: GLuint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei) {
25656	panic!("OpenGL function pointer `glCopyTextureSubImage2D()` is null.")
25657}
25658
25659/// The dummy function of `CopyTextureSubImage3D()`
25660extern "system" fn dummy_pfnglcopytexturesubimage3dproc (_: GLuint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei) {
25661	panic!("OpenGL function pointer `glCopyTextureSubImage3D()` is null.")
25662}
25663
25664/// The dummy function of `TextureParameterf()`
25665extern "system" fn dummy_pfngltextureparameterfproc (_: GLuint, _: GLenum, _: GLfloat) {
25666	panic!("OpenGL function pointer `glTextureParameterf()` is null.")
25667}
25668
25669/// The dummy function of `TextureParameterfv()`
25670extern "system" fn dummy_pfngltextureparameterfvproc (_: GLuint, _: GLenum, _: *const GLfloat) {
25671	panic!("OpenGL function pointer `glTextureParameterfv()` is null.")
25672}
25673
25674/// The dummy function of `TextureParameteri()`
25675extern "system" fn dummy_pfngltextureparameteriproc (_: GLuint, _: GLenum, _: GLint) {
25676	panic!("OpenGL function pointer `glTextureParameteri()` is null.")
25677}
25678
25679/// The dummy function of `TextureParameterIiv()`
25680extern "system" fn dummy_pfngltextureparameteriivproc (_: GLuint, _: GLenum, _: *const GLint) {
25681	panic!("OpenGL function pointer `glTextureParameterIiv()` is null.")
25682}
25683
25684/// The dummy function of `TextureParameterIuiv()`
25685extern "system" fn dummy_pfngltextureparameteriuivproc (_: GLuint, _: GLenum, _: *const GLuint) {
25686	panic!("OpenGL function pointer `glTextureParameterIuiv()` is null.")
25687}
25688
25689/// The dummy function of `TextureParameteriv()`
25690extern "system" fn dummy_pfngltextureparameterivproc (_: GLuint, _: GLenum, _: *const GLint) {
25691	panic!("OpenGL function pointer `glTextureParameteriv()` is null.")
25692}
25693
25694/// The dummy function of `GenerateTextureMipmap()`
25695extern "system" fn dummy_pfnglgeneratetexturemipmapproc (_: GLuint) {
25696	panic!("OpenGL function pointer `glGenerateTextureMipmap()` is null.")
25697}
25698
25699/// The dummy function of `BindTextureUnit()`
25700extern "system" fn dummy_pfnglbindtextureunitproc (_: GLuint, _: GLuint) {
25701	panic!("OpenGL function pointer `glBindTextureUnit()` is null.")
25702}
25703
25704/// The dummy function of `GetTextureImage()`
25705extern "system" fn dummy_pfnglgettextureimageproc (_: GLuint, _: GLint, _: GLenum, _: GLenum, _: GLsizei, _: *mut c_void) {
25706	panic!("OpenGL function pointer `glGetTextureImage()` is null.")
25707}
25708
25709/// The dummy function of `GetCompressedTextureImage()`
25710extern "system" fn dummy_pfnglgetcompressedtextureimageproc (_: GLuint, _: GLint, _: GLsizei, _: *mut c_void) {
25711	panic!("OpenGL function pointer `glGetCompressedTextureImage()` is null.")
25712}
25713
25714/// The dummy function of `GetTextureLevelParameterfv()`
25715extern "system" fn dummy_pfnglgettexturelevelparameterfvproc (_: GLuint, _: GLint, _: GLenum, _: *mut GLfloat) {
25716	panic!("OpenGL function pointer `glGetTextureLevelParameterfv()` is null.")
25717}
25718
25719/// The dummy function of `GetTextureLevelParameteriv()`
25720extern "system" fn dummy_pfnglgettexturelevelparameterivproc (_: GLuint, _: GLint, _: GLenum, _: *mut GLint) {
25721	panic!("OpenGL function pointer `glGetTextureLevelParameteriv()` is null.")
25722}
25723
25724/// The dummy function of `GetTextureParameterfv()`
25725extern "system" fn dummy_pfnglgettextureparameterfvproc (_: GLuint, _: GLenum, _: *mut GLfloat) {
25726	panic!("OpenGL function pointer `glGetTextureParameterfv()` is null.")
25727}
25728
25729/// The dummy function of `GetTextureParameterIiv()`
25730extern "system" fn dummy_pfnglgettextureparameteriivproc (_: GLuint, _: GLenum, _: *mut GLint) {
25731	panic!("OpenGL function pointer `glGetTextureParameterIiv()` is null.")
25732}
25733
25734/// The dummy function of `GetTextureParameterIuiv()`
25735extern "system" fn dummy_pfnglgettextureparameteriuivproc (_: GLuint, _: GLenum, _: *mut GLuint) {
25736	panic!("OpenGL function pointer `glGetTextureParameterIuiv()` is null.")
25737}
25738
25739/// The dummy function of `GetTextureParameteriv()`
25740extern "system" fn dummy_pfnglgettextureparameterivproc (_: GLuint, _: GLenum, _: *mut GLint) {
25741	panic!("OpenGL function pointer `glGetTextureParameteriv()` is null.")
25742}
25743
25744/// The dummy function of `CreateVertexArrays()`
25745extern "system" fn dummy_pfnglcreatevertexarraysproc (_: GLsizei, _: *mut GLuint) {
25746	panic!("OpenGL function pointer `glCreateVertexArrays()` is null.")
25747}
25748
25749/// The dummy function of `DisableVertexArrayAttrib()`
25750extern "system" fn dummy_pfngldisablevertexarrayattribproc (_: GLuint, _: GLuint) {
25751	panic!("OpenGL function pointer `glDisableVertexArrayAttrib()` is null.")
25752}
25753
25754/// The dummy function of `EnableVertexArrayAttrib()`
25755extern "system" fn dummy_pfnglenablevertexarrayattribproc (_: GLuint, _: GLuint) {
25756	panic!("OpenGL function pointer `glEnableVertexArrayAttrib()` is null.")
25757}
25758
25759/// The dummy function of `VertexArrayElementBuffer()`
25760extern "system" fn dummy_pfnglvertexarrayelementbufferproc (_: GLuint, _: GLuint) {
25761	panic!("OpenGL function pointer `glVertexArrayElementBuffer()` is null.")
25762}
25763
25764/// The dummy function of `VertexArrayVertexBuffer()`
25765extern "system" fn dummy_pfnglvertexarrayvertexbufferproc (_: GLuint, _: GLuint, _: GLuint, _: GLintptr, _: GLsizei) {
25766	panic!("OpenGL function pointer `glVertexArrayVertexBuffer()` is null.")
25767}
25768
25769/// The dummy function of `VertexArrayVertexBuffers()`
25770extern "system" fn dummy_pfnglvertexarrayvertexbuffersproc (_: GLuint, _: GLuint, _: GLsizei, _: *const GLuint, _: *const GLintptr, _: *const GLsizei) {
25771	panic!("OpenGL function pointer `glVertexArrayVertexBuffers()` is null.")
25772}
25773
25774/// The dummy function of `VertexArrayAttribBinding()`
25775extern "system" fn dummy_pfnglvertexarrayattribbindingproc (_: GLuint, _: GLuint, _: GLuint) {
25776	panic!("OpenGL function pointer `glVertexArrayAttribBinding()` is null.")
25777}
25778
25779/// The dummy function of `VertexArrayAttribFormat()`
25780extern "system" fn dummy_pfnglvertexarrayattribformatproc (_: GLuint, _: GLuint, _: GLint, _: GLenum, _: GLboolean, _: GLuint) {
25781	panic!("OpenGL function pointer `glVertexArrayAttribFormat()` is null.")
25782}
25783
25784/// The dummy function of `VertexArrayAttribIFormat()`
25785extern "system" fn dummy_pfnglvertexarrayattribiformatproc (_: GLuint, _: GLuint, _: GLint, _: GLenum, _: GLuint) {
25786	panic!("OpenGL function pointer `glVertexArrayAttribIFormat()` is null.")
25787}
25788
25789/// The dummy function of `VertexArrayAttribLFormat()`
25790extern "system" fn dummy_pfnglvertexarrayattriblformatproc (_: GLuint, _: GLuint, _: GLint, _: GLenum, _: GLuint) {
25791	panic!("OpenGL function pointer `glVertexArrayAttribLFormat()` is null.")
25792}
25793
25794/// The dummy function of `VertexArrayBindingDivisor()`
25795extern "system" fn dummy_pfnglvertexarraybindingdivisorproc (_: GLuint, _: GLuint, _: GLuint) {
25796	panic!("OpenGL function pointer `glVertexArrayBindingDivisor()` is null.")
25797}
25798
25799/// The dummy function of `GetVertexArrayiv()`
25800extern "system" fn dummy_pfnglgetvertexarrayivproc (_: GLuint, _: GLenum, _: *mut GLint) {
25801	panic!("OpenGL function pointer `glGetVertexArrayiv()` is null.")
25802}
25803
25804/// The dummy function of `GetVertexArrayIndexediv()`
25805extern "system" fn dummy_pfnglgetvertexarrayindexedivproc (_: GLuint, _: GLuint, _: GLenum, _: *mut GLint) {
25806	panic!("OpenGL function pointer `glGetVertexArrayIndexediv()` is null.")
25807}
25808
25809/// The dummy function of `GetVertexArrayIndexed64iv()`
25810extern "system" fn dummy_pfnglgetvertexarrayindexed64ivproc (_: GLuint, _: GLuint, _: GLenum, _: *mut GLint64) {
25811	panic!("OpenGL function pointer `glGetVertexArrayIndexed64iv()` is null.")
25812}
25813
25814/// The dummy function of `CreateSamplers()`
25815extern "system" fn dummy_pfnglcreatesamplersproc (_: GLsizei, _: *mut GLuint) {
25816	panic!("OpenGL function pointer `glCreateSamplers()` is null.")
25817}
25818
25819/// The dummy function of `CreateProgramPipelines()`
25820extern "system" fn dummy_pfnglcreateprogrampipelinesproc (_: GLsizei, _: *mut GLuint) {
25821	panic!("OpenGL function pointer `glCreateProgramPipelines()` is null.")
25822}
25823
25824/// The dummy function of `CreateQueries()`
25825extern "system" fn dummy_pfnglcreatequeriesproc (_: GLenum, _: GLsizei, _: *mut GLuint) {
25826	panic!("OpenGL function pointer `glCreateQueries()` is null.")
25827}
25828
25829/// The dummy function of `GetQueryBufferObjecti64v()`
25830extern "system" fn dummy_pfnglgetquerybufferobjecti64vproc (_: GLuint, _: GLuint, _: GLenum, _: GLintptr) {
25831	panic!("OpenGL function pointer `glGetQueryBufferObjecti64v()` is null.")
25832}
25833
25834/// The dummy function of `GetQueryBufferObjectiv()`
25835extern "system" fn dummy_pfnglgetquerybufferobjectivproc (_: GLuint, _: GLuint, _: GLenum, _: GLintptr) {
25836	panic!("OpenGL function pointer `glGetQueryBufferObjectiv()` is null.")
25837}
25838
25839/// The dummy function of `GetQueryBufferObjectui64v()`
25840extern "system" fn dummy_pfnglgetquerybufferobjectui64vproc (_: GLuint, _: GLuint, _: GLenum, _: GLintptr) {
25841	panic!("OpenGL function pointer `glGetQueryBufferObjectui64v()` is null.")
25842}
25843
25844/// The dummy function of `GetQueryBufferObjectuiv()`
25845extern "system" fn dummy_pfnglgetquerybufferobjectuivproc (_: GLuint, _: GLuint, _: GLenum, _: GLintptr) {
25846	panic!("OpenGL function pointer `glGetQueryBufferObjectuiv()` is null.")
25847}
25848
25849/// The dummy function of `MemoryBarrierByRegion()`
25850extern "system" fn dummy_pfnglmemorybarrierbyregionproc (_: GLbitfield) {
25851	panic!("OpenGL function pointer `glMemoryBarrierByRegion()` is null.")
25852}
25853
25854/// The dummy function of `GetTextureSubImage()`
25855extern "system" fn dummy_pfnglgettexturesubimageproc (_: GLuint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLsizei, _: GLenum, _: GLenum, _: GLsizei, _: *mut c_void) {
25856	panic!("OpenGL function pointer `glGetTextureSubImage()` is null.")
25857}
25858
25859/// The dummy function of `GetCompressedTextureSubImage()`
25860extern "system" fn dummy_pfnglgetcompressedtexturesubimageproc (_: GLuint, _: GLint, _: GLint, _: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLsizei, _: GLsizei, _: *mut c_void) {
25861	panic!("OpenGL function pointer `glGetCompressedTextureSubImage()` is null.")
25862}
25863
25864/// The dummy function of `GetGraphicsResetStatus()`
25865extern "system" fn dummy_pfnglgetgraphicsresetstatusproc () -> GLenum {
25866	panic!("OpenGL function pointer `glGetGraphicsResetStatus()` is null.")
25867}
25868
25869/// The dummy function of `GetnCompressedTexImage()`
25870extern "system" fn dummy_pfnglgetncompressedteximageproc (_: GLenum, _: GLint, _: GLsizei, _: *mut c_void) {
25871	panic!("OpenGL function pointer `glGetnCompressedTexImage()` is null.")
25872}
25873
25874/// The dummy function of `GetnTexImage()`
25875extern "system" fn dummy_pfnglgetnteximageproc (_: GLenum, _: GLint, _: GLenum, _: GLenum, _: GLsizei, _: *mut c_void) {
25876	panic!("OpenGL function pointer `glGetnTexImage()` is null.")
25877}
25878
25879/// The dummy function of `GetnUniformdv()`
25880extern "system" fn dummy_pfnglgetnuniformdvproc (_: GLuint, _: GLint, _: GLsizei, _: *mut GLdouble) {
25881	panic!("OpenGL function pointer `glGetnUniformdv()` is null.")
25882}
25883
25884/// The dummy function of `GetnUniformfv()`
25885extern "system" fn dummy_pfnglgetnuniformfvproc (_: GLuint, _: GLint, _: GLsizei, _: *mut GLfloat) {
25886	panic!("OpenGL function pointer `glGetnUniformfv()` is null.")
25887}
25888
25889/// The dummy function of `GetnUniformiv()`
25890extern "system" fn dummy_pfnglgetnuniformivproc (_: GLuint, _: GLint, _: GLsizei, _: *mut GLint) {
25891	panic!("OpenGL function pointer `glGetnUniformiv()` is null.")
25892}
25893
25894/// The dummy function of `GetnUniformuiv()`
25895extern "system" fn dummy_pfnglgetnuniformuivproc (_: GLuint, _: GLint, _: GLsizei, _: *mut GLuint) {
25896	panic!("OpenGL function pointer `glGetnUniformuiv()` is null.")
25897}
25898
25899/// The dummy function of `ReadnPixels()`
25900extern "system" fn dummy_pfnglreadnpixelsproc (_: GLint, _: GLint, _: GLsizei, _: GLsizei, _: GLenum, _: GLenum, _: GLsizei, _: *mut c_void) {
25901	panic!("OpenGL function pointer `glReadnPixels()` is null.")
25902}
25903
25904/// The dummy function of `GetnMapdv()`
25905extern "system" fn dummy_pfnglgetnmapdvproc (_: GLenum, _: GLenum, _: GLsizei, _: *mut GLdouble) {
25906	panic!("OpenGL function pointer `glGetnMapdv()` is null.")
25907}
25908
25909/// The dummy function of `GetnMapfv()`
25910extern "system" fn dummy_pfnglgetnmapfvproc (_: GLenum, _: GLenum, _: GLsizei, _: *mut GLfloat) {
25911	panic!("OpenGL function pointer `glGetnMapfv()` is null.")
25912}
25913
25914/// The dummy function of `GetnMapiv()`
25915extern "system" fn dummy_pfnglgetnmapivproc (_: GLenum, _: GLenum, _: GLsizei, _: *mut GLint) {
25916	panic!("OpenGL function pointer `glGetnMapiv()` is null.")
25917}
25918
25919/// The dummy function of `GetnPixelMapfv()`
25920extern "system" fn dummy_pfnglgetnpixelmapfvproc (_: GLenum, _: GLsizei, _: *mut GLfloat) {
25921	panic!("OpenGL function pointer `glGetnPixelMapfv()` is null.")
25922}
25923
25924/// The dummy function of `GetnPixelMapuiv()`
25925extern "system" fn dummy_pfnglgetnpixelmapuivproc (_: GLenum, _: GLsizei, _: *mut GLuint) {
25926	panic!("OpenGL function pointer `glGetnPixelMapuiv()` is null.")
25927}
25928
25929/// The dummy function of `GetnPixelMapusv()`
25930extern "system" fn dummy_pfnglgetnpixelmapusvproc (_: GLenum, _: GLsizei, _: *mut GLushort) {
25931	panic!("OpenGL function pointer `glGetnPixelMapusv()` is null.")
25932}
25933
25934/// The dummy function of `GetnPolygonStipple()`
25935extern "system" fn dummy_pfnglgetnpolygonstippleproc (_: GLsizei, _: *mut GLubyte) {
25936	panic!("OpenGL function pointer `glGetnPolygonStipple()` is null.")
25937}
25938
25939/// The dummy function of `GetnColorTable()`
25940extern "system" fn dummy_pfnglgetncolortableproc (_: GLenum, _: GLenum, _: GLenum, _: GLsizei, _: *mut c_void) {
25941	panic!("OpenGL function pointer `glGetnColorTable()` is null.")
25942}
25943
25944/// The dummy function of `GetnConvolutionFilter()`
25945extern "system" fn dummy_pfnglgetnconvolutionfilterproc (_: GLenum, _: GLenum, _: GLenum, _: GLsizei, _: *mut c_void) {
25946	panic!("OpenGL function pointer `glGetnConvolutionFilter()` is null.")
25947}
25948
25949/// The dummy function of `GetnSeparableFilter()`
25950extern "system" fn dummy_pfnglgetnseparablefilterproc (_: GLenum, _: GLenum, _: GLenum, _: GLsizei, _: *mut c_void, _: GLsizei, _: *mut c_void, _: *mut c_void) {
25951	panic!("OpenGL function pointer `glGetnSeparableFilter()` is null.")
25952}
25953
25954/// The dummy function of `GetnHistogram()`
25955extern "system" fn dummy_pfnglgetnhistogramproc (_: GLenum, _: GLboolean, _: GLenum, _: GLenum, _: GLsizei, _: *mut c_void) {
25956	panic!("OpenGL function pointer `glGetnHistogram()` is null.")
25957}
25958
25959/// The dummy function of `GetnMinmax()`
25960extern "system" fn dummy_pfnglgetnminmaxproc (_: GLenum, _: GLboolean, _: GLenum, _: GLenum, _: GLsizei, _: *mut c_void) {
25961	panic!("OpenGL function pointer `glGetnMinmax()` is null.")
25962}
25963
25964/// The dummy function of `TextureBarrier()`
25965extern "system" fn dummy_pfngltexturebarrierproc () {
25966	panic!("OpenGL function pointer `glTextureBarrier()` is null.")
25967}
25968/// Constant value defined from OpenGL 4.5
25969pub const GL_CONTEXT_LOST: GLenum = 0x0507;
25970
25971/// Constant value defined from OpenGL 4.5
25972pub const GL_NEGATIVE_ONE_TO_ONE: GLenum = 0x935E;
25973
25974/// Constant value defined from OpenGL 4.5
25975pub const GL_ZERO_TO_ONE: GLenum = 0x935F;
25976
25977/// Constant value defined from OpenGL 4.5
25978pub const GL_CLIP_ORIGIN: GLenum = 0x935C;
25979
25980/// Constant value defined from OpenGL 4.5
25981pub const GL_CLIP_DEPTH_MODE: GLenum = 0x935D;
25982
25983/// Constant value defined from OpenGL 4.5
25984pub const GL_QUERY_WAIT_INVERTED: GLenum = 0x8E17;
25985
25986/// Constant value defined from OpenGL 4.5
25987pub const GL_QUERY_NO_WAIT_INVERTED: GLenum = 0x8E18;
25988
25989/// Constant value defined from OpenGL 4.5
25990pub const GL_QUERY_BY_REGION_WAIT_INVERTED: GLenum = 0x8E19;
25991
25992/// Constant value defined from OpenGL 4.5
25993pub const GL_QUERY_BY_REGION_NO_WAIT_INVERTED: GLenum = 0x8E1A;
25994
25995/// Constant value defined from OpenGL 4.5
25996pub const GL_MAX_CULL_DISTANCES: GLenum = 0x82F9;
25997
25998/// Constant value defined from OpenGL 4.5
25999pub const GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES: GLenum = 0x82FA;
26000
26001/// Constant value defined from OpenGL 4.5
26002pub const GL_TEXTURE_TARGET: GLenum = 0x1006;
26003
26004/// Constant value defined from OpenGL 4.5
26005pub const GL_QUERY_TARGET: GLenum = 0x82EA;
26006
26007/// Constant value defined from OpenGL 4.5
26008pub const GL_GUILTY_CONTEXT_RESET: GLenum = 0x8253;
26009
26010/// Constant value defined from OpenGL 4.5
26011pub const GL_INNOCENT_CONTEXT_RESET: GLenum = 0x8254;
26012
26013/// Constant value defined from OpenGL 4.5
26014pub const GL_UNKNOWN_CONTEXT_RESET: GLenum = 0x8255;
26015
26016/// Constant value defined from OpenGL 4.5
26017pub const GL_RESET_NOTIFICATION_STRATEGY: GLenum = 0x8256;
26018
26019/// Constant value defined from OpenGL 4.5
26020pub const GL_LOSE_CONTEXT_ON_RESET: GLenum = 0x8252;
26021
26022/// Constant value defined from OpenGL 4.5
26023pub const GL_NO_RESET_NOTIFICATION: GLenum = 0x8261;
26024
26025/// Constant value defined from OpenGL 4.5
26026pub const GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT: GLbitfield = 0x00000004;
26027
26028/// Constant value defined from OpenGL 4.5
26029pub const GL_COLOR_TABLE: GLenum = 0x80D0;
26030
26031/// Constant value defined from OpenGL 4.5
26032pub const GL_POST_CONVOLUTION_COLOR_TABLE: GLenum = 0x80D1;
26033
26034/// Constant value defined from OpenGL 4.5
26035pub const GL_POST_COLOR_MATRIX_COLOR_TABLE: GLenum = 0x80D2;
26036
26037/// Constant value defined from OpenGL 4.5
26038pub const GL_PROXY_COLOR_TABLE: GLenum = 0x80D3;
26039
26040/// Constant value defined from OpenGL 4.5
26041pub const GL_PROXY_POST_CONVOLUTION_COLOR_TABLE: GLenum = 0x80D4;
26042
26043/// Constant value defined from OpenGL 4.5
26044pub const GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE: GLenum = 0x80D5;
26045
26046/// Constant value defined from OpenGL 4.5
26047pub const GL_CONVOLUTION_1D: GLenum = 0x8010;
26048
26049/// Constant value defined from OpenGL 4.5
26050pub const GL_CONVOLUTION_2D: GLenum = 0x8011;
26051
26052/// Constant value defined from OpenGL 4.5
26053pub const GL_SEPARABLE_2D: GLenum = 0x8012;
26054
26055/// Constant value defined from OpenGL 4.5
26056pub const GL_HISTOGRAM: GLenum = 0x8024;
26057
26058/// Constant value defined from OpenGL 4.5
26059pub const GL_PROXY_HISTOGRAM: GLenum = 0x8025;
26060
26061/// Constant value defined from OpenGL 4.5
26062pub const GL_MINMAX: GLenum = 0x802E;
26063
26064/// Constant value defined from OpenGL 4.5
26065pub const GL_CONTEXT_RELEASE_BEHAVIOR: GLenum = 0x82FB;
26066
26067/// Constant value defined from OpenGL 4.5
26068pub const GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH: GLenum = 0x82FC;
26069
26070/// Functions from OpenGL version 4.5
26071pub trait GL_4_5 {
26072	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
26073	fn glGetError(&self) -> GLenum;
26074
26075	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClipControl.xhtml>
26076	fn glClipControl(&self, origin: GLenum, depth: GLenum) -> Result<()>;
26077
26078	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateTransformFeedbacks.xhtml>
26079	fn glCreateTransformFeedbacks(&self, n: GLsizei, ids: *mut GLuint) -> Result<()>;
26080
26081	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTransformFeedbackBufferBase.xhtml>
26082	fn glTransformFeedbackBufferBase(&self, xfb: GLuint, index: GLuint, buffer: GLuint) -> Result<()>;
26083
26084	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTransformFeedbackBufferRange.xhtml>
26085	fn glTransformFeedbackBufferRange(&self, xfb: GLuint, index: GLuint, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()>;
26086
26087	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTransformFeedbackiv.xhtml>
26088	fn glGetTransformFeedbackiv(&self, xfb: GLuint, pname: GLenum, param: *mut GLint) -> Result<()>;
26089
26090	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTransformFeedbacki_v.xhtml>
26091	fn glGetTransformFeedbacki_v(&self, xfb: GLuint, pname: GLenum, index: GLuint, param: *mut GLint) -> Result<()>;
26092
26093	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTransformFeedbacki64_v.xhtml>
26094	fn glGetTransformFeedbacki64_v(&self, xfb: GLuint, pname: GLenum, index: GLuint, param: *mut GLint64) -> Result<()>;
26095
26096	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateBuffers.xhtml>
26097	fn glCreateBuffers(&self, n: GLsizei, buffers: *mut GLuint) -> Result<()>;
26098
26099	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedBufferStorage.xhtml>
26100	fn glNamedBufferStorage(&self, buffer: GLuint, size: GLsizeiptr, data: *const c_void, flags: GLbitfield) -> Result<()>;
26101
26102	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedBufferData.xhtml>
26103	fn glNamedBufferData(&self, buffer: GLuint, size: GLsizeiptr, data: *const c_void, usage: GLenum) -> Result<()>;
26104
26105	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedBufferSubData.xhtml>
26106	fn glNamedBufferSubData(&self, buffer: GLuint, offset: GLintptr, size: GLsizeiptr, data: *const c_void) -> Result<()>;
26107
26108	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyNamedBufferSubData.xhtml>
26109	fn glCopyNamedBufferSubData(&self, readBuffer: GLuint, writeBuffer: GLuint, readOffset: GLintptr, writeOffset: GLintptr, size: GLsizeiptr) -> Result<()>;
26110
26111	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedBufferData.xhtml>
26112	fn glClearNamedBufferData(&self, buffer: GLuint, internalformat: GLenum, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()>;
26113
26114	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedBufferSubData.xhtml>
26115	fn glClearNamedBufferSubData(&self, buffer: GLuint, internalformat: GLenum, offset: GLintptr, size: GLsizeiptr, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()>;
26116
26117	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMapNamedBuffer.xhtml>
26118	fn glMapNamedBuffer(&self, buffer: GLuint, access: GLenum) -> Result<*mut c_void>;
26119
26120	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMapNamedBufferRange.xhtml>
26121	fn glMapNamedBufferRange(&self, buffer: GLuint, offset: GLintptr, length: GLsizeiptr, access: GLbitfield) -> Result<*mut c_void>;
26122
26123	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUnmapNamedBuffer.xhtml>
26124	fn glUnmapNamedBuffer(&self, buffer: GLuint) -> Result<GLboolean>;
26125
26126	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFlushMappedNamedBufferRange.xhtml>
26127	fn glFlushMappedNamedBufferRange(&self, buffer: GLuint, offset: GLintptr, length: GLsizeiptr) -> Result<()>;
26128
26129	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedBufferParameteriv.xhtml>
26130	fn glGetNamedBufferParameteriv(&self, buffer: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
26131
26132	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedBufferParameteri64v.xhtml>
26133	fn glGetNamedBufferParameteri64v(&self, buffer: GLuint, pname: GLenum, params: *mut GLint64) -> Result<()>;
26134
26135	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedBufferPointerv.xhtml>
26136	fn glGetNamedBufferPointerv(&self, buffer: GLuint, pname: GLenum, params: *mut *mut c_void) -> Result<()>;
26137
26138	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedBufferSubData.xhtml>
26139	fn glGetNamedBufferSubData(&self, buffer: GLuint, offset: GLintptr, size: GLsizeiptr, data: *mut c_void) -> Result<()>;
26140
26141	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateFramebuffers.xhtml>
26142	fn glCreateFramebuffers(&self, n: GLsizei, framebuffers: *mut GLuint) -> Result<()>;
26143
26144	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferRenderbuffer.xhtml>
26145	fn glNamedFramebufferRenderbuffer(&self, framebuffer: GLuint, attachment: GLenum, renderbuffertarget: GLenum, renderbuffer: GLuint) -> Result<()>;
26146
26147	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferParameteri.xhtml>
26148	fn glNamedFramebufferParameteri(&self, framebuffer: GLuint, pname: GLenum, param: GLint) -> Result<()>;
26149
26150	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferTexture.xhtml>
26151	fn glNamedFramebufferTexture(&self, framebuffer: GLuint, attachment: GLenum, texture: GLuint, level: GLint) -> Result<()>;
26152
26153	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferTextureLayer.xhtml>
26154	fn glNamedFramebufferTextureLayer(&self, framebuffer: GLuint, attachment: GLenum, texture: GLuint, level: GLint, layer: GLint) -> Result<()>;
26155
26156	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferDrawBuffer.xhtml>
26157	fn glNamedFramebufferDrawBuffer(&self, framebuffer: GLuint, buf: GLenum) -> Result<()>;
26158
26159	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferDrawBuffers.xhtml>
26160	fn glNamedFramebufferDrawBuffers(&self, framebuffer: GLuint, n: GLsizei, bufs: *const GLenum) -> Result<()>;
26161
26162	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferReadBuffer.xhtml>
26163	fn glNamedFramebufferReadBuffer(&self, framebuffer: GLuint, src: GLenum) -> Result<()>;
26164
26165	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateNamedFramebufferData.xhtml>
26166	fn glInvalidateNamedFramebufferData(&self, framebuffer: GLuint, numAttachments: GLsizei, attachments: *const GLenum) -> Result<()>;
26167
26168	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateNamedFramebufferSubData.xhtml>
26169	fn glInvalidateNamedFramebufferSubData(&self, framebuffer: GLuint, numAttachments: GLsizei, attachments: *const GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
26170
26171	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedFramebufferiv.xhtml>
26172	fn glClearNamedFramebufferiv(&self, framebuffer: GLuint, buffer: GLenum, drawbuffer: GLint, value: *const GLint) -> Result<()>;
26173
26174	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedFramebufferuiv.xhtml>
26175	fn glClearNamedFramebufferuiv(&self, framebuffer: GLuint, buffer: GLenum, drawbuffer: GLint, value: *const GLuint) -> Result<()>;
26176
26177	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedFramebufferfv.xhtml>
26178	fn glClearNamedFramebufferfv(&self, framebuffer: GLuint, buffer: GLenum, drawbuffer: GLint, value: *const GLfloat) -> Result<()>;
26179
26180	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedFramebufferfi.xhtml>
26181	fn glClearNamedFramebufferfi(&self, framebuffer: GLuint, buffer: GLenum, drawbuffer: GLint, depth: GLfloat, stencil: GLint) -> Result<()>;
26182
26183	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlitNamedFramebuffer.xhtml>
26184	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<()>;
26185
26186	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCheckNamedFramebufferStatus.xhtml>
26187	fn glCheckNamedFramebufferStatus(&self, framebuffer: GLuint, target: GLenum) -> Result<GLenum>;
26188
26189	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedFramebufferParameteriv.xhtml>
26190	fn glGetNamedFramebufferParameteriv(&self, framebuffer: GLuint, pname: GLenum, param: *mut GLint) -> Result<()>;
26191
26192	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedFramebufferAttachmentParameteriv.xhtml>
26193	fn glGetNamedFramebufferAttachmentParameteriv(&self, framebuffer: GLuint, attachment: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
26194
26195	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateRenderbuffers.xhtml>
26196	fn glCreateRenderbuffers(&self, n: GLsizei, renderbuffers: *mut GLuint) -> Result<()>;
26197
26198	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedRenderbufferStorage.xhtml>
26199	fn glNamedRenderbufferStorage(&self, renderbuffer: GLuint, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()>;
26200
26201	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedRenderbufferStorageMultisample.xhtml>
26202	fn glNamedRenderbufferStorageMultisample(&self, renderbuffer: GLuint, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()>;
26203
26204	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedRenderbufferParameteriv.xhtml>
26205	fn glGetNamedRenderbufferParameteriv(&self, renderbuffer: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
26206
26207	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateTextures.xhtml>
26208	fn glCreateTextures(&self, target: GLenum, n: GLsizei, textures: *mut GLuint) -> Result<()>;
26209
26210	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureBuffer.xhtml>
26211	fn glTextureBuffer(&self, texture: GLuint, internalformat: GLenum, buffer: GLuint) -> Result<()>;
26212
26213	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureBufferRange.xhtml>
26214	fn glTextureBufferRange(&self, texture: GLuint, internalformat: GLenum, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()>;
26215
26216	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureStorage1D.xhtml>
26217	fn glTextureStorage1D(&self, texture: GLuint, levels: GLsizei, internalformat: GLenum, width: GLsizei) -> Result<()>;
26218
26219	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureStorage2D.xhtml>
26220	fn glTextureStorage2D(&self, texture: GLuint, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()>;
26221
26222	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureStorage3D.xhtml>
26223	fn glTextureStorage3D(&self, texture: GLuint, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei) -> Result<()>;
26224
26225	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureStorage2DMultisample.xhtml>
26226	fn glTextureStorage2DMultisample(&self, texture: GLuint, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, fixedsamplelocations: GLboolean) -> Result<()>;
26227
26228	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureStorage3DMultisample.xhtml>
26229	fn glTextureStorage3DMultisample(&self, texture: GLuint, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, fixedsamplelocations: GLboolean) -> Result<()>;
26230
26231	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureSubImage1D.xhtml>
26232	fn glTextureSubImage1D(&self, texture: GLuint, level: GLint, xoffset: GLint, width: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
26233
26234	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureSubImage2D.xhtml>
26235	fn glTextureSubImage2D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
26236
26237	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureSubImage3D.xhtml>
26238	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<()>;
26239
26240	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTextureSubImage1D.xhtml>
26241	fn glCompressedTextureSubImage1D(&self, texture: GLuint, level: GLint, xoffset: GLint, width: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()>;
26242
26243	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTextureSubImage2D.xhtml>
26244	fn glCompressedTextureSubImage2D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()>;
26245
26246	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTextureSubImage3D.xhtml>
26247	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<()>;
26248
26249	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTextureSubImage1D.xhtml>
26250	fn glCopyTextureSubImage1D(&self, texture: GLuint, level: GLint, xoffset: GLint, x: GLint, y: GLint, width: GLsizei) -> Result<()>;
26251
26252	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTextureSubImage2D.xhtml>
26253	fn glCopyTextureSubImage2D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
26254
26255	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTextureSubImage3D.xhtml>
26256	fn glCopyTextureSubImage3D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
26257
26258	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameterf.xhtml>
26259	fn glTextureParameterf(&self, texture: GLuint, pname: GLenum, param: GLfloat) -> Result<()>;
26260
26261	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameterfv.xhtml>
26262	fn glTextureParameterfv(&self, texture: GLuint, pname: GLenum, param: *const GLfloat) -> Result<()>;
26263
26264	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameteri.xhtml>
26265	fn glTextureParameteri(&self, texture: GLuint, pname: GLenum, param: GLint) -> Result<()>;
26266
26267	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameterIiv.xhtml>
26268	fn glTextureParameterIiv(&self, texture: GLuint, pname: GLenum, params: *const GLint) -> Result<()>;
26269
26270	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameterIuiv.xhtml>
26271	fn glTextureParameterIuiv(&self, texture: GLuint, pname: GLenum, params: *const GLuint) -> Result<()>;
26272
26273	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameteriv.xhtml>
26274	fn glTextureParameteriv(&self, texture: GLuint, pname: GLenum, param: *const GLint) -> Result<()>;
26275
26276	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenerateTextureMipmap.xhtml>
26277	fn glGenerateTextureMipmap(&self, texture: GLuint) -> Result<()>;
26278
26279	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindTextureUnit.xhtml>
26280	fn glBindTextureUnit(&self, unit: GLuint, texture: GLuint) -> Result<()>;
26281
26282	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureImage.xhtml>
26283	fn glGetTextureImage(&self, texture: GLuint, level: GLint, format: GLenum, type_: GLenum, bufSize: GLsizei, pixels: *mut c_void) -> Result<()>;
26284
26285	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetCompressedTextureImage.xhtml>
26286	fn glGetCompressedTextureImage(&self, texture: GLuint, level: GLint, bufSize: GLsizei, pixels: *mut c_void) -> Result<()>;
26287
26288	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureLevelParameterfv.xhtml>
26289	fn glGetTextureLevelParameterfv(&self, texture: GLuint, level: GLint, pname: GLenum, params: *mut GLfloat) -> Result<()>;
26290
26291	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureLevelParameteriv.xhtml>
26292	fn glGetTextureLevelParameteriv(&self, texture: GLuint, level: GLint, pname: GLenum, params: *mut GLint) -> Result<()>;
26293
26294	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureParameterfv.xhtml>
26295	fn glGetTextureParameterfv(&self, texture: GLuint, pname: GLenum, params: *mut GLfloat) -> Result<()>;
26296
26297	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureParameterIiv.xhtml>
26298	fn glGetTextureParameterIiv(&self, texture: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
26299
26300	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureParameterIuiv.xhtml>
26301	fn glGetTextureParameterIuiv(&self, texture: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()>;
26302
26303	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureParameteriv.xhtml>
26304	fn glGetTextureParameteriv(&self, texture: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
26305
26306	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateVertexArrays.xhtml>
26307	fn glCreateVertexArrays(&self, n: GLsizei, arrays: *mut GLuint) -> Result<()>;
26308
26309	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDisableVertexArrayAttrib.xhtml>
26310	fn glDisableVertexArrayAttrib(&self, vaobj: GLuint, index: GLuint) -> Result<()>;
26311
26312	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEnableVertexArrayAttrib.xhtml>
26313	fn glEnableVertexArrayAttrib(&self, vaobj: GLuint, index: GLuint) -> Result<()>;
26314
26315	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayElementBuffer.xhtml>
26316	fn glVertexArrayElementBuffer(&self, vaobj: GLuint, buffer: GLuint) -> Result<()>;
26317
26318	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayVertexBuffer.xhtml>
26319	fn glVertexArrayVertexBuffer(&self, vaobj: GLuint, bindingindex: GLuint, buffer: GLuint, offset: GLintptr, stride: GLsizei) -> Result<()>;
26320
26321	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayVertexBuffers.xhtml>
26322	fn glVertexArrayVertexBuffers(&self, vaobj: GLuint, first: GLuint, count: GLsizei, buffers: *const GLuint, offsets: *const GLintptr, strides: *const GLsizei) -> Result<()>;
26323
26324	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayAttribBinding.xhtml>
26325	fn glVertexArrayAttribBinding(&self, vaobj: GLuint, attribindex: GLuint, bindingindex: GLuint) -> Result<()>;
26326
26327	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayAttribFormat.xhtml>
26328	fn glVertexArrayAttribFormat(&self, vaobj: GLuint, attribindex: GLuint, size: GLint, type_: GLenum, normalized: GLboolean, relativeoffset: GLuint) -> Result<()>;
26329
26330	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayAttribIFormat.xhtml>
26331	fn glVertexArrayAttribIFormat(&self, vaobj: GLuint, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()>;
26332
26333	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayAttribLFormat.xhtml>
26334	fn glVertexArrayAttribLFormat(&self, vaobj: GLuint, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()>;
26335
26336	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayBindingDivisor.xhtml>
26337	fn glVertexArrayBindingDivisor(&self, vaobj: GLuint, bindingindex: GLuint, divisor: GLuint) -> Result<()>;
26338
26339	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexArrayiv.xhtml>
26340	fn glGetVertexArrayiv(&self, vaobj: GLuint, pname: GLenum, param: *mut GLint) -> Result<()>;
26341
26342	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexArrayIndexediv.xhtml>
26343	fn glGetVertexArrayIndexediv(&self, vaobj: GLuint, index: GLuint, pname: GLenum, param: *mut GLint) -> Result<()>;
26344
26345	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexArrayIndexed64iv.xhtml>
26346	fn glGetVertexArrayIndexed64iv(&self, vaobj: GLuint, index: GLuint, pname: GLenum, param: *mut GLint64) -> Result<()>;
26347
26348	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateSamplers.xhtml>
26349	fn glCreateSamplers(&self, n: GLsizei, samplers: *mut GLuint) -> Result<()>;
26350
26351	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateProgramPipelines.xhtml>
26352	fn glCreateProgramPipelines(&self, n: GLsizei, pipelines: *mut GLuint) -> Result<()>;
26353
26354	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateQueries.xhtml>
26355	fn glCreateQueries(&self, target: GLenum, n: GLsizei, ids: *mut GLuint) -> Result<()>;
26356
26357	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryBufferObjecti64v.xhtml>
26358	fn glGetQueryBufferObjecti64v(&self, id: GLuint, buffer: GLuint, pname: GLenum, offset: GLintptr) -> Result<()>;
26359
26360	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryBufferObjectiv.xhtml>
26361	fn glGetQueryBufferObjectiv(&self, id: GLuint, buffer: GLuint, pname: GLenum, offset: GLintptr) -> Result<()>;
26362
26363	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryBufferObjectui64v.xhtml>
26364	fn glGetQueryBufferObjectui64v(&self, id: GLuint, buffer: GLuint, pname: GLenum, offset: GLintptr) -> Result<()>;
26365
26366	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryBufferObjectuiv.xhtml>
26367	fn glGetQueryBufferObjectuiv(&self, id: GLuint, buffer: GLuint, pname: GLenum, offset: GLintptr) -> Result<()>;
26368
26369	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMemoryBarrierByRegion.xhtml>
26370	fn glMemoryBarrierByRegion(&self, barriers: GLbitfield) -> Result<()>;
26371
26372	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureSubImage.xhtml>
26373	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<()>;
26374
26375	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetCompressedTextureSubImage.xhtml>
26376	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<()>;
26377
26378	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetGraphicsResetStatus.xhtml>
26379	fn glGetGraphicsResetStatus(&self) -> Result<GLenum>;
26380
26381	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnCompressedTexImage.xhtml>
26382	fn glGetnCompressedTexImage(&self, target: GLenum, lod: GLint, bufSize: GLsizei, pixels: *mut c_void) -> Result<()>;
26383
26384	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnTexImage.xhtml>
26385	fn glGetnTexImage(&self, target: GLenum, level: GLint, format: GLenum, type_: GLenum, bufSize: GLsizei, pixels: *mut c_void) -> Result<()>;
26386
26387	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnUniformdv.xhtml>
26388	fn glGetnUniformdv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLdouble) -> Result<()>;
26389
26390	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnUniformfv.xhtml>
26391	fn glGetnUniformfv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLfloat) -> Result<()>;
26392
26393	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnUniformiv.xhtml>
26394	fn glGetnUniformiv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLint) -> Result<()>;
26395
26396	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnUniformuiv.xhtml>
26397	fn glGetnUniformuiv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLuint) -> Result<()>;
26398
26399	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glReadnPixels.xhtml>
26400	fn glReadnPixels(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, bufSize: GLsizei, data: *mut c_void) -> Result<()>;
26401
26402	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnMapdv.xhtml>
26403	fn glGetnMapdv(&self, target: GLenum, query: GLenum, bufSize: GLsizei, v: *mut GLdouble) -> Result<()>;
26404
26405	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnMapfv.xhtml>
26406	fn glGetnMapfv(&self, target: GLenum, query: GLenum, bufSize: GLsizei, v: *mut GLfloat) -> Result<()>;
26407
26408	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnMapiv.xhtml>
26409	fn glGetnMapiv(&self, target: GLenum, query: GLenum, bufSize: GLsizei, v: *mut GLint) -> Result<()>;
26410
26411	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnPixelMapfv.xhtml>
26412	fn glGetnPixelMapfv(&self, map: GLenum, bufSize: GLsizei, values: *mut GLfloat) -> Result<()>;
26413
26414	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnPixelMapuiv.xhtml>
26415	fn glGetnPixelMapuiv(&self, map: GLenum, bufSize: GLsizei, values: *mut GLuint) -> Result<()>;
26416
26417	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnPixelMapusv.xhtml>
26418	fn glGetnPixelMapusv(&self, map: GLenum, bufSize: GLsizei, values: *mut GLushort) -> Result<()>;
26419
26420	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnPolygonStipple.xhtml>
26421	fn glGetnPolygonStipple(&self, bufSize: GLsizei, pattern: *mut GLubyte) -> Result<()>;
26422
26423	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnColorTable.xhtml>
26424	fn glGetnColorTable(&self, target: GLenum, format: GLenum, type_: GLenum, bufSize: GLsizei, table: *mut c_void) -> Result<()>;
26425
26426	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnConvolutionFilter.xhtml>
26427	fn glGetnConvolutionFilter(&self, target: GLenum, format: GLenum, type_: GLenum, bufSize: GLsizei, image: *mut c_void) -> Result<()>;
26428
26429	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnSeparableFilter.xhtml>
26430	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<()>;
26431
26432	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnHistogram.xhtml>
26433	fn glGetnHistogram(&self, target: GLenum, reset: GLboolean, format: GLenum, type_: GLenum, bufSize: GLsizei, values: *mut c_void) -> Result<()>;
26434
26435	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnMinmax.xhtml>
26436	fn glGetnMinmax(&self, target: GLenum, reset: GLboolean, format: GLenum, type_: GLenum, bufSize: GLsizei, values: *mut c_void) -> Result<()>;
26437
26438	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureBarrier.xhtml>
26439	fn glTextureBarrier(&self) -> Result<()>;
26440}
26441/// Functions from OpenGL version 4.5
26442#[derive(Clone, Copy, PartialEq, Eq, Hash)]
26443pub struct Version45 {
26444	/// Is OpenGL version 4.5 available
26445	available: bool,
26446
26447	/// The function pointer to `glGetError()`
26448	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
26449	pub geterror: PFNGLGETERRORPROC,
26450
26451	/// The function pointer to `glClipControl()`
26452	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClipControl.xhtml>
26453	pub clipcontrol: PFNGLCLIPCONTROLPROC,
26454
26455	/// The function pointer to `glCreateTransformFeedbacks()`
26456	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateTransformFeedbacks.xhtml>
26457	pub createtransformfeedbacks: PFNGLCREATETRANSFORMFEEDBACKSPROC,
26458
26459	/// The function pointer to `glTransformFeedbackBufferBase()`
26460	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTransformFeedbackBufferBase.xhtml>
26461	pub transformfeedbackbufferbase: PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC,
26462
26463	/// The function pointer to `glTransformFeedbackBufferRange()`
26464	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTransformFeedbackBufferRange.xhtml>
26465	pub transformfeedbackbufferrange: PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC,
26466
26467	/// The function pointer to `glGetTransformFeedbackiv()`
26468	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTransformFeedbackiv.xhtml>
26469	pub gettransformfeedbackiv: PFNGLGETTRANSFORMFEEDBACKIVPROC,
26470
26471	/// The function pointer to `glGetTransformFeedbacki_v()`
26472	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTransformFeedbacki_v.xhtml>
26473	pub gettransformfeedbacki_v: PFNGLGETTRANSFORMFEEDBACKI_VPROC,
26474
26475	/// The function pointer to `glGetTransformFeedbacki64_v()`
26476	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTransformFeedbacki64_v.xhtml>
26477	pub gettransformfeedbacki64_v: PFNGLGETTRANSFORMFEEDBACKI64_VPROC,
26478
26479	/// The function pointer to `glCreateBuffers()`
26480	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateBuffers.xhtml>
26481	pub createbuffers: PFNGLCREATEBUFFERSPROC,
26482
26483	/// The function pointer to `glNamedBufferStorage()`
26484	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedBufferStorage.xhtml>
26485	pub namedbufferstorage: PFNGLNAMEDBUFFERSTORAGEPROC,
26486
26487	/// The function pointer to `glNamedBufferData()`
26488	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedBufferData.xhtml>
26489	pub namedbufferdata: PFNGLNAMEDBUFFERDATAPROC,
26490
26491	/// The function pointer to `glNamedBufferSubData()`
26492	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedBufferSubData.xhtml>
26493	pub namedbuffersubdata: PFNGLNAMEDBUFFERSUBDATAPROC,
26494
26495	/// The function pointer to `glCopyNamedBufferSubData()`
26496	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyNamedBufferSubData.xhtml>
26497	pub copynamedbuffersubdata: PFNGLCOPYNAMEDBUFFERSUBDATAPROC,
26498
26499	/// The function pointer to `glClearNamedBufferData()`
26500	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedBufferData.xhtml>
26501	pub clearnamedbufferdata: PFNGLCLEARNAMEDBUFFERDATAPROC,
26502
26503	/// The function pointer to `glClearNamedBufferSubData()`
26504	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedBufferSubData.xhtml>
26505	pub clearnamedbuffersubdata: PFNGLCLEARNAMEDBUFFERSUBDATAPROC,
26506
26507	/// The function pointer to `glMapNamedBuffer()`
26508	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMapNamedBuffer.xhtml>
26509	pub mapnamedbuffer: PFNGLMAPNAMEDBUFFERPROC,
26510
26511	/// The function pointer to `glMapNamedBufferRange()`
26512	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMapNamedBufferRange.xhtml>
26513	pub mapnamedbufferrange: PFNGLMAPNAMEDBUFFERRANGEPROC,
26514
26515	/// The function pointer to `glUnmapNamedBuffer()`
26516	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUnmapNamedBuffer.xhtml>
26517	pub unmapnamedbuffer: PFNGLUNMAPNAMEDBUFFERPROC,
26518
26519	/// The function pointer to `glFlushMappedNamedBufferRange()`
26520	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFlushMappedNamedBufferRange.xhtml>
26521	pub flushmappednamedbufferrange: PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC,
26522
26523	/// The function pointer to `glGetNamedBufferParameteriv()`
26524	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedBufferParameteriv.xhtml>
26525	pub getnamedbufferparameteriv: PFNGLGETNAMEDBUFFERPARAMETERIVPROC,
26526
26527	/// The function pointer to `glGetNamedBufferParameteri64v()`
26528	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedBufferParameteri64v.xhtml>
26529	pub getnamedbufferparameteri64v: PFNGLGETNAMEDBUFFERPARAMETERI64VPROC,
26530
26531	/// The function pointer to `glGetNamedBufferPointerv()`
26532	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedBufferPointerv.xhtml>
26533	pub getnamedbufferpointerv: PFNGLGETNAMEDBUFFERPOINTERVPROC,
26534
26535	/// The function pointer to `glGetNamedBufferSubData()`
26536	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedBufferSubData.xhtml>
26537	pub getnamedbuffersubdata: PFNGLGETNAMEDBUFFERSUBDATAPROC,
26538
26539	/// The function pointer to `glCreateFramebuffers()`
26540	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateFramebuffers.xhtml>
26541	pub createframebuffers: PFNGLCREATEFRAMEBUFFERSPROC,
26542
26543	/// The function pointer to `glNamedFramebufferRenderbuffer()`
26544	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferRenderbuffer.xhtml>
26545	pub namedframebufferrenderbuffer: PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC,
26546
26547	/// The function pointer to `glNamedFramebufferParameteri()`
26548	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferParameteri.xhtml>
26549	pub namedframebufferparameteri: PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC,
26550
26551	/// The function pointer to `glNamedFramebufferTexture()`
26552	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferTexture.xhtml>
26553	pub namedframebuffertexture: PFNGLNAMEDFRAMEBUFFERTEXTUREPROC,
26554
26555	/// The function pointer to `glNamedFramebufferTextureLayer()`
26556	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferTextureLayer.xhtml>
26557	pub namedframebuffertexturelayer: PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC,
26558
26559	/// The function pointer to `glNamedFramebufferDrawBuffer()`
26560	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferDrawBuffer.xhtml>
26561	pub namedframebufferdrawbuffer: PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC,
26562
26563	/// The function pointer to `glNamedFramebufferDrawBuffers()`
26564	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferDrawBuffers.xhtml>
26565	pub namedframebufferdrawbuffers: PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC,
26566
26567	/// The function pointer to `glNamedFramebufferReadBuffer()`
26568	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferReadBuffer.xhtml>
26569	pub namedframebufferreadbuffer: PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC,
26570
26571	/// The function pointer to `glInvalidateNamedFramebufferData()`
26572	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateNamedFramebufferData.xhtml>
26573	pub invalidatenamedframebufferdata: PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC,
26574
26575	/// The function pointer to `glInvalidateNamedFramebufferSubData()`
26576	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateNamedFramebufferSubData.xhtml>
26577	pub invalidatenamedframebuffersubdata: PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC,
26578
26579	/// The function pointer to `glClearNamedFramebufferiv()`
26580	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedFramebufferiv.xhtml>
26581	pub clearnamedframebufferiv: PFNGLCLEARNAMEDFRAMEBUFFERIVPROC,
26582
26583	/// The function pointer to `glClearNamedFramebufferuiv()`
26584	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedFramebufferuiv.xhtml>
26585	pub clearnamedframebufferuiv: PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC,
26586
26587	/// The function pointer to `glClearNamedFramebufferfv()`
26588	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedFramebufferfv.xhtml>
26589	pub clearnamedframebufferfv: PFNGLCLEARNAMEDFRAMEBUFFERFVPROC,
26590
26591	/// The function pointer to `glClearNamedFramebufferfi()`
26592	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedFramebufferfi.xhtml>
26593	pub clearnamedframebufferfi: PFNGLCLEARNAMEDFRAMEBUFFERFIPROC,
26594
26595	/// The function pointer to `glBlitNamedFramebuffer()`
26596	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlitNamedFramebuffer.xhtml>
26597	pub blitnamedframebuffer: PFNGLBLITNAMEDFRAMEBUFFERPROC,
26598
26599	/// The function pointer to `glCheckNamedFramebufferStatus()`
26600	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCheckNamedFramebufferStatus.xhtml>
26601	pub checknamedframebufferstatus: PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC,
26602
26603	/// The function pointer to `glGetNamedFramebufferParameteriv()`
26604	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedFramebufferParameteriv.xhtml>
26605	pub getnamedframebufferparameteriv: PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC,
26606
26607	/// The function pointer to `glGetNamedFramebufferAttachmentParameteriv()`
26608	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedFramebufferAttachmentParameteriv.xhtml>
26609	pub getnamedframebufferattachmentparameteriv: PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC,
26610
26611	/// The function pointer to `glCreateRenderbuffers()`
26612	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateRenderbuffers.xhtml>
26613	pub createrenderbuffers: PFNGLCREATERENDERBUFFERSPROC,
26614
26615	/// The function pointer to `glNamedRenderbufferStorage()`
26616	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedRenderbufferStorage.xhtml>
26617	pub namedrenderbufferstorage: PFNGLNAMEDRENDERBUFFERSTORAGEPROC,
26618
26619	/// The function pointer to `glNamedRenderbufferStorageMultisample()`
26620	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedRenderbufferStorageMultisample.xhtml>
26621	pub namedrenderbufferstoragemultisample: PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC,
26622
26623	/// The function pointer to `glGetNamedRenderbufferParameteriv()`
26624	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedRenderbufferParameteriv.xhtml>
26625	pub getnamedrenderbufferparameteriv: PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC,
26626
26627	/// The function pointer to `glCreateTextures()`
26628	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateTextures.xhtml>
26629	pub createtextures: PFNGLCREATETEXTURESPROC,
26630
26631	/// The function pointer to `glTextureBuffer()`
26632	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureBuffer.xhtml>
26633	pub texturebuffer: PFNGLTEXTUREBUFFERPROC,
26634
26635	/// The function pointer to `glTextureBufferRange()`
26636	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureBufferRange.xhtml>
26637	pub texturebufferrange: PFNGLTEXTUREBUFFERRANGEPROC,
26638
26639	/// The function pointer to `glTextureStorage1D()`
26640	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureStorage1D.xhtml>
26641	pub texturestorage1d: PFNGLTEXTURESTORAGE1DPROC,
26642
26643	/// The function pointer to `glTextureStorage2D()`
26644	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureStorage2D.xhtml>
26645	pub texturestorage2d: PFNGLTEXTURESTORAGE2DPROC,
26646
26647	/// The function pointer to `glTextureStorage3D()`
26648	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureStorage3D.xhtml>
26649	pub texturestorage3d: PFNGLTEXTURESTORAGE3DPROC,
26650
26651	/// The function pointer to `glTextureStorage2DMultisample()`
26652	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureStorage2DMultisample.xhtml>
26653	pub texturestorage2dmultisample: PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC,
26654
26655	/// The function pointer to `glTextureStorage3DMultisample()`
26656	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureStorage3DMultisample.xhtml>
26657	pub texturestorage3dmultisample: PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC,
26658
26659	/// The function pointer to `glTextureSubImage1D()`
26660	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureSubImage1D.xhtml>
26661	pub texturesubimage1d: PFNGLTEXTURESUBIMAGE1DPROC,
26662
26663	/// The function pointer to `glTextureSubImage2D()`
26664	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureSubImage2D.xhtml>
26665	pub texturesubimage2d: PFNGLTEXTURESUBIMAGE2DPROC,
26666
26667	/// The function pointer to `glTextureSubImage3D()`
26668	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureSubImage3D.xhtml>
26669	pub texturesubimage3d: PFNGLTEXTURESUBIMAGE3DPROC,
26670
26671	/// The function pointer to `glCompressedTextureSubImage1D()`
26672	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTextureSubImage1D.xhtml>
26673	pub compressedtexturesubimage1d: PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC,
26674
26675	/// The function pointer to `glCompressedTextureSubImage2D()`
26676	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTextureSubImage2D.xhtml>
26677	pub compressedtexturesubimage2d: PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC,
26678
26679	/// The function pointer to `glCompressedTextureSubImage3D()`
26680	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTextureSubImage3D.xhtml>
26681	pub compressedtexturesubimage3d: PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC,
26682
26683	/// The function pointer to `glCopyTextureSubImage1D()`
26684	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTextureSubImage1D.xhtml>
26685	pub copytexturesubimage1d: PFNGLCOPYTEXTURESUBIMAGE1DPROC,
26686
26687	/// The function pointer to `glCopyTextureSubImage2D()`
26688	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTextureSubImage2D.xhtml>
26689	pub copytexturesubimage2d: PFNGLCOPYTEXTURESUBIMAGE2DPROC,
26690
26691	/// The function pointer to `glCopyTextureSubImage3D()`
26692	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTextureSubImage3D.xhtml>
26693	pub copytexturesubimage3d: PFNGLCOPYTEXTURESUBIMAGE3DPROC,
26694
26695	/// The function pointer to `glTextureParameterf()`
26696	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameterf.xhtml>
26697	pub textureparameterf: PFNGLTEXTUREPARAMETERFPROC,
26698
26699	/// The function pointer to `glTextureParameterfv()`
26700	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameterfv.xhtml>
26701	pub textureparameterfv: PFNGLTEXTUREPARAMETERFVPROC,
26702
26703	/// The function pointer to `glTextureParameteri()`
26704	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameteri.xhtml>
26705	pub textureparameteri: PFNGLTEXTUREPARAMETERIPROC,
26706
26707	/// The function pointer to `glTextureParameterIiv()`
26708	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameterIiv.xhtml>
26709	pub textureparameteriiv: PFNGLTEXTUREPARAMETERIIVPROC,
26710
26711	/// The function pointer to `glTextureParameterIuiv()`
26712	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameterIuiv.xhtml>
26713	pub textureparameteriuiv: PFNGLTEXTUREPARAMETERIUIVPROC,
26714
26715	/// The function pointer to `glTextureParameteriv()`
26716	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameteriv.xhtml>
26717	pub textureparameteriv: PFNGLTEXTUREPARAMETERIVPROC,
26718
26719	/// The function pointer to `glGenerateTextureMipmap()`
26720	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenerateTextureMipmap.xhtml>
26721	pub generatetexturemipmap: PFNGLGENERATETEXTUREMIPMAPPROC,
26722
26723	/// The function pointer to `glBindTextureUnit()`
26724	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindTextureUnit.xhtml>
26725	pub bindtextureunit: PFNGLBINDTEXTUREUNITPROC,
26726
26727	/// The function pointer to `glGetTextureImage()`
26728	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureImage.xhtml>
26729	pub gettextureimage: PFNGLGETTEXTUREIMAGEPROC,
26730
26731	/// The function pointer to `glGetCompressedTextureImage()`
26732	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetCompressedTextureImage.xhtml>
26733	pub getcompressedtextureimage: PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC,
26734
26735	/// The function pointer to `glGetTextureLevelParameterfv()`
26736	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureLevelParameterfv.xhtml>
26737	pub gettexturelevelparameterfv: PFNGLGETTEXTURELEVELPARAMETERFVPROC,
26738
26739	/// The function pointer to `glGetTextureLevelParameteriv()`
26740	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureLevelParameteriv.xhtml>
26741	pub gettexturelevelparameteriv: PFNGLGETTEXTURELEVELPARAMETERIVPROC,
26742
26743	/// The function pointer to `glGetTextureParameterfv()`
26744	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureParameterfv.xhtml>
26745	pub gettextureparameterfv: PFNGLGETTEXTUREPARAMETERFVPROC,
26746
26747	/// The function pointer to `glGetTextureParameterIiv()`
26748	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureParameterIiv.xhtml>
26749	pub gettextureparameteriiv: PFNGLGETTEXTUREPARAMETERIIVPROC,
26750
26751	/// The function pointer to `glGetTextureParameterIuiv()`
26752	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureParameterIuiv.xhtml>
26753	pub gettextureparameteriuiv: PFNGLGETTEXTUREPARAMETERIUIVPROC,
26754
26755	/// The function pointer to `glGetTextureParameteriv()`
26756	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureParameteriv.xhtml>
26757	pub gettextureparameteriv: PFNGLGETTEXTUREPARAMETERIVPROC,
26758
26759	/// The function pointer to `glCreateVertexArrays()`
26760	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateVertexArrays.xhtml>
26761	pub createvertexarrays: PFNGLCREATEVERTEXARRAYSPROC,
26762
26763	/// The function pointer to `glDisableVertexArrayAttrib()`
26764	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDisableVertexArrayAttrib.xhtml>
26765	pub disablevertexarrayattrib: PFNGLDISABLEVERTEXARRAYATTRIBPROC,
26766
26767	/// The function pointer to `glEnableVertexArrayAttrib()`
26768	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEnableVertexArrayAttrib.xhtml>
26769	pub enablevertexarrayattrib: PFNGLENABLEVERTEXARRAYATTRIBPROC,
26770
26771	/// The function pointer to `glVertexArrayElementBuffer()`
26772	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayElementBuffer.xhtml>
26773	pub vertexarrayelementbuffer: PFNGLVERTEXARRAYELEMENTBUFFERPROC,
26774
26775	/// The function pointer to `glVertexArrayVertexBuffer()`
26776	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayVertexBuffer.xhtml>
26777	pub vertexarrayvertexbuffer: PFNGLVERTEXARRAYVERTEXBUFFERPROC,
26778
26779	/// The function pointer to `glVertexArrayVertexBuffers()`
26780	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayVertexBuffers.xhtml>
26781	pub vertexarrayvertexbuffers: PFNGLVERTEXARRAYVERTEXBUFFERSPROC,
26782
26783	/// The function pointer to `glVertexArrayAttribBinding()`
26784	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayAttribBinding.xhtml>
26785	pub vertexarrayattribbinding: PFNGLVERTEXARRAYATTRIBBINDINGPROC,
26786
26787	/// The function pointer to `glVertexArrayAttribFormat()`
26788	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayAttribFormat.xhtml>
26789	pub vertexarrayattribformat: PFNGLVERTEXARRAYATTRIBFORMATPROC,
26790
26791	/// The function pointer to `glVertexArrayAttribIFormat()`
26792	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayAttribIFormat.xhtml>
26793	pub vertexarrayattribiformat: PFNGLVERTEXARRAYATTRIBIFORMATPROC,
26794
26795	/// The function pointer to `glVertexArrayAttribLFormat()`
26796	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayAttribLFormat.xhtml>
26797	pub vertexarrayattriblformat: PFNGLVERTEXARRAYATTRIBLFORMATPROC,
26798
26799	/// The function pointer to `glVertexArrayBindingDivisor()`
26800	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayBindingDivisor.xhtml>
26801	pub vertexarraybindingdivisor: PFNGLVERTEXARRAYBINDINGDIVISORPROC,
26802
26803	/// The function pointer to `glGetVertexArrayiv()`
26804	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexArrayiv.xhtml>
26805	pub getvertexarrayiv: PFNGLGETVERTEXARRAYIVPROC,
26806
26807	/// The function pointer to `glGetVertexArrayIndexediv()`
26808	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexArrayIndexediv.xhtml>
26809	pub getvertexarrayindexediv: PFNGLGETVERTEXARRAYINDEXEDIVPROC,
26810
26811	/// The function pointer to `glGetVertexArrayIndexed64iv()`
26812	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexArrayIndexed64iv.xhtml>
26813	pub getvertexarrayindexed64iv: PFNGLGETVERTEXARRAYINDEXED64IVPROC,
26814
26815	/// The function pointer to `glCreateSamplers()`
26816	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateSamplers.xhtml>
26817	pub createsamplers: PFNGLCREATESAMPLERSPROC,
26818
26819	/// The function pointer to `glCreateProgramPipelines()`
26820	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateProgramPipelines.xhtml>
26821	pub createprogrampipelines: PFNGLCREATEPROGRAMPIPELINESPROC,
26822
26823	/// The function pointer to `glCreateQueries()`
26824	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateQueries.xhtml>
26825	pub createqueries: PFNGLCREATEQUERIESPROC,
26826
26827	/// The function pointer to `glGetQueryBufferObjecti64v()`
26828	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryBufferObjecti64v.xhtml>
26829	pub getquerybufferobjecti64v: PFNGLGETQUERYBUFFEROBJECTI64VPROC,
26830
26831	/// The function pointer to `glGetQueryBufferObjectiv()`
26832	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryBufferObjectiv.xhtml>
26833	pub getquerybufferobjectiv: PFNGLGETQUERYBUFFEROBJECTIVPROC,
26834
26835	/// The function pointer to `glGetQueryBufferObjectui64v()`
26836	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryBufferObjectui64v.xhtml>
26837	pub getquerybufferobjectui64v: PFNGLGETQUERYBUFFEROBJECTUI64VPROC,
26838
26839	/// The function pointer to `glGetQueryBufferObjectuiv()`
26840	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryBufferObjectuiv.xhtml>
26841	pub getquerybufferobjectuiv: PFNGLGETQUERYBUFFEROBJECTUIVPROC,
26842
26843	/// The function pointer to `glMemoryBarrierByRegion()`
26844	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMemoryBarrierByRegion.xhtml>
26845	pub memorybarrierbyregion: PFNGLMEMORYBARRIERBYREGIONPROC,
26846
26847	/// The function pointer to `glGetTextureSubImage()`
26848	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureSubImage.xhtml>
26849	pub gettexturesubimage: PFNGLGETTEXTURESUBIMAGEPROC,
26850
26851	/// The function pointer to `glGetCompressedTextureSubImage()`
26852	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetCompressedTextureSubImage.xhtml>
26853	pub getcompressedtexturesubimage: PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC,
26854
26855	/// The function pointer to `glGetGraphicsResetStatus()`
26856	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetGraphicsResetStatus.xhtml>
26857	pub getgraphicsresetstatus: PFNGLGETGRAPHICSRESETSTATUSPROC,
26858
26859	/// The function pointer to `glGetnCompressedTexImage()`
26860	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnCompressedTexImage.xhtml>
26861	pub getncompressedteximage: PFNGLGETNCOMPRESSEDTEXIMAGEPROC,
26862
26863	/// The function pointer to `glGetnTexImage()`
26864	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnTexImage.xhtml>
26865	pub getnteximage: PFNGLGETNTEXIMAGEPROC,
26866
26867	/// The function pointer to `glGetnUniformdv()`
26868	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnUniformdv.xhtml>
26869	pub getnuniformdv: PFNGLGETNUNIFORMDVPROC,
26870
26871	/// The function pointer to `glGetnUniformfv()`
26872	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnUniformfv.xhtml>
26873	pub getnuniformfv: PFNGLGETNUNIFORMFVPROC,
26874
26875	/// The function pointer to `glGetnUniformiv()`
26876	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnUniformiv.xhtml>
26877	pub getnuniformiv: PFNGLGETNUNIFORMIVPROC,
26878
26879	/// The function pointer to `glGetnUniformuiv()`
26880	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnUniformuiv.xhtml>
26881	pub getnuniformuiv: PFNGLGETNUNIFORMUIVPROC,
26882
26883	/// The function pointer to `glReadnPixels()`
26884	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glReadnPixels.xhtml>
26885	pub readnpixels: PFNGLREADNPIXELSPROC,
26886
26887	/// The function pointer to `glGetnMapdv()`
26888	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnMapdv.xhtml>
26889	pub getnmapdv: PFNGLGETNMAPDVPROC,
26890
26891	/// The function pointer to `glGetnMapfv()`
26892	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnMapfv.xhtml>
26893	pub getnmapfv: PFNGLGETNMAPFVPROC,
26894
26895	/// The function pointer to `glGetnMapiv()`
26896	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnMapiv.xhtml>
26897	pub getnmapiv: PFNGLGETNMAPIVPROC,
26898
26899	/// The function pointer to `glGetnPixelMapfv()`
26900	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnPixelMapfv.xhtml>
26901	pub getnpixelmapfv: PFNGLGETNPIXELMAPFVPROC,
26902
26903	/// The function pointer to `glGetnPixelMapuiv()`
26904	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnPixelMapuiv.xhtml>
26905	pub getnpixelmapuiv: PFNGLGETNPIXELMAPUIVPROC,
26906
26907	/// The function pointer to `glGetnPixelMapusv()`
26908	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnPixelMapusv.xhtml>
26909	pub getnpixelmapusv: PFNGLGETNPIXELMAPUSVPROC,
26910
26911	/// The function pointer to `glGetnPolygonStipple()`
26912	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnPolygonStipple.xhtml>
26913	pub getnpolygonstipple: PFNGLGETNPOLYGONSTIPPLEPROC,
26914
26915	/// The function pointer to `glGetnColorTable()`
26916	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnColorTable.xhtml>
26917	pub getncolortable: PFNGLGETNCOLORTABLEPROC,
26918
26919	/// The function pointer to `glGetnConvolutionFilter()`
26920	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnConvolutionFilter.xhtml>
26921	pub getnconvolutionfilter: PFNGLGETNCONVOLUTIONFILTERPROC,
26922
26923	/// The function pointer to `glGetnSeparableFilter()`
26924	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnSeparableFilter.xhtml>
26925	pub getnseparablefilter: PFNGLGETNSEPARABLEFILTERPROC,
26926
26927	/// The function pointer to `glGetnHistogram()`
26928	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnHistogram.xhtml>
26929	pub getnhistogram: PFNGLGETNHISTOGRAMPROC,
26930
26931	/// The function pointer to `glGetnMinmax()`
26932	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnMinmax.xhtml>
26933	pub getnminmax: PFNGLGETNMINMAXPROC,
26934
26935	/// The function pointer to `glTextureBarrier()`
26936	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureBarrier.xhtml>
26937	pub texturebarrier: PFNGLTEXTUREBARRIERPROC,
26938}
26939
26940impl GL_4_5 for Version45 {
26941	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
26942	#[inline(always)]
26943	fn glGetError(&self) -> GLenum {
26944		(self.geterror)()
26945	}
26946	#[inline(always)]
26947	fn glClipControl(&self, origin: GLenum, depth: GLenum) -> Result<()> {
26948		let ret = process_catch("glClipControl", catch_unwind(||(self.clipcontrol)(origin, depth)));
26949		#[cfg(feature = "diagnose")]
26950		if let Ok(ret) = ret {
26951			return to_result("glClipControl", ret, self.glGetError());
26952		} else {
26953			return ret
26954		}
26955		#[cfg(not(feature = "diagnose"))]
26956		return ret;
26957	}
26958	#[inline(always)]
26959	fn glCreateTransformFeedbacks(&self, n: GLsizei, ids: *mut GLuint) -> Result<()> {
26960		let ret = process_catch("glCreateTransformFeedbacks", catch_unwind(||(self.createtransformfeedbacks)(n, ids)));
26961		#[cfg(feature = "diagnose")]
26962		if let Ok(ret) = ret {
26963			return to_result("glCreateTransformFeedbacks", ret, self.glGetError());
26964		} else {
26965			return ret
26966		}
26967		#[cfg(not(feature = "diagnose"))]
26968		return ret;
26969	}
26970	#[inline(always)]
26971	fn glTransformFeedbackBufferBase(&self, xfb: GLuint, index: GLuint, buffer: GLuint) -> Result<()> {
26972		let ret = process_catch("glTransformFeedbackBufferBase", catch_unwind(||(self.transformfeedbackbufferbase)(xfb, index, buffer)));
26973		#[cfg(feature = "diagnose")]
26974		if let Ok(ret) = ret {
26975			return to_result("glTransformFeedbackBufferBase", ret, self.glGetError());
26976		} else {
26977			return ret
26978		}
26979		#[cfg(not(feature = "diagnose"))]
26980		return ret;
26981	}
26982	#[inline(always)]
26983	fn glTransformFeedbackBufferRange(&self, xfb: GLuint, index: GLuint, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()> {
26984		let ret = process_catch("glTransformFeedbackBufferRange", catch_unwind(||(self.transformfeedbackbufferrange)(xfb, index, buffer, offset, size)));
26985		#[cfg(feature = "diagnose")]
26986		if let Ok(ret) = ret {
26987			return to_result("glTransformFeedbackBufferRange", ret, self.glGetError());
26988		} else {
26989			return ret
26990		}
26991		#[cfg(not(feature = "diagnose"))]
26992		return ret;
26993	}
26994	#[inline(always)]
26995	fn glGetTransformFeedbackiv(&self, xfb: GLuint, pname: GLenum, param: *mut GLint) -> Result<()> {
26996		let ret = process_catch("glGetTransformFeedbackiv", catch_unwind(||(self.gettransformfeedbackiv)(xfb, pname, param)));
26997		#[cfg(feature = "diagnose")]
26998		if let Ok(ret) = ret {
26999			return to_result("glGetTransformFeedbackiv", ret, self.glGetError());
27000		} else {
27001			return ret
27002		}
27003		#[cfg(not(feature = "diagnose"))]
27004		return ret;
27005	}
27006	#[inline(always)]
27007	fn glGetTransformFeedbacki_v(&self, xfb: GLuint, pname: GLenum, index: GLuint, param: *mut GLint) -> Result<()> {
27008		let ret = process_catch("glGetTransformFeedbacki_v", catch_unwind(||(self.gettransformfeedbacki_v)(xfb, pname, index, param)));
27009		#[cfg(feature = "diagnose")]
27010		if let Ok(ret) = ret {
27011			return to_result("glGetTransformFeedbacki_v", ret, self.glGetError());
27012		} else {
27013			return ret
27014		}
27015		#[cfg(not(feature = "diagnose"))]
27016		return ret;
27017	}
27018	#[inline(always)]
27019	fn glGetTransformFeedbacki64_v(&self, xfb: GLuint, pname: GLenum, index: GLuint, param: *mut GLint64) -> Result<()> {
27020		let ret = process_catch("glGetTransformFeedbacki64_v", catch_unwind(||(self.gettransformfeedbacki64_v)(xfb, pname, index, param)));
27021		#[cfg(feature = "diagnose")]
27022		if let Ok(ret) = ret {
27023			return to_result("glGetTransformFeedbacki64_v", ret, self.glGetError());
27024		} else {
27025			return ret
27026		}
27027		#[cfg(not(feature = "diagnose"))]
27028		return ret;
27029	}
27030	#[inline(always)]
27031	fn glCreateBuffers(&self, n: GLsizei, buffers: *mut GLuint) -> Result<()> {
27032		let ret = process_catch("glCreateBuffers", catch_unwind(||(self.createbuffers)(n, buffers)));
27033		#[cfg(feature = "diagnose")]
27034		if let Ok(ret) = ret {
27035			return to_result("glCreateBuffers", ret, self.glGetError());
27036		} else {
27037			return ret
27038		}
27039		#[cfg(not(feature = "diagnose"))]
27040		return ret;
27041	}
27042	#[inline(always)]
27043	fn glNamedBufferStorage(&self, buffer: GLuint, size: GLsizeiptr, data: *const c_void, flags: GLbitfield) -> Result<()> {
27044		let ret = process_catch("glNamedBufferStorage", catch_unwind(||(self.namedbufferstorage)(buffer, size, data, flags)));
27045		#[cfg(feature = "diagnose")]
27046		if let Ok(ret) = ret {
27047			return to_result("glNamedBufferStorage", ret, self.glGetError());
27048		} else {
27049			return ret
27050		}
27051		#[cfg(not(feature = "diagnose"))]
27052		return ret;
27053	}
27054	#[inline(always)]
27055	fn glNamedBufferData(&self, buffer: GLuint, size: GLsizeiptr, data: *const c_void, usage: GLenum) -> Result<()> {
27056		let ret = process_catch("glNamedBufferData", catch_unwind(||(self.namedbufferdata)(buffer, size, data, usage)));
27057		#[cfg(feature = "diagnose")]
27058		if let Ok(ret) = ret {
27059			return to_result("glNamedBufferData", ret, self.glGetError());
27060		} else {
27061			return ret
27062		}
27063		#[cfg(not(feature = "diagnose"))]
27064		return ret;
27065	}
27066	#[inline(always)]
27067	fn glNamedBufferSubData(&self, buffer: GLuint, offset: GLintptr, size: GLsizeiptr, data: *const c_void) -> Result<()> {
27068		let ret = process_catch("glNamedBufferSubData", catch_unwind(||(self.namedbuffersubdata)(buffer, offset, size, data)));
27069		#[cfg(feature = "diagnose")]
27070		if let Ok(ret) = ret {
27071			return to_result("glNamedBufferSubData", ret, self.glGetError());
27072		} else {
27073			return ret
27074		}
27075		#[cfg(not(feature = "diagnose"))]
27076		return ret;
27077	}
27078	#[inline(always)]
27079	fn glCopyNamedBufferSubData(&self, readBuffer: GLuint, writeBuffer: GLuint, readOffset: GLintptr, writeOffset: GLintptr, size: GLsizeiptr) -> Result<()> {
27080		let ret = process_catch("glCopyNamedBufferSubData", catch_unwind(||(self.copynamedbuffersubdata)(readBuffer, writeBuffer, readOffset, writeOffset, size)));
27081		#[cfg(feature = "diagnose")]
27082		if let Ok(ret) = ret {
27083			return to_result("glCopyNamedBufferSubData", ret, self.glGetError());
27084		} else {
27085			return ret
27086		}
27087		#[cfg(not(feature = "diagnose"))]
27088		return ret;
27089	}
27090	#[inline(always)]
27091	fn glClearNamedBufferData(&self, buffer: GLuint, internalformat: GLenum, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()> {
27092		let ret = process_catch("glClearNamedBufferData", catch_unwind(||(self.clearnamedbufferdata)(buffer, internalformat, format, type_, data)));
27093		#[cfg(feature = "diagnose")]
27094		if let Ok(ret) = ret {
27095			return to_result("glClearNamedBufferData", ret, self.glGetError());
27096		} else {
27097			return ret
27098		}
27099		#[cfg(not(feature = "diagnose"))]
27100		return ret;
27101	}
27102	#[inline(always)]
27103	fn glClearNamedBufferSubData(&self, buffer: GLuint, internalformat: GLenum, offset: GLintptr, size: GLsizeiptr, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()> {
27104		let ret = process_catch("glClearNamedBufferSubData", catch_unwind(||(self.clearnamedbuffersubdata)(buffer, internalformat, offset, size, format, type_, data)));
27105		#[cfg(feature = "diagnose")]
27106		if let Ok(ret) = ret {
27107			return to_result("glClearNamedBufferSubData", ret, self.glGetError());
27108		} else {
27109			return ret
27110		}
27111		#[cfg(not(feature = "diagnose"))]
27112		return ret;
27113	}
27114	#[inline(always)]
27115	fn glMapNamedBuffer(&self, buffer: GLuint, access: GLenum) -> Result<*mut c_void> {
27116		let ret = process_catch("glMapNamedBuffer", catch_unwind(||(self.mapnamedbuffer)(buffer, access)));
27117		#[cfg(feature = "diagnose")]
27118		if let Ok(ret) = ret {
27119			return to_result("glMapNamedBuffer", ret, self.glGetError());
27120		} else {
27121			return ret
27122		}
27123		#[cfg(not(feature = "diagnose"))]
27124		return ret;
27125	}
27126	#[inline(always)]
27127	fn glMapNamedBufferRange(&self, buffer: GLuint, offset: GLintptr, length: GLsizeiptr, access: GLbitfield) -> Result<*mut c_void> {
27128		let ret = process_catch("glMapNamedBufferRange", catch_unwind(||(self.mapnamedbufferrange)(buffer, offset, length, access)));
27129		#[cfg(feature = "diagnose")]
27130		if let Ok(ret) = ret {
27131			return to_result("glMapNamedBufferRange", ret, self.glGetError());
27132		} else {
27133			return ret
27134		}
27135		#[cfg(not(feature = "diagnose"))]
27136		return ret;
27137	}
27138	#[inline(always)]
27139	fn glUnmapNamedBuffer(&self, buffer: GLuint) -> Result<GLboolean> {
27140		let ret = process_catch("glUnmapNamedBuffer", catch_unwind(||(self.unmapnamedbuffer)(buffer)));
27141		#[cfg(feature = "diagnose")]
27142		if let Ok(ret) = ret {
27143			return to_result("glUnmapNamedBuffer", ret, self.glGetError());
27144		} else {
27145			return ret
27146		}
27147		#[cfg(not(feature = "diagnose"))]
27148		return ret;
27149	}
27150	#[inline(always)]
27151	fn glFlushMappedNamedBufferRange(&self, buffer: GLuint, offset: GLintptr, length: GLsizeiptr) -> Result<()> {
27152		let ret = process_catch("glFlushMappedNamedBufferRange", catch_unwind(||(self.flushmappednamedbufferrange)(buffer, offset, length)));
27153		#[cfg(feature = "diagnose")]
27154		if let Ok(ret) = ret {
27155			return to_result("glFlushMappedNamedBufferRange", ret, self.glGetError());
27156		} else {
27157			return ret
27158		}
27159		#[cfg(not(feature = "diagnose"))]
27160		return ret;
27161	}
27162	#[inline(always)]
27163	fn glGetNamedBufferParameteriv(&self, buffer: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
27164		let ret = process_catch("glGetNamedBufferParameteriv", catch_unwind(||(self.getnamedbufferparameteriv)(buffer, pname, params)));
27165		#[cfg(feature = "diagnose")]
27166		if let Ok(ret) = ret {
27167			return to_result("glGetNamedBufferParameteriv", ret, self.glGetError());
27168		} else {
27169			return ret
27170		}
27171		#[cfg(not(feature = "diagnose"))]
27172		return ret;
27173	}
27174	#[inline(always)]
27175	fn glGetNamedBufferParameteri64v(&self, buffer: GLuint, pname: GLenum, params: *mut GLint64) -> Result<()> {
27176		let ret = process_catch("glGetNamedBufferParameteri64v", catch_unwind(||(self.getnamedbufferparameteri64v)(buffer, pname, params)));
27177		#[cfg(feature = "diagnose")]
27178		if let Ok(ret) = ret {
27179			return to_result("glGetNamedBufferParameteri64v", ret, self.glGetError());
27180		} else {
27181			return ret
27182		}
27183		#[cfg(not(feature = "diagnose"))]
27184		return ret;
27185	}
27186	#[inline(always)]
27187	fn glGetNamedBufferPointerv(&self, buffer: GLuint, pname: GLenum, params: *mut *mut c_void) -> Result<()> {
27188		let ret = process_catch("glGetNamedBufferPointerv", catch_unwind(||(self.getnamedbufferpointerv)(buffer, pname, params)));
27189		#[cfg(feature = "diagnose")]
27190		if let Ok(ret) = ret {
27191			return to_result("glGetNamedBufferPointerv", ret, self.glGetError());
27192		} else {
27193			return ret
27194		}
27195		#[cfg(not(feature = "diagnose"))]
27196		return ret;
27197	}
27198	#[inline(always)]
27199	fn glGetNamedBufferSubData(&self, buffer: GLuint, offset: GLintptr, size: GLsizeiptr, data: *mut c_void) -> Result<()> {
27200		let ret = process_catch("glGetNamedBufferSubData", catch_unwind(||(self.getnamedbuffersubdata)(buffer, offset, size, data)));
27201		#[cfg(feature = "diagnose")]
27202		if let Ok(ret) = ret {
27203			return to_result("glGetNamedBufferSubData", ret, self.glGetError());
27204		} else {
27205			return ret
27206		}
27207		#[cfg(not(feature = "diagnose"))]
27208		return ret;
27209	}
27210	#[inline(always)]
27211	fn glCreateFramebuffers(&self, n: GLsizei, framebuffers: *mut GLuint) -> Result<()> {
27212		let ret = process_catch("glCreateFramebuffers", catch_unwind(||(self.createframebuffers)(n, framebuffers)));
27213		#[cfg(feature = "diagnose")]
27214		if let Ok(ret) = ret {
27215			return to_result("glCreateFramebuffers", ret, self.glGetError());
27216		} else {
27217			return ret
27218		}
27219		#[cfg(not(feature = "diagnose"))]
27220		return ret;
27221	}
27222	#[inline(always)]
27223	fn glNamedFramebufferRenderbuffer(&self, framebuffer: GLuint, attachment: GLenum, renderbuffertarget: GLenum, renderbuffer: GLuint) -> Result<()> {
27224		let ret = process_catch("glNamedFramebufferRenderbuffer", catch_unwind(||(self.namedframebufferrenderbuffer)(framebuffer, attachment, renderbuffertarget, renderbuffer)));
27225		#[cfg(feature = "diagnose")]
27226		if let Ok(ret) = ret {
27227			return to_result("glNamedFramebufferRenderbuffer", ret, self.glGetError());
27228		} else {
27229			return ret
27230		}
27231		#[cfg(not(feature = "diagnose"))]
27232		return ret;
27233	}
27234	#[inline(always)]
27235	fn glNamedFramebufferParameteri(&self, framebuffer: GLuint, pname: GLenum, param: GLint) -> Result<()> {
27236		let ret = process_catch("glNamedFramebufferParameteri", catch_unwind(||(self.namedframebufferparameteri)(framebuffer, pname, param)));
27237		#[cfg(feature = "diagnose")]
27238		if let Ok(ret) = ret {
27239			return to_result("glNamedFramebufferParameteri", ret, self.glGetError());
27240		} else {
27241			return ret
27242		}
27243		#[cfg(not(feature = "diagnose"))]
27244		return ret;
27245	}
27246	#[inline(always)]
27247	fn glNamedFramebufferTexture(&self, framebuffer: GLuint, attachment: GLenum, texture: GLuint, level: GLint) -> Result<()> {
27248		let ret = process_catch("glNamedFramebufferTexture", catch_unwind(||(self.namedframebuffertexture)(framebuffer, attachment, texture, level)));
27249		#[cfg(feature = "diagnose")]
27250		if let Ok(ret) = ret {
27251			return to_result("glNamedFramebufferTexture", ret, self.glGetError());
27252		} else {
27253			return ret
27254		}
27255		#[cfg(not(feature = "diagnose"))]
27256		return ret;
27257	}
27258	#[inline(always)]
27259	fn glNamedFramebufferTextureLayer(&self, framebuffer: GLuint, attachment: GLenum, texture: GLuint, level: GLint, layer: GLint) -> Result<()> {
27260		let ret = process_catch("glNamedFramebufferTextureLayer", catch_unwind(||(self.namedframebuffertexturelayer)(framebuffer, attachment, texture, level, layer)));
27261		#[cfg(feature = "diagnose")]
27262		if let Ok(ret) = ret {
27263			return to_result("glNamedFramebufferTextureLayer", ret, self.glGetError());
27264		} else {
27265			return ret
27266		}
27267		#[cfg(not(feature = "diagnose"))]
27268		return ret;
27269	}
27270	#[inline(always)]
27271	fn glNamedFramebufferDrawBuffer(&self, framebuffer: GLuint, buf: GLenum) -> Result<()> {
27272		let ret = process_catch("glNamedFramebufferDrawBuffer", catch_unwind(||(self.namedframebufferdrawbuffer)(framebuffer, buf)));
27273		#[cfg(feature = "diagnose")]
27274		if let Ok(ret) = ret {
27275			return to_result("glNamedFramebufferDrawBuffer", ret, self.glGetError());
27276		} else {
27277			return ret
27278		}
27279		#[cfg(not(feature = "diagnose"))]
27280		return ret;
27281	}
27282	#[inline(always)]
27283	fn glNamedFramebufferDrawBuffers(&self, framebuffer: GLuint, n: GLsizei, bufs: *const GLenum) -> Result<()> {
27284		let ret = process_catch("glNamedFramebufferDrawBuffers", catch_unwind(||(self.namedframebufferdrawbuffers)(framebuffer, n, bufs)));
27285		#[cfg(feature = "diagnose")]
27286		if let Ok(ret) = ret {
27287			return to_result("glNamedFramebufferDrawBuffers", ret, self.glGetError());
27288		} else {
27289			return ret
27290		}
27291		#[cfg(not(feature = "diagnose"))]
27292		return ret;
27293	}
27294	#[inline(always)]
27295	fn glNamedFramebufferReadBuffer(&self, framebuffer: GLuint, src: GLenum) -> Result<()> {
27296		let ret = process_catch("glNamedFramebufferReadBuffer", catch_unwind(||(self.namedframebufferreadbuffer)(framebuffer, src)));
27297		#[cfg(feature = "diagnose")]
27298		if let Ok(ret) = ret {
27299			return to_result("glNamedFramebufferReadBuffer", ret, self.glGetError());
27300		} else {
27301			return ret
27302		}
27303		#[cfg(not(feature = "diagnose"))]
27304		return ret;
27305	}
27306	#[inline(always)]
27307	fn glInvalidateNamedFramebufferData(&self, framebuffer: GLuint, numAttachments: GLsizei, attachments: *const GLenum) -> Result<()> {
27308		let ret = process_catch("glInvalidateNamedFramebufferData", catch_unwind(||(self.invalidatenamedframebufferdata)(framebuffer, numAttachments, attachments)));
27309		#[cfg(feature = "diagnose")]
27310		if let Ok(ret) = ret {
27311			return to_result("glInvalidateNamedFramebufferData", ret, self.glGetError());
27312		} else {
27313			return ret
27314		}
27315		#[cfg(not(feature = "diagnose"))]
27316		return ret;
27317	}
27318	#[inline(always)]
27319	fn glInvalidateNamedFramebufferSubData(&self, framebuffer: GLuint, numAttachments: GLsizei, attachments: *const GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
27320		let ret = process_catch("glInvalidateNamedFramebufferSubData", catch_unwind(||(self.invalidatenamedframebuffersubdata)(framebuffer, numAttachments, attachments, x, y, width, height)));
27321		#[cfg(feature = "diagnose")]
27322		if let Ok(ret) = ret {
27323			return to_result("glInvalidateNamedFramebufferSubData", ret, self.glGetError());
27324		} else {
27325			return ret
27326		}
27327		#[cfg(not(feature = "diagnose"))]
27328		return ret;
27329	}
27330	#[inline(always)]
27331	fn glClearNamedFramebufferiv(&self, framebuffer: GLuint, buffer: GLenum, drawbuffer: GLint, value: *const GLint) -> Result<()> {
27332		let ret = process_catch("glClearNamedFramebufferiv", catch_unwind(||(self.clearnamedframebufferiv)(framebuffer, buffer, drawbuffer, value)));
27333		#[cfg(feature = "diagnose")]
27334		if let Ok(ret) = ret {
27335			return to_result("glClearNamedFramebufferiv", ret, self.glGetError());
27336		} else {
27337			return ret
27338		}
27339		#[cfg(not(feature = "diagnose"))]
27340		return ret;
27341	}
27342	#[inline(always)]
27343	fn glClearNamedFramebufferuiv(&self, framebuffer: GLuint, buffer: GLenum, drawbuffer: GLint, value: *const GLuint) -> Result<()> {
27344		let ret = process_catch("glClearNamedFramebufferuiv", catch_unwind(||(self.clearnamedframebufferuiv)(framebuffer, buffer, drawbuffer, value)));
27345		#[cfg(feature = "diagnose")]
27346		if let Ok(ret) = ret {
27347			return to_result("glClearNamedFramebufferuiv", ret, self.glGetError());
27348		} else {
27349			return ret
27350		}
27351		#[cfg(not(feature = "diagnose"))]
27352		return ret;
27353	}
27354	#[inline(always)]
27355	fn glClearNamedFramebufferfv(&self, framebuffer: GLuint, buffer: GLenum, drawbuffer: GLint, value: *const GLfloat) -> Result<()> {
27356		let ret = process_catch("glClearNamedFramebufferfv", catch_unwind(||(self.clearnamedframebufferfv)(framebuffer, buffer, drawbuffer, value)));
27357		#[cfg(feature = "diagnose")]
27358		if let Ok(ret) = ret {
27359			return to_result("glClearNamedFramebufferfv", ret, self.glGetError());
27360		} else {
27361			return ret
27362		}
27363		#[cfg(not(feature = "diagnose"))]
27364		return ret;
27365	}
27366	#[inline(always)]
27367	fn glClearNamedFramebufferfi(&self, framebuffer: GLuint, buffer: GLenum, drawbuffer: GLint, depth: GLfloat, stencil: GLint) -> Result<()> {
27368		let ret = process_catch("glClearNamedFramebufferfi", catch_unwind(||(self.clearnamedframebufferfi)(framebuffer, buffer, drawbuffer, depth, stencil)));
27369		#[cfg(feature = "diagnose")]
27370		if let Ok(ret) = ret {
27371			return to_result("glClearNamedFramebufferfi", ret, self.glGetError());
27372		} else {
27373			return ret
27374		}
27375		#[cfg(not(feature = "diagnose"))]
27376		return ret;
27377	}
27378	#[inline(always)]
27379	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<()> {
27380		let ret = process_catch("glBlitNamedFramebuffer", catch_unwind(||(self.blitnamedframebuffer)(readFramebuffer, drawFramebuffer, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter)));
27381		#[cfg(feature = "diagnose")]
27382		if let Ok(ret) = ret {
27383			return to_result("glBlitNamedFramebuffer", ret, self.glGetError());
27384		} else {
27385			return ret
27386		}
27387		#[cfg(not(feature = "diagnose"))]
27388		return ret;
27389	}
27390	#[inline(always)]
27391	fn glCheckNamedFramebufferStatus(&self, framebuffer: GLuint, target: GLenum) -> Result<GLenum> {
27392		let ret = process_catch("glCheckNamedFramebufferStatus", catch_unwind(||(self.checknamedframebufferstatus)(framebuffer, target)));
27393		#[cfg(feature = "diagnose")]
27394		if let Ok(ret) = ret {
27395			return to_result("glCheckNamedFramebufferStatus", ret, self.glGetError());
27396		} else {
27397			return ret
27398		}
27399		#[cfg(not(feature = "diagnose"))]
27400		return ret;
27401	}
27402	#[inline(always)]
27403	fn glGetNamedFramebufferParameteriv(&self, framebuffer: GLuint, pname: GLenum, param: *mut GLint) -> Result<()> {
27404		let ret = process_catch("glGetNamedFramebufferParameteriv", catch_unwind(||(self.getnamedframebufferparameteriv)(framebuffer, pname, param)));
27405		#[cfg(feature = "diagnose")]
27406		if let Ok(ret) = ret {
27407			return to_result("glGetNamedFramebufferParameteriv", ret, self.glGetError());
27408		} else {
27409			return ret
27410		}
27411		#[cfg(not(feature = "diagnose"))]
27412		return ret;
27413	}
27414	#[inline(always)]
27415	fn glGetNamedFramebufferAttachmentParameteriv(&self, framebuffer: GLuint, attachment: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
27416		let ret = process_catch("glGetNamedFramebufferAttachmentParameteriv", catch_unwind(||(self.getnamedframebufferattachmentparameteriv)(framebuffer, attachment, pname, params)));
27417		#[cfg(feature = "diagnose")]
27418		if let Ok(ret) = ret {
27419			return to_result("glGetNamedFramebufferAttachmentParameteriv", ret, self.glGetError());
27420		} else {
27421			return ret
27422		}
27423		#[cfg(not(feature = "diagnose"))]
27424		return ret;
27425	}
27426	#[inline(always)]
27427	fn glCreateRenderbuffers(&self, n: GLsizei, renderbuffers: *mut GLuint) -> Result<()> {
27428		let ret = process_catch("glCreateRenderbuffers", catch_unwind(||(self.createrenderbuffers)(n, renderbuffers)));
27429		#[cfg(feature = "diagnose")]
27430		if let Ok(ret) = ret {
27431			return to_result("glCreateRenderbuffers", ret, self.glGetError());
27432		} else {
27433			return ret
27434		}
27435		#[cfg(not(feature = "diagnose"))]
27436		return ret;
27437	}
27438	#[inline(always)]
27439	fn glNamedRenderbufferStorage(&self, renderbuffer: GLuint, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()> {
27440		let ret = process_catch("glNamedRenderbufferStorage", catch_unwind(||(self.namedrenderbufferstorage)(renderbuffer, internalformat, width, height)));
27441		#[cfg(feature = "diagnose")]
27442		if let Ok(ret) = ret {
27443			return to_result("glNamedRenderbufferStorage", ret, self.glGetError());
27444		} else {
27445			return ret
27446		}
27447		#[cfg(not(feature = "diagnose"))]
27448		return ret;
27449	}
27450	#[inline(always)]
27451	fn glNamedRenderbufferStorageMultisample(&self, renderbuffer: GLuint, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()> {
27452		let ret = process_catch("glNamedRenderbufferStorageMultisample", catch_unwind(||(self.namedrenderbufferstoragemultisample)(renderbuffer, samples, internalformat, width, height)));
27453		#[cfg(feature = "diagnose")]
27454		if let Ok(ret) = ret {
27455			return to_result("glNamedRenderbufferStorageMultisample", ret, self.glGetError());
27456		} else {
27457			return ret
27458		}
27459		#[cfg(not(feature = "diagnose"))]
27460		return ret;
27461	}
27462	#[inline(always)]
27463	fn glGetNamedRenderbufferParameteriv(&self, renderbuffer: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
27464		let ret = process_catch("glGetNamedRenderbufferParameteriv", catch_unwind(||(self.getnamedrenderbufferparameteriv)(renderbuffer, pname, params)));
27465		#[cfg(feature = "diagnose")]
27466		if let Ok(ret) = ret {
27467			return to_result("glGetNamedRenderbufferParameteriv", ret, self.glGetError());
27468		} else {
27469			return ret
27470		}
27471		#[cfg(not(feature = "diagnose"))]
27472		return ret;
27473	}
27474	#[inline(always)]
27475	fn glCreateTextures(&self, target: GLenum, n: GLsizei, textures: *mut GLuint) -> Result<()> {
27476		let ret = process_catch("glCreateTextures", catch_unwind(||(self.createtextures)(target, n, textures)));
27477		#[cfg(feature = "diagnose")]
27478		if let Ok(ret) = ret {
27479			return to_result("glCreateTextures", ret, self.glGetError());
27480		} else {
27481			return ret
27482		}
27483		#[cfg(not(feature = "diagnose"))]
27484		return ret;
27485	}
27486	#[inline(always)]
27487	fn glTextureBuffer(&self, texture: GLuint, internalformat: GLenum, buffer: GLuint) -> Result<()> {
27488		let ret = process_catch("glTextureBuffer", catch_unwind(||(self.texturebuffer)(texture, internalformat, buffer)));
27489		#[cfg(feature = "diagnose")]
27490		if let Ok(ret) = ret {
27491			return to_result("glTextureBuffer", ret, self.glGetError());
27492		} else {
27493			return ret
27494		}
27495		#[cfg(not(feature = "diagnose"))]
27496		return ret;
27497	}
27498	#[inline(always)]
27499	fn glTextureBufferRange(&self, texture: GLuint, internalformat: GLenum, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()> {
27500		let ret = process_catch("glTextureBufferRange", catch_unwind(||(self.texturebufferrange)(texture, internalformat, buffer, offset, size)));
27501		#[cfg(feature = "diagnose")]
27502		if let Ok(ret) = ret {
27503			return to_result("glTextureBufferRange", ret, self.glGetError());
27504		} else {
27505			return ret
27506		}
27507		#[cfg(not(feature = "diagnose"))]
27508		return ret;
27509	}
27510	#[inline(always)]
27511	fn glTextureStorage1D(&self, texture: GLuint, levels: GLsizei, internalformat: GLenum, width: GLsizei) -> Result<()> {
27512		let ret = process_catch("glTextureStorage1D", catch_unwind(||(self.texturestorage1d)(texture, levels, internalformat, width)));
27513		#[cfg(feature = "diagnose")]
27514		if let Ok(ret) = ret {
27515			return to_result("glTextureStorage1D", ret, self.glGetError());
27516		} else {
27517			return ret
27518		}
27519		#[cfg(not(feature = "diagnose"))]
27520		return ret;
27521	}
27522	#[inline(always)]
27523	fn glTextureStorage2D(&self, texture: GLuint, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()> {
27524		let ret = process_catch("glTextureStorage2D", catch_unwind(||(self.texturestorage2d)(texture, levels, internalformat, width, height)));
27525		#[cfg(feature = "diagnose")]
27526		if let Ok(ret) = ret {
27527			return to_result("glTextureStorage2D", ret, self.glGetError());
27528		} else {
27529			return ret
27530		}
27531		#[cfg(not(feature = "diagnose"))]
27532		return ret;
27533	}
27534	#[inline(always)]
27535	fn glTextureStorage3D(&self, texture: GLuint, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei) -> Result<()> {
27536		let ret = process_catch("glTextureStorage3D", catch_unwind(||(self.texturestorage3d)(texture, levels, internalformat, width, height, depth)));
27537		#[cfg(feature = "diagnose")]
27538		if let Ok(ret) = ret {
27539			return to_result("glTextureStorage3D", ret, self.glGetError());
27540		} else {
27541			return ret
27542		}
27543		#[cfg(not(feature = "diagnose"))]
27544		return ret;
27545	}
27546	#[inline(always)]
27547	fn glTextureStorage2DMultisample(&self, texture: GLuint, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, fixedsamplelocations: GLboolean) -> Result<()> {
27548		let ret = process_catch("glTextureStorage2DMultisample", catch_unwind(||(self.texturestorage2dmultisample)(texture, samples, internalformat, width, height, fixedsamplelocations)));
27549		#[cfg(feature = "diagnose")]
27550		if let Ok(ret) = ret {
27551			return to_result("glTextureStorage2DMultisample", ret, self.glGetError());
27552		} else {
27553			return ret
27554		}
27555		#[cfg(not(feature = "diagnose"))]
27556		return ret;
27557	}
27558	#[inline(always)]
27559	fn glTextureStorage3DMultisample(&self, texture: GLuint, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, fixedsamplelocations: GLboolean) -> Result<()> {
27560		let ret = process_catch("glTextureStorage3DMultisample", catch_unwind(||(self.texturestorage3dmultisample)(texture, samples, internalformat, width, height, depth, fixedsamplelocations)));
27561		#[cfg(feature = "diagnose")]
27562		if let Ok(ret) = ret {
27563			return to_result("glTextureStorage3DMultisample", ret, self.glGetError());
27564		} else {
27565			return ret
27566		}
27567		#[cfg(not(feature = "diagnose"))]
27568		return ret;
27569	}
27570	#[inline(always)]
27571	fn glTextureSubImage1D(&self, texture: GLuint, level: GLint, xoffset: GLint, width: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
27572		let ret = process_catch("glTextureSubImage1D", catch_unwind(||(self.texturesubimage1d)(texture, level, xoffset, width, format, type_, pixels)));
27573		#[cfg(feature = "diagnose")]
27574		if let Ok(ret) = ret {
27575			return to_result("glTextureSubImage1D", ret, self.glGetError());
27576		} else {
27577			return ret
27578		}
27579		#[cfg(not(feature = "diagnose"))]
27580		return ret;
27581	}
27582	#[inline(always)]
27583	fn glTextureSubImage2D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
27584		let ret = process_catch("glTextureSubImage2D", catch_unwind(||(self.texturesubimage2d)(texture, level, xoffset, yoffset, width, height, format, type_, pixels)));
27585		#[cfg(feature = "diagnose")]
27586		if let Ok(ret) = ret {
27587			return to_result("glTextureSubImage2D", ret, self.glGetError());
27588		} else {
27589			return ret
27590		}
27591		#[cfg(not(feature = "diagnose"))]
27592		return ret;
27593	}
27594	#[inline(always)]
27595	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<()> {
27596		let ret = process_catch("glTextureSubImage3D", catch_unwind(||(self.texturesubimage3d)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, pixels)));
27597		#[cfg(feature = "diagnose")]
27598		if let Ok(ret) = ret {
27599			return to_result("glTextureSubImage3D", ret, self.glGetError());
27600		} else {
27601			return ret
27602		}
27603		#[cfg(not(feature = "diagnose"))]
27604		return ret;
27605	}
27606	#[inline(always)]
27607	fn glCompressedTextureSubImage1D(&self, texture: GLuint, level: GLint, xoffset: GLint, width: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()> {
27608		let ret = process_catch("glCompressedTextureSubImage1D", catch_unwind(||(self.compressedtexturesubimage1d)(texture, level, xoffset, width, format, imageSize, data)));
27609		#[cfg(feature = "diagnose")]
27610		if let Ok(ret) = ret {
27611			return to_result("glCompressedTextureSubImage1D", ret, self.glGetError());
27612		} else {
27613			return ret
27614		}
27615		#[cfg(not(feature = "diagnose"))]
27616		return ret;
27617	}
27618	#[inline(always)]
27619	fn glCompressedTextureSubImage2D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()> {
27620		let ret = process_catch("glCompressedTextureSubImage2D", catch_unwind(||(self.compressedtexturesubimage2d)(texture, level, xoffset, yoffset, width, height, format, imageSize, data)));
27621		#[cfg(feature = "diagnose")]
27622		if let Ok(ret) = ret {
27623			return to_result("glCompressedTextureSubImage2D", ret, self.glGetError());
27624		} else {
27625			return ret
27626		}
27627		#[cfg(not(feature = "diagnose"))]
27628		return ret;
27629	}
27630	#[inline(always)]
27631	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<()> {
27632		let ret = process_catch("glCompressedTextureSubImage3D", catch_unwind(||(self.compressedtexturesubimage3d)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data)));
27633		#[cfg(feature = "diagnose")]
27634		if let Ok(ret) = ret {
27635			return to_result("glCompressedTextureSubImage3D", ret, self.glGetError());
27636		} else {
27637			return ret
27638		}
27639		#[cfg(not(feature = "diagnose"))]
27640		return ret;
27641	}
27642	#[inline(always)]
27643	fn glCopyTextureSubImage1D(&self, texture: GLuint, level: GLint, xoffset: GLint, x: GLint, y: GLint, width: GLsizei) -> Result<()> {
27644		let ret = process_catch("glCopyTextureSubImage1D", catch_unwind(||(self.copytexturesubimage1d)(texture, level, xoffset, x, y, width)));
27645		#[cfg(feature = "diagnose")]
27646		if let Ok(ret) = ret {
27647			return to_result("glCopyTextureSubImage1D", ret, self.glGetError());
27648		} else {
27649			return ret
27650		}
27651		#[cfg(not(feature = "diagnose"))]
27652		return ret;
27653	}
27654	#[inline(always)]
27655	fn glCopyTextureSubImage2D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
27656		let ret = process_catch("glCopyTextureSubImage2D", catch_unwind(||(self.copytexturesubimage2d)(texture, level, xoffset, yoffset, x, y, width, height)));
27657		#[cfg(feature = "diagnose")]
27658		if let Ok(ret) = ret {
27659			return to_result("glCopyTextureSubImage2D", ret, self.glGetError());
27660		} else {
27661			return ret
27662		}
27663		#[cfg(not(feature = "diagnose"))]
27664		return ret;
27665	}
27666	#[inline(always)]
27667	fn glCopyTextureSubImage3D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
27668		let ret = process_catch("glCopyTextureSubImage3D", catch_unwind(||(self.copytexturesubimage3d)(texture, level, xoffset, yoffset, zoffset, x, y, width, height)));
27669		#[cfg(feature = "diagnose")]
27670		if let Ok(ret) = ret {
27671			return to_result("glCopyTextureSubImage3D", ret, self.glGetError());
27672		} else {
27673			return ret
27674		}
27675		#[cfg(not(feature = "diagnose"))]
27676		return ret;
27677	}
27678	#[inline(always)]
27679	fn glTextureParameterf(&self, texture: GLuint, pname: GLenum, param: GLfloat) -> Result<()> {
27680		let ret = process_catch("glTextureParameterf", catch_unwind(||(self.textureparameterf)(texture, pname, param)));
27681		#[cfg(feature = "diagnose")]
27682		if let Ok(ret) = ret {
27683			return to_result("glTextureParameterf", ret, self.glGetError());
27684		} else {
27685			return ret
27686		}
27687		#[cfg(not(feature = "diagnose"))]
27688		return ret;
27689	}
27690	#[inline(always)]
27691	fn glTextureParameterfv(&self, texture: GLuint, pname: GLenum, param: *const GLfloat) -> Result<()> {
27692		let ret = process_catch("glTextureParameterfv", catch_unwind(||(self.textureparameterfv)(texture, pname, param)));
27693		#[cfg(feature = "diagnose")]
27694		if let Ok(ret) = ret {
27695			return to_result("glTextureParameterfv", ret, self.glGetError());
27696		} else {
27697			return ret
27698		}
27699		#[cfg(not(feature = "diagnose"))]
27700		return ret;
27701	}
27702	#[inline(always)]
27703	fn glTextureParameteri(&self, texture: GLuint, pname: GLenum, param: GLint) -> Result<()> {
27704		let ret = process_catch("glTextureParameteri", catch_unwind(||(self.textureparameteri)(texture, pname, param)));
27705		#[cfg(feature = "diagnose")]
27706		if let Ok(ret) = ret {
27707			return to_result("glTextureParameteri", ret, self.glGetError());
27708		} else {
27709			return ret
27710		}
27711		#[cfg(not(feature = "diagnose"))]
27712		return ret;
27713	}
27714	#[inline(always)]
27715	fn glTextureParameterIiv(&self, texture: GLuint, pname: GLenum, params: *const GLint) -> Result<()> {
27716		let ret = process_catch("glTextureParameterIiv", catch_unwind(||(self.textureparameteriiv)(texture, pname, params)));
27717		#[cfg(feature = "diagnose")]
27718		if let Ok(ret) = ret {
27719			return to_result("glTextureParameterIiv", ret, self.glGetError());
27720		} else {
27721			return ret
27722		}
27723		#[cfg(not(feature = "diagnose"))]
27724		return ret;
27725	}
27726	#[inline(always)]
27727	fn glTextureParameterIuiv(&self, texture: GLuint, pname: GLenum, params: *const GLuint) -> Result<()> {
27728		let ret = process_catch("glTextureParameterIuiv", catch_unwind(||(self.textureparameteriuiv)(texture, pname, params)));
27729		#[cfg(feature = "diagnose")]
27730		if let Ok(ret) = ret {
27731			return to_result("glTextureParameterIuiv", ret, self.glGetError());
27732		} else {
27733			return ret
27734		}
27735		#[cfg(not(feature = "diagnose"))]
27736		return ret;
27737	}
27738	#[inline(always)]
27739	fn glTextureParameteriv(&self, texture: GLuint, pname: GLenum, param: *const GLint) -> Result<()> {
27740		let ret = process_catch("glTextureParameteriv", catch_unwind(||(self.textureparameteriv)(texture, pname, param)));
27741		#[cfg(feature = "diagnose")]
27742		if let Ok(ret) = ret {
27743			return to_result("glTextureParameteriv", ret, self.glGetError());
27744		} else {
27745			return ret
27746		}
27747		#[cfg(not(feature = "diagnose"))]
27748		return ret;
27749	}
27750	#[inline(always)]
27751	fn glGenerateTextureMipmap(&self, texture: GLuint) -> Result<()> {
27752		let ret = process_catch("glGenerateTextureMipmap", catch_unwind(||(self.generatetexturemipmap)(texture)));
27753		#[cfg(feature = "diagnose")]
27754		if let Ok(ret) = ret {
27755			return to_result("glGenerateTextureMipmap", ret, self.glGetError());
27756		} else {
27757			return ret
27758		}
27759		#[cfg(not(feature = "diagnose"))]
27760		return ret;
27761	}
27762	#[inline(always)]
27763	fn glBindTextureUnit(&self, unit: GLuint, texture: GLuint) -> Result<()> {
27764		let ret = process_catch("glBindTextureUnit", catch_unwind(||(self.bindtextureunit)(unit, texture)));
27765		#[cfg(feature = "diagnose")]
27766		if let Ok(ret) = ret {
27767			return to_result("glBindTextureUnit", ret, self.glGetError());
27768		} else {
27769			return ret
27770		}
27771		#[cfg(not(feature = "diagnose"))]
27772		return ret;
27773	}
27774	#[inline(always)]
27775	fn glGetTextureImage(&self, texture: GLuint, level: GLint, format: GLenum, type_: GLenum, bufSize: GLsizei, pixels: *mut c_void) -> Result<()> {
27776		let ret = process_catch("glGetTextureImage", catch_unwind(||(self.gettextureimage)(texture, level, format, type_, bufSize, pixels)));
27777		#[cfg(feature = "diagnose")]
27778		if let Ok(ret) = ret {
27779			return to_result("glGetTextureImage", ret, self.glGetError());
27780		} else {
27781			return ret
27782		}
27783		#[cfg(not(feature = "diagnose"))]
27784		return ret;
27785	}
27786	#[inline(always)]
27787	fn glGetCompressedTextureImage(&self, texture: GLuint, level: GLint, bufSize: GLsizei, pixels: *mut c_void) -> Result<()> {
27788		let ret = process_catch("glGetCompressedTextureImage", catch_unwind(||(self.getcompressedtextureimage)(texture, level, bufSize, pixels)));
27789		#[cfg(feature = "diagnose")]
27790		if let Ok(ret) = ret {
27791			return to_result("glGetCompressedTextureImage", ret, self.glGetError());
27792		} else {
27793			return ret
27794		}
27795		#[cfg(not(feature = "diagnose"))]
27796		return ret;
27797	}
27798	#[inline(always)]
27799	fn glGetTextureLevelParameterfv(&self, texture: GLuint, level: GLint, pname: GLenum, params: *mut GLfloat) -> Result<()> {
27800		let ret = process_catch("glGetTextureLevelParameterfv", catch_unwind(||(self.gettexturelevelparameterfv)(texture, level, pname, params)));
27801		#[cfg(feature = "diagnose")]
27802		if let Ok(ret) = ret {
27803			return to_result("glGetTextureLevelParameterfv", ret, self.glGetError());
27804		} else {
27805			return ret
27806		}
27807		#[cfg(not(feature = "diagnose"))]
27808		return ret;
27809	}
27810	#[inline(always)]
27811	fn glGetTextureLevelParameteriv(&self, texture: GLuint, level: GLint, pname: GLenum, params: *mut GLint) -> Result<()> {
27812		let ret = process_catch("glGetTextureLevelParameteriv", catch_unwind(||(self.gettexturelevelparameteriv)(texture, level, pname, params)));
27813		#[cfg(feature = "diagnose")]
27814		if let Ok(ret) = ret {
27815			return to_result("glGetTextureLevelParameteriv", ret, self.glGetError());
27816		} else {
27817			return ret
27818		}
27819		#[cfg(not(feature = "diagnose"))]
27820		return ret;
27821	}
27822	#[inline(always)]
27823	fn glGetTextureParameterfv(&self, texture: GLuint, pname: GLenum, params: *mut GLfloat) -> Result<()> {
27824		let ret = process_catch("glGetTextureParameterfv", catch_unwind(||(self.gettextureparameterfv)(texture, pname, params)));
27825		#[cfg(feature = "diagnose")]
27826		if let Ok(ret) = ret {
27827			return to_result("glGetTextureParameterfv", ret, self.glGetError());
27828		} else {
27829			return ret
27830		}
27831		#[cfg(not(feature = "diagnose"))]
27832		return ret;
27833	}
27834	#[inline(always)]
27835	fn glGetTextureParameterIiv(&self, texture: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
27836		let ret = process_catch("glGetTextureParameterIiv", catch_unwind(||(self.gettextureparameteriiv)(texture, pname, params)));
27837		#[cfg(feature = "diagnose")]
27838		if let Ok(ret) = ret {
27839			return to_result("glGetTextureParameterIiv", ret, self.glGetError());
27840		} else {
27841			return ret
27842		}
27843		#[cfg(not(feature = "diagnose"))]
27844		return ret;
27845	}
27846	#[inline(always)]
27847	fn glGetTextureParameterIuiv(&self, texture: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()> {
27848		let ret = process_catch("glGetTextureParameterIuiv", catch_unwind(||(self.gettextureparameteriuiv)(texture, pname, params)));
27849		#[cfg(feature = "diagnose")]
27850		if let Ok(ret) = ret {
27851			return to_result("glGetTextureParameterIuiv", ret, self.glGetError());
27852		} else {
27853			return ret
27854		}
27855		#[cfg(not(feature = "diagnose"))]
27856		return ret;
27857	}
27858	#[inline(always)]
27859	fn glGetTextureParameteriv(&self, texture: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
27860		let ret = process_catch("glGetTextureParameteriv", catch_unwind(||(self.gettextureparameteriv)(texture, pname, params)));
27861		#[cfg(feature = "diagnose")]
27862		if let Ok(ret) = ret {
27863			return to_result("glGetTextureParameteriv", ret, self.glGetError());
27864		} else {
27865			return ret
27866		}
27867		#[cfg(not(feature = "diagnose"))]
27868		return ret;
27869	}
27870	#[inline(always)]
27871	fn glCreateVertexArrays(&self, n: GLsizei, arrays: *mut GLuint) -> Result<()> {
27872		let ret = process_catch("glCreateVertexArrays", catch_unwind(||(self.createvertexarrays)(n, arrays)));
27873		#[cfg(feature = "diagnose")]
27874		if let Ok(ret) = ret {
27875			return to_result("glCreateVertexArrays", ret, self.glGetError());
27876		} else {
27877			return ret
27878		}
27879		#[cfg(not(feature = "diagnose"))]
27880		return ret;
27881	}
27882	#[inline(always)]
27883	fn glDisableVertexArrayAttrib(&self, vaobj: GLuint, index: GLuint) -> Result<()> {
27884		let ret = process_catch("glDisableVertexArrayAttrib", catch_unwind(||(self.disablevertexarrayattrib)(vaobj, index)));
27885		#[cfg(feature = "diagnose")]
27886		if let Ok(ret) = ret {
27887			return to_result("glDisableVertexArrayAttrib", ret, self.glGetError());
27888		} else {
27889			return ret
27890		}
27891		#[cfg(not(feature = "diagnose"))]
27892		return ret;
27893	}
27894	#[inline(always)]
27895	fn glEnableVertexArrayAttrib(&self, vaobj: GLuint, index: GLuint) -> Result<()> {
27896		let ret = process_catch("glEnableVertexArrayAttrib", catch_unwind(||(self.enablevertexarrayattrib)(vaobj, index)));
27897		#[cfg(feature = "diagnose")]
27898		if let Ok(ret) = ret {
27899			return to_result("glEnableVertexArrayAttrib", ret, self.glGetError());
27900		} else {
27901			return ret
27902		}
27903		#[cfg(not(feature = "diagnose"))]
27904		return ret;
27905	}
27906	#[inline(always)]
27907	fn glVertexArrayElementBuffer(&self, vaobj: GLuint, buffer: GLuint) -> Result<()> {
27908		let ret = process_catch("glVertexArrayElementBuffer", catch_unwind(||(self.vertexarrayelementbuffer)(vaobj, buffer)));
27909		#[cfg(feature = "diagnose")]
27910		if let Ok(ret) = ret {
27911			return to_result("glVertexArrayElementBuffer", ret, self.glGetError());
27912		} else {
27913			return ret
27914		}
27915		#[cfg(not(feature = "diagnose"))]
27916		return ret;
27917	}
27918	#[inline(always)]
27919	fn glVertexArrayVertexBuffer(&self, vaobj: GLuint, bindingindex: GLuint, buffer: GLuint, offset: GLintptr, stride: GLsizei) -> Result<()> {
27920		let ret = process_catch("glVertexArrayVertexBuffer", catch_unwind(||(self.vertexarrayvertexbuffer)(vaobj, bindingindex, buffer, offset, stride)));
27921		#[cfg(feature = "diagnose")]
27922		if let Ok(ret) = ret {
27923			return to_result("glVertexArrayVertexBuffer", ret, self.glGetError());
27924		} else {
27925			return ret
27926		}
27927		#[cfg(not(feature = "diagnose"))]
27928		return ret;
27929	}
27930	#[inline(always)]
27931	fn glVertexArrayVertexBuffers(&self, vaobj: GLuint, first: GLuint, count: GLsizei, buffers: *const GLuint, offsets: *const GLintptr, strides: *const GLsizei) -> Result<()> {
27932		let ret = process_catch("glVertexArrayVertexBuffers", catch_unwind(||(self.vertexarrayvertexbuffers)(vaobj, first, count, buffers, offsets, strides)));
27933		#[cfg(feature = "diagnose")]
27934		if let Ok(ret) = ret {
27935			return to_result("glVertexArrayVertexBuffers", ret, self.glGetError());
27936		} else {
27937			return ret
27938		}
27939		#[cfg(not(feature = "diagnose"))]
27940		return ret;
27941	}
27942	#[inline(always)]
27943	fn glVertexArrayAttribBinding(&self, vaobj: GLuint, attribindex: GLuint, bindingindex: GLuint) -> Result<()> {
27944		let ret = process_catch("glVertexArrayAttribBinding", catch_unwind(||(self.vertexarrayattribbinding)(vaobj, attribindex, bindingindex)));
27945		#[cfg(feature = "diagnose")]
27946		if let Ok(ret) = ret {
27947			return to_result("glVertexArrayAttribBinding", ret, self.glGetError());
27948		} else {
27949			return ret
27950		}
27951		#[cfg(not(feature = "diagnose"))]
27952		return ret;
27953	}
27954	#[inline(always)]
27955	fn glVertexArrayAttribFormat(&self, vaobj: GLuint, attribindex: GLuint, size: GLint, type_: GLenum, normalized: GLboolean, relativeoffset: GLuint) -> Result<()> {
27956		let ret = process_catch("glVertexArrayAttribFormat", catch_unwind(||(self.vertexarrayattribformat)(vaobj, attribindex, size, type_, normalized, relativeoffset)));
27957		#[cfg(feature = "diagnose")]
27958		if let Ok(ret) = ret {
27959			return to_result("glVertexArrayAttribFormat", ret, self.glGetError());
27960		} else {
27961			return ret
27962		}
27963		#[cfg(not(feature = "diagnose"))]
27964		return ret;
27965	}
27966	#[inline(always)]
27967	fn glVertexArrayAttribIFormat(&self, vaobj: GLuint, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()> {
27968		let ret = process_catch("glVertexArrayAttribIFormat", catch_unwind(||(self.vertexarrayattribiformat)(vaobj, attribindex, size, type_, relativeoffset)));
27969		#[cfg(feature = "diagnose")]
27970		if let Ok(ret) = ret {
27971			return to_result("glVertexArrayAttribIFormat", ret, self.glGetError());
27972		} else {
27973			return ret
27974		}
27975		#[cfg(not(feature = "diagnose"))]
27976		return ret;
27977	}
27978	#[inline(always)]
27979	fn glVertexArrayAttribLFormat(&self, vaobj: GLuint, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()> {
27980		let ret = process_catch("glVertexArrayAttribLFormat", catch_unwind(||(self.vertexarrayattriblformat)(vaobj, attribindex, size, type_, relativeoffset)));
27981		#[cfg(feature = "diagnose")]
27982		if let Ok(ret) = ret {
27983			return to_result("glVertexArrayAttribLFormat", ret, self.glGetError());
27984		} else {
27985			return ret
27986		}
27987		#[cfg(not(feature = "diagnose"))]
27988		return ret;
27989	}
27990	#[inline(always)]
27991	fn glVertexArrayBindingDivisor(&self, vaobj: GLuint, bindingindex: GLuint, divisor: GLuint) -> Result<()> {
27992		let ret = process_catch("glVertexArrayBindingDivisor", catch_unwind(||(self.vertexarraybindingdivisor)(vaobj, bindingindex, divisor)));
27993		#[cfg(feature = "diagnose")]
27994		if let Ok(ret) = ret {
27995			return to_result("glVertexArrayBindingDivisor", ret, self.glGetError());
27996		} else {
27997			return ret
27998		}
27999		#[cfg(not(feature = "diagnose"))]
28000		return ret;
28001	}
28002	#[inline(always)]
28003	fn glGetVertexArrayiv(&self, vaobj: GLuint, pname: GLenum, param: *mut GLint) -> Result<()> {
28004		let ret = process_catch("glGetVertexArrayiv", catch_unwind(||(self.getvertexarrayiv)(vaobj, pname, param)));
28005		#[cfg(feature = "diagnose")]
28006		if let Ok(ret) = ret {
28007			return to_result("glGetVertexArrayiv", ret, self.glGetError());
28008		} else {
28009			return ret
28010		}
28011		#[cfg(not(feature = "diagnose"))]
28012		return ret;
28013	}
28014	#[inline(always)]
28015	fn glGetVertexArrayIndexediv(&self, vaobj: GLuint, index: GLuint, pname: GLenum, param: *mut GLint) -> Result<()> {
28016		let ret = process_catch("glGetVertexArrayIndexediv", catch_unwind(||(self.getvertexarrayindexediv)(vaobj, index, pname, param)));
28017		#[cfg(feature = "diagnose")]
28018		if let Ok(ret) = ret {
28019			return to_result("glGetVertexArrayIndexediv", ret, self.glGetError());
28020		} else {
28021			return ret
28022		}
28023		#[cfg(not(feature = "diagnose"))]
28024		return ret;
28025	}
28026	#[inline(always)]
28027	fn glGetVertexArrayIndexed64iv(&self, vaobj: GLuint, index: GLuint, pname: GLenum, param: *mut GLint64) -> Result<()> {
28028		let ret = process_catch("glGetVertexArrayIndexed64iv", catch_unwind(||(self.getvertexarrayindexed64iv)(vaobj, index, pname, param)));
28029		#[cfg(feature = "diagnose")]
28030		if let Ok(ret) = ret {
28031			return to_result("glGetVertexArrayIndexed64iv", ret, self.glGetError());
28032		} else {
28033			return ret
28034		}
28035		#[cfg(not(feature = "diagnose"))]
28036		return ret;
28037	}
28038	#[inline(always)]
28039	fn glCreateSamplers(&self, n: GLsizei, samplers: *mut GLuint) -> Result<()> {
28040		let ret = process_catch("glCreateSamplers", catch_unwind(||(self.createsamplers)(n, samplers)));
28041		#[cfg(feature = "diagnose")]
28042		if let Ok(ret) = ret {
28043			return to_result("glCreateSamplers", ret, self.glGetError());
28044		} else {
28045			return ret
28046		}
28047		#[cfg(not(feature = "diagnose"))]
28048		return ret;
28049	}
28050	#[inline(always)]
28051	fn glCreateProgramPipelines(&self, n: GLsizei, pipelines: *mut GLuint) -> Result<()> {
28052		let ret = process_catch("glCreateProgramPipelines", catch_unwind(||(self.createprogrampipelines)(n, pipelines)));
28053		#[cfg(feature = "diagnose")]
28054		if let Ok(ret) = ret {
28055			return to_result("glCreateProgramPipelines", ret, self.glGetError());
28056		} else {
28057			return ret
28058		}
28059		#[cfg(not(feature = "diagnose"))]
28060		return ret;
28061	}
28062	#[inline(always)]
28063	fn glCreateQueries(&self, target: GLenum, n: GLsizei, ids: *mut GLuint) -> Result<()> {
28064		let ret = process_catch("glCreateQueries", catch_unwind(||(self.createqueries)(target, n, ids)));
28065		#[cfg(feature = "diagnose")]
28066		if let Ok(ret) = ret {
28067			return to_result("glCreateQueries", ret, self.glGetError());
28068		} else {
28069			return ret
28070		}
28071		#[cfg(not(feature = "diagnose"))]
28072		return ret;
28073	}
28074	#[inline(always)]
28075	fn glGetQueryBufferObjecti64v(&self, id: GLuint, buffer: GLuint, pname: GLenum, offset: GLintptr) -> Result<()> {
28076		let ret = process_catch("glGetQueryBufferObjecti64v", catch_unwind(||(self.getquerybufferobjecti64v)(id, buffer, pname, offset)));
28077		#[cfg(feature = "diagnose")]
28078		if let Ok(ret) = ret {
28079			return to_result("glGetQueryBufferObjecti64v", ret, self.glGetError());
28080		} else {
28081			return ret
28082		}
28083		#[cfg(not(feature = "diagnose"))]
28084		return ret;
28085	}
28086	#[inline(always)]
28087	fn glGetQueryBufferObjectiv(&self, id: GLuint, buffer: GLuint, pname: GLenum, offset: GLintptr) -> Result<()> {
28088		let ret = process_catch("glGetQueryBufferObjectiv", catch_unwind(||(self.getquerybufferobjectiv)(id, buffer, pname, offset)));
28089		#[cfg(feature = "diagnose")]
28090		if let Ok(ret) = ret {
28091			return to_result("glGetQueryBufferObjectiv", ret, self.glGetError());
28092		} else {
28093			return ret
28094		}
28095		#[cfg(not(feature = "diagnose"))]
28096		return ret;
28097	}
28098	#[inline(always)]
28099	fn glGetQueryBufferObjectui64v(&self, id: GLuint, buffer: GLuint, pname: GLenum, offset: GLintptr) -> Result<()> {
28100		let ret = process_catch("glGetQueryBufferObjectui64v", catch_unwind(||(self.getquerybufferobjectui64v)(id, buffer, pname, offset)));
28101		#[cfg(feature = "diagnose")]
28102		if let Ok(ret) = ret {
28103			return to_result("glGetQueryBufferObjectui64v", ret, self.glGetError());
28104		} else {
28105			return ret
28106		}
28107		#[cfg(not(feature = "diagnose"))]
28108		return ret;
28109	}
28110	#[inline(always)]
28111	fn glGetQueryBufferObjectuiv(&self, id: GLuint, buffer: GLuint, pname: GLenum, offset: GLintptr) -> Result<()> {
28112		let ret = process_catch("glGetQueryBufferObjectuiv", catch_unwind(||(self.getquerybufferobjectuiv)(id, buffer, pname, offset)));
28113		#[cfg(feature = "diagnose")]
28114		if let Ok(ret) = ret {
28115			return to_result("glGetQueryBufferObjectuiv", ret, self.glGetError());
28116		} else {
28117			return ret
28118		}
28119		#[cfg(not(feature = "diagnose"))]
28120		return ret;
28121	}
28122	#[inline(always)]
28123	fn glMemoryBarrierByRegion(&self, barriers: GLbitfield) -> Result<()> {
28124		let ret = process_catch("glMemoryBarrierByRegion", catch_unwind(||(self.memorybarrierbyregion)(barriers)));
28125		#[cfg(feature = "diagnose")]
28126		if let Ok(ret) = ret {
28127			return to_result("glMemoryBarrierByRegion", ret, self.glGetError());
28128		} else {
28129			return ret
28130		}
28131		#[cfg(not(feature = "diagnose"))]
28132		return ret;
28133	}
28134	#[inline(always)]
28135	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<()> {
28136		let ret = process_catch("glGetTextureSubImage", catch_unwind(||(self.gettexturesubimage)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, bufSize, pixels)));
28137		#[cfg(feature = "diagnose")]
28138		if let Ok(ret) = ret {
28139			return to_result("glGetTextureSubImage", ret, self.glGetError());
28140		} else {
28141			return ret
28142		}
28143		#[cfg(not(feature = "diagnose"))]
28144		return ret;
28145	}
28146	#[inline(always)]
28147	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<()> {
28148		let ret = process_catch("glGetCompressedTextureSubImage", catch_unwind(||(self.getcompressedtexturesubimage)(texture, level, xoffset, yoffset, zoffset, width, height, depth, bufSize, pixels)));
28149		#[cfg(feature = "diagnose")]
28150		if let Ok(ret) = ret {
28151			return to_result("glGetCompressedTextureSubImage", ret, self.glGetError());
28152		} else {
28153			return ret
28154		}
28155		#[cfg(not(feature = "diagnose"))]
28156		return ret;
28157	}
28158	#[inline(always)]
28159	fn glGetGraphicsResetStatus(&self) -> Result<GLenum> {
28160		let ret = process_catch("glGetGraphicsResetStatus", catch_unwind(||(self.getgraphicsresetstatus)()));
28161		#[cfg(feature = "diagnose")]
28162		if let Ok(ret) = ret {
28163			return to_result("glGetGraphicsResetStatus", ret, self.glGetError());
28164		} else {
28165			return ret
28166		}
28167		#[cfg(not(feature = "diagnose"))]
28168		return ret;
28169	}
28170	#[inline(always)]
28171	fn glGetnCompressedTexImage(&self, target: GLenum, lod: GLint, bufSize: GLsizei, pixels: *mut c_void) -> Result<()> {
28172		let ret = process_catch("glGetnCompressedTexImage", catch_unwind(||(self.getncompressedteximage)(target, lod, bufSize, pixels)));
28173		#[cfg(feature = "diagnose")]
28174		if let Ok(ret) = ret {
28175			return to_result("glGetnCompressedTexImage", ret, self.glGetError());
28176		} else {
28177			return ret
28178		}
28179		#[cfg(not(feature = "diagnose"))]
28180		return ret;
28181	}
28182	#[inline(always)]
28183	fn glGetnTexImage(&self, target: GLenum, level: GLint, format: GLenum, type_: GLenum, bufSize: GLsizei, pixels: *mut c_void) -> Result<()> {
28184		let ret = process_catch("glGetnTexImage", catch_unwind(||(self.getnteximage)(target, level, format, type_, bufSize, pixels)));
28185		#[cfg(feature = "diagnose")]
28186		if let Ok(ret) = ret {
28187			return to_result("glGetnTexImage", ret, self.glGetError());
28188		} else {
28189			return ret
28190		}
28191		#[cfg(not(feature = "diagnose"))]
28192		return ret;
28193	}
28194	#[inline(always)]
28195	fn glGetnUniformdv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLdouble) -> Result<()> {
28196		let ret = process_catch("glGetnUniformdv", catch_unwind(||(self.getnuniformdv)(program, location, bufSize, params)));
28197		#[cfg(feature = "diagnose")]
28198		if let Ok(ret) = ret {
28199			return to_result("glGetnUniformdv", ret, self.glGetError());
28200		} else {
28201			return ret
28202		}
28203		#[cfg(not(feature = "diagnose"))]
28204		return ret;
28205	}
28206	#[inline(always)]
28207	fn glGetnUniformfv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLfloat) -> Result<()> {
28208		let ret = process_catch("glGetnUniformfv", catch_unwind(||(self.getnuniformfv)(program, location, bufSize, params)));
28209		#[cfg(feature = "diagnose")]
28210		if let Ok(ret) = ret {
28211			return to_result("glGetnUniformfv", ret, self.glGetError());
28212		} else {
28213			return ret
28214		}
28215		#[cfg(not(feature = "diagnose"))]
28216		return ret;
28217	}
28218	#[inline(always)]
28219	fn glGetnUniformiv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLint) -> Result<()> {
28220		let ret = process_catch("glGetnUniformiv", catch_unwind(||(self.getnuniformiv)(program, location, bufSize, params)));
28221		#[cfg(feature = "diagnose")]
28222		if let Ok(ret) = ret {
28223			return to_result("glGetnUniformiv", ret, self.glGetError());
28224		} else {
28225			return ret
28226		}
28227		#[cfg(not(feature = "diagnose"))]
28228		return ret;
28229	}
28230	#[inline(always)]
28231	fn glGetnUniformuiv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLuint) -> Result<()> {
28232		let ret = process_catch("glGetnUniformuiv", catch_unwind(||(self.getnuniformuiv)(program, location, bufSize, params)));
28233		#[cfg(feature = "diagnose")]
28234		if let Ok(ret) = ret {
28235			return to_result("glGetnUniformuiv", ret, self.glGetError());
28236		} else {
28237			return ret
28238		}
28239		#[cfg(not(feature = "diagnose"))]
28240		return ret;
28241	}
28242	#[inline(always)]
28243	fn glReadnPixels(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, bufSize: GLsizei, data: *mut c_void) -> Result<()> {
28244		let ret = process_catch("glReadnPixels", catch_unwind(||(self.readnpixels)(x, y, width, height, format, type_, bufSize, data)));
28245		#[cfg(feature = "diagnose")]
28246		if let Ok(ret) = ret {
28247			return to_result("glReadnPixels", ret, self.glGetError());
28248		} else {
28249			return ret
28250		}
28251		#[cfg(not(feature = "diagnose"))]
28252		return ret;
28253	}
28254	#[inline(always)]
28255	fn glGetnMapdv(&self, target: GLenum, query: GLenum, bufSize: GLsizei, v: *mut GLdouble) -> Result<()> {
28256		let ret = process_catch("glGetnMapdv", catch_unwind(||(self.getnmapdv)(target, query, bufSize, v)));
28257		#[cfg(feature = "diagnose")]
28258		if let Ok(ret) = ret {
28259			return to_result("glGetnMapdv", ret, self.glGetError());
28260		} else {
28261			return ret
28262		}
28263		#[cfg(not(feature = "diagnose"))]
28264		return ret;
28265	}
28266	#[inline(always)]
28267	fn glGetnMapfv(&self, target: GLenum, query: GLenum, bufSize: GLsizei, v: *mut GLfloat) -> Result<()> {
28268		let ret = process_catch("glGetnMapfv", catch_unwind(||(self.getnmapfv)(target, query, bufSize, v)));
28269		#[cfg(feature = "diagnose")]
28270		if let Ok(ret) = ret {
28271			return to_result("glGetnMapfv", ret, self.glGetError());
28272		} else {
28273			return ret
28274		}
28275		#[cfg(not(feature = "diagnose"))]
28276		return ret;
28277	}
28278	#[inline(always)]
28279	fn glGetnMapiv(&self, target: GLenum, query: GLenum, bufSize: GLsizei, v: *mut GLint) -> Result<()> {
28280		let ret = process_catch("glGetnMapiv", catch_unwind(||(self.getnmapiv)(target, query, bufSize, v)));
28281		#[cfg(feature = "diagnose")]
28282		if let Ok(ret) = ret {
28283			return to_result("glGetnMapiv", ret, self.glGetError());
28284		} else {
28285			return ret
28286		}
28287		#[cfg(not(feature = "diagnose"))]
28288		return ret;
28289	}
28290	#[inline(always)]
28291	fn glGetnPixelMapfv(&self, map: GLenum, bufSize: GLsizei, values: *mut GLfloat) -> Result<()> {
28292		let ret = process_catch("glGetnPixelMapfv", catch_unwind(||(self.getnpixelmapfv)(map, bufSize, values)));
28293		#[cfg(feature = "diagnose")]
28294		if let Ok(ret) = ret {
28295			return to_result("glGetnPixelMapfv", ret, self.glGetError());
28296		} else {
28297			return ret
28298		}
28299		#[cfg(not(feature = "diagnose"))]
28300		return ret;
28301	}
28302	#[inline(always)]
28303	fn glGetnPixelMapuiv(&self, map: GLenum, bufSize: GLsizei, values: *mut GLuint) -> Result<()> {
28304		let ret = process_catch("glGetnPixelMapuiv", catch_unwind(||(self.getnpixelmapuiv)(map, bufSize, values)));
28305		#[cfg(feature = "diagnose")]
28306		if let Ok(ret) = ret {
28307			return to_result("glGetnPixelMapuiv", ret, self.glGetError());
28308		} else {
28309			return ret
28310		}
28311		#[cfg(not(feature = "diagnose"))]
28312		return ret;
28313	}
28314	#[inline(always)]
28315	fn glGetnPixelMapusv(&self, map: GLenum, bufSize: GLsizei, values: *mut GLushort) -> Result<()> {
28316		let ret = process_catch("glGetnPixelMapusv", catch_unwind(||(self.getnpixelmapusv)(map, bufSize, values)));
28317		#[cfg(feature = "diagnose")]
28318		if let Ok(ret) = ret {
28319			return to_result("glGetnPixelMapusv", ret, self.glGetError());
28320		} else {
28321			return ret
28322		}
28323		#[cfg(not(feature = "diagnose"))]
28324		return ret;
28325	}
28326	#[inline(always)]
28327	fn glGetnPolygonStipple(&self, bufSize: GLsizei, pattern: *mut GLubyte) -> Result<()> {
28328		let ret = process_catch("glGetnPolygonStipple", catch_unwind(||(self.getnpolygonstipple)(bufSize, pattern)));
28329		#[cfg(feature = "diagnose")]
28330		if let Ok(ret) = ret {
28331			return to_result("glGetnPolygonStipple", ret, self.glGetError());
28332		} else {
28333			return ret
28334		}
28335		#[cfg(not(feature = "diagnose"))]
28336		return ret;
28337	}
28338	#[inline(always)]
28339	fn glGetnColorTable(&self, target: GLenum, format: GLenum, type_: GLenum, bufSize: GLsizei, table: *mut c_void) -> Result<()> {
28340		let ret = process_catch("glGetnColorTable", catch_unwind(||(self.getncolortable)(target, format, type_, bufSize, table)));
28341		#[cfg(feature = "diagnose")]
28342		if let Ok(ret) = ret {
28343			return to_result("glGetnColorTable", ret, self.glGetError());
28344		} else {
28345			return ret
28346		}
28347		#[cfg(not(feature = "diagnose"))]
28348		return ret;
28349	}
28350	#[inline(always)]
28351	fn glGetnConvolutionFilter(&self, target: GLenum, format: GLenum, type_: GLenum, bufSize: GLsizei, image: *mut c_void) -> Result<()> {
28352		let ret = process_catch("glGetnConvolutionFilter", catch_unwind(||(self.getnconvolutionfilter)(target, format, type_, bufSize, image)));
28353		#[cfg(feature = "diagnose")]
28354		if let Ok(ret) = ret {
28355			return to_result("glGetnConvolutionFilter", ret, self.glGetError());
28356		} else {
28357			return ret
28358		}
28359		#[cfg(not(feature = "diagnose"))]
28360		return ret;
28361	}
28362	#[inline(always)]
28363	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<()> {
28364		let ret = process_catch("glGetnSeparableFilter", catch_unwind(||(self.getnseparablefilter)(target, format, type_, rowBufSize, row, columnBufSize, column, span)));
28365		#[cfg(feature = "diagnose")]
28366		if let Ok(ret) = ret {
28367			return to_result("glGetnSeparableFilter", ret, self.glGetError());
28368		} else {
28369			return ret
28370		}
28371		#[cfg(not(feature = "diagnose"))]
28372		return ret;
28373	}
28374	#[inline(always)]
28375	fn glGetnHistogram(&self, target: GLenum, reset: GLboolean, format: GLenum, type_: GLenum, bufSize: GLsizei, values: *mut c_void) -> Result<()> {
28376		let ret = process_catch("glGetnHistogram", catch_unwind(||(self.getnhistogram)(target, reset, format, type_, bufSize, values)));
28377		#[cfg(feature = "diagnose")]
28378		if let Ok(ret) = ret {
28379			return to_result("glGetnHistogram", ret, self.glGetError());
28380		} else {
28381			return ret
28382		}
28383		#[cfg(not(feature = "diagnose"))]
28384		return ret;
28385	}
28386	#[inline(always)]
28387	fn glGetnMinmax(&self, target: GLenum, reset: GLboolean, format: GLenum, type_: GLenum, bufSize: GLsizei, values: *mut c_void) -> Result<()> {
28388		let ret = process_catch("glGetnMinmax", catch_unwind(||(self.getnminmax)(target, reset, format, type_, bufSize, values)));
28389		#[cfg(feature = "diagnose")]
28390		if let Ok(ret) = ret {
28391			return to_result("glGetnMinmax", ret, self.glGetError());
28392		} else {
28393			return ret
28394		}
28395		#[cfg(not(feature = "diagnose"))]
28396		return ret;
28397	}
28398	#[inline(always)]
28399	fn glTextureBarrier(&self) -> Result<()> {
28400		let ret = process_catch("glTextureBarrier", catch_unwind(||(self.texturebarrier)()));
28401		#[cfg(feature = "diagnose")]
28402		if let Ok(ret) = ret {
28403			return to_result("glTextureBarrier", ret, self.glGetError());
28404		} else {
28405			return ret
28406		}
28407		#[cfg(not(feature = "diagnose"))]
28408		return ret;
28409	}
28410}
28411
28412impl Version45 {
28413	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
28414		let (_spec, major, minor, release) = base.get_version();
28415		if (major, minor, release) < (4, 5, 0) {
28416			return Self::default();
28417		}
28418		Self {
28419			available: true,
28420			geterror: {let proc = get_proc_address("glGetError"); if proc == null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
28421			clipcontrol: {let proc = get_proc_address("glClipControl"); if proc == null() {dummy_pfnglclipcontrolproc} else {unsafe{transmute(proc)}}},
28422			createtransformfeedbacks: {let proc = get_proc_address("glCreateTransformFeedbacks"); if proc == null() {dummy_pfnglcreatetransformfeedbacksproc} else {unsafe{transmute(proc)}}},
28423			transformfeedbackbufferbase: {let proc = get_proc_address("glTransformFeedbackBufferBase"); if proc == null() {dummy_pfngltransformfeedbackbufferbaseproc} else {unsafe{transmute(proc)}}},
28424			transformfeedbackbufferrange: {let proc = get_proc_address("glTransformFeedbackBufferRange"); if proc == null() {dummy_pfngltransformfeedbackbufferrangeproc} else {unsafe{transmute(proc)}}},
28425			gettransformfeedbackiv: {let proc = get_proc_address("glGetTransformFeedbackiv"); if proc == null() {dummy_pfnglgettransformfeedbackivproc} else {unsafe{transmute(proc)}}},
28426			gettransformfeedbacki_v: {let proc = get_proc_address("glGetTransformFeedbacki_v"); if proc == null() {dummy_pfnglgettransformfeedbacki_vproc} else {unsafe{transmute(proc)}}},
28427			gettransformfeedbacki64_v: {let proc = get_proc_address("glGetTransformFeedbacki64_v"); if proc == null() {dummy_pfnglgettransformfeedbacki64_vproc} else {unsafe{transmute(proc)}}},
28428			createbuffers: {let proc = get_proc_address("glCreateBuffers"); if proc == null() {dummy_pfnglcreatebuffersproc} else {unsafe{transmute(proc)}}},
28429			namedbufferstorage: {let proc = get_proc_address("glNamedBufferStorage"); if proc == null() {dummy_pfnglnamedbufferstorageproc} else {unsafe{transmute(proc)}}},
28430			namedbufferdata: {let proc = get_proc_address("glNamedBufferData"); if proc == null() {dummy_pfnglnamedbufferdataproc} else {unsafe{transmute(proc)}}},
28431			namedbuffersubdata: {let proc = get_proc_address("glNamedBufferSubData"); if proc == null() {dummy_pfnglnamedbuffersubdataproc} else {unsafe{transmute(proc)}}},
28432			copynamedbuffersubdata: {let proc = get_proc_address("glCopyNamedBufferSubData"); if proc == null() {dummy_pfnglcopynamedbuffersubdataproc} else {unsafe{transmute(proc)}}},
28433			clearnamedbufferdata: {let proc = get_proc_address("glClearNamedBufferData"); if proc == null() {dummy_pfnglclearnamedbufferdataproc} else {unsafe{transmute(proc)}}},
28434			clearnamedbuffersubdata: {let proc = get_proc_address("glClearNamedBufferSubData"); if proc == null() {dummy_pfnglclearnamedbuffersubdataproc} else {unsafe{transmute(proc)}}},
28435			mapnamedbuffer: {let proc = get_proc_address("glMapNamedBuffer"); if proc == null() {dummy_pfnglmapnamedbufferproc} else {unsafe{transmute(proc)}}},
28436			mapnamedbufferrange: {let proc = get_proc_address("glMapNamedBufferRange"); if proc == null() {dummy_pfnglmapnamedbufferrangeproc} else {unsafe{transmute(proc)}}},
28437			unmapnamedbuffer: {let proc = get_proc_address("glUnmapNamedBuffer"); if proc == null() {dummy_pfnglunmapnamedbufferproc} else {unsafe{transmute(proc)}}},
28438			flushmappednamedbufferrange: {let proc = get_proc_address("glFlushMappedNamedBufferRange"); if proc == null() {dummy_pfnglflushmappednamedbufferrangeproc} else {unsafe{transmute(proc)}}},
28439			getnamedbufferparameteriv: {let proc = get_proc_address("glGetNamedBufferParameteriv"); if proc == null() {dummy_pfnglgetnamedbufferparameterivproc} else {unsafe{transmute(proc)}}},
28440			getnamedbufferparameteri64v: {let proc = get_proc_address("glGetNamedBufferParameteri64v"); if proc == null() {dummy_pfnglgetnamedbufferparameteri64vproc} else {unsafe{transmute(proc)}}},
28441			getnamedbufferpointerv: {let proc = get_proc_address("glGetNamedBufferPointerv"); if proc == null() {dummy_pfnglgetnamedbufferpointervproc} else {unsafe{transmute(proc)}}},
28442			getnamedbuffersubdata: {let proc = get_proc_address("glGetNamedBufferSubData"); if proc == null() {dummy_pfnglgetnamedbuffersubdataproc} else {unsafe{transmute(proc)}}},
28443			createframebuffers: {let proc = get_proc_address("glCreateFramebuffers"); if proc == null() {dummy_pfnglcreateframebuffersproc} else {unsafe{transmute(proc)}}},
28444			namedframebufferrenderbuffer: {let proc = get_proc_address("glNamedFramebufferRenderbuffer"); if proc == null() {dummy_pfnglnamedframebufferrenderbufferproc} else {unsafe{transmute(proc)}}},
28445			namedframebufferparameteri: {let proc = get_proc_address("glNamedFramebufferParameteri"); if proc == null() {dummy_pfnglnamedframebufferparameteriproc} else {unsafe{transmute(proc)}}},
28446			namedframebuffertexture: {let proc = get_proc_address("glNamedFramebufferTexture"); if proc == null() {dummy_pfnglnamedframebuffertextureproc} else {unsafe{transmute(proc)}}},
28447			namedframebuffertexturelayer: {let proc = get_proc_address("glNamedFramebufferTextureLayer"); if proc == null() {dummy_pfnglnamedframebuffertexturelayerproc} else {unsafe{transmute(proc)}}},
28448			namedframebufferdrawbuffer: {let proc = get_proc_address("glNamedFramebufferDrawBuffer"); if proc == null() {dummy_pfnglnamedframebufferdrawbufferproc} else {unsafe{transmute(proc)}}},
28449			namedframebufferdrawbuffers: {let proc = get_proc_address("glNamedFramebufferDrawBuffers"); if proc == null() {dummy_pfnglnamedframebufferdrawbuffersproc} else {unsafe{transmute(proc)}}},
28450			namedframebufferreadbuffer: {let proc = get_proc_address("glNamedFramebufferReadBuffer"); if proc == null() {dummy_pfnglnamedframebufferreadbufferproc} else {unsafe{transmute(proc)}}},
28451			invalidatenamedframebufferdata: {let proc = get_proc_address("glInvalidateNamedFramebufferData"); if proc == null() {dummy_pfnglinvalidatenamedframebufferdataproc} else {unsafe{transmute(proc)}}},
28452			invalidatenamedframebuffersubdata: {let proc = get_proc_address("glInvalidateNamedFramebufferSubData"); if proc == null() {dummy_pfnglinvalidatenamedframebuffersubdataproc} else {unsafe{transmute(proc)}}},
28453			clearnamedframebufferiv: {let proc = get_proc_address("glClearNamedFramebufferiv"); if proc == null() {dummy_pfnglclearnamedframebufferivproc} else {unsafe{transmute(proc)}}},
28454			clearnamedframebufferuiv: {let proc = get_proc_address("glClearNamedFramebufferuiv"); if proc == null() {dummy_pfnglclearnamedframebufferuivproc} else {unsafe{transmute(proc)}}},
28455			clearnamedframebufferfv: {let proc = get_proc_address("glClearNamedFramebufferfv"); if proc == null() {dummy_pfnglclearnamedframebufferfvproc} else {unsafe{transmute(proc)}}},
28456			clearnamedframebufferfi: {let proc = get_proc_address("glClearNamedFramebufferfi"); if proc == null() {dummy_pfnglclearnamedframebufferfiproc} else {unsafe{transmute(proc)}}},
28457			blitnamedframebuffer: {let proc = get_proc_address("glBlitNamedFramebuffer"); if proc == null() {dummy_pfnglblitnamedframebufferproc} else {unsafe{transmute(proc)}}},
28458			checknamedframebufferstatus: {let proc = get_proc_address("glCheckNamedFramebufferStatus"); if proc == null() {dummy_pfnglchecknamedframebufferstatusproc} else {unsafe{transmute(proc)}}},
28459			getnamedframebufferparameteriv: {let proc = get_proc_address("glGetNamedFramebufferParameteriv"); if proc == null() {dummy_pfnglgetnamedframebufferparameterivproc} else {unsafe{transmute(proc)}}},
28460			getnamedframebufferattachmentparameteriv: {let proc = get_proc_address("glGetNamedFramebufferAttachmentParameteriv"); if proc == null() {dummy_pfnglgetnamedframebufferattachmentparameterivproc} else {unsafe{transmute(proc)}}},
28461			createrenderbuffers: {let proc = get_proc_address("glCreateRenderbuffers"); if proc == null() {dummy_pfnglcreaterenderbuffersproc} else {unsafe{transmute(proc)}}},
28462			namedrenderbufferstorage: {let proc = get_proc_address("glNamedRenderbufferStorage"); if proc == null() {dummy_pfnglnamedrenderbufferstorageproc} else {unsafe{transmute(proc)}}},
28463			namedrenderbufferstoragemultisample: {let proc = get_proc_address("glNamedRenderbufferStorageMultisample"); if proc == null() {dummy_pfnglnamedrenderbufferstoragemultisampleproc} else {unsafe{transmute(proc)}}},
28464			getnamedrenderbufferparameteriv: {let proc = get_proc_address("glGetNamedRenderbufferParameteriv"); if proc == null() {dummy_pfnglgetnamedrenderbufferparameterivproc} else {unsafe{transmute(proc)}}},
28465			createtextures: {let proc = get_proc_address("glCreateTextures"); if proc == null() {dummy_pfnglcreatetexturesproc} else {unsafe{transmute(proc)}}},
28466			texturebuffer: {let proc = get_proc_address("glTextureBuffer"); if proc == null() {dummy_pfngltexturebufferproc} else {unsafe{transmute(proc)}}},
28467			texturebufferrange: {let proc = get_proc_address("glTextureBufferRange"); if proc == null() {dummy_pfngltexturebufferrangeproc} else {unsafe{transmute(proc)}}},
28468			texturestorage1d: {let proc = get_proc_address("glTextureStorage1D"); if proc == null() {dummy_pfngltexturestorage1dproc} else {unsafe{transmute(proc)}}},
28469			texturestorage2d: {let proc = get_proc_address("glTextureStorage2D"); if proc == null() {dummy_pfngltexturestorage2dproc} else {unsafe{transmute(proc)}}},
28470			texturestorage3d: {let proc = get_proc_address("glTextureStorage3D"); if proc == null() {dummy_pfngltexturestorage3dproc} else {unsafe{transmute(proc)}}},
28471			texturestorage2dmultisample: {let proc = get_proc_address("glTextureStorage2DMultisample"); if proc == null() {dummy_pfngltexturestorage2dmultisampleproc} else {unsafe{transmute(proc)}}},
28472			texturestorage3dmultisample: {let proc = get_proc_address("glTextureStorage3DMultisample"); if proc == null() {dummy_pfngltexturestorage3dmultisampleproc} else {unsafe{transmute(proc)}}},
28473			texturesubimage1d: {let proc = get_proc_address("glTextureSubImage1D"); if proc == null() {dummy_pfngltexturesubimage1dproc} else {unsafe{transmute(proc)}}},
28474			texturesubimage2d: {let proc = get_proc_address("glTextureSubImage2D"); if proc == null() {dummy_pfngltexturesubimage2dproc} else {unsafe{transmute(proc)}}},
28475			texturesubimage3d: {let proc = get_proc_address("glTextureSubImage3D"); if proc == null() {dummy_pfngltexturesubimage3dproc} else {unsafe{transmute(proc)}}},
28476			compressedtexturesubimage1d: {let proc = get_proc_address("glCompressedTextureSubImage1D"); if proc == null() {dummy_pfnglcompressedtexturesubimage1dproc} else {unsafe{transmute(proc)}}},
28477			compressedtexturesubimage2d: {let proc = get_proc_address("glCompressedTextureSubImage2D"); if proc == null() {dummy_pfnglcompressedtexturesubimage2dproc} else {unsafe{transmute(proc)}}},
28478			compressedtexturesubimage3d: {let proc = get_proc_address("glCompressedTextureSubImage3D"); if proc == null() {dummy_pfnglcompressedtexturesubimage3dproc} else {unsafe{transmute(proc)}}},
28479			copytexturesubimage1d: {let proc = get_proc_address("glCopyTextureSubImage1D"); if proc == null() {dummy_pfnglcopytexturesubimage1dproc} else {unsafe{transmute(proc)}}},
28480			copytexturesubimage2d: {let proc = get_proc_address("glCopyTextureSubImage2D"); if proc == null() {dummy_pfnglcopytexturesubimage2dproc} else {unsafe{transmute(proc)}}},
28481			copytexturesubimage3d: {let proc = get_proc_address("glCopyTextureSubImage3D"); if proc == null() {dummy_pfnglcopytexturesubimage3dproc} else {unsafe{transmute(proc)}}},
28482			textureparameterf: {let proc = get_proc_address("glTextureParameterf"); if proc == null() {dummy_pfngltextureparameterfproc} else {unsafe{transmute(proc)}}},
28483			textureparameterfv: {let proc = get_proc_address("glTextureParameterfv"); if proc == null() {dummy_pfngltextureparameterfvproc} else {unsafe{transmute(proc)}}},
28484			textureparameteri: {let proc = get_proc_address("glTextureParameteri"); if proc == null() {dummy_pfngltextureparameteriproc} else {unsafe{transmute(proc)}}},
28485			textureparameteriiv: {let proc = get_proc_address("glTextureParameterIiv"); if proc == null() {dummy_pfngltextureparameteriivproc} else {unsafe{transmute(proc)}}},
28486			textureparameteriuiv: {let proc = get_proc_address("glTextureParameterIuiv"); if proc == null() {dummy_pfngltextureparameteriuivproc} else {unsafe{transmute(proc)}}},
28487			textureparameteriv: {let proc = get_proc_address("glTextureParameteriv"); if proc == null() {dummy_pfngltextureparameterivproc} else {unsafe{transmute(proc)}}},
28488			generatetexturemipmap: {let proc = get_proc_address("glGenerateTextureMipmap"); if proc == null() {dummy_pfnglgeneratetexturemipmapproc} else {unsafe{transmute(proc)}}},
28489			bindtextureunit: {let proc = get_proc_address("glBindTextureUnit"); if proc == null() {dummy_pfnglbindtextureunitproc} else {unsafe{transmute(proc)}}},
28490			gettextureimage: {let proc = get_proc_address("glGetTextureImage"); if proc == null() {dummy_pfnglgettextureimageproc} else {unsafe{transmute(proc)}}},
28491			getcompressedtextureimage: {let proc = get_proc_address("glGetCompressedTextureImage"); if proc == null() {dummy_pfnglgetcompressedtextureimageproc} else {unsafe{transmute(proc)}}},
28492			gettexturelevelparameterfv: {let proc = get_proc_address("glGetTextureLevelParameterfv"); if proc == null() {dummy_pfnglgettexturelevelparameterfvproc} else {unsafe{transmute(proc)}}},
28493			gettexturelevelparameteriv: {let proc = get_proc_address("glGetTextureLevelParameteriv"); if proc == null() {dummy_pfnglgettexturelevelparameterivproc} else {unsafe{transmute(proc)}}},
28494			gettextureparameterfv: {let proc = get_proc_address("glGetTextureParameterfv"); if proc == null() {dummy_pfnglgettextureparameterfvproc} else {unsafe{transmute(proc)}}},
28495			gettextureparameteriiv: {let proc = get_proc_address("glGetTextureParameterIiv"); if proc == null() {dummy_pfnglgettextureparameteriivproc} else {unsafe{transmute(proc)}}},
28496			gettextureparameteriuiv: {let proc = get_proc_address("glGetTextureParameterIuiv"); if proc == null() {dummy_pfnglgettextureparameteriuivproc} else {unsafe{transmute(proc)}}},
28497			gettextureparameteriv: {let proc = get_proc_address("glGetTextureParameteriv"); if proc == null() {dummy_pfnglgettextureparameterivproc} else {unsafe{transmute(proc)}}},
28498			createvertexarrays: {let proc = get_proc_address("glCreateVertexArrays"); if proc == null() {dummy_pfnglcreatevertexarraysproc} else {unsafe{transmute(proc)}}},
28499			disablevertexarrayattrib: {let proc = get_proc_address("glDisableVertexArrayAttrib"); if proc == null() {dummy_pfngldisablevertexarrayattribproc} else {unsafe{transmute(proc)}}},
28500			enablevertexarrayattrib: {let proc = get_proc_address("glEnableVertexArrayAttrib"); if proc == null() {dummy_pfnglenablevertexarrayattribproc} else {unsafe{transmute(proc)}}},
28501			vertexarrayelementbuffer: {let proc = get_proc_address("glVertexArrayElementBuffer"); if proc == null() {dummy_pfnglvertexarrayelementbufferproc} else {unsafe{transmute(proc)}}},
28502			vertexarrayvertexbuffer: {let proc = get_proc_address("glVertexArrayVertexBuffer"); if proc == null() {dummy_pfnglvertexarrayvertexbufferproc} else {unsafe{transmute(proc)}}},
28503			vertexarrayvertexbuffers: {let proc = get_proc_address("glVertexArrayVertexBuffers"); if proc == null() {dummy_pfnglvertexarrayvertexbuffersproc} else {unsafe{transmute(proc)}}},
28504			vertexarrayattribbinding: {let proc = get_proc_address("glVertexArrayAttribBinding"); if proc == null() {dummy_pfnglvertexarrayattribbindingproc} else {unsafe{transmute(proc)}}},
28505			vertexarrayattribformat: {let proc = get_proc_address("glVertexArrayAttribFormat"); if proc == null() {dummy_pfnglvertexarrayattribformatproc} else {unsafe{transmute(proc)}}},
28506			vertexarrayattribiformat: {let proc = get_proc_address("glVertexArrayAttribIFormat"); if proc == null() {dummy_pfnglvertexarrayattribiformatproc} else {unsafe{transmute(proc)}}},
28507			vertexarrayattriblformat: {let proc = get_proc_address("glVertexArrayAttribLFormat"); if proc == null() {dummy_pfnglvertexarrayattriblformatproc} else {unsafe{transmute(proc)}}},
28508			vertexarraybindingdivisor: {let proc = get_proc_address("glVertexArrayBindingDivisor"); if proc == null() {dummy_pfnglvertexarraybindingdivisorproc} else {unsafe{transmute(proc)}}},
28509			getvertexarrayiv: {let proc = get_proc_address("glGetVertexArrayiv"); if proc == null() {dummy_pfnglgetvertexarrayivproc} else {unsafe{transmute(proc)}}},
28510			getvertexarrayindexediv: {let proc = get_proc_address("glGetVertexArrayIndexediv"); if proc == null() {dummy_pfnglgetvertexarrayindexedivproc} else {unsafe{transmute(proc)}}},
28511			getvertexarrayindexed64iv: {let proc = get_proc_address("glGetVertexArrayIndexed64iv"); if proc == null() {dummy_pfnglgetvertexarrayindexed64ivproc} else {unsafe{transmute(proc)}}},
28512			createsamplers: {let proc = get_proc_address("glCreateSamplers"); if proc == null() {dummy_pfnglcreatesamplersproc} else {unsafe{transmute(proc)}}},
28513			createprogrampipelines: {let proc = get_proc_address("glCreateProgramPipelines"); if proc == null() {dummy_pfnglcreateprogrampipelinesproc} else {unsafe{transmute(proc)}}},
28514			createqueries: {let proc = get_proc_address("glCreateQueries"); if proc == null() {dummy_pfnglcreatequeriesproc} else {unsafe{transmute(proc)}}},
28515			getquerybufferobjecti64v: {let proc = get_proc_address("glGetQueryBufferObjecti64v"); if proc == null() {dummy_pfnglgetquerybufferobjecti64vproc} else {unsafe{transmute(proc)}}},
28516			getquerybufferobjectiv: {let proc = get_proc_address("glGetQueryBufferObjectiv"); if proc == null() {dummy_pfnglgetquerybufferobjectivproc} else {unsafe{transmute(proc)}}},
28517			getquerybufferobjectui64v: {let proc = get_proc_address("glGetQueryBufferObjectui64v"); if proc == null() {dummy_pfnglgetquerybufferobjectui64vproc} else {unsafe{transmute(proc)}}},
28518			getquerybufferobjectuiv: {let proc = get_proc_address("glGetQueryBufferObjectuiv"); if proc == null() {dummy_pfnglgetquerybufferobjectuivproc} else {unsafe{transmute(proc)}}},
28519			memorybarrierbyregion: {let proc = get_proc_address("glMemoryBarrierByRegion"); if proc == null() {dummy_pfnglmemorybarrierbyregionproc} else {unsafe{transmute(proc)}}},
28520			gettexturesubimage: {let proc = get_proc_address("glGetTextureSubImage"); if proc == null() {dummy_pfnglgettexturesubimageproc} else {unsafe{transmute(proc)}}},
28521			getcompressedtexturesubimage: {let proc = get_proc_address("glGetCompressedTextureSubImage"); if proc == null() {dummy_pfnglgetcompressedtexturesubimageproc} else {unsafe{transmute(proc)}}},
28522			getgraphicsresetstatus: {let proc = get_proc_address("glGetGraphicsResetStatus"); if proc == null() {dummy_pfnglgetgraphicsresetstatusproc} else {unsafe{transmute(proc)}}},
28523			getncompressedteximage: {let proc = get_proc_address("glGetnCompressedTexImage"); if proc == null() {dummy_pfnglgetncompressedteximageproc} else {unsafe{transmute(proc)}}},
28524			getnteximage: {let proc = get_proc_address("glGetnTexImage"); if proc == null() {dummy_pfnglgetnteximageproc} else {unsafe{transmute(proc)}}},
28525			getnuniformdv: {let proc = get_proc_address("glGetnUniformdv"); if proc == null() {dummy_pfnglgetnuniformdvproc} else {unsafe{transmute(proc)}}},
28526			getnuniformfv: {let proc = get_proc_address("glGetnUniformfv"); if proc == null() {dummy_pfnglgetnuniformfvproc} else {unsafe{transmute(proc)}}},
28527			getnuniformiv: {let proc = get_proc_address("glGetnUniformiv"); if proc == null() {dummy_pfnglgetnuniformivproc} else {unsafe{transmute(proc)}}},
28528			getnuniformuiv: {let proc = get_proc_address("glGetnUniformuiv"); if proc == null() {dummy_pfnglgetnuniformuivproc} else {unsafe{transmute(proc)}}},
28529			readnpixels: {let proc = get_proc_address("glReadnPixels"); if proc == null() {dummy_pfnglreadnpixelsproc} else {unsafe{transmute(proc)}}},
28530			getnmapdv: {let proc = get_proc_address("glGetnMapdv"); if proc == null() {dummy_pfnglgetnmapdvproc} else {unsafe{transmute(proc)}}},
28531			getnmapfv: {let proc = get_proc_address("glGetnMapfv"); if proc == null() {dummy_pfnglgetnmapfvproc} else {unsafe{transmute(proc)}}},
28532			getnmapiv: {let proc = get_proc_address("glGetnMapiv"); if proc == null() {dummy_pfnglgetnmapivproc} else {unsafe{transmute(proc)}}},
28533			getnpixelmapfv: {let proc = get_proc_address("glGetnPixelMapfv"); if proc == null() {dummy_pfnglgetnpixelmapfvproc} else {unsafe{transmute(proc)}}},
28534			getnpixelmapuiv: {let proc = get_proc_address("glGetnPixelMapuiv"); if proc == null() {dummy_pfnglgetnpixelmapuivproc} else {unsafe{transmute(proc)}}},
28535			getnpixelmapusv: {let proc = get_proc_address("glGetnPixelMapusv"); if proc == null() {dummy_pfnglgetnpixelmapusvproc} else {unsafe{transmute(proc)}}},
28536			getnpolygonstipple: {let proc = get_proc_address("glGetnPolygonStipple"); if proc == null() {dummy_pfnglgetnpolygonstippleproc} else {unsafe{transmute(proc)}}},
28537			getncolortable: {let proc = get_proc_address("glGetnColorTable"); if proc == null() {dummy_pfnglgetncolortableproc} else {unsafe{transmute(proc)}}},
28538			getnconvolutionfilter: {let proc = get_proc_address("glGetnConvolutionFilter"); if proc == null() {dummy_pfnglgetnconvolutionfilterproc} else {unsafe{transmute(proc)}}},
28539			getnseparablefilter: {let proc = get_proc_address("glGetnSeparableFilter"); if proc == null() {dummy_pfnglgetnseparablefilterproc} else {unsafe{transmute(proc)}}},
28540			getnhistogram: {let proc = get_proc_address("glGetnHistogram"); if proc == null() {dummy_pfnglgetnhistogramproc} else {unsafe{transmute(proc)}}},
28541			getnminmax: {let proc = get_proc_address("glGetnMinmax"); if proc == null() {dummy_pfnglgetnminmaxproc} else {unsafe{transmute(proc)}}},
28542			texturebarrier: {let proc = get_proc_address("glTextureBarrier"); if proc == null() {dummy_pfngltexturebarrierproc} else {unsafe{transmute(proc)}}},
28543		}
28544	}
28545	#[inline(always)]
28546	pub fn get_available(&self) -> bool {
28547		self.available
28548	}
28549}
28550
28551impl Default for Version45 {
28552	fn default() -> Self {
28553		Self {
28554			available: false,
28555			geterror: dummy_pfnglgeterrorproc,
28556			clipcontrol: dummy_pfnglclipcontrolproc,
28557			createtransformfeedbacks: dummy_pfnglcreatetransformfeedbacksproc,
28558			transformfeedbackbufferbase: dummy_pfngltransformfeedbackbufferbaseproc,
28559			transformfeedbackbufferrange: dummy_pfngltransformfeedbackbufferrangeproc,
28560			gettransformfeedbackiv: dummy_pfnglgettransformfeedbackivproc,
28561			gettransformfeedbacki_v: dummy_pfnglgettransformfeedbacki_vproc,
28562			gettransformfeedbacki64_v: dummy_pfnglgettransformfeedbacki64_vproc,
28563			createbuffers: dummy_pfnglcreatebuffersproc,
28564			namedbufferstorage: dummy_pfnglnamedbufferstorageproc,
28565			namedbufferdata: dummy_pfnglnamedbufferdataproc,
28566			namedbuffersubdata: dummy_pfnglnamedbuffersubdataproc,
28567			copynamedbuffersubdata: dummy_pfnglcopynamedbuffersubdataproc,
28568			clearnamedbufferdata: dummy_pfnglclearnamedbufferdataproc,
28569			clearnamedbuffersubdata: dummy_pfnglclearnamedbuffersubdataproc,
28570			mapnamedbuffer: dummy_pfnglmapnamedbufferproc,
28571			mapnamedbufferrange: dummy_pfnglmapnamedbufferrangeproc,
28572			unmapnamedbuffer: dummy_pfnglunmapnamedbufferproc,
28573			flushmappednamedbufferrange: dummy_pfnglflushmappednamedbufferrangeproc,
28574			getnamedbufferparameteriv: dummy_pfnglgetnamedbufferparameterivproc,
28575			getnamedbufferparameteri64v: dummy_pfnglgetnamedbufferparameteri64vproc,
28576			getnamedbufferpointerv: dummy_pfnglgetnamedbufferpointervproc,
28577			getnamedbuffersubdata: dummy_pfnglgetnamedbuffersubdataproc,
28578			createframebuffers: dummy_pfnglcreateframebuffersproc,
28579			namedframebufferrenderbuffer: dummy_pfnglnamedframebufferrenderbufferproc,
28580			namedframebufferparameteri: dummy_pfnglnamedframebufferparameteriproc,
28581			namedframebuffertexture: dummy_pfnglnamedframebuffertextureproc,
28582			namedframebuffertexturelayer: dummy_pfnglnamedframebuffertexturelayerproc,
28583			namedframebufferdrawbuffer: dummy_pfnglnamedframebufferdrawbufferproc,
28584			namedframebufferdrawbuffers: dummy_pfnglnamedframebufferdrawbuffersproc,
28585			namedframebufferreadbuffer: dummy_pfnglnamedframebufferreadbufferproc,
28586			invalidatenamedframebufferdata: dummy_pfnglinvalidatenamedframebufferdataproc,
28587			invalidatenamedframebuffersubdata: dummy_pfnglinvalidatenamedframebuffersubdataproc,
28588			clearnamedframebufferiv: dummy_pfnglclearnamedframebufferivproc,
28589			clearnamedframebufferuiv: dummy_pfnglclearnamedframebufferuivproc,
28590			clearnamedframebufferfv: dummy_pfnglclearnamedframebufferfvproc,
28591			clearnamedframebufferfi: dummy_pfnglclearnamedframebufferfiproc,
28592			blitnamedframebuffer: dummy_pfnglblitnamedframebufferproc,
28593			checknamedframebufferstatus: dummy_pfnglchecknamedframebufferstatusproc,
28594			getnamedframebufferparameteriv: dummy_pfnglgetnamedframebufferparameterivproc,
28595			getnamedframebufferattachmentparameteriv: dummy_pfnglgetnamedframebufferattachmentparameterivproc,
28596			createrenderbuffers: dummy_pfnglcreaterenderbuffersproc,
28597			namedrenderbufferstorage: dummy_pfnglnamedrenderbufferstorageproc,
28598			namedrenderbufferstoragemultisample: dummy_pfnglnamedrenderbufferstoragemultisampleproc,
28599			getnamedrenderbufferparameteriv: dummy_pfnglgetnamedrenderbufferparameterivproc,
28600			createtextures: dummy_pfnglcreatetexturesproc,
28601			texturebuffer: dummy_pfngltexturebufferproc,
28602			texturebufferrange: dummy_pfngltexturebufferrangeproc,
28603			texturestorage1d: dummy_pfngltexturestorage1dproc,
28604			texturestorage2d: dummy_pfngltexturestorage2dproc,
28605			texturestorage3d: dummy_pfngltexturestorage3dproc,
28606			texturestorage2dmultisample: dummy_pfngltexturestorage2dmultisampleproc,
28607			texturestorage3dmultisample: dummy_pfngltexturestorage3dmultisampleproc,
28608			texturesubimage1d: dummy_pfngltexturesubimage1dproc,
28609			texturesubimage2d: dummy_pfngltexturesubimage2dproc,
28610			texturesubimage3d: dummy_pfngltexturesubimage3dproc,
28611			compressedtexturesubimage1d: dummy_pfnglcompressedtexturesubimage1dproc,
28612			compressedtexturesubimage2d: dummy_pfnglcompressedtexturesubimage2dproc,
28613			compressedtexturesubimage3d: dummy_pfnglcompressedtexturesubimage3dproc,
28614			copytexturesubimage1d: dummy_pfnglcopytexturesubimage1dproc,
28615			copytexturesubimage2d: dummy_pfnglcopytexturesubimage2dproc,
28616			copytexturesubimage3d: dummy_pfnglcopytexturesubimage3dproc,
28617			textureparameterf: dummy_pfngltextureparameterfproc,
28618			textureparameterfv: dummy_pfngltextureparameterfvproc,
28619			textureparameteri: dummy_pfngltextureparameteriproc,
28620			textureparameteriiv: dummy_pfngltextureparameteriivproc,
28621			textureparameteriuiv: dummy_pfngltextureparameteriuivproc,
28622			textureparameteriv: dummy_pfngltextureparameterivproc,
28623			generatetexturemipmap: dummy_pfnglgeneratetexturemipmapproc,
28624			bindtextureunit: dummy_pfnglbindtextureunitproc,
28625			gettextureimage: dummy_pfnglgettextureimageproc,
28626			getcompressedtextureimage: dummy_pfnglgetcompressedtextureimageproc,
28627			gettexturelevelparameterfv: dummy_pfnglgettexturelevelparameterfvproc,
28628			gettexturelevelparameteriv: dummy_pfnglgettexturelevelparameterivproc,
28629			gettextureparameterfv: dummy_pfnglgettextureparameterfvproc,
28630			gettextureparameteriiv: dummy_pfnglgettextureparameteriivproc,
28631			gettextureparameteriuiv: dummy_pfnglgettextureparameteriuivproc,
28632			gettextureparameteriv: dummy_pfnglgettextureparameterivproc,
28633			createvertexarrays: dummy_pfnglcreatevertexarraysproc,
28634			disablevertexarrayattrib: dummy_pfngldisablevertexarrayattribproc,
28635			enablevertexarrayattrib: dummy_pfnglenablevertexarrayattribproc,
28636			vertexarrayelementbuffer: dummy_pfnglvertexarrayelementbufferproc,
28637			vertexarrayvertexbuffer: dummy_pfnglvertexarrayvertexbufferproc,
28638			vertexarrayvertexbuffers: dummy_pfnglvertexarrayvertexbuffersproc,
28639			vertexarrayattribbinding: dummy_pfnglvertexarrayattribbindingproc,
28640			vertexarrayattribformat: dummy_pfnglvertexarrayattribformatproc,
28641			vertexarrayattribiformat: dummy_pfnglvertexarrayattribiformatproc,
28642			vertexarrayattriblformat: dummy_pfnglvertexarrayattriblformatproc,
28643			vertexarraybindingdivisor: dummy_pfnglvertexarraybindingdivisorproc,
28644			getvertexarrayiv: dummy_pfnglgetvertexarrayivproc,
28645			getvertexarrayindexediv: dummy_pfnglgetvertexarrayindexedivproc,
28646			getvertexarrayindexed64iv: dummy_pfnglgetvertexarrayindexed64ivproc,
28647			createsamplers: dummy_pfnglcreatesamplersproc,
28648			createprogrampipelines: dummy_pfnglcreateprogrampipelinesproc,
28649			createqueries: dummy_pfnglcreatequeriesproc,
28650			getquerybufferobjecti64v: dummy_pfnglgetquerybufferobjecti64vproc,
28651			getquerybufferobjectiv: dummy_pfnglgetquerybufferobjectivproc,
28652			getquerybufferobjectui64v: dummy_pfnglgetquerybufferobjectui64vproc,
28653			getquerybufferobjectuiv: dummy_pfnglgetquerybufferobjectuivproc,
28654			memorybarrierbyregion: dummy_pfnglmemorybarrierbyregionproc,
28655			gettexturesubimage: dummy_pfnglgettexturesubimageproc,
28656			getcompressedtexturesubimage: dummy_pfnglgetcompressedtexturesubimageproc,
28657			getgraphicsresetstatus: dummy_pfnglgetgraphicsresetstatusproc,
28658			getncompressedteximage: dummy_pfnglgetncompressedteximageproc,
28659			getnteximage: dummy_pfnglgetnteximageproc,
28660			getnuniformdv: dummy_pfnglgetnuniformdvproc,
28661			getnuniformfv: dummy_pfnglgetnuniformfvproc,
28662			getnuniformiv: dummy_pfnglgetnuniformivproc,
28663			getnuniformuiv: dummy_pfnglgetnuniformuivproc,
28664			readnpixels: dummy_pfnglreadnpixelsproc,
28665			getnmapdv: dummy_pfnglgetnmapdvproc,
28666			getnmapfv: dummy_pfnglgetnmapfvproc,
28667			getnmapiv: dummy_pfnglgetnmapivproc,
28668			getnpixelmapfv: dummy_pfnglgetnpixelmapfvproc,
28669			getnpixelmapuiv: dummy_pfnglgetnpixelmapuivproc,
28670			getnpixelmapusv: dummy_pfnglgetnpixelmapusvproc,
28671			getnpolygonstipple: dummy_pfnglgetnpolygonstippleproc,
28672			getncolortable: dummy_pfnglgetncolortableproc,
28673			getnconvolutionfilter: dummy_pfnglgetnconvolutionfilterproc,
28674			getnseparablefilter: dummy_pfnglgetnseparablefilterproc,
28675			getnhistogram: dummy_pfnglgetnhistogramproc,
28676			getnminmax: dummy_pfnglgetnminmaxproc,
28677			texturebarrier: dummy_pfngltexturebarrierproc,
28678		}
28679	}
28680}
28681impl Debug for Version45 {
28682	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
28683		if self.available {
28684			f.debug_struct("Version45")
28685			.field("available", &self.available)
28686			.field("clipcontrol", unsafe{if transmute::<_, *const c_void>(self.clipcontrol) == (dummy_pfnglclipcontrolproc as *const c_void) {&null::<PFNGLCLIPCONTROLPROC>()} else {&self.clipcontrol}})
28687			.field("createtransformfeedbacks", unsafe{if transmute::<_, *const c_void>(self.createtransformfeedbacks) == (dummy_pfnglcreatetransformfeedbacksproc as *const c_void) {&null::<PFNGLCREATETRANSFORMFEEDBACKSPROC>()} else {&self.createtransformfeedbacks}})
28688			.field("transformfeedbackbufferbase", unsafe{if transmute::<_, *const c_void>(self.transformfeedbackbufferbase) == (dummy_pfngltransformfeedbackbufferbaseproc as *const c_void) {&null::<PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC>()} else {&self.transformfeedbackbufferbase}})
28689			.field("transformfeedbackbufferrange", unsafe{if transmute::<_, *const c_void>(self.transformfeedbackbufferrange) == (dummy_pfngltransformfeedbackbufferrangeproc as *const c_void) {&null::<PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC>()} else {&self.transformfeedbackbufferrange}})
28690			.field("gettransformfeedbackiv", unsafe{if transmute::<_, *const c_void>(self.gettransformfeedbackiv) == (dummy_pfnglgettransformfeedbackivproc as *const c_void) {&null::<PFNGLGETTRANSFORMFEEDBACKIVPROC>()} else {&self.gettransformfeedbackiv}})
28691			.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}})
28692			.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}})
28693			.field("createbuffers", unsafe{if transmute::<_, *const c_void>(self.createbuffers) == (dummy_pfnglcreatebuffersproc as *const c_void) {&null::<PFNGLCREATEBUFFERSPROC>()} else {&self.createbuffers}})
28694			.field("namedbufferstorage", unsafe{if transmute::<_, *const c_void>(self.namedbufferstorage) == (dummy_pfnglnamedbufferstorageproc as *const c_void) {&null::<PFNGLNAMEDBUFFERSTORAGEPROC>()} else {&self.namedbufferstorage}})
28695			.field("namedbufferdata", unsafe{if transmute::<_, *const c_void>(self.namedbufferdata) == (dummy_pfnglnamedbufferdataproc as *const c_void) {&null::<PFNGLNAMEDBUFFERDATAPROC>()} else {&self.namedbufferdata}})
28696			.field("namedbuffersubdata", unsafe{if transmute::<_, *const c_void>(self.namedbuffersubdata) == (dummy_pfnglnamedbuffersubdataproc as *const c_void) {&null::<PFNGLNAMEDBUFFERSUBDATAPROC>()} else {&self.namedbuffersubdata}})
28697			.field("copynamedbuffersubdata", unsafe{if transmute::<_, *const c_void>(self.copynamedbuffersubdata) == (dummy_pfnglcopynamedbuffersubdataproc as *const c_void) {&null::<PFNGLCOPYNAMEDBUFFERSUBDATAPROC>()} else {&self.copynamedbuffersubdata}})
28698			.field("clearnamedbufferdata", unsafe{if transmute::<_, *const c_void>(self.clearnamedbufferdata) == (dummy_pfnglclearnamedbufferdataproc as *const c_void) {&null::<PFNGLCLEARNAMEDBUFFERDATAPROC>()} else {&self.clearnamedbufferdata}})
28699			.field("clearnamedbuffersubdata", unsafe{if transmute::<_, *const c_void>(self.clearnamedbuffersubdata) == (dummy_pfnglclearnamedbuffersubdataproc as *const c_void) {&null::<PFNGLCLEARNAMEDBUFFERSUBDATAPROC>()} else {&self.clearnamedbuffersubdata}})
28700			.field("mapnamedbuffer", unsafe{if transmute::<_, *const c_void>(self.mapnamedbuffer) == (dummy_pfnglmapnamedbufferproc as *const c_void) {&null::<PFNGLMAPNAMEDBUFFERPROC>()} else {&self.mapnamedbuffer}})
28701			.field("mapnamedbufferrange", unsafe{if transmute::<_, *const c_void>(self.mapnamedbufferrange) == (dummy_pfnglmapnamedbufferrangeproc as *const c_void) {&null::<PFNGLMAPNAMEDBUFFERRANGEPROC>()} else {&self.mapnamedbufferrange}})
28702			.field("unmapnamedbuffer", unsafe{if transmute::<_, *const c_void>(self.unmapnamedbuffer) == (dummy_pfnglunmapnamedbufferproc as *const c_void) {&null::<PFNGLUNMAPNAMEDBUFFERPROC>()} else {&self.unmapnamedbuffer}})
28703			.field("flushmappednamedbufferrange", unsafe{if transmute::<_, *const c_void>(self.flushmappednamedbufferrange) == (dummy_pfnglflushmappednamedbufferrangeproc as *const c_void) {&null::<PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC>()} else {&self.flushmappednamedbufferrange}})
28704			.field("getnamedbufferparameteriv", unsafe{if transmute::<_, *const c_void>(self.getnamedbufferparameteriv) == (dummy_pfnglgetnamedbufferparameterivproc as *const c_void) {&null::<PFNGLGETNAMEDBUFFERPARAMETERIVPROC>()} else {&self.getnamedbufferparameteriv}})
28705			.field("getnamedbufferparameteri64v", unsafe{if transmute::<_, *const c_void>(self.getnamedbufferparameteri64v) == (dummy_pfnglgetnamedbufferparameteri64vproc as *const c_void) {&null::<PFNGLGETNAMEDBUFFERPARAMETERI64VPROC>()} else {&self.getnamedbufferparameteri64v}})
28706			.field("getnamedbufferpointerv", unsafe{if transmute::<_, *const c_void>(self.getnamedbufferpointerv) == (dummy_pfnglgetnamedbufferpointervproc as *const c_void) {&null::<PFNGLGETNAMEDBUFFERPOINTERVPROC>()} else {&self.getnamedbufferpointerv}})
28707			.field("getnamedbuffersubdata", unsafe{if transmute::<_, *const c_void>(self.getnamedbuffersubdata) == (dummy_pfnglgetnamedbuffersubdataproc as *const c_void) {&null::<PFNGLGETNAMEDBUFFERSUBDATAPROC>()} else {&self.getnamedbuffersubdata}})
28708			.field("createframebuffers", unsafe{if transmute::<_, *const c_void>(self.createframebuffers) == (dummy_pfnglcreateframebuffersproc as *const c_void) {&null::<PFNGLCREATEFRAMEBUFFERSPROC>()} else {&self.createframebuffers}})
28709			.field("namedframebufferrenderbuffer", unsafe{if transmute::<_, *const c_void>(self.namedframebufferrenderbuffer) == (dummy_pfnglnamedframebufferrenderbufferproc as *const c_void) {&null::<PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC>()} else {&self.namedframebufferrenderbuffer}})
28710			.field("namedframebufferparameteri", unsafe{if transmute::<_, *const c_void>(self.namedframebufferparameteri) == (dummy_pfnglnamedframebufferparameteriproc as *const c_void) {&null::<PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC>()} else {&self.namedframebufferparameteri}})
28711			.field("namedframebuffertexture", unsafe{if transmute::<_, *const c_void>(self.namedframebuffertexture) == (dummy_pfnglnamedframebuffertextureproc as *const c_void) {&null::<PFNGLNAMEDFRAMEBUFFERTEXTUREPROC>()} else {&self.namedframebuffertexture}})
28712			.field("namedframebuffertexturelayer", unsafe{if transmute::<_, *const c_void>(self.namedframebuffertexturelayer) == (dummy_pfnglnamedframebuffertexturelayerproc as *const c_void) {&null::<PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC>()} else {&self.namedframebuffertexturelayer}})
28713			.field("namedframebufferdrawbuffer", unsafe{if transmute::<_, *const c_void>(self.namedframebufferdrawbuffer) == (dummy_pfnglnamedframebufferdrawbufferproc as *const c_void) {&null::<PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC>()} else {&self.namedframebufferdrawbuffer}})
28714			.field("namedframebufferdrawbuffers", unsafe{if transmute::<_, *const c_void>(self.namedframebufferdrawbuffers) == (dummy_pfnglnamedframebufferdrawbuffersproc as *const c_void) {&null::<PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC>()} else {&self.namedframebufferdrawbuffers}})
28715			.field("namedframebufferreadbuffer", unsafe{if transmute::<_, *const c_void>(self.namedframebufferreadbuffer) == (dummy_pfnglnamedframebufferreadbufferproc as *const c_void) {&null::<PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC>()} else {&self.namedframebufferreadbuffer}})
28716			.field("invalidatenamedframebufferdata", unsafe{if transmute::<_, *const c_void>(self.invalidatenamedframebufferdata) == (dummy_pfnglinvalidatenamedframebufferdataproc as *const c_void) {&null::<PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC>()} else {&self.invalidatenamedframebufferdata}})
28717			.field("invalidatenamedframebuffersubdata", unsafe{if transmute::<_, *const c_void>(self.invalidatenamedframebuffersubdata) == (dummy_pfnglinvalidatenamedframebuffersubdataproc as *const c_void) {&null::<PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC>()} else {&self.invalidatenamedframebuffersubdata}})
28718			.field("clearnamedframebufferiv", unsafe{if transmute::<_, *const c_void>(self.clearnamedframebufferiv) == (dummy_pfnglclearnamedframebufferivproc as *const c_void) {&null::<PFNGLCLEARNAMEDFRAMEBUFFERIVPROC>()} else {&self.clearnamedframebufferiv}})
28719			.field("clearnamedframebufferuiv", unsafe{if transmute::<_, *const c_void>(self.clearnamedframebufferuiv) == (dummy_pfnglclearnamedframebufferuivproc as *const c_void) {&null::<PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC>()} else {&self.clearnamedframebufferuiv}})
28720			.field("clearnamedframebufferfv", unsafe{if transmute::<_, *const c_void>(self.clearnamedframebufferfv) == (dummy_pfnglclearnamedframebufferfvproc as *const c_void) {&null::<PFNGLCLEARNAMEDFRAMEBUFFERFVPROC>()} else {&self.clearnamedframebufferfv}})
28721			.field("clearnamedframebufferfi", unsafe{if transmute::<_, *const c_void>(self.clearnamedframebufferfi) == (dummy_pfnglclearnamedframebufferfiproc as *const c_void) {&null::<PFNGLCLEARNAMEDFRAMEBUFFERFIPROC>()} else {&self.clearnamedframebufferfi}})
28722			.field("blitnamedframebuffer", unsafe{if transmute::<_, *const c_void>(self.blitnamedframebuffer) == (dummy_pfnglblitnamedframebufferproc as *const c_void) {&null::<PFNGLBLITNAMEDFRAMEBUFFERPROC>()} else {&self.blitnamedframebuffer}})
28723			.field("checknamedframebufferstatus", unsafe{if transmute::<_, *const c_void>(self.checknamedframebufferstatus) == (dummy_pfnglchecknamedframebufferstatusproc as *const c_void) {&null::<PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC>()} else {&self.checknamedframebufferstatus}})
28724			.field("getnamedframebufferparameteriv", unsafe{if transmute::<_, *const c_void>(self.getnamedframebufferparameteriv) == (dummy_pfnglgetnamedframebufferparameterivproc as *const c_void) {&null::<PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC>()} else {&self.getnamedframebufferparameteriv}})
28725			.field("getnamedframebufferattachmentparameteriv", unsafe{if transmute::<_, *const c_void>(self.getnamedframebufferattachmentparameteriv) == (dummy_pfnglgetnamedframebufferattachmentparameterivproc as *const c_void) {&null::<PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC>()} else {&self.getnamedframebufferattachmentparameteriv}})
28726			.field("createrenderbuffers", unsafe{if transmute::<_, *const c_void>(self.createrenderbuffers) == (dummy_pfnglcreaterenderbuffersproc as *const c_void) {&null::<PFNGLCREATERENDERBUFFERSPROC>()} else {&self.createrenderbuffers}})
28727			.field("namedrenderbufferstorage", unsafe{if transmute::<_, *const c_void>(self.namedrenderbufferstorage) == (dummy_pfnglnamedrenderbufferstorageproc as *const c_void) {&null::<PFNGLNAMEDRENDERBUFFERSTORAGEPROC>()} else {&self.namedrenderbufferstorage}})
28728			.field("namedrenderbufferstoragemultisample", unsafe{if transmute::<_, *const c_void>(self.namedrenderbufferstoragemultisample) == (dummy_pfnglnamedrenderbufferstoragemultisampleproc as *const c_void) {&null::<PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC>()} else {&self.namedrenderbufferstoragemultisample}})
28729			.field("getnamedrenderbufferparameteriv", unsafe{if transmute::<_, *const c_void>(self.getnamedrenderbufferparameteriv) == (dummy_pfnglgetnamedrenderbufferparameterivproc as *const c_void) {&null::<PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC>()} else {&self.getnamedrenderbufferparameteriv}})
28730			.field("createtextures", unsafe{if transmute::<_, *const c_void>(self.createtextures) == (dummy_pfnglcreatetexturesproc as *const c_void) {&null::<PFNGLCREATETEXTURESPROC>()} else {&self.createtextures}})
28731			.field("texturebuffer", unsafe{if transmute::<_, *const c_void>(self.texturebuffer) == (dummy_pfngltexturebufferproc as *const c_void) {&null::<PFNGLTEXTUREBUFFERPROC>()} else {&self.texturebuffer}})
28732			.field("texturebufferrange", unsafe{if transmute::<_, *const c_void>(self.texturebufferrange) == (dummy_pfngltexturebufferrangeproc as *const c_void) {&null::<PFNGLTEXTUREBUFFERRANGEPROC>()} else {&self.texturebufferrange}})
28733			.field("texturestorage1d", unsafe{if transmute::<_, *const c_void>(self.texturestorage1d) == (dummy_pfngltexturestorage1dproc as *const c_void) {&null::<PFNGLTEXTURESTORAGE1DPROC>()} else {&self.texturestorage1d}})
28734			.field("texturestorage2d", unsafe{if transmute::<_, *const c_void>(self.texturestorage2d) == (dummy_pfngltexturestorage2dproc as *const c_void) {&null::<PFNGLTEXTURESTORAGE2DPROC>()} else {&self.texturestorage2d}})
28735			.field("texturestorage3d", unsafe{if transmute::<_, *const c_void>(self.texturestorage3d) == (dummy_pfngltexturestorage3dproc as *const c_void) {&null::<PFNGLTEXTURESTORAGE3DPROC>()} else {&self.texturestorage3d}})
28736			.field("texturestorage2dmultisample", unsafe{if transmute::<_, *const c_void>(self.texturestorage2dmultisample) == (dummy_pfngltexturestorage2dmultisampleproc as *const c_void) {&null::<PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC>()} else {&self.texturestorage2dmultisample}})
28737			.field("texturestorage3dmultisample", unsafe{if transmute::<_, *const c_void>(self.texturestorage3dmultisample) == (dummy_pfngltexturestorage3dmultisampleproc as *const c_void) {&null::<PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC>()} else {&self.texturestorage3dmultisample}})
28738			.field("texturesubimage1d", unsafe{if transmute::<_, *const c_void>(self.texturesubimage1d) == (dummy_pfngltexturesubimage1dproc as *const c_void) {&null::<PFNGLTEXTURESUBIMAGE1DPROC>()} else {&self.texturesubimage1d}})
28739			.field("texturesubimage2d", unsafe{if transmute::<_, *const c_void>(self.texturesubimage2d) == (dummy_pfngltexturesubimage2dproc as *const c_void) {&null::<PFNGLTEXTURESUBIMAGE2DPROC>()} else {&self.texturesubimage2d}})
28740			.field("texturesubimage3d", unsafe{if transmute::<_, *const c_void>(self.texturesubimage3d) == (dummy_pfngltexturesubimage3dproc as *const c_void) {&null::<PFNGLTEXTURESUBIMAGE3DPROC>()} else {&self.texturesubimage3d}})
28741			.field("compressedtexturesubimage1d", unsafe{if transmute::<_, *const c_void>(self.compressedtexturesubimage1d) == (dummy_pfnglcompressedtexturesubimage1dproc as *const c_void) {&null::<PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC>()} else {&self.compressedtexturesubimage1d}})
28742			.field("compressedtexturesubimage2d", unsafe{if transmute::<_, *const c_void>(self.compressedtexturesubimage2d) == (dummy_pfnglcompressedtexturesubimage2dproc as *const c_void) {&null::<PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC>()} else {&self.compressedtexturesubimage2d}})
28743			.field("compressedtexturesubimage3d", unsafe{if transmute::<_, *const c_void>(self.compressedtexturesubimage3d) == (dummy_pfnglcompressedtexturesubimage3dproc as *const c_void) {&null::<PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC>()} else {&self.compressedtexturesubimage3d}})
28744			.field("copytexturesubimage1d", unsafe{if transmute::<_, *const c_void>(self.copytexturesubimage1d) == (dummy_pfnglcopytexturesubimage1dproc as *const c_void) {&null::<PFNGLCOPYTEXTURESUBIMAGE1DPROC>()} else {&self.copytexturesubimage1d}})
28745			.field("copytexturesubimage2d", unsafe{if transmute::<_, *const c_void>(self.copytexturesubimage2d) == (dummy_pfnglcopytexturesubimage2dproc as *const c_void) {&null::<PFNGLCOPYTEXTURESUBIMAGE2DPROC>()} else {&self.copytexturesubimage2d}})
28746			.field("copytexturesubimage3d", unsafe{if transmute::<_, *const c_void>(self.copytexturesubimage3d) == (dummy_pfnglcopytexturesubimage3dproc as *const c_void) {&null::<PFNGLCOPYTEXTURESUBIMAGE3DPROC>()} else {&self.copytexturesubimage3d}})
28747			.field("textureparameterf", unsafe{if transmute::<_, *const c_void>(self.textureparameterf) == (dummy_pfngltextureparameterfproc as *const c_void) {&null::<PFNGLTEXTUREPARAMETERFPROC>()} else {&self.textureparameterf}})
28748			.field("textureparameterfv", unsafe{if transmute::<_, *const c_void>(self.textureparameterfv) == (dummy_pfngltextureparameterfvproc as *const c_void) {&null::<PFNGLTEXTUREPARAMETERFVPROC>()} else {&self.textureparameterfv}})
28749			.field("textureparameteri", unsafe{if transmute::<_, *const c_void>(self.textureparameteri) == (dummy_pfngltextureparameteriproc as *const c_void) {&null::<PFNGLTEXTUREPARAMETERIPROC>()} else {&self.textureparameteri}})
28750			.field("textureparameteriiv", unsafe{if transmute::<_, *const c_void>(self.textureparameteriiv) == (dummy_pfngltextureparameteriivproc as *const c_void) {&null::<PFNGLTEXTUREPARAMETERIIVPROC>()} else {&self.textureparameteriiv}})
28751			.field("textureparameteriuiv", unsafe{if transmute::<_, *const c_void>(self.textureparameteriuiv) == (dummy_pfngltextureparameteriuivproc as *const c_void) {&null::<PFNGLTEXTUREPARAMETERIUIVPROC>()} else {&self.textureparameteriuiv}})
28752			.field("textureparameteriv", unsafe{if transmute::<_, *const c_void>(self.textureparameteriv) == (dummy_pfngltextureparameterivproc as *const c_void) {&null::<PFNGLTEXTUREPARAMETERIVPROC>()} else {&self.textureparameteriv}})
28753			.field("generatetexturemipmap", unsafe{if transmute::<_, *const c_void>(self.generatetexturemipmap) == (dummy_pfnglgeneratetexturemipmapproc as *const c_void) {&null::<PFNGLGENERATETEXTUREMIPMAPPROC>()} else {&self.generatetexturemipmap}})
28754			.field("bindtextureunit", unsafe{if transmute::<_, *const c_void>(self.bindtextureunit) == (dummy_pfnglbindtextureunitproc as *const c_void) {&null::<PFNGLBINDTEXTUREUNITPROC>()} else {&self.bindtextureunit}})
28755			.field("gettextureimage", unsafe{if transmute::<_, *const c_void>(self.gettextureimage) == (dummy_pfnglgettextureimageproc as *const c_void) {&null::<PFNGLGETTEXTUREIMAGEPROC>()} else {&self.gettextureimage}})
28756			.field("getcompressedtextureimage", unsafe{if transmute::<_, *const c_void>(self.getcompressedtextureimage) == (dummy_pfnglgetcompressedtextureimageproc as *const c_void) {&null::<PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC>()} else {&self.getcompressedtextureimage}})
28757			.field("gettexturelevelparameterfv", unsafe{if transmute::<_, *const c_void>(self.gettexturelevelparameterfv) == (dummy_pfnglgettexturelevelparameterfvproc as *const c_void) {&null::<PFNGLGETTEXTURELEVELPARAMETERFVPROC>()} else {&self.gettexturelevelparameterfv}})
28758			.field("gettexturelevelparameteriv", unsafe{if transmute::<_, *const c_void>(self.gettexturelevelparameteriv) == (dummy_pfnglgettexturelevelparameterivproc as *const c_void) {&null::<PFNGLGETTEXTURELEVELPARAMETERIVPROC>()} else {&self.gettexturelevelparameteriv}})
28759			.field("gettextureparameterfv", unsafe{if transmute::<_, *const c_void>(self.gettextureparameterfv) == (dummy_pfnglgettextureparameterfvproc as *const c_void) {&null::<PFNGLGETTEXTUREPARAMETERFVPROC>()} else {&self.gettextureparameterfv}})
28760			.field("gettextureparameteriiv", unsafe{if transmute::<_, *const c_void>(self.gettextureparameteriiv) == (dummy_pfnglgettextureparameteriivproc as *const c_void) {&null::<PFNGLGETTEXTUREPARAMETERIIVPROC>()} else {&self.gettextureparameteriiv}})
28761			.field("gettextureparameteriuiv", unsafe{if transmute::<_, *const c_void>(self.gettextureparameteriuiv) == (dummy_pfnglgettextureparameteriuivproc as *const c_void) {&null::<PFNGLGETTEXTUREPARAMETERIUIVPROC>()} else {&self.gettextureparameteriuiv}})
28762			.field("gettextureparameteriv", unsafe{if transmute::<_, *const c_void>(self.gettextureparameteriv) == (dummy_pfnglgettextureparameterivproc as *const c_void) {&null::<PFNGLGETTEXTUREPARAMETERIVPROC>()} else {&self.gettextureparameteriv}})
28763			.field("createvertexarrays", unsafe{if transmute::<_, *const c_void>(self.createvertexarrays) == (dummy_pfnglcreatevertexarraysproc as *const c_void) {&null::<PFNGLCREATEVERTEXARRAYSPROC>()} else {&self.createvertexarrays}})
28764			.field("disablevertexarrayattrib", unsafe{if transmute::<_, *const c_void>(self.disablevertexarrayattrib) == (dummy_pfngldisablevertexarrayattribproc as *const c_void) {&null::<PFNGLDISABLEVERTEXARRAYATTRIBPROC>()} else {&self.disablevertexarrayattrib}})
28765			.field("enablevertexarrayattrib", unsafe{if transmute::<_, *const c_void>(self.enablevertexarrayattrib) == (dummy_pfnglenablevertexarrayattribproc as *const c_void) {&null::<PFNGLENABLEVERTEXARRAYATTRIBPROC>()} else {&self.enablevertexarrayattrib}})
28766			.field("vertexarrayelementbuffer", unsafe{if transmute::<_, *const c_void>(self.vertexarrayelementbuffer) == (dummy_pfnglvertexarrayelementbufferproc as *const c_void) {&null::<PFNGLVERTEXARRAYELEMENTBUFFERPROC>()} else {&self.vertexarrayelementbuffer}})
28767			.field("vertexarrayvertexbuffer", unsafe{if transmute::<_, *const c_void>(self.vertexarrayvertexbuffer) == (dummy_pfnglvertexarrayvertexbufferproc as *const c_void) {&null::<PFNGLVERTEXARRAYVERTEXBUFFERPROC>()} else {&self.vertexarrayvertexbuffer}})
28768			.field("vertexarrayvertexbuffers", unsafe{if transmute::<_, *const c_void>(self.vertexarrayvertexbuffers) == (dummy_pfnglvertexarrayvertexbuffersproc as *const c_void) {&null::<PFNGLVERTEXARRAYVERTEXBUFFERSPROC>()} else {&self.vertexarrayvertexbuffers}})
28769			.field("vertexarrayattribbinding", unsafe{if transmute::<_, *const c_void>(self.vertexarrayattribbinding) == (dummy_pfnglvertexarrayattribbindingproc as *const c_void) {&null::<PFNGLVERTEXARRAYATTRIBBINDINGPROC>()} else {&self.vertexarrayattribbinding}})
28770			.field("vertexarrayattribformat", unsafe{if transmute::<_, *const c_void>(self.vertexarrayattribformat) == (dummy_pfnglvertexarrayattribformatproc as *const c_void) {&null::<PFNGLVERTEXARRAYATTRIBFORMATPROC>()} else {&self.vertexarrayattribformat}})
28771			.field("vertexarrayattribiformat", unsafe{if transmute::<_, *const c_void>(self.vertexarrayattribiformat) == (dummy_pfnglvertexarrayattribiformatproc as *const c_void) {&null::<PFNGLVERTEXARRAYATTRIBIFORMATPROC>()} else {&self.vertexarrayattribiformat}})
28772			.field("vertexarrayattriblformat", unsafe{if transmute::<_, *const c_void>(self.vertexarrayattriblformat) == (dummy_pfnglvertexarrayattriblformatproc as *const c_void) {&null::<PFNGLVERTEXARRAYATTRIBLFORMATPROC>()} else {&self.vertexarrayattriblformat}})
28773			.field("vertexarraybindingdivisor", unsafe{if transmute::<_, *const c_void>(self.vertexarraybindingdivisor) == (dummy_pfnglvertexarraybindingdivisorproc as *const c_void) {&null::<PFNGLVERTEXARRAYBINDINGDIVISORPROC>()} else {&self.vertexarraybindingdivisor}})
28774			.field("getvertexarrayiv", unsafe{if transmute::<_, *const c_void>(self.getvertexarrayiv) == (dummy_pfnglgetvertexarrayivproc as *const c_void) {&null::<PFNGLGETVERTEXARRAYIVPROC>()} else {&self.getvertexarrayiv}})
28775			.field("getvertexarrayindexediv", unsafe{if transmute::<_, *const c_void>(self.getvertexarrayindexediv) == (dummy_pfnglgetvertexarrayindexedivproc as *const c_void) {&null::<PFNGLGETVERTEXARRAYINDEXEDIVPROC>()} else {&self.getvertexarrayindexediv}})
28776			.field("getvertexarrayindexed64iv", unsafe{if transmute::<_, *const c_void>(self.getvertexarrayindexed64iv) == (dummy_pfnglgetvertexarrayindexed64ivproc as *const c_void) {&null::<PFNGLGETVERTEXARRAYINDEXED64IVPROC>()} else {&self.getvertexarrayindexed64iv}})
28777			.field("createsamplers", unsafe{if transmute::<_, *const c_void>(self.createsamplers) == (dummy_pfnglcreatesamplersproc as *const c_void) {&null::<PFNGLCREATESAMPLERSPROC>()} else {&self.createsamplers}})
28778			.field("createprogrampipelines", unsafe{if transmute::<_, *const c_void>(self.createprogrampipelines) == (dummy_pfnglcreateprogrampipelinesproc as *const c_void) {&null::<PFNGLCREATEPROGRAMPIPELINESPROC>()} else {&self.createprogrampipelines}})
28779			.field("createqueries", unsafe{if transmute::<_, *const c_void>(self.createqueries) == (dummy_pfnglcreatequeriesproc as *const c_void) {&null::<PFNGLCREATEQUERIESPROC>()} else {&self.createqueries}})
28780			.field("getquerybufferobjecti64v", unsafe{if transmute::<_, *const c_void>(self.getquerybufferobjecti64v) == (dummy_pfnglgetquerybufferobjecti64vproc as *const c_void) {&null::<PFNGLGETQUERYBUFFEROBJECTI64VPROC>()} else {&self.getquerybufferobjecti64v}})
28781			.field("getquerybufferobjectiv", unsafe{if transmute::<_, *const c_void>(self.getquerybufferobjectiv) == (dummy_pfnglgetquerybufferobjectivproc as *const c_void) {&null::<PFNGLGETQUERYBUFFEROBJECTIVPROC>()} else {&self.getquerybufferobjectiv}})
28782			.field("getquerybufferobjectui64v", unsafe{if transmute::<_, *const c_void>(self.getquerybufferobjectui64v) == (dummy_pfnglgetquerybufferobjectui64vproc as *const c_void) {&null::<PFNGLGETQUERYBUFFEROBJECTUI64VPROC>()} else {&self.getquerybufferobjectui64v}})
28783			.field("getquerybufferobjectuiv", unsafe{if transmute::<_, *const c_void>(self.getquerybufferobjectuiv) == (dummy_pfnglgetquerybufferobjectuivproc as *const c_void) {&null::<PFNGLGETQUERYBUFFEROBJECTUIVPROC>()} else {&self.getquerybufferobjectuiv}})
28784			.field("memorybarrierbyregion", unsafe{if transmute::<_, *const c_void>(self.memorybarrierbyregion) == (dummy_pfnglmemorybarrierbyregionproc as *const c_void) {&null::<PFNGLMEMORYBARRIERBYREGIONPROC>()} else {&self.memorybarrierbyregion}})
28785			.field("gettexturesubimage", unsafe{if transmute::<_, *const c_void>(self.gettexturesubimage) == (dummy_pfnglgettexturesubimageproc as *const c_void) {&null::<PFNGLGETTEXTURESUBIMAGEPROC>()} else {&self.gettexturesubimage}})
28786			.field("getcompressedtexturesubimage", unsafe{if transmute::<_, *const c_void>(self.getcompressedtexturesubimage) == (dummy_pfnglgetcompressedtexturesubimageproc as *const c_void) {&null::<PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC>()} else {&self.getcompressedtexturesubimage}})
28787			.field("getgraphicsresetstatus", unsafe{if transmute::<_, *const c_void>(self.getgraphicsresetstatus) == (dummy_pfnglgetgraphicsresetstatusproc as *const c_void) {&null::<PFNGLGETGRAPHICSRESETSTATUSPROC>()} else {&self.getgraphicsresetstatus}})
28788			.field("getncompressedteximage", unsafe{if transmute::<_, *const c_void>(self.getncompressedteximage) == (dummy_pfnglgetncompressedteximageproc as *const c_void) {&null::<PFNGLGETNCOMPRESSEDTEXIMAGEPROC>()} else {&self.getncompressedteximage}})
28789			.field("getnteximage", unsafe{if transmute::<_, *const c_void>(self.getnteximage) == (dummy_pfnglgetnteximageproc as *const c_void) {&null::<PFNGLGETNTEXIMAGEPROC>()} else {&self.getnteximage}})
28790			.field("getnuniformdv", unsafe{if transmute::<_, *const c_void>(self.getnuniformdv) == (dummy_pfnglgetnuniformdvproc as *const c_void) {&null::<PFNGLGETNUNIFORMDVPROC>()} else {&self.getnuniformdv}})
28791			.field("getnuniformfv", unsafe{if transmute::<_, *const c_void>(self.getnuniformfv) == (dummy_pfnglgetnuniformfvproc as *const c_void) {&null::<PFNGLGETNUNIFORMFVPROC>()} else {&self.getnuniformfv}})
28792			.field("getnuniformiv", unsafe{if transmute::<_, *const c_void>(self.getnuniformiv) == (dummy_pfnglgetnuniformivproc as *const c_void) {&null::<PFNGLGETNUNIFORMIVPROC>()} else {&self.getnuniformiv}})
28793			.field("getnuniformuiv", unsafe{if transmute::<_, *const c_void>(self.getnuniformuiv) == (dummy_pfnglgetnuniformuivproc as *const c_void) {&null::<PFNGLGETNUNIFORMUIVPROC>()} else {&self.getnuniformuiv}})
28794			.field("readnpixels", unsafe{if transmute::<_, *const c_void>(self.readnpixels) == (dummy_pfnglreadnpixelsproc as *const c_void) {&null::<PFNGLREADNPIXELSPROC>()} else {&self.readnpixels}})
28795			.field("getnmapdv", unsafe{if transmute::<_, *const c_void>(self.getnmapdv) == (dummy_pfnglgetnmapdvproc as *const c_void) {&null::<PFNGLGETNMAPDVPROC>()} else {&self.getnmapdv}})
28796			.field("getnmapfv", unsafe{if transmute::<_, *const c_void>(self.getnmapfv) == (dummy_pfnglgetnmapfvproc as *const c_void) {&null::<PFNGLGETNMAPFVPROC>()} else {&self.getnmapfv}})
28797			.field("getnmapiv", unsafe{if transmute::<_, *const c_void>(self.getnmapiv) == (dummy_pfnglgetnmapivproc as *const c_void) {&null::<PFNGLGETNMAPIVPROC>()} else {&self.getnmapiv}})
28798			.field("getnpixelmapfv", unsafe{if transmute::<_, *const c_void>(self.getnpixelmapfv) == (dummy_pfnglgetnpixelmapfvproc as *const c_void) {&null::<PFNGLGETNPIXELMAPFVPROC>()} else {&self.getnpixelmapfv}})
28799			.field("getnpixelmapuiv", unsafe{if transmute::<_, *const c_void>(self.getnpixelmapuiv) == (dummy_pfnglgetnpixelmapuivproc as *const c_void) {&null::<PFNGLGETNPIXELMAPUIVPROC>()} else {&self.getnpixelmapuiv}})
28800			.field("getnpixelmapusv", unsafe{if transmute::<_, *const c_void>(self.getnpixelmapusv) == (dummy_pfnglgetnpixelmapusvproc as *const c_void) {&null::<PFNGLGETNPIXELMAPUSVPROC>()} else {&self.getnpixelmapusv}})
28801			.field("getnpolygonstipple", unsafe{if transmute::<_, *const c_void>(self.getnpolygonstipple) == (dummy_pfnglgetnpolygonstippleproc as *const c_void) {&null::<PFNGLGETNPOLYGONSTIPPLEPROC>()} else {&self.getnpolygonstipple}})
28802			.field("getncolortable", unsafe{if transmute::<_, *const c_void>(self.getncolortable) == (dummy_pfnglgetncolortableproc as *const c_void) {&null::<PFNGLGETNCOLORTABLEPROC>()} else {&self.getncolortable}})
28803			.field("getnconvolutionfilter", unsafe{if transmute::<_, *const c_void>(self.getnconvolutionfilter) == (dummy_pfnglgetnconvolutionfilterproc as *const c_void) {&null::<PFNGLGETNCONVOLUTIONFILTERPROC>()} else {&self.getnconvolutionfilter}})
28804			.field("getnseparablefilter", unsafe{if transmute::<_, *const c_void>(self.getnseparablefilter) == (dummy_pfnglgetnseparablefilterproc as *const c_void) {&null::<PFNGLGETNSEPARABLEFILTERPROC>()} else {&self.getnseparablefilter}})
28805			.field("getnhistogram", unsafe{if transmute::<_, *const c_void>(self.getnhistogram) == (dummy_pfnglgetnhistogramproc as *const c_void) {&null::<PFNGLGETNHISTOGRAMPROC>()} else {&self.getnhistogram}})
28806			.field("getnminmax", unsafe{if transmute::<_, *const c_void>(self.getnminmax) == (dummy_pfnglgetnminmaxproc as *const c_void) {&null::<PFNGLGETNMINMAXPROC>()} else {&self.getnminmax}})
28807			.field("texturebarrier", unsafe{if transmute::<_, *const c_void>(self.texturebarrier) == (dummy_pfngltexturebarrierproc as *const c_void) {&null::<PFNGLTEXTUREBARRIERPROC>()} else {&self.texturebarrier}})
28808			.finish()
28809		} else {
28810			f.debug_struct("Version45")
28811			.field("available", &self.available)
28812			.finish_non_exhaustive()
28813		}
28814	}
28815}
28816
28817/// The prototype to the OpenGL function `SpecializeShader`
28818type PFNGLSPECIALIZESHADERPROC = extern "system" fn(GLuint, *const GLchar, GLuint, *const GLuint, *const GLuint);
28819
28820/// The prototype to the OpenGL function `MultiDrawArraysIndirectCount`
28821type PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC = extern "system" fn(GLenum, *const c_void, GLintptr, GLsizei, GLsizei);
28822
28823/// The prototype to the OpenGL function `MultiDrawElementsIndirectCount`
28824type PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC = extern "system" fn(GLenum, GLenum, *const c_void, GLintptr, GLsizei, GLsizei);
28825
28826/// The prototype to the OpenGL function `PolygonOffsetClamp`
28827type PFNGLPOLYGONOFFSETCLAMPPROC = extern "system" fn(GLfloat, GLfloat, GLfloat);
28828
28829/// The dummy function of `SpecializeShader()`
28830extern "system" fn dummy_pfnglspecializeshaderproc (_: GLuint, _: *const GLchar, _: GLuint, _: *const GLuint, _: *const GLuint) {
28831	panic!("OpenGL function pointer `glSpecializeShader()` is null.")
28832}
28833
28834/// The dummy function of `MultiDrawArraysIndirectCount()`
28835extern "system" fn dummy_pfnglmultidrawarraysindirectcountproc (_: GLenum, _: *const c_void, _: GLintptr, _: GLsizei, _: GLsizei) {
28836	panic!("OpenGL function pointer `glMultiDrawArraysIndirectCount()` is null.")
28837}
28838
28839/// The dummy function of `MultiDrawElementsIndirectCount()`
28840extern "system" fn dummy_pfnglmultidrawelementsindirectcountproc (_: GLenum, _: GLenum, _: *const c_void, _: GLintptr, _: GLsizei, _: GLsizei) {
28841	panic!("OpenGL function pointer `glMultiDrawElementsIndirectCount()` is null.")
28842}
28843
28844/// The dummy function of `PolygonOffsetClamp()`
28845extern "system" fn dummy_pfnglpolygonoffsetclampproc (_: GLfloat, _: GLfloat, _: GLfloat) {
28846	panic!("OpenGL function pointer `glPolygonOffsetClamp()` is null.")
28847}
28848/// Constant value defined from OpenGL 4.6
28849pub const GL_SHADER_BINARY_FORMAT_SPIR_V: GLenum = 0x9551;
28850
28851/// Constant value defined from OpenGL 4.6
28852pub const GL_SPIR_V_BINARY: GLenum = 0x9552;
28853
28854/// Constant value defined from OpenGL 4.6
28855pub const GL_PARAMETER_BUFFER: GLenum = 0x80EE;
28856
28857/// Constant value defined from OpenGL 4.6
28858pub const GL_PARAMETER_BUFFER_BINDING: GLenum = 0x80EF;
28859
28860/// Constant value defined from OpenGL 4.6
28861pub const GL_CONTEXT_FLAG_NO_ERROR_BIT: GLbitfield = 0x00000008;
28862
28863/// Constant value defined from OpenGL 4.6
28864pub const GL_VERTICES_SUBMITTED: GLenum = 0x82EE;
28865
28866/// Constant value defined from OpenGL 4.6
28867pub const GL_PRIMITIVES_SUBMITTED: GLenum = 0x82EF;
28868
28869/// Constant value defined from OpenGL 4.6
28870pub const GL_VERTEX_SHADER_INVOCATIONS: GLenum = 0x82F0;
28871
28872/// Constant value defined from OpenGL 4.6
28873pub const GL_TESS_CONTROL_SHADER_PATCHES: GLenum = 0x82F1;
28874
28875/// Constant value defined from OpenGL 4.6
28876pub const GL_TESS_EVALUATION_SHADER_INVOCATIONS: GLenum = 0x82F2;
28877
28878/// Constant value defined from OpenGL 4.6
28879pub const GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED: GLenum = 0x82F3;
28880
28881/// Constant value defined from OpenGL 4.6
28882pub const GL_FRAGMENT_SHADER_INVOCATIONS: GLenum = 0x82F4;
28883
28884/// Constant value defined from OpenGL 4.6
28885pub const GL_COMPUTE_SHADER_INVOCATIONS: GLenum = 0x82F5;
28886
28887/// Constant value defined from OpenGL 4.6
28888pub const GL_CLIPPING_INPUT_PRIMITIVES: GLenum = 0x82F6;
28889
28890/// Constant value defined from OpenGL 4.6
28891pub const GL_CLIPPING_OUTPUT_PRIMITIVES: GLenum = 0x82F7;
28892
28893/// Constant value defined from OpenGL 4.6
28894pub const GL_POLYGON_OFFSET_CLAMP: GLenum = 0x8E1B;
28895
28896/// Constant value defined from OpenGL 4.6
28897pub const GL_SPIR_V_EXTENSIONS: GLenum = 0x9553;
28898
28899/// Constant value defined from OpenGL 4.6
28900pub const GL_NUM_SPIR_V_EXTENSIONS: GLenum = 0x9554;
28901
28902/// Constant value defined from OpenGL 4.6
28903pub const GL_TEXTURE_MAX_ANISOTROPY: GLenum = 0x84FE;
28904
28905/// Constant value defined from OpenGL 4.6
28906pub const GL_MAX_TEXTURE_MAX_ANISOTROPY: GLenum = 0x84FF;
28907
28908/// Constant value defined from OpenGL 4.6
28909pub const GL_TRANSFORM_FEEDBACK_OVERFLOW: GLenum = 0x82EC;
28910
28911/// Constant value defined from OpenGL 4.6
28912pub const GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW: GLenum = 0x82ED;
28913
28914/// Functions from OpenGL version 4.6
28915pub trait GL_4_6 {
28916	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
28917	fn glGetError(&self) -> GLenum;
28918
28919	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSpecializeShader.xhtml>
28920	fn glSpecializeShader(&self, shader: GLuint, pEntryPoint: *const GLchar, numSpecializationConstants: GLuint, pConstantIndex: *const GLuint, pConstantValue: *const GLuint) -> Result<()>;
28921
28922	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawArraysIndirectCount.xhtml>
28923	fn glMultiDrawArraysIndirectCount(&self, mode: GLenum, indirect: *const c_void, drawcount: GLintptr, maxdrawcount: GLsizei, stride: GLsizei) -> Result<()>;
28924
28925	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawElementsIndirectCount.xhtml>
28926	fn glMultiDrawElementsIndirectCount(&self, mode: GLenum, type_: GLenum, indirect: *const c_void, drawcount: GLintptr, maxdrawcount: GLsizei, stride: GLsizei) -> Result<()>;
28927
28928	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPolygonOffsetClamp.xhtml>
28929	fn glPolygonOffsetClamp(&self, factor: GLfloat, units: GLfloat, clamp: GLfloat) -> Result<()>;
28930}
28931/// Functions from OpenGL version 4.6
28932#[derive(Clone, Copy, PartialEq, Eq, Hash)]
28933pub struct Version46 {
28934	/// Is OpenGL version 4.6 available
28935	available: bool,
28936
28937	/// The function pointer to `glGetError()`
28938	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
28939	pub geterror: PFNGLGETERRORPROC,
28940
28941	/// The function pointer to `glSpecializeShader()`
28942	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSpecializeShader.xhtml>
28943	pub specializeshader: PFNGLSPECIALIZESHADERPROC,
28944
28945	/// The function pointer to `glMultiDrawArraysIndirectCount()`
28946	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawArraysIndirectCount.xhtml>
28947	pub multidrawarraysindirectcount: PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC,
28948
28949	/// The function pointer to `glMultiDrawElementsIndirectCount()`
28950	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawElementsIndirectCount.xhtml>
28951	pub multidrawelementsindirectcount: PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC,
28952
28953	/// The function pointer to `glPolygonOffsetClamp()`
28954	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPolygonOffsetClamp.xhtml>
28955	pub polygonoffsetclamp: PFNGLPOLYGONOFFSETCLAMPPROC,
28956}
28957
28958impl GL_4_6 for Version46 {
28959	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
28960	#[inline(always)]
28961	fn glGetError(&self) -> GLenum {
28962		(self.geterror)()
28963	}
28964	#[inline(always)]
28965	fn glSpecializeShader(&self, shader: GLuint, pEntryPoint: *const GLchar, numSpecializationConstants: GLuint, pConstantIndex: *const GLuint, pConstantValue: *const GLuint) -> Result<()> {
28966		let ret = process_catch("glSpecializeShader", catch_unwind(||(self.specializeshader)(shader, pEntryPoint, numSpecializationConstants, pConstantIndex, pConstantValue)));
28967		#[cfg(feature = "diagnose")]
28968		if let Ok(ret) = ret {
28969			return to_result("glSpecializeShader", ret, self.glGetError());
28970		} else {
28971			return ret
28972		}
28973		#[cfg(not(feature = "diagnose"))]
28974		return ret;
28975	}
28976	#[inline(always)]
28977	fn glMultiDrawArraysIndirectCount(&self, mode: GLenum, indirect: *const c_void, drawcount: GLintptr, maxdrawcount: GLsizei, stride: GLsizei) -> Result<()> {
28978		let ret = process_catch("glMultiDrawArraysIndirectCount", catch_unwind(||(self.multidrawarraysindirectcount)(mode, indirect, drawcount, maxdrawcount, stride)));
28979		#[cfg(feature = "diagnose")]
28980		if let Ok(ret) = ret {
28981			return to_result("glMultiDrawArraysIndirectCount", ret, self.glGetError());
28982		} else {
28983			return ret
28984		}
28985		#[cfg(not(feature = "diagnose"))]
28986		return ret;
28987	}
28988	#[inline(always)]
28989	fn glMultiDrawElementsIndirectCount(&self, mode: GLenum, type_: GLenum, indirect: *const c_void, drawcount: GLintptr, maxdrawcount: GLsizei, stride: GLsizei) -> Result<()> {
28990		let ret = process_catch("glMultiDrawElementsIndirectCount", catch_unwind(||(self.multidrawelementsindirectcount)(mode, type_, indirect, drawcount, maxdrawcount, stride)));
28991		#[cfg(feature = "diagnose")]
28992		if let Ok(ret) = ret {
28993			return to_result("glMultiDrawElementsIndirectCount", ret, self.glGetError());
28994		} else {
28995			return ret
28996		}
28997		#[cfg(not(feature = "diagnose"))]
28998		return ret;
28999	}
29000	#[inline(always)]
29001	fn glPolygonOffsetClamp(&self, factor: GLfloat, units: GLfloat, clamp: GLfloat) -> Result<()> {
29002		let ret = process_catch("glPolygonOffsetClamp", catch_unwind(||(self.polygonoffsetclamp)(factor, units, clamp)));
29003		#[cfg(feature = "diagnose")]
29004		if let Ok(ret) = ret {
29005			return to_result("glPolygonOffsetClamp", ret, self.glGetError());
29006		} else {
29007			return ret
29008		}
29009		#[cfg(not(feature = "diagnose"))]
29010		return ret;
29011	}
29012}
29013
29014impl Version46 {
29015	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
29016		let (_spec, major, minor, release) = base.get_version();
29017		if (major, minor, release) < (4, 6, 0) {
29018			return Self::default();
29019		}
29020		Self {
29021			available: true,
29022			geterror: {let proc = get_proc_address("glGetError"); if proc == null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
29023			specializeshader: {let proc = get_proc_address("glSpecializeShader"); if proc == null() {dummy_pfnglspecializeshaderproc} else {unsafe{transmute(proc)}}},
29024			multidrawarraysindirectcount: {let proc = get_proc_address("glMultiDrawArraysIndirectCount"); if proc == null() {dummy_pfnglmultidrawarraysindirectcountproc} else {unsafe{transmute(proc)}}},
29025			multidrawelementsindirectcount: {let proc = get_proc_address("glMultiDrawElementsIndirectCount"); if proc == null() {dummy_pfnglmultidrawelementsindirectcountproc} else {unsafe{transmute(proc)}}},
29026			polygonoffsetclamp: {let proc = get_proc_address("glPolygonOffsetClamp"); if proc == null() {dummy_pfnglpolygonoffsetclampproc} else {unsafe{transmute(proc)}}},
29027		}
29028	}
29029	#[inline(always)]
29030	pub fn get_available(&self) -> bool {
29031		self.available
29032	}
29033}
29034
29035impl Default for Version46 {
29036	fn default() -> Self {
29037		Self {
29038			available: false,
29039			geterror: dummy_pfnglgeterrorproc,
29040			specializeshader: dummy_pfnglspecializeshaderproc,
29041			multidrawarraysindirectcount: dummy_pfnglmultidrawarraysindirectcountproc,
29042			multidrawelementsindirectcount: dummy_pfnglmultidrawelementsindirectcountproc,
29043			polygonoffsetclamp: dummy_pfnglpolygonoffsetclampproc,
29044		}
29045	}
29046}
29047impl Debug for Version46 {
29048	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
29049		if self.available {
29050			f.debug_struct("Version46")
29051			.field("available", &self.available)
29052			.field("specializeshader", unsafe{if transmute::<_, *const c_void>(self.specializeshader) == (dummy_pfnglspecializeshaderproc as *const c_void) {&null::<PFNGLSPECIALIZESHADERPROC>()} else {&self.specializeshader}})
29053			.field("multidrawarraysindirectcount", unsafe{if transmute::<_, *const c_void>(self.multidrawarraysindirectcount) == (dummy_pfnglmultidrawarraysindirectcountproc as *const c_void) {&null::<PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC>()} else {&self.multidrawarraysindirectcount}})
29054			.field("multidrawelementsindirectcount", unsafe{if transmute::<_, *const c_void>(self.multidrawelementsindirectcount) == (dummy_pfnglmultidrawelementsindirectcountproc as *const c_void) {&null::<PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC>()} else {&self.multidrawelementsindirectcount}})
29055			.field("polygonoffsetclamp", unsafe{if transmute::<_, *const c_void>(self.polygonoffsetclamp) == (dummy_pfnglpolygonoffsetclampproc as *const c_void) {&null::<PFNGLPOLYGONOFFSETCLAMPPROC>()} else {&self.polygonoffsetclamp}})
29056			.finish()
29057		} else {
29058			f.debug_struct("Version46")
29059			.field("available", &self.available)
29060			.finish_non_exhaustive()
29061		}
29062	}
29063}
29064
29065/// Alias to `khronos_int32_t`
29066pub type GLfixed = khronos_int32_t;
29067/// Constant value defined from OpenGL ES 2.0
29068pub const GL_RED_BITS: GLenum = 0x0D52;
29069
29070/// Constant value defined from OpenGL ES 2.0
29071pub const GL_GREEN_BITS: GLenum = 0x0D53;
29072
29073/// Constant value defined from OpenGL ES 2.0
29074pub const GL_BLUE_BITS: GLenum = 0x0D54;
29075
29076/// Constant value defined from OpenGL ES 2.0
29077pub const GL_ALPHA_BITS: GLenum = 0x0D55;
29078
29079/// Constant value defined from OpenGL ES 2.0
29080pub const GL_DEPTH_BITS: GLenum = 0x0D56;
29081
29082/// Constant value defined from OpenGL ES 2.0
29083pub const GL_STENCIL_BITS: GLenum = 0x0D57;
29084
29085/// Constant value defined from OpenGL ES 2.0
29086pub const GL_LUMINANCE: GLenum = 0x1909;
29087
29088/// Constant value defined from OpenGL ES 2.0
29089pub const GL_LUMINANCE_ALPHA: GLenum = 0x190A;
29090
29091/// Constant value defined from OpenGL ES 2.0
29092pub const GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS: GLenum = 0x8CD9;
29093
29094/// Functions from OpenGL ES version 2.0
29095pub trait ES_GL_2_0 {
29096
29097	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glActiveTexture.xhtml>
29098	fn glActiveTexture(&self, texture: GLenum) -> Result<()>;
29099
29100	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glAttachShader.xhtml>
29101	fn glAttachShader(&self, program: GLuint, shader: GLuint) -> Result<()>;
29102
29103	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindAttribLocation.xhtml>
29104	fn glBindAttribLocation(&self, program: GLuint, index: GLuint, name: *const GLchar) -> Result<()>;
29105
29106	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindBuffer.xhtml>
29107	fn glBindBuffer(&self, target: GLenum, buffer: GLuint) -> Result<()>;
29108
29109	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindFramebuffer.xhtml>
29110	fn glBindFramebuffer(&self, target: GLenum, framebuffer: GLuint) -> Result<()>;
29111
29112	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindRenderbuffer.xhtml>
29113	fn glBindRenderbuffer(&self, target: GLenum, renderbuffer: GLuint) -> Result<()>;
29114
29115	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindTexture.xhtml>
29116	fn glBindTexture(&self, target: GLenum, texture: GLuint) -> Result<()>;
29117
29118	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendColor.xhtml>
29119	fn glBlendColor(&self, red: GLfloat, green: GLfloat, blue: GLfloat, alpha: GLfloat) -> Result<()>;
29120
29121	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendEquation.xhtml>
29122	fn glBlendEquation(&self, mode: GLenum) -> Result<()>;
29123
29124	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendEquationSeparate.xhtml>
29125	fn glBlendEquationSeparate(&self, modeRGB: GLenum, modeAlpha: GLenum) -> Result<()>;
29126
29127	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendFunc.xhtml>
29128	fn glBlendFunc(&self, sfactor: GLenum, dfactor: GLenum) -> Result<()>;
29129
29130	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendFuncSeparate.xhtml>
29131	fn glBlendFuncSeparate(&self, sfactorRGB: GLenum, dfactorRGB: GLenum, sfactorAlpha: GLenum, dfactorAlpha: GLenum) -> Result<()>;
29132
29133	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBufferData.xhtml>
29134	fn glBufferData(&self, target: GLenum, size: GLsizeiptr, data: *const c_void, usage: GLenum) -> Result<()>;
29135
29136	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBufferSubData.xhtml>
29137	fn glBufferSubData(&self, target: GLenum, offset: GLintptr, size: GLsizeiptr, data: *const c_void) -> Result<()>;
29138
29139	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCheckFramebufferStatus.xhtml>
29140	fn glCheckFramebufferStatus(&self, target: GLenum) -> Result<GLenum>;
29141
29142	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClear.xhtml>
29143	fn glClear(&self, mask: GLbitfield) -> Result<()>;
29144
29145	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClearColor.xhtml>
29146	fn glClearColor(&self, red: GLfloat, green: GLfloat, blue: GLfloat, alpha: GLfloat) -> Result<()>;
29147
29148	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClearDepthf.xhtml>
29149	fn glClearDepthf(&self, d: GLfloat) -> Result<()>;
29150
29151	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClearStencil.xhtml>
29152	fn glClearStencil(&self, s: GLint) -> Result<()>;
29153
29154	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glColorMask.xhtml>
29155	fn glColorMask(&self, red: GLboolean, green: GLboolean, blue: GLboolean, alpha: GLboolean) -> Result<()>;
29156
29157	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCompileShader.xhtml>
29158	fn glCompileShader(&self, shader: GLuint) -> Result<()>;
29159
29160	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCompressedTexImage2D.xhtml>
29161	fn glCompressedTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, border: GLint, imageSize: GLsizei, data: *const c_void) -> Result<()>;
29162
29163	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCompressedTexSubImage2D.xhtml>
29164	fn glCompressedTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()>;
29165
29166	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCopyTexImage2D.xhtml>
29167	fn glCopyTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei, border: GLint) -> Result<()>;
29168
29169	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCopyTexSubImage2D.xhtml>
29170	fn glCopyTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
29171
29172	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCreateProgram.xhtml>
29173	fn glCreateProgram(&self) -> Result<GLuint>;
29174
29175	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCreateShader.xhtml>
29176	fn glCreateShader(&self, type_: GLenum) -> Result<GLuint>;
29177
29178	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCullFace.xhtml>
29179	fn glCullFace(&self, mode: GLenum) -> Result<()>;
29180
29181	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteBuffers.xhtml>
29182	fn glDeleteBuffers(&self, n: GLsizei, buffers: *const GLuint) -> Result<()>;
29183
29184	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteFramebuffers.xhtml>
29185	fn glDeleteFramebuffers(&self, n: GLsizei, framebuffers: *const GLuint) -> Result<()>;
29186
29187	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteProgram.xhtml>
29188	fn glDeleteProgram(&self, program: GLuint) -> Result<()>;
29189
29190	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteRenderbuffers.xhtml>
29191	fn glDeleteRenderbuffers(&self, n: GLsizei, renderbuffers: *const GLuint) -> Result<()>;
29192
29193	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteShader.xhtml>
29194	fn glDeleteShader(&self, shader: GLuint) -> Result<()>;
29195
29196	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteTextures.xhtml>
29197	fn glDeleteTextures(&self, n: GLsizei, textures: *const GLuint) -> Result<()>;
29198
29199	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDepthFunc.xhtml>
29200	fn glDepthFunc(&self, func: GLenum) -> Result<()>;
29201
29202	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDepthMask.xhtml>
29203	fn glDepthMask(&self, flag: GLboolean) -> Result<()>;
29204
29205	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDepthRangef.xhtml>
29206	fn glDepthRangef(&self, n: GLfloat, f: GLfloat) -> Result<()>;
29207
29208	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDetachShader.xhtml>
29209	fn glDetachShader(&self, program: GLuint, shader: GLuint) -> Result<()>;
29210
29211	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDisable.xhtml>
29212	fn glDisable(&self, cap: GLenum) -> Result<()>;
29213
29214	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDisableVertexAttribArray.xhtml>
29215	fn glDisableVertexAttribArray(&self, index: GLuint) -> Result<()>;
29216
29217	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawArrays.xhtml>
29218	fn glDrawArrays(&self, mode: GLenum, first: GLint, count: GLsizei) -> Result<()>;
29219
29220	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawElements.xhtml>
29221	fn glDrawElements(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void) -> Result<()>;
29222
29223	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glEnable.xhtml>
29224	fn glEnable(&self, cap: GLenum) -> Result<()>;
29225
29226	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glEnableVertexAttribArray.xhtml>
29227	fn glEnableVertexAttribArray(&self, index: GLuint) -> Result<()>;
29228
29229	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFinish.xhtml>
29230	fn glFinish(&self) -> Result<()>;
29231
29232	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFlush.xhtml>
29233	fn glFlush(&self) -> Result<()>;
29234
29235	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFramebufferRenderbuffer.xhtml>
29236	fn glFramebufferRenderbuffer(&self, target: GLenum, attachment: GLenum, renderbuffertarget: GLenum, renderbuffer: GLuint) -> Result<()>;
29237
29238	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFramebufferTexture2D.xhtml>
29239	fn glFramebufferTexture2D(&self, target: GLenum, attachment: GLenum, textarget: GLenum, texture: GLuint, level: GLint) -> Result<()>;
29240
29241	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFrontFace.xhtml>
29242	fn glFrontFace(&self, mode: GLenum) -> Result<()>;
29243
29244	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenBuffers.xhtml>
29245	fn glGenBuffers(&self, n: GLsizei, buffers: *mut GLuint) -> Result<()>;
29246
29247	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenerateMipmap.xhtml>
29248	fn glGenerateMipmap(&self, target: GLenum) -> Result<()>;
29249
29250	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenFramebuffers.xhtml>
29251	fn glGenFramebuffers(&self, n: GLsizei, framebuffers: *mut GLuint) -> Result<()>;
29252
29253	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenRenderbuffers.xhtml>
29254	fn glGenRenderbuffers(&self, n: GLsizei, renderbuffers: *mut GLuint) -> Result<()>;
29255
29256	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenTextures.xhtml>
29257	fn glGenTextures(&self, n: GLsizei, textures: *mut GLuint) -> Result<()>;
29258
29259	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetActiveAttrib.xhtml>
29260	fn glGetActiveAttrib(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLint, type_: *mut GLenum, name: *mut GLchar) -> Result<()>;
29261
29262	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetActiveUniform.xhtml>
29263	fn glGetActiveUniform(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLint, type_: *mut GLenum, name: *mut GLchar) -> Result<()>;
29264
29265	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetAttachedShaders.xhtml>
29266	fn glGetAttachedShaders(&self, program: GLuint, maxCount: GLsizei, count: *mut GLsizei, shaders: *mut GLuint) -> Result<()>;
29267
29268	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetAttribLocation.xhtml>
29269	fn glGetAttribLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint>;
29270
29271	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetBooleanv.xhtml>
29272	fn glGetBooleanv(&self, pname: GLenum, data: *mut GLboolean) -> Result<()>;
29273
29274	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetBufferParameteriv.xhtml>
29275	fn glGetBufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
29276
29277	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetError.xhtml>
29278	fn glGetError(&self) -> GLenum;
29279
29280	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetFloatv.xhtml>
29281	fn glGetFloatv(&self, pname: GLenum, data: *mut GLfloat) -> Result<()>;
29282
29283	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetFramebufferAttachmentParameteriv.xhtml>
29284	fn glGetFramebufferAttachmentParameteriv(&self, target: GLenum, attachment: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
29285
29286	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetIntegerv.xhtml>
29287	fn glGetIntegerv(&self, pname: GLenum, data: *mut GLint) -> Result<()>;
29288
29289	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramiv.xhtml>
29290	fn glGetProgramiv(&self, program: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
29291
29292	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramInfoLog.xhtml>
29293	fn glGetProgramInfoLog(&self, program: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()>;
29294
29295	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetRenderbufferParameteriv.xhtml>
29296	fn glGetRenderbufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
29297
29298	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetShaderiv.xhtml>
29299	fn glGetShaderiv(&self, shader: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
29300
29301	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetShaderInfoLog.xhtml>
29302	fn glGetShaderInfoLog(&self, shader: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()>;
29303
29304	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetShaderPrecisionFormat.xhtml>
29305	fn glGetShaderPrecisionFormat(&self, shadertype: GLenum, precisiontype: GLenum, range: *mut GLint, precision: *mut GLint) -> Result<()>;
29306
29307	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetShaderSource.xhtml>
29308	fn glGetShaderSource(&self, shader: GLuint, bufSize: GLsizei, length: *mut GLsizei, source: *mut GLchar) -> Result<()>;
29309
29310	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetString.xhtml>
29311	fn glGetString(&self, name: GLenum) -> Result<&'static str>;
29312
29313	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetTexParameterfv.xhtml>
29314	fn glGetTexParameterfv(&self, target: GLenum, pname: GLenum, params: *mut GLfloat) -> Result<()>;
29315
29316	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetTexParameteriv.xhtml>
29317	fn glGetTexParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
29318
29319	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetUniformfv.xhtml>
29320	fn glGetUniformfv(&self, program: GLuint, location: GLint, params: *mut GLfloat) -> Result<()>;
29321
29322	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetUniformiv.xhtml>
29323	fn glGetUniformiv(&self, program: GLuint, location: GLint, params: *mut GLint) -> Result<()>;
29324
29325	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetUniformLocation.xhtml>
29326	fn glGetUniformLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint>;
29327
29328	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetVertexAttribfv.xhtml>
29329	fn glGetVertexAttribfv(&self, index: GLuint, pname: GLenum, params: *mut GLfloat) -> Result<()>;
29330
29331	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetVertexAttribiv.xhtml>
29332	fn glGetVertexAttribiv(&self, index: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
29333
29334	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetVertexAttribPointerv.xhtml>
29335	fn glGetVertexAttribPointerv(&self, index: GLuint, pname: GLenum, pointer: *mut *mut c_void) -> Result<()>;
29336
29337	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glHint.xhtml>
29338	fn glHint(&self, target: GLenum, mode: GLenum) -> Result<()>;
29339
29340	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsBuffer.xhtml>
29341	fn glIsBuffer(&self, buffer: GLuint) -> Result<GLboolean>;
29342
29343	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsEnabled.xhtml>
29344	fn glIsEnabled(&self, cap: GLenum) -> Result<GLboolean>;
29345
29346	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsFramebuffer.xhtml>
29347	fn glIsFramebuffer(&self, framebuffer: GLuint) -> Result<GLboolean>;
29348
29349	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsProgram.xhtml>
29350	fn glIsProgram(&self, program: GLuint) -> Result<GLboolean>;
29351
29352	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsRenderbuffer.xhtml>
29353	fn glIsRenderbuffer(&self, renderbuffer: GLuint) -> Result<GLboolean>;
29354
29355	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsShader.xhtml>
29356	fn glIsShader(&self, shader: GLuint) -> Result<GLboolean>;
29357
29358	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsTexture.xhtml>
29359	fn glIsTexture(&self, texture: GLuint) -> Result<GLboolean>;
29360
29361	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glLineWidth.xhtml>
29362	fn glLineWidth(&self, width: GLfloat) -> Result<()>;
29363
29364	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glLinkProgram.xhtml>
29365	fn glLinkProgram(&self, program: GLuint) -> Result<()>;
29366
29367	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glPixelStorei.xhtml>
29368	fn glPixelStorei(&self, pname: GLenum, param: GLint) -> Result<()>;
29369
29370	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glPolygonOffset.xhtml>
29371	fn glPolygonOffset(&self, factor: GLfloat, units: GLfloat) -> Result<()>;
29372
29373	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glReadPixels.xhtml>
29374	fn glReadPixels(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, pixels: *mut c_void) -> Result<()>;
29375
29376	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glReleaseShaderCompiler.xhtml>
29377	fn glReleaseShaderCompiler(&self) -> Result<()>;
29378
29379	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glRenderbufferStorage.xhtml>
29380	fn glRenderbufferStorage(&self, target: GLenum, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()>;
29381
29382	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glSampleCoverage.xhtml>
29383	fn glSampleCoverage(&self, value: GLfloat, invert: GLboolean) -> Result<()>;
29384
29385	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glScissor.xhtml>
29386	fn glScissor(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
29387
29388	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glShaderBinary.xhtml>
29389	fn glShaderBinary(&self, count: GLsizei, shaders: *const GLuint, binaryformat: GLenum, binary: *const c_void, length: GLsizei) -> Result<()>;
29390
29391	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glShaderSource.xhtml>
29392	fn glShaderSource(&self, shader: GLuint, count: GLsizei, string_: *const *const GLchar, length: *const GLint) -> Result<()>;
29393
29394	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glStencilFunc.xhtml>
29395	fn glStencilFunc(&self, func: GLenum, ref_: GLint, mask: GLuint) -> Result<()>;
29396
29397	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glStencilFuncSeparate.xhtml>
29398	fn glStencilFuncSeparate(&self, face: GLenum, func: GLenum, ref_: GLint, mask: GLuint) -> Result<()>;
29399
29400	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glStencilMask.xhtml>
29401	fn glStencilMask(&self, mask: GLuint) -> Result<()>;
29402
29403	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glStencilMaskSeparate.xhtml>
29404	fn glStencilMaskSeparate(&self, face: GLenum, mask: GLuint) -> Result<()>;
29405
29406	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glStencilOp.xhtml>
29407	fn glStencilOp(&self, fail: GLenum, zfail: GLenum, zpass: GLenum) -> Result<()>;
29408
29409	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glStencilOpSeparate.xhtml>
29410	fn glStencilOpSeparate(&self, face: GLenum, sfail: GLenum, dpfail: GLenum, dppass: GLenum) -> Result<()>;
29411
29412	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexImage2D.xhtml>
29413	fn glTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
29414
29415	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexParameterf.xhtml>
29416	fn glTexParameterf(&self, target: GLenum, pname: GLenum, param: GLfloat) -> Result<()>;
29417
29418	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexParameterfv.xhtml>
29419	fn glTexParameterfv(&self, target: GLenum, pname: GLenum, params: *const GLfloat) -> Result<()>;
29420
29421	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexParameteri.xhtml>
29422	fn glTexParameteri(&self, target: GLenum, pname: GLenum, param: GLint) -> Result<()>;
29423
29424	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexParameteriv.xhtml>
29425	fn glTexParameteriv(&self, target: GLenum, pname: GLenum, params: *const GLint) -> Result<()>;
29426
29427	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexSubImage2D.xhtml>
29428	fn glTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
29429
29430	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform1f.xhtml>
29431	fn glUniform1f(&self, location: GLint, v0: GLfloat) -> Result<()>;
29432
29433	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform1fv.xhtml>
29434	fn glUniform1fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
29435
29436	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform1i.xhtml>
29437	fn glUniform1i(&self, location: GLint, v0: GLint) -> Result<()>;
29438
29439	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform1iv.xhtml>
29440	fn glUniform1iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
29441
29442	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform2f.xhtml>
29443	fn glUniform2f(&self, location: GLint, v0: GLfloat, v1: GLfloat) -> Result<()>;
29444
29445	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform2fv.xhtml>
29446	fn glUniform2fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
29447
29448	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform2i.xhtml>
29449	fn glUniform2i(&self, location: GLint, v0: GLint, v1: GLint) -> Result<()>;
29450
29451	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform2iv.xhtml>
29452	fn glUniform2iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
29453
29454	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform3f.xhtml>
29455	fn glUniform3f(&self, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat) -> Result<()>;
29456
29457	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform3fv.xhtml>
29458	fn glUniform3fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
29459
29460	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform3i.xhtml>
29461	fn glUniform3i(&self, location: GLint, v0: GLint, v1: GLint, v2: GLint) -> Result<()>;
29462
29463	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform3iv.xhtml>
29464	fn glUniform3iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
29465
29466	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform4f.xhtml>
29467	fn glUniform4f(&self, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat, v3: GLfloat) -> Result<()>;
29468
29469	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform4fv.xhtml>
29470	fn glUniform4fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
29471
29472	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform4i.xhtml>
29473	fn glUniform4i(&self, location: GLint, v0: GLint, v1: GLint, v2: GLint, v3: GLint) -> Result<()>;
29474
29475	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform4iv.xhtml>
29476	fn glUniform4iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
29477
29478	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix2fv.xhtml>
29479	fn glUniformMatrix2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
29480
29481	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix3fv.xhtml>
29482	fn glUniformMatrix3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
29483
29484	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix4fv.xhtml>
29485	fn glUniformMatrix4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
29486
29487	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUseProgram.xhtml>
29488	fn glUseProgram(&self, program: GLuint) -> Result<()>;
29489
29490	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glValidateProgram.xhtml>
29491	fn glValidateProgram(&self, program: GLuint) -> Result<()>;
29492
29493	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttrib1f.xhtml>
29494	fn glVertexAttrib1f(&self, index: GLuint, x: GLfloat) -> Result<()>;
29495
29496	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttrib1fv.xhtml>
29497	fn glVertexAttrib1fv(&self, index: GLuint, v: *const GLfloat) -> Result<()>;
29498
29499	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttrib2f.xhtml>
29500	fn glVertexAttrib2f(&self, index: GLuint, x: GLfloat, y: GLfloat) -> Result<()>;
29501
29502	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttrib2fv.xhtml>
29503	fn glVertexAttrib2fv(&self, index: GLuint, v: *const GLfloat) -> Result<()>;
29504
29505	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttrib3f.xhtml>
29506	fn glVertexAttrib3f(&self, index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat) -> Result<()>;
29507
29508	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttrib3fv.xhtml>
29509	fn glVertexAttrib3fv(&self, index: GLuint, v: *const GLfloat) -> Result<()>;
29510
29511	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttrib4f.xhtml>
29512	fn glVertexAttrib4f(&self, index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat, w: GLfloat) -> Result<()>;
29513
29514	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttrib4fv.xhtml>
29515	fn glVertexAttrib4fv(&self, index: GLuint, v: *const GLfloat) -> Result<()>;
29516
29517	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribPointer.xhtml>
29518	fn glVertexAttribPointer(&self, index: GLuint, size: GLint, type_: GLenum, normalized: GLboolean, stride: GLsizei, pointer: *const c_void) -> Result<()>;
29519
29520	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glViewport.xhtml>
29521	fn glViewport(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
29522}
29523/// Functions from OpenGL ES version 2.0
29524#[derive(Clone, Copy, PartialEq, Eq, Hash)]
29525pub struct EsVersion20 {
29526	/// Is OpenGL ES version 2.0 available
29527	available: bool,
29528	/// The function pointer to `glActiveTexture()`
29529	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glActiveTexture.xhtml>
29530	pub activetexture: PFNGLACTIVETEXTUREPROC,
29531
29532	/// The function pointer to `glAttachShader()`
29533	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glAttachShader.xhtml>
29534	pub attachshader: PFNGLATTACHSHADERPROC,
29535
29536	/// The function pointer to `glBindAttribLocation()`
29537	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindAttribLocation.xhtml>
29538	pub bindattriblocation: PFNGLBINDATTRIBLOCATIONPROC,
29539
29540	/// The function pointer to `glBindBuffer()`
29541	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindBuffer.xhtml>
29542	pub bindbuffer: PFNGLBINDBUFFERPROC,
29543
29544	/// The function pointer to `glBindFramebuffer()`
29545	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindFramebuffer.xhtml>
29546	pub bindframebuffer: PFNGLBINDFRAMEBUFFERPROC,
29547
29548	/// The function pointer to `glBindRenderbuffer()`
29549	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindRenderbuffer.xhtml>
29550	pub bindrenderbuffer: PFNGLBINDRENDERBUFFERPROC,
29551
29552	/// The function pointer to `glBindTexture()`
29553	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindTexture.xhtml>
29554	pub bindtexture: PFNGLBINDTEXTUREPROC,
29555
29556	/// The function pointer to `glBlendColor()`
29557	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendColor.xhtml>
29558	pub blendcolor: PFNGLBLENDCOLORPROC,
29559
29560	/// The function pointer to `glBlendEquation()`
29561	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendEquation.xhtml>
29562	pub blendequation: PFNGLBLENDEQUATIONPROC,
29563
29564	/// The function pointer to `glBlendEquationSeparate()`
29565	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendEquationSeparate.xhtml>
29566	pub blendequationseparate: PFNGLBLENDEQUATIONSEPARATEPROC,
29567
29568	/// The function pointer to `glBlendFunc()`
29569	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendFunc.xhtml>
29570	pub blendfunc: PFNGLBLENDFUNCPROC,
29571
29572	/// The function pointer to `glBlendFuncSeparate()`
29573	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendFuncSeparate.xhtml>
29574	pub blendfuncseparate: PFNGLBLENDFUNCSEPARATEPROC,
29575
29576	/// The function pointer to `glBufferData()`
29577	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBufferData.xhtml>
29578	pub bufferdata: PFNGLBUFFERDATAPROC,
29579
29580	/// The function pointer to `glBufferSubData()`
29581	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBufferSubData.xhtml>
29582	pub buffersubdata: PFNGLBUFFERSUBDATAPROC,
29583
29584	/// The function pointer to `glCheckFramebufferStatus()`
29585	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCheckFramebufferStatus.xhtml>
29586	pub checkframebufferstatus: PFNGLCHECKFRAMEBUFFERSTATUSPROC,
29587
29588	/// The function pointer to `glClear()`
29589	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClear.xhtml>
29590	pub clear: PFNGLCLEARPROC,
29591
29592	/// The function pointer to `glClearColor()`
29593	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClearColor.xhtml>
29594	pub clearcolor: PFNGLCLEARCOLORPROC,
29595
29596	/// The function pointer to `glClearDepthf()`
29597	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClearDepthf.xhtml>
29598	pub cleardepthf: PFNGLCLEARDEPTHFPROC,
29599
29600	/// The function pointer to `glClearStencil()`
29601	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClearStencil.xhtml>
29602	pub clearstencil: PFNGLCLEARSTENCILPROC,
29603
29604	/// The function pointer to `glColorMask()`
29605	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glColorMask.xhtml>
29606	pub colormask: PFNGLCOLORMASKPROC,
29607
29608	/// The function pointer to `glCompileShader()`
29609	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCompileShader.xhtml>
29610	pub compileshader: PFNGLCOMPILESHADERPROC,
29611
29612	/// The function pointer to `glCompressedTexImage2D()`
29613	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCompressedTexImage2D.xhtml>
29614	pub compressedteximage2d: PFNGLCOMPRESSEDTEXIMAGE2DPROC,
29615
29616	/// The function pointer to `glCompressedTexSubImage2D()`
29617	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCompressedTexSubImage2D.xhtml>
29618	pub compressedtexsubimage2d: PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC,
29619
29620	/// The function pointer to `glCopyTexImage2D()`
29621	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCopyTexImage2D.xhtml>
29622	pub copyteximage2d: PFNGLCOPYTEXIMAGE2DPROC,
29623
29624	/// The function pointer to `glCopyTexSubImage2D()`
29625	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCopyTexSubImage2D.xhtml>
29626	pub copytexsubimage2d: PFNGLCOPYTEXSUBIMAGE2DPROC,
29627
29628	/// The function pointer to `glCreateProgram()`
29629	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCreateProgram.xhtml>
29630	pub createprogram: PFNGLCREATEPROGRAMPROC,
29631
29632	/// The function pointer to `glCreateShader()`
29633	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCreateShader.xhtml>
29634	pub createshader: PFNGLCREATESHADERPROC,
29635
29636	/// The function pointer to `glCullFace()`
29637	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCullFace.xhtml>
29638	pub cullface: PFNGLCULLFACEPROC,
29639
29640	/// The function pointer to `glDeleteBuffers()`
29641	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteBuffers.xhtml>
29642	pub deletebuffers: PFNGLDELETEBUFFERSPROC,
29643
29644	/// The function pointer to `glDeleteFramebuffers()`
29645	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteFramebuffers.xhtml>
29646	pub deleteframebuffers: PFNGLDELETEFRAMEBUFFERSPROC,
29647
29648	/// The function pointer to `glDeleteProgram()`
29649	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteProgram.xhtml>
29650	pub deleteprogram: PFNGLDELETEPROGRAMPROC,
29651
29652	/// The function pointer to `glDeleteRenderbuffers()`
29653	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteRenderbuffers.xhtml>
29654	pub deleterenderbuffers: PFNGLDELETERENDERBUFFERSPROC,
29655
29656	/// The function pointer to `glDeleteShader()`
29657	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteShader.xhtml>
29658	pub deleteshader: PFNGLDELETESHADERPROC,
29659
29660	/// The function pointer to `glDeleteTextures()`
29661	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteTextures.xhtml>
29662	pub deletetextures: PFNGLDELETETEXTURESPROC,
29663
29664	/// The function pointer to `glDepthFunc()`
29665	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDepthFunc.xhtml>
29666	pub depthfunc: PFNGLDEPTHFUNCPROC,
29667
29668	/// The function pointer to `glDepthMask()`
29669	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDepthMask.xhtml>
29670	pub depthmask: PFNGLDEPTHMASKPROC,
29671
29672	/// The function pointer to `glDepthRangef()`
29673	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDepthRangef.xhtml>
29674	pub depthrangef: PFNGLDEPTHRANGEFPROC,
29675
29676	/// The function pointer to `glDetachShader()`
29677	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDetachShader.xhtml>
29678	pub detachshader: PFNGLDETACHSHADERPROC,
29679
29680	/// The function pointer to `glDisable()`
29681	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDisable.xhtml>
29682	pub disable: PFNGLDISABLEPROC,
29683
29684	/// The function pointer to `glDisableVertexAttribArray()`
29685	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDisableVertexAttribArray.xhtml>
29686	pub disablevertexattribarray: PFNGLDISABLEVERTEXATTRIBARRAYPROC,
29687
29688	/// The function pointer to `glDrawArrays()`
29689	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawArrays.xhtml>
29690	pub drawarrays: PFNGLDRAWARRAYSPROC,
29691
29692	/// The function pointer to `glDrawElements()`
29693	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawElements.xhtml>
29694	pub drawelements: PFNGLDRAWELEMENTSPROC,
29695
29696	/// The function pointer to `glEnable()`
29697	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glEnable.xhtml>
29698	pub enable: PFNGLENABLEPROC,
29699
29700	/// The function pointer to `glEnableVertexAttribArray()`
29701	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glEnableVertexAttribArray.xhtml>
29702	pub enablevertexattribarray: PFNGLENABLEVERTEXATTRIBARRAYPROC,
29703
29704	/// The function pointer to `glFinish()`
29705	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFinish.xhtml>
29706	pub finish: PFNGLFINISHPROC,
29707
29708	/// The function pointer to `glFlush()`
29709	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFlush.xhtml>
29710	pub flush: PFNGLFLUSHPROC,
29711
29712	/// The function pointer to `glFramebufferRenderbuffer()`
29713	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFramebufferRenderbuffer.xhtml>
29714	pub framebufferrenderbuffer: PFNGLFRAMEBUFFERRENDERBUFFERPROC,
29715
29716	/// The function pointer to `glFramebufferTexture2D()`
29717	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFramebufferTexture2D.xhtml>
29718	pub framebuffertexture2d: PFNGLFRAMEBUFFERTEXTURE2DPROC,
29719
29720	/// The function pointer to `glFrontFace()`
29721	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFrontFace.xhtml>
29722	pub frontface: PFNGLFRONTFACEPROC,
29723
29724	/// The function pointer to `glGenBuffers()`
29725	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenBuffers.xhtml>
29726	pub genbuffers: PFNGLGENBUFFERSPROC,
29727
29728	/// The function pointer to `glGenerateMipmap()`
29729	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenerateMipmap.xhtml>
29730	pub generatemipmap: PFNGLGENERATEMIPMAPPROC,
29731
29732	/// The function pointer to `glGenFramebuffers()`
29733	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenFramebuffers.xhtml>
29734	pub genframebuffers: PFNGLGENFRAMEBUFFERSPROC,
29735
29736	/// The function pointer to `glGenRenderbuffers()`
29737	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenRenderbuffers.xhtml>
29738	pub genrenderbuffers: PFNGLGENRENDERBUFFERSPROC,
29739
29740	/// The function pointer to `glGenTextures()`
29741	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenTextures.xhtml>
29742	pub gentextures: PFNGLGENTEXTURESPROC,
29743
29744	/// The function pointer to `glGetActiveAttrib()`
29745	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetActiveAttrib.xhtml>
29746	pub getactiveattrib: PFNGLGETACTIVEATTRIBPROC,
29747
29748	/// The function pointer to `glGetActiveUniform()`
29749	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetActiveUniform.xhtml>
29750	pub getactiveuniform: PFNGLGETACTIVEUNIFORMPROC,
29751
29752	/// The function pointer to `glGetAttachedShaders()`
29753	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetAttachedShaders.xhtml>
29754	pub getattachedshaders: PFNGLGETATTACHEDSHADERSPROC,
29755
29756	/// The function pointer to `glGetAttribLocation()`
29757	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetAttribLocation.xhtml>
29758	pub getattriblocation: PFNGLGETATTRIBLOCATIONPROC,
29759
29760	/// The function pointer to `glGetBooleanv()`
29761	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetBooleanv.xhtml>
29762	pub getbooleanv: PFNGLGETBOOLEANVPROC,
29763
29764	/// The function pointer to `glGetBufferParameteriv()`
29765	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetBufferParameteriv.xhtml>
29766	pub getbufferparameteriv: PFNGLGETBUFFERPARAMETERIVPROC,
29767
29768	/// The function pointer to `glGetError()`
29769	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetError.xhtml>
29770	pub geterror: PFNGLGETERRORPROC,
29771
29772	/// The function pointer to `glGetFloatv()`
29773	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetFloatv.xhtml>
29774	pub getfloatv: PFNGLGETFLOATVPROC,
29775
29776	/// The function pointer to `glGetFramebufferAttachmentParameteriv()`
29777	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetFramebufferAttachmentParameteriv.xhtml>
29778	pub getframebufferattachmentparameteriv: PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC,
29779
29780	/// The function pointer to `glGetIntegerv()`
29781	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetIntegerv.xhtml>
29782	pub getintegerv: PFNGLGETINTEGERVPROC,
29783
29784	/// The function pointer to `glGetProgramiv()`
29785	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramiv.xhtml>
29786	pub getprogramiv: PFNGLGETPROGRAMIVPROC,
29787
29788	/// The function pointer to `glGetProgramInfoLog()`
29789	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramInfoLog.xhtml>
29790	pub getprograminfolog: PFNGLGETPROGRAMINFOLOGPROC,
29791
29792	/// The function pointer to `glGetRenderbufferParameteriv()`
29793	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetRenderbufferParameteriv.xhtml>
29794	pub getrenderbufferparameteriv: PFNGLGETRENDERBUFFERPARAMETERIVPROC,
29795
29796	/// The function pointer to `glGetShaderiv()`
29797	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetShaderiv.xhtml>
29798	pub getshaderiv: PFNGLGETSHADERIVPROC,
29799
29800	/// The function pointer to `glGetShaderInfoLog()`
29801	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetShaderInfoLog.xhtml>
29802	pub getshaderinfolog: PFNGLGETSHADERINFOLOGPROC,
29803
29804	/// The function pointer to `glGetShaderPrecisionFormat()`
29805	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetShaderPrecisionFormat.xhtml>
29806	pub getshaderprecisionformat: PFNGLGETSHADERPRECISIONFORMATPROC,
29807
29808	/// The function pointer to `glGetShaderSource()`
29809	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetShaderSource.xhtml>
29810	pub getshadersource: PFNGLGETSHADERSOURCEPROC,
29811
29812	/// The function pointer to `glGetString()`
29813	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetString.xhtml>
29814	pub getstring: PFNGLGETSTRINGPROC,
29815
29816	/// The function pointer to `glGetTexParameterfv()`
29817	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetTexParameterfv.xhtml>
29818	pub gettexparameterfv: PFNGLGETTEXPARAMETERFVPROC,
29819
29820	/// The function pointer to `glGetTexParameteriv()`
29821	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetTexParameteriv.xhtml>
29822	pub gettexparameteriv: PFNGLGETTEXPARAMETERIVPROC,
29823
29824	/// The function pointer to `glGetUniformfv()`
29825	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetUniformfv.xhtml>
29826	pub getuniformfv: PFNGLGETUNIFORMFVPROC,
29827
29828	/// The function pointer to `glGetUniformiv()`
29829	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetUniformiv.xhtml>
29830	pub getuniformiv: PFNGLGETUNIFORMIVPROC,
29831
29832	/// The function pointer to `glGetUniformLocation()`
29833	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetUniformLocation.xhtml>
29834	pub getuniformlocation: PFNGLGETUNIFORMLOCATIONPROC,
29835
29836	/// The function pointer to `glGetVertexAttribfv()`
29837	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetVertexAttribfv.xhtml>
29838	pub getvertexattribfv: PFNGLGETVERTEXATTRIBFVPROC,
29839
29840	/// The function pointer to `glGetVertexAttribiv()`
29841	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetVertexAttribiv.xhtml>
29842	pub getvertexattribiv: PFNGLGETVERTEXATTRIBIVPROC,
29843
29844	/// The function pointer to `glGetVertexAttribPointerv()`
29845	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetVertexAttribPointerv.xhtml>
29846	pub getvertexattribpointerv: PFNGLGETVERTEXATTRIBPOINTERVPROC,
29847
29848	/// The function pointer to `glHint()`
29849	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glHint.xhtml>
29850	pub hint: PFNGLHINTPROC,
29851
29852	/// The function pointer to `glIsBuffer()`
29853	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsBuffer.xhtml>
29854	pub isbuffer: PFNGLISBUFFERPROC,
29855
29856	/// The function pointer to `glIsEnabled()`
29857	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsEnabled.xhtml>
29858	pub isenabled: PFNGLISENABLEDPROC,
29859
29860	/// The function pointer to `glIsFramebuffer()`
29861	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsFramebuffer.xhtml>
29862	pub isframebuffer: PFNGLISFRAMEBUFFERPROC,
29863
29864	/// The function pointer to `glIsProgram()`
29865	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsProgram.xhtml>
29866	pub isprogram: PFNGLISPROGRAMPROC,
29867
29868	/// The function pointer to `glIsRenderbuffer()`
29869	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsRenderbuffer.xhtml>
29870	pub isrenderbuffer: PFNGLISRENDERBUFFERPROC,
29871
29872	/// The function pointer to `glIsShader()`
29873	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsShader.xhtml>
29874	pub isshader: PFNGLISSHADERPROC,
29875
29876	/// The function pointer to `glIsTexture()`
29877	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsTexture.xhtml>
29878	pub istexture: PFNGLISTEXTUREPROC,
29879
29880	/// The function pointer to `glLineWidth()`
29881	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glLineWidth.xhtml>
29882	pub linewidth: PFNGLLINEWIDTHPROC,
29883
29884	/// The function pointer to `glLinkProgram()`
29885	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glLinkProgram.xhtml>
29886	pub linkprogram: PFNGLLINKPROGRAMPROC,
29887
29888	/// The function pointer to `glPixelStorei()`
29889	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glPixelStorei.xhtml>
29890	pub pixelstorei: PFNGLPIXELSTOREIPROC,
29891
29892	/// The function pointer to `glPolygonOffset()`
29893	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glPolygonOffset.xhtml>
29894	pub polygonoffset: PFNGLPOLYGONOFFSETPROC,
29895
29896	/// The function pointer to `glReadPixels()`
29897	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glReadPixels.xhtml>
29898	pub readpixels: PFNGLREADPIXELSPROC,
29899
29900	/// The function pointer to `glReleaseShaderCompiler()`
29901	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glReleaseShaderCompiler.xhtml>
29902	pub releaseshadercompiler: PFNGLRELEASESHADERCOMPILERPROC,
29903
29904	/// The function pointer to `glRenderbufferStorage()`
29905	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glRenderbufferStorage.xhtml>
29906	pub renderbufferstorage: PFNGLRENDERBUFFERSTORAGEPROC,
29907
29908	/// The function pointer to `glSampleCoverage()`
29909	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glSampleCoverage.xhtml>
29910	pub samplecoverage: PFNGLSAMPLECOVERAGEPROC,
29911
29912	/// The function pointer to `glScissor()`
29913	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glScissor.xhtml>
29914	pub scissor: PFNGLSCISSORPROC,
29915
29916	/// The function pointer to `glShaderBinary()`
29917	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glShaderBinary.xhtml>
29918	pub shaderbinary: PFNGLSHADERBINARYPROC,
29919
29920	/// The function pointer to `glShaderSource()`
29921	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glShaderSource.xhtml>
29922	pub shadersource: PFNGLSHADERSOURCEPROC,
29923
29924	/// The function pointer to `glStencilFunc()`
29925	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glStencilFunc.xhtml>
29926	pub stencilfunc: PFNGLSTENCILFUNCPROC,
29927
29928	/// The function pointer to `glStencilFuncSeparate()`
29929	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glStencilFuncSeparate.xhtml>
29930	pub stencilfuncseparate: PFNGLSTENCILFUNCSEPARATEPROC,
29931
29932	/// The function pointer to `glStencilMask()`
29933	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glStencilMask.xhtml>
29934	pub stencilmask: PFNGLSTENCILMASKPROC,
29935
29936	/// The function pointer to `glStencilMaskSeparate()`
29937	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glStencilMaskSeparate.xhtml>
29938	pub stencilmaskseparate: PFNGLSTENCILMASKSEPARATEPROC,
29939
29940	/// The function pointer to `glStencilOp()`
29941	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glStencilOp.xhtml>
29942	pub stencilop: PFNGLSTENCILOPPROC,
29943
29944	/// The function pointer to `glStencilOpSeparate()`
29945	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glStencilOpSeparate.xhtml>
29946	pub stencilopseparate: PFNGLSTENCILOPSEPARATEPROC,
29947
29948	/// The function pointer to `glTexImage2D()`
29949	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexImage2D.xhtml>
29950	pub teximage2d: PFNGLTEXIMAGE2DPROC,
29951
29952	/// The function pointer to `glTexParameterf()`
29953	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexParameterf.xhtml>
29954	pub texparameterf: PFNGLTEXPARAMETERFPROC,
29955
29956	/// The function pointer to `glTexParameterfv()`
29957	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexParameterfv.xhtml>
29958	pub texparameterfv: PFNGLTEXPARAMETERFVPROC,
29959
29960	/// The function pointer to `glTexParameteri()`
29961	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexParameteri.xhtml>
29962	pub texparameteri: PFNGLTEXPARAMETERIPROC,
29963
29964	/// The function pointer to `glTexParameteriv()`
29965	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexParameteriv.xhtml>
29966	pub texparameteriv: PFNGLTEXPARAMETERIVPROC,
29967
29968	/// The function pointer to `glTexSubImage2D()`
29969	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexSubImage2D.xhtml>
29970	pub texsubimage2d: PFNGLTEXSUBIMAGE2DPROC,
29971
29972	/// The function pointer to `glUniform1f()`
29973	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform1f.xhtml>
29974	pub uniform1f: PFNGLUNIFORM1FPROC,
29975
29976	/// The function pointer to `glUniform1fv()`
29977	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform1fv.xhtml>
29978	pub uniform1fv: PFNGLUNIFORM1FVPROC,
29979
29980	/// The function pointer to `glUniform1i()`
29981	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform1i.xhtml>
29982	pub uniform1i: PFNGLUNIFORM1IPROC,
29983
29984	/// The function pointer to `glUniform1iv()`
29985	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform1iv.xhtml>
29986	pub uniform1iv: PFNGLUNIFORM1IVPROC,
29987
29988	/// The function pointer to `glUniform2f()`
29989	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform2f.xhtml>
29990	pub uniform2f: PFNGLUNIFORM2FPROC,
29991
29992	/// The function pointer to `glUniform2fv()`
29993	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform2fv.xhtml>
29994	pub uniform2fv: PFNGLUNIFORM2FVPROC,
29995
29996	/// The function pointer to `glUniform2i()`
29997	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform2i.xhtml>
29998	pub uniform2i: PFNGLUNIFORM2IPROC,
29999
30000	/// The function pointer to `glUniform2iv()`
30001	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform2iv.xhtml>
30002	pub uniform2iv: PFNGLUNIFORM2IVPROC,
30003
30004	/// The function pointer to `glUniform3f()`
30005	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform3f.xhtml>
30006	pub uniform3f: PFNGLUNIFORM3FPROC,
30007
30008	/// The function pointer to `glUniform3fv()`
30009	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform3fv.xhtml>
30010	pub uniform3fv: PFNGLUNIFORM3FVPROC,
30011
30012	/// The function pointer to `glUniform3i()`
30013	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform3i.xhtml>
30014	pub uniform3i: PFNGLUNIFORM3IPROC,
30015
30016	/// The function pointer to `glUniform3iv()`
30017	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform3iv.xhtml>
30018	pub uniform3iv: PFNGLUNIFORM3IVPROC,
30019
30020	/// The function pointer to `glUniform4f()`
30021	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform4f.xhtml>
30022	pub uniform4f: PFNGLUNIFORM4FPROC,
30023
30024	/// The function pointer to `glUniform4fv()`
30025	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform4fv.xhtml>
30026	pub uniform4fv: PFNGLUNIFORM4FVPROC,
30027
30028	/// The function pointer to `glUniform4i()`
30029	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform4i.xhtml>
30030	pub uniform4i: PFNGLUNIFORM4IPROC,
30031
30032	/// The function pointer to `glUniform4iv()`
30033	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform4iv.xhtml>
30034	pub uniform4iv: PFNGLUNIFORM4IVPROC,
30035
30036	/// The function pointer to `glUniformMatrix2fv()`
30037	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix2fv.xhtml>
30038	pub uniformmatrix2fv: PFNGLUNIFORMMATRIX2FVPROC,
30039
30040	/// The function pointer to `glUniformMatrix3fv()`
30041	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix3fv.xhtml>
30042	pub uniformmatrix3fv: PFNGLUNIFORMMATRIX3FVPROC,
30043
30044	/// The function pointer to `glUniformMatrix4fv()`
30045	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix4fv.xhtml>
30046	pub uniformmatrix4fv: PFNGLUNIFORMMATRIX4FVPROC,
30047
30048	/// The function pointer to `glUseProgram()`
30049	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUseProgram.xhtml>
30050	pub useprogram: PFNGLUSEPROGRAMPROC,
30051
30052	/// The function pointer to `glValidateProgram()`
30053	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glValidateProgram.xhtml>
30054	pub validateprogram: PFNGLVALIDATEPROGRAMPROC,
30055
30056	/// The function pointer to `glVertexAttrib1f()`
30057	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttrib1f.xhtml>
30058	pub vertexattrib1f: PFNGLVERTEXATTRIB1FPROC,
30059
30060	/// The function pointer to `glVertexAttrib1fv()`
30061	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttrib1fv.xhtml>
30062	pub vertexattrib1fv: PFNGLVERTEXATTRIB1FVPROC,
30063
30064	/// The function pointer to `glVertexAttrib2f()`
30065	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttrib2f.xhtml>
30066	pub vertexattrib2f: PFNGLVERTEXATTRIB2FPROC,
30067
30068	/// The function pointer to `glVertexAttrib2fv()`
30069	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttrib2fv.xhtml>
30070	pub vertexattrib2fv: PFNGLVERTEXATTRIB2FVPROC,
30071
30072	/// The function pointer to `glVertexAttrib3f()`
30073	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttrib3f.xhtml>
30074	pub vertexattrib3f: PFNGLVERTEXATTRIB3FPROC,
30075
30076	/// The function pointer to `glVertexAttrib3fv()`
30077	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttrib3fv.xhtml>
30078	pub vertexattrib3fv: PFNGLVERTEXATTRIB3FVPROC,
30079
30080	/// The function pointer to `glVertexAttrib4f()`
30081	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttrib4f.xhtml>
30082	pub vertexattrib4f: PFNGLVERTEXATTRIB4FPROC,
30083
30084	/// The function pointer to `glVertexAttrib4fv()`
30085	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttrib4fv.xhtml>
30086	pub vertexattrib4fv: PFNGLVERTEXATTRIB4FVPROC,
30087
30088	/// The function pointer to `glVertexAttribPointer()`
30089	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribPointer.xhtml>
30090	pub vertexattribpointer: PFNGLVERTEXATTRIBPOINTERPROC,
30091
30092	/// The function pointer to `glViewport()`
30093	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glViewport.xhtml>
30094	pub viewport: PFNGLVIEWPORTPROC,
30095}
30096
30097impl ES_GL_2_0 for EsVersion20 {
30098	#[inline(always)]
30099	fn glActiveTexture(&self, texture: GLenum) -> Result<()> {
30100		let ret = process_catch("glActiveTexture", catch_unwind(||(self.activetexture)(texture)));
30101		#[cfg(feature = "diagnose")]
30102		if let Ok(ret) = ret {
30103			return to_result("glActiveTexture", ret, self.glGetError());
30104		} else {
30105			return ret
30106		}
30107		#[cfg(not(feature = "diagnose"))]
30108		return ret;
30109	}
30110	#[inline(always)]
30111	fn glAttachShader(&self, program: GLuint, shader: GLuint) -> Result<()> {
30112		let ret = process_catch("glAttachShader", catch_unwind(||(self.attachshader)(program, shader)));
30113		#[cfg(feature = "diagnose")]
30114		if let Ok(ret) = ret {
30115			return to_result("glAttachShader", ret, self.glGetError());
30116		} else {
30117			return ret
30118		}
30119		#[cfg(not(feature = "diagnose"))]
30120		return ret;
30121	}
30122	#[inline(always)]
30123	fn glBindAttribLocation(&self, program: GLuint, index: GLuint, name: *const GLchar) -> Result<()> {
30124		let ret = process_catch("glBindAttribLocation", catch_unwind(||(self.bindattriblocation)(program, index, name)));
30125		#[cfg(feature = "diagnose")]
30126		if let Ok(ret) = ret {
30127			return to_result("glBindAttribLocation", ret, self.glGetError());
30128		} else {
30129			return ret
30130		}
30131		#[cfg(not(feature = "diagnose"))]
30132		return ret;
30133	}
30134	#[inline(always)]
30135	fn glBindBuffer(&self, target: GLenum, buffer: GLuint) -> Result<()> {
30136		let ret = process_catch("glBindBuffer", catch_unwind(||(self.bindbuffer)(target, buffer)));
30137		#[cfg(feature = "diagnose")]
30138		if let Ok(ret) = ret {
30139			return to_result("glBindBuffer", ret, self.glGetError());
30140		} else {
30141			return ret
30142		}
30143		#[cfg(not(feature = "diagnose"))]
30144		return ret;
30145	}
30146	#[inline(always)]
30147	fn glBindFramebuffer(&self, target: GLenum, framebuffer: GLuint) -> Result<()> {
30148		let ret = process_catch("glBindFramebuffer", catch_unwind(||(self.bindframebuffer)(target, framebuffer)));
30149		#[cfg(feature = "diagnose")]
30150		if let Ok(ret) = ret {
30151			return to_result("glBindFramebuffer", ret, self.glGetError());
30152		} else {
30153			return ret
30154		}
30155		#[cfg(not(feature = "diagnose"))]
30156		return ret;
30157	}
30158	#[inline(always)]
30159	fn glBindRenderbuffer(&self, target: GLenum, renderbuffer: GLuint) -> Result<()> {
30160		let ret = process_catch("glBindRenderbuffer", catch_unwind(||(self.bindrenderbuffer)(target, renderbuffer)));
30161		#[cfg(feature = "diagnose")]
30162		if let Ok(ret) = ret {
30163			return to_result("glBindRenderbuffer", ret, self.glGetError());
30164		} else {
30165			return ret
30166		}
30167		#[cfg(not(feature = "diagnose"))]
30168		return ret;
30169	}
30170	#[inline(always)]
30171	fn glBindTexture(&self, target: GLenum, texture: GLuint) -> Result<()> {
30172		let ret = process_catch("glBindTexture", catch_unwind(||(self.bindtexture)(target, texture)));
30173		#[cfg(feature = "diagnose")]
30174		if let Ok(ret) = ret {
30175			return to_result("glBindTexture", ret, self.glGetError());
30176		} else {
30177			return ret
30178		}
30179		#[cfg(not(feature = "diagnose"))]
30180		return ret;
30181	}
30182	#[inline(always)]
30183	fn glBlendColor(&self, red: GLfloat, green: GLfloat, blue: GLfloat, alpha: GLfloat) -> Result<()> {
30184		let ret = process_catch("glBlendColor", catch_unwind(||(self.blendcolor)(red, green, blue, alpha)));
30185		#[cfg(feature = "diagnose")]
30186		if let Ok(ret) = ret {
30187			return to_result("glBlendColor", ret, self.glGetError());
30188		} else {
30189			return ret
30190		}
30191		#[cfg(not(feature = "diagnose"))]
30192		return ret;
30193	}
30194	#[inline(always)]
30195	fn glBlendEquation(&self, mode: GLenum) -> Result<()> {
30196		let ret = process_catch("glBlendEquation", catch_unwind(||(self.blendequation)(mode)));
30197		#[cfg(feature = "diagnose")]
30198		if let Ok(ret) = ret {
30199			return to_result("glBlendEquation", ret, self.glGetError());
30200		} else {
30201			return ret
30202		}
30203		#[cfg(not(feature = "diagnose"))]
30204		return ret;
30205	}
30206	#[inline(always)]
30207	fn glBlendEquationSeparate(&self, modeRGB: GLenum, modeAlpha: GLenum) -> Result<()> {
30208		let ret = process_catch("glBlendEquationSeparate", catch_unwind(||(self.blendequationseparate)(modeRGB, modeAlpha)));
30209		#[cfg(feature = "diagnose")]
30210		if let Ok(ret) = ret {
30211			return to_result("glBlendEquationSeparate", ret, self.glGetError());
30212		} else {
30213			return ret
30214		}
30215		#[cfg(not(feature = "diagnose"))]
30216		return ret;
30217	}
30218	#[inline(always)]
30219	fn glBlendFunc(&self, sfactor: GLenum, dfactor: GLenum) -> Result<()> {
30220		let ret = process_catch("glBlendFunc", catch_unwind(||(self.blendfunc)(sfactor, dfactor)));
30221		#[cfg(feature = "diagnose")]
30222		if let Ok(ret) = ret {
30223			return to_result("glBlendFunc", ret, self.glGetError());
30224		} else {
30225			return ret
30226		}
30227		#[cfg(not(feature = "diagnose"))]
30228		return ret;
30229	}
30230	#[inline(always)]
30231	fn glBlendFuncSeparate(&self, sfactorRGB: GLenum, dfactorRGB: GLenum, sfactorAlpha: GLenum, dfactorAlpha: GLenum) -> Result<()> {
30232		let ret = process_catch("glBlendFuncSeparate", catch_unwind(||(self.blendfuncseparate)(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha)));
30233		#[cfg(feature = "diagnose")]
30234		if let Ok(ret) = ret {
30235			return to_result("glBlendFuncSeparate", ret, self.glGetError());
30236		} else {
30237			return ret
30238		}
30239		#[cfg(not(feature = "diagnose"))]
30240		return ret;
30241	}
30242	#[inline(always)]
30243	fn glBufferData(&self, target: GLenum, size: GLsizeiptr, data: *const c_void, usage: GLenum) -> Result<()> {
30244		let ret = process_catch("glBufferData", catch_unwind(||(self.bufferdata)(target, size, data, usage)));
30245		#[cfg(feature = "diagnose")]
30246		if let Ok(ret) = ret {
30247			return to_result("glBufferData", ret, self.glGetError());
30248		} else {
30249			return ret
30250		}
30251		#[cfg(not(feature = "diagnose"))]
30252		return ret;
30253	}
30254	#[inline(always)]
30255	fn glBufferSubData(&self, target: GLenum, offset: GLintptr, size: GLsizeiptr, data: *const c_void) -> Result<()> {
30256		let ret = process_catch("glBufferSubData", catch_unwind(||(self.buffersubdata)(target, offset, size, data)));
30257		#[cfg(feature = "diagnose")]
30258		if let Ok(ret) = ret {
30259			return to_result("glBufferSubData", ret, self.glGetError());
30260		} else {
30261			return ret
30262		}
30263		#[cfg(not(feature = "diagnose"))]
30264		return ret;
30265	}
30266	#[inline(always)]
30267	fn glCheckFramebufferStatus(&self, target: GLenum) -> Result<GLenum> {
30268		let ret = process_catch("glCheckFramebufferStatus", catch_unwind(||(self.checkframebufferstatus)(target)));
30269		#[cfg(feature = "diagnose")]
30270		if let Ok(ret) = ret {
30271			return to_result("glCheckFramebufferStatus", ret, self.glGetError());
30272		} else {
30273			return ret
30274		}
30275		#[cfg(not(feature = "diagnose"))]
30276		return ret;
30277	}
30278	#[inline(always)]
30279	fn glClear(&self, mask: GLbitfield) -> Result<()> {
30280		let ret = process_catch("glClear", catch_unwind(||(self.clear)(mask)));
30281		#[cfg(feature = "diagnose")]
30282		if let Ok(ret) = ret {
30283			return to_result("glClear", ret, self.glGetError());
30284		} else {
30285			return ret
30286		}
30287		#[cfg(not(feature = "diagnose"))]
30288		return ret;
30289	}
30290	#[inline(always)]
30291	fn glClearColor(&self, red: GLfloat, green: GLfloat, blue: GLfloat, alpha: GLfloat) -> Result<()> {
30292		let ret = process_catch("glClearColor", catch_unwind(||(self.clearcolor)(red, green, blue, alpha)));
30293		#[cfg(feature = "diagnose")]
30294		if let Ok(ret) = ret {
30295			return to_result("glClearColor", ret, self.glGetError());
30296		} else {
30297			return ret
30298		}
30299		#[cfg(not(feature = "diagnose"))]
30300		return ret;
30301	}
30302	#[inline(always)]
30303	fn glClearDepthf(&self, d: GLfloat) -> Result<()> {
30304		let ret = process_catch("glClearDepthf", catch_unwind(||(self.cleardepthf)(d)));
30305		#[cfg(feature = "diagnose")]
30306		if let Ok(ret) = ret {
30307			return to_result("glClearDepthf", ret, self.glGetError());
30308		} else {
30309			return ret
30310		}
30311		#[cfg(not(feature = "diagnose"))]
30312		return ret;
30313	}
30314	#[inline(always)]
30315	fn glClearStencil(&self, s: GLint) -> Result<()> {
30316		let ret = process_catch("glClearStencil", catch_unwind(||(self.clearstencil)(s)));
30317		#[cfg(feature = "diagnose")]
30318		if let Ok(ret) = ret {
30319			return to_result("glClearStencil", ret, self.glGetError());
30320		} else {
30321			return ret
30322		}
30323		#[cfg(not(feature = "diagnose"))]
30324		return ret;
30325	}
30326	#[inline(always)]
30327	fn glColorMask(&self, red: GLboolean, green: GLboolean, blue: GLboolean, alpha: GLboolean) -> Result<()> {
30328		let ret = process_catch("glColorMask", catch_unwind(||(self.colormask)(red, green, blue, alpha)));
30329		#[cfg(feature = "diagnose")]
30330		if let Ok(ret) = ret {
30331			return to_result("glColorMask", ret, self.glGetError());
30332		} else {
30333			return ret
30334		}
30335		#[cfg(not(feature = "diagnose"))]
30336		return ret;
30337	}
30338	#[inline(always)]
30339	fn glCompileShader(&self, shader: GLuint) -> Result<()> {
30340		let ret = process_catch("glCompileShader", catch_unwind(||(self.compileshader)(shader)));
30341		#[cfg(feature = "diagnose")]
30342		if let Ok(ret) = ret {
30343			return to_result("glCompileShader", ret, self.glGetError());
30344		} else {
30345			return ret
30346		}
30347		#[cfg(not(feature = "diagnose"))]
30348		return ret;
30349	}
30350	#[inline(always)]
30351	fn glCompressedTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, border: GLint, imageSize: GLsizei, data: *const c_void) -> Result<()> {
30352		let ret = process_catch("glCompressedTexImage2D", catch_unwind(||(self.compressedteximage2d)(target, level, internalformat, width, height, border, imageSize, data)));
30353		#[cfg(feature = "diagnose")]
30354		if let Ok(ret) = ret {
30355			return to_result("glCompressedTexImage2D", ret, self.glGetError());
30356		} else {
30357			return ret
30358		}
30359		#[cfg(not(feature = "diagnose"))]
30360		return ret;
30361	}
30362	#[inline(always)]
30363	fn glCompressedTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()> {
30364		let ret = process_catch("glCompressedTexSubImage2D", catch_unwind(||(self.compressedtexsubimage2d)(target, level, xoffset, yoffset, width, height, format, imageSize, data)));
30365		#[cfg(feature = "diagnose")]
30366		if let Ok(ret) = ret {
30367			return to_result("glCompressedTexSubImage2D", ret, self.glGetError());
30368		} else {
30369			return ret
30370		}
30371		#[cfg(not(feature = "diagnose"))]
30372		return ret;
30373	}
30374	#[inline(always)]
30375	fn glCopyTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei, border: GLint) -> Result<()> {
30376		let ret = process_catch("glCopyTexImage2D", catch_unwind(||(self.copyteximage2d)(target, level, internalformat, x, y, width, height, border)));
30377		#[cfg(feature = "diagnose")]
30378		if let Ok(ret) = ret {
30379			return to_result("glCopyTexImage2D", ret, self.glGetError());
30380		} else {
30381			return ret
30382		}
30383		#[cfg(not(feature = "diagnose"))]
30384		return ret;
30385	}
30386	#[inline(always)]
30387	fn glCopyTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
30388		let ret = process_catch("glCopyTexSubImage2D", catch_unwind(||(self.copytexsubimage2d)(target, level, xoffset, yoffset, x, y, width, height)));
30389		#[cfg(feature = "diagnose")]
30390		if let Ok(ret) = ret {
30391			return to_result("glCopyTexSubImage2D", ret, self.glGetError());
30392		} else {
30393			return ret
30394		}
30395		#[cfg(not(feature = "diagnose"))]
30396		return ret;
30397	}
30398	#[inline(always)]
30399	fn glCreateProgram(&self) -> Result<GLuint> {
30400		let ret = process_catch("glCreateProgram", catch_unwind(||(self.createprogram)()));
30401		#[cfg(feature = "diagnose")]
30402		if let Ok(ret) = ret {
30403			return to_result("glCreateProgram", ret, self.glGetError());
30404		} else {
30405			return ret
30406		}
30407		#[cfg(not(feature = "diagnose"))]
30408		return ret;
30409	}
30410	#[inline(always)]
30411	fn glCreateShader(&self, type_: GLenum) -> Result<GLuint> {
30412		let ret = process_catch("glCreateShader", catch_unwind(||(self.createshader)(type_)));
30413		#[cfg(feature = "diagnose")]
30414		if let Ok(ret) = ret {
30415			return to_result("glCreateShader", ret, self.glGetError());
30416		} else {
30417			return ret
30418		}
30419		#[cfg(not(feature = "diagnose"))]
30420		return ret;
30421	}
30422	#[inline(always)]
30423	fn glCullFace(&self, mode: GLenum) -> Result<()> {
30424		let ret = process_catch("glCullFace", catch_unwind(||(self.cullface)(mode)));
30425		#[cfg(feature = "diagnose")]
30426		if let Ok(ret) = ret {
30427			return to_result("glCullFace", ret, self.glGetError());
30428		} else {
30429			return ret
30430		}
30431		#[cfg(not(feature = "diagnose"))]
30432		return ret;
30433	}
30434	#[inline(always)]
30435	fn glDeleteBuffers(&self, n: GLsizei, buffers: *const GLuint) -> Result<()> {
30436		let ret = process_catch("glDeleteBuffers", catch_unwind(||(self.deletebuffers)(n, buffers)));
30437		#[cfg(feature = "diagnose")]
30438		if let Ok(ret) = ret {
30439			return to_result("glDeleteBuffers", ret, self.glGetError());
30440		} else {
30441			return ret
30442		}
30443		#[cfg(not(feature = "diagnose"))]
30444		return ret;
30445	}
30446	#[inline(always)]
30447	fn glDeleteFramebuffers(&self, n: GLsizei, framebuffers: *const GLuint) -> Result<()> {
30448		let ret = process_catch("glDeleteFramebuffers", catch_unwind(||(self.deleteframebuffers)(n, framebuffers)));
30449		#[cfg(feature = "diagnose")]
30450		if let Ok(ret) = ret {
30451			return to_result("glDeleteFramebuffers", ret, self.glGetError());
30452		} else {
30453			return ret
30454		}
30455		#[cfg(not(feature = "diagnose"))]
30456		return ret;
30457	}
30458	#[inline(always)]
30459	fn glDeleteProgram(&self, program: GLuint) -> Result<()> {
30460		let ret = process_catch("glDeleteProgram", catch_unwind(||(self.deleteprogram)(program)));
30461		#[cfg(feature = "diagnose")]
30462		if let Ok(ret) = ret {
30463			return to_result("glDeleteProgram", ret, self.glGetError());
30464		} else {
30465			return ret
30466		}
30467		#[cfg(not(feature = "diagnose"))]
30468		return ret;
30469	}
30470	#[inline(always)]
30471	fn glDeleteRenderbuffers(&self, n: GLsizei, renderbuffers: *const GLuint) -> Result<()> {
30472		let ret = process_catch("glDeleteRenderbuffers", catch_unwind(||(self.deleterenderbuffers)(n, renderbuffers)));
30473		#[cfg(feature = "diagnose")]
30474		if let Ok(ret) = ret {
30475			return to_result("glDeleteRenderbuffers", ret, self.glGetError());
30476		} else {
30477			return ret
30478		}
30479		#[cfg(not(feature = "diagnose"))]
30480		return ret;
30481	}
30482	#[inline(always)]
30483	fn glDeleteShader(&self, shader: GLuint) -> Result<()> {
30484		let ret = process_catch("glDeleteShader", catch_unwind(||(self.deleteshader)(shader)));
30485		#[cfg(feature = "diagnose")]
30486		if let Ok(ret) = ret {
30487			return to_result("glDeleteShader", ret, self.glGetError());
30488		} else {
30489			return ret
30490		}
30491		#[cfg(not(feature = "diagnose"))]
30492		return ret;
30493	}
30494	#[inline(always)]
30495	fn glDeleteTextures(&self, n: GLsizei, textures: *const GLuint) -> Result<()> {
30496		let ret = process_catch("glDeleteTextures", catch_unwind(||(self.deletetextures)(n, textures)));
30497		#[cfg(feature = "diagnose")]
30498		if let Ok(ret) = ret {
30499			return to_result("glDeleteTextures", ret, self.glGetError());
30500		} else {
30501			return ret
30502		}
30503		#[cfg(not(feature = "diagnose"))]
30504		return ret;
30505	}
30506	#[inline(always)]
30507	fn glDepthFunc(&self, func: GLenum) -> Result<()> {
30508		let ret = process_catch("glDepthFunc", catch_unwind(||(self.depthfunc)(func)));
30509		#[cfg(feature = "diagnose")]
30510		if let Ok(ret) = ret {
30511			return to_result("glDepthFunc", ret, self.glGetError());
30512		} else {
30513			return ret
30514		}
30515		#[cfg(not(feature = "diagnose"))]
30516		return ret;
30517	}
30518	#[inline(always)]
30519	fn glDepthMask(&self, flag: GLboolean) -> Result<()> {
30520		let ret = process_catch("glDepthMask", catch_unwind(||(self.depthmask)(flag)));
30521		#[cfg(feature = "diagnose")]
30522		if let Ok(ret) = ret {
30523			return to_result("glDepthMask", ret, self.glGetError());
30524		} else {
30525			return ret
30526		}
30527		#[cfg(not(feature = "diagnose"))]
30528		return ret;
30529	}
30530	#[inline(always)]
30531	fn glDepthRangef(&self, n: GLfloat, f: GLfloat) -> Result<()> {
30532		let ret = process_catch("glDepthRangef", catch_unwind(||(self.depthrangef)(n, f)));
30533		#[cfg(feature = "diagnose")]
30534		if let Ok(ret) = ret {
30535			return to_result("glDepthRangef", ret, self.glGetError());
30536		} else {
30537			return ret
30538		}
30539		#[cfg(not(feature = "diagnose"))]
30540		return ret;
30541	}
30542	#[inline(always)]
30543	fn glDetachShader(&self, program: GLuint, shader: GLuint) -> Result<()> {
30544		let ret = process_catch("glDetachShader", catch_unwind(||(self.detachshader)(program, shader)));
30545		#[cfg(feature = "diagnose")]
30546		if let Ok(ret) = ret {
30547			return to_result("glDetachShader", ret, self.glGetError());
30548		} else {
30549			return ret
30550		}
30551		#[cfg(not(feature = "diagnose"))]
30552		return ret;
30553	}
30554	#[inline(always)]
30555	fn glDisable(&self, cap: GLenum) -> Result<()> {
30556		let ret = process_catch("glDisable", catch_unwind(||(self.disable)(cap)));
30557		#[cfg(feature = "diagnose")]
30558		if let Ok(ret) = ret {
30559			return to_result("glDisable", ret, self.glGetError());
30560		} else {
30561			return ret
30562		}
30563		#[cfg(not(feature = "diagnose"))]
30564		return ret;
30565	}
30566	#[inline(always)]
30567	fn glDisableVertexAttribArray(&self, index: GLuint) -> Result<()> {
30568		let ret = process_catch("glDisableVertexAttribArray", catch_unwind(||(self.disablevertexattribarray)(index)));
30569		#[cfg(feature = "diagnose")]
30570		if let Ok(ret) = ret {
30571			return to_result("glDisableVertexAttribArray", ret, self.glGetError());
30572		} else {
30573			return ret
30574		}
30575		#[cfg(not(feature = "diagnose"))]
30576		return ret;
30577	}
30578	#[inline(always)]
30579	fn glDrawArrays(&self, mode: GLenum, first: GLint, count: GLsizei) -> Result<()> {
30580		let ret = process_catch("glDrawArrays", catch_unwind(||(self.drawarrays)(mode, first, count)));
30581		#[cfg(feature = "diagnose")]
30582		if let Ok(ret) = ret {
30583			return to_result("glDrawArrays", ret, self.glGetError());
30584		} else {
30585			return ret
30586		}
30587		#[cfg(not(feature = "diagnose"))]
30588		return ret;
30589	}
30590	#[inline(always)]
30591	fn glDrawElements(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void) -> Result<()> {
30592		let ret = process_catch("glDrawElements", catch_unwind(||(self.drawelements)(mode, count, type_, indices)));
30593		#[cfg(feature = "diagnose")]
30594		if let Ok(ret) = ret {
30595			return to_result("glDrawElements", ret, self.glGetError());
30596		} else {
30597			return ret
30598		}
30599		#[cfg(not(feature = "diagnose"))]
30600		return ret;
30601	}
30602	#[inline(always)]
30603	fn glEnable(&self, cap: GLenum) -> Result<()> {
30604		let ret = process_catch("glEnable", catch_unwind(||(self.enable)(cap)));
30605		#[cfg(feature = "diagnose")]
30606		if let Ok(ret) = ret {
30607			return to_result("glEnable", ret, self.glGetError());
30608		} else {
30609			return ret
30610		}
30611		#[cfg(not(feature = "diagnose"))]
30612		return ret;
30613	}
30614	#[inline(always)]
30615	fn glEnableVertexAttribArray(&self, index: GLuint) -> Result<()> {
30616		let ret = process_catch("glEnableVertexAttribArray", catch_unwind(||(self.enablevertexattribarray)(index)));
30617		#[cfg(feature = "diagnose")]
30618		if let Ok(ret) = ret {
30619			return to_result("glEnableVertexAttribArray", ret, self.glGetError());
30620		} else {
30621			return ret
30622		}
30623		#[cfg(not(feature = "diagnose"))]
30624		return ret;
30625	}
30626	#[inline(always)]
30627	fn glFinish(&self) -> Result<()> {
30628		let ret = process_catch("glFinish", catch_unwind(||(self.finish)()));
30629		#[cfg(feature = "diagnose")]
30630		if let Ok(ret) = ret {
30631			return to_result("glFinish", ret, self.glGetError());
30632		} else {
30633			return ret
30634		}
30635		#[cfg(not(feature = "diagnose"))]
30636		return ret;
30637	}
30638	#[inline(always)]
30639	fn glFlush(&self) -> Result<()> {
30640		let ret = process_catch("glFlush", catch_unwind(||(self.flush)()));
30641		#[cfg(feature = "diagnose")]
30642		if let Ok(ret) = ret {
30643			return to_result("glFlush", ret, self.glGetError());
30644		} else {
30645			return ret
30646		}
30647		#[cfg(not(feature = "diagnose"))]
30648		return ret;
30649	}
30650	#[inline(always)]
30651	fn glFramebufferRenderbuffer(&self, target: GLenum, attachment: GLenum, renderbuffertarget: GLenum, renderbuffer: GLuint) -> Result<()> {
30652		let ret = process_catch("glFramebufferRenderbuffer", catch_unwind(||(self.framebufferrenderbuffer)(target, attachment, renderbuffertarget, renderbuffer)));
30653		#[cfg(feature = "diagnose")]
30654		if let Ok(ret) = ret {
30655			return to_result("glFramebufferRenderbuffer", ret, self.glGetError());
30656		} else {
30657			return ret
30658		}
30659		#[cfg(not(feature = "diagnose"))]
30660		return ret;
30661	}
30662	#[inline(always)]
30663	fn glFramebufferTexture2D(&self, target: GLenum, attachment: GLenum, textarget: GLenum, texture: GLuint, level: GLint) -> Result<()> {
30664		let ret = process_catch("glFramebufferTexture2D", catch_unwind(||(self.framebuffertexture2d)(target, attachment, textarget, texture, level)));
30665		#[cfg(feature = "diagnose")]
30666		if let Ok(ret) = ret {
30667			return to_result("glFramebufferTexture2D", ret, self.glGetError());
30668		} else {
30669			return ret
30670		}
30671		#[cfg(not(feature = "diagnose"))]
30672		return ret;
30673	}
30674	#[inline(always)]
30675	fn glFrontFace(&self, mode: GLenum) -> Result<()> {
30676		let ret = process_catch("glFrontFace", catch_unwind(||(self.frontface)(mode)));
30677		#[cfg(feature = "diagnose")]
30678		if let Ok(ret) = ret {
30679			return to_result("glFrontFace", ret, self.glGetError());
30680		} else {
30681			return ret
30682		}
30683		#[cfg(not(feature = "diagnose"))]
30684		return ret;
30685	}
30686	#[inline(always)]
30687	fn glGenBuffers(&self, n: GLsizei, buffers: *mut GLuint) -> Result<()> {
30688		let ret = process_catch("glGenBuffers", catch_unwind(||(self.genbuffers)(n, buffers)));
30689		#[cfg(feature = "diagnose")]
30690		if let Ok(ret) = ret {
30691			return to_result("glGenBuffers", ret, self.glGetError());
30692		} else {
30693			return ret
30694		}
30695		#[cfg(not(feature = "diagnose"))]
30696		return ret;
30697	}
30698	#[inline(always)]
30699	fn glGenerateMipmap(&self, target: GLenum) -> Result<()> {
30700		let ret = process_catch("glGenerateMipmap", catch_unwind(||(self.generatemipmap)(target)));
30701		#[cfg(feature = "diagnose")]
30702		if let Ok(ret) = ret {
30703			return to_result("glGenerateMipmap", ret, self.glGetError());
30704		} else {
30705			return ret
30706		}
30707		#[cfg(not(feature = "diagnose"))]
30708		return ret;
30709	}
30710	#[inline(always)]
30711	fn glGenFramebuffers(&self, n: GLsizei, framebuffers: *mut GLuint) -> Result<()> {
30712		let ret = process_catch("glGenFramebuffers", catch_unwind(||(self.genframebuffers)(n, framebuffers)));
30713		#[cfg(feature = "diagnose")]
30714		if let Ok(ret) = ret {
30715			return to_result("glGenFramebuffers", ret, self.glGetError());
30716		} else {
30717			return ret
30718		}
30719		#[cfg(not(feature = "diagnose"))]
30720		return ret;
30721	}
30722	#[inline(always)]
30723	fn glGenRenderbuffers(&self, n: GLsizei, renderbuffers: *mut GLuint) -> Result<()> {
30724		let ret = process_catch("glGenRenderbuffers", catch_unwind(||(self.genrenderbuffers)(n, renderbuffers)));
30725		#[cfg(feature = "diagnose")]
30726		if let Ok(ret) = ret {
30727			return to_result("glGenRenderbuffers", ret, self.glGetError());
30728		} else {
30729			return ret
30730		}
30731		#[cfg(not(feature = "diagnose"))]
30732		return ret;
30733	}
30734	#[inline(always)]
30735	fn glGenTextures(&self, n: GLsizei, textures: *mut GLuint) -> Result<()> {
30736		let ret = process_catch("glGenTextures", catch_unwind(||(self.gentextures)(n, textures)));
30737		#[cfg(feature = "diagnose")]
30738		if let Ok(ret) = ret {
30739			return to_result("glGenTextures", ret, self.glGetError());
30740		} else {
30741			return ret
30742		}
30743		#[cfg(not(feature = "diagnose"))]
30744		return ret;
30745	}
30746	#[inline(always)]
30747	fn glGetActiveAttrib(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLint, type_: *mut GLenum, name: *mut GLchar) -> Result<()> {
30748		let ret = process_catch("glGetActiveAttrib", catch_unwind(||(self.getactiveattrib)(program, index, bufSize, length, size, type_, name)));
30749		#[cfg(feature = "diagnose")]
30750		if let Ok(ret) = ret {
30751			return to_result("glGetActiveAttrib", ret, self.glGetError());
30752		} else {
30753			return ret
30754		}
30755		#[cfg(not(feature = "diagnose"))]
30756		return ret;
30757	}
30758	#[inline(always)]
30759	fn glGetActiveUniform(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLint, type_: *mut GLenum, name: *mut GLchar) -> Result<()> {
30760		let ret = process_catch("glGetActiveUniform", catch_unwind(||(self.getactiveuniform)(program, index, bufSize, length, size, type_, name)));
30761		#[cfg(feature = "diagnose")]
30762		if let Ok(ret) = ret {
30763			return to_result("glGetActiveUniform", ret, self.glGetError());
30764		} else {
30765			return ret
30766		}
30767		#[cfg(not(feature = "diagnose"))]
30768		return ret;
30769	}
30770	#[inline(always)]
30771	fn glGetAttachedShaders(&self, program: GLuint, maxCount: GLsizei, count: *mut GLsizei, shaders: *mut GLuint) -> Result<()> {
30772		let ret = process_catch("glGetAttachedShaders", catch_unwind(||(self.getattachedshaders)(program, maxCount, count, shaders)));
30773		#[cfg(feature = "diagnose")]
30774		if let Ok(ret) = ret {
30775			return to_result("glGetAttachedShaders", ret, self.glGetError());
30776		} else {
30777			return ret
30778		}
30779		#[cfg(not(feature = "diagnose"))]
30780		return ret;
30781	}
30782	#[inline(always)]
30783	fn glGetAttribLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint> {
30784		let ret = process_catch("glGetAttribLocation", catch_unwind(||(self.getattriblocation)(program, name)));
30785		#[cfg(feature = "diagnose")]
30786		if let Ok(ret) = ret {
30787			return to_result("glGetAttribLocation", ret, self.glGetError());
30788		} else {
30789			return ret
30790		}
30791		#[cfg(not(feature = "diagnose"))]
30792		return ret;
30793	}
30794	#[inline(always)]
30795	fn glGetBooleanv(&self, pname: GLenum, data: *mut GLboolean) -> Result<()> {
30796		let ret = process_catch("glGetBooleanv", catch_unwind(||(self.getbooleanv)(pname, data)));
30797		#[cfg(feature = "diagnose")]
30798		if let Ok(ret) = ret {
30799			return to_result("glGetBooleanv", ret, self.glGetError());
30800		} else {
30801			return ret
30802		}
30803		#[cfg(not(feature = "diagnose"))]
30804		return ret;
30805	}
30806	#[inline(always)]
30807	fn glGetBufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
30808		let ret = process_catch("glGetBufferParameteriv", catch_unwind(||(self.getbufferparameteriv)(target, pname, params)));
30809		#[cfg(feature = "diagnose")]
30810		if let Ok(ret) = ret {
30811			return to_result("glGetBufferParameteriv", ret, self.glGetError());
30812		} else {
30813			return ret
30814		}
30815		#[cfg(not(feature = "diagnose"))]
30816		return ret;
30817	}
30818	#[inline(always)]
30819	fn glGetError(&self) -> GLenum {
30820		(self.geterror)()
30821	}
30822	#[inline(always)]
30823	fn glGetFloatv(&self, pname: GLenum, data: *mut GLfloat) -> Result<()> {
30824		let ret = process_catch("glGetFloatv", catch_unwind(||(self.getfloatv)(pname, data)));
30825		#[cfg(feature = "diagnose")]
30826		if let Ok(ret) = ret {
30827			return to_result("glGetFloatv", ret, self.glGetError());
30828		} else {
30829			return ret
30830		}
30831		#[cfg(not(feature = "diagnose"))]
30832		return ret;
30833	}
30834	#[inline(always)]
30835	fn glGetFramebufferAttachmentParameteriv(&self, target: GLenum, attachment: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
30836		let ret = process_catch("glGetFramebufferAttachmentParameteriv", catch_unwind(||(self.getframebufferattachmentparameteriv)(target, attachment, pname, params)));
30837		#[cfg(feature = "diagnose")]
30838		if let Ok(ret) = ret {
30839			return to_result("glGetFramebufferAttachmentParameteriv", ret, self.glGetError());
30840		} else {
30841			return ret
30842		}
30843		#[cfg(not(feature = "diagnose"))]
30844		return ret;
30845	}
30846	#[inline(always)]
30847	fn glGetIntegerv(&self, pname: GLenum, data: *mut GLint) -> Result<()> {
30848		let ret = process_catch("glGetIntegerv", catch_unwind(||(self.getintegerv)(pname, data)));
30849		#[cfg(feature = "diagnose")]
30850		if let Ok(ret) = ret {
30851			return to_result("glGetIntegerv", ret, self.glGetError());
30852		} else {
30853			return ret
30854		}
30855		#[cfg(not(feature = "diagnose"))]
30856		return ret;
30857	}
30858	#[inline(always)]
30859	fn glGetProgramiv(&self, program: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
30860		let ret = process_catch("glGetProgramiv", catch_unwind(||(self.getprogramiv)(program, pname, params)));
30861		#[cfg(feature = "diagnose")]
30862		if let Ok(ret) = ret {
30863			return to_result("glGetProgramiv", ret, self.glGetError());
30864		} else {
30865			return ret
30866		}
30867		#[cfg(not(feature = "diagnose"))]
30868		return ret;
30869	}
30870	#[inline(always)]
30871	fn glGetProgramInfoLog(&self, program: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()> {
30872		let ret = process_catch("glGetProgramInfoLog", catch_unwind(||(self.getprograminfolog)(program, bufSize, length, infoLog)));
30873		#[cfg(feature = "diagnose")]
30874		if let Ok(ret) = ret {
30875			return to_result("glGetProgramInfoLog", ret, self.glGetError());
30876		} else {
30877			return ret
30878		}
30879		#[cfg(not(feature = "diagnose"))]
30880		return ret;
30881	}
30882	#[inline(always)]
30883	fn glGetRenderbufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
30884		let ret = process_catch("glGetRenderbufferParameteriv", catch_unwind(||(self.getrenderbufferparameteriv)(target, pname, params)));
30885		#[cfg(feature = "diagnose")]
30886		if let Ok(ret) = ret {
30887			return to_result("glGetRenderbufferParameteriv", ret, self.glGetError());
30888		} else {
30889			return ret
30890		}
30891		#[cfg(not(feature = "diagnose"))]
30892		return ret;
30893	}
30894	#[inline(always)]
30895	fn glGetShaderiv(&self, shader: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
30896		let ret = process_catch("glGetShaderiv", catch_unwind(||(self.getshaderiv)(shader, pname, params)));
30897		#[cfg(feature = "diagnose")]
30898		if let Ok(ret) = ret {
30899			return to_result("glGetShaderiv", ret, self.glGetError());
30900		} else {
30901			return ret
30902		}
30903		#[cfg(not(feature = "diagnose"))]
30904		return ret;
30905	}
30906	#[inline(always)]
30907	fn glGetShaderInfoLog(&self, shader: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()> {
30908		let ret = process_catch("glGetShaderInfoLog", catch_unwind(||(self.getshaderinfolog)(shader, bufSize, length, infoLog)));
30909		#[cfg(feature = "diagnose")]
30910		if let Ok(ret) = ret {
30911			return to_result("glGetShaderInfoLog", ret, self.glGetError());
30912		} else {
30913			return ret
30914		}
30915		#[cfg(not(feature = "diagnose"))]
30916		return ret;
30917	}
30918	#[inline(always)]
30919	fn glGetShaderPrecisionFormat(&self, shadertype: GLenum, precisiontype: GLenum, range: *mut GLint, precision: *mut GLint) -> Result<()> {
30920		let ret = process_catch("glGetShaderPrecisionFormat", catch_unwind(||(self.getshaderprecisionformat)(shadertype, precisiontype, range, precision)));
30921		#[cfg(feature = "diagnose")]
30922		if let Ok(ret) = ret {
30923			return to_result("glGetShaderPrecisionFormat", ret, self.glGetError());
30924		} else {
30925			return ret
30926		}
30927		#[cfg(not(feature = "diagnose"))]
30928		return ret;
30929	}
30930	#[inline(always)]
30931	fn glGetShaderSource(&self, shader: GLuint, bufSize: GLsizei, length: *mut GLsizei, source: *mut GLchar) -> Result<()> {
30932		let ret = process_catch("glGetShaderSource", catch_unwind(||(self.getshadersource)(shader, bufSize, length, source)));
30933		#[cfg(feature = "diagnose")]
30934		if let Ok(ret) = ret {
30935			return to_result("glGetShaderSource", ret, self.glGetError());
30936		} else {
30937			return ret
30938		}
30939		#[cfg(not(feature = "diagnose"))]
30940		return ret;
30941	}
30942	#[inline(always)]
30943	fn glGetString(&self, name: GLenum) -> Result<&'static str> {
30944		let ret = process_catch("glGetString", catch_unwind(||unsafe{CStr::from_ptr((self.getstring)(name) as *const i8)}.to_str().unwrap()));
30945		#[cfg(feature = "diagnose")]
30946		if let Ok(ret) = ret {
30947			return to_result("glGetString", ret, self.glGetError());
30948		} else {
30949			return ret
30950		}
30951		#[cfg(not(feature = "diagnose"))]
30952		return ret;
30953	}
30954	#[inline(always)]
30955	fn glGetTexParameterfv(&self, target: GLenum, pname: GLenum, params: *mut GLfloat) -> Result<()> {
30956		let ret = process_catch("glGetTexParameterfv", catch_unwind(||(self.gettexparameterfv)(target, pname, params)));
30957		#[cfg(feature = "diagnose")]
30958		if let Ok(ret) = ret {
30959			return to_result("glGetTexParameterfv", ret, self.glGetError());
30960		} else {
30961			return ret
30962		}
30963		#[cfg(not(feature = "diagnose"))]
30964		return ret;
30965	}
30966	#[inline(always)]
30967	fn glGetTexParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
30968		let ret = process_catch("glGetTexParameteriv", catch_unwind(||(self.gettexparameteriv)(target, pname, params)));
30969		#[cfg(feature = "diagnose")]
30970		if let Ok(ret) = ret {
30971			return to_result("glGetTexParameteriv", ret, self.glGetError());
30972		} else {
30973			return ret
30974		}
30975		#[cfg(not(feature = "diagnose"))]
30976		return ret;
30977	}
30978	#[inline(always)]
30979	fn glGetUniformfv(&self, program: GLuint, location: GLint, params: *mut GLfloat) -> Result<()> {
30980		let ret = process_catch("glGetUniformfv", catch_unwind(||(self.getuniformfv)(program, location, params)));
30981		#[cfg(feature = "diagnose")]
30982		if let Ok(ret) = ret {
30983			return to_result("glGetUniformfv", ret, self.glGetError());
30984		} else {
30985			return ret
30986		}
30987		#[cfg(not(feature = "diagnose"))]
30988		return ret;
30989	}
30990	#[inline(always)]
30991	fn glGetUniformiv(&self, program: GLuint, location: GLint, params: *mut GLint) -> Result<()> {
30992		let ret = process_catch("glGetUniformiv", catch_unwind(||(self.getuniformiv)(program, location, params)));
30993		#[cfg(feature = "diagnose")]
30994		if let Ok(ret) = ret {
30995			return to_result("glGetUniformiv", ret, self.glGetError());
30996		} else {
30997			return ret
30998		}
30999		#[cfg(not(feature = "diagnose"))]
31000		return ret;
31001	}
31002	#[inline(always)]
31003	fn glGetUniformLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint> {
31004		let ret = process_catch("glGetUniformLocation", catch_unwind(||(self.getuniformlocation)(program, name)));
31005		#[cfg(feature = "diagnose")]
31006		if let Ok(ret) = ret {
31007			return to_result("glGetUniformLocation", ret, self.glGetError());
31008		} else {
31009			return ret
31010		}
31011		#[cfg(not(feature = "diagnose"))]
31012		return ret;
31013	}
31014	#[inline(always)]
31015	fn glGetVertexAttribfv(&self, index: GLuint, pname: GLenum, params: *mut GLfloat) -> Result<()> {
31016		let ret = process_catch("glGetVertexAttribfv", catch_unwind(||(self.getvertexattribfv)(index, pname, params)));
31017		#[cfg(feature = "diagnose")]
31018		if let Ok(ret) = ret {
31019			return to_result("glGetVertexAttribfv", ret, self.glGetError());
31020		} else {
31021			return ret
31022		}
31023		#[cfg(not(feature = "diagnose"))]
31024		return ret;
31025	}
31026	#[inline(always)]
31027	fn glGetVertexAttribiv(&self, index: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
31028		let ret = process_catch("glGetVertexAttribiv", catch_unwind(||(self.getvertexattribiv)(index, pname, params)));
31029		#[cfg(feature = "diagnose")]
31030		if let Ok(ret) = ret {
31031			return to_result("glGetVertexAttribiv", ret, self.glGetError());
31032		} else {
31033			return ret
31034		}
31035		#[cfg(not(feature = "diagnose"))]
31036		return ret;
31037	}
31038	#[inline(always)]
31039	fn glGetVertexAttribPointerv(&self, index: GLuint, pname: GLenum, pointer: *mut *mut c_void) -> Result<()> {
31040		let ret = process_catch("glGetVertexAttribPointerv", catch_unwind(||(self.getvertexattribpointerv)(index, pname, pointer)));
31041		#[cfg(feature = "diagnose")]
31042		if let Ok(ret) = ret {
31043			return to_result("glGetVertexAttribPointerv", ret, self.glGetError());
31044		} else {
31045			return ret
31046		}
31047		#[cfg(not(feature = "diagnose"))]
31048		return ret;
31049	}
31050	#[inline(always)]
31051	fn glHint(&self, target: GLenum, mode: GLenum) -> Result<()> {
31052		let ret = process_catch("glHint", catch_unwind(||(self.hint)(target, mode)));
31053		#[cfg(feature = "diagnose")]
31054		if let Ok(ret) = ret {
31055			return to_result("glHint", ret, self.glGetError());
31056		} else {
31057			return ret
31058		}
31059		#[cfg(not(feature = "diagnose"))]
31060		return ret;
31061	}
31062	#[inline(always)]
31063	fn glIsBuffer(&self, buffer: GLuint) -> Result<GLboolean> {
31064		let ret = process_catch("glIsBuffer", catch_unwind(||(self.isbuffer)(buffer)));
31065		#[cfg(feature = "diagnose")]
31066		if let Ok(ret) = ret {
31067			return to_result("glIsBuffer", ret, self.glGetError());
31068		} else {
31069			return ret
31070		}
31071		#[cfg(not(feature = "diagnose"))]
31072		return ret;
31073	}
31074	#[inline(always)]
31075	fn glIsEnabled(&self, cap: GLenum) -> Result<GLboolean> {
31076		let ret = process_catch("glIsEnabled", catch_unwind(||(self.isenabled)(cap)));
31077		#[cfg(feature = "diagnose")]
31078		if let Ok(ret) = ret {
31079			return to_result("glIsEnabled", ret, self.glGetError());
31080		} else {
31081			return ret
31082		}
31083		#[cfg(not(feature = "diagnose"))]
31084		return ret;
31085	}
31086	#[inline(always)]
31087	fn glIsFramebuffer(&self, framebuffer: GLuint) -> Result<GLboolean> {
31088		let ret = process_catch("glIsFramebuffer", catch_unwind(||(self.isframebuffer)(framebuffer)));
31089		#[cfg(feature = "diagnose")]
31090		if let Ok(ret) = ret {
31091			return to_result("glIsFramebuffer", ret, self.glGetError());
31092		} else {
31093			return ret
31094		}
31095		#[cfg(not(feature = "diagnose"))]
31096		return ret;
31097	}
31098	#[inline(always)]
31099	fn glIsProgram(&self, program: GLuint) -> Result<GLboolean> {
31100		let ret = process_catch("glIsProgram", catch_unwind(||(self.isprogram)(program)));
31101		#[cfg(feature = "diagnose")]
31102		if let Ok(ret) = ret {
31103			return to_result("glIsProgram", ret, self.glGetError());
31104		} else {
31105			return ret
31106		}
31107		#[cfg(not(feature = "diagnose"))]
31108		return ret;
31109	}
31110	#[inline(always)]
31111	fn glIsRenderbuffer(&self, renderbuffer: GLuint) -> Result<GLboolean> {
31112		let ret = process_catch("glIsRenderbuffer", catch_unwind(||(self.isrenderbuffer)(renderbuffer)));
31113		#[cfg(feature = "diagnose")]
31114		if let Ok(ret) = ret {
31115			return to_result("glIsRenderbuffer", ret, self.glGetError());
31116		} else {
31117			return ret
31118		}
31119		#[cfg(not(feature = "diagnose"))]
31120		return ret;
31121	}
31122	#[inline(always)]
31123	fn glIsShader(&self, shader: GLuint) -> Result<GLboolean> {
31124		let ret = process_catch("glIsShader", catch_unwind(||(self.isshader)(shader)));
31125		#[cfg(feature = "diagnose")]
31126		if let Ok(ret) = ret {
31127			return to_result("glIsShader", ret, self.glGetError());
31128		} else {
31129			return ret
31130		}
31131		#[cfg(not(feature = "diagnose"))]
31132		return ret;
31133	}
31134	#[inline(always)]
31135	fn glIsTexture(&self, texture: GLuint) -> Result<GLboolean> {
31136		let ret = process_catch("glIsTexture", catch_unwind(||(self.istexture)(texture)));
31137		#[cfg(feature = "diagnose")]
31138		if let Ok(ret) = ret {
31139			return to_result("glIsTexture", ret, self.glGetError());
31140		} else {
31141			return ret
31142		}
31143		#[cfg(not(feature = "diagnose"))]
31144		return ret;
31145	}
31146	#[inline(always)]
31147	fn glLineWidth(&self, width: GLfloat) -> Result<()> {
31148		let ret = process_catch("glLineWidth", catch_unwind(||(self.linewidth)(width)));
31149		#[cfg(feature = "diagnose")]
31150		if let Ok(ret) = ret {
31151			return to_result("glLineWidth", ret, self.glGetError());
31152		} else {
31153			return ret
31154		}
31155		#[cfg(not(feature = "diagnose"))]
31156		return ret;
31157	}
31158	#[inline(always)]
31159	fn glLinkProgram(&self, program: GLuint) -> Result<()> {
31160		let ret = process_catch("glLinkProgram", catch_unwind(||(self.linkprogram)(program)));
31161		#[cfg(feature = "diagnose")]
31162		if let Ok(ret) = ret {
31163			return to_result("glLinkProgram", ret, self.glGetError());
31164		} else {
31165			return ret
31166		}
31167		#[cfg(not(feature = "diagnose"))]
31168		return ret;
31169	}
31170	#[inline(always)]
31171	fn glPixelStorei(&self, pname: GLenum, param: GLint) -> Result<()> {
31172		let ret = process_catch("glPixelStorei", catch_unwind(||(self.pixelstorei)(pname, param)));
31173		#[cfg(feature = "diagnose")]
31174		if let Ok(ret) = ret {
31175			return to_result("glPixelStorei", ret, self.glGetError());
31176		} else {
31177			return ret
31178		}
31179		#[cfg(not(feature = "diagnose"))]
31180		return ret;
31181	}
31182	#[inline(always)]
31183	fn glPolygonOffset(&self, factor: GLfloat, units: GLfloat) -> Result<()> {
31184		let ret = process_catch("glPolygonOffset", catch_unwind(||(self.polygonoffset)(factor, units)));
31185		#[cfg(feature = "diagnose")]
31186		if let Ok(ret) = ret {
31187			return to_result("glPolygonOffset", ret, self.glGetError());
31188		} else {
31189			return ret
31190		}
31191		#[cfg(not(feature = "diagnose"))]
31192		return ret;
31193	}
31194	#[inline(always)]
31195	fn glReadPixels(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, pixels: *mut c_void) -> Result<()> {
31196		let ret = process_catch("glReadPixels", catch_unwind(||(self.readpixels)(x, y, width, height, format, type_, pixels)));
31197		#[cfg(feature = "diagnose")]
31198		if let Ok(ret) = ret {
31199			return to_result("glReadPixels", ret, self.glGetError());
31200		} else {
31201			return ret
31202		}
31203		#[cfg(not(feature = "diagnose"))]
31204		return ret;
31205	}
31206	#[inline(always)]
31207	fn glReleaseShaderCompiler(&self) -> Result<()> {
31208		let ret = process_catch("glReleaseShaderCompiler", catch_unwind(||(self.releaseshadercompiler)()));
31209		#[cfg(feature = "diagnose")]
31210		if let Ok(ret) = ret {
31211			return to_result("glReleaseShaderCompiler", ret, self.glGetError());
31212		} else {
31213			return ret
31214		}
31215		#[cfg(not(feature = "diagnose"))]
31216		return ret;
31217	}
31218	#[inline(always)]
31219	fn glRenderbufferStorage(&self, target: GLenum, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()> {
31220		let ret = process_catch("glRenderbufferStorage", catch_unwind(||(self.renderbufferstorage)(target, internalformat, width, height)));
31221		#[cfg(feature = "diagnose")]
31222		if let Ok(ret) = ret {
31223			return to_result("glRenderbufferStorage", ret, self.glGetError());
31224		} else {
31225			return ret
31226		}
31227		#[cfg(not(feature = "diagnose"))]
31228		return ret;
31229	}
31230	#[inline(always)]
31231	fn glSampleCoverage(&self, value: GLfloat, invert: GLboolean) -> Result<()> {
31232		let ret = process_catch("glSampleCoverage", catch_unwind(||(self.samplecoverage)(value, invert)));
31233		#[cfg(feature = "diagnose")]
31234		if let Ok(ret) = ret {
31235			return to_result("glSampleCoverage", ret, self.glGetError());
31236		} else {
31237			return ret
31238		}
31239		#[cfg(not(feature = "diagnose"))]
31240		return ret;
31241	}
31242	#[inline(always)]
31243	fn glScissor(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
31244		let ret = process_catch("glScissor", catch_unwind(||(self.scissor)(x, y, width, height)));
31245		#[cfg(feature = "diagnose")]
31246		if let Ok(ret) = ret {
31247			return to_result("glScissor", ret, self.glGetError());
31248		} else {
31249			return ret
31250		}
31251		#[cfg(not(feature = "diagnose"))]
31252		return ret;
31253	}
31254	#[inline(always)]
31255	fn glShaderBinary(&self, count: GLsizei, shaders: *const GLuint, binaryformat: GLenum, binary: *const c_void, length: GLsizei) -> Result<()> {
31256		let ret = process_catch("glShaderBinary", catch_unwind(||(self.shaderbinary)(count, shaders, binaryformat, binary, length)));
31257		#[cfg(feature = "diagnose")]
31258		if let Ok(ret) = ret {
31259			return to_result("glShaderBinary", ret, self.glGetError());
31260		} else {
31261			return ret
31262		}
31263		#[cfg(not(feature = "diagnose"))]
31264		return ret;
31265	}
31266	#[inline(always)]
31267	fn glShaderSource(&self, shader: GLuint, count: GLsizei, string_: *const *const GLchar, length: *const GLint) -> Result<()> {
31268		let ret = process_catch("glShaderSource", catch_unwind(||(self.shadersource)(shader, count, string_, length)));
31269		#[cfg(feature = "diagnose")]
31270		if let Ok(ret) = ret {
31271			return to_result("glShaderSource", ret, self.glGetError());
31272		} else {
31273			return ret
31274		}
31275		#[cfg(not(feature = "diagnose"))]
31276		return ret;
31277	}
31278	#[inline(always)]
31279	fn glStencilFunc(&self, func: GLenum, ref_: GLint, mask: GLuint) -> Result<()> {
31280		let ret = process_catch("glStencilFunc", catch_unwind(||(self.stencilfunc)(func, ref_, mask)));
31281		#[cfg(feature = "diagnose")]
31282		if let Ok(ret) = ret {
31283			return to_result("glStencilFunc", ret, self.glGetError());
31284		} else {
31285			return ret
31286		}
31287		#[cfg(not(feature = "diagnose"))]
31288		return ret;
31289	}
31290	#[inline(always)]
31291	fn glStencilFuncSeparate(&self, face: GLenum, func: GLenum, ref_: GLint, mask: GLuint) -> Result<()> {
31292		let ret = process_catch("glStencilFuncSeparate", catch_unwind(||(self.stencilfuncseparate)(face, func, ref_, mask)));
31293		#[cfg(feature = "diagnose")]
31294		if let Ok(ret) = ret {
31295			return to_result("glStencilFuncSeparate", ret, self.glGetError());
31296		} else {
31297			return ret
31298		}
31299		#[cfg(not(feature = "diagnose"))]
31300		return ret;
31301	}
31302	#[inline(always)]
31303	fn glStencilMask(&self, mask: GLuint) -> Result<()> {
31304		let ret = process_catch("glStencilMask", catch_unwind(||(self.stencilmask)(mask)));
31305		#[cfg(feature = "diagnose")]
31306		if let Ok(ret) = ret {
31307			return to_result("glStencilMask", ret, self.glGetError());
31308		} else {
31309			return ret
31310		}
31311		#[cfg(not(feature = "diagnose"))]
31312		return ret;
31313	}
31314	#[inline(always)]
31315	fn glStencilMaskSeparate(&self, face: GLenum, mask: GLuint) -> Result<()> {
31316		let ret = process_catch("glStencilMaskSeparate", catch_unwind(||(self.stencilmaskseparate)(face, mask)));
31317		#[cfg(feature = "diagnose")]
31318		if let Ok(ret) = ret {
31319			return to_result("glStencilMaskSeparate", ret, self.glGetError());
31320		} else {
31321			return ret
31322		}
31323		#[cfg(not(feature = "diagnose"))]
31324		return ret;
31325	}
31326	#[inline(always)]
31327	fn glStencilOp(&self, fail: GLenum, zfail: GLenum, zpass: GLenum) -> Result<()> {
31328		let ret = process_catch("glStencilOp", catch_unwind(||(self.stencilop)(fail, zfail, zpass)));
31329		#[cfg(feature = "diagnose")]
31330		if let Ok(ret) = ret {
31331			return to_result("glStencilOp", ret, self.glGetError());
31332		} else {
31333			return ret
31334		}
31335		#[cfg(not(feature = "diagnose"))]
31336		return ret;
31337	}
31338	#[inline(always)]
31339	fn glStencilOpSeparate(&self, face: GLenum, sfail: GLenum, dpfail: GLenum, dppass: GLenum) -> Result<()> {
31340		let ret = process_catch("glStencilOpSeparate", catch_unwind(||(self.stencilopseparate)(face, sfail, dpfail, dppass)));
31341		#[cfg(feature = "diagnose")]
31342		if let Ok(ret) = ret {
31343			return to_result("glStencilOpSeparate", ret, self.glGetError());
31344		} else {
31345			return ret
31346		}
31347		#[cfg(not(feature = "diagnose"))]
31348		return ret;
31349	}
31350	#[inline(always)]
31351	fn glTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
31352		let ret = process_catch("glTexImage2D", catch_unwind(||(self.teximage2d)(target, level, internalformat, width, height, border, format, type_, pixels)));
31353		#[cfg(feature = "diagnose")]
31354		if let Ok(ret) = ret {
31355			return to_result("glTexImage2D", ret, self.glGetError());
31356		} else {
31357			return ret
31358		}
31359		#[cfg(not(feature = "diagnose"))]
31360		return ret;
31361	}
31362	#[inline(always)]
31363	fn glTexParameterf(&self, target: GLenum, pname: GLenum, param: GLfloat) -> Result<()> {
31364		let ret = process_catch("glTexParameterf", catch_unwind(||(self.texparameterf)(target, pname, param)));
31365		#[cfg(feature = "diagnose")]
31366		if let Ok(ret) = ret {
31367			return to_result("glTexParameterf", ret, self.glGetError());
31368		} else {
31369			return ret
31370		}
31371		#[cfg(not(feature = "diagnose"))]
31372		return ret;
31373	}
31374	#[inline(always)]
31375	fn glTexParameterfv(&self, target: GLenum, pname: GLenum, params: *const GLfloat) -> Result<()> {
31376		let ret = process_catch("glTexParameterfv", catch_unwind(||(self.texparameterfv)(target, pname, params)));
31377		#[cfg(feature = "diagnose")]
31378		if let Ok(ret) = ret {
31379			return to_result("glTexParameterfv", ret, self.glGetError());
31380		} else {
31381			return ret
31382		}
31383		#[cfg(not(feature = "diagnose"))]
31384		return ret;
31385	}
31386	#[inline(always)]
31387	fn glTexParameteri(&self, target: GLenum, pname: GLenum, param: GLint) -> Result<()> {
31388		let ret = process_catch("glTexParameteri", catch_unwind(||(self.texparameteri)(target, pname, param)));
31389		#[cfg(feature = "diagnose")]
31390		if let Ok(ret) = ret {
31391			return to_result("glTexParameteri", ret, self.glGetError());
31392		} else {
31393			return ret
31394		}
31395		#[cfg(not(feature = "diagnose"))]
31396		return ret;
31397	}
31398	#[inline(always)]
31399	fn glTexParameteriv(&self, target: GLenum, pname: GLenum, params: *const GLint) -> Result<()> {
31400		let ret = process_catch("glTexParameteriv", catch_unwind(||(self.texparameteriv)(target, pname, params)));
31401		#[cfg(feature = "diagnose")]
31402		if let Ok(ret) = ret {
31403			return to_result("glTexParameteriv", ret, self.glGetError());
31404		} else {
31405			return ret
31406		}
31407		#[cfg(not(feature = "diagnose"))]
31408		return ret;
31409	}
31410	#[inline(always)]
31411	fn glTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
31412		let ret = process_catch("glTexSubImage2D", catch_unwind(||(self.texsubimage2d)(target, level, xoffset, yoffset, width, height, format, type_, pixels)));
31413		#[cfg(feature = "diagnose")]
31414		if let Ok(ret) = ret {
31415			return to_result("glTexSubImage2D", ret, self.glGetError());
31416		} else {
31417			return ret
31418		}
31419		#[cfg(not(feature = "diagnose"))]
31420		return ret;
31421	}
31422	#[inline(always)]
31423	fn glUniform1f(&self, location: GLint, v0: GLfloat) -> Result<()> {
31424		let ret = process_catch("glUniform1f", catch_unwind(||(self.uniform1f)(location, v0)));
31425		#[cfg(feature = "diagnose")]
31426		if let Ok(ret) = ret {
31427			return to_result("glUniform1f", ret, self.glGetError());
31428		} else {
31429			return ret
31430		}
31431		#[cfg(not(feature = "diagnose"))]
31432		return ret;
31433	}
31434	#[inline(always)]
31435	fn glUniform1fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
31436		let ret = process_catch("glUniform1fv", catch_unwind(||(self.uniform1fv)(location, count, value)));
31437		#[cfg(feature = "diagnose")]
31438		if let Ok(ret) = ret {
31439			return to_result("glUniform1fv", ret, self.glGetError());
31440		} else {
31441			return ret
31442		}
31443		#[cfg(not(feature = "diagnose"))]
31444		return ret;
31445	}
31446	#[inline(always)]
31447	fn glUniform1i(&self, location: GLint, v0: GLint) -> Result<()> {
31448		let ret = process_catch("glUniform1i", catch_unwind(||(self.uniform1i)(location, v0)));
31449		#[cfg(feature = "diagnose")]
31450		if let Ok(ret) = ret {
31451			return to_result("glUniform1i", ret, self.glGetError());
31452		} else {
31453			return ret
31454		}
31455		#[cfg(not(feature = "diagnose"))]
31456		return ret;
31457	}
31458	#[inline(always)]
31459	fn glUniform1iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
31460		let ret = process_catch("glUniform1iv", catch_unwind(||(self.uniform1iv)(location, count, value)));
31461		#[cfg(feature = "diagnose")]
31462		if let Ok(ret) = ret {
31463			return to_result("glUniform1iv", ret, self.glGetError());
31464		} else {
31465			return ret
31466		}
31467		#[cfg(not(feature = "diagnose"))]
31468		return ret;
31469	}
31470	#[inline(always)]
31471	fn glUniform2f(&self, location: GLint, v0: GLfloat, v1: GLfloat) -> Result<()> {
31472		let ret = process_catch("glUniform2f", catch_unwind(||(self.uniform2f)(location, v0, v1)));
31473		#[cfg(feature = "diagnose")]
31474		if let Ok(ret) = ret {
31475			return to_result("glUniform2f", ret, self.glGetError());
31476		} else {
31477			return ret
31478		}
31479		#[cfg(not(feature = "diagnose"))]
31480		return ret;
31481	}
31482	#[inline(always)]
31483	fn glUniform2fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
31484		let ret = process_catch("glUniform2fv", catch_unwind(||(self.uniform2fv)(location, count, value)));
31485		#[cfg(feature = "diagnose")]
31486		if let Ok(ret) = ret {
31487			return to_result("glUniform2fv", ret, self.glGetError());
31488		} else {
31489			return ret
31490		}
31491		#[cfg(not(feature = "diagnose"))]
31492		return ret;
31493	}
31494	#[inline(always)]
31495	fn glUniform2i(&self, location: GLint, v0: GLint, v1: GLint) -> Result<()> {
31496		let ret = process_catch("glUniform2i", catch_unwind(||(self.uniform2i)(location, v0, v1)));
31497		#[cfg(feature = "diagnose")]
31498		if let Ok(ret) = ret {
31499			return to_result("glUniform2i", ret, self.glGetError());
31500		} else {
31501			return ret
31502		}
31503		#[cfg(not(feature = "diagnose"))]
31504		return ret;
31505	}
31506	#[inline(always)]
31507	fn glUniform2iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
31508		let ret = process_catch("glUniform2iv", catch_unwind(||(self.uniform2iv)(location, count, value)));
31509		#[cfg(feature = "diagnose")]
31510		if let Ok(ret) = ret {
31511			return to_result("glUniform2iv", ret, self.glGetError());
31512		} else {
31513			return ret
31514		}
31515		#[cfg(not(feature = "diagnose"))]
31516		return ret;
31517	}
31518	#[inline(always)]
31519	fn glUniform3f(&self, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat) -> Result<()> {
31520		let ret = process_catch("glUniform3f", catch_unwind(||(self.uniform3f)(location, v0, v1, v2)));
31521		#[cfg(feature = "diagnose")]
31522		if let Ok(ret) = ret {
31523			return to_result("glUniform3f", ret, self.glGetError());
31524		} else {
31525			return ret
31526		}
31527		#[cfg(not(feature = "diagnose"))]
31528		return ret;
31529	}
31530	#[inline(always)]
31531	fn glUniform3fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
31532		let ret = process_catch("glUniform3fv", catch_unwind(||(self.uniform3fv)(location, count, value)));
31533		#[cfg(feature = "diagnose")]
31534		if let Ok(ret) = ret {
31535			return to_result("glUniform3fv", ret, self.glGetError());
31536		} else {
31537			return ret
31538		}
31539		#[cfg(not(feature = "diagnose"))]
31540		return ret;
31541	}
31542	#[inline(always)]
31543	fn glUniform3i(&self, location: GLint, v0: GLint, v1: GLint, v2: GLint) -> Result<()> {
31544		let ret = process_catch("glUniform3i", catch_unwind(||(self.uniform3i)(location, v0, v1, v2)));
31545		#[cfg(feature = "diagnose")]
31546		if let Ok(ret) = ret {
31547			return to_result("glUniform3i", ret, self.glGetError());
31548		} else {
31549			return ret
31550		}
31551		#[cfg(not(feature = "diagnose"))]
31552		return ret;
31553	}
31554	#[inline(always)]
31555	fn glUniform3iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
31556		let ret = process_catch("glUniform3iv", catch_unwind(||(self.uniform3iv)(location, count, value)));
31557		#[cfg(feature = "diagnose")]
31558		if let Ok(ret) = ret {
31559			return to_result("glUniform3iv", ret, self.glGetError());
31560		} else {
31561			return ret
31562		}
31563		#[cfg(not(feature = "diagnose"))]
31564		return ret;
31565	}
31566	#[inline(always)]
31567	fn glUniform4f(&self, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat, v3: GLfloat) -> Result<()> {
31568		let ret = process_catch("glUniform4f", catch_unwind(||(self.uniform4f)(location, v0, v1, v2, v3)));
31569		#[cfg(feature = "diagnose")]
31570		if let Ok(ret) = ret {
31571			return to_result("glUniform4f", ret, self.glGetError());
31572		} else {
31573			return ret
31574		}
31575		#[cfg(not(feature = "diagnose"))]
31576		return ret;
31577	}
31578	#[inline(always)]
31579	fn glUniform4fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
31580		let ret = process_catch("glUniform4fv", catch_unwind(||(self.uniform4fv)(location, count, value)));
31581		#[cfg(feature = "diagnose")]
31582		if let Ok(ret) = ret {
31583			return to_result("glUniform4fv", ret, self.glGetError());
31584		} else {
31585			return ret
31586		}
31587		#[cfg(not(feature = "diagnose"))]
31588		return ret;
31589	}
31590	#[inline(always)]
31591	fn glUniform4i(&self, location: GLint, v0: GLint, v1: GLint, v2: GLint, v3: GLint) -> Result<()> {
31592		let ret = process_catch("glUniform4i", catch_unwind(||(self.uniform4i)(location, v0, v1, v2, v3)));
31593		#[cfg(feature = "diagnose")]
31594		if let Ok(ret) = ret {
31595			return to_result("glUniform4i", ret, self.glGetError());
31596		} else {
31597			return ret
31598		}
31599		#[cfg(not(feature = "diagnose"))]
31600		return ret;
31601	}
31602	#[inline(always)]
31603	fn glUniform4iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
31604		let ret = process_catch("glUniform4iv", catch_unwind(||(self.uniform4iv)(location, count, value)));
31605		#[cfg(feature = "diagnose")]
31606		if let Ok(ret) = ret {
31607			return to_result("glUniform4iv", ret, self.glGetError());
31608		} else {
31609			return ret
31610		}
31611		#[cfg(not(feature = "diagnose"))]
31612		return ret;
31613	}
31614	#[inline(always)]
31615	fn glUniformMatrix2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
31616		let ret = process_catch("glUniformMatrix2fv", catch_unwind(||(self.uniformmatrix2fv)(location, count, transpose, value)));
31617		#[cfg(feature = "diagnose")]
31618		if let Ok(ret) = ret {
31619			return to_result("glUniformMatrix2fv", ret, self.glGetError());
31620		} else {
31621			return ret
31622		}
31623		#[cfg(not(feature = "diagnose"))]
31624		return ret;
31625	}
31626	#[inline(always)]
31627	fn glUniformMatrix3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
31628		let ret = process_catch("glUniformMatrix3fv", catch_unwind(||(self.uniformmatrix3fv)(location, count, transpose, value)));
31629		#[cfg(feature = "diagnose")]
31630		if let Ok(ret) = ret {
31631			return to_result("glUniformMatrix3fv", ret, self.glGetError());
31632		} else {
31633			return ret
31634		}
31635		#[cfg(not(feature = "diagnose"))]
31636		return ret;
31637	}
31638	#[inline(always)]
31639	fn glUniformMatrix4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
31640		let ret = process_catch("glUniformMatrix4fv", catch_unwind(||(self.uniformmatrix4fv)(location, count, transpose, value)));
31641		#[cfg(feature = "diagnose")]
31642		if let Ok(ret) = ret {
31643			return to_result("glUniformMatrix4fv", ret, self.glGetError());
31644		} else {
31645			return ret
31646		}
31647		#[cfg(not(feature = "diagnose"))]
31648		return ret;
31649	}
31650	#[inline(always)]
31651	fn glUseProgram(&self, program: GLuint) -> Result<()> {
31652		let ret = process_catch("glUseProgram", catch_unwind(||(self.useprogram)(program)));
31653		#[cfg(feature = "diagnose")]
31654		if let Ok(ret) = ret {
31655			return to_result("glUseProgram", ret, self.glGetError());
31656		} else {
31657			return ret
31658		}
31659		#[cfg(not(feature = "diagnose"))]
31660		return ret;
31661	}
31662	#[inline(always)]
31663	fn glValidateProgram(&self, program: GLuint) -> Result<()> {
31664		let ret = process_catch("glValidateProgram", catch_unwind(||(self.validateprogram)(program)));
31665		#[cfg(feature = "diagnose")]
31666		if let Ok(ret) = ret {
31667			return to_result("glValidateProgram", ret, self.glGetError());
31668		} else {
31669			return ret
31670		}
31671		#[cfg(not(feature = "diagnose"))]
31672		return ret;
31673	}
31674	#[inline(always)]
31675	fn glVertexAttrib1f(&self, index: GLuint, x: GLfloat) -> Result<()> {
31676		let ret = process_catch("glVertexAttrib1f", catch_unwind(||(self.vertexattrib1f)(index, x)));
31677		#[cfg(feature = "diagnose")]
31678		if let Ok(ret) = ret {
31679			return to_result("glVertexAttrib1f", ret, self.glGetError());
31680		} else {
31681			return ret
31682		}
31683		#[cfg(not(feature = "diagnose"))]
31684		return ret;
31685	}
31686	#[inline(always)]
31687	fn glVertexAttrib1fv(&self, index: GLuint, v: *const GLfloat) -> Result<()> {
31688		let ret = process_catch("glVertexAttrib1fv", catch_unwind(||(self.vertexattrib1fv)(index, v)));
31689		#[cfg(feature = "diagnose")]
31690		if let Ok(ret) = ret {
31691			return to_result("glVertexAttrib1fv", ret, self.glGetError());
31692		} else {
31693			return ret
31694		}
31695		#[cfg(not(feature = "diagnose"))]
31696		return ret;
31697	}
31698	#[inline(always)]
31699	fn glVertexAttrib2f(&self, index: GLuint, x: GLfloat, y: GLfloat) -> Result<()> {
31700		let ret = process_catch("glVertexAttrib2f", catch_unwind(||(self.vertexattrib2f)(index, x, y)));
31701		#[cfg(feature = "diagnose")]
31702		if let Ok(ret) = ret {
31703			return to_result("glVertexAttrib2f", ret, self.glGetError());
31704		} else {
31705			return ret
31706		}
31707		#[cfg(not(feature = "diagnose"))]
31708		return ret;
31709	}
31710	#[inline(always)]
31711	fn glVertexAttrib2fv(&self, index: GLuint, v: *const GLfloat) -> Result<()> {
31712		let ret = process_catch("glVertexAttrib2fv", catch_unwind(||(self.vertexattrib2fv)(index, v)));
31713		#[cfg(feature = "diagnose")]
31714		if let Ok(ret) = ret {
31715			return to_result("glVertexAttrib2fv", ret, self.glGetError());
31716		} else {
31717			return ret
31718		}
31719		#[cfg(not(feature = "diagnose"))]
31720		return ret;
31721	}
31722	#[inline(always)]
31723	fn glVertexAttrib3f(&self, index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat) -> Result<()> {
31724		let ret = process_catch("glVertexAttrib3f", catch_unwind(||(self.vertexattrib3f)(index, x, y, z)));
31725		#[cfg(feature = "diagnose")]
31726		if let Ok(ret) = ret {
31727			return to_result("glVertexAttrib3f", ret, self.glGetError());
31728		} else {
31729			return ret
31730		}
31731		#[cfg(not(feature = "diagnose"))]
31732		return ret;
31733	}
31734	#[inline(always)]
31735	fn glVertexAttrib3fv(&self, index: GLuint, v: *const GLfloat) -> Result<()> {
31736		let ret = process_catch("glVertexAttrib3fv", catch_unwind(||(self.vertexattrib3fv)(index, v)));
31737		#[cfg(feature = "diagnose")]
31738		if let Ok(ret) = ret {
31739			return to_result("glVertexAttrib3fv", ret, self.glGetError());
31740		} else {
31741			return ret
31742		}
31743		#[cfg(not(feature = "diagnose"))]
31744		return ret;
31745	}
31746	#[inline(always)]
31747	fn glVertexAttrib4f(&self, index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat, w: GLfloat) -> Result<()> {
31748		let ret = process_catch("glVertexAttrib4f", catch_unwind(||(self.vertexattrib4f)(index, x, y, z, w)));
31749		#[cfg(feature = "diagnose")]
31750		if let Ok(ret) = ret {
31751			return to_result("glVertexAttrib4f", ret, self.glGetError());
31752		} else {
31753			return ret
31754		}
31755		#[cfg(not(feature = "diagnose"))]
31756		return ret;
31757	}
31758	#[inline(always)]
31759	fn glVertexAttrib4fv(&self, index: GLuint, v: *const GLfloat) -> Result<()> {
31760		let ret = process_catch("glVertexAttrib4fv", catch_unwind(||(self.vertexattrib4fv)(index, v)));
31761		#[cfg(feature = "diagnose")]
31762		if let Ok(ret) = ret {
31763			return to_result("glVertexAttrib4fv", ret, self.glGetError());
31764		} else {
31765			return ret
31766		}
31767		#[cfg(not(feature = "diagnose"))]
31768		return ret;
31769	}
31770	#[inline(always)]
31771	fn glVertexAttribPointer(&self, index: GLuint, size: GLint, type_: GLenum, normalized: GLboolean, stride: GLsizei, pointer: *const c_void) -> Result<()> {
31772		let ret = process_catch("glVertexAttribPointer", catch_unwind(||(self.vertexattribpointer)(index, size, type_, normalized, stride, pointer)));
31773		#[cfg(feature = "diagnose")]
31774		if let Ok(ret) = ret {
31775			return to_result("glVertexAttribPointer", ret, self.glGetError());
31776		} else {
31777			return ret
31778		}
31779		#[cfg(not(feature = "diagnose"))]
31780		return ret;
31781	}
31782	#[inline(always)]
31783	fn glViewport(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
31784		let ret = process_catch("glViewport", catch_unwind(||(self.viewport)(x, y, width, height)));
31785		#[cfg(feature = "diagnose")]
31786		if let Ok(ret) = ret {
31787			return to_result("glViewport", ret, self.glGetError());
31788		} else {
31789			return ret
31790		}
31791		#[cfg(not(feature = "diagnose"))]
31792		return ret;
31793	}
31794}
31795
31796impl EsVersion20 {
31797	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
31798		let (_spec, major, minor, release) = base.get_version();
31799		if (major, minor, release) < (2, 0, 0) {
31800			return Self::default();
31801		}
31802		Self {
31803			available: true,
31804			activetexture: {let proc = get_proc_address("glActiveTexture"); if proc == null() {dummy_pfnglactivetextureproc} else {unsafe{transmute(proc)}}},
31805			attachshader: {let proc = get_proc_address("glAttachShader"); if proc == null() {dummy_pfnglattachshaderproc} else {unsafe{transmute(proc)}}},
31806			bindattriblocation: {let proc = get_proc_address("glBindAttribLocation"); if proc == null() {dummy_pfnglbindattriblocationproc} else {unsafe{transmute(proc)}}},
31807			bindbuffer: {let proc = get_proc_address("glBindBuffer"); if proc == null() {dummy_pfnglbindbufferproc} else {unsafe{transmute(proc)}}},
31808			bindframebuffer: {let proc = get_proc_address("glBindFramebuffer"); if proc == null() {dummy_pfnglbindframebufferproc} else {unsafe{transmute(proc)}}},
31809			bindrenderbuffer: {let proc = get_proc_address("glBindRenderbuffer"); if proc == null() {dummy_pfnglbindrenderbufferproc} else {unsafe{transmute(proc)}}},
31810			bindtexture: {let proc = get_proc_address("glBindTexture"); if proc == null() {dummy_pfnglbindtextureproc} else {unsafe{transmute(proc)}}},
31811			blendcolor: {let proc = get_proc_address("glBlendColor"); if proc == null() {dummy_pfnglblendcolorproc} else {unsafe{transmute(proc)}}},
31812			blendequation: {let proc = get_proc_address("glBlendEquation"); if proc == null() {dummy_pfnglblendequationproc} else {unsafe{transmute(proc)}}},
31813			blendequationseparate: {let proc = get_proc_address("glBlendEquationSeparate"); if proc == null() {dummy_pfnglblendequationseparateproc} else {unsafe{transmute(proc)}}},
31814			blendfunc: {let proc = get_proc_address("glBlendFunc"); if proc == null() {dummy_pfnglblendfuncproc} else {unsafe{transmute(proc)}}},
31815			blendfuncseparate: {let proc = get_proc_address("glBlendFuncSeparate"); if proc == null() {dummy_pfnglblendfuncseparateproc} else {unsafe{transmute(proc)}}},
31816			bufferdata: {let proc = get_proc_address("glBufferData"); if proc == null() {dummy_pfnglbufferdataproc} else {unsafe{transmute(proc)}}},
31817			buffersubdata: {let proc = get_proc_address("glBufferSubData"); if proc == null() {dummy_pfnglbuffersubdataproc} else {unsafe{transmute(proc)}}},
31818			checkframebufferstatus: {let proc = get_proc_address("glCheckFramebufferStatus"); if proc == null() {dummy_pfnglcheckframebufferstatusproc} else {unsafe{transmute(proc)}}},
31819			clear: {let proc = get_proc_address("glClear"); if proc == null() {dummy_pfnglclearproc} else {unsafe{transmute(proc)}}},
31820			clearcolor: {let proc = get_proc_address("glClearColor"); if proc == null() {dummy_pfnglclearcolorproc} else {unsafe{transmute(proc)}}},
31821			cleardepthf: {let proc = get_proc_address("glClearDepthf"); if proc == null() {dummy_pfnglcleardepthfproc} else {unsafe{transmute(proc)}}},
31822			clearstencil: {let proc = get_proc_address("glClearStencil"); if proc == null() {dummy_pfnglclearstencilproc} else {unsafe{transmute(proc)}}},
31823			colormask: {let proc = get_proc_address("glColorMask"); if proc == null() {dummy_pfnglcolormaskproc} else {unsafe{transmute(proc)}}},
31824			compileshader: {let proc = get_proc_address("glCompileShader"); if proc == null() {dummy_pfnglcompileshaderproc} else {unsafe{transmute(proc)}}},
31825			compressedteximage2d: {let proc = get_proc_address("glCompressedTexImage2D"); if proc == null() {dummy_pfnglcompressedteximage2dproc} else {unsafe{transmute(proc)}}},
31826			compressedtexsubimage2d: {let proc = get_proc_address("glCompressedTexSubImage2D"); if proc == null() {dummy_pfnglcompressedtexsubimage2dproc} else {unsafe{transmute(proc)}}},
31827			copyteximage2d: {let proc = get_proc_address("glCopyTexImage2D"); if proc == null() {dummy_pfnglcopyteximage2dproc} else {unsafe{transmute(proc)}}},
31828			copytexsubimage2d: {let proc = get_proc_address("glCopyTexSubImage2D"); if proc == null() {dummy_pfnglcopytexsubimage2dproc} else {unsafe{transmute(proc)}}},
31829			createprogram: {let proc = get_proc_address("glCreateProgram"); if proc == null() {dummy_pfnglcreateprogramproc} else {unsafe{transmute(proc)}}},
31830			createshader: {let proc = get_proc_address("glCreateShader"); if proc == null() {dummy_pfnglcreateshaderproc} else {unsafe{transmute(proc)}}},
31831			cullface: {let proc = get_proc_address("glCullFace"); if proc == null() {dummy_pfnglcullfaceproc} else {unsafe{transmute(proc)}}},
31832			deletebuffers: {let proc = get_proc_address("glDeleteBuffers"); if proc == null() {dummy_pfngldeletebuffersproc} else {unsafe{transmute(proc)}}},
31833			deleteframebuffers: {let proc = get_proc_address("glDeleteFramebuffers"); if proc == null() {dummy_pfngldeleteframebuffersproc} else {unsafe{transmute(proc)}}},
31834			deleteprogram: {let proc = get_proc_address("glDeleteProgram"); if proc == null() {dummy_pfngldeleteprogramproc} else {unsafe{transmute(proc)}}},
31835			deleterenderbuffers: {let proc = get_proc_address("glDeleteRenderbuffers"); if proc == null() {dummy_pfngldeleterenderbuffersproc} else {unsafe{transmute(proc)}}},
31836			deleteshader: {let proc = get_proc_address("glDeleteShader"); if proc == null() {dummy_pfngldeleteshaderproc} else {unsafe{transmute(proc)}}},
31837			deletetextures: {let proc = get_proc_address("glDeleteTextures"); if proc == null() {dummy_pfngldeletetexturesproc} else {unsafe{transmute(proc)}}},
31838			depthfunc: {let proc = get_proc_address("glDepthFunc"); if proc == null() {dummy_pfngldepthfuncproc} else {unsafe{transmute(proc)}}},
31839			depthmask: {let proc = get_proc_address("glDepthMask"); if proc == null() {dummy_pfngldepthmaskproc} else {unsafe{transmute(proc)}}},
31840			depthrangef: {let proc = get_proc_address("glDepthRangef"); if proc == null() {dummy_pfngldepthrangefproc} else {unsafe{transmute(proc)}}},
31841			detachshader: {let proc = get_proc_address("glDetachShader"); if proc == null() {dummy_pfngldetachshaderproc} else {unsafe{transmute(proc)}}},
31842			disable: {let proc = get_proc_address("glDisable"); if proc == null() {dummy_pfngldisableproc} else {unsafe{transmute(proc)}}},
31843			disablevertexattribarray: {let proc = get_proc_address("glDisableVertexAttribArray"); if proc == null() {dummy_pfngldisablevertexattribarrayproc} else {unsafe{transmute(proc)}}},
31844			drawarrays: {let proc = get_proc_address("glDrawArrays"); if proc == null() {dummy_pfngldrawarraysproc} else {unsafe{transmute(proc)}}},
31845			drawelements: {let proc = get_proc_address("glDrawElements"); if proc == null() {dummy_pfngldrawelementsproc} else {unsafe{transmute(proc)}}},
31846			enable: {let proc = get_proc_address("glEnable"); if proc == null() {dummy_pfnglenableproc} else {unsafe{transmute(proc)}}},
31847			enablevertexattribarray: {let proc = get_proc_address("glEnableVertexAttribArray"); if proc == null() {dummy_pfnglenablevertexattribarrayproc} else {unsafe{transmute(proc)}}},
31848			finish: {let proc = get_proc_address("glFinish"); if proc == null() {dummy_pfnglfinishproc} else {unsafe{transmute(proc)}}},
31849			flush: {let proc = get_proc_address("glFlush"); if proc == null() {dummy_pfnglflushproc} else {unsafe{transmute(proc)}}},
31850			framebufferrenderbuffer: {let proc = get_proc_address("glFramebufferRenderbuffer"); if proc == null() {dummy_pfnglframebufferrenderbufferproc} else {unsafe{transmute(proc)}}},
31851			framebuffertexture2d: {let proc = get_proc_address("glFramebufferTexture2D"); if proc == null() {dummy_pfnglframebuffertexture2dproc} else {unsafe{transmute(proc)}}},
31852			frontface: {let proc = get_proc_address("glFrontFace"); if proc == null() {dummy_pfnglfrontfaceproc} else {unsafe{transmute(proc)}}},
31853			genbuffers: {let proc = get_proc_address("glGenBuffers"); if proc == null() {dummy_pfnglgenbuffersproc} else {unsafe{transmute(proc)}}},
31854			generatemipmap: {let proc = get_proc_address("glGenerateMipmap"); if proc == null() {dummy_pfnglgeneratemipmapproc} else {unsafe{transmute(proc)}}},
31855			genframebuffers: {let proc = get_proc_address("glGenFramebuffers"); if proc == null() {dummy_pfnglgenframebuffersproc} else {unsafe{transmute(proc)}}},
31856			genrenderbuffers: {let proc = get_proc_address("glGenRenderbuffers"); if proc == null() {dummy_pfnglgenrenderbuffersproc} else {unsafe{transmute(proc)}}},
31857			gentextures: {let proc = get_proc_address("glGenTextures"); if proc == null() {dummy_pfnglgentexturesproc} else {unsafe{transmute(proc)}}},
31858			getactiveattrib: {let proc = get_proc_address("glGetActiveAttrib"); if proc == null() {dummy_pfnglgetactiveattribproc} else {unsafe{transmute(proc)}}},
31859			getactiveuniform: {let proc = get_proc_address("glGetActiveUniform"); if proc == null() {dummy_pfnglgetactiveuniformproc} else {unsafe{transmute(proc)}}},
31860			getattachedshaders: {let proc = get_proc_address("glGetAttachedShaders"); if proc == null() {dummy_pfnglgetattachedshadersproc} else {unsafe{transmute(proc)}}},
31861			getattriblocation: {let proc = get_proc_address("glGetAttribLocation"); if proc == null() {dummy_pfnglgetattriblocationproc} else {unsafe{transmute(proc)}}},
31862			getbooleanv: {let proc = get_proc_address("glGetBooleanv"); if proc == null() {dummy_pfnglgetbooleanvproc} else {unsafe{transmute(proc)}}},
31863			getbufferparameteriv: {let proc = get_proc_address("glGetBufferParameteriv"); if proc == null() {dummy_pfnglgetbufferparameterivproc} else {unsafe{transmute(proc)}}},
31864			geterror: {let proc = get_proc_address("glGetError"); if proc == null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
31865			getfloatv: {let proc = get_proc_address("glGetFloatv"); if proc == null() {dummy_pfnglgetfloatvproc} else {unsafe{transmute(proc)}}},
31866			getframebufferattachmentparameteriv: {let proc = get_proc_address("glGetFramebufferAttachmentParameteriv"); if proc == null() {dummy_pfnglgetframebufferattachmentparameterivproc} else {unsafe{transmute(proc)}}},
31867			getintegerv: {let proc = get_proc_address("glGetIntegerv"); if proc == null() {dummy_pfnglgetintegervproc} else {unsafe{transmute(proc)}}},
31868			getprogramiv: {let proc = get_proc_address("glGetProgramiv"); if proc == null() {dummy_pfnglgetprogramivproc} else {unsafe{transmute(proc)}}},
31869			getprograminfolog: {let proc = get_proc_address("glGetProgramInfoLog"); if proc == null() {dummy_pfnglgetprograminfologproc} else {unsafe{transmute(proc)}}},
31870			getrenderbufferparameteriv: {let proc = get_proc_address("glGetRenderbufferParameteriv"); if proc == null() {dummy_pfnglgetrenderbufferparameterivproc} else {unsafe{transmute(proc)}}},
31871			getshaderiv: {let proc = get_proc_address("glGetShaderiv"); if proc == null() {dummy_pfnglgetshaderivproc} else {unsafe{transmute(proc)}}},
31872			getshaderinfolog: {let proc = get_proc_address("glGetShaderInfoLog"); if proc == null() {dummy_pfnglgetshaderinfologproc} else {unsafe{transmute(proc)}}},
31873			getshaderprecisionformat: {let proc = get_proc_address("glGetShaderPrecisionFormat"); if proc == null() {dummy_pfnglgetshaderprecisionformatproc} else {unsafe{transmute(proc)}}},
31874			getshadersource: {let proc = get_proc_address("glGetShaderSource"); if proc == null() {dummy_pfnglgetshadersourceproc} else {unsafe{transmute(proc)}}},
31875			getstring: {let proc = get_proc_address("glGetString"); if proc == null() {dummy_pfnglgetstringproc} else {unsafe{transmute(proc)}}},
31876			gettexparameterfv: {let proc = get_proc_address("glGetTexParameterfv"); if proc == null() {dummy_pfnglgettexparameterfvproc} else {unsafe{transmute(proc)}}},
31877			gettexparameteriv: {let proc = get_proc_address("glGetTexParameteriv"); if proc == null() {dummy_pfnglgettexparameterivproc} else {unsafe{transmute(proc)}}},
31878			getuniformfv: {let proc = get_proc_address("glGetUniformfv"); if proc == null() {dummy_pfnglgetuniformfvproc} else {unsafe{transmute(proc)}}},
31879			getuniformiv: {let proc = get_proc_address("glGetUniformiv"); if proc == null() {dummy_pfnglgetuniformivproc} else {unsafe{transmute(proc)}}},
31880			getuniformlocation: {let proc = get_proc_address("glGetUniformLocation"); if proc == null() {dummy_pfnglgetuniformlocationproc} else {unsafe{transmute(proc)}}},
31881			getvertexattribfv: {let proc = get_proc_address("glGetVertexAttribfv"); if proc == null() {dummy_pfnglgetvertexattribfvproc} else {unsafe{transmute(proc)}}},
31882			getvertexattribiv: {let proc = get_proc_address("glGetVertexAttribiv"); if proc == null() {dummy_pfnglgetvertexattribivproc} else {unsafe{transmute(proc)}}},
31883			getvertexattribpointerv: {let proc = get_proc_address("glGetVertexAttribPointerv"); if proc == null() {dummy_pfnglgetvertexattribpointervproc} else {unsafe{transmute(proc)}}},
31884			hint: {let proc = get_proc_address("glHint"); if proc == null() {dummy_pfnglhintproc} else {unsafe{transmute(proc)}}},
31885			isbuffer: {let proc = get_proc_address("glIsBuffer"); if proc == null() {dummy_pfnglisbufferproc} else {unsafe{transmute(proc)}}},
31886			isenabled: {let proc = get_proc_address("glIsEnabled"); if proc == null() {dummy_pfnglisenabledproc} else {unsafe{transmute(proc)}}},
31887			isframebuffer: {let proc = get_proc_address("glIsFramebuffer"); if proc == null() {dummy_pfnglisframebufferproc} else {unsafe{transmute(proc)}}},
31888			isprogram: {let proc = get_proc_address("glIsProgram"); if proc == null() {dummy_pfnglisprogramproc} else {unsafe{transmute(proc)}}},
31889			isrenderbuffer: {let proc = get_proc_address("glIsRenderbuffer"); if proc == null() {dummy_pfnglisrenderbufferproc} else {unsafe{transmute(proc)}}},
31890			isshader: {let proc = get_proc_address("glIsShader"); if proc == null() {dummy_pfnglisshaderproc} else {unsafe{transmute(proc)}}},
31891			istexture: {let proc = get_proc_address("glIsTexture"); if proc == null() {dummy_pfnglistextureproc} else {unsafe{transmute(proc)}}},
31892			linewidth: {let proc = get_proc_address("glLineWidth"); if proc == null() {dummy_pfngllinewidthproc} else {unsafe{transmute(proc)}}},
31893			linkprogram: {let proc = get_proc_address("glLinkProgram"); if proc == null() {dummy_pfngllinkprogramproc} else {unsafe{transmute(proc)}}},
31894			pixelstorei: {let proc = get_proc_address("glPixelStorei"); if proc == null() {dummy_pfnglpixelstoreiproc} else {unsafe{transmute(proc)}}},
31895			polygonoffset: {let proc = get_proc_address("glPolygonOffset"); if proc == null() {dummy_pfnglpolygonoffsetproc} else {unsafe{transmute(proc)}}},
31896			readpixels: {let proc = get_proc_address("glReadPixels"); if proc == null() {dummy_pfnglreadpixelsproc} else {unsafe{transmute(proc)}}},
31897			releaseshadercompiler: {let proc = get_proc_address("glReleaseShaderCompiler"); if proc == null() {dummy_pfnglreleaseshadercompilerproc} else {unsafe{transmute(proc)}}},
31898			renderbufferstorage: {let proc = get_proc_address("glRenderbufferStorage"); if proc == null() {dummy_pfnglrenderbufferstorageproc} else {unsafe{transmute(proc)}}},
31899			samplecoverage: {let proc = get_proc_address("glSampleCoverage"); if proc == null() {dummy_pfnglsamplecoverageproc} else {unsafe{transmute(proc)}}},
31900			scissor: {let proc = get_proc_address("glScissor"); if proc == null() {dummy_pfnglscissorproc} else {unsafe{transmute(proc)}}},
31901			shaderbinary: {let proc = get_proc_address("glShaderBinary"); if proc == null() {dummy_pfnglshaderbinaryproc} else {unsafe{transmute(proc)}}},
31902			shadersource: {let proc = get_proc_address("glShaderSource"); if proc == null() {dummy_pfnglshadersourceproc} else {unsafe{transmute(proc)}}},
31903			stencilfunc: {let proc = get_proc_address("glStencilFunc"); if proc == null() {dummy_pfnglstencilfuncproc} else {unsafe{transmute(proc)}}},
31904			stencilfuncseparate: {let proc = get_proc_address("glStencilFuncSeparate"); if proc == null() {dummy_pfnglstencilfuncseparateproc} else {unsafe{transmute(proc)}}},
31905			stencilmask: {let proc = get_proc_address("glStencilMask"); if proc == null() {dummy_pfnglstencilmaskproc} else {unsafe{transmute(proc)}}},
31906			stencilmaskseparate: {let proc = get_proc_address("glStencilMaskSeparate"); if proc == null() {dummy_pfnglstencilmaskseparateproc} else {unsafe{transmute(proc)}}},
31907			stencilop: {let proc = get_proc_address("glStencilOp"); if proc == null() {dummy_pfnglstencilopproc} else {unsafe{transmute(proc)}}},
31908			stencilopseparate: {let proc = get_proc_address("glStencilOpSeparate"); if proc == null() {dummy_pfnglstencilopseparateproc} else {unsafe{transmute(proc)}}},
31909			teximage2d: {let proc = get_proc_address("glTexImage2D"); if proc == null() {dummy_pfnglteximage2dproc} else {unsafe{transmute(proc)}}},
31910			texparameterf: {let proc = get_proc_address("glTexParameterf"); if proc == null() {dummy_pfngltexparameterfproc} else {unsafe{transmute(proc)}}},
31911			texparameterfv: {let proc = get_proc_address("glTexParameterfv"); if proc == null() {dummy_pfngltexparameterfvproc} else {unsafe{transmute(proc)}}},
31912			texparameteri: {let proc = get_proc_address("glTexParameteri"); if proc == null() {dummy_pfngltexparameteriproc} else {unsafe{transmute(proc)}}},
31913			texparameteriv: {let proc = get_proc_address("glTexParameteriv"); if proc == null() {dummy_pfngltexparameterivproc} else {unsafe{transmute(proc)}}},
31914			texsubimage2d: {let proc = get_proc_address("glTexSubImage2D"); if proc == null() {dummy_pfngltexsubimage2dproc} else {unsafe{transmute(proc)}}},
31915			uniform1f: {let proc = get_proc_address("glUniform1f"); if proc == null() {dummy_pfngluniform1fproc} else {unsafe{transmute(proc)}}},
31916			uniform1fv: {let proc = get_proc_address("glUniform1fv"); if proc == null() {dummy_pfngluniform1fvproc} else {unsafe{transmute(proc)}}},
31917			uniform1i: {let proc = get_proc_address("glUniform1i"); if proc == null() {dummy_pfngluniform1iproc} else {unsafe{transmute(proc)}}},
31918			uniform1iv: {let proc = get_proc_address("glUniform1iv"); if proc == null() {dummy_pfngluniform1ivproc} else {unsafe{transmute(proc)}}},
31919			uniform2f: {let proc = get_proc_address("glUniform2f"); if proc == null() {dummy_pfngluniform2fproc} else {unsafe{transmute(proc)}}},
31920			uniform2fv: {let proc = get_proc_address("glUniform2fv"); if proc == null() {dummy_pfngluniform2fvproc} else {unsafe{transmute(proc)}}},
31921			uniform2i: {let proc = get_proc_address("glUniform2i"); if proc == null() {dummy_pfngluniform2iproc} else {unsafe{transmute(proc)}}},
31922			uniform2iv: {let proc = get_proc_address("glUniform2iv"); if proc == null() {dummy_pfngluniform2ivproc} else {unsafe{transmute(proc)}}},
31923			uniform3f: {let proc = get_proc_address("glUniform3f"); if proc == null() {dummy_pfngluniform3fproc} else {unsafe{transmute(proc)}}},
31924			uniform3fv: {let proc = get_proc_address("glUniform3fv"); if proc == null() {dummy_pfngluniform3fvproc} else {unsafe{transmute(proc)}}},
31925			uniform3i: {let proc = get_proc_address("glUniform3i"); if proc == null() {dummy_pfngluniform3iproc} else {unsafe{transmute(proc)}}},
31926			uniform3iv: {let proc = get_proc_address("glUniform3iv"); if proc == null() {dummy_pfngluniform3ivproc} else {unsafe{transmute(proc)}}},
31927			uniform4f: {let proc = get_proc_address("glUniform4f"); if proc == null() {dummy_pfngluniform4fproc} else {unsafe{transmute(proc)}}},
31928			uniform4fv: {let proc = get_proc_address("glUniform4fv"); if proc == null() {dummy_pfngluniform4fvproc} else {unsafe{transmute(proc)}}},
31929			uniform4i: {let proc = get_proc_address("glUniform4i"); if proc == null() {dummy_pfngluniform4iproc} else {unsafe{transmute(proc)}}},
31930			uniform4iv: {let proc = get_proc_address("glUniform4iv"); if proc == null() {dummy_pfngluniform4ivproc} else {unsafe{transmute(proc)}}},
31931			uniformmatrix2fv: {let proc = get_proc_address("glUniformMatrix2fv"); if proc == null() {dummy_pfngluniformmatrix2fvproc} else {unsafe{transmute(proc)}}},
31932			uniformmatrix3fv: {let proc = get_proc_address("glUniformMatrix3fv"); if proc == null() {dummy_pfngluniformmatrix3fvproc} else {unsafe{transmute(proc)}}},
31933			uniformmatrix4fv: {let proc = get_proc_address("glUniformMatrix4fv"); if proc == null() {dummy_pfngluniformmatrix4fvproc} else {unsafe{transmute(proc)}}},
31934			useprogram: {let proc = get_proc_address("glUseProgram"); if proc == null() {dummy_pfngluseprogramproc} else {unsafe{transmute(proc)}}},
31935			validateprogram: {let proc = get_proc_address("glValidateProgram"); if proc == null() {dummy_pfnglvalidateprogramproc} else {unsafe{transmute(proc)}}},
31936			vertexattrib1f: {let proc = get_proc_address("glVertexAttrib1f"); if proc == null() {dummy_pfnglvertexattrib1fproc} else {unsafe{transmute(proc)}}},
31937			vertexattrib1fv: {let proc = get_proc_address("glVertexAttrib1fv"); if proc == null() {dummy_pfnglvertexattrib1fvproc} else {unsafe{transmute(proc)}}},
31938			vertexattrib2f: {let proc = get_proc_address("glVertexAttrib2f"); if proc == null() {dummy_pfnglvertexattrib2fproc} else {unsafe{transmute(proc)}}},
31939			vertexattrib2fv: {let proc = get_proc_address("glVertexAttrib2fv"); if proc == null() {dummy_pfnglvertexattrib2fvproc} else {unsafe{transmute(proc)}}},
31940			vertexattrib3f: {let proc = get_proc_address("glVertexAttrib3f"); if proc == null() {dummy_pfnglvertexattrib3fproc} else {unsafe{transmute(proc)}}},
31941			vertexattrib3fv: {let proc = get_proc_address("glVertexAttrib3fv"); if proc == null() {dummy_pfnglvertexattrib3fvproc} else {unsafe{transmute(proc)}}},
31942			vertexattrib4f: {let proc = get_proc_address("glVertexAttrib4f"); if proc == null() {dummy_pfnglvertexattrib4fproc} else {unsafe{transmute(proc)}}},
31943			vertexattrib4fv: {let proc = get_proc_address("glVertexAttrib4fv"); if proc == null() {dummy_pfnglvertexattrib4fvproc} else {unsafe{transmute(proc)}}},
31944			vertexattribpointer: {let proc = get_proc_address("glVertexAttribPointer"); if proc == null() {dummy_pfnglvertexattribpointerproc} else {unsafe{transmute(proc)}}},
31945			viewport: {let proc = get_proc_address("glViewport"); if proc == null() {dummy_pfnglviewportproc} else {unsafe{transmute(proc)}}},
31946		}
31947	}
31948	#[inline(always)]
31949	pub fn get_available(&self) -> bool {
31950		self.available
31951	}
31952}
31953
31954impl Default for EsVersion20 {
31955	fn default() -> Self {
31956		Self {
31957			available: false,
31958			activetexture: dummy_pfnglactivetextureproc,
31959			attachshader: dummy_pfnglattachshaderproc,
31960			bindattriblocation: dummy_pfnglbindattriblocationproc,
31961			bindbuffer: dummy_pfnglbindbufferproc,
31962			bindframebuffer: dummy_pfnglbindframebufferproc,
31963			bindrenderbuffer: dummy_pfnglbindrenderbufferproc,
31964			bindtexture: dummy_pfnglbindtextureproc,
31965			blendcolor: dummy_pfnglblendcolorproc,
31966			blendequation: dummy_pfnglblendequationproc,
31967			blendequationseparate: dummy_pfnglblendequationseparateproc,
31968			blendfunc: dummy_pfnglblendfuncproc,
31969			blendfuncseparate: dummy_pfnglblendfuncseparateproc,
31970			bufferdata: dummy_pfnglbufferdataproc,
31971			buffersubdata: dummy_pfnglbuffersubdataproc,
31972			checkframebufferstatus: dummy_pfnglcheckframebufferstatusproc,
31973			clear: dummy_pfnglclearproc,
31974			clearcolor: dummy_pfnglclearcolorproc,
31975			cleardepthf: dummy_pfnglcleardepthfproc,
31976			clearstencil: dummy_pfnglclearstencilproc,
31977			colormask: dummy_pfnglcolormaskproc,
31978			compileshader: dummy_pfnglcompileshaderproc,
31979			compressedteximage2d: dummy_pfnglcompressedteximage2dproc,
31980			compressedtexsubimage2d: dummy_pfnglcompressedtexsubimage2dproc,
31981			copyteximage2d: dummy_pfnglcopyteximage2dproc,
31982			copytexsubimage2d: dummy_pfnglcopytexsubimage2dproc,
31983			createprogram: dummy_pfnglcreateprogramproc,
31984			createshader: dummy_pfnglcreateshaderproc,
31985			cullface: dummy_pfnglcullfaceproc,
31986			deletebuffers: dummy_pfngldeletebuffersproc,
31987			deleteframebuffers: dummy_pfngldeleteframebuffersproc,
31988			deleteprogram: dummy_pfngldeleteprogramproc,
31989			deleterenderbuffers: dummy_pfngldeleterenderbuffersproc,
31990			deleteshader: dummy_pfngldeleteshaderproc,
31991			deletetextures: dummy_pfngldeletetexturesproc,
31992			depthfunc: dummy_pfngldepthfuncproc,
31993			depthmask: dummy_pfngldepthmaskproc,
31994			depthrangef: dummy_pfngldepthrangefproc,
31995			detachshader: dummy_pfngldetachshaderproc,
31996			disable: dummy_pfngldisableproc,
31997			disablevertexattribarray: dummy_pfngldisablevertexattribarrayproc,
31998			drawarrays: dummy_pfngldrawarraysproc,
31999			drawelements: dummy_pfngldrawelementsproc,
32000			enable: dummy_pfnglenableproc,
32001			enablevertexattribarray: dummy_pfnglenablevertexattribarrayproc,
32002			finish: dummy_pfnglfinishproc,
32003			flush: dummy_pfnglflushproc,
32004			framebufferrenderbuffer: dummy_pfnglframebufferrenderbufferproc,
32005			framebuffertexture2d: dummy_pfnglframebuffertexture2dproc,
32006			frontface: dummy_pfnglfrontfaceproc,
32007			genbuffers: dummy_pfnglgenbuffersproc,
32008			generatemipmap: dummy_pfnglgeneratemipmapproc,
32009			genframebuffers: dummy_pfnglgenframebuffersproc,
32010			genrenderbuffers: dummy_pfnglgenrenderbuffersproc,
32011			gentextures: dummy_pfnglgentexturesproc,
32012			getactiveattrib: dummy_pfnglgetactiveattribproc,
32013			getactiveuniform: dummy_pfnglgetactiveuniformproc,
32014			getattachedshaders: dummy_pfnglgetattachedshadersproc,
32015			getattriblocation: dummy_pfnglgetattriblocationproc,
32016			getbooleanv: dummy_pfnglgetbooleanvproc,
32017			getbufferparameteriv: dummy_pfnglgetbufferparameterivproc,
32018			geterror: dummy_pfnglgeterrorproc,
32019			getfloatv: dummy_pfnglgetfloatvproc,
32020			getframebufferattachmentparameteriv: dummy_pfnglgetframebufferattachmentparameterivproc,
32021			getintegerv: dummy_pfnglgetintegervproc,
32022			getprogramiv: dummy_pfnglgetprogramivproc,
32023			getprograminfolog: dummy_pfnglgetprograminfologproc,
32024			getrenderbufferparameteriv: dummy_pfnglgetrenderbufferparameterivproc,
32025			getshaderiv: dummy_pfnglgetshaderivproc,
32026			getshaderinfolog: dummy_pfnglgetshaderinfologproc,
32027			getshaderprecisionformat: dummy_pfnglgetshaderprecisionformatproc,
32028			getshadersource: dummy_pfnglgetshadersourceproc,
32029			getstring: dummy_pfnglgetstringproc,
32030			gettexparameterfv: dummy_pfnglgettexparameterfvproc,
32031			gettexparameteriv: dummy_pfnglgettexparameterivproc,
32032			getuniformfv: dummy_pfnglgetuniformfvproc,
32033			getuniformiv: dummy_pfnglgetuniformivproc,
32034			getuniformlocation: dummy_pfnglgetuniformlocationproc,
32035			getvertexattribfv: dummy_pfnglgetvertexattribfvproc,
32036			getvertexattribiv: dummy_pfnglgetvertexattribivproc,
32037			getvertexattribpointerv: dummy_pfnglgetvertexattribpointervproc,
32038			hint: dummy_pfnglhintproc,
32039			isbuffer: dummy_pfnglisbufferproc,
32040			isenabled: dummy_pfnglisenabledproc,
32041			isframebuffer: dummy_pfnglisframebufferproc,
32042			isprogram: dummy_pfnglisprogramproc,
32043			isrenderbuffer: dummy_pfnglisrenderbufferproc,
32044			isshader: dummy_pfnglisshaderproc,
32045			istexture: dummy_pfnglistextureproc,
32046			linewidth: dummy_pfngllinewidthproc,
32047			linkprogram: dummy_pfngllinkprogramproc,
32048			pixelstorei: dummy_pfnglpixelstoreiproc,
32049			polygonoffset: dummy_pfnglpolygonoffsetproc,
32050			readpixels: dummy_pfnglreadpixelsproc,
32051			releaseshadercompiler: dummy_pfnglreleaseshadercompilerproc,
32052			renderbufferstorage: dummy_pfnglrenderbufferstorageproc,
32053			samplecoverage: dummy_pfnglsamplecoverageproc,
32054			scissor: dummy_pfnglscissorproc,
32055			shaderbinary: dummy_pfnglshaderbinaryproc,
32056			shadersource: dummy_pfnglshadersourceproc,
32057			stencilfunc: dummy_pfnglstencilfuncproc,
32058			stencilfuncseparate: dummy_pfnglstencilfuncseparateproc,
32059			stencilmask: dummy_pfnglstencilmaskproc,
32060			stencilmaskseparate: dummy_pfnglstencilmaskseparateproc,
32061			stencilop: dummy_pfnglstencilopproc,
32062			stencilopseparate: dummy_pfnglstencilopseparateproc,
32063			teximage2d: dummy_pfnglteximage2dproc,
32064			texparameterf: dummy_pfngltexparameterfproc,
32065			texparameterfv: dummy_pfngltexparameterfvproc,
32066			texparameteri: dummy_pfngltexparameteriproc,
32067			texparameteriv: dummy_pfngltexparameterivproc,
32068			texsubimage2d: dummy_pfngltexsubimage2dproc,
32069			uniform1f: dummy_pfngluniform1fproc,
32070			uniform1fv: dummy_pfngluniform1fvproc,
32071			uniform1i: dummy_pfngluniform1iproc,
32072			uniform1iv: dummy_pfngluniform1ivproc,
32073			uniform2f: dummy_pfngluniform2fproc,
32074			uniform2fv: dummy_pfngluniform2fvproc,
32075			uniform2i: dummy_pfngluniform2iproc,
32076			uniform2iv: dummy_pfngluniform2ivproc,
32077			uniform3f: dummy_pfngluniform3fproc,
32078			uniform3fv: dummy_pfngluniform3fvproc,
32079			uniform3i: dummy_pfngluniform3iproc,
32080			uniform3iv: dummy_pfngluniform3ivproc,
32081			uniform4f: dummy_pfngluniform4fproc,
32082			uniform4fv: dummy_pfngluniform4fvproc,
32083			uniform4i: dummy_pfngluniform4iproc,
32084			uniform4iv: dummy_pfngluniform4ivproc,
32085			uniformmatrix2fv: dummy_pfngluniformmatrix2fvproc,
32086			uniformmatrix3fv: dummy_pfngluniformmatrix3fvproc,
32087			uniformmatrix4fv: dummy_pfngluniformmatrix4fvproc,
32088			useprogram: dummy_pfngluseprogramproc,
32089			validateprogram: dummy_pfnglvalidateprogramproc,
32090			vertexattrib1f: dummy_pfnglvertexattrib1fproc,
32091			vertexattrib1fv: dummy_pfnglvertexattrib1fvproc,
32092			vertexattrib2f: dummy_pfnglvertexattrib2fproc,
32093			vertexattrib2fv: dummy_pfnglvertexattrib2fvproc,
32094			vertexattrib3f: dummy_pfnglvertexattrib3fproc,
32095			vertexattrib3fv: dummy_pfnglvertexattrib3fvproc,
32096			vertexattrib4f: dummy_pfnglvertexattrib4fproc,
32097			vertexattrib4fv: dummy_pfnglvertexattrib4fvproc,
32098			vertexattribpointer: dummy_pfnglvertexattribpointerproc,
32099			viewport: dummy_pfnglviewportproc,
32100		}
32101	}
32102}
32103impl Debug for EsVersion20 {
32104	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
32105		if self.available {
32106			f.debug_struct("EsVersion20")
32107			.field("available", &self.available)
32108			.field("activetexture", unsafe{if transmute::<_, *const c_void>(self.activetexture) == (dummy_pfnglactivetextureproc as *const c_void) {&null::<PFNGLACTIVETEXTUREPROC>()} else {&self.activetexture}})
32109			.field("attachshader", unsafe{if transmute::<_, *const c_void>(self.attachshader) == (dummy_pfnglattachshaderproc as *const c_void) {&null::<PFNGLATTACHSHADERPROC>()} else {&self.attachshader}})
32110			.field("bindattriblocation", unsafe{if transmute::<_, *const c_void>(self.bindattriblocation) == (dummy_pfnglbindattriblocationproc as *const c_void) {&null::<PFNGLBINDATTRIBLOCATIONPROC>()} else {&self.bindattriblocation}})
32111			.field("bindbuffer", unsafe{if transmute::<_, *const c_void>(self.bindbuffer) == (dummy_pfnglbindbufferproc as *const c_void) {&null::<PFNGLBINDBUFFERPROC>()} else {&self.bindbuffer}})
32112			.field("bindframebuffer", unsafe{if transmute::<_, *const c_void>(self.bindframebuffer) == (dummy_pfnglbindframebufferproc as *const c_void) {&null::<PFNGLBINDFRAMEBUFFERPROC>()} else {&self.bindframebuffer}})
32113			.field("bindrenderbuffer", unsafe{if transmute::<_, *const c_void>(self.bindrenderbuffer) == (dummy_pfnglbindrenderbufferproc as *const c_void) {&null::<PFNGLBINDRENDERBUFFERPROC>()} else {&self.bindrenderbuffer}})
32114			.field("bindtexture", unsafe{if transmute::<_, *const c_void>(self.bindtexture) == (dummy_pfnglbindtextureproc as *const c_void) {&null::<PFNGLBINDTEXTUREPROC>()} else {&self.bindtexture}})
32115			.field("blendcolor", unsafe{if transmute::<_, *const c_void>(self.blendcolor) == (dummy_pfnglblendcolorproc as *const c_void) {&null::<PFNGLBLENDCOLORPROC>()} else {&self.blendcolor}})
32116			.field("blendequation", unsafe{if transmute::<_, *const c_void>(self.blendequation) == (dummy_pfnglblendequationproc as *const c_void) {&null::<PFNGLBLENDEQUATIONPROC>()} else {&self.blendequation}})
32117			.field("blendequationseparate", unsafe{if transmute::<_, *const c_void>(self.blendequationseparate) == (dummy_pfnglblendequationseparateproc as *const c_void) {&null::<PFNGLBLENDEQUATIONSEPARATEPROC>()} else {&self.blendequationseparate}})
32118			.field("blendfunc", unsafe{if transmute::<_, *const c_void>(self.blendfunc) == (dummy_pfnglblendfuncproc as *const c_void) {&null::<PFNGLBLENDFUNCPROC>()} else {&self.blendfunc}})
32119			.field("blendfuncseparate", unsafe{if transmute::<_, *const c_void>(self.blendfuncseparate) == (dummy_pfnglblendfuncseparateproc as *const c_void) {&null::<PFNGLBLENDFUNCSEPARATEPROC>()} else {&self.blendfuncseparate}})
32120			.field("bufferdata", unsafe{if transmute::<_, *const c_void>(self.bufferdata) == (dummy_pfnglbufferdataproc as *const c_void) {&null::<PFNGLBUFFERDATAPROC>()} else {&self.bufferdata}})
32121			.field("buffersubdata", unsafe{if transmute::<_, *const c_void>(self.buffersubdata) == (dummy_pfnglbuffersubdataproc as *const c_void) {&null::<PFNGLBUFFERSUBDATAPROC>()} else {&self.buffersubdata}})
32122			.field("checkframebufferstatus", unsafe{if transmute::<_, *const c_void>(self.checkframebufferstatus) == (dummy_pfnglcheckframebufferstatusproc as *const c_void) {&null::<PFNGLCHECKFRAMEBUFFERSTATUSPROC>()} else {&self.checkframebufferstatus}})
32123			.field("clear", unsafe{if transmute::<_, *const c_void>(self.clear) == (dummy_pfnglclearproc as *const c_void) {&null::<PFNGLCLEARPROC>()} else {&self.clear}})
32124			.field("clearcolor", unsafe{if transmute::<_, *const c_void>(self.clearcolor) == (dummy_pfnglclearcolorproc as *const c_void) {&null::<PFNGLCLEARCOLORPROC>()} else {&self.clearcolor}})
32125			.field("cleardepthf", unsafe{if transmute::<_, *const c_void>(self.cleardepthf) == (dummy_pfnglcleardepthfproc as *const c_void) {&null::<PFNGLCLEARDEPTHFPROC>()} else {&self.cleardepthf}})
32126			.field("clearstencil", unsafe{if transmute::<_, *const c_void>(self.clearstencil) == (dummy_pfnglclearstencilproc as *const c_void) {&null::<PFNGLCLEARSTENCILPROC>()} else {&self.clearstencil}})
32127			.field("colormask", unsafe{if transmute::<_, *const c_void>(self.colormask) == (dummy_pfnglcolormaskproc as *const c_void) {&null::<PFNGLCOLORMASKPROC>()} else {&self.colormask}})
32128			.field("compileshader", unsafe{if transmute::<_, *const c_void>(self.compileshader) == (dummy_pfnglcompileshaderproc as *const c_void) {&null::<PFNGLCOMPILESHADERPROC>()} else {&self.compileshader}})
32129			.field("compressedteximage2d", unsafe{if transmute::<_, *const c_void>(self.compressedteximage2d) == (dummy_pfnglcompressedteximage2dproc as *const c_void) {&null::<PFNGLCOMPRESSEDTEXIMAGE2DPROC>()} else {&self.compressedteximage2d}})
32130			.field("compressedtexsubimage2d", unsafe{if transmute::<_, *const c_void>(self.compressedtexsubimage2d) == (dummy_pfnglcompressedtexsubimage2dproc as *const c_void) {&null::<PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC>()} else {&self.compressedtexsubimage2d}})
32131			.field("copyteximage2d", unsafe{if transmute::<_, *const c_void>(self.copyteximage2d) == (dummy_pfnglcopyteximage2dproc as *const c_void) {&null::<PFNGLCOPYTEXIMAGE2DPROC>()} else {&self.copyteximage2d}})
32132			.field("copytexsubimage2d", unsafe{if transmute::<_, *const c_void>(self.copytexsubimage2d) == (dummy_pfnglcopytexsubimage2dproc as *const c_void) {&null::<PFNGLCOPYTEXSUBIMAGE2DPROC>()} else {&self.copytexsubimage2d}})
32133			.field("createprogram", unsafe{if transmute::<_, *const c_void>(self.createprogram) == (dummy_pfnglcreateprogramproc as *const c_void) {&null::<PFNGLCREATEPROGRAMPROC>()} else {&self.createprogram}})
32134			.field("createshader", unsafe{if transmute::<_, *const c_void>(self.createshader) == (dummy_pfnglcreateshaderproc as *const c_void) {&null::<PFNGLCREATESHADERPROC>()} else {&self.createshader}})
32135			.field("cullface", unsafe{if transmute::<_, *const c_void>(self.cullface) == (dummy_pfnglcullfaceproc as *const c_void) {&null::<PFNGLCULLFACEPROC>()} else {&self.cullface}})
32136			.field("deletebuffers", unsafe{if transmute::<_, *const c_void>(self.deletebuffers) == (dummy_pfngldeletebuffersproc as *const c_void) {&null::<PFNGLDELETEBUFFERSPROC>()} else {&self.deletebuffers}})
32137			.field("deleteframebuffers", unsafe{if transmute::<_, *const c_void>(self.deleteframebuffers) == (dummy_pfngldeleteframebuffersproc as *const c_void) {&null::<PFNGLDELETEFRAMEBUFFERSPROC>()} else {&self.deleteframebuffers}})
32138			.field("deleteprogram", unsafe{if transmute::<_, *const c_void>(self.deleteprogram) == (dummy_pfngldeleteprogramproc as *const c_void) {&null::<PFNGLDELETEPROGRAMPROC>()} else {&self.deleteprogram}})
32139			.field("deleterenderbuffers", unsafe{if transmute::<_, *const c_void>(self.deleterenderbuffers) == (dummy_pfngldeleterenderbuffersproc as *const c_void) {&null::<PFNGLDELETERENDERBUFFERSPROC>()} else {&self.deleterenderbuffers}})
32140			.field("deleteshader", unsafe{if transmute::<_, *const c_void>(self.deleteshader) == (dummy_pfngldeleteshaderproc as *const c_void) {&null::<PFNGLDELETESHADERPROC>()} else {&self.deleteshader}})
32141			.field("deletetextures", unsafe{if transmute::<_, *const c_void>(self.deletetextures) == (dummy_pfngldeletetexturesproc as *const c_void) {&null::<PFNGLDELETETEXTURESPROC>()} else {&self.deletetextures}})
32142			.field("depthfunc", unsafe{if transmute::<_, *const c_void>(self.depthfunc) == (dummy_pfngldepthfuncproc as *const c_void) {&null::<PFNGLDEPTHFUNCPROC>()} else {&self.depthfunc}})
32143			.field("depthmask", unsafe{if transmute::<_, *const c_void>(self.depthmask) == (dummy_pfngldepthmaskproc as *const c_void) {&null::<PFNGLDEPTHMASKPROC>()} else {&self.depthmask}})
32144			.field("depthrangef", unsafe{if transmute::<_, *const c_void>(self.depthrangef) == (dummy_pfngldepthrangefproc as *const c_void) {&null::<PFNGLDEPTHRANGEFPROC>()} else {&self.depthrangef}})
32145			.field("detachshader", unsafe{if transmute::<_, *const c_void>(self.detachshader) == (dummy_pfngldetachshaderproc as *const c_void) {&null::<PFNGLDETACHSHADERPROC>()} else {&self.detachshader}})
32146			.field("disable", unsafe{if transmute::<_, *const c_void>(self.disable) == (dummy_pfngldisableproc as *const c_void) {&null::<PFNGLDISABLEPROC>()} else {&self.disable}})
32147			.field("disablevertexattribarray", unsafe{if transmute::<_, *const c_void>(self.disablevertexattribarray) == (dummy_pfngldisablevertexattribarrayproc as *const c_void) {&null::<PFNGLDISABLEVERTEXATTRIBARRAYPROC>()} else {&self.disablevertexattribarray}})
32148			.field("drawarrays", unsafe{if transmute::<_, *const c_void>(self.drawarrays) == (dummy_pfngldrawarraysproc as *const c_void) {&null::<PFNGLDRAWARRAYSPROC>()} else {&self.drawarrays}})
32149			.field("drawelements", unsafe{if transmute::<_, *const c_void>(self.drawelements) == (dummy_pfngldrawelementsproc as *const c_void) {&null::<PFNGLDRAWELEMENTSPROC>()} else {&self.drawelements}})
32150			.field("enable", unsafe{if transmute::<_, *const c_void>(self.enable) == (dummy_pfnglenableproc as *const c_void) {&null::<PFNGLENABLEPROC>()} else {&self.enable}})
32151			.field("enablevertexattribarray", unsafe{if transmute::<_, *const c_void>(self.enablevertexattribarray) == (dummy_pfnglenablevertexattribarrayproc as *const c_void) {&null::<PFNGLENABLEVERTEXATTRIBARRAYPROC>()} else {&self.enablevertexattribarray}})
32152			.field("finish", unsafe{if transmute::<_, *const c_void>(self.finish) == (dummy_pfnglfinishproc as *const c_void) {&null::<PFNGLFINISHPROC>()} else {&self.finish}})
32153			.field("flush", unsafe{if transmute::<_, *const c_void>(self.flush) == (dummy_pfnglflushproc as *const c_void) {&null::<PFNGLFLUSHPROC>()} else {&self.flush}})
32154			.field("framebufferrenderbuffer", unsafe{if transmute::<_, *const c_void>(self.framebufferrenderbuffer) == (dummy_pfnglframebufferrenderbufferproc as *const c_void) {&null::<PFNGLFRAMEBUFFERRENDERBUFFERPROC>()} else {&self.framebufferrenderbuffer}})
32155			.field("framebuffertexture2d", unsafe{if transmute::<_, *const c_void>(self.framebuffertexture2d) == (dummy_pfnglframebuffertexture2dproc as *const c_void) {&null::<PFNGLFRAMEBUFFERTEXTURE2DPROC>()} else {&self.framebuffertexture2d}})
32156			.field("frontface", unsafe{if transmute::<_, *const c_void>(self.frontface) == (dummy_pfnglfrontfaceproc as *const c_void) {&null::<PFNGLFRONTFACEPROC>()} else {&self.frontface}})
32157			.field("genbuffers", unsafe{if transmute::<_, *const c_void>(self.genbuffers) == (dummy_pfnglgenbuffersproc as *const c_void) {&null::<PFNGLGENBUFFERSPROC>()} else {&self.genbuffers}})
32158			.field("generatemipmap", unsafe{if transmute::<_, *const c_void>(self.generatemipmap) == (dummy_pfnglgeneratemipmapproc as *const c_void) {&null::<PFNGLGENERATEMIPMAPPROC>()} else {&self.generatemipmap}})
32159			.field("genframebuffers", unsafe{if transmute::<_, *const c_void>(self.genframebuffers) == (dummy_pfnglgenframebuffersproc as *const c_void) {&null::<PFNGLGENFRAMEBUFFERSPROC>()} else {&self.genframebuffers}})
32160			.field("genrenderbuffers", unsafe{if transmute::<_, *const c_void>(self.genrenderbuffers) == (dummy_pfnglgenrenderbuffersproc as *const c_void) {&null::<PFNGLGENRENDERBUFFERSPROC>()} else {&self.genrenderbuffers}})
32161			.field("gentextures", unsafe{if transmute::<_, *const c_void>(self.gentextures) == (dummy_pfnglgentexturesproc as *const c_void) {&null::<PFNGLGENTEXTURESPROC>()} else {&self.gentextures}})
32162			.field("getactiveattrib", unsafe{if transmute::<_, *const c_void>(self.getactiveattrib) == (dummy_pfnglgetactiveattribproc as *const c_void) {&null::<PFNGLGETACTIVEATTRIBPROC>()} else {&self.getactiveattrib}})
32163			.field("getactiveuniform", unsafe{if transmute::<_, *const c_void>(self.getactiveuniform) == (dummy_pfnglgetactiveuniformproc as *const c_void) {&null::<PFNGLGETACTIVEUNIFORMPROC>()} else {&self.getactiveuniform}})
32164			.field("getattachedshaders", unsafe{if transmute::<_, *const c_void>(self.getattachedshaders) == (dummy_pfnglgetattachedshadersproc as *const c_void) {&null::<PFNGLGETATTACHEDSHADERSPROC>()} else {&self.getattachedshaders}})
32165			.field("getattriblocation", unsafe{if transmute::<_, *const c_void>(self.getattriblocation) == (dummy_pfnglgetattriblocationproc as *const c_void) {&null::<PFNGLGETATTRIBLOCATIONPROC>()} else {&self.getattriblocation}})
32166			.field("getbooleanv", unsafe{if transmute::<_, *const c_void>(self.getbooleanv) == (dummy_pfnglgetbooleanvproc as *const c_void) {&null::<PFNGLGETBOOLEANVPROC>()} else {&self.getbooleanv}})
32167			.field("getbufferparameteriv", unsafe{if transmute::<_, *const c_void>(self.getbufferparameteriv) == (dummy_pfnglgetbufferparameterivproc as *const c_void) {&null::<PFNGLGETBUFFERPARAMETERIVPROC>()} else {&self.getbufferparameteriv}})
32168			.field("geterror", unsafe{if transmute::<_, *const c_void>(self.geterror) == (dummy_pfnglgeterrorproc as *const c_void) {&null::<PFNGLGETERRORPROC>()} else {&self.geterror}})
32169			.field("getfloatv", unsafe{if transmute::<_, *const c_void>(self.getfloatv) == (dummy_pfnglgetfloatvproc as *const c_void) {&null::<PFNGLGETFLOATVPROC>()} else {&self.getfloatv}})
32170			.field("getframebufferattachmentparameteriv", unsafe{if transmute::<_, *const c_void>(self.getframebufferattachmentparameteriv) == (dummy_pfnglgetframebufferattachmentparameterivproc as *const c_void) {&null::<PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC>()} else {&self.getframebufferattachmentparameteriv}})
32171			.field("getintegerv", unsafe{if transmute::<_, *const c_void>(self.getintegerv) == (dummy_pfnglgetintegervproc as *const c_void) {&null::<PFNGLGETINTEGERVPROC>()} else {&self.getintegerv}})
32172			.field("getprogramiv", unsafe{if transmute::<_, *const c_void>(self.getprogramiv) == (dummy_pfnglgetprogramivproc as *const c_void) {&null::<PFNGLGETPROGRAMIVPROC>()} else {&self.getprogramiv}})
32173			.field("getprograminfolog", unsafe{if transmute::<_, *const c_void>(self.getprograminfolog) == (dummy_pfnglgetprograminfologproc as *const c_void) {&null::<PFNGLGETPROGRAMINFOLOGPROC>()} else {&self.getprograminfolog}})
32174			.field("getrenderbufferparameteriv", unsafe{if transmute::<_, *const c_void>(self.getrenderbufferparameteriv) == (dummy_pfnglgetrenderbufferparameterivproc as *const c_void) {&null::<PFNGLGETRENDERBUFFERPARAMETERIVPROC>()} else {&self.getrenderbufferparameteriv}})
32175			.field("getshaderiv", unsafe{if transmute::<_, *const c_void>(self.getshaderiv) == (dummy_pfnglgetshaderivproc as *const c_void) {&null::<PFNGLGETSHADERIVPROC>()} else {&self.getshaderiv}})
32176			.field("getshaderinfolog", unsafe{if transmute::<_, *const c_void>(self.getshaderinfolog) == (dummy_pfnglgetshaderinfologproc as *const c_void) {&null::<PFNGLGETSHADERINFOLOGPROC>()} else {&self.getshaderinfolog}})
32177			.field("getshaderprecisionformat", unsafe{if transmute::<_, *const c_void>(self.getshaderprecisionformat) == (dummy_pfnglgetshaderprecisionformatproc as *const c_void) {&null::<PFNGLGETSHADERPRECISIONFORMATPROC>()} else {&self.getshaderprecisionformat}})
32178			.field("getshadersource", unsafe{if transmute::<_, *const c_void>(self.getshadersource) == (dummy_pfnglgetshadersourceproc as *const c_void) {&null::<PFNGLGETSHADERSOURCEPROC>()} else {&self.getshadersource}})
32179			.field("getstring", unsafe{if transmute::<_, *const c_void>(self.getstring) == (dummy_pfnglgetstringproc as *const c_void) {&null::<PFNGLGETSTRINGPROC>()} else {&self.getstring}})
32180			.field("gettexparameterfv", unsafe{if transmute::<_, *const c_void>(self.gettexparameterfv) == (dummy_pfnglgettexparameterfvproc as *const c_void) {&null::<PFNGLGETTEXPARAMETERFVPROC>()} else {&self.gettexparameterfv}})
32181			.field("gettexparameteriv", unsafe{if transmute::<_, *const c_void>(self.gettexparameteriv) == (dummy_pfnglgettexparameterivproc as *const c_void) {&null::<PFNGLGETTEXPARAMETERIVPROC>()} else {&self.gettexparameteriv}})
32182			.field("getuniformfv", unsafe{if transmute::<_, *const c_void>(self.getuniformfv) == (dummy_pfnglgetuniformfvproc as *const c_void) {&null::<PFNGLGETUNIFORMFVPROC>()} else {&self.getuniformfv}})
32183			.field("getuniformiv", unsafe{if transmute::<_, *const c_void>(self.getuniformiv) == (dummy_pfnglgetuniformivproc as *const c_void) {&null::<PFNGLGETUNIFORMIVPROC>()} else {&self.getuniformiv}})
32184			.field("getuniformlocation", unsafe{if transmute::<_, *const c_void>(self.getuniformlocation) == (dummy_pfnglgetuniformlocationproc as *const c_void) {&null::<PFNGLGETUNIFORMLOCATIONPROC>()} else {&self.getuniformlocation}})
32185			.field("getvertexattribfv", unsafe{if transmute::<_, *const c_void>(self.getvertexattribfv) == (dummy_pfnglgetvertexattribfvproc as *const c_void) {&null::<PFNGLGETVERTEXATTRIBFVPROC>()} else {&self.getvertexattribfv}})
32186			.field("getvertexattribiv", unsafe{if transmute::<_, *const c_void>(self.getvertexattribiv) == (dummy_pfnglgetvertexattribivproc as *const c_void) {&null::<PFNGLGETVERTEXATTRIBIVPROC>()} else {&self.getvertexattribiv}})
32187			.field("getvertexattribpointerv", unsafe{if transmute::<_, *const c_void>(self.getvertexattribpointerv) == (dummy_pfnglgetvertexattribpointervproc as *const c_void) {&null::<PFNGLGETVERTEXATTRIBPOINTERVPROC>()} else {&self.getvertexattribpointerv}})
32188			.field("hint", unsafe{if transmute::<_, *const c_void>(self.hint) == (dummy_pfnglhintproc as *const c_void) {&null::<PFNGLHINTPROC>()} else {&self.hint}})
32189			.field("isbuffer", unsafe{if transmute::<_, *const c_void>(self.isbuffer) == (dummy_pfnglisbufferproc as *const c_void) {&null::<PFNGLISBUFFERPROC>()} else {&self.isbuffer}})
32190			.field("isenabled", unsafe{if transmute::<_, *const c_void>(self.isenabled) == (dummy_pfnglisenabledproc as *const c_void) {&null::<PFNGLISENABLEDPROC>()} else {&self.isenabled}})
32191			.field("isframebuffer", unsafe{if transmute::<_, *const c_void>(self.isframebuffer) == (dummy_pfnglisframebufferproc as *const c_void) {&null::<PFNGLISFRAMEBUFFERPROC>()} else {&self.isframebuffer}})
32192			.field("isprogram", unsafe{if transmute::<_, *const c_void>(self.isprogram) == (dummy_pfnglisprogramproc as *const c_void) {&null::<PFNGLISPROGRAMPROC>()} else {&self.isprogram}})
32193			.field("isrenderbuffer", unsafe{if transmute::<_, *const c_void>(self.isrenderbuffer) == (dummy_pfnglisrenderbufferproc as *const c_void) {&null::<PFNGLISRENDERBUFFERPROC>()} else {&self.isrenderbuffer}})
32194			.field("isshader", unsafe{if transmute::<_, *const c_void>(self.isshader) == (dummy_pfnglisshaderproc as *const c_void) {&null::<PFNGLISSHADERPROC>()} else {&self.isshader}})
32195			.field("istexture", unsafe{if transmute::<_, *const c_void>(self.istexture) == (dummy_pfnglistextureproc as *const c_void) {&null::<PFNGLISTEXTUREPROC>()} else {&self.istexture}})
32196			.field("linewidth", unsafe{if transmute::<_, *const c_void>(self.linewidth) == (dummy_pfngllinewidthproc as *const c_void) {&null::<PFNGLLINEWIDTHPROC>()} else {&self.linewidth}})
32197			.field("linkprogram", unsafe{if transmute::<_, *const c_void>(self.linkprogram) == (dummy_pfngllinkprogramproc as *const c_void) {&null::<PFNGLLINKPROGRAMPROC>()} else {&self.linkprogram}})
32198			.field("pixelstorei", unsafe{if transmute::<_, *const c_void>(self.pixelstorei) == (dummy_pfnglpixelstoreiproc as *const c_void) {&null::<PFNGLPIXELSTOREIPROC>()} else {&self.pixelstorei}})
32199			.field("polygonoffset", unsafe{if transmute::<_, *const c_void>(self.polygonoffset) == (dummy_pfnglpolygonoffsetproc as *const c_void) {&null::<PFNGLPOLYGONOFFSETPROC>()} else {&self.polygonoffset}})
32200			.field("readpixels", unsafe{if transmute::<_, *const c_void>(self.readpixels) == (dummy_pfnglreadpixelsproc as *const c_void) {&null::<PFNGLREADPIXELSPROC>()} else {&self.readpixels}})
32201			.field("releaseshadercompiler", unsafe{if transmute::<_, *const c_void>(self.releaseshadercompiler) == (dummy_pfnglreleaseshadercompilerproc as *const c_void) {&null::<PFNGLRELEASESHADERCOMPILERPROC>()} else {&self.releaseshadercompiler}})
32202			.field("renderbufferstorage", unsafe{if transmute::<_, *const c_void>(self.renderbufferstorage) == (dummy_pfnglrenderbufferstorageproc as *const c_void) {&null::<PFNGLRENDERBUFFERSTORAGEPROC>()} else {&self.renderbufferstorage}})
32203			.field("samplecoverage", unsafe{if transmute::<_, *const c_void>(self.samplecoverage) == (dummy_pfnglsamplecoverageproc as *const c_void) {&null::<PFNGLSAMPLECOVERAGEPROC>()} else {&self.samplecoverage}})
32204			.field("scissor", unsafe{if transmute::<_, *const c_void>(self.scissor) == (dummy_pfnglscissorproc as *const c_void) {&null::<PFNGLSCISSORPROC>()} else {&self.scissor}})
32205			.field("shaderbinary", unsafe{if transmute::<_, *const c_void>(self.shaderbinary) == (dummy_pfnglshaderbinaryproc as *const c_void) {&null::<PFNGLSHADERBINARYPROC>()} else {&self.shaderbinary}})
32206			.field("shadersource", unsafe{if transmute::<_, *const c_void>(self.shadersource) == (dummy_pfnglshadersourceproc as *const c_void) {&null::<PFNGLSHADERSOURCEPROC>()} else {&self.shadersource}})
32207			.field("stencilfunc", unsafe{if transmute::<_, *const c_void>(self.stencilfunc) == (dummy_pfnglstencilfuncproc as *const c_void) {&null::<PFNGLSTENCILFUNCPROC>()} else {&self.stencilfunc}})
32208			.field("stencilfuncseparate", unsafe{if transmute::<_, *const c_void>(self.stencilfuncseparate) == (dummy_pfnglstencilfuncseparateproc as *const c_void) {&null::<PFNGLSTENCILFUNCSEPARATEPROC>()} else {&self.stencilfuncseparate}})
32209			.field("stencilmask", unsafe{if transmute::<_, *const c_void>(self.stencilmask) == (dummy_pfnglstencilmaskproc as *const c_void) {&null::<PFNGLSTENCILMASKPROC>()} else {&self.stencilmask}})
32210			.field("stencilmaskseparate", unsafe{if transmute::<_, *const c_void>(self.stencilmaskseparate) == (dummy_pfnglstencilmaskseparateproc as *const c_void) {&null::<PFNGLSTENCILMASKSEPARATEPROC>()} else {&self.stencilmaskseparate}})
32211			.field("stencilop", unsafe{if transmute::<_, *const c_void>(self.stencilop) == (dummy_pfnglstencilopproc as *const c_void) {&null::<PFNGLSTENCILOPPROC>()} else {&self.stencilop}})
32212			.field("stencilopseparate", unsafe{if transmute::<_, *const c_void>(self.stencilopseparate) == (dummy_pfnglstencilopseparateproc as *const c_void) {&null::<PFNGLSTENCILOPSEPARATEPROC>()} else {&self.stencilopseparate}})
32213			.field("teximage2d", unsafe{if transmute::<_, *const c_void>(self.teximage2d) == (dummy_pfnglteximage2dproc as *const c_void) {&null::<PFNGLTEXIMAGE2DPROC>()} else {&self.teximage2d}})
32214			.field("texparameterf", unsafe{if transmute::<_, *const c_void>(self.texparameterf) == (dummy_pfngltexparameterfproc as *const c_void) {&null::<PFNGLTEXPARAMETERFPROC>()} else {&self.texparameterf}})
32215			.field("texparameterfv", unsafe{if transmute::<_, *const c_void>(self.texparameterfv) == (dummy_pfngltexparameterfvproc as *const c_void) {&null::<PFNGLTEXPARAMETERFVPROC>()} else {&self.texparameterfv}})
32216			.field("texparameteri", unsafe{if transmute::<_, *const c_void>(self.texparameteri) == (dummy_pfngltexparameteriproc as *const c_void) {&null::<PFNGLTEXPARAMETERIPROC>()} else {&self.texparameteri}})
32217			.field("texparameteriv", unsafe{if transmute::<_, *const c_void>(self.texparameteriv) == (dummy_pfngltexparameterivproc as *const c_void) {&null::<PFNGLTEXPARAMETERIVPROC>()} else {&self.texparameteriv}})
32218			.field("texsubimage2d", unsafe{if transmute::<_, *const c_void>(self.texsubimage2d) == (dummy_pfngltexsubimage2dproc as *const c_void) {&null::<PFNGLTEXSUBIMAGE2DPROC>()} else {&self.texsubimage2d}})
32219			.field("uniform1f", unsafe{if transmute::<_, *const c_void>(self.uniform1f) == (dummy_pfngluniform1fproc as *const c_void) {&null::<PFNGLUNIFORM1FPROC>()} else {&self.uniform1f}})
32220			.field("uniform1fv", unsafe{if transmute::<_, *const c_void>(self.uniform1fv) == (dummy_pfngluniform1fvproc as *const c_void) {&null::<PFNGLUNIFORM1FVPROC>()} else {&self.uniform1fv}})
32221			.field("uniform1i", unsafe{if transmute::<_, *const c_void>(self.uniform1i) == (dummy_pfngluniform1iproc as *const c_void) {&null::<PFNGLUNIFORM1IPROC>()} else {&self.uniform1i}})
32222			.field("uniform1iv", unsafe{if transmute::<_, *const c_void>(self.uniform1iv) == (dummy_pfngluniform1ivproc as *const c_void) {&null::<PFNGLUNIFORM1IVPROC>()} else {&self.uniform1iv}})
32223			.field("uniform2f", unsafe{if transmute::<_, *const c_void>(self.uniform2f) == (dummy_pfngluniform2fproc as *const c_void) {&null::<PFNGLUNIFORM2FPROC>()} else {&self.uniform2f}})
32224			.field("uniform2fv", unsafe{if transmute::<_, *const c_void>(self.uniform2fv) == (dummy_pfngluniform2fvproc as *const c_void) {&null::<PFNGLUNIFORM2FVPROC>()} else {&self.uniform2fv}})
32225			.field("uniform2i", unsafe{if transmute::<_, *const c_void>(self.uniform2i) == (dummy_pfngluniform2iproc as *const c_void) {&null::<PFNGLUNIFORM2IPROC>()} else {&self.uniform2i}})
32226			.field("uniform2iv", unsafe{if transmute::<_, *const c_void>(self.uniform2iv) == (dummy_pfngluniform2ivproc as *const c_void) {&null::<PFNGLUNIFORM2IVPROC>()} else {&self.uniform2iv}})
32227			.field("uniform3f", unsafe{if transmute::<_, *const c_void>(self.uniform3f) == (dummy_pfngluniform3fproc as *const c_void) {&null::<PFNGLUNIFORM3FPROC>()} else {&self.uniform3f}})
32228			.field("uniform3fv", unsafe{if transmute::<_, *const c_void>(self.uniform3fv) == (dummy_pfngluniform3fvproc as *const c_void) {&null::<PFNGLUNIFORM3FVPROC>()} else {&self.uniform3fv}})
32229			.field("uniform3i", unsafe{if transmute::<_, *const c_void>(self.uniform3i) == (dummy_pfngluniform3iproc as *const c_void) {&null::<PFNGLUNIFORM3IPROC>()} else {&self.uniform3i}})
32230			.field("uniform3iv", unsafe{if transmute::<_, *const c_void>(self.uniform3iv) == (dummy_pfngluniform3ivproc as *const c_void) {&null::<PFNGLUNIFORM3IVPROC>()} else {&self.uniform3iv}})
32231			.field("uniform4f", unsafe{if transmute::<_, *const c_void>(self.uniform4f) == (dummy_pfngluniform4fproc as *const c_void) {&null::<PFNGLUNIFORM4FPROC>()} else {&self.uniform4f}})
32232			.field("uniform4fv", unsafe{if transmute::<_, *const c_void>(self.uniform4fv) == (dummy_pfngluniform4fvproc as *const c_void) {&null::<PFNGLUNIFORM4FVPROC>()} else {&self.uniform4fv}})
32233			.field("uniform4i", unsafe{if transmute::<_, *const c_void>(self.uniform4i) == (dummy_pfngluniform4iproc as *const c_void) {&null::<PFNGLUNIFORM4IPROC>()} else {&self.uniform4i}})
32234			.field("uniform4iv", unsafe{if transmute::<_, *const c_void>(self.uniform4iv) == (dummy_pfngluniform4ivproc as *const c_void) {&null::<PFNGLUNIFORM4IVPROC>()} else {&self.uniform4iv}})
32235			.field("uniformmatrix2fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix2fv) == (dummy_pfngluniformmatrix2fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX2FVPROC>()} else {&self.uniformmatrix2fv}})
32236			.field("uniformmatrix3fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix3fv) == (dummy_pfngluniformmatrix3fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX3FVPROC>()} else {&self.uniformmatrix3fv}})
32237			.field("uniformmatrix4fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix4fv) == (dummy_pfngluniformmatrix4fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX4FVPROC>()} else {&self.uniformmatrix4fv}})
32238			.field("useprogram", unsafe{if transmute::<_, *const c_void>(self.useprogram) == (dummy_pfngluseprogramproc as *const c_void) {&null::<PFNGLUSEPROGRAMPROC>()} else {&self.useprogram}})
32239			.field("validateprogram", unsafe{if transmute::<_, *const c_void>(self.validateprogram) == (dummy_pfnglvalidateprogramproc as *const c_void) {&null::<PFNGLVALIDATEPROGRAMPROC>()} else {&self.validateprogram}})
32240			.field("vertexattrib1f", unsafe{if transmute::<_, *const c_void>(self.vertexattrib1f) == (dummy_pfnglvertexattrib1fproc as *const c_void) {&null::<PFNGLVERTEXATTRIB1FPROC>()} else {&self.vertexattrib1f}})
32241			.field("vertexattrib1fv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib1fv) == (dummy_pfnglvertexattrib1fvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB1FVPROC>()} else {&self.vertexattrib1fv}})
32242			.field("vertexattrib2f", unsafe{if transmute::<_, *const c_void>(self.vertexattrib2f) == (dummy_pfnglvertexattrib2fproc as *const c_void) {&null::<PFNGLVERTEXATTRIB2FPROC>()} else {&self.vertexattrib2f}})
32243			.field("vertexattrib2fv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib2fv) == (dummy_pfnglvertexattrib2fvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB2FVPROC>()} else {&self.vertexattrib2fv}})
32244			.field("vertexattrib3f", unsafe{if transmute::<_, *const c_void>(self.vertexattrib3f) == (dummy_pfnglvertexattrib3fproc as *const c_void) {&null::<PFNGLVERTEXATTRIB3FPROC>()} else {&self.vertexattrib3f}})
32245			.field("vertexattrib3fv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib3fv) == (dummy_pfnglvertexattrib3fvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB3FVPROC>()} else {&self.vertexattrib3fv}})
32246			.field("vertexattrib4f", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4f) == (dummy_pfnglvertexattrib4fproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4FPROC>()} else {&self.vertexattrib4f}})
32247			.field("vertexattrib4fv", unsafe{if transmute::<_, *const c_void>(self.vertexattrib4fv) == (dummy_pfnglvertexattrib4fvproc as *const c_void) {&null::<PFNGLVERTEXATTRIB4FVPROC>()} else {&self.vertexattrib4fv}})
32248			.field("vertexattribpointer", unsafe{if transmute::<_, *const c_void>(self.vertexattribpointer) == (dummy_pfnglvertexattribpointerproc as *const c_void) {&null::<PFNGLVERTEXATTRIBPOINTERPROC>()} else {&self.vertexattribpointer}})
32249			.field("viewport", unsafe{if transmute::<_, *const c_void>(self.viewport) == (dummy_pfnglviewportproc as *const c_void) {&null::<PFNGLVIEWPORTPROC>()} else {&self.viewport}})
32250			.finish()
32251		} else {
32252			f.debug_struct("EsVersion20")
32253			.field("available", &self.available)
32254			.finish_non_exhaustive()
32255		}
32256	}
32257}
32258
32259
32260/// Functions from OpenGL ES version 3.0
32261pub trait ES_GL_3_0 {
32262	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetError.xhtml>
32263	fn glGetError(&self) -> GLenum;
32264
32265	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glReadBuffer.xhtml>
32266	fn glReadBuffer(&self, src: GLenum) -> Result<()>;
32267
32268	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawRangeElements.xhtml>
32269	fn glDrawRangeElements(&self, mode: GLenum, start: GLuint, end: GLuint, count: GLsizei, type_: GLenum, indices: *const c_void) -> Result<()>;
32270
32271	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexImage3D.xhtml>
32272	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<()>;
32273
32274	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexSubImage3D.xhtml>
32275	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<()>;
32276
32277	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCopyTexSubImage3D.xhtml>
32278	fn glCopyTexSubImage3D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
32279
32280	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCompressedTexImage3D.xhtml>
32281	fn glCompressedTexImage3D(&self, target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, imageSize: GLsizei, data: *const c_void) -> Result<()>;
32282
32283	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCompressedTexSubImage3D.xhtml>
32284	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<()>;
32285
32286	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenQueries.xhtml>
32287	fn glGenQueries(&self, n: GLsizei, ids: *mut GLuint) -> Result<()>;
32288
32289	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteQueries.xhtml>
32290	fn glDeleteQueries(&self, n: GLsizei, ids: *const GLuint) -> Result<()>;
32291
32292	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsQuery.xhtml>
32293	fn glIsQuery(&self, id: GLuint) -> Result<GLboolean>;
32294
32295	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBeginQuery.xhtml>
32296	fn glBeginQuery(&self, target: GLenum, id: GLuint) -> Result<()>;
32297
32298	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glEndQuery.xhtml>
32299	fn glEndQuery(&self, target: GLenum) -> Result<()>;
32300
32301	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetQueryiv.xhtml>
32302	fn glGetQueryiv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
32303
32304	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetQueryObjectuiv.xhtml>
32305	fn glGetQueryObjectuiv(&self, id: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()>;
32306
32307	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUnmapBuffer.xhtml>
32308	fn glUnmapBuffer(&self, target: GLenum) -> Result<GLboolean>;
32309
32310	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetBufferPointerv.xhtml>
32311	fn glGetBufferPointerv(&self, target: GLenum, pname: GLenum, params: *mut *mut c_void) -> Result<()>;
32312
32313	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawBuffers.xhtml>
32314	fn glDrawBuffers(&self, n: GLsizei, bufs: *const GLenum) -> Result<()>;
32315
32316	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix2x3fv.xhtml>
32317	fn glUniformMatrix2x3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
32318
32319	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix3x2fv.xhtml>
32320	fn glUniformMatrix3x2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
32321
32322	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix2x4fv.xhtml>
32323	fn glUniformMatrix2x4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
32324
32325	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix4x2fv.xhtml>
32326	fn glUniformMatrix4x2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
32327
32328	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix3x4fv.xhtml>
32329	fn glUniformMatrix3x4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
32330
32331	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix4x3fv.xhtml>
32332	fn glUniformMatrix4x3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
32333
32334	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlitFramebuffer.xhtml>
32335	fn glBlitFramebuffer(&self, srcX0: GLint, srcY0: GLint, srcX1: GLint, srcY1: GLint, dstX0: GLint, dstY0: GLint, dstX1: GLint, dstY1: GLint, mask: GLbitfield, filter: GLenum) -> Result<()>;
32336
32337	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glRenderbufferStorageMultisample.xhtml>
32338	fn glRenderbufferStorageMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()>;
32339
32340	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFramebufferTextureLayer.xhtml>
32341	fn glFramebufferTextureLayer(&self, target: GLenum, attachment: GLenum, texture: GLuint, level: GLint, layer: GLint) -> Result<()>;
32342
32343	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glMapBufferRange.xhtml>
32344	fn glMapBufferRange(&self, target: GLenum, offset: GLintptr, length: GLsizeiptr, access: GLbitfield) -> Result<*mut c_void>;
32345
32346	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFlushMappedBufferRange.xhtml>
32347	fn glFlushMappedBufferRange(&self, target: GLenum, offset: GLintptr, length: GLsizeiptr) -> Result<()>;
32348
32349	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindVertexArray.xhtml>
32350	fn glBindVertexArray(&self, array: GLuint) -> Result<()>;
32351
32352	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteVertexArrays.xhtml>
32353	fn glDeleteVertexArrays(&self, n: GLsizei, arrays: *const GLuint) -> Result<()>;
32354
32355	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenVertexArrays.xhtml>
32356	fn glGenVertexArrays(&self, n: GLsizei, arrays: *mut GLuint) -> Result<()>;
32357
32358	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsVertexArray.xhtml>
32359	fn glIsVertexArray(&self, array: GLuint) -> Result<GLboolean>;
32360
32361	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetIntegeri_v.xhtml>
32362	fn glGetIntegeri_v(&self, target: GLenum, index: GLuint, data: *mut GLint) -> Result<()>;
32363
32364	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBeginTransformFeedback.xhtml>
32365	fn glBeginTransformFeedback(&self, primitiveMode: GLenum) -> Result<()>;
32366
32367	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glEndTransformFeedback.xhtml>
32368	fn glEndTransformFeedback(&self) -> Result<()>;
32369
32370	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindBufferRange.xhtml>
32371	fn glBindBufferRange(&self, target: GLenum, index: GLuint, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()>;
32372
32373	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindBufferBase.xhtml>
32374	fn glBindBufferBase(&self, target: GLenum, index: GLuint, buffer: GLuint) -> Result<()>;
32375
32376	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTransformFeedbackVaryings.xhtml>
32377	fn glTransformFeedbackVaryings(&self, program: GLuint, count: GLsizei, varyings: *const *const GLchar, bufferMode: GLenum) -> Result<()>;
32378
32379	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetTransformFeedbackVarying.xhtml>
32380	fn glGetTransformFeedbackVarying(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLsizei, type_: *mut GLenum, name: *mut GLchar) -> Result<()>;
32381
32382	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribIPointer.xhtml>
32383	fn glVertexAttribIPointer(&self, index: GLuint, size: GLint, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()>;
32384
32385	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetVertexAttribIiv.xhtml>
32386	fn glGetVertexAttribIiv(&self, index: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
32387
32388	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetVertexAttribIuiv.xhtml>
32389	fn glGetVertexAttribIuiv(&self, index: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()>;
32390
32391	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribI4i.xhtml>
32392	fn glVertexAttribI4i(&self, index: GLuint, x: GLint, y: GLint, z: GLint, w: GLint) -> Result<()>;
32393
32394	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribI4ui.xhtml>
32395	fn glVertexAttribI4ui(&self, index: GLuint, x: GLuint, y: GLuint, z: GLuint, w: GLuint) -> Result<()>;
32396
32397	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribI4iv.xhtml>
32398	fn glVertexAttribI4iv(&self, index: GLuint, v: *const GLint) -> Result<()>;
32399
32400	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribI4uiv.xhtml>
32401	fn glVertexAttribI4uiv(&self, index: GLuint, v: *const GLuint) -> Result<()>;
32402
32403	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetUniformuiv.xhtml>
32404	fn glGetUniformuiv(&self, program: GLuint, location: GLint, params: *mut GLuint) -> Result<()>;
32405
32406	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetFragDataLocation.xhtml>
32407	fn glGetFragDataLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint>;
32408
32409	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform1ui.xhtml>
32410	fn glUniform1ui(&self, location: GLint, v0: GLuint) -> Result<()>;
32411
32412	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform2ui.xhtml>
32413	fn glUniform2ui(&self, location: GLint, v0: GLuint, v1: GLuint) -> Result<()>;
32414
32415	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform3ui.xhtml>
32416	fn glUniform3ui(&self, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint) -> Result<()>;
32417
32418	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform4ui.xhtml>
32419	fn glUniform4ui(&self, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint, v3: GLuint) -> Result<()>;
32420
32421	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform1uiv.xhtml>
32422	fn glUniform1uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
32423
32424	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform2uiv.xhtml>
32425	fn glUniform2uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
32426
32427	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform3uiv.xhtml>
32428	fn glUniform3uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
32429
32430	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform4uiv.xhtml>
32431	fn glUniform4uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
32432
32433	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClearBufferiv.xhtml>
32434	fn glClearBufferiv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLint) -> Result<()>;
32435
32436	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClearBufferuiv.xhtml>
32437	fn glClearBufferuiv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLuint) -> Result<()>;
32438
32439	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClearBufferfv.xhtml>
32440	fn glClearBufferfv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLfloat) -> Result<()>;
32441
32442	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClearBufferfi.xhtml>
32443	fn glClearBufferfi(&self, buffer: GLenum, drawbuffer: GLint, depth: GLfloat, stencil: GLint) -> Result<()>;
32444
32445	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetStringi.xhtml>
32446	fn glGetStringi(&self, name: GLenum, index: GLuint) -> Result<&'static str>;
32447
32448	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCopyBufferSubData.xhtml>
32449	fn glCopyBufferSubData(&self, readTarget: GLenum, writeTarget: GLenum, readOffset: GLintptr, writeOffset: GLintptr, size: GLsizeiptr) -> Result<()>;
32450
32451	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetUniformIndices.xhtml>
32452	fn glGetUniformIndices(&self, program: GLuint, uniformCount: GLsizei, uniformNames: *const *const GLchar, uniformIndices: *mut GLuint) -> Result<()>;
32453
32454	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetActiveUniformsiv.xhtml>
32455	fn glGetActiveUniformsiv(&self, program: GLuint, uniformCount: GLsizei, uniformIndices: *const GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
32456
32457	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetUniformBlockIndex.xhtml>
32458	fn glGetUniformBlockIndex(&self, program: GLuint, uniformBlockName: *const GLchar) -> Result<GLuint>;
32459
32460	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetActiveUniformBlockiv.xhtml>
32461	fn glGetActiveUniformBlockiv(&self, program: GLuint, uniformBlockIndex: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
32462
32463	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetActiveUniformBlockName.xhtml>
32464	fn glGetActiveUniformBlockName(&self, program: GLuint, uniformBlockIndex: GLuint, bufSize: GLsizei, length: *mut GLsizei, uniformBlockName: *mut GLchar) -> Result<()>;
32465
32466	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformBlockBinding.xhtml>
32467	fn glUniformBlockBinding(&self, program: GLuint, uniformBlockIndex: GLuint, uniformBlockBinding: GLuint) -> Result<()>;
32468
32469	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawArraysInstanced.xhtml>
32470	fn glDrawArraysInstanced(&self, mode: GLenum, first: GLint, count: GLsizei, instancecount: GLsizei) -> Result<()>;
32471
32472	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawElementsInstanced.xhtml>
32473	fn glDrawElementsInstanced(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei) -> Result<()>;
32474
32475	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFenceSync.xhtml>
32476	fn glFenceSync(&self, condition: GLenum, flags: GLbitfield) -> Result<GLsync>;
32477
32478	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsSync.xhtml>
32479	fn glIsSync(&self, sync: GLsync) -> Result<GLboolean>;
32480
32481	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteSync.xhtml>
32482	fn glDeleteSync(&self, sync: GLsync) -> Result<()>;
32483
32484	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClientWaitSync.xhtml>
32485	fn glClientWaitSync(&self, sync: GLsync, flags: GLbitfield, timeout: GLuint64) -> Result<GLenum>;
32486
32487	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glWaitSync.xhtml>
32488	fn glWaitSync(&self, sync: GLsync, flags: GLbitfield, timeout: GLuint64) -> Result<()>;
32489
32490	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetInteger64v.xhtml>
32491	fn glGetInteger64v(&self, pname: GLenum, data: *mut GLint64) -> Result<()>;
32492
32493	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetSynciv.xhtml>
32494	fn glGetSynciv(&self, sync: GLsync, pname: GLenum, bufSize: GLsizei, length: *mut GLsizei, values: *mut GLint) -> Result<()>;
32495
32496	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetInteger64i_v.xhtml>
32497	fn glGetInteger64i_v(&self, target: GLenum, index: GLuint, data: *mut GLint64) -> Result<()>;
32498
32499	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetBufferParameteri64v.xhtml>
32500	fn glGetBufferParameteri64v(&self, target: GLenum, pname: GLenum, params: *mut GLint64) -> Result<()>;
32501
32502	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenSamplers.xhtml>
32503	fn glGenSamplers(&self, count: GLsizei, samplers: *mut GLuint) -> Result<()>;
32504
32505	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteSamplers.xhtml>
32506	fn glDeleteSamplers(&self, count: GLsizei, samplers: *const GLuint) -> Result<()>;
32507
32508	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsSampler.xhtml>
32509	fn glIsSampler(&self, sampler: GLuint) -> Result<GLboolean>;
32510
32511	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindSampler.xhtml>
32512	fn glBindSampler(&self, unit: GLuint, sampler: GLuint) -> Result<()>;
32513
32514	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glSamplerParameteri.xhtml>
32515	fn glSamplerParameteri(&self, sampler: GLuint, pname: GLenum, param: GLint) -> Result<()>;
32516
32517	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glSamplerParameteriv.xhtml>
32518	fn glSamplerParameteriv(&self, sampler: GLuint, pname: GLenum, param: *const GLint) -> Result<()>;
32519
32520	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glSamplerParameterf.xhtml>
32521	fn glSamplerParameterf(&self, sampler: GLuint, pname: GLenum, param: GLfloat) -> Result<()>;
32522
32523	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glSamplerParameterfv.xhtml>
32524	fn glSamplerParameterfv(&self, sampler: GLuint, pname: GLenum, param: *const GLfloat) -> Result<()>;
32525
32526	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetSamplerParameteriv.xhtml>
32527	fn glGetSamplerParameteriv(&self, sampler: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
32528
32529	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetSamplerParameterfv.xhtml>
32530	fn glGetSamplerParameterfv(&self, sampler: GLuint, pname: GLenum, params: *mut GLfloat) -> Result<()>;
32531
32532	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribDivisor.xhtml>
32533	fn glVertexAttribDivisor(&self, index: GLuint, divisor: GLuint) -> Result<()>;
32534
32535	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindTransformFeedback.xhtml>
32536	fn glBindTransformFeedback(&self, target: GLenum, id: GLuint) -> Result<()>;
32537
32538	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteTransformFeedbacks.xhtml>
32539	fn glDeleteTransformFeedbacks(&self, n: GLsizei, ids: *const GLuint) -> Result<()>;
32540
32541	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenTransformFeedbacks.xhtml>
32542	fn glGenTransformFeedbacks(&self, n: GLsizei, ids: *mut GLuint) -> Result<()>;
32543
32544	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsTransformFeedback.xhtml>
32545	fn glIsTransformFeedback(&self, id: GLuint) -> Result<GLboolean>;
32546
32547	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glPauseTransformFeedback.xhtml>
32548	fn glPauseTransformFeedback(&self) -> Result<()>;
32549
32550	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glResumeTransformFeedback.xhtml>
32551	fn glResumeTransformFeedback(&self) -> Result<()>;
32552
32553	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramBinary.xhtml>
32554	fn glGetProgramBinary(&self, program: GLuint, bufSize: GLsizei, length: *mut GLsizei, binaryFormat: *mut GLenum, binary: *mut c_void) -> Result<()>;
32555
32556	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramBinary.xhtml>
32557	fn glProgramBinary(&self, program: GLuint, binaryFormat: GLenum, binary: *const c_void, length: GLsizei) -> Result<()>;
32558
32559	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramParameteri.xhtml>
32560	fn glProgramParameteri(&self, program: GLuint, pname: GLenum, value: GLint) -> Result<()>;
32561
32562	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glInvalidateFramebuffer.xhtml>
32563	fn glInvalidateFramebuffer(&self, target: GLenum, numAttachments: GLsizei, attachments: *const GLenum) -> Result<()>;
32564
32565	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glInvalidateSubFramebuffer.xhtml>
32566	fn glInvalidateSubFramebuffer(&self, target: GLenum, numAttachments: GLsizei, attachments: *const GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
32567
32568	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexStorage2D.xhtml>
32569	fn glTexStorage2D(&self, target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()>;
32570
32571	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexStorage3D.xhtml>
32572	fn glTexStorage3D(&self, target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei) -> Result<()>;
32573
32574	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetInternalformativ.xhtml>
32575	fn glGetInternalformativ(&self, target: GLenum, internalformat: GLenum, pname: GLenum, bufSize: GLsizei, params: *mut GLint) -> Result<()>;
32576}
32577/// Functions from OpenGL ES version 3.0
32578#[derive(Clone, Copy, PartialEq, Eq, Hash)]
32579pub struct EsVersion30 {
32580	/// Is OpenGL ES version 3.0 available
32581	available: bool,
32582
32583	/// The function pointer to `glGetError()`
32584	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetError.xhtml>
32585	pub geterror: PFNGLGETERRORPROC,
32586
32587	/// The function pointer to `glReadBuffer()`
32588	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glReadBuffer.xhtml>
32589	pub readbuffer: PFNGLREADBUFFERPROC,
32590
32591	/// The function pointer to `glDrawRangeElements()`
32592	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawRangeElements.xhtml>
32593	pub drawrangeelements: PFNGLDRAWRANGEELEMENTSPROC,
32594
32595	/// The function pointer to `glTexImage3D()`
32596	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexImage3D.xhtml>
32597	pub teximage3d: PFNGLTEXIMAGE3DPROC,
32598
32599	/// The function pointer to `glTexSubImage3D()`
32600	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexSubImage3D.xhtml>
32601	pub texsubimage3d: PFNGLTEXSUBIMAGE3DPROC,
32602
32603	/// The function pointer to `glCopyTexSubImage3D()`
32604	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCopyTexSubImage3D.xhtml>
32605	pub copytexsubimage3d: PFNGLCOPYTEXSUBIMAGE3DPROC,
32606
32607	/// The function pointer to `glCompressedTexImage3D()`
32608	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCompressedTexImage3D.xhtml>
32609	pub compressedteximage3d: PFNGLCOMPRESSEDTEXIMAGE3DPROC,
32610
32611	/// The function pointer to `glCompressedTexSubImage3D()`
32612	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCompressedTexSubImage3D.xhtml>
32613	pub compressedtexsubimage3d: PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC,
32614
32615	/// The function pointer to `glGenQueries()`
32616	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenQueries.xhtml>
32617	pub genqueries: PFNGLGENQUERIESPROC,
32618
32619	/// The function pointer to `glDeleteQueries()`
32620	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteQueries.xhtml>
32621	pub deletequeries: PFNGLDELETEQUERIESPROC,
32622
32623	/// The function pointer to `glIsQuery()`
32624	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsQuery.xhtml>
32625	pub isquery: PFNGLISQUERYPROC,
32626
32627	/// The function pointer to `glBeginQuery()`
32628	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBeginQuery.xhtml>
32629	pub beginquery: PFNGLBEGINQUERYPROC,
32630
32631	/// The function pointer to `glEndQuery()`
32632	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glEndQuery.xhtml>
32633	pub endquery: PFNGLENDQUERYPROC,
32634
32635	/// The function pointer to `glGetQueryiv()`
32636	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetQueryiv.xhtml>
32637	pub getqueryiv: PFNGLGETQUERYIVPROC,
32638
32639	/// The function pointer to `glGetQueryObjectuiv()`
32640	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetQueryObjectuiv.xhtml>
32641	pub getqueryobjectuiv: PFNGLGETQUERYOBJECTUIVPROC,
32642
32643	/// The function pointer to `glUnmapBuffer()`
32644	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUnmapBuffer.xhtml>
32645	pub unmapbuffer: PFNGLUNMAPBUFFERPROC,
32646
32647	/// The function pointer to `glGetBufferPointerv()`
32648	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetBufferPointerv.xhtml>
32649	pub getbufferpointerv: PFNGLGETBUFFERPOINTERVPROC,
32650
32651	/// The function pointer to `glDrawBuffers()`
32652	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawBuffers.xhtml>
32653	pub drawbuffers: PFNGLDRAWBUFFERSPROC,
32654
32655	/// The function pointer to `glUniformMatrix2x3fv()`
32656	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix2x3fv.xhtml>
32657	pub uniformmatrix2x3fv: PFNGLUNIFORMMATRIX2X3FVPROC,
32658
32659	/// The function pointer to `glUniformMatrix3x2fv()`
32660	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix3x2fv.xhtml>
32661	pub uniformmatrix3x2fv: PFNGLUNIFORMMATRIX3X2FVPROC,
32662
32663	/// The function pointer to `glUniformMatrix2x4fv()`
32664	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix2x4fv.xhtml>
32665	pub uniformmatrix2x4fv: PFNGLUNIFORMMATRIX2X4FVPROC,
32666
32667	/// The function pointer to `glUniformMatrix4x2fv()`
32668	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix4x2fv.xhtml>
32669	pub uniformmatrix4x2fv: PFNGLUNIFORMMATRIX4X2FVPROC,
32670
32671	/// The function pointer to `glUniformMatrix3x4fv()`
32672	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix3x4fv.xhtml>
32673	pub uniformmatrix3x4fv: PFNGLUNIFORMMATRIX3X4FVPROC,
32674
32675	/// The function pointer to `glUniformMatrix4x3fv()`
32676	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformMatrix4x3fv.xhtml>
32677	pub uniformmatrix4x3fv: PFNGLUNIFORMMATRIX4X3FVPROC,
32678
32679	/// The function pointer to `glBlitFramebuffer()`
32680	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlitFramebuffer.xhtml>
32681	pub blitframebuffer: PFNGLBLITFRAMEBUFFERPROC,
32682
32683	/// The function pointer to `glRenderbufferStorageMultisample()`
32684	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glRenderbufferStorageMultisample.xhtml>
32685	pub renderbufferstoragemultisample: PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC,
32686
32687	/// The function pointer to `glFramebufferTextureLayer()`
32688	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFramebufferTextureLayer.xhtml>
32689	pub framebuffertexturelayer: PFNGLFRAMEBUFFERTEXTURELAYERPROC,
32690
32691	/// The function pointer to `glMapBufferRange()`
32692	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glMapBufferRange.xhtml>
32693	pub mapbufferrange: PFNGLMAPBUFFERRANGEPROC,
32694
32695	/// The function pointer to `glFlushMappedBufferRange()`
32696	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFlushMappedBufferRange.xhtml>
32697	pub flushmappedbufferrange: PFNGLFLUSHMAPPEDBUFFERRANGEPROC,
32698
32699	/// The function pointer to `glBindVertexArray()`
32700	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindVertexArray.xhtml>
32701	pub bindvertexarray: PFNGLBINDVERTEXARRAYPROC,
32702
32703	/// The function pointer to `glDeleteVertexArrays()`
32704	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteVertexArrays.xhtml>
32705	pub deletevertexarrays: PFNGLDELETEVERTEXARRAYSPROC,
32706
32707	/// The function pointer to `glGenVertexArrays()`
32708	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenVertexArrays.xhtml>
32709	pub genvertexarrays: PFNGLGENVERTEXARRAYSPROC,
32710
32711	/// The function pointer to `glIsVertexArray()`
32712	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsVertexArray.xhtml>
32713	pub isvertexarray: PFNGLISVERTEXARRAYPROC,
32714
32715	/// The function pointer to `glGetIntegeri_v()`
32716	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetIntegeri_v.xhtml>
32717	pub getintegeri_v: PFNGLGETINTEGERI_VPROC,
32718
32719	/// The function pointer to `glBeginTransformFeedback()`
32720	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBeginTransformFeedback.xhtml>
32721	pub begintransformfeedback: PFNGLBEGINTRANSFORMFEEDBACKPROC,
32722
32723	/// The function pointer to `glEndTransformFeedback()`
32724	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glEndTransformFeedback.xhtml>
32725	pub endtransformfeedback: PFNGLENDTRANSFORMFEEDBACKPROC,
32726
32727	/// The function pointer to `glBindBufferRange()`
32728	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindBufferRange.xhtml>
32729	pub bindbufferrange: PFNGLBINDBUFFERRANGEPROC,
32730
32731	/// The function pointer to `glBindBufferBase()`
32732	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindBufferBase.xhtml>
32733	pub bindbufferbase: PFNGLBINDBUFFERBASEPROC,
32734
32735	/// The function pointer to `glTransformFeedbackVaryings()`
32736	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTransformFeedbackVaryings.xhtml>
32737	pub transformfeedbackvaryings: PFNGLTRANSFORMFEEDBACKVARYINGSPROC,
32738
32739	/// The function pointer to `glGetTransformFeedbackVarying()`
32740	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetTransformFeedbackVarying.xhtml>
32741	pub gettransformfeedbackvarying: PFNGLGETTRANSFORMFEEDBACKVARYINGPROC,
32742
32743	/// The function pointer to `glVertexAttribIPointer()`
32744	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribIPointer.xhtml>
32745	pub vertexattribipointer: PFNGLVERTEXATTRIBIPOINTERPROC,
32746
32747	/// The function pointer to `glGetVertexAttribIiv()`
32748	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetVertexAttribIiv.xhtml>
32749	pub getvertexattribiiv: PFNGLGETVERTEXATTRIBIIVPROC,
32750
32751	/// The function pointer to `glGetVertexAttribIuiv()`
32752	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetVertexAttribIuiv.xhtml>
32753	pub getvertexattribiuiv: PFNGLGETVERTEXATTRIBIUIVPROC,
32754
32755	/// The function pointer to `glVertexAttribI4i()`
32756	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribI4i.xhtml>
32757	pub vertexattribi4i: PFNGLVERTEXATTRIBI4IPROC,
32758
32759	/// The function pointer to `glVertexAttribI4ui()`
32760	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribI4ui.xhtml>
32761	pub vertexattribi4ui: PFNGLVERTEXATTRIBI4UIPROC,
32762
32763	/// The function pointer to `glVertexAttribI4iv()`
32764	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribI4iv.xhtml>
32765	pub vertexattribi4iv: PFNGLVERTEXATTRIBI4IVPROC,
32766
32767	/// The function pointer to `glVertexAttribI4uiv()`
32768	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribI4uiv.xhtml>
32769	pub vertexattribi4uiv: PFNGLVERTEXATTRIBI4UIVPROC,
32770
32771	/// The function pointer to `glGetUniformuiv()`
32772	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetUniformuiv.xhtml>
32773	pub getuniformuiv: PFNGLGETUNIFORMUIVPROC,
32774
32775	/// The function pointer to `glGetFragDataLocation()`
32776	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetFragDataLocation.xhtml>
32777	pub getfragdatalocation: PFNGLGETFRAGDATALOCATIONPROC,
32778
32779	/// The function pointer to `glUniform1ui()`
32780	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform1ui.xhtml>
32781	pub uniform1ui: PFNGLUNIFORM1UIPROC,
32782
32783	/// The function pointer to `glUniform2ui()`
32784	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform2ui.xhtml>
32785	pub uniform2ui: PFNGLUNIFORM2UIPROC,
32786
32787	/// The function pointer to `glUniform3ui()`
32788	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform3ui.xhtml>
32789	pub uniform3ui: PFNGLUNIFORM3UIPROC,
32790
32791	/// The function pointer to `glUniform4ui()`
32792	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform4ui.xhtml>
32793	pub uniform4ui: PFNGLUNIFORM4UIPROC,
32794
32795	/// The function pointer to `glUniform1uiv()`
32796	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform1uiv.xhtml>
32797	pub uniform1uiv: PFNGLUNIFORM1UIVPROC,
32798
32799	/// The function pointer to `glUniform2uiv()`
32800	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform2uiv.xhtml>
32801	pub uniform2uiv: PFNGLUNIFORM2UIVPROC,
32802
32803	/// The function pointer to `glUniform3uiv()`
32804	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform3uiv.xhtml>
32805	pub uniform3uiv: PFNGLUNIFORM3UIVPROC,
32806
32807	/// The function pointer to `glUniform4uiv()`
32808	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniform4uiv.xhtml>
32809	pub uniform4uiv: PFNGLUNIFORM4UIVPROC,
32810
32811	/// The function pointer to `glClearBufferiv()`
32812	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClearBufferiv.xhtml>
32813	pub clearbufferiv: PFNGLCLEARBUFFERIVPROC,
32814
32815	/// The function pointer to `glClearBufferuiv()`
32816	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClearBufferuiv.xhtml>
32817	pub clearbufferuiv: PFNGLCLEARBUFFERUIVPROC,
32818
32819	/// The function pointer to `glClearBufferfv()`
32820	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClearBufferfv.xhtml>
32821	pub clearbufferfv: PFNGLCLEARBUFFERFVPROC,
32822
32823	/// The function pointer to `glClearBufferfi()`
32824	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClearBufferfi.xhtml>
32825	pub clearbufferfi: PFNGLCLEARBUFFERFIPROC,
32826
32827	/// The function pointer to `glGetStringi()`
32828	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetStringi.xhtml>
32829	pub getstringi: PFNGLGETSTRINGIPROC,
32830
32831	/// The function pointer to `glCopyBufferSubData()`
32832	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCopyBufferSubData.xhtml>
32833	pub copybuffersubdata: PFNGLCOPYBUFFERSUBDATAPROC,
32834
32835	/// The function pointer to `glGetUniformIndices()`
32836	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetUniformIndices.xhtml>
32837	pub getuniformindices: PFNGLGETUNIFORMINDICESPROC,
32838
32839	/// The function pointer to `glGetActiveUniformsiv()`
32840	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetActiveUniformsiv.xhtml>
32841	pub getactiveuniformsiv: PFNGLGETACTIVEUNIFORMSIVPROC,
32842
32843	/// The function pointer to `glGetUniformBlockIndex()`
32844	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetUniformBlockIndex.xhtml>
32845	pub getuniformblockindex: PFNGLGETUNIFORMBLOCKINDEXPROC,
32846
32847	/// The function pointer to `glGetActiveUniformBlockiv()`
32848	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetActiveUniformBlockiv.xhtml>
32849	pub getactiveuniformblockiv: PFNGLGETACTIVEUNIFORMBLOCKIVPROC,
32850
32851	/// The function pointer to `glGetActiveUniformBlockName()`
32852	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetActiveUniformBlockName.xhtml>
32853	pub getactiveuniformblockname: PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC,
32854
32855	/// The function pointer to `glUniformBlockBinding()`
32856	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUniformBlockBinding.xhtml>
32857	pub uniformblockbinding: PFNGLUNIFORMBLOCKBINDINGPROC,
32858
32859	/// The function pointer to `glDrawArraysInstanced()`
32860	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawArraysInstanced.xhtml>
32861	pub drawarraysinstanced: PFNGLDRAWARRAYSINSTANCEDPROC,
32862
32863	/// The function pointer to `glDrawElementsInstanced()`
32864	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawElementsInstanced.xhtml>
32865	pub drawelementsinstanced: PFNGLDRAWELEMENTSINSTANCEDPROC,
32866
32867	/// The function pointer to `glFenceSync()`
32868	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFenceSync.xhtml>
32869	pub fencesync: PFNGLFENCESYNCPROC,
32870
32871	/// The function pointer to `glIsSync()`
32872	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsSync.xhtml>
32873	pub issync: PFNGLISSYNCPROC,
32874
32875	/// The function pointer to `glDeleteSync()`
32876	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteSync.xhtml>
32877	pub deletesync: PFNGLDELETESYNCPROC,
32878
32879	/// The function pointer to `glClientWaitSync()`
32880	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glClientWaitSync.xhtml>
32881	pub clientwaitsync: PFNGLCLIENTWAITSYNCPROC,
32882
32883	/// The function pointer to `glWaitSync()`
32884	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glWaitSync.xhtml>
32885	pub waitsync: PFNGLWAITSYNCPROC,
32886
32887	/// The function pointer to `glGetInteger64v()`
32888	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetInteger64v.xhtml>
32889	pub getinteger64v: PFNGLGETINTEGER64VPROC,
32890
32891	/// The function pointer to `glGetSynciv()`
32892	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetSynciv.xhtml>
32893	pub getsynciv: PFNGLGETSYNCIVPROC,
32894
32895	/// The function pointer to `glGetInteger64i_v()`
32896	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetInteger64i_v.xhtml>
32897	pub getinteger64i_v: PFNGLGETINTEGER64I_VPROC,
32898
32899	/// The function pointer to `glGetBufferParameteri64v()`
32900	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetBufferParameteri64v.xhtml>
32901	pub getbufferparameteri64v: PFNGLGETBUFFERPARAMETERI64VPROC,
32902
32903	/// The function pointer to `glGenSamplers()`
32904	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenSamplers.xhtml>
32905	pub gensamplers: PFNGLGENSAMPLERSPROC,
32906
32907	/// The function pointer to `glDeleteSamplers()`
32908	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteSamplers.xhtml>
32909	pub deletesamplers: PFNGLDELETESAMPLERSPROC,
32910
32911	/// The function pointer to `glIsSampler()`
32912	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsSampler.xhtml>
32913	pub issampler: PFNGLISSAMPLERPROC,
32914
32915	/// The function pointer to `glBindSampler()`
32916	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindSampler.xhtml>
32917	pub bindsampler: PFNGLBINDSAMPLERPROC,
32918
32919	/// The function pointer to `glSamplerParameteri()`
32920	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glSamplerParameteri.xhtml>
32921	pub samplerparameteri: PFNGLSAMPLERPARAMETERIPROC,
32922
32923	/// The function pointer to `glSamplerParameteriv()`
32924	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glSamplerParameteriv.xhtml>
32925	pub samplerparameteriv: PFNGLSAMPLERPARAMETERIVPROC,
32926
32927	/// The function pointer to `glSamplerParameterf()`
32928	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glSamplerParameterf.xhtml>
32929	pub samplerparameterf: PFNGLSAMPLERPARAMETERFPROC,
32930
32931	/// The function pointer to `glSamplerParameterfv()`
32932	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glSamplerParameterfv.xhtml>
32933	pub samplerparameterfv: PFNGLSAMPLERPARAMETERFVPROC,
32934
32935	/// The function pointer to `glGetSamplerParameteriv()`
32936	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetSamplerParameteriv.xhtml>
32937	pub getsamplerparameteriv: PFNGLGETSAMPLERPARAMETERIVPROC,
32938
32939	/// The function pointer to `glGetSamplerParameterfv()`
32940	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetSamplerParameterfv.xhtml>
32941	pub getsamplerparameterfv: PFNGLGETSAMPLERPARAMETERFVPROC,
32942
32943	/// The function pointer to `glVertexAttribDivisor()`
32944	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribDivisor.xhtml>
32945	pub vertexattribdivisor: PFNGLVERTEXATTRIBDIVISORPROC,
32946
32947	/// The function pointer to `glBindTransformFeedback()`
32948	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindTransformFeedback.xhtml>
32949	pub bindtransformfeedback: PFNGLBINDTRANSFORMFEEDBACKPROC,
32950
32951	/// The function pointer to `glDeleteTransformFeedbacks()`
32952	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteTransformFeedbacks.xhtml>
32953	pub deletetransformfeedbacks: PFNGLDELETETRANSFORMFEEDBACKSPROC,
32954
32955	/// The function pointer to `glGenTransformFeedbacks()`
32956	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenTransformFeedbacks.xhtml>
32957	pub gentransformfeedbacks: PFNGLGENTRANSFORMFEEDBACKSPROC,
32958
32959	/// The function pointer to `glIsTransformFeedback()`
32960	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsTransformFeedback.xhtml>
32961	pub istransformfeedback: PFNGLISTRANSFORMFEEDBACKPROC,
32962
32963	/// The function pointer to `glPauseTransformFeedback()`
32964	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glPauseTransformFeedback.xhtml>
32965	pub pausetransformfeedback: PFNGLPAUSETRANSFORMFEEDBACKPROC,
32966
32967	/// The function pointer to `glResumeTransformFeedback()`
32968	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glResumeTransformFeedback.xhtml>
32969	pub resumetransformfeedback: PFNGLRESUMETRANSFORMFEEDBACKPROC,
32970
32971	/// The function pointer to `glGetProgramBinary()`
32972	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramBinary.xhtml>
32973	pub getprogrambinary: PFNGLGETPROGRAMBINARYPROC,
32974
32975	/// The function pointer to `glProgramBinary()`
32976	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramBinary.xhtml>
32977	pub programbinary: PFNGLPROGRAMBINARYPROC,
32978
32979	/// The function pointer to `glProgramParameteri()`
32980	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramParameteri.xhtml>
32981	pub programparameteri: PFNGLPROGRAMPARAMETERIPROC,
32982
32983	/// The function pointer to `glInvalidateFramebuffer()`
32984	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glInvalidateFramebuffer.xhtml>
32985	pub invalidateframebuffer: PFNGLINVALIDATEFRAMEBUFFERPROC,
32986
32987	/// The function pointer to `glInvalidateSubFramebuffer()`
32988	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glInvalidateSubFramebuffer.xhtml>
32989	pub invalidatesubframebuffer: PFNGLINVALIDATESUBFRAMEBUFFERPROC,
32990
32991	/// The function pointer to `glTexStorage2D()`
32992	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexStorage2D.xhtml>
32993	pub texstorage2d: PFNGLTEXSTORAGE2DPROC,
32994
32995	/// The function pointer to `glTexStorage3D()`
32996	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexStorage3D.xhtml>
32997	pub texstorage3d: PFNGLTEXSTORAGE3DPROC,
32998
32999	/// The function pointer to `glGetInternalformativ()`
33000	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetInternalformativ.xhtml>
33001	pub getinternalformativ: PFNGLGETINTERNALFORMATIVPROC,
33002}
33003
33004impl ES_GL_3_0 for EsVersion30 {
33005	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetError.xhtml>
33006	#[inline(always)]
33007	fn glGetError(&self) -> GLenum {
33008		(self.geterror)()
33009	}
33010	#[inline(always)]
33011	fn glReadBuffer(&self, src: GLenum) -> Result<()> {
33012		let ret = process_catch("glReadBuffer", catch_unwind(||(self.readbuffer)(src)));
33013		#[cfg(feature = "diagnose")]
33014		if let Ok(ret) = ret {
33015			return to_result("glReadBuffer", ret, self.glGetError());
33016		} else {
33017			return ret
33018		}
33019		#[cfg(not(feature = "diagnose"))]
33020		return ret;
33021	}
33022	#[inline(always)]
33023	fn glDrawRangeElements(&self, mode: GLenum, start: GLuint, end: GLuint, count: GLsizei, type_: GLenum, indices: *const c_void) -> Result<()> {
33024		let ret = process_catch("glDrawRangeElements", catch_unwind(||(self.drawrangeelements)(mode, start, end, count, type_, indices)));
33025		#[cfg(feature = "diagnose")]
33026		if let Ok(ret) = ret {
33027			return to_result("glDrawRangeElements", ret, self.glGetError());
33028		} else {
33029			return ret
33030		}
33031		#[cfg(not(feature = "diagnose"))]
33032		return ret;
33033	}
33034	#[inline(always)]
33035	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<()> {
33036		let ret = process_catch("glTexImage3D", catch_unwind(||(self.teximage3d)(target, level, internalformat, width, height, depth, border, format, type_, pixels)));
33037		#[cfg(feature = "diagnose")]
33038		if let Ok(ret) = ret {
33039			return to_result("glTexImage3D", ret, self.glGetError());
33040		} else {
33041			return ret
33042		}
33043		#[cfg(not(feature = "diagnose"))]
33044		return ret;
33045	}
33046	#[inline(always)]
33047	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<()> {
33048		let ret = process_catch("glTexSubImage3D", catch_unwind(||(self.texsubimage3d)(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, pixels)));
33049		#[cfg(feature = "diagnose")]
33050		if let Ok(ret) = ret {
33051			return to_result("glTexSubImage3D", ret, self.glGetError());
33052		} else {
33053			return ret
33054		}
33055		#[cfg(not(feature = "diagnose"))]
33056		return ret;
33057	}
33058	#[inline(always)]
33059	fn glCopyTexSubImage3D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
33060		let ret = process_catch("glCopyTexSubImage3D", catch_unwind(||(self.copytexsubimage3d)(target, level, xoffset, yoffset, zoffset, x, y, width, height)));
33061		#[cfg(feature = "diagnose")]
33062		if let Ok(ret) = ret {
33063			return to_result("glCopyTexSubImage3D", ret, self.glGetError());
33064		} else {
33065			return ret
33066		}
33067		#[cfg(not(feature = "diagnose"))]
33068		return ret;
33069	}
33070	#[inline(always)]
33071	fn glCompressedTexImage3D(&self, target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, imageSize: GLsizei, data: *const c_void) -> Result<()> {
33072		let ret = process_catch("glCompressedTexImage3D", catch_unwind(||(self.compressedteximage3d)(target, level, internalformat, width, height, depth, border, imageSize, data)));
33073		#[cfg(feature = "diagnose")]
33074		if let Ok(ret) = ret {
33075			return to_result("glCompressedTexImage3D", ret, self.glGetError());
33076		} else {
33077			return ret
33078		}
33079		#[cfg(not(feature = "diagnose"))]
33080		return ret;
33081	}
33082	#[inline(always)]
33083	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<()> {
33084		let ret = process_catch("glCompressedTexSubImage3D", catch_unwind(||(self.compressedtexsubimage3d)(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data)));
33085		#[cfg(feature = "diagnose")]
33086		if let Ok(ret) = ret {
33087			return to_result("glCompressedTexSubImage3D", ret, self.glGetError());
33088		} else {
33089			return ret
33090		}
33091		#[cfg(not(feature = "diagnose"))]
33092		return ret;
33093	}
33094	#[inline(always)]
33095	fn glGenQueries(&self, n: GLsizei, ids: *mut GLuint) -> Result<()> {
33096		let ret = process_catch("glGenQueries", catch_unwind(||(self.genqueries)(n, ids)));
33097		#[cfg(feature = "diagnose")]
33098		if let Ok(ret) = ret {
33099			return to_result("glGenQueries", ret, self.glGetError());
33100		} else {
33101			return ret
33102		}
33103		#[cfg(not(feature = "diagnose"))]
33104		return ret;
33105	}
33106	#[inline(always)]
33107	fn glDeleteQueries(&self, n: GLsizei, ids: *const GLuint) -> Result<()> {
33108		let ret = process_catch("glDeleteQueries", catch_unwind(||(self.deletequeries)(n, ids)));
33109		#[cfg(feature = "diagnose")]
33110		if let Ok(ret) = ret {
33111			return to_result("glDeleteQueries", ret, self.glGetError());
33112		} else {
33113			return ret
33114		}
33115		#[cfg(not(feature = "diagnose"))]
33116		return ret;
33117	}
33118	#[inline(always)]
33119	fn glIsQuery(&self, id: GLuint) -> Result<GLboolean> {
33120		let ret = process_catch("glIsQuery", catch_unwind(||(self.isquery)(id)));
33121		#[cfg(feature = "diagnose")]
33122		if let Ok(ret) = ret {
33123			return to_result("glIsQuery", ret, self.glGetError());
33124		} else {
33125			return ret
33126		}
33127		#[cfg(not(feature = "diagnose"))]
33128		return ret;
33129	}
33130	#[inline(always)]
33131	fn glBeginQuery(&self, target: GLenum, id: GLuint) -> Result<()> {
33132		let ret = process_catch("glBeginQuery", catch_unwind(||(self.beginquery)(target, id)));
33133		#[cfg(feature = "diagnose")]
33134		if let Ok(ret) = ret {
33135			return to_result("glBeginQuery", ret, self.glGetError());
33136		} else {
33137			return ret
33138		}
33139		#[cfg(not(feature = "diagnose"))]
33140		return ret;
33141	}
33142	#[inline(always)]
33143	fn glEndQuery(&self, target: GLenum) -> Result<()> {
33144		let ret = process_catch("glEndQuery", catch_unwind(||(self.endquery)(target)));
33145		#[cfg(feature = "diagnose")]
33146		if let Ok(ret) = ret {
33147			return to_result("glEndQuery", ret, self.glGetError());
33148		} else {
33149			return ret
33150		}
33151		#[cfg(not(feature = "diagnose"))]
33152		return ret;
33153	}
33154	#[inline(always)]
33155	fn glGetQueryiv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
33156		let ret = process_catch("glGetQueryiv", catch_unwind(||(self.getqueryiv)(target, pname, params)));
33157		#[cfg(feature = "diagnose")]
33158		if let Ok(ret) = ret {
33159			return to_result("glGetQueryiv", ret, self.glGetError());
33160		} else {
33161			return ret
33162		}
33163		#[cfg(not(feature = "diagnose"))]
33164		return ret;
33165	}
33166	#[inline(always)]
33167	fn glGetQueryObjectuiv(&self, id: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()> {
33168		let ret = process_catch("glGetQueryObjectuiv", catch_unwind(||(self.getqueryobjectuiv)(id, pname, params)));
33169		#[cfg(feature = "diagnose")]
33170		if let Ok(ret) = ret {
33171			return to_result("glGetQueryObjectuiv", ret, self.glGetError());
33172		} else {
33173			return ret
33174		}
33175		#[cfg(not(feature = "diagnose"))]
33176		return ret;
33177	}
33178	#[inline(always)]
33179	fn glUnmapBuffer(&self, target: GLenum) -> Result<GLboolean> {
33180		let ret = process_catch("glUnmapBuffer", catch_unwind(||(self.unmapbuffer)(target)));
33181		#[cfg(feature = "diagnose")]
33182		if let Ok(ret) = ret {
33183			return to_result("glUnmapBuffer", ret, self.glGetError());
33184		} else {
33185			return ret
33186		}
33187		#[cfg(not(feature = "diagnose"))]
33188		return ret;
33189	}
33190	#[inline(always)]
33191	fn glGetBufferPointerv(&self, target: GLenum, pname: GLenum, params: *mut *mut c_void) -> Result<()> {
33192		let ret = process_catch("glGetBufferPointerv", catch_unwind(||(self.getbufferpointerv)(target, pname, params)));
33193		#[cfg(feature = "diagnose")]
33194		if let Ok(ret) = ret {
33195			return to_result("glGetBufferPointerv", ret, self.glGetError());
33196		} else {
33197			return ret
33198		}
33199		#[cfg(not(feature = "diagnose"))]
33200		return ret;
33201	}
33202	#[inline(always)]
33203	fn glDrawBuffers(&self, n: GLsizei, bufs: *const GLenum) -> Result<()> {
33204		let ret = process_catch("glDrawBuffers", catch_unwind(||(self.drawbuffers)(n, bufs)));
33205		#[cfg(feature = "diagnose")]
33206		if let Ok(ret) = ret {
33207			return to_result("glDrawBuffers", ret, self.glGetError());
33208		} else {
33209			return ret
33210		}
33211		#[cfg(not(feature = "diagnose"))]
33212		return ret;
33213	}
33214	#[inline(always)]
33215	fn glUniformMatrix2x3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
33216		let ret = process_catch("glUniformMatrix2x3fv", catch_unwind(||(self.uniformmatrix2x3fv)(location, count, transpose, value)));
33217		#[cfg(feature = "diagnose")]
33218		if let Ok(ret) = ret {
33219			return to_result("glUniformMatrix2x3fv", ret, self.glGetError());
33220		} else {
33221			return ret
33222		}
33223		#[cfg(not(feature = "diagnose"))]
33224		return ret;
33225	}
33226	#[inline(always)]
33227	fn glUniformMatrix3x2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
33228		let ret = process_catch("glUniformMatrix3x2fv", catch_unwind(||(self.uniformmatrix3x2fv)(location, count, transpose, value)));
33229		#[cfg(feature = "diagnose")]
33230		if let Ok(ret) = ret {
33231			return to_result("glUniformMatrix3x2fv", ret, self.glGetError());
33232		} else {
33233			return ret
33234		}
33235		#[cfg(not(feature = "diagnose"))]
33236		return ret;
33237	}
33238	#[inline(always)]
33239	fn glUniformMatrix2x4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
33240		let ret = process_catch("glUniformMatrix2x4fv", catch_unwind(||(self.uniformmatrix2x4fv)(location, count, transpose, value)));
33241		#[cfg(feature = "diagnose")]
33242		if let Ok(ret) = ret {
33243			return to_result("glUniformMatrix2x4fv", ret, self.glGetError());
33244		} else {
33245			return ret
33246		}
33247		#[cfg(not(feature = "diagnose"))]
33248		return ret;
33249	}
33250	#[inline(always)]
33251	fn glUniformMatrix4x2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
33252		let ret = process_catch("glUniformMatrix4x2fv", catch_unwind(||(self.uniformmatrix4x2fv)(location, count, transpose, value)));
33253		#[cfg(feature = "diagnose")]
33254		if let Ok(ret) = ret {
33255			return to_result("glUniformMatrix4x2fv", ret, self.glGetError());
33256		} else {
33257			return ret
33258		}
33259		#[cfg(not(feature = "diagnose"))]
33260		return ret;
33261	}
33262	#[inline(always)]
33263	fn glUniformMatrix3x4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
33264		let ret = process_catch("glUniformMatrix3x4fv", catch_unwind(||(self.uniformmatrix3x4fv)(location, count, transpose, value)));
33265		#[cfg(feature = "diagnose")]
33266		if let Ok(ret) = ret {
33267			return to_result("glUniformMatrix3x4fv", ret, self.glGetError());
33268		} else {
33269			return ret
33270		}
33271		#[cfg(not(feature = "diagnose"))]
33272		return ret;
33273	}
33274	#[inline(always)]
33275	fn glUniformMatrix4x3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
33276		let ret = process_catch("glUniformMatrix4x3fv", catch_unwind(||(self.uniformmatrix4x3fv)(location, count, transpose, value)));
33277		#[cfg(feature = "diagnose")]
33278		if let Ok(ret) = ret {
33279			return to_result("glUniformMatrix4x3fv", ret, self.glGetError());
33280		} else {
33281			return ret
33282		}
33283		#[cfg(not(feature = "diagnose"))]
33284		return ret;
33285	}
33286	#[inline(always)]
33287	fn glBlitFramebuffer(&self, srcX0: GLint, srcY0: GLint, srcX1: GLint, srcY1: GLint, dstX0: GLint, dstY0: GLint, dstX1: GLint, dstY1: GLint, mask: GLbitfield, filter: GLenum) -> Result<()> {
33288		let ret = process_catch("glBlitFramebuffer", catch_unwind(||(self.blitframebuffer)(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter)));
33289		#[cfg(feature = "diagnose")]
33290		if let Ok(ret) = ret {
33291			return to_result("glBlitFramebuffer", ret, self.glGetError());
33292		} else {
33293			return ret
33294		}
33295		#[cfg(not(feature = "diagnose"))]
33296		return ret;
33297	}
33298	#[inline(always)]
33299	fn glRenderbufferStorageMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()> {
33300		let ret = process_catch("glRenderbufferStorageMultisample", catch_unwind(||(self.renderbufferstoragemultisample)(target, samples, internalformat, width, height)));
33301		#[cfg(feature = "diagnose")]
33302		if let Ok(ret) = ret {
33303			return to_result("glRenderbufferStorageMultisample", ret, self.glGetError());
33304		} else {
33305			return ret
33306		}
33307		#[cfg(not(feature = "diagnose"))]
33308		return ret;
33309	}
33310	#[inline(always)]
33311	fn glFramebufferTextureLayer(&self, target: GLenum, attachment: GLenum, texture: GLuint, level: GLint, layer: GLint) -> Result<()> {
33312		let ret = process_catch("glFramebufferTextureLayer", catch_unwind(||(self.framebuffertexturelayer)(target, attachment, texture, level, layer)));
33313		#[cfg(feature = "diagnose")]
33314		if let Ok(ret) = ret {
33315			return to_result("glFramebufferTextureLayer", ret, self.glGetError());
33316		} else {
33317			return ret
33318		}
33319		#[cfg(not(feature = "diagnose"))]
33320		return ret;
33321	}
33322	#[inline(always)]
33323	fn glMapBufferRange(&self, target: GLenum, offset: GLintptr, length: GLsizeiptr, access: GLbitfield) -> Result<*mut c_void> {
33324		let ret = process_catch("glMapBufferRange", catch_unwind(||(self.mapbufferrange)(target, offset, length, access)));
33325		#[cfg(feature = "diagnose")]
33326		if let Ok(ret) = ret {
33327			return to_result("glMapBufferRange", ret, self.glGetError());
33328		} else {
33329			return ret
33330		}
33331		#[cfg(not(feature = "diagnose"))]
33332		return ret;
33333	}
33334	#[inline(always)]
33335	fn glFlushMappedBufferRange(&self, target: GLenum, offset: GLintptr, length: GLsizeiptr) -> Result<()> {
33336		let ret = process_catch("glFlushMappedBufferRange", catch_unwind(||(self.flushmappedbufferrange)(target, offset, length)));
33337		#[cfg(feature = "diagnose")]
33338		if let Ok(ret) = ret {
33339			return to_result("glFlushMappedBufferRange", ret, self.glGetError());
33340		} else {
33341			return ret
33342		}
33343		#[cfg(not(feature = "diagnose"))]
33344		return ret;
33345	}
33346	#[inline(always)]
33347	fn glBindVertexArray(&self, array: GLuint) -> Result<()> {
33348		let ret = process_catch("glBindVertexArray", catch_unwind(||(self.bindvertexarray)(array)));
33349		#[cfg(feature = "diagnose")]
33350		if let Ok(ret) = ret {
33351			return to_result("glBindVertexArray", ret, self.glGetError());
33352		} else {
33353			return ret
33354		}
33355		#[cfg(not(feature = "diagnose"))]
33356		return ret;
33357	}
33358	#[inline(always)]
33359	fn glDeleteVertexArrays(&self, n: GLsizei, arrays: *const GLuint) -> Result<()> {
33360		let ret = process_catch("glDeleteVertexArrays", catch_unwind(||(self.deletevertexarrays)(n, arrays)));
33361		#[cfg(feature = "diagnose")]
33362		if let Ok(ret) = ret {
33363			return to_result("glDeleteVertexArrays", ret, self.glGetError());
33364		} else {
33365			return ret
33366		}
33367		#[cfg(not(feature = "diagnose"))]
33368		return ret;
33369	}
33370	#[inline(always)]
33371	fn glGenVertexArrays(&self, n: GLsizei, arrays: *mut GLuint) -> Result<()> {
33372		let ret = process_catch("glGenVertexArrays", catch_unwind(||(self.genvertexarrays)(n, arrays)));
33373		#[cfg(feature = "diagnose")]
33374		if let Ok(ret) = ret {
33375			return to_result("glGenVertexArrays", ret, self.glGetError());
33376		} else {
33377			return ret
33378		}
33379		#[cfg(not(feature = "diagnose"))]
33380		return ret;
33381	}
33382	#[inline(always)]
33383	fn glIsVertexArray(&self, array: GLuint) -> Result<GLboolean> {
33384		let ret = process_catch("glIsVertexArray", catch_unwind(||(self.isvertexarray)(array)));
33385		#[cfg(feature = "diagnose")]
33386		if let Ok(ret) = ret {
33387			return to_result("glIsVertexArray", ret, self.glGetError());
33388		} else {
33389			return ret
33390		}
33391		#[cfg(not(feature = "diagnose"))]
33392		return ret;
33393	}
33394	#[inline(always)]
33395	fn glGetIntegeri_v(&self, target: GLenum, index: GLuint, data: *mut GLint) -> Result<()> {
33396		let ret = process_catch("glGetIntegeri_v", catch_unwind(||(self.getintegeri_v)(target, index, data)));
33397		#[cfg(feature = "diagnose")]
33398		if let Ok(ret) = ret {
33399			return to_result("glGetIntegeri_v", ret, self.glGetError());
33400		} else {
33401			return ret
33402		}
33403		#[cfg(not(feature = "diagnose"))]
33404		return ret;
33405	}
33406	#[inline(always)]
33407	fn glBeginTransformFeedback(&self, primitiveMode: GLenum) -> Result<()> {
33408		let ret = process_catch("glBeginTransformFeedback", catch_unwind(||(self.begintransformfeedback)(primitiveMode)));
33409		#[cfg(feature = "diagnose")]
33410		if let Ok(ret) = ret {
33411			return to_result("glBeginTransformFeedback", ret, self.glGetError());
33412		} else {
33413			return ret
33414		}
33415		#[cfg(not(feature = "diagnose"))]
33416		return ret;
33417	}
33418	#[inline(always)]
33419	fn glEndTransformFeedback(&self) -> Result<()> {
33420		let ret = process_catch("glEndTransformFeedback", catch_unwind(||(self.endtransformfeedback)()));
33421		#[cfg(feature = "diagnose")]
33422		if let Ok(ret) = ret {
33423			return to_result("glEndTransformFeedback", ret, self.glGetError());
33424		} else {
33425			return ret
33426		}
33427		#[cfg(not(feature = "diagnose"))]
33428		return ret;
33429	}
33430	#[inline(always)]
33431	fn glBindBufferRange(&self, target: GLenum, index: GLuint, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()> {
33432		let ret = process_catch("glBindBufferRange", catch_unwind(||(self.bindbufferrange)(target, index, buffer, offset, size)));
33433		#[cfg(feature = "diagnose")]
33434		if let Ok(ret) = ret {
33435			return to_result("glBindBufferRange", ret, self.glGetError());
33436		} else {
33437			return ret
33438		}
33439		#[cfg(not(feature = "diagnose"))]
33440		return ret;
33441	}
33442	#[inline(always)]
33443	fn glBindBufferBase(&self, target: GLenum, index: GLuint, buffer: GLuint) -> Result<()> {
33444		let ret = process_catch("glBindBufferBase", catch_unwind(||(self.bindbufferbase)(target, index, buffer)));
33445		#[cfg(feature = "diagnose")]
33446		if let Ok(ret) = ret {
33447			return to_result("glBindBufferBase", ret, self.glGetError());
33448		} else {
33449			return ret
33450		}
33451		#[cfg(not(feature = "diagnose"))]
33452		return ret;
33453	}
33454	#[inline(always)]
33455	fn glTransformFeedbackVaryings(&self, program: GLuint, count: GLsizei, varyings: *const *const GLchar, bufferMode: GLenum) -> Result<()> {
33456		let ret = process_catch("glTransformFeedbackVaryings", catch_unwind(||(self.transformfeedbackvaryings)(program, count, varyings, bufferMode)));
33457		#[cfg(feature = "diagnose")]
33458		if let Ok(ret) = ret {
33459			return to_result("glTransformFeedbackVaryings", ret, self.glGetError());
33460		} else {
33461			return ret
33462		}
33463		#[cfg(not(feature = "diagnose"))]
33464		return ret;
33465	}
33466	#[inline(always)]
33467	fn glGetTransformFeedbackVarying(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLsizei, type_: *mut GLenum, name: *mut GLchar) -> Result<()> {
33468		let ret = process_catch("glGetTransformFeedbackVarying", catch_unwind(||(self.gettransformfeedbackvarying)(program, index, bufSize, length, size, type_, name)));
33469		#[cfg(feature = "diagnose")]
33470		if let Ok(ret) = ret {
33471			return to_result("glGetTransformFeedbackVarying", ret, self.glGetError());
33472		} else {
33473			return ret
33474		}
33475		#[cfg(not(feature = "diagnose"))]
33476		return ret;
33477	}
33478	#[inline(always)]
33479	fn glVertexAttribIPointer(&self, index: GLuint, size: GLint, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()> {
33480		let ret = process_catch("glVertexAttribIPointer", catch_unwind(||(self.vertexattribipointer)(index, size, type_, stride, pointer)));
33481		#[cfg(feature = "diagnose")]
33482		if let Ok(ret) = ret {
33483			return to_result("glVertexAttribIPointer", ret, self.glGetError());
33484		} else {
33485			return ret
33486		}
33487		#[cfg(not(feature = "diagnose"))]
33488		return ret;
33489	}
33490	#[inline(always)]
33491	fn glGetVertexAttribIiv(&self, index: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
33492		let ret = process_catch("glGetVertexAttribIiv", catch_unwind(||(self.getvertexattribiiv)(index, pname, params)));
33493		#[cfg(feature = "diagnose")]
33494		if let Ok(ret) = ret {
33495			return to_result("glGetVertexAttribIiv", ret, self.glGetError());
33496		} else {
33497			return ret
33498		}
33499		#[cfg(not(feature = "diagnose"))]
33500		return ret;
33501	}
33502	#[inline(always)]
33503	fn glGetVertexAttribIuiv(&self, index: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()> {
33504		let ret = process_catch("glGetVertexAttribIuiv", catch_unwind(||(self.getvertexattribiuiv)(index, pname, params)));
33505		#[cfg(feature = "diagnose")]
33506		if let Ok(ret) = ret {
33507			return to_result("glGetVertexAttribIuiv", ret, self.glGetError());
33508		} else {
33509			return ret
33510		}
33511		#[cfg(not(feature = "diagnose"))]
33512		return ret;
33513	}
33514	#[inline(always)]
33515	fn glVertexAttribI4i(&self, index: GLuint, x: GLint, y: GLint, z: GLint, w: GLint) -> Result<()> {
33516		let ret = process_catch("glVertexAttribI4i", catch_unwind(||(self.vertexattribi4i)(index, x, y, z, w)));
33517		#[cfg(feature = "diagnose")]
33518		if let Ok(ret) = ret {
33519			return to_result("glVertexAttribI4i", ret, self.glGetError());
33520		} else {
33521			return ret
33522		}
33523		#[cfg(not(feature = "diagnose"))]
33524		return ret;
33525	}
33526	#[inline(always)]
33527	fn glVertexAttribI4ui(&self, index: GLuint, x: GLuint, y: GLuint, z: GLuint, w: GLuint) -> Result<()> {
33528		let ret = process_catch("glVertexAttribI4ui", catch_unwind(||(self.vertexattribi4ui)(index, x, y, z, w)));
33529		#[cfg(feature = "diagnose")]
33530		if let Ok(ret) = ret {
33531			return to_result("glVertexAttribI4ui", ret, self.glGetError());
33532		} else {
33533			return ret
33534		}
33535		#[cfg(not(feature = "diagnose"))]
33536		return ret;
33537	}
33538	#[inline(always)]
33539	fn glVertexAttribI4iv(&self, index: GLuint, v: *const GLint) -> Result<()> {
33540		let ret = process_catch("glVertexAttribI4iv", catch_unwind(||(self.vertexattribi4iv)(index, v)));
33541		#[cfg(feature = "diagnose")]
33542		if let Ok(ret) = ret {
33543			return to_result("glVertexAttribI4iv", ret, self.glGetError());
33544		} else {
33545			return ret
33546		}
33547		#[cfg(not(feature = "diagnose"))]
33548		return ret;
33549	}
33550	#[inline(always)]
33551	fn glVertexAttribI4uiv(&self, index: GLuint, v: *const GLuint) -> Result<()> {
33552		let ret = process_catch("glVertexAttribI4uiv", catch_unwind(||(self.vertexattribi4uiv)(index, v)));
33553		#[cfg(feature = "diagnose")]
33554		if let Ok(ret) = ret {
33555			return to_result("glVertexAttribI4uiv", ret, self.glGetError());
33556		} else {
33557			return ret
33558		}
33559		#[cfg(not(feature = "diagnose"))]
33560		return ret;
33561	}
33562	#[inline(always)]
33563	fn glGetUniformuiv(&self, program: GLuint, location: GLint, params: *mut GLuint) -> Result<()> {
33564		let ret = process_catch("glGetUniformuiv", catch_unwind(||(self.getuniformuiv)(program, location, params)));
33565		#[cfg(feature = "diagnose")]
33566		if let Ok(ret) = ret {
33567			return to_result("glGetUniformuiv", ret, self.glGetError());
33568		} else {
33569			return ret
33570		}
33571		#[cfg(not(feature = "diagnose"))]
33572		return ret;
33573	}
33574	#[inline(always)]
33575	fn glGetFragDataLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint> {
33576		let ret = process_catch("glGetFragDataLocation", catch_unwind(||(self.getfragdatalocation)(program, name)));
33577		#[cfg(feature = "diagnose")]
33578		if let Ok(ret) = ret {
33579			return to_result("glGetFragDataLocation", ret, self.glGetError());
33580		} else {
33581			return ret
33582		}
33583		#[cfg(not(feature = "diagnose"))]
33584		return ret;
33585	}
33586	#[inline(always)]
33587	fn glUniform1ui(&self, location: GLint, v0: GLuint) -> Result<()> {
33588		let ret = process_catch("glUniform1ui", catch_unwind(||(self.uniform1ui)(location, v0)));
33589		#[cfg(feature = "diagnose")]
33590		if let Ok(ret) = ret {
33591			return to_result("glUniform1ui", ret, self.glGetError());
33592		} else {
33593			return ret
33594		}
33595		#[cfg(not(feature = "diagnose"))]
33596		return ret;
33597	}
33598	#[inline(always)]
33599	fn glUniform2ui(&self, location: GLint, v0: GLuint, v1: GLuint) -> Result<()> {
33600		let ret = process_catch("glUniform2ui", catch_unwind(||(self.uniform2ui)(location, v0, v1)));
33601		#[cfg(feature = "diagnose")]
33602		if let Ok(ret) = ret {
33603			return to_result("glUniform2ui", ret, self.glGetError());
33604		} else {
33605			return ret
33606		}
33607		#[cfg(not(feature = "diagnose"))]
33608		return ret;
33609	}
33610	#[inline(always)]
33611	fn glUniform3ui(&self, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint) -> Result<()> {
33612		let ret = process_catch("glUniform3ui", catch_unwind(||(self.uniform3ui)(location, v0, v1, v2)));
33613		#[cfg(feature = "diagnose")]
33614		if let Ok(ret) = ret {
33615			return to_result("glUniform3ui", ret, self.glGetError());
33616		} else {
33617			return ret
33618		}
33619		#[cfg(not(feature = "diagnose"))]
33620		return ret;
33621	}
33622	#[inline(always)]
33623	fn glUniform4ui(&self, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint, v3: GLuint) -> Result<()> {
33624		let ret = process_catch("glUniform4ui", catch_unwind(||(self.uniform4ui)(location, v0, v1, v2, v3)));
33625		#[cfg(feature = "diagnose")]
33626		if let Ok(ret) = ret {
33627			return to_result("glUniform4ui", ret, self.glGetError());
33628		} else {
33629			return ret
33630		}
33631		#[cfg(not(feature = "diagnose"))]
33632		return ret;
33633	}
33634	#[inline(always)]
33635	fn glUniform1uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
33636		let ret = process_catch("glUniform1uiv", catch_unwind(||(self.uniform1uiv)(location, count, value)));
33637		#[cfg(feature = "diagnose")]
33638		if let Ok(ret) = ret {
33639			return to_result("glUniform1uiv", ret, self.glGetError());
33640		} else {
33641			return ret
33642		}
33643		#[cfg(not(feature = "diagnose"))]
33644		return ret;
33645	}
33646	#[inline(always)]
33647	fn glUniform2uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
33648		let ret = process_catch("glUniform2uiv", catch_unwind(||(self.uniform2uiv)(location, count, value)));
33649		#[cfg(feature = "diagnose")]
33650		if let Ok(ret) = ret {
33651			return to_result("glUniform2uiv", ret, self.glGetError());
33652		} else {
33653			return ret
33654		}
33655		#[cfg(not(feature = "diagnose"))]
33656		return ret;
33657	}
33658	#[inline(always)]
33659	fn glUniform3uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
33660		let ret = process_catch("glUniform3uiv", catch_unwind(||(self.uniform3uiv)(location, count, value)));
33661		#[cfg(feature = "diagnose")]
33662		if let Ok(ret) = ret {
33663			return to_result("glUniform3uiv", ret, self.glGetError());
33664		} else {
33665			return ret
33666		}
33667		#[cfg(not(feature = "diagnose"))]
33668		return ret;
33669	}
33670	#[inline(always)]
33671	fn glUniform4uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
33672		let ret = process_catch("glUniform4uiv", catch_unwind(||(self.uniform4uiv)(location, count, value)));
33673		#[cfg(feature = "diagnose")]
33674		if let Ok(ret) = ret {
33675			return to_result("glUniform4uiv", ret, self.glGetError());
33676		} else {
33677			return ret
33678		}
33679		#[cfg(not(feature = "diagnose"))]
33680		return ret;
33681	}
33682	#[inline(always)]
33683	fn glClearBufferiv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLint) -> Result<()> {
33684		let ret = process_catch("glClearBufferiv", catch_unwind(||(self.clearbufferiv)(buffer, drawbuffer, value)));
33685		#[cfg(feature = "diagnose")]
33686		if let Ok(ret) = ret {
33687			return to_result("glClearBufferiv", ret, self.glGetError());
33688		} else {
33689			return ret
33690		}
33691		#[cfg(not(feature = "diagnose"))]
33692		return ret;
33693	}
33694	#[inline(always)]
33695	fn glClearBufferuiv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLuint) -> Result<()> {
33696		let ret = process_catch("glClearBufferuiv", catch_unwind(||(self.clearbufferuiv)(buffer, drawbuffer, value)));
33697		#[cfg(feature = "diagnose")]
33698		if let Ok(ret) = ret {
33699			return to_result("glClearBufferuiv", ret, self.glGetError());
33700		} else {
33701			return ret
33702		}
33703		#[cfg(not(feature = "diagnose"))]
33704		return ret;
33705	}
33706	#[inline(always)]
33707	fn glClearBufferfv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLfloat) -> Result<()> {
33708		let ret = process_catch("glClearBufferfv", catch_unwind(||(self.clearbufferfv)(buffer, drawbuffer, value)));
33709		#[cfg(feature = "diagnose")]
33710		if let Ok(ret) = ret {
33711			return to_result("glClearBufferfv", ret, self.glGetError());
33712		} else {
33713			return ret
33714		}
33715		#[cfg(not(feature = "diagnose"))]
33716		return ret;
33717	}
33718	#[inline(always)]
33719	fn glClearBufferfi(&self, buffer: GLenum, drawbuffer: GLint, depth: GLfloat, stencil: GLint) -> Result<()> {
33720		let ret = process_catch("glClearBufferfi", catch_unwind(||(self.clearbufferfi)(buffer, drawbuffer, depth, stencil)));
33721		#[cfg(feature = "diagnose")]
33722		if let Ok(ret) = ret {
33723			return to_result("glClearBufferfi", ret, self.glGetError());
33724		} else {
33725			return ret
33726		}
33727		#[cfg(not(feature = "diagnose"))]
33728		return ret;
33729	}
33730	#[inline(always)]
33731	fn glGetStringi(&self, name: GLenum, index: GLuint) -> Result<&'static str> {
33732		let ret = process_catch("glGetStringi", catch_unwind(||unsafe{CStr::from_ptr((self.getstringi)(name, index) as *const i8)}.to_str().unwrap()));
33733		#[cfg(feature = "diagnose")]
33734		if let Ok(ret) = ret {
33735			return to_result("glGetStringi", ret, self.glGetError());
33736		} else {
33737			return ret
33738		}
33739		#[cfg(not(feature = "diagnose"))]
33740		return ret;
33741	}
33742	#[inline(always)]
33743	fn glCopyBufferSubData(&self, readTarget: GLenum, writeTarget: GLenum, readOffset: GLintptr, writeOffset: GLintptr, size: GLsizeiptr) -> Result<()> {
33744		let ret = process_catch("glCopyBufferSubData", catch_unwind(||(self.copybuffersubdata)(readTarget, writeTarget, readOffset, writeOffset, size)));
33745		#[cfg(feature = "diagnose")]
33746		if let Ok(ret) = ret {
33747			return to_result("glCopyBufferSubData", ret, self.glGetError());
33748		} else {
33749			return ret
33750		}
33751		#[cfg(not(feature = "diagnose"))]
33752		return ret;
33753	}
33754	#[inline(always)]
33755	fn glGetUniformIndices(&self, program: GLuint, uniformCount: GLsizei, uniformNames: *const *const GLchar, uniformIndices: *mut GLuint) -> Result<()> {
33756		let ret = process_catch("glGetUniformIndices", catch_unwind(||(self.getuniformindices)(program, uniformCount, uniformNames, uniformIndices)));
33757		#[cfg(feature = "diagnose")]
33758		if let Ok(ret) = ret {
33759			return to_result("glGetUniformIndices", ret, self.glGetError());
33760		} else {
33761			return ret
33762		}
33763		#[cfg(not(feature = "diagnose"))]
33764		return ret;
33765	}
33766	#[inline(always)]
33767	fn glGetActiveUniformsiv(&self, program: GLuint, uniformCount: GLsizei, uniformIndices: *const GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
33768		let ret = process_catch("glGetActiveUniformsiv", catch_unwind(||(self.getactiveuniformsiv)(program, uniformCount, uniformIndices, pname, params)));
33769		#[cfg(feature = "diagnose")]
33770		if let Ok(ret) = ret {
33771			return to_result("glGetActiveUniformsiv", ret, self.glGetError());
33772		} else {
33773			return ret
33774		}
33775		#[cfg(not(feature = "diagnose"))]
33776		return ret;
33777	}
33778	#[inline(always)]
33779	fn glGetUniformBlockIndex(&self, program: GLuint, uniformBlockName: *const GLchar) -> Result<GLuint> {
33780		let ret = process_catch("glGetUniformBlockIndex", catch_unwind(||(self.getuniformblockindex)(program, uniformBlockName)));
33781		#[cfg(feature = "diagnose")]
33782		if let Ok(ret) = ret {
33783			return to_result("glGetUniformBlockIndex", ret, self.glGetError());
33784		} else {
33785			return ret
33786		}
33787		#[cfg(not(feature = "diagnose"))]
33788		return ret;
33789	}
33790	#[inline(always)]
33791	fn glGetActiveUniformBlockiv(&self, program: GLuint, uniformBlockIndex: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
33792		let ret = process_catch("glGetActiveUniformBlockiv", catch_unwind(||(self.getactiveuniformblockiv)(program, uniformBlockIndex, pname, params)));
33793		#[cfg(feature = "diagnose")]
33794		if let Ok(ret) = ret {
33795			return to_result("glGetActiveUniformBlockiv", ret, self.glGetError());
33796		} else {
33797			return ret
33798		}
33799		#[cfg(not(feature = "diagnose"))]
33800		return ret;
33801	}
33802	#[inline(always)]
33803	fn glGetActiveUniformBlockName(&self, program: GLuint, uniformBlockIndex: GLuint, bufSize: GLsizei, length: *mut GLsizei, uniformBlockName: *mut GLchar) -> Result<()> {
33804		let ret = process_catch("glGetActiveUniformBlockName", catch_unwind(||(self.getactiveuniformblockname)(program, uniformBlockIndex, bufSize, length, uniformBlockName)));
33805		#[cfg(feature = "diagnose")]
33806		if let Ok(ret) = ret {
33807			return to_result("glGetActiveUniformBlockName", ret, self.glGetError());
33808		} else {
33809			return ret
33810		}
33811		#[cfg(not(feature = "diagnose"))]
33812		return ret;
33813	}
33814	#[inline(always)]
33815	fn glUniformBlockBinding(&self, program: GLuint, uniformBlockIndex: GLuint, uniformBlockBinding: GLuint) -> Result<()> {
33816		let ret = process_catch("glUniformBlockBinding", catch_unwind(||(self.uniformblockbinding)(program, uniformBlockIndex, uniformBlockBinding)));
33817		#[cfg(feature = "diagnose")]
33818		if let Ok(ret) = ret {
33819			return to_result("glUniformBlockBinding", ret, self.glGetError());
33820		} else {
33821			return ret
33822		}
33823		#[cfg(not(feature = "diagnose"))]
33824		return ret;
33825	}
33826	#[inline(always)]
33827	fn glDrawArraysInstanced(&self, mode: GLenum, first: GLint, count: GLsizei, instancecount: GLsizei) -> Result<()> {
33828		let ret = process_catch("glDrawArraysInstanced", catch_unwind(||(self.drawarraysinstanced)(mode, first, count, instancecount)));
33829		#[cfg(feature = "diagnose")]
33830		if let Ok(ret) = ret {
33831			return to_result("glDrawArraysInstanced", ret, self.glGetError());
33832		} else {
33833			return ret
33834		}
33835		#[cfg(not(feature = "diagnose"))]
33836		return ret;
33837	}
33838	#[inline(always)]
33839	fn glDrawElementsInstanced(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei) -> Result<()> {
33840		let ret = process_catch("glDrawElementsInstanced", catch_unwind(||(self.drawelementsinstanced)(mode, count, type_, indices, instancecount)));
33841		#[cfg(feature = "diagnose")]
33842		if let Ok(ret) = ret {
33843			return to_result("glDrawElementsInstanced", ret, self.glGetError());
33844		} else {
33845			return ret
33846		}
33847		#[cfg(not(feature = "diagnose"))]
33848		return ret;
33849	}
33850	#[inline(always)]
33851	fn glFenceSync(&self, condition: GLenum, flags: GLbitfield) -> Result<GLsync> {
33852		let ret = process_catch("glFenceSync", catch_unwind(||(self.fencesync)(condition, flags)));
33853		#[cfg(feature = "diagnose")]
33854		if let Ok(ret) = ret {
33855			return to_result("glFenceSync", ret, self.glGetError());
33856		} else {
33857			return ret
33858		}
33859		#[cfg(not(feature = "diagnose"))]
33860		return ret;
33861	}
33862	#[inline(always)]
33863	fn glIsSync(&self, sync: GLsync) -> Result<GLboolean> {
33864		let ret = process_catch("glIsSync", catch_unwind(||(self.issync)(sync)));
33865		#[cfg(feature = "diagnose")]
33866		if let Ok(ret) = ret {
33867			return to_result("glIsSync", ret, self.glGetError());
33868		} else {
33869			return ret
33870		}
33871		#[cfg(not(feature = "diagnose"))]
33872		return ret;
33873	}
33874	#[inline(always)]
33875	fn glDeleteSync(&self, sync: GLsync) -> Result<()> {
33876		let ret = process_catch("glDeleteSync", catch_unwind(||(self.deletesync)(sync)));
33877		#[cfg(feature = "diagnose")]
33878		if let Ok(ret) = ret {
33879			return to_result("glDeleteSync", ret, self.glGetError());
33880		} else {
33881			return ret
33882		}
33883		#[cfg(not(feature = "diagnose"))]
33884		return ret;
33885	}
33886	#[inline(always)]
33887	fn glClientWaitSync(&self, sync: GLsync, flags: GLbitfield, timeout: GLuint64) -> Result<GLenum> {
33888		let ret = process_catch("glClientWaitSync", catch_unwind(||(self.clientwaitsync)(sync, flags, timeout)));
33889		#[cfg(feature = "diagnose")]
33890		if let Ok(ret) = ret {
33891			return to_result("glClientWaitSync", ret, self.glGetError());
33892		} else {
33893			return ret
33894		}
33895		#[cfg(not(feature = "diagnose"))]
33896		return ret;
33897	}
33898	#[inline(always)]
33899	fn glWaitSync(&self, sync: GLsync, flags: GLbitfield, timeout: GLuint64) -> Result<()> {
33900		let ret = process_catch("glWaitSync", catch_unwind(||(self.waitsync)(sync, flags, timeout)));
33901		#[cfg(feature = "diagnose")]
33902		if let Ok(ret) = ret {
33903			return to_result("glWaitSync", ret, self.glGetError());
33904		} else {
33905			return ret
33906		}
33907		#[cfg(not(feature = "diagnose"))]
33908		return ret;
33909	}
33910	#[inline(always)]
33911	fn glGetInteger64v(&self, pname: GLenum, data: *mut GLint64) -> Result<()> {
33912		let ret = process_catch("glGetInteger64v", catch_unwind(||(self.getinteger64v)(pname, data)));
33913		#[cfg(feature = "diagnose")]
33914		if let Ok(ret) = ret {
33915			return to_result("glGetInteger64v", ret, self.glGetError());
33916		} else {
33917			return ret
33918		}
33919		#[cfg(not(feature = "diagnose"))]
33920		return ret;
33921	}
33922	#[inline(always)]
33923	fn glGetSynciv(&self, sync: GLsync, pname: GLenum, bufSize: GLsizei, length: *mut GLsizei, values: *mut GLint) -> Result<()> {
33924		let ret = process_catch("glGetSynciv", catch_unwind(||(self.getsynciv)(sync, pname, bufSize, length, values)));
33925		#[cfg(feature = "diagnose")]
33926		if let Ok(ret) = ret {
33927			return to_result("glGetSynciv", ret, self.glGetError());
33928		} else {
33929			return ret
33930		}
33931		#[cfg(not(feature = "diagnose"))]
33932		return ret;
33933	}
33934	#[inline(always)]
33935	fn glGetInteger64i_v(&self, target: GLenum, index: GLuint, data: *mut GLint64) -> Result<()> {
33936		let ret = process_catch("glGetInteger64i_v", catch_unwind(||(self.getinteger64i_v)(target, index, data)));
33937		#[cfg(feature = "diagnose")]
33938		if let Ok(ret) = ret {
33939			return to_result("glGetInteger64i_v", ret, self.glGetError());
33940		} else {
33941			return ret
33942		}
33943		#[cfg(not(feature = "diagnose"))]
33944		return ret;
33945	}
33946	#[inline(always)]
33947	fn glGetBufferParameteri64v(&self, target: GLenum, pname: GLenum, params: *mut GLint64) -> Result<()> {
33948		let ret = process_catch("glGetBufferParameteri64v", catch_unwind(||(self.getbufferparameteri64v)(target, pname, params)));
33949		#[cfg(feature = "diagnose")]
33950		if let Ok(ret) = ret {
33951			return to_result("glGetBufferParameteri64v", ret, self.glGetError());
33952		} else {
33953			return ret
33954		}
33955		#[cfg(not(feature = "diagnose"))]
33956		return ret;
33957	}
33958	#[inline(always)]
33959	fn glGenSamplers(&self, count: GLsizei, samplers: *mut GLuint) -> Result<()> {
33960		let ret = process_catch("glGenSamplers", catch_unwind(||(self.gensamplers)(count, samplers)));
33961		#[cfg(feature = "diagnose")]
33962		if let Ok(ret) = ret {
33963			return to_result("glGenSamplers", ret, self.glGetError());
33964		} else {
33965			return ret
33966		}
33967		#[cfg(not(feature = "diagnose"))]
33968		return ret;
33969	}
33970	#[inline(always)]
33971	fn glDeleteSamplers(&self, count: GLsizei, samplers: *const GLuint) -> Result<()> {
33972		let ret = process_catch("glDeleteSamplers", catch_unwind(||(self.deletesamplers)(count, samplers)));
33973		#[cfg(feature = "diagnose")]
33974		if let Ok(ret) = ret {
33975			return to_result("glDeleteSamplers", ret, self.glGetError());
33976		} else {
33977			return ret
33978		}
33979		#[cfg(not(feature = "diagnose"))]
33980		return ret;
33981	}
33982	#[inline(always)]
33983	fn glIsSampler(&self, sampler: GLuint) -> Result<GLboolean> {
33984		let ret = process_catch("glIsSampler", catch_unwind(||(self.issampler)(sampler)));
33985		#[cfg(feature = "diagnose")]
33986		if let Ok(ret) = ret {
33987			return to_result("glIsSampler", ret, self.glGetError());
33988		} else {
33989			return ret
33990		}
33991		#[cfg(not(feature = "diagnose"))]
33992		return ret;
33993	}
33994	#[inline(always)]
33995	fn glBindSampler(&self, unit: GLuint, sampler: GLuint) -> Result<()> {
33996		let ret = process_catch("glBindSampler", catch_unwind(||(self.bindsampler)(unit, sampler)));
33997		#[cfg(feature = "diagnose")]
33998		if let Ok(ret) = ret {
33999			return to_result("glBindSampler", ret, self.glGetError());
34000		} else {
34001			return ret
34002		}
34003		#[cfg(not(feature = "diagnose"))]
34004		return ret;
34005	}
34006	#[inline(always)]
34007	fn glSamplerParameteri(&self, sampler: GLuint, pname: GLenum, param: GLint) -> Result<()> {
34008		let ret = process_catch("glSamplerParameteri", catch_unwind(||(self.samplerparameteri)(sampler, pname, param)));
34009		#[cfg(feature = "diagnose")]
34010		if let Ok(ret) = ret {
34011			return to_result("glSamplerParameteri", ret, self.glGetError());
34012		} else {
34013			return ret
34014		}
34015		#[cfg(not(feature = "diagnose"))]
34016		return ret;
34017	}
34018	#[inline(always)]
34019	fn glSamplerParameteriv(&self, sampler: GLuint, pname: GLenum, param: *const GLint) -> Result<()> {
34020		let ret = process_catch("glSamplerParameteriv", catch_unwind(||(self.samplerparameteriv)(sampler, pname, param)));
34021		#[cfg(feature = "diagnose")]
34022		if let Ok(ret) = ret {
34023			return to_result("glSamplerParameteriv", ret, self.glGetError());
34024		} else {
34025			return ret
34026		}
34027		#[cfg(not(feature = "diagnose"))]
34028		return ret;
34029	}
34030	#[inline(always)]
34031	fn glSamplerParameterf(&self, sampler: GLuint, pname: GLenum, param: GLfloat) -> Result<()> {
34032		let ret = process_catch("glSamplerParameterf", catch_unwind(||(self.samplerparameterf)(sampler, pname, param)));
34033		#[cfg(feature = "diagnose")]
34034		if let Ok(ret) = ret {
34035			return to_result("glSamplerParameterf", ret, self.glGetError());
34036		} else {
34037			return ret
34038		}
34039		#[cfg(not(feature = "diagnose"))]
34040		return ret;
34041	}
34042	#[inline(always)]
34043	fn glSamplerParameterfv(&self, sampler: GLuint, pname: GLenum, param: *const GLfloat) -> Result<()> {
34044		let ret = process_catch("glSamplerParameterfv", catch_unwind(||(self.samplerparameterfv)(sampler, pname, param)));
34045		#[cfg(feature = "diagnose")]
34046		if let Ok(ret) = ret {
34047			return to_result("glSamplerParameterfv", ret, self.glGetError());
34048		} else {
34049			return ret
34050		}
34051		#[cfg(not(feature = "diagnose"))]
34052		return ret;
34053	}
34054	#[inline(always)]
34055	fn glGetSamplerParameteriv(&self, sampler: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
34056		let ret = process_catch("glGetSamplerParameteriv", catch_unwind(||(self.getsamplerparameteriv)(sampler, pname, params)));
34057		#[cfg(feature = "diagnose")]
34058		if let Ok(ret) = ret {
34059			return to_result("glGetSamplerParameteriv", ret, self.glGetError());
34060		} else {
34061			return ret
34062		}
34063		#[cfg(not(feature = "diagnose"))]
34064		return ret;
34065	}
34066	#[inline(always)]
34067	fn glGetSamplerParameterfv(&self, sampler: GLuint, pname: GLenum, params: *mut GLfloat) -> Result<()> {
34068		let ret = process_catch("glGetSamplerParameterfv", catch_unwind(||(self.getsamplerparameterfv)(sampler, pname, params)));
34069		#[cfg(feature = "diagnose")]
34070		if let Ok(ret) = ret {
34071			return to_result("glGetSamplerParameterfv", ret, self.glGetError());
34072		} else {
34073			return ret
34074		}
34075		#[cfg(not(feature = "diagnose"))]
34076		return ret;
34077	}
34078	#[inline(always)]
34079	fn glVertexAttribDivisor(&self, index: GLuint, divisor: GLuint) -> Result<()> {
34080		let ret = process_catch("glVertexAttribDivisor", catch_unwind(||(self.vertexattribdivisor)(index, divisor)));
34081		#[cfg(feature = "diagnose")]
34082		if let Ok(ret) = ret {
34083			return to_result("glVertexAttribDivisor", ret, self.glGetError());
34084		} else {
34085			return ret
34086		}
34087		#[cfg(not(feature = "diagnose"))]
34088		return ret;
34089	}
34090	#[inline(always)]
34091	fn glBindTransformFeedback(&self, target: GLenum, id: GLuint) -> Result<()> {
34092		let ret = process_catch("glBindTransformFeedback", catch_unwind(||(self.bindtransformfeedback)(target, id)));
34093		#[cfg(feature = "diagnose")]
34094		if let Ok(ret) = ret {
34095			return to_result("glBindTransformFeedback", ret, self.glGetError());
34096		} else {
34097			return ret
34098		}
34099		#[cfg(not(feature = "diagnose"))]
34100		return ret;
34101	}
34102	#[inline(always)]
34103	fn glDeleteTransformFeedbacks(&self, n: GLsizei, ids: *const GLuint) -> Result<()> {
34104		let ret = process_catch("glDeleteTransformFeedbacks", catch_unwind(||(self.deletetransformfeedbacks)(n, ids)));
34105		#[cfg(feature = "diagnose")]
34106		if let Ok(ret) = ret {
34107			return to_result("glDeleteTransformFeedbacks", ret, self.glGetError());
34108		} else {
34109			return ret
34110		}
34111		#[cfg(not(feature = "diagnose"))]
34112		return ret;
34113	}
34114	#[inline(always)]
34115	fn glGenTransformFeedbacks(&self, n: GLsizei, ids: *mut GLuint) -> Result<()> {
34116		let ret = process_catch("glGenTransformFeedbacks", catch_unwind(||(self.gentransformfeedbacks)(n, ids)));
34117		#[cfg(feature = "diagnose")]
34118		if let Ok(ret) = ret {
34119			return to_result("glGenTransformFeedbacks", ret, self.glGetError());
34120		} else {
34121			return ret
34122		}
34123		#[cfg(not(feature = "diagnose"))]
34124		return ret;
34125	}
34126	#[inline(always)]
34127	fn glIsTransformFeedback(&self, id: GLuint) -> Result<GLboolean> {
34128		let ret = process_catch("glIsTransformFeedback", catch_unwind(||(self.istransformfeedback)(id)));
34129		#[cfg(feature = "diagnose")]
34130		if let Ok(ret) = ret {
34131			return to_result("glIsTransformFeedback", ret, self.glGetError());
34132		} else {
34133			return ret
34134		}
34135		#[cfg(not(feature = "diagnose"))]
34136		return ret;
34137	}
34138	#[inline(always)]
34139	fn glPauseTransformFeedback(&self) -> Result<()> {
34140		let ret = process_catch("glPauseTransformFeedback", catch_unwind(||(self.pausetransformfeedback)()));
34141		#[cfg(feature = "diagnose")]
34142		if let Ok(ret) = ret {
34143			return to_result("glPauseTransformFeedback", ret, self.glGetError());
34144		} else {
34145			return ret
34146		}
34147		#[cfg(not(feature = "diagnose"))]
34148		return ret;
34149	}
34150	#[inline(always)]
34151	fn glResumeTransformFeedback(&self) -> Result<()> {
34152		let ret = process_catch("glResumeTransformFeedback", catch_unwind(||(self.resumetransformfeedback)()));
34153		#[cfg(feature = "diagnose")]
34154		if let Ok(ret) = ret {
34155			return to_result("glResumeTransformFeedback", ret, self.glGetError());
34156		} else {
34157			return ret
34158		}
34159		#[cfg(not(feature = "diagnose"))]
34160		return ret;
34161	}
34162	#[inline(always)]
34163	fn glGetProgramBinary(&self, program: GLuint, bufSize: GLsizei, length: *mut GLsizei, binaryFormat: *mut GLenum, binary: *mut c_void) -> Result<()> {
34164		let ret = process_catch("glGetProgramBinary", catch_unwind(||(self.getprogrambinary)(program, bufSize, length, binaryFormat, binary)));
34165		#[cfg(feature = "diagnose")]
34166		if let Ok(ret) = ret {
34167			return to_result("glGetProgramBinary", ret, self.glGetError());
34168		} else {
34169			return ret
34170		}
34171		#[cfg(not(feature = "diagnose"))]
34172		return ret;
34173	}
34174	#[inline(always)]
34175	fn glProgramBinary(&self, program: GLuint, binaryFormat: GLenum, binary: *const c_void, length: GLsizei) -> Result<()> {
34176		let ret = process_catch("glProgramBinary", catch_unwind(||(self.programbinary)(program, binaryFormat, binary, length)));
34177		#[cfg(feature = "diagnose")]
34178		if let Ok(ret) = ret {
34179			return to_result("glProgramBinary", ret, self.glGetError());
34180		} else {
34181			return ret
34182		}
34183		#[cfg(not(feature = "diagnose"))]
34184		return ret;
34185	}
34186	#[inline(always)]
34187	fn glProgramParameteri(&self, program: GLuint, pname: GLenum, value: GLint) -> Result<()> {
34188		let ret = process_catch("glProgramParameteri", catch_unwind(||(self.programparameteri)(program, pname, value)));
34189		#[cfg(feature = "diagnose")]
34190		if let Ok(ret) = ret {
34191			return to_result("glProgramParameteri", ret, self.glGetError());
34192		} else {
34193			return ret
34194		}
34195		#[cfg(not(feature = "diagnose"))]
34196		return ret;
34197	}
34198	#[inline(always)]
34199	fn glInvalidateFramebuffer(&self, target: GLenum, numAttachments: GLsizei, attachments: *const GLenum) -> Result<()> {
34200		let ret = process_catch("glInvalidateFramebuffer", catch_unwind(||(self.invalidateframebuffer)(target, numAttachments, attachments)));
34201		#[cfg(feature = "diagnose")]
34202		if let Ok(ret) = ret {
34203			return to_result("glInvalidateFramebuffer", ret, self.glGetError());
34204		} else {
34205			return ret
34206		}
34207		#[cfg(not(feature = "diagnose"))]
34208		return ret;
34209	}
34210	#[inline(always)]
34211	fn glInvalidateSubFramebuffer(&self, target: GLenum, numAttachments: GLsizei, attachments: *const GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
34212		let ret = process_catch("glInvalidateSubFramebuffer", catch_unwind(||(self.invalidatesubframebuffer)(target, numAttachments, attachments, x, y, width, height)));
34213		#[cfg(feature = "diagnose")]
34214		if let Ok(ret) = ret {
34215			return to_result("glInvalidateSubFramebuffer", ret, self.glGetError());
34216		} else {
34217			return ret
34218		}
34219		#[cfg(not(feature = "diagnose"))]
34220		return ret;
34221	}
34222	#[inline(always)]
34223	fn glTexStorage2D(&self, target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()> {
34224		let ret = process_catch("glTexStorage2D", catch_unwind(||(self.texstorage2d)(target, levels, internalformat, width, height)));
34225		#[cfg(feature = "diagnose")]
34226		if let Ok(ret) = ret {
34227			return to_result("glTexStorage2D", ret, self.glGetError());
34228		} else {
34229			return ret
34230		}
34231		#[cfg(not(feature = "diagnose"))]
34232		return ret;
34233	}
34234	#[inline(always)]
34235	fn glTexStorage3D(&self, target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei) -> Result<()> {
34236		let ret = process_catch("glTexStorage3D", catch_unwind(||(self.texstorage3d)(target, levels, internalformat, width, height, depth)));
34237		#[cfg(feature = "diagnose")]
34238		if let Ok(ret) = ret {
34239			return to_result("glTexStorage3D", ret, self.glGetError());
34240		} else {
34241			return ret
34242		}
34243		#[cfg(not(feature = "diagnose"))]
34244		return ret;
34245	}
34246	#[inline(always)]
34247	fn glGetInternalformativ(&self, target: GLenum, internalformat: GLenum, pname: GLenum, bufSize: GLsizei, params: *mut GLint) -> Result<()> {
34248		let ret = process_catch("glGetInternalformativ", catch_unwind(||(self.getinternalformativ)(target, internalformat, pname, bufSize, params)));
34249		#[cfg(feature = "diagnose")]
34250		if let Ok(ret) = ret {
34251			return to_result("glGetInternalformativ", ret, self.glGetError());
34252		} else {
34253			return ret
34254		}
34255		#[cfg(not(feature = "diagnose"))]
34256		return ret;
34257	}
34258}
34259
34260impl EsVersion30 {
34261	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
34262		let (_spec, major, minor, release) = base.get_version();
34263		if (major, minor, release) < (3, 0, 0) {
34264			return Self::default();
34265		}
34266		Self {
34267			available: true,
34268			geterror: {let proc = get_proc_address("glGetError"); if proc == null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
34269			readbuffer: {let proc = get_proc_address("glReadBuffer"); if proc == null() {dummy_pfnglreadbufferproc} else {unsafe{transmute(proc)}}},
34270			drawrangeelements: {let proc = get_proc_address("glDrawRangeElements"); if proc == null() {dummy_pfngldrawrangeelementsproc} else {unsafe{transmute(proc)}}},
34271			teximage3d: {let proc = get_proc_address("glTexImage3D"); if proc == null() {dummy_pfnglteximage3dproc} else {unsafe{transmute(proc)}}},
34272			texsubimage3d: {let proc = get_proc_address("glTexSubImage3D"); if proc == null() {dummy_pfngltexsubimage3dproc} else {unsafe{transmute(proc)}}},
34273			copytexsubimage3d: {let proc = get_proc_address("glCopyTexSubImage3D"); if proc == null() {dummy_pfnglcopytexsubimage3dproc} else {unsafe{transmute(proc)}}},
34274			compressedteximage3d: {let proc = get_proc_address("glCompressedTexImage3D"); if proc == null() {dummy_pfnglcompressedteximage3dproc} else {unsafe{transmute(proc)}}},
34275			compressedtexsubimage3d: {let proc = get_proc_address("glCompressedTexSubImage3D"); if proc == null() {dummy_pfnglcompressedtexsubimage3dproc} else {unsafe{transmute(proc)}}},
34276			genqueries: {let proc = get_proc_address("glGenQueries"); if proc == null() {dummy_pfnglgenqueriesproc} else {unsafe{transmute(proc)}}},
34277			deletequeries: {let proc = get_proc_address("glDeleteQueries"); if proc == null() {dummy_pfngldeletequeriesproc} else {unsafe{transmute(proc)}}},
34278			isquery: {let proc = get_proc_address("glIsQuery"); if proc == null() {dummy_pfnglisqueryproc} else {unsafe{transmute(proc)}}},
34279			beginquery: {let proc = get_proc_address("glBeginQuery"); if proc == null() {dummy_pfnglbeginqueryproc} else {unsafe{transmute(proc)}}},
34280			endquery: {let proc = get_proc_address("glEndQuery"); if proc == null() {dummy_pfnglendqueryproc} else {unsafe{transmute(proc)}}},
34281			getqueryiv: {let proc = get_proc_address("glGetQueryiv"); if proc == null() {dummy_pfnglgetqueryivproc} else {unsafe{transmute(proc)}}},
34282			getqueryobjectuiv: {let proc = get_proc_address("glGetQueryObjectuiv"); if proc == null() {dummy_pfnglgetqueryobjectuivproc} else {unsafe{transmute(proc)}}},
34283			unmapbuffer: {let proc = get_proc_address("glUnmapBuffer"); if proc == null() {dummy_pfnglunmapbufferproc} else {unsafe{transmute(proc)}}},
34284			getbufferpointerv: {let proc = get_proc_address("glGetBufferPointerv"); if proc == null() {dummy_pfnglgetbufferpointervproc} else {unsafe{transmute(proc)}}},
34285			drawbuffers: {let proc = get_proc_address("glDrawBuffers"); if proc == null() {dummy_pfngldrawbuffersproc} else {unsafe{transmute(proc)}}},
34286			uniformmatrix2x3fv: {let proc = get_proc_address("glUniformMatrix2x3fv"); if proc == null() {dummy_pfngluniformmatrix2x3fvproc} else {unsafe{transmute(proc)}}},
34287			uniformmatrix3x2fv: {let proc = get_proc_address("glUniformMatrix3x2fv"); if proc == null() {dummy_pfngluniformmatrix3x2fvproc} else {unsafe{transmute(proc)}}},
34288			uniformmatrix2x4fv: {let proc = get_proc_address("glUniformMatrix2x4fv"); if proc == null() {dummy_pfngluniformmatrix2x4fvproc} else {unsafe{transmute(proc)}}},
34289			uniformmatrix4x2fv: {let proc = get_proc_address("glUniformMatrix4x2fv"); if proc == null() {dummy_pfngluniformmatrix4x2fvproc} else {unsafe{transmute(proc)}}},
34290			uniformmatrix3x4fv: {let proc = get_proc_address("glUniformMatrix3x4fv"); if proc == null() {dummy_pfngluniformmatrix3x4fvproc} else {unsafe{transmute(proc)}}},
34291			uniformmatrix4x3fv: {let proc = get_proc_address("glUniformMatrix4x3fv"); if proc == null() {dummy_pfngluniformmatrix4x3fvproc} else {unsafe{transmute(proc)}}},
34292			blitframebuffer: {let proc = get_proc_address("glBlitFramebuffer"); if proc == null() {dummy_pfnglblitframebufferproc} else {unsafe{transmute(proc)}}},
34293			renderbufferstoragemultisample: {let proc = get_proc_address("glRenderbufferStorageMultisample"); if proc == null() {dummy_pfnglrenderbufferstoragemultisampleproc} else {unsafe{transmute(proc)}}},
34294			framebuffertexturelayer: {let proc = get_proc_address("glFramebufferTextureLayer"); if proc == null() {dummy_pfnglframebuffertexturelayerproc} else {unsafe{transmute(proc)}}},
34295			mapbufferrange: {let proc = get_proc_address("glMapBufferRange"); if proc == null() {dummy_pfnglmapbufferrangeproc} else {unsafe{transmute(proc)}}},
34296			flushmappedbufferrange: {let proc = get_proc_address("glFlushMappedBufferRange"); if proc == null() {dummy_pfnglflushmappedbufferrangeproc} else {unsafe{transmute(proc)}}},
34297			bindvertexarray: {let proc = get_proc_address("glBindVertexArray"); if proc == null() {dummy_pfnglbindvertexarrayproc} else {unsafe{transmute(proc)}}},
34298			deletevertexarrays: {let proc = get_proc_address("glDeleteVertexArrays"); if proc == null() {dummy_pfngldeletevertexarraysproc} else {unsafe{transmute(proc)}}},
34299			genvertexarrays: {let proc = get_proc_address("glGenVertexArrays"); if proc == null() {dummy_pfnglgenvertexarraysproc} else {unsafe{transmute(proc)}}},
34300			isvertexarray: {let proc = get_proc_address("glIsVertexArray"); if proc == null() {dummy_pfnglisvertexarrayproc} else {unsafe{transmute(proc)}}},
34301			getintegeri_v: {let proc = get_proc_address("glGetIntegeri_v"); if proc == null() {dummy_pfnglgetintegeri_vproc} else {unsafe{transmute(proc)}}},
34302			begintransformfeedback: {let proc = get_proc_address("glBeginTransformFeedback"); if proc == null() {dummy_pfnglbegintransformfeedbackproc} else {unsafe{transmute(proc)}}},
34303			endtransformfeedback: {let proc = get_proc_address("glEndTransformFeedback"); if proc == null() {dummy_pfnglendtransformfeedbackproc} else {unsafe{transmute(proc)}}},
34304			bindbufferrange: {let proc = get_proc_address("glBindBufferRange"); if proc == null() {dummy_pfnglbindbufferrangeproc} else {unsafe{transmute(proc)}}},
34305			bindbufferbase: {let proc = get_proc_address("glBindBufferBase"); if proc == null() {dummy_pfnglbindbufferbaseproc} else {unsafe{transmute(proc)}}},
34306			transformfeedbackvaryings: {let proc = get_proc_address("glTransformFeedbackVaryings"); if proc == null() {dummy_pfngltransformfeedbackvaryingsproc} else {unsafe{transmute(proc)}}},
34307			gettransformfeedbackvarying: {let proc = get_proc_address("glGetTransformFeedbackVarying"); if proc == null() {dummy_pfnglgettransformfeedbackvaryingproc} else {unsafe{transmute(proc)}}},
34308			vertexattribipointer: {let proc = get_proc_address("glVertexAttribIPointer"); if proc == null() {dummy_pfnglvertexattribipointerproc} else {unsafe{transmute(proc)}}},
34309			getvertexattribiiv: {let proc = get_proc_address("glGetVertexAttribIiv"); if proc == null() {dummy_pfnglgetvertexattribiivproc} else {unsafe{transmute(proc)}}},
34310			getvertexattribiuiv: {let proc = get_proc_address("glGetVertexAttribIuiv"); if proc == null() {dummy_pfnglgetvertexattribiuivproc} else {unsafe{transmute(proc)}}},
34311			vertexattribi4i: {let proc = get_proc_address("glVertexAttribI4i"); if proc == null() {dummy_pfnglvertexattribi4iproc} else {unsafe{transmute(proc)}}},
34312			vertexattribi4ui: {let proc = get_proc_address("glVertexAttribI4ui"); if proc == null() {dummy_pfnglvertexattribi4uiproc} else {unsafe{transmute(proc)}}},
34313			vertexattribi4iv: {let proc = get_proc_address("glVertexAttribI4iv"); if proc == null() {dummy_pfnglvertexattribi4ivproc} else {unsafe{transmute(proc)}}},
34314			vertexattribi4uiv: {let proc = get_proc_address("glVertexAttribI4uiv"); if proc == null() {dummy_pfnglvertexattribi4uivproc} else {unsafe{transmute(proc)}}},
34315			getuniformuiv: {let proc = get_proc_address("glGetUniformuiv"); if proc == null() {dummy_pfnglgetuniformuivproc} else {unsafe{transmute(proc)}}},
34316			getfragdatalocation: {let proc = get_proc_address("glGetFragDataLocation"); if proc == null() {dummy_pfnglgetfragdatalocationproc} else {unsafe{transmute(proc)}}},
34317			uniform1ui: {let proc = get_proc_address("glUniform1ui"); if proc == null() {dummy_pfngluniform1uiproc} else {unsafe{transmute(proc)}}},
34318			uniform2ui: {let proc = get_proc_address("glUniform2ui"); if proc == null() {dummy_pfngluniform2uiproc} else {unsafe{transmute(proc)}}},
34319			uniform3ui: {let proc = get_proc_address("glUniform3ui"); if proc == null() {dummy_pfngluniform3uiproc} else {unsafe{transmute(proc)}}},
34320			uniform4ui: {let proc = get_proc_address("glUniform4ui"); if proc == null() {dummy_pfngluniform4uiproc} else {unsafe{transmute(proc)}}},
34321			uniform1uiv: {let proc = get_proc_address("glUniform1uiv"); if proc == null() {dummy_pfngluniform1uivproc} else {unsafe{transmute(proc)}}},
34322			uniform2uiv: {let proc = get_proc_address("glUniform2uiv"); if proc == null() {dummy_pfngluniform2uivproc} else {unsafe{transmute(proc)}}},
34323			uniform3uiv: {let proc = get_proc_address("glUniform3uiv"); if proc == null() {dummy_pfngluniform3uivproc} else {unsafe{transmute(proc)}}},
34324			uniform4uiv: {let proc = get_proc_address("glUniform4uiv"); if proc == null() {dummy_pfngluniform4uivproc} else {unsafe{transmute(proc)}}},
34325			clearbufferiv: {let proc = get_proc_address("glClearBufferiv"); if proc == null() {dummy_pfnglclearbufferivproc} else {unsafe{transmute(proc)}}},
34326			clearbufferuiv: {let proc = get_proc_address("glClearBufferuiv"); if proc == null() {dummy_pfnglclearbufferuivproc} else {unsafe{transmute(proc)}}},
34327			clearbufferfv: {let proc = get_proc_address("glClearBufferfv"); if proc == null() {dummy_pfnglclearbufferfvproc} else {unsafe{transmute(proc)}}},
34328			clearbufferfi: {let proc = get_proc_address("glClearBufferfi"); if proc == null() {dummy_pfnglclearbufferfiproc} else {unsafe{transmute(proc)}}},
34329			getstringi: {let proc = get_proc_address("glGetStringi"); if proc == null() {dummy_pfnglgetstringiproc} else {unsafe{transmute(proc)}}},
34330			copybuffersubdata: {let proc = get_proc_address("glCopyBufferSubData"); if proc == null() {dummy_pfnglcopybuffersubdataproc} else {unsafe{transmute(proc)}}},
34331			getuniformindices: {let proc = get_proc_address("glGetUniformIndices"); if proc == null() {dummy_pfnglgetuniformindicesproc} else {unsafe{transmute(proc)}}},
34332			getactiveuniformsiv: {let proc = get_proc_address("glGetActiveUniformsiv"); if proc == null() {dummy_pfnglgetactiveuniformsivproc} else {unsafe{transmute(proc)}}},
34333			getuniformblockindex: {let proc = get_proc_address("glGetUniformBlockIndex"); if proc == null() {dummy_pfnglgetuniformblockindexproc} else {unsafe{transmute(proc)}}},
34334			getactiveuniformblockiv: {let proc = get_proc_address("glGetActiveUniformBlockiv"); if proc == null() {dummy_pfnglgetactiveuniformblockivproc} else {unsafe{transmute(proc)}}},
34335			getactiveuniformblockname: {let proc = get_proc_address("glGetActiveUniformBlockName"); if proc == null() {dummy_pfnglgetactiveuniformblocknameproc} else {unsafe{transmute(proc)}}},
34336			uniformblockbinding: {let proc = get_proc_address("glUniformBlockBinding"); if proc == null() {dummy_pfngluniformblockbindingproc} else {unsafe{transmute(proc)}}},
34337			drawarraysinstanced: {let proc = get_proc_address("glDrawArraysInstanced"); if proc == null() {dummy_pfngldrawarraysinstancedproc} else {unsafe{transmute(proc)}}},
34338			drawelementsinstanced: {let proc = get_proc_address("glDrawElementsInstanced"); if proc == null() {dummy_pfngldrawelementsinstancedproc} else {unsafe{transmute(proc)}}},
34339			fencesync: {let proc = get_proc_address("glFenceSync"); if proc == null() {dummy_pfnglfencesyncproc} else {unsafe{transmute(proc)}}},
34340			issync: {let proc = get_proc_address("glIsSync"); if proc == null() {dummy_pfnglissyncproc} else {unsafe{transmute(proc)}}},
34341			deletesync: {let proc = get_proc_address("glDeleteSync"); if proc == null() {dummy_pfngldeletesyncproc} else {unsafe{transmute(proc)}}},
34342			clientwaitsync: {let proc = get_proc_address("glClientWaitSync"); if proc == null() {dummy_pfnglclientwaitsyncproc} else {unsafe{transmute(proc)}}},
34343			waitsync: {let proc = get_proc_address("glWaitSync"); if proc == null() {dummy_pfnglwaitsyncproc} else {unsafe{transmute(proc)}}},
34344			getinteger64v: {let proc = get_proc_address("glGetInteger64v"); if proc == null() {dummy_pfnglgetinteger64vproc} else {unsafe{transmute(proc)}}},
34345			getsynciv: {let proc = get_proc_address("glGetSynciv"); if proc == null() {dummy_pfnglgetsyncivproc} else {unsafe{transmute(proc)}}},
34346			getinteger64i_v: {let proc = get_proc_address("glGetInteger64i_v"); if proc == null() {dummy_pfnglgetinteger64i_vproc} else {unsafe{transmute(proc)}}},
34347			getbufferparameteri64v: {let proc = get_proc_address("glGetBufferParameteri64v"); if proc == null() {dummy_pfnglgetbufferparameteri64vproc} else {unsafe{transmute(proc)}}},
34348			gensamplers: {let proc = get_proc_address("glGenSamplers"); if proc == null() {dummy_pfnglgensamplersproc} else {unsafe{transmute(proc)}}},
34349			deletesamplers: {let proc = get_proc_address("glDeleteSamplers"); if proc == null() {dummy_pfngldeletesamplersproc} else {unsafe{transmute(proc)}}},
34350			issampler: {let proc = get_proc_address("glIsSampler"); if proc == null() {dummy_pfnglissamplerproc} else {unsafe{transmute(proc)}}},
34351			bindsampler: {let proc = get_proc_address("glBindSampler"); if proc == null() {dummy_pfnglbindsamplerproc} else {unsafe{transmute(proc)}}},
34352			samplerparameteri: {let proc = get_proc_address("glSamplerParameteri"); if proc == null() {dummy_pfnglsamplerparameteriproc} else {unsafe{transmute(proc)}}},
34353			samplerparameteriv: {let proc = get_proc_address("glSamplerParameteriv"); if proc == null() {dummy_pfnglsamplerparameterivproc} else {unsafe{transmute(proc)}}},
34354			samplerparameterf: {let proc = get_proc_address("glSamplerParameterf"); if proc == null() {dummy_pfnglsamplerparameterfproc} else {unsafe{transmute(proc)}}},
34355			samplerparameterfv: {let proc = get_proc_address("glSamplerParameterfv"); if proc == null() {dummy_pfnglsamplerparameterfvproc} else {unsafe{transmute(proc)}}},
34356			getsamplerparameteriv: {let proc = get_proc_address("glGetSamplerParameteriv"); if proc == null() {dummy_pfnglgetsamplerparameterivproc} else {unsafe{transmute(proc)}}},
34357			getsamplerparameterfv: {let proc = get_proc_address("glGetSamplerParameterfv"); if proc == null() {dummy_pfnglgetsamplerparameterfvproc} else {unsafe{transmute(proc)}}},
34358			vertexattribdivisor: {let proc = get_proc_address("glVertexAttribDivisor"); if proc == null() {dummy_pfnglvertexattribdivisorproc} else {unsafe{transmute(proc)}}},
34359			bindtransformfeedback: {let proc = get_proc_address("glBindTransformFeedback"); if proc == null() {dummy_pfnglbindtransformfeedbackproc} else {unsafe{transmute(proc)}}},
34360			deletetransformfeedbacks: {let proc = get_proc_address("glDeleteTransformFeedbacks"); if proc == null() {dummy_pfngldeletetransformfeedbacksproc} else {unsafe{transmute(proc)}}},
34361			gentransformfeedbacks: {let proc = get_proc_address("glGenTransformFeedbacks"); if proc == null() {dummy_pfnglgentransformfeedbacksproc} else {unsafe{transmute(proc)}}},
34362			istransformfeedback: {let proc = get_proc_address("glIsTransformFeedback"); if proc == null() {dummy_pfnglistransformfeedbackproc} else {unsafe{transmute(proc)}}},
34363			pausetransformfeedback: {let proc = get_proc_address("glPauseTransformFeedback"); if proc == null() {dummy_pfnglpausetransformfeedbackproc} else {unsafe{transmute(proc)}}},
34364			resumetransformfeedback: {let proc = get_proc_address("glResumeTransformFeedback"); if proc == null() {dummy_pfnglresumetransformfeedbackproc} else {unsafe{transmute(proc)}}},
34365			getprogrambinary: {let proc = get_proc_address("glGetProgramBinary"); if proc == null() {dummy_pfnglgetprogrambinaryproc} else {unsafe{transmute(proc)}}},
34366			programbinary: {let proc = get_proc_address("glProgramBinary"); if proc == null() {dummy_pfnglprogrambinaryproc} else {unsafe{transmute(proc)}}},
34367			programparameteri: {let proc = get_proc_address("glProgramParameteri"); if proc == null() {dummy_pfnglprogramparameteriproc} else {unsafe{transmute(proc)}}},
34368			invalidateframebuffer: {let proc = get_proc_address("glInvalidateFramebuffer"); if proc == null() {dummy_pfnglinvalidateframebufferproc} else {unsafe{transmute(proc)}}},
34369			invalidatesubframebuffer: {let proc = get_proc_address("glInvalidateSubFramebuffer"); if proc == null() {dummy_pfnglinvalidatesubframebufferproc} else {unsafe{transmute(proc)}}},
34370			texstorage2d: {let proc = get_proc_address("glTexStorage2D"); if proc == null() {dummy_pfngltexstorage2dproc} else {unsafe{transmute(proc)}}},
34371			texstorage3d: {let proc = get_proc_address("glTexStorage3D"); if proc == null() {dummy_pfngltexstorage3dproc} else {unsafe{transmute(proc)}}},
34372			getinternalformativ: {let proc = get_proc_address("glGetInternalformativ"); if proc == null() {dummy_pfnglgetinternalformativproc} else {unsafe{transmute(proc)}}},
34373		}
34374	}
34375	#[inline(always)]
34376	pub fn get_available(&self) -> bool {
34377		self.available
34378	}
34379}
34380
34381impl Default for EsVersion30 {
34382	fn default() -> Self {
34383		Self {
34384			available: false,
34385			geterror: dummy_pfnglgeterrorproc,
34386			readbuffer: dummy_pfnglreadbufferproc,
34387			drawrangeelements: dummy_pfngldrawrangeelementsproc,
34388			teximage3d: dummy_pfnglteximage3dproc,
34389			texsubimage3d: dummy_pfngltexsubimage3dproc,
34390			copytexsubimage3d: dummy_pfnglcopytexsubimage3dproc,
34391			compressedteximage3d: dummy_pfnglcompressedteximage3dproc,
34392			compressedtexsubimage3d: dummy_pfnglcompressedtexsubimage3dproc,
34393			genqueries: dummy_pfnglgenqueriesproc,
34394			deletequeries: dummy_pfngldeletequeriesproc,
34395			isquery: dummy_pfnglisqueryproc,
34396			beginquery: dummy_pfnglbeginqueryproc,
34397			endquery: dummy_pfnglendqueryproc,
34398			getqueryiv: dummy_pfnglgetqueryivproc,
34399			getqueryobjectuiv: dummy_pfnglgetqueryobjectuivproc,
34400			unmapbuffer: dummy_pfnglunmapbufferproc,
34401			getbufferpointerv: dummy_pfnglgetbufferpointervproc,
34402			drawbuffers: dummy_pfngldrawbuffersproc,
34403			uniformmatrix2x3fv: dummy_pfngluniformmatrix2x3fvproc,
34404			uniformmatrix3x2fv: dummy_pfngluniformmatrix3x2fvproc,
34405			uniformmatrix2x4fv: dummy_pfngluniformmatrix2x4fvproc,
34406			uniformmatrix4x2fv: dummy_pfngluniformmatrix4x2fvproc,
34407			uniformmatrix3x4fv: dummy_pfngluniformmatrix3x4fvproc,
34408			uniformmatrix4x3fv: dummy_pfngluniformmatrix4x3fvproc,
34409			blitframebuffer: dummy_pfnglblitframebufferproc,
34410			renderbufferstoragemultisample: dummy_pfnglrenderbufferstoragemultisampleproc,
34411			framebuffertexturelayer: dummy_pfnglframebuffertexturelayerproc,
34412			mapbufferrange: dummy_pfnglmapbufferrangeproc,
34413			flushmappedbufferrange: dummy_pfnglflushmappedbufferrangeproc,
34414			bindvertexarray: dummy_pfnglbindvertexarrayproc,
34415			deletevertexarrays: dummy_pfngldeletevertexarraysproc,
34416			genvertexarrays: dummy_pfnglgenvertexarraysproc,
34417			isvertexarray: dummy_pfnglisvertexarrayproc,
34418			getintegeri_v: dummy_pfnglgetintegeri_vproc,
34419			begintransformfeedback: dummy_pfnglbegintransformfeedbackproc,
34420			endtransformfeedback: dummy_pfnglendtransformfeedbackproc,
34421			bindbufferrange: dummy_pfnglbindbufferrangeproc,
34422			bindbufferbase: dummy_pfnglbindbufferbaseproc,
34423			transformfeedbackvaryings: dummy_pfngltransformfeedbackvaryingsproc,
34424			gettransformfeedbackvarying: dummy_pfnglgettransformfeedbackvaryingproc,
34425			vertexattribipointer: dummy_pfnglvertexattribipointerproc,
34426			getvertexattribiiv: dummy_pfnglgetvertexattribiivproc,
34427			getvertexattribiuiv: dummy_pfnglgetvertexattribiuivproc,
34428			vertexattribi4i: dummy_pfnglvertexattribi4iproc,
34429			vertexattribi4ui: dummy_pfnglvertexattribi4uiproc,
34430			vertexattribi4iv: dummy_pfnglvertexattribi4ivproc,
34431			vertexattribi4uiv: dummy_pfnglvertexattribi4uivproc,
34432			getuniformuiv: dummy_pfnglgetuniformuivproc,
34433			getfragdatalocation: dummy_pfnglgetfragdatalocationproc,
34434			uniform1ui: dummy_pfngluniform1uiproc,
34435			uniform2ui: dummy_pfngluniform2uiproc,
34436			uniform3ui: dummy_pfngluniform3uiproc,
34437			uniform4ui: dummy_pfngluniform4uiproc,
34438			uniform1uiv: dummy_pfngluniform1uivproc,
34439			uniform2uiv: dummy_pfngluniform2uivproc,
34440			uniform3uiv: dummy_pfngluniform3uivproc,
34441			uniform4uiv: dummy_pfngluniform4uivproc,
34442			clearbufferiv: dummy_pfnglclearbufferivproc,
34443			clearbufferuiv: dummy_pfnglclearbufferuivproc,
34444			clearbufferfv: dummy_pfnglclearbufferfvproc,
34445			clearbufferfi: dummy_pfnglclearbufferfiproc,
34446			getstringi: dummy_pfnglgetstringiproc,
34447			copybuffersubdata: dummy_pfnglcopybuffersubdataproc,
34448			getuniformindices: dummy_pfnglgetuniformindicesproc,
34449			getactiveuniformsiv: dummy_pfnglgetactiveuniformsivproc,
34450			getuniformblockindex: dummy_pfnglgetuniformblockindexproc,
34451			getactiveuniformblockiv: dummy_pfnglgetactiveuniformblockivproc,
34452			getactiveuniformblockname: dummy_pfnglgetactiveuniformblocknameproc,
34453			uniformblockbinding: dummy_pfngluniformblockbindingproc,
34454			drawarraysinstanced: dummy_pfngldrawarraysinstancedproc,
34455			drawelementsinstanced: dummy_pfngldrawelementsinstancedproc,
34456			fencesync: dummy_pfnglfencesyncproc,
34457			issync: dummy_pfnglissyncproc,
34458			deletesync: dummy_pfngldeletesyncproc,
34459			clientwaitsync: dummy_pfnglclientwaitsyncproc,
34460			waitsync: dummy_pfnglwaitsyncproc,
34461			getinteger64v: dummy_pfnglgetinteger64vproc,
34462			getsynciv: dummy_pfnglgetsyncivproc,
34463			getinteger64i_v: dummy_pfnglgetinteger64i_vproc,
34464			getbufferparameteri64v: dummy_pfnglgetbufferparameteri64vproc,
34465			gensamplers: dummy_pfnglgensamplersproc,
34466			deletesamplers: dummy_pfngldeletesamplersproc,
34467			issampler: dummy_pfnglissamplerproc,
34468			bindsampler: dummy_pfnglbindsamplerproc,
34469			samplerparameteri: dummy_pfnglsamplerparameteriproc,
34470			samplerparameteriv: dummy_pfnglsamplerparameterivproc,
34471			samplerparameterf: dummy_pfnglsamplerparameterfproc,
34472			samplerparameterfv: dummy_pfnglsamplerparameterfvproc,
34473			getsamplerparameteriv: dummy_pfnglgetsamplerparameterivproc,
34474			getsamplerparameterfv: dummy_pfnglgetsamplerparameterfvproc,
34475			vertexattribdivisor: dummy_pfnglvertexattribdivisorproc,
34476			bindtransformfeedback: dummy_pfnglbindtransformfeedbackproc,
34477			deletetransformfeedbacks: dummy_pfngldeletetransformfeedbacksproc,
34478			gentransformfeedbacks: dummy_pfnglgentransformfeedbacksproc,
34479			istransformfeedback: dummy_pfnglistransformfeedbackproc,
34480			pausetransformfeedback: dummy_pfnglpausetransformfeedbackproc,
34481			resumetransformfeedback: dummy_pfnglresumetransformfeedbackproc,
34482			getprogrambinary: dummy_pfnglgetprogrambinaryproc,
34483			programbinary: dummy_pfnglprogrambinaryproc,
34484			programparameteri: dummy_pfnglprogramparameteriproc,
34485			invalidateframebuffer: dummy_pfnglinvalidateframebufferproc,
34486			invalidatesubframebuffer: dummy_pfnglinvalidatesubframebufferproc,
34487			texstorage2d: dummy_pfngltexstorage2dproc,
34488			texstorage3d: dummy_pfngltexstorage3dproc,
34489			getinternalformativ: dummy_pfnglgetinternalformativproc,
34490		}
34491	}
34492}
34493impl Debug for EsVersion30 {
34494	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
34495		if self.available {
34496			f.debug_struct("EsVersion30")
34497			.field("available", &self.available)
34498			.field("readbuffer", unsafe{if transmute::<_, *const c_void>(self.readbuffer) == (dummy_pfnglreadbufferproc as *const c_void) {&null::<PFNGLREADBUFFERPROC>()} else {&self.readbuffer}})
34499			.field("drawrangeelements", unsafe{if transmute::<_, *const c_void>(self.drawrangeelements) == (dummy_pfngldrawrangeelementsproc as *const c_void) {&null::<PFNGLDRAWRANGEELEMENTSPROC>()} else {&self.drawrangeelements}})
34500			.field("teximage3d", unsafe{if transmute::<_, *const c_void>(self.teximage3d) == (dummy_pfnglteximage3dproc as *const c_void) {&null::<PFNGLTEXIMAGE3DPROC>()} else {&self.teximage3d}})
34501			.field("texsubimage3d", unsafe{if transmute::<_, *const c_void>(self.texsubimage3d) == (dummy_pfngltexsubimage3dproc as *const c_void) {&null::<PFNGLTEXSUBIMAGE3DPROC>()} else {&self.texsubimage3d}})
34502			.field("copytexsubimage3d", unsafe{if transmute::<_, *const c_void>(self.copytexsubimage3d) == (dummy_pfnglcopytexsubimage3dproc as *const c_void) {&null::<PFNGLCOPYTEXSUBIMAGE3DPROC>()} else {&self.copytexsubimage3d}})
34503			.field("compressedteximage3d", unsafe{if transmute::<_, *const c_void>(self.compressedteximage3d) == (dummy_pfnglcompressedteximage3dproc as *const c_void) {&null::<PFNGLCOMPRESSEDTEXIMAGE3DPROC>()} else {&self.compressedteximage3d}})
34504			.field("compressedtexsubimage3d", unsafe{if transmute::<_, *const c_void>(self.compressedtexsubimage3d) == (dummy_pfnglcompressedtexsubimage3dproc as *const c_void) {&null::<PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC>()} else {&self.compressedtexsubimage3d}})
34505			.field("genqueries", unsafe{if transmute::<_, *const c_void>(self.genqueries) == (dummy_pfnglgenqueriesproc as *const c_void) {&null::<PFNGLGENQUERIESPROC>()} else {&self.genqueries}})
34506			.field("deletequeries", unsafe{if transmute::<_, *const c_void>(self.deletequeries) == (dummy_pfngldeletequeriesproc as *const c_void) {&null::<PFNGLDELETEQUERIESPROC>()} else {&self.deletequeries}})
34507			.field("isquery", unsafe{if transmute::<_, *const c_void>(self.isquery) == (dummy_pfnglisqueryproc as *const c_void) {&null::<PFNGLISQUERYPROC>()} else {&self.isquery}})
34508			.field("beginquery", unsafe{if transmute::<_, *const c_void>(self.beginquery) == (dummy_pfnglbeginqueryproc as *const c_void) {&null::<PFNGLBEGINQUERYPROC>()} else {&self.beginquery}})
34509			.field("endquery", unsafe{if transmute::<_, *const c_void>(self.endquery) == (dummy_pfnglendqueryproc as *const c_void) {&null::<PFNGLENDQUERYPROC>()} else {&self.endquery}})
34510			.field("getqueryiv", unsafe{if transmute::<_, *const c_void>(self.getqueryiv) == (dummy_pfnglgetqueryivproc as *const c_void) {&null::<PFNGLGETQUERYIVPROC>()} else {&self.getqueryiv}})
34511			.field("getqueryobjectuiv", unsafe{if transmute::<_, *const c_void>(self.getqueryobjectuiv) == (dummy_pfnglgetqueryobjectuivproc as *const c_void) {&null::<PFNGLGETQUERYOBJECTUIVPROC>()} else {&self.getqueryobjectuiv}})
34512			.field("unmapbuffer", unsafe{if transmute::<_, *const c_void>(self.unmapbuffer) == (dummy_pfnglunmapbufferproc as *const c_void) {&null::<PFNGLUNMAPBUFFERPROC>()} else {&self.unmapbuffer}})
34513			.field("getbufferpointerv", unsafe{if transmute::<_, *const c_void>(self.getbufferpointerv) == (dummy_pfnglgetbufferpointervproc as *const c_void) {&null::<PFNGLGETBUFFERPOINTERVPROC>()} else {&self.getbufferpointerv}})
34514			.field("drawbuffers", unsafe{if transmute::<_, *const c_void>(self.drawbuffers) == (dummy_pfngldrawbuffersproc as *const c_void) {&null::<PFNGLDRAWBUFFERSPROC>()} else {&self.drawbuffers}})
34515			.field("uniformmatrix2x3fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix2x3fv) == (dummy_pfngluniformmatrix2x3fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX2X3FVPROC>()} else {&self.uniformmatrix2x3fv}})
34516			.field("uniformmatrix3x2fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix3x2fv) == (dummy_pfngluniformmatrix3x2fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX3X2FVPROC>()} else {&self.uniformmatrix3x2fv}})
34517			.field("uniformmatrix2x4fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix2x4fv) == (dummy_pfngluniformmatrix2x4fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX2X4FVPROC>()} else {&self.uniformmatrix2x4fv}})
34518			.field("uniformmatrix4x2fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix4x2fv) == (dummy_pfngluniformmatrix4x2fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX4X2FVPROC>()} else {&self.uniformmatrix4x2fv}})
34519			.field("uniformmatrix3x4fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix3x4fv) == (dummy_pfngluniformmatrix3x4fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX3X4FVPROC>()} else {&self.uniformmatrix3x4fv}})
34520			.field("uniformmatrix4x3fv", unsafe{if transmute::<_, *const c_void>(self.uniformmatrix4x3fv) == (dummy_pfngluniformmatrix4x3fvproc as *const c_void) {&null::<PFNGLUNIFORMMATRIX4X3FVPROC>()} else {&self.uniformmatrix4x3fv}})
34521			.field("blitframebuffer", unsafe{if transmute::<_, *const c_void>(self.blitframebuffer) == (dummy_pfnglblitframebufferproc as *const c_void) {&null::<PFNGLBLITFRAMEBUFFERPROC>()} else {&self.blitframebuffer}})
34522			.field("renderbufferstoragemultisample", unsafe{if transmute::<_, *const c_void>(self.renderbufferstoragemultisample) == (dummy_pfnglrenderbufferstoragemultisampleproc as *const c_void) {&null::<PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC>()} else {&self.renderbufferstoragemultisample}})
34523			.field("framebuffertexturelayer", unsafe{if transmute::<_, *const c_void>(self.framebuffertexturelayer) == (dummy_pfnglframebuffertexturelayerproc as *const c_void) {&null::<PFNGLFRAMEBUFFERTEXTURELAYERPROC>()} else {&self.framebuffertexturelayer}})
34524			.field("mapbufferrange", unsafe{if transmute::<_, *const c_void>(self.mapbufferrange) == (dummy_pfnglmapbufferrangeproc as *const c_void) {&null::<PFNGLMAPBUFFERRANGEPROC>()} else {&self.mapbufferrange}})
34525			.field("flushmappedbufferrange", unsafe{if transmute::<_, *const c_void>(self.flushmappedbufferrange) == (dummy_pfnglflushmappedbufferrangeproc as *const c_void) {&null::<PFNGLFLUSHMAPPEDBUFFERRANGEPROC>()} else {&self.flushmappedbufferrange}})
34526			.field("bindvertexarray", unsafe{if transmute::<_, *const c_void>(self.bindvertexarray) == (dummy_pfnglbindvertexarrayproc as *const c_void) {&null::<PFNGLBINDVERTEXARRAYPROC>()} else {&self.bindvertexarray}})
34527			.field("deletevertexarrays", unsafe{if transmute::<_, *const c_void>(self.deletevertexarrays) == (dummy_pfngldeletevertexarraysproc as *const c_void) {&null::<PFNGLDELETEVERTEXARRAYSPROC>()} else {&self.deletevertexarrays}})
34528			.field("genvertexarrays", unsafe{if transmute::<_, *const c_void>(self.genvertexarrays) == (dummy_pfnglgenvertexarraysproc as *const c_void) {&null::<PFNGLGENVERTEXARRAYSPROC>()} else {&self.genvertexarrays}})
34529			.field("isvertexarray", unsafe{if transmute::<_, *const c_void>(self.isvertexarray) == (dummy_pfnglisvertexarrayproc as *const c_void) {&null::<PFNGLISVERTEXARRAYPROC>()} else {&self.isvertexarray}})
34530			.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}})
34531			.field("begintransformfeedback", unsafe{if transmute::<_, *const c_void>(self.begintransformfeedback) == (dummy_pfnglbegintransformfeedbackproc as *const c_void) {&null::<PFNGLBEGINTRANSFORMFEEDBACKPROC>()} else {&self.begintransformfeedback}})
34532			.field("endtransformfeedback", unsafe{if transmute::<_, *const c_void>(self.endtransformfeedback) == (dummy_pfnglendtransformfeedbackproc as *const c_void) {&null::<PFNGLENDTRANSFORMFEEDBACKPROC>()} else {&self.endtransformfeedback}})
34533			.field("bindbufferrange", unsafe{if transmute::<_, *const c_void>(self.bindbufferrange) == (dummy_pfnglbindbufferrangeproc as *const c_void) {&null::<PFNGLBINDBUFFERRANGEPROC>()} else {&self.bindbufferrange}})
34534			.field("bindbufferbase", unsafe{if transmute::<_, *const c_void>(self.bindbufferbase) == (dummy_pfnglbindbufferbaseproc as *const c_void) {&null::<PFNGLBINDBUFFERBASEPROC>()} else {&self.bindbufferbase}})
34535			.field("transformfeedbackvaryings", unsafe{if transmute::<_, *const c_void>(self.transformfeedbackvaryings) == (dummy_pfngltransformfeedbackvaryingsproc as *const c_void) {&null::<PFNGLTRANSFORMFEEDBACKVARYINGSPROC>()} else {&self.transformfeedbackvaryings}})
34536			.field("gettransformfeedbackvarying", unsafe{if transmute::<_, *const c_void>(self.gettransformfeedbackvarying) == (dummy_pfnglgettransformfeedbackvaryingproc as *const c_void) {&null::<PFNGLGETTRANSFORMFEEDBACKVARYINGPROC>()} else {&self.gettransformfeedbackvarying}})
34537			.field("vertexattribipointer", unsafe{if transmute::<_, *const c_void>(self.vertexattribipointer) == (dummy_pfnglvertexattribipointerproc as *const c_void) {&null::<PFNGLVERTEXATTRIBIPOINTERPROC>()} else {&self.vertexattribipointer}})
34538			.field("getvertexattribiiv", unsafe{if transmute::<_, *const c_void>(self.getvertexattribiiv) == (dummy_pfnglgetvertexattribiivproc as *const c_void) {&null::<PFNGLGETVERTEXATTRIBIIVPROC>()} else {&self.getvertexattribiiv}})
34539			.field("getvertexattribiuiv", unsafe{if transmute::<_, *const c_void>(self.getvertexattribiuiv) == (dummy_pfnglgetvertexattribiuivproc as *const c_void) {&null::<PFNGLGETVERTEXATTRIBIUIVPROC>()} else {&self.getvertexattribiuiv}})
34540			.field("vertexattribi4i", unsafe{if transmute::<_, *const c_void>(self.vertexattribi4i) == (dummy_pfnglvertexattribi4iproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI4IPROC>()} else {&self.vertexattribi4i}})
34541			.field("vertexattribi4ui", unsafe{if transmute::<_, *const c_void>(self.vertexattribi4ui) == (dummy_pfnglvertexattribi4uiproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI4UIPROC>()} else {&self.vertexattribi4ui}})
34542			.field("vertexattribi4iv", unsafe{if transmute::<_, *const c_void>(self.vertexattribi4iv) == (dummy_pfnglvertexattribi4ivproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI4IVPROC>()} else {&self.vertexattribi4iv}})
34543			.field("vertexattribi4uiv", unsafe{if transmute::<_, *const c_void>(self.vertexattribi4uiv) == (dummy_pfnglvertexattribi4uivproc as *const c_void) {&null::<PFNGLVERTEXATTRIBI4UIVPROC>()} else {&self.vertexattribi4uiv}})
34544			.field("getuniformuiv", unsafe{if transmute::<_, *const c_void>(self.getuniformuiv) == (dummy_pfnglgetuniformuivproc as *const c_void) {&null::<PFNGLGETUNIFORMUIVPROC>()} else {&self.getuniformuiv}})
34545			.field("getfragdatalocation", unsafe{if transmute::<_, *const c_void>(self.getfragdatalocation) == (dummy_pfnglgetfragdatalocationproc as *const c_void) {&null::<PFNGLGETFRAGDATALOCATIONPROC>()} else {&self.getfragdatalocation}})
34546			.field("uniform1ui", unsafe{if transmute::<_, *const c_void>(self.uniform1ui) == (dummy_pfngluniform1uiproc as *const c_void) {&null::<PFNGLUNIFORM1UIPROC>()} else {&self.uniform1ui}})
34547			.field("uniform2ui", unsafe{if transmute::<_, *const c_void>(self.uniform2ui) == (dummy_pfngluniform2uiproc as *const c_void) {&null::<PFNGLUNIFORM2UIPROC>()} else {&self.uniform2ui}})
34548			.field("uniform3ui", unsafe{if transmute::<_, *const c_void>(self.uniform3ui) == (dummy_pfngluniform3uiproc as *const c_void) {&null::<PFNGLUNIFORM3UIPROC>()} else {&self.uniform3ui}})
34549			.field("uniform4ui", unsafe{if transmute::<_, *const c_void>(self.uniform4ui) == (dummy_pfngluniform4uiproc as *const c_void) {&null::<PFNGLUNIFORM4UIPROC>()} else {&self.uniform4ui}})
34550			.field("uniform1uiv", unsafe{if transmute::<_, *const c_void>(self.uniform1uiv) == (dummy_pfngluniform1uivproc as *const c_void) {&null::<PFNGLUNIFORM1UIVPROC>()} else {&self.uniform1uiv}})
34551			.field("uniform2uiv", unsafe{if transmute::<_, *const c_void>(self.uniform2uiv) == (dummy_pfngluniform2uivproc as *const c_void) {&null::<PFNGLUNIFORM2UIVPROC>()} else {&self.uniform2uiv}})
34552			.field("uniform3uiv", unsafe{if transmute::<_, *const c_void>(self.uniform3uiv) == (dummy_pfngluniform3uivproc as *const c_void) {&null::<PFNGLUNIFORM3UIVPROC>()} else {&self.uniform3uiv}})
34553			.field("uniform4uiv", unsafe{if transmute::<_, *const c_void>(self.uniform4uiv) == (dummy_pfngluniform4uivproc as *const c_void) {&null::<PFNGLUNIFORM4UIVPROC>()} else {&self.uniform4uiv}})
34554			.field("clearbufferiv", unsafe{if transmute::<_, *const c_void>(self.clearbufferiv) == (dummy_pfnglclearbufferivproc as *const c_void) {&null::<PFNGLCLEARBUFFERIVPROC>()} else {&self.clearbufferiv}})
34555			.field("clearbufferuiv", unsafe{if transmute::<_, *const c_void>(self.clearbufferuiv) == (dummy_pfnglclearbufferuivproc as *const c_void) {&null::<PFNGLCLEARBUFFERUIVPROC>()} else {&self.clearbufferuiv}})
34556			.field("clearbufferfv", unsafe{if transmute::<_, *const c_void>(self.clearbufferfv) == (dummy_pfnglclearbufferfvproc as *const c_void) {&null::<PFNGLCLEARBUFFERFVPROC>()} else {&self.clearbufferfv}})
34557			.field("clearbufferfi", unsafe{if transmute::<_, *const c_void>(self.clearbufferfi) == (dummy_pfnglclearbufferfiproc as *const c_void) {&null::<PFNGLCLEARBUFFERFIPROC>()} else {&self.clearbufferfi}})
34558			.field("getstringi", unsafe{if transmute::<_, *const c_void>(self.getstringi) == (dummy_pfnglgetstringiproc as *const c_void) {&null::<PFNGLGETSTRINGIPROC>()} else {&self.getstringi}})
34559			.field("copybuffersubdata", unsafe{if transmute::<_, *const c_void>(self.copybuffersubdata) == (dummy_pfnglcopybuffersubdataproc as *const c_void) {&null::<PFNGLCOPYBUFFERSUBDATAPROC>()} else {&self.copybuffersubdata}})
34560			.field("getuniformindices", unsafe{if transmute::<_, *const c_void>(self.getuniformindices) == (dummy_pfnglgetuniformindicesproc as *const c_void) {&null::<PFNGLGETUNIFORMINDICESPROC>()} else {&self.getuniformindices}})
34561			.field("getactiveuniformsiv", unsafe{if transmute::<_, *const c_void>(self.getactiveuniformsiv) == (dummy_pfnglgetactiveuniformsivproc as *const c_void) {&null::<PFNGLGETACTIVEUNIFORMSIVPROC>()} else {&self.getactiveuniformsiv}})
34562			.field("getuniformblockindex", unsafe{if transmute::<_, *const c_void>(self.getuniformblockindex) == (dummy_pfnglgetuniformblockindexproc as *const c_void) {&null::<PFNGLGETUNIFORMBLOCKINDEXPROC>()} else {&self.getuniformblockindex}})
34563			.field("getactiveuniformblockiv", unsafe{if transmute::<_, *const c_void>(self.getactiveuniformblockiv) == (dummy_pfnglgetactiveuniformblockivproc as *const c_void) {&null::<PFNGLGETACTIVEUNIFORMBLOCKIVPROC>()} else {&self.getactiveuniformblockiv}})
34564			.field("getactiveuniformblockname", unsafe{if transmute::<_, *const c_void>(self.getactiveuniformblockname) == (dummy_pfnglgetactiveuniformblocknameproc as *const c_void) {&null::<PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC>()} else {&self.getactiveuniformblockname}})
34565			.field("uniformblockbinding", unsafe{if transmute::<_, *const c_void>(self.uniformblockbinding) == (dummy_pfngluniformblockbindingproc as *const c_void) {&null::<PFNGLUNIFORMBLOCKBINDINGPROC>()} else {&self.uniformblockbinding}})
34566			.field("drawarraysinstanced", unsafe{if transmute::<_, *const c_void>(self.drawarraysinstanced) == (dummy_pfngldrawarraysinstancedproc as *const c_void) {&null::<PFNGLDRAWARRAYSINSTANCEDPROC>()} else {&self.drawarraysinstanced}})
34567			.field("drawelementsinstanced", unsafe{if transmute::<_, *const c_void>(self.drawelementsinstanced) == (dummy_pfngldrawelementsinstancedproc as *const c_void) {&null::<PFNGLDRAWELEMENTSINSTANCEDPROC>()} else {&self.drawelementsinstanced}})
34568			.field("fencesync", unsafe{if transmute::<_, *const c_void>(self.fencesync) == (dummy_pfnglfencesyncproc as *const c_void) {&null::<PFNGLFENCESYNCPROC>()} else {&self.fencesync}})
34569			.field("issync", unsafe{if transmute::<_, *const c_void>(self.issync) == (dummy_pfnglissyncproc as *const c_void) {&null::<PFNGLISSYNCPROC>()} else {&self.issync}})
34570			.field("deletesync", unsafe{if transmute::<_, *const c_void>(self.deletesync) == (dummy_pfngldeletesyncproc as *const c_void) {&null::<PFNGLDELETESYNCPROC>()} else {&self.deletesync}})
34571			.field("clientwaitsync", unsafe{if transmute::<_, *const c_void>(self.clientwaitsync) == (dummy_pfnglclientwaitsyncproc as *const c_void) {&null::<PFNGLCLIENTWAITSYNCPROC>()} else {&self.clientwaitsync}})
34572			.field("waitsync", unsafe{if transmute::<_, *const c_void>(self.waitsync) == (dummy_pfnglwaitsyncproc as *const c_void) {&null::<PFNGLWAITSYNCPROC>()} else {&self.waitsync}})
34573			.field("getinteger64v", unsafe{if transmute::<_, *const c_void>(self.getinteger64v) == (dummy_pfnglgetinteger64vproc as *const c_void) {&null::<PFNGLGETINTEGER64VPROC>()} else {&self.getinteger64v}})
34574			.field("getsynciv", unsafe{if transmute::<_, *const c_void>(self.getsynciv) == (dummy_pfnglgetsyncivproc as *const c_void) {&null::<PFNGLGETSYNCIVPROC>()} else {&self.getsynciv}})
34575			.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}})
34576			.field("getbufferparameteri64v", unsafe{if transmute::<_, *const c_void>(self.getbufferparameteri64v) == (dummy_pfnglgetbufferparameteri64vproc as *const c_void) {&null::<PFNGLGETBUFFERPARAMETERI64VPROC>()} else {&self.getbufferparameteri64v}})
34577			.field("gensamplers", unsafe{if transmute::<_, *const c_void>(self.gensamplers) == (dummy_pfnglgensamplersproc as *const c_void) {&null::<PFNGLGENSAMPLERSPROC>()} else {&self.gensamplers}})
34578			.field("deletesamplers", unsafe{if transmute::<_, *const c_void>(self.deletesamplers) == (dummy_pfngldeletesamplersproc as *const c_void) {&null::<PFNGLDELETESAMPLERSPROC>()} else {&self.deletesamplers}})
34579			.field("issampler", unsafe{if transmute::<_, *const c_void>(self.issampler) == (dummy_pfnglissamplerproc as *const c_void) {&null::<PFNGLISSAMPLERPROC>()} else {&self.issampler}})
34580			.field("bindsampler", unsafe{if transmute::<_, *const c_void>(self.bindsampler) == (dummy_pfnglbindsamplerproc as *const c_void) {&null::<PFNGLBINDSAMPLERPROC>()} else {&self.bindsampler}})
34581			.field("samplerparameteri", unsafe{if transmute::<_, *const c_void>(self.samplerparameteri) == (dummy_pfnglsamplerparameteriproc as *const c_void) {&null::<PFNGLSAMPLERPARAMETERIPROC>()} else {&self.samplerparameteri}})
34582			.field("samplerparameteriv", unsafe{if transmute::<_, *const c_void>(self.samplerparameteriv) == (dummy_pfnglsamplerparameterivproc as *const c_void) {&null::<PFNGLSAMPLERPARAMETERIVPROC>()} else {&self.samplerparameteriv}})
34583			.field("samplerparameterf", unsafe{if transmute::<_, *const c_void>(self.samplerparameterf) == (dummy_pfnglsamplerparameterfproc as *const c_void) {&null::<PFNGLSAMPLERPARAMETERFPROC>()} else {&self.samplerparameterf}})
34584			.field("samplerparameterfv", unsafe{if transmute::<_, *const c_void>(self.samplerparameterfv) == (dummy_pfnglsamplerparameterfvproc as *const c_void) {&null::<PFNGLSAMPLERPARAMETERFVPROC>()} else {&self.samplerparameterfv}})
34585			.field("getsamplerparameteriv", unsafe{if transmute::<_, *const c_void>(self.getsamplerparameteriv) == (dummy_pfnglgetsamplerparameterivproc as *const c_void) {&null::<PFNGLGETSAMPLERPARAMETERIVPROC>()} else {&self.getsamplerparameteriv}})
34586			.field("getsamplerparameterfv", unsafe{if transmute::<_, *const c_void>(self.getsamplerparameterfv) == (dummy_pfnglgetsamplerparameterfvproc as *const c_void) {&null::<PFNGLGETSAMPLERPARAMETERFVPROC>()} else {&self.getsamplerparameterfv}})
34587			.field("vertexattribdivisor", unsafe{if transmute::<_, *const c_void>(self.vertexattribdivisor) == (dummy_pfnglvertexattribdivisorproc as *const c_void) {&null::<PFNGLVERTEXATTRIBDIVISORPROC>()} else {&self.vertexattribdivisor}})
34588			.field("bindtransformfeedback", unsafe{if transmute::<_, *const c_void>(self.bindtransformfeedback) == (dummy_pfnglbindtransformfeedbackproc as *const c_void) {&null::<PFNGLBINDTRANSFORMFEEDBACKPROC>()} else {&self.bindtransformfeedback}})
34589			.field("deletetransformfeedbacks", unsafe{if transmute::<_, *const c_void>(self.deletetransformfeedbacks) == (dummy_pfngldeletetransformfeedbacksproc as *const c_void) {&null::<PFNGLDELETETRANSFORMFEEDBACKSPROC>()} else {&self.deletetransformfeedbacks}})
34590			.field("gentransformfeedbacks", unsafe{if transmute::<_, *const c_void>(self.gentransformfeedbacks) == (dummy_pfnglgentransformfeedbacksproc as *const c_void) {&null::<PFNGLGENTRANSFORMFEEDBACKSPROC>()} else {&self.gentransformfeedbacks}})
34591			.field("istransformfeedback", unsafe{if transmute::<_, *const c_void>(self.istransformfeedback) == (dummy_pfnglistransformfeedbackproc as *const c_void) {&null::<PFNGLISTRANSFORMFEEDBACKPROC>()} else {&self.istransformfeedback}})
34592			.field("pausetransformfeedback", unsafe{if transmute::<_, *const c_void>(self.pausetransformfeedback) == (dummy_pfnglpausetransformfeedbackproc as *const c_void) {&null::<PFNGLPAUSETRANSFORMFEEDBACKPROC>()} else {&self.pausetransformfeedback}})
34593			.field("resumetransformfeedback", unsafe{if transmute::<_, *const c_void>(self.resumetransformfeedback) == (dummy_pfnglresumetransformfeedbackproc as *const c_void) {&null::<PFNGLRESUMETRANSFORMFEEDBACKPROC>()} else {&self.resumetransformfeedback}})
34594			.field("getprogrambinary", unsafe{if transmute::<_, *const c_void>(self.getprogrambinary) == (dummy_pfnglgetprogrambinaryproc as *const c_void) {&null::<PFNGLGETPROGRAMBINARYPROC>()} else {&self.getprogrambinary}})
34595			.field("programbinary", unsafe{if transmute::<_, *const c_void>(self.programbinary) == (dummy_pfnglprogrambinaryproc as *const c_void) {&null::<PFNGLPROGRAMBINARYPROC>()} else {&self.programbinary}})
34596			.field("programparameteri", unsafe{if transmute::<_, *const c_void>(self.programparameteri) == (dummy_pfnglprogramparameteriproc as *const c_void) {&null::<PFNGLPROGRAMPARAMETERIPROC>()} else {&self.programparameteri}})
34597			.field("invalidateframebuffer", unsafe{if transmute::<_, *const c_void>(self.invalidateframebuffer) == (dummy_pfnglinvalidateframebufferproc as *const c_void) {&null::<PFNGLINVALIDATEFRAMEBUFFERPROC>()} else {&self.invalidateframebuffer}})
34598			.field("invalidatesubframebuffer", unsafe{if transmute::<_, *const c_void>(self.invalidatesubframebuffer) == (dummy_pfnglinvalidatesubframebufferproc as *const c_void) {&null::<PFNGLINVALIDATESUBFRAMEBUFFERPROC>()} else {&self.invalidatesubframebuffer}})
34599			.field("texstorage2d", unsafe{if transmute::<_, *const c_void>(self.texstorage2d) == (dummy_pfngltexstorage2dproc as *const c_void) {&null::<PFNGLTEXSTORAGE2DPROC>()} else {&self.texstorage2d}})
34600			.field("texstorage3d", unsafe{if transmute::<_, *const c_void>(self.texstorage3d) == (dummy_pfngltexstorage3dproc as *const c_void) {&null::<PFNGLTEXSTORAGE3DPROC>()} else {&self.texstorage3d}})
34601			.field("getinternalformativ", unsafe{if transmute::<_, *const c_void>(self.getinternalformativ) == (dummy_pfnglgetinternalformativproc as *const c_void) {&null::<PFNGLGETINTERNALFORMATIVPROC>()} else {&self.getinternalformativ}})
34602			.finish()
34603		} else {
34604			f.debug_struct("EsVersion30")
34605			.field("available", &self.available)
34606			.finish_non_exhaustive()
34607		}
34608	}
34609}
34610
34611
34612/// Functions from OpenGL ES version 3.1
34613pub trait ES_GL_3_1 {
34614	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetError.xhtml>
34615	fn glGetError(&self) -> GLenum;
34616
34617	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDispatchCompute.xhtml>
34618	fn glDispatchCompute(&self, num_groups_x: GLuint, num_groups_y: GLuint, num_groups_z: GLuint) -> Result<()>;
34619
34620	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDispatchComputeIndirect.xhtml>
34621	fn glDispatchComputeIndirect(&self, indirect: GLintptr) -> Result<()>;
34622
34623	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawArraysIndirect.xhtml>
34624	fn glDrawArraysIndirect(&self, mode: GLenum, indirect: *const c_void) -> Result<()>;
34625
34626	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawElementsIndirect.xhtml>
34627	fn glDrawElementsIndirect(&self, mode: GLenum, type_: GLenum, indirect: *const c_void) -> Result<()>;
34628
34629	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFramebufferParameteri.xhtml>
34630	fn glFramebufferParameteri(&self, target: GLenum, pname: GLenum, param: GLint) -> Result<()>;
34631
34632	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetFramebufferParameteriv.xhtml>
34633	fn glGetFramebufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
34634
34635	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramInterfaceiv.xhtml>
34636	fn glGetProgramInterfaceiv(&self, program: GLuint, programInterface: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
34637
34638	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramResourceIndex.xhtml>
34639	fn glGetProgramResourceIndex(&self, program: GLuint, programInterface: GLenum, name: *const GLchar) -> Result<GLuint>;
34640
34641	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramResourceName.xhtml>
34642	fn glGetProgramResourceName(&self, program: GLuint, programInterface: GLenum, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, name: *mut GLchar) -> Result<()>;
34643
34644	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramResourceiv.xhtml>
34645	fn glGetProgramResourceiv(&self, program: GLuint, programInterface: GLenum, index: GLuint, propCount: GLsizei, props: *const GLenum, bufSize: GLsizei, length: *mut GLsizei, params: *mut GLint) -> Result<()>;
34646
34647	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramResourceLocation.xhtml>
34648	fn glGetProgramResourceLocation(&self, program: GLuint, programInterface: GLenum, name: *const GLchar) -> Result<GLint>;
34649
34650	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUseProgramStages.xhtml>
34651	fn glUseProgramStages(&self, pipeline: GLuint, stages: GLbitfield, program: GLuint) -> Result<()>;
34652
34653	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glActiveShaderProgram.xhtml>
34654	fn glActiveShaderProgram(&self, pipeline: GLuint, program: GLuint) -> Result<()>;
34655
34656	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCreateShaderProgramv.xhtml>
34657	fn glCreateShaderProgramv(&self, type_: GLenum, count: GLsizei, strings: *const *const GLchar) -> Result<GLuint>;
34658
34659	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindProgramPipeline.xhtml>
34660	fn glBindProgramPipeline(&self, pipeline: GLuint) -> Result<()>;
34661
34662	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteProgramPipelines.xhtml>
34663	fn glDeleteProgramPipelines(&self, n: GLsizei, pipelines: *const GLuint) -> Result<()>;
34664
34665	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenProgramPipelines.xhtml>
34666	fn glGenProgramPipelines(&self, n: GLsizei, pipelines: *mut GLuint) -> Result<()>;
34667
34668	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsProgramPipeline.xhtml>
34669	fn glIsProgramPipeline(&self, pipeline: GLuint) -> Result<GLboolean>;
34670
34671	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramPipelineiv.xhtml>
34672	fn glGetProgramPipelineiv(&self, pipeline: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
34673
34674	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform1i.xhtml>
34675	fn glProgramUniform1i(&self, program: GLuint, location: GLint, v0: GLint) -> Result<()>;
34676
34677	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform2i.xhtml>
34678	fn glProgramUniform2i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint) -> Result<()>;
34679
34680	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform3i.xhtml>
34681	fn glProgramUniform3i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint, v2: GLint) -> Result<()>;
34682
34683	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform4i.xhtml>
34684	fn glProgramUniform4i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint, v2: GLint, v3: GLint) -> Result<()>;
34685
34686	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform1ui.xhtml>
34687	fn glProgramUniform1ui(&self, program: GLuint, location: GLint, v0: GLuint) -> Result<()>;
34688
34689	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform2ui.xhtml>
34690	fn glProgramUniform2ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint) -> Result<()>;
34691
34692	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform3ui.xhtml>
34693	fn glProgramUniform3ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint) -> Result<()>;
34694
34695	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform4ui.xhtml>
34696	fn glProgramUniform4ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint, v3: GLuint) -> Result<()>;
34697
34698	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform1f.xhtml>
34699	fn glProgramUniform1f(&self, program: GLuint, location: GLint, v0: GLfloat) -> Result<()>;
34700
34701	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform2f.xhtml>
34702	fn glProgramUniform2f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat) -> Result<()>;
34703
34704	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform3f.xhtml>
34705	fn glProgramUniform3f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat) -> Result<()>;
34706
34707	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform4f.xhtml>
34708	fn glProgramUniform4f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat, v3: GLfloat) -> Result<()>;
34709
34710	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform1iv.xhtml>
34711	fn glProgramUniform1iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
34712
34713	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform2iv.xhtml>
34714	fn glProgramUniform2iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
34715
34716	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform3iv.xhtml>
34717	fn glProgramUniform3iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
34718
34719	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform4iv.xhtml>
34720	fn glProgramUniform4iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
34721
34722	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform1uiv.xhtml>
34723	fn glProgramUniform1uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
34724
34725	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform2uiv.xhtml>
34726	fn glProgramUniform2uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
34727
34728	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform3uiv.xhtml>
34729	fn glProgramUniform3uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
34730
34731	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform4uiv.xhtml>
34732	fn glProgramUniform4uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
34733
34734	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform1fv.xhtml>
34735	fn glProgramUniform1fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
34736
34737	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform2fv.xhtml>
34738	fn glProgramUniform2fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
34739
34740	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform3fv.xhtml>
34741	fn glProgramUniform3fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
34742
34743	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform4fv.xhtml>
34744	fn glProgramUniform4fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
34745
34746	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix2fv.xhtml>
34747	fn glProgramUniformMatrix2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
34748
34749	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix3fv.xhtml>
34750	fn glProgramUniformMatrix3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
34751
34752	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix4fv.xhtml>
34753	fn glProgramUniformMatrix4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
34754
34755	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix2x3fv.xhtml>
34756	fn glProgramUniformMatrix2x3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
34757
34758	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix3x2fv.xhtml>
34759	fn glProgramUniformMatrix3x2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
34760
34761	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix2x4fv.xhtml>
34762	fn glProgramUniformMatrix2x4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
34763
34764	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix4x2fv.xhtml>
34765	fn glProgramUniformMatrix4x2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
34766
34767	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix3x4fv.xhtml>
34768	fn glProgramUniformMatrix3x4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
34769
34770	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix4x3fv.xhtml>
34771	fn glProgramUniformMatrix4x3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
34772
34773	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glValidateProgramPipeline.xhtml>
34774	fn glValidateProgramPipeline(&self, pipeline: GLuint) -> Result<()>;
34775
34776	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramPipelineInfoLog.xhtml>
34777	fn glGetProgramPipelineInfoLog(&self, pipeline: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()>;
34778
34779	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindImageTexture.xhtml>
34780	fn glBindImageTexture(&self, unit: GLuint, texture: GLuint, level: GLint, layered: GLboolean, layer: GLint, access: GLenum, format: GLenum) -> Result<()>;
34781
34782	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetBooleani_v.xhtml>
34783	fn glGetBooleani_v(&self, target: GLenum, index: GLuint, data: *mut GLboolean) -> Result<()>;
34784
34785	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glMemoryBarrier.xhtml>
34786	fn glMemoryBarrier(&self, barriers: GLbitfield) -> Result<()>;
34787
34788	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glMemoryBarrierByRegion.xhtml>
34789	fn glMemoryBarrierByRegion(&self, barriers: GLbitfield) -> Result<()>;
34790
34791	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexStorage2DMultisample.xhtml>
34792	fn glTexStorage2DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, fixedsamplelocations: GLboolean) -> Result<()>;
34793
34794	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetMultisamplefv.xhtml>
34795	fn glGetMultisamplefv(&self, pname: GLenum, index: GLuint, val: *mut GLfloat) -> Result<()>;
34796
34797	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glSampleMaski.xhtml>
34798	fn glSampleMaski(&self, maskNumber: GLuint, mask: GLbitfield) -> Result<()>;
34799
34800	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetTexLevelParameteriv.xhtml>
34801	fn glGetTexLevelParameteriv(&self, target: GLenum, level: GLint, pname: GLenum, params: *mut GLint) -> Result<()>;
34802
34803	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetTexLevelParameterfv.xhtml>
34804	fn glGetTexLevelParameterfv(&self, target: GLenum, level: GLint, pname: GLenum, params: *mut GLfloat) -> Result<()>;
34805
34806	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindVertexBuffer.xhtml>
34807	fn glBindVertexBuffer(&self, bindingindex: GLuint, buffer: GLuint, offset: GLintptr, stride: GLsizei) -> Result<()>;
34808
34809	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribFormat.xhtml>
34810	fn glVertexAttribFormat(&self, attribindex: GLuint, size: GLint, type_: GLenum, normalized: GLboolean, relativeoffset: GLuint) -> Result<()>;
34811
34812	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribIFormat.xhtml>
34813	fn glVertexAttribIFormat(&self, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()>;
34814
34815	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribBinding.xhtml>
34816	fn glVertexAttribBinding(&self, attribindex: GLuint, bindingindex: GLuint) -> Result<()>;
34817
34818	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexBindingDivisor.xhtml>
34819	fn glVertexBindingDivisor(&self, bindingindex: GLuint, divisor: GLuint) -> Result<()>;
34820}
34821/// Functions from OpenGL ES version 3.1
34822#[derive(Clone, Copy, PartialEq, Eq, Hash)]
34823pub struct EsVersion31 {
34824	/// Is OpenGL ES version 3.1 available
34825	available: bool,
34826
34827	/// The function pointer to `glGetError()`
34828	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetError.xhtml>
34829	pub geterror: PFNGLGETERRORPROC,
34830
34831	/// The function pointer to `glDispatchCompute()`
34832	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDispatchCompute.xhtml>
34833	pub dispatchcompute: PFNGLDISPATCHCOMPUTEPROC,
34834
34835	/// The function pointer to `glDispatchComputeIndirect()`
34836	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDispatchComputeIndirect.xhtml>
34837	pub dispatchcomputeindirect: PFNGLDISPATCHCOMPUTEINDIRECTPROC,
34838
34839	/// The function pointer to `glDrawArraysIndirect()`
34840	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawArraysIndirect.xhtml>
34841	pub drawarraysindirect: PFNGLDRAWARRAYSINDIRECTPROC,
34842
34843	/// The function pointer to `glDrawElementsIndirect()`
34844	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawElementsIndirect.xhtml>
34845	pub drawelementsindirect: PFNGLDRAWELEMENTSINDIRECTPROC,
34846
34847	/// The function pointer to `glFramebufferParameteri()`
34848	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFramebufferParameteri.xhtml>
34849	pub framebufferparameteri: PFNGLFRAMEBUFFERPARAMETERIPROC,
34850
34851	/// The function pointer to `glGetFramebufferParameteriv()`
34852	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetFramebufferParameteriv.xhtml>
34853	pub getframebufferparameteriv: PFNGLGETFRAMEBUFFERPARAMETERIVPROC,
34854
34855	/// The function pointer to `glGetProgramInterfaceiv()`
34856	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramInterfaceiv.xhtml>
34857	pub getprograminterfaceiv: PFNGLGETPROGRAMINTERFACEIVPROC,
34858
34859	/// The function pointer to `glGetProgramResourceIndex()`
34860	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramResourceIndex.xhtml>
34861	pub getprogramresourceindex: PFNGLGETPROGRAMRESOURCEINDEXPROC,
34862
34863	/// The function pointer to `glGetProgramResourceName()`
34864	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramResourceName.xhtml>
34865	pub getprogramresourcename: PFNGLGETPROGRAMRESOURCENAMEPROC,
34866
34867	/// The function pointer to `glGetProgramResourceiv()`
34868	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramResourceiv.xhtml>
34869	pub getprogramresourceiv: PFNGLGETPROGRAMRESOURCEIVPROC,
34870
34871	/// The function pointer to `glGetProgramResourceLocation()`
34872	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramResourceLocation.xhtml>
34873	pub getprogramresourcelocation: PFNGLGETPROGRAMRESOURCELOCATIONPROC,
34874
34875	/// The function pointer to `glUseProgramStages()`
34876	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glUseProgramStages.xhtml>
34877	pub useprogramstages: PFNGLUSEPROGRAMSTAGESPROC,
34878
34879	/// The function pointer to `glActiveShaderProgram()`
34880	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glActiveShaderProgram.xhtml>
34881	pub activeshaderprogram: PFNGLACTIVESHADERPROGRAMPROC,
34882
34883	/// The function pointer to `glCreateShaderProgramv()`
34884	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCreateShaderProgramv.xhtml>
34885	pub createshaderprogramv: PFNGLCREATESHADERPROGRAMVPROC,
34886
34887	/// The function pointer to `glBindProgramPipeline()`
34888	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindProgramPipeline.xhtml>
34889	pub bindprogrampipeline: PFNGLBINDPROGRAMPIPELINEPROC,
34890
34891	/// The function pointer to `glDeleteProgramPipelines()`
34892	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDeleteProgramPipelines.xhtml>
34893	pub deleteprogrampipelines: PFNGLDELETEPROGRAMPIPELINESPROC,
34894
34895	/// The function pointer to `glGenProgramPipelines()`
34896	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGenProgramPipelines.xhtml>
34897	pub genprogrampipelines: PFNGLGENPROGRAMPIPELINESPROC,
34898
34899	/// The function pointer to `glIsProgramPipeline()`
34900	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsProgramPipeline.xhtml>
34901	pub isprogrampipeline: PFNGLISPROGRAMPIPELINEPROC,
34902
34903	/// The function pointer to `glGetProgramPipelineiv()`
34904	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramPipelineiv.xhtml>
34905	pub getprogrampipelineiv: PFNGLGETPROGRAMPIPELINEIVPROC,
34906
34907	/// The function pointer to `glProgramUniform1i()`
34908	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform1i.xhtml>
34909	pub programuniform1i: PFNGLPROGRAMUNIFORM1IPROC,
34910
34911	/// The function pointer to `glProgramUniform2i()`
34912	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform2i.xhtml>
34913	pub programuniform2i: PFNGLPROGRAMUNIFORM2IPROC,
34914
34915	/// The function pointer to `glProgramUniform3i()`
34916	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform3i.xhtml>
34917	pub programuniform3i: PFNGLPROGRAMUNIFORM3IPROC,
34918
34919	/// The function pointer to `glProgramUniform4i()`
34920	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform4i.xhtml>
34921	pub programuniform4i: PFNGLPROGRAMUNIFORM4IPROC,
34922
34923	/// The function pointer to `glProgramUniform1ui()`
34924	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform1ui.xhtml>
34925	pub programuniform1ui: PFNGLPROGRAMUNIFORM1UIPROC,
34926
34927	/// The function pointer to `glProgramUniform2ui()`
34928	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform2ui.xhtml>
34929	pub programuniform2ui: PFNGLPROGRAMUNIFORM2UIPROC,
34930
34931	/// The function pointer to `glProgramUniform3ui()`
34932	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform3ui.xhtml>
34933	pub programuniform3ui: PFNGLPROGRAMUNIFORM3UIPROC,
34934
34935	/// The function pointer to `glProgramUniform4ui()`
34936	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform4ui.xhtml>
34937	pub programuniform4ui: PFNGLPROGRAMUNIFORM4UIPROC,
34938
34939	/// The function pointer to `glProgramUniform1f()`
34940	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform1f.xhtml>
34941	pub programuniform1f: PFNGLPROGRAMUNIFORM1FPROC,
34942
34943	/// The function pointer to `glProgramUniform2f()`
34944	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform2f.xhtml>
34945	pub programuniform2f: PFNGLPROGRAMUNIFORM2FPROC,
34946
34947	/// The function pointer to `glProgramUniform3f()`
34948	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform3f.xhtml>
34949	pub programuniform3f: PFNGLPROGRAMUNIFORM3FPROC,
34950
34951	/// The function pointer to `glProgramUniform4f()`
34952	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform4f.xhtml>
34953	pub programuniform4f: PFNGLPROGRAMUNIFORM4FPROC,
34954
34955	/// The function pointer to `glProgramUniform1iv()`
34956	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform1iv.xhtml>
34957	pub programuniform1iv: PFNGLPROGRAMUNIFORM1IVPROC,
34958
34959	/// The function pointer to `glProgramUniform2iv()`
34960	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform2iv.xhtml>
34961	pub programuniform2iv: PFNGLPROGRAMUNIFORM2IVPROC,
34962
34963	/// The function pointer to `glProgramUniform3iv()`
34964	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform3iv.xhtml>
34965	pub programuniform3iv: PFNGLPROGRAMUNIFORM3IVPROC,
34966
34967	/// The function pointer to `glProgramUniform4iv()`
34968	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform4iv.xhtml>
34969	pub programuniform4iv: PFNGLPROGRAMUNIFORM4IVPROC,
34970
34971	/// The function pointer to `glProgramUniform1uiv()`
34972	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform1uiv.xhtml>
34973	pub programuniform1uiv: PFNGLPROGRAMUNIFORM1UIVPROC,
34974
34975	/// The function pointer to `glProgramUniform2uiv()`
34976	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform2uiv.xhtml>
34977	pub programuniform2uiv: PFNGLPROGRAMUNIFORM2UIVPROC,
34978
34979	/// The function pointer to `glProgramUniform3uiv()`
34980	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform3uiv.xhtml>
34981	pub programuniform3uiv: PFNGLPROGRAMUNIFORM3UIVPROC,
34982
34983	/// The function pointer to `glProgramUniform4uiv()`
34984	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform4uiv.xhtml>
34985	pub programuniform4uiv: PFNGLPROGRAMUNIFORM4UIVPROC,
34986
34987	/// The function pointer to `glProgramUniform1fv()`
34988	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform1fv.xhtml>
34989	pub programuniform1fv: PFNGLPROGRAMUNIFORM1FVPROC,
34990
34991	/// The function pointer to `glProgramUniform2fv()`
34992	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform2fv.xhtml>
34993	pub programuniform2fv: PFNGLPROGRAMUNIFORM2FVPROC,
34994
34995	/// The function pointer to `glProgramUniform3fv()`
34996	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform3fv.xhtml>
34997	pub programuniform3fv: PFNGLPROGRAMUNIFORM3FVPROC,
34998
34999	/// The function pointer to `glProgramUniform4fv()`
35000	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniform4fv.xhtml>
35001	pub programuniform4fv: PFNGLPROGRAMUNIFORM4FVPROC,
35002
35003	/// The function pointer to `glProgramUniformMatrix2fv()`
35004	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix2fv.xhtml>
35005	pub programuniformmatrix2fv: PFNGLPROGRAMUNIFORMMATRIX2FVPROC,
35006
35007	/// The function pointer to `glProgramUniformMatrix3fv()`
35008	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix3fv.xhtml>
35009	pub programuniformmatrix3fv: PFNGLPROGRAMUNIFORMMATRIX3FVPROC,
35010
35011	/// The function pointer to `glProgramUniformMatrix4fv()`
35012	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix4fv.xhtml>
35013	pub programuniformmatrix4fv: PFNGLPROGRAMUNIFORMMATRIX4FVPROC,
35014
35015	/// The function pointer to `glProgramUniformMatrix2x3fv()`
35016	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix2x3fv.xhtml>
35017	pub programuniformmatrix2x3fv: PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC,
35018
35019	/// The function pointer to `glProgramUniformMatrix3x2fv()`
35020	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix3x2fv.xhtml>
35021	pub programuniformmatrix3x2fv: PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC,
35022
35023	/// The function pointer to `glProgramUniformMatrix2x4fv()`
35024	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix2x4fv.xhtml>
35025	pub programuniformmatrix2x4fv: PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC,
35026
35027	/// The function pointer to `glProgramUniformMatrix4x2fv()`
35028	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix4x2fv.xhtml>
35029	pub programuniformmatrix4x2fv: PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC,
35030
35031	/// The function pointer to `glProgramUniformMatrix3x4fv()`
35032	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix3x4fv.xhtml>
35033	pub programuniformmatrix3x4fv: PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC,
35034
35035	/// The function pointer to `glProgramUniformMatrix4x3fv()`
35036	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glProgramUniformMatrix4x3fv.xhtml>
35037	pub programuniformmatrix4x3fv: PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC,
35038
35039	/// The function pointer to `glValidateProgramPipeline()`
35040	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glValidateProgramPipeline.xhtml>
35041	pub validateprogrampipeline: PFNGLVALIDATEPROGRAMPIPELINEPROC,
35042
35043	/// The function pointer to `glGetProgramPipelineInfoLog()`
35044	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetProgramPipelineInfoLog.xhtml>
35045	pub getprogrampipelineinfolog: PFNGLGETPROGRAMPIPELINEINFOLOGPROC,
35046
35047	/// The function pointer to `glBindImageTexture()`
35048	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindImageTexture.xhtml>
35049	pub bindimagetexture: PFNGLBINDIMAGETEXTUREPROC,
35050
35051	/// The function pointer to `glGetBooleani_v()`
35052	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetBooleani_v.xhtml>
35053	pub getbooleani_v: PFNGLGETBOOLEANI_VPROC,
35054
35055	/// The function pointer to `glMemoryBarrier()`
35056	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glMemoryBarrier.xhtml>
35057	pub memorybarrier: PFNGLMEMORYBARRIERPROC,
35058
35059	/// The function pointer to `glMemoryBarrierByRegion()`
35060	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glMemoryBarrierByRegion.xhtml>
35061	pub memorybarrierbyregion: PFNGLMEMORYBARRIERBYREGIONPROC,
35062
35063	/// The function pointer to `glTexStorage2DMultisample()`
35064	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexStorage2DMultisample.xhtml>
35065	pub texstorage2dmultisample: PFNGLTEXSTORAGE2DMULTISAMPLEPROC,
35066
35067	/// The function pointer to `glGetMultisamplefv()`
35068	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetMultisamplefv.xhtml>
35069	pub getmultisamplefv: PFNGLGETMULTISAMPLEFVPROC,
35070
35071	/// The function pointer to `glSampleMaski()`
35072	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glSampleMaski.xhtml>
35073	pub samplemaski: PFNGLSAMPLEMASKIPROC,
35074
35075	/// The function pointer to `glGetTexLevelParameteriv()`
35076	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetTexLevelParameteriv.xhtml>
35077	pub gettexlevelparameteriv: PFNGLGETTEXLEVELPARAMETERIVPROC,
35078
35079	/// The function pointer to `glGetTexLevelParameterfv()`
35080	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetTexLevelParameterfv.xhtml>
35081	pub gettexlevelparameterfv: PFNGLGETTEXLEVELPARAMETERFVPROC,
35082
35083	/// The function pointer to `glBindVertexBuffer()`
35084	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBindVertexBuffer.xhtml>
35085	pub bindvertexbuffer: PFNGLBINDVERTEXBUFFERPROC,
35086
35087	/// The function pointer to `glVertexAttribFormat()`
35088	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribFormat.xhtml>
35089	pub vertexattribformat: PFNGLVERTEXATTRIBFORMATPROC,
35090
35091	/// The function pointer to `glVertexAttribIFormat()`
35092	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribIFormat.xhtml>
35093	pub vertexattribiformat: PFNGLVERTEXATTRIBIFORMATPROC,
35094
35095	/// The function pointer to `glVertexAttribBinding()`
35096	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexAttribBinding.xhtml>
35097	pub vertexattribbinding: PFNGLVERTEXATTRIBBINDINGPROC,
35098
35099	/// The function pointer to `glVertexBindingDivisor()`
35100	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glVertexBindingDivisor.xhtml>
35101	pub vertexbindingdivisor: PFNGLVERTEXBINDINGDIVISORPROC,
35102}
35103
35104impl ES_GL_3_1 for EsVersion31 {
35105	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetError.xhtml>
35106	#[inline(always)]
35107	fn glGetError(&self) -> GLenum {
35108		(self.geterror)()
35109	}
35110	#[inline(always)]
35111	fn glDispatchCompute(&self, num_groups_x: GLuint, num_groups_y: GLuint, num_groups_z: GLuint) -> Result<()> {
35112		let ret = process_catch("glDispatchCompute", catch_unwind(||(self.dispatchcompute)(num_groups_x, num_groups_y, num_groups_z)));
35113		#[cfg(feature = "diagnose")]
35114		if let Ok(ret) = ret {
35115			return to_result("glDispatchCompute", ret, self.glGetError());
35116		} else {
35117			return ret
35118		}
35119		#[cfg(not(feature = "diagnose"))]
35120		return ret;
35121	}
35122	#[inline(always)]
35123	fn glDispatchComputeIndirect(&self, indirect: GLintptr) -> Result<()> {
35124		let ret = process_catch("glDispatchComputeIndirect", catch_unwind(||(self.dispatchcomputeindirect)(indirect)));
35125		#[cfg(feature = "diagnose")]
35126		if let Ok(ret) = ret {
35127			return to_result("glDispatchComputeIndirect", ret, self.glGetError());
35128		} else {
35129			return ret
35130		}
35131		#[cfg(not(feature = "diagnose"))]
35132		return ret;
35133	}
35134	#[inline(always)]
35135	fn glDrawArraysIndirect(&self, mode: GLenum, indirect: *const c_void) -> Result<()> {
35136		let ret = process_catch("glDrawArraysIndirect", catch_unwind(||(self.drawarraysindirect)(mode, indirect)));
35137		#[cfg(feature = "diagnose")]
35138		if let Ok(ret) = ret {
35139			return to_result("glDrawArraysIndirect", ret, self.glGetError());
35140		} else {
35141			return ret
35142		}
35143		#[cfg(not(feature = "diagnose"))]
35144		return ret;
35145	}
35146	#[inline(always)]
35147	fn glDrawElementsIndirect(&self, mode: GLenum, type_: GLenum, indirect: *const c_void) -> Result<()> {
35148		let ret = process_catch("glDrawElementsIndirect", catch_unwind(||(self.drawelementsindirect)(mode, type_, indirect)));
35149		#[cfg(feature = "diagnose")]
35150		if let Ok(ret) = ret {
35151			return to_result("glDrawElementsIndirect", ret, self.glGetError());
35152		} else {
35153			return ret
35154		}
35155		#[cfg(not(feature = "diagnose"))]
35156		return ret;
35157	}
35158	#[inline(always)]
35159	fn glFramebufferParameteri(&self, target: GLenum, pname: GLenum, param: GLint) -> Result<()> {
35160		let ret = process_catch("glFramebufferParameteri", catch_unwind(||(self.framebufferparameteri)(target, pname, param)));
35161		#[cfg(feature = "diagnose")]
35162		if let Ok(ret) = ret {
35163			return to_result("glFramebufferParameteri", ret, self.glGetError());
35164		} else {
35165			return ret
35166		}
35167		#[cfg(not(feature = "diagnose"))]
35168		return ret;
35169	}
35170	#[inline(always)]
35171	fn glGetFramebufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
35172		let ret = process_catch("glGetFramebufferParameteriv", catch_unwind(||(self.getframebufferparameteriv)(target, pname, params)));
35173		#[cfg(feature = "diagnose")]
35174		if let Ok(ret) = ret {
35175			return to_result("glGetFramebufferParameteriv", ret, self.glGetError());
35176		} else {
35177			return ret
35178		}
35179		#[cfg(not(feature = "diagnose"))]
35180		return ret;
35181	}
35182	#[inline(always)]
35183	fn glGetProgramInterfaceiv(&self, program: GLuint, programInterface: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
35184		let ret = process_catch("glGetProgramInterfaceiv", catch_unwind(||(self.getprograminterfaceiv)(program, programInterface, pname, params)));
35185		#[cfg(feature = "diagnose")]
35186		if let Ok(ret) = ret {
35187			return to_result("glGetProgramInterfaceiv", ret, self.glGetError());
35188		} else {
35189			return ret
35190		}
35191		#[cfg(not(feature = "diagnose"))]
35192		return ret;
35193	}
35194	#[inline(always)]
35195	fn glGetProgramResourceIndex(&self, program: GLuint, programInterface: GLenum, name: *const GLchar) -> Result<GLuint> {
35196		let ret = process_catch("glGetProgramResourceIndex", catch_unwind(||(self.getprogramresourceindex)(program, programInterface, name)));
35197		#[cfg(feature = "diagnose")]
35198		if let Ok(ret) = ret {
35199			return to_result("glGetProgramResourceIndex", ret, self.glGetError());
35200		} else {
35201			return ret
35202		}
35203		#[cfg(not(feature = "diagnose"))]
35204		return ret;
35205	}
35206	#[inline(always)]
35207	fn glGetProgramResourceName(&self, program: GLuint, programInterface: GLenum, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, name: *mut GLchar) -> Result<()> {
35208		let ret = process_catch("glGetProgramResourceName", catch_unwind(||(self.getprogramresourcename)(program, programInterface, index, bufSize, length, name)));
35209		#[cfg(feature = "diagnose")]
35210		if let Ok(ret) = ret {
35211			return to_result("glGetProgramResourceName", ret, self.glGetError());
35212		} else {
35213			return ret
35214		}
35215		#[cfg(not(feature = "diagnose"))]
35216		return ret;
35217	}
35218	#[inline(always)]
35219	fn glGetProgramResourceiv(&self, program: GLuint, programInterface: GLenum, index: GLuint, propCount: GLsizei, props: *const GLenum, bufSize: GLsizei, length: *mut GLsizei, params: *mut GLint) -> Result<()> {
35220		let ret = process_catch("glGetProgramResourceiv", catch_unwind(||(self.getprogramresourceiv)(program, programInterface, index, propCount, props, bufSize, length, params)));
35221		#[cfg(feature = "diagnose")]
35222		if let Ok(ret) = ret {
35223			return to_result("glGetProgramResourceiv", ret, self.glGetError());
35224		} else {
35225			return ret
35226		}
35227		#[cfg(not(feature = "diagnose"))]
35228		return ret;
35229	}
35230	#[inline(always)]
35231	fn glGetProgramResourceLocation(&self, program: GLuint, programInterface: GLenum, name: *const GLchar) -> Result<GLint> {
35232		let ret = process_catch("glGetProgramResourceLocation", catch_unwind(||(self.getprogramresourcelocation)(program, programInterface, name)));
35233		#[cfg(feature = "diagnose")]
35234		if let Ok(ret) = ret {
35235			return to_result("glGetProgramResourceLocation", ret, self.glGetError());
35236		} else {
35237			return ret
35238		}
35239		#[cfg(not(feature = "diagnose"))]
35240		return ret;
35241	}
35242	#[inline(always)]
35243	fn glUseProgramStages(&self, pipeline: GLuint, stages: GLbitfield, program: GLuint) -> Result<()> {
35244		let ret = process_catch("glUseProgramStages", catch_unwind(||(self.useprogramstages)(pipeline, stages, program)));
35245		#[cfg(feature = "diagnose")]
35246		if let Ok(ret) = ret {
35247			return to_result("glUseProgramStages", ret, self.glGetError());
35248		} else {
35249			return ret
35250		}
35251		#[cfg(not(feature = "diagnose"))]
35252		return ret;
35253	}
35254	#[inline(always)]
35255	fn glActiveShaderProgram(&self, pipeline: GLuint, program: GLuint) -> Result<()> {
35256		let ret = process_catch("glActiveShaderProgram", catch_unwind(||(self.activeshaderprogram)(pipeline, program)));
35257		#[cfg(feature = "diagnose")]
35258		if let Ok(ret) = ret {
35259			return to_result("glActiveShaderProgram", ret, self.glGetError());
35260		} else {
35261			return ret
35262		}
35263		#[cfg(not(feature = "diagnose"))]
35264		return ret;
35265	}
35266	#[inline(always)]
35267	fn glCreateShaderProgramv(&self, type_: GLenum, count: GLsizei, strings: *const *const GLchar) -> Result<GLuint> {
35268		let ret = process_catch("glCreateShaderProgramv", catch_unwind(||(self.createshaderprogramv)(type_, count, strings)));
35269		#[cfg(feature = "diagnose")]
35270		if let Ok(ret) = ret {
35271			return to_result("glCreateShaderProgramv", ret, self.glGetError());
35272		} else {
35273			return ret
35274		}
35275		#[cfg(not(feature = "diagnose"))]
35276		return ret;
35277	}
35278	#[inline(always)]
35279	fn glBindProgramPipeline(&self, pipeline: GLuint) -> Result<()> {
35280		let ret = process_catch("glBindProgramPipeline", catch_unwind(||(self.bindprogrampipeline)(pipeline)));
35281		#[cfg(feature = "diagnose")]
35282		if let Ok(ret) = ret {
35283			return to_result("glBindProgramPipeline", ret, self.glGetError());
35284		} else {
35285			return ret
35286		}
35287		#[cfg(not(feature = "diagnose"))]
35288		return ret;
35289	}
35290	#[inline(always)]
35291	fn glDeleteProgramPipelines(&self, n: GLsizei, pipelines: *const GLuint) -> Result<()> {
35292		let ret = process_catch("glDeleteProgramPipelines", catch_unwind(||(self.deleteprogrampipelines)(n, pipelines)));
35293		#[cfg(feature = "diagnose")]
35294		if let Ok(ret) = ret {
35295			return to_result("glDeleteProgramPipelines", ret, self.glGetError());
35296		} else {
35297			return ret
35298		}
35299		#[cfg(not(feature = "diagnose"))]
35300		return ret;
35301	}
35302	#[inline(always)]
35303	fn glGenProgramPipelines(&self, n: GLsizei, pipelines: *mut GLuint) -> Result<()> {
35304		let ret = process_catch("glGenProgramPipelines", catch_unwind(||(self.genprogrampipelines)(n, pipelines)));
35305		#[cfg(feature = "diagnose")]
35306		if let Ok(ret) = ret {
35307			return to_result("glGenProgramPipelines", ret, self.glGetError());
35308		} else {
35309			return ret
35310		}
35311		#[cfg(not(feature = "diagnose"))]
35312		return ret;
35313	}
35314	#[inline(always)]
35315	fn glIsProgramPipeline(&self, pipeline: GLuint) -> Result<GLboolean> {
35316		let ret = process_catch("glIsProgramPipeline", catch_unwind(||(self.isprogrampipeline)(pipeline)));
35317		#[cfg(feature = "diagnose")]
35318		if let Ok(ret) = ret {
35319			return to_result("glIsProgramPipeline", ret, self.glGetError());
35320		} else {
35321			return ret
35322		}
35323		#[cfg(not(feature = "diagnose"))]
35324		return ret;
35325	}
35326	#[inline(always)]
35327	fn glGetProgramPipelineiv(&self, pipeline: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
35328		let ret = process_catch("glGetProgramPipelineiv", catch_unwind(||(self.getprogrampipelineiv)(pipeline, pname, params)));
35329		#[cfg(feature = "diagnose")]
35330		if let Ok(ret) = ret {
35331			return to_result("glGetProgramPipelineiv", ret, self.glGetError());
35332		} else {
35333			return ret
35334		}
35335		#[cfg(not(feature = "diagnose"))]
35336		return ret;
35337	}
35338	#[inline(always)]
35339	fn glProgramUniform1i(&self, program: GLuint, location: GLint, v0: GLint) -> Result<()> {
35340		let ret = process_catch("glProgramUniform1i", catch_unwind(||(self.programuniform1i)(program, location, v0)));
35341		#[cfg(feature = "diagnose")]
35342		if let Ok(ret) = ret {
35343			return to_result("glProgramUniform1i", ret, self.glGetError());
35344		} else {
35345			return ret
35346		}
35347		#[cfg(not(feature = "diagnose"))]
35348		return ret;
35349	}
35350	#[inline(always)]
35351	fn glProgramUniform2i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint) -> Result<()> {
35352		let ret = process_catch("glProgramUniform2i", catch_unwind(||(self.programuniform2i)(program, location, v0, v1)));
35353		#[cfg(feature = "diagnose")]
35354		if let Ok(ret) = ret {
35355			return to_result("glProgramUniform2i", ret, self.glGetError());
35356		} else {
35357			return ret
35358		}
35359		#[cfg(not(feature = "diagnose"))]
35360		return ret;
35361	}
35362	#[inline(always)]
35363	fn glProgramUniform3i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint, v2: GLint) -> Result<()> {
35364		let ret = process_catch("glProgramUniform3i", catch_unwind(||(self.programuniform3i)(program, location, v0, v1, v2)));
35365		#[cfg(feature = "diagnose")]
35366		if let Ok(ret) = ret {
35367			return to_result("glProgramUniform3i", ret, self.glGetError());
35368		} else {
35369			return ret
35370		}
35371		#[cfg(not(feature = "diagnose"))]
35372		return ret;
35373	}
35374	#[inline(always)]
35375	fn glProgramUniform4i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint, v2: GLint, v3: GLint) -> Result<()> {
35376		let ret = process_catch("glProgramUniform4i", catch_unwind(||(self.programuniform4i)(program, location, v0, v1, v2, v3)));
35377		#[cfg(feature = "diagnose")]
35378		if let Ok(ret) = ret {
35379			return to_result("glProgramUniform4i", ret, self.glGetError());
35380		} else {
35381			return ret
35382		}
35383		#[cfg(not(feature = "diagnose"))]
35384		return ret;
35385	}
35386	#[inline(always)]
35387	fn glProgramUniform1ui(&self, program: GLuint, location: GLint, v0: GLuint) -> Result<()> {
35388		let ret = process_catch("glProgramUniform1ui", catch_unwind(||(self.programuniform1ui)(program, location, v0)));
35389		#[cfg(feature = "diagnose")]
35390		if let Ok(ret) = ret {
35391			return to_result("glProgramUniform1ui", ret, self.glGetError());
35392		} else {
35393			return ret
35394		}
35395		#[cfg(not(feature = "diagnose"))]
35396		return ret;
35397	}
35398	#[inline(always)]
35399	fn glProgramUniform2ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint) -> Result<()> {
35400		let ret = process_catch("glProgramUniform2ui", catch_unwind(||(self.programuniform2ui)(program, location, v0, v1)));
35401		#[cfg(feature = "diagnose")]
35402		if let Ok(ret) = ret {
35403			return to_result("glProgramUniform2ui", ret, self.glGetError());
35404		} else {
35405			return ret
35406		}
35407		#[cfg(not(feature = "diagnose"))]
35408		return ret;
35409	}
35410	#[inline(always)]
35411	fn glProgramUniform3ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint) -> Result<()> {
35412		let ret = process_catch("glProgramUniform3ui", catch_unwind(||(self.programuniform3ui)(program, location, v0, v1, v2)));
35413		#[cfg(feature = "diagnose")]
35414		if let Ok(ret) = ret {
35415			return to_result("glProgramUniform3ui", ret, self.glGetError());
35416		} else {
35417			return ret
35418		}
35419		#[cfg(not(feature = "diagnose"))]
35420		return ret;
35421	}
35422	#[inline(always)]
35423	fn glProgramUniform4ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint, v3: GLuint) -> Result<()> {
35424		let ret = process_catch("glProgramUniform4ui", catch_unwind(||(self.programuniform4ui)(program, location, v0, v1, v2, v3)));
35425		#[cfg(feature = "diagnose")]
35426		if let Ok(ret) = ret {
35427			return to_result("glProgramUniform4ui", ret, self.glGetError());
35428		} else {
35429			return ret
35430		}
35431		#[cfg(not(feature = "diagnose"))]
35432		return ret;
35433	}
35434	#[inline(always)]
35435	fn glProgramUniform1f(&self, program: GLuint, location: GLint, v0: GLfloat) -> Result<()> {
35436		let ret = process_catch("glProgramUniform1f", catch_unwind(||(self.programuniform1f)(program, location, v0)));
35437		#[cfg(feature = "diagnose")]
35438		if let Ok(ret) = ret {
35439			return to_result("glProgramUniform1f", ret, self.glGetError());
35440		} else {
35441			return ret
35442		}
35443		#[cfg(not(feature = "diagnose"))]
35444		return ret;
35445	}
35446	#[inline(always)]
35447	fn glProgramUniform2f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat) -> Result<()> {
35448		let ret = process_catch("glProgramUniform2f", catch_unwind(||(self.programuniform2f)(program, location, v0, v1)));
35449		#[cfg(feature = "diagnose")]
35450		if let Ok(ret) = ret {
35451			return to_result("glProgramUniform2f", ret, self.glGetError());
35452		} else {
35453			return ret
35454		}
35455		#[cfg(not(feature = "diagnose"))]
35456		return ret;
35457	}
35458	#[inline(always)]
35459	fn glProgramUniform3f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat) -> Result<()> {
35460		let ret = process_catch("glProgramUniform3f", catch_unwind(||(self.programuniform3f)(program, location, v0, v1, v2)));
35461		#[cfg(feature = "diagnose")]
35462		if let Ok(ret) = ret {
35463			return to_result("glProgramUniform3f", ret, self.glGetError());
35464		} else {
35465			return ret
35466		}
35467		#[cfg(not(feature = "diagnose"))]
35468		return ret;
35469	}
35470	#[inline(always)]
35471	fn glProgramUniform4f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat, v3: GLfloat) -> Result<()> {
35472		let ret = process_catch("glProgramUniform4f", catch_unwind(||(self.programuniform4f)(program, location, v0, v1, v2, v3)));
35473		#[cfg(feature = "diagnose")]
35474		if let Ok(ret) = ret {
35475			return to_result("glProgramUniform4f", ret, self.glGetError());
35476		} else {
35477			return ret
35478		}
35479		#[cfg(not(feature = "diagnose"))]
35480		return ret;
35481	}
35482	#[inline(always)]
35483	fn glProgramUniform1iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
35484		let ret = process_catch("glProgramUniform1iv", catch_unwind(||(self.programuniform1iv)(program, location, count, value)));
35485		#[cfg(feature = "diagnose")]
35486		if let Ok(ret) = ret {
35487			return to_result("glProgramUniform1iv", ret, self.glGetError());
35488		} else {
35489			return ret
35490		}
35491		#[cfg(not(feature = "diagnose"))]
35492		return ret;
35493	}
35494	#[inline(always)]
35495	fn glProgramUniform2iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
35496		let ret = process_catch("glProgramUniform2iv", catch_unwind(||(self.programuniform2iv)(program, location, count, value)));
35497		#[cfg(feature = "diagnose")]
35498		if let Ok(ret) = ret {
35499			return to_result("glProgramUniform2iv", ret, self.glGetError());
35500		} else {
35501			return ret
35502		}
35503		#[cfg(not(feature = "diagnose"))]
35504		return ret;
35505	}
35506	#[inline(always)]
35507	fn glProgramUniform3iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
35508		let ret = process_catch("glProgramUniform3iv", catch_unwind(||(self.programuniform3iv)(program, location, count, value)));
35509		#[cfg(feature = "diagnose")]
35510		if let Ok(ret) = ret {
35511			return to_result("glProgramUniform3iv", ret, self.glGetError());
35512		} else {
35513			return ret
35514		}
35515		#[cfg(not(feature = "diagnose"))]
35516		return ret;
35517	}
35518	#[inline(always)]
35519	fn glProgramUniform4iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
35520		let ret = process_catch("glProgramUniform4iv", catch_unwind(||(self.programuniform4iv)(program, location, count, value)));
35521		#[cfg(feature = "diagnose")]
35522		if let Ok(ret) = ret {
35523			return to_result("glProgramUniform4iv", ret, self.glGetError());
35524		} else {
35525			return ret
35526		}
35527		#[cfg(not(feature = "diagnose"))]
35528		return ret;
35529	}
35530	#[inline(always)]
35531	fn glProgramUniform1uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
35532		let ret = process_catch("glProgramUniform1uiv", catch_unwind(||(self.programuniform1uiv)(program, location, count, value)));
35533		#[cfg(feature = "diagnose")]
35534		if let Ok(ret) = ret {
35535			return to_result("glProgramUniform1uiv", ret, self.glGetError());
35536		} else {
35537			return ret
35538		}
35539		#[cfg(not(feature = "diagnose"))]
35540		return ret;
35541	}
35542	#[inline(always)]
35543	fn glProgramUniform2uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
35544		let ret = process_catch("glProgramUniform2uiv", catch_unwind(||(self.programuniform2uiv)(program, location, count, value)));
35545		#[cfg(feature = "diagnose")]
35546		if let Ok(ret) = ret {
35547			return to_result("glProgramUniform2uiv", ret, self.glGetError());
35548		} else {
35549			return ret
35550		}
35551		#[cfg(not(feature = "diagnose"))]
35552		return ret;
35553	}
35554	#[inline(always)]
35555	fn glProgramUniform3uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
35556		let ret = process_catch("glProgramUniform3uiv", catch_unwind(||(self.programuniform3uiv)(program, location, count, value)));
35557		#[cfg(feature = "diagnose")]
35558		if let Ok(ret) = ret {
35559			return to_result("glProgramUniform3uiv", ret, self.glGetError());
35560		} else {
35561			return ret
35562		}
35563		#[cfg(not(feature = "diagnose"))]
35564		return ret;
35565	}
35566	#[inline(always)]
35567	fn glProgramUniform4uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
35568		let ret = process_catch("glProgramUniform4uiv", catch_unwind(||(self.programuniform4uiv)(program, location, count, value)));
35569		#[cfg(feature = "diagnose")]
35570		if let Ok(ret) = ret {
35571			return to_result("glProgramUniform4uiv", ret, self.glGetError());
35572		} else {
35573			return ret
35574		}
35575		#[cfg(not(feature = "diagnose"))]
35576		return ret;
35577	}
35578	#[inline(always)]
35579	fn glProgramUniform1fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
35580		let ret = process_catch("glProgramUniform1fv", catch_unwind(||(self.programuniform1fv)(program, location, count, value)));
35581		#[cfg(feature = "diagnose")]
35582		if let Ok(ret) = ret {
35583			return to_result("glProgramUniform1fv", ret, self.glGetError());
35584		} else {
35585			return ret
35586		}
35587		#[cfg(not(feature = "diagnose"))]
35588		return ret;
35589	}
35590	#[inline(always)]
35591	fn glProgramUniform2fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
35592		let ret = process_catch("glProgramUniform2fv", catch_unwind(||(self.programuniform2fv)(program, location, count, value)));
35593		#[cfg(feature = "diagnose")]
35594		if let Ok(ret) = ret {
35595			return to_result("glProgramUniform2fv", ret, self.glGetError());
35596		} else {
35597			return ret
35598		}
35599		#[cfg(not(feature = "diagnose"))]
35600		return ret;
35601	}
35602	#[inline(always)]
35603	fn glProgramUniform3fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
35604		let ret = process_catch("glProgramUniform3fv", catch_unwind(||(self.programuniform3fv)(program, location, count, value)));
35605		#[cfg(feature = "diagnose")]
35606		if let Ok(ret) = ret {
35607			return to_result("glProgramUniform3fv", ret, self.glGetError());
35608		} else {
35609			return ret
35610		}
35611		#[cfg(not(feature = "diagnose"))]
35612		return ret;
35613	}
35614	#[inline(always)]
35615	fn glProgramUniform4fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
35616		let ret = process_catch("glProgramUniform4fv", catch_unwind(||(self.programuniform4fv)(program, location, count, value)));
35617		#[cfg(feature = "diagnose")]
35618		if let Ok(ret) = ret {
35619			return to_result("glProgramUniform4fv", ret, self.glGetError());
35620		} else {
35621			return ret
35622		}
35623		#[cfg(not(feature = "diagnose"))]
35624		return ret;
35625	}
35626	#[inline(always)]
35627	fn glProgramUniformMatrix2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
35628		let ret = process_catch("glProgramUniformMatrix2fv", catch_unwind(||(self.programuniformmatrix2fv)(program, location, count, transpose, value)));
35629		#[cfg(feature = "diagnose")]
35630		if let Ok(ret) = ret {
35631			return to_result("glProgramUniformMatrix2fv", ret, self.glGetError());
35632		} else {
35633			return ret
35634		}
35635		#[cfg(not(feature = "diagnose"))]
35636		return ret;
35637	}
35638	#[inline(always)]
35639	fn glProgramUniformMatrix3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
35640		let ret = process_catch("glProgramUniformMatrix3fv", catch_unwind(||(self.programuniformmatrix3fv)(program, location, count, transpose, value)));
35641		#[cfg(feature = "diagnose")]
35642		if let Ok(ret) = ret {
35643			return to_result("glProgramUniformMatrix3fv", ret, self.glGetError());
35644		} else {
35645			return ret
35646		}
35647		#[cfg(not(feature = "diagnose"))]
35648		return ret;
35649	}
35650	#[inline(always)]
35651	fn glProgramUniformMatrix4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
35652		let ret = process_catch("glProgramUniformMatrix4fv", catch_unwind(||(self.programuniformmatrix4fv)(program, location, count, transpose, value)));
35653		#[cfg(feature = "diagnose")]
35654		if let Ok(ret) = ret {
35655			return to_result("glProgramUniformMatrix4fv", ret, self.glGetError());
35656		} else {
35657			return ret
35658		}
35659		#[cfg(not(feature = "diagnose"))]
35660		return ret;
35661	}
35662	#[inline(always)]
35663	fn glProgramUniformMatrix2x3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
35664		let ret = process_catch("glProgramUniformMatrix2x3fv", catch_unwind(||(self.programuniformmatrix2x3fv)(program, location, count, transpose, value)));
35665		#[cfg(feature = "diagnose")]
35666		if let Ok(ret) = ret {
35667			return to_result("glProgramUniformMatrix2x3fv", ret, self.glGetError());
35668		} else {
35669			return ret
35670		}
35671		#[cfg(not(feature = "diagnose"))]
35672		return ret;
35673	}
35674	#[inline(always)]
35675	fn glProgramUniformMatrix3x2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
35676		let ret = process_catch("glProgramUniformMatrix3x2fv", catch_unwind(||(self.programuniformmatrix3x2fv)(program, location, count, transpose, value)));
35677		#[cfg(feature = "diagnose")]
35678		if let Ok(ret) = ret {
35679			return to_result("glProgramUniformMatrix3x2fv", ret, self.glGetError());
35680		} else {
35681			return ret
35682		}
35683		#[cfg(not(feature = "diagnose"))]
35684		return ret;
35685	}
35686	#[inline(always)]
35687	fn glProgramUniformMatrix2x4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
35688		let ret = process_catch("glProgramUniformMatrix2x4fv", catch_unwind(||(self.programuniformmatrix2x4fv)(program, location, count, transpose, value)));
35689		#[cfg(feature = "diagnose")]
35690		if let Ok(ret) = ret {
35691			return to_result("glProgramUniformMatrix2x4fv", ret, self.glGetError());
35692		} else {
35693			return ret
35694		}
35695		#[cfg(not(feature = "diagnose"))]
35696		return ret;
35697	}
35698	#[inline(always)]
35699	fn glProgramUniformMatrix4x2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
35700		let ret = process_catch("glProgramUniformMatrix4x2fv", catch_unwind(||(self.programuniformmatrix4x2fv)(program, location, count, transpose, value)));
35701		#[cfg(feature = "diagnose")]
35702		if let Ok(ret) = ret {
35703			return to_result("glProgramUniformMatrix4x2fv", ret, self.glGetError());
35704		} else {
35705			return ret
35706		}
35707		#[cfg(not(feature = "diagnose"))]
35708		return ret;
35709	}
35710	#[inline(always)]
35711	fn glProgramUniformMatrix3x4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
35712		let ret = process_catch("glProgramUniformMatrix3x4fv", catch_unwind(||(self.programuniformmatrix3x4fv)(program, location, count, transpose, value)));
35713		#[cfg(feature = "diagnose")]
35714		if let Ok(ret) = ret {
35715			return to_result("glProgramUniformMatrix3x4fv", ret, self.glGetError());
35716		} else {
35717			return ret
35718		}
35719		#[cfg(not(feature = "diagnose"))]
35720		return ret;
35721	}
35722	#[inline(always)]
35723	fn glProgramUniformMatrix4x3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
35724		let ret = process_catch("glProgramUniformMatrix4x3fv", catch_unwind(||(self.programuniformmatrix4x3fv)(program, location, count, transpose, value)));
35725		#[cfg(feature = "diagnose")]
35726		if let Ok(ret) = ret {
35727			return to_result("glProgramUniformMatrix4x3fv", ret, self.glGetError());
35728		} else {
35729			return ret
35730		}
35731		#[cfg(not(feature = "diagnose"))]
35732		return ret;
35733	}
35734	#[inline(always)]
35735	fn glValidateProgramPipeline(&self, pipeline: GLuint) -> Result<()> {
35736		let ret = process_catch("glValidateProgramPipeline", catch_unwind(||(self.validateprogrampipeline)(pipeline)));
35737		#[cfg(feature = "diagnose")]
35738		if let Ok(ret) = ret {
35739			return to_result("glValidateProgramPipeline", ret, self.glGetError());
35740		} else {
35741			return ret
35742		}
35743		#[cfg(not(feature = "diagnose"))]
35744		return ret;
35745	}
35746	#[inline(always)]
35747	fn glGetProgramPipelineInfoLog(&self, pipeline: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()> {
35748		let ret = process_catch("glGetProgramPipelineInfoLog", catch_unwind(||(self.getprogrampipelineinfolog)(pipeline, bufSize, length, infoLog)));
35749		#[cfg(feature = "diagnose")]
35750		if let Ok(ret) = ret {
35751			return to_result("glGetProgramPipelineInfoLog", ret, self.glGetError());
35752		} else {
35753			return ret
35754		}
35755		#[cfg(not(feature = "diagnose"))]
35756		return ret;
35757	}
35758	#[inline(always)]
35759	fn glBindImageTexture(&self, unit: GLuint, texture: GLuint, level: GLint, layered: GLboolean, layer: GLint, access: GLenum, format: GLenum) -> Result<()> {
35760		let ret = process_catch("glBindImageTexture", catch_unwind(||(self.bindimagetexture)(unit, texture, level, layered, layer, access, format)));
35761		#[cfg(feature = "diagnose")]
35762		if let Ok(ret) = ret {
35763			return to_result("glBindImageTexture", ret, self.glGetError());
35764		} else {
35765			return ret
35766		}
35767		#[cfg(not(feature = "diagnose"))]
35768		return ret;
35769	}
35770	#[inline(always)]
35771	fn glGetBooleani_v(&self, target: GLenum, index: GLuint, data: *mut GLboolean) -> Result<()> {
35772		let ret = process_catch("glGetBooleani_v", catch_unwind(||(self.getbooleani_v)(target, index, data)));
35773		#[cfg(feature = "diagnose")]
35774		if let Ok(ret) = ret {
35775			return to_result("glGetBooleani_v", ret, self.glGetError());
35776		} else {
35777			return ret
35778		}
35779		#[cfg(not(feature = "diagnose"))]
35780		return ret;
35781	}
35782	#[inline(always)]
35783	fn glMemoryBarrier(&self, barriers: GLbitfield) -> Result<()> {
35784		let ret = process_catch("glMemoryBarrier", catch_unwind(||(self.memorybarrier)(barriers)));
35785		#[cfg(feature = "diagnose")]
35786		if let Ok(ret) = ret {
35787			return to_result("glMemoryBarrier", ret, self.glGetError());
35788		} else {
35789			return ret
35790		}
35791		#[cfg(not(feature = "diagnose"))]
35792		return ret;
35793	}
35794	#[inline(always)]
35795	fn glMemoryBarrierByRegion(&self, barriers: GLbitfield) -> Result<()> {
35796		let ret = process_catch("glMemoryBarrierByRegion", catch_unwind(||(self.memorybarrierbyregion)(barriers)));
35797		#[cfg(feature = "diagnose")]
35798		if let Ok(ret) = ret {
35799			return to_result("glMemoryBarrierByRegion", ret, self.glGetError());
35800		} else {
35801			return ret
35802		}
35803		#[cfg(not(feature = "diagnose"))]
35804		return ret;
35805	}
35806	#[inline(always)]
35807	fn glTexStorage2DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, fixedsamplelocations: GLboolean) -> Result<()> {
35808		let ret = process_catch("glTexStorage2DMultisample", catch_unwind(||(self.texstorage2dmultisample)(target, samples, internalformat, width, height, fixedsamplelocations)));
35809		#[cfg(feature = "diagnose")]
35810		if let Ok(ret) = ret {
35811			return to_result("glTexStorage2DMultisample", ret, self.glGetError());
35812		} else {
35813			return ret
35814		}
35815		#[cfg(not(feature = "diagnose"))]
35816		return ret;
35817	}
35818	#[inline(always)]
35819	fn glGetMultisamplefv(&self, pname: GLenum, index: GLuint, val: *mut GLfloat) -> Result<()> {
35820		let ret = process_catch("glGetMultisamplefv", catch_unwind(||(self.getmultisamplefv)(pname, index, val)));
35821		#[cfg(feature = "diagnose")]
35822		if let Ok(ret) = ret {
35823			return to_result("glGetMultisamplefv", ret, self.glGetError());
35824		} else {
35825			return ret
35826		}
35827		#[cfg(not(feature = "diagnose"))]
35828		return ret;
35829	}
35830	#[inline(always)]
35831	fn glSampleMaski(&self, maskNumber: GLuint, mask: GLbitfield) -> Result<()> {
35832		let ret = process_catch("glSampleMaski", catch_unwind(||(self.samplemaski)(maskNumber, mask)));
35833		#[cfg(feature = "diagnose")]
35834		if let Ok(ret) = ret {
35835			return to_result("glSampleMaski", ret, self.glGetError());
35836		} else {
35837			return ret
35838		}
35839		#[cfg(not(feature = "diagnose"))]
35840		return ret;
35841	}
35842	#[inline(always)]
35843	fn glGetTexLevelParameteriv(&self, target: GLenum, level: GLint, pname: GLenum, params: *mut GLint) -> Result<()> {
35844		let ret = process_catch("glGetTexLevelParameteriv", catch_unwind(||(self.gettexlevelparameteriv)(target, level, pname, params)));
35845		#[cfg(feature = "diagnose")]
35846		if let Ok(ret) = ret {
35847			return to_result("glGetTexLevelParameteriv", ret, self.glGetError());
35848		} else {
35849			return ret
35850		}
35851		#[cfg(not(feature = "diagnose"))]
35852		return ret;
35853	}
35854	#[inline(always)]
35855	fn glGetTexLevelParameterfv(&self, target: GLenum, level: GLint, pname: GLenum, params: *mut GLfloat) -> Result<()> {
35856		let ret = process_catch("glGetTexLevelParameterfv", catch_unwind(||(self.gettexlevelparameterfv)(target, level, pname, params)));
35857		#[cfg(feature = "diagnose")]
35858		if let Ok(ret) = ret {
35859			return to_result("glGetTexLevelParameterfv", ret, self.glGetError());
35860		} else {
35861			return ret
35862		}
35863		#[cfg(not(feature = "diagnose"))]
35864		return ret;
35865	}
35866	#[inline(always)]
35867	fn glBindVertexBuffer(&self, bindingindex: GLuint, buffer: GLuint, offset: GLintptr, stride: GLsizei) -> Result<()> {
35868		let ret = process_catch("glBindVertexBuffer", catch_unwind(||(self.bindvertexbuffer)(bindingindex, buffer, offset, stride)));
35869		#[cfg(feature = "diagnose")]
35870		if let Ok(ret) = ret {
35871			return to_result("glBindVertexBuffer", ret, self.glGetError());
35872		} else {
35873			return ret
35874		}
35875		#[cfg(not(feature = "diagnose"))]
35876		return ret;
35877	}
35878	#[inline(always)]
35879	fn glVertexAttribFormat(&self, attribindex: GLuint, size: GLint, type_: GLenum, normalized: GLboolean, relativeoffset: GLuint) -> Result<()> {
35880		let ret = process_catch("glVertexAttribFormat", catch_unwind(||(self.vertexattribformat)(attribindex, size, type_, normalized, relativeoffset)));
35881		#[cfg(feature = "diagnose")]
35882		if let Ok(ret) = ret {
35883			return to_result("glVertexAttribFormat", ret, self.glGetError());
35884		} else {
35885			return ret
35886		}
35887		#[cfg(not(feature = "diagnose"))]
35888		return ret;
35889	}
35890	#[inline(always)]
35891	fn glVertexAttribIFormat(&self, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()> {
35892		let ret = process_catch("glVertexAttribIFormat", catch_unwind(||(self.vertexattribiformat)(attribindex, size, type_, relativeoffset)));
35893		#[cfg(feature = "diagnose")]
35894		if let Ok(ret) = ret {
35895			return to_result("glVertexAttribIFormat", ret, self.glGetError());
35896		} else {
35897			return ret
35898		}
35899		#[cfg(not(feature = "diagnose"))]
35900		return ret;
35901	}
35902	#[inline(always)]
35903	fn glVertexAttribBinding(&self, attribindex: GLuint, bindingindex: GLuint) -> Result<()> {
35904		let ret = process_catch("glVertexAttribBinding", catch_unwind(||(self.vertexattribbinding)(attribindex, bindingindex)));
35905		#[cfg(feature = "diagnose")]
35906		if let Ok(ret) = ret {
35907			return to_result("glVertexAttribBinding", ret, self.glGetError());
35908		} else {
35909			return ret
35910		}
35911		#[cfg(not(feature = "diagnose"))]
35912		return ret;
35913	}
35914	#[inline(always)]
35915	fn glVertexBindingDivisor(&self, bindingindex: GLuint, divisor: GLuint) -> Result<()> {
35916		let ret = process_catch("glVertexBindingDivisor", catch_unwind(||(self.vertexbindingdivisor)(bindingindex, divisor)));
35917		#[cfg(feature = "diagnose")]
35918		if let Ok(ret) = ret {
35919			return to_result("glVertexBindingDivisor", ret, self.glGetError());
35920		} else {
35921			return ret
35922		}
35923		#[cfg(not(feature = "diagnose"))]
35924		return ret;
35925	}
35926}
35927
35928impl EsVersion31 {
35929	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
35930		let (_spec, major, minor, release) = base.get_version();
35931		if (major, minor, release) < (3, 1, 0) {
35932			return Self::default();
35933		}
35934		Self {
35935			available: true,
35936			geterror: {let proc = get_proc_address("glGetError"); if proc == null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
35937			dispatchcompute: {let proc = get_proc_address("glDispatchCompute"); if proc == null() {dummy_pfngldispatchcomputeproc} else {unsafe{transmute(proc)}}},
35938			dispatchcomputeindirect: {let proc = get_proc_address("glDispatchComputeIndirect"); if proc == null() {dummy_pfngldispatchcomputeindirectproc} else {unsafe{transmute(proc)}}},
35939			drawarraysindirect: {let proc = get_proc_address("glDrawArraysIndirect"); if proc == null() {dummy_pfngldrawarraysindirectproc} else {unsafe{transmute(proc)}}},
35940			drawelementsindirect: {let proc = get_proc_address("glDrawElementsIndirect"); if proc == null() {dummy_pfngldrawelementsindirectproc} else {unsafe{transmute(proc)}}},
35941			framebufferparameteri: {let proc = get_proc_address("glFramebufferParameteri"); if proc == null() {dummy_pfnglframebufferparameteriproc} else {unsafe{transmute(proc)}}},
35942			getframebufferparameteriv: {let proc = get_proc_address("glGetFramebufferParameteriv"); if proc == null() {dummy_pfnglgetframebufferparameterivproc} else {unsafe{transmute(proc)}}},
35943			getprograminterfaceiv: {let proc = get_proc_address("glGetProgramInterfaceiv"); if proc == null() {dummy_pfnglgetprograminterfaceivproc} else {unsafe{transmute(proc)}}},
35944			getprogramresourceindex: {let proc = get_proc_address("glGetProgramResourceIndex"); if proc == null() {dummy_pfnglgetprogramresourceindexproc} else {unsafe{transmute(proc)}}},
35945			getprogramresourcename: {let proc = get_proc_address("glGetProgramResourceName"); if proc == null() {dummy_pfnglgetprogramresourcenameproc} else {unsafe{transmute(proc)}}},
35946			getprogramresourceiv: {let proc = get_proc_address("glGetProgramResourceiv"); if proc == null() {dummy_pfnglgetprogramresourceivproc} else {unsafe{transmute(proc)}}},
35947			getprogramresourcelocation: {let proc = get_proc_address("glGetProgramResourceLocation"); if proc == null() {dummy_pfnglgetprogramresourcelocationproc} else {unsafe{transmute(proc)}}},
35948			useprogramstages: {let proc = get_proc_address("glUseProgramStages"); if proc == null() {dummy_pfngluseprogramstagesproc} else {unsafe{transmute(proc)}}},
35949			activeshaderprogram: {let proc = get_proc_address("glActiveShaderProgram"); if proc == null() {dummy_pfnglactiveshaderprogramproc} else {unsafe{transmute(proc)}}},
35950			createshaderprogramv: {let proc = get_proc_address("glCreateShaderProgramv"); if proc == null() {dummy_pfnglcreateshaderprogramvproc} else {unsafe{transmute(proc)}}},
35951			bindprogrampipeline: {let proc = get_proc_address("glBindProgramPipeline"); if proc == null() {dummy_pfnglbindprogrampipelineproc} else {unsafe{transmute(proc)}}},
35952			deleteprogrampipelines: {let proc = get_proc_address("glDeleteProgramPipelines"); if proc == null() {dummy_pfngldeleteprogrampipelinesproc} else {unsafe{transmute(proc)}}},
35953			genprogrampipelines: {let proc = get_proc_address("glGenProgramPipelines"); if proc == null() {dummy_pfnglgenprogrampipelinesproc} else {unsafe{transmute(proc)}}},
35954			isprogrampipeline: {let proc = get_proc_address("glIsProgramPipeline"); if proc == null() {dummy_pfnglisprogrampipelineproc} else {unsafe{transmute(proc)}}},
35955			getprogrampipelineiv: {let proc = get_proc_address("glGetProgramPipelineiv"); if proc == null() {dummy_pfnglgetprogrampipelineivproc} else {unsafe{transmute(proc)}}},
35956			programuniform1i: {let proc = get_proc_address("glProgramUniform1i"); if proc == null() {dummy_pfnglprogramuniform1iproc} else {unsafe{transmute(proc)}}},
35957			programuniform2i: {let proc = get_proc_address("glProgramUniform2i"); if proc == null() {dummy_pfnglprogramuniform2iproc} else {unsafe{transmute(proc)}}},
35958			programuniform3i: {let proc = get_proc_address("glProgramUniform3i"); if proc == null() {dummy_pfnglprogramuniform3iproc} else {unsafe{transmute(proc)}}},
35959			programuniform4i: {let proc = get_proc_address("glProgramUniform4i"); if proc == null() {dummy_pfnglprogramuniform4iproc} else {unsafe{transmute(proc)}}},
35960			programuniform1ui: {let proc = get_proc_address("glProgramUniform1ui"); if proc == null() {dummy_pfnglprogramuniform1uiproc} else {unsafe{transmute(proc)}}},
35961			programuniform2ui: {let proc = get_proc_address("glProgramUniform2ui"); if proc == null() {dummy_pfnglprogramuniform2uiproc} else {unsafe{transmute(proc)}}},
35962			programuniform3ui: {let proc = get_proc_address("glProgramUniform3ui"); if proc == null() {dummy_pfnglprogramuniform3uiproc} else {unsafe{transmute(proc)}}},
35963			programuniform4ui: {let proc = get_proc_address("glProgramUniform4ui"); if proc == null() {dummy_pfnglprogramuniform4uiproc} else {unsafe{transmute(proc)}}},
35964			programuniform1f: {let proc = get_proc_address("glProgramUniform1f"); if proc == null() {dummy_pfnglprogramuniform1fproc} else {unsafe{transmute(proc)}}},
35965			programuniform2f: {let proc = get_proc_address("glProgramUniform2f"); if proc == null() {dummy_pfnglprogramuniform2fproc} else {unsafe{transmute(proc)}}},
35966			programuniform3f: {let proc = get_proc_address("glProgramUniform3f"); if proc == null() {dummy_pfnglprogramuniform3fproc} else {unsafe{transmute(proc)}}},
35967			programuniform4f: {let proc = get_proc_address("glProgramUniform4f"); if proc == null() {dummy_pfnglprogramuniform4fproc} else {unsafe{transmute(proc)}}},
35968			programuniform1iv: {let proc = get_proc_address("glProgramUniform1iv"); if proc == null() {dummy_pfnglprogramuniform1ivproc} else {unsafe{transmute(proc)}}},
35969			programuniform2iv: {let proc = get_proc_address("glProgramUniform2iv"); if proc == null() {dummy_pfnglprogramuniform2ivproc} else {unsafe{transmute(proc)}}},
35970			programuniform3iv: {let proc = get_proc_address("glProgramUniform3iv"); if proc == null() {dummy_pfnglprogramuniform3ivproc} else {unsafe{transmute(proc)}}},
35971			programuniform4iv: {let proc = get_proc_address("glProgramUniform4iv"); if proc == null() {dummy_pfnglprogramuniform4ivproc} else {unsafe{transmute(proc)}}},
35972			programuniform1uiv: {let proc = get_proc_address("glProgramUniform1uiv"); if proc == null() {dummy_pfnglprogramuniform1uivproc} else {unsafe{transmute(proc)}}},
35973			programuniform2uiv: {let proc = get_proc_address("glProgramUniform2uiv"); if proc == null() {dummy_pfnglprogramuniform2uivproc} else {unsafe{transmute(proc)}}},
35974			programuniform3uiv: {let proc = get_proc_address("glProgramUniform3uiv"); if proc == null() {dummy_pfnglprogramuniform3uivproc} else {unsafe{transmute(proc)}}},
35975			programuniform4uiv: {let proc = get_proc_address("glProgramUniform4uiv"); if proc == null() {dummy_pfnglprogramuniform4uivproc} else {unsafe{transmute(proc)}}},
35976			programuniform1fv: {let proc = get_proc_address("glProgramUniform1fv"); if proc == null() {dummy_pfnglprogramuniform1fvproc} else {unsafe{transmute(proc)}}},
35977			programuniform2fv: {let proc = get_proc_address("glProgramUniform2fv"); if proc == null() {dummy_pfnglprogramuniform2fvproc} else {unsafe{transmute(proc)}}},
35978			programuniform3fv: {let proc = get_proc_address("glProgramUniform3fv"); if proc == null() {dummy_pfnglprogramuniform3fvproc} else {unsafe{transmute(proc)}}},
35979			programuniform4fv: {let proc = get_proc_address("glProgramUniform4fv"); if proc == null() {dummy_pfnglprogramuniform4fvproc} else {unsafe{transmute(proc)}}},
35980			programuniformmatrix2fv: {let proc = get_proc_address("glProgramUniformMatrix2fv"); if proc == null() {dummy_pfnglprogramuniformmatrix2fvproc} else {unsafe{transmute(proc)}}},
35981			programuniformmatrix3fv: {let proc = get_proc_address("glProgramUniformMatrix3fv"); if proc == null() {dummy_pfnglprogramuniformmatrix3fvproc} else {unsafe{transmute(proc)}}},
35982			programuniformmatrix4fv: {let proc = get_proc_address("glProgramUniformMatrix4fv"); if proc == null() {dummy_pfnglprogramuniformmatrix4fvproc} else {unsafe{transmute(proc)}}},
35983			programuniformmatrix2x3fv: {let proc = get_proc_address("glProgramUniformMatrix2x3fv"); if proc == null() {dummy_pfnglprogramuniformmatrix2x3fvproc} else {unsafe{transmute(proc)}}},
35984			programuniformmatrix3x2fv: {let proc = get_proc_address("glProgramUniformMatrix3x2fv"); if proc == null() {dummy_pfnglprogramuniformmatrix3x2fvproc} else {unsafe{transmute(proc)}}},
35985			programuniformmatrix2x4fv: {let proc = get_proc_address("glProgramUniformMatrix2x4fv"); if proc == null() {dummy_pfnglprogramuniformmatrix2x4fvproc} else {unsafe{transmute(proc)}}},
35986			programuniformmatrix4x2fv: {let proc = get_proc_address("glProgramUniformMatrix4x2fv"); if proc == null() {dummy_pfnglprogramuniformmatrix4x2fvproc} else {unsafe{transmute(proc)}}},
35987			programuniformmatrix3x4fv: {let proc = get_proc_address("glProgramUniformMatrix3x4fv"); if proc == null() {dummy_pfnglprogramuniformmatrix3x4fvproc} else {unsafe{transmute(proc)}}},
35988			programuniformmatrix4x3fv: {let proc = get_proc_address("glProgramUniformMatrix4x3fv"); if proc == null() {dummy_pfnglprogramuniformmatrix4x3fvproc} else {unsafe{transmute(proc)}}},
35989			validateprogrampipeline: {let proc = get_proc_address("glValidateProgramPipeline"); if proc == null() {dummy_pfnglvalidateprogrampipelineproc} else {unsafe{transmute(proc)}}},
35990			getprogrampipelineinfolog: {let proc = get_proc_address("glGetProgramPipelineInfoLog"); if proc == null() {dummy_pfnglgetprogrampipelineinfologproc} else {unsafe{transmute(proc)}}},
35991			bindimagetexture: {let proc = get_proc_address("glBindImageTexture"); if proc == null() {dummy_pfnglbindimagetextureproc} else {unsafe{transmute(proc)}}},
35992			getbooleani_v: {let proc = get_proc_address("glGetBooleani_v"); if proc == null() {dummy_pfnglgetbooleani_vproc} else {unsafe{transmute(proc)}}},
35993			memorybarrier: {let proc = get_proc_address("glMemoryBarrier"); if proc == null() {dummy_pfnglmemorybarrierproc} else {unsafe{transmute(proc)}}},
35994			memorybarrierbyregion: {let proc = get_proc_address("glMemoryBarrierByRegion"); if proc == null() {dummy_pfnglmemorybarrierbyregionproc} else {unsafe{transmute(proc)}}},
35995			texstorage2dmultisample: {let proc = get_proc_address("glTexStorage2DMultisample"); if proc == null() {dummy_pfngltexstorage2dmultisampleproc} else {unsafe{transmute(proc)}}},
35996			getmultisamplefv: {let proc = get_proc_address("glGetMultisamplefv"); if proc == null() {dummy_pfnglgetmultisamplefvproc} else {unsafe{transmute(proc)}}},
35997			samplemaski: {let proc = get_proc_address("glSampleMaski"); if proc == null() {dummy_pfnglsamplemaskiproc} else {unsafe{transmute(proc)}}},
35998			gettexlevelparameteriv: {let proc = get_proc_address("glGetTexLevelParameteriv"); if proc == null() {dummy_pfnglgettexlevelparameterivproc} else {unsafe{transmute(proc)}}},
35999			gettexlevelparameterfv: {let proc = get_proc_address("glGetTexLevelParameterfv"); if proc == null() {dummy_pfnglgettexlevelparameterfvproc} else {unsafe{transmute(proc)}}},
36000			bindvertexbuffer: {let proc = get_proc_address("glBindVertexBuffer"); if proc == null() {dummy_pfnglbindvertexbufferproc} else {unsafe{transmute(proc)}}},
36001			vertexattribformat: {let proc = get_proc_address("glVertexAttribFormat"); if proc == null() {dummy_pfnglvertexattribformatproc} else {unsafe{transmute(proc)}}},
36002			vertexattribiformat: {let proc = get_proc_address("glVertexAttribIFormat"); if proc == null() {dummy_pfnglvertexattribiformatproc} else {unsafe{transmute(proc)}}},
36003			vertexattribbinding: {let proc = get_proc_address("glVertexAttribBinding"); if proc == null() {dummy_pfnglvertexattribbindingproc} else {unsafe{transmute(proc)}}},
36004			vertexbindingdivisor: {let proc = get_proc_address("glVertexBindingDivisor"); if proc == null() {dummy_pfnglvertexbindingdivisorproc} else {unsafe{transmute(proc)}}},
36005		}
36006	}
36007	#[inline(always)]
36008	pub fn get_available(&self) -> bool {
36009		self.available
36010	}
36011}
36012
36013impl Default for EsVersion31 {
36014	fn default() -> Self {
36015		Self {
36016			available: false,
36017			geterror: dummy_pfnglgeterrorproc,
36018			dispatchcompute: dummy_pfngldispatchcomputeproc,
36019			dispatchcomputeindirect: dummy_pfngldispatchcomputeindirectproc,
36020			drawarraysindirect: dummy_pfngldrawarraysindirectproc,
36021			drawelementsindirect: dummy_pfngldrawelementsindirectproc,
36022			framebufferparameteri: dummy_pfnglframebufferparameteriproc,
36023			getframebufferparameteriv: dummy_pfnglgetframebufferparameterivproc,
36024			getprograminterfaceiv: dummy_pfnglgetprograminterfaceivproc,
36025			getprogramresourceindex: dummy_pfnglgetprogramresourceindexproc,
36026			getprogramresourcename: dummy_pfnglgetprogramresourcenameproc,
36027			getprogramresourceiv: dummy_pfnglgetprogramresourceivproc,
36028			getprogramresourcelocation: dummy_pfnglgetprogramresourcelocationproc,
36029			useprogramstages: dummy_pfngluseprogramstagesproc,
36030			activeshaderprogram: dummy_pfnglactiveshaderprogramproc,
36031			createshaderprogramv: dummy_pfnglcreateshaderprogramvproc,
36032			bindprogrampipeline: dummy_pfnglbindprogrampipelineproc,
36033			deleteprogrampipelines: dummy_pfngldeleteprogrampipelinesproc,
36034			genprogrampipelines: dummy_pfnglgenprogrampipelinesproc,
36035			isprogrampipeline: dummy_pfnglisprogrampipelineproc,
36036			getprogrampipelineiv: dummy_pfnglgetprogrampipelineivproc,
36037			programuniform1i: dummy_pfnglprogramuniform1iproc,
36038			programuniform2i: dummy_pfnglprogramuniform2iproc,
36039			programuniform3i: dummy_pfnglprogramuniform3iproc,
36040			programuniform4i: dummy_pfnglprogramuniform4iproc,
36041			programuniform1ui: dummy_pfnglprogramuniform1uiproc,
36042			programuniform2ui: dummy_pfnglprogramuniform2uiproc,
36043			programuniform3ui: dummy_pfnglprogramuniform3uiproc,
36044			programuniform4ui: dummy_pfnglprogramuniform4uiproc,
36045			programuniform1f: dummy_pfnglprogramuniform1fproc,
36046			programuniform2f: dummy_pfnglprogramuniform2fproc,
36047			programuniform3f: dummy_pfnglprogramuniform3fproc,
36048			programuniform4f: dummy_pfnglprogramuniform4fproc,
36049			programuniform1iv: dummy_pfnglprogramuniform1ivproc,
36050			programuniform2iv: dummy_pfnglprogramuniform2ivproc,
36051			programuniform3iv: dummy_pfnglprogramuniform3ivproc,
36052			programuniform4iv: dummy_pfnglprogramuniform4ivproc,
36053			programuniform1uiv: dummy_pfnglprogramuniform1uivproc,
36054			programuniform2uiv: dummy_pfnglprogramuniform2uivproc,
36055			programuniform3uiv: dummy_pfnglprogramuniform3uivproc,
36056			programuniform4uiv: dummy_pfnglprogramuniform4uivproc,
36057			programuniform1fv: dummy_pfnglprogramuniform1fvproc,
36058			programuniform2fv: dummy_pfnglprogramuniform2fvproc,
36059			programuniform3fv: dummy_pfnglprogramuniform3fvproc,
36060			programuniform4fv: dummy_pfnglprogramuniform4fvproc,
36061			programuniformmatrix2fv: dummy_pfnglprogramuniformmatrix2fvproc,
36062			programuniformmatrix3fv: dummy_pfnglprogramuniformmatrix3fvproc,
36063			programuniformmatrix4fv: dummy_pfnglprogramuniformmatrix4fvproc,
36064			programuniformmatrix2x3fv: dummy_pfnglprogramuniformmatrix2x3fvproc,
36065			programuniformmatrix3x2fv: dummy_pfnglprogramuniformmatrix3x2fvproc,
36066			programuniformmatrix2x4fv: dummy_pfnglprogramuniformmatrix2x4fvproc,
36067			programuniformmatrix4x2fv: dummy_pfnglprogramuniformmatrix4x2fvproc,
36068			programuniformmatrix3x4fv: dummy_pfnglprogramuniformmatrix3x4fvproc,
36069			programuniformmatrix4x3fv: dummy_pfnglprogramuniformmatrix4x3fvproc,
36070			validateprogrampipeline: dummy_pfnglvalidateprogrampipelineproc,
36071			getprogrampipelineinfolog: dummy_pfnglgetprogrampipelineinfologproc,
36072			bindimagetexture: dummy_pfnglbindimagetextureproc,
36073			getbooleani_v: dummy_pfnglgetbooleani_vproc,
36074			memorybarrier: dummy_pfnglmemorybarrierproc,
36075			memorybarrierbyregion: dummy_pfnglmemorybarrierbyregionproc,
36076			texstorage2dmultisample: dummy_pfngltexstorage2dmultisampleproc,
36077			getmultisamplefv: dummy_pfnglgetmultisamplefvproc,
36078			samplemaski: dummy_pfnglsamplemaskiproc,
36079			gettexlevelparameteriv: dummy_pfnglgettexlevelparameterivproc,
36080			gettexlevelparameterfv: dummy_pfnglgettexlevelparameterfvproc,
36081			bindvertexbuffer: dummy_pfnglbindvertexbufferproc,
36082			vertexattribformat: dummy_pfnglvertexattribformatproc,
36083			vertexattribiformat: dummy_pfnglvertexattribiformatproc,
36084			vertexattribbinding: dummy_pfnglvertexattribbindingproc,
36085			vertexbindingdivisor: dummy_pfnglvertexbindingdivisorproc,
36086		}
36087	}
36088}
36089impl Debug for EsVersion31 {
36090	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
36091		if self.available {
36092			f.debug_struct("EsVersion31")
36093			.field("available", &self.available)
36094			.field("dispatchcompute", unsafe{if transmute::<_, *const c_void>(self.dispatchcompute) == (dummy_pfngldispatchcomputeproc as *const c_void) {&null::<PFNGLDISPATCHCOMPUTEPROC>()} else {&self.dispatchcompute}})
36095			.field("dispatchcomputeindirect", unsafe{if transmute::<_, *const c_void>(self.dispatchcomputeindirect) == (dummy_pfngldispatchcomputeindirectproc as *const c_void) {&null::<PFNGLDISPATCHCOMPUTEINDIRECTPROC>()} else {&self.dispatchcomputeindirect}})
36096			.field("drawarraysindirect", unsafe{if transmute::<_, *const c_void>(self.drawarraysindirect) == (dummy_pfngldrawarraysindirectproc as *const c_void) {&null::<PFNGLDRAWARRAYSINDIRECTPROC>()} else {&self.drawarraysindirect}})
36097			.field("drawelementsindirect", unsafe{if transmute::<_, *const c_void>(self.drawelementsindirect) == (dummy_pfngldrawelementsindirectproc as *const c_void) {&null::<PFNGLDRAWELEMENTSINDIRECTPROC>()} else {&self.drawelementsindirect}})
36098			.field("framebufferparameteri", unsafe{if transmute::<_, *const c_void>(self.framebufferparameteri) == (dummy_pfnglframebufferparameteriproc as *const c_void) {&null::<PFNGLFRAMEBUFFERPARAMETERIPROC>()} else {&self.framebufferparameteri}})
36099			.field("getframebufferparameteriv", unsafe{if transmute::<_, *const c_void>(self.getframebufferparameteriv) == (dummy_pfnglgetframebufferparameterivproc as *const c_void) {&null::<PFNGLGETFRAMEBUFFERPARAMETERIVPROC>()} else {&self.getframebufferparameteriv}})
36100			.field("getprograminterfaceiv", unsafe{if transmute::<_, *const c_void>(self.getprograminterfaceiv) == (dummy_pfnglgetprograminterfaceivproc as *const c_void) {&null::<PFNGLGETPROGRAMINTERFACEIVPROC>()} else {&self.getprograminterfaceiv}})
36101			.field("getprogramresourceindex", unsafe{if transmute::<_, *const c_void>(self.getprogramresourceindex) == (dummy_pfnglgetprogramresourceindexproc as *const c_void) {&null::<PFNGLGETPROGRAMRESOURCEINDEXPROC>()} else {&self.getprogramresourceindex}})
36102			.field("getprogramresourcename", unsafe{if transmute::<_, *const c_void>(self.getprogramresourcename) == (dummy_pfnglgetprogramresourcenameproc as *const c_void) {&null::<PFNGLGETPROGRAMRESOURCENAMEPROC>()} else {&self.getprogramresourcename}})
36103			.field("getprogramresourceiv", unsafe{if transmute::<_, *const c_void>(self.getprogramresourceiv) == (dummy_pfnglgetprogramresourceivproc as *const c_void) {&null::<PFNGLGETPROGRAMRESOURCEIVPROC>()} else {&self.getprogramresourceiv}})
36104			.field("getprogramresourcelocation", unsafe{if transmute::<_, *const c_void>(self.getprogramresourcelocation) == (dummy_pfnglgetprogramresourcelocationproc as *const c_void) {&null::<PFNGLGETPROGRAMRESOURCELOCATIONPROC>()} else {&self.getprogramresourcelocation}})
36105			.field("useprogramstages", unsafe{if transmute::<_, *const c_void>(self.useprogramstages) == (dummy_pfngluseprogramstagesproc as *const c_void) {&null::<PFNGLUSEPROGRAMSTAGESPROC>()} else {&self.useprogramstages}})
36106			.field("activeshaderprogram", unsafe{if transmute::<_, *const c_void>(self.activeshaderprogram) == (dummy_pfnglactiveshaderprogramproc as *const c_void) {&null::<PFNGLACTIVESHADERPROGRAMPROC>()} else {&self.activeshaderprogram}})
36107			.field("createshaderprogramv", unsafe{if transmute::<_, *const c_void>(self.createshaderprogramv) == (dummy_pfnglcreateshaderprogramvproc as *const c_void) {&null::<PFNGLCREATESHADERPROGRAMVPROC>()} else {&self.createshaderprogramv}})
36108			.field("bindprogrampipeline", unsafe{if transmute::<_, *const c_void>(self.bindprogrampipeline) == (dummy_pfnglbindprogrampipelineproc as *const c_void) {&null::<PFNGLBINDPROGRAMPIPELINEPROC>()} else {&self.bindprogrampipeline}})
36109			.field("deleteprogrampipelines", unsafe{if transmute::<_, *const c_void>(self.deleteprogrampipelines) == (dummy_pfngldeleteprogrampipelinesproc as *const c_void) {&null::<PFNGLDELETEPROGRAMPIPELINESPROC>()} else {&self.deleteprogrampipelines}})
36110			.field("genprogrampipelines", unsafe{if transmute::<_, *const c_void>(self.genprogrampipelines) == (dummy_pfnglgenprogrampipelinesproc as *const c_void) {&null::<PFNGLGENPROGRAMPIPELINESPROC>()} else {&self.genprogrampipelines}})
36111			.field("isprogrampipeline", unsafe{if transmute::<_, *const c_void>(self.isprogrampipeline) == (dummy_pfnglisprogrampipelineproc as *const c_void) {&null::<PFNGLISPROGRAMPIPELINEPROC>()} else {&self.isprogrampipeline}})
36112			.field("getprogrampipelineiv", unsafe{if transmute::<_, *const c_void>(self.getprogrampipelineiv) == (dummy_pfnglgetprogrampipelineivproc as *const c_void) {&null::<PFNGLGETPROGRAMPIPELINEIVPROC>()} else {&self.getprogrampipelineiv}})
36113			.field("programuniform1i", unsafe{if transmute::<_, *const c_void>(self.programuniform1i) == (dummy_pfnglprogramuniform1iproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM1IPROC>()} else {&self.programuniform1i}})
36114			.field("programuniform2i", unsafe{if transmute::<_, *const c_void>(self.programuniform2i) == (dummy_pfnglprogramuniform2iproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM2IPROC>()} else {&self.programuniform2i}})
36115			.field("programuniform3i", unsafe{if transmute::<_, *const c_void>(self.programuniform3i) == (dummy_pfnglprogramuniform3iproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM3IPROC>()} else {&self.programuniform3i}})
36116			.field("programuniform4i", unsafe{if transmute::<_, *const c_void>(self.programuniform4i) == (dummy_pfnglprogramuniform4iproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM4IPROC>()} else {&self.programuniform4i}})
36117			.field("programuniform1ui", unsafe{if transmute::<_, *const c_void>(self.programuniform1ui) == (dummy_pfnglprogramuniform1uiproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM1UIPROC>()} else {&self.programuniform1ui}})
36118			.field("programuniform2ui", unsafe{if transmute::<_, *const c_void>(self.programuniform2ui) == (dummy_pfnglprogramuniform2uiproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM2UIPROC>()} else {&self.programuniform2ui}})
36119			.field("programuniform3ui", unsafe{if transmute::<_, *const c_void>(self.programuniform3ui) == (dummy_pfnglprogramuniform3uiproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM3UIPROC>()} else {&self.programuniform3ui}})
36120			.field("programuniform4ui", unsafe{if transmute::<_, *const c_void>(self.programuniform4ui) == (dummy_pfnglprogramuniform4uiproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM4UIPROC>()} else {&self.programuniform4ui}})
36121			.field("programuniform1f", unsafe{if transmute::<_, *const c_void>(self.programuniform1f) == (dummy_pfnglprogramuniform1fproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM1FPROC>()} else {&self.programuniform1f}})
36122			.field("programuniform2f", unsafe{if transmute::<_, *const c_void>(self.programuniform2f) == (dummy_pfnglprogramuniform2fproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM2FPROC>()} else {&self.programuniform2f}})
36123			.field("programuniform3f", unsafe{if transmute::<_, *const c_void>(self.programuniform3f) == (dummy_pfnglprogramuniform3fproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM3FPROC>()} else {&self.programuniform3f}})
36124			.field("programuniform4f", unsafe{if transmute::<_, *const c_void>(self.programuniform4f) == (dummy_pfnglprogramuniform4fproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM4FPROC>()} else {&self.programuniform4f}})
36125			.field("programuniform1iv", unsafe{if transmute::<_, *const c_void>(self.programuniform1iv) == (dummy_pfnglprogramuniform1ivproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM1IVPROC>()} else {&self.programuniform1iv}})
36126			.field("programuniform2iv", unsafe{if transmute::<_, *const c_void>(self.programuniform2iv) == (dummy_pfnglprogramuniform2ivproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM2IVPROC>()} else {&self.programuniform2iv}})
36127			.field("programuniform3iv", unsafe{if transmute::<_, *const c_void>(self.programuniform3iv) == (dummy_pfnglprogramuniform3ivproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM3IVPROC>()} else {&self.programuniform3iv}})
36128			.field("programuniform4iv", unsafe{if transmute::<_, *const c_void>(self.programuniform4iv) == (dummy_pfnglprogramuniform4ivproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM4IVPROC>()} else {&self.programuniform4iv}})
36129			.field("programuniform1uiv", unsafe{if transmute::<_, *const c_void>(self.programuniform1uiv) == (dummy_pfnglprogramuniform1uivproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM1UIVPROC>()} else {&self.programuniform1uiv}})
36130			.field("programuniform2uiv", unsafe{if transmute::<_, *const c_void>(self.programuniform2uiv) == (dummy_pfnglprogramuniform2uivproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM2UIVPROC>()} else {&self.programuniform2uiv}})
36131			.field("programuniform3uiv", unsafe{if transmute::<_, *const c_void>(self.programuniform3uiv) == (dummy_pfnglprogramuniform3uivproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM3UIVPROC>()} else {&self.programuniform3uiv}})
36132			.field("programuniform4uiv", unsafe{if transmute::<_, *const c_void>(self.programuniform4uiv) == (dummy_pfnglprogramuniform4uivproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM4UIVPROC>()} else {&self.programuniform4uiv}})
36133			.field("programuniform1fv", unsafe{if transmute::<_, *const c_void>(self.programuniform1fv) == (dummy_pfnglprogramuniform1fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM1FVPROC>()} else {&self.programuniform1fv}})
36134			.field("programuniform2fv", unsafe{if transmute::<_, *const c_void>(self.programuniform2fv) == (dummy_pfnglprogramuniform2fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM2FVPROC>()} else {&self.programuniform2fv}})
36135			.field("programuniform3fv", unsafe{if transmute::<_, *const c_void>(self.programuniform3fv) == (dummy_pfnglprogramuniform3fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM3FVPROC>()} else {&self.programuniform3fv}})
36136			.field("programuniform4fv", unsafe{if transmute::<_, *const c_void>(self.programuniform4fv) == (dummy_pfnglprogramuniform4fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORM4FVPROC>()} else {&self.programuniform4fv}})
36137			.field("programuniformmatrix2fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix2fv) == (dummy_pfnglprogramuniformmatrix2fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX2FVPROC>()} else {&self.programuniformmatrix2fv}})
36138			.field("programuniformmatrix3fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix3fv) == (dummy_pfnglprogramuniformmatrix3fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX3FVPROC>()} else {&self.programuniformmatrix3fv}})
36139			.field("programuniformmatrix4fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix4fv) == (dummy_pfnglprogramuniformmatrix4fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX4FVPROC>()} else {&self.programuniformmatrix4fv}})
36140			.field("programuniformmatrix2x3fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix2x3fv) == (dummy_pfnglprogramuniformmatrix2x3fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC>()} else {&self.programuniformmatrix2x3fv}})
36141			.field("programuniformmatrix3x2fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix3x2fv) == (dummy_pfnglprogramuniformmatrix3x2fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC>()} else {&self.programuniformmatrix3x2fv}})
36142			.field("programuniformmatrix2x4fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix2x4fv) == (dummy_pfnglprogramuniformmatrix2x4fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC>()} else {&self.programuniformmatrix2x4fv}})
36143			.field("programuniformmatrix4x2fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix4x2fv) == (dummy_pfnglprogramuniformmatrix4x2fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC>()} else {&self.programuniformmatrix4x2fv}})
36144			.field("programuniformmatrix3x4fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix3x4fv) == (dummy_pfnglprogramuniformmatrix3x4fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC>()} else {&self.programuniformmatrix3x4fv}})
36145			.field("programuniformmatrix4x3fv", unsafe{if transmute::<_, *const c_void>(self.programuniformmatrix4x3fv) == (dummy_pfnglprogramuniformmatrix4x3fvproc as *const c_void) {&null::<PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC>()} else {&self.programuniformmatrix4x3fv}})
36146			.field("validateprogrampipeline", unsafe{if transmute::<_, *const c_void>(self.validateprogrampipeline) == (dummy_pfnglvalidateprogrampipelineproc as *const c_void) {&null::<PFNGLVALIDATEPROGRAMPIPELINEPROC>()} else {&self.validateprogrampipeline}})
36147			.field("getprogrampipelineinfolog", unsafe{if transmute::<_, *const c_void>(self.getprogrampipelineinfolog) == (dummy_pfnglgetprogrampipelineinfologproc as *const c_void) {&null::<PFNGLGETPROGRAMPIPELINEINFOLOGPROC>()} else {&self.getprogrampipelineinfolog}})
36148			.field("bindimagetexture", unsafe{if transmute::<_, *const c_void>(self.bindimagetexture) == (dummy_pfnglbindimagetextureproc as *const c_void) {&null::<PFNGLBINDIMAGETEXTUREPROC>()} else {&self.bindimagetexture}})
36149			.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}})
36150			.field("memorybarrier", unsafe{if transmute::<_, *const c_void>(self.memorybarrier) == (dummy_pfnglmemorybarrierproc as *const c_void) {&null::<PFNGLMEMORYBARRIERPROC>()} else {&self.memorybarrier}})
36151			.field("memorybarrierbyregion", unsafe{if transmute::<_, *const c_void>(self.memorybarrierbyregion) == (dummy_pfnglmemorybarrierbyregionproc as *const c_void) {&null::<PFNGLMEMORYBARRIERBYREGIONPROC>()} else {&self.memorybarrierbyregion}})
36152			.field("texstorage2dmultisample", unsafe{if transmute::<_, *const c_void>(self.texstorage2dmultisample) == (dummy_pfngltexstorage2dmultisampleproc as *const c_void) {&null::<PFNGLTEXSTORAGE2DMULTISAMPLEPROC>()} else {&self.texstorage2dmultisample}})
36153			.field("getmultisamplefv", unsafe{if transmute::<_, *const c_void>(self.getmultisamplefv) == (dummy_pfnglgetmultisamplefvproc as *const c_void) {&null::<PFNGLGETMULTISAMPLEFVPROC>()} else {&self.getmultisamplefv}})
36154			.field("samplemaski", unsafe{if transmute::<_, *const c_void>(self.samplemaski) == (dummy_pfnglsamplemaskiproc as *const c_void) {&null::<PFNGLSAMPLEMASKIPROC>()} else {&self.samplemaski}})
36155			.field("gettexlevelparameteriv", unsafe{if transmute::<_, *const c_void>(self.gettexlevelparameteriv) == (dummy_pfnglgettexlevelparameterivproc as *const c_void) {&null::<PFNGLGETTEXLEVELPARAMETERIVPROC>()} else {&self.gettexlevelparameteriv}})
36156			.field("gettexlevelparameterfv", unsafe{if transmute::<_, *const c_void>(self.gettexlevelparameterfv) == (dummy_pfnglgettexlevelparameterfvproc as *const c_void) {&null::<PFNGLGETTEXLEVELPARAMETERFVPROC>()} else {&self.gettexlevelparameterfv}})
36157			.field("bindvertexbuffer", unsafe{if transmute::<_, *const c_void>(self.bindvertexbuffer) == (dummy_pfnglbindvertexbufferproc as *const c_void) {&null::<PFNGLBINDVERTEXBUFFERPROC>()} else {&self.bindvertexbuffer}})
36158			.field("vertexattribformat", unsafe{if transmute::<_, *const c_void>(self.vertexattribformat) == (dummy_pfnglvertexattribformatproc as *const c_void) {&null::<PFNGLVERTEXATTRIBFORMATPROC>()} else {&self.vertexattribformat}})
36159			.field("vertexattribiformat", unsafe{if transmute::<_, *const c_void>(self.vertexattribiformat) == (dummy_pfnglvertexattribiformatproc as *const c_void) {&null::<PFNGLVERTEXATTRIBIFORMATPROC>()} else {&self.vertexattribiformat}})
36160			.field("vertexattribbinding", unsafe{if transmute::<_, *const c_void>(self.vertexattribbinding) == (dummy_pfnglvertexattribbindingproc as *const c_void) {&null::<PFNGLVERTEXATTRIBBINDINGPROC>()} else {&self.vertexattribbinding}})
36161			.field("vertexbindingdivisor", unsafe{if transmute::<_, *const c_void>(self.vertexbindingdivisor) == (dummy_pfnglvertexbindingdivisorproc as *const c_void) {&null::<PFNGLVERTEXBINDINGDIVISORPROC>()} else {&self.vertexbindingdivisor}})
36162			.finish()
36163		} else {
36164			f.debug_struct("EsVersion31")
36165			.field("available", &self.available)
36166			.finish_non_exhaustive()
36167		}
36168	}
36169}
36170
36171/// The prototype to the OpenGL function `BlendBarrier`
36172type PFNGLBLENDBARRIERPROC = extern "system" fn();
36173
36174/// The prototype to the OpenGL function `PrimitiveBoundingBox`
36175type PFNGLPRIMITIVEBOUNDINGBOXPROC = extern "system" fn(GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
36176
36177/// The dummy function of `BlendBarrier()`
36178extern "system" fn dummy_pfnglblendbarrierproc () {
36179	panic!("OpenGL ES function pointer `glBlendBarrier()` is null.")
36180}
36181
36182/// The dummy function of `PrimitiveBoundingBox()`
36183extern "system" fn dummy_pfnglprimitiveboundingboxproc (_: GLfloat, _: GLfloat, _: GLfloat, _: GLfloat, _: GLfloat, _: GLfloat, _: GLfloat, _: GLfloat) {
36184	panic!("OpenGL ES function pointer `glPrimitiveBoundingBox()` is null.")
36185}
36186/// Constant value defined from OpenGL ES 3.2
36187pub const GL_MULTISAMPLE_LINE_WIDTH_RANGE: GLenum = 0x9381;
36188
36189/// Constant value defined from OpenGL ES 3.2
36190pub const GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY: GLenum = 0x9382;
36191
36192/// Constant value defined from OpenGL ES 3.2
36193pub const GL_MULTIPLY: GLenum = 0x9294;
36194
36195/// Constant value defined from OpenGL ES 3.2
36196pub const GL_SCREEN: GLenum = 0x9295;
36197
36198/// Constant value defined from OpenGL ES 3.2
36199pub const GL_OVERLAY: GLenum = 0x9296;
36200
36201/// Constant value defined from OpenGL ES 3.2
36202pub const GL_DARKEN: GLenum = 0x9297;
36203
36204/// Constant value defined from OpenGL ES 3.2
36205pub const GL_LIGHTEN: GLenum = 0x9298;
36206
36207/// Constant value defined from OpenGL ES 3.2
36208pub const GL_COLORDODGE: GLenum = 0x9299;
36209
36210/// Constant value defined from OpenGL ES 3.2
36211pub const GL_COLORBURN: GLenum = 0x929A;
36212
36213/// Constant value defined from OpenGL ES 3.2
36214pub const GL_HARDLIGHT: GLenum = 0x929B;
36215
36216/// Constant value defined from OpenGL ES 3.2
36217pub const GL_SOFTLIGHT: GLenum = 0x929C;
36218
36219/// Constant value defined from OpenGL ES 3.2
36220pub const GL_DIFFERENCE: GLenum = 0x929E;
36221
36222/// Constant value defined from OpenGL ES 3.2
36223pub const GL_EXCLUSION: GLenum = 0x92A0;
36224
36225/// Constant value defined from OpenGL ES 3.2
36226pub const GL_HSL_HUE: GLenum = 0x92AD;
36227
36228/// Constant value defined from OpenGL ES 3.2
36229pub const GL_HSL_SATURATION: GLenum = 0x92AE;
36230
36231/// Constant value defined from OpenGL ES 3.2
36232pub const GL_HSL_COLOR: GLenum = 0x92AF;
36233
36234/// Constant value defined from OpenGL ES 3.2
36235pub const GL_HSL_LUMINOSITY: GLenum = 0x92B0;
36236
36237/// Constant value defined from OpenGL ES 3.2
36238pub const GL_PRIMITIVE_BOUNDING_BOX: GLenum = 0x92BE;
36239
36240/// Constant value defined from OpenGL ES 3.2
36241pub const GL_COMPRESSED_RGBA_ASTC_4x4: GLenum = 0x93B0;
36242
36243/// Constant value defined from OpenGL ES 3.2
36244pub const GL_COMPRESSED_RGBA_ASTC_5x4: GLenum = 0x93B1;
36245
36246/// Constant value defined from OpenGL ES 3.2
36247pub const GL_COMPRESSED_RGBA_ASTC_5x5: GLenum = 0x93B2;
36248
36249/// Constant value defined from OpenGL ES 3.2
36250pub const GL_COMPRESSED_RGBA_ASTC_6x5: GLenum = 0x93B3;
36251
36252/// Constant value defined from OpenGL ES 3.2
36253pub const GL_COMPRESSED_RGBA_ASTC_6x6: GLenum = 0x93B4;
36254
36255/// Constant value defined from OpenGL ES 3.2
36256pub const GL_COMPRESSED_RGBA_ASTC_8x5: GLenum = 0x93B5;
36257
36258/// Constant value defined from OpenGL ES 3.2
36259pub const GL_COMPRESSED_RGBA_ASTC_8x6: GLenum = 0x93B6;
36260
36261/// Constant value defined from OpenGL ES 3.2
36262pub const GL_COMPRESSED_RGBA_ASTC_8x8: GLenum = 0x93B7;
36263
36264/// Constant value defined from OpenGL ES 3.2
36265pub const GL_COMPRESSED_RGBA_ASTC_10x5: GLenum = 0x93B8;
36266
36267/// Constant value defined from OpenGL ES 3.2
36268pub const GL_COMPRESSED_RGBA_ASTC_10x6: GLenum = 0x93B9;
36269
36270/// Constant value defined from OpenGL ES 3.2
36271pub const GL_COMPRESSED_RGBA_ASTC_10x8: GLenum = 0x93BA;
36272
36273/// Constant value defined from OpenGL ES 3.2
36274pub const GL_COMPRESSED_RGBA_ASTC_10x10: GLenum = 0x93BB;
36275
36276/// Constant value defined from OpenGL ES 3.2
36277pub const GL_COMPRESSED_RGBA_ASTC_12x10: GLenum = 0x93BC;
36278
36279/// Constant value defined from OpenGL ES 3.2
36280pub const GL_COMPRESSED_RGBA_ASTC_12x12: GLenum = 0x93BD;
36281
36282/// Constant value defined from OpenGL ES 3.2
36283pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4: GLenum = 0x93D0;
36284
36285/// Constant value defined from OpenGL ES 3.2
36286pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4: GLenum = 0x93D1;
36287
36288/// Constant value defined from OpenGL ES 3.2
36289pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5: GLenum = 0x93D2;
36290
36291/// Constant value defined from OpenGL ES 3.2
36292pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5: GLenum = 0x93D3;
36293
36294/// Constant value defined from OpenGL ES 3.2
36295pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6: GLenum = 0x93D4;
36296
36297/// Constant value defined from OpenGL ES 3.2
36298pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5: GLenum = 0x93D5;
36299
36300/// Constant value defined from OpenGL ES 3.2
36301pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6: GLenum = 0x93D6;
36302
36303/// Constant value defined from OpenGL ES 3.2
36304pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8: GLenum = 0x93D7;
36305
36306/// Constant value defined from OpenGL ES 3.2
36307pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5: GLenum = 0x93D8;
36308
36309/// Constant value defined from OpenGL ES 3.2
36310pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6: GLenum = 0x93D9;
36311
36312/// Constant value defined from OpenGL ES 3.2
36313pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8: GLenum = 0x93DA;
36314
36315/// Constant value defined from OpenGL ES 3.2
36316pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10: GLenum = 0x93DB;
36317
36318/// Constant value defined from OpenGL ES 3.2
36319pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10: GLenum = 0x93DC;
36320
36321/// Constant value defined from OpenGL ES 3.2
36322pub const GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12: GLenum = 0x93DD;
36323
36324/// Functions from OpenGL ES version 3.2
36325pub trait ES_GL_3_2 {
36326	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetError.xhtml>
36327	fn glGetError(&self) -> GLenum;
36328
36329	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendBarrier.xhtml>
36330	fn glBlendBarrier(&self) -> Result<()>;
36331
36332	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCopyImageSubData.xhtml>
36333	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<()>;
36334
36335	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDebugMessageControl.xhtml>
36336	fn glDebugMessageControl(&self, source: GLenum, type_: GLenum, severity: GLenum, count: GLsizei, ids: *const GLuint, enabled: GLboolean) -> Result<()>;
36337
36338	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDebugMessageInsert.xhtml>
36339	fn glDebugMessageInsert(&self, source: GLenum, type_: GLenum, id: GLuint, severity: GLenum, length: GLsizei, buf: *const GLchar) -> Result<()>;
36340
36341	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDebugMessageCallback.xhtml>
36342	fn glDebugMessageCallback(&self, callback: GLDEBUGPROC, userParam: *const c_void) -> Result<()>;
36343
36344	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetDebugMessageLog.xhtml>
36345	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>;
36346
36347	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glPushDebugGroup.xhtml>
36348	fn glPushDebugGroup(&self, source: GLenum, id: GLuint, length: GLsizei, message: *const GLchar) -> Result<()>;
36349
36350	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glPopDebugGroup.xhtml>
36351	fn glPopDebugGroup(&self) -> Result<()>;
36352
36353	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glObjectLabel.xhtml>
36354	fn glObjectLabel(&self, identifier: GLenum, name: GLuint, length: GLsizei, label: *const GLchar) -> Result<()>;
36355
36356	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetObjectLabel.xhtml>
36357	fn glGetObjectLabel(&self, identifier: GLenum, name: GLuint, bufSize: GLsizei, length: *mut GLsizei, label: *mut GLchar) -> Result<()>;
36358
36359	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glObjectPtrLabel.xhtml>
36360	fn glObjectPtrLabel(&self, ptr: *const c_void, length: GLsizei, label: *const GLchar) -> Result<()>;
36361
36362	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetObjectPtrLabel.xhtml>
36363	fn glGetObjectPtrLabel(&self, ptr: *const c_void, bufSize: GLsizei, length: *mut GLsizei, label: *mut GLchar) -> Result<()>;
36364
36365	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetPointerv.xhtml>
36366	fn glGetPointerv(&self, pname: GLenum, params: *mut *mut c_void) -> Result<()>;
36367
36368	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glEnablei.xhtml>
36369	fn glEnablei(&self, target: GLenum, index: GLuint) -> Result<()>;
36370
36371	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDisablei.xhtml>
36372	fn glDisablei(&self, target: GLenum, index: GLuint) -> Result<()>;
36373
36374	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendEquationi.xhtml>
36375	fn glBlendEquationi(&self, buf: GLuint, mode: GLenum) -> Result<()>;
36376
36377	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendEquationSeparatei.xhtml>
36378	fn glBlendEquationSeparatei(&self, buf: GLuint, modeRGB: GLenum, modeAlpha: GLenum) -> Result<()>;
36379
36380	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendFunci.xhtml>
36381	fn glBlendFunci(&self, buf: GLuint, src: GLenum, dst: GLenum) -> Result<()>;
36382
36383	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendFuncSeparatei.xhtml>
36384	fn glBlendFuncSeparatei(&self, buf: GLuint, srcRGB: GLenum, dstRGB: GLenum, srcAlpha: GLenum, dstAlpha: GLenum) -> Result<()>;
36385
36386	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glColorMaski.xhtml>
36387	fn glColorMaski(&self, index: GLuint, r: GLboolean, g: GLboolean, b: GLboolean, a: GLboolean) -> Result<()>;
36388
36389	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsEnabledi.xhtml>
36390	fn glIsEnabledi(&self, target: GLenum, index: GLuint) -> Result<GLboolean>;
36391
36392	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawElementsBaseVertex.xhtml>
36393	fn glDrawElementsBaseVertex(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, basevertex: GLint) -> Result<()>;
36394
36395	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawRangeElementsBaseVertex.xhtml>
36396	fn glDrawRangeElementsBaseVertex(&self, mode: GLenum, start: GLuint, end: GLuint, count: GLsizei, type_: GLenum, indices: *const c_void, basevertex: GLint) -> Result<()>;
36397
36398	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawElementsInstancedBaseVertex.xhtml>
36399	fn glDrawElementsInstancedBaseVertex(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei, basevertex: GLint) -> Result<()>;
36400
36401	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFramebufferTexture.xhtml>
36402	fn glFramebufferTexture(&self, target: GLenum, attachment: GLenum, texture: GLuint, level: GLint) -> Result<()>;
36403
36404	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glPrimitiveBoundingBox.xhtml>
36405	fn glPrimitiveBoundingBox(&self, minX: GLfloat, minY: GLfloat, minZ: GLfloat, minW: GLfloat, maxX: GLfloat, maxY: GLfloat, maxZ: GLfloat, maxW: GLfloat) -> Result<()>;
36406
36407	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetGraphicsResetStatus.xhtml>
36408	fn glGetGraphicsResetStatus(&self) -> Result<GLenum>;
36409
36410	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glReadnPixels.xhtml>
36411	fn glReadnPixels(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, bufSize: GLsizei, data: *mut c_void) -> Result<()>;
36412
36413	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetnUniformfv.xhtml>
36414	fn glGetnUniformfv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLfloat) -> Result<()>;
36415
36416	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetnUniformiv.xhtml>
36417	fn glGetnUniformiv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLint) -> Result<()>;
36418
36419	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetnUniformuiv.xhtml>
36420	fn glGetnUniformuiv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLuint) -> Result<()>;
36421
36422	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glMinSampleShading.xhtml>
36423	fn glMinSampleShading(&self, value: GLfloat) -> Result<()>;
36424
36425	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glPatchParameteri.xhtml>
36426	fn glPatchParameteri(&self, pname: GLenum, value: GLint) -> Result<()>;
36427
36428	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexParameterIiv.xhtml>
36429	fn glTexParameterIiv(&self, target: GLenum, pname: GLenum, params: *const GLint) -> Result<()>;
36430
36431	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexParameterIuiv.xhtml>
36432	fn glTexParameterIuiv(&self, target: GLenum, pname: GLenum, params: *const GLuint) -> Result<()>;
36433
36434	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetTexParameterIiv.xhtml>
36435	fn glGetTexParameterIiv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
36436
36437	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetTexParameterIuiv.xhtml>
36438	fn glGetTexParameterIuiv(&self, target: GLenum, pname: GLenum, params: *mut GLuint) -> Result<()>;
36439
36440	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glSamplerParameterIiv.xhtml>
36441	fn glSamplerParameterIiv(&self, sampler: GLuint, pname: GLenum, param: *const GLint) -> Result<()>;
36442
36443	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glSamplerParameterIuiv.xhtml>
36444	fn glSamplerParameterIuiv(&self, sampler: GLuint, pname: GLenum, param: *const GLuint) -> Result<()>;
36445
36446	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetSamplerParameterIiv.xhtml>
36447	fn glGetSamplerParameterIiv(&self, sampler: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
36448
36449	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetSamplerParameterIuiv.xhtml>
36450	fn glGetSamplerParameterIuiv(&self, sampler: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()>;
36451
36452	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexBuffer.xhtml>
36453	fn glTexBuffer(&self, target: GLenum, internalformat: GLenum, buffer: GLuint) -> Result<()>;
36454
36455	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexBufferRange.xhtml>
36456	fn glTexBufferRange(&self, target: GLenum, internalformat: GLenum, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()>;
36457
36458	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexStorage3DMultisample.xhtml>
36459	fn glTexStorage3DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, fixedsamplelocations: GLboolean) -> Result<()>;
36460}
36461/// Functions from OpenGL ES version 3.2
36462#[derive(Clone, Copy, PartialEq, Eq, Hash)]
36463pub struct EsVersion32 {
36464	/// Is OpenGL ES version 3.2 available
36465	available: bool,
36466
36467	/// The function pointer to `glGetError()`
36468	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetError.xhtml>
36469	pub geterror: PFNGLGETERRORPROC,
36470
36471	/// The function pointer to `glBlendBarrier()`
36472	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendBarrier.xhtml>
36473	pub blendbarrier: PFNGLBLENDBARRIERPROC,
36474
36475	/// The function pointer to `glCopyImageSubData()`
36476	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glCopyImageSubData.xhtml>
36477	pub copyimagesubdata: PFNGLCOPYIMAGESUBDATAPROC,
36478
36479	/// The function pointer to `glDebugMessageControl()`
36480	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDebugMessageControl.xhtml>
36481	pub debugmessagecontrol: PFNGLDEBUGMESSAGECONTROLPROC,
36482
36483	/// The function pointer to `glDebugMessageInsert()`
36484	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDebugMessageInsert.xhtml>
36485	pub debugmessageinsert: PFNGLDEBUGMESSAGEINSERTPROC,
36486
36487	/// The function pointer to `glDebugMessageCallback()`
36488	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDebugMessageCallback.xhtml>
36489	pub debugmessagecallback: PFNGLDEBUGMESSAGECALLBACKPROC,
36490
36491	/// The function pointer to `glGetDebugMessageLog()`
36492	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetDebugMessageLog.xhtml>
36493	pub getdebugmessagelog: PFNGLGETDEBUGMESSAGELOGPROC,
36494
36495	/// The function pointer to `glPushDebugGroup()`
36496	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glPushDebugGroup.xhtml>
36497	pub pushdebuggroup: PFNGLPUSHDEBUGGROUPPROC,
36498
36499	/// The function pointer to `glPopDebugGroup()`
36500	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glPopDebugGroup.xhtml>
36501	pub popdebuggroup: PFNGLPOPDEBUGGROUPPROC,
36502
36503	/// The function pointer to `glObjectLabel()`
36504	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glObjectLabel.xhtml>
36505	pub objectlabel: PFNGLOBJECTLABELPROC,
36506
36507	/// The function pointer to `glGetObjectLabel()`
36508	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetObjectLabel.xhtml>
36509	pub getobjectlabel: PFNGLGETOBJECTLABELPROC,
36510
36511	/// The function pointer to `glObjectPtrLabel()`
36512	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glObjectPtrLabel.xhtml>
36513	pub objectptrlabel: PFNGLOBJECTPTRLABELPROC,
36514
36515	/// The function pointer to `glGetObjectPtrLabel()`
36516	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetObjectPtrLabel.xhtml>
36517	pub getobjectptrlabel: PFNGLGETOBJECTPTRLABELPROC,
36518
36519	/// The function pointer to `glGetPointerv()`
36520	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetPointerv.xhtml>
36521	pub getpointerv: PFNGLGETPOINTERVPROC,
36522
36523	/// The function pointer to `glEnablei()`
36524	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glEnablei.xhtml>
36525	pub enablei: PFNGLENABLEIPROC,
36526
36527	/// The function pointer to `glDisablei()`
36528	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDisablei.xhtml>
36529	pub disablei: PFNGLDISABLEIPROC,
36530
36531	/// The function pointer to `glBlendEquationi()`
36532	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendEquationi.xhtml>
36533	pub blendequationi: PFNGLBLENDEQUATIONIPROC,
36534
36535	/// The function pointer to `glBlendEquationSeparatei()`
36536	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendEquationSeparatei.xhtml>
36537	pub blendequationseparatei: PFNGLBLENDEQUATIONSEPARATEIPROC,
36538
36539	/// The function pointer to `glBlendFunci()`
36540	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendFunci.xhtml>
36541	pub blendfunci: PFNGLBLENDFUNCIPROC,
36542
36543	/// The function pointer to `glBlendFuncSeparatei()`
36544	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendFuncSeparatei.xhtml>
36545	pub blendfuncseparatei: PFNGLBLENDFUNCSEPARATEIPROC,
36546
36547	/// The function pointer to `glColorMaski()`
36548	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glColorMaski.xhtml>
36549	pub colormaski: PFNGLCOLORMASKIPROC,
36550
36551	/// The function pointer to `glIsEnabledi()`
36552	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glIsEnabledi.xhtml>
36553	pub isenabledi: PFNGLISENABLEDIPROC,
36554
36555	/// The function pointer to `glDrawElementsBaseVertex()`
36556	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawElementsBaseVertex.xhtml>
36557	pub drawelementsbasevertex: PFNGLDRAWELEMENTSBASEVERTEXPROC,
36558
36559	/// The function pointer to `glDrawRangeElementsBaseVertex()`
36560	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawRangeElementsBaseVertex.xhtml>
36561	pub drawrangeelementsbasevertex: PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC,
36562
36563	/// The function pointer to `glDrawElementsInstancedBaseVertex()`
36564	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glDrawElementsInstancedBaseVertex.xhtml>
36565	pub drawelementsinstancedbasevertex: PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC,
36566
36567	/// The function pointer to `glFramebufferTexture()`
36568	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glFramebufferTexture.xhtml>
36569	pub framebuffertexture: PFNGLFRAMEBUFFERTEXTUREPROC,
36570
36571	/// The function pointer to `glPrimitiveBoundingBox()`
36572	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glPrimitiveBoundingBox.xhtml>
36573	pub primitiveboundingbox: PFNGLPRIMITIVEBOUNDINGBOXPROC,
36574
36575	/// The function pointer to `glGetGraphicsResetStatus()`
36576	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetGraphicsResetStatus.xhtml>
36577	pub getgraphicsresetstatus: PFNGLGETGRAPHICSRESETSTATUSPROC,
36578
36579	/// The function pointer to `glReadnPixels()`
36580	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glReadnPixels.xhtml>
36581	pub readnpixels: PFNGLREADNPIXELSPROC,
36582
36583	/// The function pointer to `glGetnUniformfv()`
36584	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetnUniformfv.xhtml>
36585	pub getnuniformfv: PFNGLGETNUNIFORMFVPROC,
36586
36587	/// The function pointer to `glGetnUniformiv()`
36588	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetnUniformiv.xhtml>
36589	pub getnuniformiv: PFNGLGETNUNIFORMIVPROC,
36590
36591	/// The function pointer to `glGetnUniformuiv()`
36592	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetnUniformuiv.xhtml>
36593	pub getnuniformuiv: PFNGLGETNUNIFORMUIVPROC,
36594
36595	/// The function pointer to `glMinSampleShading()`
36596	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glMinSampleShading.xhtml>
36597	pub minsampleshading: PFNGLMINSAMPLESHADINGPROC,
36598
36599	/// The function pointer to `glPatchParameteri()`
36600	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glPatchParameteri.xhtml>
36601	pub patchparameteri: PFNGLPATCHPARAMETERIPROC,
36602
36603	/// The function pointer to `glTexParameterIiv()`
36604	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexParameterIiv.xhtml>
36605	pub texparameteriiv: PFNGLTEXPARAMETERIIVPROC,
36606
36607	/// The function pointer to `glTexParameterIuiv()`
36608	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexParameterIuiv.xhtml>
36609	pub texparameteriuiv: PFNGLTEXPARAMETERIUIVPROC,
36610
36611	/// The function pointer to `glGetTexParameterIiv()`
36612	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetTexParameterIiv.xhtml>
36613	pub gettexparameteriiv: PFNGLGETTEXPARAMETERIIVPROC,
36614
36615	/// The function pointer to `glGetTexParameterIuiv()`
36616	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetTexParameterIuiv.xhtml>
36617	pub gettexparameteriuiv: PFNGLGETTEXPARAMETERIUIVPROC,
36618
36619	/// The function pointer to `glSamplerParameterIiv()`
36620	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glSamplerParameterIiv.xhtml>
36621	pub samplerparameteriiv: PFNGLSAMPLERPARAMETERIIVPROC,
36622
36623	/// The function pointer to `glSamplerParameterIuiv()`
36624	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glSamplerParameterIuiv.xhtml>
36625	pub samplerparameteriuiv: PFNGLSAMPLERPARAMETERIUIVPROC,
36626
36627	/// The function pointer to `glGetSamplerParameterIiv()`
36628	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetSamplerParameterIiv.xhtml>
36629	pub getsamplerparameteriiv: PFNGLGETSAMPLERPARAMETERIIVPROC,
36630
36631	/// The function pointer to `glGetSamplerParameterIuiv()`
36632	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetSamplerParameterIuiv.xhtml>
36633	pub getsamplerparameteriuiv: PFNGLGETSAMPLERPARAMETERIUIVPROC,
36634
36635	/// The function pointer to `glTexBuffer()`
36636	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexBuffer.xhtml>
36637	pub texbuffer: PFNGLTEXBUFFERPROC,
36638
36639	/// The function pointer to `glTexBufferRange()`
36640	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexBufferRange.xhtml>
36641	pub texbufferrange: PFNGLTEXBUFFERRANGEPROC,
36642
36643	/// The function pointer to `glTexStorage3DMultisample()`
36644	/// * Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glTexStorage3DMultisample.xhtml>
36645	pub texstorage3dmultisample: PFNGLTEXSTORAGE3DMULTISAMPLEPROC,
36646}
36647
36648impl ES_GL_3_2 for EsVersion32 {
36649	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glGetError.xhtml>
36650	#[inline(always)]
36651	fn glGetError(&self) -> GLenum {
36652		(self.geterror)()
36653	}
36654	#[inline(always)]
36655	fn glBlendBarrier(&self) -> Result<()> {
36656		let ret = process_catch("glBlendBarrier", catch_unwind(||(self.blendbarrier)()));
36657		#[cfg(feature = "diagnose")]
36658		if let Ok(ret) = ret {
36659			return to_result("glBlendBarrier", ret, self.glGetError());
36660		} else {
36661			return ret
36662		}
36663		#[cfg(not(feature = "diagnose"))]
36664		return ret;
36665	}
36666	#[inline(always)]
36667	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<()> {
36668		let ret = process_catch("glCopyImageSubData", catch_unwind(||(self.copyimagesubdata)(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth)));
36669		#[cfg(feature = "diagnose")]
36670		if let Ok(ret) = ret {
36671			return to_result("glCopyImageSubData", ret, self.glGetError());
36672		} else {
36673			return ret
36674		}
36675		#[cfg(not(feature = "diagnose"))]
36676		return ret;
36677	}
36678	#[inline(always)]
36679	fn glDebugMessageControl(&self, source: GLenum, type_: GLenum, severity: GLenum, count: GLsizei, ids: *const GLuint, enabled: GLboolean) -> Result<()> {
36680		let ret = process_catch("glDebugMessageControl", catch_unwind(||(self.debugmessagecontrol)(source, type_, severity, count, ids, enabled)));
36681		#[cfg(feature = "diagnose")]
36682		if let Ok(ret) = ret {
36683			return to_result("glDebugMessageControl", ret, self.glGetError());
36684		} else {
36685			return ret
36686		}
36687		#[cfg(not(feature = "diagnose"))]
36688		return ret;
36689	}
36690	#[inline(always)]
36691	fn glDebugMessageInsert(&self, source: GLenum, type_: GLenum, id: GLuint, severity: GLenum, length: GLsizei, buf: *const GLchar) -> Result<()> {
36692		let ret = process_catch("glDebugMessageInsert", catch_unwind(||(self.debugmessageinsert)(source, type_, id, severity, length, buf)));
36693		#[cfg(feature = "diagnose")]
36694		if let Ok(ret) = ret {
36695			return to_result("glDebugMessageInsert", ret, self.glGetError());
36696		} else {
36697			return ret
36698		}
36699		#[cfg(not(feature = "diagnose"))]
36700		return ret;
36701	}
36702	#[inline(always)]
36703	fn glDebugMessageCallback(&self, callback: GLDEBUGPROC, userParam: *const c_void) -> Result<()> {
36704		let ret = process_catch("glDebugMessageCallback", catch_unwind(||(self.debugmessagecallback)(callback, userParam)));
36705		#[cfg(feature = "diagnose")]
36706		if let Ok(ret) = ret {
36707			return to_result("glDebugMessageCallback", ret, self.glGetError());
36708		} else {
36709			return ret
36710		}
36711		#[cfg(not(feature = "diagnose"))]
36712		return ret;
36713	}
36714	#[inline(always)]
36715	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> {
36716		let ret = process_catch("glGetDebugMessageLog", catch_unwind(||(self.getdebugmessagelog)(count, bufSize, sources, types, ids, severities, lengths, messageLog)));
36717		#[cfg(feature = "diagnose")]
36718		if let Ok(ret) = ret {
36719			return to_result("glGetDebugMessageLog", ret, self.glGetError());
36720		} else {
36721			return ret
36722		}
36723		#[cfg(not(feature = "diagnose"))]
36724		return ret;
36725	}
36726	#[inline(always)]
36727	fn glPushDebugGroup(&self, source: GLenum, id: GLuint, length: GLsizei, message: *const GLchar) -> Result<()> {
36728		let ret = process_catch("glPushDebugGroup", catch_unwind(||(self.pushdebuggroup)(source, id, length, message)));
36729		#[cfg(feature = "diagnose")]
36730		if let Ok(ret) = ret {
36731			return to_result("glPushDebugGroup", ret, self.glGetError());
36732		} else {
36733			return ret
36734		}
36735		#[cfg(not(feature = "diagnose"))]
36736		return ret;
36737	}
36738	#[inline(always)]
36739	fn glPopDebugGroup(&self) -> Result<()> {
36740		let ret = process_catch("glPopDebugGroup", catch_unwind(||(self.popdebuggroup)()));
36741		#[cfg(feature = "diagnose")]
36742		if let Ok(ret) = ret {
36743			return to_result("glPopDebugGroup", ret, self.glGetError());
36744		} else {
36745			return ret
36746		}
36747		#[cfg(not(feature = "diagnose"))]
36748		return ret;
36749	}
36750	#[inline(always)]
36751	fn glObjectLabel(&self, identifier: GLenum, name: GLuint, length: GLsizei, label: *const GLchar) -> Result<()> {
36752		let ret = process_catch("glObjectLabel", catch_unwind(||(self.objectlabel)(identifier, name, length, label)));
36753		#[cfg(feature = "diagnose")]
36754		if let Ok(ret) = ret {
36755			return to_result("glObjectLabel", ret, self.glGetError());
36756		} else {
36757			return ret
36758		}
36759		#[cfg(not(feature = "diagnose"))]
36760		return ret;
36761	}
36762	#[inline(always)]
36763	fn glGetObjectLabel(&self, identifier: GLenum, name: GLuint, bufSize: GLsizei, length: *mut GLsizei, label: *mut GLchar) -> Result<()> {
36764		let ret = process_catch("glGetObjectLabel", catch_unwind(||(self.getobjectlabel)(identifier, name, bufSize, length, label)));
36765		#[cfg(feature = "diagnose")]
36766		if let Ok(ret) = ret {
36767			return to_result("glGetObjectLabel", ret, self.glGetError());
36768		} else {
36769			return ret
36770		}
36771		#[cfg(not(feature = "diagnose"))]
36772		return ret;
36773	}
36774	#[inline(always)]
36775	fn glObjectPtrLabel(&self, ptr: *const c_void, length: GLsizei, label: *const GLchar) -> Result<()> {
36776		let ret = process_catch("glObjectPtrLabel", catch_unwind(||(self.objectptrlabel)(ptr, length, label)));
36777		#[cfg(feature = "diagnose")]
36778		if let Ok(ret) = ret {
36779			return to_result("glObjectPtrLabel", ret, self.glGetError());
36780		} else {
36781			return ret
36782		}
36783		#[cfg(not(feature = "diagnose"))]
36784		return ret;
36785	}
36786	#[inline(always)]
36787	fn glGetObjectPtrLabel(&self, ptr: *const c_void, bufSize: GLsizei, length: *mut GLsizei, label: *mut GLchar) -> Result<()> {
36788		let ret = process_catch("glGetObjectPtrLabel", catch_unwind(||(self.getobjectptrlabel)(ptr, bufSize, length, label)));
36789		#[cfg(feature = "diagnose")]
36790		if let Ok(ret) = ret {
36791			return to_result("glGetObjectPtrLabel", ret, self.glGetError());
36792		} else {
36793			return ret
36794		}
36795		#[cfg(not(feature = "diagnose"))]
36796		return ret;
36797	}
36798	#[inline(always)]
36799	fn glGetPointerv(&self, pname: GLenum, params: *mut *mut c_void) -> Result<()> {
36800		let ret = process_catch("glGetPointerv", catch_unwind(||(self.getpointerv)(pname, params)));
36801		#[cfg(feature = "diagnose")]
36802		if let Ok(ret) = ret {
36803			return to_result("glGetPointerv", ret, self.glGetError());
36804		} else {
36805			return ret
36806		}
36807		#[cfg(not(feature = "diagnose"))]
36808		return ret;
36809	}
36810	#[inline(always)]
36811	fn glEnablei(&self, target: GLenum, index: GLuint) -> Result<()> {
36812		let ret = process_catch("glEnablei", catch_unwind(||(self.enablei)(target, index)));
36813		#[cfg(feature = "diagnose")]
36814		if let Ok(ret) = ret {
36815			return to_result("glEnablei", ret, self.glGetError());
36816		} else {
36817			return ret
36818		}
36819		#[cfg(not(feature = "diagnose"))]
36820		return ret;
36821	}
36822	#[inline(always)]
36823	fn glDisablei(&self, target: GLenum, index: GLuint) -> Result<()> {
36824		let ret = process_catch("glDisablei", catch_unwind(||(self.disablei)(target, index)));
36825		#[cfg(feature = "diagnose")]
36826		if let Ok(ret) = ret {
36827			return to_result("glDisablei", ret, self.glGetError());
36828		} else {
36829			return ret
36830		}
36831		#[cfg(not(feature = "diagnose"))]
36832		return ret;
36833	}
36834	#[inline(always)]
36835	fn glBlendEquationi(&self, buf: GLuint, mode: GLenum) -> Result<()> {
36836		let ret = process_catch("glBlendEquationi", catch_unwind(||(self.blendequationi)(buf, mode)));
36837		#[cfg(feature = "diagnose")]
36838		if let Ok(ret) = ret {
36839			return to_result("glBlendEquationi", ret, self.glGetError());
36840		} else {
36841			return ret
36842		}
36843		#[cfg(not(feature = "diagnose"))]
36844		return ret;
36845	}
36846	#[inline(always)]
36847	fn glBlendEquationSeparatei(&self, buf: GLuint, modeRGB: GLenum, modeAlpha: GLenum) -> Result<()> {
36848		let ret = process_catch("glBlendEquationSeparatei", catch_unwind(||(self.blendequationseparatei)(buf, modeRGB, modeAlpha)));
36849		#[cfg(feature = "diagnose")]
36850		if let Ok(ret) = ret {
36851			return to_result("glBlendEquationSeparatei", ret, self.glGetError());
36852		} else {
36853			return ret
36854		}
36855		#[cfg(not(feature = "diagnose"))]
36856		return ret;
36857	}
36858	#[inline(always)]
36859	fn glBlendFunci(&self, buf: GLuint, src: GLenum, dst: GLenum) -> Result<()> {
36860		let ret = process_catch("glBlendFunci", catch_unwind(||(self.blendfunci)(buf, src, dst)));
36861		#[cfg(feature = "diagnose")]
36862		if let Ok(ret) = ret {
36863			return to_result("glBlendFunci", ret, self.glGetError());
36864		} else {
36865			return ret
36866		}
36867		#[cfg(not(feature = "diagnose"))]
36868		return ret;
36869	}
36870	#[inline(always)]
36871	fn glBlendFuncSeparatei(&self, buf: GLuint, srcRGB: GLenum, dstRGB: GLenum, srcAlpha: GLenum, dstAlpha: GLenum) -> Result<()> {
36872		let ret = process_catch("glBlendFuncSeparatei", catch_unwind(||(self.blendfuncseparatei)(buf, srcRGB, dstRGB, srcAlpha, dstAlpha)));
36873		#[cfg(feature = "diagnose")]
36874		if let Ok(ret) = ret {
36875			return to_result("glBlendFuncSeparatei", ret, self.glGetError());
36876		} else {
36877			return ret
36878		}
36879		#[cfg(not(feature = "diagnose"))]
36880		return ret;
36881	}
36882	#[inline(always)]
36883	fn glColorMaski(&self, index: GLuint, r: GLboolean, g: GLboolean, b: GLboolean, a: GLboolean) -> Result<()> {
36884		let ret = process_catch("glColorMaski", catch_unwind(||(self.colormaski)(index, r, g, b, a)));
36885		#[cfg(feature = "diagnose")]
36886		if let Ok(ret) = ret {
36887			return to_result("glColorMaski", ret, self.glGetError());
36888		} else {
36889			return ret
36890		}
36891		#[cfg(not(feature = "diagnose"))]
36892		return ret;
36893	}
36894	#[inline(always)]
36895	fn glIsEnabledi(&self, target: GLenum, index: GLuint) -> Result<GLboolean> {
36896		let ret = process_catch("glIsEnabledi", catch_unwind(||(self.isenabledi)(target, index)));
36897		#[cfg(feature = "diagnose")]
36898		if let Ok(ret) = ret {
36899			return to_result("glIsEnabledi", ret, self.glGetError());
36900		} else {
36901			return ret
36902		}
36903		#[cfg(not(feature = "diagnose"))]
36904		return ret;
36905	}
36906	#[inline(always)]
36907	fn glDrawElementsBaseVertex(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, basevertex: GLint) -> Result<()> {
36908		let ret = process_catch("glDrawElementsBaseVertex", catch_unwind(||(self.drawelementsbasevertex)(mode, count, type_, indices, basevertex)));
36909		#[cfg(feature = "diagnose")]
36910		if let Ok(ret) = ret {
36911			return to_result("glDrawElementsBaseVertex", ret, self.glGetError());
36912		} else {
36913			return ret
36914		}
36915		#[cfg(not(feature = "diagnose"))]
36916		return ret;
36917	}
36918	#[inline(always)]
36919	fn glDrawRangeElementsBaseVertex(&self, mode: GLenum, start: GLuint, end: GLuint, count: GLsizei, type_: GLenum, indices: *const c_void, basevertex: GLint) -> Result<()> {
36920		let ret = process_catch("glDrawRangeElementsBaseVertex", catch_unwind(||(self.drawrangeelementsbasevertex)(mode, start, end, count, type_, indices, basevertex)));
36921		#[cfg(feature = "diagnose")]
36922		if let Ok(ret) = ret {
36923			return to_result("glDrawRangeElementsBaseVertex", ret, self.glGetError());
36924		} else {
36925			return ret
36926		}
36927		#[cfg(not(feature = "diagnose"))]
36928		return ret;
36929	}
36930	#[inline(always)]
36931	fn glDrawElementsInstancedBaseVertex(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei, basevertex: GLint) -> Result<()> {
36932		let ret = process_catch("glDrawElementsInstancedBaseVertex", catch_unwind(||(self.drawelementsinstancedbasevertex)(mode, count, type_, indices, instancecount, basevertex)));
36933		#[cfg(feature = "diagnose")]
36934		if let Ok(ret) = ret {
36935			return to_result("glDrawElementsInstancedBaseVertex", ret, self.glGetError());
36936		} else {
36937			return ret
36938		}
36939		#[cfg(not(feature = "diagnose"))]
36940		return ret;
36941	}
36942	#[inline(always)]
36943	fn glFramebufferTexture(&self, target: GLenum, attachment: GLenum, texture: GLuint, level: GLint) -> Result<()> {
36944		let ret = process_catch("glFramebufferTexture", catch_unwind(||(self.framebuffertexture)(target, attachment, texture, level)));
36945		#[cfg(feature = "diagnose")]
36946		if let Ok(ret) = ret {
36947			return to_result("glFramebufferTexture", ret, self.glGetError());
36948		} else {
36949			return ret
36950		}
36951		#[cfg(not(feature = "diagnose"))]
36952		return ret;
36953	}
36954	#[inline(always)]
36955	fn glPrimitiveBoundingBox(&self, minX: GLfloat, minY: GLfloat, minZ: GLfloat, minW: GLfloat, maxX: GLfloat, maxY: GLfloat, maxZ: GLfloat, maxW: GLfloat) -> Result<()> {
36956		let ret = process_catch("glPrimitiveBoundingBox", catch_unwind(||(self.primitiveboundingbox)(minX, minY, minZ, minW, maxX, maxY, maxZ, maxW)));
36957		#[cfg(feature = "diagnose")]
36958		if let Ok(ret) = ret {
36959			return to_result("glPrimitiveBoundingBox", ret, self.glGetError());
36960		} else {
36961			return ret
36962		}
36963		#[cfg(not(feature = "diagnose"))]
36964		return ret;
36965	}
36966	#[inline(always)]
36967	fn glGetGraphicsResetStatus(&self) -> Result<GLenum> {
36968		let ret = process_catch("glGetGraphicsResetStatus", catch_unwind(||(self.getgraphicsresetstatus)()));
36969		#[cfg(feature = "diagnose")]
36970		if let Ok(ret) = ret {
36971			return to_result("glGetGraphicsResetStatus", ret, self.glGetError());
36972		} else {
36973			return ret
36974		}
36975		#[cfg(not(feature = "diagnose"))]
36976		return ret;
36977	}
36978	#[inline(always)]
36979	fn glReadnPixels(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, bufSize: GLsizei, data: *mut c_void) -> Result<()> {
36980		let ret = process_catch("glReadnPixels", catch_unwind(||(self.readnpixels)(x, y, width, height, format, type_, bufSize, data)));
36981		#[cfg(feature = "diagnose")]
36982		if let Ok(ret) = ret {
36983			return to_result("glReadnPixels", ret, self.glGetError());
36984		} else {
36985			return ret
36986		}
36987		#[cfg(not(feature = "diagnose"))]
36988		return ret;
36989	}
36990	#[inline(always)]
36991	fn glGetnUniformfv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLfloat) -> Result<()> {
36992		let ret = process_catch("glGetnUniformfv", catch_unwind(||(self.getnuniformfv)(program, location, bufSize, params)));
36993		#[cfg(feature = "diagnose")]
36994		if let Ok(ret) = ret {
36995			return to_result("glGetnUniformfv", ret, self.glGetError());
36996		} else {
36997			return ret
36998		}
36999		#[cfg(not(feature = "diagnose"))]
37000		return ret;
37001	}
37002	#[inline(always)]
37003	fn glGetnUniformiv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLint) -> Result<()> {
37004		let ret = process_catch("glGetnUniformiv", catch_unwind(||(self.getnuniformiv)(program, location, bufSize, params)));
37005		#[cfg(feature = "diagnose")]
37006		if let Ok(ret) = ret {
37007			return to_result("glGetnUniformiv", ret, self.glGetError());
37008		} else {
37009			return ret
37010		}
37011		#[cfg(not(feature = "diagnose"))]
37012		return ret;
37013	}
37014	#[inline(always)]
37015	fn glGetnUniformuiv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLuint) -> Result<()> {
37016		let ret = process_catch("glGetnUniformuiv", catch_unwind(||(self.getnuniformuiv)(program, location, bufSize, params)));
37017		#[cfg(feature = "diagnose")]
37018		if let Ok(ret) = ret {
37019			return to_result("glGetnUniformuiv", ret, self.glGetError());
37020		} else {
37021			return ret
37022		}
37023		#[cfg(not(feature = "diagnose"))]
37024		return ret;
37025	}
37026	#[inline(always)]
37027	fn glMinSampleShading(&self, value: GLfloat) -> Result<()> {
37028		let ret = process_catch("glMinSampleShading", catch_unwind(||(self.minsampleshading)(value)));
37029		#[cfg(feature = "diagnose")]
37030		if let Ok(ret) = ret {
37031			return to_result("glMinSampleShading", ret, self.glGetError());
37032		} else {
37033			return ret
37034		}
37035		#[cfg(not(feature = "diagnose"))]
37036		return ret;
37037	}
37038	#[inline(always)]
37039	fn glPatchParameteri(&self, pname: GLenum, value: GLint) -> Result<()> {
37040		let ret = process_catch("glPatchParameteri", catch_unwind(||(self.patchparameteri)(pname, value)));
37041		#[cfg(feature = "diagnose")]
37042		if let Ok(ret) = ret {
37043			return to_result("glPatchParameteri", ret, self.glGetError());
37044		} else {
37045			return ret
37046		}
37047		#[cfg(not(feature = "diagnose"))]
37048		return ret;
37049	}
37050	#[inline(always)]
37051	fn glTexParameterIiv(&self, target: GLenum, pname: GLenum, params: *const GLint) -> Result<()> {
37052		let ret = process_catch("glTexParameterIiv", catch_unwind(||(self.texparameteriiv)(target, pname, params)));
37053		#[cfg(feature = "diagnose")]
37054		if let Ok(ret) = ret {
37055			return to_result("glTexParameterIiv", ret, self.glGetError());
37056		} else {
37057			return ret
37058		}
37059		#[cfg(not(feature = "diagnose"))]
37060		return ret;
37061	}
37062	#[inline(always)]
37063	fn glTexParameterIuiv(&self, target: GLenum, pname: GLenum, params: *const GLuint) -> Result<()> {
37064		let ret = process_catch("glTexParameterIuiv", catch_unwind(||(self.texparameteriuiv)(target, pname, params)));
37065		#[cfg(feature = "diagnose")]
37066		if let Ok(ret) = ret {
37067			return to_result("glTexParameterIuiv", ret, self.glGetError());
37068		} else {
37069			return ret
37070		}
37071		#[cfg(not(feature = "diagnose"))]
37072		return ret;
37073	}
37074	#[inline(always)]
37075	fn glGetTexParameterIiv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
37076		let ret = process_catch("glGetTexParameterIiv", catch_unwind(||(self.gettexparameteriiv)(target, pname, params)));
37077		#[cfg(feature = "diagnose")]
37078		if let Ok(ret) = ret {
37079			return to_result("glGetTexParameterIiv", ret, self.glGetError());
37080		} else {
37081			return ret
37082		}
37083		#[cfg(not(feature = "diagnose"))]
37084		return ret;
37085	}
37086	#[inline(always)]
37087	fn glGetTexParameterIuiv(&self, target: GLenum, pname: GLenum, params: *mut GLuint) -> Result<()> {
37088		let ret = process_catch("glGetTexParameterIuiv", catch_unwind(||(self.gettexparameteriuiv)(target, pname, params)));
37089		#[cfg(feature = "diagnose")]
37090		if let Ok(ret) = ret {
37091			return to_result("glGetTexParameterIuiv", ret, self.glGetError());
37092		} else {
37093			return ret
37094		}
37095		#[cfg(not(feature = "diagnose"))]
37096		return ret;
37097	}
37098	#[inline(always)]
37099	fn glSamplerParameterIiv(&self, sampler: GLuint, pname: GLenum, param: *const GLint) -> Result<()> {
37100		let ret = process_catch("glSamplerParameterIiv", catch_unwind(||(self.samplerparameteriiv)(sampler, pname, param)));
37101		#[cfg(feature = "diagnose")]
37102		if let Ok(ret) = ret {
37103			return to_result("glSamplerParameterIiv", ret, self.glGetError());
37104		} else {
37105			return ret
37106		}
37107		#[cfg(not(feature = "diagnose"))]
37108		return ret;
37109	}
37110	#[inline(always)]
37111	fn glSamplerParameterIuiv(&self, sampler: GLuint, pname: GLenum, param: *const GLuint) -> Result<()> {
37112		let ret = process_catch("glSamplerParameterIuiv", catch_unwind(||(self.samplerparameteriuiv)(sampler, pname, param)));
37113		#[cfg(feature = "diagnose")]
37114		if let Ok(ret) = ret {
37115			return to_result("glSamplerParameterIuiv", ret, self.glGetError());
37116		} else {
37117			return ret
37118		}
37119		#[cfg(not(feature = "diagnose"))]
37120		return ret;
37121	}
37122	#[inline(always)]
37123	fn glGetSamplerParameterIiv(&self, sampler: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
37124		let ret = process_catch("glGetSamplerParameterIiv", catch_unwind(||(self.getsamplerparameteriiv)(sampler, pname, params)));
37125		#[cfg(feature = "diagnose")]
37126		if let Ok(ret) = ret {
37127			return to_result("glGetSamplerParameterIiv", ret, self.glGetError());
37128		} else {
37129			return ret
37130		}
37131		#[cfg(not(feature = "diagnose"))]
37132		return ret;
37133	}
37134	#[inline(always)]
37135	fn glGetSamplerParameterIuiv(&self, sampler: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()> {
37136		let ret = process_catch("glGetSamplerParameterIuiv", catch_unwind(||(self.getsamplerparameteriuiv)(sampler, pname, params)));
37137		#[cfg(feature = "diagnose")]
37138		if let Ok(ret) = ret {
37139			return to_result("glGetSamplerParameterIuiv", ret, self.glGetError());
37140		} else {
37141			return ret
37142		}
37143		#[cfg(not(feature = "diagnose"))]
37144		return ret;
37145	}
37146	#[inline(always)]
37147	fn glTexBuffer(&self, target: GLenum, internalformat: GLenum, buffer: GLuint) -> Result<()> {
37148		let ret = process_catch("glTexBuffer", catch_unwind(||(self.texbuffer)(target, internalformat, buffer)));
37149		#[cfg(feature = "diagnose")]
37150		if let Ok(ret) = ret {
37151			return to_result("glTexBuffer", ret, self.glGetError());
37152		} else {
37153			return ret
37154		}
37155		#[cfg(not(feature = "diagnose"))]
37156		return ret;
37157	}
37158	#[inline(always)]
37159	fn glTexBufferRange(&self, target: GLenum, internalformat: GLenum, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()> {
37160		let ret = process_catch("glTexBufferRange", catch_unwind(||(self.texbufferrange)(target, internalformat, buffer, offset, size)));
37161		#[cfg(feature = "diagnose")]
37162		if let Ok(ret) = ret {
37163			return to_result("glTexBufferRange", ret, self.glGetError());
37164		} else {
37165			return ret
37166		}
37167		#[cfg(not(feature = "diagnose"))]
37168		return ret;
37169	}
37170	#[inline(always)]
37171	fn glTexStorage3DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, fixedsamplelocations: GLboolean) -> Result<()> {
37172		let ret = process_catch("glTexStorage3DMultisample", catch_unwind(||(self.texstorage3dmultisample)(target, samples, internalformat, width, height, depth, fixedsamplelocations)));
37173		#[cfg(feature = "diagnose")]
37174		if let Ok(ret) = ret {
37175			return to_result("glTexStorage3DMultisample", ret, self.glGetError());
37176		} else {
37177			return ret
37178		}
37179		#[cfg(not(feature = "diagnose"))]
37180		return ret;
37181	}
37182}
37183
37184impl EsVersion32 {
37185	pub fn new(base: impl GL_1_0, mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Self {
37186		let (_spec, major, minor, release) = base.get_version();
37187		if (major, minor, release) < (3, 2, 0) {
37188			return Self::default();
37189		}
37190		Self {
37191			available: true,
37192			geterror: {let proc = get_proc_address("glGetError"); if proc == null() {dummy_pfnglgeterrorproc} else {unsafe{transmute(proc)}}},
37193			blendbarrier: {let proc = get_proc_address("glBlendBarrier"); if proc == null() {dummy_pfnglblendbarrierproc} else {unsafe{transmute(proc)}}},
37194			copyimagesubdata: {let proc = get_proc_address("glCopyImageSubData"); if proc == null() {dummy_pfnglcopyimagesubdataproc} else {unsafe{transmute(proc)}}},
37195			debugmessagecontrol: {let proc = get_proc_address("glDebugMessageControl"); if proc == null() {dummy_pfngldebugmessagecontrolproc} else {unsafe{transmute(proc)}}},
37196			debugmessageinsert: {let proc = get_proc_address("glDebugMessageInsert"); if proc == null() {dummy_pfngldebugmessageinsertproc} else {unsafe{transmute(proc)}}},
37197			debugmessagecallback: {let proc = get_proc_address("glDebugMessageCallback"); if proc == null() {dummy_pfngldebugmessagecallbackproc} else {unsafe{transmute(proc)}}},
37198			getdebugmessagelog: {let proc = get_proc_address("glGetDebugMessageLog"); if proc == null() {dummy_pfnglgetdebugmessagelogproc} else {unsafe{transmute(proc)}}},
37199			pushdebuggroup: {let proc = get_proc_address("glPushDebugGroup"); if proc == null() {dummy_pfnglpushdebuggroupproc} else {unsafe{transmute(proc)}}},
37200			popdebuggroup: {let proc = get_proc_address("glPopDebugGroup"); if proc == null() {dummy_pfnglpopdebuggroupproc} else {unsafe{transmute(proc)}}},
37201			objectlabel: {let proc = get_proc_address("glObjectLabel"); if proc == null() {dummy_pfnglobjectlabelproc} else {unsafe{transmute(proc)}}},
37202			getobjectlabel: {let proc = get_proc_address("glGetObjectLabel"); if proc == null() {dummy_pfnglgetobjectlabelproc} else {unsafe{transmute(proc)}}},
37203			objectptrlabel: {let proc = get_proc_address("glObjectPtrLabel"); if proc == null() {dummy_pfnglobjectptrlabelproc} else {unsafe{transmute(proc)}}},
37204			getobjectptrlabel: {let proc = get_proc_address("glGetObjectPtrLabel"); if proc == null() {dummy_pfnglgetobjectptrlabelproc} else {unsafe{transmute(proc)}}},
37205			getpointerv: {let proc = get_proc_address("glGetPointerv"); if proc == null() {dummy_pfnglgetpointervproc} else {unsafe{transmute(proc)}}},
37206			enablei: {let proc = get_proc_address("glEnablei"); if proc == null() {dummy_pfnglenableiproc} else {unsafe{transmute(proc)}}},
37207			disablei: {let proc = get_proc_address("glDisablei"); if proc == null() {dummy_pfngldisableiproc} else {unsafe{transmute(proc)}}},
37208			blendequationi: {let proc = get_proc_address("glBlendEquationi"); if proc == null() {dummy_pfnglblendequationiproc} else {unsafe{transmute(proc)}}},
37209			blendequationseparatei: {let proc = get_proc_address("glBlendEquationSeparatei"); if proc == null() {dummy_pfnglblendequationseparateiproc} else {unsafe{transmute(proc)}}},
37210			blendfunci: {let proc = get_proc_address("glBlendFunci"); if proc == null() {dummy_pfnglblendfunciproc} else {unsafe{transmute(proc)}}},
37211			blendfuncseparatei: {let proc = get_proc_address("glBlendFuncSeparatei"); if proc == null() {dummy_pfnglblendfuncseparateiproc} else {unsafe{transmute(proc)}}},
37212			colormaski: {let proc = get_proc_address("glColorMaski"); if proc == null() {dummy_pfnglcolormaskiproc} else {unsafe{transmute(proc)}}},
37213			isenabledi: {let proc = get_proc_address("glIsEnabledi"); if proc == null() {dummy_pfnglisenablediproc} else {unsafe{transmute(proc)}}},
37214			drawelementsbasevertex: {let proc = get_proc_address("glDrawElementsBaseVertex"); if proc == null() {dummy_pfngldrawelementsbasevertexproc} else {unsafe{transmute(proc)}}},
37215			drawrangeelementsbasevertex: {let proc = get_proc_address("glDrawRangeElementsBaseVertex"); if proc == null() {dummy_pfngldrawrangeelementsbasevertexproc} else {unsafe{transmute(proc)}}},
37216			drawelementsinstancedbasevertex: {let proc = get_proc_address("glDrawElementsInstancedBaseVertex"); if proc == null() {dummy_pfngldrawelementsinstancedbasevertexproc} else {unsafe{transmute(proc)}}},
37217			framebuffertexture: {let proc = get_proc_address("glFramebufferTexture"); if proc == null() {dummy_pfnglframebuffertextureproc} else {unsafe{transmute(proc)}}},
37218			primitiveboundingbox: {let proc = get_proc_address("glPrimitiveBoundingBox"); if proc == null() {dummy_pfnglprimitiveboundingboxproc} else {unsafe{transmute(proc)}}},
37219			getgraphicsresetstatus: {let proc = get_proc_address("glGetGraphicsResetStatus"); if proc == null() {dummy_pfnglgetgraphicsresetstatusproc} else {unsafe{transmute(proc)}}},
37220			readnpixels: {let proc = get_proc_address("glReadnPixels"); if proc == null() {dummy_pfnglreadnpixelsproc} else {unsafe{transmute(proc)}}},
37221			getnuniformfv: {let proc = get_proc_address("glGetnUniformfv"); if proc == null() {dummy_pfnglgetnuniformfvproc} else {unsafe{transmute(proc)}}},
37222			getnuniformiv: {let proc = get_proc_address("glGetnUniformiv"); if proc == null() {dummy_pfnglgetnuniformivproc} else {unsafe{transmute(proc)}}},
37223			getnuniformuiv: {let proc = get_proc_address("glGetnUniformuiv"); if proc == null() {dummy_pfnglgetnuniformuivproc} else {unsafe{transmute(proc)}}},
37224			minsampleshading: {let proc = get_proc_address("glMinSampleShading"); if proc == null() {dummy_pfnglminsampleshadingproc} else {unsafe{transmute(proc)}}},
37225			patchparameteri: {let proc = get_proc_address("glPatchParameteri"); if proc == null() {dummy_pfnglpatchparameteriproc} else {unsafe{transmute(proc)}}},
37226			texparameteriiv: {let proc = get_proc_address("glTexParameterIiv"); if proc == null() {dummy_pfngltexparameteriivproc} else {unsafe{transmute(proc)}}},
37227			texparameteriuiv: {let proc = get_proc_address("glTexParameterIuiv"); if proc == null() {dummy_pfngltexparameteriuivproc} else {unsafe{transmute(proc)}}},
37228			gettexparameteriiv: {let proc = get_proc_address("glGetTexParameterIiv"); if proc == null() {dummy_pfnglgettexparameteriivproc} else {unsafe{transmute(proc)}}},
37229			gettexparameteriuiv: {let proc = get_proc_address("glGetTexParameterIuiv"); if proc == null() {dummy_pfnglgettexparameteriuivproc} else {unsafe{transmute(proc)}}},
37230			samplerparameteriiv: {let proc = get_proc_address("glSamplerParameterIiv"); if proc == null() {dummy_pfnglsamplerparameteriivproc} else {unsafe{transmute(proc)}}},
37231			samplerparameteriuiv: {let proc = get_proc_address("glSamplerParameterIuiv"); if proc == null() {dummy_pfnglsamplerparameteriuivproc} else {unsafe{transmute(proc)}}},
37232			getsamplerparameteriiv: {let proc = get_proc_address("glGetSamplerParameterIiv"); if proc == null() {dummy_pfnglgetsamplerparameteriivproc} else {unsafe{transmute(proc)}}},
37233			getsamplerparameteriuiv: {let proc = get_proc_address("glGetSamplerParameterIuiv"); if proc == null() {dummy_pfnglgetsamplerparameteriuivproc} else {unsafe{transmute(proc)}}},
37234			texbuffer: {let proc = get_proc_address("glTexBuffer"); if proc == null() {dummy_pfngltexbufferproc} else {unsafe{transmute(proc)}}},
37235			texbufferrange: {let proc = get_proc_address("glTexBufferRange"); if proc == null() {dummy_pfngltexbufferrangeproc} else {unsafe{transmute(proc)}}},
37236			texstorage3dmultisample: {let proc = get_proc_address("glTexStorage3DMultisample"); if proc == null() {dummy_pfngltexstorage3dmultisampleproc} else {unsafe{transmute(proc)}}},
37237		}
37238	}
37239	#[inline(always)]
37240	pub fn get_available(&self) -> bool {
37241		self.available
37242	}
37243}
37244
37245impl Default for EsVersion32 {
37246	fn default() -> Self {
37247		Self {
37248			available: false,
37249			geterror: dummy_pfnglgeterrorproc,
37250			blendbarrier: dummy_pfnglblendbarrierproc,
37251			copyimagesubdata: dummy_pfnglcopyimagesubdataproc,
37252			debugmessagecontrol: dummy_pfngldebugmessagecontrolproc,
37253			debugmessageinsert: dummy_pfngldebugmessageinsertproc,
37254			debugmessagecallback: dummy_pfngldebugmessagecallbackproc,
37255			getdebugmessagelog: dummy_pfnglgetdebugmessagelogproc,
37256			pushdebuggroup: dummy_pfnglpushdebuggroupproc,
37257			popdebuggroup: dummy_pfnglpopdebuggroupproc,
37258			objectlabel: dummy_pfnglobjectlabelproc,
37259			getobjectlabel: dummy_pfnglgetobjectlabelproc,
37260			objectptrlabel: dummy_pfnglobjectptrlabelproc,
37261			getobjectptrlabel: dummy_pfnglgetobjectptrlabelproc,
37262			getpointerv: dummy_pfnglgetpointervproc,
37263			enablei: dummy_pfnglenableiproc,
37264			disablei: dummy_pfngldisableiproc,
37265			blendequationi: dummy_pfnglblendequationiproc,
37266			blendequationseparatei: dummy_pfnglblendequationseparateiproc,
37267			blendfunci: dummy_pfnglblendfunciproc,
37268			blendfuncseparatei: dummy_pfnglblendfuncseparateiproc,
37269			colormaski: dummy_pfnglcolormaskiproc,
37270			isenabledi: dummy_pfnglisenablediproc,
37271			drawelementsbasevertex: dummy_pfngldrawelementsbasevertexproc,
37272			drawrangeelementsbasevertex: dummy_pfngldrawrangeelementsbasevertexproc,
37273			drawelementsinstancedbasevertex: dummy_pfngldrawelementsinstancedbasevertexproc,
37274			framebuffertexture: dummy_pfnglframebuffertextureproc,
37275			primitiveboundingbox: dummy_pfnglprimitiveboundingboxproc,
37276			getgraphicsresetstatus: dummy_pfnglgetgraphicsresetstatusproc,
37277			readnpixels: dummy_pfnglreadnpixelsproc,
37278			getnuniformfv: dummy_pfnglgetnuniformfvproc,
37279			getnuniformiv: dummy_pfnglgetnuniformivproc,
37280			getnuniformuiv: dummy_pfnglgetnuniformuivproc,
37281			minsampleshading: dummy_pfnglminsampleshadingproc,
37282			patchparameteri: dummy_pfnglpatchparameteriproc,
37283			texparameteriiv: dummy_pfngltexparameteriivproc,
37284			texparameteriuiv: dummy_pfngltexparameteriuivproc,
37285			gettexparameteriiv: dummy_pfnglgettexparameteriivproc,
37286			gettexparameteriuiv: dummy_pfnglgettexparameteriuivproc,
37287			samplerparameteriiv: dummy_pfnglsamplerparameteriivproc,
37288			samplerparameteriuiv: dummy_pfnglsamplerparameteriuivproc,
37289			getsamplerparameteriiv: dummy_pfnglgetsamplerparameteriivproc,
37290			getsamplerparameteriuiv: dummy_pfnglgetsamplerparameteriuivproc,
37291			texbuffer: dummy_pfngltexbufferproc,
37292			texbufferrange: dummy_pfngltexbufferrangeproc,
37293			texstorage3dmultisample: dummy_pfngltexstorage3dmultisampleproc,
37294		}
37295	}
37296}
37297impl Debug for EsVersion32 {
37298	fn fmt(&self, f: &mut Formatter) -> fmt::Result {
37299		if self.available {
37300			f.debug_struct("EsVersion32")
37301			.field("available", &self.available)
37302			.field("blendbarrier", unsafe{if transmute::<_, *const c_void>(self.blendbarrier) == (dummy_pfnglblendbarrierproc as *const c_void) {&null::<PFNGLBLENDBARRIERPROC>()} else {&self.blendbarrier}})
37303			.field("copyimagesubdata", unsafe{if transmute::<_, *const c_void>(self.copyimagesubdata) == (dummy_pfnglcopyimagesubdataproc as *const c_void) {&null::<PFNGLCOPYIMAGESUBDATAPROC>()} else {&self.copyimagesubdata}})
37304			.field("debugmessagecontrol", unsafe{if transmute::<_, *const c_void>(self.debugmessagecontrol) == (dummy_pfngldebugmessagecontrolproc as *const c_void) {&null::<PFNGLDEBUGMESSAGECONTROLPROC>()} else {&self.debugmessagecontrol}})
37305			.field("debugmessageinsert", unsafe{if transmute::<_, *const c_void>(self.debugmessageinsert) == (dummy_pfngldebugmessageinsertproc as *const c_void) {&null::<PFNGLDEBUGMESSAGEINSERTPROC>()} else {&self.debugmessageinsert}})
37306			.field("debugmessagecallback", unsafe{if transmute::<_, *const c_void>(self.debugmessagecallback) == (dummy_pfngldebugmessagecallbackproc as *const c_void) {&null::<PFNGLDEBUGMESSAGECALLBACKPROC>()} else {&self.debugmessagecallback}})
37307			.field("getdebugmessagelog", unsafe{if transmute::<_, *const c_void>(self.getdebugmessagelog) == (dummy_pfnglgetdebugmessagelogproc as *const c_void) {&null::<PFNGLGETDEBUGMESSAGELOGPROC>()} else {&self.getdebugmessagelog}})
37308			.field("pushdebuggroup", unsafe{if transmute::<_, *const c_void>(self.pushdebuggroup) == (dummy_pfnglpushdebuggroupproc as *const c_void) {&null::<PFNGLPUSHDEBUGGROUPPROC>()} else {&self.pushdebuggroup}})
37309			.field("popdebuggroup", unsafe{if transmute::<_, *const c_void>(self.popdebuggroup) == (dummy_pfnglpopdebuggroupproc as *const c_void) {&null::<PFNGLPOPDEBUGGROUPPROC>()} else {&self.popdebuggroup}})
37310			.field("objectlabel", unsafe{if transmute::<_, *const c_void>(self.objectlabel) == (dummy_pfnglobjectlabelproc as *const c_void) {&null::<PFNGLOBJECTLABELPROC>()} else {&self.objectlabel}})
37311			.field("getobjectlabel", unsafe{if transmute::<_, *const c_void>(self.getobjectlabel) == (dummy_pfnglgetobjectlabelproc as *const c_void) {&null::<PFNGLGETOBJECTLABELPROC>()} else {&self.getobjectlabel}})
37312			.field("objectptrlabel", unsafe{if transmute::<_, *const c_void>(self.objectptrlabel) == (dummy_pfnglobjectptrlabelproc as *const c_void) {&null::<PFNGLOBJECTPTRLABELPROC>()} else {&self.objectptrlabel}})
37313			.field("getobjectptrlabel", unsafe{if transmute::<_, *const c_void>(self.getobjectptrlabel) == (dummy_pfnglgetobjectptrlabelproc as *const c_void) {&null::<PFNGLGETOBJECTPTRLABELPROC>()} else {&self.getobjectptrlabel}})
37314			.field("getpointerv", unsafe{if transmute::<_, *const c_void>(self.getpointerv) == (dummy_pfnglgetpointervproc as *const c_void) {&null::<PFNGLGETPOINTERVPROC>()} else {&self.getpointerv}})
37315			.field("enablei", unsafe{if transmute::<_, *const c_void>(self.enablei) == (dummy_pfnglenableiproc as *const c_void) {&null::<PFNGLENABLEIPROC>()} else {&self.enablei}})
37316			.field("disablei", unsafe{if transmute::<_, *const c_void>(self.disablei) == (dummy_pfngldisableiproc as *const c_void) {&null::<PFNGLDISABLEIPROC>()} else {&self.disablei}})
37317			.field("blendequationi", unsafe{if transmute::<_, *const c_void>(self.blendequationi) == (dummy_pfnglblendequationiproc as *const c_void) {&null::<PFNGLBLENDEQUATIONIPROC>()} else {&self.blendequationi}})
37318			.field("blendequationseparatei", unsafe{if transmute::<_, *const c_void>(self.blendequationseparatei) == (dummy_pfnglblendequationseparateiproc as *const c_void) {&null::<PFNGLBLENDEQUATIONSEPARATEIPROC>()} else {&self.blendequationseparatei}})
37319			.field("blendfunci", unsafe{if transmute::<_, *const c_void>(self.blendfunci) == (dummy_pfnglblendfunciproc as *const c_void) {&null::<PFNGLBLENDFUNCIPROC>()} else {&self.blendfunci}})
37320			.field("blendfuncseparatei", unsafe{if transmute::<_, *const c_void>(self.blendfuncseparatei) == (dummy_pfnglblendfuncseparateiproc as *const c_void) {&null::<PFNGLBLENDFUNCSEPARATEIPROC>()} else {&self.blendfuncseparatei}})
37321			.field("colormaski", unsafe{if transmute::<_, *const c_void>(self.colormaski) == (dummy_pfnglcolormaskiproc as *const c_void) {&null::<PFNGLCOLORMASKIPROC>()} else {&self.colormaski}})
37322			.field("isenabledi", unsafe{if transmute::<_, *const c_void>(self.isenabledi) == (dummy_pfnglisenablediproc as *const c_void) {&null::<PFNGLISENABLEDIPROC>()} else {&self.isenabledi}})
37323			.field("drawelementsbasevertex", unsafe{if transmute::<_, *const c_void>(self.drawelementsbasevertex) == (dummy_pfngldrawelementsbasevertexproc as *const c_void) {&null::<PFNGLDRAWELEMENTSBASEVERTEXPROC>()} else {&self.drawelementsbasevertex}})
37324			.field("drawrangeelementsbasevertex", unsafe{if transmute::<_, *const c_void>(self.drawrangeelementsbasevertex) == (dummy_pfngldrawrangeelementsbasevertexproc as *const c_void) {&null::<PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC>()} else {&self.drawrangeelementsbasevertex}})
37325			.field("drawelementsinstancedbasevertex", unsafe{if transmute::<_, *const c_void>(self.drawelementsinstancedbasevertex) == (dummy_pfngldrawelementsinstancedbasevertexproc as *const c_void) {&null::<PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC>()} else {&self.drawelementsinstancedbasevertex}})
37326			.field("framebuffertexture", unsafe{if transmute::<_, *const c_void>(self.framebuffertexture) == (dummy_pfnglframebuffertextureproc as *const c_void) {&null::<PFNGLFRAMEBUFFERTEXTUREPROC>()} else {&self.framebuffertexture}})
37327			.field("primitiveboundingbox", unsafe{if transmute::<_, *const c_void>(self.primitiveboundingbox) == (dummy_pfnglprimitiveboundingboxproc as *const c_void) {&null::<PFNGLPRIMITIVEBOUNDINGBOXPROC>()} else {&self.primitiveboundingbox}})
37328			.field("getgraphicsresetstatus", unsafe{if transmute::<_, *const c_void>(self.getgraphicsresetstatus) == (dummy_pfnglgetgraphicsresetstatusproc as *const c_void) {&null::<PFNGLGETGRAPHICSRESETSTATUSPROC>()} else {&self.getgraphicsresetstatus}})
37329			.field("readnpixels", unsafe{if transmute::<_, *const c_void>(self.readnpixels) == (dummy_pfnglreadnpixelsproc as *const c_void) {&null::<PFNGLREADNPIXELSPROC>()} else {&self.readnpixels}})
37330			.field("getnuniformfv", unsafe{if transmute::<_, *const c_void>(self.getnuniformfv) == (dummy_pfnglgetnuniformfvproc as *const c_void) {&null::<PFNGLGETNUNIFORMFVPROC>()} else {&self.getnuniformfv}})
37331			.field("getnuniformiv", unsafe{if transmute::<_, *const c_void>(self.getnuniformiv) == (dummy_pfnglgetnuniformivproc as *const c_void) {&null::<PFNGLGETNUNIFORMIVPROC>()} else {&self.getnuniformiv}})
37332			.field("getnuniformuiv", unsafe{if transmute::<_, *const c_void>(self.getnuniformuiv) == (dummy_pfnglgetnuniformuivproc as *const c_void) {&null::<PFNGLGETNUNIFORMUIVPROC>()} else {&self.getnuniformuiv}})
37333			.field("minsampleshading", unsafe{if transmute::<_, *const c_void>(self.minsampleshading) == (dummy_pfnglminsampleshadingproc as *const c_void) {&null::<PFNGLMINSAMPLESHADINGPROC>()} else {&self.minsampleshading}})
37334			.field("patchparameteri", unsafe{if transmute::<_, *const c_void>(self.patchparameteri) == (dummy_pfnglpatchparameteriproc as *const c_void) {&null::<PFNGLPATCHPARAMETERIPROC>()} else {&self.patchparameteri}})
37335			.field("texparameteriiv", unsafe{if transmute::<_, *const c_void>(self.texparameteriiv) == (dummy_pfngltexparameteriivproc as *const c_void) {&null::<PFNGLTEXPARAMETERIIVPROC>()} else {&self.texparameteriiv}})
37336			.field("texparameteriuiv", unsafe{if transmute::<_, *const c_void>(self.texparameteriuiv) == (dummy_pfngltexparameteriuivproc as *const c_void) {&null::<PFNGLTEXPARAMETERIUIVPROC>()} else {&self.texparameteriuiv}})
37337			.field("gettexparameteriiv", unsafe{if transmute::<_, *const c_void>(self.gettexparameteriiv) == (dummy_pfnglgettexparameteriivproc as *const c_void) {&null::<PFNGLGETTEXPARAMETERIIVPROC>()} else {&self.gettexparameteriiv}})
37338			.field("gettexparameteriuiv", unsafe{if transmute::<_, *const c_void>(self.gettexparameteriuiv) == (dummy_pfnglgettexparameteriuivproc as *const c_void) {&null::<PFNGLGETTEXPARAMETERIUIVPROC>()} else {&self.gettexparameteriuiv}})
37339			.field("samplerparameteriiv", unsafe{if transmute::<_, *const c_void>(self.samplerparameteriiv) == (dummy_pfnglsamplerparameteriivproc as *const c_void) {&null::<PFNGLSAMPLERPARAMETERIIVPROC>()} else {&self.samplerparameteriiv}})
37340			.field("samplerparameteriuiv", unsafe{if transmute::<_, *const c_void>(self.samplerparameteriuiv) == (dummy_pfnglsamplerparameteriuivproc as *const c_void) {&null::<PFNGLSAMPLERPARAMETERIUIVPROC>()} else {&self.samplerparameteriuiv}})
37341			.field("getsamplerparameteriiv", unsafe{if transmute::<_, *const c_void>(self.getsamplerparameteriiv) == (dummy_pfnglgetsamplerparameteriivproc as *const c_void) {&null::<PFNGLGETSAMPLERPARAMETERIIVPROC>()} else {&self.getsamplerparameteriiv}})
37342			.field("getsamplerparameteriuiv", unsafe{if transmute::<_, *const c_void>(self.getsamplerparameteriuiv) == (dummy_pfnglgetsamplerparameteriuivproc as *const c_void) {&null::<PFNGLGETSAMPLERPARAMETERIUIVPROC>()} else {&self.getsamplerparameteriuiv}})
37343			.field("texbuffer", unsafe{if transmute::<_, *const c_void>(self.texbuffer) == (dummy_pfngltexbufferproc as *const c_void) {&null::<PFNGLTEXBUFFERPROC>()} else {&self.texbuffer}})
37344			.field("texbufferrange", unsafe{if transmute::<_, *const c_void>(self.texbufferrange) == (dummy_pfngltexbufferrangeproc as *const c_void) {&null::<PFNGLTEXBUFFERRANGEPROC>()} else {&self.texbufferrange}})
37345			.field("texstorage3dmultisample", unsafe{if transmute::<_, *const c_void>(self.texstorage3dmultisample) == (dummy_pfngltexstorage3dmultisampleproc as *const c_void) {&null::<PFNGLTEXSTORAGE3DMULTISAMPLEPROC>()} else {&self.texstorage3dmultisample}})
37346			.finish()
37347		} else {
37348			f.debug_struct("EsVersion32")
37349			.field("available", &self.available)
37350			.finish_non_exhaustive()
37351		}
37352	}
37353}
37354	/// Functions from OpenGL version 1.0 for the struct `GLCore` without dupliacted functions.
37355pub trait GL_1_0_g {
37356	/// Get the OpenGL backend version (string_version, major, minor, release)
37357	fn get_version(&self) -> (&'static str, u32, u32, u32);
37358	/// Get the OpenGL vendor string
37359	fn get_vendor(&self) -> &'static str;
37360	/// Get the OpenGL renderer string
37361	fn get_renderer(&self) -> &'static str;
37362	/// Get the OpenGL version string
37363	fn get_versionstr(&self) -> &'static str;
37364
37365	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCullFace.xhtml>
37366	fn glCullFace(&self, mode: GLenum) -> Result<()>;
37367
37368	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFrontFace.xhtml>
37369	fn glFrontFace(&self, mode: GLenum) -> Result<()>;
37370
37371	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glHint.xhtml>
37372	fn glHint(&self, target: GLenum, mode: GLenum) -> Result<()>;
37373
37374	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glLineWidth.xhtml>
37375	fn glLineWidth(&self, width: GLfloat) -> Result<()>;
37376
37377	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPointSize.xhtml>
37378	fn glPointSize(&self, size: GLfloat) -> Result<()>;
37379
37380	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPolygonMode.xhtml>
37381	fn glPolygonMode(&self, face: GLenum, mode: GLenum) -> Result<()>;
37382
37383	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glScissor.xhtml>
37384	fn glScissor(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
37385
37386	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameterf.xhtml>
37387	fn glTexParameterf(&self, target: GLenum, pname: GLenum, param: GLfloat) -> Result<()>;
37388
37389	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameterfv.xhtml>
37390	fn glTexParameterfv(&self, target: GLenum, pname: GLenum, params: *const GLfloat) -> Result<()>;
37391
37392	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameteri.xhtml>
37393	fn glTexParameteri(&self, target: GLenum, pname: GLenum, param: GLint) -> Result<()>;
37394
37395	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameteriv.xhtml>
37396	fn glTexParameteriv(&self, target: GLenum, pname: GLenum, params: *const GLint) -> Result<()>;
37397
37398	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexImage1D.xhtml>
37399	fn glTexImage1D(&self, target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, border: GLint, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
37400
37401	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexImage2D.xhtml>
37402	fn glTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
37403
37404	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawBuffer.xhtml>
37405	fn glDrawBuffer(&self, buf: GLenum) -> Result<()>;
37406
37407	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClear.xhtml>
37408	fn glClear(&self, mask: GLbitfield) -> Result<()>;
37409
37410	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearColor.xhtml>
37411	fn glClearColor(&self, red: GLfloat, green: GLfloat, blue: GLfloat, alpha: GLfloat) -> Result<()>;
37412
37413	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearStencil.xhtml>
37414	fn glClearStencil(&self, s: GLint) -> Result<()>;
37415
37416	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearDepth.xhtml>
37417	fn glClearDepth(&self, depth: GLdouble) -> Result<()>;
37418
37419	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilMask.xhtml>
37420	fn glStencilMask(&self, mask: GLuint) -> Result<()>;
37421
37422	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorMask.xhtml>
37423	fn glColorMask(&self, red: GLboolean, green: GLboolean, blue: GLboolean, alpha: GLboolean) -> Result<()>;
37424
37425	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthMask.xhtml>
37426	fn glDepthMask(&self, flag: GLboolean) -> Result<()>;
37427
37428	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDisable.xhtml>
37429	fn glDisable(&self, cap: GLenum) -> Result<()>;
37430
37431	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEnable.xhtml>
37432	fn glEnable(&self, cap: GLenum) -> Result<()>;
37433
37434	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFinish.xhtml>
37435	fn glFinish(&self) -> Result<()>;
37436
37437	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFlush.xhtml>
37438	fn glFlush(&self) -> Result<()>;
37439
37440	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendFunc.xhtml>
37441	fn glBlendFunc(&self, sfactor: GLenum, dfactor: GLenum) -> Result<()>;
37442
37443	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glLogicOp.xhtml>
37444	fn glLogicOp(&self, opcode: GLenum) -> Result<()>;
37445
37446	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilFunc.xhtml>
37447	fn glStencilFunc(&self, func: GLenum, ref_: GLint, mask: GLuint) -> Result<()>;
37448
37449	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilOp.xhtml>
37450	fn glStencilOp(&self, fail: GLenum, zfail: GLenum, zpass: GLenum) -> Result<()>;
37451
37452	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthFunc.xhtml>
37453	fn glDepthFunc(&self, func: GLenum) -> Result<()>;
37454
37455	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPixelStoref.xhtml>
37456	fn glPixelStoref(&self, pname: GLenum, param: GLfloat) -> Result<()>;
37457
37458	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPixelStorei.xhtml>
37459	fn glPixelStorei(&self, pname: GLenum, param: GLint) -> Result<()>;
37460
37461	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glReadBuffer.xhtml>
37462	fn glReadBuffer(&self, src: GLenum) -> Result<()>;
37463
37464	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glReadPixels.xhtml>
37465	fn glReadPixels(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, pixels: *mut c_void) -> Result<()>;
37466
37467	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBooleanv.xhtml>
37468	fn glGetBooleanv(&self, pname: GLenum, data: *mut GLboolean) -> Result<()>;
37469
37470	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetDoublev.xhtml>
37471	fn glGetDoublev(&self, pname: GLenum, data: *mut GLdouble) -> Result<()>;
37472
37473	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetError.xhtml>
37474	fn glGetError(&self) -> GLenum;
37475
37476	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFloatv.xhtml>
37477	fn glGetFloatv(&self, pname: GLenum, data: *mut GLfloat) -> Result<()>;
37478
37479	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetIntegerv.xhtml>
37480	fn glGetIntegerv(&self, pname: GLenum, data: *mut GLint) -> Result<()>;
37481
37482	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetString.xhtml>
37483	fn glGetString(&self, name: GLenum) -> Result<&'static str>;
37484
37485	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexImage.xhtml>
37486	fn glGetTexImage(&self, target: GLenum, level: GLint, format: GLenum, type_: GLenum, pixels: *mut c_void) -> Result<()>;
37487
37488	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexParameterfv.xhtml>
37489	fn glGetTexParameterfv(&self, target: GLenum, pname: GLenum, params: *mut GLfloat) -> Result<()>;
37490
37491	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexParameteriv.xhtml>
37492	fn glGetTexParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
37493
37494	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexLevelParameterfv.xhtml>
37495	fn glGetTexLevelParameterfv(&self, target: GLenum, level: GLint, pname: GLenum, params: *mut GLfloat) -> Result<()>;
37496
37497	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexLevelParameteriv.xhtml>
37498	fn glGetTexLevelParameteriv(&self, target: GLenum, level: GLint, pname: GLenum, params: *mut GLint) -> Result<()>;
37499
37500	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsEnabled.xhtml>
37501	fn glIsEnabled(&self, cap: GLenum) -> Result<GLboolean>;
37502
37503	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthRange.xhtml>
37504	fn glDepthRange(&self, n: GLdouble, f: GLdouble) -> Result<()>;
37505
37506	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glViewport.xhtml>
37507	fn glViewport(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
37508}
37509
37510	/// Functions from OpenGL version 1.1 for the struct `GLCore` without dupliacted functions.
37511pub trait GL_1_1_g {
37512
37513	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawArrays.xhtml>
37514	fn glDrawArrays(&self, mode: GLenum, first: GLint, count: GLsizei) -> Result<()>;
37515
37516	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElements.xhtml>
37517	fn glDrawElements(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void) -> Result<()>;
37518
37519	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetPointerv.xhtml>
37520	fn glGetPointerv(&self, pname: GLenum, params: *mut *mut c_void) -> Result<()>;
37521
37522	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPolygonOffset.xhtml>
37523	fn glPolygonOffset(&self, factor: GLfloat, units: GLfloat) -> Result<()>;
37524
37525	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTexImage1D.xhtml>
37526	fn glCopyTexImage1D(&self, target: GLenum, level: GLint, internalformat: GLenum, x: GLint, y: GLint, width: GLsizei, border: GLint) -> Result<()>;
37527
37528	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTexImage2D.xhtml>
37529	fn glCopyTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei, border: GLint) -> Result<()>;
37530
37531	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTexSubImage1D.xhtml>
37532	fn glCopyTexSubImage1D(&self, target: GLenum, level: GLint, xoffset: GLint, x: GLint, y: GLint, width: GLsizei) -> Result<()>;
37533
37534	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTexSubImage2D.xhtml>
37535	fn glCopyTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
37536
37537	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexSubImage1D.xhtml>
37538	fn glTexSubImage1D(&self, target: GLenum, level: GLint, xoffset: GLint, width: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
37539
37540	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexSubImage2D.xhtml>
37541	fn glTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
37542
37543	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindTexture.xhtml>
37544	fn glBindTexture(&self, target: GLenum, texture: GLuint) -> Result<()>;
37545
37546	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteTextures.xhtml>
37547	fn glDeleteTextures(&self, n: GLsizei, textures: *const GLuint) -> Result<()>;
37548
37549	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenTextures.xhtml>
37550	fn glGenTextures(&self, n: GLsizei, textures: *mut GLuint) -> Result<()>;
37551
37552	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsTexture.xhtml>
37553	fn glIsTexture(&self, texture: GLuint) -> Result<GLboolean>;
37554}
37555
37556	/// Functions from OpenGL version 1.2 for the struct `GLCore` without dupliacted functions.
37557pub trait GL_1_2_g {
37558
37559	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawRangeElements.xhtml>
37560	fn glDrawRangeElements(&self, mode: GLenum, start: GLuint, end: GLuint, count: GLsizei, type_: GLenum, indices: *const c_void) -> Result<()>;
37561
37562	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexImage3D.xhtml>
37563	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<()>;
37564
37565	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexSubImage3D.xhtml>
37566	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<()>;
37567
37568	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTexSubImage3D.xhtml>
37569	fn glCopyTexSubImage3D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
37570}
37571
37572	/// Functions from OpenGL version 1.3 for the struct `GLCore` without dupliacted functions.
37573pub trait GL_1_3_g {
37574
37575	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glActiveTexture.xhtml>
37576	fn glActiveTexture(&self, texture: GLenum) -> Result<()>;
37577
37578	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSampleCoverage.xhtml>
37579	fn glSampleCoverage(&self, value: GLfloat, invert: GLboolean) -> Result<()>;
37580
37581	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexImage3D.xhtml>
37582	fn glCompressedTexImage3D(&self, target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, imageSize: GLsizei, data: *const c_void) -> Result<()>;
37583
37584	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexImage2D.xhtml>
37585	fn glCompressedTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, border: GLint, imageSize: GLsizei, data: *const c_void) -> Result<()>;
37586
37587	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexImage1D.xhtml>
37588	fn glCompressedTexImage1D(&self, target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, border: GLint, imageSize: GLsizei, data: *const c_void) -> Result<()>;
37589
37590	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexSubImage3D.xhtml>
37591	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<()>;
37592
37593	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexSubImage2D.xhtml>
37594	fn glCompressedTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()>;
37595
37596	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTexSubImage1D.xhtml>
37597	fn glCompressedTexSubImage1D(&self, target: GLenum, level: GLint, xoffset: GLint, width: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()>;
37598
37599	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetCompressedTexImage.xhtml>
37600	fn glGetCompressedTexImage(&self, target: GLenum, level: GLint, img: *mut c_void) -> Result<()>;
37601
37602	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClientActiveTexture.xhtml>
37603	fn glClientActiveTexture(&self, texture: GLenum) -> Result<()>;
37604
37605	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1d.xhtml>
37606	fn glMultiTexCoord1d(&self, target: GLenum, s: GLdouble) -> Result<()>;
37607
37608	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1dv.xhtml>
37609	fn glMultiTexCoord1dv(&self, target: GLenum, v: *const GLdouble) -> Result<()>;
37610
37611	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1f.xhtml>
37612	fn glMultiTexCoord1f(&self, target: GLenum, s: GLfloat) -> Result<()>;
37613
37614	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1fv.xhtml>
37615	fn glMultiTexCoord1fv(&self, target: GLenum, v: *const GLfloat) -> Result<()>;
37616
37617	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1i.xhtml>
37618	fn glMultiTexCoord1i(&self, target: GLenum, s: GLint) -> Result<()>;
37619
37620	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1iv.xhtml>
37621	fn glMultiTexCoord1iv(&self, target: GLenum, v: *const GLint) -> Result<()>;
37622
37623	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1s.xhtml>
37624	fn glMultiTexCoord1s(&self, target: GLenum, s: GLshort) -> Result<()>;
37625
37626	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord1sv.xhtml>
37627	fn glMultiTexCoord1sv(&self, target: GLenum, v: *const GLshort) -> Result<()>;
37628
37629	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2d.xhtml>
37630	fn glMultiTexCoord2d(&self, target: GLenum, s: GLdouble, t: GLdouble) -> Result<()>;
37631
37632	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2dv.xhtml>
37633	fn glMultiTexCoord2dv(&self, target: GLenum, v: *const GLdouble) -> Result<()>;
37634
37635	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2f.xhtml>
37636	fn glMultiTexCoord2f(&self, target: GLenum, s: GLfloat, t: GLfloat) -> Result<()>;
37637
37638	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2fv.xhtml>
37639	fn glMultiTexCoord2fv(&self, target: GLenum, v: *const GLfloat) -> Result<()>;
37640
37641	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2i.xhtml>
37642	fn glMultiTexCoord2i(&self, target: GLenum, s: GLint, t: GLint) -> Result<()>;
37643
37644	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2iv.xhtml>
37645	fn glMultiTexCoord2iv(&self, target: GLenum, v: *const GLint) -> Result<()>;
37646
37647	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2s.xhtml>
37648	fn glMultiTexCoord2s(&self, target: GLenum, s: GLshort, t: GLshort) -> Result<()>;
37649
37650	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord2sv.xhtml>
37651	fn glMultiTexCoord2sv(&self, target: GLenum, v: *const GLshort) -> Result<()>;
37652
37653	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3d.xhtml>
37654	fn glMultiTexCoord3d(&self, target: GLenum, s: GLdouble, t: GLdouble, r: GLdouble) -> Result<()>;
37655
37656	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3dv.xhtml>
37657	fn glMultiTexCoord3dv(&self, target: GLenum, v: *const GLdouble) -> Result<()>;
37658
37659	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3f.xhtml>
37660	fn glMultiTexCoord3f(&self, target: GLenum, s: GLfloat, t: GLfloat, r: GLfloat) -> Result<()>;
37661
37662	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3fv.xhtml>
37663	fn glMultiTexCoord3fv(&self, target: GLenum, v: *const GLfloat) -> Result<()>;
37664
37665	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3i.xhtml>
37666	fn glMultiTexCoord3i(&self, target: GLenum, s: GLint, t: GLint, r: GLint) -> Result<()>;
37667
37668	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3iv.xhtml>
37669	fn glMultiTexCoord3iv(&self, target: GLenum, v: *const GLint) -> Result<()>;
37670
37671	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3s.xhtml>
37672	fn glMultiTexCoord3s(&self, target: GLenum, s: GLshort, t: GLshort, r: GLshort) -> Result<()>;
37673
37674	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord3sv.xhtml>
37675	fn glMultiTexCoord3sv(&self, target: GLenum, v: *const GLshort) -> Result<()>;
37676
37677	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4d.xhtml>
37678	fn glMultiTexCoord4d(&self, target: GLenum, s: GLdouble, t: GLdouble, r: GLdouble, q: GLdouble) -> Result<()>;
37679
37680	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4dv.xhtml>
37681	fn glMultiTexCoord4dv(&self, target: GLenum, v: *const GLdouble) -> Result<()>;
37682
37683	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4f.xhtml>
37684	fn glMultiTexCoord4f(&self, target: GLenum, s: GLfloat, t: GLfloat, r: GLfloat, q: GLfloat) -> Result<()>;
37685
37686	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4fv.xhtml>
37687	fn glMultiTexCoord4fv(&self, target: GLenum, v: *const GLfloat) -> Result<()>;
37688
37689	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4i.xhtml>
37690	fn glMultiTexCoord4i(&self, target: GLenum, s: GLint, t: GLint, r: GLint, q: GLint) -> Result<()>;
37691
37692	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4iv.xhtml>
37693	fn glMultiTexCoord4iv(&self, target: GLenum, v: *const GLint) -> Result<()>;
37694
37695	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4s.xhtml>
37696	fn glMultiTexCoord4s(&self, target: GLenum, s: GLshort, t: GLshort, r: GLshort, q: GLshort) -> Result<()>;
37697
37698	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoord4sv.xhtml>
37699	fn glMultiTexCoord4sv(&self, target: GLenum, v: *const GLshort) -> Result<()>;
37700
37701	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glLoadTransposeMatrixf.xhtml>
37702	fn glLoadTransposeMatrixf(&self, m: *const GLfloat) -> Result<()>;
37703
37704	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glLoadTransposeMatrixd.xhtml>
37705	fn glLoadTransposeMatrixd(&self, m: *const GLdouble) -> Result<()>;
37706
37707	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultTransposeMatrixf.xhtml>
37708	fn glMultTransposeMatrixf(&self, m: *const GLfloat) -> Result<()>;
37709
37710	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultTransposeMatrixd.xhtml>
37711	fn glMultTransposeMatrixd(&self, m: *const GLdouble) -> Result<()>;
37712}
37713
37714	/// Functions from OpenGL version 1.4 for the struct `GLCore` without dupliacted functions.
37715pub trait GL_1_4_g {
37716
37717	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendFuncSeparate.xhtml>
37718	fn glBlendFuncSeparate(&self, sfactorRGB: GLenum, dfactorRGB: GLenum, sfactorAlpha: GLenum, dfactorAlpha: GLenum) -> Result<()>;
37719
37720	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawArrays.xhtml>
37721	fn glMultiDrawArrays(&self, mode: GLenum, first: *const GLint, count: *const GLsizei, drawcount: GLsizei) -> Result<()>;
37722
37723	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawElements.xhtml>
37724	fn glMultiDrawElements(&self, mode: GLenum, count: *const GLsizei, type_: GLenum, indices: *const *const c_void, drawcount: GLsizei) -> Result<()>;
37725
37726	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPointParameterf.xhtml>
37727	fn glPointParameterf(&self, pname: GLenum, param: GLfloat) -> Result<()>;
37728
37729	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPointParameterfv.xhtml>
37730	fn glPointParameterfv(&self, pname: GLenum, params: *const GLfloat) -> Result<()>;
37731
37732	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPointParameteri.xhtml>
37733	fn glPointParameteri(&self, pname: GLenum, param: GLint) -> Result<()>;
37734
37735	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPointParameteriv.xhtml>
37736	fn glPointParameteriv(&self, pname: GLenum, params: *const GLint) -> Result<()>;
37737
37738	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFogCoordf.xhtml>
37739	fn glFogCoordf(&self, coord: GLfloat) -> Result<()>;
37740
37741	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFogCoordfv.xhtml>
37742	fn glFogCoordfv(&self, coord: *const GLfloat) -> Result<()>;
37743
37744	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFogCoordd.xhtml>
37745	fn glFogCoordd(&self, coord: GLdouble) -> Result<()>;
37746
37747	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFogCoorddv.xhtml>
37748	fn glFogCoorddv(&self, coord: *const GLdouble) -> Result<()>;
37749
37750	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFogCoordPointer.xhtml>
37751	fn glFogCoordPointer(&self, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()>;
37752
37753	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3b.xhtml>
37754	fn glSecondaryColor3b(&self, red: GLbyte, green: GLbyte, blue: GLbyte) -> Result<()>;
37755
37756	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3bv.xhtml>
37757	fn glSecondaryColor3bv(&self, v: *const GLbyte) -> Result<()>;
37758
37759	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3d.xhtml>
37760	fn glSecondaryColor3d(&self, red: GLdouble, green: GLdouble, blue: GLdouble) -> Result<()>;
37761
37762	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3dv.xhtml>
37763	fn glSecondaryColor3dv(&self, v: *const GLdouble) -> Result<()>;
37764
37765	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3f.xhtml>
37766	fn glSecondaryColor3f(&self, red: GLfloat, green: GLfloat, blue: GLfloat) -> Result<()>;
37767
37768	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3fv.xhtml>
37769	fn glSecondaryColor3fv(&self, v: *const GLfloat) -> Result<()>;
37770
37771	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3i.xhtml>
37772	fn glSecondaryColor3i(&self, red: GLint, green: GLint, blue: GLint) -> Result<()>;
37773
37774	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3iv.xhtml>
37775	fn glSecondaryColor3iv(&self, v: *const GLint) -> Result<()>;
37776
37777	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3s.xhtml>
37778	fn glSecondaryColor3s(&self, red: GLshort, green: GLshort, blue: GLshort) -> Result<()>;
37779
37780	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3sv.xhtml>
37781	fn glSecondaryColor3sv(&self, v: *const GLshort) -> Result<()>;
37782
37783	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3ub.xhtml>
37784	fn glSecondaryColor3ub(&self, red: GLubyte, green: GLubyte, blue: GLubyte) -> Result<()>;
37785
37786	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3ubv.xhtml>
37787	fn glSecondaryColor3ubv(&self, v: *const GLubyte) -> Result<()>;
37788
37789	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3ui.xhtml>
37790	fn glSecondaryColor3ui(&self, red: GLuint, green: GLuint, blue: GLuint) -> Result<()>;
37791
37792	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3uiv.xhtml>
37793	fn glSecondaryColor3uiv(&self, v: *const GLuint) -> Result<()>;
37794
37795	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3us.xhtml>
37796	fn glSecondaryColor3us(&self, red: GLushort, green: GLushort, blue: GLushort) -> Result<()>;
37797
37798	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColor3usv.xhtml>
37799	fn glSecondaryColor3usv(&self, v: *const GLushort) -> Result<()>;
37800
37801	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColorPointer.xhtml>
37802	fn glSecondaryColorPointer(&self, size: GLint, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()>;
37803
37804	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2d.xhtml>
37805	fn glWindowPos2d(&self, x: GLdouble, y: GLdouble) -> Result<()>;
37806
37807	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2dv.xhtml>
37808	fn glWindowPos2dv(&self, v: *const GLdouble) -> Result<()>;
37809
37810	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2f.xhtml>
37811	fn glWindowPos2f(&self, x: GLfloat, y: GLfloat) -> Result<()>;
37812
37813	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2fv.xhtml>
37814	fn glWindowPos2fv(&self, v: *const GLfloat) -> Result<()>;
37815
37816	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2i.xhtml>
37817	fn glWindowPos2i(&self, x: GLint, y: GLint) -> Result<()>;
37818
37819	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2iv.xhtml>
37820	fn glWindowPos2iv(&self, v: *const GLint) -> Result<()>;
37821
37822	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2s.xhtml>
37823	fn glWindowPos2s(&self, x: GLshort, y: GLshort) -> Result<()>;
37824
37825	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos2sv.xhtml>
37826	fn glWindowPos2sv(&self, v: *const GLshort) -> Result<()>;
37827
37828	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3d.xhtml>
37829	fn glWindowPos3d(&self, x: GLdouble, y: GLdouble, z: GLdouble) -> Result<()>;
37830
37831	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3dv.xhtml>
37832	fn glWindowPos3dv(&self, v: *const GLdouble) -> Result<()>;
37833
37834	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3f.xhtml>
37835	fn glWindowPos3f(&self, x: GLfloat, y: GLfloat, z: GLfloat) -> Result<()>;
37836
37837	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3fv.xhtml>
37838	fn glWindowPos3fv(&self, v: *const GLfloat) -> Result<()>;
37839
37840	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3i.xhtml>
37841	fn glWindowPos3i(&self, x: GLint, y: GLint, z: GLint) -> Result<()>;
37842
37843	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3iv.xhtml>
37844	fn glWindowPos3iv(&self, v: *const GLint) -> Result<()>;
37845
37846	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3s.xhtml>
37847	fn glWindowPos3s(&self, x: GLshort, y: GLshort, z: GLshort) -> Result<()>;
37848
37849	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWindowPos3sv.xhtml>
37850	fn glWindowPos3sv(&self, v: *const GLshort) -> Result<()>;
37851
37852	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendColor.xhtml>
37853	fn glBlendColor(&self, red: GLfloat, green: GLfloat, blue: GLfloat, alpha: GLfloat) -> Result<()>;
37854
37855	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendEquation.xhtml>
37856	fn glBlendEquation(&self, mode: GLenum) -> Result<()>;
37857}
37858
37859	/// Functions from OpenGL version 1.5 for the struct `GLCore` without dupliacted functions.
37860pub trait GL_1_5_g {
37861
37862	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenQueries.xhtml>
37863	fn glGenQueries(&self, n: GLsizei, ids: *mut GLuint) -> Result<()>;
37864
37865	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteQueries.xhtml>
37866	fn glDeleteQueries(&self, n: GLsizei, ids: *const GLuint) -> Result<()>;
37867
37868	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsQuery.xhtml>
37869	fn glIsQuery(&self, id: GLuint) -> Result<GLboolean>;
37870
37871	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBeginQuery.xhtml>
37872	fn glBeginQuery(&self, target: GLenum, id: GLuint) -> Result<()>;
37873
37874	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEndQuery.xhtml>
37875	fn glEndQuery(&self, target: GLenum) -> Result<()>;
37876
37877	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryiv.xhtml>
37878	fn glGetQueryiv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
37879
37880	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryObjectiv.xhtml>
37881	fn glGetQueryObjectiv(&self, id: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
37882
37883	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryObjectuiv.xhtml>
37884	fn glGetQueryObjectuiv(&self, id: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()>;
37885
37886	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindBuffer.xhtml>
37887	fn glBindBuffer(&self, target: GLenum, buffer: GLuint) -> Result<()>;
37888
37889	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteBuffers.xhtml>
37890	fn glDeleteBuffers(&self, n: GLsizei, buffers: *const GLuint) -> Result<()>;
37891
37892	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenBuffers.xhtml>
37893	fn glGenBuffers(&self, n: GLsizei, buffers: *mut GLuint) -> Result<()>;
37894
37895	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsBuffer.xhtml>
37896	fn glIsBuffer(&self, buffer: GLuint) -> Result<GLboolean>;
37897
37898	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBufferData.xhtml>
37899	fn glBufferData(&self, target: GLenum, size: GLsizeiptr, data: *const c_void, usage: GLenum) -> Result<()>;
37900
37901	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBufferSubData.xhtml>
37902	fn glBufferSubData(&self, target: GLenum, offset: GLintptr, size: GLsizeiptr, data: *const c_void) -> Result<()>;
37903
37904	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBufferSubData.xhtml>
37905	fn glGetBufferSubData(&self, target: GLenum, offset: GLintptr, size: GLsizeiptr, data: *mut c_void) -> Result<()>;
37906
37907	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMapBuffer.xhtml>
37908	fn glMapBuffer(&self, target: GLenum, access: GLenum) -> Result<*mut c_void>;
37909
37910	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUnmapBuffer.xhtml>
37911	fn glUnmapBuffer(&self, target: GLenum) -> Result<GLboolean>;
37912
37913	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBufferParameteriv.xhtml>
37914	fn glGetBufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
37915
37916	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBufferPointerv.xhtml>
37917	fn glGetBufferPointerv(&self, target: GLenum, pname: GLenum, params: *mut *mut c_void) -> Result<()>;
37918}
37919
37920	/// Functions from OpenGL version 2.0 for the struct `GLCore` without dupliacted functions.
37921pub trait GL_2_0_g {
37922	fn get_shading_language_version(&self) -> &'static str;
37923
37924	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendEquationSeparate.xhtml>
37925	fn glBlendEquationSeparate(&self, modeRGB: GLenum, modeAlpha: GLenum) -> Result<()>;
37926
37927	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawBuffers.xhtml>
37928	fn glDrawBuffers(&self, n: GLsizei, bufs: *const GLenum) -> Result<()>;
37929
37930	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilOpSeparate.xhtml>
37931	fn glStencilOpSeparate(&self, face: GLenum, sfail: GLenum, dpfail: GLenum, dppass: GLenum) -> Result<()>;
37932
37933	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilFuncSeparate.xhtml>
37934	fn glStencilFuncSeparate(&self, face: GLenum, func: GLenum, ref_: GLint, mask: GLuint) -> Result<()>;
37935
37936	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glStencilMaskSeparate.xhtml>
37937	fn glStencilMaskSeparate(&self, face: GLenum, mask: GLuint) -> Result<()>;
37938
37939	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glAttachShader.xhtml>
37940	fn glAttachShader(&self, program: GLuint, shader: GLuint) -> Result<()>;
37941
37942	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindAttribLocation.xhtml>
37943	fn glBindAttribLocation(&self, program: GLuint, index: GLuint, name: *const GLchar) -> Result<()>;
37944
37945	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompileShader.xhtml>
37946	fn glCompileShader(&self, shader: GLuint) -> Result<()>;
37947
37948	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateProgram.xhtml>
37949	fn glCreateProgram(&self) -> Result<GLuint>;
37950
37951	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateShader.xhtml>
37952	fn glCreateShader(&self, type_: GLenum) -> Result<GLuint>;
37953
37954	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteProgram.xhtml>
37955	fn glDeleteProgram(&self, program: GLuint) -> Result<()>;
37956
37957	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteShader.xhtml>
37958	fn glDeleteShader(&self, shader: GLuint) -> Result<()>;
37959
37960	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDetachShader.xhtml>
37961	fn glDetachShader(&self, program: GLuint, shader: GLuint) -> Result<()>;
37962
37963	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDisableVertexAttribArray.xhtml>
37964	fn glDisableVertexAttribArray(&self, index: GLuint) -> Result<()>;
37965
37966	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEnableVertexAttribArray.xhtml>
37967	fn glEnableVertexAttribArray(&self, index: GLuint) -> Result<()>;
37968
37969	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveAttrib.xhtml>
37970	fn glGetActiveAttrib(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLint, type_: *mut GLenum, name: *mut GLchar) -> Result<()>;
37971
37972	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveUniform.xhtml>
37973	fn glGetActiveUniform(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLint, type_: *mut GLenum, name: *mut GLchar) -> Result<()>;
37974
37975	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetAttachedShaders.xhtml>
37976	fn glGetAttachedShaders(&self, program: GLuint, maxCount: GLsizei, count: *mut GLsizei, shaders: *mut GLuint) -> Result<()>;
37977
37978	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetAttribLocation.xhtml>
37979	fn glGetAttribLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint>;
37980
37981	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramiv.xhtml>
37982	fn glGetProgramiv(&self, program: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
37983
37984	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramInfoLog.xhtml>
37985	fn glGetProgramInfoLog(&self, program: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()>;
37986
37987	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetShaderiv.xhtml>
37988	fn glGetShaderiv(&self, shader: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
37989
37990	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetShaderInfoLog.xhtml>
37991	fn glGetShaderInfoLog(&self, shader: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()>;
37992
37993	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetShaderSource.xhtml>
37994	fn glGetShaderSource(&self, shader: GLuint, bufSize: GLsizei, length: *mut GLsizei, source: *mut GLchar) -> Result<()>;
37995
37996	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformLocation.xhtml>
37997	fn glGetUniformLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint>;
37998
37999	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformfv.xhtml>
38000	fn glGetUniformfv(&self, program: GLuint, location: GLint, params: *mut GLfloat) -> Result<()>;
38001
38002	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformiv.xhtml>
38003	fn glGetUniformiv(&self, program: GLuint, location: GLint, params: *mut GLint) -> Result<()>;
38004
38005	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribdv.xhtml>
38006	fn glGetVertexAttribdv(&self, index: GLuint, pname: GLenum, params: *mut GLdouble) -> Result<()>;
38007
38008	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribfv.xhtml>
38009	fn glGetVertexAttribfv(&self, index: GLuint, pname: GLenum, params: *mut GLfloat) -> Result<()>;
38010
38011	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribiv.xhtml>
38012	fn glGetVertexAttribiv(&self, index: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
38013
38014	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribPointerv.xhtml>
38015	fn glGetVertexAttribPointerv(&self, index: GLuint, pname: GLenum, pointer: *mut *mut c_void) -> Result<()>;
38016
38017	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsProgram.xhtml>
38018	fn glIsProgram(&self, program: GLuint) -> Result<GLboolean>;
38019
38020	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsShader.xhtml>
38021	fn glIsShader(&self, shader: GLuint) -> Result<GLboolean>;
38022
38023	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glLinkProgram.xhtml>
38024	fn glLinkProgram(&self, program: GLuint) -> Result<()>;
38025
38026	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glShaderSource.xhtml>
38027	fn glShaderSource(&self, shader: GLuint, count: GLsizei, string_: *const *const GLchar, length: *const GLint) -> Result<()>;
38028
38029	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUseProgram.xhtml>
38030	fn glUseProgram(&self, program: GLuint) -> Result<()>;
38031
38032	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1f.xhtml>
38033	fn glUniform1f(&self, location: GLint, v0: GLfloat) -> Result<()>;
38034
38035	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2f.xhtml>
38036	fn glUniform2f(&self, location: GLint, v0: GLfloat, v1: GLfloat) -> Result<()>;
38037
38038	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3f.xhtml>
38039	fn glUniform3f(&self, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat) -> Result<()>;
38040
38041	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4f.xhtml>
38042	fn glUniform4f(&self, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat, v3: GLfloat) -> Result<()>;
38043
38044	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1i.xhtml>
38045	fn glUniform1i(&self, location: GLint, v0: GLint) -> Result<()>;
38046
38047	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2i.xhtml>
38048	fn glUniform2i(&self, location: GLint, v0: GLint, v1: GLint) -> Result<()>;
38049
38050	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3i.xhtml>
38051	fn glUniform3i(&self, location: GLint, v0: GLint, v1: GLint, v2: GLint) -> Result<()>;
38052
38053	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4i.xhtml>
38054	fn glUniform4i(&self, location: GLint, v0: GLint, v1: GLint, v2: GLint, v3: GLint) -> Result<()>;
38055
38056	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1fv.xhtml>
38057	fn glUniform1fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
38058
38059	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2fv.xhtml>
38060	fn glUniform2fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
38061
38062	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3fv.xhtml>
38063	fn glUniform3fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
38064
38065	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4fv.xhtml>
38066	fn glUniform4fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
38067
38068	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1iv.xhtml>
38069	fn glUniform1iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
38070
38071	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2iv.xhtml>
38072	fn glUniform2iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
38073
38074	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3iv.xhtml>
38075	fn glUniform3iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
38076
38077	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4iv.xhtml>
38078	fn glUniform4iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
38079
38080	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2fv.xhtml>
38081	fn glUniformMatrix2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
38082
38083	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3fv.xhtml>
38084	fn glUniformMatrix3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
38085
38086	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4fv.xhtml>
38087	fn glUniformMatrix4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
38088
38089	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glValidateProgram.xhtml>
38090	fn glValidateProgram(&self, program: GLuint) -> Result<()>;
38091
38092	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1d.xhtml>
38093	fn glVertexAttrib1d(&self, index: GLuint, x: GLdouble) -> Result<()>;
38094
38095	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1dv.xhtml>
38096	fn glVertexAttrib1dv(&self, index: GLuint, v: *const GLdouble) -> Result<()>;
38097
38098	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1f.xhtml>
38099	fn glVertexAttrib1f(&self, index: GLuint, x: GLfloat) -> Result<()>;
38100
38101	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1fv.xhtml>
38102	fn glVertexAttrib1fv(&self, index: GLuint, v: *const GLfloat) -> Result<()>;
38103
38104	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1s.xhtml>
38105	fn glVertexAttrib1s(&self, index: GLuint, x: GLshort) -> Result<()>;
38106
38107	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib1sv.xhtml>
38108	fn glVertexAttrib1sv(&self, index: GLuint, v: *const GLshort) -> Result<()>;
38109
38110	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2d.xhtml>
38111	fn glVertexAttrib2d(&self, index: GLuint, x: GLdouble, y: GLdouble) -> Result<()>;
38112
38113	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2dv.xhtml>
38114	fn glVertexAttrib2dv(&self, index: GLuint, v: *const GLdouble) -> Result<()>;
38115
38116	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2f.xhtml>
38117	fn glVertexAttrib2f(&self, index: GLuint, x: GLfloat, y: GLfloat) -> Result<()>;
38118
38119	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2fv.xhtml>
38120	fn glVertexAttrib2fv(&self, index: GLuint, v: *const GLfloat) -> Result<()>;
38121
38122	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2s.xhtml>
38123	fn glVertexAttrib2s(&self, index: GLuint, x: GLshort, y: GLshort) -> Result<()>;
38124
38125	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib2sv.xhtml>
38126	fn glVertexAttrib2sv(&self, index: GLuint, v: *const GLshort) -> Result<()>;
38127
38128	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3d.xhtml>
38129	fn glVertexAttrib3d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble) -> Result<()>;
38130
38131	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3dv.xhtml>
38132	fn glVertexAttrib3dv(&self, index: GLuint, v: *const GLdouble) -> Result<()>;
38133
38134	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3f.xhtml>
38135	fn glVertexAttrib3f(&self, index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat) -> Result<()>;
38136
38137	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3fv.xhtml>
38138	fn glVertexAttrib3fv(&self, index: GLuint, v: *const GLfloat) -> Result<()>;
38139
38140	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3s.xhtml>
38141	fn glVertexAttrib3s(&self, index: GLuint, x: GLshort, y: GLshort, z: GLshort) -> Result<()>;
38142
38143	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib3sv.xhtml>
38144	fn glVertexAttrib3sv(&self, index: GLuint, v: *const GLshort) -> Result<()>;
38145
38146	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nbv.xhtml>
38147	fn glVertexAttrib4Nbv(&self, index: GLuint, v: *const GLbyte) -> Result<()>;
38148
38149	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Niv.xhtml>
38150	fn glVertexAttrib4Niv(&self, index: GLuint, v: *const GLint) -> Result<()>;
38151
38152	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nsv.xhtml>
38153	fn glVertexAttrib4Nsv(&self, index: GLuint, v: *const GLshort) -> Result<()>;
38154
38155	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nub.xhtml>
38156	fn glVertexAttrib4Nub(&self, index: GLuint, x: GLubyte, y: GLubyte, z: GLubyte, w: GLubyte) -> Result<()>;
38157
38158	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nubv.xhtml>
38159	fn glVertexAttrib4Nubv(&self, index: GLuint, v: *const GLubyte) -> Result<()>;
38160
38161	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nuiv.xhtml>
38162	fn glVertexAttrib4Nuiv(&self, index: GLuint, v: *const GLuint) -> Result<()>;
38163
38164	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4Nusv.xhtml>
38165	fn glVertexAttrib4Nusv(&self, index: GLuint, v: *const GLushort) -> Result<()>;
38166
38167	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4bv.xhtml>
38168	fn glVertexAttrib4bv(&self, index: GLuint, v: *const GLbyte) -> Result<()>;
38169
38170	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4d.xhtml>
38171	fn glVertexAttrib4d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble, w: GLdouble) -> Result<()>;
38172
38173	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4dv.xhtml>
38174	fn glVertexAttrib4dv(&self, index: GLuint, v: *const GLdouble) -> Result<()>;
38175
38176	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4f.xhtml>
38177	fn glVertexAttrib4f(&self, index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat, w: GLfloat) -> Result<()>;
38178
38179	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4fv.xhtml>
38180	fn glVertexAttrib4fv(&self, index: GLuint, v: *const GLfloat) -> Result<()>;
38181
38182	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4iv.xhtml>
38183	fn glVertexAttrib4iv(&self, index: GLuint, v: *const GLint) -> Result<()>;
38184
38185	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4s.xhtml>
38186	fn glVertexAttrib4s(&self, index: GLuint, x: GLshort, y: GLshort, z: GLshort, w: GLshort) -> Result<()>;
38187
38188	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4sv.xhtml>
38189	fn glVertexAttrib4sv(&self, index: GLuint, v: *const GLshort) -> Result<()>;
38190
38191	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4ubv.xhtml>
38192	fn glVertexAttrib4ubv(&self, index: GLuint, v: *const GLubyte) -> Result<()>;
38193
38194	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4uiv.xhtml>
38195	fn glVertexAttrib4uiv(&self, index: GLuint, v: *const GLuint) -> Result<()>;
38196
38197	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttrib4usv.xhtml>
38198	fn glVertexAttrib4usv(&self, index: GLuint, v: *const GLushort) -> Result<()>;
38199
38200	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribPointer.xhtml>
38201	fn glVertexAttribPointer(&self, index: GLuint, size: GLint, type_: GLenum, normalized: GLboolean, stride: GLsizei, pointer: *const c_void) -> Result<()>;
38202}
38203
38204	/// Functions from OpenGL version 2.1 for the struct `GLCore` without dupliacted functions.
38205pub trait GL_2_1_g {
38206
38207	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2x3fv.xhtml>
38208	fn glUniformMatrix2x3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
38209
38210	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3x2fv.xhtml>
38211	fn glUniformMatrix3x2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
38212
38213	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2x4fv.xhtml>
38214	fn glUniformMatrix2x4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
38215
38216	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4x2fv.xhtml>
38217	fn glUniformMatrix4x2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
38218
38219	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3x4fv.xhtml>
38220	fn glUniformMatrix3x4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
38221
38222	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4x3fv.xhtml>
38223	fn glUniformMatrix4x3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
38224}
38225
38226	/// Functions from OpenGL version 3.0 for the struct `GLCore` without dupliacted functions.
38227pub trait GL_3_0_g {
38228
38229	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorMaski.xhtml>
38230	fn glColorMaski(&self, index: GLuint, r: GLboolean, g: GLboolean, b: GLboolean, a: GLboolean) -> Result<()>;
38231
38232	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBooleani_v.xhtml>
38233	fn glGetBooleani_v(&self, target: GLenum, index: GLuint, data: *mut GLboolean) -> Result<()>;
38234
38235	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetIntegeri_v.xhtml>
38236	fn glGetIntegeri_v(&self, target: GLenum, index: GLuint, data: *mut GLint) -> Result<()>;
38237
38238	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEnablei.xhtml>
38239	fn glEnablei(&self, target: GLenum, index: GLuint) -> Result<()>;
38240
38241	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDisablei.xhtml>
38242	fn glDisablei(&self, target: GLenum, index: GLuint) -> Result<()>;
38243
38244	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsEnabledi.xhtml>
38245	fn glIsEnabledi(&self, target: GLenum, index: GLuint) -> Result<GLboolean>;
38246
38247	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBeginTransformFeedback.xhtml>
38248	fn glBeginTransformFeedback(&self, primitiveMode: GLenum) -> Result<()>;
38249
38250	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEndTransformFeedback.xhtml>
38251	fn glEndTransformFeedback(&self) -> Result<()>;
38252
38253	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindBufferRange.xhtml>
38254	fn glBindBufferRange(&self, target: GLenum, index: GLuint, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()>;
38255
38256	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindBufferBase.xhtml>
38257	fn glBindBufferBase(&self, target: GLenum, index: GLuint, buffer: GLuint) -> Result<()>;
38258
38259	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTransformFeedbackVaryings.xhtml>
38260	fn glTransformFeedbackVaryings(&self, program: GLuint, count: GLsizei, varyings: *const *const GLchar, bufferMode: GLenum) -> Result<()>;
38261
38262	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTransformFeedbackVarying.xhtml>
38263	fn glGetTransformFeedbackVarying(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLsizei, type_: *mut GLenum, name: *mut GLchar) -> Result<()>;
38264
38265	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClampColor.xhtml>
38266	fn glClampColor(&self, target: GLenum, clamp: GLenum) -> Result<()>;
38267
38268	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBeginConditionalRender.xhtml>
38269	fn glBeginConditionalRender(&self, id: GLuint, mode: GLenum) -> Result<()>;
38270
38271	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEndConditionalRender.xhtml>
38272	fn glEndConditionalRender(&self) -> Result<()>;
38273
38274	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribIPointer.xhtml>
38275	fn glVertexAttribIPointer(&self, index: GLuint, size: GLint, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()>;
38276
38277	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribIiv.xhtml>
38278	fn glGetVertexAttribIiv(&self, index: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
38279
38280	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribIuiv.xhtml>
38281	fn glGetVertexAttribIuiv(&self, index: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()>;
38282
38283	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI1i.xhtml>
38284	fn glVertexAttribI1i(&self, index: GLuint, x: GLint) -> Result<()>;
38285
38286	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI2i.xhtml>
38287	fn glVertexAttribI2i(&self, index: GLuint, x: GLint, y: GLint) -> Result<()>;
38288
38289	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI3i.xhtml>
38290	fn glVertexAttribI3i(&self, index: GLuint, x: GLint, y: GLint, z: GLint) -> Result<()>;
38291
38292	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4i.xhtml>
38293	fn glVertexAttribI4i(&self, index: GLuint, x: GLint, y: GLint, z: GLint, w: GLint) -> Result<()>;
38294
38295	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI1ui.xhtml>
38296	fn glVertexAttribI1ui(&self, index: GLuint, x: GLuint) -> Result<()>;
38297
38298	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI2ui.xhtml>
38299	fn glVertexAttribI2ui(&self, index: GLuint, x: GLuint, y: GLuint) -> Result<()>;
38300
38301	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI3ui.xhtml>
38302	fn glVertexAttribI3ui(&self, index: GLuint, x: GLuint, y: GLuint, z: GLuint) -> Result<()>;
38303
38304	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4ui.xhtml>
38305	fn glVertexAttribI4ui(&self, index: GLuint, x: GLuint, y: GLuint, z: GLuint, w: GLuint) -> Result<()>;
38306
38307	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI1iv.xhtml>
38308	fn glVertexAttribI1iv(&self, index: GLuint, v: *const GLint) -> Result<()>;
38309
38310	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI2iv.xhtml>
38311	fn glVertexAttribI2iv(&self, index: GLuint, v: *const GLint) -> Result<()>;
38312
38313	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI3iv.xhtml>
38314	fn glVertexAttribI3iv(&self, index: GLuint, v: *const GLint) -> Result<()>;
38315
38316	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4iv.xhtml>
38317	fn glVertexAttribI4iv(&self, index: GLuint, v: *const GLint) -> Result<()>;
38318
38319	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI1uiv.xhtml>
38320	fn glVertexAttribI1uiv(&self, index: GLuint, v: *const GLuint) -> Result<()>;
38321
38322	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI2uiv.xhtml>
38323	fn glVertexAttribI2uiv(&self, index: GLuint, v: *const GLuint) -> Result<()>;
38324
38325	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI3uiv.xhtml>
38326	fn glVertexAttribI3uiv(&self, index: GLuint, v: *const GLuint) -> Result<()>;
38327
38328	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4uiv.xhtml>
38329	fn glVertexAttribI4uiv(&self, index: GLuint, v: *const GLuint) -> Result<()>;
38330
38331	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4bv.xhtml>
38332	fn glVertexAttribI4bv(&self, index: GLuint, v: *const GLbyte) -> Result<()>;
38333
38334	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4sv.xhtml>
38335	fn glVertexAttribI4sv(&self, index: GLuint, v: *const GLshort) -> Result<()>;
38336
38337	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4ubv.xhtml>
38338	fn glVertexAttribI4ubv(&self, index: GLuint, v: *const GLubyte) -> Result<()>;
38339
38340	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribI4usv.xhtml>
38341	fn glVertexAttribI4usv(&self, index: GLuint, v: *const GLushort) -> Result<()>;
38342
38343	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformuiv.xhtml>
38344	fn glGetUniformuiv(&self, program: GLuint, location: GLint, params: *mut GLuint) -> Result<()>;
38345
38346	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindFragDataLocation.xhtml>
38347	fn glBindFragDataLocation(&self, program: GLuint, color: GLuint, name: *const GLchar) -> Result<()>;
38348
38349	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFragDataLocation.xhtml>
38350	fn glGetFragDataLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint>;
38351
38352	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1ui.xhtml>
38353	fn glUniform1ui(&self, location: GLint, v0: GLuint) -> Result<()>;
38354
38355	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2ui.xhtml>
38356	fn glUniform2ui(&self, location: GLint, v0: GLuint, v1: GLuint) -> Result<()>;
38357
38358	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3ui.xhtml>
38359	fn glUniform3ui(&self, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint) -> Result<()>;
38360
38361	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4ui.xhtml>
38362	fn glUniform4ui(&self, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint, v3: GLuint) -> Result<()>;
38363
38364	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1uiv.xhtml>
38365	fn glUniform1uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
38366
38367	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2uiv.xhtml>
38368	fn glUniform2uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
38369
38370	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3uiv.xhtml>
38371	fn glUniform3uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
38372
38373	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4uiv.xhtml>
38374	fn glUniform4uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
38375
38376	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameterIiv.xhtml>
38377	fn glTexParameterIiv(&self, target: GLenum, pname: GLenum, params: *const GLint) -> Result<()>;
38378
38379	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameterIuiv.xhtml>
38380	fn glTexParameterIuiv(&self, target: GLenum, pname: GLenum, params: *const GLuint) -> Result<()>;
38381
38382	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexParameterIiv.xhtml>
38383	fn glGetTexParameterIiv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
38384
38385	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTexParameterIuiv.xhtml>
38386	fn glGetTexParameterIuiv(&self, target: GLenum, pname: GLenum, params: *mut GLuint) -> Result<()>;
38387
38388	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferiv.xhtml>
38389	fn glClearBufferiv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLint) -> Result<()>;
38390
38391	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferuiv.xhtml>
38392	fn glClearBufferuiv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLuint) -> Result<()>;
38393
38394	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferfv.xhtml>
38395	fn glClearBufferfv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLfloat) -> Result<()>;
38396
38397	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferfi.xhtml>
38398	fn glClearBufferfi(&self, buffer: GLenum, drawbuffer: GLint, depth: GLfloat, stencil: GLint) -> Result<()>;
38399
38400	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetStringi.xhtml>
38401	fn glGetStringi(&self, name: GLenum, index: GLuint) -> Result<&'static str>;
38402
38403	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsRenderbuffer.xhtml>
38404	fn glIsRenderbuffer(&self, renderbuffer: GLuint) -> Result<GLboolean>;
38405
38406	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindRenderbuffer.xhtml>
38407	fn glBindRenderbuffer(&self, target: GLenum, renderbuffer: GLuint) -> Result<()>;
38408
38409	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteRenderbuffers.xhtml>
38410	fn glDeleteRenderbuffers(&self, n: GLsizei, renderbuffers: *const GLuint) -> Result<()>;
38411
38412	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenRenderbuffers.xhtml>
38413	fn glGenRenderbuffers(&self, n: GLsizei, renderbuffers: *mut GLuint) -> Result<()>;
38414
38415	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glRenderbufferStorage.xhtml>
38416	fn glRenderbufferStorage(&self, target: GLenum, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()>;
38417
38418	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetRenderbufferParameteriv.xhtml>
38419	fn glGetRenderbufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
38420
38421	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsFramebuffer.xhtml>
38422	fn glIsFramebuffer(&self, framebuffer: GLuint) -> Result<GLboolean>;
38423
38424	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindFramebuffer.xhtml>
38425	fn glBindFramebuffer(&self, target: GLenum, framebuffer: GLuint) -> Result<()>;
38426
38427	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteFramebuffers.xhtml>
38428	fn glDeleteFramebuffers(&self, n: GLsizei, framebuffers: *const GLuint) -> Result<()>;
38429
38430	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenFramebuffers.xhtml>
38431	fn glGenFramebuffers(&self, n: GLsizei, framebuffers: *mut GLuint) -> Result<()>;
38432
38433	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCheckFramebufferStatus.xhtml>
38434	fn glCheckFramebufferStatus(&self, target: GLenum) -> Result<GLenum>;
38435
38436	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferTexture1D.xhtml>
38437	fn glFramebufferTexture1D(&self, target: GLenum, attachment: GLenum, textarget: GLenum, texture: GLuint, level: GLint) -> Result<()>;
38438
38439	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferTexture2D.xhtml>
38440	fn glFramebufferTexture2D(&self, target: GLenum, attachment: GLenum, textarget: GLenum, texture: GLuint, level: GLint) -> Result<()>;
38441
38442	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferTexture3D.xhtml>
38443	fn glFramebufferTexture3D(&self, target: GLenum, attachment: GLenum, textarget: GLenum, texture: GLuint, level: GLint, zoffset: GLint) -> Result<()>;
38444
38445	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferRenderbuffer.xhtml>
38446	fn glFramebufferRenderbuffer(&self, target: GLenum, attachment: GLenum, renderbuffertarget: GLenum, renderbuffer: GLuint) -> Result<()>;
38447
38448	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFramebufferAttachmentParameteriv.xhtml>
38449	fn glGetFramebufferAttachmentParameteriv(&self, target: GLenum, attachment: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
38450
38451	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenerateMipmap.xhtml>
38452	fn glGenerateMipmap(&self, target: GLenum) -> Result<()>;
38453
38454	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlitFramebuffer.xhtml>
38455	fn glBlitFramebuffer(&self, srcX0: GLint, srcY0: GLint, srcX1: GLint, srcY1: GLint, dstX0: GLint, dstY0: GLint, dstX1: GLint, dstY1: GLint, mask: GLbitfield, filter: GLenum) -> Result<()>;
38456
38457	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glRenderbufferStorageMultisample.xhtml>
38458	fn glRenderbufferStorageMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()>;
38459
38460	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferTextureLayer.xhtml>
38461	fn glFramebufferTextureLayer(&self, target: GLenum, attachment: GLenum, texture: GLuint, level: GLint, layer: GLint) -> Result<()>;
38462
38463	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMapBufferRange.xhtml>
38464	fn glMapBufferRange(&self, target: GLenum, offset: GLintptr, length: GLsizeiptr, access: GLbitfield) -> Result<*mut c_void>;
38465
38466	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFlushMappedBufferRange.xhtml>
38467	fn glFlushMappedBufferRange(&self, target: GLenum, offset: GLintptr, length: GLsizeiptr) -> Result<()>;
38468
38469	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindVertexArray.xhtml>
38470	fn glBindVertexArray(&self, array: GLuint) -> Result<()>;
38471
38472	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteVertexArrays.xhtml>
38473	fn glDeleteVertexArrays(&self, n: GLsizei, arrays: *const GLuint) -> Result<()>;
38474
38475	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenVertexArrays.xhtml>
38476	fn glGenVertexArrays(&self, n: GLsizei, arrays: *mut GLuint) -> Result<()>;
38477
38478	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsVertexArray.xhtml>
38479	fn glIsVertexArray(&self, array: GLuint) -> Result<GLboolean>;
38480}
38481
38482	/// Functions from OpenGL version 3.1 for the struct `GLCore` without dupliacted functions.
38483pub trait GL_3_1_g {
38484
38485	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawArraysInstanced.xhtml>
38486	fn glDrawArraysInstanced(&self, mode: GLenum, first: GLint, count: GLsizei, instancecount: GLsizei) -> Result<()>;
38487
38488	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsInstanced.xhtml>
38489	fn glDrawElementsInstanced(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei) -> Result<()>;
38490
38491	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexBuffer.xhtml>
38492	fn glTexBuffer(&self, target: GLenum, internalformat: GLenum, buffer: GLuint) -> Result<()>;
38493
38494	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPrimitiveRestartIndex.xhtml>
38495	fn glPrimitiveRestartIndex(&self, index: GLuint) -> Result<()>;
38496
38497	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyBufferSubData.xhtml>
38498	fn glCopyBufferSubData(&self, readTarget: GLenum, writeTarget: GLenum, readOffset: GLintptr, writeOffset: GLintptr, size: GLsizeiptr) -> Result<()>;
38499
38500	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformIndices.xhtml>
38501	fn glGetUniformIndices(&self, program: GLuint, uniformCount: GLsizei, uniformNames: *const *const GLchar, uniformIndices: *mut GLuint) -> Result<()>;
38502
38503	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveUniformsiv.xhtml>
38504	fn glGetActiveUniformsiv(&self, program: GLuint, uniformCount: GLsizei, uniformIndices: *const GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
38505
38506	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveUniformName.xhtml>
38507	fn glGetActiveUniformName(&self, program: GLuint, uniformIndex: GLuint, bufSize: GLsizei, length: *mut GLsizei, uniformName: *mut GLchar) -> Result<()>;
38508
38509	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformBlockIndex.xhtml>
38510	fn glGetUniformBlockIndex(&self, program: GLuint, uniformBlockName: *const GLchar) -> Result<GLuint>;
38511
38512	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveUniformBlockiv.xhtml>
38513	fn glGetActiveUniformBlockiv(&self, program: GLuint, uniformBlockIndex: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
38514
38515	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveUniformBlockName.xhtml>
38516	fn glGetActiveUniformBlockName(&self, program: GLuint, uniformBlockIndex: GLuint, bufSize: GLsizei, length: *mut GLsizei, uniformBlockName: *mut GLchar) -> Result<()>;
38517
38518	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformBlockBinding.xhtml>
38519	fn glUniformBlockBinding(&self, program: GLuint, uniformBlockIndex: GLuint, uniformBlockBinding: GLuint) -> Result<()>;
38520}
38521
38522	/// Functions from OpenGL version 3.2 for the struct `GLCore` without dupliacted functions.
38523pub trait GL_3_2_g {
38524
38525	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsBaseVertex.xhtml>
38526	fn glDrawElementsBaseVertex(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, basevertex: GLint) -> Result<()>;
38527
38528	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawRangeElementsBaseVertex.xhtml>
38529	fn glDrawRangeElementsBaseVertex(&self, mode: GLenum, start: GLuint, end: GLuint, count: GLsizei, type_: GLenum, indices: *const c_void, basevertex: GLint) -> Result<()>;
38530
38531	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsInstancedBaseVertex.xhtml>
38532	fn glDrawElementsInstancedBaseVertex(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei, basevertex: GLint) -> Result<()>;
38533
38534	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawElementsBaseVertex.xhtml>
38535	fn glMultiDrawElementsBaseVertex(&self, mode: GLenum, count: *const GLsizei, type_: GLenum, indices: *const *const c_void, drawcount: GLsizei, basevertex: *const GLint) -> Result<()>;
38536
38537	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProvokingVertex.xhtml>
38538	fn glProvokingVertex(&self, mode: GLenum) -> Result<()>;
38539
38540	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFenceSync.xhtml>
38541	fn glFenceSync(&self, condition: GLenum, flags: GLbitfield) -> Result<GLsync>;
38542
38543	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsSync.xhtml>
38544	fn glIsSync(&self, sync: GLsync) -> Result<GLboolean>;
38545
38546	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteSync.xhtml>
38547	fn glDeleteSync(&self, sync: GLsync) -> Result<()>;
38548
38549	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClientWaitSync.xhtml>
38550	fn glClientWaitSync(&self, sync: GLsync, flags: GLbitfield, timeout: GLuint64) -> Result<GLenum>;
38551
38552	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glWaitSync.xhtml>
38553	fn glWaitSync(&self, sync: GLsync, flags: GLbitfield, timeout: GLuint64) -> Result<()>;
38554
38555	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetInteger64v.xhtml>
38556	fn glGetInteger64v(&self, pname: GLenum, data: *mut GLint64) -> Result<()>;
38557
38558	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSynciv.xhtml>
38559	fn glGetSynciv(&self, sync: GLsync, pname: GLenum, count: GLsizei, length: *mut GLsizei, values: *mut GLint) -> Result<()>;
38560
38561	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetInteger64i_v.xhtml>
38562	fn glGetInteger64i_v(&self, target: GLenum, index: GLuint, data: *mut GLint64) -> Result<()>;
38563
38564	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetBufferParameteri64v.xhtml>
38565	fn glGetBufferParameteri64v(&self, target: GLenum, pname: GLenum, params: *mut GLint64) -> Result<()>;
38566
38567	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferTexture.xhtml>
38568	fn glFramebufferTexture(&self, target: GLenum, attachment: GLenum, texture: GLuint, level: GLint) -> Result<()>;
38569
38570	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexImage2DMultisample.xhtml>
38571	fn glTexImage2DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, fixedsamplelocations: GLboolean) -> Result<()>;
38572
38573	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexImage3DMultisample.xhtml>
38574	fn glTexImage3DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, fixedsamplelocations: GLboolean) -> Result<()>;
38575
38576	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetMultisamplefv.xhtml>
38577	fn glGetMultisamplefv(&self, pname: GLenum, index: GLuint, val: *mut GLfloat) -> Result<()>;
38578
38579	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSampleMaski.xhtml>
38580	fn glSampleMaski(&self, maskNumber: GLuint, mask: GLbitfield) -> Result<()>;
38581}
38582
38583	/// Functions from OpenGL version 3.3 for the struct `GLCore` without dupliacted functions.
38584pub trait GL_3_3_g {
38585
38586	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindFragDataLocationIndexed.xhtml>
38587	fn glBindFragDataLocationIndexed(&self, program: GLuint, colorNumber: GLuint, index: GLuint, name: *const GLchar) -> Result<()>;
38588
38589	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFragDataIndex.xhtml>
38590	fn glGetFragDataIndex(&self, program: GLuint, name: *const GLchar) -> Result<GLint>;
38591
38592	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenSamplers.xhtml>
38593	fn glGenSamplers(&self, count: GLsizei, samplers: *mut GLuint) -> Result<()>;
38594
38595	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteSamplers.xhtml>
38596	fn glDeleteSamplers(&self, count: GLsizei, samplers: *const GLuint) -> Result<()>;
38597
38598	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsSampler.xhtml>
38599	fn glIsSampler(&self, sampler: GLuint) -> Result<GLboolean>;
38600
38601	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindSampler.xhtml>
38602	fn glBindSampler(&self, unit: GLuint, sampler: GLuint) -> Result<()>;
38603
38604	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameteri.xhtml>
38605	fn glSamplerParameteri(&self, sampler: GLuint, pname: GLenum, param: GLint) -> Result<()>;
38606
38607	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameteriv.xhtml>
38608	fn glSamplerParameteriv(&self, sampler: GLuint, pname: GLenum, param: *const GLint) -> Result<()>;
38609
38610	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameterf.xhtml>
38611	fn glSamplerParameterf(&self, sampler: GLuint, pname: GLenum, param: GLfloat) -> Result<()>;
38612
38613	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameterfv.xhtml>
38614	fn glSamplerParameterfv(&self, sampler: GLuint, pname: GLenum, param: *const GLfloat) -> Result<()>;
38615
38616	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameterIiv.xhtml>
38617	fn glSamplerParameterIiv(&self, sampler: GLuint, pname: GLenum, param: *const GLint) -> Result<()>;
38618
38619	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameterIuiv.xhtml>
38620	fn glSamplerParameterIuiv(&self, sampler: GLuint, pname: GLenum, param: *const GLuint) -> Result<()>;
38621
38622	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSamplerParameteriv.xhtml>
38623	fn glGetSamplerParameteriv(&self, sampler: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
38624
38625	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSamplerParameterIiv.xhtml>
38626	fn glGetSamplerParameterIiv(&self, sampler: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
38627
38628	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSamplerParameterfv.xhtml>
38629	fn glGetSamplerParameterfv(&self, sampler: GLuint, pname: GLenum, params: *mut GLfloat) -> Result<()>;
38630
38631	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSamplerParameterIuiv.xhtml>
38632	fn glGetSamplerParameterIuiv(&self, sampler: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()>;
38633
38634	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glQueryCounter.xhtml>
38635	fn glQueryCounter(&self, id: GLuint, target: GLenum) -> Result<()>;
38636
38637	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryObjecti64v.xhtml>
38638	fn glGetQueryObjecti64v(&self, id: GLuint, pname: GLenum, params: *mut GLint64) -> Result<()>;
38639
38640	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryObjectui64v.xhtml>
38641	fn glGetQueryObjectui64v(&self, id: GLuint, pname: GLenum, params: *mut GLuint64) -> Result<()>;
38642
38643	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribDivisor.xhtml>
38644	fn glVertexAttribDivisor(&self, index: GLuint, divisor: GLuint) -> Result<()>;
38645
38646	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP1ui.xhtml>
38647	fn glVertexAttribP1ui(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint) -> Result<()>;
38648
38649	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP1uiv.xhtml>
38650	fn glVertexAttribP1uiv(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint) -> Result<()>;
38651
38652	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP2ui.xhtml>
38653	fn glVertexAttribP2ui(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint) -> Result<()>;
38654
38655	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP2uiv.xhtml>
38656	fn glVertexAttribP2uiv(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint) -> Result<()>;
38657
38658	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP3ui.xhtml>
38659	fn glVertexAttribP3ui(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint) -> Result<()>;
38660
38661	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP3uiv.xhtml>
38662	fn glVertexAttribP3uiv(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint) -> Result<()>;
38663
38664	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP4ui.xhtml>
38665	fn glVertexAttribP4ui(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint) -> Result<()>;
38666
38667	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribP4uiv.xhtml>
38668	fn glVertexAttribP4uiv(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint) -> Result<()>;
38669
38670	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP2ui.xhtml>
38671	fn glVertexP2ui(&self, type_: GLenum, value: GLuint) -> Result<()>;
38672
38673	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP2uiv.xhtml>
38674	fn glVertexP2uiv(&self, type_: GLenum, value: *const GLuint) -> Result<()>;
38675
38676	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP3ui.xhtml>
38677	fn glVertexP3ui(&self, type_: GLenum, value: GLuint) -> Result<()>;
38678
38679	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP3uiv.xhtml>
38680	fn glVertexP3uiv(&self, type_: GLenum, value: *const GLuint) -> Result<()>;
38681
38682	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP4ui.xhtml>
38683	fn glVertexP4ui(&self, type_: GLenum, value: GLuint) -> Result<()>;
38684
38685	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexP4uiv.xhtml>
38686	fn glVertexP4uiv(&self, type_: GLenum, value: *const GLuint) -> Result<()>;
38687
38688	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP1ui.xhtml>
38689	fn glTexCoordP1ui(&self, type_: GLenum, coords: GLuint) -> Result<()>;
38690
38691	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP1uiv.xhtml>
38692	fn glTexCoordP1uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()>;
38693
38694	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP2ui.xhtml>
38695	fn glTexCoordP2ui(&self, type_: GLenum, coords: GLuint) -> Result<()>;
38696
38697	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP2uiv.xhtml>
38698	fn glTexCoordP2uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()>;
38699
38700	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP3ui.xhtml>
38701	fn glTexCoordP3ui(&self, type_: GLenum, coords: GLuint) -> Result<()>;
38702
38703	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP3uiv.xhtml>
38704	fn glTexCoordP3uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()>;
38705
38706	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP4ui.xhtml>
38707	fn glTexCoordP4ui(&self, type_: GLenum, coords: GLuint) -> Result<()>;
38708
38709	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexCoordP4uiv.xhtml>
38710	fn glTexCoordP4uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()>;
38711
38712	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP1ui.xhtml>
38713	fn glMultiTexCoordP1ui(&self, texture: GLenum, type_: GLenum, coords: GLuint) -> Result<()>;
38714
38715	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP1uiv.xhtml>
38716	fn glMultiTexCoordP1uiv(&self, texture: GLenum, type_: GLenum, coords: *const GLuint) -> Result<()>;
38717
38718	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP2ui.xhtml>
38719	fn glMultiTexCoordP2ui(&self, texture: GLenum, type_: GLenum, coords: GLuint) -> Result<()>;
38720
38721	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP2uiv.xhtml>
38722	fn glMultiTexCoordP2uiv(&self, texture: GLenum, type_: GLenum, coords: *const GLuint) -> Result<()>;
38723
38724	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP3ui.xhtml>
38725	fn glMultiTexCoordP3ui(&self, texture: GLenum, type_: GLenum, coords: GLuint) -> Result<()>;
38726
38727	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP3uiv.xhtml>
38728	fn glMultiTexCoordP3uiv(&self, texture: GLenum, type_: GLenum, coords: *const GLuint) -> Result<()>;
38729
38730	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP4ui.xhtml>
38731	fn glMultiTexCoordP4ui(&self, texture: GLenum, type_: GLenum, coords: GLuint) -> Result<()>;
38732
38733	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiTexCoordP4uiv.xhtml>
38734	fn glMultiTexCoordP4uiv(&self, texture: GLenum, type_: GLenum, coords: *const GLuint) -> Result<()>;
38735
38736	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNormalP3ui.xhtml>
38737	fn glNormalP3ui(&self, type_: GLenum, coords: GLuint) -> Result<()>;
38738
38739	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNormalP3uiv.xhtml>
38740	fn glNormalP3uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()>;
38741
38742	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorP3ui.xhtml>
38743	fn glColorP3ui(&self, type_: GLenum, color: GLuint) -> Result<()>;
38744
38745	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorP3uiv.xhtml>
38746	fn glColorP3uiv(&self, type_: GLenum, color: *const GLuint) -> Result<()>;
38747
38748	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorP4ui.xhtml>
38749	fn glColorP4ui(&self, type_: GLenum, color: GLuint) -> Result<()>;
38750
38751	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glColorP4uiv.xhtml>
38752	fn glColorP4uiv(&self, type_: GLenum, color: *const GLuint) -> Result<()>;
38753
38754	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColorP3ui.xhtml>
38755	fn glSecondaryColorP3ui(&self, type_: GLenum, color: GLuint) -> Result<()>;
38756
38757	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSecondaryColorP3uiv.xhtml>
38758	fn glSecondaryColorP3uiv(&self, type_: GLenum, color: *const GLuint) -> Result<()>;
38759}
38760
38761	/// Functions from OpenGL version 4.0 for the struct `GLCore` without dupliacted functions.
38762pub trait GL_4_0_g {
38763
38764	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMinSampleShading.xhtml>
38765	fn glMinSampleShading(&self, value: GLfloat) -> Result<()>;
38766
38767	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendEquationi.xhtml>
38768	fn glBlendEquationi(&self, buf: GLuint, mode: GLenum) -> Result<()>;
38769
38770	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendEquationSeparatei.xhtml>
38771	fn glBlendEquationSeparatei(&self, buf: GLuint, modeRGB: GLenum, modeAlpha: GLenum) -> Result<()>;
38772
38773	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendFunci.xhtml>
38774	fn glBlendFunci(&self, buf: GLuint, src: GLenum, dst: GLenum) -> Result<()>;
38775
38776	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlendFuncSeparatei.xhtml>
38777	fn glBlendFuncSeparatei(&self, buf: GLuint, srcRGB: GLenum, dstRGB: GLenum, srcAlpha: GLenum, dstAlpha: GLenum) -> Result<()>;
38778
38779	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawArraysIndirect.xhtml>
38780	fn glDrawArraysIndirect(&self, mode: GLenum, indirect: *const c_void) -> Result<()>;
38781
38782	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsIndirect.xhtml>
38783	fn glDrawElementsIndirect(&self, mode: GLenum, type_: GLenum, indirect: *const c_void) -> Result<()>;
38784
38785	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1d.xhtml>
38786	fn glUniform1d(&self, location: GLint, x: GLdouble) -> Result<()>;
38787
38788	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2d.xhtml>
38789	fn glUniform2d(&self, location: GLint, x: GLdouble, y: GLdouble) -> Result<()>;
38790
38791	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3d.xhtml>
38792	fn glUniform3d(&self, location: GLint, x: GLdouble, y: GLdouble, z: GLdouble) -> Result<()>;
38793
38794	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4d.xhtml>
38795	fn glUniform4d(&self, location: GLint, x: GLdouble, y: GLdouble, z: GLdouble, w: GLdouble) -> Result<()>;
38796
38797	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform1dv.xhtml>
38798	fn glUniform1dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()>;
38799
38800	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform2dv.xhtml>
38801	fn glUniform2dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()>;
38802
38803	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform3dv.xhtml>
38804	fn glUniform3dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()>;
38805
38806	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniform4dv.xhtml>
38807	fn glUniform4dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()>;
38808
38809	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2dv.xhtml>
38810	fn glUniformMatrix2dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
38811
38812	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3dv.xhtml>
38813	fn glUniformMatrix3dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
38814
38815	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4dv.xhtml>
38816	fn glUniformMatrix4dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
38817
38818	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2x3dv.xhtml>
38819	fn glUniformMatrix2x3dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
38820
38821	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix2x4dv.xhtml>
38822	fn glUniformMatrix2x4dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
38823
38824	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3x2dv.xhtml>
38825	fn glUniformMatrix3x2dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
38826
38827	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix3x4dv.xhtml>
38828	fn glUniformMatrix3x4dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
38829
38830	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4x2dv.xhtml>
38831	fn glUniformMatrix4x2dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
38832
38833	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformMatrix4x3dv.xhtml>
38834	fn glUniformMatrix4x3dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
38835
38836	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformdv.xhtml>
38837	fn glGetUniformdv(&self, program: GLuint, location: GLint, params: *mut GLdouble) -> Result<()>;
38838
38839	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSubroutineUniformLocation.xhtml>
38840	fn glGetSubroutineUniformLocation(&self, program: GLuint, shadertype: GLenum, name: *const GLchar) -> Result<GLint>;
38841
38842	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetSubroutineIndex.xhtml>
38843	fn glGetSubroutineIndex(&self, program: GLuint, shadertype: GLenum, name: *const GLchar) -> Result<GLuint>;
38844
38845	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveSubroutineUniformiv.xhtml>
38846	fn glGetActiveSubroutineUniformiv(&self, program: GLuint, shadertype: GLenum, index: GLuint, pname: GLenum, values: *mut GLint) -> Result<()>;
38847
38848	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveSubroutineUniformName.xhtml>
38849	fn glGetActiveSubroutineUniformName(&self, program: GLuint, shadertype: GLenum, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, name: *mut GLchar) -> Result<()>;
38850
38851	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveSubroutineName.xhtml>
38852	fn glGetActiveSubroutineName(&self, program: GLuint, shadertype: GLenum, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, name: *mut GLchar) -> Result<()>;
38853
38854	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUniformSubroutinesuiv.xhtml>
38855	fn glUniformSubroutinesuiv(&self, shadertype: GLenum, count: GLsizei, indices: *const GLuint) -> Result<()>;
38856
38857	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetUniformSubroutineuiv.xhtml>
38858	fn glGetUniformSubroutineuiv(&self, shadertype: GLenum, location: GLint, params: *mut GLuint) -> Result<()>;
38859
38860	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramStageiv.xhtml>
38861	fn glGetProgramStageiv(&self, program: GLuint, shadertype: GLenum, pname: GLenum, values: *mut GLint) -> Result<()>;
38862
38863	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPatchParameteri.xhtml>
38864	fn glPatchParameteri(&self, pname: GLenum, value: GLint) -> Result<()>;
38865
38866	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPatchParameterfv.xhtml>
38867	fn glPatchParameterfv(&self, pname: GLenum, values: *const GLfloat) -> Result<()>;
38868
38869	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindTransformFeedback.xhtml>
38870	fn glBindTransformFeedback(&self, target: GLenum, id: GLuint) -> Result<()>;
38871
38872	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteTransformFeedbacks.xhtml>
38873	fn glDeleteTransformFeedbacks(&self, n: GLsizei, ids: *const GLuint) -> Result<()>;
38874
38875	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenTransformFeedbacks.xhtml>
38876	fn glGenTransformFeedbacks(&self, n: GLsizei, ids: *mut GLuint) -> Result<()>;
38877
38878	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsTransformFeedback.xhtml>
38879	fn glIsTransformFeedback(&self, id: GLuint) -> Result<GLboolean>;
38880
38881	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPauseTransformFeedback.xhtml>
38882	fn glPauseTransformFeedback(&self) -> Result<()>;
38883
38884	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glResumeTransformFeedback.xhtml>
38885	fn glResumeTransformFeedback(&self) -> Result<()>;
38886
38887	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawTransformFeedback.xhtml>
38888	fn glDrawTransformFeedback(&self, mode: GLenum, id: GLuint) -> Result<()>;
38889
38890	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawTransformFeedbackStream.xhtml>
38891	fn glDrawTransformFeedbackStream(&self, mode: GLenum, id: GLuint, stream: GLuint) -> Result<()>;
38892
38893	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBeginQueryIndexed.xhtml>
38894	fn glBeginQueryIndexed(&self, target: GLenum, index: GLuint, id: GLuint) -> Result<()>;
38895
38896	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEndQueryIndexed.xhtml>
38897	fn glEndQueryIndexed(&self, target: GLenum, index: GLuint) -> Result<()>;
38898
38899	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryIndexediv.xhtml>
38900	fn glGetQueryIndexediv(&self, target: GLenum, index: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
38901}
38902
38903	/// Functions from OpenGL version 4.1 for the struct `GLCore` without dupliacted functions.
38904pub trait GL_4_1_g {
38905
38906	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glReleaseShaderCompiler.xhtml>
38907	fn glReleaseShaderCompiler(&self) -> Result<()>;
38908
38909	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glShaderBinary.xhtml>
38910	fn glShaderBinary(&self, count: GLsizei, shaders: *const GLuint, binaryFormat: GLenum, binary: *const c_void, length: GLsizei) -> Result<()>;
38911
38912	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetShaderPrecisionFormat.xhtml>
38913	fn glGetShaderPrecisionFormat(&self, shadertype: GLenum, precisiontype: GLenum, range: *mut GLint, precision: *mut GLint) -> Result<()>;
38914
38915	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthRangef.xhtml>
38916	fn glDepthRangef(&self, n: GLfloat, f: GLfloat) -> Result<()>;
38917
38918	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearDepthf.xhtml>
38919	fn glClearDepthf(&self, d: GLfloat) -> Result<()>;
38920
38921	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramBinary.xhtml>
38922	fn glGetProgramBinary(&self, program: GLuint, bufSize: GLsizei, length: *mut GLsizei, binaryFormat: *mut GLenum, binary: *mut c_void) -> Result<()>;
38923
38924	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramBinary.xhtml>
38925	fn glProgramBinary(&self, program: GLuint, binaryFormat: GLenum, binary: *const c_void, length: GLsizei) -> Result<()>;
38926
38927	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramParameteri.xhtml>
38928	fn glProgramParameteri(&self, program: GLuint, pname: GLenum, value: GLint) -> Result<()>;
38929
38930	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUseProgramStages.xhtml>
38931	fn glUseProgramStages(&self, pipeline: GLuint, stages: GLbitfield, program: GLuint) -> Result<()>;
38932
38933	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glActiveShaderProgram.xhtml>
38934	fn glActiveShaderProgram(&self, pipeline: GLuint, program: GLuint) -> Result<()>;
38935
38936	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateShaderProgramv.xhtml>
38937	fn glCreateShaderProgramv(&self, type_: GLenum, count: GLsizei, strings: *const *const GLchar) -> Result<GLuint>;
38938
38939	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindProgramPipeline.xhtml>
38940	fn glBindProgramPipeline(&self, pipeline: GLuint) -> Result<()>;
38941
38942	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDeleteProgramPipelines.xhtml>
38943	fn glDeleteProgramPipelines(&self, n: GLsizei, pipelines: *const GLuint) -> Result<()>;
38944
38945	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenProgramPipelines.xhtml>
38946	fn glGenProgramPipelines(&self, n: GLsizei, pipelines: *mut GLuint) -> Result<()>;
38947
38948	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glIsProgramPipeline.xhtml>
38949	fn glIsProgramPipeline(&self, pipeline: GLuint) -> Result<GLboolean>;
38950
38951	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramPipelineiv.xhtml>
38952	fn glGetProgramPipelineiv(&self, pipeline: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
38953
38954	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1i.xhtml>
38955	fn glProgramUniform1i(&self, program: GLuint, location: GLint, v0: GLint) -> Result<()>;
38956
38957	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1iv.xhtml>
38958	fn glProgramUniform1iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
38959
38960	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1f.xhtml>
38961	fn glProgramUniform1f(&self, program: GLuint, location: GLint, v0: GLfloat) -> Result<()>;
38962
38963	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1fv.xhtml>
38964	fn glProgramUniform1fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
38965
38966	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1d.xhtml>
38967	fn glProgramUniform1d(&self, program: GLuint, location: GLint, v0: GLdouble) -> Result<()>;
38968
38969	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1dv.xhtml>
38970	fn glProgramUniform1dv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()>;
38971
38972	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1ui.xhtml>
38973	fn glProgramUniform1ui(&self, program: GLuint, location: GLint, v0: GLuint) -> Result<()>;
38974
38975	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform1uiv.xhtml>
38976	fn glProgramUniform1uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
38977
38978	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2i.xhtml>
38979	fn glProgramUniform2i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint) -> Result<()>;
38980
38981	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2iv.xhtml>
38982	fn glProgramUniform2iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
38983
38984	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2f.xhtml>
38985	fn glProgramUniform2f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat) -> Result<()>;
38986
38987	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2fv.xhtml>
38988	fn glProgramUniform2fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
38989
38990	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2d.xhtml>
38991	fn glProgramUniform2d(&self, program: GLuint, location: GLint, v0: GLdouble, v1: GLdouble) -> Result<()>;
38992
38993	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2dv.xhtml>
38994	fn glProgramUniform2dv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()>;
38995
38996	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2ui.xhtml>
38997	fn glProgramUniform2ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint) -> Result<()>;
38998
38999	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform2uiv.xhtml>
39000	fn glProgramUniform2uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
39001
39002	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3i.xhtml>
39003	fn glProgramUniform3i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint, v2: GLint) -> Result<()>;
39004
39005	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3iv.xhtml>
39006	fn glProgramUniform3iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
39007
39008	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3f.xhtml>
39009	fn glProgramUniform3f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat) -> Result<()>;
39010
39011	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3fv.xhtml>
39012	fn glProgramUniform3fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
39013
39014	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3d.xhtml>
39015	fn glProgramUniform3d(&self, program: GLuint, location: GLint, v0: GLdouble, v1: GLdouble, v2: GLdouble) -> Result<()>;
39016
39017	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3dv.xhtml>
39018	fn glProgramUniform3dv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()>;
39019
39020	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3ui.xhtml>
39021	fn glProgramUniform3ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint) -> Result<()>;
39022
39023	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform3uiv.xhtml>
39024	fn glProgramUniform3uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
39025
39026	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4i.xhtml>
39027	fn glProgramUniform4i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint, v2: GLint, v3: GLint) -> Result<()>;
39028
39029	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4iv.xhtml>
39030	fn glProgramUniform4iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()>;
39031
39032	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4f.xhtml>
39033	fn glProgramUniform4f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat, v3: GLfloat) -> Result<()>;
39034
39035	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4fv.xhtml>
39036	fn glProgramUniform4fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()>;
39037
39038	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4d.xhtml>
39039	fn glProgramUniform4d(&self, program: GLuint, location: GLint, v0: GLdouble, v1: GLdouble, v2: GLdouble, v3: GLdouble) -> Result<()>;
39040
39041	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4dv.xhtml>
39042	fn glProgramUniform4dv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()>;
39043
39044	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4ui.xhtml>
39045	fn glProgramUniform4ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint, v3: GLuint) -> Result<()>;
39046
39047	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniform4uiv.xhtml>
39048	fn glProgramUniform4uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()>;
39049
39050	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2fv.xhtml>
39051	fn glProgramUniformMatrix2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
39052
39053	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3fv.xhtml>
39054	fn glProgramUniformMatrix3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
39055
39056	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4fv.xhtml>
39057	fn glProgramUniformMatrix4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
39058
39059	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2dv.xhtml>
39060	fn glProgramUniformMatrix2dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
39061
39062	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3dv.xhtml>
39063	fn glProgramUniformMatrix3dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
39064
39065	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4dv.xhtml>
39066	fn glProgramUniformMatrix4dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
39067
39068	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2x3fv.xhtml>
39069	fn glProgramUniformMatrix2x3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
39070
39071	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3x2fv.xhtml>
39072	fn glProgramUniformMatrix3x2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
39073
39074	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2x4fv.xhtml>
39075	fn glProgramUniformMatrix2x4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
39076
39077	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4x2fv.xhtml>
39078	fn glProgramUniformMatrix4x2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
39079
39080	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3x4fv.xhtml>
39081	fn glProgramUniformMatrix3x4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
39082
39083	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4x3fv.xhtml>
39084	fn glProgramUniformMatrix4x3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()>;
39085
39086	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2x3dv.xhtml>
39087	fn glProgramUniformMatrix2x3dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
39088
39089	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3x2dv.xhtml>
39090	fn glProgramUniformMatrix3x2dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
39091
39092	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix2x4dv.xhtml>
39093	fn glProgramUniformMatrix2x4dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
39094
39095	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4x2dv.xhtml>
39096	fn glProgramUniformMatrix4x2dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
39097
39098	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix3x4dv.xhtml>
39099	fn glProgramUniformMatrix3x4dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
39100
39101	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glProgramUniformMatrix4x3dv.xhtml>
39102	fn glProgramUniformMatrix4x3dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()>;
39103
39104	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glValidateProgramPipeline.xhtml>
39105	fn glValidateProgramPipeline(&self, pipeline: GLuint) -> Result<()>;
39106
39107	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramPipelineInfoLog.xhtml>
39108	fn glGetProgramPipelineInfoLog(&self, pipeline: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()>;
39109
39110	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL1d.xhtml>
39111	fn glVertexAttribL1d(&self, index: GLuint, x: GLdouble) -> Result<()>;
39112
39113	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL2d.xhtml>
39114	fn glVertexAttribL2d(&self, index: GLuint, x: GLdouble, y: GLdouble) -> Result<()>;
39115
39116	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL3d.xhtml>
39117	fn glVertexAttribL3d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble) -> Result<()>;
39118
39119	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL4d.xhtml>
39120	fn glVertexAttribL4d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble, w: GLdouble) -> Result<()>;
39121
39122	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL1dv.xhtml>
39123	fn glVertexAttribL1dv(&self, index: GLuint, v: *const GLdouble) -> Result<()>;
39124
39125	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL2dv.xhtml>
39126	fn glVertexAttribL2dv(&self, index: GLuint, v: *const GLdouble) -> Result<()>;
39127
39128	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL3dv.xhtml>
39129	fn glVertexAttribL3dv(&self, index: GLuint, v: *const GLdouble) -> Result<()>;
39130
39131	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribL4dv.xhtml>
39132	fn glVertexAttribL4dv(&self, index: GLuint, v: *const GLdouble) -> Result<()>;
39133
39134	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribLPointer.xhtml>
39135	fn glVertexAttribLPointer(&self, index: GLuint, size: GLint, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()>;
39136
39137	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexAttribLdv.xhtml>
39138	fn glGetVertexAttribLdv(&self, index: GLuint, pname: GLenum, params: *mut GLdouble) -> Result<()>;
39139
39140	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glViewportArrayv.xhtml>
39141	fn glViewportArrayv(&self, first: GLuint, count: GLsizei, v: *const GLfloat) -> Result<()>;
39142
39143	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glViewportIndexedf.xhtml>
39144	fn glViewportIndexedf(&self, index: GLuint, x: GLfloat, y: GLfloat, w: GLfloat, h: GLfloat) -> Result<()>;
39145
39146	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glViewportIndexedfv.xhtml>
39147	fn glViewportIndexedfv(&self, index: GLuint, v: *const GLfloat) -> Result<()>;
39148
39149	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glScissorArrayv.xhtml>
39150	fn glScissorArrayv(&self, first: GLuint, count: GLsizei, v: *const GLint) -> Result<()>;
39151
39152	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glScissorIndexed.xhtml>
39153	fn glScissorIndexed(&self, index: GLuint, left: GLint, bottom: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
39154
39155	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glScissorIndexedv.xhtml>
39156	fn glScissorIndexedv(&self, index: GLuint, v: *const GLint) -> Result<()>;
39157
39158	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthRangeArrayv.xhtml>
39159	fn glDepthRangeArrayv(&self, first: GLuint, count: GLsizei, v: *const GLdouble) -> Result<()>;
39160
39161	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthRangeIndexed.xhtml>
39162	fn glDepthRangeIndexed(&self, index: GLuint, n: GLdouble, f: GLdouble) -> Result<()>;
39163
39164	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFloati_v.xhtml>
39165	fn glGetFloati_v(&self, target: GLenum, index: GLuint, data: *mut GLfloat) -> Result<()>;
39166
39167	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetDoublei_v.xhtml>
39168	fn glGetDoublei_v(&self, target: GLenum, index: GLuint, data: *mut GLdouble) -> Result<()>;
39169}
39170
39171	/// Functions from OpenGL version 4.2 for the struct `GLCore` without dupliacted functions.
39172pub trait GL_4_2_g {
39173
39174	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawArraysInstancedBaseInstance.xhtml>
39175	fn glDrawArraysInstancedBaseInstance(&self, mode: GLenum, first: GLint, count: GLsizei, instancecount: GLsizei, baseinstance: GLuint) -> Result<()>;
39176
39177	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsInstancedBaseInstance.xhtml>
39178	fn glDrawElementsInstancedBaseInstance(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei, baseinstance: GLuint) -> Result<()>;
39179
39180	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawElementsInstancedBaseVertexBaseInstance.xhtml>
39181	fn glDrawElementsInstancedBaseVertexBaseInstance(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei, basevertex: GLint, baseinstance: GLuint) -> Result<()>;
39182
39183	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetInternalformativ.xhtml>
39184	fn glGetInternalformativ(&self, target: GLenum, internalformat: GLenum, pname: GLenum, count: GLsizei, params: *mut GLint) -> Result<()>;
39185
39186	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetActiveAtomicCounterBufferiv.xhtml>
39187	fn glGetActiveAtomicCounterBufferiv(&self, program: GLuint, bufferIndex: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
39188
39189	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindImageTexture.xhtml>
39190	fn glBindImageTexture(&self, unit: GLuint, texture: GLuint, level: GLint, layered: GLboolean, layer: GLint, access: GLenum, format: GLenum) -> Result<()>;
39191
39192	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMemoryBarrier.xhtml>
39193	fn glMemoryBarrier(&self, barriers: GLbitfield) -> Result<()>;
39194
39195	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexStorage1D.xhtml>
39196	fn glTexStorage1D(&self, target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei) -> Result<()>;
39197
39198	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexStorage2D.xhtml>
39199	fn glTexStorage2D(&self, target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()>;
39200
39201	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexStorage3D.xhtml>
39202	fn glTexStorage3D(&self, target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei) -> Result<()>;
39203
39204	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawTransformFeedbackInstanced.xhtml>
39205	fn glDrawTransformFeedbackInstanced(&self, mode: GLenum, id: GLuint, instancecount: GLsizei) -> Result<()>;
39206
39207	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDrawTransformFeedbackStreamInstanced.xhtml>
39208	fn glDrawTransformFeedbackStreamInstanced(&self, mode: GLenum, id: GLuint, stream: GLuint, instancecount: GLsizei) -> Result<()>;
39209}
39210
39211	/// Functions from OpenGL version 4.3 for the struct `GLCore` without dupliacted functions.
39212pub trait GL_4_3_g {
39213
39214	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferData.xhtml>
39215	fn glClearBufferData(&self, target: GLenum, internalformat: GLenum, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()>;
39216
39217	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearBufferSubData.xhtml>
39218	fn glClearBufferSubData(&self, target: GLenum, internalformat: GLenum, offset: GLintptr, size: GLsizeiptr, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()>;
39219
39220	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDispatchCompute.xhtml>
39221	fn glDispatchCompute(&self, num_groups_x: GLuint, num_groups_y: GLuint, num_groups_z: GLuint) -> Result<()>;
39222
39223	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDispatchComputeIndirect.xhtml>
39224	fn glDispatchComputeIndirect(&self, indirect: GLintptr) -> Result<()>;
39225
39226	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyImageSubData.xhtml>
39227	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<()>;
39228
39229	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFramebufferParameteri.xhtml>
39230	fn glFramebufferParameteri(&self, target: GLenum, pname: GLenum, param: GLint) -> Result<()>;
39231
39232	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetFramebufferParameteriv.xhtml>
39233	fn glGetFramebufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
39234
39235	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetInternalformati64v.xhtml>
39236	fn glGetInternalformati64v(&self, target: GLenum, internalformat: GLenum, pname: GLenum, count: GLsizei, params: *mut GLint64) -> Result<()>;
39237
39238	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateTexSubImage.xhtml>
39239	fn glInvalidateTexSubImage(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei) -> Result<()>;
39240
39241	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateTexImage.xhtml>
39242	fn glInvalidateTexImage(&self, texture: GLuint, level: GLint) -> Result<()>;
39243
39244	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateBufferSubData.xhtml>
39245	fn glInvalidateBufferSubData(&self, buffer: GLuint, offset: GLintptr, length: GLsizeiptr) -> Result<()>;
39246
39247	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateBufferData.xhtml>
39248	fn glInvalidateBufferData(&self, buffer: GLuint) -> Result<()>;
39249
39250	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateFramebuffer.xhtml>
39251	fn glInvalidateFramebuffer(&self, target: GLenum, numAttachments: GLsizei, attachments: *const GLenum) -> Result<()>;
39252
39253	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateSubFramebuffer.xhtml>
39254	fn glInvalidateSubFramebuffer(&self, target: GLenum, numAttachments: GLsizei, attachments: *const GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
39255
39256	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawArraysIndirect.xhtml>
39257	fn glMultiDrawArraysIndirect(&self, mode: GLenum, indirect: *const c_void, drawcount: GLsizei, stride: GLsizei) -> Result<()>;
39258
39259	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawElementsIndirect.xhtml>
39260	fn glMultiDrawElementsIndirect(&self, mode: GLenum, type_: GLenum, indirect: *const c_void, drawcount: GLsizei, stride: GLsizei) -> Result<()>;
39261
39262	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramInterfaceiv.xhtml>
39263	fn glGetProgramInterfaceiv(&self, program: GLuint, programInterface: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
39264
39265	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramResourceIndex.xhtml>
39266	fn glGetProgramResourceIndex(&self, program: GLuint, programInterface: GLenum, name: *const GLchar) -> Result<GLuint>;
39267
39268	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramResourceName.xhtml>
39269	fn glGetProgramResourceName(&self, program: GLuint, programInterface: GLenum, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, name: *mut GLchar) -> Result<()>;
39270
39271	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramResourceiv.xhtml>
39272	fn glGetProgramResourceiv(&self, program: GLuint, programInterface: GLenum, index: GLuint, propCount: GLsizei, props: *const GLenum, count: GLsizei, length: *mut GLsizei, params: *mut GLint) -> Result<()>;
39273
39274	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramResourceLocation.xhtml>
39275	fn glGetProgramResourceLocation(&self, program: GLuint, programInterface: GLenum, name: *const GLchar) -> Result<GLint>;
39276
39277	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetProgramResourceLocationIndex.xhtml>
39278	fn glGetProgramResourceLocationIndex(&self, program: GLuint, programInterface: GLenum, name: *const GLchar) -> Result<GLint>;
39279
39280	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glShaderStorageBlockBinding.xhtml>
39281	fn glShaderStorageBlockBinding(&self, program: GLuint, storageBlockIndex: GLuint, storageBlockBinding: GLuint) -> Result<()>;
39282
39283	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexBufferRange.xhtml>
39284	fn glTexBufferRange(&self, target: GLenum, internalformat: GLenum, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()>;
39285
39286	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexStorage2DMultisample.xhtml>
39287	fn glTexStorage2DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, fixedsamplelocations: GLboolean) -> Result<()>;
39288
39289	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexStorage3DMultisample.xhtml>
39290	fn glTexStorage3DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, fixedsamplelocations: GLboolean) -> Result<()>;
39291
39292	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureView.xhtml>
39293	fn glTextureView(&self, texture: GLuint, target: GLenum, origtexture: GLuint, internalformat: GLenum, minlevel: GLuint, numlevels: GLuint, minlayer: GLuint, numlayers: GLuint) -> Result<()>;
39294
39295	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindVertexBuffer.xhtml>
39296	fn glBindVertexBuffer(&self, bindingindex: GLuint, buffer: GLuint, offset: GLintptr, stride: GLsizei) -> Result<()>;
39297
39298	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribFormat.xhtml>
39299	fn glVertexAttribFormat(&self, attribindex: GLuint, size: GLint, type_: GLenum, normalized: GLboolean, relativeoffset: GLuint) -> Result<()>;
39300
39301	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribIFormat.xhtml>
39302	fn glVertexAttribIFormat(&self, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()>;
39303
39304	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribLFormat.xhtml>
39305	fn glVertexAttribLFormat(&self, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()>;
39306
39307	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexAttribBinding.xhtml>
39308	fn glVertexAttribBinding(&self, attribindex: GLuint, bindingindex: GLuint) -> Result<()>;
39309
39310	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexBindingDivisor.xhtml>
39311	fn glVertexBindingDivisor(&self, bindingindex: GLuint, divisor: GLuint) -> Result<()>;
39312
39313	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDebugMessageControl.xhtml>
39314	fn glDebugMessageControl(&self, source: GLenum, type_: GLenum, severity: GLenum, count: GLsizei, ids: *const GLuint, enabled: GLboolean) -> Result<()>;
39315
39316	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDebugMessageInsert.xhtml>
39317	fn glDebugMessageInsert(&self, source: GLenum, type_: GLenum, id: GLuint, severity: GLenum, length: GLsizei, buf: *const GLchar) -> Result<()>;
39318
39319	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDebugMessageCallback.xhtml>
39320	fn glDebugMessageCallback(&self, callback: GLDEBUGPROC, userParam: *const c_void) -> Result<()>;
39321
39322	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetDebugMessageLog.xhtml>
39323	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>;
39324
39325	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPushDebugGroup.xhtml>
39326	fn glPushDebugGroup(&self, source: GLenum, id: GLuint, length: GLsizei, message: *const GLchar) -> Result<()>;
39327
39328	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPopDebugGroup.xhtml>
39329	fn glPopDebugGroup(&self) -> Result<()>;
39330
39331	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glObjectLabel.xhtml>
39332	fn glObjectLabel(&self, identifier: GLenum, name: GLuint, length: GLsizei, label: *const GLchar) -> Result<()>;
39333
39334	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetObjectLabel.xhtml>
39335	fn glGetObjectLabel(&self, identifier: GLenum, name: GLuint, bufSize: GLsizei, length: *mut GLsizei, label: *mut GLchar) -> Result<()>;
39336
39337	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glObjectPtrLabel.xhtml>
39338	fn glObjectPtrLabel(&self, ptr: *const c_void, length: GLsizei, label: *const GLchar) -> Result<()>;
39339
39340	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetObjectPtrLabel.xhtml>
39341	fn glGetObjectPtrLabel(&self, ptr: *const c_void, bufSize: GLsizei, length: *mut GLsizei, label: *mut GLchar) -> Result<()>;
39342}
39343
39344	/// Functions from OpenGL version 4.4 for the struct `GLCore` without dupliacted functions.
39345pub trait GL_4_4_g {
39346
39347	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBufferStorage.xhtml>
39348	fn glBufferStorage(&self, target: GLenum, size: GLsizeiptr, data: *const c_void, flags: GLbitfield) -> Result<()>;
39349
39350	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearTexImage.xhtml>
39351	fn glClearTexImage(&self, texture: GLuint, level: GLint, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()>;
39352
39353	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearTexSubImage.xhtml>
39354	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<()>;
39355
39356	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindBuffersBase.xhtml>
39357	fn glBindBuffersBase(&self, target: GLenum, first: GLuint, count: GLsizei, buffers: *const GLuint) -> Result<()>;
39358
39359	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindBuffersRange.xhtml>
39360	fn glBindBuffersRange(&self, target: GLenum, first: GLuint, count: GLsizei, buffers: *const GLuint, offsets: *const GLintptr, sizes: *const GLsizeiptr) -> Result<()>;
39361
39362	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindTextures.xhtml>
39363	fn glBindTextures(&self, first: GLuint, count: GLsizei, textures: *const GLuint) -> Result<()>;
39364
39365	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindSamplers.xhtml>
39366	fn glBindSamplers(&self, first: GLuint, count: GLsizei, samplers: *const GLuint) -> Result<()>;
39367
39368	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindImageTextures.xhtml>
39369	fn glBindImageTextures(&self, first: GLuint, count: GLsizei, textures: *const GLuint) -> Result<()>;
39370
39371	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindVertexBuffers.xhtml>
39372	fn glBindVertexBuffers(&self, first: GLuint, count: GLsizei, buffers: *const GLuint, offsets: *const GLintptr, strides: *const GLsizei) -> Result<()>;
39373}
39374
39375	/// Functions from OpenGL version 4.5 for the struct `GLCore` without dupliacted functions.
39376pub trait GL_4_5_g {
39377
39378	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClipControl.xhtml>
39379	fn glClipControl(&self, origin: GLenum, depth: GLenum) -> Result<()>;
39380
39381	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateTransformFeedbacks.xhtml>
39382	fn glCreateTransformFeedbacks(&self, n: GLsizei, ids: *mut GLuint) -> Result<()>;
39383
39384	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTransformFeedbackBufferBase.xhtml>
39385	fn glTransformFeedbackBufferBase(&self, xfb: GLuint, index: GLuint, buffer: GLuint) -> Result<()>;
39386
39387	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTransformFeedbackBufferRange.xhtml>
39388	fn glTransformFeedbackBufferRange(&self, xfb: GLuint, index: GLuint, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()>;
39389
39390	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTransformFeedbackiv.xhtml>
39391	fn glGetTransformFeedbackiv(&self, xfb: GLuint, pname: GLenum, param: *mut GLint) -> Result<()>;
39392
39393	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTransformFeedbacki_v.xhtml>
39394	fn glGetTransformFeedbacki_v(&self, xfb: GLuint, pname: GLenum, index: GLuint, param: *mut GLint) -> Result<()>;
39395
39396	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTransformFeedbacki64_v.xhtml>
39397	fn glGetTransformFeedbacki64_v(&self, xfb: GLuint, pname: GLenum, index: GLuint, param: *mut GLint64) -> Result<()>;
39398
39399	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateBuffers.xhtml>
39400	fn glCreateBuffers(&self, n: GLsizei, buffers: *mut GLuint) -> Result<()>;
39401
39402	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedBufferStorage.xhtml>
39403	fn glNamedBufferStorage(&self, buffer: GLuint, size: GLsizeiptr, data: *const c_void, flags: GLbitfield) -> Result<()>;
39404
39405	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedBufferData.xhtml>
39406	fn glNamedBufferData(&self, buffer: GLuint, size: GLsizeiptr, data: *const c_void, usage: GLenum) -> Result<()>;
39407
39408	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedBufferSubData.xhtml>
39409	fn glNamedBufferSubData(&self, buffer: GLuint, offset: GLintptr, size: GLsizeiptr, data: *const c_void) -> Result<()>;
39410
39411	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyNamedBufferSubData.xhtml>
39412	fn glCopyNamedBufferSubData(&self, readBuffer: GLuint, writeBuffer: GLuint, readOffset: GLintptr, writeOffset: GLintptr, size: GLsizeiptr) -> Result<()>;
39413
39414	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedBufferData.xhtml>
39415	fn glClearNamedBufferData(&self, buffer: GLuint, internalformat: GLenum, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()>;
39416
39417	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedBufferSubData.xhtml>
39418	fn glClearNamedBufferSubData(&self, buffer: GLuint, internalformat: GLenum, offset: GLintptr, size: GLsizeiptr, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()>;
39419
39420	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMapNamedBuffer.xhtml>
39421	fn glMapNamedBuffer(&self, buffer: GLuint, access: GLenum) -> Result<*mut c_void>;
39422
39423	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMapNamedBufferRange.xhtml>
39424	fn glMapNamedBufferRange(&self, buffer: GLuint, offset: GLintptr, length: GLsizeiptr, access: GLbitfield) -> Result<*mut c_void>;
39425
39426	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glUnmapNamedBuffer.xhtml>
39427	fn glUnmapNamedBuffer(&self, buffer: GLuint) -> Result<GLboolean>;
39428
39429	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glFlushMappedNamedBufferRange.xhtml>
39430	fn glFlushMappedNamedBufferRange(&self, buffer: GLuint, offset: GLintptr, length: GLsizeiptr) -> Result<()>;
39431
39432	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedBufferParameteriv.xhtml>
39433	fn glGetNamedBufferParameteriv(&self, buffer: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
39434
39435	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedBufferParameteri64v.xhtml>
39436	fn glGetNamedBufferParameteri64v(&self, buffer: GLuint, pname: GLenum, params: *mut GLint64) -> Result<()>;
39437
39438	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedBufferPointerv.xhtml>
39439	fn glGetNamedBufferPointerv(&self, buffer: GLuint, pname: GLenum, params: *mut *mut c_void) -> Result<()>;
39440
39441	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedBufferSubData.xhtml>
39442	fn glGetNamedBufferSubData(&self, buffer: GLuint, offset: GLintptr, size: GLsizeiptr, data: *mut c_void) -> Result<()>;
39443
39444	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateFramebuffers.xhtml>
39445	fn glCreateFramebuffers(&self, n: GLsizei, framebuffers: *mut GLuint) -> Result<()>;
39446
39447	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferRenderbuffer.xhtml>
39448	fn glNamedFramebufferRenderbuffer(&self, framebuffer: GLuint, attachment: GLenum, renderbuffertarget: GLenum, renderbuffer: GLuint) -> Result<()>;
39449
39450	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferParameteri.xhtml>
39451	fn glNamedFramebufferParameteri(&self, framebuffer: GLuint, pname: GLenum, param: GLint) -> Result<()>;
39452
39453	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferTexture.xhtml>
39454	fn glNamedFramebufferTexture(&self, framebuffer: GLuint, attachment: GLenum, texture: GLuint, level: GLint) -> Result<()>;
39455
39456	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferTextureLayer.xhtml>
39457	fn glNamedFramebufferTextureLayer(&self, framebuffer: GLuint, attachment: GLenum, texture: GLuint, level: GLint, layer: GLint) -> Result<()>;
39458
39459	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferDrawBuffer.xhtml>
39460	fn glNamedFramebufferDrawBuffer(&self, framebuffer: GLuint, buf: GLenum) -> Result<()>;
39461
39462	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferDrawBuffers.xhtml>
39463	fn glNamedFramebufferDrawBuffers(&self, framebuffer: GLuint, n: GLsizei, bufs: *const GLenum) -> Result<()>;
39464
39465	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedFramebufferReadBuffer.xhtml>
39466	fn glNamedFramebufferReadBuffer(&self, framebuffer: GLuint, src: GLenum) -> Result<()>;
39467
39468	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateNamedFramebufferData.xhtml>
39469	fn glInvalidateNamedFramebufferData(&self, framebuffer: GLuint, numAttachments: GLsizei, attachments: *const GLenum) -> Result<()>;
39470
39471	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glInvalidateNamedFramebufferSubData.xhtml>
39472	fn glInvalidateNamedFramebufferSubData(&self, framebuffer: GLuint, numAttachments: GLsizei, attachments: *const GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
39473
39474	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedFramebufferiv.xhtml>
39475	fn glClearNamedFramebufferiv(&self, framebuffer: GLuint, buffer: GLenum, drawbuffer: GLint, value: *const GLint) -> Result<()>;
39476
39477	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedFramebufferuiv.xhtml>
39478	fn glClearNamedFramebufferuiv(&self, framebuffer: GLuint, buffer: GLenum, drawbuffer: GLint, value: *const GLuint) -> Result<()>;
39479
39480	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedFramebufferfv.xhtml>
39481	fn glClearNamedFramebufferfv(&self, framebuffer: GLuint, buffer: GLenum, drawbuffer: GLint, value: *const GLfloat) -> Result<()>;
39482
39483	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glClearNamedFramebufferfi.xhtml>
39484	fn glClearNamedFramebufferfi(&self, framebuffer: GLuint, buffer: GLenum, drawbuffer: GLint, depth: GLfloat, stencil: GLint) -> Result<()>;
39485
39486	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBlitNamedFramebuffer.xhtml>
39487	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<()>;
39488
39489	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCheckNamedFramebufferStatus.xhtml>
39490	fn glCheckNamedFramebufferStatus(&self, framebuffer: GLuint, target: GLenum) -> Result<GLenum>;
39491
39492	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedFramebufferParameteriv.xhtml>
39493	fn glGetNamedFramebufferParameteriv(&self, framebuffer: GLuint, pname: GLenum, param: *mut GLint) -> Result<()>;
39494
39495	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedFramebufferAttachmentParameteriv.xhtml>
39496	fn glGetNamedFramebufferAttachmentParameteriv(&self, framebuffer: GLuint, attachment: GLenum, pname: GLenum, params: *mut GLint) -> Result<()>;
39497
39498	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateRenderbuffers.xhtml>
39499	fn glCreateRenderbuffers(&self, n: GLsizei, renderbuffers: *mut GLuint) -> Result<()>;
39500
39501	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedRenderbufferStorage.xhtml>
39502	fn glNamedRenderbufferStorage(&self, renderbuffer: GLuint, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()>;
39503
39504	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glNamedRenderbufferStorageMultisample.xhtml>
39505	fn glNamedRenderbufferStorageMultisample(&self, renderbuffer: GLuint, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()>;
39506
39507	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetNamedRenderbufferParameteriv.xhtml>
39508	fn glGetNamedRenderbufferParameteriv(&self, renderbuffer: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
39509
39510	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateTextures.xhtml>
39511	fn glCreateTextures(&self, target: GLenum, n: GLsizei, textures: *mut GLuint) -> Result<()>;
39512
39513	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureBuffer.xhtml>
39514	fn glTextureBuffer(&self, texture: GLuint, internalformat: GLenum, buffer: GLuint) -> Result<()>;
39515
39516	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureBufferRange.xhtml>
39517	fn glTextureBufferRange(&self, texture: GLuint, internalformat: GLenum, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()>;
39518
39519	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureStorage1D.xhtml>
39520	fn glTextureStorage1D(&self, texture: GLuint, levels: GLsizei, internalformat: GLenum, width: GLsizei) -> Result<()>;
39521
39522	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureStorage2D.xhtml>
39523	fn glTextureStorage2D(&self, texture: GLuint, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()>;
39524
39525	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureStorage3D.xhtml>
39526	fn glTextureStorage3D(&self, texture: GLuint, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei) -> Result<()>;
39527
39528	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureStorage2DMultisample.xhtml>
39529	fn glTextureStorage2DMultisample(&self, texture: GLuint, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, fixedsamplelocations: GLboolean) -> Result<()>;
39530
39531	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureStorage3DMultisample.xhtml>
39532	fn glTextureStorage3DMultisample(&self, texture: GLuint, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, fixedsamplelocations: GLboolean) -> Result<()>;
39533
39534	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureSubImage1D.xhtml>
39535	fn glTextureSubImage1D(&self, texture: GLuint, level: GLint, xoffset: GLint, width: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
39536
39537	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureSubImage2D.xhtml>
39538	fn glTextureSubImage2D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()>;
39539
39540	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureSubImage3D.xhtml>
39541	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<()>;
39542
39543	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTextureSubImage1D.xhtml>
39544	fn glCompressedTextureSubImage1D(&self, texture: GLuint, level: GLint, xoffset: GLint, width: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()>;
39545
39546	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTextureSubImage2D.xhtml>
39547	fn glCompressedTextureSubImage2D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()>;
39548
39549	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCompressedTextureSubImage3D.xhtml>
39550	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<()>;
39551
39552	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTextureSubImage1D.xhtml>
39553	fn glCopyTextureSubImage1D(&self, texture: GLuint, level: GLint, xoffset: GLint, x: GLint, y: GLint, width: GLsizei) -> Result<()>;
39554
39555	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTextureSubImage2D.xhtml>
39556	fn glCopyTextureSubImage2D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
39557
39558	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCopyTextureSubImage3D.xhtml>
39559	fn glCopyTextureSubImage3D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()>;
39560
39561	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameterf.xhtml>
39562	fn glTextureParameterf(&self, texture: GLuint, pname: GLenum, param: GLfloat) -> Result<()>;
39563
39564	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameterfv.xhtml>
39565	fn glTextureParameterfv(&self, texture: GLuint, pname: GLenum, param: *const GLfloat) -> Result<()>;
39566
39567	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameteri.xhtml>
39568	fn glTextureParameteri(&self, texture: GLuint, pname: GLenum, param: GLint) -> Result<()>;
39569
39570	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameterIiv.xhtml>
39571	fn glTextureParameterIiv(&self, texture: GLuint, pname: GLenum, params: *const GLint) -> Result<()>;
39572
39573	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameterIuiv.xhtml>
39574	fn glTextureParameterIuiv(&self, texture: GLuint, pname: GLenum, params: *const GLuint) -> Result<()>;
39575
39576	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureParameteriv.xhtml>
39577	fn glTextureParameteriv(&self, texture: GLuint, pname: GLenum, param: *const GLint) -> Result<()>;
39578
39579	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGenerateTextureMipmap.xhtml>
39580	fn glGenerateTextureMipmap(&self, texture: GLuint) -> Result<()>;
39581
39582	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindTextureUnit.xhtml>
39583	fn glBindTextureUnit(&self, unit: GLuint, texture: GLuint) -> Result<()>;
39584
39585	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureImage.xhtml>
39586	fn glGetTextureImage(&self, texture: GLuint, level: GLint, format: GLenum, type_: GLenum, bufSize: GLsizei, pixels: *mut c_void) -> Result<()>;
39587
39588	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetCompressedTextureImage.xhtml>
39589	fn glGetCompressedTextureImage(&self, texture: GLuint, level: GLint, bufSize: GLsizei, pixels: *mut c_void) -> Result<()>;
39590
39591	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureLevelParameterfv.xhtml>
39592	fn glGetTextureLevelParameterfv(&self, texture: GLuint, level: GLint, pname: GLenum, params: *mut GLfloat) -> Result<()>;
39593
39594	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureLevelParameteriv.xhtml>
39595	fn glGetTextureLevelParameteriv(&self, texture: GLuint, level: GLint, pname: GLenum, params: *mut GLint) -> Result<()>;
39596
39597	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureParameterfv.xhtml>
39598	fn glGetTextureParameterfv(&self, texture: GLuint, pname: GLenum, params: *mut GLfloat) -> Result<()>;
39599
39600	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureParameterIiv.xhtml>
39601	fn glGetTextureParameterIiv(&self, texture: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
39602
39603	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureParameterIuiv.xhtml>
39604	fn glGetTextureParameterIuiv(&self, texture: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()>;
39605
39606	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureParameteriv.xhtml>
39607	fn glGetTextureParameteriv(&self, texture: GLuint, pname: GLenum, params: *mut GLint) -> Result<()>;
39608
39609	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateVertexArrays.xhtml>
39610	fn glCreateVertexArrays(&self, n: GLsizei, arrays: *mut GLuint) -> Result<()>;
39611
39612	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDisableVertexArrayAttrib.xhtml>
39613	fn glDisableVertexArrayAttrib(&self, vaobj: GLuint, index: GLuint) -> Result<()>;
39614
39615	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glEnableVertexArrayAttrib.xhtml>
39616	fn glEnableVertexArrayAttrib(&self, vaobj: GLuint, index: GLuint) -> Result<()>;
39617
39618	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayElementBuffer.xhtml>
39619	fn glVertexArrayElementBuffer(&self, vaobj: GLuint, buffer: GLuint) -> Result<()>;
39620
39621	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayVertexBuffer.xhtml>
39622	fn glVertexArrayVertexBuffer(&self, vaobj: GLuint, bindingindex: GLuint, buffer: GLuint, offset: GLintptr, stride: GLsizei) -> Result<()>;
39623
39624	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayVertexBuffers.xhtml>
39625	fn glVertexArrayVertexBuffers(&self, vaobj: GLuint, first: GLuint, count: GLsizei, buffers: *const GLuint, offsets: *const GLintptr, strides: *const GLsizei) -> Result<()>;
39626
39627	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayAttribBinding.xhtml>
39628	fn glVertexArrayAttribBinding(&self, vaobj: GLuint, attribindex: GLuint, bindingindex: GLuint) -> Result<()>;
39629
39630	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayAttribFormat.xhtml>
39631	fn glVertexArrayAttribFormat(&self, vaobj: GLuint, attribindex: GLuint, size: GLint, type_: GLenum, normalized: GLboolean, relativeoffset: GLuint) -> Result<()>;
39632
39633	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayAttribIFormat.xhtml>
39634	fn glVertexArrayAttribIFormat(&self, vaobj: GLuint, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()>;
39635
39636	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayAttribLFormat.xhtml>
39637	fn glVertexArrayAttribLFormat(&self, vaobj: GLuint, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()>;
39638
39639	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glVertexArrayBindingDivisor.xhtml>
39640	fn glVertexArrayBindingDivisor(&self, vaobj: GLuint, bindingindex: GLuint, divisor: GLuint) -> Result<()>;
39641
39642	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexArrayiv.xhtml>
39643	fn glGetVertexArrayiv(&self, vaobj: GLuint, pname: GLenum, param: *mut GLint) -> Result<()>;
39644
39645	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexArrayIndexediv.xhtml>
39646	fn glGetVertexArrayIndexediv(&self, vaobj: GLuint, index: GLuint, pname: GLenum, param: *mut GLint) -> Result<()>;
39647
39648	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetVertexArrayIndexed64iv.xhtml>
39649	fn glGetVertexArrayIndexed64iv(&self, vaobj: GLuint, index: GLuint, pname: GLenum, param: *mut GLint64) -> Result<()>;
39650
39651	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateSamplers.xhtml>
39652	fn glCreateSamplers(&self, n: GLsizei, samplers: *mut GLuint) -> Result<()>;
39653
39654	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateProgramPipelines.xhtml>
39655	fn glCreateProgramPipelines(&self, n: GLsizei, pipelines: *mut GLuint) -> Result<()>;
39656
39657	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glCreateQueries.xhtml>
39658	fn glCreateQueries(&self, target: GLenum, n: GLsizei, ids: *mut GLuint) -> Result<()>;
39659
39660	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryBufferObjecti64v.xhtml>
39661	fn glGetQueryBufferObjecti64v(&self, id: GLuint, buffer: GLuint, pname: GLenum, offset: GLintptr) -> Result<()>;
39662
39663	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryBufferObjectiv.xhtml>
39664	fn glGetQueryBufferObjectiv(&self, id: GLuint, buffer: GLuint, pname: GLenum, offset: GLintptr) -> Result<()>;
39665
39666	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryBufferObjectui64v.xhtml>
39667	fn glGetQueryBufferObjectui64v(&self, id: GLuint, buffer: GLuint, pname: GLenum, offset: GLintptr) -> Result<()>;
39668
39669	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetQueryBufferObjectuiv.xhtml>
39670	fn glGetQueryBufferObjectuiv(&self, id: GLuint, buffer: GLuint, pname: GLenum, offset: GLintptr) -> Result<()>;
39671
39672	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMemoryBarrierByRegion.xhtml>
39673	fn glMemoryBarrierByRegion(&self, barriers: GLbitfield) -> Result<()>;
39674
39675	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetTextureSubImage.xhtml>
39676	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<()>;
39677
39678	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetCompressedTextureSubImage.xhtml>
39679	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<()>;
39680
39681	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetGraphicsResetStatus.xhtml>
39682	fn glGetGraphicsResetStatus(&self) -> Result<GLenum>;
39683
39684	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnCompressedTexImage.xhtml>
39685	fn glGetnCompressedTexImage(&self, target: GLenum, lod: GLint, bufSize: GLsizei, pixels: *mut c_void) -> Result<()>;
39686
39687	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnTexImage.xhtml>
39688	fn glGetnTexImage(&self, target: GLenum, level: GLint, format: GLenum, type_: GLenum, bufSize: GLsizei, pixels: *mut c_void) -> Result<()>;
39689
39690	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnUniformdv.xhtml>
39691	fn glGetnUniformdv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLdouble) -> Result<()>;
39692
39693	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnUniformfv.xhtml>
39694	fn glGetnUniformfv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLfloat) -> Result<()>;
39695
39696	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnUniformiv.xhtml>
39697	fn glGetnUniformiv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLint) -> Result<()>;
39698
39699	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnUniformuiv.xhtml>
39700	fn glGetnUniformuiv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLuint) -> Result<()>;
39701
39702	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glReadnPixels.xhtml>
39703	fn glReadnPixels(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, bufSize: GLsizei, data: *mut c_void) -> Result<()>;
39704
39705	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnMapdv.xhtml>
39706	fn glGetnMapdv(&self, target: GLenum, query: GLenum, bufSize: GLsizei, v: *mut GLdouble) -> Result<()>;
39707
39708	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnMapfv.xhtml>
39709	fn glGetnMapfv(&self, target: GLenum, query: GLenum, bufSize: GLsizei, v: *mut GLfloat) -> Result<()>;
39710
39711	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnMapiv.xhtml>
39712	fn glGetnMapiv(&self, target: GLenum, query: GLenum, bufSize: GLsizei, v: *mut GLint) -> Result<()>;
39713
39714	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnPixelMapfv.xhtml>
39715	fn glGetnPixelMapfv(&self, map: GLenum, bufSize: GLsizei, values: *mut GLfloat) -> Result<()>;
39716
39717	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnPixelMapuiv.xhtml>
39718	fn glGetnPixelMapuiv(&self, map: GLenum, bufSize: GLsizei, values: *mut GLuint) -> Result<()>;
39719
39720	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnPixelMapusv.xhtml>
39721	fn glGetnPixelMapusv(&self, map: GLenum, bufSize: GLsizei, values: *mut GLushort) -> Result<()>;
39722
39723	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnPolygonStipple.xhtml>
39724	fn glGetnPolygonStipple(&self, bufSize: GLsizei, pattern: *mut GLubyte) -> Result<()>;
39725
39726	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnColorTable.xhtml>
39727	fn glGetnColorTable(&self, target: GLenum, format: GLenum, type_: GLenum, bufSize: GLsizei, table: *mut c_void) -> Result<()>;
39728
39729	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnConvolutionFilter.xhtml>
39730	fn glGetnConvolutionFilter(&self, target: GLenum, format: GLenum, type_: GLenum, bufSize: GLsizei, image: *mut c_void) -> Result<()>;
39731
39732	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnSeparableFilter.xhtml>
39733	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<()>;
39734
39735	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnHistogram.xhtml>
39736	fn glGetnHistogram(&self, target: GLenum, reset: GLboolean, format: GLenum, type_: GLenum, bufSize: GLsizei, values: *mut c_void) -> Result<()>;
39737
39738	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGetnMinmax.xhtml>
39739	fn glGetnMinmax(&self, target: GLenum, reset: GLboolean, format: GLenum, type_: GLenum, bufSize: GLsizei, values: *mut c_void) -> Result<()>;
39740
39741	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTextureBarrier.xhtml>
39742	fn glTextureBarrier(&self) -> Result<()>;
39743}
39744
39745	/// Functions from OpenGL version 4.6 for the struct `GLCore` without dupliacted functions.
39746pub trait GL_4_6_g {
39747
39748	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSpecializeShader.xhtml>
39749	fn glSpecializeShader(&self, shader: GLuint, pEntryPoint: *const GLchar, numSpecializationConstants: GLuint, pConstantIndex: *const GLuint, pConstantValue: *const GLuint) -> Result<()>;
39750
39751	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawArraysIndirectCount.xhtml>
39752	fn glMultiDrawArraysIndirectCount(&self, mode: GLenum, indirect: *const c_void, drawcount: GLintptr, maxdrawcount: GLsizei, stride: GLsizei) -> Result<()>;
39753
39754	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glMultiDrawElementsIndirectCount.xhtml>
39755	fn glMultiDrawElementsIndirectCount(&self, mode: GLenum, type_: GLenum, indirect: *const c_void, drawcount: GLintptr, maxdrawcount: GLsizei, stride: GLsizei) -> Result<()>;
39756
39757	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/gl4/html/glPolygonOffsetClamp.xhtml>
39758	fn glPolygonOffsetClamp(&self, factor: GLfloat, units: GLfloat, clamp: GLfloat) -> Result<()>;
39759}
39760
39761	/// Functions from OpenGL ES version 2.0 for the struct `GLCore` without dupliacted functions.
39762pub trait ES_GL_2_0_g {
39763}
39764
39765	/// Functions from OpenGL ES version 3.0 for the struct `GLCore` without dupliacted functions.
39766pub trait ES_GL_3_0_g {
39767}
39768
39769	/// Functions from OpenGL ES version 3.1 for the struct `GLCore` without dupliacted functions.
39770pub trait ES_GL_3_1_g {
39771}
39772
39773	/// Functions from OpenGL ES version 3.2 for the struct `GLCore` without dupliacted functions.
39774pub trait ES_GL_3_2_g {
39775
39776	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glBlendBarrier.xhtml>
39777	fn glBlendBarrier(&self) -> Result<()>;
39778
39779	/// Reference: <https://registry.khronos.org/OpenGL-Refpages/es3/html/glPrimitiveBoundingBox.xhtml>
39780	fn glPrimitiveBoundingBox(&self, minX: GLfloat, minY: GLfloat, minZ: GLfloat, minW: GLfloat, maxX: GLfloat, maxY: GLfloat, maxZ: GLfloat, maxW: GLfloat) -> Result<()>;
39781}
39782/// All of the OpenGL and OpenGL ES functions
39783#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
39784pub struct GLCore {
39785	/// Functions from OpenGL version 1.0
39786	pub version_1_0: Version10,
39787
39788	/// Functions from OpenGL version 1.1
39789	pub version_1_1: Version11,
39790
39791	/// Functions from OpenGL version 1.2
39792	pub version_1_2: Version12,
39793
39794	/// Functions from OpenGL version 1.3
39795	pub version_1_3: Version13,
39796
39797	/// Functions from OpenGL version 1.4
39798	pub version_1_4: Version14,
39799
39800	/// Functions from OpenGL version 1.5
39801	pub version_1_5: Version15,
39802
39803	/// Functions from OpenGL version 2.0
39804	pub version_2_0: Version20,
39805
39806	/// Functions from OpenGL version 2.1
39807	pub version_2_1: Version21,
39808
39809	/// Functions from OpenGL version 3.0
39810	pub version_3_0: Version30,
39811
39812	/// Functions from OpenGL version 3.1
39813	pub version_3_1: Version31,
39814
39815	/// Functions from OpenGL version 3.2
39816	pub version_3_2: Version32,
39817
39818	/// Functions from OpenGL version 3.3
39819	pub version_3_3: Version33,
39820
39821	/// Functions from OpenGL version 4.0
39822	pub version_4_0: Version40,
39823
39824	/// Functions from OpenGL version 4.1
39825	pub version_4_1: Version41,
39826
39827	/// Functions from OpenGL version 4.2
39828	pub version_4_2: Version42,
39829
39830	/// Functions from OpenGL version 4.3
39831	pub version_4_3: Version43,
39832
39833	/// Functions from OpenGL version 4.4
39834	pub version_4_4: Version44,
39835
39836	/// Functions from OpenGL version 4.5
39837	pub version_4_5: Version45,
39838
39839	/// Functions from OpenGL version 4.6
39840	pub version_4_6: Version46,
39841
39842	/// Functions from OpenGL ES version 2.0
39843	pub esversion_2_0: EsVersion20,
39844
39845	/// Functions from OpenGL ES version 3.0
39846	pub esversion_3_0: EsVersion30,
39847
39848	/// Functions from OpenGL ES version 3.1
39849	pub esversion_3_1: EsVersion31,
39850
39851	/// Functions from OpenGL ES version 3.2
39852	pub esversion_3_2: EsVersion32,
39853
39854}
39855
39856impl GL_1_0_g for GLCore {
39857	#[inline(always)]
39858	fn get_version(&self) -> (&'static str, u32, u32, u32) {
39859		self.version_1_0.get_version()
39860	}
39861	#[inline(always)]
39862	fn get_vendor(&self) -> &'static str {
39863		self.version_1_0.get_vendor()
39864	}
39865	#[inline(always)]
39866	fn get_renderer(&self) -> &'static str {
39867		self.version_1_0.get_renderer()
39868	}
39869	#[inline(always)]
39870	fn get_versionstr(&self) -> &'static str {
39871		self.version_1_0.get_versionstr()
39872	}
39873	#[inline(always)]
39874	fn glCullFace(&self, mode: GLenum) -> Result<()> {
39875		let ret = process_catch("glCullFace", catch_unwind(||(self.version_1_0.cullface)(mode)));
39876		#[cfg(feature = "diagnose")]
39877		if let Ok(ret) = ret {
39878			return to_result("glCullFace", ret, (self.version_1_0.geterror)());
39879		} else {
39880			return ret
39881		}
39882		#[cfg(not(feature = "diagnose"))]
39883		return ret;
39884	}
39885	#[inline(always)]
39886	fn glFrontFace(&self, mode: GLenum) -> Result<()> {
39887		let ret = process_catch("glFrontFace", catch_unwind(||(self.version_1_0.frontface)(mode)));
39888		#[cfg(feature = "diagnose")]
39889		if let Ok(ret) = ret {
39890			return to_result("glFrontFace", ret, (self.version_1_0.geterror)());
39891		} else {
39892			return ret
39893		}
39894		#[cfg(not(feature = "diagnose"))]
39895		return ret;
39896	}
39897	#[inline(always)]
39898	fn glHint(&self, target: GLenum, mode: GLenum) -> Result<()> {
39899		let ret = process_catch("glHint", catch_unwind(||(self.version_1_0.hint)(target, mode)));
39900		#[cfg(feature = "diagnose")]
39901		if let Ok(ret) = ret {
39902			return to_result("glHint", ret, (self.version_1_0.geterror)());
39903		} else {
39904			return ret
39905		}
39906		#[cfg(not(feature = "diagnose"))]
39907		return ret;
39908	}
39909	#[inline(always)]
39910	fn glLineWidth(&self, width: GLfloat) -> Result<()> {
39911		let ret = process_catch("glLineWidth", catch_unwind(||(self.version_1_0.linewidth)(width)));
39912		#[cfg(feature = "diagnose")]
39913		if let Ok(ret) = ret {
39914			return to_result("glLineWidth", ret, (self.version_1_0.geterror)());
39915		} else {
39916			return ret
39917		}
39918		#[cfg(not(feature = "diagnose"))]
39919		return ret;
39920	}
39921	#[inline(always)]
39922	fn glPointSize(&self, size: GLfloat) -> Result<()> {
39923		let ret = process_catch("glPointSize", catch_unwind(||(self.version_1_0.pointsize)(size)));
39924		#[cfg(feature = "diagnose")]
39925		if let Ok(ret) = ret {
39926			return to_result("glPointSize", ret, (self.version_1_0.geterror)());
39927		} else {
39928			return ret
39929		}
39930		#[cfg(not(feature = "diagnose"))]
39931		return ret;
39932	}
39933	#[inline(always)]
39934	fn glPolygonMode(&self, face: GLenum, mode: GLenum) -> Result<()> {
39935		let ret = process_catch("glPolygonMode", catch_unwind(||(self.version_1_0.polygonmode)(face, mode)));
39936		#[cfg(feature = "diagnose")]
39937		if let Ok(ret) = ret {
39938			return to_result("glPolygonMode", ret, (self.version_1_0.geterror)());
39939		} else {
39940			return ret
39941		}
39942		#[cfg(not(feature = "diagnose"))]
39943		return ret;
39944	}
39945	#[inline(always)]
39946	fn glScissor(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
39947		let ret = process_catch("glScissor", catch_unwind(||(self.version_1_0.scissor)(x, y, width, height)));
39948		#[cfg(feature = "diagnose")]
39949		if let Ok(ret) = ret {
39950			return to_result("glScissor", ret, (self.version_1_0.geterror)());
39951		} else {
39952			return ret
39953		}
39954		#[cfg(not(feature = "diagnose"))]
39955		return ret;
39956	}
39957	#[inline(always)]
39958	fn glTexParameterf(&self, target: GLenum, pname: GLenum, param: GLfloat) -> Result<()> {
39959		let ret = process_catch("glTexParameterf", catch_unwind(||(self.version_1_0.texparameterf)(target, pname, param)));
39960		#[cfg(feature = "diagnose")]
39961		if let Ok(ret) = ret {
39962			return to_result("glTexParameterf", ret, (self.version_1_0.geterror)());
39963		} else {
39964			return ret
39965		}
39966		#[cfg(not(feature = "diagnose"))]
39967		return ret;
39968	}
39969	#[inline(always)]
39970	fn glTexParameterfv(&self, target: GLenum, pname: GLenum, params: *const GLfloat) -> Result<()> {
39971		let ret = process_catch("glTexParameterfv", catch_unwind(||(self.version_1_0.texparameterfv)(target, pname, params)));
39972		#[cfg(feature = "diagnose")]
39973		if let Ok(ret) = ret {
39974			return to_result("glTexParameterfv", ret, (self.version_1_0.geterror)());
39975		} else {
39976			return ret
39977		}
39978		#[cfg(not(feature = "diagnose"))]
39979		return ret;
39980	}
39981	#[inline(always)]
39982	fn glTexParameteri(&self, target: GLenum, pname: GLenum, param: GLint) -> Result<()> {
39983		let ret = process_catch("glTexParameteri", catch_unwind(||(self.version_1_0.texparameteri)(target, pname, param)));
39984		#[cfg(feature = "diagnose")]
39985		if let Ok(ret) = ret {
39986			return to_result("glTexParameteri", ret, (self.version_1_0.geterror)());
39987		} else {
39988			return ret
39989		}
39990		#[cfg(not(feature = "diagnose"))]
39991		return ret;
39992	}
39993	#[inline(always)]
39994	fn glTexParameteriv(&self, target: GLenum, pname: GLenum, params: *const GLint) -> Result<()> {
39995		let ret = process_catch("glTexParameteriv", catch_unwind(||(self.version_1_0.texparameteriv)(target, pname, params)));
39996		#[cfg(feature = "diagnose")]
39997		if let Ok(ret) = ret {
39998			return to_result("glTexParameteriv", ret, (self.version_1_0.geterror)());
39999		} else {
40000			return ret
40001		}
40002		#[cfg(not(feature = "diagnose"))]
40003		return ret;
40004	}
40005	#[inline(always)]
40006	fn glTexImage1D(&self, target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, border: GLint, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
40007		let ret = process_catch("glTexImage1D", catch_unwind(||(self.version_1_0.teximage1d)(target, level, internalformat, width, border, format, type_, pixels)));
40008		#[cfg(feature = "diagnose")]
40009		if let Ok(ret) = ret {
40010			return to_result("glTexImage1D", ret, (self.version_1_0.geterror)());
40011		} else {
40012			return ret
40013		}
40014		#[cfg(not(feature = "diagnose"))]
40015		return ret;
40016	}
40017	#[inline(always)]
40018	fn glTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLint, width: GLsizei, height: GLsizei, border: GLint, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
40019		let ret = process_catch("glTexImage2D", catch_unwind(||(self.version_1_0.teximage2d)(target, level, internalformat, width, height, border, format, type_, pixels)));
40020		#[cfg(feature = "diagnose")]
40021		if let Ok(ret) = ret {
40022			return to_result("glTexImage2D", ret, (self.version_1_0.geterror)());
40023		} else {
40024			return ret
40025		}
40026		#[cfg(not(feature = "diagnose"))]
40027		return ret;
40028	}
40029	#[inline(always)]
40030	fn glDrawBuffer(&self, buf: GLenum) -> Result<()> {
40031		let ret = process_catch("glDrawBuffer", catch_unwind(||(self.version_1_0.drawbuffer)(buf)));
40032		#[cfg(feature = "diagnose")]
40033		if let Ok(ret) = ret {
40034			return to_result("glDrawBuffer", ret, (self.version_1_0.geterror)());
40035		} else {
40036			return ret
40037		}
40038		#[cfg(not(feature = "diagnose"))]
40039		return ret;
40040	}
40041	#[inline(always)]
40042	fn glClear(&self, mask: GLbitfield) -> Result<()> {
40043		let ret = process_catch("glClear", catch_unwind(||(self.version_1_0.clear)(mask)));
40044		#[cfg(feature = "diagnose")]
40045		if let Ok(ret) = ret {
40046			return to_result("glClear", ret, (self.version_1_0.geterror)());
40047		} else {
40048			return ret
40049		}
40050		#[cfg(not(feature = "diagnose"))]
40051		return ret;
40052	}
40053	#[inline(always)]
40054	fn glClearColor(&self, red: GLfloat, green: GLfloat, blue: GLfloat, alpha: GLfloat) -> Result<()> {
40055		let ret = process_catch("glClearColor", catch_unwind(||(self.version_1_0.clearcolor)(red, green, blue, alpha)));
40056		#[cfg(feature = "diagnose")]
40057		if let Ok(ret) = ret {
40058			return to_result("glClearColor", ret, (self.version_1_0.geterror)());
40059		} else {
40060			return ret
40061		}
40062		#[cfg(not(feature = "diagnose"))]
40063		return ret;
40064	}
40065	#[inline(always)]
40066	fn glClearStencil(&self, s: GLint) -> Result<()> {
40067		let ret = process_catch("glClearStencil", catch_unwind(||(self.version_1_0.clearstencil)(s)));
40068		#[cfg(feature = "diagnose")]
40069		if let Ok(ret) = ret {
40070			return to_result("glClearStencil", ret, (self.version_1_0.geterror)());
40071		} else {
40072			return ret
40073		}
40074		#[cfg(not(feature = "diagnose"))]
40075		return ret;
40076	}
40077	#[inline(always)]
40078	fn glClearDepth(&self, depth: GLdouble) -> Result<()> {
40079		let ret = process_catch("glClearDepth", catch_unwind(||(self.version_1_0.cleardepth)(depth)));
40080		#[cfg(feature = "diagnose")]
40081		if let Ok(ret) = ret {
40082			return to_result("glClearDepth", ret, (self.version_1_0.geterror)());
40083		} else {
40084			return ret
40085		}
40086		#[cfg(not(feature = "diagnose"))]
40087		return ret;
40088	}
40089	#[inline(always)]
40090	fn glStencilMask(&self, mask: GLuint) -> Result<()> {
40091		let ret = process_catch("glStencilMask", catch_unwind(||(self.version_1_0.stencilmask)(mask)));
40092		#[cfg(feature = "diagnose")]
40093		if let Ok(ret) = ret {
40094			return to_result("glStencilMask", ret, (self.version_1_0.geterror)());
40095		} else {
40096			return ret
40097		}
40098		#[cfg(not(feature = "diagnose"))]
40099		return ret;
40100	}
40101	#[inline(always)]
40102	fn glColorMask(&self, red: GLboolean, green: GLboolean, blue: GLboolean, alpha: GLboolean) -> Result<()> {
40103		let ret = process_catch("glColorMask", catch_unwind(||(self.version_1_0.colormask)(red, green, blue, alpha)));
40104		#[cfg(feature = "diagnose")]
40105		if let Ok(ret) = ret {
40106			return to_result("glColorMask", ret, (self.version_1_0.geterror)());
40107		} else {
40108			return ret
40109		}
40110		#[cfg(not(feature = "diagnose"))]
40111		return ret;
40112	}
40113	#[inline(always)]
40114	fn glDepthMask(&self, flag: GLboolean) -> Result<()> {
40115		let ret = process_catch("glDepthMask", catch_unwind(||(self.version_1_0.depthmask)(flag)));
40116		#[cfg(feature = "diagnose")]
40117		if let Ok(ret) = ret {
40118			return to_result("glDepthMask", ret, (self.version_1_0.geterror)());
40119		} else {
40120			return ret
40121		}
40122		#[cfg(not(feature = "diagnose"))]
40123		return ret;
40124	}
40125	#[inline(always)]
40126	fn glDisable(&self, cap: GLenum) -> Result<()> {
40127		let ret = process_catch("glDisable", catch_unwind(||(self.version_1_0.disable)(cap)));
40128		#[cfg(feature = "diagnose")]
40129		if let Ok(ret) = ret {
40130			return to_result("glDisable", ret, (self.version_1_0.geterror)());
40131		} else {
40132			return ret
40133		}
40134		#[cfg(not(feature = "diagnose"))]
40135		return ret;
40136	}
40137	#[inline(always)]
40138	fn glEnable(&self, cap: GLenum) -> Result<()> {
40139		let ret = process_catch("glEnable", catch_unwind(||(self.version_1_0.enable)(cap)));
40140		#[cfg(feature = "diagnose")]
40141		if let Ok(ret) = ret {
40142			return to_result("glEnable", ret, (self.version_1_0.geterror)());
40143		} else {
40144			return ret
40145		}
40146		#[cfg(not(feature = "diagnose"))]
40147		return ret;
40148	}
40149	#[inline(always)]
40150	fn glFinish(&self) -> Result<()> {
40151		let ret = process_catch("glFinish", catch_unwind(||(self.version_1_0.finish)()));
40152		#[cfg(feature = "diagnose")]
40153		if let Ok(ret) = ret {
40154			return to_result("glFinish", ret, (self.version_1_0.geterror)());
40155		} else {
40156			return ret
40157		}
40158		#[cfg(not(feature = "diagnose"))]
40159		return ret;
40160	}
40161	#[inline(always)]
40162	fn glFlush(&self) -> Result<()> {
40163		let ret = process_catch("glFlush", catch_unwind(||(self.version_1_0.flush)()));
40164		#[cfg(feature = "diagnose")]
40165		if let Ok(ret) = ret {
40166			return to_result("glFlush", ret, (self.version_1_0.geterror)());
40167		} else {
40168			return ret
40169		}
40170		#[cfg(not(feature = "diagnose"))]
40171		return ret;
40172	}
40173	#[inline(always)]
40174	fn glBlendFunc(&self, sfactor: GLenum, dfactor: GLenum) -> Result<()> {
40175		let ret = process_catch("glBlendFunc", catch_unwind(||(self.version_1_0.blendfunc)(sfactor, dfactor)));
40176		#[cfg(feature = "diagnose")]
40177		if let Ok(ret) = ret {
40178			return to_result("glBlendFunc", ret, (self.version_1_0.geterror)());
40179		} else {
40180			return ret
40181		}
40182		#[cfg(not(feature = "diagnose"))]
40183		return ret;
40184	}
40185	#[inline(always)]
40186	fn glLogicOp(&self, opcode: GLenum) -> Result<()> {
40187		let ret = process_catch("glLogicOp", catch_unwind(||(self.version_1_0.logicop)(opcode)));
40188		#[cfg(feature = "diagnose")]
40189		if let Ok(ret) = ret {
40190			return to_result("glLogicOp", ret, (self.version_1_0.geterror)());
40191		} else {
40192			return ret
40193		}
40194		#[cfg(not(feature = "diagnose"))]
40195		return ret;
40196	}
40197	#[inline(always)]
40198	fn glStencilFunc(&self, func: GLenum, ref_: GLint, mask: GLuint) -> Result<()> {
40199		let ret = process_catch("glStencilFunc", catch_unwind(||(self.version_1_0.stencilfunc)(func, ref_, mask)));
40200		#[cfg(feature = "diagnose")]
40201		if let Ok(ret) = ret {
40202			return to_result("glStencilFunc", ret, (self.version_1_0.geterror)());
40203		} else {
40204			return ret
40205		}
40206		#[cfg(not(feature = "diagnose"))]
40207		return ret;
40208	}
40209	#[inline(always)]
40210	fn glStencilOp(&self, fail: GLenum, zfail: GLenum, zpass: GLenum) -> Result<()> {
40211		let ret = process_catch("glStencilOp", catch_unwind(||(self.version_1_0.stencilop)(fail, zfail, zpass)));
40212		#[cfg(feature = "diagnose")]
40213		if let Ok(ret) = ret {
40214			return to_result("glStencilOp", ret, (self.version_1_0.geterror)());
40215		} else {
40216			return ret
40217		}
40218		#[cfg(not(feature = "diagnose"))]
40219		return ret;
40220	}
40221	#[inline(always)]
40222	fn glDepthFunc(&self, func: GLenum) -> Result<()> {
40223		let ret = process_catch("glDepthFunc", catch_unwind(||(self.version_1_0.depthfunc)(func)));
40224		#[cfg(feature = "diagnose")]
40225		if let Ok(ret) = ret {
40226			return to_result("glDepthFunc", ret, (self.version_1_0.geterror)());
40227		} else {
40228			return ret
40229		}
40230		#[cfg(not(feature = "diagnose"))]
40231		return ret;
40232	}
40233	#[inline(always)]
40234	fn glPixelStoref(&self, pname: GLenum, param: GLfloat) -> Result<()> {
40235		let ret = process_catch("glPixelStoref", catch_unwind(||(self.version_1_0.pixelstoref)(pname, param)));
40236		#[cfg(feature = "diagnose")]
40237		if let Ok(ret) = ret {
40238			return to_result("glPixelStoref", ret, (self.version_1_0.geterror)());
40239		} else {
40240			return ret
40241		}
40242		#[cfg(not(feature = "diagnose"))]
40243		return ret;
40244	}
40245	#[inline(always)]
40246	fn glPixelStorei(&self, pname: GLenum, param: GLint) -> Result<()> {
40247		let ret = process_catch("glPixelStorei", catch_unwind(||(self.version_1_0.pixelstorei)(pname, param)));
40248		#[cfg(feature = "diagnose")]
40249		if let Ok(ret) = ret {
40250			return to_result("glPixelStorei", ret, (self.version_1_0.geterror)());
40251		} else {
40252			return ret
40253		}
40254		#[cfg(not(feature = "diagnose"))]
40255		return ret;
40256	}
40257	#[inline(always)]
40258	fn glReadBuffer(&self, src: GLenum) -> Result<()> {
40259		let ret = process_catch("glReadBuffer", catch_unwind(||(self.version_1_0.readbuffer)(src)));
40260		#[cfg(feature = "diagnose")]
40261		if let Ok(ret) = ret {
40262			return to_result("glReadBuffer", ret, (self.version_1_0.geterror)());
40263		} else {
40264			return ret
40265		}
40266		#[cfg(not(feature = "diagnose"))]
40267		return ret;
40268	}
40269	#[inline(always)]
40270	fn glReadPixels(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, pixels: *mut c_void) -> Result<()> {
40271		let ret = process_catch("glReadPixels", catch_unwind(||(self.version_1_0.readpixels)(x, y, width, height, format, type_, pixels)));
40272		#[cfg(feature = "diagnose")]
40273		if let Ok(ret) = ret {
40274			return to_result("glReadPixels", ret, (self.version_1_0.geterror)());
40275		} else {
40276			return ret
40277		}
40278		#[cfg(not(feature = "diagnose"))]
40279		return ret;
40280	}
40281	#[inline(always)]
40282	fn glGetBooleanv(&self, pname: GLenum, data: *mut GLboolean) -> Result<()> {
40283		let ret = process_catch("glGetBooleanv", catch_unwind(||(self.version_1_0.getbooleanv)(pname, data)));
40284		#[cfg(feature = "diagnose")]
40285		if let Ok(ret) = ret {
40286			return to_result("glGetBooleanv", ret, (self.version_1_0.geterror)());
40287		} else {
40288			return ret
40289		}
40290		#[cfg(not(feature = "diagnose"))]
40291		return ret;
40292	}
40293	#[inline(always)]
40294	fn glGetDoublev(&self, pname: GLenum, data: *mut GLdouble) -> Result<()> {
40295		let ret = process_catch("glGetDoublev", catch_unwind(||(self.version_1_0.getdoublev)(pname, data)));
40296		#[cfg(feature = "diagnose")]
40297		if let Ok(ret) = ret {
40298			return to_result("glGetDoublev", ret, (self.version_1_0.geterror)());
40299		} else {
40300			return ret
40301		}
40302		#[cfg(not(feature = "diagnose"))]
40303		return ret;
40304	}
40305	#[inline(always)]
40306	fn glGetError(&self) -> GLenum {
40307		(self.version_1_0.geterror)()
40308	}
40309	#[inline(always)]
40310	fn glGetFloatv(&self, pname: GLenum, data: *mut GLfloat) -> Result<()> {
40311		let ret = process_catch("glGetFloatv", catch_unwind(||(self.version_1_0.getfloatv)(pname, data)));
40312		#[cfg(feature = "diagnose")]
40313		if let Ok(ret) = ret {
40314			return to_result("glGetFloatv", ret, (self.version_1_0.geterror)());
40315		} else {
40316			return ret
40317		}
40318		#[cfg(not(feature = "diagnose"))]
40319		return ret;
40320	}
40321	#[inline(always)]
40322	fn glGetIntegerv(&self, pname: GLenum, data: *mut GLint) -> Result<()> {
40323		let ret = process_catch("glGetIntegerv", catch_unwind(||(self.version_1_0.getintegerv)(pname, data)));
40324		#[cfg(feature = "diagnose")]
40325		if let Ok(ret) = ret {
40326			return to_result("glGetIntegerv", ret, (self.version_1_0.geterror)());
40327		} else {
40328			return ret
40329		}
40330		#[cfg(not(feature = "diagnose"))]
40331		return ret;
40332	}
40333	#[inline(always)]
40334	fn glGetString(&self, name: GLenum) -> Result<&'static str> {
40335		let ret = process_catch("glGetString", catch_unwind(||unsafe{CStr::from_ptr((self.version_1_0.getstring)(name) as *const i8)}.to_str().unwrap()));
40336		#[cfg(feature = "diagnose")]
40337		if let Ok(ret) = ret {
40338			return to_result("glGetString", ret, (self.version_1_0.geterror)());
40339		} else {
40340			return ret
40341		}
40342		#[cfg(not(feature = "diagnose"))]
40343		return ret;
40344	}
40345	#[inline(always)]
40346	fn glGetTexImage(&self, target: GLenum, level: GLint, format: GLenum, type_: GLenum, pixels: *mut c_void) -> Result<()> {
40347		let ret = process_catch("glGetTexImage", catch_unwind(||(self.version_1_0.getteximage)(target, level, format, type_, pixels)));
40348		#[cfg(feature = "diagnose")]
40349		if let Ok(ret) = ret {
40350			return to_result("glGetTexImage", ret, (self.version_1_0.geterror)());
40351		} else {
40352			return ret
40353		}
40354		#[cfg(not(feature = "diagnose"))]
40355		return ret;
40356	}
40357	#[inline(always)]
40358	fn glGetTexParameterfv(&self, target: GLenum, pname: GLenum, params: *mut GLfloat) -> Result<()> {
40359		let ret = process_catch("glGetTexParameterfv", catch_unwind(||(self.version_1_0.gettexparameterfv)(target, pname, params)));
40360		#[cfg(feature = "diagnose")]
40361		if let Ok(ret) = ret {
40362			return to_result("glGetTexParameterfv", ret, (self.version_1_0.geterror)());
40363		} else {
40364			return ret
40365		}
40366		#[cfg(not(feature = "diagnose"))]
40367		return ret;
40368	}
40369	#[inline(always)]
40370	fn glGetTexParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
40371		let ret = process_catch("glGetTexParameteriv", catch_unwind(||(self.version_1_0.gettexparameteriv)(target, pname, params)));
40372		#[cfg(feature = "diagnose")]
40373		if let Ok(ret) = ret {
40374			return to_result("glGetTexParameteriv", ret, (self.version_1_0.geterror)());
40375		} else {
40376			return ret
40377		}
40378		#[cfg(not(feature = "diagnose"))]
40379		return ret;
40380	}
40381	#[inline(always)]
40382	fn glGetTexLevelParameterfv(&self, target: GLenum, level: GLint, pname: GLenum, params: *mut GLfloat) -> Result<()> {
40383		let ret = process_catch("glGetTexLevelParameterfv", catch_unwind(||(self.version_1_0.gettexlevelparameterfv)(target, level, pname, params)));
40384		#[cfg(feature = "diagnose")]
40385		if let Ok(ret) = ret {
40386			return to_result("glGetTexLevelParameterfv", ret, (self.version_1_0.geterror)());
40387		} else {
40388			return ret
40389		}
40390		#[cfg(not(feature = "diagnose"))]
40391		return ret;
40392	}
40393	#[inline(always)]
40394	fn glGetTexLevelParameteriv(&self, target: GLenum, level: GLint, pname: GLenum, params: *mut GLint) -> Result<()> {
40395		let ret = process_catch("glGetTexLevelParameteriv", catch_unwind(||(self.version_1_0.gettexlevelparameteriv)(target, level, pname, params)));
40396		#[cfg(feature = "diagnose")]
40397		if let Ok(ret) = ret {
40398			return to_result("glGetTexLevelParameteriv", ret, (self.version_1_0.geterror)());
40399		} else {
40400			return ret
40401		}
40402		#[cfg(not(feature = "diagnose"))]
40403		return ret;
40404	}
40405	#[inline(always)]
40406	fn glIsEnabled(&self, cap: GLenum) -> Result<GLboolean> {
40407		let ret = process_catch("glIsEnabled", catch_unwind(||(self.version_1_0.isenabled)(cap)));
40408		#[cfg(feature = "diagnose")]
40409		if let Ok(ret) = ret {
40410			return to_result("glIsEnabled", ret, (self.version_1_0.geterror)());
40411		} else {
40412			return ret
40413		}
40414		#[cfg(not(feature = "diagnose"))]
40415		return ret;
40416	}
40417	#[inline(always)]
40418	fn glDepthRange(&self, n: GLdouble, f: GLdouble) -> Result<()> {
40419		let ret = process_catch("glDepthRange", catch_unwind(||(self.version_1_0.depthrange)(n, f)));
40420		#[cfg(feature = "diagnose")]
40421		if let Ok(ret) = ret {
40422			return to_result("glDepthRange", ret, (self.version_1_0.geterror)());
40423		} else {
40424			return ret
40425		}
40426		#[cfg(not(feature = "diagnose"))]
40427		return ret;
40428	}
40429	#[inline(always)]
40430	fn glViewport(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
40431		let ret = process_catch("glViewport", catch_unwind(||(self.version_1_0.viewport)(x, y, width, height)));
40432		#[cfg(feature = "diagnose")]
40433		if let Ok(ret) = ret {
40434			return to_result("glViewport", ret, (self.version_1_0.geterror)());
40435		} else {
40436			return ret
40437		}
40438		#[cfg(not(feature = "diagnose"))]
40439		return ret;
40440	}
40441}
40442
40443impl GL_1_1_g for GLCore {
40444	#[inline(always)]
40445	fn glDrawArrays(&self, mode: GLenum, first: GLint, count: GLsizei) -> Result<()> {
40446		let ret = process_catch("glDrawArrays", catch_unwind(||(self.version_1_1.drawarrays)(mode, first, count)));
40447		#[cfg(feature = "diagnose")]
40448		if let Ok(ret) = ret {
40449			return to_result("glDrawArrays", ret, (self.version_1_1.geterror)());
40450		} else {
40451			return ret
40452		}
40453		#[cfg(not(feature = "diagnose"))]
40454		return ret;
40455	}
40456	#[inline(always)]
40457	fn glDrawElements(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void) -> Result<()> {
40458		let ret = process_catch("glDrawElements", catch_unwind(||(self.version_1_1.drawelements)(mode, count, type_, indices)));
40459		#[cfg(feature = "diagnose")]
40460		if let Ok(ret) = ret {
40461			return to_result("glDrawElements", ret, (self.version_1_1.geterror)());
40462		} else {
40463			return ret
40464		}
40465		#[cfg(not(feature = "diagnose"))]
40466		return ret;
40467	}
40468	#[inline(always)]
40469	fn glGetPointerv(&self, pname: GLenum, params: *mut *mut c_void) -> Result<()> {
40470		let ret = process_catch("glGetPointerv", catch_unwind(||(self.version_1_1.getpointerv)(pname, params)));
40471		#[cfg(feature = "diagnose")]
40472		if let Ok(ret) = ret {
40473			return to_result("glGetPointerv", ret, (self.version_1_1.geterror)());
40474		} else {
40475			return ret
40476		}
40477		#[cfg(not(feature = "diagnose"))]
40478		return ret;
40479	}
40480	#[inline(always)]
40481	fn glPolygonOffset(&self, factor: GLfloat, units: GLfloat) -> Result<()> {
40482		let ret = process_catch("glPolygonOffset", catch_unwind(||(self.version_1_1.polygonoffset)(factor, units)));
40483		#[cfg(feature = "diagnose")]
40484		if let Ok(ret) = ret {
40485			return to_result("glPolygonOffset", ret, (self.version_1_1.geterror)());
40486		} else {
40487			return ret
40488		}
40489		#[cfg(not(feature = "diagnose"))]
40490		return ret;
40491	}
40492	#[inline(always)]
40493	fn glCopyTexImage1D(&self, target: GLenum, level: GLint, internalformat: GLenum, x: GLint, y: GLint, width: GLsizei, border: GLint) -> Result<()> {
40494		let ret = process_catch("glCopyTexImage1D", catch_unwind(||(self.version_1_1.copyteximage1d)(target, level, internalformat, x, y, width, border)));
40495		#[cfg(feature = "diagnose")]
40496		if let Ok(ret) = ret {
40497			return to_result("glCopyTexImage1D", ret, (self.version_1_1.geterror)());
40498		} else {
40499			return ret
40500		}
40501		#[cfg(not(feature = "diagnose"))]
40502		return ret;
40503	}
40504	#[inline(always)]
40505	fn glCopyTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei, border: GLint) -> Result<()> {
40506		let ret = process_catch("glCopyTexImage2D", catch_unwind(||(self.version_1_1.copyteximage2d)(target, level, internalformat, x, y, width, height, border)));
40507		#[cfg(feature = "diagnose")]
40508		if let Ok(ret) = ret {
40509			return to_result("glCopyTexImage2D", ret, (self.version_1_1.geterror)());
40510		} else {
40511			return ret
40512		}
40513		#[cfg(not(feature = "diagnose"))]
40514		return ret;
40515	}
40516	#[inline(always)]
40517	fn glCopyTexSubImage1D(&self, target: GLenum, level: GLint, xoffset: GLint, x: GLint, y: GLint, width: GLsizei) -> Result<()> {
40518		let ret = process_catch("glCopyTexSubImage1D", catch_unwind(||(self.version_1_1.copytexsubimage1d)(target, level, xoffset, x, y, width)));
40519		#[cfg(feature = "diagnose")]
40520		if let Ok(ret) = ret {
40521			return to_result("glCopyTexSubImage1D", ret, (self.version_1_1.geterror)());
40522		} else {
40523			return ret
40524		}
40525		#[cfg(not(feature = "diagnose"))]
40526		return ret;
40527	}
40528	#[inline(always)]
40529	fn glCopyTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
40530		let ret = process_catch("glCopyTexSubImage2D", catch_unwind(||(self.version_1_1.copytexsubimage2d)(target, level, xoffset, yoffset, x, y, width, height)));
40531		#[cfg(feature = "diagnose")]
40532		if let Ok(ret) = ret {
40533			return to_result("glCopyTexSubImage2D", ret, (self.version_1_1.geterror)());
40534		} else {
40535			return ret
40536		}
40537		#[cfg(not(feature = "diagnose"))]
40538		return ret;
40539	}
40540	#[inline(always)]
40541	fn glTexSubImage1D(&self, target: GLenum, level: GLint, xoffset: GLint, width: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
40542		let ret = process_catch("glTexSubImage1D", catch_unwind(||(self.version_1_1.texsubimage1d)(target, level, xoffset, width, format, type_, pixels)));
40543		#[cfg(feature = "diagnose")]
40544		if let Ok(ret) = ret {
40545			return to_result("glTexSubImage1D", ret, (self.version_1_1.geterror)());
40546		} else {
40547			return ret
40548		}
40549		#[cfg(not(feature = "diagnose"))]
40550		return ret;
40551	}
40552	#[inline(always)]
40553	fn glTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
40554		let ret = process_catch("glTexSubImage2D", catch_unwind(||(self.version_1_1.texsubimage2d)(target, level, xoffset, yoffset, width, height, format, type_, pixels)));
40555		#[cfg(feature = "diagnose")]
40556		if let Ok(ret) = ret {
40557			return to_result("glTexSubImage2D", ret, (self.version_1_1.geterror)());
40558		} else {
40559			return ret
40560		}
40561		#[cfg(not(feature = "diagnose"))]
40562		return ret;
40563	}
40564	#[inline(always)]
40565	fn glBindTexture(&self, target: GLenum, texture: GLuint) -> Result<()> {
40566		let ret = process_catch("glBindTexture", catch_unwind(||(self.version_1_1.bindtexture)(target, texture)));
40567		#[cfg(feature = "diagnose")]
40568		if let Ok(ret) = ret {
40569			return to_result("glBindTexture", ret, (self.version_1_1.geterror)());
40570		} else {
40571			return ret
40572		}
40573		#[cfg(not(feature = "diagnose"))]
40574		return ret;
40575	}
40576	#[inline(always)]
40577	fn glDeleteTextures(&self, n: GLsizei, textures: *const GLuint) -> Result<()> {
40578		let ret = process_catch("glDeleteTextures", catch_unwind(||(self.version_1_1.deletetextures)(n, textures)));
40579		#[cfg(feature = "diagnose")]
40580		if let Ok(ret) = ret {
40581			return to_result("glDeleteTextures", ret, (self.version_1_1.geterror)());
40582		} else {
40583			return ret
40584		}
40585		#[cfg(not(feature = "diagnose"))]
40586		return ret;
40587	}
40588	#[inline(always)]
40589	fn glGenTextures(&self, n: GLsizei, textures: *mut GLuint) -> Result<()> {
40590		let ret = process_catch("glGenTextures", catch_unwind(||(self.version_1_1.gentextures)(n, textures)));
40591		#[cfg(feature = "diagnose")]
40592		if let Ok(ret) = ret {
40593			return to_result("glGenTextures", ret, (self.version_1_1.geterror)());
40594		} else {
40595			return ret
40596		}
40597		#[cfg(not(feature = "diagnose"))]
40598		return ret;
40599	}
40600	#[inline(always)]
40601	fn glIsTexture(&self, texture: GLuint) -> Result<GLboolean> {
40602		let ret = process_catch("glIsTexture", catch_unwind(||(self.version_1_1.istexture)(texture)));
40603		#[cfg(feature = "diagnose")]
40604		if let Ok(ret) = ret {
40605			return to_result("glIsTexture", ret, (self.version_1_1.geterror)());
40606		} else {
40607			return ret
40608		}
40609		#[cfg(not(feature = "diagnose"))]
40610		return ret;
40611	}
40612}
40613
40614impl GL_1_2_g for GLCore {
40615	#[inline(always)]
40616	fn glDrawRangeElements(&self, mode: GLenum, start: GLuint, end: GLuint, count: GLsizei, type_: GLenum, indices: *const c_void) -> Result<()> {
40617		let ret = process_catch("glDrawRangeElements", catch_unwind(||(self.version_1_2.drawrangeelements)(mode, start, end, count, type_, indices)));
40618		#[cfg(feature = "diagnose")]
40619		if let Ok(ret) = ret {
40620			return to_result("glDrawRangeElements", ret, (self.version_1_2.geterror)());
40621		} else {
40622			return ret
40623		}
40624		#[cfg(not(feature = "diagnose"))]
40625		return ret;
40626	}
40627	#[inline(always)]
40628	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<()> {
40629		let ret = process_catch("glTexImage3D", catch_unwind(||(self.version_1_2.teximage3d)(target, level, internalformat, width, height, depth, border, format, type_, pixels)));
40630		#[cfg(feature = "diagnose")]
40631		if let Ok(ret) = ret {
40632			return to_result("glTexImage3D", ret, (self.version_1_2.geterror)());
40633		} else {
40634			return ret
40635		}
40636		#[cfg(not(feature = "diagnose"))]
40637		return ret;
40638	}
40639	#[inline(always)]
40640	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<()> {
40641		let ret = process_catch("glTexSubImage3D", catch_unwind(||(self.version_1_2.texsubimage3d)(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, pixels)));
40642		#[cfg(feature = "diagnose")]
40643		if let Ok(ret) = ret {
40644			return to_result("glTexSubImage3D", ret, (self.version_1_2.geterror)());
40645		} else {
40646			return ret
40647		}
40648		#[cfg(not(feature = "diagnose"))]
40649		return ret;
40650	}
40651	#[inline(always)]
40652	fn glCopyTexSubImage3D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
40653		let ret = process_catch("glCopyTexSubImage3D", catch_unwind(||(self.version_1_2.copytexsubimage3d)(target, level, xoffset, yoffset, zoffset, x, y, width, height)));
40654		#[cfg(feature = "diagnose")]
40655		if let Ok(ret) = ret {
40656			return to_result("glCopyTexSubImage3D", ret, (self.version_1_2.geterror)());
40657		} else {
40658			return ret
40659		}
40660		#[cfg(not(feature = "diagnose"))]
40661		return ret;
40662	}
40663}
40664
40665impl GL_1_3_g for GLCore {
40666	#[inline(always)]
40667	fn glActiveTexture(&self, texture: GLenum) -> Result<()> {
40668		let ret = process_catch("glActiveTexture", catch_unwind(||(self.version_1_3.activetexture)(texture)));
40669		#[cfg(feature = "diagnose")]
40670		if let Ok(ret) = ret {
40671			return to_result("glActiveTexture", ret, (self.version_1_3.geterror)());
40672		} else {
40673			return ret
40674		}
40675		#[cfg(not(feature = "diagnose"))]
40676		return ret;
40677	}
40678	#[inline(always)]
40679	fn glSampleCoverage(&self, value: GLfloat, invert: GLboolean) -> Result<()> {
40680		let ret = process_catch("glSampleCoverage", catch_unwind(||(self.version_1_3.samplecoverage)(value, invert)));
40681		#[cfg(feature = "diagnose")]
40682		if let Ok(ret) = ret {
40683			return to_result("glSampleCoverage", ret, (self.version_1_3.geterror)());
40684		} else {
40685			return ret
40686		}
40687		#[cfg(not(feature = "diagnose"))]
40688		return ret;
40689	}
40690	#[inline(always)]
40691	fn glCompressedTexImage3D(&self, target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, border: GLint, imageSize: GLsizei, data: *const c_void) -> Result<()> {
40692		let ret = process_catch("glCompressedTexImage3D", catch_unwind(||(self.version_1_3.compressedteximage3d)(target, level, internalformat, width, height, depth, border, imageSize, data)));
40693		#[cfg(feature = "diagnose")]
40694		if let Ok(ret) = ret {
40695			return to_result("glCompressedTexImage3D", ret, (self.version_1_3.geterror)());
40696		} else {
40697			return ret
40698		}
40699		#[cfg(not(feature = "diagnose"))]
40700		return ret;
40701	}
40702	#[inline(always)]
40703	fn glCompressedTexImage2D(&self, target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, height: GLsizei, border: GLint, imageSize: GLsizei, data: *const c_void) -> Result<()> {
40704		let ret = process_catch("glCompressedTexImage2D", catch_unwind(||(self.version_1_3.compressedteximage2d)(target, level, internalformat, width, height, border, imageSize, data)));
40705		#[cfg(feature = "diagnose")]
40706		if let Ok(ret) = ret {
40707			return to_result("glCompressedTexImage2D", ret, (self.version_1_3.geterror)());
40708		} else {
40709			return ret
40710		}
40711		#[cfg(not(feature = "diagnose"))]
40712		return ret;
40713	}
40714	#[inline(always)]
40715	fn glCompressedTexImage1D(&self, target: GLenum, level: GLint, internalformat: GLenum, width: GLsizei, border: GLint, imageSize: GLsizei, data: *const c_void) -> Result<()> {
40716		let ret = process_catch("glCompressedTexImage1D", catch_unwind(||(self.version_1_3.compressedteximage1d)(target, level, internalformat, width, border, imageSize, data)));
40717		#[cfg(feature = "diagnose")]
40718		if let Ok(ret) = ret {
40719			return to_result("glCompressedTexImage1D", ret, (self.version_1_3.geterror)());
40720		} else {
40721			return ret
40722		}
40723		#[cfg(not(feature = "diagnose"))]
40724		return ret;
40725	}
40726	#[inline(always)]
40727	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<()> {
40728		let ret = process_catch("glCompressedTexSubImage3D", catch_unwind(||(self.version_1_3.compressedtexsubimage3d)(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data)));
40729		#[cfg(feature = "diagnose")]
40730		if let Ok(ret) = ret {
40731			return to_result("glCompressedTexSubImage3D", ret, (self.version_1_3.geterror)());
40732		} else {
40733			return ret
40734		}
40735		#[cfg(not(feature = "diagnose"))]
40736		return ret;
40737	}
40738	#[inline(always)]
40739	fn glCompressedTexSubImage2D(&self, target: GLenum, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()> {
40740		let ret = process_catch("glCompressedTexSubImage2D", catch_unwind(||(self.version_1_3.compressedtexsubimage2d)(target, level, xoffset, yoffset, width, height, format, imageSize, data)));
40741		#[cfg(feature = "diagnose")]
40742		if let Ok(ret) = ret {
40743			return to_result("glCompressedTexSubImage2D", ret, (self.version_1_3.geterror)());
40744		} else {
40745			return ret
40746		}
40747		#[cfg(not(feature = "diagnose"))]
40748		return ret;
40749	}
40750	#[inline(always)]
40751	fn glCompressedTexSubImage1D(&self, target: GLenum, level: GLint, xoffset: GLint, width: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()> {
40752		let ret = process_catch("glCompressedTexSubImage1D", catch_unwind(||(self.version_1_3.compressedtexsubimage1d)(target, level, xoffset, width, format, imageSize, data)));
40753		#[cfg(feature = "diagnose")]
40754		if let Ok(ret) = ret {
40755			return to_result("glCompressedTexSubImage1D", ret, (self.version_1_3.geterror)());
40756		} else {
40757			return ret
40758		}
40759		#[cfg(not(feature = "diagnose"))]
40760		return ret;
40761	}
40762	#[inline(always)]
40763	fn glGetCompressedTexImage(&self, target: GLenum, level: GLint, img: *mut c_void) -> Result<()> {
40764		let ret = process_catch("glGetCompressedTexImage", catch_unwind(||(self.version_1_3.getcompressedteximage)(target, level, img)));
40765		#[cfg(feature = "diagnose")]
40766		if let Ok(ret) = ret {
40767			return to_result("glGetCompressedTexImage", ret, (self.version_1_3.geterror)());
40768		} else {
40769			return ret
40770		}
40771		#[cfg(not(feature = "diagnose"))]
40772		return ret;
40773	}
40774	#[inline(always)]
40775	fn glClientActiveTexture(&self, texture: GLenum) -> Result<()> {
40776		let ret = process_catch("glClientActiveTexture", catch_unwind(||(self.version_1_3.clientactivetexture)(texture)));
40777		#[cfg(feature = "diagnose")]
40778		if let Ok(ret) = ret {
40779			return to_result("glClientActiveTexture", ret, (self.version_1_3.geterror)());
40780		} else {
40781			return ret
40782		}
40783		#[cfg(not(feature = "diagnose"))]
40784		return ret;
40785	}
40786	#[inline(always)]
40787	fn glMultiTexCoord1d(&self, target: GLenum, s: GLdouble) -> Result<()> {
40788		let ret = process_catch("glMultiTexCoord1d", catch_unwind(||(self.version_1_3.multitexcoord1d)(target, s)));
40789		#[cfg(feature = "diagnose")]
40790		if let Ok(ret) = ret {
40791			return to_result("glMultiTexCoord1d", ret, (self.version_1_3.geterror)());
40792		} else {
40793			return ret
40794		}
40795		#[cfg(not(feature = "diagnose"))]
40796		return ret;
40797	}
40798	#[inline(always)]
40799	fn glMultiTexCoord1dv(&self, target: GLenum, v: *const GLdouble) -> Result<()> {
40800		let ret = process_catch("glMultiTexCoord1dv", catch_unwind(||(self.version_1_3.multitexcoord1dv)(target, v)));
40801		#[cfg(feature = "diagnose")]
40802		if let Ok(ret) = ret {
40803			return to_result("glMultiTexCoord1dv", ret, (self.version_1_3.geterror)());
40804		} else {
40805			return ret
40806		}
40807		#[cfg(not(feature = "diagnose"))]
40808		return ret;
40809	}
40810	#[inline(always)]
40811	fn glMultiTexCoord1f(&self, target: GLenum, s: GLfloat) -> Result<()> {
40812		let ret = process_catch("glMultiTexCoord1f", catch_unwind(||(self.version_1_3.multitexcoord1f)(target, s)));
40813		#[cfg(feature = "diagnose")]
40814		if let Ok(ret) = ret {
40815			return to_result("glMultiTexCoord1f", ret, (self.version_1_3.geterror)());
40816		} else {
40817			return ret
40818		}
40819		#[cfg(not(feature = "diagnose"))]
40820		return ret;
40821	}
40822	#[inline(always)]
40823	fn glMultiTexCoord1fv(&self, target: GLenum, v: *const GLfloat) -> Result<()> {
40824		let ret = process_catch("glMultiTexCoord1fv", catch_unwind(||(self.version_1_3.multitexcoord1fv)(target, v)));
40825		#[cfg(feature = "diagnose")]
40826		if let Ok(ret) = ret {
40827			return to_result("glMultiTexCoord1fv", ret, (self.version_1_3.geterror)());
40828		} else {
40829			return ret
40830		}
40831		#[cfg(not(feature = "diagnose"))]
40832		return ret;
40833	}
40834	#[inline(always)]
40835	fn glMultiTexCoord1i(&self, target: GLenum, s: GLint) -> Result<()> {
40836		let ret = process_catch("glMultiTexCoord1i", catch_unwind(||(self.version_1_3.multitexcoord1i)(target, s)));
40837		#[cfg(feature = "diagnose")]
40838		if let Ok(ret) = ret {
40839			return to_result("glMultiTexCoord1i", ret, (self.version_1_3.geterror)());
40840		} else {
40841			return ret
40842		}
40843		#[cfg(not(feature = "diagnose"))]
40844		return ret;
40845	}
40846	#[inline(always)]
40847	fn glMultiTexCoord1iv(&self, target: GLenum, v: *const GLint) -> Result<()> {
40848		let ret = process_catch("glMultiTexCoord1iv", catch_unwind(||(self.version_1_3.multitexcoord1iv)(target, v)));
40849		#[cfg(feature = "diagnose")]
40850		if let Ok(ret) = ret {
40851			return to_result("glMultiTexCoord1iv", ret, (self.version_1_3.geterror)());
40852		} else {
40853			return ret
40854		}
40855		#[cfg(not(feature = "diagnose"))]
40856		return ret;
40857	}
40858	#[inline(always)]
40859	fn glMultiTexCoord1s(&self, target: GLenum, s: GLshort) -> Result<()> {
40860		let ret = process_catch("glMultiTexCoord1s", catch_unwind(||(self.version_1_3.multitexcoord1s)(target, s)));
40861		#[cfg(feature = "diagnose")]
40862		if let Ok(ret) = ret {
40863			return to_result("glMultiTexCoord1s", ret, (self.version_1_3.geterror)());
40864		} else {
40865			return ret
40866		}
40867		#[cfg(not(feature = "diagnose"))]
40868		return ret;
40869	}
40870	#[inline(always)]
40871	fn glMultiTexCoord1sv(&self, target: GLenum, v: *const GLshort) -> Result<()> {
40872		let ret = process_catch("glMultiTexCoord1sv", catch_unwind(||(self.version_1_3.multitexcoord1sv)(target, v)));
40873		#[cfg(feature = "diagnose")]
40874		if let Ok(ret) = ret {
40875			return to_result("glMultiTexCoord1sv", ret, (self.version_1_3.geterror)());
40876		} else {
40877			return ret
40878		}
40879		#[cfg(not(feature = "diagnose"))]
40880		return ret;
40881	}
40882	#[inline(always)]
40883	fn glMultiTexCoord2d(&self, target: GLenum, s: GLdouble, t: GLdouble) -> Result<()> {
40884		let ret = process_catch("glMultiTexCoord2d", catch_unwind(||(self.version_1_3.multitexcoord2d)(target, s, t)));
40885		#[cfg(feature = "diagnose")]
40886		if let Ok(ret) = ret {
40887			return to_result("glMultiTexCoord2d", ret, (self.version_1_3.geterror)());
40888		} else {
40889			return ret
40890		}
40891		#[cfg(not(feature = "diagnose"))]
40892		return ret;
40893	}
40894	#[inline(always)]
40895	fn glMultiTexCoord2dv(&self, target: GLenum, v: *const GLdouble) -> Result<()> {
40896		let ret = process_catch("glMultiTexCoord2dv", catch_unwind(||(self.version_1_3.multitexcoord2dv)(target, v)));
40897		#[cfg(feature = "diagnose")]
40898		if let Ok(ret) = ret {
40899			return to_result("glMultiTexCoord2dv", ret, (self.version_1_3.geterror)());
40900		} else {
40901			return ret
40902		}
40903		#[cfg(not(feature = "diagnose"))]
40904		return ret;
40905	}
40906	#[inline(always)]
40907	fn glMultiTexCoord2f(&self, target: GLenum, s: GLfloat, t: GLfloat) -> Result<()> {
40908		let ret = process_catch("glMultiTexCoord2f", catch_unwind(||(self.version_1_3.multitexcoord2f)(target, s, t)));
40909		#[cfg(feature = "diagnose")]
40910		if let Ok(ret) = ret {
40911			return to_result("glMultiTexCoord2f", ret, (self.version_1_3.geterror)());
40912		} else {
40913			return ret
40914		}
40915		#[cfg(not(feature = "diagnose"))]
40916		return ret;
40917	}
40918	#[inline(always)]
40919	fn glMultiTexCoord2fv(&self, target: GLenum, v: *const GLfloat) -> Result<()> {
40920		let ret = process_catch("glMultiTexCoord2fv", catch_unwind(||(self.version_1_3.multitexcoord2fv)(target, v)));
40921		#[cfg(feature = "diagnose")]
40922		if let Ok(ret) = ret {
40923			return to_result("glMultiTexCoord2fv", ret, (self.version_1_3.geterror)());
40924		} else {
40925			return ret
40926		}
40927		#[cfg(not(feature = "diagnose"))]
40928		return ret;
40929	}
40930	#[inline(always)]
40931	fn glMultiTexCoord2i(&self, target: GLenum, s: GLint, t: GLint) -> Result<()> {
40932		let ret = process_catch("glMultiTexCoord2i", catch_unwind(||(self.version_1_3.multitexcoord2i)(target, s, t)));
40933		#[cfg(feature = "diagnose")]
40934		if let Ok(ret) = ret {
40935			return to_result("glMultiTexCoord2i", ret, (self.version_1_3.geterror)());
40936		} else {
40937			return ret
40938		}
40939		#[cfg(not(feature = "diagnose"))]
40940		return ret;
40941	}
40942	#[inline(always)]
40943	fn glMultiTexCoord2iv(&self, target: GLenum, v: *const GLint) -> Result<()> {
40944		let ret = process_catch("glMultiTexCoord2iv", catch_unwind(||(self.version_1_3.multitexcoord2iv)(target, v)));
40945		#[cfg(feature = "diagnose")]
40946		if let Ok(ret) = ret {
40947			return to_result("glMultiTexCoord2iv", ret, (self.version_1_3.geterror)());
40948		} else {
40949			return ret
40950		}
40951		#[cfg(not(feature = "diagnose"))]
40952		return ret;
40953	}
40954	#[inline(always)]
40955	fn glMultiTexCoord2s(&self, target: GLenum, s: GLshort, t: GLshort) -> Result<()> {
40956		let ret = process_catch("glMultiTexCoord2s", catch_unwind(||(self.version_1_3.multitexcoord2s)(target, s, t)));
40957		#[cfg(feature = "diagnose")]
40958		if let Ok(ret) = ret {
40959			return to_result("glMultiTexCoord2s", ret, (self.version_1_3.geterror)());
40960		} else {
40961			return ret
40962		}
40963		#[cfg(not(feature = "diagnose"))]
40964		return ret;
40965	}
40966	#[inline(always)]
40967	fn glMultiTexCoord2sv(&self, target: GLenum, v: *const GLshort) -> Result<()> {
40968		let ret = process_catch("glMultiTexCoord2sv", catch_unwind(||(self.version_1_3.multitexcoord2sv)(target, v)));
40969		#[cfg(feature = "diagnose")]
40970		if let Ok(ret) = ret {
40971			return to_result("glMultiTexCoord2sv", ret, (self.version_1_3.geterror)());
40972		} else {
40973			return ret
40974		}
40975		#[cfg(not(feature = "diagnose"))]
40976		return ret;
40977	}
40978	#[inline(always)]
40979	fn glMultiTexCoord3d(&self, target: GLenum, s: GLdouble, t: GLdouble, r: GLdouble) -> Result<()> {
40980		let ret = process_catch("glMultiTexCoord3d", catch_unwind(||(self.version_1_3.multitexcoord3d)(target, s, t, r)));
40981		#[cfg(feature = "diagnose")]
40982		if let Ok(ret) = ret {
40983			return to_result("glMultiTexCoord3d", ret, (self.version_1_3.geterror)());
40984		} else {
40985			return ret
40986		}
40987		#[cfg(not(feature = "diagnose"))]
40988		return ret;
40989	}
40990	#[inline(always)]
40991	fn glMultiTexCoord3dv(&self, target: GLenum, v: *const GLdouble) -> Result<()> {
40992		let ret = process_catch("glMultiTexCoord3dv", catch_unwind(||(self.version_1_3.multitexcoord3dv)(target, v)));
40993		#[cfg(feature = "diagnose")]
40994		if let Ok(ret) = ret {
40995			return to_result("glMultiTexCoord3dv", ret, (self.version_1_3.geterror)());
40996		} else {
40997			return ret
40998		}
40999		#[cfg(not(feature = "diagnose"))]
41000		return ret;
41001	}
41002	#[inline(always)]
41003	fn glMultiTexCoord3f(&self, target: GLenum, s: GLfloat, t: GLfloat, r: GLfloat) -> Result<()> {
41004		let ret = process_catch("glMultiTexCoord3f", catch_unwind(||(self.version_1_3.multitexcoord3f)(target, s, t, r)));
41005		#[cfg(feature = "diagnose")]
41006		if let Ok(ret) = ret {
41007			return to_result("glMultiTexCoord3f", ret, (self.version_1_3.geterror)());
41008		} else {
41009			return ret
41010		}
41011		#[cfg(not(feature = "diagnose"))]
41012		return ret;
41013	}
41014	#[inline(always)]
41015	fn glMultiTexCoord3fv(&self, target: GLenum, v: *const GLfloat) -> Result<()> {
41016		let ret = process_catch("glMultiTexCoord3fv", catch_unwind(||(self.version_1_3.multitexcoord3fv)(target, v)));
41017		#[cfg(feature = "diagnose")]
41018		if let Ok(ret) = ret {
41019			return to_result("glMultiTexCoord3fv", ret, (self.version_1_3.geterror)());
41020		} else {
41021			return ret
41022		}
41023		#[cfg(not(feature = "diagnose"))]
41024		return ret;
41025	}
41026	#[inline(always)]
41027	fn glMultiTexCoord3i(&self, target: GLenum, s: GLint, t: GLint, r: GLint) -> Result<()> {
41028		let ret = process_catch("glMultiTexCoord3i", catch_unwind(||(self.version_1_3.multitexcoord3i)(target, s, t, r)));
41029		#[cfg(feature = "diagnose")]
41030		if let Ok(ret) = ret {
41031			return to_result("glMultiTexCoord3i", ret, (self.version_1_3.geterror)());
41032		} else {
41033			return ret
41034		}
41035		#[cfg(not(feature = "diagnose"))]
41036		return ret;
41037	}
41038	#[inline(always)]
41039	fn glMultiTexCoord3iv(&self, target: GLenum, v: *const GLint) -> Result<()> {
41040		let ret = process_catch("glMultiTexCoord3iv", catch_unwind(||(self.version_1_3.multitexcoord3iv)(target, v)));
41041		#[cfg(feature = "diagnose")]
41042		if let Ok(ret) = ret {
41043			return to_result("glMultiTexCoord3iv", ret, (self.version_1_3.geterror)());
41044		} else {
41045			return ret
41046		}
41047		#[cfg(not(feature = "diagnose"))]
41048		return ret;
41049	}
41050	#[inline(always)]
41051	fn glMultiTexCoord3s(&self, target: GLenum, s: GLshort, t: GLshort, r: GLshort) -> Result<()> {
41052		let ret = process_catch("glMultiTexCoord3s", catch_unwind(||(self.version_1_3.multitexcoord3s)(target, s, t, r)));
41053		#[cfg(feature = "diagnose")]
41054		if let Ok(ret) = ret {
41055			return to_result("glMultiTexCoord3s", ret, (self.version_1_3.geterror)());
41056		} else {
41057			return ret
41058		}
41059		#[cfg(not(feature = "diagnose"))]
41060		return ret;
41061	}
41062	#[inline(always)]
41063	fn glMultiTexCoord3sv(&self, target: GLenum, v: *const GLshort) -> Result<()> {
41064		let ret = process_catch("glMultiTexCoord3sv", catch_unwind(||(self.version_1_3.multitexcoord3sv)(target, v)));
41065		#[cfg(feature = "diagnose")]
41066		if let Ok(ret) = ret {
41067			return to_result("glMultiTexCoord3sv", ret, (self.version_1_3.geterror)());
41068		} else {
41069			return ret
41070		}
41071		#[cfg(not(feature = "diagnose"))]
41072		return ret;
41073	}
41074	#[inline(always)]
41075	fn glMultiTexCoord4d(&self, target: GLenum, s: GLdouble, t: GLdouble, r: GLdouble, q: GLdouble) -> Result<()> {
41076		let ret = process_catch("glMultiTexCoord4d", catch_unwind(||(self.version_1_3.multitexcoord4d)(target, s, t, r, q)));
41077		#[cfg(feature = "diagnose")]
41078		if let Ok(ret) = ret {
41079			return to_result("glMultiTexCoord4d", ret, (self.version_1_3.geterror)());
41080		} else {
41081			return ret
41082		}
41083		#[cfg(not(feature = "diagnose"))]
41084		return ret;
41085	}
41086	#[inline(always)]
41087	fn glMultiTexCoord4dv(&self, target: GLenum, v: *const GLdouble) -> Result<()> {
41088		let ret = process_catch("glMultiTexCoord4dv", catch_unwind(||(self.version_1_3.multitexcoord4dv)(target, v)));
41089		#[cfg(feature = "diagnose")]
41090		if let Ok(ret) = ret {
41091			return to_result("glMultiTexCoord4dv", ret, (self.version_1_3.geterror)());
41092		} else {
41093			return ret
41094		}
41095		#[cfg(not(feature = "diagnose"))]
41096		return ret;
41097	}
41098	#[inline(always)]
41099	fn glMultiTexCoord4f(&self, target: GLenum, s: GLfloat, t: GLfloat, r: GLfloat, q: GLfloat) -> Result<()> {
41100		let ret = process_catch("glMultiTexCoord4f", catch_unwind(||(self.version_1_3.multitexcoord4f)(target, s, t, r, q)));
41101		#[cfg(feature = "diagnose")]
41102		if let Ok(ret) = ret {
41103			return to_result("glMultiTexCoord4f", ret, (self.version_1_3.geterror)());
41104		} else {
41105			return ret
41106		}
41107		#[cfg(not(feature = "diagnose"))]
41108		return ret;
41109	}
41110	#[inline(always)]
41111	fn glMultiTexCoord4fv(&self, target: GLenum, v: *const GLfloat) -> Result<()> {
41112		let ret = process_catch("glMultiTexCoord4fv", catch_unwind(||(self.version_1_3.multitexcoord4fv)(target, v)));
41113		#[cfg(feature = "diagnose")]
41114		if let Ok(ret) = ret {
41115			return to_result("glMultiTexCoord4fv", ret, (self.version_1_3.geterror)());
41116		} else {
41117			return ret
41118		}
41119		#[cfg(not(feature = "diagnose"))]
41120		return ret;
41121	}
41122	#[inline(always)]
41123	fn glMultiTexCoord4i(&self, target: GLenum, s: GLint, t: GLint, r: GLint, q: GLint) -> Result<()> {
41124		let ret = process_catch("glMultiTexCoord4i", catch_unwind(||(self.version_1_3.multitexcoord4i)(target, s, t, r, q)));
41125		#[cfg(feature = "diagnose")]
41126		if let Ok(ret) = ret {
41127			return to_result("glMultiTexCoord4i", ret, (self.version_1_3.geterror)());
41128		} else {
41129			return ret
41130		}
41131		#[cfg(not(feature = "diagnose"))]
41132		return ret;
41133	}
41134	#[inline(always)]
41135	fn glMultiTexCoord4iv(&self, target: GLenum, v: *const GLint) -> Result<()> {
41136		let ret = process_catch("glMultiTexCoord4iv", catch_unwind(||(self.version_1_3.multitexcoord4iv)(target, v)));
41137		#[cfg(feature = "diagnose")]
41138		if let Ok(ret) = ret {
41139			return to_result("glMultiTexCoord4iv", ret, (self.version_1_3.geterror)());
41140		} else {
41141			return ret
41142		}
41143		#[cfg(not(feature = "diagnose"))]
41144		return ret;
41145	}
41146	#[inline(always)]
41147	fn glMultiTexCoord4s(&self, target: GLenum, s: GLshort, t: GLshort, r: GLshort, q: GLshort) -> Result<()> {
41148		let ret = process_catch("glMultiTexCoord4s", catch_unwind(||(self.version_1_3.multitexcoord4s)(target, s, t, r, q)));
41149		#[cfg(feature = "diagnose")]
41150		if let Ok(ret) = ret {
41151			return to_result("glMultiTexCoord4s", ret, (self.version_1_3.geterror)());
41152		} else {
41153			return ret
41154		}
41155		#[cfg(not(feature = "diagnose"))]
41156		return ret;
41157	}
41158	#[inline(always)]
41159	fn glMultiTexCoord4sv(&self, target: GLenum, v: *const GLshort) -> Result<()> {
41160		let ret = process_catch("glMultiTexCoord4sv", catch_unwind(||(self.version_1_3.multitexcoord4sv)(target, v)));
41161		#[cfg(feature = "diagnose")]
41162		if let Ok(ret) = ret {
41163			return to_result("glMultiTexCoord4sv", ret, (self.version_1_3.geterror)());
41164		} else {
41165			return ret
41166		}
41167		#[cfg(not(feature = "diagnose"))]
41168		return ret;
41169	}
41170	#[inline(always)]
41171	fn glLoadTransposeMatrixf(&self, m: *const GLfloat) -> Result<()> {
41172		let ret = process_catch("glLoadTransposeMatrixf", catch_unwind(||(self.version_1_3.loadtransposematrixf)(m)));
41173		#[cfg(feature = "diagnose")]
41174		if let Ok(ret) = ret {
41175			return to_result("glLoadTransposeMatrixf", ret, (self.version_1_3.geterror)());
41176		} else {
41177			return ret
41178		}
41179		#[cfg(not(feature = "diagnose"))]
41180		return ret;
41181	}
41182	#[inline(always)]
41183	fn glLoadTransposeMatrixd(&self, m: *const GLdouble) -> Result<()> {
41184		let ret = process_catch("glLoadTransposeMatrixd", catch_unwind(||(self.version_1_3.loadtransposematrixd)(m)));
41185		#[cfg(feature = "diagnose")]
41186		if let Ok(ret) = ret {
41187			return to_result("glLoadTransposeMatrixd", ret, (self.version_1_3.geterror)());
41188		} else {
41189			return ret
41190		}
41191		#[cfg(not(feature = "diagnose"))]
41192		return ret;
41193	}
41194	#[inline(always)]
41195	fn glMultTransposeMatrixf(&self, m: *const GLfloat) -> Result<()> {
41196		let ret = process_catch("glMultTransposeMatrixf", catch_unwind(||(self.version_1_3.multtransposematrixf)(m)));
41197		#[cfg(feature = "diagnose")]
41198		if let Ok(ret) = ret {
41199			return to_result("glMultTransposeMatrixf", ret, (self.version_1_3.geterror)());
41200		} else {
41201			return ret
41202		}
41203		#[cfg(not(feature = "diagnose"))]
41204		return ret;
41205	}
41206	#[inline(always)]
41207	fn glMultTransposeMatrixd(&self, m: *const GLdouble) -> Result<()> {
41208		let ret = process_catch("glMultTransposeMatrixd", catch_unwind(||(self.version_1_3.multtransposematrixd)(m)));
41209		#[cfg(feature = "diagnose")]
41210		if let Ok(ret) = ret {
41211			return to_result("glMultTransposeMatrixd", ret, (self.version_1_3.geterror)());
41212		} else {
41213			return ret
41214		}
41215		#[cfg(not(feature = "diagnose"))]
41216		return ret;
41217	}
41218}
41219
41220impl GL_1_4_g for GLCore {
41221	#[inline(always)]
41222	fn glBlendFuncSeparate(&self, sfactorRGB: GLenum, dfactorRGB: GLenum, sfactorAlpha: GLenum, dfactorAlpha: GLenum) -> Result<()> {
41223		let ret = process_catch("glBlendFuncSeparate", catch_unwind(||(self.version_1_4.blendfuncseparate)(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha)));
41224		#[cfg(feature = "diagnose")]
41225		if let Ok(ret) = ret {
41226			return to_result("glBlendFuncSeparate", ret, (self.version_1_4.geterror)());
41227		} else {
41228			return ret
41229		}
41230		#[cfg(not(feature = "diagnose"))]
41231		return ret;
41232	}
41233	#[inline(always)]
41234	fn glMultiDrawArrays(&self, mode: GLenum, first: *const GLint, count: *const GLsizei, drawcount: GLsizei) -> Result<()> {
41235		let ret = process_catch("glMultiDrawArrays", catch_unwind(||(self.version_1_4.multidrawarrays)(mode, first, count, drawcount)));
41236		#[cfg(feature = "diagnose")]
41237		if let Ok(ret) = ret {
41238			return to_result("glMultiDrawArrays", ret, (self.version_1_4.geterror)());
41239		} else {
41240			return ret
41241		}
41242		#[cfg(not(feature = "diagnose"))]
41243		return ret;
41244	}
41245	#[inline(always)]
41246	fn glMultiDrawElements(&self, mode: GLenum, count: *const GLsizei, type_: GLenum, indices: *const *const c_void, drawcount: GLsizei) -> Result<()> {
41247		let ret = process_catch("glMultiDrawElements", catch_unwind(||(self.version_1_4.multidrawelements)(mode, count, type_, indices, drawcount)));
41248		#[cfg(feature = "diagnose")]
41249		if let Ok(ret) = ret {
41250			return to_result("glMultiDrawElements", ret, (self.version_1_4.geterror)());
41251		} else {
41252			return ret
41253		}
41254		#[cfg(not(feature = "diagnose"))]
41255		return ret;
41256	}
41257	#[inline(always)]
41258	fn glPointParameterf(&self, pname: GLenum, param: GLfloat) -> Result<()> {
41259		let ret = process_catch("glPointParameterf", catch_unwind(||(self.version_1_4.pointparameterf)(pname, param)));
41260		#[cfg(feature = "diagnose")]
41261		if let Ok(ret) = ret {
41262			return to_result("glPointParameterf", ret, (self.version_1_4.geterror)());
41263		} else {
41264			return ret
41265		}
41266		#[cfg(not(feature = "diagnose"))]
41267		return ret;
41268	}
41269	#[inline(always)]
41270	fn glPointParameterfv(&self, pname: GLenum, params: *const GLfloat) -> Result<()> {
41271		let ret = process_catch("glPointParameterfv", catch_unwind(||(self.version_1_4.pointparameterfv)(pname, params)));
41272		#[cfg(feature = "diagnose")]
41273		if let Ok(ret) = ret {
41274			return to_result("glPointParameterfv", ret, (self.version_1_4.geterror)());
41275		} else {
41276			return ret
41277		}
41278		#[cfg(not(feature = "diagnose"))]
41279		return ret;
41280	}
41281	#[inline(always)]
41282	fn glPointParameteri(&self, pname: GLenum, param: GLint) -> Result<()> {
41283		let ret = process_catch("glPointParameteri", catch_unwind(||(self.version_1_4.pointparameteri)(pname, param)));
41284		#[cfg(feature = "diagnose")]
41285		if let Ok(ret) = ret {
41286			return to_result("glPointParameteri", ret, (self.version_1_4.geterror)());
41287		} else {
41288			return ret
41289		}
41290		#[cfg(not(feature = "diagnose"))]
41291		return ret;
41292	}
41293	#[inline(always)]
41294	fn glPointParameteriv(&self, pname: GLenum, params: *const GLint) -> Result<()> {
41295		let ret = process_catch("glPointParameteriv", catch_unwind(||(self.version_1_4.pointparameteriv)(pname, params)));
41296		#[cfg(feature = "diagnose")]
41297		if let Ok(ret) = ret {
41298			return to_result("glPointParameteriv", ret, (self.version_1_4.geterror)());
41299		} else {
41300			return ret
41301		}
41302		#[cfg(not(feature = "diagnose"))]
41303		return ret;
41304	}
41305	#[inline(always)]
41306	fn glFogCoordf(&self, coord: GLfloat) -> Result<()> {
41307		let ret = process_catch("glFogCoordf", catch_unwind(||(self.version_1_4.fogcoordf)(coord)));
41308		#[cfg(feature = "diagnose")]
41309		if let Ok(ret) = ret {
41310			return to_result("glFogCoordf", ret, (self.version_1_4.geterror)());
41311		} else {
41312			return ret
41313		}
41314		#[cfg(not(feature = "diagnose"))]
41315		return ret;
41316	}
41317	#[inline(always)]
41318	fn glFogCoordfv(&self, coord: *const GLfloat) -> Result<()> {
41319		let ret = process_catch("glFogCoordfv", catch_unwind(||(self.version_1_4.fogcoordfv)(coord)));
41320		#[cfg(feature = "diagnose")]
41321		if let Ok(ret) = ret {
41322			return to_result("glFogCoordfv", ret, (self.version_1_4.geterror)());
41323		} else {
41324			return ret
41325		}
41326		#[cfg(not(feature = "diagnose"))]
41327		return ret;
41328	}
41329	#[inline(always)]
41330	fn glFogCoordd(&self, coord: GLdouble) -> Result<()> {
41331		let ret = process_catch("glFogCoordd", catch_unwind(||(self.version_1_4.fogcoordd)(coord)));
41332		#[cfg(feature = "diagnose")]
41333		if let Ok(ret) = ret {
41334			return to_result("glFogCoordd", ret, (self.version_1_4.geterror)());
41335		} else {
41336			return ret
41337		}
41338		#[cfg(not(feature = "diagnose"))]
41339		return ret;
41340	}
41341	#[inline(always)]
41342	fn glFogCoorddv(&self, coord: *const GLdouble) -> Result<()> {
41343		let ret = process_catch("glFogCoorddv", catch_unwind(||(self.version_1_4.fogcoorddv)(coord)));
41344		#[cfg(feature = "diagnose")]
41345		if let Ok(ret) = ret {
41346			return to_result("glFogCoorddv", ret, (self.version_1_4.geterror)());
41347		} else {
41348			return ret
41349		}
41350		#[cfg(not(feature = "diagnose"))]
41351		return ret;
41352	}
41353	#[inline(always)]
41354	fn glFogCoordPointer(&self, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()> {
41355		let ret = process_catch("glFogCoordPointer", catch_unwind(||(self.version_1_4.fogcoordpointer)(type_, stride, pointer)));
41356		#[cfg(feature = "diagnose")]
41357		if let Ok(ret) = ret {
41358			return to_result("glFogCoordPointer", ret, (self.version_1_4.geterror)());
41359		} else {
41360			return ret
41361		}
41362		#[cfg(not(feature = "diagnose"))]
41363		return ret;
41364	}
41365	#[inline(always)]
41366	fn glSecondaryColor3b(&self, red: GLbyte, green: GLbyte, blue: GLbyte) -> Result<()> {
41367		let ret = process_catch("glSecondaryColor3b", catch_unwind(||(self.version_1_4.secondarycolor3b)(red, green, blue)));
41368		#[cfg(feature = "diagnose")]
41369		if let Ok(ret) = ret {
41370			return to_result("glSecondaryColor3b", ret, (self.version_1_4.geterror)());
41371		} else {
41372			return ret
41373		}
41374		#[cfg(not(feature = "diagnose"))]
41375		return ret;
41376	}
41377	#[inline(always)]
41378	fn glSecondaryColor3bv(&self, v: *const GLbyte) -> Result<()> {
41379		let ret = process_catch("glSecondaryColor3bv", catch_unwind(||(self.version_1_4.secondarycolor3bv)(v)));
41380		#[cfg(feature = "diagnose")]
41381		if let Ok(ret) = ret {
41382			return to_result("glSecondaryColor3bv", ret, (self.version_1_4.geterror)());
41383		} else {
41384			return ret
41385		}
41386		#[cfg(not(feature = "diagnose"))]
41387		return ret;
41388	}
41389	#[inline(always)]
41390	fn glSecondaryColor3d(&self, red: GLdouble, green: GLdouble, blue: GLdouble) -> Result<()> {
41391		let ret = process_catch("glSecondaryColor3d", catch_unwind(||(self.version_1_4.secondarycolor3d)(red, green, blue)));
41392		#[cfg(feature = "diagnose")]
41393		if let Ok(ret) = ret {
41394			return to_result("glSecondaryColor3d", ret, (self.version_1_4.geterror)());
41395		} else {
41396			return ret
41397		}
41398		#[cfg(not(feature = "diagnose"))]
41399		return ret;
41400	}
41401	#[inline(always)]
41402	fn glSecondaryColor3dv(&self, v: *const GLdouble) -> Result<()> {
41403		let ret = process_catch("glSecondaryColor3dv", catch_unwind(||(self.version_1_4.secondarycolor3dv)(v)));
41404		#[cfg(feature = "diagnose")]
41405		if let Ok(ret) = ret {
41406			return to_result("glSecondaryColor3dv", ret, (self.version_1_4.geterror)());
41407		} else {
41408			return ret
41409		}
41410		#[cfg(not(feature = "diagnose"))]
41411		return ret;
41412	}
41413	#[inline(always)]
41414	fn glSecondaryColor3f(&self, red: GLfloat, green: GLfloat, blue: GLfloat) -> Result<()> {
41415		let ret = process_catch("glSecondaryColor3f", catch_unwind(||(self.version_1_4.secondarycolor3f)(red, green, blue)));
41416		#[cfg(feature = "diagnose")]
41417		if let Ok(ret) = ret {
41418			return to_result("glSecondaryColor3f", ret, (self.version_1_4.geterror)());
41419		} else {
41420			return ret
41421		}
41422		#[cfg(not(feature = "diagnose"))]
41423		return ret;
41424	}
41425	#[inline(always)]
41426	fn glSecondaryColor3fv(&self, v: *const GLfloat) -> Result<()> {
41427		let ret = process_catch("glSecondaryColor3fv", catch_unwind(||(self.version_1_4.secondarycolor3fv)(v)));
41428		#[cfg(feature = "diagnose")]
41429		if let Ok(ret) = ret {
41430			return to_result("glSecondaryColor3fv", ret, (self.version_1_4.geterror)());
41431		} else {
41432			return ret
41433		}
41434		#[cfg(not(feature = "diagnose"))]
41435		return ret;
41436	}
41437	#[inline(always)]
41438	fn glSecondaryColor3i(&self, red: GLint, green: GLint, blue: GLint) -> Result<()> {
41439		let ret = process_catch("glSecondaryColor3i", catch_unwind(||(self.version_1_4.secondarycolor3i)(red, green, blue)));
41440		#[cfg(feature = "diagnose")]
41441		if let Ok(ret) = ret {
41442			return to_result("glSecondaryColor3i", ret, (self.version_1_4.geterror)());
41443		} else {
41444			return ret
41445		}
41446		#[cfg(not(feature = "diagnose"))]
41447		return ret;
41448	}
41449	#[inline(always)]
41450	fn glSecondaryColor3iv(&self, v: *const GLint) -> Result<()> {
41451		let ret = process_catch("glSecondaryColor3iv", catch_unwind(||(self.version_1_4.secondarycolor3iv)(v)));
41452		#[cfg(feature = "diagnose")]
41453		if let Ok(ret) = ret {
41454			return to_result("glSecondaryColor3iv", ret, (self.version_1_4.geterror)());
41455		} else {
41456			return ret
41457		}
41458		#[cfg(not(feature = "diagnose"))]
41459		return ret;
41460	}
41461	#[inline(always)]
41462	fn glSecondaryColor3s(&self, red: GLshort, green: GLshort, blue: GLshort) -> Result<()> {
41463		let ret = process_catch("glSecondaryColor3s", catch_unwind(||(self.version_1_4.secondarycolor3s)(red, green, blue)));
41464		#[cfg(feature = "diagnose")]
41465		if let Ok(ret) = ret {
41466			return to_result("glSecondaryColor3s", ret, (self.version_1_4.geterror)());
41467		} else {
41468			return ret
41469		}
41470		#[cfg(not(feature = "diagnose"))]
41471		return ret;
41472	}
41473	#[inline(always)]
41474	fn glSecondaryColor3sv(&self, v: *const GLshort) -> Result<()> {
41475		let ret = process_catch("glSecondaryColor3sv", catch_unwind(||(self.version_1_4.secondarycolor3sv)(v)));
41476		#[cfg(feature = "diagnose")]
41477		if let Ok(ret) = ret {
41478			return to_result("glSecondaryColor3sv", ret, (self.version_1_4.geterror)());
41479		} else {
41480			return ret
41481		}
41482		#[cfg(not(feature = "diagnose"))]
41483		return ret;
41484	}
41485	#[inline(always)]
41486	fn glSecondaryColor3ub(&self, red: GLubyte, green: GLubyte, blue: GLubyte) -> Result<()> {
41487		let ret = process_catch("glSecondaryColor3ub", catch_unwind(||(self.version_1_4.secondarycolor3ub)(red, green, blue)));
41488		#[cfg(feature = "diagnose")]
41489		if let Ok(ret) = ret {
41490			return to_result("glSecondaryColor3ub", ret, (self.version_1_4.geterror)());
41491		} else {
41492			return ret
41493		}
41494		#[cfg(not(feature = "diagnose"))]
41495		return ret;
41496	}
41497	#[inline(always)]
41498	fn glSecondaryColor3ubv(&self, v: *const GLubyte) -> Result<()> {
41499		let ret = process_catch("glSecondaryColor3ubv", catch_unwind(||(self.version_1_4.secondarycolor3ubv)(v)));
41500		#[cfg(feature = "diagnose")]
41501		if let Ok(ret) = ret {
41502			return to_result("glSecondaryColor3ubv", ret, (self.version_1_4.geterror)());
41503		} else {
41504			return ret
41505		}
41506		#[cfg(not(feature = "diagnose"))]
41507		return ret;
41508	}
41509	#[inline(always)]
41510	fn glSecondaryColor3ui(&self, red: GLuint, green: GLuint, blue: GLuint) -> Result<()> {
41511		let ret = process_catch("glSecondaryColor3ui", catch_unwind(||(self.version_1_4.secondarycolor3ui)(red, green, blue)));
41512		#[cfg(feature = "diagnose")]
41513		if let Ok(ret) = ret {
41514			return to_result("glSecondaryColor3ui", ret, (self.version_1_4.geterror)());
41515		} else {
41516			return ret
41517		}
41518		#[cfg(not(feature = "diagnose"))]
41519		return ret;
41520	}
41521	#[inline(always)]
41522	fn glSecondaryColor3uiv(&self, v: *const GLuint) -> Result<()> {
41523		let ret = process_catch("glSecondaryColor3uiv", catch_unwind(||(self.version_1_4.secondarycolor3uiv)(v)));
41524		#[cfg(feature = "diagnose")]
41525		if let Ok(ret) = ret {
41526			return to_result("glSecondaryColor3uiv", ret, (self.version_1_4.geterror)());
41527		} else {
41528			return ret
41529		}
41530		#[cfg(not(feature = "diagnose"))]
41531		return ret;
41532	}
41533	#[inline(always)]
41534	fn glSecondaryColor3us(&self, red: GLushort, green: GLushort, blue: GLushort) -> Result<()> {
41535		let ret = process_catch("glSecondaryColor3us", catch_unwind(||(self.version_1_4.secondarycolor3us)(red, green, blue)));
41536		#[cfg(feature = "diagnose")]
41537		if let Ok(ret) = ret {
41538			return to_result("glSecondaryColor3us", ret, (self.version_1_4.geterror)());
41539		} else {
41540			return ret
41541		}
41542		#[cfg(not(feature = "diagnose"))]
41543		return ret;
41544	}
41545	#[inline(always)]
41546	fn glSecondaryColor3usv(&self, v: *const GLushort) -> Result<()> {
41547		let ret = process_catch("glSecondaryColor3usv", catch_unwind(||(self.version_1_4.secondarycolor3usv)(v)));
41548		#[cfg(feature = "diagnose")]
41549		if let Ok(ret) = ret {
41550			return to_result("glSecondaryColor3usv", ret, (self.version_1_4.geterror)());
41551		} else {
41552			return ret
41553		}
41554		#[cfg(not(feature = "diagnose"))]
41555		return ret;
41556	}
41557	#[inline(always)]
41558	fn glSecondaryColorPointer(&self, size: GLint, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()> {
41559		let ret = process_catch("glSecondaryColorPointer", catch_unwind(||(self.version_1_4.secondarycolorpointer)(size, type_, stride, pointer)));
41560		#[cfg(feature = "diagnose")]
41561		if let Ok(ret) = ret {
41562			return to_result("glSecondaryColorPointer", ret, (self.version_1_4.geterror)());
41563		} else {
41564			return ret
41565		}
41566		#[cfg(not(feature = "diagnose"))]
41567		return ret;
41568	}
41569	#[inline(always)]
41570	fn glWindowPos2d(&self, x: GLdouble, y: GLdouble) -> Result<()> {
41571		let ret = process_catch("glWindowPos2d", catch_unwind(||(self.version_1_4.windowpos2d)(x, y)));
41572		#[cfg(feature = "diagnose")]
41573		if let Ok(ret) = ret {
41574			return to_result("glWindowPos2d", ret, (self.version_1_4.geterror)());
41575		} else {
41576			return ret
41577		}
41578		#[cfg(not(feature = "diagnose"))]
41579		return ret;
41580	}
41581	#[inline(always)]
41582	fn glWindowPos2dv(&self, v: *const GLdouble) -> Result<()> {
41583		let ret = process_catch("glWindowPos2dv", catch_unwind(||(self.version_1_4.windowpos2dv)(v)));
41584		#[cfg(feature = "diagnose")]
41585		if let Ok(ret) = ret {
41586			return to_result("glWindowPos2dv", ret, (self.version_1_4.geterror)());
41587		} else {
41588			return ret
41589		}
41590		#[cfg(not(feature = "diagnose"))]
41591		return ret;
41592	}
41593	#[inline(always)]
41594	fn glWindowPos2f(&self, x: GLfloat, y: GLfloat) -> Result<()> {
41595		let ret = process_catch("glWindowPos2f", catch_unwind(||(self.version_1_4.windowpos2f)(x, y)));
41596		#[cfg(feature = "diagnose")]
41597		if let Ok(ret) = ret {
41598			return to_result("glWindowPos2f", ret, (self.version_1_4.geterror)());
41599		} else {
41600			return ret
41601		}
41602		#[cfg(not(feature = "diagnose"))]
41603		return ret;
41604	}
41605	#[inline(always)]
41606	fn glWindowPos2fv(&self, v: *const GLfloat) -> Result<()> {
41607		let ret = process_catch("glWindowPos2fv", catch_unwind(||(self.version_1_4.windowpos2fv)(v)));
41608		#[cfg(feature = "diagnose")]
41609		if let Ok(ret) = ret {
41610			return to_result("glWindowPos2fv", ret, (self.version_1_4.geterror)());
41611		} else {
41612			return ret
41613		}
41614		#[cfg(not(feature = "diagnose"))]
41615		return ret;
41616	}
41617	#[inline(always)]
41618	fn glWindowPos2i(&self, x: GLint, y: GLint) -> Result<()> {
41619		let ret = process_catch("glWindowPos2i", catch_unwind(||(self.version_1_4.windowpos2i)(x, y)));
41620		#[cfg(feature = "diagnose")]
41621		if let Ok(ret) = ret {
41622			return to_result("glWindowPos2i", ret, (self.version_1_4.geterror)());
41623		} else {
41624			return ret
41625		}
41626		#[cfg(not(feature = "diagnose"))]
41627		return ret;
41628	}
41629	#[inline(always)]
41630	fn glWindowPos2iv(&self, v: *const GLint) -> Result<()> {
41631		let ret = process_catch("glWindowPos2iv", catch_unwind(||(self.version_1_4.windowpos2iv)(v)));
41632		#[cfg(feature = "diagnose")]
41633		if let Ok(ret) = ret {
41634			return to_result("glWindowPos2iv", ret, (self.version_1_4.geterror)());
41635		} else {
41636			return ret
41637		}
41638		#[cfg(not(feature = "diagnose"))]
41639		return ret;
41640	}
41641	#[inline(always)]
41642	fn glWindowPos2s(&self, x: GLshort, y: GLshort) -> Result<()> {
41643		let ret = process_catch("glWindowPos2s", catch_unwind(||(self.version_1_4.windowpos2s)(x, y)));
41644		#[cfg(feature = "diagnose")]
41645		if let Ok(ret) = ret {
41646			return to_result("glWindowPos2s", ret, (self.version_1_4.geterror)());
41647		} else {
41648			return ret
41649		}
41650		#[cfg(not(feature = "diagnose"))]
41651		return ret;
41652	}
41653	#[inline(always)]
41654	fn glWindowPos2sv(&self, v: *const GLshort) -> Result<()> {
41655		let ret = process_catch("glWindowPos2sv", catch_unwind(||(self.version_1_4.windowpos2sv)(v)));
41656		#[cfg(feature = "diagnose")]
41657		if let Ok(ret) = ret {
41658			return to_result("glWindowPos2sv", ret, (self.version_1_4.geterror)());
41659		} else {
41660			return ret
41661		}
41662		#[cfg(not(feature = "diagnose"))]
41663		return ret;
41664	}
41665	#[inline(always)]
41666	fn glWindowPos3d(&self, x: GLdouble, y: GLdouble, z: GLdouble) -> Result<()> {
41667		let ret = process_catch("glWindowPos3d", catch_unwind(||(self.version_1_4.windowpos3d)(x, y, z)));
41668		#[cfg(feature = "diagnose")]
41669		if let Ok(ret) = ret {
41670			return to_result("glWindowPos3d", ret, (self.version_1_4.geterror)());
41671		} else {
41672			return ret
41673		}
41674		#[cfg(not(feature = "diagnose"))]
41675		return ret;
41676	}
41677	#[inline(always)]
41678	fn glWindowPos3dv(&self, v: *const GLdouble) -> Result<()> {
41679		let ret = process_catch("glWindowPos3dv", catch_unwind(||(self.version_1_4.windowpos3dv)(v)));
41680		#[cfg(feature = "diagnose")]
41681		if let Ok(ret) = ret {
41682			return to_result("glWindowPos3dv", ret, (self.version_1_4.geterror)());
41683		} else {
41684			return ret
41685		}
41686		#[cfg(not(feature = "diagnose"))]
41687		return ret;
41688	}
41689	#[inline(always)]
41690	fn glWindowPos3f(&self, x: GLfloat, y: GLfloat, z: GLfloat) -> Result<()> {
41691		let ret = process_catch("glWindowPos3f", catch_unwind(||(self.version_1_4.windowpos3f)(x, y, z)));
41692		#[cfg(feature = "diagnose")]
41693		if let Ok(ret) = ret {
41694			return to_result("glWindowPos3f", ret, (self.version_1_4.geterror)());
41695		} else {
41696			return ret
41697		}
41698		#[cfg(not(feature = "diagnose"))]
41699		return ret;
41700	}
41701	#[inline(always)]
41702	fn glWindowPos3fv(&self, v: *const GLfloat) -> Result<()> {
41703		let ret = process_catch("glWindowPos3fv", catch_unwind(||(self.version_1_4.windowpos3fv)(v)));
41704		#[cfg(feature = "diagnose")]
41705		if let Ok(ret) = ret {
41706			return to_result("glWindowPos3fv", ret, (self.version_1_4.geterror)());
41707		} else {
41708			return ret
41709		}
41710		#[cfg(not(feature = "diagnose"))]
41711		return ret;
41712	}
41713	#[inline(always)]
41714	fn glWindowPos3i(&self, x: GLint, y: GLint, z: GLint) -> Result<()> {
41715		let ret = process_catch("glWindowPos3i", catch_unwind(||(self.version_1_4.windowpos3i)(x, y, z)));
41716		#[cfg(feature = "diagnose")]
41717		if let Ok(ret) = ret {
41718			return to_result("glWindowPos3i", ret, (self.version_1_4.geterror)());
41719		} else {
41720			return ret
41721		}
41722		#[cfg(not(feature = "diagnose"))]
41723		return ret;
41724	}
41725	#[inline(always)]
41726	fn glWindowPos3iv(&self, v: *const GLint) -> Result<()> {
41727		let ret = process_catch("glWindowPos3iv", catch_unwind(||(self.version_1_4.windowpos3iv)(v)));
41728		#[cfg(feature = "diagnose")]
41729		if let Ok(ret) = ret {
41730			return to_result("glWindowPos3iv", ret, (self.version_1_4.geterror)());
41731		} else {
41732			return ret
41733		}
41734		#[cfg(not(feature = "diagnose"))]
41735		return ret;
41736	}
41737	#[inline(always)]
41738	fn glWindowPos3s(&self, x: GLshort, y: GLshort, z: GLshort) -> Result<()> {
41739		let ret = process_catch("glWindowPos3s", catch_unwind(||(self.version_1_4.windowpos3s)(x, y, z)));
41740		#[cfg(feature = "diagnose")]
41741		if let Ok(ret) = ret {
41742			return to_result("glWindowPos3s", ret, (self.version_1_4.geterror)());
41743		} else {
41744			return ret
41745		}
41746		#[cfg(not(feature = "diagnose"))]
41747		return ret;
41748	}
41749	#[inline(always)]
41750	fn glWindowPos3sv(&self, v: *const GLshort) -> Result<()> {
41751		let ret = process_catch("glWindowPos3sv", catch_unwind(||(self.version_1_4.windowpos3sv)(v)));
41752		#[cfg(feature = "diagnose")]
41753		if let Ok(ret) = ret {
41754			return to_result("glWindowPos3sv", ret, (self.version_1_4.geterror)());
41755		} else {
41756			return ret
41757		}
41758		#[cfg(not(feature = "diagnose"))]
41759		return ret;
41760	}
41761	#[inline(always)]
41762	fn glBlendColor(&self, red: GLfloat, green: GLfloat, blue: GLfloat, alpha: GLfloat) -> Result<()> {
41763		let ret = process_catch("glBlendColor", catch_unwind(||(self.version_1_4.blendcolor)(red, green, blue, alpha)));
41764		#[cfg(feature = "diagnose")]
41765		if let Ok(ret) = ret {
41766			return to_result("glBlendColor", ret, (self.version_1_4.geterror)());
41767		} else {
41768			return ret
41769		}
41770		#[cfg(not(feature = "diagnose"))]
41771		return ret;
41772	}
41773	#[inline(always)]
41774	fn glBlendEquation(&self, mode: GLenum) -> Result<()> {
41775		let ret = process_catch("glBlendEquation", catch_unwind(||(self.version_1_4.blendequation)(mode)));
41776		#[cfg(feature = "diagnose")]
41777		if let Ok(ret) = ret {
41778			return to_result("glBlendEquation", ret, (self.version_1_4.geterror)());
41779		} else {
41780			return ret
41781		}
41782		#[cfg(not(feature = "diagnose"))]
41783		return ret;
41784	}
41785}
41786
41787impl GL_1_5_g for GLCore {
41788	#[inline(always)]
41789	fn glGenQueries(&self, n: GLsizei, ids: *mut GLuint) -> Result<()> {
41790		let ret = process_catch("glGenQueries", catch_unwind(||(self.version_1_5.genqueries)(n, ids)));
41791		#[cfg(feature = "diagnose")]
41792		if let Ok(ret) = ret {
41793			return to_result("glGenQueries", ret, (self.version_1_5.geterror)());
41794		} else {
41795			return ret
41796		}
41797		#[cfg(not(feature = "diagnose"))]
41798		return ret;
41799	}
41800	#[inline(always)]
41801	fn glDeleteQueries(&self, n: GLsizei, ids: *const GLuint) -> Result<()> {
41802		let ret = process_catch("glDeleteQueries", catch_unwind(||(self.version_1_5.deletequeries)(n, ids)));
41803		#[cfg(feature = "diagnose")]
41804		if let Ok(ret) = ret {
41805			return to_result("glDeleteQueries", ret, (self.version_1_5.geterror)());
41806		} else {
41807			return ret
41808		}
41809		#[cfg(not(feature = "diagnose"))]
41810		return ret;
41811	}
41812	#[inline(always)]
41813	fn glIsQuery(&self, id: GLuint) -> Result<GLboolean> {
41814		let ret = process_catch("glIsQuery", catch_unwind(||(self.version_1_5.isquery)(id)));
41815		#[cfg(feature = "diagnose")]
41816		if let Ok(ret) = ret {
41817			return to_result("glIsQuery", ret, (self.version_1_5.geterror)());
41818		} else {
41819			return ret
41820		}
41821		#[cfg(not(feature = "diagnose"))]
41822		return ret;
41823	}
41824	#[inline(always)]
41825	fn glBeginQuery(&self, target: GLenum, id: GLuint) -> Result<()> {
41826		let ret = process_catch("glBeginQuery", catch_unwind(||(self.version_1_5.beginquery)(target, id)));
41827		#[cfg(feature = "diagnose")]
41828		if let Ok(ret) = ret {
41829			return to_result("glBeginQuery", ret, (self.version_1_5.geterror)());
41830		} else {
41831			return ret
41832		}
41833		#[cfg(not(feature = "diagnose"))]
41834		return ret;
41835	}
41836	#[inline(always)]
41837	fn glEndQuery(&self, target: GLenum) -> Result<()> {
41838		let ret = process_catch("glEndQuery", catch_unwind(||(self.version_1_5.endquery)(target)));
41839		#[cfg(feature = "diagnose")]
41840		if let Ok(ret) = ret {
41841			return to_result("glEndQuery", ret, (self.version_1_5.geterror)());
41842		} else {
41843			return ret
41844		}
41845		#[cfg(not(feature = "diagnose"))]
41846		return ret;
41847	}
41848	#[inline(always)]
41849	fn glGetQueryiv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
41850		let ret = process_catch("glGetQueryiv", catch_unwind(||(self.version_1_5.getqueryiv)(target, pname, params)));
41851		#[cfg(feature = "diagnose")]
41852		if let Ok(ret) = ret {
41853			return to_result("glGetQueryiv", ret, (self.version_1_5.geterror)());
41854		} else {
41855			return ret
41856		}
41857		#[cfg(not(feature = "diagnose"))]
41858		return ret;
41859	}
41860	#[inline(always)]
41861	fn glGetQueryObjectiv(&self, id: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
41862		let ret = process_catch("glGetQueryObjectiv", catch_unwind(||(self.version_1_5.getqueryobjectiv)(id, pname, params)));
41863		#[cfg(feature = "diagnose")]
41864		if let Ok(ret) = ret {
41865			return to_result("glGetQueryObjectiv", ret, (self.version_1_5.geterror)());
41866		} else {
41867			return ret
41868		}
41869		#[cfg(not(feature = "diagnose"))]
41870		return ret;
41871	}
41872	#[inline(always)]
41873	fn glGetQueryObjectuiv(&self, id: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()> {
41874		let ret = process_catch("glGetQueryObjectuiv", catch_unwind(||(self.version_1_5.getqueryobjectuiv)(id, pname, params)));
41875		#[cfg(feature = "diagnose")]
41876		if let Ok(ret) = ret {
41877			return to_result("glGetQueryObjectuiv", ret, (self.version_1_5.geterror)());
41878		} else {
41879			return ret
41880		}
41881		#[cfg(not(feature = "diagnose"))]
41882		return ret;
41883	}
41884	#[inline(always)]
41885	fn glBindBuffer(&self, target: GLenum, buffer: GLuint) -> Result<()> {
41886		let ret = process_catch("glBindBuffer", catch_unwind(||(self.version_1_5.bindbuffer)(target, buffer)));
41887		#[cfg(feature = "diagnose")]
41888		if let Ok(ret) = ret {
41889			return to_result("glBindBuffer", ret, (self.version_1_5.geterror)());
41890		} else {
41891			return ret
41892		}
41893		#[cfg(not(feature = "diagnose"))]
41894		return ret;
41895	}
41896	#[inline(always)]
41897	fn glDeleteBuffers(&self, n: GLsizei, buffers: *const GLuint) -> Result<()> {
41898		let ret = process_catch("glDeleteBuffers", catch_unwind(||(self.version_1_5.deletebuffers)(n, buffers)));
41899		#[cfg(feature = "diagnose")]
41900		if let Ok(ret) = ret {
41901			return to_result("glDeleteBuffers", ret, (self.version_1_5.geterror)());
41902		} else {
41903			return ret
41904		}
41905		#[cfg(not(feature = "diagnose"))]
41906		return ret;
41907	}
41908	#[inline(always)]
41909	fn glGenBuffers(&self, n: GLsizei, buffers: *mut GLuint) -> Result<()> {
41910		let ret = process_catch("glGenBuffers", catch_unwind(||(self.version_1_5.genbuffers)(n, buffers)));
41911		#[cfg(feature = "diagnose")]
41912		if let Ok(ret) = ret {
41913			return to_result("glGenBuffers", ret, (self.version_1_5.geterror)());
41914		} else {
41915			return ret
41916		}
41917		#[cfg(not(feature = "diagnose"))]
41918		return ret;
41919	}
41920	#[inline(always)]
41921	fn glIsBuffer(&self, buffer: GLuint) -> Result<GLboolean> {
41922		let ret = process_catch("glIsBuffer", catch_unwind(||(self.version_1_5.isbuffer)(buffer)));
41923		#[cfg(feature = "diagnose")]
41924		if let Ok(ret) = ret {
41925			return to_result("glIsBuffer", ret, (self.version_1_5.geterror)());
41926		} else {
41927			return ret
41928		}
41929		#[cfg(not(feature = "diagnose"))]
41930		return ret;
41931	}
41932	#[inline(always)]
41933	fn glBufferData(&self, target: GLenum, size: GLsizeiptr, data: *const c_void, usage: GLenum) -> Result<()> {
41934		let ret = process_catch("glBufferData", catch_unwind(||(self.version_1_5.bufferdata)(target, size, data, usage)));
41935		#[cfg(feature = "diagnose")]
41936		if let Ok(ret) = ret {
41937			return to_result("glBufferData", ret, (self.version_1_5.geterror)());
41938		} else {
41939			return ret
41940		}
41941		#[cfg(not(feature = "diagnose"))]
41942		return ret;
41943	}
41944	#[inline(always)]
41945	fn glBufferSubData(&self, target: GLenum, offset: GLintptr, size: GLsizeiptr, data: *const c_void) -> Result<()> {
41946		let ret = process_catch("glBufferSubData", catch_unwind(||(self.version_1_5.buffersubdata)(target, offset, size, data)));
41947		#[cfg(feature = "diagnose")]
41948		if let Ok(ret) = ret {
41949			return to_result("glBufferSubData", ret, (self.version_1_5.geterror)());
41950		} else {
41951			return ret
41952		}
41953		#[cfg(not(feature = "diagnose"))]
41954		return ret;
41955	}
41956	#[inline(always)]
41957	fn glGetBufferSubData(&self, target: GLenum, offset: GLintptr, size: GLsizeiptr, data: *mut c_void) -> Result<()> {
41958		let ret = process_catch("glGetBufferSubData", catch_unwind(||(self.version_1_5.getbuffersubdata)(target, offset, size, data)));
41959		#[cfg(feature = "diagnose")]
41960		if let Ok(ret) = ret {
41961			return to_result("glGetBufferSubData", ret, (self.version_1_5.geterror)());
41962		} else {
41963			return ret
41964		}
41965		#[cfg(not(feature = "diagnose"))]
41966		return ret;
41967	}
41968	#[inline(always)]
41969	fn glMapBuffer(&self, target: GLenum, access: GLenum) -> Result<*mut c_void> {
41970		let ret = process_catch("glMapBuffer", catch_unwind(||(self.version_1_5.mapbuffer)(target, access)));
41971		#[cfg(feature = "diagnose")]
41972		if let Ok(ret) = ret {
41973			return to_result("glMapBuffer", ret, (self.version_1_5.geterror)());
41974		} else {
41975			return ret
41976		}
41977		#[cfg(not(feature = "diagnose"))]
41978		return ret;
41979	}
41980	#[inline(always)]
41981	fn glUnmapBuffer(&self, target: GLenum) -> Result<GLboolean> {
41982		let ret = process_catch("glUnmapBuffer", catch_unwind(||(self.version_1_5.unmapbuffer)(target)));
41983		#[cfg(feature = "diagnose")]
41984		if let Ok(ret) = ret {
41985			return to_result("glUnmapBuffer", ret, (self.version_1_5.geterror)());
41986		} else {
41987			return ret
41988		}
41989		#[cfg(not(feature = "diagnose"))]
41990		return ret;
41991	}
41992	#[inline(always)]
41993	fn glGetBufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
41994		let ret = process_catch("glGetBufferParameteriv", catch_unwind(||(self.version_1_5.getbufferparameteriv)(target, pname, params)));
41995		#[cfg(feature = "diagnose")]
41996		if let Ok(ret) = ret {
41997			return to_result("glGetBufferParameteriv", ret, (self.version_1_5.geterror)());
41998		} else {
41999			return ret
42000		}
42001		#[cfg(not(feature = "diagnose"))]
42002		return ret;
42003	}
42004	#[inline(always)]
42005	fn glGetBufferPointerv(&self, target: GLenum, pname: GLenum, params: *mut *mut c_void) -> Result<()> {
42006		let ret = process_catch("glGetBufferPointerv", catch_unwind(||(self.version_1_5.getbufferpointerv)(target, pname, params)));
42007		#[cfg(feature = "diagnose")]
42008		if let Ok(ret) = ret {
42009			return to_result("glGetBufferPointerv", ret, (self.version_1_5.geterror)());
42010		} else {
42011			return ret
42012		}
42013		#[cfg(not(feature = "diagnose"))]
42014		return ret;
42015	}
42016}
42017
42018impl GL_2_0_g for GLCore {
42019	#[inline(always)]
42020	fn get_shading_language_version(&self) -> &'static str {
42021		self.version_2_0.shading_language_version
42022	}
42023	#[inline(always)]
42024	fn glBlendEquationSeparate(&self, modeRGB: GLenum, modeAlpha: GLenum) -> Result<()> {
42025		let ret = process_catch("glBlendEquationSeparate", catch_unwind(||(self.version_2_0.blendequationseparate)(modeRGB, modeAlpha)));
42026		#[cfg(feature = "diagnose")]
42027		if let Ok(ret) = ret {
42028			return to_result("glBlendEquationSeparate", ret, (self.version_2_0.geterror)());
42029		} else {
42030			return ret
42031		}
42032		#[cfg(not(feature = "diagnose"))]
42033		return ret;
42034	}
42035	#[inline(always)]
42036	fn glDrawBuffers(&self, n: GLsizei, bufs: *const GLenum) -> Result<()> {
42037		let ret = process_catch("glDrawBuffers", catch_unwind(||(self.version_2_0.drawbuffers)(n, bufs)));
42038		#[cfg(feature = "diagnose")]
42039		if let Ok(ret) = ret {
42040			return to_result("glDrawBuffers", ret, (self.version_2_0.geterror)());
42041		} else {
42042			return ret
42043		}
42044		#[cfg(not(feature = "diagnose"))]
42045		return ret;
42046	}
42047	#[inline(always)]
42048	fn glStencilOpSeparate(&self, face: GLenum, sfail: GLenum, dpfail: GLenum, dppass: GLenum) -> Result<()> {
42049		let ret = process_catch("glStencilOpSeparate", catch_unwind(||(self.version_2_0.stencilopseparate)(face, sfail, dpfail, dppass)));
42050		#[cfg(feature = "diagnose")]
42051		if let Ok(ret) = ret {
42052			return to_result("glStencilOpSeparate", ret, (self.version_2_0.geterror)());
42053		} else {
42054			return ret
42055		}
42056		#[cfg(not(feature = "diagnose"))]
42057		return ret;
42058	}
42059	#[inline(always)]
42060	fn glStencilFuncSeparate(&self, face: GLenum, func: GLenum, ref_: GLint, mask: GLuint) -> Result<()> {
42061		let ret = process_catch("glStencilFuncSeparate", catch_unwind(||(self.version_2_0.stencilfuncseparate)(face, func, ref_, mask)));
42062		#[cfg(feature = "diagnose")]
42063		if let Ok(ret) = ret {
42064			return to_result("glStencilFuncSeparate", ret, (self.version_2_0.geterror)());
42065		} else {
42066			return ret
42067		}
42068		#[cfg(not(feature = "diagnose"))]
42069		return ret;
42070	}
42071	#[inline(always)]
42072	fn glStencilMaskSeparate(&self, face: GLenum, mask: GLuint) -> Result<()> {
42073		let ret = process_catch("glStencilMaskSeparate", catch_unwind(||(self.version_2_0.stencilmaskseparate)(face, mask)));
42074		#[cfg(feature = "diagnose")]
42075		if let Ok(ret) = ret {
42076			return to_result("glStencilMaskSeparate", ret, (self.version_2_0.geterror)());
42077		} else {
42078			return ret
42079		}
42080		#[cfg(not(feature = "diagnose"))]
42081		return ret;
42082	}
42083	#[inline(always)]
42084	fn glAttachShader(&self, program: GLuint, shader: GLuint) -> Result<()> {
42085		let ret = process_catch("glAttachShader", catch_unwind(||(self.version_2_0.attachshader)(program, shader)));
42086		#[cfg(feature = "diagnose")]
42087		if let Ok(ret) = ret {
42088			return to_result("glAttachShader", ret, (self.version_2_0.geterror)());
42089		} else {
42090			return ret
42091		}
42092		#[cfg(not(feature = "diagnose"))]
42093		return ret;
42094	}
42095	#[inline(always)]
42096	fn glBindAttribLocation(&self, program: GLuint, index: GLuint, name: *const GLchar) -> Result<()> {
42097		let ret = process_catch("glBindAttribLocation", catch_unwind(||(self.version_2_0.bindattriblocation)(program, index, name)));
42098		#[cfg(feature = "diagnose")]
42099		if let Ok(ret) = ret {
42100			return to_result("glBindAttribLocation", ret, (self.version_2_0.geterror)());
42101		} else {
42102			return ret
42103		}
42104		#[cfg(not(feature = "diagnose"))]
42105		return ret;
42106	}
42107	#[inline(always)]
42108	fn glCompileShader(&self, shader: GLuint) -> Result<()> {
42109		let ret = process_catch("glCompileShader", catch_unwind(||(self.version_2_0.compileshader)(shader)));
42110		#[cfg(feature = "diagnose")]
42111		if let Ok(ret) = ret {
42112			return to_result("glCompileShader", ret, (self.version_2_0.geterror)());
42113		} else {
42114			return ret
42115		}
42116		#[cfg(not(feature = "diagnose"))]
42117		return ret;
42118	}
42119	#[inline(always)]
42120	fn glCreateProgram(&self) -> Result<GLuint> {
42121		let ret = process_catch("glCreateProgram", catch_unwind(||(self.version_2_0.createprogram)()));
42122		#[cfg(feature = "diagnose")]
42123		if let Ok(ret) = ret {
42124			return to_result("glCreateProgram", ret, (self.version_2_0.geterror)());
42125		} else {
42126			return ret
42127		}
42128		#[cfg(not(feature = "diagnose"))]
42129		return ret;
42130	}
42131	#[inline(always)]
42132	fn glCreateShader(&self, type_: GLenum) -> Result<GLuint> {
42133		let ret = process_catch("glCreateShader", catch_unwind(||(self.version_2_0.createshader)(type_)));
42134		#[cfg(feature = "diagnose")]
42135		if let Ok(ret) = ret {
42136			return to_result("glCreateShader", ret, (self.version_2_0.geterror)());
42137		} else {
42138			return ret
42139		}
42140		#[cfg(not(feature = "diagnose"))]
42141		return ret;
42142	}
42143	#[inline(always)]
42144	fn glDeleteProgram(&self, program: GLuint) -> Result<()> {
42145		let ret = process_catch("glDeleteProgram", catch_unwind(||(self.version_2_0.deleteprogram)(program)));
42146		#[cfg(feature = "diagnose")]
42147		if let Ok(ret) = ret {
42148			return to_result("glDeleteProgram", ret, (self.version_2_0.geterror)());
42149		} else {
42150			return ret
42151		}
42152		#[cfg(not(feature = "diagnose"))]
42153		return ret;
42154	}
42155	#[inline(always)]
42156	fn glDeleteShader(&self, shader: GLuint) -> Result<()> {
42157		let ret = process_catch("glDeleteShader", catch_unwind(||(self.version_2_0.deleteshader)(shader)));
42158		#[cfg(feature = "diagnose")]
42159		if let Ok(ret) = ret {
42160			return to_result("glDeleteShader", ret, (self.version_2_0.geterror)());
42161		} else {
42162			return ret
42163		}
42164		#[cfg(not(feature = "diagnose"))]
42165		return ret;
42166	}
42167	#[inline(always)]
42168	fn glDetachShader(&self, program: GLuint, shader: GLuint) -> Result<()> {
42169		let ret = process_catch("glDetachShader", catch_unwind(||(self.version_2_0.detachshader)(program, shader)));
42170		#[cfg(feature = "diagnose")]
42171		if let Ok(ret) = ret {
42172			return to_result("glDetachShader", ret, (self.version_2_0.geterror)());
42173		} else {
42174			return ret
42175		}
42176		#[cfg(not(feature = "diagnose"))]
42177		return ret;
42178	}
42179	#[inline(always)]
42180	fn glDisableVertexAttribArray(&self, index: GLuint) -> Result<()> {
42181		let ret = process_catch("glDisableVertexAttribArray", catch_unwind(||(self.version_2_0.disablevertexattribarray)(index)));
42182		#[cfg(feature = "diagnose")]
42183		if let Ok(ret) = ret {
42184			return to_result("glDisableVertexAttribArray", ret, (self.version_2_0.geterror)());
42185		} else {
42186			return ret
42187		}
42188		#[cfg(not(feature = "diagnose"))]
42189		return ret;
42190	}
42191	#[inline(always)]
42192	fn glEnableVertexAttribArray(&self, index: GLuint) -> Result<()> {
42193		let ret = process_catch("glEnableVertexAttribArray", catch_unwind(||(self.version_2_0.enablevertexattribarray)(index)));
42194		#[cfg(feature = "diagnose")]
42195		if let Ok(ret) = ret {
42196			return to_result("glEnableVertexAttribArray", ret, (self.version_2_0.geterror)());
42197		} else {
42198			return ret
42199		}
42200		#[cfg(not(feature = "diagnose"))]
42201		return ret;
42202	}
42203	#[inline(always)]
42204	fn glGetActiveAttrib(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLint, type_: *mut GLenum, name: *mut GLchar) -> Result<()> {
42205		let ret = process_catch("glGetActiveAttrib", catch_unwind(||(self.version_2_0.getactiveattrib)(program, index, bufSize, length, size, type_, name)));
42206		#[cfg(feature = "diagnose")]
42207		if let Ok(ret) = ret {
42208			return to_result("glGetActiveAttrib", ret, (self.version_2_0.geterror)());
42209		} else {
42210			return ret
42211		}
42212		#[cfg(not(feature = "diagnose"))]
42213		return ret;
42214	}
42215	#[inline(always)]
42216	fn glGetActiveUniform(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLint, type_: *mut GLenum, name: *mut GLchar) -> Result<()> {
42217		let ret = process_catch("glGetActiveUniform", catch_unwind(||(self.version_2_0.getactiveuniform)(program, index, bufSize, length, size, type_, name)));
42218		#[cfg(feature = "diagnose")]
42219		if let Ok(ret) = ret {
42220			return to_result("glGetActiveUniform", ret, (self.version_2_0.geterror)());
42221		} else {
42222			return ret
42223		}
42224		#[cfg(not(feature = "diagnose"))]
42225		return ret;
42226	}
42227	#[inline(always)]
42228	fn glGetAttachedShaders(&self, program: GLuint, maxCount: GLsizei, count: *mut GLsizei, shaders: *mut GLuint) -> Result<()> {
42229		let ret = process_catch("glGetAttachedShaders", catch_unwind(||(self.version_2_0.getattachedshaders)(program, maxCount, count, shaders)));
42230		#[cfg(feature = "diagnose")]
42231		if let Ok(ret) = ret {
42232			return to_result("glGetAttachedShaders", ret, (self.version_2_0.geterror)());
42233		} else {
42234			return ret
42235		}
42236		#[cfg(not(feature = "diagnose"))]
42237		return ret;
42238	}
42239	#[inline(always)]
42240	fn glGetAttribLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint> {
42241		let ret = process_catch("glGetAttribLocation", catch_unwind(||(self.version_2_0.getattriblocation)(program, name)));
42242		#[cfg(feature = "diagnose")]
42243		if let Ok(ret) = ret {
42244			return to_result("glGetAttribLocation", ret, (self.version_2_0.geterror)());
42245		} else {
42246			return ret
42247		}
42248		#[cfg(not(feature = "diagnose"))]
42249		return ret;
42250	}
42251	#[inline(always)]
42252	fn glGetProgramiv(&self, program: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
42253		let ret = process_catch("glGetProgramiv", catch_unwind(||(self.version_2_0.getprogramiv)(program, pname, params)));
42254		#[cfg(feature = "diagnose")]
42255		if let Ok(ret) = ret {
42256			return to_result("glGetProgramiv", ret, (self.version_2_0.geterror)());
42257		} else {
42258			return ret
42259		}
42260		#[cfg(not(feature = "diagnose"))]
42261		return ret;
42262	}
42263	#[inline(always)]
42264	fn glGetProgramInfoLog(&self, program: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()> {
42265		let ret = process_catch("glGetProgramInfoLog", catch_unwind(||(self.version_2_0.getprograminfolog)(program, bufSize, length, infoLog)));
42266		#[cfg(feature = "diagnose")]
42267		if let Ok(ret) = ret {
42268			return to_result("glGetProgramInfoLog", ret, (self.version_2_0.geterror)());
42269		} else {
42270			return ret
42271		}
42272		#[cfg(not(feature = "diagnose"))]
42273		return ret;
42274	}
42275	#[inline(always)]
42276	fn glGetShaderiv(&self, shader: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
42277		let ret = process_catch("glGetShaderiv", catch_unwind(||(self.version_2_0.getshaderiv)(shader, pname, params)));
42278		#[cfg(feature = "diagnose")]
42279		if let Ok(ret) = ret {
42280			return to_result("glGetShaderiv", ret, (self.version_2_0.geterror)());
42281		} else {
42282			return ret
42283		}
42284		#[cfg(not(feature = "diagnose"))]
42285		return ret;
42286	}
42287	#[inline(always)]
42288	fn glGetShaderInfoLog(&self, shader: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()> {
42289		let ret = process_catch("glGetShaderInfoLog", catch_unwind(||(self.version_2_0.getshaderinfolog)(shader, bufSize, length, infoLog)));
42290		#[cfg(feature = "diagnose")]
42291		if let Ok(ret) = ret {
42292			return to_result("glGetShaderInfoLog", ret, (self.version_2_0.geterror)());
42293		} else {
42294			return ret
42295		}
42296		#[cfg(not(feature = "diagnose"))]
42297		return ret;
42298	}
42299	#[inline(always)]
42300	fn glGetShaderSource(&self, shader: GLuint, bufSize: GLsizei, length: *mut GLsizei, source: *mut GLchar) -> Result<()> {
42301		let ret = process_catch("glGetShaderSource", catch_unwind(||(self.version_2_0.getshadersource)(shader, bufSize, length, source)));
42302		#[cfg(feature = "diagnose")]
42303		if let Ok(ret) = ret {
42304			return to_result("glGetShaderSource", ret, (self.version_2_0.geterror)());
42305		} else {
42306			return ret
42307		}
42308		#[cfg(not(feature = "diagnose"))]
42309		return ret;
42310	}
42311	#[inline(always)]
42312	fn glGetUniformLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint> {
42313		let ret = process_catch("glGetUniformLocation", catch_unwind(||(self.version_2_0.getuniformlocation)(program, name)));
42314		#[cfg(feature = "diagnose")]
42315		if let Ok(ret) = ret {
42316			return to_result("glGetUniformLocation", ret, (self.version_2_0.geterror)());
42317		} else {
42318			return ret
42319		}
42320		#[cfg(not(feature = "diagnose"))]
42321		return ret;
42322	}
42323	#[inline(always)]
42324	fn glGetUniformfv(&self, program: GLuint, location: GLint, params: *mut GLfloat) -> Result<()> {
42325		let ret = process_catch("glGetUniformfv", catch_unwind(||(self.version_2_0.getuniformfv)(program, location, params)));
42326		#[cfg(feature = "diagnose")]
42327		if let Ok(ret) = ret {
42328			return to_result("glGetUniformfv", ret, (self.version_2_0.geterror)());
42329		} else {
42330			return ret
42331		}
42332		#[cfg(not(feature = "diagnose"))]
42333		return ret;
42334	}
42335	#[inline(always)]
42336	fn glGetUniformiv(&self, program: GLuint, location: GLint, params: *mut GLint) -> Result<()> {
42337		let ret = process_catch("glGetUniformiv", catch_unwind(||(self.version_2_0.getuniformiv)(program, location, params)));
42338		#[cfg(feature = "diagnose")]
42339		if let Ok(ret) = ret {
42340			return to_result("glGetUniformiv", ret, (self.version_2_0.geterror)());
42341		} else {
42342			return ret
42343		}
42344		#[cfg(not(feature = "diagnose"))]
42345		return ret;
42346	}
42347	#[inline(always)]
42348	fn glGetVertexAttribdv(&self, index: GLuint, pname: GLenum, params: *mut GLdouble) -> Result<()> {
42349		let ret = process_catch("glGetVertexAttribdv", catch_unwind(||(self.version_2_0.getvertexattribdv)(index, pname, params)));
42350		#[cfg(feature = "diagnose")]
42351		if let Ok(ret) = ret {
42352			return to_result("glGetVertexAttribdv", ret, (self.version_2_0.geterror)());
42353		} else {
42354			return ret
42355		}
42356		#[cfg(not(feature = "diagnose"))]
42357		return ret;
42358	}
42359	#[inline(always)]
42360	fn glGetVertexAttribfv(&self, index: GLuint, pname: GLenum, params: *mut GLfloat) -> Result<()> {
42361		let ret = process_catch("glGetVertexAttribfv", catch_unwind(||(self.version_2_0.getvertexattribfv)(index, pname, params)));
42362		#[cfg(feature = "diagnose")]
42363		if let Ok(ret) = ret {
42364			return to_result("glGetVertexAttribfv", ret, (self.version_2_0.geterror)());
42365		} else {
42366			return ret
42367		}
42368		#[cfg(not(feature = "diagnose"))]
42369		return ret;
42370	}
42371	#[inline(always)]
42372	fn glGetVertexAttribiv(&self, index: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
42373		let ret = process_catch("glGetVertexAttribiv", catch_unwind(||(self.version_2_0.getvertexattribiv)(index, pname, params)));
42374		#[cfg(feature = "diagnose")]
42375		if let Ok(ret) = ret {
42376			return to_result("glGetVertexAttribiv", ret, (self.version_2_0.geterror)());
42377		} else {
42378			return ret
42379		}
42380		#[cfg(not(feature = "diagnose"))]
42381		return ret;
42382	}
42383	#[inline(always)]
42384	fn glGetVertexAttribPointerv(&self, index: GLuint, pname: GLenum, pointer: *mut *mut c_void) -> Result<()> {
42385		let ret = process_catch("glGetVertexAttribPointerv", catch_unwind(||(self.version_2_0.getvertexattribpointerv)(index, pname, pointer)));
42386		#[cfg(feature = "diagnose")]
42387		if let Ok(ret) = ret {
42388			return to_result("glGetVertexAttribPointerv", ret, (self.version_2_0.geterror)());
42389		} else {
42390			return ret
42391		}
42392		#[cfg(not(feature = "diagnose"))]
42393		return ret;
42394	}
42395	#[inline(always)]
42396	fn glIsProgram(&self, program: GLuint) -> Result<GLboolean> {
42397		let ret = process_catch("glIsProgram", catch_unwind(||(self.version_2_0.isprogram)(program)));
42398		#[cfg(feature = "diagnose")]
42399		if let Ok(ret) = ret {
42400			return to_result("glIsProgram", ret, (self.version_2_0.geterror)());
42401		} else {
42402			return ret
42403		}
42404		#[cfg(not(feature = "diagnose"))]
42405		return ret;
42406	}
42407	#[inline(always)]
42408	fn glIsShader(&self, shader: GLuint) -> Result<GLboolean> {
42409		let ret = process_catch("glIsShader", catch_unwind(||(self.version_2_0.isshader)(shader)));
42410		#[cfg(feature = "diagnose")]
42411		if let Ok(ret) = ret {
42412			return to_result("glIsShader", ret, (self.version_2_0.geterror)());
42413		} else {
42414			return ret
42415		}
42416		#[cfg(not(feature = "diagnose"))]
42417		return ret;
42418	}
42419	#[inline(always)]
42420	fn glLinkProgram(&self, program: GLuint) -> Result<()> {
42421		let ret = process_catch("glLinkProgram", catch_unwind(||(self.version_2_0.linkprogram)(program)));
42422		#[cfg(feature = "diagnose")]
42423		if let Ok(ret) = ret {
42424			return to_result("glLinkProgram", ret, (self.version_2_0.geterror)());
42425		} else {
42426			return ret
42427		}
42428		#[cfg(not(feature = "diagnose"))]
42429		return ret;
42430	}
42431	#[inline(always)]
42432	fn glShaderSource(&self, shader: GLuint, count: GLsizei, string_: *const *const GLchar, length: *const GLint) -> Result<()> {
42433		let ret = process_catch("glShaderSource", catch_unwind(||(self.version_2_0.shadersource)(shader, count, string_, length)));
42434		#[cfg(feature = "diagnose")]
42435		if let Ok(ret) = ret {
42436			return to_result("glShaderSource", ret, (self.version_2_0.geterror)());
42437		} else {
42438			return ret
42439		}
42440		#[cfg(not(feature = "diagnose"))]
42441		return ret;
42442	}
42443	#[inline(always)]
42444	fn glUseProgram(&self, program: GLuint) -> Result<()> {
42445		let ret = process_catch("glUseProgram", catch_unwind(||(self.version_2_0.useprogram)(program)));
42446		#[cfg(feature = "diagnose")]
42447		if let Ok(ret) = ret {
42448			return to_result("glUseProgram", ret, (self.version_2_0.geterror)());
42449		} else {
42450			return ret
42451		}
42452		#[cfg(not(feature = "diagnose"))]
42453		return ret;
42454	}
42455	#[inline(always)]
42456	fn glUniform1f(&self, location: GLint, v0: GLfloat) -> Result<()> {
42457		let ret = process_catch("glUniform1f", catch_unwind(||(self.version_2_0.uniform1f)(location, v0)));
42458		#[cfg(feature = "diagnose")]
42459		if let Ok(ret) = ret {
42460			return to_result("glUniform1f", ret, (self.version_2_0.geterror)());
42461		} else {
42462			return ret
42463		}
42464		#[cfg(not(feature = "diagnose"))]
42465		return ret;
42466	}
42467	#[inline(always)]
42468	fn glUniform2f(&self, location: GLint, v0: GLfloat, v1: GLfloat) -> Result<()> {
42469		let ret = process_catch("glUniform2f", catch_unwind(||(self.version_2_0.uniform2f)(location, v0, v1)));
42470		#[cfg(feature = "diagnose")]
42471		if let Ok(ret) = ret {
42472			return to_result("glUniform2f", ret, (self.version_2_0.geterror)());
42473		} else {
42474			return ret
42475		}
42476		#[cfg(not(feature = "diagnose"))]
42477		return ret;
42478	}
42479	#[inline(always)]
42480	fn glUniform3f(&self, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat) -> Result<()> {
42481		let ret = process_catch("glUniform3f", catch_unwind(||(self.version_2_0.uniform3f)(location, v0, v1, v2)));
42482		#[cfg(feature = "diagnose")]
42483		if let Ok(ret) = ret {
42484			return to_result("glUniform3f", ret, (self.version_2_0.geterror)());
42485		} else {
42486			return ret
42487		}
42488		#[cfg(not(feature = "diagnose"))]
42489		return ret;
42490	}
42491	#[inline(always)]
42492	fn glUniform4f(&self, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat, v3: GLfloat) -> Result<()> {
42493		let ret = process_catch("glUniform4f", catch_unwind(||(self.version_2_0.uniform4f)(location, v0, v1, v2, v3)));
42494		#[cfg(feature = "diagnose")]
42495		if let Ok(ret) = ret {
42496			return to_result("glUniform4f", ret, (self.version_2_0.geterror)());
42497		} else {
42498			return ret
42499		}
42500		#[cfg(not(feature = "diagnose"))]
42501		return ret;
42502	}
42503	#[inline(always)]
42504	fn glUniform1i(&self, location: GLint, v0: GLint) -> Result<()> {
42505		let ret = process_catch("glUniform1i", catch_unwind(||(self.version_2_0.uniform1i)(location, v0)));
42506		#[cfg(feature = "diagnose")]
42507		if let Ok(ret) = ret {
42508			return to_result("glUniform1i", ret, (self.version_2_0.geterror)());
42509		} else {
42510			return ret
42511		}
42512		#[cfg(not(feature = "diagnose"))]
42513		return ret;
42514	}
42515	#[inline(always)]
42516	fn glUniform2i(&self, location: GLint, v0: GLint, v1: GLint) -> Result<()> {
42517		let ret = process_catch("glUniform2i", catch_unwind(||(self.version_2_0.uniform2i)(location, v0, v1)));
42518		#[cfg(feature = "diagnose")]
42519		if let Ok(ret) = ret {
42520			return to_result("glUniform2i", ret, (self.version_2_0.geterror)());
42521		} else {
42522			return ret
42523		}
42524		#[cfg(not(feature = "diagnose"))]
42525		return ret;
42526	}
42527	#[inline(always)]
42528	fn glUniform3i(&self, location: GLint, v0: GLint, v1: GLint, v2: GLint) -> Result<()> {
42529		let ret = process_catch("glUniform3i", catch_unwind(||(self.version_2_0.uniform3i)(location, v0, v1, v2)));
42530		#[cfg(feature = "diagnose")]
42531		if let Ok(ret) = ret {
42532			return to_result("glUniform3i", ret, (self.version_2_0.geterror)());
42533		} else {
42534			return ret
42535		}
42536		#[cfg(not(feature = "diagnose"))]
42537		return ret;
42538	}
42539	#[inline(always)]
42540	fn glUniform4i(&self, location: GLint, v0: GLint, v1: GLint, v2: GLint, v3: GLint) -> Result<()> {
42541		let ret = process_catch("glUniform4i", catch_unwind(||(self.version_2_0.uniform4i)(location, v0, v1, v2, v3)));
42542		#[cfg(feature = "diagnose")]
42543		if let Ok(ret) = ret {
42544			return to_result("glUniform4i", ret, (self.version_2_0.geterror)());
42545		} else {
42546			return ret
42547		}
42548		#[cfg(not(feature = "diagnose"))]
42549		return ret;
42550	}
42551	#[inline(always)]
42552	fn glUniform1fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
42553		let ret = process_catch("glUniform1fv", catch_unwind(||(self.version_2_0.uniform1fv)(location, count, value)));
42554		#[cfg(feature = "diagnose")]
42555		if let Ok(ret) = ret {
42556			return to_result("glUniform1fv", ret, (self.version_2_0.geterror)());
42557		} else {
42558			return ret
42559		}
42560		#[cfg(not(feature = "diagnose"))]
42561		return ret;
42562	}
42563	#[inline(always)]
42564	fn glUniform2fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
42565		let ret = process_catch("glUniform2fv", catch_unwind(||(self.version_2_0.uniform2fv)(location, count, value)));
42566		#[cfg(feature = "diagnose")]
42567		if let Ok(ret) = ret {
42568			return to_result("glUniform2fv", ret, (self.version_2_0.geterror)());
42569		} else {
42570			return ret
42571		}
42572		#[cfg(not(feature = "diagnose"))]
42573		return ret;
42574	}
42575	#[inline(always)]
42576	fn glUniform3fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
42577		let ret = process_catch("glUniform3fv", catch_unwind(||(self.version_2_0.uniform3fv)(location, count, value)));
42578		#[cfg(feature = "diagnose")]
42579		if let Ok(ret) = ret {
42580			return to_result("glUniform3fv", ret, (self.version_2_0.geterror)());
42581		} else {
42582			return ret
42583		}
42584		#[cfg(not(feature = "diagnose"))]
42585		return ret;
42586	}
42587	#[inline(always)]
42588	fn glUniform4fv(&self, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
42589		let ret = process_catch("glUniform4fv", catch_unwind(||(self.version_2_0.uniform4fv)(location, count, value)));
42590		#[cfg(feature = "diagnose")]
42591		if let Ok(ret) = ret {
42592			return to_result("glUniform4fv", ret, (self.version_2_0.geterror)());
42593		} else {
42594			return ret
42595		}
42596		#[cfg(not(feature = "diagnose"))]
42597		return ret;
42598	}
42599	#[inline(always)]
42600	fn glUniform1iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
42601		let ret = process_catch("glUniform1iv", catch_unwind(||(self.version_2_0.uniform1iv)(location, count, value)));
42602		#[cfg(feature = "diagnose")]
42603		if let Ok(ret) = ret {
42604			return to_result("glUniform1iv", ret, (self.version_2_0.geterror)());
42605		} else {
42606			return ret
42607		}
42608		#[cfg(not(feature = "diagnose"))]
42609		return ret;
42610	}
42611	#[inline(always)]
42612	fn glUniform2iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
42613		let ret = process_catch("glUniform2iv", catch_unwind(||(self.version_2_0.uniform2iv)(location, count, value)));
42614		#[cfg(feature = "diagnose")]
42615		if let Ok(ret) = ret {
42616			return to_result("glUniform2iv", ret, (self.version_2_0.geterror)());
42617		} else {
42618			return ret
42619		}
42620		#[cfg(not(feature = "diagnose"))]
42621		return ret;
42622	}
42623	#[inline(always)]
42624	fn glUniform3iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
42625		let ret = process_catch("glUniform3iv", catch_unwind(||(self.version_2_0.uniform3iv)(location, count, value)));
42626		#[cfg(feature = "diagnose")]
42627		if let Ok(ret) = ret {
42628			return to_result("glUniform3iv", ret, (self.version_2_0.geterror)());
42629		} else {
42630			return ret
42631		}
42632		#[cfg(not(feature = "diagnose"))]
42633		return ret;
42634	}
42635	#[inline(always)]
42636	fn glUniform4iv(&self, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
42637		let ret = process_catch("glUniform4iv", catch_unwind(||(self.version_2_0.uniform4iv)(location, count, value)));
42638		#[cfg(feature = "diagnose")]
42639		if let Ok(ret) = ret {
42640			return to_result("glUniform4iv", ret, (self.version_2_0.geterror)());
42641		} else {
42642			return ret
42643		}
42644		#[cfg(not(feature = "diagnose"))]
42645		return ret;
42646	}
42647	#[inline(always)]
42648	fn glUniformMatrix2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
42649		let ret = process_catch("glUniformMatrix2fv", catch_unwind(||(self.version_2_0.uniformmatrix2fv)(location, count, transpose, value)));
42650		#[cfg(feature = "diagnose")]
42651		if let Ok(ret) = ret {
42652			return to_result("glUniformMatrix2fv", ret, (self.version_2_0.geterror)());
42653		} else {
42654			return ret
42655		}
42656		#[cfg(not(feature = "diagnose"))]
42657		return ret;
42658	}
42659	#[inline(always)]
42660	fn glUniformMatrix3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
42661		let ret = process_catch("glUniformMatrix3fv", catch_unwind(||(self.version_2_0.uniformmatrix3fv)(location, count, transpose, value)));
42662		#[cfg(feature = "diagnose")]
42663		if let Ok(ret) = ret {
42664			return to_result("glUniformMatrix3fv", ret, (self.version_2_0.geterror)());
42665		} else {
42666			return ret
42667		}
42668		#[cfg(not(feature = "diagnose"))]
42669		return ret;
42670	}
42671	#[inline(always)]
42672	fn glUniformMatrix4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
42673		let ret = process_catch("glUniformMatrix4fv", catch_unwind(||(self.version_2_0.uniformmatrix4fv)(location, count, transpose, value)));
42674		#[cfg(feature = "diagnose")]
42675		if let Ok(ret) = ret {
42676			return to_result("glUniformMatrix4fv", ret, (self.version_2_0.geterror)());
42677		} else {
42678			return ret
42679		}
42680		#[cfg(not(feature = "diagnose"))]
42681		return ret;
42682	}
42683	#[inline(always)]
42684	fn glValidateProgram(&self, program: GLuint) -> Result<()> {
42685		let ret = process_catch("glValidateProgram", catch_unwind(||(self.version_2_0.validateprogram)(program)));
42686		#[cfg(feature = "diagnose")]
42687		if let Ok(ret) = ret {
42688			return to_result("glValidateProgram", ret, (self.version_2_0.geterror)());
42689		} else {
42690			return ret
42691		}
42692		#[cfg(not(feature = "diagnose"))]
42693		return ret;
42694	}
42695	#[inline(always)]
42696	fn glVertexAttrib1d(&self, index: GLuint, x: GLdouble) -> Result<()> {
42697		let ret = process_catch("glVertexAttrib1d", catch_unwind(||(self.version_2_0.vertexattrib1d)(index, x)));
42698		#[cfg(feature = "diagnose")]
42699		if let Ok(ret) = ret {
42700			return to_result("glVertexAttrib1d", ret, (self.version_2_0.geterror)());
42701		} else {
42702			return ret
42703		}
42704		#[cfg(not(feature = "diagnose"))]
42705		return ret;
42706	}
42707	#[inline(always)]
42708	fn glVertexAttrib1dv(&self, index: GLuint, v: *const GLdouble) -> Result<()> {
42709		let ret = process_catch("glVertexAttrib1dv", catch_unwind(||(self.version_2_0.vertexattrib1dv)(index, v)));
42710		#[cfg(feature = "diagnose")]
42711		if let Ok(ret) = ret {
42712			return to_result("glVertexAttrib1dv", ret, (self.version_2_0.geterror)());
42713		} else {
42714			return ret
42715		}
42716		#[cfg(not(feature = "diagnose"))]
42717		return ret;
42718	}
42719	#[inline(always)]
42720	fn glVertexAttrib1f(&self, index: GLuint, x: GLfloat) -> Result<()> {
42721		let ret = process_catch("glVertexAttrib1f", catch_unwind(||(self.version_2_0.vertexattrib1f)(index, x)));
42722		#[cfg(feature = "diagnose")]
42723		if let Ok(ret) = ret {
42724			return to_result("glVertexAttrib1f", ret, (self.version_2_0.geterror)());
42725		} else {
42726			return ret
42727		}
42728		#[cfg(not(feature = "diagnose"))]
42729		return ret;
42730	}
42731	#[inline(always)]
42732	fn glVertexAttrib1fv(&self, index: GLuint, v: *const GLfloat) -> Result<()> {
42733		let ret = process_catch("glVertexAttrib1fv", catch_unwind(||(self.version_2_0.vertexattrib1fv)(index, v)));
42734		#[cfg(feature = "diagnose")]
42735		if let Ok(ret) = ret {
42736			return to_result("glVertexAttrib1fv", ret, (self.version_2_0.geterror)());
42737		} else {
42738			return ret
42739		}
42740		#[cfg(not(feature = "diagnose"))]
42741		return ret;
42742	}
42743	#[inline(always)]
42744	fn glVertexAttrib1s(&self, index: GLuint, x: GLshort) -> Result<()> {
42745		let ret = process_catch("glVertexAttrib1s", catch_unwind(||(self.version_2_0.vertexattrib1s)(index, x)));
42746		#[cfg(feature = "diagnose")]
42747		if let Ok(ret) = ret {
42748			return to_result("glVertexAttrib1s", ret, (self.version_2_0.geterror)());
42749		} else {
42750			return ret
42751		}
42752		#[cfg(not(feature = "diagnose"))]
42753		return ret;
42754	}
42755	#[inline(always)]
42756	fn glVertexAttrib1sv(&self, index: GLuint, v: *const GLshort) -> Result<()> {
42757		let ret = process_catch("glVertexAttrib1sv", catch_unwind(||(self.version_2_0.vertexattrib1sv)(index, v)));
42758		#[cfg(feature = "diagnose")]
42759		if let Ok(ret) = ret {
42760			return to_result("glVertexAttrib1sv", ret, (self.version_2_0.geterror)());
42761		} else {
42762			return ret
42763		}
42764		#[cfg(not(feature = "diagnose"))]
42765		return ret;
42766	}
42767	#[inline(always)]
42768	fn glVertexAttrib2d(&self, index: GLuint, x: GLdouble, y: GLdouble) -> Result<()> {
42769		let ret = process_catch("glVertexAttrib2d", catch_unwind(||(self.version_2_0.vertexattrib2d)(index, x, y)));
42770		#[cfg(feature = "diagnose")]
42771		if let Ok(ret) = ret {
42772			return to_result("glVertexAttrib2d", ret, (self.version_2_0.geterror)());
42773		} else {
42774			return ret
42775		}
42776		#[cfg(not(feature = "diagnose"))]
42777		return ret;
42778	}
42779	#[inline(always)]
42780	fn glVertexAttrib2dv(&self, index: GLuint, v: *const GLdouble) -> Result<()> {
42781		let ret = process_catch("glVertexAttrib2dv", catch_unwind(||(self.version_2_0.vertexattrib2dv)(index, v)));
42782		#[cfg(feature = "diagnose")]
42783		if let Ok(ret) = ret {
42784			return to_result("glVertexAttrib2dv", ret, (self.version_2_0.geterror)());
42785		} else {
42786			return ret
42787		}
42788		#[cfg(not(feature = "diagnose"))]
42789		return ret;
42790	}
42791	#[inline(always)]
42792	fn glVertexAttrib2f(&self, index: GLuint, x: GLfloat, y: GLfloat) -> Result<()> {
42793		let ret = process_catch("glVertexAttrib2f", catch_unwind(||(self.version_2_0.vertexattrib2f)(index, x, y)));
42794		#[cfg(feature = "diagnose")]
42795		if let Ok(ret) = ret {
42796			return to_result("glVertexAttrib2f", ret, (self.version_2_0.geterror)());
42797		} else {
42798			return ret
42799		}
42800		#[cfg(not(feature = "diagnose"))]
42801		return ret;
42802	}
42803	#[inline(always)]
42804	fn glVertexAttrib2fv(&self, index: GLuint, v: *const GLfloat) -> Result<()> {
42805		let ret = process_catch("glVertexAttrib2fv", catch_unwind(||(self.version_2_0.vertexattrib2fv)(index, v)));
42806		#[cfg(feature = "diagnose")]
42807		if let Ok(ret) = ret {
42808			return to_result("glVertexAttrib2fv", ret, (self.version_2_0.geterror)());
42809		} else {
42810			return ret
42811		}
42812		#[cfg(not(feature = "diagnose"))]
42813		return ret;
42814	}
42815	#[inline(always)]
42816	fn glVertexAttrib2s(&self, index: GLuint, x: GLshort, y: GLshort) -> Result<()> {
42817		let ret = process_catch("glVertexAttrib2s", catch_unwind(||(self.version_2_0.vertexattrib2s)(index, x, y)));
42818		#[cfg(feature = "diagnose")]
42819		if let Ok(ret) = ret {
42820			return to_result("glVertexAttrib2s", ret, (self.version_2_0.geterror)());
42821		} else {
42822			return ret
42823		}
42824		#[cfg(not(feature = "diagnose"))]
42825		return ret;
42826	}
42827	#[inline(always)]
42828	fn glVertexAttrib2sv(&self, index: GLuint, v: *const GLshort) -> Result<()> {
42829		let ret = process_catch("glVertexAttrib2sv", catch_unwind(||(self.version_2_0.vertexattrib2sv)(index, v)));
42830		#[cfg(feature = "diagnose")]
42831		if let Ok(ret) = ret {
42832			return to_result("glVertexAttrib2sv", ret, (self.version_2_0.geterror)());
42833		} else {
42834			return ret
42835		}
42836		#[cfg(not(feature = "diagnose"))]
42837		return ret;
42838	}
42839	#[inline(always)]
42840	fn glVertexAttrib3d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble) -> Result<()> {
42841		let ret = process_catch("glVertexAttrib3d", catch_unwind(||(self.version_2_0.vertexattrib3d)(index, x, y, z)));
42842		#[cfg(feature = "diagnose")]
42843		if let Ok(ret) = ret {
42844			return to_result("glVertexAttrib3d", ret, (self.version_2_0.geterror)());
42845		} else {
42846			return ret
42847		}
42848		#[cfg(not(feature = "diagnose"))]
42849		return ret;
42850	}
42851	#[inline(always)]
42852	fn glVertexAttrib3dv(&self, index: GLuint, v: *const GLdouble) -> Result<()> {
42853		let ret = process_catch("glVertexAttrib3dv", catch_unwind(||(self.version_2_0.vertexattrib3dv)(index, v)));
42854		#[cfg(feature = "diagnose")]
42855		if let Ok(ret) = ret {
42856			return to_result("glVertexAttrib3dv", ret, (self.version_2_0.geterror)());
42857		} else {
42858			return ret
42859		}
42860		#[cfg(not(feature = "diagnose"))]
42861		return ret;
42862	}
42863	#[inline(always)]
42864	fn glVertexAttrib3f(&self, index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat) -> Result<()> {
42865		let ret = process_catch("glVertexAttrib3f", catch_unwind(||(self.version_2_0.vertexattrib3f)(index, x, y, z)));
42866		#[cfg(feature = "diagnose")]
42867		if let Ok(ret) = ret {
42868			return to_result("glVertexAttrib3f", ret, (self.version_2_0.geterror)());
42869		} else {
42870			return ret
42871		}
42872		#[cfg(not(feature = "diagnose"))]
42873		return ret;
42874	}
42875	#[inline(always)]
42876	fn glVertexAttrib3fv(&self, index: GLuint, v: *const GLfloat) -> Result<()> {
42877		let ret = process_catch("glVertexAttrib3fv", catch_unwind(||(self.version_2_0.vertexattrib3fv)(index, v)));
42878		#[cfg(feature = "diagnose")]
42879		if let Ok(ret) = ret {
42880			return to_result("glVertexAttrib3fv", ret, (self.version_2_0.geterror)());
42881		} else {
42882			return ret
42883		}
42884		#[cfg(not(feature = "diagnose"))]
42885		return ret;
42886	}
42887	#[inline(always)]
42888	fn glVertexAttrib3s(&self, index: GLuint, x: GLshort, y: GLshort, z: GLshort) -> Result<()> {
42889		let ret = process_catch("glVertexAttrib3s", catch_unwind(||(self.version_2_0.vertexattrib3s)(index, x, y, z)));
42890		#[cfg(feature = "diagnose")]
42891		if let Ok(ret) = ret {
42892			return to_result("glVertexAttrib3s", ret, (self.version_2_0.geterror)());
42893		} else {
42894			return ret
42895		}
42896		#[cfg(not(feature = "diagnose"))]
42897		return ret;
42898	}
42899	#[inline(always)]
42900	fn glVertexAttrib3sv(&self, index: GLuint, v: *const GLshort) -> Result<()> {
42901		let ret = process_catch("glVertexAttrib3sv", catch_unwind(||(self.version_2_0.vertexattrib3sv)(index, v)));
42902		#[cfg(feature = "diagnose")]
42903		if let Ok(ret) = ret {
42904			return to_result("glVertexAttrib3sv", ret, (self.version_2_0.geterror)());
42905		} else {
42906			return ret
42907		}
42908		#[cfg(not(feature = "diagnose"))]
42909		return ret;
42910	}
42911	#[inline(always)]
42912	fn glVertexAttrib4Nbv(&self, index: GLuint, v: *const GLbyte) -> Result<()> {
42913		let ret = process_catch("glVertexAttrib4Nbv", catch_unwind(||(self.version_2_0.vertexattrib4nbv)(index, v)));
42914		#[cfg(feature = "diagnose")]
42915		if let Ok(ret) = ret {
42916			return to_result("glVertexAttrib4Nbv", ret, (self.version_2_0.geterror)());
42917		} else {
42918			return ret
42919		}
42920		#[cfg(not(feature = "diagnose"))]
42921		return ret;
42922	}
42923	#[inline(always)]
42924	fn glVertexAttrib4Niv(&self, index: GLuint, v: *const GLint) -> Result<()> {
42925		let ret = process_catch("glVertexAttrib4Niv", catch_unwind(||(self.version_2_0.vertexattrib4niv)(index, v)));
42926		#[cfg(feature = "diagnose")]
42927		if let Ok(ret) = ret {
42928			return to_result("glVertexAttrib4Niv", ret, (self.version_2_0.geterror)());
42929		} else {
42930			return ret
42931		}
42932		#[cfg(not(feature = "diagnose"))]
42933		return ret;
42934	}
42935	#[inline(always)]
42936	fn glVertexAttrib4Nsv(&self, index: GLuint, v: *const GLshort) -> Result<()> {
42937		let ret = process_catch("glVertexAttrib4Nsv", catch_unwind(||(self.version_2_0.vertexattrib4nsv)(index, v)));
42938		#[cfg(feature = "diagnose")]
42939		if let Ok(ret) = ret {
42940			return to_result("glVertexAttrib4Nsv", ret, (self.version_2_0.geterror)());
42941		} else {
42942			return ret
42943		}
42944		#[cfg(not(feature = "diagnose"))]
42945		return ret;
42946	}
42947	#[inline(always)]
42948	fn glVertexAttrib4Nub(&self, index: GLuint, x: GLubyte, y: GLubyte, z: GLubyte, w: GLubyte) -> Result<()> {
42949		let ret = process_catch("glVertexAttrib4Nub", catch_unwind(||(self.version_2_0.vertexattrib4nub)(index, x, y, z, w)));
42950		#[cfg(feature = "diagnose")]
42951		if let Ok(ret) = ret {
42952			return to_result("glVertexAttrib4Nub", ret, (self.version_2_0.geterror)());
42953		} else {
42954			return ret
42955		}
42956		#[cfg(not(feature = "diagnose"))]
42957		return ret;
42958	}
42959	#[inline(always)]
42960	fn glVertexAttrib4Nubv(&self, index: GLuint, v: *const GLubyte) -> Result<()> {
42961		let ret = process_catch("glVertexAttrib4Nubv", catch_unwind(||(self.version_2_0.vertexattrib4nubv)(index, v)));
42962		#[cfg(feature = "diagnose")]
42963		if let Ok(ret) = ret {
42964			return to_result("glVertexAttrib4Nubv", ret, (self.version_2_0.geterror)());
42965		} else {
42966			return ret
42967		}
42968		#[cfg(not(feature = "diagnose"))]
42969		return ret;
42970	}
42971	#[inline(always)]
42972	fn glVertexAttrib4Nuiv(&self, index: GLuint, v: *const GLuint) -> Result<()> {
42973		let ret = process_catch("glVertexAttrib4Nuiv", catch_unwind(||(self.version_2_0.vertexattrib4nuiv)(index, v)));
42974		#[cfg(feature = "diagnose")]
42975		if let Ok(ret) = ret {
42976			return to_result("glVertexAttrib4Nuiv", ret, (self.version_2_0.geterror)());
42977		} else {
42978			return ret
42979		}
42980		#[cfg(not(feature = "diagnose"))]
42981		return ret;
42982	}
42983	#[inline(always)]
42984	fn glVertexAttrib4Nusv(&self, index: GLuint, v: *const GLushort) -> Result<()> {
42985		let ret = process_catch("glVertexAttrib4Nusv", catch_unwind(||(self.version_2_0.vertexattrib4nusv)(index, v)));
42986		#[cfg(feature = "diagnose")]
42987		if let Ok(ret) = ret {
42988			return to_result("glVertexAttrib4Nusv", ret, (self.version_2_0.geterror)());
42989		} else {
42990			return ret
42991		}
42992		#[cfg(not(feature = "diagnose"))]
42993		return ret;
42994	}
42995	#[inline(always)]
42996	fn glVertexAttrib4bv(&self, index: GLuint, v: *const GLbyte) -> Result<()> {
42997		let ret = process_catch("glVertexAttrib4bv", catch_unwind(||(self.version_2_0.vertexattrib4bv)(index, v)));
42998		#[cfg(feature = "diagnose")]
42999		if let Ok(ret) = ret {
43000			return to_result("glVertexAttrib4bv", ret, (self.version_2_0.geterror)());
43001		} else {
43002			return ret
43003		}
43004		#[cfg(not(feature = "diagnose"))]
43005		return ret;
43006	}
43007	#[inline(always)]
43008	fn glVertexAttrib4d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble, w: GLdouble) -> Result<()> {
43009		let ret = process_catch("glVertexAttrib4d", catch_unwind(||(self.version_2_0.vertexattrib4d)(index, x, y, z, w)));
43010		#[cfg(feature = "diagnose")]
43011		if let Ok(ret) = ret {
43012			return to_result("glVertexAttrib4d", ret, (self.version_2_0.geterror)());
43013		} else {
43014			return ret
43015		}
43016		#[cfg(not(feature = "diagnose"))]
43017		return ret;
43018	}
43019	#[inline(always)]
43020	fn glVertexAttrib4dv(&self, index: GLuint, v: *const GLdouble) -> Result<()> {
43021		let ret = process_catch("glVertexAttrib4dv", catch_unwind(||(self.version_2_0.vertexattrib4dv)(index, v)));
43022		#[cfg(feature = "diagnose")]
43023		if let Ok(ret) = ret {
43024			return to_result("glVertexAttrib4dv", ret, (self.version_2_0.geterror)());
43025		} else {
43026			return ret
43027		}
43028		#[cfg(not(feature = "diagnose"))]
43029		return ret;
43030	}
43031	#[inline(always)]
43032	fn glVertexAttrib4f(&self, index: GLuint, x: GLfloat, y: GLfloat, z: GLfloat, w: GLfloat) -> Result<()> {
43033		let ret = process_catch("glVertexAttrib4f", catch_unwind(||(self.version_2_0.vertexattrib4f)(index, x, y, z, w)));
43034		#[cfg(feature = "diagnose")]
43035		if let Ok(ret) = ret {
43036			return to_result("glVertexAttrib4f", ret, (self.version_2_0.geterror)());
43037		} else {
43038			return ret
43039		}
43040		#[cfg(not(feature = "diagnose"))]
43041		return ret;
43042	}
43043	#[inline(always)]
43044	fn glVertexAttrib4fv(&self, index: GLuint, v: *const GLfloat) -> Result<()> {
43045		let ret = process_catch("glVertexAttrib4fv", catch_unwind(||(self.version_2_0.vertexattrib4fv)(index, v)));
43046		#[cfg(feature = "diagnose")]
43047		if let Ok(ret) = ret {
43048			return to_result("glVertexAttrib4fv", ret, (self.version_2_0.geterror)());
43049		} else {
43050			return ret
43051		}
43052		#[cfg(not(feature = "diagnose"))]
43053		return ret;
43054	}
43055	#[inline(always)]
43056	fn glVertexAttrib4iv(&self, index: GLuint, v: *const GLint) -> Result<()> {
43057		let ret = process_catch("glVertexAttrib4iv", catch_unwind(||(self.version_2_0.vertexattrib4iv)(index, v)));
43058		#[cfg(feature = "diagnose")]
43059		if let Ok(ret) = ret {
43060			return to_result("glVertexAttrib4iv", ret, (self.version_2_0.geterror)());
43061		} else {
43062			return ret
43063		}
43064		#[cfg(not(feature = "diagnose"))]
43065		return ret;
43066	}
43067	#[inline(always)]
43068	fn glVertexAttrib4s(&self, index: GLuint, x: GLshort, y: GLshort, z: GLshort, w: GLshort) -> Result<()> {
43069		let ret = process_catch("glVertexAttrib4s", catch_unwind(||(self.version_2_0.vertexattrib4s)(index, x, y, z, w)));
43070		#[cfg(feature = "diagnose")]
43071		if let Ok(ret) = ret {
43072			return to_result("glVertexAttrib4s", ret, (self.version_2_0.geterror)());
43073		} else {
43074			return ret
43075		}
43076		#[cfg(not(feature = "diagnose"))]
43077		return ret;
43078	}
43079	#[inline(always)]
43080	fn glVertexAttrib4sv(&self, index: GLuint, v: *const GLshort) -> Result<()> {
43081		let ret = process_catch("glVertexAttrib4sv", catch_unwind(||(self.version_2_0.vertexattrib4sv)(index, v)));
43082		#[cfg(feature = "diagnose")]
43083		if let Ok(ret) = ret {
43084			return to_result("glVertexAttrib4sv", ret, (self.version_2_0.geterror)());
43085		} else {
43086			return ret
43087		}
43088		#[cfg(not(feature = "diagnose"))]
43089		return ret;
43090	}
43091	#[inline(always)]
43092	fn glVertexAttrib4ubv(&self, index: GLuint, v: *const GLubyte) -> Result<()> {
43093		let ret = process_catch("glVertexAttrib4ubv", catch_unwind(||(self.version_2_0.vertexattrib4ubv)(index, v)));
43094		#[cfg(feature = "diagnose")]
43095		if let Ok(ret) = ret {
43096			return to_result("glVertexAttrib4ubv", ret, (self.version_2_0.geterror)());
43097		} else {
43098			return ret
43099		}
43100		#[cfg(not(feature = "diagnose"))]
43101		return ret;
43102	}
43103	#[inline(always)]
43104	fn glVertexAttrib4uiv(&self, index: GLuint, v: *const GLuint) -> Result<()> {
43105		let ret = process_catch("glVertexAttrib4uiv", catch_unwind(||(self.version_2_0.vertexattrib4uiv)(index, v)));
43106		#[cfg(feature = "diagnose")]
43107		if let Ok(ret) = ret {
43108			return to_result("glVertexAttrib4uiv", ret, (self.version_2_0.geterror)());
43109		} else {
43110			return ret
43111		}
43112		#[cfg(not(feature = "diagnose"))]
43113		return ret;
43114	}
43115	#[inline(always)]
43116	fn glVertexAttrib4usv(&self, index: GLuint, v: *const GLushort) -> Result<()> {
43117		let ret = process_catch("glVertexAttrib4usv", catch_unwind(||(self.version_2_0.vertexattrib4usv)(index, v)));
43118		#[cfg(feature = "diagnose")]
43119		if let Ok(ret) = ret {
43120			return to_result("glVertexAttrib4usv", ret, (self.version_2_0.geterror)());
43121		} else {
43122			return ret
43123		}
43124		#[cfg(not(feature = "diagnose"))]
43125		return ret;
43126	}
43127	#[inline(always)]
43128	fn glVertexAttribPointer(&self, index: GLuint, size: GLint, type_: GLenum, normalized: GLboolean, stride: GLsizei, pointer: *const c_void) -> Result<()> {
43129		let ret = process_catch("glVertexAttribPointer", catch_unwind(||(self.version_2_0.vertexattribpointer)(index, size, type_, normalized, stride, pointer)));
43130		#[cfg(feature = "diagnose")]
43131		if let Ok(ret) = ret {
43132			return to_result("glVertexAttribPointer", ret, (self.version_2_0.geterror)());
43133		} else {
43134			return ret
43135		}
43136		#[cfg(not(feature = "diagnose"))]
43137		return ret;
43138	}
43139}
43140
43141impl GL_2_1_g for GLCore {
43142	#[inline(always)]
43143	fn glUniformMatrix2x3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
43144		let ret = process_catch("glUniformMatrix2x3fv", catch_unwind(||(self.version_2_1.uniformmatrix2x3fv)(location, count, transpose, value)));
43145		#[cfg(feature = "diagnose")]
43146		if let Ok(ret) = ret {
43147			return to_result("glUniformMatrix2x3fv", ret, (self.version_2_1.geterror)());
43148		} else {
43149			return ret
43150		}
43151		#[cfg(not(feature = "diagnose"))]
43152		return ret;
43153	}
43154	#[inline(always)]
43155	fn glUniformMatrix3x2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
43156		let ret = process_catch("glUniformMatrix3x2fv", catch_unwind(||(self.version_2_1.uniformmatrix3x2fv)(location, count, transpose, value)));
43157		#[cfg(feature = "diagnose")]
43158		if let Ok(ret) = ret {
43159			return to_result("glUniformMatrix3x2fv", ret, (self.version_2_1.geterror)());
43160		} else {
43161			return ret
43162		}
43163		#[cfg(not(feature = "diagnose"))]
43164		return ret;
43165	}
43166	#[inline(always)]
43167	fn glUniformMatrix2x4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
43168		let ret = process_catch("glUniformMatrix2x4fv", catch_unwind(||(self.version_2_1.uniformmatrix2x4fv)(location, count, transpose, value)));
43169		#[cfg(feature = "diagnose")]
43170		if let Ok(ret) = ret {
43171			return to_result("glUniformMatrix2x4fv", ret, (self.version_2_1.geterror)());
43172		} else {
43173			return ret
43174		}
43175		#[cfg(not(feature = "diagnose"))]
43176		return ret;
43177	}
43178	#[inline(always)]
43179	fn glUniformMatrix4x2fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
43180		let ret = process_catch("glUniformMatrix4x2fv", catch_unwind(||(self.version_2_1.uniformmatrix4x2fv)(location, count, transpose, value)));
43181		#[cfg(feature = "diagnose")]
43182		if let Ok(ret) = ret {
43183			return to_result("glUniformMatrix4x2fv", ret, (self.version_2_1.geterror)());
43184		} else {
43185			return ret
43186		}
43187		#[cfg(not(feature = "diagnose"))]
43188		return ret;
43189	}
43190	#[inline(always)]
43191	fn glUniformMatrix3x4fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
43192		let ret = process_catch("glUniformMatrix3x4fv", catch_unwind(||(self.version_2_1.uniformmatrix3x4fv)(location, count, transpose, value)));
43193		#[cfg(feature = "diagnose")]
43194		if let Ok(ret) = ret {
43195			return to_result("glUniformMatrix3x4fv", ret, (self.version_2_1.geterror)());
43196		} else {
43197			return ret
43198		}
43199		#[cfg(not(feature = "diagnose"))]
43200		return ret;
43201	}
43202	#[inline(always)]
43203	fn glUniformMatrix4x3fv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
43204		let ret = process_catch("glUniformMatrix4x3fv", catch_unwind(||(self.version_2_1.uniformmatrix4x3fv)(location, count, transpose, value)));
43205		#[cfg(feature = "diagnose")]
43206		if let Ok(ret) = ret {
43207			return to_result("glUniformMatrix4x3fv", ret, (self.version_2_1.geterror)());
43208		} else {
43209			return ret
43210		}
43211		#[cfg(not(feature = "diagnose"))]
43212		return ret;
43213	}
43214}
43215
43216impl GL_3_0_g for GLCore {
43217	#[inline(always)]
43218	fn glColorMaski(&self, index: GLuint, r: GLboolean, g: GLboolean, b: GLboolean, a: GLboolean) -> Result<()> {
43219		let ret = process_catch("glColorMaski", catch_unwind(||(self.version_3_0.colormaski)(index, r, g, b, a)));
43220		#[cfg(feature = "diagnose")]
43221		if let Ok(ret) = ret {
43222			return to_result("glColorMaski", ret, (self.version_3_0.geterror)());
43223		} else {
43224			return ret
43225		}
43226		#[cfg(not(feature = "diagnose"))]
43227		return ret;
43228	}
43229	#[inline(always)]
43230	fn glGetBooleani_v(&self, target: GLenum, index: GLuint, data: *mut GLboolean) -> Result<()> {
43231		let ret = process_catch("glGetBooleani_v", catch_unwind(||(self.version_3_0.getbooleani_v)(target, index, data)));
43232		#[cfg(feature = "diagnose")]
43233		if let Ok(ret) = ret {
43234			return to_result("glGetBooleani_v", ret, (self.version_3_0.geterror)());
43235		} else {
43236			return ret
43237		}
43238		#[cfg(not(feature = "diagnose"))]
43239		return ret;
43240	}
43241	#[inline(always)]
43242	fn glGetIntegeri_v(&self, target: GLenum, index: GLuint, data: *mut GLint) -> Result<()> {
43243		let ret = process_catch("glGetIntegeri_v", catch_unwind(||(self.version_3_0.getintegeri_v)(target, index, data)));
43244		#[cfg(feature = "diagnose")]
43245		if let Ok(ret) = ret {
43246			return to_result("glGetIntegeri_v", ret, (self.version_3_0.geterror)());
43247		} else {
43248			return ret
43249		}
43250		#[cfg(not(feature = "diagnose"))]
43251		return ret;
43252	}
43253	#[inline(always)]
43254	fn glEnablei(&self, target: GLenum, index: GLuint) -> Result<()> {
43255		let ret = process_catch("glEnablei", catch_unwind(||(self.version_3_0.enablei)(target, index)));
43256		#[cfg(feature = "diagnose")]
43257		if let Ok(ret) = ret {
43258			return to_result("glEnablei", ret, (self.version_3_0.geterror)());
43259		} else {
43260			return ret
43261		}
43262		#[cfg(not(feature = "diagnose"))]
43263		return ret;
43264	}
43265	#[inline(always)]
43266	fn glDisablei(&self, target: GLenum, index: GLuint) -> Result<()> {
43267		let ret = process_catch("glDisablei", catch_unwind(||(self.version_3_0.disablei)(target, index)));
43268		#[cfg(feature = "diagnose")]
43269		if let Ok(ret) = ret {
43270			return to_result("glDisablei", ret, (self.version_3_0.geterror)());
43271		} else {
43272			return ret
43273		}
43274		#[cfg(not(feature = "diagnose"))]
43275		return ret;
43276	}
43277	#[inline(always)]
43278	fn glIsEnabledi(&self, target: GLenum, index: GLuint) -> Result<GLboolean> {
43279		let ret = process_catch("glIsEnabledi", catch_unwind(||(self.version_3_0.isenabledi)(target, index)));
43280		#[cfg(feature = "diagnose")]
43281		if let Ok(ret) = ret {
43282			return to_result("glIsEnabledi", ret, (self.version_3_0.geterror)());
43283		} else {
43284			return ret
43285		}
43286		#[cfg(not(feature = "diagnose"))]
43287		return ret;
43288	}
43289	#[inline(always)]
43290	fn glBeginTransformFeedback(&self, primitiveMode: GLenum) -> Result<()> {
43291		let ret = process_catch("glBeginTransformFeedback", catch_unwind(||(self.version_3_0.begintransformfeedback)(primitiveMode)));
43292		#[cfg(feature = "diagnose")]
43293		if let Ok(ret) = ret {
43294			return to_result("glBeginTransformFeedback", ret, (self.version_3_0.geterror)());
43295		} else {
43296			return ret
43297		}
43298		#[cfg(not(feature = "diagnose"))]
43299		return ret;
43300	}
43301	#[inline(always)]
43302	fn glEndTransformFeedback(&self) -> Result<()> {
43303		let ret = process_catch("glEndTransformFeedback", catch_unwind(||(self.version_3_0.endtransformfeedback)()));
43304		#[cfg(feature = "diagnose")]
43305		if let Ok(ret) = ret {
43306			return to_result("glEndTransformFeedback", ret, (self.version_3_0.geterror)());
43307		} else {
43308			return ret
43309		}
43310		#[cfg(not(feature = "diagnose"))]
43311		return ret;
43312	}
43313	#[inline(always)]
43314	fn glBindBufferRange(&self, target: GLenum, index: GLuint, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()> {
43315		let ret = process_catch("glBindBufferRange", catch_unwind(||(self.version_3_0.bindbufferrange)(target, index, buffer, offset, size)));
43316		#[cfg(feature = "diagnose")]
43317		if let Ok(ret) = ret {
43318			return to_result("glBindBufferRange", ret, (self.version_3_0.geterror)());
43319		} else {
43320			return ret
43321		}
43322		#[cfg(not(feature = "diagnose"))]
43323		return ret;
43324	}
43325	#[inline(always)]
43326	fn glBindBufferBase(&self, target: GLenum, index: GLuint, buffer: GLuint) -> Result<()> {
43327		let ret = process_catch("glBindBufferBase", catch_unwind(||(self.version_3_0.bindbufferbase)(target, index, buffer)));
43328		#[cfg(feature = "diagnose")]
43329		if let Ok(ret) = ret {
43330			return to_result("glBindBufferBase", ret, (self.version_3_0.geterror)());
43331		} else {
43332			return ret
43333		}
43334		#[cfg(not(feature = "diagnose"))]
43335		return ret;
43336	}
43337	#[inline(always)]
43338	fn glTransformFeedbackVaryings(&self, program: GLuint, count: GLsizei, varyings: *const *const GLchar, bufferMode: GLenum) -> Result<()> {
43339		let ret = process_catch("glTransformFeedbackVaryings", catch_unwind(||(self.version_3_0.transformfeedbackvaryings)(program, count, varyings, bufferMode)));
43340		#[cfg(feature = "diagnose")]
43341		if let Ok(ret) = ret {
43342			return to_result("glTransformFeedbackVaryings", ret, (self.version_3_0.geterror)());
43343		} else {
43344			return ret
43345		}
43346		#[cfg(not(feature = "diagnose"))]
43347		return ret;
43348	}
43349	#[inline(always)]
43350	fn glGetTransformFeedbackVarying(&self, program: GLuint, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, size: *mut GLsizei, type_: *mut GLenum, name: *mut GLchar) -> Result<()> {
43351		let ret = process_catch("glGetTransformFeedbackVarying", catch_unwind(||(self.version_3_0.gettransformfeedbackvarying)(program, index, bufSize, length, size, type_, name)));
43352		#[cfg(feature = "diagnose")]
43353		if let Ok(ret) = ret {
43354			return to_result("glGetTransformFeedbackVarying", ret, (self.version_3_0.geterror)());
43355		} else {
43356			return ret
43357		}
43358		#[cfg(not(feature = "diagnose"))]
43359		return ret;
43360	}
43361	#[inline(always)]
43362	fn glClampColor(&self, target: GLenum, clamp: GLenum) -> Result<()> {
43363		let ret = process_catch("glClampColor", catch_unwind(||(self.version_3_0.clampcolor)(target, clamp)));
43364		#[cfg(feature = "diagnose")]
43365		if let Ok(ret) = ret {
43366			return to_result("glClampColor", ret, (self.version_3_0.geterror)());
43367		} else {
43368			return ret
43369		}
43370		#[cfg(not(feature = "diagnose"))]
43371		return ret;
43372	}
43373	#[inline(always)]
43374	fn glBeginConditionalRender(&self, id: GLuint, mode: GLenum) -> Result<()> {
43375		let ret = process_catch("glBeginConditionalRender", catch_unwind(||(self.version_3_0.beginconditionalrender)(id, mode)));
43376		#[cfg(feature = "diagnose")]
43377		if let Ok(ret) = ret {
43378			return to_result("glBeginConditionalRender", ret, (self.version_3_0.geterror)());
43379		} else {
43380			return ret
43381		}
43382		#[cfg(not(feature = "diagnose"))]
43383		return ret;
43384	}
43385	#[inline(always)]
43386	fn glEndConditionalRender(&self) -> Result<()> {
43387		let ret = process_catch("glEndConditionalRender", catch_unwind(||(self.version_3_0.endconditionalrender)()));
43388		#[cfg(feature = "diagnose")]
43389		if let Ok(ret) = ret {
43390			return to_result("glEndConditionalRender", ret, (self.version_3_0.geterror)());
43391		} else {
43392			return ret
43393		}
43394		#[cfg(not(feature = "diagnose"))]
43395		return ret;
43396	}
43397	#[inline(always)]
43398	fn glVertexAttribIPointer(&self, index: GLuint, size: GLint, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()> {
43399		let ret = process_catch("glVertexAttribIPointer", catch_unwind(||(self.version_3_0.vertexattribipointer)(index, size, type_, stride, pointer)));
43400		#[cfg(feature = "diagnose")]
43401		if let Ok(ret) = ret {
43402			return to_result("glVertexAttribIPointer", ret, (self.version_3_0.geterror)());
43403		} else {
43404			return ret
43405		}
43406		#[cfg(not(feature = "diagnose"))]
43407		return ret;
43408	}
43409	#[inline(always)]
43410	fn glGetVertexAttribIiv(&self, index: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
43411		let ret = process_catch("glGetVertexAttribIiv", catch_unwind(||(self.version_3_0.getvertexattribiiv)(index, pname, params)));
43412		#[cfg(feature = "diagnose")]
43413		if let Ok(ret) = ret {
43414			return to_result("glGetVertexAttribIiv", ret, (self.version_3_0.geterror)());
43415		} else {
43416			return ret
43417		}
43418		#[cfg(not(feature = "diagnose"))]
43419		return ret;
43420	}
43421	#[inline(always)]
43422	fn glGetVertexAttribIuiv(&self, index: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()> {
43423		let ret = process_catch("glGetVertexAttribIuiv", catch_unwind(||(self.version_3_0.getvertexattribiuiv)(index, pname, params)));
43424		#[cfg(feature = "diagnose")]
43425		if let Ok(ret) = ret {
43426			return to_result("glGetVertexAttribIuiv", ret, (self.version_3_0.geterror)());
43427		} else {
43428			return ret
43429		}
43430		#[cfg(not(feature = "diagnose"))]
43431		return ret;
43432	}
43433	#[inline(always)]
43434	fn glVertexAttribI1i(&self, index: GLuint, x: GLint) -> Result<()> {
43435		let ret = process_catch("glVertexAttribI1i", catch_unwind(||(self.version_3_0.vertexattribi1i)(index, x)));
43436		#[cfg(feature = "diagnose")]
43437		if let Ok(ret) = ret {
43438			return to_result("glVertexAttribI1i", ret, (self.version_3_0.geterror)());
43439		} else {
43440			return ret
43441		}
43442		#[cfg(not(feature = "diagnose"))]
43443		return ret;
43444	}
43445	#[inline(always)]
43446	fn glVertexAttribI2i(&self, index: GLuint, x: GLint, y: GLint) -> Result<()> {
43447		let ret = process_catch("glVertexAttribI2i", catch_unwind(||(self.version_3_0.vertexattribi2i)(index, x, y)));
43448		#[cfg(feature = "diagnose")]
43449		if let Ok(ret) = ret {
43450			return to_result("glVertexAttribI2i", ret, (self.version_3_0.geterror)());
43451		} else {
43452			return ret
43453		}
43454		#[cfg(not(feature = "diagnose"))]
43455		return ret;
43456	}
43457	#[inline(always)]
43458	fn glVertexAttribI3i(&self, index: GLuint, x: GLint, y: GLint, z: GLint) -> Result<()> {
43459		let ret = process_catch("glVertexAttribI3i", catch_unwind(||(self.version_3_0.vertexattribi3i)(index, x, y, z)));
43460		#[cfg(feature = "diagnose")]
43461		if let Ok(ret) = ret {
43462			return to_result("glVertexAttribI3i", ret, (self.version_3_0.geterror)());
43463		} else {
43464			return ret
43465		}
43466		#[cfg(not(feature = "diagnose"))]
43467		return ret;
43468	}
43469	#[inline(always)]
43470	fn glVertexAttribI4i(&self, index: GLuint, x: GLint, y: GLint, z: GLint, w: GLint) -> Result<()> {
43471		let ret = process_catch("glVertexAttribI4i", catch_unwind(||(self.version_3_0.vertexattribi4i)(index, x, y, z, w)));
43472		#[cfg(feature = "diagnose")]
43473		if let Ok(ret) = ret {
43474			return to_result("glVertexAttribI4i", ret, (self.version_3_0.geterror)());
43475		} else {
43476			return ret
43477		}
43478		#[cfg(not(feature = "diagnose"))]
43479		return ret;
43480	}
43481	#[inline(always)]
43482	fn glVertexAttribI1ui(&self, index: GLuint, x: GLuint) -> Result<()> {
43483		let ret = process_catch("glVertexAttribI1ui", catch_unwind(||(self.version_3_0.vertexattribi1ui)(index, x)));
43484		#[cfg(feature = "diagnose")]
43485		if let Ok(ret) = ret {
43486			return to_result("glVertexAttribI1ui", ret, (self.version_3_0.geterror)());
43487		} else {
43488			return ret
43489		}
43490		#[cfg(not(feature = "diagnose"))]
43491		return ret;
43492	}
43493	#[inline(always)]
43494	fn glVertexAttribI2ui(&self, index: GLuint, x: GLuint, y: GLuint) -> Result<()> {
43495		let ret = process_catch("glVertexAttribI2ui", catch_unwind(||(self.version_3_0.vertexattribi2ui)(index, x, y)));
43496		#[cfg(feature = "diagnose")]
43497		if let Ok(ret) = ret {
43498			return to_result("glVertexAttribI2ui", ret, (self.version_3_0.geterror)());
43499		} else {
43500			return ret
43501		}
43502		#[cfg(not(feature = "diagnose"))]
43503		return ret;
43504	}
43505	#[inline(always)]
43506	fn glVertexAttribI3ui(&self, index: GLuint, x: GLuint, y: GLuint, z: GLuint) -> Result<()> {
43507		let ret = process_catch("glVertexAttribI3ui", catch_unwind(||(self.version_3_0.vertexattribi3ui)(index, x, y, z)));
43508		#[cfg(feature = "diagnose")]
43509		if let Ok(ret) = ret {
43510			return to_result("glVertexAttribI3ui", ret, (self.version_3_0.geterror)());
43511		} else {
43512			return ret
43513		}
43514		#[cfg(not(feature = "diagnose"))]
43515		return ret;
43516	}
43517	#[inline(always)]
43518	fn glVertexAttribI4ui(&self, index: GLuint, x: GLuint, y: GLuint, z: GLuint, w: GLuint) -> Result<()> {
43519		let ret = process_catch("glVertexAttribI4ui", catch_unwind(||(self.version_3_0.vertexattribi4ui)(index, x, y, z, w)));
43520		#[cfg(feature = "diagnose")]
43521		if let Ok(ret) = ret {
43522			return to_result("glVertexAttribI4ui", ret, (self.version_3_0.geterror)());
43523		} else {
43524			return ret
43525		}
43526		#[cfg(not(feature = "diagnose"))]
43527		return ret;
43528	}
43529	#[inline(always)]
43530	fn glVertexAttribI1iv(&self, index: GLuint, v: *const GLint) -> Result<()> {
43531		let ret = process_catch("glVertexAttribI1iv", catch_unwind(||(self.version_3_0.vertexattribi1iv)(index, v)));
43532		#[cfg(feature = "diagnose")]
43533		if let Ok(ret) = ret {
43534			return to_result("glVertexAttribI1iv", ret, (self.version_3_0.geterror)());
43535		} else {
43536			return ret
43537		}
43538		#[cfg(not(feature = "diagnose"))]
43539		return ret;
43540	}
43541	#[inline(always)]
43542	fn glVertexAttribI2iv(&self, index: GLuint, v: *const GLint) -> Result<()> {
43543		let ret = process_catch("glVertexAttribI2iv", catch_unwind(||(self.version_3_0.vertexattribi2iv)(index, v)));
43544		#[cfg(feature = "diagnose")]
43545		if let Ok(ret) = ret {
43546			return to_result("glVertexAttribI2iv", ret, (self.version_3_0.geterror)());
43547		} else {
43548			return ret
43549		}
43550		#[cfg(not(feature = "diagnose"))]
43551		return ret;
43552	}
43553	#[inline(always)]
43554	fn glVertexAttribI3iv(&self, index: GLuint, v: *const GLint) -> Result<()> {
43555		let ret = process_catch("glVertexAttribI3iv", catch_unwind(||(self.version_3_0.vertexattribi3iv)(index, v)));
43556		#[cfg(feature = "diagnose")]
43557		if let Ok(ret) = ret {
43558			return to_result("glVertexAttribI3iv", ret, (self.version_3_0.geterror)());
43559		} else {
43560			return ret
43561		}
43562		#[cfg(not(feature = "diagnose"))]
43563		return ret;
43564	}
43565	#[inline(always)]
43566	fn glVertexAttribI4iv(&self, index: GLuint, v: *const GLint) -> Result<()> {
43567		let ret = process_catch("glVertexAttribI4iv", catch_unwind(||(self.version_3_0.vertexattribi4iv)(index, v)));
43568		#[cfg(feature = "diagnose")]
43569		if let Ok(ret) = ret {
43570			return to_result("glVertexAttribI4iv", ret, (self.version_3_0.geterror)());
43571		} else {
43572			return ret
43573		}
43574		#[cfg(not(feature = "diagnose"))]
43575		return ret;
43576	}
43577	#[inline(always)]
43578	fn glVertexAttribI1uiv(&self, index: GLuint, v: *const GLuint) -> Result<()> {
43579		let ret = process_catch("glVertexAttribI1uiv", catch_unwind(||(self.version_3_0.vertexattribi1uiv)(index, v)));
43580		#[cfg(feature = "diagnose")]
43581		if let Ok(ret) = ret {
43582			return to_result("glVertexAttribI1uiv", ret, (self.version_3_0.geterror)());
43583		} else {
43584			return ret
43585		}
43586		#[cfg(not(feature = "diagnose"))]
43587		return ret;
43588	}
43589	#[inline(always)]
43590	fn glVertexAttribI2uiv(&self, index: GLuint, v: *const GLuint) -> Result<()> {
43591		let ret = process_catch("glVertexAttribI2uiv", catch_unwind(||(self.version_3_0.vertexattribi2uiv)(index, v)));
43592		#[cfg(feature = "diagnose")]
43593		if let Ok(ret) = ret {
43594			return to_result("glVertexAttribI2uiv", ret, (self.version_3_0.geterror)());
43595		} else {
43596			return ret
43597		}
43598		#[cfg(not(feature = "diagnose"))]
43599		return ret;
43600	}
43601	#[inline(always)]
43602	fn glVertexAttribI3uiv(&self, index: GLuint, v: *const GLuint) -> Result<()> {
43603		let ret = process_catch("glVertexAttribI3uiv", catch_unwind(||(self.version_3_0.vertexattribi3uiv)(index, v)));
43604		#[cfg(feature = "diagnose")]
43605		if let Ok(ret) = ret {
43606			return to_result("glVertexAttribI3uiv", ret, (self.version_3_0.geterror)());
43607		} else {
43608			return ret
43609		}
43610		#[cfg(not(feature = "diagnose"))]
43611		return ret;
43612	}
43613	#[inline(always)]
43614	fn glVertexAttribI4uiv(&self, index: GLuint, v: *const GLuint) -> Result<()> {
43615		let ret = process_catch("glVertexAttribI4uiv", catch_unwind(||(self.version_3_0.vertexattribi4uiv)(index, v)));
43616		#[cfg(feature = "diagnose")]
43617		if let Ok(ret) = ret {
43618			return to_result("glVertexAttribI4uiv", ret, (self.version_3_0.geterror)());
43619		} else {
43620			return ret
43621		}
43622		#[cfg(not(feature = "diagnose"))]
43623		return ret;
43624	}
43625	#[inline(always)]
43626	fn glVertexAttribI4bv(&self, index: GLuint, v: *const GLbyte) -> Result<()> {
43627		let ret = process_catch("glVertexAttribI4bv", catch_unwind(||(self.version_3_0.vertexattribi4bv)(index, v)));
43628		#[cfg(feature = "diagnose")]
43629		if let Ok(ret) = ret {
43630			return to_result("glVertexAttribI4bv", ret, (self.version_3_0.geterror)());
43631		} else {
43632			return ret
43633		}
43634		#[cfg(not(feature = "diagnose"))]
43635		return ret;
43636	}
43637	#[inline(always)]
43638	fn glVertexAttribI4sv(&self, index: GLuint, v: *const GLshort) -> Result<()> {
43639		let ret = process_catch("glVertexAttribI4sv", catch_unwind(||(self.version_3_0.vertexattribi4sv)(index, v)));
43640		#[cfg(feature = "diagnose")]
43641		if let Ok(ret) = ret {
43642			return to_result("glVertexAttribI4sv", ret, (self.version_3_0.geterror)());
43643		} else {
43644			return ret
43645		}
43646		#[cfg(not(feature = "diagnose"))]
43647		return ret;
43648	}
43649	#[inline(always)]
43650	fn glVertexAttribI4ubv(&self, index: GLuint, v: *const GLubyte) -> Result<()> {
43651		let ret = process_catch("glVertexAttribI4ubv", catch_unwind(||(self.version_3_0.vertexattribi4ubv)(index, v)));
43652		#[cfg(feature = "diagnose")]
43653		if let Ok(ret) = ret {
43654			return to_result("glVertexAttribI4ubv", ret, (self.version_3_0.geterror)());
43655		} else {
43656			return ret
43657		}
43658		#[cfg(not(feature = "diagnose"))]
43659		return ret;
43660	}
43661	#[inline(always)]
43662	fn glVertexAttribI4usv(&self, index: GLuint, v: *const GLushort) -> Result<()> {
43663		let ret = process_catch("glVertexAttribI4usv", catch_unwind(||(self.version_3_0.vertexattribi4usv)(index, v)));
43664		#[cfg(feature = "diagnose")]
43665		if let Ok(ret) = ret {
43666			return to_result("glVertexAttribI4usv", ret, (self.version_3_0.geterror)());
43667		} else {
43668			return ret
43669		}
43670		#[cfg(not(feature = "diagnose"))]
43671		return ret;
43672	}
43673	#[inline(always)]
43674	fn glGetUniformuiv(&self, program: GLuint, location: GLint, params: *mut GLuint) -> Result<()> {
43675		let ret = process_catch("glGetUniformuiv", catch_unwind(||(self.version_3_0.getuniformuiv)(program, location, params)));
43676		#[cfg(feature = "diagnose")]
43677		if let Ok(ret) = ret {
43678			return to_result("glGetUniformuiv", ret, (self.version_3_0.geterror)());
43679		} else {
43680			return ret
43681		}
43682		#[cfg(not(feature = "diagnose"))]
43683		return ret;
43684	}
43685	#[inline(always)]
43686	fn glBindFragDataLocation(&self, program: GLuint, color: GLuint, name: *const GLchar) -> Result<()> {
43687		let ret = process_catch("glBindFragDataLocation", catch_unwind(||(self.version_3_0.bindfragdatalocation)(program, color, name)));
43688		#[cfg(feature = "diagnose")]
43689		if let Ok(ret) = ret {
43690			return to_result("glBindFragDataLocation", ret, (self.version_3_0.geterror)());
43691		} else {
43692			return ret
43693		}
43694		#[cfg(not(feature = "diagnose"))]
43695		return ret;
43696	}
43697	#[inline(always)]
43698	fn glGetFragDataLocation(&self, program: GLuint, name: *const GLchar) -> Result<GLint> {
43699		let ret = process_catch("glGetFragDataLocation", catch_unwind(||(self.version_3_0.getfragdatalocation)(program, name)));
43700		#[cfg(feature = "diagnose")]
43701		if let Ok(ret) = ret {
43702			return to_result("glGetFragDataLocation", ret, (self.version_3_0.geterror)());
43703		} else {
43704			return ret
43705		}
43706		#[cfg(not(feature = "diagnose"))]
43707		return ret;
43708	}
43709	#[inline(always)]
43710	fn glUniform1ui(&self, location: GLint, v0: GLuint) -> Result<()> {
43711		let ret = process_catch("glUniform1ui", catch_unwind(||(self.version_3_0.uniform1ui)(location, v0)));
43712		#[cfg(feature = "diagnose")]
43713		if let Ok(ret) = ret {
43714			return to_result("glUniform1ui", ret, (self.version_3_0.geterror)());
43715		} else {
43716			return ret
43717		}
43718		#[cfg(not(feature = "diagnose"))]
43719		return ret;
43720	}
43721	#[inline(always)]
43722	fn glUniform2ui(&self, location: GLint, v0: GLuint, v1: GLuint) -> Result<()> {
43723		let ret = process_catch("glUniform2ui", catch_unwind(||(self.version_3_0.uniform2ui)(location, v0, v1)));
43724		#[cfg(feature = "diagnose")]
43725		if let Ok(ret) = ret {
43726			return to_result("glUniform2ui", ret, (self.version_3_0.geterror)());
43727		} else {
43728			return ret
43729		}
43730		#[cfg(not(feature = "diagnose"))]
43731		return ret;
43732	}
43733	#[inline(always)]
43734	fn glUniform3ui(&self, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint) -> Result<()> {
43735		let ret = process_catch("glUniform3ui", catch_unwind(||(self.version_3_0.uniform3ui)(location, v0, v1, v2)));
43736		#[cfg(feature = "diagnose")]
43737		if let Ok(ret) = ret {
43738			return to_result("glUniform3ui", ret, (self.version_3_0.geterror)());
43739		} else {
43740			return ret
43741		}
43742		#[cfg(not(feature = "diagnose"))]
43743		return ret;
43744	}
43745	#[inline(always)]
43746	fn glUniform4ui(&self, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint, v3: GLuint) -> Result<()> {
43747		let ret = process_catch("glUniform4ui", catch_unwind(||(self.version_3_0.uniform4ui)(location, v0, v1, v2, v3)));
43748		#[cfg(feature = "diagnose")]
43749		if let Ok(ret) = ret {
43750			return to_result("glUniform4ui", ret, (self.version_3_0.geterror)());
43751		} else {
43752			return ret
43753		}
43754		#[cfg(not(feature = "diagnose"))]
43755		return ret;
43756	}
43757	#[inline(always)]
43758	fn glUniform1uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
43759		let ret = process_catch("glUniform1uiv", catch_unwind(||(self.version_3_0.uniform1uiv)(location, count, value)));
43760		#[cfg(feature = "diagnose")]
43761		if let Ok(ret) = ret {
43762			return to_result("glUniform1uiv", ret, (self.version_3_0.geterror)());
43763		} else {
43764			return ret
43765		}
43766		#[cfg(not(feature = "diagnose"))]
43767		return ret;
43768	}
43769	#[inline(always)]
43770	fn glUniform2uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
43771		let ret = process_catch("glUniform2uiv", catch_unwind(||(self.version_3_0.uniform2uiv)(location, count, value)));
43772		#[cfg(feature = "diagnose")]
43773		if let Ok(ret) = ret {
43774			return to_result("glUniform2uiv", ret, (self.version_3_0.geterror)());
43775		} else {
43776			return ret
43777		}
43778		#[cfg(not(feature = "diagnose"))]
43779		return ret;
43780	}
43781	#[inline(always)]
43782	fn glUniform3uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
43783		let ret = process_catch("glUniform3uiv", catch_unwind(||(self.version_3_0.uniform3uiv)(location, count, value)));
43784		#[cfg(feature = "diagnose")]
43785		if let Ok(ret) = ret {
43786			return to_result("glUniform3uiv", ret, (self.version_3_0.geterror)());
43787		} else {
43788			return ret
43789		}
43790		#[cfg(not(feature = "diagnose"))]
43791		return ret;
43792	}
43793	#[inline(always)]
43794	fn glUniform4uiv(&self, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
43795		let ret = process_catch("glUniform4uiv", catch_unwind(||(self.version_3_0.uniform4uiv)(location, count, value)));
43796		#[cfg(feature = "diagnose")]
43797		if let Ok(ret) = ret {
43798			return to_result("glUniform4uiv", ret, (self.version_3_0.geterror)());
43799		} else {
43800			return ret
43801		}
43802		#[cfg(not(feature = "diagnose"))]
43803		return ret;
43804	}
43805	#[inline(always)]
43806	fn glTexParameterIiv(&self, target: GLenum, pname: GLenum, params: *const GLint) -> Result<()> {
43807		let ret = process_catch("glTexParameterIiv", catch_unwind(||(self.version_3_0.texparameteriiv)(target, pname, params)));
43808		#[cfg(feature = "diagnose")]
43809		if let Ok(ret) = ret {
43810			return to_result("glTexParameterIiv", ret, (self.version_3_0.geterror)());
43811		} else {
43812			return ret
43813		}
43814		#[cfg(not(feature = "diagnose"))]
43815		return ret;
43816	}
43817	#[inline(always)]
43818	fn glTexParameterIuiv(&self, target: GLenum, pname: GLenum, params: *const GLuint) -> Result<()> {
43819		let ret = process_catch("glTexParameterIuiv", catch_unwind(||(self.version_3_0.texparameteriuiv)(target, pname, params)));
43820		#[cfg(feature = "diagnose")]
43821		if let Ok(ret) = ret {
43822			return to_result("glTexParameterIuiv", ret, (self.version_3_0.geterror)());
43823		} else {
43824			return ret
43825		}
43826		#[cfg(not(feature = "diagnose"))]
43827		return ret;
43828	}
43829	#[inline(always)]
43830	fn glGetTexParameterIiv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
43831		let ret = process_catch("glGetTexParameterIiv", catch_unwind(||(self.version_3_0.gettexparameteriiv)(target, pname, params)));
43832		#[cfg(feature = "diagnose")]
43833		if let Ok(ret) = ret {
43834			return to_result("glGetTexParameterIiv", ret, (self.version_3_0.geterror)());
43835		} else {
43836			return ret
43837		}
43838		#[cfg(not(feature = "diagnose"))]
43839		return ret;
43840	}
43841	#[inline(always)]
43842	fn glGetTexParameterIuiv(&self, target: GLenum, pname: GLenum, params: *mut GLuint) -> Result<()> {
43843		let ret = process_catch("glGetTexParameterIuiv", catch_unwind(||(self.version_3_0.gettexparameteriuiv)(target, pname, params)));
43844		#[cfg(feature = "diagnose")]
43845		if let Ok(ret) = ret {
43846			return to_result("glGetTexParameterIuiv", ret, (self.version_3_0.geterror)());
43847		} else {
43848			return ret
43849		}
43850		#[cfg(not(feature = "diagnose"))]
43851		return ret;
43852	}
43853	#[inline(always)]
43854	fn glClearBufferiv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLint) -> Result<()> {
43855		let ret = process_catch("glClearBufferiv", catch_unwind(||(self.version_3_0.clearbufferiv)(buffer, drawbuffer, value)));
43856		#[cfg(feature = "diagnose")]
43857		if let Ok(ret) = ret {
43858			return to_result("glClearBufferiv", ret, (self.version_3_0.geterror)());
43859		} else {
43860			return ret
43861		}
43862		#[cfg(not(feature = "diagnose"))]
43863		return ret;
43864	}
43865	#[inline(always)]
43866	fn glClearBufferuiv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLuint) -> Result<()> {
43867		let ret = process_catch("glClearBufferuiv", catch_unwind(||(self.version_3_0.clearbufferuiv)(buffer, drawbuffer, value)));
43868		#[cfg(feature = "diagnose")]
43869		if let Ok(ret) = ret {
43870			return to_result("glClearBufferuiv", ret, (self.version_3_0.geterror)());
43871		} else {
43872			return ret
43873		}
43874		#[cfg(not(feature = "diagnose"))]
43875		return ret;
43876	}
43877	#[inline(always)]
43878	fn glClearBufferfv(&self, buffer: GLenum, drawbuffer: GLint, value: *const GLfloat) -> Result<()> {
43879		let ret = process_catch("glClearBufferfv", catch_unwind(||(self.version_3_0.clearbufferfv)(buffer, drawbuffer, value)));
43880		#[cfg(feature = "diagnose")]
43881		if let Ok(ret) = ret {
43882			return to_result("glClearBufferfv", ret, (self.version_3_0.geterror)());
43883		} else {
43884			return ret
43885		}
43886		#[cfg(not(feature = "diagnose"))]
43887		return ret;
43888	}
43889	#[inline(always)]
43890	fn glClearBufferfi(&self, buffer: GLenum, drawbuffer: GLint, depth: GLfloat, stencil: GLint) -> Result<()> {
43891		let ret = process_catch("glClearBufferfi", catch_unwind(||(self.version_3_0.clearbufferfi)(buffer, drawbuffer, depth, stencil)));
43892		#[cfg(feature = "diagnose")]
43893		if let Ok(ret) = ret {
43894			return to_result("glClearBufferfi", ret, (self.version_3_0.geterror)());
43895		} else {
43896			return ret
43897		}
43898		#[cfg(not(feature = "diagnose"))]
43899		return ret;
43900	}
43901	#[inline(always)]
43902	fn glGetStringi(&self, name: GLenum, index: GLuint) -> Result<&'static str> {
43903		let ret = process_catch("glGetStringi", catch_unwind(||unsafe{CStr::from_ptr((self.version_3_0.getstringi)(name, index) as *const i8)}.to_str().unwrap()));
43904		#[cfg(feature = "diagnose")]
43905		if let Ok(ret) = ret {
43906			return to_result("glGetStringi", ret, (self.version_3_0.geterror)());
43907		} else {
43908			return ret
43909		}
43910		#[cfg(not(feature = "diagnose"))]
43911		return ret;
43912	}
43913	#[inline(always)]
43914	fn glIsRenderbuffer(&self, renderbuffer: GLuint) -> Result<GLboolean> {
43915		let ret = process_catch("glIsRenderbuffer", catch_unwind(||(self.version_3_0.isrenderbuffer)(renderbuffer)));
43916		#[cfg(feature = "diagnose")]
43917		if let Ok(ret) = ret {
43918			return to_result("glIsRenderbuffer", ret, (self.version_3_0.geterror)());
43919		} else {
43920			return ret
43921		}
43922		#[cfg(not(feature = "diagnose"))]
43923		return ret;
43924	}
43925	#[inline(always)]
43926	fn glBindRenderbuffer(&self, target: GLenum, renderbuffer: GLuint) -> Result<()> {
43927		let ret = process_catch("glBindRenderbuffer", catch_unwind(||(self.version_3_0.bindrenderbuffer)(target, renderbuffer)));
43928		#[cfg(feature = "diagnose")]
43929		if let Ok(ret) = ret {
43930			return to_result("glBindRenderbuffer", ret, (self.version_3_0.geterror)());
43931		} else {
43932			return ret
43933		}
43934		#[cfg(not(feature = "diagnose"))]
43935		return ret;
43936	}
43937	#[inline(always)]
43938	fn glDeleteRenderbuffers(&self, n: GLsizei, renderbuffers: *const GLuint) -> Result<()> {
43939		let ret = process_catch("glDeleteRenderbuffers", catch_unwind(||(self.version_3_0.deleterenderbuffers)(n, renderbuffers)));
43940		#[cfg(feature = "diagnose")]
43941		if let Ok(ret) = ret {
43942			return to_result("glDeleteRenderbuffers", ret, (self.version_3_0.geterror)());
43943		} else {
43944			return ret
43945		}
43946		#[cfg(not(feature = "diagnose"))]
43947		return ret;
43948	}
43949	#[inline(always)]
43950	fn glGenRenderbuffers(&self, n: GLsizei, renderbuffers: *mut GLuint) -> Result<()> {
43951		let ret = process_catch("glGenRenderbuffers", catch_unwind(||(self.version_3_0.genrenderbuffers)(n, renderbuffers)));
43952		#[cfg(feature = "diagnose")]
43953		if let Ok(ret) = ret {
43954			return to_result("glGenRenderbuffers", ret, (self.version_3_0.geterror)());
43955		} else {
43956			return ret
43957		}
43958		#[cfg(not(feature = "diagnose"))]
43959		return ret;
43960	}
43961	#[inline(always)]
43962	fn glRenderbufferStorage(&self, target: GLenum, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()> {
43963		let ret = process_catch("glRenderbufferStorage", catch_unwind(||(self.version_3_0.renderbufferstorage)(target, internalformat, width, height)));
43964		#[cfg(feature = "diagnose")]
43965		if let Ok(ret) = ret {
43966			return to_result("glRenderbufferStorage", ret, (self.version_3_0.geterror)());
43967		} else {
43968			return ret
43969		}
43970		#[cfg(not(feature = "diagnose"))]
43971		return ret;
43972	}
43973	#[inline(always)]
43974	fn glGetRenderbufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
43975		let ret = process_catch("glGetRenderbufferParameteriv", catch_unwind(||(self.version_3_0.getrenderbufferparameteriv)(target, pname, params)));
43976		#[cfg(feature = "diagnose")]
43977		if let Ok(ret) = ret {
43978			return to_result("glGetRenderbufferParameteriv", ret, (self.version_3_0.geterror)());
43979		} else {
43980			return ret
43981		}
43982		#[cfg(not(feature = "diagnose"))]
43983		return ret;
43984	}
43985	#[inline(always)]
43986	fn glIsFramebuffer(&self, framebuffer: GLuint) -> Result<GLboolean> {
43987		let ret = process_catch("glIsFramebuffer", catch_unwind(||(self.version_3_0.isframebuffer)(framebuffer)));
43988		#[cfg(feature = "diagnose")]
43989		if let Ok(ret) = ret {
43990			return to_result("glIsFramebuffer", ret, (self.version_3_0.geterror)());
43991		} else {
43992			return ret
43993		}
43994		#[cfg(not(feature = "diagnose"))]
43995		return ret;
43996	}
43997	#[inline(always)]
43998	fn glBindFramebuffer(&self, target: GLenum, framebuffer: GLuint) -> Result<()> {
43999		let ret = process_catch("glBindFramebuffer", catch_unwind(||(self.version_3_0.bindframebuffer)(target, framebuffer)));
44000		#[cfg(feature = "diagnose")]
44001		if let Ok(ret) = ret {
44002			return to_result("glBindFramebuffer", ret, (self.version_3_0.geterror)());
44003		} else {
44004			return ret
44005		}
44006		#[cfg(not(feature = "diagnose"))]
44007		return ret;
44008	}
44009	#[inline(always)]
44010	fn glDeleteFramebuffers(&self, n: GLsizei, framebuffers: *const GLuint) -> Result<()> {
44011		let ret = process_catch("glDeleteFramebuffers", catch_unwind(||(self.version_3_0.deleteframebuffers)(n, framebuffers)));
44012		#[cfg(feature = "diagnose")]
44013		if let Ok(ret) = ret {
44014			return to_result("glDeleteFramebuffers", ret, (self.version_3_0.geterror)());
44015		} else {
44016			return ret
44017		}
44018		#[cfg(not(feature = "diagnose"))]
44019		return ret;
44020	}
44021	#[inline(always)]
44022	fn glGenFramebuffers(&self, n: GLsizei, framebuffers: *mut GLuint) -> Result<()> {
44023		let ret = process_catch("glGenFramebuffers", catch_unwind(||(self.version_3_0.genframebuffers)(n, framebuffers)));
44024		#[cfg(feature = "diagnose")]
44025		if let Ok(ret) = ret {
44026			return to_result("glGenFramebuffers", ret, (self.version_3_0.geterror)());
44027		} else {
44028			return ret
44029		}
44030		#[cfg(not(feature = "diagnose"))]
44031		return ret;
44032	}
44033	#[inline(always)]
44034	fn glCheckFramebufferStatus(&self, target: GLenum) -> Result<GLenum> {
44035		let ret = process_catch("glCheckFramebufferStatus", catch_unwind(||(self.version_3_0.checkframebufferstatus)(target)));
44036		#[cfg(feature = "diagnose")]
44037		if let Ok(ret) = ret {
44038			return to_result("glCheckFramebufferStatus", ret, (self.version_3_0.geterror)());
44039		} else {
44040			return ret
44041		}
44042		#[cfg(not(feature = "diagnose"))]
44043		return ret;
44044	}
44045	#[inline(always)]
44046	fn glFramebufferTexture1D(&self, target: GLenum, attachment: GLenum, textarget: GLenum, texture: GLuint, level: GLint) -> Result<()> {
44047		let ret = process_catch("glFramebufferTexture1D", catch_unwind(||(self.version_3_0.framebuffertexture1d)(target, attachment, textarget, texture, level)));
44048		#[cfg(feature = "diagnose")]
44049		if let Ok(ret) = ret {
44050			return to_result("glFramebufferTexture1D", ret, (self.version_3_0.geterror)());
44051		} else {
44052			return ret
44053		}
44054		#[cfg(not(feature = "diagnose"))]
44055		return ret;
44056	}
44057	#[inline(always)]
44058	fn glFramebufferTexture2D(&self, target: GLenum, attachment: GLenum, textarget: GLenum, texture: GLuint, level: GLint) -> Result<()> {
44059		let ret = process_catch("glFramebufferTexture2D", catch_unwind(||(self.version_3_0.framebuffertexture2d)(target, attachment, textarget, texture, level)));
44060		#[cfg(feature = "diagnose")]
44061		if let Ok(ret) = ret {
44062			return to_result("glFramebufferTexture2D", ret, (self.version_3_0.geterror)());
44063		} else {
44064			return ret
44065		}
44066		#[cfg(not(feature = "diagnose"))]
44067		return ret;
44068	}
44069	#[inline(always)]
44070	fn glFramebufferTexture3D(&self, target: GLenum, attachment: GLenum, textarget: GLenum, texture: GLuint, level: GLint, zoffset: GLint) -> Result<()> {
44071		let ret = process_catch("glFramebufferTexture3D", catch_unwind(||(self.version_3_0.framebuffertexture3d)(target, attachment, textarget, texture, level, zoffset)));
44072		#[cfg(feature = "diagnose")]
44073		if let Ok(ret) = ret {
44074			return to_result("glFramebufferTexture3D", ret, (self.version_3_0.geterror)());
44075		} else {
44076			return ret
44077		}
44078		#[cfg(not(feature = "diagnose"))]
44079		return ret;
44080	}
44081	#[inline(always)]
44082	fn glFramebufferRenderbuffer(&self, target: GLenum, attachment: GLenum, renderbuffertarget: GLenum, renderbuffer: GLuint) -> Result<()> {
44083		let ret = process_catch("glFramebufferRenderbuffer", catch_unwind(||(self.version_3_0.framebufferrenderbuffer)(target, attachment, renderbuffertarget, renderbuffer)));
44084		#[cfg(feature = "diagnose")]
44085		if let Ok(ret) = ret {
44086			return to_result("glFramebufferRenderbuffer", ret, (self.version_3_0.geterror)());
44087		} else {
44088			return ret
44089		}
44090		#[cfg(not(feature = "diagnose"))]
44091		return ret;
44092	}
44093	#[inline(always)]
44094	fn glGetFramebufferAttachmentParameteriv(&self, target: GLenum, attachment: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
44095		let ret = process_catch("glGetFramebufferAttachmentParameteriv", catch_unwind(||(self.version_3_0.getframebufferattachmentparameteriv)(target, attachment, pname, params)));
44096		#[cfg(feature = "diagnose")]
44097		if let Ok(ret) = ret {
44098			return to_result("glGetFramebufferAttachmentParameteriv", ret, (self.version_3_0.geterror)());
44099		} else {
44100			return ret
44101		}
44102		#[cfg(not(feature = "diagnose"))]
44103		return ret;
44104	}
44105	#[inline(always)]
44106	fn glGenerateMipmap(&self, target: GLenum) -> Result<()> {
44107		let ret = process_catch("glGenerateMipmap", catch_unwind(||(self.version_3_0.generatemipmap)(target)));
44108		#[cfg(feature = "diagnose")]
44109		if let Ok(ret) = ret {
44110			return to_result("glGenerateMipmap", ret, (self.version_3_0.geterror)());
44111		} else {
44112			return ret
44113		}
44114		#[cfg(not(feature = "diagnose"))]
44115		return ret;
44116	}
44117	#[inline(always)]
44118	fn glBlitFramebuffer(&self, srcX0: GLint, srcY0: GLint, srcX1: GLint, srcY1: GLint, dstX0: GLint, dstY0: GLint, dstX1: GLint, dstY1: GLint, mask: GLbitfield, filter: GLenum) -> Result<()> {
44119		let ret = process_catch("glBlitFramebuffer", catch_unwind(||(self.version_3_0.blitframebuffer)(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter)));
44120		#[cfg(feature = "diagnose")]
44121		if let Ok(ret) = ret {
44122			return to_result("glBlitFramebuffer", ret, (self.version_3_0.geterror)());
44123		} else {
44124			return ret
44125		}
44126		#[cfg(not(feature = "diagnose"))]
44127		return ret;
44128	}
44129	#[inline(always)]
44130	fn glRenderbufferStorageMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()> {
44131		let ret = process_catch("glRenderbufferStorageMultisample", catch_unwind(||(self.version_3_0.renderbufferstoragemultisample)(target, samples, internalformat, width, height)));
44132		#[cfg(feature = "diagnose")]
44133		if let Ok(ret) = ret {
44134			return to_result("glRenderbufferStorageMultisample", ret, (self.version_3_0.geterror)());
44135		} else {
44136			return ret
44137		}
44138		#[cfg(not(feature = "diagnose"))]
44139		return ret;
44140	}
44141	#[inline(always)]
44142	fn glFramebufferTextureLayer(&self, target: GLenum, attachment: GLenum, texture: GLuint, level: GLint, layer: GLint) -> Result<()> {
44143		let ret = process_catch("glFramebufferTextureLayer", catch_unwind(||(self.version_3_0.framebuffertexturelayer)(target, attachment, texture, level, layer)));
44144		#[cfg(feature = "diagnose")]
44145		if let Ok(ret) = ret {
44146			return to_result("glFramebufferTextureLayer", ret, (self.version_3_0.geterror)());
44147		} else {
44148			return ret
44149		}
44150		#[cfg(not(feature = "diagnose"))]
44151		return ret;
44152	}
44153	#[inline(always)]
44154	fn glMapBufferRange(&self, target: GLenum, offset: GLintptr, length: GLsizeiptr, access: GLbitfield) -> Result<*mut c_void> {
44155		let ret = process_catch("glMapBufferRange", catch_unwind(||(self.version_3_0.mapbufferrange)(target, offset, length, access)));
44156		#[cfg(feature = "diagnose")]
44157		if let Ok(ret) = ret {
44158			return to_result("glMapBufferRange", ret, (self.version_3_0.geterror)());
44159		} else {
44160			return ret
44161		}
44162		#[cfg(not(feature = "diagnose"))]
44163		return ret;
44164	}
44165	#[inline(always)]
44166	fn glFlushMappedBufferRange(&self, target: GLenum, offset: GLintptr, length: GLsizeiptr) -> Result<()> {
44167		let ret = process_catch("glFlushMappedBufferRange", catch_unwind(||(self.version_3_0.flushmappedbufferrange)(target, offset, length)));
44168		#[cfg(feature = "diagnose")]
44169		if let Ok(ret) = ret {
44170			return to_result("glFlushMappedBufferRange", ret, (self.version_3_0.geterror)());
44171		} else {
44172			return ret
44173		}
44174		#[cfg(not(feature = "diagnose"))]
44175		return ret;
44176	}
44177	#[inline(always)]
44178	fn glBindVertexArray(&self, array: GLuint) -> Result<()> {
44179		let ret = process_catch("glBindVertexArray", catch_unwind(||(self.version_3_0.bindvertexarray)(array)));
44180		#[cfg(feature = "diagnose")]
44181		if let Ok(ret) = ret {
44182			return to_result("glBindVertexArray", ret, (self.version_3_0.geterror)());
44183		} else {
44184			return ret
44185		}
44186		#[cfg(not(feature = "diagnose"))]
44187		return ret;
44188	}
44189	#[inline(always)]
44190	fn glDeleteVertexArrays(&self, n: GLsizei, arrays: *const GLuint) -> Result<()> {
44191		let ret = process_catch("glDeleteVertexArrays", catch_unwind(||(self.version_3_0.deletevertexarrays)(n, arrays)));
44192		#[cfg(feature = "diagnose")]
44193		if let Ok(ret) = ret {
44194			return to_result("glDeleteVertexArrays", ret, (self.version_3_0.geterror)());
44195		} else {
44196			return ret
44197		}
44198		#[cfg(not(feature = "diagnose"))]
44199		return ret;
44200	}
44201	#[inline(always)]
44202	fn glGenVertexArrays(&self, n: GLsizei, arrays: *mut GLuint) -> Result<()> {
44203		let ret = process_catch("glGenVertexArrays", catch_unwind(||(self.version_3_0.genvertexarrays)(n, arrays)));
44204		#[cfg(feature = "diagnose")]
44205		if let Ok(ret) = ret {
44206			return to_result("glGenVertexArrays", ret, (self.version_3_0.geterror)());
44207		} else {
44208			return ret
44209		}
44210		#[cfg(not(feature = "diagnose"))]
44211		return ret;
44212	}
44213	#[inline(always)]
44214	fn glIsVertexArray(&self, array: GLuint) -> Result<GLboolean> {
44215		let ret = process_catch("glIsVertexArray", catch_unwind(||(self.version_3_0.isvertexarray)(array)));
44216		#[cfg(feature = "diagnose")]
44217		if let Ok(ret) = ret {
44218			return to_result("glIsVertexArray", ret, (self.version_3_0.geterror)());
44219		} else {
44220			return ret
44221		}
44222		#[cfg(not(feature = "diagnose"))]
44223		return ret;
44224	}
44225}
44226
44227impl GL_3_1_g for GLCore {
44228	#[inline(always)]
44229	fn glDrawArraysInstanced(&self, mode: GLenum, first: GLint, count: GLsizei, instancecount: GLsizei) -> Result<()> {
44230		let ret = process_catch("glDrawArraysInstanced", catch_unwind(||(self.version_3_1.drawarraysinstanced)(mode, first, count, instancecount)));
44231		#[cfg(feature = "diagnose")]
44232		if let Ok(ret) = ret {
44233			return to_result("glDrawArraysInstanced", ret, (self.version_3_1.geterror)());
44234		} else {
44235			return ret
44236		}
44237		#[cfg(not(feature = "diagnose"))]
44238		return ret;
44239	}
44240	#[inline(always)]
44241	fn glDrawElementsInstanced(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei) -> Result<()> {
44242		let ret = process_catch("glDrawElementsInstanced", catch_unwind(||(self.version_3_1.drawelementsinstanced)(mode, count, type_, indices, instancecount)));
44243		#[cfg(feature = "diagnose")]
44244		if let Ok(ret) = ret {
44245			return to_result("glDrawElementsInstanced", ret, (self.version_3_1.geterror)());
44246		} else {
44247			return ret
44248		}
44249		#[cfg(not(feature = "diagnose"))]
44250		return ret;
44251	}
44252	#[inline(always)]
44253	fn glTexBuffer(&self, target: GLenum, internalformat: GLenum, buffer: GLuint) -> Result<()> {
44254		let ret = process_catch("glTexBuffer", catch_unwind(||(self.version_3_1.texbuffer)(target, internalformat, buffer)));
44255		#[cfg(feature = "diagnose")]
44256		if let Ok(ret) = ret {
44257			return to_result("glTexBuffer", ret, (self.version_3_1.geterror)());
44258		} else {
44259			return ret
44260		}
44261		#[cfg(not(feature = "diagnose"))]
44262		return ret;
44263	}
44264	#[inline(always)]
44265	fn glPrimitiveRestartIndex(&self, index: GLuint) -> Result<()> {
44266		let ret = process_catch("glPrimitiveRestartIndex", catch_unwind(||(self.version_3_1.primitiverestartindex)(index)));
44267		#[cfg(feature = "diagnose")]
44268		if let Ok(ret) = ret {
44269			return to_result("glPrimitiveRestartIndex", ret, (self.version_3_1.geterror)());
44270		} else {
44271			return ret
44272		}
44273		#[cfg(not(feature = "diagnose"))]
44274		return ret;
44275	}
44276	#[inline(always)]
44277	fn glCopyBufferSubData(&self, readTarget: GLenum, writeTarget: GLenum, readOffset: GLintptr, writeOffset: GLintptr, size: GLsizeiptr) -> Result<()> {
44278		let ret = process_catch("glCopyBufferSubData", catch_unwind(||(self.version_3_1.copybuffersubdata)(readTarget, writeTarget, readOffset, writeOffset, size)));
44279		#[cfg(feature = "diagnose")]
44280		if let Ok(ret) = ret {
44281			return to_result("glCopyBufferSubData", ret, (self.version_3_1.geterror)());
44282		} else {
44283			return ret
44284		}
44285		#[cfg(not(feature = "diagnose"))]
44286		return ret;
44287	}
44288	#[inline(always)]
44289	fn glGetUniformIndices(&self, program: GLuint, uniformCount: GLsizei, uniformNames: *const *const GLchar, uniformIndices: *mut GLuint) -> Result<()> {
44290		let ret = process_catch("glGetUniformIndices", catch_unwind(||(self.version_3_1.getuniformindices)(program, uniformCount, uniformNames, uniformIndices)));
44291		#[cfg(feature = "diagnose")]
44292		if let Ok(ret) = ret {
44293			return to_result("glGetUniformIndices", ret, (self.version_3_1.geterror)());
44294		} else {
44295			return ret
44296		}
44297		#[cfg(not(feature = "diagnose"))]
44298		return ret;
44299	}
44300	#[inline(always)]
44301	fn glGetActiveUniformsiv(&self, program: GLuint, uniformCount: GLsizei, uniformIndices: *const GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
44302		let ret = process_catch("glGetActiveUniformsiv", catch_unwind(||(self.version_3_1.getactiveuniformsiv)(program, uniformCount, uniformIndices, pname, params)));
44303		#[cfg(feature = "diagnose")]
44304		if let Ok(ret) = ret {
44305			return to_result("glGetActiveUniformsiv", ret, (self.version_3_1.geterror)());
44306		} else {
44307			return ret
44308		}
44309		#[cfg(not(feature = "diagnose"))]
44310		return ret;
44311	}
44312	#[inline(always)]
44313	fn glGetActiveUniformName(&self, program: GLuint, uniformIndex: GLuint, bufSize: GLsizei, length: *mut GLsizei, uniformName: *mut GLchar) -> Result<()> {
44314		let ret = process_catch("glGetActiveUniformName", catch_unwind(||(self.version_3_1.getactiveuniformname)(program, uniformIndex, bufSize, length, uniformName)));
44315		#[cfg(feature = "diagnose")]
44316		if let Ok(ret) = ret {
44317			return to_result("glGetActiveUniformName", ret, (self.version_3_1.geterror)());
44318		} else {
44319			return ret
44320		}
44321		#[cfg(not(feature = "diagnose"))]
44322		return ret;
44323	}
44324	#[inline(always)]
44325	fn glGetUniformBlockIndex(&self, program: GLuint, uniformBlockName: *const GLchar) -> Result<GLuint> {
44326		let ret = process_catch("glGetUniformBlockIndex", catch_unwind(||(self.version_3_1.getuniformblockindex)(program, uniformBlockName)));
44327		#[cfg(feature = "diagnose")]
44328		if let Ok(ret) = ret {
44329			return to_result("glGetUniformBlockIndex", ret, (self.version_3_1.geterror)());
44330		} else {
44331			return ret
44332		}
44333		#[cfg(not(feature = "diagnose"))]
44334		return ret;
44335	}
44336	#[inline(always)]
44337	fn glGetActiveUniformBlockiv(&self, program: GLuint, uniformBlockIndex: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
44338		let ret = process_catch("glGetActiveUniformBlockiv", catch_unwind(||(self.version_3_1.getactiveuniformblockiv)(program, uniformBlockIndex, pname, params)));
44339		#[cfg(feature = "diagnose")]
44340		if let Ok(ret) = ret {
44341			return to_result("glGetActiveUniformBlockiv", ret, (self.version_3_1.geterror)());
44342		} else {
44343			return ret
44344		}
44345		#[cfg(not(feature = "diagnose"))]
44346		return ret;
44347	}
44348	#[inline(always)]
44349	fn glGetActiveUniformBlockName(&self, program: GLuint, uniformBlockIndex: GLuint, bufSize: GLsizei, length: *mut GLsizei, uniformBlockName: *mut GLchar) -> Result<()> {
44350		let ret = process_catch("glGetActiveUniformBlockName", catch_unwind(||(self.version_3_1.getactiveuniformblockname)(program, uniformBlockIndex, bufSize, length, uniformBlockName)));
44351		#[cfg(feature = "diagnose")]
44352		if let Ok(ret) = ret {
44353			return to_result("glGetActiveUniformBlockName", ret, (self.version_3_1.geterror)());
44354		} else {
44355			return ret
44356		}
44357		#[cfg(not(feature = "diagnose"))]
44358		return ret;
44359	}
44360	#[inline(always)]
44361	fn glUniformBlockBinding(&self, program: GLuint, uniformBlockIndex: GLuint, uniformBlockBinding: GLuint) -> Result<()> {
44362		let ret = process_catch("glUniformBlockBinding", catch_unwind(||(self.version_3_1.uniformblockbinding)(program, uniformBlockIndex, uniformBlockBinding)));
44363		#[cfg(feature = "diagnose")]
44364		if let Ok(ret) = ret {
44365			return to_result("glUniformBlockBinding", ret, (self.version_3_1.geterror)());
44366		} else {
44367			return ret
44368		}
44369		#[cfg(not(feature = "diagnose"))]
44370		return ret;
44371	}
44372}
44373
44374impl GL_3_2_g for GLCore {
44375	#[inline(always)]
44376	fn glDrawElementsBaseVertex(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, basevertex: GLint) -> Result<()> {
44377		let ret = process_catch("glDrawElementsBaseVertex", catch_unwind(||(self.version_3_2.drawelementsbasevertex)(mode, count, type_, indices, basevertex)));
44378		#[cfg(feature = "diagnose")]
44379		if let Ok(ret) = ret {
44380			return to_result("glDrawElementsBaseVertex", ret, (self.version_3_2.geterror)());
44381		} else {
44382			return ret
44383		}
44384		#[cfg(not(feature = "diagnose"))]
44385		return ret;
44386	}
44387	#[inline(always)]
44388	fn glDrawRangeElementsBaseVertex(&self, mode: GLenum, start: GLuint, end: GLuint, count: GLsizei, type_: GLenum, indices: *const c_void, basevertex: GLint) -> Result<()> {
44389		let ret = process_catch("glDrawRangeElementsBaseVertex", catch_unwind(||(self.version_3_2.drawrangeelementsbasevertex)(mode, start, end, count, type_, indices, basevertex)));
44390		#[cfg(feature = "diagnose")]
44391		if let Ok(ret) = ret {
44392			return to_result("glDrawRangeElementsBaseVertex", ret, (self.version_3_2.geterror)());
44393		} else {
44394			return ret
44395		}
44396		#[cfg(not(feature = "diagnose"))]
44397		return ret;
44398	}
44399	#[inline(always)]
44400	fn glDrawElementsInstancedBaseVertex(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei, basevertex: GLint) -> Result<()> {
44401		let ret = process_catch("glDrawElementsInstancedBaseVertex", catch_unwind(||(self.version_3_2.drawelementsinstancedbasevertex)(mode, count, type_, indices, instancecount, basevertex)));
44402		#[cfg(feature = "diagnose")]
44403		if let Ok(ret) = ret {
44404			return to_result("glDrawElementsInstancedBaseVertex", ret, (self.version_3_2.geterror)());
44405		} else {
44406			return ret
44407		}
44408		#[cfg(not(feature = "diagnose"))]
44409		return ret;
44410	}
44411	#[inline(always)]
44412	fn glMultiDrawElementsBaseVertex(&self, mode: GLenum, count: *const GLsizei, type_: GLenum, indices: *const *const c_void, drawcount: GLsizei, basevertex: *const GLint) -> Result<()> {
44413		let ret = process_catch("glMultiDrawElementsBaseVertex", catch_unwind(||(self.version_3_2.multidrawelementsbasevertex)(mode, count, type_, indices, drawcount, basevertex)));
44414		#[cfg(feature = "diagnose")]
44415		if let Ok(ret) = ret {
44416			return to_result("glMultiDrawElementsBaseVertex", ret, (self.version_3_2.geterror)());
44417		} else {
44418			return ret
44419		}
44420		#[cfg(not(feature = "diagnose"))]
44421		return ret;
44422	}
44423	#[inline(always)]
44424	fn glProvokingVertex(&self, mode: GLenum) -> Result<()> {
44425		let ret = process_catch("glProvokingVertex", catch_unwind(||(self.version_3_2.provokingvertex)(mode)));
44426		#[cfg(feature = "diagnose")]
44427		if let Ok(ret) = ret {
44428			return to_result("glProvokingVertex", ret, (self.version_3_2.geterror)());
44429		} else {
44430			return ret
44431		}
44432		#[cfg(not(feature = "diagnose"))]
44433		return ret;
44434	}
44435	#[inline(always)]
44436	fn glFenceSync(&self, condition: GLenum, flags: GLbitfield) -> Result<GLsync> {
44437		let ret = process_catch("glFenceSync", catch_unwind(||(self.version_3_2.fencesync)(condition, flags)));
44438		#[cfg(feature = "diagnose")]
44439		if let Ok(ret) = ret {
44440			return to_result("glFenceSync", ret, (self.version_3_2.geterror)());
44441		} else {
44442			return ret
44443		}
44444		#[cfg(not(feature = "diagnose"))]
44445		return ret;
44446	}
44447	#[inline(always)]
44448	fn glIsSync(&self, sync: GLsync) -> Result<GLboolean> {
44449		let ret = process_catch("glIsSync", catch_unwind(||(self.version_3_2.issync)(sync)));
44450		#[cfg(feature = "diagnose")]
44451		if let Ok(ret) = ret {
44452			return to_result("glIsSync", ret, (self.version_3_2.geterror)());
44453		} else {
44454			return ret
44455		}
44456		#[cfg(not(feature = "diagnose"))]
44457		return ret;
44458	}
44459	#[inline(always)]
44460	fn glDeleteSync(&self, sync: GLsync) -> Result<()> {
44461		let ret = process_catch("glDeleteSync", catch_unwind(||(self.version_3_2.deletesync)(sync)));
44462		#[cfg(feature = "diagnose")]
44463		if let Ok(ret) = ret {
44464			return to_result("glDeleteSync", ret, (self.version_3_2.geterror)());
44465		} else {
44466			return ret
44467		}
44468		#[cfg(not(feature = "diagnose"))]
44469		return ret;
44470	}
44471	#[inline(always)]
44472	fn glClientWaitSync(&self, sync: GLsync, flags: GLbitfield, timeout: GLuint64) -> Result<GLenum> {
44473		let ret = process_catch("glClientWaitSync", catch_unwind(||(self.version_3_2.clientwaitsync)(sync, flags, timeout)));
44474		#[cfg(feature = "diagnose")]
44475		if let Ok(ret) = ret {
44476			return to_result("glClientWaitSync", ret, (self.version_3_2.geterror)());
44477		} else {
44478			return ret
44479		}
44480		#[cfg(not(feature = "diagnose"))]
44481		return ret;
44482	}
44483	#[inline(always)]
44484	fn glWaitSync(&self, sync: GLsync, flags: GLbitfield, timeout: GLuint64) -> Result<()> {
44485		let ret = process_catch("glWaitSync", catch_unwind(||(self.version_3_2.waitsync)(sync, flags, timeout)));
44486		#[cfg(feature = "diagnose")]
44487		if let Ok(ret) = ret {
44488			return to_result("glWaitSync", ret, (self.version_3_2.geterror)());
44489		} else {
44490			return ret
44491		}
44492		#[cfg(not(feature = "diagnose"))]
44493		return ret;
44494	}
44495	#[inline(always)]
44496	fn glGetInteger64v(&self, pname: GLenum, data: *mut GLint64) -> Result<()> {
44497		let ret = process_catch("glGetInteger64v", catch_unwind(||(self.version_3_2.getinteger64v)(pname, data)));
44498		#[cfg(feature = "diagnose")]
44499		if let Ok(ret) = ret {
44500			return to_result("glGetInteger64v", ret, (self.version_3_2.geterror)());
44501		} else {
44502			return ret
44503		}
44504		#[cfg(not(feature = "diagnose"))]
44505		return ret;
44506	}
44507	#[inline(always)]
44508	fn glGetSynciv(&self, sync: GLsync, pname: GLenum, count: GLsizei, length: *mut GLsizei, values: *mut GLint) -> Result<()> {
44509		let ret = process_catch("glGetSynciv", catch_unwind(||(self.version_3_2.getsynciv)(sync, pname, count, length, values)));
44510		#[cfg(feature = "diagnose")]
44511		if let Ok(ret) = ret {
44512			return to_result("glGetSynciv", ret, (self.version_3_2.geterror)());
44513		} else {
44514			return ret
44515		}
44516		#[cfg(not(feature = "diagnose"))]
44517		return ret;
44518	}
44519	#[inline(always)]
44520	fn glGetInteger64i_v(&self, target: GLenum, index: GLuint, data: *mut GLint64) -> Result<()> {
44521		let ret = process_catch("glGetInteger64i_v", catch_unwind(||(self.version_3_2.getinteger64i_v)(target, index, data)));
44522		#[cfg(feature = "diagnose")]
44523		if let Ok(ret) = ret {
44524			return to_result("glGetInteger64i_v", ret, (self.version_3_2.geterror)());
44525		} else {
44526			return ret
44527		}
44528		#[cfg(not(feature = "diagnose"))]
44529		return ret;
44530	}
44531	#[inline(always)]
44532	fn glGetBufferParameteri64v(&self, target: GLenum, pname: GLenum, params: *mut GLint64) -> Result<()> {
44533		let ret = process_catch("glGetBufferParameteri64v", catch_unwind(||(self.version_3_2.getbufferparameteri64v)(target, pname, params)));
44534		#[cfg(feature = "diagnose")]
44535		if let Ok(ret) = ret {
44536			return to_result("glGetBufferParameteri64v", ret, (self.version_3_2.geterror)());
44537		} else {
44538			return ret
44539		}
44540		#[cfg(not(feature = "diagnose"))]
44541		return ret;
44542	}
44543	#[inline(always)]
44544	fn glFramebufferTexture(&self, target: GLenum, attachment: GLenum, texture: GLuint, level: GLint) -> Result<()> {
44545		let ret = process_catch("glFramebufferTexture", catch_unwind(||(self.version_3_2.framebuffertexture)(target, attachment, texture, level)));
44546		#[cfg(feature = "diagnose")]
44547		if let Ok(ret) = ret {
44548			return to_result("glFramebufferTexture", ret, (self.version_3_2.geterror)());
44549		} else {
44550			return ret
44551		}
44552		#[cfg(not(feature = "diagnose"))]
44553		return ret;
44554	}
44555	#[inline(always)]
44556	fn glTexImage2DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, fixedsamplelocations: GLboolean) -> Result<()> {
44557		let ret = process_catch("glTexImage2DMultisample", catch_unwind(||(self.version_3_2.teximage2dmultisample)(target, samples, internalformat, width, height, fixedsamplelocations)));
44558		#[cfg(feature = "diagnose")]
44559		if let Ok(ret) = ret {
44560			return to_result("glTexImage2DMultisample", ret, (self.version_3_2.geterror)());
44561		} else {
44562			return ret
44563		}
44564		#[cfg(not(feature = "diagnose"))]
44565		return ret;
44566	}
44567	#[inline(always)]
44568	fn glTexImage3DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, fixedsamplelocations: GLboolean) -> Result<()> {
44569		let ret = process_catch("glTexImage3DMultisample", catch_unwind(||(self.version_3_2.teximage3dmultisample)(target, samples, internalformat, width, height, depth, fixedsamplelocations)));
44570		#[cfg(feature = "diagnose")]
44571		if let Ok(ret) = ret {
44572			return to_result("glTexImage3DMultisample", ret, (self.version_3_2.geterror)());
44573		} else {
44574			return ret
44575		}
44576		#[cfg(not(feature = "diagnose"))]
44577		return ret;
44578	}
44579	#[inline(always)]
44580	fn glGetMultisamplefv(&self, pname: GLenum, index: GLuint, val: *mut GLfloat) -> Result<()> {
44581		let ret = process_catch("glGetMultisamplefv", catch_unwind(||(self.version_3_2.getmultisamplefv)(pname, index, val)));
44582		#[cfg(feature = "diagnose")]
44583		if let Ok(ret) = ret {
44584			return to_result("glGetMultisamplefv", ret, (self.version_3_2.geterror)());
44585		} else {
44586			return ret
44587		}
44588		#[cfg(not(feature = "diagnose"))]
44589		return ret;
44590	}
44591	#[inline(always)]
44592	fn glSampleMaski(&self, maskNumber: GLuint, mask: GLbitfield) -> Result<()> {
44593		let ret = process_catch("glSampleMaski", catch_unwind(||(self.version_3_2.samplemaski)(maskNumber, mask)));
44594		#[cfg(feature = "diagnose")]
44595		if let Ok(ret) = ret {
44596			return to_result("glSampleMaski", ret, (self.version_3_2.geterror)());
44597		} else {
44598			return ret
44599		}
44600		#[cfg(not(feature = "diagnose"))]
44601		return ret;
44602	}
44603}
44604
44605impl GL_3_3_g for GLCore {
44606	#[inline(always)]
44607	fn glBindFragDataLocationIndexed(&self, program: GLuint, colorNumber: GLuint, index: GLuint, name: *const GLchar) -> Result<()> {
44608		let ret = process_catch("glBindFragDataLocationIndexed", catch_unwind(||(self.version_3_3.bindfragdatalocationindexed)(program, colorNumber, index, name)));
44609		#[cfg(feature = "diagnose")]
44610		if let Ok(ret) = ret {
44611			return to_result("glBindFragDataLocationIndexed", ret, (self.version_3_3.geterror)());
44612		} else {
44613			return ret
44614		}
44615		#[cfg(not(feature = "diagnose"))]
44616		return ret;
44617	}
44618	#[inline(always)]
44619	fn glGetFragDataIndex(&self, program: GLuint, name: *const GLchar) -> Result<GLint> {
44620		let ret = process_catch("glGetFragDataIndex", catch_unwind(||(self.version_3_3.getfragdataindex)(program, name)));
44621		#[cfg(feature = "diagnose")]
44622		if let Ok(ret) = ret {
44623			return to_result("glGetFragDataIndex", ret, (self.version_3_3.geterror)());
44624		} else {
44625			return ret
44626		}
44627		#[cfg(not(feature = "diagnose"))]
44628		return ret;
44629	}
44630	#[inline(always)]
44631	fn glGenSamplers(&self, count: GLsizei, samplers: *mut GLuint) -> Result<()> {
44632		let ret = process_catch("glGenSamplers", catch_unwind(||(self.version_3_3.gensamplers)(count, samplers)));
44633		#[cfg(feature = "diagnose")]
44634		if let Ok(ret) = ret {
44635			return to_result("glGenSamplers", ret, (self.version_3_3.geterror)());
44636		} else {
44637			return ret
44638		}
44639		#[cfg(not(feature = "diagnose"))]
44640		return ret;
44641	}
44642	#[inline(always)]
44643	fn glDeleteSamplers(&self, count: GLsizei, samplers: *const GLuint) -> Result<()> {
44644		let ret = process_catch("glDeleteSamplers", catch_unwind(||(self.version_3_3.deletesamplers)(count, samplers)));
44645		#[cfg(feature = "diagnose")]
44646		if let Ok(ret) = ret {
44647			return to_result("glDeleteSamplers", ret, (self.version_3_3.geterror)());
44648		} else {
44649			return ret
44650		}
44651		#[cfg(not(feature = "diagnose"))]
44652		return ret;
44653	}
44654	#[inline(always)]
44655	fn glIsSampler(&self, sampler: GLuint) -> Result<GLboolean> {
44656		let ret = process_catch("glIsSampler", catch_unwind(||(self.version_3_3.issampler)(sampler)));
44657		#[cfg(feature = "diagnose")]
44658		if let Ok(ret) = ret {
44659			return to_result("glIsSampler", ret, (self.version_3_3.geterror)());
44660		} else {
44661			return ret
44662		}
44663		#[cfg(not(feature = "diagnose"))]
44664		return ret;
44665	}
44666	#[inline(always)]
44667	fn glBindSampler(&self, unit: GLuint, sampler: GLuint) -> Result<()> {
44668		let ret = process_catch("glBindSampler", catch_unwind(||(self.version_3_3.bindsampler)(unit, sampler)));
44669		#[cfg(feature = "diagnose")]
44670		if let Ok(ret) = ret {
44671			return to_result("glBindSampler", ret, (self.version_3_3.geterror)());
44672		} else {
44673			return ret
44674		}
44675		#[cfg(not(feature = "diagnose"))]
44676		return ret;
44677	}
44678	#[inline(always)]
44679	fn glSamplerParameteri(&self, sampler: GLuint, pname: GLenum, param: GLint) -> Result<()> {
44680		let ret = process_catch("glSamplerParameteri", catch_unwind(||(self.version_3_3.samplerparameteri)(sampler, pname, param)));
44681		#[cfg(feature = "diagnose")]
44682		if let Ok(ret) = ret {
44683			return to_result("glSamplerParameteri", ret, (self.version_3_3.geterror)());
44684		} else {
44685			return ret
44686		}
44687		#[cfg(not(feature = "diagnose"))]
44688		return ret;
44689	}
44690	#[inline(always)]
44691	fn glSamplerParameteriv(&self, sampler: GLuint, pname: GLenum, param: *const GLint) -> Result<()> {
44692		let ret = process_catch("glSamplerParameteriv", catch_unwind(||(self.version_3_3.samplerparameteriv)(sampler, pname, param)));
44693		#[cfg(feature = "diagnose")]
44694		if let Ok(ret) = ret {
44695			return to_result("glSamplerParameteriv", ret, (self.version_3_3.geterror)());
44696		} else {
44697			return ret
44698		}
44699		#[cfg(not(feature = "diagnose"))]
44700		return ret;
44701	}
44702	#[inline(always)]
44703	fn glSamplerParameterf(&self, sampler: GLuint, pname: GLenum, param: GLfloat) -> Result<()> {
44704		let ret = process_catch("glSamplerParameterf", catch_unwind(||(self.version_3_3.samplerparameterf)(sampler, pname, param)));
44705		#[cfg(feature = "diagnose")]
44706		if let Ok(ret) = ret {
44707			return to_result("glSamplerParameterf", ret, (self.version_3_3.geterror)());
44708		} else {
44709			return ret
44710		}
44711		#[cfg(not(feature = "diagnose"))]
44712		return ret;
44713	}
44714	#[inline(always)]
44715	fn glSamplerParameterfv(&self, sampler: GLuint, pname: GLenum, param: *const GLfloat) -> Result<()> {
44716		let ret = process_catch("glSamplerParameterfv", catch_unwind(||(self.version_3_3.samplerparameterfv)(sampler, pname, param)));
44717		#[cfg(feature = "diagnose")]
44718		if let Ok(ret) = ret {
44719			return to_result("glSamplerParameterfv", ret, (self.version_3_3.geterror)());
44720		} else {
44721			return ret
44722		}
44723		#[cfg(not(feature = "diagnose"))]
44724		return ret;
44725	}
44726	#[inline(always)]
44727	fn glSamplerParameterIiv(&self, sampler: GLuint, pname: GLenum, param: *const GLint) -> Result<()> {
44728		let ret = process_catch("glSamplerParameterIiv", catch_unwind(||(self.version_3_3.samplerparameteriiv)(sampler, pname, param)));
44729		#[cfg(feature = "diagnose")]
44730		if let Ok(ret) = ret {
44731			return to_result("glSamplerParameterIiv", ret, (self.version_3_3.geterror)());
44732		} else {
44733			return ret
44734		}
44735		#[cfg(not(feature = "diagnose"))]
44736		return ret;
44737	}
44738	#[inline(always)]
44739	fn glSamplerParameterIuiv(&self, sampler: GLuint, pname: GLenum, param: *const GLuint) -> Result<()> {
44740		let ret = process_catch("glSamplerParameterIuiv", catch_unwind(||(self.version_3_3.samplerparameteriuiv)(sampler, pname, param)));
44741		#[cfg(feature = "diagnose")]
44742		if let Ok(ret) = ret {
44743			return to_result("glSamplerParameterIuiv", ret, (self.version_3_3.geterror)());
44744		} else {
44745			return ret
44746		}
44747		#[cfg(not(feature = "diagnose"))]
44748		return ret;
44749	}
44750	#[inline(always)]
44751	fn glGetSamplerParameteriv(&self, sampler: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
44752		let ret = process_catch("glGetSamplerParameteriv", catch_unwind(||(self.version_3_3.getsamplerparameteriv)(sampler, pname, params)));
44753		#[cfg(feature = "diagnose")]
44754		if let Ok(ret) = ret {
44755			return to_result("glGetSamplerParameteriv", ret, (self.version_3_3.geterror)());
44756		} else {
44757			return ret
44758		}
44759		#[cfg(not(feature = "diagnose"))]
44760		return ret;
44761	}
44762	#[inline(always)]
44763	fn glGetSamplerParameterIiv(&self, sampler: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
44764		let ret = process_catch("glGetSamplerParameterIiv", catch_unwind(||(self.version_3_3.getsamplerparameteriiv)(sampler, pname, params)));
44765		#[cfg(feature = "diagnose")]
44766		if let Ok(ret) = ret {
44767			return to_result("glGetSamplerParameterIiv", ret, (self.version_3_3.geterror)());
44768		} else {
44769			return ret
44770		}
44771		#[cfg(not(feature = "diagnose"))]
44772		return ret;
44773	}
44774	#[inline(always)]
44775	fn glGetSamplerParameterfv(&self, sampler: GLuint, pname: GLenum, params: *mut GLfloat) -> Result<()> {
44776		let ret = process_catch("glGetSamplerParameterfv", catch_unwind(||(self.version_3_3.getsamplerparameterfv)(sampler, pname, params)));
44777		#[cfg(feature = "diagnose")]
44778		if let Ok(ret) = ret {
44779			return to_result("glGetSamplerParameterfv", ret, (self.version_3_3.geterror)());
44780		} else {
44781			return ret
44782		}
44783		#[cfg(not(feature = "diagnose"))]
44784		return ret;
44785	}
44786	#[inline(always)]
44787	fn glGetSamplerParameterIuiv(&self, sampler: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()> {
44788		let ret = process_catch("glGetSamplerParameterIuiv", catch_unwind(||(self.version_3_3.getsamplerparameteriuiv)(sampler, pname, params)));
44789		#[cfg(feature = "diagnose")]
44790		if let Ok(ret) = ret {
44791			return to_result("glGetSamplerParameterIuiv", ret, (self.version_3_3.geterror)());
44792		} else {
44793			return ret
44794		}
44795		#[cfg(not(feature = "diagnose"))]
44796		return ret;
44797	}
44798	#[inline(always)]
44799	fn glQueryCounter(&self, id: GLuint, target: GLenum) -> Result<()> {
44800		let ret = process_catch("glQueryCounter", catch_unwind(||(self.version_3_3.querycounter)(id, target)));
44801		#[cfg(feature = "diagnose")]
44802		if let Ok(ret) = ret {
44803			return to_result("glQueryCounter", ret, (self.version_3_3.geterror)());
44804		} else {
44805			return ret
44806		}
44807		#[cfg(not(feature = "diagnose"))]
44808		return ret;
44809	}
44810	#[inline(always)]
44811	fn glGetQueryObjecti64v(&self, id: GLuint, pname: GLenum, params: *mut GLint64) -> Result<()> {
44812		let ret = process_catch("glGetQueryObjecti64v", catch_unwind(||(self.version_3_3.getqueryobjecti64v)(id, pname, params)));
44813		#[cfg(feature = "diagnose")]
44814		if let Ok(ret) = ret {
44815			return to_result("glGetQueryObjecti64v", ret, (self.version_3_3.geterror)());
44816		} else {
44817			return ret
44818		}
44819		#[cfg(not(feature = "diagnose"))]
44820		return ret;
44821	}
44822	#[inline(always)]
44823	fn glGetQueryObjectui64v(&self, id: GLuint, pname: GLenum, params: *mut GLuint64) -> Result<()> {
44824		let ret = process_catch("glGetQueryObjectui64v", catch_unwind(||(self.version_3_3.getqueryobjectui64v)(id, pname, params)));
44825		#[cfg(feature = "diagnose")]
44826		if let Ok(ret) = ret {
44827			return to_result("glGetQueryObjectui64v", ret, (self.version_3_3.geterror)());
44828		} else {
44829			return ret
44830		}
44831		#[cfg(not(feature = "diagnose"))]
44832		return ret;
44833	}
44834	#[inline(always)]
44835	fn glVertexAttribDivisor(&self, index: GLuint, divisor: GLuint) -> Result<()> {
44836		let ret = process_catch("glVertexAttribDivisor", catch_unwind(||(self.version_3_3.vertexattribdivisor)(index, divisor)));
44837		#[cfg(feature = "diagnose")]
44838		if let Ok(ret) = ret {
44839			return to_result("glVertexAttribDivisor", ret, (self.version_3_3.geterror)());
44840		} else {
44841			return ret
44842		}
44843		#[cfg(not(feature = "diagnose"))]
44844		return ret;
44845	}
44846	#[inline(always)]
44847	fn glVertexAttribP1ui(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint) -> Result<()> {
44848		let ret = process_catch("glVertexAttribP1ui", catch_unwind(||(self.version_3_3.vertexattribp1ui)(index, type_, normalized, value)));
44849		#[cfg(feature = "diagnose")]
44850		if let Ok(ret) = ret {
44851			return to_result("glVertexAttribP1ui", ret, (self.version_3_3.geterror)());
44852		} else {
44853			return ret
44854		}
44855		#[cfg(not(feature = "diagnose"))]
44856		return ret;
44857	}
44858	#[inline(always)]
44859	fn glVertexAttribP1uiv(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint) -> Result<()> {
44860		let ret = process_catch("glVertexAttribP1uiv", catch_unwind(||(self.version_3_3.vertexattribp1uiv)(index, type_, normalized, value)));
44861		#[cfg(feature = "diagnose")]
44862		if let Ok(ret) = ret {
44863			return to_result("glVertexAttribP1uiv", ret, (self.version_3_3.geterror)());
44864		} else {
44865			return ret
44866		}
44867		#[cfg(not(feature = "diagnose"))]
44868		return ret;
44869	}
44870	#[inline(always)]
44871	fn glVertexAttribP2ui(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint) -> Result<()> {
44872		let ret = process_catch("glVertexAttribP2ui", catch_unwind(||(self.version_3_3.vertexattribp2ui)(index, type_, normalized, value)));
44873		#[cfg(feature = "diagnose")]
44874		if let Ok(ret) = ret {
44875			return to_result("glVertexAttribP2ui", ret, (self.version_3_3.geterror)());
44876		} else {
44877			return ret
44878		}
44879		#[cfg(not(feature = "diagnose"))]
44880		return ret;
44881	}
44882	#[inline(always)]
44883	fn glVertexAttribP2uiv(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint) -> Result<()> {
44884		let ret = process_catch("glVertexAttribP2uiv", catch_unwind(||(self.version_3_3.vertexattribp2uiv)(index, type_, normalized, value)));
44885		#[cfg(feature = "diagnose")]
44886		if let Ok(ret) = ret {
44887			return to_result("glVertexAttribP2uiv", ret, (self.version_3_3.geterror)());
44888		} else {
44889			return ret
44890		}
44891		#[cfg(not(feature = "diagnose"))]
44892		return ret;
44893	}
44894	#[inline(always)]
44895	fn glVertexAttribP3ui(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint) -> Result<()> {
44896		let ret = process_catch("glVertexAttribP3ui", catch_unwind(||(self.version_3_3.vertexattribp3ui)(index, type_, normalized, value)));
44897		#[cfg(feature = "diagnose")]
44898		if let Ok(ret) = ret {
44899			return to_result("glVertexAttribP3ui", ret, (self.version_3_3.geterror)());
44900		} else {
44901			return ret
44902		}
44903		#[cfg(not(feature = "diagnose"))]
44904		return ret;
44905	}
44906	#[inline(always)]
44907	fn glVertexAttribP3uiv(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint) -> Result<()> {
44908		let ret = process_catch("glVertexAttribP3uiv", catch_unwind(||(self.version_3_3.vertexattribp3uiv)(index, type_, normalized, value)));
44909		#[cfg(feature = "diagnose")]
44910		if let Ok(ret) = ret {
44911			return to_result("glVertexAttribP3uiv", ret, (self.version_3_3.geterror)());
44912		} else {
44913			return ret
44914		}
44915		#[cfg(not(feature = "diagnose"))]
44916		return ret;
44917	}
44918	#[inline(always)]
44919	fn glVertexAttribP4ui(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: GLuint) -> Result<()> {
44920		let ret = process_catch("glVertexAttribP4ui", catch_unwind(||(self.version_3_3.vertexattribp4ui)(index, type_, normalized, value)));
44921		#[cfg(feature = "diagnose")]
44922		if let Ok(ret) = ret {
44923			return to_result("glVertexAttribP4ui", ret, (self.version_3_3.geterror)());
44924		} else {
44925			return ret
44926		}
44927		#[cfg(not(feature = "diagnose"))]
44928		return ret;
44929	}
44930	#[inline(always)]
44931	fn glVertexAttribP4uiv(&self, index: GLuint, type_: GLenum, normalized: GLboolean, value: *const GLuint) -> Result<()> {
44932		let ret = process_catch("glVertexAttribP4uiv", catch_unwind(||(self.version_3_3.vertexattribp4uiv)(index, type_, normalized, value)));
44933		#[cfg(feature = "diagnose")]
44934		if let Ok(ret) = ret {
44935			return to_result("glVertexAttribP4uiv", ret, (self.version_3_3.geterror)());
44936		} else {
44937			return ret
44938		}
44939		#[cfg(not(feature = "diagnose"))]
44940		return ret;
44941	}
44942	#[inline(always)]
44943	fn glVertexP2ui(&self, type_: GLenum, value: GLuint) -> Result<()> {
44944		let ret = process_catch("glVertexP2ui", catch_unwind(||(self.version_3_3.vertexp2ui)(type_, value)));
44945		#[cfg(feature = "diagnose")]
44946		if let Ok(ret) = ret {
44947			return to_result("glVertexP2ui", ret, (self.version_3_3.geterror)());
44948		} else {
44949			return ret
44950		}
44951		#[cfg(not(feature = "diagnose"))]
44952		return ret;
44953	}
44954	#[inline(always)]
44955	fn glVertexP2uiv(&self, type_: GLenum, value: *const GLuint) -> Result<()> {
44956		let ret = process_catch("glVertexP2uiv", catch_unwind(||(self.version_3_3.vertexp2uiv)(type_, value)));
44957		#[cfg(feature = "diagnose")]
44958		if let Ok(ret) = ret {
44959			return to_result("glVertexP2uiv", ret, (self.version_3_3.geterror)());
44960		} else {
44961			return ret
44962		}
44963		#[cfg(not(feature = "diagnose"))]
44964		return ret;
44965	}
44966	#[inline(always)]
44967	fn glVertexP3ui(&self, type_: GLenum, value: GLuint) -> Result<()> {
44968		let ret = process_catch("glVertexP3ui", catch_unwind(||(self.version_3_3.vertexp3ui)(type_, value)));
44969		#[cfg(feature = "diagnose")]
44970		if let Ok(ret) = ret {
44971			return to_result("glVertexP3ui", ret, (self.version_3_3.geterror)());
44972		} else {
44973			return ret
44974		}
44975		#[cfg(not(feature = "diagnose"))]
44976		return ret;
44977	}
44978	#[inline(always)]
44979	fn glVertexP3uiv(&self, type_: GLenum, value: *const GLuint) -> Result<()> {
44980		let ret = process_catch("glVertexP3uiv", catch_unwind(||(self.version_3_3.vertexp3uiv)(type_, value)));
44981		#[cfg(feature = "diagnose")]
44982		if let Ok(ret) = ret {
44983			return to_result("glVertexP3uiv", ret, (self.version_3_3.geterror)());
44984		} else {
44985			return ret
44986		}
44987		#[cfg(not(feature = "diagnose"))]
44988		return ret;
44989	}
44990	#[inline(always)]
44991	fn glVertexP4ui(&self, type_: GLenum, value: GLuint) -> Result<()> {
44992		let ret = process_catch("glVertexP4ui", catch_unwind(||(self.version_3_3.vertexp4ui)(type_, value)));
44993		#[cfg(feature = "diagnose")]
44994		if let Ok(ret) = ret {
44995			return to_result("glVertexP4ui", ret, (self.version_3_3.geterror)());
44996		} else {
44997			return ret
44998		}
44999		#[cfg(not(feature = "diagnose"))]
45000		return ret;
45001	}
45002	#[inline(always)]
45003	fn glVertexP4uiv(&self, type_: GLenum, value: *const GLuint) -> Result<()> {
45004		let ret = process_catch("glVertexP4uiv", catch_unwind(||(self.version_3_3.vertexp4uiv)(type_, value)));
45005		#[cfg(feature = "diagnose")]
45006		if let Ok(ret) = ret {
45007			return to_result("glVertexP4uiv", ret, (self.version_3_3.geterror)());
45008		} else {
45009			return ret
45010		}
45011		#[cfg(not(feature = "diagnose"))]
45012		return ret;
45013	}
45014	#[inline(always)]
45015	fn glTexCoordP1ui(&self, type_: GLenum, coords: GLuint) -> Result<()> {
45016		let ret = process_catch("glTexCoordP1ui", catch_unwind(||(self.version_3_3.texcoordp1ui)(type_, coords)));
45017		#[cfg(feature = "diagnose")]
45018		if let Ok(ret) = ret {
45019			return to_result("glTexCoordP1ui", ret, (self.version_3_3.geterror)());
45020		} else {
45021			return ret
45022		}
45023		#[cfg(not(feature = "diagnose"))]
45024		return ret;
45025	}
45026	#[inline(always)]
45027	fn glTexCoordP1uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()> {
45028		let ret = process_catch("glTexCoordP1uiv", catch_unwind(||(self.version_3_3.texcoordp1uiv)(type_, coords)));
45029		#[cfg(feature = "diagnose")]
45030		if let Ok(ret) = ret {
45031			return to_result("glTexCoordP1uiv", ret, (self.version_3_3.geterror)());
45032		} else {
45033			return ret
45034		}
45035		#[cfg(not(feature = "diagnose"))]
45036		return ret;
45037	}
45038	#[inline(always)]
45039	fn glTexCoordP2ui(&self, type_: GLenum, coords: GLuint) -> Result<()> {
45040		let ret = process_catch("glTexCoordP2ui", catch_unwind(||(self.version_3_3.texcoordp2ui)(type_, coords)));
45041		#[cfg(feature = "diagnose")]
45042		if let Ok(ret) = ret {
45043			return to_result("glTexCoordP2ui", ret, (self.version_3_3.geterror)());
45044		} else {
45045			return ret
45046		}
45047		#[cfg(not(feature = "diagnose"))]
45048		return ret;
45049	}
45050	#[inline(always)]
45051	fn glTexCoordP2uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()> {
45052		let ret = process_catch("glTexCoordP2uiv", catch_unwind(||(self.version_3_3.texcoordp2uiv)(type_, coords)));
45053		#[cfg(feature = "diagnose")]
45054		if let Ok(ret) = ret {
45055			return to_result("glTexCoordP2uiv", ret, (self.version_3_3.geterror)());
45056		} else {
45057			return ret
45058		}
45059		#[cfg(not(feature = "diagnose"))]
45060		return ret;
45061	}
45062	#[inline(always)]
45063	fn glTexCoordP3ui(&self, type_: GLenum, coords: GLuint) -> Result<()> {
45064		let ret = process_catch("glTexCoordP3ui", catch_unwind(||(self.version_3_3.texcoordp3ui)(type_, coords)));
45065		#[cfg(feature = "diagnose")]
45066		if let Ok(ret) = ret {
45067			return to_result("glTexCoordP3ui", ret, (self.version_3_3.geterror)());
45068		} else {
45069			return ret
45070		}
45071		#[cfg(not(feature = "diagnose"))]
45072		return ret;
45073	}
45074	#[inline(always)]
45075	fn glTexCoordP3uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()> {
45076		let ret = process_catch("glTexCoordP3uiv", catch_unwind(||(self.version_3_3.texcoordp3uiv)(type_, coords)));
45077		#[cfg(feature = "diagnose")]
45078		if let Ok(ret) = ret {
45079			return to_result("glTexCoordP3uiv", ret, (self.version_3_3.geterror)());
45080		} else {
45081			return ret
45082		}
45083		#[cfg(not(feature = "diagnose"))]
45084		return ret;
45085	}
45086	#[inline(always)]
45087	fn glTexCoordP4ui(&self, type_: GLenum, coords: GLuint) -> Result<()> {
45088		let ret = process_catch("glTexCoordP4ui", catch_unwind(||(self.version_3_3.texcoordp4ui)(type_, coords)));
45089		#[cfg(feature = "diagnose")]
45090		if let Ok(ret) = ret {
45091			return to_result("glTexCoordP4ui", ret, (self.version_3_3.geterror)());
45092		} else {
45093			return ret
45094		}
45095		#[cfg(not(feature = "diagnose"))]
45096		return ret;
45097	}
45098	#[inline(always)]
45099	fn glTexCoordP4uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()> {
45100		let ret = process_catch("glTexCoordP4uiv", catch_unwind(||(self.version_3_3.texcoordp4uiv)(type_, coords)));
45101		#[cfg(feature = "diagnose")]
45102		if let Ok(ret) = ret {
45103			return to_result("glTexCoordP4uiv", ret, (self.version_3_3.geterror)());
45104		} else {
45105			return ret
45106		}
45107		#[cfg(not(feature = "diagnose"))]
45108		return ret;
45109	}
45110	#[inline(always)]
45111	fn glMultiTexCoordP1ui(&self, texture: GLenum, type_: GLenum, coords: GLuint) -> Result<()> {
45112		let ret = process_catch("glMultiTexCoordP1ui", catch_unwind(||(self.version_3_3.multitexcoordp1ui)(texture, type_, coords)));
45113		#[cfg(feature = "diagnose")]
45114		if let Ok(ret) = ret {
45115			return to_result("glMultiTexCoordP1ui", ret, (self.version_3_3.geterror)());
45116		} else {
45117			return ret
45118		}
45119		#[cfg(not(feature = "diagnose"))]
45120		return ret;
45121	}
45122	#[inline(always)]
45123	fn glMultiTexCoordP1uiv(&self, texture: GLenum, type_: GLenum, coords: *const GLuint) -> Result<()> {
45124		let ret = process_catch("glMultiTexCoordP1uiv", catch_unwind(||(self.version_3_3.multitexcoordp1uiv)(texture, type_, coords)));
45125		#[cfg(feature = "diagnose")]
45126		if let Ok(ret) = ret {
45127			return to_result("glMultiTexCoordP1uiv", ret, (self.version_3_3.geterror)());
45128		} else {
45129			return ret
45130		}
45131		#[cfg(not(feature = "diagnose"))]
45132		return ret;
45133	}
45134	#[inline(always)]
45135	fn glMultiTexCoordP2ui(&self, texture: GLenum, type_: GLenum, coords: GLuint) -> Result<()> {
45136		let ret = process_catch("glMultiTexCoordP2ui", catch_unwind(||(self.version_3_3.multitexcoordp2ui)(texture, type_, coords)));
45137		#[cfg(feature = "diagnose")]
45138		if let Ok(ret) = ret {
45139			return to_result("glMultiTexCoordP2ui", ret, (self.version_3_3.geterror)());
45140		} else {
45141			return ret
45142		}
45143		#[cfg(not(feature = "diagnose"))]
45144		return ret;
45145	}
45146	#[inline(always)]
45147	fn glMultiTexCoordP2uiv(&self, texture: GLenum, type_: GLenum, coords: *const GLuint) -> Result<()> {
45148		let ret = process_catch("glMultiTexCoordP2uiv", catch_unwind(||(self.version_3_3.multitexcoordp2uiv)(texture, type_, coords)));
45149		#[cfg(feature = "diagnose")]
45150		if let Ok(ret) = ret {
45151			return to_result("glMultiTexCoordP2uiv", ret, (self.version_3_3.geterror)());
45152		} else {
45153			return ret
45154		}
45155		#[cfg(not(feature = "diagnose"))]
45156		return ret;
45157	}
45158	#[inline(always)]
45159	fn glMultiTexCoordP3ui(&self, texture: GLenum, type_: GLenum, coords: GLuint) -> Result<()> {
45160		let ret = process_catch("glMultiTexCoordP3ui", catch_unwind(||(self.version_3_3.multitexcoordp3ui)(texture, type_, coords)));
45161		#[cfg(feature = "diagnose")]
45162		if let Ok(ret) = ret {
45163			return to_result("glMultiTexCoordP3ui", ret, (self.version_3_3.geterror)());
45164		} else {
45165			return ret
45166		}
45167		#[cfg(not(feature = "diagnose"))]
45168		return ret;
45169	}
45170	#[inline(always)]
45171	fn glMultiTexCoordP3uiv(&self, texture: GLenum, type_: GLenum, coords: *const GLuint) -> Result<()> {
45172		let ret = process_catch("glMultiTexCoordP3uiv", catch_unwind(||(self.version_3_3.multitexcoordp3uiv)(texture, type_, coords)));
45173		#[cfg(feature = "diagnose")]
45174		if let Ok(ret) = ret {
45175			return to_result("glMultiTexCoordP3uiv", ret, (self.version_3_3.geterror)());
45176		} else {
45177			return ret
45178		}
45179		#[cfg(not(feature = "diagnose"))]
45180		return ret;
45181	}
45182	#[inline(always)]
45183	fn glMultiTexCoordP4ui(&self, texture: GLenum, type_: GLenum, coords: GLuint) -> Result<()> {
45184		let ret = process_catch("glMultiTexCoordP4ui", catch_unwind(||(self.version_3_3.multitexcoordp4ui)(texture, type_, coords)));
45185		#[cfg(feature = "diagnose")]
45186		if let Ok(ret) = ret {
45187			return to_result("glMultiTexCoordP4ui", ret, (self.version_3_3.geterror)());
45188		} else {
45189			return ret
45190		}
45191		#[cfg(not(feature = "diagnose"))]
45192		return ret;
45193	}
45194	#[inline(always)]
45195	fn glMultiTexCoordP4uiv(&self, texture: GLenum, type_: GLenum, coords: *const GLuint) -> Result<()> {
45196		let ret = process_catch("glMultiTexCoordP4uiv", catch_unwind(||(self.version_3_3.multitexcoordp4uiv)(texture, type_, coords)));
45197		#[cfg(feature = "diagnose")]
45198		if let Ok(ret) = ret {
45199			return to_result("glMultiTexCoordP4uiv", ret, (self.version_3_3.geterror)());
45200		} else {
45201			return ret
45202		}
45203		#[cfg(not(feature = "diagnose"))]
45204		return ret;
45205	}
45206	#[inline(always)]
45207	fn glNormalP3ui(&self, type_: GLenum, coords: GLuint) -> Result<()> {
45208		let ret = process_catch("glNormalP3ui", catch_unwind(||(self.version_3_3.normalp3ui)(type_, coords)));
45209		#[cfg(feature = "diagnose")]
45210		if let Ok(ret) = ret {
45211			return to_result("glNormalP3ui", ret, (self.version_3_3.geterror)());
45212		} else {
45213			return ret
45214		}
45215		#[cfg(not(feature = "diagnose"))]
45216		return ret;
45217	}
45218	#[inline(always)]
45219	fn glNormalP3uiv(&self, type_: GLenum, coords: *const GLuint) -> Result<()> {
45220		let ret = process_catch("glNormalP3uiv", catch_unwind(||(self.version_3_3.normalp3uiv)(type_, coords)));
45221		#[cfg(feature = "diagnose")]
45222		if let Ok(ret) = ret {
45223			return to_result("glNormalP3uiv", ret, (self.version_3_3.geterror)());
45224		} else {
45225			return ret
45226		}
45227		#[cfg(not(feature = "diagnose"))]
45228		return ret;
45229	}
45230	#[inline(always)]
45231	fn glColorP3ui(&self, type_: GLenum, color: GLuint) -> Result<()> {
45232		let ret = process_catch("glColorP3ui", catch_unwind(||(self.version_3_3.colorp3ui)(type_, color)));
45233		#[cfg(feature = "diagnose")]
45234		if let Ok(ret) = ret {
45235			return to_result("glColorP3ui", ret, (self.version_3_3.geterror)());
45236		} else {
45237			return ret
45238		}
45239		#[cfg(not(feature = "diagnose"))]
45240		return ret;
45241	}
45242	#[inline(always)]
45243	fn glColorP3uiv(&self, type_: GLenum, color: *const GLuint) -> Result<()> {
45244		let ret = process_catch("glColorP3uiv", catch_unwind(||(self.version_3_3.colorp3uiv)(type_, color)));
45245		#[cfg(feature = "diagnose")]
45246		if let Ok(ret) = ret {
45247			return to_result("glColorP3uiv", ret, (self.version_3_3.geterror)());
45248		} else {
45249			return ret
45250		}
45251		#[cfg(not(feature = "diagnose"))]
45252		return ret;
45253	}
45254	#[inline(always)]
45255	fn glColorP4ui(&self, type_: GLenum, color: GLuint) -> Result<()> {
45256		let ret = process_catch("glColorP4ui", catch_unwind(||(self.version_3_3.colorp4ui)(type_, color)));
45257		#[cfg(feature = "diagnose")]
45258		if let Ok(ret) = ret {
45259			return to_result("glColorP4ui", ret, (self.version_3_3.geterror)());
45260		} else {
45261			return ret
45262		}
45263		#[cfg(not(feature = "diagnose"))]
45264		return ret;
45265	}
45266	#[inline(always)]
45267	fn glColorP4uiv(&self, type_: GLenum, color: *const GLuint) -> Result<()> {
45268		let ret = process_catch("glColorP4uiv", catch_unwind(||(self.version_3_3.colorp4uiv)(type_, color)));
45269		#[cfg(feature = "diagnose")]
45270		if let Ok(ret) = ret {
45271			return to_result("glColorP4uiv", ret, (self.version_3_3.geterror)());
45272		} else {
45273			return ret
45274		}
45275		#[cfg(not(feature = "diagnose"))]
45276		return ret;
45277	}
45278	#[inline(always)]
45279	fn glSecondaryColorP3ui(&self, type_: GLenum, color: GLuint) -> Result<()> {
45280		let ret = process_catch("glSecondaryColorP3ui", catch_unwind(||(self.version_3_3.secondarycolorp3ui)(type_, color)));
45281		#[cfg(feature = "diagnose")]
45282		if let Ok(ret) = ret {
45283			return to_result("glSecondaryColorP3ui", ret, (self.version_3_3.geterror)());
45284		} else {
45285			return ret
45286		}
45287		#[cfg(not(feature = "diagnose"))]
45288		return ret;
45289	}
45290	#[inline(always)]
45291	fn glSecondaryColorP3uiv(&self, type_: GLenum, color: *const GLuint) -> Result<()> {
45292		let ret = process_catch("glSecondaryColorP3uiv", catch_unwind(||(self.version_3_3.secondarycolorp3uiv)(type_, color)));
45293		#[cfg(feature = "diagnose")]
45294		if let Ok(ret) = ret {
45295			return to_result("glSecondaryColorP3uiv", ret, (self.version_3_3.geterror)());
45296		} else {
45297			return ret
45298		}
45299		#[cfg(not(feature = "diagnose"))]
45300		return ret;
45301	}
45302}
45303
45304impl GL_4_0_g for GLCore {
45305	#[inline(always)]
45306	fn glMinSampleShading(&self, value: GLfloat) -> Result<()> {
45307		let ret = process_catch("glMinSampleShading", catch_unwind(||(self.version_4_0.minsampleshading)(value)));
45308		#[cfg(feature = "diagnose")]
45309		if let Ok(ret) = ret {
45310			return to_result("glMinSampleShading", ret, (self.version_4_0.geterror)());
45311		} else {
45312			return ret
45313		}
45314		#[cfg(not(feature = "diagnose"))]
45315		return ret;
45316	}
45317	#[inline(always)]
45318	fn glBlendEquationi(&self, buf: GLuint, mode: GLenum) -> Result<()> {
45319		let ret = process_catch("glBlendEquationi", catch_unwind(||(self.version_4_0.blendequationi)(buf, mode)));
45320		#[cfg(feature = "diagnose")]
45321		if let Ok(ret) = ret {
45322			return to_result("glBlendEquationi", ret, (self.version_4_0.geterror)());
45323		} else {
45324			return ret
45325		}
45326		#[cfg(not(feature = "diagnose"))]
45327		return ret;
45328	}
45329	#[inline(always)]
45330	fn glBlendEquationSeparatei(&self, buf: GLuint, modeRGB: GLenum, modeAlpha: GLenum) -> Result<()> {
45331		let ret = process_catch("glBlendEquationSeparatei", catch_unwind(||(self.version_4_0.blendequationseparatei)(buf, modeRGB, modeAlpha)));
45332		#[cfg(feature = "diagnose")]
45333		if let Ok(ret) = ret {
45334			return to_result("glBlendEquationSeparatei", ret, (self.version_4_0.geterror)());
45335		} else {
45336			return ret
45337		}
45338		#[cfg(not(feature = "diagnose"))]
45339		return ret;
45340	}
45341	#[inline(always)]
45342	fn glBlendFunci(&self, buf: GLuint, src: GLenum, dst: GLenum) -> Result<()> {
45343		let ret = process_catch("glBlendFunci", catch_unwind(||(self.version_4_0.blendfunci)(buf, src, dst)));
45344		#[cfg(feature = "diagnose")]
45345		if let Ok(ret) = ret {
45346			return to_result("glBlendFunci", ret, (self.version_4_0.geterror)());
45347		} else {
45348			return ret
45349		}
45350		#[cfg(not(feature = "diagnose"))]
45351		return ret;
45352	}
45353	#[inline(always)]
45354	fn glBlendFuncSeparatei(&self, buf: GLuint, srcRGB: GLenum, dstRGB: GLenum, srcAlpha: GLenum, dstAlpha: GLenum) -> Result<()> {
45355		let ret = process_catch("glBlendFuncSeparatei", catch_unwind(||(self.version_4_0.blendfuncseparatei)(buf, srcRGB, dstRGB, srcAlpha, dstAlpha)));
45356		#[cfg(feature = "diagnose")]
45357		if let Ok(ret) = ret {
45358			return to_result("glBlendFuncSeparatei", ret, (self.version_4_0.geterror)());
45359		} else {
45360			return ret
45361		}
45362		#[cfg(not(feature = "diagnose"))]
45363		return ret;
45364	}
45365	#[inline(always)]
45366	fn glDrawArraysIndirect(&self, mode: GLenum, indirect: *const c_void) -> Result<()> {
45367		let ret = process_catch("glDrawArraysIndirect", catch_unwind(||(self.version_4_0.drawarraysindirect)(mode, indirect)));
45368		#[cfg(feature = "diagnose")]
45369		if let Ok(ret) = ret {
45370			return to_result("glDrawArraysIndirect", ret, (self.version_4_0.geterror)());
45371		} else {
45372			return ret
45373		}
45374		#[cfg(not(feature = "diagnose"))]
45375		return ret;
45376	}
45377	#[inline(always)]
45378	fn glDrawElementsIndirect(&self, mode: GLenum, type_: GLenum, indirect: *const c_void) -> Result<()> {
45379		let ret = process_catch("glDrawElementsIndirect", catch_unwind(||(self.version_4_0.drawelementsindirect)(mode, type_, indirect)));
45380		#[cfg(feature = "diagnose")]
45381		if let Ok(ret) = ret {
45382			return to_result("glDrawElementsIndirect", ret, (self.version_4_0.geterror)());
45383		} else {
45384			return ret
45385		}
45386		#[cfg(not(feature = "diagnose"))]
45387		return ret;
45388	}
45389	#[inline(always)]
45390	fn glUniform1d(&self, location: GLint, x: GLdouble) -> Result<()> {
45391		let ret = process_catch("glUniform1d", catch_unwind(||(self.version_4_0.uniform1d)(location, x)));
45392		#[cfg(feature = "diagnose")]
45393		if let Ok(ret) = ret {
45394			return to_result("glUniform1d", ret, (self.version_4_0.geterror)());
45395		} else {
45396			return ret
45397		}
45398		#[cfg(not(feature = "diagnose"))]
45399		return ret;
45400	}
45401	#[inline(always)]
45402	fn glUniform2d(&self, location: GLint, x: GLdouble, y: GLdouble) -> Result<()> {
45403		let ret = process_catch("glUniform2d", catch_unwind(||(self.version_4_0.uniform2d)(location, x, y)));
45404		#[cfg(feature = "diagnose")]
45405		if let Ok(ret) = ret {
45406			return to_result("glUniform2d", ret, (self.version_4_0.geterror)());
45407		} else {
45408			return ret
45409		}
45410		#[cfg(not(feature = "diagnose"))]
45411		return ret;
45412	}
45413	#[inline(always)]
45414	fn glUniform3d(&self, location: GLint, x: GLdouble, y: GLdouble, z: GLdouble) -> Result<()> {
45415		let ret = process_catch("glUniform3d", catch_unwind(||(self.version_4_0.uniform3d)(location, x, y, z)));
45416		#[cfg(feature = "diagnose")]
45417		if let Ok(ret) = ret {
45418			return to_result("glUniform3d", ret, (self.version_4_0.geterror)());
45419		} else {
45420			return ret
45421		}
45422		#[cfg(not(feature = "diagnose"))]
45423		return ret;
45424	}
45425	#[inline(always)]
45426	fn glUniform4d(&self, location: GLint, x: GLdouble, y: GLdouble, z: GLdouble, w: GLdouble) -> Result<()> {
45427		let ret = process_catch("glUniform4d", catch_unwind(||(self.version_4_0.uniform4d)(location, x, y, z, w)));
45428		#[cfg(feature = "diagnose")]
45429		if let Ok(ret) = ret {
45430			return to_result("glUniform4d", ret, (self.version_4_0.geterror)());
45431		} else {
45432			return ret
45433		}
45434		#[cfg(not(feature = "diagnose"))]
45435		return ret;
45436	}
45437	#[inline(always)]
45438	fn glUniform1dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()> {
45439		let ret = process_catch("glUniform1dv", catch_unwind(||(self.version_4_0.uniform1dv)(location, count, value)));
45440		#[cfg(feature = "diagnose")]
45441		if let Ok(ret) = ret {
45442			return to_result("glUniform1dv", ret, (self.version_4_0.geterror)());
45443		} else {
45444			return ret
45445		}
45446		#[cfg(not(feature = "diagnose"))]
45447		return ret;
45448	}
45449	#[inline(always)]
45450	fn glUniform2dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()> {
45451		let ret = process_catch("glUniform2dv", catch_unwind(||(self.version_4_0.uniform2dv)(location, count, value)));
45452		#[cfg(feature = "diagnose")]
45453		if let Ok(ret) = ret {
45454			return to_result("glUniform2dv", ret, (self.version_4_0.geterror)());
45455		} else {
45456			return ret
45457		}
45458		#[cfg(not(feature = "diagnose"))]
45459		return ret;
45460	}
45461	#[inline(always)]
45462	fn glUniform3dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()> {
45463		let ret = process_catch("glUniform3dv", catch_unwind(||(self.version_4_0.uniform3dv)(location, count, value)));
45464		#[cfg(feature = "diagnose")]
45465		if let Ok(ret) = ret {
45466			return to_result("glUniform3dv", ret, (self.version_4_0.geterror)());
45467		} else {
45468			return ret
45469		}
45470		#[cfg(not(feature = "diagnose"))]
45471		return ret;
45472	}
45473	#[inline(always)]
45474	fn glUniform4dv(&self, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()> {
45475		let ret = process_catch("glUniform4dv", catch_unwind(||(self.version_4_0.uniform4dv)(location, count, value)));
45476		#[cfg(feature = "diagnose")]
45477		if let Ok(ret) = ret {
45478			return to_result("glUniform4dv", ret, (self.version_4_0.geterror)());
45479		} else {
45480			return ret
45481		}
45482		#[cfg(not(feature = "diagnose"))]
45483		return ret;
45484	}
45485	#[inline(always)]
45486	fn glUniformMatrix2dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
45487		let ret = process_catch("glUniformMatrix2dv", catch_unwind(||(self.version_4_0.uniformmatrix2dv)(location, count, transpose, value)));
45488		#[cfg(feature = "diagnose")]
45489		if let Ok(ret) = ret {
45490			return to_result("glUniformMatrix2dv", ret, (self.version_4_0.geterror)());
45491		} else {
45492			return ret
45493		}
45494		#[cfg(not(feature = "diagnose"))]
45495		return ret;
45496	}
45497	#[inline(always)]
45498	fn glUniformMatrix3dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
45499		let ret = process_catch("glUniformMatrix3dv", catch_unwind(||(self.version_4_0.uniformmatrix3dv)(location, count, transpose, value)));
45500		#[cfg(feature = "diagnose")]
45501		if let Ok(ret) = ret {
45502			return to_result("glUniformMatrix3dv", ret, (self.version_4_0.geterror)());
45503		} else {
45504			return ret
45505		}
45506		#[cfg(not(feature = "diagnose"))]
45507		return ret;
45508	}
45509	#[inline(always)]
45510	fn glUniformMatrix4dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
45511		let ret = process_catch("glUniformMatrix4dv", catch_unwind(||(self.version_4_0.uniformmatrix4dv)(location, count, transpose, value)));
45512		#[cfg(feature = "diagnose")]
45513		if let Ok(ret) = ret {
45514			return to_result("glUniformMatrix4dv", ret, (self.version_4_0.geterror)());
45515		} else {
45516			return ret
45517		}
45518		#[cfg(not(feature = "diagnose"))]
45519		return ret;
45520	}
45521	#[inline(always)]
45522	fn glUniformMatrix2x3dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
45523		let ret = process_catch("glUniformMatrix2x3dv", catch_unwind(||(self.version_4_0.uniformmatrix2x3dv)(location, count, transpose, value)));
45524		#[cfg(feature = "diagnose")]
45525		if let Ok(ret) = ret {
45526			return to_result("glUniformMatrix2x3dv", ret, (self.version_4_0.geterror)());
45527		} else {
45528			return ret
45529		}
45530		#[cfg(not(feature = "diagnose"))]
45531		return ret;
45532	}
45533	#[inline(always)]
45534	fn glUniformMatrix2x4dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
45535		let ret = process_catch("glUniformMatrix2x4dv", catch_unwind(||(self.version_4_0.uniformmatrix2x4dv)(location, count, transpose, value)));
45536		#[cfg(feature = "diagnose")]
45537		if let Ok(ret) = ret {
45538			return to_result("glUniformMatrix2x4dv", ret, (self.version_4_0.geterror)());
45539		} else {
45540			return ret
45541		}
45542		#[cfg(not(feature = "diagnose"))]
45543		return ret;
45544	}
45545	#[inline(always)]
45546	fn glUniformMatrix3x2dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
45547		let ret = process_catch("glUniformMatrix3x2dv", catch_unwind(||(self.version_4_0.uniformmatrix3x2dv)(location, count, transpose, value)));
45548		#[cfg(feature = "diagnose")]
45549		if let Ok(ret) = ret {
45550			return to_result("glUniformMatrix3x2dv", ret, (self.version_4_0.geterror)());
45551		} else {
45552			return ret
45553		}
45554		#[cfg(not(feature = "diagnose"))]
45555		return ret;
45556	}
45557	#[inline(always)]
45558	fn glUniformMatrix3x4dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
45559		let ret = process_catch("glUniformMatrix3x4dv", catch_unwind(||(self.version_4_0.uniformmatrix3x4dv)(location, count, transpose, value)));
45560		#[cfg(feature = "diagnose")]
45561		if let Ok(ret) = ret {
45562			return to_result("glUniformMatrix3x4dv", ret, (self.version_4_0.geterror)());
45563		} else {
45564			return ret
45565		}
45566		#[cfg(not(feature = "diagnose"))]
45567		return ret;
45568	}
45569	#[inline(always)]
45570	fn glUniformMatrix4x2dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
45571		let ret = process_catch("glUniformMatrix4x2dv", catch_unwind(||(self.version_4_0.uniformmatrix4x2dv)(location, count, transpose, value)));
45572		#[cfg(feature = "diagnose")]
45573		if let Ok(ret) = ret {
45574			return to_result("glUniformMatrix4x2dv", ret, (self.version_4_0.geterror)());
45575		} else {
45576			return ret
45577		}
45578		#[cfg(not(feature = "diagnose"))]
45579		return ret;
45580	}
45581	#[inline(always)]
45582	fn glUniformMatrix4x3dv(&self, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
45583		let ret = process_catch("glUniformMatrix4x3dv", catch_unwind(||(self.version_4_0.uniformmatrix4x3dv)(location, count, transpose, value)));
45584		#[cfg(feature = "diagnose")]
45585		if let Ok(ret) = ret {
45586			return to_result("glUniformMatrix4x3dv", ret, (self.version_4_0.geterror)());
45587		} else {
45588			return ret
45589		}
45590		#[cfg(not(feature = "diagnose"))]
45591		return ret;
45592	}
45593	#[inline(always)]
45594	fn glGetUniformdv(&self, program: GLuint, location: GLint, params: *mut GLdouble) -> Result<()> {
45595		let ret = process_catch("glGetUniformdv", catch_unwind(||(self.version_4_0.getuniformdv)(program, location, params)));
45596		#[cfg(feature = "diagnose")]
45597		if let Ok(ret) = ret {
45598			return to_result("glGetUniformdv", ret, (self.version_4_0.geterror)());
45599		} else {
45600			return ret
45601		}
45602		#[cfg(not(feature = "diagnose"))]
45603		return ret;
45604	}
45605	#[inline(always)]
45606	fn glGetSubroutineUniformLocation(&self, program: GLuint, shadertype: GLenum, name: *const GLchar) -> Result<GLint> {
45607		let ret = process_catch("glGetSubroutineUniformLocation", catch_unwind(||(self.version_4_0.getsubroutineuniformlocation)(program, shadertype, name)));
45608		#[cfg(feature = "diagnose")]
45609		if let Ok(ret) = ret {
45610			return to_result("glGetSubroutineUniformLocation", ret, (self.version_4_0.geterror)());
45611		} else {
45612			return ret
45613		}
45614		#[cfg(not(feature = "diagnose"))]
45615		return ret;
45616	}
45617	#[inline(always)]
45618	fn glGetSubroutineIndex(&self, program: GLuint, shadertype: GLenum, name: *const GLchar) -> Result<GLuint> {
45619		let ret = process_catch("glGetSubroutineIndex", catch_unwind(||(self.version_4_0.getsubroutineindex)(program, shadertype, name)));
45620		#[cfg(feature = "diagnose")]
45621		if let Ok(ret) = ret {
45622			return to_result("glGetSubroutineIndex", ret, (self.version_4_0.geterror)());
45623		} else {
45624			return ret
45625		}
45626		#[cfg(not(feature = "diagnose"))]
45627		return ret;
45628	}
45629	#[inline(always)]
45630	fn glGetActiveSubroutineUniformiv(&self, program: GLuint, shadertype: GLenum, index: GLuint, pname: GLenum, values: *mut GLint) -> Result<()> {
45631		let ret = process_catch("glGetActiveSubroutineUniformiv", catch_unwind(||(self.version_4_0.getactivesubroutineuniformiv)(program, shadertype, index, pname, values)));
45632		#[cfg(feature = "diagnose")]
45633		if let Ok(ret) = ret {
45634			return to_result("glGetActiveSubroutineUniformiv", ret, (self.version_4_0.geterror)());
45635		} else {
45636			return ret
45637		}
45638		#[cfg(not(feature = "diagnose"))]
45639		return ret;
45640	}
45641	#[inline(always)]
45642	fn glGetActiveSubroutineUniformName(&self, program: GLuint, shadertype: GLenum, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, name: *mut GLchar) -> Result<()> {
45643		let ret = process_catch("glGetActiveSubroutineUniformName", catch_unwind(||(self.version_4_0.getactivesubroutineuniformname)(program, shadertype, index, bufSize, length, name)));
45644		#[cfg(feature = "diagnose")]
45645		if let Ok(ret) = ret {
45646			return to_result("glGetActiveSubroutineUniformName", ret, (self.version_4_0.geterror)());
45647		} else {
45648			return ret
45649		}
45650		#[cfg(not(feature = "diagnose"))]
45651		return ret;
45652	}
45653	#[inline(always)]
45654	fn glGetActiveSubroutineName(&self, program: GLuint, shadertype: GLenum, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, name: *mut GLchar) -> Result<()> {
45655		let ret = process_catch("glGetActiveSubroutineName", catch_unwind(||(self.version_4_0.getactivesubroutinename)(program, shadertype, index, bufSize, length, name)));
45656		#[cfg(feature = "diagnose")]
45657		if let Ok(ret) = ret {
45658			return to_result("glGetActiveSubroutineName", ret, (self.version_4_0.geterror)());
45659		} else {
45660			return ret
45661		}
45662		#[cfg(not(feature = "diagnose"))]
45663		return ret;
45664	}
45665	#[inline(always)]
45666	fn glUniformSubroutinesuiv(&self, shadertype: GLenum, count: GLsizei, indices: *const GLuint) -> Result<()> {
45667		let ret = process_catch("glUniformSubroutinesuiv", catch_unwind(||(self.version_4_0.uniformsubroutinesuiv)(shadertype, count, indices)));
45668		#[cfg(feature = "diagnose")]
45669		if let Ok(ret) = ret {
45670			return to_result("glUniformSubroutinesuiv", ret, (self.version_4_0.geterror)());
45671		} else {
45672			return ret
45673		}
45674		#[cfg(not(feature = "diagnose"))]
45675		return ret;
45676	}
45677	#[inline(always)]
45678	fn glGetUniformSubroutineuiv(&self, shadertype: GLenum, location: GLint, params: *mut GLuint) -> Result<()> {
45679		let ret = process_catch("glGetUniformSubroutineuiv", catch_unwind(||(self.version_4_0.getuniformsubroutineuiv)(shadertype, location, params)));
45680		#[cfg(feature = "diagnose")]
45681		if let Ok(ret) = ret {
45682			return to_result("glGetUniformSubroutineuiv", ret, (self.version_4_0.geterror)());
45683		} else {
45684			return ret
45685		}
45686		#[cfg(not(feature = "diagnose"))]
45687		return ret;
45688	}
45689	#[inline(always)]
45690	fn glGetProgramStageiv(&self, program: GLuint, shadertype: GLenum, pname: GLenum, values: *mut GLint) -> Result<()> {
45691		let ret = process_catch("glGetProgramStageiv", catch_unwind(||(self.version_4_0.getprogramstageiv)(program, shadertype, pname, values)));
45692		#[cfg(feature = "diagnose")]
45693		if let Ok(ret) = ret {
45694			return to_result("glGetProgramStageiv", ret, (self.version_4_0.geterror)());
45695		} else {
45696			return ret
45697		}
45698		#[cfg(not(feature = "diagnose"))]
45699		return ret;
45700	}
45701	#[inline(always)]
45702	fn glPatchParameteri(&self, pname: GLenum, value: GLint) -> Result<()> {
45703		let ret = process_catch("glPatchParameteri", catch_unwind(||(self.version_4_0.patchparameteri)(pname, value)));
45704		#[cfg(feature = "diagnose")]
45705		if let Ok(ret) = ret {
45706			return to_result("glPatchParameteri", ret, (self.version_4_0.geterror)());
45707		} else {
45708			return ret
45709		}
45710		#[cfg(not(feature = "diagnose"))]
45711		return ret;
45712	}
45713	#[inline(always)]
45714	fn glPatchParameterfv(&self, pname: GLenum, values: *const GLfloat) -> Result<()> {
45715		let ret = process_catch("glPatchParameterfv", catch_unwind(||(self.version_4_0.patchparameterfv)(pname, values)));
45716		#[cfg(feature = "diagnose")]
45717		if let Ok(ret) = ret {
45718			return to_result("glPatchParameterfv", ret, (self.version_4_0.geterror)());
45719		} else {
45720			return ret
45721		}
45722		#[cfg(not(feature = "diagnose"))]
45723		return ret;
45724	}
45725	#[inline(always)]
45726	fn glBindTransformFeedback(&self, target: GLenum, id: GLuint) -> Result<()> {
45727		let ret = process_catch("glBindTransformFeedback", catch_unwind(||(self.version_4_0.bindtransformfeedback)(target, id)));
45728		#[cfg(feature = "diagnose")]
45729		if let Ok(ret) = ret {
45730			return to_result("glBindTransformFeedback", ret, (self.version_4_0.geterror)());
45731		} else {
45732			return ret
45733		}
45734		#[cfg(not(feature = "diagnose"))]
45735		return ret;
45736	}
45737	#[inline(always)]
45738	fn glDeleteTransformFeedbacks(&self, n: GLsizei, ids: *const GLuint) -> Result<()> {
45739		let ret = process_catch("glDeleteTransformFeedbacks", catch_unwind(||(self.version_4_0.deletetransformfeedbacks)(n, ids)));
45740		#[cfg(feature = "diagnose")]
45741		if let Ok(ret) = ret {
45742			return to_result("glDeleteTransformFeedbacks", ret, (self.version_4_0.geterror)());
45743		} else {
45744			return ret
45745		}
45746		#[cfg(not(feature = "diagnose"))]
45747		return ret;
45748	}
45749	#[inline(always)]
45750	fn glGenTransformFeedbacks(&self, n: GLsizei, ids: *mut GLuint) -> Result<()> {
45751		let ret = process_catch("glGenTransformFeedbacks", catch_unwind(||(self.version_4_0.gentransformfeedbacks)(n, ids)));
45752		#[cfg(feature = "diagnose")]
45753		if let Ok(ret) = ret {
45754			return to_result("glGenTransformFeedbacks", ret, (self.version_4_0.geterror)());
45755		} else {
45756			return ret
45757		}
45758		#[cfg(not(feature = "diagnose"))]
45759		return ret;
45760	}
45761	#[inline(always)]
45762	fn glIsTransformFeedback(&self, id: GLuint) -> Result<GLboolean> {
45763		let ret = process_catch("glIsTransformFeedback", catch_unwind(||(self.version_4_0.istransformfeedback)(id)));
45764		#[cfg(feature = "diagnose")]
45765		if let Ok(ret) = ret {
45766			return to_result("glIsTransformFeedback", ret, (self.version_4_0.geterror)());
45767		} else {
45768			return ret
45769		}
45770		#[cfg(not(feature = "diagnose"))]
45771		return ret;
45772	}
45773	#[inline(always)]
45774	fn glPauseTransformFeedback(&self) -> Result<()> {
45775		let ret = process_catch("glPauseTransformFeedback", catch_unwind(||(self.version_4_0.pausetransformfeedback)()));
45776		#[cfg(feature = "diagnose")]
45777		if let Ok(ret) = ret {
45778			return to_result("glPauseTransformFeedback", ret, (self.version_4_0.geterror)());
45779		} else {
45780			return ret
45781		}
45782		#[cfg(not(feature = "diagnose"))]
45783		return ret;
45784	}
45785	#[inline(always)]
45786	fn glResumeTransformFeedback(&self) -> Result<()> {
45787		let ret = process_catch("glResumeTransformFeedback", catch_unwind(||(self.version_4_0.resumetransformfeedback)()));
45788		#[cfg(feature = "diagnose")]
45789		if let Ok(ret) = ret {
45790			return to_result("glResumeTransformFeedback", ret, (self.version_4_0.geterror)());
45791		} else {
45792			return ret
45793		}
45794		#[cfg(not(feature = "diagnose"))]
45795		return ret;
45796	}
45797	#[inline(always)]
45798	fn glDrawTransformFeedback(&self, mode: GLenum, id: GLuint) -> Result<()> {
45799		let ret = process_catch("glDrawTransformFeedback", catch_unwind(||(self.version_4_0.drawtransformfeedback)(mode, id)));
45800		#[cfg(feature = "diagnose")]
45801		if let Ok(ret) = ret {
45802			return to_result("glDrawTransformFeedback", ret, (self.version_4_0.geterror)());
45803		} else {
45804			return ret
45805		}
45806		#[cfg(not(feature = "diagnose"))]
45807		return ret;
45808	}
45809	#[inline(always)]
45810	fn glDrawTransformFeedbackStream(&self, mode: GLenum, id: GLuint, stream: GLuint) -> Result<()> {
45811		let ret = process_catch("glDrawTransformFeedbackStream", catch_unwind(||(self.version_4_0.drawtransformfeedbackstream)(mode, id, stream)));
45812		#[cfg(feature = "diagnose")]
45813		if let Ok(ret) = ret {
45814			return to_result("glDrawTransformFeedbackStream", ret, (self.version_4_0.geterror)());
45815		} else {
45816			return ret
45817		}
45818		#[cfg(not(feature = "diagnose"))]
45819		return ret;
45820	}
45821	#[inline(always)]
45822	fn glBeginQueryIndexed(&self, target: GLenum, index: GLuint, id: GLuint) -> Result<()> {
45823		let ret = process_catch("glBeginQueryIndexed", catch_unwind(||(self.version_4_0.beginqueryindexed)(target, index, id)));
45824		#[cfg(feature = "diagnose")]
45825		if let Ok(ret) = ret {
45826			return to_result("glBeginQueryIndexed", ret, (self.version_4_0.geterror)());
45827		} else {
45828			return ret
45829		}
45830		#[cfg(not(feature = "diagnose"))]
45831		return ret;
45832	}
45833	#[inline(always)]
45834	fn glEndQueryIndexed(&self, target: GLenum, index: GLuint) -> Result<()> {
45835		let ret = process_catch("glEndQueryIndexed", catch_unwind(||(self.version_4_0.endqueryindexed)(target, index)));
45836		#[cfg(feature = "diagnose")]
45837		if let Ok(ret) = ret {
45838			return to_result("glEndQueryIndexed", ret, (self.version_4_0.geterror)());
45839		} else {
45840			return ret
45841		}
45842		#[cfg(not(feature = "diagnose"))]
45843		return ret;
45844	}
45845	#[inline(always)]
45846	fn glGetQueryIndexediv(&self, target: GLenum, index: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
45847		let ret = process_catch("glGetQueryIndexediv", catch_unwind(||(self.version_4_0.getqueryindexediv)(target, index, pname, params)));
45848		#[cfg(feature = "diagnose")]
45849		if let Ok(ret) = ret {
45850			return to_result("glGetQueryIndexediv", ret, (self.version_4_0.geterror)());
45851		} else {
45852			return ret
45853		}
45854		#[cfg(not(feature = "diagnose"))]
45855		return ret;
45856	}
45857}
45858
45859impl GL_4_1_g for GLCore {
45860	#[inline(always)]
45861	fn glReleaseShaderCompiler(&self) -> Result<()> {
45862		let ret = process_catch("glReleaseShaderCompiler", catch_unwind(||(self.version_4_1.releaseshadercompiler)()));
45863		#[cfg(feature = "diagnose")]
45864		if let Ok(ret) = ret {
45865			return to_result("glReleaseShaderCompiler", ret, (self.version_4_1.geterror)());
45866		} else {
45867			return ret
45868		}
45869		#[cfg(not(feature = "diagnose"))]
45870		return ret;
45871	}
45872	#[inline(always)]
45873	fn glShaderBinary(&self, count: GLsizei, shaders: *const GLuint, binaryFormat: GLenum, binary: *const c_void, length: GLsizei) -> Result<()> {
45874		let ret = process_catch("glShaderBinary", catch_unwind(||(self.version_4_1.shaderbinary)(count, shaders, binaryFormat, binary, length)));
45875		#[cfg(feature = "diagnose")]
45876		if let Ok(ret) = ret {
45877			return to_result("glShaderBinary", ret, (self.version_4_1.geterror)());
45878		} else {
45879			return ret
45880		}
45881		#[cfg(not(feature = "diagnose"))]
45882		return ret;
45883	}
45884	#[inline(always)]
45885	fn glGetShaderPrecisionFormat(&self, shadertype: GLenum, precisiontype: GLenum, range: *mut GLint, precision: *mut GLint) -> Result<()> {
45886		let ret = process_catch("glGetShaderPrecisionFormat", catch_unwind(||(self.version_4_1.getshaderprecisionformat)(shadertype, precisiontype, range, precision)));
45887		#[cfg(feature = "diagnose")]
45888		if let Ok(ret) = ret {
45889			return to_result("glGetShaderPrecisionFormat", ret, (self.version_4_1.geterror)());
45890		} else {
45891			return ret
45892		}
45893		#[cfg(not(feature = "diagnose"))]
45894		return ret;
45895	}
45896	#[inline(always)]
45897	fn glDepthRangef(&self, n: GLfloat, f: GLfloat) -> Result<()> {
45898		let ret = process_catch("glDepthRangef", catch_unwind(||(self.version_4_1.depthrangef)(n, f)));
45899		#[cfg(feature = "diagnose")]
45900		if let Ok(ret) = ret {
45901			return to_result("glDepthRangef", ret, (self.version_4_1.geterror)());
45902		} else {
45903			return ret
45904		}
45905		#[cfg(not(feature = "diagnose"))]
45906		return ret;
45907	}
45908	#[inline(always)]
45909	fn glClearDepthf(&self, d: GLfloat) -> Result<()> {
45910		let ret = process_catch("glClearDepthf", catch_unwind(||(self.version_4_1.cleardepthf)(d)));
45911		#[cfg(feature = "diagnose")]
45912		if let Ok(ret) = ret {
45913			return to_result("glClearDepthf", ret, (self.version_4_1.geterror)());
45914		} else {
45915			return ret
45916		}
45917		#[cfg(not(feature = "diagnose"))]
45918		return ret;
45919	}
45920	#[inline(always)]
45921	fn glGetProgramBinary(&self, program: GLuint, bufSize: GLsizei, length: *mut GLsizei, binaryFormat: *mut GLenum, binary: *mut c_void) -> Result<()> {
45922		let ret = process_catch("glGetProgramBinary", catch_unwind(||(self.version_4_1.getprogrambinary)(program, bufSize, length, binaryFormat, binary)));
45923		#[cfg(feature = "diagnose")]
45924		if let Ok(ret) = ret {
45925			return to_result("glGetProgramBinary", ret, (self.version_4_1.geterror)());
45926		} else {
45927			return ret
45928		}
45929		#[cfg(not(feature = "diagnose"))]
45930		return ret;
45931	}
45932	#[inline(always)]
45933	fn glProgramBinary(&self, program: GLuint, binaryFormat: GLenum, binary: *const c_void, length: GLsizei) -> Result<()> {
45934		let ret = process_catch("glProgramBinary", catch_unwind(||(self.version_4_1.programbinary)(program, binaryFormat, binary, length)));
45935		#[cfg(feature = "diagnose")]
45936		if let Ok(ret) = ret {
45937			return to_result("glProgramBinary", ret, (self.version_4_1.geterror)());
45938		} else {
45939			return ret
45940		}
45941		#[cfg(not(feature = "diagnose"))]
45942		return ret;
45943	}
45944	#[inline(always)]
45945	fn glProgramParameteri(&self, program: GLuint, pname: GLenum, value: GLint) -> Result<()> {
45946		let ret = process_catch("glProgramParameteri", catch_unwind(||(self.version_4_1.programparameteri)(program, pname, value)));
45947		#[cfg(feature = "diagnose")]
45948		if let Ok(ret) = ret {
45949			return to_result("glProgramParameteri", ret, (self.version_4_1.geterror)());
45950		} else {
45951			return ret
45952		}
45953		#[cfg(not(feature = "diagnose"))]
45954		return ret;
45955	}
45956	#[inline(always)]
45957	fn glUseProgramStages(&self, pipeline: GLuint, stages: GLbitfield, program: GLuint) -> Result<()> {
45958		let ret = process_catch("glUseProgramStages", catch_unwind(||(self.version_4_1.useprogramstages)(pipeline, stages, program)));
45959		#[cfg(feature = "diagnose")]
45960		if let Ok(ret) = ret {
45961			return to_result("glUseProgramStages", ret, (self.version_4_1.geterror)());
45962		} else {
45963			return ret
45964		}
45965		#[cfg(not(feature = "diagnose"))]
45966		return ret;
45967	}
45968	#[inline(always)]
45969	fn glActiveShaderProgram(&self, pipeline: GLuint, program: GLuint) -> Result<()> {
45970		let ret = process_catch("glActiveShaderProgram", catch_unwind(||(self.version_4_1.activeshaderprogram)(pipeline, program)));
45971		#[cfg(feature = "diagnose")]
45972		if let Ok(ret) = ret {
45973			return to_result("glActiveShaderProgram", ret, (self.version_4_1.geterror)());
45974		} else {
45975			return ret
45976		}
45977		#[cfg(not(feature = "diagnose"))]
45978		return ret;
45979	}
45980	#[inline(always)]
45981	fn glCreateShaderProgramv(&self, type_: GLenum, count: GLsizei, strings: *const *const GLchar) -> Result<GLuint> {
45982		let ret = process_catch("glCreateShaderProgramv", catch_unwind(||(self.version_4_1.createshaderprogramv)(type_, count, strings)));
45983		#[cfg(feature = "diagnose")]
45984		if let Ok(ret) = ret {
45985			return to_result("glCreateShaderProgramv", ret, (self.version_4_1.geterror)());
45986		} else {
45987			return ret
45988		}
45989		#[cfg(not(feature = "diagnose"))]
45990		return ret;
45991	}
45992	#[inline(always)]
45993	fn glBindProgramPipeline(&self, pipeline: GLuint) -> Result<()> {
45994		let ret = process_catch("glBindProgramPipeline", catch_unwind(||(self.version_4_1.bindprogrampipeline)(pipeline)));
45995		#[cfg(feature = "diagnose")]
45996		if let Ok(ret) = ret {
45997			return to_result("glBindProgramPipeline", ret, (self.version_4_1.geterror)());
45998		} else {
45999			return ret
46000		}
46001		#[cfg(not(feature = "diagnose"))]
46002		return ret;
46003	}
46004	#[inline(always)]
46005	fn glDeleteProgramPipelines(&self, n: GLsizei, pipelines: *const GLuint) -> Result<()> {
46006		let ret = process_catch("glDeleteProgramPipelines", catch_unwind(||(self.version_4_1.deleteprogrampipelines)(n, pipelines)));
46007		#[cfg(feature = "diagnose")]
46008		if let Ok(ret) = ret {
46009			return to_result("glDeleteProgramPipelines", ret, (self.version_4_1.geterror)());
46010		} else {
46011			return ret
46012		}
46013		#[cfg(not(feature = "diagnose"))]
46014		return ret;
46015	}
46016	#[inline(always)]
46017	fn glGenProgramPipelines(&self, n: GLsizei, pipelines: *mut GLuint) -> Result<()> {
46018		let ret = process_catch("glGenProgramPipelines", catch_unwind(||(self.version_4_1.genprogrampipelines)(n, pipelines)));
46019		#[cfg(feature = "diagnose")]
46020		if let Ok(ret) = ret {
46021			return to_result("glGenProgramPipelines", ret, (self.version_4_1.geterror)());
46022		} else {
46023			return ret
46024		}
46025		#[cfg(not(feature = "diagnose"))]
46026		return ret;
46027	}
46028	#[inline(always)]
46029	fn glIsProgramPipeline(&self, pipeline: GLuint) -> Result<GLboolean> {
46030		let ret = process_catch("glIsProgramPipeline", catch_unwind(||(self.version_4_1.isprogrampipeline)(pipeline)));
46031		#[cfg(feature = "diagnose")]
46032		if let Ok(ret) = ret {
46033			return to_result("glIsProgramPipeline", ret, (self.version_4_1.geterror)());
46034		} else {
46035			return ret
46036		}
46037		#[cfg(not(feature = "diagnose"))]
46038		return ret;
46039	}
46040	#[inline(always)]
46041	fn glGetProgramPipelineiv(&self, pipeline: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
46042		let ret = process_catch("glGetProgramPipelineiv", catch_unwind(||(self.version_4_1.getprogrampipelineiv)(pipeline, pname, params)));
46043		#[cfg(feature = "diagnose")]
46044		if let Ok(ret) = ret {
46045			return to_result("glGetProgramPipelineiv", ret, (self.version_4_1.geterror)());
46046		} else {
46047			return ret
46048		}
46049		#[cfg(not(feature = "diagnose"))]
46050		return ret;
46051	}
46052	#[inline(always)]
46053	fn glProgramUniform1i(&self, program: GLuint, location: GLint, v0: GLint) -> Result<()> {
46054		let ret = process_catch("glProgramUniform1i", catch_unwind(||(self.version_4_1.programuniform1i)(program, location, v0)));
46055		#[cfg(feature = "diagnose")]
46056		if let Ok(ret) = ret {
46057			return to_result("glProgramUniform1i", ret, (self.version_4_1.geterror)());
46058		} else {
46059			return ret
46060		}
46061		#[cfg(not(feature = "diagnose"))]
46062		return ret;
46063	}
46064	#[inline(always)]
46065	fn glProgramUniform1iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
46066		let ret = process_catch("glProgramUniform1iv", catch_unwind(||(self.version_4_1.programuniform1iv)(program, location, count, value)));
46067		#[cfg(feature = "diagnose")]
46068		if let Ok(ret) = ret {
46069			return to_result("glProgramUniform1iv", ret, (self.version_4_1.geterror)());
46070		} else {
46071			return ret
46072		}
46073		#[cfg(not(feature = "diagnose"))]
46074		return ret;
46075	}
46076	#[inline(always)]
46077	fn glProgramUniform1f(&self, program: GLuint, location: GLint, v0: GLfloat) -> Result<()> {
46078		let ret = process_catch("glProgramUniform1f", catch_unwind(||(self.version_4_1.programuniform1f)(program, location, v0)));
46079		#[cfg(feature = "diagnose")]
46080		if let Ok(ret) = ret {
46081			return to_result("glProgramUniform1f", ret, (self.version_4_1.geterror)());
46082		} else {
46083			return ret
46084		}
46085		#[cfg(not(feature = "diagnose"))]
46086		return ret;
46087	}
46088	#[inline(always)]
46089	fn glProgramUniform1fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
46090		let ret = process_catch("glProgramUniform1fv", catch_unwind(||(self.version_4_1.programuniform1fv)(program, location, count, value)));
46091		#[cfg(feature = "diagnose")]
46092		if let Ok(ret) = ret {
46093			return to_result("glProgramUniform1fv", ret, (self.version_4_1.geterror)());
46094		} else {
46095			return ret
46096		}
46097		#[cfg(not(feature = "diagnose"))]
46098		return ret;
46099	}
46100	#[inline(always)]
46101	fn glProgramUniform1d(&self, program: GLuint, location: GLint, v0: GLdouble) -> Result<()> {
46102		let ret = process_catch("glProgramUniform1d", catch_unwind(||(self.version_4_1.programuniform1d)(program, location, v0)));
46103		#[cfg(feature = "diagnose")]
46104		if let Ok(ret) = ret {
46105			return to_result("glProgramUniform1d", ret, (self.version_4_1.geterror)());
46106		} else {
46107			return ret
46108		}
46109		#[cfg(not(feature = "diagnose"))]
46110		return ret;
46111	}
46112	#[inline(always)]
46113	fn glProgramUniform1dv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()> {
46114		let ret = process_catch("glProgramUniform1dv", catch_unwind(||(self.version_4_1.programuniform1dv)(program, location, count, value)));
46115		#[cfg(feature = "diagnose")]
46116		if let Ok(ret) = ret {
46117			return to_result("glProgramUniform1dv", ret, (self.version_4_1.geterror)());
46118		} else {
46119			return ret
46120		}
46121		#[cfg(not(feature = "diagnose"))]
46122		return ret;
46123	}
46124	#[inline(always)]
46125	fn glProgramUniform1ui(&self, program: GLuint, location: GLint, v0: GLuint) -> Result<()> {
46126		let ret = process_catch("glProgramUniform1ui", catch_unwind(||(self.version_4_1.programuniform1ui)(program, location, v0)));
46127		#[cfg(feature = "diagnose")]
46128		if let Ok(ret) = ret {
46129			return to_result("glProgramUniform1ui", ret, (self.version_4_1.geterror)());
46130		} else {
46131			return ret
46132		}
46133		#[cfg(not(feature = "diagnose"))]
46134		return ret;
46135	}
46136	#[inline(always)]
46137	fn glProgramUniform1uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
46138		let ret = process_catch("glProgramUniform1uiv", catch_unwind(||(self.version_4_1.programuniform1uiv)(program, location, count, value)));
46139		#[cfg(feature = "diagnose")]
46140		if let Ok(ret) = ret {
46141			return to_result("glProgramUniform1uiv", ret, (self.version_4_1.geterror)());
46142		} else {
46143			return ret
46144		}
46145		#[cfg(not(feature = "diagnose"))]
46146		return ret;
46147	}
46148	#[inline(always)]
46149	fn glProgramUniform2i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint) -> Result<()> {
46150		let ret = process_catch("glProgramUniform2i", catch_unwind(||(self.version_4_1.programuniform2i)(program, location, v0, v1)));
46151		#[cfg(feature = "diagnose")]
46152		if let Ok(ret) = ret {
46153			return to_result("glProgramUniform2i", ret, (self.version_4_1.geterror)());
46154		} else {
46155			return ret
46156		}
46157		#[cfg(not(feature = "diagnose"))]
46158		return ret;
46159	}
46160	#[inline(always)]
46161	fn glProgramUniform2iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
46162		let ret = process_catch("glProgramUniform2iv", catch_unwind(||(self.version_4_1.programuniform2iv)(program, location, count, value)));
46163		#[cfg(feature = "diagnose")]
46164		if let Ok(ret) = ret {
46165			return to_result("glProgramUniform2iv", ret, (self.version_4_1.geterror)());
46166		} else {
46167			return ret
46168		}
46169		#[cfg(not(feature = "diagnose"))]
46170		return ret;
46171	}
46172	#[inline(always)]
46173	fn glProgramUniform2f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat) -> Result<()> {
46174		let ret = process_catch("glProgramUniform2f", catch_unwind(||(self.version_4_1.programuniform2f)(program, location, v0, v1)));
46175		#[cfg(feature = "diagnose")]
46176		if let Ok(ret) = ret {
46177			return to_result("glProgramUniform2f", ret, (self.version_4_1.geterror)());
46178		} else {
46179			return ret
46180		}
46181		#[cfg(not(feature = "diagnose"))]
46182		return ret;
46183	}
46184	#[inline(always)]
46185	fn glProgramUniform2fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
46186		let ret = process_catch("glProgramUniform2fv", catch_unwind(||(self.version_4_1.programuniform2fv)(program, location, count, value)));
46187		#[cfg(feature = "diagnose")]
46188		if let Ok(ret) = ret {
46189			return to_result("glProgramUniform2fv", ret, (self.version_4_1.geterror)());
46190		} else {
46191			return ret
46192		}
46193		#[cfg(not(feature = "diagnose"))]
46194		return ret;
46195	}
46196	#[inline(always)]
46197	fn glProgramUniform2d(&self, program: GLuint, location: GLint, v0: GLdouble, v1: GLdouble) -> Result<()> {
46198		let ret = process_catch("glProgramUniform2d", catch_unwind(||(self.version_4_1.programuniform2d)(program, location, v0, v1)));
46199		#[cfg(feature = "diagnose")]
46200		if let Ok(ret) = ret {
46201			return to_result("glProgramUniform2d", ret, (self.version_4_1.geterror)());
46202		} else {
46203			return ret
46204		}
46205		#[cfg(not(feature = "diagnose"))]
46206		return ret;
46207	}
46208	#[inline(always)]
46209	fn glProgramUniform2dv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()> {
46210		let ret = process_catch("glProgramUniform2dv", catch_unwind(||(self.version_4_1.programuniform2dv)(program, location, count, value)));
46211		#[cfg(feature = "diagnose")]
46212		if let Ok(ret) = ret {
46213			return to_result("glProgramUniform2dv", ret, (self.version_4_1.geterror)());
46214		} else {
46215			return ret
46216		}
46217		#[cfg(not(feature = "diagnose"))]
46218		return ret;
46219	}
46220	#[inline(always)]
46221	fn glProgramUniform2ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint) -> Result<()> {
46222		let ret = process_catch("glProgramUniform2ui", catch_unwind(||(self.version_4_1.programuniform2ui)(program, location, v0, v1)));
46223		#[cfg(feature = "diagnose")]
46224		if let Ok(ret) = ret {
46225			return to_result("glProgramUniform2ui", ret, (self.version_4_1.geterror)());
46226		} else {
46227			return ret
46228		}
46229		#[cfg(not(feature = "diagnose"))]
46230		return ret;
46231	}
46232	#[inline(always)]
46233	fn glProgramUniform2uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
46234		let ret = process_catch("glProgramUniform2uiv", catch_unwind(||(self.version_4_1.programuniform2uiv)(program, location, count, value)));
46235		#[cfg(feature = "diagnose")]
46236		if let Ok(ret) = ret {
46237			return to_result("glProgramUniform2uiv", ret, (self.version_4_1.geterror)());
46238		} else {
46239			return ret
46240		}
46241		#[cfg(not(feature = "diagnose"))]
46242		return ret;
46243	}
46244	#[inline(always)]
46245	fn glProgramUniform3i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint, v2: GLint) -> Result<()> {
46246		let ret = process_catch("glProgramUniform3i", catch_unwind(||(self.version_4_1.programuniform3i)(program, location, v0, v1, v2)));
46247		#[cfg(feature = "diagnose")]
46248		if let Ok(ret) = ret {
46249			return to_result("glProgramUniform3i", ret, (self.version_4_1.geterror)());
46250		} else {
46251			return ret
46252		}
46253		#[cfg(not(feature = "diagnose"))]
46254		return ret;
46255	}
46256	#[inline(always)]
46257	fn glProgramUniform3iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
46258		let ret = process_catch("glProgramUniform3iv", catch_unwind(||(self.version_4_1.programuniform3iv)(program, location, count, value)));
46259		#[cfg(feature = "diagnose")]
46260		if let Ok(ret) = ret {
46261			return to_result("glProgramUniform3iv", ret, (self.version_4_1.geterror)());
46262		} else {
46263			return ret
46264		}
46265		#[cfg(not(feature = "diagnose"))]
46266		return ret;
46267	}
46268	#[inline(always)]
46269	fn glProgramUniform3f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat) -> Result<()> {
46270		let ret = process_catch("glProgramUniform3f", catch_unwind(||(self.version_4_1.programuniform3f)(program, location, v0, v1, v2)));
46271		#[cfg(feature = "diagnose")]
46272		if let Ok(ret) = ret {
46273			return to_result("glProgramUniform3f", ret, (self.version_4_1.geterror)());
46274		} else {
46275			return ret
46276		}
46277		#[cfg(not(feature = "diagnose"))]
46278		return ret;
46279	}
46280	#[inline(always)]
46281	fn glProgramUniform3fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
46282		let ret = process_catch("glProgramUniform3fv", catch_unwind(||(self.version_4_1.programuniform3fv)(program, location, count, value)));
46283		#[cfg(feature = "diagnose")]
46284		if let Ok(ret) = ret {
46285			return to_result("glProgramUniform3fv", ret, (self.version_4_1.geterror)());
46286		} else {
46287			return ret
46288		}
46289		#[cfg(not(feature = "diagnose"))]
46290		return ret;
46291	}
46292	#[inline(always)]
46293	fn glProgramUniform3d(&self, program: GLuint, location: GLint, v0: GLdouble, v1: GLdouble, v2: GLdouble) -> Result<()> {
46294		let ret = process_catch("glProgramUniform3d", catch_unwind(||(self.version_4_1.programuniform3d)(program, location, v0, v1, v2)));
46295		#[cfg(feature = "diagnose")]
46296		if let Ok(ret) = ret {
46297			return to_result("glProgramUniform3d", ret, (self.version_4_1.geterror)());
46298		} else {
46299			return ret
46300		}
46301		#[cfg(not(feature = "diagnose"))]
46302		return ret;
46303	}
46304	#[inline(always)]
46305	fn glProgramUniform3dv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()> {
46306		let ret = process_catch("glProgramUniform3dv", catch_unwind(||(self.version_4_1.programuniform3dv)(program, location, count, value)));
46307		#[cfg(feature = "diagnose")]
46308		if let Ok(ret) = ret {
46309			return to_result("glProgramUniform3dv", ret, (self.version_4_1.geterror)());
46310		} else {
46311			return ret
46312		}
46313		#[cfg(not(feature = "diagnose"))]
46314		return ret;
46315	}
46316	#[inline(always)]
46317	fn glProgramUniform3ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint) -> Result<()> {
46318		let ret = process_catch("glProgramUniform3ui", catch_unwind(||(self.version_4_1.programuniform3ui)(program, location, v0, v1, v2)));
46319		#[cfg(feature = "diagnose")]
46320		if let Ok(ret) = ret {
46321			return to_result("glProgramUniform3ui", ret, (self.version_4_1.geterror)());
46322		} else {
46323			return ret
46324		}
46325		#[cfg(not(feature = "diagnose"))]
46326		return ret;
46327	}
46328	#[inline(always)]
46329	fn glProgramUniform3uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
46330		let ret = process_catch("glProgramUniform3uiv", catch_unwind(||(self.version_4_1.programuniform3uiv)(program, location, count, value)));
46331		#[cfg(feature = "diagnose")]
46332		if let Ok(ret) = ret {
46333			return to_result("glProgramUniform3uiv", ret, (self.version_4_1.geterror)());
46334		} else {
46335			return ret
46336		}
46337		#[cfg(not(feature = "diagnose"))]
46338		return ret;
46339	}
46340	#[inline(always)]
46341	fn glProgramUniform4i(&self, program: GLuint, location: GLint, v0: GLint, v1: GLint, v2: GLint, v3: GLint) -> Result<()> {
46342		let ret = process_catch("glProgramUniform4i", catch_unwind(||(self.version_4_1.programuniform4i)(program, location, v0, v1, v2, v3)));
46343		#[cfg(feature = "diagnose")]
46344		if let Ok(ret) = ret {
46345			return to_result("glProgramUniform4i", ret, (self.version_4_1.geterror)());
46346		} else {
46347			return ret
46348		}
46349		#[cfg(not(feature = "diagnose"))]
46350		return ret;
46351	}
46352	#[inline(always)]
46353	fn glProgramUniform4iv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLint) -> Result<()> {
46354		let ret = process_catch("glProgramUniform4iv", catch_unwind(||(self.version_4_1.programuniform4iv)(program, location, count, value)));
46355		#[cfg(feature = "diagnose")]
46356		if let Ok(ret) = ret {
46357			return to_result("glProgramUniform4iv", ret, (self.version_4_1.geterror)());
46358		} else {
46359			return ret
46360		}
46361		#[cfg(not(feature = "diagnose"))]
46362		return ret;
46363	}
46364	#[inline(always)]
46365	fn glProgramUniform4f(&self, program: GLuint, location: GLint, v0: GLfloat, v1: GLfloat, v2: GLfloat, v3: GLfloat) -> Result<()> {
46366		let ret = process_catch("glProgramUniform4f", catch_unwind(||(self.version_4_1.programuniform4f)(program, location, v0, v1, v2, v3)));
46367		#[cfg(feature = "diagnose")]
46368		if let Ok(ret) = ret {
46369			return to_result("glProgramUniform4f", ret, (self.version_4_1.geterror)());
46370		} else {
46371			return ret
46372		}
46373		#[cfg(not(feature = "diagnose"))]
46374		return ret;
46375	}
46376	#[inline(always)]
46377	fn glProgramUniform4fv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLfloat) -> Result<()> {
46378		let ret = process_catch("glProgramUniform4fv", catch_unwind(||(self.version_4_1.programuniform4fv)(program, location, count, value)));
46379		#[cfg(feature = "diagnose")]
46380		if let Ok(ret) = ret {
46381			return to_result("glProgramUniform4fv", ret, (self.version_4_1.geterror)());
46382		} else {
46383			return ret
46384		}
46385		#[cfg(not(feature = "diagnose"))]
46386		return ret;
46387	}
46388	#[inline(always)]
46389	fn glProgramUniform4d(&self, program: GLuint, location: GLint, v0: GLdouble, v1: GLdouble, v2: GLdouble, v3: GLdouble) -> Result<()> {
46390		let ret = process_catch("glProgramUniform4d", catch_unwind(||(self.version_4_1.programuniform4d)(program, location, v0, v1, v2, v3)));
46391		#[cfg(feature = "diagnose")]
46392		if let Ok(ret) = ret {
46393			return to_result("glProgramUniform4d", ret, (self.version_4_1.geterror)());
46394		} else {
46395			return ret
46396		}
46397		#[cfg(not(feature = "diagnose"))]
46398		return ret;
46399	}
46400	#[inline(always)]
46401	fn glProgramUniform4dv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLdouble) -> Result<()> {
46402		let ret = process_catch("glProgramUniform4dv", catch_unwind(||(self.version_4_1.programuniform4dv)(program, location, count, value)));
46403		#[cfg(feature = "diagnose")]
46404		if let Ok(ret) = ret {
46405			return to_result("glProgramUniform4dv", ret, (self.version_4_1.geterror)());
46406		} else {
46407			return ret
46408		}
46409		#[cfg(not(feature = "diagnose"))]
46410		return ret;
46411	}
46412	#[inline(always)]
46413	fn glProgramUniform4ui(&self, program: GLuint, location: GLint, v0: GLuint, v1: GLuint, v2: GLuint, v3: GLuint) -> Result<()> {
46414		let ret = process_catch("glProgramUniform4ui", catch_unwind(||(self.version_4_1.programuniform4ui)(program, location, v0, v1, v2, v3)));
46415		#[cfg(feature = "diagnose")]
46416		if let Ok(ret) = ret {
46417			return to_result("glProgramUniform4ui", ret, (self.version_4_1.geterror)());
46418		} else {
46419			return ret
46420		}
46421		#[cfg(not(feature = "diagnose"))]
46422		return ret;
46423	}
46424	#[inline(always)]
46425	fn glProgramUniform4uiv(&self, program: GLuint, location: GLint, count: GLsizei, value: *const GLuint) -> Result<()> {
46426		let ret = process_catch("glProgramUniform4uiv", catch_unwind(||(self.version_4_1.programuniform4uiv)(program, location, count, value)));
46427		#[cfg(feature = "diagnose")]
46428		if let Ok(ret) = ret {
46429			return to_result("glProgramUniform4uiv", ret, (self.version_4_1.geterror)());
46430		} else {
46431			return ret
46432		}
46433		#[cfg(not(feature = "diagnose"))]
46434		return ret;
46435	}
46436	#[inline(always)]
46437	fn glProgramUniformMatrix2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
46438		let ret = process_catch("glProgramUniformMatrix2fv", catch_unwind(||(self.version_4_1.programuniformmatrix2fv)(program, location, count, transpose, value)));
46439		#[cfg(feature = "diagnose")]
46440		if let Ok(ret) = ret {
46441			return to_result("glProgramUniformMatrix2fv", ret, (self.version_4_1.geterror)());
46442		} else {
46443			return ret
46444		}
46445		#[cfg(not(feature = "diagnose"))]
46446		return ret;
46447	}
46448	#[inline(always)]
46449	fn glProgramUniformMatrix3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
46450		let ret = process_catch("glProgramUniformMatrix3fv", catch_unwind(||(self.version_4_1.programuniformmatrix3fv)(program, location, count, transpose, value)));
46451		#[cfg(feature = "diagnose")]
46452		if let Ok(ret) = ret {
46453			return to_result("glProgramUniformMatrix3fv", ret, (self.version_4_1.geterror)());
46454		} else {
46455			return ret
46456		}
46457		#[cfg(not(feature = "diagnose"))]
46458		return ret;
46459	}
46460	#[inline(always)]
46461	fn glProgramUniformMatrix4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
46462		let ret = process_catch("glProgramUniformMatrix4fv", catch_unwind(||(self.version_4_1.programuniformmatrix4fv)(program, location, count, transpose, value)));
46463		#[cfg(feature = "diagnose")]
46464		if let Ok(ret) = ret {
46465			return to_result("glProgramUniformMatrix4fv", ret, (self.version_4_1.geterror)());
46466		} else {
46467			return ret
46468		}
46469		#[cfg(not(feature = "diagnose"))]
46470		return ret;
46471	}
46472	#[inline(always)]
46473	fn glProgramUniformMatrix2dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
46474		let ret = process_catch("glProgramUniformMatrix2dv", catch_unwind(||(self.version_4_1.programuniformmatrix2dv)(program, location, count, transpose, value)));
46475		#[cfg(feature = "diagnose")]
46476		if let Ok(ret) = ret {
46477			return to_result("glProgramUniformMatrix2dv", ret, (self.version_4_1.geterror)());
46478		} else {
46479			return ret
46480		}
46481		#[cfg(not(feature = "diagnose"))]
46482		return ret;
46483	}
46484	#[inline(always)]
46485	fn glProgramUniformMatrix3dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
46486		let ret = process_catch("glProgramUniformMatrix3dv", catch_unwind(||(self.version_4_1.programuniformmatrix3dv)(program, location, count, transpose, value)));
46487		#[cfg(feature = "diagnose")]
46488		if let Ok(ret) = ret {
46489			return to_result("glProgramUniformMatrix3dv", ret, (self.version_4_1.geterror)());
46490		} else {
46491			return ret
46492		}
46493		#[cfg(not(feature = "diagnose"))]
46494		return ret;
46495	}
46496	#[inline(always)]
46497	fn glProgramUniformMatrix4dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
46498		let ret = process_catch("glProgramUniformMatrix4dv", catch_unwind(||(self.version_4_1.programuniformmatrix4dv)(program, location, count, transpose, value)));
46499		#[cfg(feature = "diagnose")]
46500		if let Ok(ret) = ret {
46501			return to_result("glProgramUniformMatrix4dv", ret, (self.version_4_1.geterror)());
46502		} else {
46503			return ret
46504		}
46505		#[cfg(not(feature = "diagnose"))]
46506		return ret;
46507	}
46508	#[inline(always)]
46509	fn glProgramUniformMatrix2x3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
46510		let ret = process_catch("glProgramUniformMatrix2x3fv", catch_unwind(||(self.version_4_1.programuniformmatrix2x3fv)(program, location, count, transpose, value)));
46511		#[cfg(feature = "diagnose")]
46512		if let Ok(ret) = ret {
46513			return to_result("glProgramUniformMatrix2x3fv", ret, (self.version_4_1.geterror)());
46514		} else {
46515			return ret
46516		}
46517		#[cfg(not(feature = "diagnose"))]
46518		return ret;
46519	}
46520	#[inline(always)]
46521	fn glProgramUniformMatrix3x2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
46522		let ret = process_catch("glProgramUniformMatrix3x2fv", catch_unwind(||(self.version_4_1.programuniformmatrix3x2fv)(program, location, count, transpose, value)));
46523		#[cfg(feature = "diagnose")]
46524		if let Ok(ret) = ret {
46525			return to_result("glProgramUniformMatrix3x2fv", ret, (self.version_4_1.geterror)());
46526		} else {
46527			return ret
46528		}
46529		#[cfg(not(feature = "diagnose"))]
46530		return ret;
46531	}
46532	#[inline(always)]
46533	fn glProgramUniformMatrix2x4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
46534		let ret = process_catch("glProgramUniformMatrix2x4fv", catch_unwind(||(self.version_4_1.programuniformmatrix2x4fv)(program, location, count, transpose, value)));
46535		#[cfg(feature = "diagnose")]
46536		if let Ok(ret) = ret {
46537			return to_result("glProgramUniformMatrix2x4fv", ret, (self.version_4_1.geterror)());
46538		} else {
46539			return ret
46540		}
46541		#[cfg(not(feature = "diagnose"))]
46542		return ret;
46543	}
46544	#[inline(always)]
46545	fn glProgramUniformMatrix4x2fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
46546		let ret = process_catch("glProgramUniformMatrix4x2fv", catch_unwind(||(self.version_4_1.programuniformmatrix4x2fv)(program, location, count, transpose, value)));
46547		#[cfg(feature = "diagnose")]
46548		if let Ok(ret) = ret {
46549			return to_result("glProgramUniformMatrix4x2fv", ret, (self.version_4_1.geterror)());
46550		} else {
46551			return ret
46552		}
46553		#[cfg(not(feature = "diagnose"))]
46554		return ret;
46555	}
46556	#[inline(always)]
46557	fn glProgramUniformMatrix3x4fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
46558		let ret = process_catch("glProgramUniformMatrix3x4fv", catch_unwind(||(self.version_4_1.programuniformmatrix3x4fv)(program, location, count, transpose, value)));
46559		#[cfg(feature = "diagnose")]
46560		if let Ok(ret) = ret {
46561			return to_result("glProgramUniformMatrix3x4fv", ret, (self.version_4_1.geterror)());
46562		} else {
46563			return ret
46564		}
46565		#[cfg(not(feature = "diagnose"))]
46566		return ret;
46567	}
46568	#[inline(always)]
46569	fn glProgramUniformMatrix4x3fv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLfloat) -> Result<()> {
46570		let ret = process_catch("glProgramUniformMatrix4x3fv", catch_unwind(||(self.version_4_1.programuniformmatrix4x3fv)(program, location, count, transpose, value)));
46571		#[cfg(feature = "diagnose")]
46572		if let Ok(ret) = ret {
46573			return to_result("glProgramUniformMatrix4x3fv", ret, (self.version_4_1.geterror)());
46574		} else {
46575			return ret
46576		}
46577		#[cfg(not(feature = "diagnose"))]
46578		return ret;
46579	}
46580	#[inline(always)]
46581	fn glProgramUniformMatrix2x3dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
46582		let ret = process_catch("glProgramUniformMatrix2x3dv", catch_unwind(||(self.version_4_1.programuniformmatrix2x3dv)(program, location, count, transpose, value)));
46583		#[cfg(feature = "diagnose")]
46584		if let Ok(ret) = ret {
46585			return to_result("glProgramUniformMatrix2x3dv", ret, (self.version_4_1.geterror)());
46586		} else {
46587			return ret
46588		}
46589		#[cfg(not(feature = "diagnose"))]
46590		return ret;
46591	}
46592	#[inline(always)]
46593	fn glProgramUniformMatrix3x2dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
46594		let ret = process_catch("glProgramUniformMatrix3x2dv", catch_unwind(||(self.version_4_1.programuniformmatrix3x2dv)(program, location, count, transpose, value)));
46595		#[cfg(feature = "diagnose")]
46596		if let Ok(ret) = ret {
46597			return to_result("glProgramUniformMatrix3x2dv", ret, (self.version_4_1.geterror)());
46598		} else {
46599			return ret
46600		}
46601		#[cfg(not(feature = "diagnose"))]
46602		return ret;
46603	}
46604	#[inline(always)]
46605	fn glProgramUniformMatrix2x4dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
46606		let ret = process_catch("glProgramUniformMatrix2x4dv", catch_unwind(||(self.version_4_1.programuniformmatrix2x4dv)(program, location, count, transpose, value)));
46607		#[cfg(feature = "diagnose")]
46608		if let Ok(ret) = ret {
46609			return to_result("glProgramUniformMatrix2x4dv", ret, (self.version_4_1.geterror)());
46610		} else {
46611			return ret
46612		}
46613		#[cfg(not(feature = "diagnose"))]
46614		return ret;
46615	}
46616	#[inline(always)]
46617	fn glProgramUniformMatrix4x2dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
46618		let ret = process_catch("glProgramUniformMatrix4x2dv", catch_unwind(||(self.version_4_1.programuniformmatrix4x2dv)(program, location, count, transpose, value)));
46619		#[cfg(feature = "diagnose")]
46620		if let Ok(ret) = ret {
46621			return to_result("glProgramUniformMatrix4x2dv", ret, (self.version_4_1.geterror)());
46622		} else {
46623			return ret
46624		}
46625		#[cfg(not(feature = "diagnose"))]
46626		return ret;
46627	}
46628	#[inline(always)]
46629	fn glProgramUniformMatrix3x4dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
46630		let ret = process_catch("glProgramUniformMatrix3x4dv", catch_unwind(||(self.version_4_1.programuniformmatrix3x4dv)(program, location, count, transpose, value)));
46631		#[cfg(feature = "diagnose")]
46632		if let Ok(ret) = ret {
46633			return to_result("glProgramUniformMatrix3x4dv", ret, (self.version_4_1.geterror)());
46634		} else {
46635			return ret
46636		}
46637		#[cfg(not(feature = "diagnose"))]
46638		return ret;
46639	}
46640	#[inline(always)]
46641	fn glProgramUniformMatrix4x3dv(&self, program: GLuint, location: GLint, count: GLsizei, transpose: GLboolean, value: *const GLdouble) -> Result<()> {
46642		let ret = process_catch("glProgramUniformMatrix4x3dv", catch_unwind(||(self.version_4_1.programuniformmatrix4x3dv)(program, location, count, transpose, value)));
46643		#[cfg(feature = "diagnose")]
46644		if let Ok(ret) = ret {
46645			return to_result("glProgramUniformMatrix4x3dv", ret, (self.version_4_1.geterror)());
46646		} else {
46647			return ret
46648		}
46649		#[cfg(not(feature = "diagnose"))]
46650		return ret;
46651	}
46652	#[inline(always)]
46653	fn glValidateProgramPipeline(&self, pipeline: GLuint) -> Result<()> {
46654		let ret = process_catch("glValidateProgramPipeline", catch_unwind(||(self.version_4_1.validateprogrampipeline)(pipeline)));
46655		#[cfg(feature = "diagnose")]
46656		if let Ok(ret) = ret {
46657			return to_result("glValidateProgramPipeline", ret, (self.version_4_1.geterror)());
46658		} else {
46659			return ret
46660		}
46661		#[cfg(not(feature = "diagnose"))]
46662		return ret;
46663	}
46664	#[inline(always)]
46665	fn glGetProgramPipelineInfoLog(&self, pipeline: GLuint, bufSize: GLsizei, length: *mut GLsizei, infoLog: *mut GLchar) -> Result<()> {
46666		let ret = process_catch("glGetProgramPipelineInfoLog", catch_unwind(||(self.version_4_1.getprogrampipelineinfolog)(pipeline, bufSize, length, infoLog)));
46667		#[cfg(feature = "diagnose")]
46668		if let Ok(ret) = ret {
46669			return to_result("glGetProgramPipelineInfoLog", ret, (self.version_4_1.geterror)());
46670		} else {
46671			return ret
46672		}
46673		#[cfg(not(feature = "diagnose"))]
46674		return ret;
46675	}
46676	#[inline(always)]
46677	fn glVertexAttribL1d(&self, index: GLuint, x: GLdouble) -> Result<()> {
46678		let ret = process_catch("glVertexAttribL1d", catch_unwind(||(self.version_4_1.vertexattribl1d)(index, x)));
46679		#[cfg(feature = "diagnose")]
46680		if let Ok(ret) = ret {
46681			return to_result("glVertexAttribL1d", ret, (self.version_4_1.geterror)());
46682		} else {
46683			return ret
46684		}
46685		#[cfg(not(feature = "diagnose"))]
46686		return ret;
46687	}
46688	#[inline(always)]
46689	fn glVertexAttribL2d(&self, index: GLuint, x: GLdouble, y: GLdouble) -> Result<()> {
46690		let ret = process_catch("glVertexAttribL2d", catch_unwind(||(self.version_4_1.vertexattribl2d)(index, x, y)));
46691		#[cfg(feature = "diagnose")]
46692		if let Ok(ret) = ret {
46693			return to_result("glVertexAttribL2d", ret, (self.version_4_1.geterror)());
46694		} else {
46695			return ret
46696		}
46697		#[cfg(not(feature = "diagnose"))]
46698		return ret;
46699	}
46700	#[inline(always)]
46701	fn glVertexAttribL3d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble) -> Result<()> {
46702		let ret = process_catch("glVertexAttribL3d", catch_unwind(||(self.version_4_1.vertexattribl3d)(index, x, y, z)));
46703		#[cfg(feature = "diagnose")]
46704		if let Ok(ret) = ret {
46705			return to_result("glVertexAttribL3d", ret, (self.version_4_1.geterror)());
46706		} else {
46707			return ret
46708		}
46709		#[cfg(not(feature = "diagnose"))]
46710		return ret;
46711	}
46712	#[inline(always)]
46713	fn glVertexAttribL4d(&self, index: GLuint, x: GLdouble, y: GLdouble, z: GLdouble, w: GLdouble) -> Result<()> {
46714		let ret = process_catch("glVertexAttribL4d", catch_unwind(||(self.version_4_1.vertexattribl4d)(index, x, y, z, w)));
46715		#[cfg(feature = "diagnose")]
46716		if let Ok(ret) = ret {
46717			return to_result("glVertexAttribL4d", ret, (self.version_4_1.geterror)());
46718		} else {
46719			return ret
46720		}
46721		#[cfg(not(feature = "diagnose"))]
46722		return ret;
46723	}
46724	#[inline(always)]
46725	fn glVertexAttribL1dv(&self, index: GLuint, v: *const GLdouble) -> Result<()> {
46726		let ret = process_catch("glVertexAttribL1dv", catch_unwind(||(self.version_4_1.vertexattribl1dv)(index, v)));
46727		#[cfg(feature = "diagnose")]
46728		if let Ok(ret) = ret {
46729			return to_result("glVertexAttribL1dv", ret, (self.version_4_1.geterror)());
46730		} else {
46731			return ret
46732		}
46733		#[cfg(not(feature = "diagnose"))]
46734		return ret;
46735	}
46736	#[inline(always)]
46737	fn glVertexAttribL2dv(&self, index: GLuint, v: *const GLdouble) -> Result<()> {
46738		let ret = process_catch("glVertexAttribL2dv", catch_unwind(||(self.version_4_1.vertexattribl2dv)(index, v)));
46739		#[cfg(feature = "diagnose")]
46740		if let Ok(ret) = ret {
46741			return to_result("glVertexAttribL2dv", ret, (self.version_4_1.geterror)());
46742		} else {
46743			return ret
46744		}
46745		#[cfg(not(feature = "diagnose"))]
46746		return ret;
46747	}
46748	#[inline(always)]
46749	fn glVertexAttribL3dv(&self, index: GLuint, v: *const GLdouble) -> Result<()> {
46750		let ret = process_catch("glVertexAttribL3dv", catch_unwind(||(self.version_4_1.vertexattribl3dv)(index, v)));
46751		#[cfg(feature = "diagnose")]
46752		if let Ok(ret) = ret {
46753			return to_result("glVertexAttribL3dv", ret, (self.version_4_1.geterror)());
46754		} else {
46755			return ret
46756		}
46757		#[cfg(not(feature = "diagnose"))]
46758		return ret;
46759	}
46760	#[inline(always)]
46761	fn glVertexAttribL4dv(&self, index: GLuint, v: *const GLdouble) -> Result<()> {
46762		let ret = process_catch("glVertexAttribL4dv", catch_unwind(||(self.version_4_1.vertexattribl4dv)(index, v)));
46763		#[cfg(feature = "diagnose")]
46764		if let Ok(ret) = ret {
46765			return to_result("glVertexAttribL4dv", ret, (self.version_4_1.geterror)());
46766		} else {
46767			return ret
46768		}
46769		#[cfg(not(feature = "diagnose"))]
46770		return ret;
46771	}
46772	#[inline(always)]
46773	fn glVertexAttribLPointer(&self, index: GLuint, size: GLint, type_: GLenum, stride: GLsizei, pointer: *const c_void) -> Result<()> {
46774		let ret = process_catch("glVertexAttribLPointer", catch_unwind(||(self.version_4_1.vertexattriblpointer)(index, size, type_, stride, pointer)));
46775		#[cfg(feature = "diagnose")]
46776		if let Ok(ret) = ret {
46777			return to_result("glVertexAttribLPointer", ret, (self.version_4_1.geterror)());
46778		} else {
46779			return ret
46780		}
46781		#[cfg(not(feature = "diagnose"))]
46782		return ret;
46783	}
46784	#[inline(always)]
46785	fn glGetVertexAttribLdv(&self, index: GLuint, pname: GLenum, params: *mut GLdouble) -> Result<()> {
46786		let ret = process_catch("glGetVertexAttribLdv", catch_unwind(||(self.version_4_1.getvertexattribldv)(index, pname, params)));
46787		#[cfg(feature = "diagnose")]
46788		if let Ok(ret) = ret {
46789			return to_result("glGetVertexAttribLdv", ret, (self.version_4_1.geterror)());
46790		} else {
46791			return ret
46792		}
46793		#[cfg(not(feature = "diagnose"))]
46794		return ret;
46795	}
46796	#[inline(always)]
46797	fn glViewportArrayv(&self, first: GLuint, count: GLsizei, v: *const GLfloat) -> Result<()> {
46798		let ret = process_catch("glViewportArrayv", catch_unwind(||(self.version_4_1.viewportarrayv)(first, count, v)));
46799		#[cfg(feature = "diagnose")]
46800		if let Ok(ret) = ret {
46801			return to_result("glViewportArrayv", ret, (self.version_4_1.geterror)());
46802		} else {
46803			return ret
46804		}
46805		#[cfg(not(feature = "diagnose"))]
46806		return ret;
46807	}
46808	#[inline(always)]
46809	fn glViewportIndexedf(&self, index: GLuint, x: GLfloat, y: GLfloat, w: GLfloat, h: GLfloat) -> Result<()> {
46810		let ret = process_catch("glViewportIndexedf", catch_unwind(||(self.version_4_1.viewportindexedf)(index, x, y, w, h)));
46811		#[cfg(feature = "diagnose")]
46812		if let Ok(ret) = ret {
46813			return to_result("glViewportIndexedf", ret, (self.version_4_1.geterror)());
46814		} else {
46815			return ret
46816		}
46817		#[cfg(not(feature = "diagnose"))]
46818		return ret;
46819	}
46820	#[inline(always)]
46821	fn glViewportIndexedfv(&self, index: GLuint, v: *const GLfloat) -> Result<()> {
46822		let ret = process_catch("glViewportIndexedfv", catch_unwind(||(self.version_4_1.viewportindexedfv)(index, v)));
46823		#[cfg(feature = "diagnose")]
46824		if let Ok(ret) = ret {
46825			return to_result("glViewportIndexedfv", ret, (self.version_4_1.geterror)());
46826		} else {
46827			return ret
46828		}
46829		#[cfg(not(feature = "diagnose"))]
46830		return ret;
46831	}
46832	#[inline(always)]
46833	fn glScissorArrayv(&self, first: GLuint, count: GLsizei, v: *const GLint) -> Result<()> {
46834		let ret = process_catch("glScissorArrayv", catch_unwind(||(self.version_4_1.scissorarrayv)(first, count, v)));
46835		#[cfg(feature = "diagnose")]
46836		if let Ok(ret) = ret {
46837			return to_result("glScissorArrayv", ret, (self.version_4_1.geterror)());
46838		} else {
46839			return ret
46840		}
46841		#[cfg(not(feature = "diagnose"))]
46842		return ret;
46843	}
46844	#[inline(always)]
46845	fn glScissorIndexed(&self, index: GLuint, left: GLint, bottom: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
46846		let ret = process_catch("glScissorIndexed", catch_unwind(||(self.version_4_1.scissorindexed)(index, left, bottom, width, height)));
46847		#[cfg(feature = "diagnose")]
46848		if let Ok(ret) = ret {
46849			return to_result("glScissorIndexed", ret, (self.version_4_1.geterror)());
46850		} else {
46851			return ret
46852		}
46853		#[cfg(not(feature = "diagnose"))]
46854		return ret;
46855	}
46856	#[inline(always)]
46857	fn glScissorIndexedv(&self, index: GLuint, v: *const GLint) -> Result<()> {
46858		let ret = process_catch("glScissorIndexedv", catch_unwind(||(self.version_4_1.scissorindexedv)(index, v)));
46859		#[cfg(feature = "diagnose")]
46860		if let Ok(ret) = ret {
46861			return to_result("glScissorIndexedv", ret, (self.version_4_1.geterror)());
46862		} else {
46863			return ret
46864		}
46865		#[cfg(not(feature = "diagnose"))]
46866		return ret;
46867	}
46868	#[inline(always)]
46869	fn glDepthRangeArrayv(&self, first: GLuint, count: GLsizei, v: *const GLdouble) -> Result<()> {
46870		let ret = process_catch("glDepthRangeArrayv", catch_unwind(||(self.version_4_1.depthrangearrayv)(first, count, v)));
46871		#[cfg(feature = "diagnose")]
46872		if let Ok(ret) = ret {
46873			return to_result("glDepthRangeArrayv", ret, (self.version_4_1.geterror)());
46874		} else {
46875			return ret
46876		}
46877		#[cfg(not(feature = "diagnose"))]
46878		return ret;
46879	}
46880	#[inline(always)]
46881	fn glDepthRangeIndexed(&self, index: GLuint, n: GLdouble, f: GLdouble) -> Result<()> {
46882		let ret = process_catch("glDepthRangeIndexed", catch_unwind(||(self.version_4_1.depthrangeindexed)(index, n, f)));
46883		#[cfg(feature = "diagnose")]
46884		if let Ok(ret) = ret {
46885			return to_result("glDepthRangeIndexed", ret, (self.version_4_1.geterror)());
46886		} else {
46887			return ret
46888		}
46889		#[cfg(not(feature = "diagnose"))]
46890		return ret;
46891	}
46892	#[inline(always)]
46893	fn glGetFloati_v(&self, target: GLenum, index: GLuint, data: *mut GLfloat) -> Result<()> {
46894		let ret = process_catch("glGetFloati_v", catch_unwind(||(self.version_4_1.getfloati_v)(target, index, data)));
46895		#[cfg(feature = "diagnose")]
46896		if let Ok(ret) = ret {
46897			return to_result("glGetFloati_v", ret, (self.version_4_1.geterror)());
46898		} else {
46899			return ret
46900		}
46901		#[cfg(not(feature = "diagnose"))]
46902		return ret;
46903	}
46904	#[inline(always)]
46905	fn glGetDoublei_v(&self, target: GLenum, index: GLuint, data: *mut GLdouble) -> Result<()> {
46906		let ret = process_catch("glGetDoublei_v", catch_unwind(||(self.version_4_1.getdoublei_v)(target, index, data)));
46907		#[cfg(feature = "diagnose")]
46908		if let Ok(ret) = ret {
46909			return to_result("glGetDoublei_v", ret, (self.version_4_1.geterror)());
46910		} else {
46911			return ret
46912		}
46913		#[cfg(not(feature = "diagnose"))]
46914		return ret;
46915	}
46916}
46917
46918impl GL_4_2_g for GLCore {
46919	#[inline(always)]
46920	fn glDrawArraysInstancedBaseInstance(&self, mode: GLenum, first: GLint, count: GLsizei, instancecount: GLsizei, baseinstance: GLuint) -> Result<()> {
46921		let ret = process_catch("glDrawArraysInstancedBaseInstance", catch_unwind(||(self.version_4_2.drawarraysinstancedbaseinstance)(mode, first, count, instancecount, baseinstance)));
46922		#[cfg(feature = "diagnose")]
46923		if let Ok(ret) = ret {
46924			return to_result("glDrawArraysInstancedBaseInstance", ret, (self.version_4_2.geterror)());
46925		} else {
46926			return ret
46927		}
46928		#[cfg(not(feature = "diagnose"))]
46929		return ret;
46930	}
46931	#[inline(always)]
46932	fn glDrawElementsInstancedBaseInstance(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei, baseinstance: GLuint) -> Result<()> {
46933		let ret = process_catch("glDrawElementsInstancedBaseInstance", catch_unwind(||(self.version_4_2.drawelementsinstancedbaseinstance)(mode, count, type_, indices, instancecount, baseinstance)));
46934		#[cfg(feature = "diagnose")]
46935		if let Ok(ret) = ret {
46936			return to_result("glDrawElementsInstancedBaseInstance", ret, (self.version_4_2.geterror)());
46937		} else {
46938			return ret
46939		}
46940		#[cfg(not(feature = "diagnose"))]
46941		return ret;
46942	}
46943	#[inline(always)]
46944	fn glDrawElementsInstancedBaseVertexBaseInstance(&self, mode: GLenum, count: GLsizei, type_: GLenum, indices: *const c_void, instancecount: GLsizei, basevertex: GLint, baseinstance: GLuint) -> Result<()> {
46945		let ret = process_catch("glDrawElementsInstancedBaseVertexBaseInstance", catch_unwind(||(self.version_4_2.drawelementsinstancedbasevertexbaseinstance)(mode, count, type_, indices, instancecount, basevertex, baseinstance)));
46946		#[cfg(feature = "diagnose")]
46947		if let Ok(ret) = ret {
46948			return to_result("glDrawElementsInstancedBaseVertexBaseInstance", ret, (self.version_4_2.geterror)());
46949		} else {
46950			return ret
46951		}
46952		#[cfg(not(feature = "diagnose"))]
46953		return ret;
46954	}
46955	#[inline(always)]
46956	fn glGetInternalformativ(&self, target: GLenum, internalformat: GLenum, pname: GLenum, count: GLsizei, params: *mut GLint) -> Result<()> {
46957		let ret = process_catch("glGetInternalformativ", catch_unwind(||(self.version_4_2.getinternalformativ)(target, internalformat, pname, count, params)));
46958		#[cfg(feature = "diagnose")]
46959		if let Ok(ret) = ret {
46960			return to_result("glGetInternalformativ", ret, (self.version_4_2.geterror)());
46961		} else {
46962			return ret
46963		}
46964		#[cfg(not(feature = "diagnose"))]
46965		return ret;
46966	}
46967	#[inline(always)]
46968	fn glGetActiveAtomicCounterBufferiv(&self, program: GLuint, bufferIndex: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
46969		let ret = process_catch("glGetActiveAtomicCounterBufferiv", catch_unwind(||(self.version_4_2.getactiveatomiccounterbufferiv)(program, bufferIndex, pname, params)));
46970		#[cfg(feature = "diagnose")]
46971		if let Ok(ret) = ret {
46972			return to_result("glGetActiveAtomicCounterBufferiv", ret, (self.version_4_2.geterror)());
46973		} else {
46974			return ret
46975		}
46976		#[cfg(not(feature = "diagnose"))]
46977		return ret;
46978	}
46979	#[inline(always)]
46980	fn glBindImageTexture(&self, unit: GLuint, texture: GLuint, level: GLint, layered: GLboolean, layer: GLint, access: GLenum, format: GLenum) -> Result<()> {
46981		let ret = process_catch("glBindImageTexture", catch_unwind(||(self.version_4_2.bindimagetexture)(unit, texture, level, layered, layer, access, format)));
46982		#[cfg(feature = "diagnose")]
46983		if let Ok(ret) = ret {
46984			return to_result("glBindImageTexture", ret, (self.version_4_2.geterror)());
46985		} else {
46986			return ret
46987		}
46988		#[cfg(not(feature = "diagnose"))]
46989		return ret;
46990	}
46991	#[inline(always)]
46992	fn glMemoryBarrier(&self, barriers: GLbitfield) -> Result<()> {
46993		let ret = process_catch("glMemoryBarrier", catch_unwind(||(self.version_4_2.memorybarrier)(barriers)));
46994		#[cfg(feature = "diagnose")]
46995		if let Ok(ret) = ret {
46996			return to_result("glMemoryBarrier", ret, (self.version_4_2.geterror)());
46997		} else {
46998			return ret
46999		}
47000		#[cfg(not(feature = "diagnose"))]
47001		return ret;
47002	}
47003	#[inline(always)]
47004	fn glTexStorage1D(&self, target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei) -> Result<()> {
47005		let ret = process_catch("glTexStorage1D", catch_unwind(||(self.version_4_2.texstorage1d)(target, levels, internalformat, width)));
47006		#[cfg(feature = "diagnose")]
47007		if let Ok(ret) = ret {
47008			return to_result("glTexStorage1D", ret, (self.version_4_2.geterror)());
47009		} else {
47010			return ret
47011		}
47012		#[cfg(not(feature = "diagnose"))]
47013		return ret;
47014	}
47015	#[inline(always)]
47016	fn glTexStorage2D(&self, target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()> {
47017		let ret = process_catch("glTexStorage2D", catch_unwind(||(self.version_4_2.texstorage2d)(target, levels, internalformat, width, height)));
47018		#[cfg(feature = "diagnose")]
47019		if let Ok(ret) = ret {
47020			return to_result("glTexStorage2D", ret, (self.version_4_2.geterror)());
47021		} else {
47022			return ret
47023		}
47024		#[cfg(not(feature = "diagnose"))]
47025		return ret;
47026	}
47027	#[inline(always)]
47028	fn glTexStorage3D(&self, target: GLenum, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei) -> Result<()> {
47029		let ret = process_catch("glTexStorage3D", catch_unwind(||(self.version_4_2.texstorage3d)(target, levels, internalformat, width, height, depth)));
47030		#[cfg(feature = "diagnose")]
47031		if let Ok(ret) = ret {
47032			return to_result("glTexStorage3D", ret, (self.version_4_2.geterror)());
47033		} else {
47034			return ret
47035		}
47036		#[cfg(not(feature = "diagnose"))]
47037		return ret;
47038	}
47039	#[inline(always)]
47040	fn glDrawTransformFeedbackInstanced(&self, mode: GLenum, id: GLuint, instancecount: GLsizei) -> Result<()> {
47041		let ret = process_catch("glDrawTransformFeedbackInstanced", catch_unwind(||(self.version_4_2.drawtransformfeedbackinstanced)(mode, id, instancecount)));
47042		#[cfg(feature = "diagnose")]
47043		if let Ok(ret) = ret {
47044			return to_result("glDrawTransformFeedbackInstanced", ret, (self.version_4_2.geterror)());
47045		} else {
47046			return ret
47047		}
47048		#[cfg(not(feature = "diagnose"))]
47049		return ret;
47050	}
47051	#[inline(always)]
47052	fn glDrawTransformFeedbackStreamInstanced(&self, mode: GLenum, id: GLuint, stream: GLuint, instancecount: GLsizei) -> Result<()> {
47053		let ret = process_catch("glDrawTransformFeedbackStreamInstanced", catch_unwind(||(self.version_4_2.drawtransformfeedbackstreaminstanced)(mode, id, stream, instancecount)));
47054		#[cfg(feature = "diagnose")]
47055		if let Ok(ret) = ret {
47056			return to_result("glDrawTransformFeedbackStreamInstanced", ret, (self.version_4_2.geterror)());
47057		} else {
47058			return ret
47059		}
47060		#[cfg(not(feature = "diagnose"))]
47061		return ret;
47062	}
47063}
47064
47065impl GL_4_3_g for GLCore {
47066	#[inline(always)]
47067	fn glClearBufferData(&self, target: GLenum, internalformat: GLenum, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()> {
47068		let ret = process_catch("glClearBufferData", catch_unwind(||(self.version_4_3.clearbufferdata)(target, internalformat, format, type_, data)));
47069		#[cfg(feature = "diagnose")]
47070		if let Ok(ret) = ret {
47071			return to_result("glClearBufferData", ret, (self.version_4_3.geterror)());
47072		} else {
47073			return ret
47074		}
47075		#[cfg(not(feature = "diagnose"))]
47076		return ret;
47077	}
47078	#[inline(always)]
47079	fn glClearBufferSubData(&self, target: GLenum, internalformat: GLenum, offset: GLintptr, size: GLsizeiptr, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()> {
47080		let ret = process_catch("glClearBufferSubData", catch_unwind(||(self.version_4_3.clearbuffersubdata)(target, internalformat, offset, size, format, type_, data)));
47081		#[cfg(feature = "diagnose")]
47082		if let Ok(ret) = ret {
47083			return to_result("glClearBufferSubData", ret, (self.version_4_3.geterror)());
47084		} else {
47085			return ret
47086		}
47087		#[cfg(not(feature = "diagnose"))]
47088		return ret;
47089	}
47090	#[inline(always)]
47091	fn glDispatchCompute(&self, num_groups_x: GLuint, num_groups_y: GLuint, num_groups_z: GLuint) -> Result<()> {
47092		let ret = process_catch("glDispatchCompute", catch_unwind(||(self.version_4_3.dispatchcompute)(num_groups_x, num_groups_y, num_groups_z)));
47093		#[cfg(feature = "diagnose")]
47094		if let Ok(ret) = ret {
47095			return to_result("glDispatchCompute", ret, (self.version_4_3.geterror)());
47096		} else {
47097			return ret
47098		}
47099		#[cfg(not(feature = "diagnose"))]
47100		return ret;
47101	}
47102	#[inline(always)]
47103	fn glDispatchComputeIndirect(&self, indirect: GLintptr) -> Result<()> {
47104		let ret = process_catch("glDispatchComputeIndirect", catch_unwind(||(self.version_4_3.dispatchcomputeindirect)(indirect)));
47105		#[cfg(feature = "diagnose")]
47106		if let Ok(ret) = ret {
47107			return to_result("glDispatchComputeIndirect", ret, (self.version_4_3.geterror)());
47108		} else {
47109			return ret
47110		}
47111		#[cfg(not(feature = "diagnose"))]
47112		return ret;
47113	}
47114	#[inline(always)]
47115	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<()> {
47116		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)));
47117		#[cfg(feature = "diagnose")]
47118		if let Ok(ret) = ret {
47119			return to_result("glCopyImageSubData", ret, (self.version_4_3.geterror)());
47120		} else {
47121			return ret
47122		}
47123		#[cfg(not(feature = "diagnose"))]
47124		return ret;
47125	}
47126	#[inline(always)]
47127	fn glFramebufferParameteri(&self, target: GLenum, pname: GLenum, param: GLint) -> Result<()> {
47128		let ret = process_catch("glFramebufferParameteri", catch_unwind(||(self.version_4_3.framebufferparameteri)(target, pname, param)));
47129		#[cfg(feature = "diagnose")]
47130		if let Ok(ret) = ret {
47131			return to_result("glFramebufferParameteri", ret, (self.version_4_3.geterror)());
47132		} else {
47133			return ret
47134		}
47135		#[cfg(not(feature = "diagnose"))]
47136		return ret;
47137	}
47138	#[inline(always)]
47139	fn glGetFramebufferParameteriv(&self, target: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
47140		let ret = process_catch("glGetFramebufferParameteriv", catch_unwind(||(self.version_4_3.getframebufferparameteriv)(target, pname, params)));
47141		#[cfg(feature = "diagnose")]
47142		if let Ok(ret) = ret {
47143			return to_result("glGetFramebufferParameteriv", ret, (self.version_4_3.geterror)());
47144		} else {
47145			return ret
47146		}
47147		#[cfg(not(feature = "diagnose"))]
47148		return ret;
47149	}
47150	#[inline(always)]
47151	fn glGetInternalformati64v(&self, target: GLenum, internalformat: GLenum, pname: GLenum, count: GLsizei, params: *mut GLint64) -> Result<()> {
47152		let ret = process_catch("glGetInternalformati64v", catch_unwind(||(self.version_4_3.getinternalformati64v)(target, internalformat, pname, count, params)));
47153		#[cfg(feature = "diagnose")]
47154		if let Ok(ret) = ret {
47155			return to_result("glGetInternalformati64v", ret, (self.version_4_3.geterror)());
47156		} else {
47157			return ret
47158		}
47159		#[cfg(not(feature = "diagnose"))]
47160		return ret;
47161	}
47162	#[inline(always)]
47163	fn glInvalidateTexSubImage(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, width: GLsizei, height: GLsizei, depth: GLsizei) -> Result<()> {
47164		let ret = process_catch("glInvalidateTexSubImage", catch_unwind(||(self.version_4_3.invalidatetexsubimage)(texture, level, xoffset, yoffset, zoffset, width, height, depth)));
47165		#[cfg(feature = "diagnose")]
47166		if let Ok(ret) = ret {
47167			return to_result("glInvalidateTexSubImage", ret, (self.version_4_3.geterror)());
47168		} else {
47169			return ret
47170		}
47171		#[cfg(not(feature = "diagnose"))]
47172		return ret;
47173	}
47174	#[inline(always)]
47175	fn glInvalidateTexImage(&self, texture: GLuint, level: GLint) -> Result<()> {
47176		let ret = process_catch("glInvalidateTexImage", catch_unwind(||(self.version_4_3.invalidateteximage)(texture, level)));
47177		#[cfg(feature = "diagnose")]
47178		if let Ok(ret) = ret {
47179			return to_result("glInvalidateTexImage", ret, (self.version_4_3.geterror)());
47180		} else {
47181			return ret
47182		}
47183		#[cfg(not(feature = "diagnose"))]
47184		return ret;
47185	}
47186	#[inline(always)]
47187	fn glInvalidateBufferSubData(&self, buffer: GLuint, offset: GLintptr, length: GLsizeiptr) -> Result<()> {
47188		let ret = process_catch("glInvalidateBufferSubData", catch_unwind(||(self.version_4_3.invalidatebuffersubdata)(buffer, offset, length)));
47189		#[cfg(feature = "diagnose")]
47190		if let Ok(ret) = ret {
47191			return to_result("glInvalidateBufferSubData", ret, (self.version_4_3.geterror)());
47192		} else {
47193			return ret
47194		}
47195		#[cfg(not(feature = "diagnose"))]
47196		return ret;
47197	}
47198	#[inline(always)]
47199	fn glInvalidateBufferData(&self, buffer: GLuint) -> Result<()> {
47200		let ret = process_catch("glInvalidateBufferData", catch_unwind(||(self.version_4_3.invalidatebufferdata)(buffer)));
47201		#[cfg(feature = "diagnose")]
47202		if let Ok(ret) = ret {
47203			return to_result("glInvalidateBufferData", ret, (self.version_4_3.geterror)());
47204		} else {
47205			return ret
47206		}
47207		#[cfg(not(feature = "diagnose"))]
47208		return ret;
47209	}
47210	#[inline(always)]
47211	fn glInvalidateFramebuffer(&self, target: GLenum, numAttachments: GLsizei, attachments: *const GLenum) -> Result<()> {
47212		let ret = process_catch("glInvalidateFramebuffer", catch_unwind(||(self.version_4_3.invalidateframebuffer)(target, numAttachments, attachments)));
47213		#[cfg(feature = "diagnose")]
47214		if let Ok(ret) = ret {
47215			return to_result("glInvalidateFramebuffer", ret, (self.version_4_3.geterror)());
47216		} else {
47217			return ret
47218		}
47219		#[cfg(not(feature = "diagnose"))]
47220		return ret;
47221	}
47222	#[inline(always)]
47223	fn glInvalidateSubFramebuffer(&self, target: GLenum, numAttachments: GLsizei, attachments: *const GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
47224		let ret = process_catch("glInvalidateSubFramebuffer", catch_unwind(||(self.version_4_3.invalidatesubframebuffer)(target, numAttachments, attachments, x, y, width, height)));
47225		#[cfg(feature = "diagnose")]
47226		if let Ok(ret) = ret {
47227			return to_result("glInvalidateSubFramebuffer", ret, (self.version_4_3.geterror)());
47228		} else {
47229			return ret
47230		}
47231		#[cfg(not(feature = "diagnose"))]
47232		return ret;
47233	}
47234	#[inline(always)]
47235	fn glMultiDrawArraysIndirect(&self, mode: GLenum, indirect: *const c_void, drawcount: GLsizei, stride: GLsizei) -> Result<()> {
47236		let ret = process_catch("glMultiDrawArraysIndirect", catch_unwind(||(self.version_4_3.multidrawarraysindirect)(mode, indirect, drawcount, stride)));
47237		#[cfg(feature = "diagnose")]
47238		if let Ok(ret) = ret {
47239			return to_result("glMultiDrawArraysIndirect", ret, (self.version_4_3.geterror)());
47240		} else {
47241			return ret
47242		}
47243		#[cfg(not(feature = "diagnose"))]
47244		return ret;
47245	}
47246	#[inline(always)]
47247	fn glMultiDrawElementsIndirect(&self, mode: GLenum, type_: GLenum, indirect: *const c_void, drawcount: GLsizei, stride: GLsizei) -> Result<()> {
47248		let ret = process_catch("glMultiDrawElementsIndirect", catch_unwind(||(self.version_4_3.multidrawelementsindirect)(mode, type_, indirect, drawcount, stride)));
47249		#[cfg(feature = "diagnose")]
47250		if let Ok(ret) = ret {
47251			return to_result("glMultiDrawElementsIndirect", ret, (self.version_4_3.geterror)());
47252		} else {
47253			return ret
47254		}
47255		#[cfg(not(feature = "diagnose"))]
47256		return ret;
47257	}
47258	#[inline(always)]
47259	fn glGetProgramInterfaceiv(&self, program: GLuint, programInterface: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
47260		let ret = process_catch("glGetProgramInterfaceiv", catch_unwind(||(self.version_4_3.getprograminterfaceiv)(program, programInterface, pname, params)));
47261		#[cfg(feature = "diagnose")]
47262		if let Ok(ret) = ret {
47263			return to_result("glGetProgramInterfaceiv", ret, (self.version_4_3.geterror)());
47264		} else {
47265			return ret
47266		}
47267		#[cfg(not(feature = "diagnose"))]
47268		return ret;
47269	}
47270	#[inline(always)]
47271	fn glGetProgramResourceIndex(&self, program: GLuint, programInterface: GLenum, name: *const GLchar) -> Result<GLuint> {
47272		let ret = process_catch("glGetProgramResourceIndex", catch_unwind(||(self.version_4_3.getprogramresourceindex)(program, programInterface, name)));
47273		#[cfg(feature = "diagnose")]
47274		if let Ok(ret) = ret {
47275			return to_result("glGetProgramResourceIndex", ret, (self.version_4_3.geterror)());
47276		} else {
47277			return ret
47278		}
47279		#[cfg(not(feature = "diagnose"))]
47280		return ret;
47281	}
47282	#[inline(always)]
47283	fn glGetProgramResourceName(&self, program: GLuint, programInterface: GLenum, index: GLuint, bufSize: GLsizei, length: *mut GLsizei, name: *mut GLchar) -> Result<()> {
47284		let ret = process_catch("glGetProgramResourceName", catch_unwind(||(self.version_4_3.getprogramresourcename)(program, programInterface, index, bufSize, length, name)));
47285		#[cfg(feature = "diagnose")]
47286		if let Ok(ret) = ret {
47287			return to_result("glGetProgramResourceName", ret, (self.version_4_3.geterror)());
47288		} else {
47289			return ret
47290		}
47291		#[cfg(not(feature = "diagnose"))]
47292		return ret;
47293	}
47294	#[inline(always)]
47295	fn glGetProgramResourceiv(&self, program: GLuint, programInterface: GLenum, index: GLuint, propCount: GLsizei, props: *const GLenum, count: GLsizei, length: *mut GLsizei, params: *mut GLint) -> Result<()> {
47296		let ret = process_catch("glGetProgramResourceiv", catch_unwind(||(self.version_4_3.getprogramresourceiv)(program, programInterface, index, propCount, props, count, length, params)));
47297		#[cfg(feature = "diagnose")]
47298		if let Ok(ret) = ret {
47299			return to_result("glGetProgramResourceiv", ret, (self.version_4_3.geterror)());
47300		} else {
47301			return ret
47302		}
47303		#[cfg(not(feature = "diagnose"))]
47304		return ret;
47305	}
47306	#[inline(always)]
47307	fn glGetProgramResourceLocation(&self, program: GLuint, programInterface: GLenum, name: *const GLchar) -> Result<GLint> {
47308		let ret = process_catch("glGetProgramResourceLocation", catch_unwind(||(self.version_4_3.getprogramresourcelocation)(program, programInterface, name)));
47309		#[cfg(feature = "diagnose")]
47310		if let Ok(ret) = ret {
47311			return to_result("glGetProgramResourceLocation", ret, (self.version_4_3.geterror)());
47312		} else {
47313			return ret
47314		}
47315		#[cfg(not(feature = "diagnose"))]
47316		return ret;
47317	}
47318	#[inline(always)]
47319	fn glGetProgramResourceLocationIndex(&self, program: GLuint, programInterface: GLenum, name: *const GLchar) -> Result<GLint> {
47320		let ret = process_catch("glGetProgramResourceLocationIndex", catch_unwind(||(self.version_4_3.getprogramresourcelocationindex)(program, programInterface, name)));
47321		#[cfg(feature = "diagnose")]
47322		if let Ok(ret) = ret {
47323			return to_result("glGetProgramResourceLocationIndex", ret, (self.version_4_3.geterror)());
47324		} else {
47325			return ret
47326		}
47327		#[cfg(not(feature = "diagnose"))]
47328		return ret;
47329	}
47330	#[inline(always)]
47331	fn glShaderStorageBlockBinding(&self, program: GLuint, storageBlockIndex: GLuint, storageBlockBinding: GLuint) -> Result<()> {
47332		let ret = process_catch("glShaderStorageBlockBinding", catch_unwind(||(self.version_4_3.shaderstorageblockbinding)(program, storageBlockIndex, storageBlockBinding)));
47333		#[cfg(feature = "diagnose")]
47334		if let Ok(ret) = ret {
47335			return to_result("glShaderStorageBlockBinding", ret, (self.version_4_3.geterror)());
47336		} else {
47337			return ret
47338		}
47339		#[cfg(not(feature = "diagnose"))]
47340		return ret;
47341	}
47342	#[inline(always)]
47343	fn glTexBufferRange(&self, target: GLenum, internalformat: GLenum, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()> {
47344		let ret = process_catch("glTexBufferRange", catch_unwind(||(self.version_4_3.texbufferrange)(target, internalformat, buffer, offset, size)));
47345		#[cfg(feature = "diagnose")]
47346		if let Ok(ret) = ret {
47347			return to_result("glTexBufferRange", ret, (self.version_4_3.geterror)());
47348		} else {
47349			return ret
47350		}
47351		#[cfg(not(feature = "diagnose"))]
47352		return ret;
47353	}
47354	#[inline(always)]
47355	fn glTexStorage2DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, fixedsamplelocations: GLboolean) -> Result<()> {
47356		let ret = process_catch("glTexStorage2DMultisample", catch_unwind(||(self.version_4_3.texstorage2dmultisample)(target, samples, internalformat, width, height, fixedsamplelocations)));
47357		#[cfg(feature = "diagnose")]
47358		if let Ok(ret) = ret {
47359			return to_result("glTexStorage2DMultisample", ret, (self.version_4_3.geterror)());
47360		} else {
47361			return ret
47362		}
47363		#[cfg(not(feature = "diagnose"))]
47364		return ret;
47365	}
47366	#[inline(always)]
47367	fn glTexStorage3DMultisample(&self, target: GLenum, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, fixedsamplelocations: GLboolean) -> Result<()> {
47368		let ret = process_catch("glTexStorage3DMultisample", catch_unwind(||(self.version_4_3.texstorage3dmultisample)(target, samples, internalformat, width, height, depth, fixedsamplelocations)));
47369		#[cfg(feature = "diagnose")]
47370		if let Ok(ret) = ret {
47371			return to_result("glTexStorage3DMultisample", ret, (self.version_4_3.geterror)());
47372		} else {
47373			return ret
47374		}
47375		#[cfg(not(feature = "diagnose"))]
47376		return ret;
47377	}
47378	#[inline(always)]
47379	fn glTextureView(&self, texture: GLuint, target: GLenum, origtexture: GLuint, internalformat: GLenum, minlevel: GLuint, numlevels: GLuint, minlayer: GLuint, numlayers: GLuint) -> Result<()> {
47380		let ret = process_catch("glTextureView", catch_unwind(||(self.version_4_3.textureview)(texture, target, origtexture, internalformat, minlevel, numlevels, minlayer, numlayers)));
47381		#[cfg(feature = "diagnose")]
47382		if let Ok(ret) = ret {
47383			return to_result("glTextureView", ret, (self.version_4_3.geterror)());
47384		} else {
47385			return ret
47386		}
47387		#[cfg(not(feature = "diagnose"))]
47388		return ret;
47389	}
47390	#[inline(always)]
47391	fn glBindVertexBuffer(&self, bindingindex: GLuint, buffer: GLuint, offset: GLintptr, stride: GLsizei) -> Result<()> {
47392		let ret = process_catch("glBindVertexBuffer", catch_unwind(||(self.version_4_3.bindvertexbuffer)(bindingindex, buffer, offset, stride)));
47393		#[cfg(feature = "diagnose")]
47394		if let Ok(ret) = ret {
47395			return to_result("glBindVertexBuffer", ret, (self.version_4_3.geterror)());
47396		} else {
47397			return ret
47398		}
47399		#[cfg(not(feature = "diagnose"))]
47400		return ret;
47401	}
47402	#[inline(always)]
47403	fn glVertexAttribFormat(&self, attribindex: GLuint, size: GLint, type_: GLenum, normalized: GLboolean, relativeoffset: GLuint) -> Result<()> {
47404		let ret = process_catch("glVertexAttribFormat", catch_unwind(||(self.version_4_3.vertexattribformat)(attribindex, size, type_, normalized, relativeoffset)));
47405		#[cfg(feature = "diagnose")]
47406		if let Ok(ret) = ret {
47407			return to_result("glVertexAttribFormat", ret, (self.version_4_3.geterror)());
47408		} else {
47409			return ret
47410		}
47411		#[cfg(not(feature = "diagnose"))]
47412		return ret;
47413	}
47414	#[inline(always)]
47415	fn glVertexAttribIFormat(&self, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()> {
47416		let ret = process_catch("glVertexAttribIFormat", catch_unwind(||(self.version_4_3.vertexattribiformat)(attribindex, size, type_, relativeoffset)));
47417		#[cfg(feature = "diagnose")]
47418		if let Ok(ret) = ret {
47419			return to_result("glVertexAttribIFormat", ret, (self.version_4_3.geterror)());
47420		} else {
47421			return ret
47422		}
47423		#[cfg(not(feature = "diagnose"))]
47424		return ret;
47425	}
47426	#[inline(always)]
47427	fn glVertexAttribLFormat(&self, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()> {
47428		let ret = process_catch("glVertexAttribLFormat", catch_unwind(||(self.version_4_3.vertexattriblformat)(attribindex, size, type_, relativeoffset)));
47429		#[cfg(feature = "diagnose")]
47430		if let Ok(ret) = ret {
47431			return to_result("glVertexAttribLFormat", ret, (self.version_4_3.geterror)());
47432		} else {
47433			return ret
47434		}
47435		#[cfg(not(feature = "diagnose"))]
47436		return ret;
47437	}
47438	#[inline(always)]
47439	fn glVertexAttribBinding(&self, attribindex: GLuint, bindingindex: GLuint) -> Result<()> {
47440		let ret = process_catch("glVertexAttribBinding", catch_unwind(||(self.version_4_3.vertexattribbinding)(attribindex, bindingindex)));
47441		#[cfg(feature = "diagnose")]
47442		if let Ok(ret) = ret {
47443			return to_result("glVertexAttribBinding", ret, (self.version_4_3.geterror)());
47444		} else {
47445			return ret
47446		}
47447		#[cfg(not(feature = "diagnose"))]
47448		return ret;
47449	}
47450	#[inline(always)]
47451	fn glVertexBindingDivisor(&self, bindingindex: GLuint, divisor: GLuint) -> Result<()> {
47452		let ret = process_catch("glVertexBindingDivisor", catch_unwind(||(self.version_4_3.vertexbindingdivisor)(bindingindex, divisor)));
47453		#[cfg(feature = "diagnose")]
47454		if let Ok(ret) = ret {
47455			return to_result("glVertexBindingDivisor", ret, (self.version_4_3.geterror)());
47456		} else {
47457			return ret
47458		}
47459		#[cfg(not(feature = "diagnose"))]
47460		return ret;
47461	}
47462	#[inline(always)]
47463	fn glDebugMessageControl(&self, source: GLenum, type_: GLenum, severity: GLenum, count: GLsizei, ids: *const GLuint, enabled: GLboolean) -> Result<()> {
47464		let ret = process_catch("glDebugMessageControl", catch_unwind(||(self.version_4_3.debugmessagecontrol)(source, type_, severity, count, ids, enabled)));
47465		#[cfg(feature = "diagnose")]
47466		if let Ok(ret) = ret {
47467			return to_result("glDebugMessageControl", ret, (self.version_4_3.geterror)());
47468		} else {
47469			return ret
47470		}
47471		#[cfg(not(feature = "diagnose"))]
47472		return ret;
47473	}
47474	#[inline(always)]
47475	fn glDebugMessageInsert(&self, source: GLenum, type_: GLenum, id: GLuint, severity: GLenum, length: GLsizei, buf: *const GLchar) -> Result<()> {
47476		let ret = process_catch("glDebugMessageInsert", catch_unwind(||(self.version_4_3.debugmessageinsert)(source, type_, id, severity, length, buf)));
47477		#[cfg(feature = "diagnose")]
47478		if let Ok(ret) = ret {
47479			return to_result("glDebugMessageInsert", ret, (self.version_4_3.geterror)());
47480		} else {
47481			return ret
47482		}
47483		#[cfg(not(feature = "diagnose"))]
47484		return ret;
47485	}
47486	#[inline(always)]
47487	fn glDebugMessageCallback(&self, callback: GLDEBUGPROC, userParam: *const c_void) -> Result<()> {
47488		let ret = process_catch("glDebugMessageCallback", catch_unwind(||(self.version_4_3.debugmessagecallback)(callback, userParam)));
47489		#[cfg(feature = "diagnose")]
47490		if let Ok(ret) = ret {
47491			return to_result("glDebugMessageCallback", ret, (self.version_4_3.geterror)());
47492		} else {
47493			return ret
47494		}
47495		#[cfg(not(feature = "diagnose"))]
47496		return ret;
47497	}
47498	#[inline(always)]
47499	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> {
47500		let ret = process_catch("glGetDebugMessageLog", catch_unwind(||(self.version_4_3.getdebugmessagelog)(count, bufSize, sources, types, ids, severities, lengths, messageLog)));
47501		#[cfg(feature = "diagnose")]
47502		if let Ok(ret) = ret {
47503			return to_result("glGetDebugMessageLog", ret, (self.version_4_3.geterror)());
47504		} else {
47505			return ret
47506		}
47507		#[cfg(not(feature = "diagnose"))]
47508		return ret;
47509	}
47510	#[inline(always)]
47511	fn glPushDebugGroup(&self, source: GLenum, id: GLuint, length: GLsizei, message: *const GLchar) -> Result<()> {
47512		let ret = process_catch("glPushDebugGroup", catch_unwind(||(self.version_4_3.pushdebuggroup)(source, id, length, message)));
47513		#[cfg(feature = "diagnose")]
47514		if let Ok(ret) = ret {
47515			return to_result("glPushDebugGroup", ret, (self.version_4_3.geterror)());
47516		} else {
47517			return ret
47518		}
47519		#[cfg(not(feature = "diagnose"))]
47520		return ret;
47521	}
47522	#[inline(always)]
47523	fn glPopDebugGroup(&self) -> Result<()> {
47524		let ret = process_catch("glPopDebugGroup", catch_unwind(||(self.version_4_3.popdebuggroup)()));
47525		#[cfg(feature = "diagnose")]
47526		if let Ok(ret) = ret {
47527			return to_result("glPopDebugGroup", ret, (self.version_4_3.geterror)());
47528		} else {
47529			return ret
47530		}
47531		#[cfg(not(feature = "diagnose"))]
47532		return ret;
47533	}
47534	#[inline(always)]
47535	fn glObjectLabel(&self, identifier: GLenum, name: GLuint, length: GLsizei, label: *const GLchar) -> Result<()> {
47536		let ret = process_catch("glObjectLabel", catch_unwind(||(self.version_4_3.objectlabel)(identifier, name, length, label)));
47537		#[cfg(feature = "diagnose")]
47538		if let Ok(ret) = ret {
47539			return to_result("glObjectLabel", ret, (self.version_4_3.geterror)());
47540		} else {
47541			return ret
47542		}
47543		#[cfg(not(feature = "diagnose"))]
47544		return ret;
47545	}
47546	#[inline(always)]
47547	fn glGetObjectLabel(&self, identifier: GLenum, name: GLuint, bufSize: GLsizei, length: *mut GLsizei, label: *mut GLchar) -> Result<()> {
47548		let ret = process_catch("glGetObjectLabel", catch_unwind(||(self.version_4_3.getobjectlabel)(identifier, name, bufSize, length, label)));
47549		#[cfg(feature = "diagnose")]
47550		if let Ok(ret) = ret {
47551			return to_result("glGetObjectLabel", ret, (self.version_4_3.geterror)());
47552		} else {
47553			return ret
47554		}
47555		#[cfg(not(feature = "diagnose"))]
47556		return ret;
47557	}
47558	#[inline(always)]
47559	fn glObjectPtrLabel(&self, ptr: *const c_void, length: GLsizei, label: *const GLchar) -> Result<()> {
47560		let ret = process_catch("glObjectPtrLabel", catch_unwind(||(self.version_4_3.objectptrlabel)(ptr, length, label)));
47561		#[cfg(feature = "diagnose")]
47562		if let Ok(ret) = ret {
47563			return to_result("glObjectPtrLabel", ret, (self.version_4_3.geterror)());
47564		} else {
47565			return ret
47566		}
47567		#[cfg(not(feature = "diagnose"))]
47568		return ret;
47569	}
47570	#[inline(always)]
47571	fn glGetObjectPtrLabel(&self, ptr: *const c_void, bufSize: GLsizei, length: *mut GLsizei, label: *mut GLchar) -> Result<()> {
47572		let ret = process_catch("glGetObjectPtrLabel", catch_unwind(||(self.version_4_3.getobjectptrlabel)(ptr, bufSize, length, label)));
47573		#[cfg(feature = "diagnose")]
47574		if let Ok(ret) = ret {
47575			return to_result("glGetObjectPtrLabel", ret, (self.version_4_3.geterror)());
47576		} else {
47577			return ret
47578		}
47579		#[cfg(not(feature = "diagnose"))]
47580		return ret;
47581	}
47582}
47583
47584impl GL_4_4_g for GLCore {
47585	#[inline(always)]
47586	fn glBufferStorage(&self, target: GLenum, size: GLsizeiptr, data: *const c_void, flags: GLbitfield) -> Result<()> {
47587		let ret = process_catch("glBufferStorage", catch_unwind(||(self.version_4_4.bufferstorage)(target, size, data, flags)));
47588		#[cfg(feature = "diagnose")]
47589		if let Ok(ret) = ret {
47590			return to_result("glBufferStorage", ret, (self.version_4_4.geterror)());
47591		} else {
47592			return ret
47593		}
47594		#[cfg(not(feature = "diagnose"))]
47595		return ret;
47596	}
47597	#[inline(always)]
47598	fn glClearTexImage(&self, texture: GLuint, level: GLint, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()> {
47599		let ret = process_catch("glClearTexImage", catch_unwind(||(self.version_4_4.clearteximage)(texture, level, format, type_, data)));
47600		#[cfg(feature = "diagnose")]
47601		if let Ok(ret) = ret {
47602			return to_result("glClearTexImage", ret, (self.version_4_4.geterror)());
47603		} else {
47604			return ret
47605		}
47606		#[cfg(not(feature = "diagnose"))]
47607		return ret;
47608	}
47609	#[inline(always)]
47610	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<()> {
47611		let ret = process_catch("glClearTexSubImage", catch_unwind(||(self.version_4_4.cleartexsubimage)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, data)));
47612		#[cfg(feature = "diagnose")]
47613		if let Ok(ret) = ret {
47614			return to_result("glClearTexSubImage", ret, (self.version_4_4.geterror)());
47615		} else {
47616			return ret
47617		}
47618		#[cfg(not(feature = "diagnose"))]
47619		return ret;
47620	}
47621	#[inline(always)]
47622	fn glBindBuffersBase(&self, target: GLenum, first: GLuint, count: GLsizei, buffers: *const GLuint) -> Result<()> {
47623		let ret = process_catch("glBindBuffersBase", catch_unwind(||(self.version_4_4.bindbuffersbase)(target, first, count, buffers)));
47624		#[cfg(feature = "diagnose")]
47625		if let Ok(ret) = ret {
47626			return to_result("glBindBuffersBase", ret, (self.version_4_4.geterror)());
47627		} else {
47628			return ret
47629		}
47630		#[cfg(not(feature = "diagnose"))]
47631		return ret;
47632	}
47633	#[inline(always)]
47634	fn glBindBuffersRange(&self, target: GLenum, first: GLuint, count: GLsizei, buffers: *const GLuint, offsets: *const GLintptr, sizes: *const GLsizeiptr) -> Result<()> {
47635		let ret = process_catch("glBindBuffersRange", catch_unwind(||(self.version_4_4.bindbuffersrange)(target, first, count, buffers, offsets, sizes)));
47636		#[cfg(feature = "diagnose")]
47637		if let Ok(ret) = ret {
47638			return to_result("glBindBuffersRange", ret, (self.version_4_4.geterror)());
47639		} else {
47640			return ret
47641		}
47642		#[cfg(not(feature = "diagnose"))]
47643		return ret;
47644	}
47645	#[inline(always)]
47646	fn glBindTextures(&self, first: GLuint, count: GLsizei, textures: *const GLuint) -> Result<()> {
47647		let ret = process_catch("glBindTextures", catch_unwind(||(self.version_4_4.bindtextures)(first, count, textures)));
47648		#[cfg(feature = "diagnose")]
47649		if let Ok(ret) = ret {
47650			return to_result("glBindTextures", ret, (self.version_4_4.geterror)());
47651		} else {
47652			return ret
47653		}
47654		#[cfg(not(feature = "diagnose"))]
47655		return ret;
47656	}
47657	#[inline(always)]
47658	fn glBindSamplers(&self, first: GLuint, count: GLsizei, samplers: *const GLuint) -> Result<()> {
47659		let ret = process_catch("glBindSamplers", catch_unwind(||(self.version_4_4.bindsamplers)(first, count, samplers)));
47660		#[cfg(feature = "diagnose")]
47661		if let Ok(ret) = ret {
47662			return to_result("glBindSamplers", ret, (self.version_4_4.geterror)());
47663		} else {
47664			return ret
47665		}
47666		#[cfg(not(feature = "diagnose"))]
47667		return ret;
47668	}
47669	#[inline(always)]
47670	fn glBindImageTextures(&self, first: GLuint, count: GLsizei, textures: *const GLuint) -> Result<()> {
47671		let ret = process_catch("glBindImageTextures", catch_unwind(||(self.version_4_4.bindimagetextures)(first, count, textures)));
47672		#[cfg(feature = "diagnose")]
47673		if let Ok(ret) = ret {
47674			return to_result("glBindImageTextures", ret, (self.version_4_4.geterror)());
47675		} else {
47676			return ret
47677		}
47678		#[cfg(not(feature = "diagnose"))]
47679		return ret;
47680	}
47681	#[inline(always)]
47682	fn glBindVertexBuffers(&self, first: GLuint, count: GLsizei, buffers: *const GLuint, offsets: *const GLintptr, strides: *const GLsizei) -> Result<()> {
47683		let ret = process_catch("glBindVertexBuffers", catch_unwind(||(self.version_4_4.bindvertexbuffers)(first, count, buffers, offsets, strides)));
47684		#[cfg(feature = "diagnose")]
47685		if let Ok(ret) = ret {
47686			return to_result("glBindVertexBuffers", ret, (self.version_4_4.geterror)());
47687		} else {
47688			return ret
47689		}
47690		#[cfg(not(feature = "diagnose"))]
47691		return ret;
47692	}
47693}
47694
47695impl GL_4_5_g for GLCore {
47696	#[inline(always)]
47697	fn glClipControl(&self, origin: GLenum, depth: GLenum) -> Result<()> {
47698		let ret = process_catch("glClipControl", catch_unwind(||(self.version_4_5.clipcontrol)(origin, depth)));
47699		#[cfg(feature = "diagnose")]
47700		if let Ok(ret) = ret {
47701			return to_result("glClipControl", ret, (self.version_4_5.geterror)());
47702		} else {
47703			return ret
47704		}
47705		#[cfg(not(feature = "diagnose"))]
47706		return ret;
47707	}
47708	#[inline(always)]
47709	fn glCreateTransformFeedbacks(&self, n: GLsizei, ids: *mut GLuint) -> Result<()> {
47710		let ret = process_catch("glCreateTransformFeedbacks", catch_unwind(||(self.version_4_5.createtransformfeedbacks)(n, ids)));
47711		#[cfg(feature = "diagnose")]
47712		if let Ok(ret) = ret {
47713			return to_result("glCreateTransformFeedbacks", ret, (self.version_4_5.geterror)());
47714		} else {
47715			return ret
47716		}
47717		#[cfg(not(feature = "diagnose"))]
47718		return ret;
47719	}
47720	#[inline(always)]
47721	fn glTransformFeedbackBufferBase(&self, xfb: GLuint, index: GLuint, buffer: GLuint) -> Result<()> {
47722		let ret = process_catch("glTransformFeedbackBufferBase", catch_unwind(||(self.version_4_5.transformfeedbackbufferbase)(xfb, index, buffer)));
47723		#[cfg(feature = "diagnose")]
47724		if let Ok(ret) = ret {
47725			return to_result("glTransformFeedbackBufferBase", ret, (self.version_4_5.geterror)());
47726		} else {
47727			return ret
47728		}
47729		#[cfg(not(feature = "diagnose"))]
47730		return ret;
47731	}
47732	#[inline(always)]
47733	fn glTransformFeedbackBufferRange(&self, xfb: GLuint, index: GLuint, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()> {
47734		let ret = process_catch("glTransformFeedbackBufferRange", catch_unwind(||(self.version_4_5.transformfeedbackbufferrange)(xfb, index, buffer, offset, size)));
47735		#[cfg(feature = "diagnose")]
47736		if let Ok(ret) = ret {
47737			return to_result("glTransformFeedbackBufferRange", ret, (self.version_4_5.geterror)());
47738		} else {
47739			return ret
47740		}
47741		#[cfg(not(feature = "diagnose"))]
47742		return ret;
47743	}
47744	#[inline(always)]
47745	fn glGetTransformFeedbackiv(&self, xfb: GLuint, pname: GLenum, param: *mut GLint) -> Result<()> {
47746		let ret = process_catch("glGetTransformFeedbackiv", catch_unwind(||(self.version_4_5.gettransformfeedbackiv)(xfb, pname, param)));
47747		#[cfg(feature = "diagnose")]
47748		if let Ok(ret) = ret {
47749			return to_result("glGetTransformFeedbackiv", ret, (self.version_4_5.geterror)());
47750		} else {
47751			return ret
47752		}
47753		#[cfg(not(feature = "diagnose"))]
47754		return ret;
47755	}
47756	#[inline(always)]
47757	fn glGetTransformFeedbacki_v(&self, xfb: GLuint, pname: GLenum, index: GLuint, param: *mut GLint) -> Result<()> {
47758		let ret = process_catch("glGetTransformFeedbacki_v", catch_unwind(||(self.version_4_5.gettransformfeedbacki_v)(xfb, pname, index, param)));
47759		#[cfg(feature = "diagnose")]
47760		if let Ok(ret) = ret {
47761			return to_result("glGetTransformFeedbacki_v", ret, (self.version_4_5.geterror)());
47762		} else {
47763			return ret
47764		}
47765		#[cfg(not(feature = "diagnose"))]
47766		return ret;
47767	}
47768	#[inline(always)]
47769	fn glGetTransformFeedbacki64_v(&self, xfb: GLuint, pname: GLenum, index: GLuint, param: *mut GLint64) -> Result<()> {
47770		let ret = process_catch("glGetTransformFeedbacki64_v", catch_unwind(||(self.version_4_5.gettransformfeedbacki64_v)(xfb, pname, index, param)));
47771		#[cfg(feature = "diagnose")]
47772		if let Ok(ret) = ret {
47773			return to_result("glGetTransformFeedbacki64_v", ret, (self.version_4_5.geterror)());
47774		} else {
47775			return ret
47776		}
47777		#[cfg(not(feature = "diagnose"))]
47778		return ret;
47779	}
47780	#[inline(always)]
47781	fn glCreateBuffers(&self, n: GLsizei, buffers: *mut GLuint) -> Result<()> {
47782		let ret = process_catch("glCreateBuffers", catch_unwind(||(self.version_4_5.createbuffers)(n, buffers)));
47783		#[cfg(feature = "diagnose")]
47784		if let Ok(ret) = ret {
47785			return to_result("glCreateBuffers", ret, (self.version_4_5.geterror)());
47786		} else {
47787			return ret
47788		}
47789		#[cfg(not(feature = "diagnose"))]
47790		return ret;
47791	}
47792	#[inline(always)]
47793	fn glNamedBufferStorage(&self, buffer: GLuint, size: GLsizeiptr, data: *const c_void, flags: GLbitfield) -> Result<()> {
47794		let ret = process_catch("glNamedBufferStorage", catch_unwind(||(self.version_4_5.namedbufferstorage)(buffer, size, data, flags)));
47795		#[cfg(feature = "diagnose")]
47796		if let Ok(ret) = ret {
47797			return to_result("glNamedBufferStorage", ret, (self.version_4_5.geterror)());
47798		} else {
47799			return ret
47800		}
47801		#[cfg(not(feature = "diagnose"))]
47802		return ret;
47803	}
47804	#[inline(always)]
47805	fn glNamedBufferData(&self, buffer: GLuint, size: GLsizeiptr, data: *const c_void, usage: GLenum) -> Result<()> {
47806		let ret = process_catch("glNamedBufferData", catch_unwind(||(self.version_4_5.namedbufferdata)(buffer, size, data, usage)));
47807		#[cfg(feature = "diagnose")]
47808		if let Ok(ret) = ret {
47809			return to_result("glNamedBufferData", ret, (self.version_4_5.geterror)());
47810		} else {
47811			return ret
47812		}
47813		#[cfg(not(feature = "diagnose"))]
47814		return ret;
47815	}
47816	#[inline(always)]
47817	fn glNamedBufferSubData(&self, buffer: GLuint, offset: GLintptr, size: GLsizeiptr, data: *const c_void) -> Result<()> {
47818		let ret = process_catch("glNamedBufferSubData", catch_unwind(||(self.version_4_5.namedbuffersubdata)(buffer, offset, size, data)));
47819		#[cfg(feature = "diagnose")]
47820		if let Ok(ret) = ret {
47821			return to_result("glNamedBufferSubData", ret, (self.version_4_5.geterror)());
47822		} else {
47823			return ret
47824		}
47825		#[cfg(not(feature = "diagnose"))]
47826		return ret;
47827	}
47828	#[inline(always)]
47829	fn glCopyNamedBufferSubData(&self, readBuffer: GLuint, writeBuffer: GLuint, readOffset: GLintptr, writeOffset: GLintptr, size: GLsizeiptr) -> Result<()> {
47830		let ret = process_catch("glCopyNamedBufferSubData", catch_unwind(||(self.version_4_5.copynamedbuffersubdata)(readBuffer, writeBuffer, readOffset, writeOffset, size)));
47831		#[cfg(feature = "diagnose")]
47832		if let Ok(ret) = ret {
47833			return to_result("glCopyNamedBufferSubData", ret, (self.version_4_5.geterror)());
47834		} else {
47835			return ret
47836		}
47837		#[cfg(not(feature = "diagnose"))]
47838		return ret;
47839	}
47840	#[inline(always)]
47841	fn glClearNamedBufferData(&self, buffer: GLuint, internalformat: GLenum, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()> {
47842		let ret = process_catch("glClearNamedBufferData", catch_unwind(||(self.version_4_5.clearnamedbufferdata)(buffer, internalformat, format, type_, data)));
47843		#[cfg(feature = "diagnose")]
47844		if let Ok(ret) = ret {
47845			return to_result("glClearNamedBufferData", ret, (self.version_4_5.geterror)());
47846		} else {
47847			return ret
47848		}
47849		#[cfg(not(feature = "diagnose"))]
47850		return ret;
47851	}
47852	#[inline(always)]
47853	fn glClearNamedBufferSubData(&self, buffer: GLuint, internalformat: GLenum, offset: GLintptr, size: GLsizeiptr, format: GLenum, type_: GLenum, data: *const c_void) -> Result<()> {
47854		let ret = process_catch("glClearNamedBufferSubData", catch_unwind(||(self.version_4_5.clearnamedbuffersubdata)(buffer, internalformat, offset, size, format, type_, data)));
47855		#[cfg(feature = "diagnose")]
47856		if let Ok(ret) = ret {
47857			return to_result("glClearNamedBufferSubData", ret, (self.version_4_5.geterror)());
47858		} else {
47859			return ret
47860		}
47861		#[cfg(not(feature = "diagnose"))]
47862		return ret;
47863	}
47864	#[inline(always)]
47865	fn glMapNamedBuffer(&self, buffer: GLuint, access: GLenum) -> Result<*mut c_void> {
47866		let ret = process_catch("glMapNamedBuffer", catch_unwind(||(self.version_4_5.mapnamedbuffer)(buffer, access)));
47867		#[cfg(feature = "diagnose")]
47868		if let Ok(ret) = ret {
47869			return to_result("glMapNamedBuffer", ret, (self.version_4_5.geterror)());
47870		} else {
47871			return ret
47872		}
47873		#[cfg(not(feature = "diagnose"))]
47874		return ret;
47875	}
47876	#[inline(always)]
47877	fn glMapNamedBufferRange(&self, buffer: GLuint, offset: GLintptr, length: GLsizeiptr, access: GLbitfield) -> Result<*mut c_void> {
47878		let ret = process_catch("glMapNamedBufferRange", catch_unwind(||(self.version_4_5.mapnamedbufferrange)(buffer, offset, length, access)));
47879		#[cfg(feature = "diagnose")]
47880		if let Ok(ret) = ret {
47881			return to_result("glMapNamedBufferRange", ret, (self.version_4_5.geterror)());
47882		} else {
47883			return ret
47884		}
47885		#[cfg(not(feature = "diagnose"))]
47886		return ret;
47887	}
47888	#[inline(always)]
47889	fn glUnmapNamedBuffer(&self, buffer: GLuint) -> Result<GLboolean> {
47890		let ret = process_catch("glUnmapNamedBuffer", catch_unwind(||(self.version_4_5.unmapnamedbuffer)(buffer)));
47891		#[cfg(feature = "diagnose")]
47892		if let Ok(ret) = ret {
47893			return to_result("glUnmapNamedBuffer", ret, (self.version_4_5.geterror)());
47894		} else {
47895			return ret
47896		}
47897		#[cfg(not(feature = "diagnose"))]
47898		return ret;
47899	}
47900	#[inline(always)]
47901	fn glFlushMappedNamedBufferRange(&self, buffer: GLuint, offset: GLintptr, length: GLsizeiptr) -> Result<()> {
47902		let ret = process_catch("glFlushMappedNamedBufferRange", catch_unwind(||(self.version_4_5.flushmappednamedbufferrange)(buffer, offset, length)));
47903		#[cfg(feature = "diagnose")]
47904		if let Ok(ret) = ret {
47905			return to_result("glFlushMappedNamedBufferRange", ret, (self.version_4_5.geterror)());
47906		} else {
47907			return ret
47908		}
47909		#[cfg(not(feature = "diagnose"))]
47910		return ret;
47911	}
47912	#[inline(always)]
47913	fn glGetNamedBufferParameteriv(&self, buffer: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
47914		let ret = process_catch("glGetNamedBufferParameteriv", catch_unwind(||(self.version_4_5.getnamedbufferparameteriv)(buffer, pname, params)));
47915		#[cfg(feature = "diagnose")]
47916		if let Ok(ret) = ret {
47917			return to_result("glGetNamedBufferParameteriv", ret, (self.version_4_5.geterror)());
47918		} else {
47919			return ret
47920		}
47921		#[cfg(not(feature = "diagnose"))]
47922		return ret;
47923	}
47924	#[inline(always)]
47925	fn glGetNamedBufferParameteri64v(&self, buffer: GLuint, pname: GLenum, params: *mut GLint64) -> Result<()> {
47926		let ret = process_catch("glGetNamedBufferParameteri64v", catch_unwind(||(self.version_4_5.getnamedbufferparameteri64v)(buffer, pname, params)));
47927		#[cfg(feature = "diagnose")]
47928		if let Ok(ret) = ret {
47929			return to_result("glGetNamedBufferParameteri64v", ret, (self.version_4_5.geterror)());
47930		} else {
47931			return ret
47932		}
47933		#[cfg(not(feature = "diagnose"))]
47934		return ret;
47935	}
47936	#[inline(always)]
47937	fn glGetNamedBufferPointerv(&self, buffer: GLuint, pname: GLenum, params: *mut *mut c_void) -> Result<()> {
47938		let ret = process_catch("glGetNamedBufferPointerv", catch_unwind(||(self.version_4_5.getnamedbufferpointerv)(buffer, pname, params)));
47939		#[cfg(feature = "diagnose")]
47940		if let Ok(ret) = ret {
47941			return to_result("glGetNamedBufferPointerv", ret, (self.version_4_5.geterror)());
47942		} else {
47943			return ret
47944		}
47945		#[cfg(not(feature = "diagnose"))]
47946		return ret;
47947	}
47948	#[inline(always)]
47949	fn glGetNamedBufferSubData(&self, buffer: GLuint, offset: GLintptr, size: GLsizeiptr, data: *mut c_void) -> Result<()> {
47950		let ret = process_catch("glGetNamedBufferSubData", catch_unwind(||(self.version_4_5.getnamedbuffersubdata)(buffer, offset, size, data)));
47951		#[cfg(feature = "diagnose")]
47952		if let Ok(ret) = ret {
47953			return to_result("glGetNamedBufferSubData", ret, (self.version_4_5.geterror)());
47954		} else {
47955			return ret
47956		}
47957		#[cfg(not(feature = "diagnose"))]
47958		return ret;
47959	}
47960	#[inline(always)]
47961	fn glCreateFramebuffers(&self, n: GLsizei, framebuffers: *mut GLuint) -> Result<()> {
47962		let ret = process_catch("glCreateFramebuffers", catch_unwind(||(self.version_4_5.createframebuffers)(n, framebuffers)));
47963		#[cfg(feature = "diagnose")]
47964		if let Ok(ret) = ret {
47965			return to_result("glCreateFramebuffers", ret, (self.version_4_5.geterror)());
47966		} else {
47967			return ret
47968		}
47969		#[cfg(not(feature = "diagnose"))]
47970		return ret;
47971	}
47972	#[inline(always)]
47973	fn glNamedFramebufferRenderbuffer(&self, framebuffer: GLuint, attachment: GLenum, renderbuffertarget: GLenum, renderbuffer: GLuint) -> Result<()> {
47974		let ret = process_catch("glNamedFramebufferRenderbuffer", catch_unwind(||(self.version_4_5.namedframebufferrenderbuffer)(framebuffer, attachment, renderbuffertarget, renderbuffer)));
47975		#[cfg(feature = "diagnose")]
47976		if let Ok(ret) = ret {
47977			return to_result("glNamedFramebufferRenderbuffer", ret, (self.version_4_5.geterror)());
47978		} else {
47979			return ret
47980		}
47981		#[cfg(not(feature = "diagnose"))]
47982		return ret;
47983	}
47984	#[inline(always)]
47985	fn glNamedFramebufferParameteri(&self, framebuffer: GLuint, pname: GLenum, param: GLint) -> Result<()> {
47986		let ret = process_catch("glNamedFramebufferParameteri", catch_unwind(||(self.version_4_5.namedframebufferparameteri)(framebuffer, pname, param)));
47987		#[cfg(feature = "diagnose")]
47988		if let Ok(ret) = ret {
47989			return to_result("glNamedFramebufferParameteri", ret, (self.version_4_5.geterror)());
47990		} else {
47991			return ret
47992		}
47993		#[cfg(not(feature = "diagnose"))]
47994		return ret;
47995	}
47996	#[inline(always)]
47997	fn glNamedFramebufferTexture(&self, framebuffer: GLuint, attachment: GLenum, texture: GLuint, level: GLint) -> Result<()> {
47998		let ret = process_catch("glNamedFramebufferTexture", catch_unwind(||(self.version_4_5.namedframebuffertexture)(framebuffer, attachment, texture, level)));
47999		#[cfg(feature = "diagnose")]
48000		if let Ok(ret) = ret {
48001			return to_result("glNamedFramebufferTexture", ret, (self.version_4_5.geterror)());
48002		} else {
48003			return ret
48004		}
48005		#[cfg(not(feature = "diagnose"))]
48006		return ret;
48007	}
48008	#[inline(always)]
48009	fn glNamedFramebufferTextureLayer(&self, framebuffer: GLuint, attachment: GLenum, texture: GLuint, level: GLint, layer: GLint) -> Result<()> {
48010		let ret = process_catch("glNamedFramebufferTextureLayer", catch_unwind(||(self.version_4_5.namedframebuffertexturelayer)(framebuffer, attachment, texture, level, layer)));
48011		#[cfg(feature = "diagnose")]
48012		if let Ok(ret) = ret {
48013			return to_result("glNamedFramebufferTextureLayer", ret, (self.version_4_5.geterror)());
48014		} else {
48015			return ret
48016		}
48017		#[cfg(not(feature = "diagnose"))]
48018		return ret;
48019	}
48020	#[inline(always)]
48021	fn glNamedFramebufferDrawBuffer(&self, framebuffer: GLuint, buf: GLenum) -> Result<()> {
48022		let ret = process_catch("glNamedFramebufferDrawBuffer", catch_unwind(||(self.version_4_5.namedframebufferdrawbuffer)(framebuffer, buf)));
48023		#[cfg(feature = "diagnose")]
48024		if let Ok(ret) = ret {
48025			return to_result("glNamedFramebufferDrawBuffer", ret, (self.version_4_5.geterror)());
48026		} else {
48027			return ret
48028		}
48029		#[cfg(not(feature = "diagnose"))]
48030		return ret;
48031	}
48032	#[inline(always)]
48033	fn glNamedFramebufferDrawBuffers(&self, framebuffer: GLuint, n: GLsizei, bufs: *const GLenum) -> Result<()> {
48034		let ret = process_catch("glNamedFramebufferDrawBuffers", catch_unwind(||(self.version_4_5.namedframebufferdrawbuffers)(framebuffer, n, bufs)));
48035		#[cfg(feature = "diagnose")]
48036		if let Ok(ret) = ret {
48037			return to_result("glNamedFramebufferDrawBuffers", ret, (self.version_4_5.geterror)());
48038		} else {
48039			return ret
48040		}
48041		#[cfg(not(feature = "diagnose"))]
48042		return ret;
48043	}
48044	#[inline(always)]
48045	fn glNamedFramebufferReadBuffer(&self, framebuffer: GLuint, src: GLenum) -> Result<()> {
48046		let ret = process_catch("glNamedFramebufferReadBuffer", catch_unwind(||(self.version_4_5.namedframebufferreadbuffer)(framebuffer, src)));
48047		#[cfg(feature = "diagnose")]
48048		if let Ok(ret) = ret {
48049			return to_result("glNamedFramebufferReadBuffer", ret, (self.version_4_5.geterror)());
48050		} else {
48051			return ret
48052		}
48053		#[cfg(not(feature = "diagnose"))]
48054		return ret;
48055	}
48056	#[inline(always)]
48057	fn glInvalidateNamedFramebufferData(&self, framebuffer: GLuint, numAttachments: GLsizei, attachments: *const GLenum) -> Result<()> {
48058		let ret = process_catch("glInvalidateNamedFramebufferData", catch_unwind(||(self.version_4_5.invalidatenamedframebufferdata)(framebuffer, numAttachments, attachments)));
48059		#[cfg(feature = "diagnose")]
48060		if let Ok(ret) = ret {
48061			return to_result("glInvalidateNamedFramebufferData", ret, (self.version_4_5.geterror)());
48062		} else {
48063			return ret
48064		}
48065		#[cfg(not(feature = "diagnose"))]
48066		return ret;
48067	}
48068	#[inline(always)]
48069	fn glInvalidateNamedFramebufferSubData(&self, framebuffer: GLuint, numAttachments: GLsizei, attachments: *const GLenum, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
48070		let ret = process_catch("glInvalidateNamedFramebufferSubData", catch_unwind(||(self.version_4_5.invalidatenamedframebuffersubdata)(framebuffer, numAttachments, attachments, x, y, width, height)));
48071		#[cfg(feature = "diagnose")]
48072		if let Ok(ret) = ret {
48073			return to_result("glInvalidateNamedFramebufferSubData", ret, (self.version_4_5.geterror)());
48074		} else {
48075			return ret
48076		}
48077		#[cfg(not(feature = "diagnose"))]
48078		return ret;
48079	}
48080	#[inline(always)]
48081	fn glClearNamedFramebufferiv(&self, framebuffer: GLuint, buffer: GLenum, drawbuffer: GLint, value: *const GLint) -> Result<()> {
48082		let ret = process_catch("glClearNamedFramebufferiv", catch_unwind(||(self.version_4_5.clearnamedframebufferiv)(framebuffer, buffer, drawbuffer, value)));
48083		#[cfg(feature = "diagnose")]
48084		if let Ok(ret) = ret {
48085			return to_result("glClearNamedFramebufferiv", ret, (self.version_4_5.geterror)());
48086		} else {
48087			return ret
48088		}
48089		#[cfg(not(feature = "diagnose"))]
48090		return ret;
48091	}
48092	#[inline(always)]
48093	fn glClearNamedFramebufferuiv(&self, framebuffer: GLuint, buffer: GLenum, drawbuffer: GLint, value: *const GLuint) -> Result<()> {
48094		let ret = process_catch("glClearNamedFramebufferuiv", catch_unwind(||(self.version_4_5.clearnamedframebufferuiv)(framebuffer, buffer, drawbuffer, value)));
48095		#[cfg(feature = "diagnose")]
48096		if let Ok(ret) = ret {
48097			return to_result("glClearNamedFramebufferuiv", ret, (self.version_4_5.geterror)());
48098		} else {
48099			return ret
48100		}
48101		#[cfg(not(feature = "diagnose"))]
48102		return ret;
48103	}
48104	#[inline(always)]
48105	fn glClearNamedFramebufferfv(&self, framebuffer: GLuint, buffer: GLenum, drawbuffer: GLint, value: *const GLfloat) -> Result<()> {
48106		let ret = process_catch("glClearNamedFramebufferfv", catch_unwind(||(self.version_4_5.clearnamedframebufferfv)(framebuffer, buffer, drawbuffer, value)));
48107		#[cfg(feature = "diagnose")]
48108		if let Ok(ret) = ret {
48109			return to_result("glClearNamedFramebufferfv", ret, (self.version_4_5.geterror)());
48110		} else {
48111			return ret
48112		}
48113		#[cfg(not(feature = "diagnose"))]
48114		return ret;
48115	}
48116	#[inline(always)]
48117	fn glClearNamedFramebufferfi(&self, framebuffer: GLuint, buffer: GLenum, drawbuffer: GLint, depth: GLfloat, stencil: GLint) -> Result<()> {
48118		let ret = process_catch("glClearNamedFramebufferfi", catch_unwind(||(self.version_4_5.clearnamedframebufferfi)(framebuffer, buffer, drawbuffer, depth, stencil)));
48119		#[cfg(feature = "diagnose")]
48120		if let Ok(ret) = ret {
48121			return to_result("glClearNamedFramebufferfi", ret, (self.version_4_5.geterror)());
48122		} else {
48123			return ret
48124		}
48125		#[cfg(not(feature = "diagnose"))]
48126		return ret;
48127	}
48128	#[inline(always)]
48129	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<()> {
48130		let ret = process_catch("glBlitNamedFramebuffer", catch_unwind(||(self.version_4_5.blitnamedframebuffer)(readFramebuffer, drawFramebuffer, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter)));
48131		#[cfg(feature = "diagnose")]
48132		if let Ok(ret) = ret {
48133			return to_result("glBlitNamedFramebuffer", ret, (self.version_4_5.geterror)());
48134		} else {
48135			return ret
48136		}
48137		#[cfg(not(feature = "diagnose"))]
48138		return ret;
48139	}
48140	#[inline(always)]
48141	fn glCheckNamedFramebufferStatus(&self, framebuffer: GLuint, target: GLenum) -> Result<GLenum> {
48142		let ret = process_catch("glCheckNamedFramebufferStatus", catch_unwind(||(self.version_4_5.checknamedframebufferstatus)(framebuffer, target)));
48143		#[cfg(feature = "diagnose")]
48144		if let Ok(ret) = ret {
48145			return to_result("glCheckNamedFramebufferStatus", ret, (self.version_4_5.geterror)());
48146		} else {
48147			return ret
48148		}
48149		#[cfg(not(feature = "diagnose"))]
48150		return ret;
48151	}
48152	#[inline(always)]
48153	fn glGetNamedFramebufferParameteriv(&self, framebuffer: GLuint, pname: GLenum, param: *mut GLint) -> Result<()> {
48154		let ret = process_catch("glGetNamedFramebufferParameteriv", catch_unwind(||(self.version_4_5.getnamedframebufferparameteriv)(framebuffer, pname, param)));
48155		#[cfg(feature = "diagnose")]
48156		if let Ok(ret) = ret {
48157			return to_result("glGetNamedFramebufferParameteriv", ret, (self.version_4_5.geterror)());
48158		} else {
48159			return ret
48160		}
48161		#[cfg(not(feature = "diagnose"))]
48162		return ret;
48163	}
48164	#[inline(always)]
48165	fn glGetNamedFramebufferAttachmentParameteriv(&self, framebuffer: GLuint, attachment: GLenum, pname: GLenum, params: *mut GLint) -> Result<()> {
48166		let ret = process_catch("glGetNamedFramebufferAttachmentParameteriv", catch_unwind(||(self.version_4_5.getnamedframebufferattachmentparameteriv)(framebuffer, attachment, pname, params)));
48167		#[cfg(feature = "diagnose")]
48168		if let Ok(ret) = ret {
48169			return to_result("glGetNamedFramebufferAttachmentParameteriv", ret, (self.version_4_5.geterror)());
48170		} else {
48171			return ret
48172		}
48173		#[cfg(not(feature = "diagnose"))]
48174		return ret;
48175	}
48176	#[inline(always)]
48177	fn glCreateRenderbuffers(&self, n: GLsizei, renderbuffers: *mut GLuint) -> Result<()> {
48178		let ret = process_catch("glCreateRenderbuffers", catch_unwind(||(self.version_4_5.createrenderbuffers)(n, renderbuffers)));
48179		#[cfg(feature = "diagnose")]
48180		if let Ok(ret) = ret {
48181			return to_result("glCreateRenderbuffers", ret, (self.version_4_5.geterror)());
48182		} else {
48183			return ret
48184		}
48185		#[cfg(not(feature = "diagnose"))]
48186		return ret;
48187	}
48188	#[inline(always)]
48189	fn glNamedRenderbufferStorage(&self, renderbuffer: GLuint, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()> {
48190		let ret = process_catch("glNamedRenderbufferStorage", catch_unwind(||(self.version_4_5.namedrenderbufferstorage)(renderbuffer, internalformat, width, height)));
48191		#[cfg(feature = "diagnose")]
48192		if let Ok(ret) = ret {
48193			return to_result("glNamedRenderbufferStorage", ret, (self.version_4_5.geterror)());
48194		} else {
48195			return ret
48196		}
48197		#[cfg(not(feature = "diagnose"))]
48198		return ret;
48199	}
48200	#[inline(always)]
48201	fn glNamedRenderbufferStorageMultisample(&self, renderbuffer: GLuint, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()> {
48202		let ret = process_catch("glNamedRenderbufferStorageMultisample", catch_unwind(||(self.version_4_5.namedrenderbufferstoragemultisample)(renderbuffer, samples, internalformat, width, height)));
48203		#[cfg(feature = "diagnose")]
48204		if let Ok(ret) = ret {
48205			return to_result("glNamedRenderbufferStorageMultisample", ret, (self.version_4_5.geterror)());
48206		} else {
48207			return ret
48208		}
48209		#[cfg(not(feature = "diagnose"))]
48210		return ret;
48211	}
48212	#[inline(always)]
48213	fn glGetNamedRenderbufferParameteriv(&self, renderbuffer: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
48214		let ret = process_catch("glGetNamedRenderbufferParameteriv", catch_unwind(||(self.version_4_5.getnamedrenderbufferparameteriv)(renderbuffer, pname, params)));
48215		#[cfg(feature = "diagnose")]
48216		if let Ok(ret) = ret {
48217			return to_result("glGetNamedRenderbufferParameteriv", ret, (self.version_4_5.geterror)());
48218		} else {
48219			return ret
48220		}
48221		#[cfg(not(feature = "diagnose"))]
48222		return ret;
48223	}
48224	#[inline(always)]
48225	fn glCreateTextures(&self, target: GLenum, n: GLsizei, textures: *mut GLuint) -> Result<()> {
48226		let ret = process_catch("glCreateTextures", catch_unwind(||(self.version_4_5.createtextures)(target, n, textures)));
48227		#[cfg(feature = "diagnose")]
48228		if let Ok(ret) = ret {
48229			return to_result("glCreateTextures", ret, (self.version_4_5.geterror)());
48230		} else {
48231			return ret
48232		}
48233		#[cfg(not(feature = "diagnose"))]
48234		return ret;
48235	}
48236	#[inline(always)]
48237	fn glTextureBuffer(&self, texture: GLuint, internalformat: GLenum, buffer: GLuint) -> Result<()> {
48238		let ret = process_catch("glTextureBuffer", catch_unwind(||(self.version_4_5.texturebuffer)(texture, internalformat, buffer)));
48239		#[cfg(feature = "diagnose")]
48240		if let Ok(ret) = ret {
48241			return to_result("glTextureBuffer", ret, (self.version_4_5.geterror)());
48242		} else {
48243			return ret
48244		}
48245		#[cfg(not(feature = "diagnose"))]
48246		return ret;
48247	}
48248	#[inline(always)]
48249	fn glTextureBufferRange(&self, texture: GLuint, internalformat: GLenum, buffer: GLuint, offset: GLintptr, size: GLsizeiptr) -> Result<()> {
48250		let ret = process_catch("glTextureBufferRange", catch_unwind(||(self.version_4_5.texturebufferrange)(texture, internalformat, buffer, offset, size)));
48251		#[cfg(feature = "diagnose")]
48252		if let Ok(ret) = ret {
48253			return to_result("glTextureBufferRange", ret, (self.version_4_5.geterror)());
48254		} else {
48255			return ret
48256		}
48257		#[cfg(not(feature = "diagnose"))]
48258		return ret;
48259	}
48260	#[inline(always)]
48261	fn glTextureStorage1D(&self, texture: GLuint, levels: GLsizei, internalformat: GLenum, width: GLsizei) -> Result<()> {
48262		let ret = process_catch("glTextureStorage1D", catch_unwind(||(self.version_4_5.texturestorage1d)(texture, levels, internalformat, width)));
48263		#[cfg(feature = "diagnose")]
48264		if let Ok(ret) = ret {
48265			return to_result("glTextureStorage1D", ret, (self.version_4_5.geterror)());
48266		} else {
48267			return ret
48268		}
48269		#[cfg(not(feature = "diagnose"))]
48270		return ret;
48271	}
48272	#[inline(always)]
48273	fn glTextureStorage2D(&self, texture: GLuint, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei) -> Result<()> {
48274		let ret = process_catch("glTextureStorage2D", catch_unwind(||(self.version_4_5.texturestorage2d)(texture, levels, internalformat, width, height)));
48275		#[cfg(feature = "diagnose")]
48276		if let Ok(ret) = ret {
48277			return to_result("glTextureStorage2D", ret, (self.version_4_5.geterror)());
48278		} else {
48279			return ret
48280		}
48281		#[cfg(not(feature = "diagnose"))]
48282		return ret;
48283	}
48284	#[inline(always)]
48285	fn glTextureStorage3D(&self, texture: GLuint, levels: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei) -> Result<()> {
48286		let ret = process_catch("glTextureStorage3D", catch_unwind(||(self.version_4_5.texturestorage3d)(texture, levels, internalformat, width, height, depth)));
48287		#[cfg(feature = "diagnose")]
48288		if let Ok(ret) = ret {
48289			return to_result("glTextureStorage3D", ret, (self.version_4_5.geterror)());
48290		} else {
48291			return ret
48292		}
48293		#[cfg(not(feature = "diagnose"))]
48294		return ret;
48295	}
48296	#[inline(always)]
48297	fn glTextureStorage2DMultisample(&self, texture: GLuint, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, fixedsamplelocations: GLboolean) -> Result<()> {
48298		let ret = process_catch("glTextureStorage2DMultisample", catch_unwind(||(self.version_4_5.texturestorage2dmultisample)(texture, samples, internalformat, width, height, fixedsamplelocations)));
48299		#[cfg(feature = "diagnose")]
48300		if let Ok(ret) = ret {
48301			return to_result("glTextureStorage2DMultisample", ret, (self.version_4_5.geterror)());
48302		} else {
48303			return ret
48304		}
48305		#[cfg(not(feature = "diagnose"))]
48306		return ret;
48307	}
48308	#[inline(always)]
48309	fn glTextureStorage3DMultisample(&self, texture: GLuint, samples: GLsizei, internalformat: GLenum, width: GLsizei, height: GLsizei, depth: GLsizei, fixedsamplelocations: GLboolean) -> Result<()> {
48310		let ret = process_catch("glTextureStorage3DMultisample", catch_unwind(||(self.version_4_5.texturestorage3dmultisample)(texture, samples, internalformat, width, height, depth, fixedsamplelocations)));
48311		#[cfg(feature = "diagnose")]
48312		if let Ok(ret) = ret {
48313			return to_result("glTextureStorage3DMultisample", ret, (self.version_4_5.geterror)());
48314		} else {
48315			return ret
48316		}
48317		#[cfg(not(feature = "diagnose"))]
48318		return ret;
48319	}
48320	#[inline(always)]
48321	fn glTextureSubImage1D(&self, texture: GLuint, level: GLint, xoffset: GLint, width: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
48322		let ret = process_catch("glTextureSubImage1D", catch_unwind(||(self.version_4_5.texturesubimage1d)(texture, level, xoffset, width, format, type_, pixels)));
48323		#[cfg(feature = "diagnose")]
48324		if let Ok(ret) = ret {
48325			return to_result("glTextureSubImage1D", ret, (self.version_4_5.geterror)());
48326		} else {
48327			return ret
48328		}
48329		#[cfg(not(feature = "diagnose"))]
48330		return ret;
48331	}
48332	#[inline(always)]
48333	fn glTextureSubImage2D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, pixels: *const c_void) -> Result<()> {
48334		let ret = process_catch("glTextureSubImage2D", catch_unwind(||(self.version_4_5.texturesubimage2d)(texture, level, xoffset, yoffset, width, height, format, type_, pixels)));
48335		#[cfg(feature = "diagnose")]
48336		if let Ok(ret) = ret {
48337			return to_result("glTextureSubImage2D", ret, (self.version_4_5.geterror)());
48338		} else {
48339			return ret
48340		}
48341		#[cfg(not(feature = "diagnose"))]
48342		return ret;
48343	}
48344	#[inline(always)]
48345	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<()> {
48346		let ret = process_catch("glTextureSubImage3D", catch_unwind(||(self.version_4_5.texturesubimage3d)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, pixels)));
48347		#[cfg(feature = "diagnose")]
48348		if let Ok(ret) = ret {
48349			return to_result("glTextureSubImage3D", ret, (self.version_4_5.geterror)());
48350		} else {
48351			return ret
48352		}
48353		#[cfg(not(feature = "diagnose"))]
48354		return ret;
48355	}
48356	#[inline(always)]
48357	fn glCompressedTextureSubImage1D(&self, texture: GLuint, level: GLint, xoffset: GLint, width: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()> {
48358		let ret = process_catch("glCompressedTextureSubImage1D", catch_unwind(||(self.version_4_5.compressedtexturesubimage1d)(texture, level, xoffset, width, format, imageSize, data)));
48359		#[cfg(feature = "diagnose")]
48360		if let Ok(ret) = ret {
48361			return to_result("glCompressedTextureSubImage1D", ret, (self.version_4_5.geterror)());
48362		} else {
48363			return ret
48364		}
48365		#[cfg(not(feature = "diagnose"))]
48366		return ret;
48367	}
48368	#[inline(always)]
48369	fn glCompressedTextureSubImage2D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, width: GLsizei, height: GLsizei, format: GLenum, imageSize: GLsizei, data: *const c_void) -> Result<()> {
48370		let ret = process_catch("glCompressedTextureSubImage2D", catch_unwind(||(self.version_4_5.compressedtexturesubimage2d)(texture, level, xoffset, yoffset, width, height, format, imageSize, data)));
48371		#[cfg(feature = "diagnose")]
48372		if let Ok(ret) = ret {
48373			return to_result("glCompressedTextureSubImage2D", ret, (self.version_4_5.geterror)());
48374		} else {
48375			return ret
48376		}
48377		#[cfg(not(feature = "diagnose"))]
48378		return ret;
48379	}
48380	#[inline(always)]
48381	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<()> {
48382		let ret = process_catch("glCompressedTextureSubImage3D", catch_unwind(||(self.version_4_5.compressedtexturesubimage3d)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data)));
48383		#[cfg(feature = "diagnose")]
48384		if let Ok(ret) = ret {
48385			return to_result("glCompressedTextureSubImage3D", ret, (self.version_4_5.geterror)());
48386		} else {
48387			return ret
48388		}
48389		#[cfg(not(feature = "diagnose"))]
48390		return ret;
48391	}
48392	#[inline(always)]
48393	fn glCopyTextureSubImage1D(&self, texture: GLuint, level: GLint, xoffset: GLint, x: GLint, y: GLint, width: GLsizei) -> Result<()> {
48394		let ret = process_catch("glCopyTextureSubImage1D", catch_unwind(||(self.version_4_5.copytexturesubimage1d)(texture, level, xoffset, x, y, width)));
48395		#[cfg(feature = "diagnose")]
48396		if let Ok(ret) = ret {
48397			return to_result("glCopyTextureSubImage1D", ret, (self.version_4_5.geterror)());
48398		} else {
48399			return ret
48400		}
48401		#[cfg(not(feature = "diagnose"))]
48402		return ret;
48403	}
48404	#[inline(always)]
48405	fn glCopyTextureSubImage2D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
48406		let ret = process_catch("glCopyTextureSubImage2D", catch_unwind(||(self.version_4_5.copytexturesubimage2d)(texture, level, xoffset, yoffset, x, y, width, height)));
48407		#[cfg(feature = "diagnose")]
48408		if let Ok(ret) = ret {
48409			return to_result("glCopyTextureSubImage2D", ret, (self.version_4_5.geterror)());
48410		} else {
48411			return ret
48412		}
48413		#[cfg(not(feature = "diagnose"))]
48414		return ret;
48415	}
48416	#[inline(always)]
48417	fn glCopyTextureSubImage3D(&self, texture: GLuint, level: GLint, xoffset: GLint, yoffset: GLint, zoffset: GLint, x: GLint, y: GLint, width: GLsizei, height: GLsizei) -> Result<()> {
48418		let ret = process_catch("glCopyTextureSubImage3D", catch_unwind(||(self.version_4_5.copytexturesubimage3d)(texture, level, xoffset, yoffset, zoffset, x, y, width, height)));
48419		#[cfg(feature = "diagnose")]
48420		if let Ok(ret) = ret {
48421			return to_result("glCopyTextureSubImage3D", ret, (self.version_4_5.geterror)());
48422		} else {
48423			return ret
48424		}
48425		#[cfg(not(feature = "diagnose"))]
48426		return ret;
48427	}
48428	#[inline(always)]
48429	fn glTextureParameterf(&self, texture: GLuint, pname: GLenum, param: GLfloat) -> Result<()> {
48430		let ret = process_catch("glTextureParameterf", catch_unwind(||(self.version_4_5.textureparameterf)(texture, pname, param)));
48431		#[cfg(feature = "diagnose")]
48432		if let Ok(ret) = ret {
48433			return to_result("glTextureParameterf", ret, (self.version_4_5.geterror)());
48434		} else {
48435			return ret
48436		}
48437		#[cfg(not(feature = "diagnose"))]
48438		return ret;
48439	}
48440	#[inline(always)]
48441	fn glTextureParameterfv(&self, texture: GLuint, pname: GLenum, param: *const GLfloat) -> Result<()> {
48442		let ret = process_catch("glTextureParameterfv", catch_unwind(||(self.version_4_5.textureparameterfv)(texture, pname, param)));
48443		#[cfg(feature = "diagnose")]
48444		if let Ok(ret) = ret {
48445			return to_result("glTextureParameterfv", ret, (self.version_4_5.geterror)());
48446		} else {
48447			return ret
48448		}
48449		#[cfg(not(feature = "diagnose"))]
48450		return ret;
48451	}
48452	#[inline(always)]
48453	fn glTextureParameteri(&self, texture: GLuint, pname: GLenum, param: GLint) -> Result<()> {
48454		let ret = process_catch("glTextureParameteri", catch_unwind(||(self.version_4_5.textureparameteri)(texture, pname, param)));
48455		#[cfg(feature = "diagnose")]
48456		if let Ok(ret) = ret {
48457			return to_result("glTextureParameteri", ret, (self.version_4_5.geterror)());
48458		} else {
48459			return ret
48460		}
48461		#[cfg(not(feature = "diagnose"))]
48462		return ret;
48463	}
48464	#[inline(always)]
48465	fn glTextureParameterIiv(&self, texture: GLuint, pname: GLenum, params: *const GLint) -> Result<()> {
48466		let ret = process_catch("glTextureParameterIiv", catch_unwind(||(self.version_4_5.textureparameteriiv)(texture, pname, params)));
48467		#[cfg(feature = "diagnose")]
48468		if let Ok(ret) = ret {
48469			return to_result("glTextureParameterIiv", ret, (self.version_4_5.geterror)());
48470		} else {
48471			return ret
48472		}
48473		#[cfg(not(feature = "diagnose"))]
48474		return ret;
48475	}
48476	#[inline(always)]
48477	fn glTextureParameterIuiv(&self, texture: GLuint, pname: GLenum, params: *const GLuint) -> Result<()> {
48478		let ret = process_catch("glTextureParameterIuiv", catch_unwind(||(self.version_4_5.textureparameteriuiv)(texture, pname, params)));
48479		#[cfg(feature = "diagnose")]
48480		if let Ok(ret) = ret {
48481			return to_result("glTextureParameterIuiv", ret, (self.version_4_5.geterror)());
48482		} else {
48483			return ret
48484		}
48485		#[cfg(not(feature = "diagnose"))]
48486		return ret;
48487	}
48488	#[inline(always)]
48489	fn glTextureParameteriv(&self, texture: GLuint, pname: GLenum, param: *const GLint) -> Result<()> {
48490		let ret = process_catch("glTextureParameteriv", catch_unwind(||(self.version_4_5.textureparameteriv)(texture, pname, param)));
48491		#[cfg(feature = "diagnose")]
48492		if let Ok(ret) = ret {
48493			return to_result("glTextureParameteriv", ret, (self.version_4_5.geterror)());
48494		} else {
48495			return ret
48496		}
48497		#[cfg(not(feature = "diagnose"))]
48498		return ret;
48499	}
48500	#[inline(always)]
48501	fn glGenerateTextureMipmap(&self, texture: GLuint) -> Result<()> {
48502		let ret = process_catch("glGenerateTextureMipmap", catch_unwind(||(self.version_4_5.generatetexturemipmap)(texture)));
48503		#[cfg(feature = "diagnose")]
48504		if let Ok(ret) = ret {
48505			return to_result("glGenerateTextureMipmap", ret, (self.version_4_5.geterror)());
48506		} else {
48507			return ret
48508		}
48509		#[cfg(not(feature = "diagnose"))]
48510		return ret;
48511	}
48512	#[inline(always)]
48513	fn glBindTextureUnit(&self, unit: GLuint, texture: GLuint) -> Result<()> {
48514		let ret = process_catch("glBindTextureUnit", catch_unwind(||(self.version_4_5.bindtextureunit)(unit, texture)));
48515		#[cfg(feature = "diagnose")]
48516		if let Ok(ret) = ret {
48517			return to_result("glBindTextureUnit", ret, (self.version_4_5.geterror)());
48518		} else {
48519			return ret
48520		}
48521		#[cfg(not(feature = "diagnose"))]
48522		return ret;
48523	}
48524	#[inline(always)]
48525	fn glGetTextureImage(&self, texture: GLuint, level: GLint, format: GLenum, type_: GLenum, bufSize: GLsizei, pixels: *mut c_void) -> Result<()> {
48526		let ret = process_catch("glGetTextureImage", catch_unwind(||(self.version_4_5.gettextureimage)(texture, level, format, type_, bufSize, pixels)));
48527		#[cfg(feature = "diagnose")]
48528		if let Ok(ret) = ret {
48529			return to_result("glGetTextureImage", ret, (self.version_4_5.geterror)());
48530		} else {
48531			return ret
48532		}
48533		#[cfg(not(feature = "diagnose"))]
48534		return ret;
48535	}
48536	#[inline(always)]
48537	fn glGetCompressedTextureImage(&self, texture: GLuint, level: GLint, bufSize: GLsizei, pixels: *mut c_void) -> Result<()> {
48538		let ret = process_catch("glGetCompressedTextureImage", catch_unwind(||(self.version_4_5.getcompressedtextureimage)(texture, level, bufSize, pixels)));
48539		#[cfg(feature = "diagnose")]
48540		if let Ok(ret) = ret {
48541			return to_result("glGetCompressedTextureImage", ret, (self.version_4_5.geterror)());
48542		} else {
48543			return ret
48544		}
48545		#[cfg(not(feature = "diagnose"))]
48546		return ret;
48547	}
48548	#[inline(always)]
48549	fn glGetTextureLevelParameterfv(&self, texture: GLuint, level: GLint, pname: GLenum, params: *mut GLfloat) -> Result<()> {
48550		let ret = process_catch("glGetTextureLevelParameterfv", catch_unwind(||(self.version_4_5.gettexturelevelparameterfv)(texture, level, pname, params)));
48551		#[cfg(feature = "diagnose")]
48552		if let Ok(ret) = ret {
48553			return to_result("glGetTextureLevelParameterfv", ret, (self.version_4_5.geterror)());
48554		} else {
48555			return ret
48556		}
48557		#[cfg(not(feature = "diagnose"))]
48558		return ret;
48559	}
48560	#[inline(always)]
48561	fn glGetTextureLevelParameteriv(&self, texture: GLuint, level: GLint, pname: GLenum, params: *mut GLint) -> Result<()> {
48562		let ret = process_catch("glGetTextureLevelParameteriv", catch_unwind(||(self.version_4_5.gettexturelevelparameteriv)(texture, level, pname, params)));
48563		#[cfg(feature = "diagnose")]
48564		if let Ok(ret) = ret {
48565			return to_result("glGetTextureLevelParameteriv", ret, (self.version_4_5.geterror)());
48566		} else {
48567			return ret
48568		}
48569		#[cfg(not(feature = "diagnose"))]
48570		return ret;
48571	}
48572	#[inline(always)]
48573	fn glGetTextureParameterfv(&self, texture: GLuint, pname: GLenum, params: *mut GLfloat) -> Result<()> {
48574		let ret = process_catch("glGetTextureParameterfv", catch_unwind(||(self.version_4_5.gettextureparameterfv)(texture, pname, params)));
48575		#[cfg(feature = "diagnose")]
48576		if let Ok(ret) = ret {
48577			return to_result("glGetTextureParameterfv", ret, (self.version_4_5.geterror)());
48578		} else {
48579			return ret
48580		}
48581		#[cfg(not(feature = "diagnose"))]
48582		return ret;
48583	}
48584	#[inline(always)]
48585	fn glGetTextureParameterIiv(&self, texture: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
48586		let ret = process_catch("glGetTextureParameterIiv", catch_unwind(||(self.version_4_5.gettextureparameteriiv)(texture, pname, params)));
48587		#[cfg(feature = "diagnose")]
48588		if let Ok(ret) = ret {
48589			return to_result("glGetTextureParameterIiv", ret, (self.version_4_5.geterror)());
48590		} else {
48591			return ret
48592		}
48593		#[cfg(not(feature = "diagnose"))]
48594		return ret;
48595	}
48596	#[inline(always)]
48597	fn glGetTextureParameterIuiv(&self, texture: GLuint, pname: GLenum, params: *mut GLuint) -> Result<()> {
48598		let ret = process_catch("glGetTextureParameterIuiv", catch_unwind(||(self.version_4_5.gettextureparameteriuiv)(texture, pname, params)));
48599		#[cfg(feature = "diagnose")]
48600		if let Ok(ret) = ret {
48601			return to_result("glGetTextureParameterIuiv", ret, (self.version_4_5.geterror)());
48602		} else {
48603			return ret
48604		}
48605		#[cfg(not(feature = "diagnose"))]
48606		return ret;
48607	}
48608	#[inline(always)]
48609	fn glGetTextureParameteriv(&self, texture: GLuint, pname: GLenum, params: *mut GLint) -> Result<()> {
48610		let ret = process_catch("glGetTextureParameteriv", catch_unwind(||(self.version_4_5.gettextureparameteriv)(texture, pname, params)));
48611		#[cfg(feature = "diagnose")]
48612		if let Ok(ret) = ret {
48613			return to_result("glGetTextureParameteriv", ret, (self.version_4_5.geterror)());
48614		} else {
48615			return ret
48616		}
48617		#[cfg(not(feature = "diagnose"))]
48618		return ret;
48619	}
48620	#[inline(always)]
48621	fn glCreateVertexArrays(&self, n: GLsizei, arrays: *mut GLuint) -> Result<()> {
48622		let ret = process_catch("glCreateVertexArrays", catch_unwind(||(self.version_4_5.createvertexarrays)(n, arrays)));
48623		#[cfg(feature = "diagnose")]
48624		if let Ok(ret) = ret {
48625			return to_result("glCreateVertexArrays", ret, (self.version_4_5.geterror)());
48626		} else {
48627			return ret
48628		}
48629		#[cfg(not(feature = "diagnose"))]
48630		return ret;
48631	}
48632	#[inline(always)]
48633	fn glDisableVertexArrayAttrib(&self, vaobj: GLuint, index: GLuint) -> Result<()> {
48634		let ret = process_catch("glDisableVertexArrayAttrib", catch_unwind(||(self.version_4_5.disablevertexarrayattrib)(vaobj, index)));
48635		#[cfg(feature = "diagnose")]
48636		if let Ok(ret) = ret {
48637			return to_result("glDisableVertexArrayAttrib", ret, (self.version_4_5.geterror)());
48638		} else {
48639			return ret
48640		}
48641		#[cfg(not(feature = "diagnose"))]
48642		return ret;
48643	}
48644	#[inline(always)]
48645	fn glEnableVertexArrayAttrib(&self, vaobj: GLuint, index: GLuint) -> Result<()> {
48646		let ret = process_catch("glEnableVertexArrayAttrib", catch_unwind(||(self.version_4_5.enablevertexarrayattrib)(vaobj, index)));
48647		#[cfg(feature = "diagnose")]
48648		if let Ok(ret) = ret {
48649			return to_result("glEnableVertexArrayAttrib", ret, (self.version_4_5.geterror)());
48650		} else {
48651			return ret
48652		}
48653		#[cfg(not(feature = "diagnose"))]
48654		return ret;
48655	}
48656	#[inline(always)]
48657	fn glVertexArrayElementBuffer(&self, vaobj: GLuint, buffer: GLuint) -> Result<()> {
48658		let ret = process_catch("glVertexArrayElementBuffer", catch_unwind(||(self.version_4_5.vertexarrayelementbuffer)(vaobj, buffer)));
48659		#[cfg(feature = "diagnose")]
48660		if let Ok(ret) = ret {
48661			return to_result("glVertexArrayElementBuffer", ret, (self.version_4_5.geterror)());
48662		} else {
48663			return ret
48664		}
48665		#[cfg(not(feature = "diagnose"))]
48666		return ret;
48667	}
48668	#[inline(always)]
48669	fn glVertexArrayVertexBuffer(&self, vaobj: GLuint, bindingindex: GLuint, buffer: GLuint, offset: GLintptr, stride: GLsizei) -> Result<()> {
48670		let ret = process_catch("glVertexArrayVertexBuffer", catch_unwind(||(self.version_4_5.vertexarrayvertexbuffer)(vaobj, bindingindex, buffer, offset, stride)));
48671		#[cfg(feature = "diagnose")]
48672		if let Ok(ret) = ret {
48673			return to_result("glVertexArrayVertexBuffer", ret, (self.version_4_5.geterror)());
48674		} else {
48675			return ret
48676		}
48677		#[cfg(not(feature = "diagnose"))]
48678		return ret;
48679	}
48680	#[inline(always)]
48681	fn glVertexArrayVertexBuffers(&self, vaobj: GLuint, first: GLuint, count: GLsizei, buffers: *const GLuint, offsets: *const GLintptr, strides: *const GLsizei) -> Result<()> {
48682		let ret = process_catch("glVertexArrayVertexBuffers", catch_unwind(||(self.version_4_5.vertexarrayvertexbuffers)(vaobj, first, count, buffers, offsets, strides)));
48683		#[cfg(feature = "diagnose")]
48684		if let Ok(ret) = ret {
48685			return to_result("glVertexArrayVertexBuffers", ret, (self.version_4_5.geterror)());
48686		} else {
48687			return ret
48688		}
48689		#[cfg(not(feature = "diagnose"))]
48690		return ret;
48691	}
48692	#[inline(always)]
48693	fn glVertexArrayAttribBinding(&self, vaobj: GLuint, attribindex: GLuint, bindingindex: GLuint) -> Result<()> {
48694		let ret = process_catch("glVertexArrayAttribBinding", catch_unwind(||(self.version_4_5.vertexarrayattribbinding)(vaobj, attribindex, bindingindex)));
48695		#[cfg(feature = "diagnose")]
48696		if let Ok(ret) = ret {
48697			return to_result("glVertexArrayAttribBinding", ret, (self.version_4_5.geterror)());
48698		} else {
48699			return ret
48700		}
48701		#[cfg(not(feature = "diagnose"))]
48702		return ret;
48703	}
48704	#[inline(always)]
48705	fn glVertexArrayAttribFormat(&self, vaobj: GLuint, attribindex: GLuint, size: GLint, type_: GLenum, normalized: GLboolean, relativeoffset: GLuint) -> Result<()> {
48706		let ret = process_catch("glVertexArrayAttribFormat", catch_unwind(||(self.version_4_5.vertexarrayattribformat)(vaobj, attribindex, size, type_, normalized, relativeoffset)));
48707		#[cfg(feature = "diagnose")]
48708		if let Ok(ret) = ret {
48709			return to_result("glVertexArrayAttribFormat", ret, (self.version_4_5.geterror)());
48710		} else {
48711			return ret
48712		}
48713		#[cfg(not(feature = "diagnose"))]
48714		return ret;
48715	}
48716	#[inline(always)]
48717	fn glVertexArrayAttribIFormat(&self, vaobj: GLuint, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()> {
48718		let ret = process_catch("glVertexArrayAttribIFormat", catch_unwind(||(self.version_4_5.vertexarrayattribiformat)(vaobj, attribindex, size, type_, relativeoffset)));
48719		#[cfg(feature = "diagnose")]
48720		if let Ok(ret) = ret {
48721			return to_result("glVertexArrayAttribIFormat", ret, (self.version_4_5.geterror)());
48722		} else {
48723			return ret
48724		}
48725		#[cfg(not(feature = "diagnose"))]
48726		return ret;
48727	}
48728	#[inline(always)]
48729	fn glVertexArrayAttribLFormat(&self, vaobj: GLuint, attribindex: GLuint, size: GLint, type_: GLenum, relativeoffset: GLuint) -> Result<()> {
48730		let ret = process_catch("glVertexArrayAttribLFormat", catch_unwind(||(self.version_4_5.vertexarrayattriblformat)(vaobj, attribindex, size, type_, relativeoffset)));
48731		#[cfg(feature = "diagnose")]
48732		if let Ok(ret) = ret {
48733			return to_result("glVertexArrayAttribLFormat", ret, (self.version_4_5.geterror)());
48734		} else {
48735			return ret
48736		}
48737		#[cfg(not(feature = "diagnose"))]
48738		return ret;
48739	}
48740	#[inline(always)]
48741	fn glVertexArrayBindingDivisor(&self, vaobj: GLuint, bindingindex: GLuint, divisor: GLuint) -> Result<()> {
48742		let ret = process_catch("glVertexArrayBindingDivisor", catch_unwind(||(self.version_4_5.vertexarraybindingdivisor)(vaobj, bindingindex, divisor)));
48743		#[cfg(feature = "diagnose")]
48744		if let Ok(ret) = ret {
48745			return to_result("glVertexArrayBindingDivisor", ret, (self.version_4_5.geterror)());
48746		} else {
48747			return ret
48748		}
48749		#[cfg(not(feature = "diagnose"))]
48750		return ret;
48751	}
48752	#[inline(always)]
48753	fn glGetVertexArrayiv(&self, vaobj: GLuint, pname: GLenum, param: *mut GLint) -> Result<()> {
48754		let ret = process_catch("glGetVertexArrayiv", catch_unwind(||(self.version_4_5.getvertexarrayiv)(vaobj, pname, param)));
48755		#[cfg(feature = "diagnose")]
48756		if let Ok(ret) = ret {
48757			return to_result("glGetVertexArrayiv", ret, (self.version_4_5.geterror)());
48758		} else {
48759			return ret
48760		}
48761		#[cfg(not(feature = "diagnose"))]
48762		return ret;
48763	}
48764	#[inline(always)]
48765	fn glGetVertexArrayIndexediv(&self, vaobj: GLuint, index: GLuint, pname: GLenum, param: *mut GLint) -> Result<()> {
48766		let ret = process_catch("glGetVertexArrayIndexediv", catch_unwind(||(self.version_4_5.getvertexarrayindexediv)(vaobj, index, pname, param)));
48767		#[cfg(feature = "diagnose")]
48768		if let Ok(ret) = ret {
48769			return to_result("glGetVertexArrayIndexediv", ret, (self.version_4_5.geterror)());
48770		} else {
48771			return ret
48772		}
48773		#[cfg(not(feature = "diagnose"))]
48774		return ret;
48775	}
48776	#[inline(always)]
48777	fn glGetVertexArrayIndexed64iv(&self, vaobj: GLuint, index: GLuint, pname: GLenum, param: *mut GLint64) -> Result<()> {
48778		let ret = process_catch("glGetVertexArrayIndexed64iv", catch_unwind(||(self.version_4_5.getvertexarrayindexed64iv)(vaobj, index, pname, param)));
48779		#[cfg(feature = "diagnose")]
48780		if let Ok(ret) = ret {
48781			return to_result("glGetVertexArrayIndexed64iv", ret, (self.version_4_5.geterror)());
48782		} else {
48783			return ret
48784		}
48785		#[cfg(not(feature = "diagnose"))]
48786		return ret;
48787	}
48788	#[inline(always)]
48789	fn glCreateSamplers(&self, n: GLsizei, samplers: *mut GLuint) -> Result<()> {
48790		let ret = process_catch("glCreateSamplers", catch_unwind(||(self.version_4_5.createsamplers)(n, samplers)));
48791		#[cfg(feature = "diagnose")]
48792		if let Ok(ret) = ret {
48793			return to_result("glCreateSamplers", ret, (self.version_4_5.geterror)());
48794		} else {
48795			return ret
48796		}
48797		#[cfg(not(feature = "diagnose"))]
48798		return ret;
48799	}
48800	#[inline(always)]
48801	fn glCreateProgramPipelines(&self, n: GLsizei, pipelines: *mut GLuint) -> Result<()> {
48802		let ret = process_catch("glCreateProgramPipelines", catch_unwind(||(self.version_4_5.createprogrampipelines)(n, pipelines)));
48803		#[cfg(feature = "diagnose")]
48804		if let Ok(ret) = ret {
48805			return to_result("glCreateProgramPipelines", ret, (self.version_4_5.geterror)());
48806		} else {
48807			return ret
48808		}
48809		#[cfg(not(feature = "diagnose"))]
48810		return ret;
48811	}
48812	#[inline(always)]
48813	fn glCreateQueries(&self, target: GLenum, n: GLsizei, ids: *mut GLuint) -> Result<()> {
48814		let ret = process_catch("glCreateQueries", catch_unwind(||(self.version_4_5.createqueries)(target, n, ids)));
48815		#[cfg(feature = "diagnose")]
48816		if let Ok(ret) = ret {
48817			return to_result("glCreateQueries", ret, (self.version_4_5.geterror)());
48818		} else {
48819			return ret
48820		}
48821		#[cfg(not(feature = "diagnose"))]
48822		return ret;
48823	}
48824	#[inline(always)]
48825	fn glGetQueryBufferObjecti64v(&self, id: GLuint, buffer: GLuint, pname: GLenum, offset: GLintptr) -> Result<()> {
48826		let ret = process_catch("glGetQueryBufferObjecti64v", catch_unwind(||(self.version_4_5.getquerybufferobjecti64v)(id, buffer, pname, offset)));
48827		#[cfg(feature = "diagnose")]
48828		if let Ok(ret) = ret {
48829			return to_result("glGetQueryBufferObjecti64v", ret, (self.version_4_5.geterror)());
48830		} else {
48831			return ret
48832		}
48833		#[cfg(not(feature = "diagnose"))]
48834		return ret;
48835	}
48836	#[inline(always)]
48837	fn glGetQueryBufferObjectiv(&self, id: GLuint, buffer: GLuint, pname: GLenum, offset: GLintptr) -> Result<()> {
48838		let ret = process_catch("glGetQueryBufferObjectiv", catch_unwind(||(self.version_4_5.getquerybufferobjectiv)(id, buffer, pname, offset)));
48839		#[cfg(feature = "diagnose")]
48840		if let Ok(ret) = ret {
48841			return to_result("glGetQueryBufferObjectiv", ret, (self.version_4_5.geterror)());
48842		} else {
48843			return ret
48844		}
48845		#[cfg(not(feature = "diagnose"))]
48846		return ret;
48847	}
48848	#[inline(always)]
48849	fn glGetQueryBufferObjectui64v(&self, id: GLuint, buffer: GLuint, pname: GLenum, offset: GLintptr) -> Result<()> {
48850		let ret = process_catch("glGetQueryBufferObjectui64v", catch_unwind(||(self.version_4_5.getquerybufferobjectui64v)(id, buffer, pname, offset)));
48851		#[cfg(feature = "diagnose")]
48852		if let Ok(ret) = ret {
48853			return to_result("glGetQueryBufferObjectui64v", ret, (self.version_4_5.geterror)());
48854		} else {
48855			return ret
48856		}
48857		#[cfg(not(feature = "diagnose"))]
48858		return ret;
48859	}
48860	#[inline(always)]
48861	fn glGetQueryBufferObjectuiv(&self, id: GLuint, buffer: GLuint, pname: GLenum, offset: GLintptr) -> Result<()> {
48862		let ret = process_catch("glGetQueryBufferObjectuiv", catch_unwind(||(self.version_4_5.getquerybufferobjectuiv)(id, buffer, pname, offset)));
48863		#[cfg(feature = "diagnose")]
48864		if let Ok(ret) = ret {
48865			return to_result("glGetQueryBufferObjectuiv", ret, (self.version_4_5.geterror)());
48866		} else {
48867			return ret
48868		}
48869		#[cfg(not(feature = "diagnose"))]
48870		return ret;
48871	}
48872	#[inline(always)]
48873	fn glMemoryBarrierByRegion(&self, barriers: GLbitfield) -> Result<()> {
48874		let ret = process_catch("glMemoryBarrierByRegion", catch_unwind(||(self.version_4_5.memorybarrierbyregion)(barriers)));
48875		#[cfg(feature = "diagnose")]
48876		if let Ok(ret) = ret {
48877			return to_result("glMemoryBarrierByRegion", ret, (self.version_4_5.geterror)());
48878		} else {
48879			return ret
48880		}
48881		#[cfg(not(feature = "diagnose"))]
48882		return ret;
48883	}
48884	#[inline(always)]
48885	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<()> {
48886		let ret = process_catch("glGetTextureSubImage", catch_unwind(||(self.version_4_5.gettexturesubimage)(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type_, bufSize, pixels)));
48887		#[cfg(feature = "diagnose")]
48888		if let Ok(ret) = ret {
48889			return to_result("glGetTextureSubImage", ret, (self.version_4_5.geterror)());
48890		} else {
48891			return ret
48892		}
48893		#[cfg(not(feature = "diagnose"))]
48894		return ret;
48895	}
48896	#[inline(always)]
48897	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<()> {
48898		let ret = process_catch("glGetCompressedTextureSubImage", catch_unwind(||(self.version_4_5.getcompressedtexturesubimage)(texture, level, xoffset, yoffset, zoffset, width, height, depth, bufSize, pixels)));
48899		#[cfg(feature = "diagnose")]
48900		if let Ok(ret) = ret {
48901			return to_result("glGetCompressedTextureSubImage", ret, (self.version_4_5.geterror)());
48902		} else {
48903			return ret
48904		}
48905		#[cfg(not(feature = "diagnose"))]
48906		return ret;
48907	}
48908	#[inline(always)]
48909	fn glGetGraphicsResetStatus(&self) -> Result<GLenum> {
48910		let ret = process_catch("glGetGraphicsResetStatus", catch_unwind(||(self.version_4_5.getgraphicsresetstatus)()));
48911		#[cfg(feature = "diagnose")]
48912		if let Ok(ret) = ret {
48913			return to_result("glGetGraphicsResetStatus", ret, (self.version_4_5.geterror)());
48914		} else {
48915			return ret
48916		}
48917		#[cfg(not(feature = "diagnose"))]
48918		return ret;
48919	}
48920	#[inline(always)]
48921	fn glGetnCompressedTexImage(&self, target: GLenum, lod: GLint, bufSize: GLsizei, pixels: *mut c_void) -> Result<()> {
48922		let ret = process_catch("glGetnCompressedTexImage", catch_unwind(||(self.version_4_5.getncompressedteximage)(target, lod, bufSize, pixels)));
48923		#[cfg(feature = "diagnose")]
48924		if let Ok(ret) = ret {
48925			return to_result("glGetnCompressedTexImage", ret, (self.version_4_5.geterror)());
48926		} else {
48927			return ret
48928		}
48929		#[cfg(not(feature = "diagnose"))]
48930		return ret;
48931	}
48932	#[inline(always)]
48933	fn glGetnTexImage(&self, target: GLenum, level: GLint, format: GLenum, type_: GLenum, bufSize: GLsizei, pixels: *mut c_void) -> Result<()> {
48934		let ret = process_catch("glGetnTexImage", catch_unwind(||(self.version_4_5.getnteximage)(target, level, format, type_, bufSize, pixels)));
48935		#[cfg(feature = "diagnose")]
48936		if let Ok(ret) = ret {
48937			return to_result("glGetnTexImage", ret, (self.version_4_5.geterror)());
48938		} else {
48939			return ret
48940		}
48941		#[cfg(not(feature = "diagnose"))]
48942		return ret;
48943	}
48944	#[inline(always)]
48945	fn glGetnUniformdv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLdouble) -> Result<()> {
48946		let ret = process_catch("glGetnUniformdv", catch_unwind(||(self.version_4_5.getnuniformdv)(program, location, bufSize, params)));
48947		#[cfg(feature = "diagnose")]
48948		if let Ok(ret) = ret {
48949			return to_result("glGetnUniformdv", ret, (self.version_4_5.geterror)());
48950		} else {
48951			return ret
48952		}
48953		#[cfg(not(feature = "diagnose"))]
48954		return ret;
48955	}
48956	#[inline(always)]
48957	fn glGetnUniformfv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLfloat) -> Result<()> {
48958		let ret = process_catch("glGetnUniformfv", catch_unwind(||(self.version_4_5.getnuniformfv)(program, location, bufSize, params)));
48959		#[cfg(feature = "diagnose")]
48960		if let Ok(ret) = ret {
48961			return to_result("glGetnUniformfv", ret, (self.version_4_5.geterror)());
48962		} else {
48963			return ret
48964		}
48965		#[cfg(not(feature = "diagnose"))]
48966		return ret;
48967	}
48968	#[inline(always)]
48969	fn glGetnUniformiv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLint) -> Result<()> {
48970		let ret = process_catch("glGetnUniformiv", catch_unwind(||(self.version_4_5.getnuniformiv)(program, location, bufSize, params)));
48971		#[cfg(feature = "diagnose")]
48972		if let Ok(ret) = ret {
48973			return to_result("glGetnUniformiv", ret, (self.version_4_5.geterror)());
48974		} else {
48975			return ret
48976		}
48977		#[cfg(not(feature = "diagnose"))]
48978		return ret;
48979	}
48980	#[inline(always)]
48981	fn glGetnUniformuiv(&self, program: GLuint, location: GLint, bufSize: GLsizei, params: *mut GLuint) -> Result<()> {
48982		let ret = process_catch("glGetnUniformuiv", catch_unwind(||(self.version_4_5.getnuniformuiv)(program, location, bufSize, params)));
48983		#[cfg(feature = "diagnose")]
48984		if let Ok(ret) = ret {
48985			return to_result("glGetnUniformuiv", ret, (self.version_4_5.geterror)());
48986		} else {
48987			return ret
48988		}
48989		#[cfg(not(feature = "diagnose"))]
48990		return ret;
48991	}
48992	#[inline(always)]
48993	fn glReadnPixels(&self, x: GLint, y: GLint, width: GLsizei, height: GLsizei, format: GLenum, type_: GLenum, bufSize: GLsizei, data: *mut c_void) -> Result<()> {
48994		let ret = process_catch("glReadnPixels", catch_unwind(||(self.version_4_5.readnpixels)(x, y, width, height, format, type_, bufSize, data)));
48995		#[cfg(feature = "diagnose")]
48996		if let Ok(ret) = ret {
48997			return to_result("glReadnPixels", ret, (self.version_4_5.geterror)());
48998		} else {
48999			return ret
49000		}
49001		#[cfg(not(feature = "diagnose"))]
49002		return ret;
49003	}
49004	#[inline(always)]
49005	fn glGetnMapdv(&self, target: GLenum, query: GLenum, bufSize: GLsizei, v: *mut GLdouble) -> Result<()> {
49006		let ret = process_catch("glGetnMapdv", catch_unwind(||(self.version_4_5.getnmapdv)(target, query, bufSize, v)));
49007		#[cfg(feature = "diagnose")]
49008		if let Ok(ret) = ret {
49009			return to_result("glGetnMapdv", ret, (self.version_4_5.geterror)());
49010		} else {
49011			return ret
49012		}
49013		#[cfg(not(feature = "diagnose"))]
49014		return ret;
49015	}
49016	#[inline(always)]
49017	fn glGetnMapfv(&self, target: GLenum, query: GLenum, bufSize: GLsizei, v: *mut GLfloat) -> Result<()> {
49018		let ret = process_catch("glGetnMapfv", catch_unwind(||(self.version_4_5.getnmapfv)(target, query, bufSize, v)));
49019		#[cfg(feature = "diagnose")]
49020		if let Ok(ret) = ret {
49021			return to_result("glGetnMapfv", ret, (self.version_4_5.geterror)());
49022		} else {
49023			return ret
49024		}
49025		#[cfg(not(feature = "diagnose"))]
49026		return ret;
49027	}
49028	#[inline(always)]
49029	fn glGetnMapiv(&self, target: GLenum, query: GLenum, bufSize: GLsizei, v: *mut GLint) -> Result<()> {
49030		let ret = process_catch("glGetnMapiv", catch_unwind(||(self.version_4_5.getnmapiv)(target, query, bufSize, v)));
49031		#[cfg(feature = "diagnose")]
49032		if let Ok(ret) = ret {
49033			return to_result("glGetnMapiv", ret, (self.version_4_5.geterror)());
49034		} else {
49035			return ret
49036		}
49037		#[cfg(not(feature = "diagnose"))]
49038		return ret;
49039	}
49040	#[inline(always)]
49041	fn glGetnPixelMapfv(&self, map: GLenum, bufSize: GLsizei, values: *mut GLfloat) -> Result<()> {
49042		let ret = process_catch("glGetnPixelMapfv", catch_unwind(||(self.version_4_5.getnpixelmapfv)(map, bufSize, values)));
49043		#[cfg(feature = "diagnose")]
49044		if let Ok(ret) = ret {
49045			return to_result("glGetnPixelMapfv", ret, (self.version_4_5.geterror)());
49046		} else {
49047			return ret
49048		}
49049		#[cfg(not(feature = "diagnose"))]
49050		return ret;
49051	}
49052	#[inline(always)]
49053	fn glGetnPixelMapuiv(&self, map: GLenum, bufSize: GLsizei, values: *mut GLuint) -> Result<()> {
49054		let ret = process_catch("glGetnPixelMapuiv", catch_unwind(||(self.version_4_5.getnpixelmapuiv)(map, bufSize, values)));
49055		#[cfg(feature = "diagnose")]
49056		if let Ok(ret) = ret {
49057			return to_result("glGetnPixelMapuiv", ret, (self.version_4_5.geterror)());
49058		} else {
49059			return ret
49060		}
49061		#[cfg(not(feature = "diagnose"))]
49062		return ret;
49063	}
49064	#[inline(always)]
49065	fn glGetnPixelMapusv(&self, map: GLenum, bufSize: GLsizei, values: *mut GLushort) -> Result<()> {
49066		let ret = process_catch("glGetnPixelMapusv", catch_unwind(||(self.version_4_5.getnpixelmapusv)(map, bufSize, values)));
49067		#[cfg(feature = "diagnose")]
49068		if let Ok(ret) = ret {
49069			return to_result("glGetnPixelMapusv", ret, (self.version_4_5.geterror)());
49070		} else {
49071			return ret
49072		}
49073		#[cfg(not(feature = "diagnose"))]
49074		return ret;
49075	}
49076	#[inline(always)]
49077	fn glGetnPolygonStipple(&self, bufSize: GLsizei, pattern: *mut GLubyte) -> Result<()> {
49078		let ret = process_catch("glGetnPolygonStipple", catch_unwind(||(self.version_4_5.getnpolygonstipple)(bufSize, pattern)));
49079		#[cfg(feature = "diagnose")]
49080		if let Ok(ret) = ret {
49081			return to_result("glGetnPolygonStipple", ret, (self.version_4_5.geterror)());
49082		} else {
49083			return ret
49084		}
49085		#[cfg(not(feature = "diagnose"))]
49086		return ret;
49087	}
49088	#[inline(always)]
49089	fn glGetnColorTable(&self, target: GLenum, format: GLenum, type_: GLenum, bufSize: GLsizei, table: *mut c_void) -> Result<()> {
49090		let ret = process_catch("glGetnColorTable", catch_unwind(||(self.version_4_5.getncolortable)(target, format, type_, bufSize, table)));
49091		#[cfg(feature = "diagnose")]
49092		if let Ok(ret) = ret {
49093			return to_result("glGetnColorTable", ret, (self.version_4_5.geterror)());
49094		} else {
49095			return ret
49096		}
49097		#[cfg(not(feature = "diagnose"))]
49098		return ret;
49099	}
49100	#[inline(always)]
49101	fn glGetnConvolutionFilter(&self, target: GLenum, format: GLenum, type_: GLenum, bufSize: GLsizei, image: *mut c_void) -> Result<()> {
49102		let ret = process_catch("glGetnConvolutionFilter", catch_unwind(||(self.version_4_5.getnconvolutionfilter)(target, format, type_, bufSize, image)));
49103		#[cfg(feature = "diagnose")]
49104		if let Ok(ret) = ret {
49105			return to_result("glGetnConvolutionFilter", ret, (self.version_4_5.geterror)());
49106		} else {
49107			return ret
49108		}
49109		#[cfg(not(feature = "diagnose"))]
49110		return ret;
49111	}
49112	#[inline(always)]
49113	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<()> {
49114		let ret = process_catch("glGetnSeparableFilter", catch_unwind(||(self.version_4_5.getnseparablefilter)(target, format, type_, rowBufSize, row, columnBufSize, column, span)));
49115		#[cfg(feature = "diagnose")]
49116		if let Ok(ret) = ret {
49117			return to_result("glGetnSeparableFilter", ret, (self.version_4_5.geterror)());
49118		} else {
49119			return ret
49120		}
49121		#[cfg(not(feature = "diagnose"))]
49122		return ret;
49123	}
49124	#[inline(always)]
49125	fn glGetnHistogram(&self, target: GLenum, reset: GLboolean, format: GLenum, type_: GLenum, bufSize: GLsizei, values: *mut c_void) -> Result<()> {
49126		let ret = process_catch("glGetnHistogram", catch_unwind(||(self.version_4_5.getnhistogram)(target, reset, format, type_, bufSize, values)));
49127		#[cfg(feature = "diagnose")]
49128		if let Ok(ret) = ret {
49129			return to_result("glGetnHistogram", ret, (self.version_4_5.geterror)());
49130		} else {
49131			return ret
49132		}
49133		#[cfg(not(feature = "diagnose"))]
49134		return ret;
49135	}
49136	#[inline(always)]
49137	fn glGetnMinmax(&self, target: GLenum, reset: GLboolean, format: GLenum, type_: GLenum, bufSize: GLsizei, values: *mut c_void) -> Result<()> {
49138		let ret = process_catch("glGetnMinmax", catch_unwind(||(self.version_4_5.getnminmax)(target, reset, format, type_, bufSize, values)));
49139		#[cfg(feature = "diagnose")]
49140		if let Ok(ret) = ret {
49141			return to_result("glGetnMinmax", ret, (self.version_4_5.geterror)());
49142		} else {
49143			return ret
49144		}
49145		#[cfg(not(feature = "diagnose"))]
49146		return ret;
49147	}
49148	#[inline(always)]
49149	fn glTextureBarrier(&self) -> Result<()> {
49150		let ret = process_catch("glTextureBarrier", catch_unwind(||(self.version_4_5.texturebarrier)()));
49151		#[cfg(feature = "diagnose")]
49152		if let Ok(ret) = ret {
49153			return to_result("glTextureBarrier", ret, (self.version_4_5.geterror)());
49154		} else {
49155			return ret
49156		}
49157		#[cfg(not(feature = "diagnose"))]
49158		return ret;
49159	}
49160}
49161
49162impl GL_4_6_g for GLCore {
49163	#[inline(always)]
49164	fn glSpecializeShader(&self, shader: GLuint, pEntryPoint: *const GLchar, numSpecializationConstants: GLuint, pConstantIndex: *const GLuint, pConstantValue: *const GLuint) -> Result<()> {
49165		let ret = process_catch("glSpecializeShader", catch_unwind(||(self.version_4_6.specializeshader)(shader, pEntryPoint, numSpecializationConstants, pConstantIndex, pConstantValue)));
49166		#[cfg(feature = "diagnose")]
49167		if let Ok(ret) = ret {
49168			return to_result("glSpecializeShader", ret, (self.version_4_6.geterror)());
49169		} else {
49170			return ret
49171		}
49172		#[cfg(not(feature = "diagnose"))]
49173		return ret;
49174	}
49175	#[inline(always)]
49176	fn glMultiDrawArraysIndirectCount(&self, mode: GLenum, indirect: *const c_void, drawcount: GLintptr, maxdrawcount: GLsizei, stride: GLsizei) -> Result<()> {
49177		let ret = process_catch("glMultiDrawArraysIndirectCount", catch_unwind(||(self.version_4_6.multidrawarraysindirectcount)(mode, indirect, drawcount, maxdrawcount, stride)));
49178		#[cfg(feature = "diagnose")]
49179		if let Ok(ret) = ret {
49180			return to_result("glMultiDrawArraysIndirectCount", ret, (self.version_4_6.geterror)());
49181		} else {
49182			return ret
49183		}
49184		#[cfg(not(feature = "diagnose"))]
49185		return ret;
49186	}
49187	#[inline(always)]
49188	fn glMultiDrawElementsIndirectCount(&self, mode: GLenum, type_: GLenum, indirect: *const c_void, drawcount: GLintptr, maxdrawcount: GLsizei, stride: GLsizei) -> Result<()> {
49189		let ret = process_catch("glMultiDrawElementsIndirectCount", catch_unwind(||(self.version_4_6.multidrawelementsindirectcount)(mode, type_, indirect, drawcount, maxdrawcount, stride)));
49190		#[cfg(feature = "diagnose")]
49191		if let Ok(ret) = ret {
49192			return to_result("glMultiDrawElementsIndirectCount", ret, (self.version_4_6.geterror)());
49193		} else {
49194			return ret
49195		}
49196		#[cfg(not(feature = "diagnose"))]
49197		return ret;
49198	}
49199	#[inline(always)]
49200	fn glPolygonOffsetClamp(&self, factor: GLfloat, units: GLfloat, clamp: GLfloat) -> Result<()> {
49201		let ret = process_catch("glPolygonOffsetClamp", catch_unwind(||(self.version_4_6.polygonoffsetclamp)(factor, units, clamp)));
49202		#[cfg(feature = "diagnose")]
49203		if let Ok(ret) = ret {
49204			return to_result("glPolygonOffsetClamp", ret, (self.version_4_6.geterror)());
49205		} else {
49206			return ret
49207		}
49208		#[cfg(not(feature = "diagnose"))]
49209		return ret;
49210	}
49211}
49212
49213impl ES_GL_2_0_g for GLCore {
49214}
49215
49216impl ES_GL_3_0_g for GLCore {
49217}
49218
49219impl ES_GL_3_1_g for GLCore {
49220}
49221
49222impl ES_GL_3_2_g for GLCore {
49223	#[inline(always)]
49224	fn glBlendBarrier(&self) -> Result<()> {
49225		let ret = process_catch("glBlendBarrier", catch_unwind(||(self.esversion_3_2.blendbarrier)()));
49226		#[cfg(feature = "diagnose")]
49227		if let Ok(ret) = ret {
49228			return to_result("glBlendBarrier", ret, (self.esversion_3_2.geterror)());
49229		} else {
49230			return ret
49231		}
49232		#[cfg(not(feature = "diagnose"))]
49233		return ret;
49234	}
49235	#[inline(always)]
49236	fn glPrimitiveBoundingBox(&self, minX: GLfloat, minY: GLfloat, minZ: GLfloat, minW: GLfloat, maxX: GLfloat, maxY: GLfloat, maxZ: GLfloat, maxW: GLfloat) -> Result<()> {
49237		let ret = process_catch("glPrimitiveBoundingBox", catch_unwind(||(self.esversion_3_2.primitiveboundingbox)(minX, minY, minZ, minW, maxX, maxY, maxZ, maxW)));
49238		#[cfg(feature = "diagnose")]
49239		if let Ok(ret) = ret {
49240			return to_result("glPrimitiveBoundingBox", ret, (self.esversion_3_2.geterror)());
49241		} else {
49242			return ret
49243		}
49244		#[cfg(not(feature = "diagnose"))]
49245		return ret;
49246	}
49247}
49248
49249impl GLCore {
49250	pub fn new(mut get_proc_address: impl FnMut(&'static str) -> *const c_void) -> Result<Self> {
49251		let version_1_0 = Version10::new(&mut get_proc_address)?;
49252		if !version_1_0.available {
49253			return Ok(Self::default());
49254		}
49255		Ok(Self {
49256			version_1_0,
49257			version_1_1: Version11::new(version_1_0, &mut get_proc_address),
49258			version_1_2: Version12::new(version_1_0, &mut get_proc_address),
49259			version_1_3: Version13::new(version_1_0, &mut get_proc_address),
49260			version_1_4: Version14::new(version_1_0, &mut get_proc_address),
49261			version_1_5: Version15::new(version_1_0, &mut get_proc_address),
49262			version_2_0: Version20::new(version_1_0, &mut get_proc_address),
49263			version_2_1: Version21::new(version_1_0, &mut get_proc_address),
49264			version_3_0: Version30::new(version_1_0, &mut get_proc_address),
49265			version_3_1: Version31::new(version_1_0, &mut get_proc_address),
49266			version_3_2: Version32::new(version_1_0, &mut get_proc_address),
49267			version_3_3: Version33::new(version_1_0, &mut get_proc_address),
49268			version_4_0: Version40::new(version_1_0, &mut get_proc_address),
49269			version_4_1: Version41::new(version_1_0, &mut get_proc_address),
49270			version_4_2: Version42::new(version_1_0, &mut get_proc_address),
49271			version_4_3: Version43::new(version_1_0, &mut get_proc_address),
49272			version_4_4: Version44::new(version_1_0, &mut get_proc_address),
49273			version_4_5: Version45::new(version_1_0, &mut get_proc_address),
49274			version_4_6: Version46::new(version_1_0, &mut get_proc_address),
49275			esversion_2_0: EsVersion20::new(version_1_0, &mut get_proc_address),
49276			esversion_3_0: EsVersion30::new(version_1_0, &mut get_proc_address),
49277			esversion_3_1: EsVersion31::new(version_1_0, &mut get_proc_address),
49278			esversion_3_2: EsVersion32::new(version_1_0, &mut get_proc_address),
49279		})
49280	}
49281}
49282
49283impl Default for GLCore {
49284	fn default() -> Self {
49285		Self {
49286			version_1_0: Version10::default(),
49287			version_1_1: Version11::default(),
49288			version_1_2: Version12::default(),
49289			version_1_3: Version13::default(),
49290			version_1_4: Version14::default(),
49291			version_1_5: Version15::default(),
49292			version_2_0: Version20::default(),
49293			version_2_1: Version21::default(),
49294			version_3_0: Version30::default(),
49295			version_3_1: Version31::default(),
49296			version_3_2: Version32::default(),
49297			version_3_3: Version33::default(),
49298			version_4_0: Version40::default(),
49299			version_4_1: Version41::default(),
49300			version_4_2: Version42::default(),
49301			version_4_3: Version43::default(),
49302			version_4_4: Version44::default(),
49303			version_4_5: Version45::default(),
49304			version_4_6: Version46::default(),
49305			esversion_2_0: EsVersion20::default(),
49306			esversion_3_0: EsVersion30::default(),
49307			esversion_3_1: EsVersion31::default(),
49308			esversion_3_2: EsVersion32::default(),
49309		}
49310	}
49311}
49312