• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/* WARNING: This is auto-generated file. Do not modify, since changes will
2 * be lost! Modify the generating script instead.
3 *
4 * Generated from Khronos GL API description (gl.xml) revision d8371b44919d61c02e60f446a4b5461fda910f71.
5 */
6
7void glwActiveShaderProgram (GLuint pipeline, GLuint program)
8{
9	const glw::Functions* gl = glw::getCurrentThreadFunctions();
10	if (!gl)
11		return;
12	gl->activeShaderProgram(pipeline, program);
13}
14
15void glwActiveTexture (GLenum texture)
16{
17	const glw::Functions* gl = glw::getCurrentThreadFunctions();
18	if (!gl)
19		return;
20	gl->activeTexture(texture);
21}
22
23void glwAttachShader (GLuint program, GLuint shader)
24{
25	const glw::Functions* gl = glw::getCurrentThreadFunctions();
26	if (!gl)
27		return;
28	gl->attachShader(program, shader);
29}
30
31void glwBeginConditionalRender (GLuint id, GLenum mode)
32{
33	const glw::Functions* gl = glw::getCurrentThreadFunctions();
34	if (!gl)
35		return;
36	gl->beginConditionalRender(id, mode);
37}
38
39void glwBeginQuery (GLenum target, GLuint id)
40{
41	const glw::Functions* gl = glw::getCurrentThreadFunctions();
42	if (!gl)
43		return;
44	gl->beginQuery(target, id);
45}
46
47void glwBeginQueryIndexed (GLenum target, GLuint index, GLuint id)
48{
49	const glw::Functions* gl = glw::getCurrentThreadFunctions();
50	if (!gl)
51		return;
52	gl->beginQueryIndexed(target, index, id);
53}
54
55void glwBeginTransformFeedback (GLenum primitiveMode)
56{
57	const glw::Functions* gl = glw::getCurrentThreadFunctions();
58	if (!gl)
59		return;
60	gl->beginTransformFeedback(primitiveMode);
61}
62
63void glwBindAttribLocation (GLuint program, GLuint index, const GLchar *name)
64{
65	const glw::Functions* gl = glw::getCurrentThreadFunctions();
66	if (!gl)
67		return;
68	gl->bindAttribLocation(program, index, name);
69}
70
71void glwBindBuffer (GLenum target, GLuint buffer)
72{
73	const glw::Functions* gl = glw::getCurrentThreadFunctions();
74	if (!gl)
75		return;
76	gl->bindBuffer(target, buffer);
77}
78
79void glwBindBufferBase (GLenum target, GLuint index, GLuint buffer)
80{
81	const glw::Functions* gl = glw::getCurrentThreadFunctions();
82	if (!gl)
83		return;
84	gl->bindBufferBase(target, index, buffer);
85}
86
87void glwBindBufferRange (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
88{
89	const glw::Functions* gl = glw::getCurrentThreadFunctions();
90	if (!gl)
91		return;
92	gl->bindBufferRange(target, index, buffer, offset, size);
93}
94
95void glwBindBuffersBase (GLenum target, GLuint first, GLsizei count, const GLuint *buffers)
96{
97	const glw::Functions* gl = glw::getCurrentThreadFunctions();
98	if (!gl)
99		return;
100	gl->bindBuffersBase(target, first, count, buffers);
101}
102
103void glwBindBuffersRange (GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes)
104{
105	const glw::Functions* gl = glw::getCurrentThreadFunctions();
106	if (!gl)
107		return;
108	gl->bindBuffersRange(target, first, count, buffers, offsets, sizes);
109}
110
111void glwBindFragDataLocation (GLuint program, GLuint color, const GLchar *name)
112{
113	const glw::Functions* gl = glw::getCurrentThreadFunctions();
114	if (!gl)
115		return;
116	gl->bindFragDataLocation(program, color, name);
117}
118
119void glwBindFragDataLocationIndexed (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name)
120{
121	const glw::Functions* gl = glw::getCurrentThreadFunctions();
122	if (!gl)
123		return;
124	gl->bindFragDataLocationIndexed(program, colorNumber, index, name);
125}
126
127void glwBindFramebuffer (GLenum target, GLuint framebuffer)
128{
129	const glw::Functions* gl = glw::getCurrentThreadFunctions();
130	if (!gl)
131		return;
132	gl->bindFramebuffer(target, framebuffer);
133}
134
135void glwBindImageTexture (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format)
136{
137	const glw::Functions* gl = glw::getCurrentThreadFunctions();
138	if (!gl)
139		return;
140	gl->bindImageTexture(unit, texture, level, layered, layer, access, format);
141}
142
143void glwBindImageTextures (GLuint first, GLsizei count, const GLuint *textures)
144{
145	const glw::Functions* gl = glw::getCurrentThreadFunctions();
146	if (!gl)
147		return;
148	gl->bindImageTextures(first, count, textures);
149}
150
151void glwBindMultiTextureEXT (GLenum texunit, GLenum target, GLuint texture)
152{
153	const glw::Functions* gl = glw::getCurrentThreadFunctions();
154	if (!gl)
155		return;
156	gl->bindMultiTextureEXT(texunit, target, texture);
157}
158
159void glwBindProgramPipeline (GLuint pipeline)
160{
161	const glw::Functions* gl = glw::getCurrentThreadFunctions();
162	if (!gl)
163		return;
164	gl->bindProgramPipeline(pipeline);
165}
166
167void glwBindRenderbuffer (GLenum target, GLuint renderbuffer)
168{
169	const glw::Functions* gl = glw::getCurrentThreadFunctions();
170	if (!gl)
171		return;
172	gl->bindRenderbuffer(target, renderbuffer);
173}
174
175void glwBindSampler (GLuint unit, GLuint sampler)
176{
177	const glw::Functions* gl = glw::getCurrentThreadFunctions();
178	if (!gl)
179		return;
180	gl->bindSampler(unit, sampler);
181}
182
183void glwBindSamplers (GLuint first, GLsizei count, const GLuint *samplers)
184{
185	const glw::Functions* gl = glw::getCurrentThreadFunctions();
186	if (!gl)
187		return;
188	gl->bindSamplers(first, count, samplers);
189}
190
191void glwBindTexture (GLenum target, GLuint texture)
192{
193	const glw::Functions* gl = glw::getCurrentThreadFunctions();
194	if (!gl)
195		return;
196	gl->bindTexture(target, texture);
197}
198
199void glwBindTextureUnit (GLuint unit, GLuint texture)
200{
201	const glw::Functions* gl = glw::getCurrentThreadFunctions();
202	if (!gl)
203		return;
204	gl->bindTextureUnit(unit, texture);
205}
206
207void glwBindTextures (GLuint first, GLsizei count, const GLuint *textures)
208{
209	const glw::Functions* gl = glw::getCurrentThreadFunctions();
210	if (!gl)
211		return;
212	gl->bindTextures(first, count, textures);
213}
214
215void glwBindTransformFeedback (GLenum target, GLuint id)
216{
217	const glw::Functions* gl = glw::getCurrentThreadFunctions();
218	if (!gl)
219		return;
220	gl->bindTransformFeedback(target, id);
221}
222
223void glwBindVertexArray (GLuint array)
224{
225	const glw::Functions* gl = glw::getCurrentThreadFunctions();
226	if (!gl)
227		return;
228	gl->bindVertexArray(array);
229}
230
231void glwBindVertexBuffer (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride)
232{
233	const glw::Functions* gl = glw::getCurrentThreadFunctions();
234	if (!gl)
235		return;
236	gl->bindVertexBuffer(bindingindex, buffer, offset, stride);
237}
238
239void glwBindVertexBuffers (GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides)
240{
241	const glw::Functions* gl = glw::getCurrentThreadFunctions();
242	if (!gl)
243		return;
244	gl->bindVertexBuffers(first, count, buffers, offsets, strides);
245}
246
247void glwBlendBarrier (void)
248{
249	const glw::Functions* gl = glw::getCurrentThreadFunctions();
250	if (!gl)
251		return;
252	gl->blendBarrier();
253}
254
255void glwBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
256{
257	const glw::Functions* gl = glw::getCurrentThreadFunctions();
258	if (!gl)
259		return;
260	gl->blendColor(red, green, blue, alpha);
261}
262
263void glwBlendEquation (GLenum mode)
264{
265	const glw::Functions* gl = glw::getCurrentThreadFunctions();
266	if (!gl)
267		return;
268	gl->blendEquation(mode);
269}
270
271void glwBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha)
272{
273	const glw::Functions* gl = glw::getCurrentThreadFunctions();
274	if (!gl)
275		return;
276	gl->blendEquationSeparate(modeRGB, modeAlpha);
277}
278
279void glwBlendEquationSeparatei (GLuint buf, GLenum modeRGB, GLenum modeAlpha)
280{
281	const glw::Functions* gl = glw::getCurrentThreadFunctions();
282	if (!gl)
283		return;
284	gl->blendEquationSeparatei(buf, modeRGB, modeAlpha);
285}
286
287void glwBlendEquationi (GLuint buf, GLenum mode)
288{
289	const glw::Functions* gl = glw::getCurrentThreadFunctions();
290	if (!gl)
291		return;
292	gl->blendEquationi(buf, mode);
293}
294
295void glwBlendFunc (GLenum sfactor, GLenum dfactor)
296{
297	const glw::Functions* gl = glw::getCurrentThreadFunctions();
298	if (!gl)
299		return;
300	gl->blendFunc(sfactor, dfactor);
301}
302
303void glwBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
304{
305	const glw::Functions* gl = glw::getCurrentThreadFunctions();
306	if (!gl)
307		return;
308	gl->blendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha);
309}
310
311void glwBlendFuncSeparatei (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
312{
313	const glw::Functions* gl = glw::getCurrentThreadFunctions();
314	if (!gl)
315		return;
316	gl->blendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha);
317}
318
319void glwBlendFunci (GLuint buf, GLenum src, GLenum dst)
320{
321	const glw::Functions* gl = glw::getCurrentThreadFunctions();
322	if (!gl)
323		return;
324	gl->blendFunci(buf, src, dst);
325}
326
327void glwBlitFramebuffer (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
328{
329	const glw::Functions* gl = glw::getCurrentThreadFunctions();
330	if (!gl)
331		return;
332	gl->blitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
333}
334
335void glwBlitNamedFramebuffer (GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
336{
337	const glw::Functions* gl = glw::getCurrentThreadFunctions();
338	if (!gl)
339		return;
340	gl->blitNamedFramebuffer(readFramebuffer, drawFramebuffer, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
341}
342
343void glwBufferData (GLenum target, GLsizeiptr size, const void *data, GLenum usage)
344{
345	const glw::Functions* gl = glw::getCurrentThreadFunctions();
346	if (!gl)
347		return;
348	gl->bufferData(target, size, data, usage);
349}
350
351void glwBufferPageCommitmentARB (GLenum target, GLintptr offset, GLsizeiptr size, GLboolean commit)
352{
353	const glw::Functions* gl = glw::getCurrentThreadFunctions();
354	if (!gl)
355		return;
356	gl->bufferPageCommitmentARB(target, offset, size, commit);
357}
358
359void glwBufferStorage (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags)
360{
361	const glw::Functions* gl = glw::getCurrentThreadFunctions();
362	if (!gl)
363		return;
364	gl->bufferStorage(target, size, data, flags);
365}
366
367void glwBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const void *data)
368{
369	const glw::Functions* gl = glw::getCurrentThreadFunctions();
370	if (!gl)
371		return;
372	gl->bufferSubData(target, offset, size, data);
373}
374
375GLenum glwCheckFramebufferStatus (GLenum target)
376{
377	const glw::Functions* gl = glw::getCurrentThreadFunctions();
378	if (!gl)
379		return (GLenum)0;
380	return gl->checkFramebufferStatus(target);
381}
382
383GLenum glwCheckNamedFramebufferStatus (GLuint framebuffer, GLenum target)
384{
385	const glw::Functions* gl = glw::getCurrentThreadFunctions();
386	if (!gl)
387		return (GLenum)0;
388	return gl->checkNamedFramebufferStatus(framebuffer, target);
389}
390
391GLenum glwCheckNamedFramebufferStatusEXT (GLuint framebuffer, GLenum target)
392{
393	const glw::Functions* gl = glw::getCurrentThreadFunctions();
394	if (!gl)
395		return (GLenum)0;
396	return gl->checkNamedFramebufferStatusEXT(framebuffer, target);
397}
398
399void glwClampColor (GLenum target, GLenum clamp)
400{
401	const glw::Functions* gl = glw::getCurrentThreadFunctions();
402	if (!gl)
403		return;
404	gl->clampColor(target, clamp);
405}
406
407void glwClear (GLbitfield mask)
408{
409	const glw::Functions* gl = glw::getCurrentThreadFunctions();
410	if (!gl)
411		return;
412	gl->clear(mask);
413}
414
415void glwClearBufferData (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data)
416{
417	const glw::Functions* gl = glw::getCurrentThreadFunctions();
418	if (!gl)
419		return;
420	gl->clearBufferData(target, internalformat, format, type, data);
421}
422
423void glwClearBufferSubData (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data)
424{
425	const glw::Functions* gl = glw::getCurrentThreadFunctions();
426	if (!gl)
427		return;
428	gl->clearBufferSubData(target, internalformat, offset, size, format, type, data);
429}
430
431void glwClearBufferfi (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)
432{
433	const glw::Functions* gl = glw::getCurrentThreadFunctions();
434	if (!gl)
435		return;
436	gl->clearBufferfi(buffer, drawbuffer, depth, stencil);
437}
438
439void glwClearBufferfv (GLenum buffer, GLint drawbuffer, const GLfloat *value)
440{
441	const glw::Functions* gl = glw::getCurrentThreadFunctions();
442	if (!gl)
443		return;
444	gl->clearBufferfv(buffer, drawbuffer, value);
445}
446
447void glwClearBufferiv (GLenum buffer, GLint drawbuffer, const GLint *value)
448{
449	const glw::Functions* gl = glw::getCurrentThreadFunctions();
450	if (!gl)
451		return;
452	gl->clearBufferiv(buffer, drawbuffer, value);
453}
454
455void glwClearBufferuiv (GLenum buffer, GLint drawbuffer, const GLuint *value)
456{
457	const glw::Functions* gl = glw::getCurrentThreadFunctions();
458	if (!gl)
459		return;
460	gl->clearBufferuiv(buffer, drawbuffer, value);
461}
462
463void glwClearColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
464{
465	const glw::Functions* gl = glw::getCurrentThreadFunctions();
466	if (!gl)
467		return;
468	gl->clearColor(red, green, blue, alpha);
469}
470
471void glwClearDepth (GLdouble depth)
472{
473	const glw::Functions* gl = glw::getCurrentThreadFunctions();
474	if (!gl)
475		return;
476	gl->clearDepth(depth);
477}
478
479void glwClearDepthf (GLfloat d)
480{
481	const glw::Functions* gl = glw::getCurrentThreadFunctions();
482	if (!gl)
483		return;
484	gl->clearDepthf(d);
485}
486
487void glwClearNamedBufferData (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data)
488{
489	const glw::Functions* gl = glw::getCurrentThreadFunctions();
490	if (!gl)
491		return;
492	gl->clearNamedBufferData(buffer, internalformat, format, type, data);
493}
494
495void glwClearNamedBufferDataEXT (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data)
496{
497	const glw::Functions* gl = glw::getCurrentThreadFunctions();
498	if (!gl)
499		return;
500	gl->clearNamedBufferDataEXT(buffer, internalformat, format, type, data);
501}
502
503void glwClearNamedBufferSubData (GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data)
504{
505	const glw::Functions* gl = glw::getCurrentThreadFunctions();
506	if (!gl)
507		return;
508	gl->clearNamedBufferSubData(buffer, internalformat, offset, size, format, type, data);
509}
510
511void glwClearNamedBufferSubDataEXT (GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data)
512{
513	const glw::Functions* gl = glw::getCurrentThreadFunctions();
514	if (!gl)
515		return;
516	gl->clearNamedBufferSubDataEXT(buffer, internalformat, offset, size, format, type, data);
517}
518
519void glwClearNamedFramebufferfi (GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)
520{
521	const glw::Functions* gl = glw::getCurrentThreadFunctions();
522	if (!gl)
523		return;
524	gl->clearNamedFramebufferfi(framebuffer, buffer, drawbuffer, depth, stencil);
525}
526
527void glwClearNamedFramebufferfv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value)
528{
529	const glw::Functions* gl = glw::getCurrentThreadFunctions();
530	if (!gl)
531		return;
532	gl->clearNamedFramebufferfv(framebuffer, buffer, drawbuffer, value);
533}
534
535void glwClearNamedFramebufferiv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value)
536{
537	const glw::Functions* gl = glw::getCurrentThreadFunctions();
538	if (!gl)
539		return;
540	gl->clearNamedFramebufferiv(framebuffer, buffer, drawbuffer, value);
541}
542
543void glwClearNamedFramebufferuiv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value)
544{
545	const glw::Functions* gl = glw::getCurrentThreadFunctions();
546	if (!gl)
547		return;
548	gl->clearNamedFramebufferuiv(framebuffer, buffer, drawbuffer, value);
549}
550
551void glwClearStencil (GLint s)
552{
553	const glw::Functions* gl = glw::getCurrentThreadFunctions();
554	if (!gl)
555		return;
556	gl->clearStencil(s);
557}
558
559void glwClearTexImage (GLuint texture, GLint level, GLenum format, GLenum type, const void *data)
560{
561	const glw::Functions* gl = glw::getCurrentThreadFunctions();
562	if (!gl)
563		return;
564	gl->clearTexImage(texture, level, format, type, data);
565}
566
567void glwClearTexSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data)
568{
569	const glw::Functions* gl = glw::getCurrentThreadFunctions();
570	if (!gl)
571		return;
572	gl->clearTexSubImage(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data);
573}
574
575void glwClientAttribDefaultEXT (GLbitfield mask)
576{
577	const glw::Functions* gl = glw::getCurrentThreadFunctions();
578	if (!gl)
579		return;
580	gl->clientAttribDefaultEXT(mask);
581}
582
583GLenum glwClientWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout)
584{
585	const glw::Functions* gl = glw::getCurrentThreadFunctions();
586	if (!gl)
587		return (GLenum)0;
588	return gl->clientWaitSync(sync, flags, timeout);
589}
590
591void glwClipControl (GLenum origin, GLenum depth)
592{
593	const glw::Functions* gl = glw::getCurrentThreadFunctions();
594	if (!gl)
595		return;
596	gl->clipControl(origin, depth);
597}
598
599void glwColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
600{
601	const glw::Functions* gl = glw::getCurrentThreadFunctions();
602	if (!gl)
603		return;
604	gl->colorMask(red, green, blue, alpha);
605}
606
607void glwColorMaski (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a)
608{
609	const glw::Functions* gl = glw::getCurrentThreadFunctions();
610	if (!gl)
611		return;
612	gl->colorMaski(index, r, g, b, a);
613}
614
615void glwCompileShader (GLuint shader)
616{
617	const glw::Functions* gl = glw::getCurrentThreadFunctions();
618	if (!gl)
619		return;
620	gl->compileShader(shader);
621}
622
623void glwCompressedMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits)
624{
625	const glw::Functions* gl = glw::getCurrentThreadFunctions();
626	if (!gl)
627		return;
628	gl->compressedMultiTexImage1DEXT(texunit, target, level, internalformat, width, border, imageSize, bits);
629}
630
631void glwCompressedMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits)
632{
633	const glw::Functions* gl = glw::getCurrentThreadFunctions();
634	if (!gl)
635		return;
636	gl->compressedMultiTexImage2DEXT(texunit, target, level, internalformat, width, height, border, imageSize, bits);
637}
638
639void glwCompressedMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits)
640{
641	const glw::Functions* gl = glw::getCurrentThreadFunctions();
642	if (!gl)
643		return;
644	gl->compressedMultiTexImage3DEXT(texunit, target, level, internalformat, width, height, depth, border, imageSize, bits);
645}
646
647void glwCompressedMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits)
648{
649	const glw::Functions* gl = glw::getCurrentThreadFunctions();
650	if (!gl)
651		return;
652	gl->compressedMultiTexSubImage1DEXT(texunit, target, level, xoffset, width, format, imageSize, bits);
653}
654
655void glwCompressedMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits)
656{
657	const glw::Functions* gl = glw::getCurrentThreadFunctions();
658	if (!gl)
659		return;
660	gl->compressedMultiTexSubImage2DEXT(texunit, target, level, xoffset, yoffset, width, height, format, imageSize, bits);
661}
662
663void glwCompressedMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits)
664{
665	const glw::Functions* gl = glw::getCurrentThreadFunctions();
666	if (!gl)
667		return;
668	gl->compressedMultiTexSubImage3DEXT(texunit, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bits);
669}
670
671void glwCompressedTexImage1D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data)
672{
673	const glw::Functions* gl = glw::getCurrentThreadFunctions();
674	if (!gl)
675		return;
676	gl->compressedTexImage1D(target, level, internalformat, width, border, imageSize, data);
677}
678
679void glwCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data)
680{
681	const glw::Functions* gl = glw::getCurrentThreadFunctions();
682	if (!gl)
683		return;
684	gl->compressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data);
685}
686
687void glwCompressedTexImage3D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data)
688{
689	const glw::Functions* gl = glw::getCurrentThreadFunctions();
690	if (!gl)
691		return;
692	gl->compressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data);
693}
694
695void glwCompressedTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data)
696{
697	const glw::Functions* gl = glw::getCurrentThreadFunctions();
698	if (!gl)
699		return;
700	gl->compressedTexImage3DOES(target, level, internalformat, width, height, depth, border, imageSize, data);
701}
702
703void glwCompressedTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data)
704{
705	const glw::Functions* gl = glw::getCurrentThreadFunctions();
706	if (!gl)
707		return;
708	gl->compressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data);
709}
710
711void glwCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data)
712{
713	const glw::Functions* gl = glw::getCurrentThreadFunctions();
714	if (!gl)
715		return;
716	gl->compressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data);
717}
718
719void glwCompressedTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data)
720{
721	const glw::Functions* gl = glw::getCurrentThreadFunctions();
722	if (!gl)
723		return;
724	gl->compressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
725}
726
727void glwCompressedTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data)
728{
729	const glw::Functions* gl = glw::getCurrentThreadFunctions();
730	if (!gl)
731		return;
732	gl->compressedTexSubImage3DOES(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
733}
734
735void glwCompressedTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits)
736{
737	const glw::Functions* gl = glw::getCurrentThreadFunctions();
738	if (!gl)
739		return;
740	gl->compressedTextureImage1DEXT(texture, target, level, internalformat, width, border, imageSize, bits);
741}
742
743void glwCompressedTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits)
744{
745	const glw::Functions* gl = glw::getCurrentThreadFunctions();
746	if (!gl)
747		return;
748	gl->compressedTextureImage2DEXT(texture, target, level, internalformat, width, height, border, imageSize, bits);
749}
750
751void glwCompressedTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits)
752{
753	const glw::Functions* gl = glw::getCurrentThreadFunctions();
754	if (!gl)
755		return;
756	gl->compressedTextureImage3DEXT(texture, target, level, internalformat, width, height, depth, border, imageSize, bits);
757}
758
759void glwCompressedTextureSubImage1D (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data)
760{
761	const glw::Functions* gl = glw::getCurrentThreadFunctions();
762	if (!gl)
763		return;
764	gl->compressedTextureSubImage1D(texture, level, xoffset, width, format, imageSize, data);
765}
766
767void glwCompressedTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits)
768{
769	const glw::Functions* gl = glw::getCurrentThreadFunctions();
770	if (!gl)
771		return;
772	gl->compressedTextureSubImage1DEXT(texture, target, level, xoffset, width, format, imageSize, bits);
773}
774
775void glwCompressedTextureSubImage2D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data)
776{
777	const glw::Functions* gl = glw::getCurrentThreadFunctions();
778	if (!gl)
779		return;
780	gl->compressedTextureSubImage2D(texture, level, xoffset, yoffset, width, height, format, imageSize, data);
781}
782
783void glwCompressedTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits)
784{
785	const glw::Functions* gl = glw::getCurrentThreadFunctions();
786	if (!gl)
787		return;
788	gl->compressedTextureSubImage2DEXT(texture, target, level, xoffset, yoffset, width, height, format, imageSize, bits);
789}
790
791void glwCompressedTextureSubImage3D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data)
792{
793	const glw::Functions* gl = glw::getCurrentThreadFunctions();
794	if (!gl)
795		return;
796	gl->compressedTextureSubImage3D(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
797}
798
799void glwCompressedTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits)
800{
801	const glw::Functions* gl = glw::getCurrentThreadFunctions();
802	if (!gl)
803		return;
804	gl->compressedTextureSubImage3DEXT(texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bits);
805}
806
807void glwCopyBufferSubData (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
808{
809	const glw::Functions* gl = glw::getCurrentThreadFunctions();
810	if (!gl)
811		return;
812	gl->copyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size);
813}
814
815void glwCopyImageSubData (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth)
816{
817	const glw::Functions* gl = glw::getCurrentThreadFunctions();
818	if (!gl)
819		return;
820	gl->copyImageSubData(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth);
821}
822
823void glwCopyMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)
824{
825	const glw::Functions* gl = glw::getCurrentThreadFunctions();
826	if (!gl)
827		return;
828	gl->copyMultiTexImage1DEXT(texunit, target, level, internalformat, x, y, width, border);
829}
830
831void glwCopyMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
832{
833	const glw::Functions* gl = glw::getCurrentThreadFunctions();
834	if (!gl)
835		return;
836	gl->copyMultiTexImage2DEXT(texunit, target, level, internalformat, x, y, width, height, border);
837}
838
839void glwCopyMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)
840{
841	const glw::Functions* gl = glw::getCurrentThreadFunctions();
842	if (!gl)
843		return;
844	gl->copyMultiTexSubImage1DEXT(texunit, target, level, xoffset, x, y, width);
845}
846
847void glwCopyMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
848{
849	const glw::Functions* gl = glw::getCurrentThreadFunctions();
850	if (!gl)
851		return;
852	gl->copyMultiTexSubImage2DEXT(texunit, target, level, xoffset, yoffset, x, y, width, height);
853}
854
855void glwCopyMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
856{
857	const glw::Functions* gl = glw::getCurrentThreadFunctions();
858	if (!gl)
859		return;
860	gl->copyMultiTexSubImage3DEXT(texunit, target, level, xoffset, yoffset, zoffset, x, y, width, height);
861}
862
863void glwCopyNamedBufferSubData (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
864{
865	const glw::Functions* gl = glw::getCurrentThreadFunctions();
866	if (!gl)
867		return;
868	gl->copyNamedBufferSubData(readBuffer, writeBuffer, readOffset, writeOffset, size);
869}
870
871void glwCopyTexImage1D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)
872{
873	const glw::Functions* gl = glw::getCurrentThreadFunctions();
874	if (!gl)
875		return;
876	gl->copyTexImage1D(target, level, internalformat, x, y, width, border);
877}
878
879void glwCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
880{
881	const glw::Functions* gl = glw::getCurrentThreadFunctions();
882	if (!gl)
883		return;
884	gl->copyTexImage2D(target, level, internalformat, x, y, width, height, border);
885}
886
887void glwCopyTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)
888{
889	const glw::Functions* gl = glw::getCurrentThreadFunctions();
890	if (!gl)
891		return;
892	gl->copyTexSubImage1D(target, level, xoffset, x, y, width);
893}
894
895void glwCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
896{
897	const glw::Functions* gl = glw::getCurrentThreadFunctions();
898	if (!gl)
899		return;
900	gl->copyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height);
901}
902
903void glwCopyTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
904{
905	const glw::Functions* gl = glw::getCurrentThreadFunctions();
906	if (!gl)
907		return;
908	gl->copyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height);
909}
910
911void glwCopyTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
912{
913	const glw::Functions* gl = glw::getCurrentThreadFunctions();
914	if (!gl)
915		return;
916	gl->copyTexSubImage3DOES(target, level, xoffset, yoffset, zoffset, x, y, width, height);
917}
918
919void glwCopyTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)
920{
921	const glw::Functions* gl = glw::getCurrentThreadFunctions();
922	if (!gl)
923		return;
924	gl->copyTextureImage1DEXT(texture, target, level, internalformat, x, y, width, border);
925}
926
927void glwCopyTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
928{
929	const glw::Functions* gl = glw::getCurrentThreadFunctions();
930	if (!gl)
931		return;
932	gl->copyTextureImage2DEXT(texture, target, level, internalformat, x, y, width, height, border);
933}
934
935void glwCopyTextureSubImage1D (GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)
936{
937	const glw::Functions* gl = glw::getCurrentThreadFunctions();
938	if (!gl)
939		return;
940	gl->copyTextureSubImage1D(texture, level, xoffset, x, y, width);
941}
942
943void glwCopyTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)
944{
945	const glw::Functions* gl = glw::getCurrentThreadFunctions();
946	if (!gl)
947		return;
948	gl->copyTextureSubImage1DEXT(texture, target, level, xoffset, x, y, width);
949}
950
951void glwCopyTextureSubImage2D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
952{
953	const glw::Functions* gl = glw::getCurrentThreadFunctions();
954	if (!gl)
955		return;
956	gl->copyTextureSubImage2D(texture, level, xoffset, yoffset, x, y, width, height);
957}
958
959void glwCopyTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
960{
961	const glw::Functions* gl = glw::getCurrentThreadFunctions();
962	if (!gl)
963		return;
964	gl->copyTextureSubImage2DEXT(texture, target, level, xoffset, yoffset, x, y, width, height);
965}
966
967void glwCopyTextureSubImage3D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
968{
969	const glw::Functions* gl = glw::getCurrentThreadFunctions();
970	if (!gl)
971		return;
972	gl->copyTextureSubImage3D(texture, level, xoffset, yoffset, zoffset, x, y, width, height);
973}
974
975void glwCopyTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
976{
977	const glw::Functions* gl = glw::getCurrentThreadFunctions();
978	if (!gl)
979		return;
980	gl->copyTextureSubImage3DEXT(texture, target, level, xoffset, yoffset, zoffset, x, y, width, height);
981}
982
983void glwCreateBuffers (GLsizei n, GLuint *buffers)
984{
985	const glw::Functions* gl = glw::getCurrentThreadFunctions();
986	if (!gl)
987		return;
988	gl->createBuffers(n, buffers);
989}
990
991void glwCreateFramebuffers (GLsizei n, GLuint *framebuffers)
992{
993	const glw::Functions* gl = glw::getCurrentThreadFunctions();
994	if (!gl)
995		return;
996	gl->createFramebuffers(n, framebuffers);
997}
998
999GLuint glwCreateProgram (void)
1000{
1001	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1002	if (!gl)
1003		return (GLuint)0;
1004	return gl->createProgram();
1005}
1006
1007void glwCreateProgramPipelines (GLsizei n, GLuint *pipelines)
1008{
1009	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1010	if (!gl)
1011		return;
1012	gl->createProgramPipelines(n, pipelines);
1013}
1014
1015void glwCreateQueries (GLenum target, GLsizei n, GLuint *ids)
1016{
1017	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1018	if (!gl)
1019		return;
1020	gl->createQueries(target, n, ids);
1021}
1022
1023void glwCreateRenderbuffers (GLsizei n, GLuint *renderbuffers)
1024{
1025	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1026	if (!gl)
1027		return;
1028	gl->createRenderbuffers(n, renderbuffers);
1029}
1030
1031void glwCreateSamplers (GLsizei n, GLuint *samplers)
1032{
1033	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1034	if (!gl)
1035		return;
1036	gl->createSamplers(n, samplers);
1037}
1038
1039GLuint glwCreateShader (GLenum type)
1040{
1041	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1042	if (!gl)
1043		return (GLuint)0;
1044	return gl->createShader(type);
1045}
1046
1047GLuint glwCreateShaderProgramv (GLenum type, GLsizei count, const GLchar *const*strings)
1048{
1049	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1050	if (!gl)
1051		return (GLuint)0;
1052	return gl->createShaderProgramv(type, count, strings);
1053}
1054
1055void glwCreateTextures (GLenum target, GLsizei n, GLuint *textures)
1056{
1057	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1058	if (!gl)
1059		return;
1060	gl->createTextures(target, n, textures);
1061}
1062
1063void glwCreateTransformFeedbacks (GLsizei n, GLuint *ids)
1064{
1065	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1066	if (!gl)
1067		return;
1068	gl->createTransformFeedbacks(n, ids);
1069}
1070
1071void glwCreateVertexArrays (GLsizei n, GLuint *arrays)
1072{
1073	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1074	if (!gl)
1075		return;
1076	gl->createVertexArrays(n, arrays);
1077}
1078
1079void glwCullFace (GLenum mode)
1080{
1081	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1082	if (!gl)
1083		return;
1084	gl->cullFace(mode);
1085}
1086
1087void glwDebugMessageCallback (GLDEBUGPROC callback, const void *userParam)
1088{
1089	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1090	if (!gl)
1091		return;
1092	gl->debugMessageCallback(callback, userParam);
1093}
1094
1095void glwDebugMessageControl (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled)
1096{
1097	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1098	if (!gl)
1099		return;
1100	gl->debugMessageControl(source, type, severity, count, ids, enabled);
1101}
1102
1103void glwDebugMessageInsert (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf)
1104{
1105	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1106	if (!gl)
1107		return;
1108	gl->debugMessageInsert(source, type, id, severity, length, buf);
1109}
1110
1111void glwDeleteBuffers (GLsizei n, const GLuint *buffers)
1112{
1113	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1114	if (!gl)
1115		return;
1116	gl->deleteBuffers(n, buffers);
1117}
1118
1119void glwDeleteFramebuffers (GLsizei n, const GLuint *framebuffers)
1120{
1121	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1122	if (!gl)
1123		return;
1124	gl->deleteFramebuffers(n, framebuffers);
1125}
1126
1127void glwDeleteProgram (GLuint program)
1128{
1129	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1130	if (!gl)
1131		return;
1132	gl->deleteProgram(program);
1133}
1134
1135void glwDeleteProgramPipelines (GLsizei n, const GLuint *pipelines)
1136{
1137	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1138	if (!gl)
1139		return;
1140	gl->deleteProgramPipelines(n, pipelines);
1141}
1142
1143void glwDeleteQueries (GLsizei n, const GLuint *ids)
1144{
1145	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1146	if (!gl)
1147		return;
1148	gl->deleteQueries(n, ids);
1149}
1150
1151void glwDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers)
1152{
1153	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1154	if (!gl)
1155		return;
1156	gl->deleteRenderbuffers(n, renderbuffers);
1157}
1158
1159void glwDeleteSamplers (GLsizei count, const GLuint *samplers)
1160{
1161	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1162	if (!gl)
1163		return;
1164	gl->deleteSamplers(count, samplers);
1165}
1166
1167void glwDeleteShader (GLuint shader)
1168{
1169	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1170	if (!gl)
1171		return;
1172	gl->deleteShader(shader);
1173}
1174
1175void glwDeleteSync (GLsync sync)
1176{
1177	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1178	if (!gl)
1179		return;
1180	gl->deleteSync(sync);
1181}
1182
1183void glwDeleteTextures (GLsizei n, const GLuint *textures)
1184{
1185	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1186	if (!gl)
1187		return;
1188	gl->deleteTextures(n, textures);
1189}
1190
1191void glwDeleteTransformFeedbacks (GLsizei n, const GLuint *ids)
1192{
1193	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1194	if (!gl)
1195		return;
1196	gl->deleteTransformFeedbacks(n, ids);
1197}
1198
1199void glwDeleteVertexArrays (GLsizei n, const GLuint *arrays)
1200{
1201	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1202	if (!gl)
1203		return;
1204	gl->deleteVertexArrays(n, arrays);
1205}
1206
1207void glwDepthBoundsEXT (GLclampd zmin, GLclampd zmax)
1208{
1209	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1210	if (!gl)
1211		return;
1212	gl->depthBoundsEXT(zmin, zmax);
1213}
1214
1215void glwDepthFunc (GLenum func)
1216{
1217	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1218	if (!gl)
1219		return;
1220	gl->depthFunc(func);
1221}
1222
1223void glwDepthMask (GLboolean flag)
1224{
1225	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1226	if (!gl)
1227		return;
1228	gl->depthMask(flag);
1229}
1230
1231void glwDepthRange (GLdouble n, GLdouble f)
1232{
1233	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1234	if (!gl)
1235		return;
1236	gl->depthRange(n, f);
1237}
1238
1239void glwDepthRangeArrayfvOES (GLuint first, GLsizei count, const GLfloat *v)
1240{
1241	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1242	if (!gl)
1243		return;
1244	gl->depthRangeArrayfvOES(first, count, v);
1245}
1246
1247void glwDepthRangeArrayv (GLuint first, GLsizei count, const GLdouble *v)
1248{
1249	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1250	if (!gl)
1251		return;
1252	gl->depthRangeArrayv(first, count, v);
1253}
1254
1255void glwDepthRangeIndexed (GLuint index, GLdouble n, GLdouble f)
1256{
1257	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1258	if (!gl)
1259		return;
1260	gl->depthRangeIndexed(index, n, f);
1261}
1262
1263void glwDepthRangeIndexedfOES (GLuint index, GLfloat n, GLfloat f)
1264{
1265	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1266	if (!gl)
1267		return;
1268	gl->depthRangeIndexedfOES(index, n, f);
1269}
1270
1271void glwDepthRangef (GLfloat n, GLfloat f)
1272{
1273	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1274	if (!gl)
1275		return;
1276	gl->depthRangef(n, f);
1277}
1278
1279void glwDetachShader (GLuint program, GLuint shader)
1280{
1281	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1282	if (!gl)
1283		return;
1284	gl->detachShader(program, shader);
1285}
1286
1287void glwDisable (GLenum cap)
1288{
1289	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1290	if (!gl)
1291		return;
1292	gl->disable(cap);
1293}
1294
1295void glwDisableClientStateIndexedEXT (GLenum array, GLuint index)
1296{
1297	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1298	if (!gl)
1299		return;
1300	gl->disableClientStateIndexedEXT(array, index);
1301}
1302
1303void glwDisableClientStateiEXT (GLenum array, GLuint index)
1304{
1305	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1306	if (!gl)
1307		return;
1308	gl->disableClientStateiEXT(array, index);
1309}
1310
1311void glwDisableVertexArrayAttrib (GLuint vaobj, GLuint index)
1312{
1313	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1314	if (!gl)
1315		return;
1316	gl->disableVertexArrayAttrib(vaobj, index);
1317}
1318
1319void glwDisableVertexArrayAttribEXT (GLuint vaobj, GLuint index)
1320{
1321	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1322	if (!gl)
1323		return;
1324	gl->disableVertexArrayAttribEXT(vaobj, index);
1325}
1326
1327void glwDisableVertexArrayEXT (GLuint vaobj, GLenum array)
1328{
1329	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1330	if (!gl)
1331		return;
1332	gl->disableVertexArrayEXT(vaobj, array);
1333}
1334
1335void glwDisableVertexAttribArray (GLuint index)
1336{
1337	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1338	if (!gl)
1339		return;
1340	gl->disableVertexAttribArray(index);
1341}
1342
1343void glwDisablei (GLenum target, GLuint index)
1344{
1345	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1346	if (!gl)
1347		return;
1348	gl->disablei(target, index);
1349}
1350
1351void glwDispatchCompute (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z)
1352{
1353	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1354	if (!gl)
1355		return;
1356	gl->dispatchCompute(num_groups_x, num_groups_y, num_groups_z);
1357}
1358
1359void glwDispatchComputeIndirect (GLintptr indirect)
1360{
1361	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1362	if (!gl)
1363		return;
1364	gl->dispatchComputeIndirect(indirect);
1365}
1366
1367void glwDrawArrays (GLenum mode, GLint first, GLsizei count)
1368{
1369	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1370	if (!gl)
1371		return;
1372	gl->drawArrays(mode, first, count);
1373}
1374
1375void glwDrawArraysIndirect (GLenum mode, const void *indirect)
1376{
1377	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1378	if (!gl)
1379		return;
1380	gl->drawArraysIndirect(mode, indirect);
1381}
1382
1383void glwDrawArraysInstanced (GLenum mode, GLint first, GLsizei count, GLsizei instancecount)
1384{
1385	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1386	if (!gl)
1387		return;
1388	gl->drawArraysInstanced(mode, first, count, instancecount);
1389}
1390
1391void glwDrawArraysInstancedBaseInstance (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance)
1392{
1393	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1394	if (!gl)
1395		return;
1396	gl->drawArraysInstancedBaseInstance(mode, first, count, instancecount, baseinstance);
1397}
1398
1399void glwDrawBuffer (GLenum buf)
1400{
1401	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1402	if (!gl)
1403		return;
1404	gl->drawBuffer(buf);
1405}
1406
1407void glwDrawBuffers (GLsizei n, const GLenum *bufs)
1408{
1409	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1410	if (!gl)
1411		return;
1412	gl->drawBuffers(n, bufs);
1413}
1414
1415void glwDrawElements (GLenum mode, GLsizei count, GLenum type, const void *indices)
1416{
1417	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1418	if (!gl)
1419		return;
1420	gl->drawElements(mode, count, type, indices);
1421}
1422
1423void glwDrawElementsBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex)
1424{
1425	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1426	if (!gl)
1427		return;
1428	gl->drawElementsBaseVertex(mode, count, type, indices, basevertex);
1429}
1430
1431void glwDrawElementsIndirect (GLenum mode, GLenum type, const void *indirect)
1432{
1433	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1434	if (!gl)
1435		return;
1436	gl->drawElementsIndirect(mode, type, indirect);
1437}
1438
1439void glwDrawElementsInstanced (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount)
1440{
1441	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1442	if (!gl)
1443		return;
1444	gl->drawElementsInstanced(mode, count, type, indices, instancecount);
1445}
1446
1447void glwDrawElementsInstancedBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance)
1448{
1449	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1450	if (!gl)
1451		return;
1452	gl->drawElementsInstancedBaseInstance(mode, count, type, indices, instancecount, baseinstance);
1453}
1454
1455void glwDrawElementsInstancedBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex)
1456{
1457	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1458	if (!gl)
1459		return;
1460	gl->drawElementsInstancedBaseVertex(mode, count, type, indices, instancecount, basevertex);
1461}
1462
1463void glwDrawElementsInstancedBaseVertexBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance)
1464{
1465	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1466	if (!gl)
1467		return;
1468	gl->drawElementsInstancedBaseVertexBaseInstance(mode, count, type, indices, instancecount, basevertex, baseinstance);
1469}
1470
1471void glwDrawRangeElements (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices)
1472{
1473	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1474	if (!gl)
1475		return;
1476	gl->drawRangeElements(mode, start, end, count, type, indices);
1477}
1478
1479void glwDrawRangeElementsBaseVertex (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex)
1480{
1481	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1482	if (!gl)
1483		return;
1484	gl->drawRangeElementsBaseVertex(mode, start, end, count, type, indices, basevertex);
1485}
1486
1487void glwDrawTransformFeedback (GLenum mode, GLuint id)
1488{
1489	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1490	if (!gl)
1491		return;
1492	gl->drawTransformFeedback(mode, id);
1493}
1494
1495void glwDrawTransformFeedbackInstanced (GLenum mode, GLuint id, GLsizei instancecount)
1496{
1497	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1498	if (!gl)
1499		return;
1500	gl->drawTransformFeedbackInstanced(mode, id, instancecount);
1501}
1502
1503void glwDrawTransformFeedbackStream (GLenum mode, GLuint id, GLuint stream)
1504{
1505	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1506	if (!gl)
1507		return;
1508	gl->drawTransformFeedbackStream(mode, id, stream);
1509}
1510
1511void glwDrawTransformFeedbackStreamInstanced (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount)
1512{
1513	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1514	if (!gl)
1515		return;
1516	gl->drawTransformFeedbackStreamInstanced(mode, id, stream, instancecount);
1517}
1518
1519void glwEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image)
1520{
1521	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1522	if (!gl)
1523		return;
1524	gl->eglImageTargetRenderbufferStorageOES(target, image);
1525}
1526
1527void glwEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image)
1528{
1529	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1530	if (!gl)
1531		return;
1532	gl->eglImageTargetTexture2DOES(target, image);
1533}
1534
1535void glwEnable (GLenum cap)
1536{
1537	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1538	if (!gl)
1539		return;
1540	gl->enable(cap);
1541}
1542
1543void glwEnableClientStateIndexedEXT (GLenum array, GLuint index)
1544{
1545	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1546	if (!gl)
1547		return;
1548	gl->enableClientStateIndexedEXT(array, index);
1549}
1550
1551void glwEnableClientStateiEXT (GLenum array, GLuint index)
1552{
1553	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1554	if (!gl)
1555		return;
1556	gl->enableClientStateiEXT(array, index);
1557}
1558
1559void glwEnableVertexArrayAttrib (GLuint vaobj, GLuint index)
1560{
1561	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1562	if (!gl)
1563		return;
1564	gl->enableVertexArrayAttrib(vaobj, index);
1565}
1566
1567void glwEnableVertexArrayAttribEXT (GLuint vaobj, GLuint index)
1568{
1569	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1570	if (!gl)
1571		return;
1572	gl->enableVertexArrayAttribEXT(vaobj, index);
1573}
1574
1575void glwEnableVertexArrayEXT (GLuint vaobj, GLenum array)
1576{
1577	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1578	if (!gl)
1579		return;
1580	gl->enableVertexArrayEXT(vaobj, array);
1581}
1582
1583void glwEnableVertexAttribArray (GLuint index)
1584{
1585	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1586	if (!gl)
1587		return;
1588	gl->enableVertexAttribArray(index);
1589}
1590
1591void glwEnablei (GLenum target, GLuint index)
1592{
1593	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1594	if (!gl)
1595		return;
1596	gl->enablei(target, index);
1597}
1598
1599void glwEndConditionalRender (void)
1600{
1601	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1602	if (!gl)
1603		return;
1604	gl->endConditionalRender();
1605}
1606
1607void glwEndQuery (GLenum target)
1608{
1609	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1610	if (!gl)
1611		return;
1612	gl->endQuery(target);
1613}
1614
1615void glwEndQueryIndexed (GLenum target, GLuint index)
1616{
1617	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1618	if (!gl)
1619		return;
1620	gl->endQueryIndexed(target, index);
1621}
1622
1623void glwEndTransformFeedback (void)
1624{
1625	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1626	if (!gl)
1627		return;
1628	gl->endTransformFeedback();
1629}
1630
1631GLsync glwFenceSync (GLenum condition, GLbitfield flags)
1632{
1633	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1634	if (!gl)
1635		return (GLsync)0;
1636	return gl->fenceSync(condition, flags);
1637}
1638
1639void glwFinish (void)
1640{
1641	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1642	if (!gl)
1643		return;
1644	gl->finish();
1645}
1646
1647void glwFlush (void)
1648{
1649	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1650	if (!gl)
1651		return;
1652	gl->flush();
1653}
1654
1655void glwFlushMappedBufferRange (GLenum target, GLintptr offset, GLsizeiptr length)
1656{
1657	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1658	if (!gl)
1659		return;
1660	gl->flushMappedBufferRange(target, offset, length);
1661}
1662
1663void glwFlushMappedNamedBufferRange (GLuint buffer, GLintptr offset, GLsizeiptr length)
1664{
1665	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1666	if (!gl)
1667		return;
1668	gl->flushMappedNamedBufferRange(buffer, offset, length);
1669}
1670
1671void glwFlushMappedNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length)
1672{
1673	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1674	if (!gl)
1675		return;
1676	gl->flushMappedNamedBufferRangeEXT(buffer, offset, length);
1677}
1678
1679void glwFramebufferDrawBufferEXT (GLuint framebuffer, GLenum mode)
1680{
1681	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1682	if (!gl)
1683		return;
1684	gl->framebufferDrawBufferEXT(framebuffer, mode);
1685}
1686
1687void glwFramebufferDrawBuffersEXT (GLuint framebuffer, GLsizei n, const GLenum *bufs)
1688{
1689	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1690	if (!gl)
1691		return;
1692	gl->framebufferDrawBuffersEXT(framebuffer, n, bufs);
1693}
1694
1695void glwFramebufferParameteri (GLenum target, GLenum pname, GLint param)
1696{
1697	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1698	if (!gl)
1699		return;
1700	gl->framebufferParameteri(target, pname, param);
1701}
1702
1703void glwFramebufferReadBufferEXT (GLuint framebuffer, GLenum mode)
1704{
1705	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1706	if (!gl)
1707		return;
1708	gl->framebufferReadBufferEXT(framebuffer, mode);
1709}
1710
1711void glwFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
1712{
1713	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1714	if (!gl)
1715		return;
1716	gl->framebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer);
1717}
1718
1719void glwFramebufferShadingRateEXT (GLenum target, GLenum attachment, GLuint texture, GLint baseLayer, GLsizei numLayers, GLsizei texelWidth, GLsizei texelHeight)
1720{
1721	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1722	if (!gl)
1723		return;
1724	gl->framebufferShadingRateEXT(target, attachment, texture, baseLayer, numLayers, texelWidth, texelHeight);
1725}
1726
1727void glwFramebufferTexture (GLenum target, GLenum attachment, GLuint texture, GLint level)
1728{
1729	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1730	if (!gl)
1731		return;
1732	gl->framebufferTexture(target, attachment, texture, level);
1733}
1734
1735void glwFramebufferTexture1D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
1736{
1737	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1738	if (!gl)
1739		return;
1740	gl->framebufferTexture1D(target, attachment, textarget, texture, level);
1741}
1742
1743void glwFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
1744{
1745	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1746	if (!gl)
1747		return;
1748	gl->framebufferTexture2D(target, attachment, textarget, texture, level);
1749}
1750
1751void glwFramebufferTexture2DMultisampleEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples)
1752{
1753	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1754	if (!gl)
1755		return;
1756	gl->framebufferTexture2DMultisampleEXT(target, attachment, textarget, texture, level, samples);
1757}
1758
1759void glwFramebufferTexture3D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
1760{
1761	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1762	if (!gl)
1763		return;
1764	gl->framebufferTexture3D(target, attachment, textarget, texture, level, zoffset);
1765}
1766
1767void glwFramebufferTexture3DOES (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
1768{
1769	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1770	if (!gl)
1771		return;
1772	gl->framebufferTexture3DOES(target, attachment, textarget, texture, level, zoffset);
1773}
1774
1775void glwFramebufferTextureLayer (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
1776{
1777	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1778	if (!gl)
1779		return;
1780	gl->framebufferTextureLayer(target, attachment, texture, level, layer);
1781}
1782
1783void glwFramebufferTextureMultisampleMultiviewOVR (GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews)
1784{
1785	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1786	if (!gl)
1787		return;
1788	gl->framebufferTextureMultisampleMultiviewOVR(target, attachment, texture, level, samples, baseViewIndex, numViews);
1789}
1790
1791void glwFramebufferTextureMultiviewOVR (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews)
1792{
1793	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1794	if (!gl)
1795		return;
1796	gl->framebufferTextureMultiviewOVR(target, attachment, texture, level, baseViewIndex, numViews);
1797}
1798
1799void glwFrontFace (GLenum mode)
1800{
1801	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1802	if (!gl)
1803		return;
1804	gl->frontFace(mode);
1805}
1806
1807void glwGenBuffers (GLsizei n, GLuint *buffers)
1808{
1809	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1810	if (!gl)
1811		return;
1812	gl->genBuffers(n, buffers);
1813}
1814
1815void glwGenFramebuffers (GLsizei n, GLuint *framebuffers)
1816{
1817	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1818	if (!gl)
1819		return;
1820	gl->genFramebuffers(n, framebuffers);
1821}
1822
1823void glwGenProgramPipelines (GLsizei n, GLuint *pipelines)
1824{
1825	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1826	if (!gl)
1827		return;
1828	gl->genProgramPipelines(n, pipelines);
1829}
1830
1831void glwGenQueries (GLsizei n, GLuint *ids)
1832{
1833	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1834	if (!gl)
1835		return;
1836	gl->genQueries(n, ids);
1837}
1838
1839void glwGenRenderbuffers (GLsizei n, GLuint *renderbuffers)
1840{
1841	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1842	if (!gl)
1843		return;
1844	gl->genRenderbuffers(n, renderbuffers);
1845}
1846
1847void glwGenSamplers (GLsizei count, GLuint *samplers)
1848{
1849	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1850	if (!gl)
1851		return;
1852	gl->genSamplers(count, samplers);
1853}
1854
1855void glwGenTextures (GLsizei n, GLuint *textures)
1856{
1857	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1858	if (!gl)
1859		return;
1860	gl->genTextures(n, textures);
1861}
1862
1863void glwGenTransformFeedbacks (GLsizei n, GLuint *ids)
1864{
1865	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1866	if (!gl)
1867		return;
1868	gl->genTransformFeedbacks(n, ids);
1869}
1870
1871void glwGenVertexArrays (GLsizei n, GLuint *arrays)
1872{
1873	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1874	if (!gl)
1875		return;
1876	gl->genVertexArrays(n, arrays);
1877}
1878
1879void glwGenerateMipmap (GLenum target)
1880{
1881	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1882	if (!gl)
1883		return;
1884	gl->generateMipmap(target);
1885}
1886
1887void glwGenerateMultiTexMipmapEXT (GLenum texunit, GLenum target)
1888{
1889	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1890	if (!gl)
1891		return;
1892	gl->generateMultiTexMipmapEXT(texunit, target);
1893}
1894
1895void glwGenerateTextureMipmap (GLuint texture)
1896{
1897	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1898	if (!gl)
1899		return;
1900	gl->generateTextureMipmap(texture);
1901}
1902
1903void glwGenerateTextureMipmapEXT (GLuint texture, GLenum target)
1904{
1905	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1906	if (!gl)
1907		return;
1908	gl->generateTextureMipmapEXT(texture, target);
1909}
1910
1911void glwGetActiveAtomicCounterBufferiv (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params)
1912{
1913	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1914	if (!gl)
1915		return;
1916	gl->getActiveAtomicCounterBufferiv(program, bufferIndex, pname, params);
1917}
1918
1919void glwGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name)
1920{
1921	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1922	if (!gl)
1923		return;
1924	gl->getActiveAttrib(program, index, bufSize, length, size, type, name);
1925}
1926
1927void glwGetActiveSubroutineName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name)
1928{
1929	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1930	if (!gl)
1931		return;
1932	gl->getActiveSubroutineName(program, shadertype, index, bufSize, length, name);
1933}
1934
1935void glwGetActiveSubroutineUniformName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name)
1936{
1937	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1938	if (!gl)
1939		return;
1940	gl->getActiveSubroutineUniformName(program, shadertype, index, bufSize, length, name);
1941}
1942
1943void glwGetActiveSubroutineUniformiv (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values)
1944{
1945	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1946	if (!gl)
1947		return;
1948	gl->getActiveSubroutineUniformiv(program, shadertype, index, pname, values);
1949}
1950
1951void glwGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name)
1952{
1953	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1954	if (!gl)
1955		return;
1956	gl->getActiveUniform(program, index, bufSize, length, size, type, name);
1957}
1958
1959void glwGetActiveUniformBlockName (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName)
1960{
1961	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1962	if (!gl)
1963		return;
1964	gl->getActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName);
1965}
1966
1967void glwGetActiveUniformBlockiv (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params)
1968{
1969	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1970	if (!gl)
1971		return;
1972	gl->getActiveUniformBlockiv(program, uniformBlockIndex, pname, params);
1973}
1974
1975void glwGetActiveUniformName (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName)
1976{
1977	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1978	if (!gl)
1979		return;
1980	gl->getActiveUniformName(program, uniformIndex, bufSize, length, uniformName);
1981}
1982
1983void glwGetActiveUniformsiv (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params)
1984{
1985	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1986	if (!gl)
1987		return;
1988	gl->getActiveUniformsiv(program, uniformCount, uniformIndices, pname, params);
1989}
1990
1991void glwGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders)
1992{
1993	const glw::Functions* gl = glw::getCurrentThreadFunctions();
1994	if (!gl)
1995		return;
1996	gl->getAttachedShaders(program, maxCount, count, shaders);
1997}
1998
1999GLint glwGetAttribLocation (GLuint program, const GLchar *name)
2000{
2001	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2002	if (!gl)
2003		return (GLint)0;
2004	return gl->getAttribLocation(program, name);
2005}
2006
2007void glwGetBooleani_v (GLenum target, GLuint index, GLboolean *data)
2008{
2009	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2010	if (!gl)
2011		return;
2012	gl->getBooleani_v(target, index, data);
2013}
2014
2015void glwGetBooleanv (GLenum pname, GLboolean *data)
2016{
2017	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2018	if (!gl)
2019		return;
2020	gl->getBooleanv(pname, data);
2021}
2022
2023void glwGetBufferParameteri64v (GLenum target, GLenum pname, GLint64 *params)
2024{
2025	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2026	if (!gl)
2027		return;
2028	gl->getBufferParameteri64v(target, pname, params);
2029}
2030
2031void glwGetBufferParameteriv (GLenum target, GLenum pname, GLint *params)
2032{
2033	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2034	if (!gl)
2035		return;
2036	gl->getBufferParameteriv(target, pname, params);
2037}
2038
2039void glwGetBufferPointerv (GLenum target, GLenum pname, void **params)
2040{
2041	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2042	if (!gl)
2043		return;
2044	gl->getBufferPointerv(target, pname, params);
2045}
2046
2047void glwGetBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, void *data)
2048{
2049	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2050	if (!gl)
2051		return;
2052	gl->getBufferSubData(target, offset, size, data);
2053}
2054
2055void glwGetCompressedMultiTexImageEXT (GLenum texunit, GLenum target, GLint lod, void *img)
2056{
2057	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2058	if (!gl)
2059		return;
2060	gl->getCompressedMultiTexImageEXT(texunit, target, lod, img);
2061}
2062
2063void glwGetCompressedTexImage (GLenum target, GLint level, void *img)
2064{
2065	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2066	if (!gl)
2067		return;
2068	gl->getCompressedTexImage(target, level, img);
2069}
2070
2071void glwGetCompressedTextureImage (GLuint texture, GLint level, GLsizei bufSize, void *pixels)
2072{
2073	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2074	if (!gl)
2075		return;
2076	gl->getCompressedTextureImage(texture, level, bufSize, pixels);
2077}
2078
2079void glwGetCompressedTextureImageEXT (GLuint texture, GLenum target, GLint lod, void *img)
2080{
2081	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2082	if (!gl)
2083		return;
2084	gl->getCompressedTextureImageEXT(texture, target, lod, img);
2085}
2086
2087void glwGetCompressedTextureSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels)
2088{
2089	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2090	if (!gl)
2091		return;
2092	gl->getCompressedTextureSubImage(texture, level, xoffset, yoffset, zoffset, width, height, depth, bufSize, pixels);
2093}
2094
2095GLuint glwGetDebugMessageLog (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog)
2096{
2097	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2098	if (!gl)
2099		return (GLuint)0;
2100	return gl->getDebugMessageLog(count, bufSize, sources, types, ids, severities, lengths, messageLog);
2101}
2102
2103void glwGetDoublei_v (GLenum target, GLuint index, GLdouble *data)
2104{
2105	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2106	if (!gl)
2107		return;
2108	gl->getDoublei_v(target, index, data);
2109}
2110
2111void glwGetDoublev (GLenum pname, GLdouble *data)
2112{
2113	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2114	if (!gl)
2115		return;
2116	gl->getDoublev(pname, data);
2117}
2118
2119GLenum glwGetError (void)
2120{
2121	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2122	if (!gl)
2123		return GL_INVALID_OPERATION;
2124	return gl->getError();
2125}
2126
2127void glwGetFloati_v (GLenum target, GLuint index, GLfloat *data)
2128{
2129	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2130	if (!gl)
2131		return;
2132	gl->getFloati_v(target, index, data);
2133}
2134
2135void glwGetFloatv (GLenum pname, GLfloat *data)
2136{
2137	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2138	if (!gl)
2139		return;
2140	gl->getFloatv(pname, data);
2141}
2142
2143GLint glwGetFragDataIndex (GLuint program, const GLchar *name)
2144{
2145	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2146	if (!gl)
2147		return (GLint)0;
2148	return gl->getFragDataIndex(program, name);
2149}
2150
2151GLint glwGetFragDataLocation (GLuint program, const GLchar *name)
2152{
2153	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2154	if (!gl)
2155		return (GLint)0;
2156	return gl->getFragDataLocation(program, name);
2157}
2158
2159void glwGetFragmentShadingRatesEXT (GLsizei samples, GLsizei maxCount, GLsizei *count, GLenum *shadingRates)
2160{
2161	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2162	if (!gl)
2163		return;
2164	gl->getFragmentShadingRatesEXT(samples, maxCount, count, shadingRates);
2165}
2166
2167void glwGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint *params)
2168{
2169	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2170	if (!gl)
2171		return;
2172	gl->getFramebufferAttachmentParameteriv(target, attachment, pname, params);
2173}
2174
2175void glwGetFramebufferParameteriv (GLenum target, GLenum pname, GLint *params)
2176{
2177	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2178	if (!gl)
2179		return;
2180	gl->getFramebufferParameteriv(target, pname, params);
2181}
2182
2183void glwGetFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params)
2184{
2185	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2186	if (!gl)
2187		return;
2188	gl->getFramebufferParameterivEXT(framebuffer, pname, params);
2189}
2190
2191GLenum glwGetGraphicsResetStatus (void)
2192{
2193	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2194	if (!gl)
2195		return (GLenum)0;
2196	return gl->getGraphicsResetStatus();
2197}
2198
2199void glwGetInteger64i_v (GLenum target, GLuint index, GLint64 *data)
2200{
2201	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2202	if (!gl)
2203		return;
2204	gl->getInteger64i_v(target, index, data);
2205}
2206
2207void glwGetInteger64v (GLenum pname, GLint64 *data)
2208{
2209	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2210	if (!gl)
2211		return;
2212	gl->getInteger64v(pname, data);
2213}
2214
2215void glwGetIntegeri_v (GLenum target, GLuint index, GLint *data)
2216{
2217	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2218	if (!gl)
2219		return;
2220	gl->getIntegeri_v(target, index, data);
2221}
2222
2223void glwGetIntegerv (GLenum pname, GLint *data)
2224{
2225	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2226	if (!gl)
2227		return;
2228	gl->getIntegerv(pname, data);
2229}
2230
2231void glwGetInternalformatSampleivNV (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei count, GLint *params)
2232{
2233	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2234	if (!gl)
2235		return;
2236	gl->getInternalformatSampleivNV(target, internalformat, samples, pname, count, params);
2237}
2238
2239void glwGetInternalformati64v (GLenum target, GLenum internalformat, GLenum pname, GLsizei count, GLint64 *params)
2240{
2241	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2242	if (!gl)
2243		return;
2244	gl->getInternalformati64v(target, internalformat, pname, count, params);
2245}
2246
2247void glwGetInternalformativ (GLenum target, GLenum internalformat, GLenum pname, GLsizei count, GLint *params)
2248{
2249	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2250	if (!gl)
2251		return;
2252	gl->getInternalformativ(target, internalformat, pname, count, params);
2253}
2254
2255void glwGetMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat *params)
2256{
2257	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2258	if (!gl)
2259		return;
2260	gl->getMultiTexEnvfvEXT(texunit, target, pname, params);
2261}
2262
2263void glwGetMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params)
2264{
2265	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2266	if (!gl)
2267		return;
2268	gl->getMultiTexEnvivEXT(texunit, target, pname, params);
2269}
2270
2271void glwGetMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble *params)
2272{
2273	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2274	if (!gl)
2275		return;
2276	gl->getMultiTexGendvEXT(texunit, coord, pname, params);
2277}
2278
2279void glwGetMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat *params)
2280{
2281	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2282	if (!gl)
2283		return;
2284	gl->getMultiTexGenfvEXT(texunit, coord, pname, params);
2285}
2286
2287void glwGetMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, GLint *params)
2288{
2289	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2290	if (!gl)
2291		return;
2292	gl->getMultiTexGenivEXT(texunit, coord, pname, params);
2293}
2294
2295void glwGetMultiTexImageEXT (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels)
2296{
2297	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2298	if (!gl)
2299		return;
2300	gl->getMultiTexImageEXT(texunit, target, level, format, type, pixels);
2301}
2302
2303void glwGetMultiTexLevelParameterfvEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params)
2304{
2305	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2306	if (!gl)
2307		return;
2308	gl->getMultiTexLevelParameterfvEXT(texunit, target, level, pname, params);
2309}
2310
2311void glwGetMultiTexLevelParameterivEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params)
2312{
2313	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2314	if (!gl)
2315		return;
2316	gl->getMultiTexLevelParameterivEXT(texunit, target, level, pname, params);
2317}
2318
2319void glwGetMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params)
2320{
2321	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2322	if (!gl)
2323		return;
2324	gl->getMultiTexParameterIivEXT(texunit, target, pname, params);
2325}
2326
2327void glwGetMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, GLuint *params)
2328{
2329	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2330	if (!gl)
2331		return;
2332	gl->getMultiTexParameterIuivEXT(texunit, target, pname, params);
2333}
2334
2335void glwGetMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat *params)
2336{
2337	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2338	if (!gl)
2339		return;
2340	gl->getMultiTexParameterfvEXT(texunit, target, pname, params);
2341}
2342
2343void glwGetMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params)
2344{
2345	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2346	if (!gl)
2347		return;
2348	gl->getMultiTexParameterivEXT(texunit, target, pname, params);
2349}
2350
2351void glwGetMultisamplefv (GLenum pname, GLuint index, GLfloat *val)
2352{
2353	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2354	if (!gl)
2355		return;
2356	gl->getMultisamplefv(pname, index, val);
2357}
2358
2359void glwGetNamedBufferParameteri64v (GLuint buffer, GLenum pname, GLint64 *params)
2360{
2361	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2362	if (!gl)
2363		return;
2364	gl->getNamedBufferParameteri64v(buffer, pname, params);
2365}
2366
2367void glwGetNamedBufferParameteriv (GLuint buffer, GLenum pname, GLint *params)
2368{
2369	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2370	if (!gl)
2371		return;
2372	gl->getNamedBufferParameteriv(buffer, pname, params);
2373}
2374
2375void glwGetNamedBufferParameterivEXT (GLuint buffer, GLenum pname, GLint *params)
2376{
2377	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2378	if (!gl)
2379		return;
2380	gl->getNamedBufferParameterivEXT(buffer, pname, params);
2381}
2382
2383void glwGetNamedBufferPointerv (GLuint buffer, GLenum pname, void **params)
2384{
2385	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2386	if (!gl)
2387		return;
2388	gl->getNamedBufferPointerv(buffer, pname, params);
2389}
2390
2391void glwGetNamedBufferPointervEXT (GLuint buffer, GLenum pname, void **params)
2392{
2393	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2394	if (!gl)
2395		return;
2396	gl->getNamedBufferPointervEXT(buffer, pname, params);
2397}
2398
2399void glwGetNamedBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data)
2400{
2401	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2402	if (!gl)
2403		return;
2404	gl->getNamedBufferSubData(buffer, offset, size, data);
2405}
2406
2407void glwGetNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data)
2408{
2409	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2410	if (!gl)
2411		return;
2412	gl->getNamedBufferSubDataEXT(buffer, offset, size, data);
2413}
2414
2415void glwGetNamedFramebufferAttachmentParameteriv (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params)
2416{
2417	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2418	if (!gl)
2419		return;
2420	gl->getNamedFramebufferAttachmentParameteriv(framebuffer, attachment, pname, params);
2421}
2422
2423void glwGetNamedFramebufferAttachmentParameterivEXT (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params)
2424{
2425	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2426	if (!gl)
2427		return;
2428	gl->getNamedFramebufferAttachmentParameterivEXT(framebuffer, attachment, pname, params);
2429}
2430
2431void glwGetNamedFramebufferParameteriv (GLuint framebuffer, GLenum pname, GLint *param)
2432{
2433	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2434	if (!gl)
2435		return;
2436	gl->getNamedFramebufferParameteriv(framebuffer, pname, param);
2437}
2438
2439void glwGetNamedFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params)
2440{
2441	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2442	if (!gl)
2443		return;
2444	gl->getNamedFramebufferParameterivEXT(framebuffer, pname, params);
2445}
2446
2447void glwGetNamedProgramLocalParameterIivEXT (GLuint program, GLenum target, GLuint index, GLint *params)
2448{
2449	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2450	if (!gl)
2451		return;
2452	gl->getNamedProgramLocalParameterIivEXT(program, target, index, params);
2453}
2454
2455void glwGetNamedProgramLocalParameterIuivEXT (GLuint program, GLenum target, GLuint index, GLuint *params)
2456{
2457	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2458	if (!gl)
2459		return;
2460	gl->getNamedProgramLocalParameterIuivEXT(program, target, index, params);
2461}
2462
2463void glwGetNamedProgramLocalParameterdvEXT (GLuint program, GLenum target, GLuint index, GLdouble *params)
2464{
2465	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2466	if (!gl)
2467		return;
2468	gl->getNamedProgramLocalParameterdvEXT(program, target, index, params);
2469}
2470
2471void glwGetNamedProgramLocalParameterfvEXT (GLuint program, GLenum target, GLuint index, GLfloat *params)
2472{
2473	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2474	if (!gl)
2475		return;
2476	gl->getNamedProgramLocalParameterfvEXT(program, target, index, params);
2477}
2478
2479void glwGetNamedProgramStringEXT (GLuint program, GLenum target, GLenum pname, void *string)
2480{
2481	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2482	if (!gl)
2483		return;
2484	gl->getNamedProgramStringEXT(program, target, pname, string);
2485}
2486
2487void glwGetNamedProgramivEXT (GLuint program, GLenum target, GLenum pname, GLint *params)
2488{
2489	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2490	if (!gl)
2491		return;
2492	gl->getNamedProgramivEXT(program, target, pname, params);
2493}
2494
2495void glwGetNamedRenderbufferParameteriv (GLuint renderbuffer, GLenum pname, GLint *params)
2496{
2497	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2498	if (!gl)
2499		return;
2500	gl->getNamedRenderbufferParameteriv(renderbuffer, pname, params);
2501}
2502
2503void glwGetNamedRenderbufferParameterivEXT (GLuint renderbuffer, GLenum pname, GLint *params)
2504{
2505	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2506	if (!gl)
2507		return;
2508	gl->getNamedRenderbufferParameterivEXT(renderbuffer, pname, params);
2509}
2510
2511void glwGetObjectLabel (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label)
2512{
2513	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2514	if (!gl)
2515		return;
2516	gl->getObjectLabel(identifier, name, bufSize, length, label);
2517}
2518
2519void glwGetObjectPtrLabel (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label)
2520{
2521	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2522	if (!gl)
2523		return;
2524	gl->getObjectPtrLabel(ptr, bufSize, length, label);
2525}
2526
2527void glwGetPointerIndexedvEXT (GLenum target, GLuint index, void **data)
2528{
2529	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2530	if (!gl)
2531		return;
2532	gl->getPointerIndexedvEXT(target, index, data);
2533}
2534
2535void glwGetPointeri_vEXT (GLenum pname, GLuint index, void **params)
2536{
2537	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2538	if (!gl)
2539		return;
2540	gl->getPointeri_vEXT(pname, index, params);
2541}
2542
2543void glwGetPointerv (GLenum pname, void **params)
2544{
2545	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2546	if (!gl)
2547		return;
2548	gl->getPointerv(pname, params);
2549}
2550
2551void glwGetProgramBinary (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary)
2552{
2553	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2554	if (!gl)
2555		return;
2556	gl->getProgramBinary(program, bufSize, length, binaryFormat, binary);
2557}
2558
2559void glwGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog)
2560{
2561	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2562	if (!gl)
2563		return;
2564	gl->getProgramInfoLog(program, bufSize, length, infoLog);
2565}
2566
2567void glwGetProgramInterfaceiv (GLuint program, GLenum programInterface, GLenum pname, GLint *params)
2568{
2569	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2570	if (!gl)
2571		return;
2572	gl->getProgramInterfaceiv(program, programInterface, pname, params);
2573}
2574
2575void glwGetProgramPipelineInfoLog (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog)
2576{
2577	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2578	if (!gl)
2579		return;
2580	gl->getProgramPipelineInfoLog(pipeline, bufSize, length, infoLog);
2581}
2582
2583void glwGetProgramPipelineiv (GLuint pipeline, GLenum pname, GLint *params)
2584{
2585	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2586	if (!gl)
2587		return;
2588	gl->getProgramPipelineiv(pipeline, pname, params);
2589}
2590
2591GLuint glwGetProgramResourceIndex (GLuint program, GLenum programInterface, const GLchar *name)
2592{
2593	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2594	if (!gl)
2595		return (GLuint)0;
2596	return gl->getProgramResourceIndex(program, programInterface, name);
2597}
2598
2599GLint glwGetProgramResourceLocation (GLuint program, GLenum programInterface, const GLchar *name)
2600{
2601	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2602	if (!gl)
2603		return (GLint)0;
2604	return gl->getProgramResourceLocation(program, programInterface, name);
2605}
2606
2607GLint glwGetProgramResourceLocationIndex (GLuint program, GLenum programInterface, const GLchar *name)
2608{
2609	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2610	if (!gl)
2611		return (GLint)0;
2612	return gl->getProgramResourceLocationIndex(program, programInterface, name);
2613}
2614
2615void glwGetProgramResourceName (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name)
2616{
2617	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2618	if (!gl)
2619		return;
2620	gl->getProgramResourceName(program, programInterface, index, bufSize, length, name);
2621}
2622
2623void glwGetProgramResourceiv (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLint *params)
2624{
2625	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2626	if (!gl)
2627		return;
2628	gl->getProgramResourceiv(program, programInterface, index, propCount, props, count, length, params);
2629}
2630
2631void glwGetProgramStageiv (GLuint program, GLenum shadertype, GLenum pname, GLint *values)
2632{
2633	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2634	if (!gl)
2635		return;
2636	gl->getProgramStageiv(program, shadertype, pname, values);
2637}
2638
2639void glwGetProgramiv (GLuint program, GLenum pname, GLint *params)
2640{
2641	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2642	if (!gl)
2643		return;
2644	gl->getProgramiv(program, pname, params);
2645}
2646
2647void glwGetQueryBufferObjecti64v (GLuint id, GLuint buffer, GLenum pname, GLintptr offset)
2648{
2649	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2650	if (!gl)
2651		return;
2652	gl->getQueryBufferObjecti64v(id, buffer, pname, offset);
2653}
2654
2655void glwGetQueryBufferObjectiv (GLuint id, GLuint buffer, GLenum pname, GLintptr offset)
2656{
2657	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2658	if (!gl)
2659		return;
2660	gl->getQueryBufferObjectiv(id, buffer, pname, offset);
2661}
2662
2663void glwGetQueryBufferObjectui64v (GLuint id, GLuint buffer, GLenum pname, GLintptr offset)
2664{
2665	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2666	if (!gl)
2667		return;
2668	gl->getQueryBufferObjectui64v(id, buffer, pname, offset);
2669}
2670
2671void glwGetQueryBufferObjectuiv (GLuint id, GLuint buffer, GLenum pname, GLintptr offset)
2672{
2673	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2674	if (!gl)
2675		return;
2676	gl->getQueryBufferObjectuiv(id, buffer, pname, offset);
2677}
2678
2679void glwGetQueryIndexediv (GLenum target, GLuint index, GLenum pname, GLint *params)
2680{
2681	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2682	if (!gl)
2683		return;
2684	gl->getQueryIndexediv(target, index, pname, params);
2685}
2686
2687void glwGetQueryObjecti64v (GLuint id, GLenum pname, GLint64 *params)
2688{
2689	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2690	if (!gl)
2691		return;
2692	gl->getQueryObjecti64v(id, pname, params);
2693}
2694
2695void glwGetQueryObjectiv (GLuint id, GLenum pname, GLint *params)
2696{
2697	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2698	if (!gl)
2699		return;
2700	gl->getQueryObjectiv(id, pname, params);
2701}
2702
2703void glwGetQueryObjectui64v (GLuint id, GLenum pname, GLuint64 *params)
2704{
2705	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2706	if (!gl)
2707		return;
2708	gl->getQueryObjectui64v(id, pname, params);
2709}
2710
2711void glwGetQueryObjectuiv (GLuint id, GLenum pname, GLuint *params)
2712{
2713	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2714	if (!gl)
2715		return;
2716	gl->getQueryObjectuiv(id, pname, params);
2717}
2718
2719void glwGetQueryiv (GLenum target, GLenum pname, GLint *params)
2720{
2721	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2722	if (!gl)
2723		return;
2724	gl->getQueryiv(target, pname, params);
2725}
2726
2727void glwGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint *params)
2728{
2729	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2730	if (!gl)
2731		return;
2732	gl->getRenderbufferParameteriv(target, pname, params);
2733}
2734
2735void glwGetSamplerParameterIiv (GLuint sampler, GLenum pname, GLint *params)
2736{
2737	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2738	if (!gl)
2739		return;
2740	gl->getSamplerParameterIiv(sampler, pname, params);
2741}
2742
2743void glwGetSamplerParameterIuiv (GLuint sampler, GLenum pname, GLuint *params)
2744{
2745	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2746	if (!gl)
2747		return;
2748	gl->getSamplerParameterIuiv(sampler, pname, params);
2749}
2750
2751void glwGetSamplerParameterfv (GLuint sampler, GLenum pname, GLfloat *params)
2752{
2753	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2754	if (!gl)
2755		return;
2756	gl->getSamplerParameterfv(sampler, pname, params);
2757}
2758
2759void glwGetSamplerParameteriv (GLuint sampler, GLenum pname, GLint *params)
2760{
2761	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2762	if (!gl)
2763		return;
2764	gl->getSamplerParameteriv(sampler, pname, params);
2765}
2766
2767void glwGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog)
2768{
2769	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2770	if (!gl)
2771		return;
2772	gl->getShaderInfoLog(shader, bufSize, length, infoLog);
2773}
2774
2775void glwGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision)
2776{
2777	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2778	if (!gl)
2779		return;
2780	gl->getShaderPrecisionFormat(shadertype, precisiontype, range, precision);
2781}
2782
2783void glwGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source)
2784{
2785	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2786	if (!gl)
2787		return;
2788	gl->getShaderSource(shader, bufSize, length, source);
2789}
2790
2791void glwGetShaderiv (GLuint shader, GLenum pname, GLint *params)
2792{
2793	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2794	if (!gl)
2795		return;
2796	gl->getShaderiv(shader, pname, params);
2797}
2798
2799const GLubyte * glwGetString (GLenum name)
2800{
2801	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2802	if (!gl)
2803		return (const GLubyte *)0;
2804	return gl->getString(name);
2805}
2806
2807const GLubyte * glwGetStringi (GLenum name, GLuint index)
2808{
2809	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2810	if (!gl)
2811		return (const GLubyte *)0;
2812	return gl->getStringi(name, index);
2813}
2814
2815GLuint glwGetSubroutineIndex (GLuint program, GLenum shadertype, const GLchar *name)
2816{
2817	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2818	if (!gl)
2819		return (GLuint)0;
2820	return gl->getSubroutineIndex(program, shadertype, name);
2821}
2822
2823GLint glwGetSubroutineUniformLocation (GLuint program, GLenum shadertype, const GLchar *name)
2824{
2825	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2826	if (!gl)
2827		return (GLint)0;
2828	return gl->getSubroutineUniformLocation(program, shadertype, name);
2829}
2830
2831void glwGetSynciv (GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values)
2832{
2833	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2834	if (!gl)
2835		return;
2836	gl->getSynciv(sync, pname, count, length, values);
2837}
2838
2839void glwGetTexImage (GLenum target, GLint level, GLenum format, GLenum type, void *pixels)
2840{
2841	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2842	if (!gl)
2843		return;
2844	gl->getTexImage(target, level, format, type, pixels);
2845}
2846
2847void glwGetTexLevelParameterfv (GLenum target, GLint level, GLenum pname, GLfloat *params)
2848{
2849	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2850	if (!gl)
2851		return;
2852	gl->getTexLevelParameterfv(target, level, pname, params);
2853}
2854
2855void glwGetTexLevelParameteriv (GLenum target, GLint level, GLenum pname, GLint *params)
2856{
2857	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2858	if (!gl)
2859		return;
2860	gl->getTexLevelParameteriv(target, level, pname, params);
2861}
2862
2863void glwGetTexParameterIiv (GLenum target, GLenum pname, GLint *params)
2864{
2865	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2866	if (!gl)
2867		return;
2868	gl->getTexParameterIiv(target, pname, params);
2869}
2870
2871void glwGetTexParameterIuiv (GLenum target, GLenum pname, GLuint *params)
2872{
2873	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2874	if (!gl)
2875		return;
2876	gl->getTexParameterIuiv(target, pname, params);
2877}
2878
2879void glwGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params)
2880{
2881	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2882	if (!gl)
2883		return;
2884	gl->getTexParameterfv(target, pname, params);
2885}
2886
2887void glwGetTexParameteriv (GLenum target, GLenum pname, GLint *params)
2888{
2889	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2890	if (!gl)
2891		return;
2892	gl->getTexParameteriv(target, pname, params);
2893}
2894
2895void glwGetTextureImage (GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels)
2896{
2897	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2898	if (!gl)
2899		return;
2900	gl->getTextureImage(texture, level, format, type, bufSize, pixels);
2901}
2902
2903void glwGetTextureImageEXT (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels)
2904{
2905	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2906	if (!gl)
2907		return;
2908	gl->getTextureImageEXT(texture, target, level, format, type, pixels);
2909}
2910
2911void glwGetTextureLevelParameterfv (GLuint texture, GLint level, GLenum pname, GLfloat *params)
2912{
2913	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2914	if (!gl)
2915		return;
2916	gl->getTextureLevelParameterfv(texture, level, pname, params);
2917}
2918
2919void glwGetTextureLevelParameterfvEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params)
2920{
2921	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2922	if (!gl)
2923		return;
2924	gl->getTextureLevelParameterfvEXT(texture, target, level, pname, params);
2925}
2926
2927void glwGetTextureLevelParameteriv (GLuint texture, GLint level, GLenum pname, GLint *params)
2928{
2929	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2930	if (!gl)
2931		return;
2932	gl->getTextureLevelParameteriv(texture, level, pname, params);
2933}
2934
2935void glwGetTextureLevelParameterivEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params)
2936{
2937	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2938	if (!gl)
2939		return;
2940	gl->getTextureLevelParameterivEXT(texture, target, level, pname, params);
2941}
2942
2943void glwGetTextureParameterIiv (GLuint texture, GLenum pname, GLint *params)
2944{
2945	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2946	if (!gl)
2947		return;
2948	gl->getTextureParameterIiv(texture, pname, params);
2949}
2950
2951void glwGetTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, GLint *params)
2952{
2953	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2954	if (!gl)
2955		return;
2956	gl->getTextureParameterIivEXT(texture, target, pname, params);
2957}
2958
2959void glwGetTextureParameterIuiv (GLuint texture, GLenum pname, GLuint *params)
2960{
2961	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2962	if (!gl)
2963		return;
2964	gl->getTextureParameterIuiv(texture, pname, params);
2965}
2966
2967void glwGetTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, GLuint *params)
2968{
2969	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2970	if (!gl)
2971		return;
2972	gl->getTextureParameterIuivEXT(texture, target, pname, params);
2973}
2974
2975void glwGetTextureParameterfv (GLuint texture, GLenum pname, GLfloat *params)
2976{
2977	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2978	if (!gl)
2979		return;
2980	gl->getTextureParameterfv(texture, pname, params);
2981}
2982
2983void glwGetTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, GLfloat *params)
2984{
2985	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2986	if (!gl)
2987		return;
2988	gl->getTextureParameterfvEXT(texture, target, pname, params);
2989}
2990
2991void glwGetTextureParameteriv (GLuint texture, GLenum pname, GLint *params)
2992{
2993	const glw::Functions* gl = glw::getCurrentThreadFunctions();
2994	if (!gl)
2995		return;
2996	gl->getTextureParameteriv(texture, pname, params);
2997}
2998
2999void glwGetTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, GLint *params)
3000{
3001	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3002	if (!gl)
3003		return;
3004	gl->getTextureParameterivEXT(texture, target, pname, params);
3005}
3006
3007void glwGetTextureSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels)
3008{
3009	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3010	if (!gl)
3011		return;
3012	gl->getTextureSubImage(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, bufSize, pixels);
3013}
3014
3015void glwGetTransformFeedbackVarying (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name)
3016{
3017	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3018	if (!gl)
3019		return;
3020	gl->getTransformFeedbackVarying(program, index, bufSize, length, size, type, name);
3021}
3022
3023void glwGetTransformFeedbacki64_v (GLuint xfb, GLenum pname, GLuint index, GLint64 *param)
3024{
3025	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3026	if (!gl)
3027		return;
3028	gl->getTransformFeedbacki64_v(xfb, pname, index, param);
3029}
3030
3031void glwGetTransformFeedbacki_v (GLuint xfb, GLenum pname, GLuint index, GLint *param)
3032{
3033	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3034	if (!gl)
3035		return;
3036	gl->getTransformFeedbacki_v(xfb, pname, index, param);
3037}
3038
3039void glwGetTransformFeedbackiv (GLuint xfb, GLenum pname, GLint *param)
3040{
3041	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3042	if (!gl)
3043		return;
3044	gl->getTransformFeedbackiv(xfb, pname, param);
3045}
3046
3047GLuint glwGetUniformBlockIndex (GLuint program, const GLchar *uniformBlockName)
3048{
3049	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3050	if (!gl)
3051		return (GLuint)0;
3052	return gl->getUniformBlockIndex(program, uniformBlockName);
3053}
3054
3055void glwGetUniformIndices (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices)
3056{
3057	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3058	if (!gl)
3059		return;
3060	gl->getUniformIndices(program, uniformCount, uniformNames, uniformIndices);
3061}
3062
3063GLint glwGetUniformLocation (GLuint program, const GLchar *name)
3064{
3065	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3066	if (!gl)
3067		return (GLint)0;
3068	return gl->getUniformLocation(program, name);
3069}
3070
3071void glwGetUniformSubroutineuiv (GLenum shadertype, GLint location, GLuint *params)
3072{
3073	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3074	if (!gl)
3075		return;
3076	gl->getUniformSubroutineuiv(shadertype, location, params);
3077}
3078
3079void glwGetUniformdv (GLuint program, GLint location, GLdouble *params)
3080{
3081	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3082	if (!gl)
3083		return;
3084	gl->getUniformdv(program, location, params);
3085}
3086
3087void glwGetUniformfv (GLuint program, GLint location, GLfloat *params)
3088{
3089	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3090	if (!gl)
3091		return;
3092	gl->getUniformfv(program, location, params);
3093}
3094
3095void glwGetUniformiv (GLuint program, GLint location, GLint *params)
3096{
3097	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3098	if (!gl)
3099		return;
3100	gl->getUniformiv(program, location, params);
3101}
3102
3103void glwGetUniformuiv (GLuint program, GLint location, GLuint *params)
3104{
3105	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3106	if (!gl)
3107		return;
3108	gl->getUniformuiv(program, location, params);
3109}
3110
3111void glwGetVertexArrayIndexed64iv (GLuint vaobj, GLuint index, GLenum pname, GLint64 *param)
3112{
3113	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3114	if (!gl)
3115		return;
3116	gl->getVertexArrayIndexed64iv(vaobj, index, pname, param);
3117}
3118
3119void glwGetVertexArrayIndexediv (GLuint vaobj, GLuint index, GLenum pname, GLint *param)
3120{
3121	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3122	if (!gl)
3123		return;
3124	gl->getVertexArrayIndexediv(vaobj, index, pname, param);
3125}
3126
3127void glwGetVertexArrayIntegeri_vEXT (GLuint vaobj, GLuint index, GLenum pname, GLint *param)
3128{
3129	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3130	if (!gl)
3131		return;
3132	gl->getVertexArrayIntegeri_vEXT(vaobj, index, pname, param);
3133}
3134
3135void glwGetVertexArrayIntegervEXT (GLuint vaobj, GLenum pname, GLint *param)
3136{
3137	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3138	if (!gl)
3139		return;
3140	gl->getVertexArrayIntegervEXT(vaobj, pname, param);
3141}
3142
3143void glwGetVertexArrayPointeri_vEXT (GLuint vaobj, GLuint index, GLenum pname, void **param)
3144{
3145	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3146	if (!gl)
3147		return;
3148	gl->getVertexArrayPointeri_vEXT(vaobj, index, pname, param);
3149}
3150
3151void glwGetVertexArrayPointervEXT (GLuint vaobj, GLenum pname, void **param)
3152{
3153	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3154	if (!gl)
3155		return;
3156	gl->getVertexArrayPointervEXT(vaobj, pname, param);
3157}
3158
3159void glwGetVertexArrayiv (GLuint vaobj, GLenum pname, GLint *param)
3160{
3161	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3162	if (!gl)
3163		return;
3164	gl->getVertexArrayiv(vaobj, pname, param);
3165}
3166
3167void glwGetVertexAttribIiv (GLuint index, GLenum pname, GLint *params)
3168{
3169	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3170	if (!gl)
3171		return;
3172	gl->getVertexAttribIiv(index, pname, params);
3173}
3174
3175void glwGetVertexAttribIuiv (GLuint index, GLenum pname, GLuint *params)
3176{
3177	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3178	if (!gl)
3179		return;
3180	gl->getVertexAttribIuiv(index, pname, params);
3181}
3182
3183void glwGetVertexAttribLdv (GLuint index, GLenum pname, GLdouble *params)
3184{
3185	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3186	if (!gl)
3187		return;
3188	gl->getVertexAttribLdv(index, pname, params);
3189}
3190
3191void glwGetVertexAttribPointerv (GLuint index, GLenum pname, void **pointer)
3192{
3193	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3194	if (!gl)
3195		return;
3196	gl->getVertexAttribPointerv(index, pname, pointer);
3197}
3198
3199void glwGetVertexAttribdv (GLuint index, GLenum pname, GLdouble *params)
3200{
3201	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3202	if (!gl)
3203		return;
3204	gl->getVertexAttribdv(index, pname, params);
3205}
3206
3207void glwGetVertexAttribfv (GLuint index, GLenum pname, GLfloat *params)
3208{
3209	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3210	if (!gl)
3211		return;
3212	gl->getVertexAttribfv(index, pname, params);
3213}
3214
3215void glwGetVertexAttribiv (GLuint index, GLenum pname, GLint *params)
3216{
3217	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3218	if (!gl)
3219		return;
3220	gl->getVertexAttribiv(index, pname, params);
3221}
3222
3223void glwGetnCompressedTexImage (GLenum target, GLint lod, GLsizei bufSize, void *pixels)
3224{
3225	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3226	if (!gl)
3227		return;
3228	gl->getnCompressedTexImage(target, lod, bufSize, pixels);
3229}
3230
3231void glwGetnTexImage (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels)
3232{
3233	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3234	if (!gl)
3235		return;
3236	gl->getnTexImage(target, level, format, type, bufSize, pixels);
3237}
3238
3239void glwGetnUniformdv (GLuint program, GLint location, GLsizei bufSize, GLdouble *params)
3240{
3241	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3242	if (!gl)
3243		return;
3244	gl->getnUniformdv(program, location, bufSize, params);
3245}
3246
3247void glwGetnUniformfv (GLuint program, GLint location, GLsizei bufSize, GLfloat *params)
3248{
3249	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3250	if (!gl)
3251		return;
3252	gl->getnUniformfv(program, location, bufSize, params);
3253}
3254
3255void glwGetnUniformiv (GLuint program, GLint location, GLsizei bufSize, GLint *params)
3256{
3257	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3258	if (!gl)
3259		return;
3260	gl->getnUniformiv(program, location, bufSize, params);
3261}
3262
3263void glwGetnUniformuiv (GLuint program, GLint location, GLsizei bufSize, GLuint *params)
3264{
3265	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3266	if (!gl)
3267		return;
3268	gl->getnUniformuiv(program, location, bufSize, params);
3269}
3270
3271void glwHint (GLenum target, GLenum mode)
3272{
3273	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3274	if (!gl)
3275		return;
3276	gl->hint(target, mode);
3277}
3278
3279void glwInsertEventMarkerEXT (GLsizei length, const GLchar *marker)
3280{
3281	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3282	if (!gl)
3283		return;
3284	gl->insertEventMarkerEXT(length, marker);
3285}
3286
3287void glwInvalidateBufferData (GLuint buffer)
3288{
3289	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3290	if (!gl)
3291		return;
3292	gl->invalidateBufferData(buffer);
3293}
3294
3295void glwInvalidateBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr length)
3296{
3297	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3298	if (!gl)
3299		return;
3300	gl->invalidateBufferSubData(buffer, offset, length);
3301}
3302
3303void glwInvalidateFramebuffer (GLenum target, GLsizei numAttachments, const GLenum *attachments)
3304{
3305	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3306	if (!gl)
3307		return;
3308	gl->invalidateFramebuffer(target, numAttachments, attachments);
3309}
3310
3311void glwInvalidateNamedFramebufferData (GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments)
3312{
3313	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3314	if (!gl)
3315		return;
3316	gl->invalidateNamedFramebufferData(framebuffer, numAttachments, attachments);
3317}
3318
3319void glwInvalidateNamedFramebufferSubData (GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height)
3320{
3321	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3322	if (!gl)
3323		return;
3324	gl->invalidateNamedFramebufferSubData(framebuffer, numAttachments, attachments, x, y, width, height);
3325}
3326
3327void glwInvalidateSubFramebuffer (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height)
3328{
3329	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3330	if (!gl)
3331		return;
3332	gl->invalidateSubFramebuffer(target, numAttachments, attachments, x, y, width, height);
3333}
3334
3335void glwInvalidateTexImage (GLuint texture, GLint level)
3336{
3337	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3338	if (!gl)
3339		return;
3340	gl->invalidateTexImage(texture, level);
3341}
3342
3343void glwInvalidateTexSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth)
3344{
3345	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3346	if (!gl)
3347		return;
3348	gl->invalidateTexSubImage(texture, level, xoffset, yoffset, zoffset, width, height, depth);
3349}
3350
3351GLboolean glwIsBuffer (GLuint buffer)
3352{
3353	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3354	if (!gl)
3355		return (GLboolean)0;
3356	return gl->isBuffer(buffer);
3357}
3358
3359GLboolean glwIsEnabled (GLenum cap)
3360{
3361	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3362	if (!gl)
3363		return (GLboolean)0;
3364	return gl->isEnabled(cap);
3365}
3366
3367GLboolean glwIsEnabledi (GLenum target, GLuint index)
3368{
3369	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3370	if (!gl)
3371		return (GLboolean)0;
3372	return gl->isEnabledi(target, index);
3373}
3374
3375GLboolean glwIsFramebuffer (GLuint framebuffer)
3376{
3377	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3378	if (!gl)
3379		return (GLboolean)0;
3380	return gl->isFramebuffer(framebuffer);
3381}
3382
3383GLboolean glwIsProgram (GLuint program)
3384{
3385	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3386	if (!gl)
3387		return (GLboolean)0;
3388	return gl->isProgram(program);
3389}
3390
3391GLboolean glwIsProgramPipeline (GLuint pipeline)
3392{
3393	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3394	if (!gl)
3395		return (GLboolean)0;
3396	return gl->isProgramPipeline(pipeline);
3397}
3398
3399GLboolean glwIsQuery (GLuint id)
3400{
3401	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3402	if (!gl)
3403		return (GLboolean)0;
3404	return gl->isQuery(id);
3405}
3406
3407GLboolean glwIsRenderbuffer (GLuint renderbuffer)
3408{
3409	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3410	if (!gl)
3411		return (GLboolean)0;
3412	return gl->isRenderbuffer(renderbuffer);
3413}
3414
3415GLboolean glwIsSampler (GLuint sampler)
3416{
3417	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3418	if (!gl)
3419		return (GLboolean)0;
3420	return gl->isSampler(sampler);
3421}
3422
3423GLboolean glwIsShader (GLuint shader)
3424{
3425	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3426	if (!gl)
3427		return (GLboolean)0;
3428	return gl->isShader(shader);
3429}
3430
3431GLboolean glwIsSync (GLsync sync)
3432{
3433	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3434	if (!gl)
3435		return (GLboolean)0;
3436	return gl->isSync(sync);
3437}
3438
3439GLboolean glwIsTexture (GLuint texture)
3440{
3441	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3442	if (!gl)
3443		return (GLboolean)0;
3444	return gl->isTexture(texture);
3445}
3446
3447GLboolean glwIsTransformFeedback (GLuint id)
3448{
3449	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3450	if (!gl)
3451		return (GLboolean)0;
3452	return gl->isTransformFeedback(id);
3453}
3454
3455GLboolean glwIsVertexArray (GLuint array)
3456{
3457	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3458	if (!gl)
3459		return (GLboolean)0;
3460	return gl->isVertexArray(array);
3461}
3462
3463void glwLineWidth (GLfloat width)
3464{
3465	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3466	if (!gl)
3467		return;
3468	gl->lineWidth(width);
3469}
3470
3471void glwLinkProgram (GLuint program)
3472{
3473	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3474	if (!gl)
3475		return;
3476	gl->linkProgram(program);
3477}
3478
3479void glwLogicOp (GLenum opcode)
3480{
3481	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3482	if (!gl)
3483		return;
3484	gl->logicOp(opcode);
3485}
3486
3487void * glwMapBuffer (GLenum target, GLenum access)
3488{
3489	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3490	if (!gl)
3491		return (void *)0;
3492	return gl->mapBuffer(target, access);
3493}
3494
3495void * glwMapBufferRange (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)
3496{
3497	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3498	if (!gl)
3499		return (void *)0;
3500	return gl->mapBufferRange(target, offset, length, access);
3501}
3502
3503void * glwMapNamedBuffer (GLuint buffer, GLenum access)
3504{
3505	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3506	if (!gl)
3507		return (void *)0;
3508	return gl->mapNamedBuffer(buffer, access);
3509}
3510
3511void * glwMapNamedBufferEXT (GLuint buffer, GLenum access)
3512{
3513	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3514	if (!gl)
3515		return (void *)0;
3516	return gl->mapNamedBufferEXT(buffer, access);
3517}
3518
3519void * glwMapNamedBufferRange (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access)
3520{
3521	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3522	if (!gl)
3523		return (void *)0;
3524	return gl->mapNamedBufferRange(buffer, offset, length, access);
3525}
3526
3527void * glwMapNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access)
3528{
3529	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3530	if (!gl)
3531		return (void *)0;
3532	return gl->mapNamedBufferRangeEXT(buffer, offset, length, access);
3533}
3534
3535void glwMatrixFrustumEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)
3536{
3537	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3538	if (!gl)
3539		return;
3540	gl->matrixFrustumEXT(mode, left, right, bottom, top, zNear, zFar);
3541}
3542
3543void glwMatrixLoadIdentityEXT (GLenum mode)
3544{
3545	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3546	if (!gl)
3547		return;
3548	gl->matrixLoadIdentityEXT(mode);
3549}
3550
3551void glwMatrixLoadTransposedEXT (GLenum mode, const GLdouble *m)
3552{
3553	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3554	if (!gl)
3555		return;
3556	gl->matrixLoadTransposedEXT(mode, m);
3557}
3558
3559void glwMatrixLoadTransposefEXT (GLenum mode, const GLfloat *m)
3560{
3561	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3562	if (!gl)
3563		return;
3564	gl->matrixLoadTransposefEXT(mode, m);
3565}
3566
3567void glwMatrixLoaddEXT (GLenum mode, const GLdouble *m)
3568{
3569	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3570	if (!gl)
3571		return;
3572	gl->matrixLoaddEXT(mode, m);
3573}
3574
3575void glwMatrixLoadfEXT (GLenum mode, const GLfloat *m)
3576{
3577	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3578	if (!gl)
3579		return;
3580	gl->matrixLoadfEXT(mode, m);
3581}
3582
3583void glwMatrixMultTransposedEXT (GLenum mode, const GLdouble *m)
3584{
3585	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3586	if (!gl)
3587		return;
3588	gl->matrixMultTransposedEXT(mode, m);
3589}
3590
3591void glwMatrixMultTransposefEXT (GLenum mode, const GLfloat *m)
3592{
3593	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3594	if (!gl)
3595		return;
3596	gl->matrixMultTransposefEXT(mode, m);
3597}
3598
3599void glwMatrixMultdEXT (GLenum mode, const GLdouble *m)
3600{
3601	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3602	if (!gl)
3603		return;
3604	gl->matrixMultdEXT(mode, m);
3605}
3606
3607void glwMatrixMultfEXT (GLenum mode, const GLfloat *m)
3608{
3609	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3610	if (!gl)
3611		return;
3612	gl->matrixMultfEXT(mode, m);
3613}
3614
3615void glwMatrixOrthoEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)
3616{
3617	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3618	if (!gl)
3619		return;
3620	gl->matrixOrthoEXT(mode, left, right, bottom, top, zNear, zFar);
3621}
3622
3623void glwMatrixPopEXT (GLenum mode)
3624{
3625	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3626	if (!gl)
3627		return;
3628	gl->matrixPopEXT(mode);
3629}
3630
3631void glwMatrixPushEXT (GLenum mode)
3632{
3633	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3634	if (!gl)
3635		return;
3636	gl->matrixPushEXT(mode);
3637}
3638
3639void glwMatrixRotatedEXT (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z)
3640{
3641	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3642	if (!gl)
3643		return;
3644	gl->matrixRotatedEXT(mode, angle, x, y, z);
3645}
3646
3647void glwMatrixRotatefEXT (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z)
3648{
3649	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3650	if (!gl)
3651		return;
3652	gl->matrixRotatefEXT(mode, angle, x, y, z);
3653}
3654
3655void glwMatrixScaledEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z)
3656{
3657	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3658	if (!gl)
3659		return;
3660	gl->matrixScaledEXT(mode, x, y, z);
3661}
3662
3663void glwMatrixScalefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z)
3664{
3665	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3666	if (!gl)
3667		return;
3668	gl->matrixScalefEXT(mode, x, y, z);
3669}
3670
3671void glwMatrixTranslatedEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z)
3672{
3673	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3674	if (!gl)
3675		return;
3676	gl->matrixTranslatedEXT(mode, x, y, z);
3677}
3678
3679void glwMatrixTranslatefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z)
3680{
3681	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3682	if (!gl)
3683		return;
3684	gl->matrixTranslatefEXT(mode, x, y, z);
3685}
3686
3687void glwMaxShaderCompilerThreadsKHR (GLuint count)
3688{
3689	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3690	if (!gl)
3691		return;
3692	gl->maxShaderCompilerThreadsKHR(count);
3693}
3694
3695void glwMemoryBarrier (GLbitfield barriers)
3696{
3697	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3698	if (!gl)
3699		return;
3700	gl->memoryBarrier(barriers);
3701}
3702
3703void glwMemoryBarrierByRegion (GLbitfield barriers)
3704{
3705	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3706	if (!gl)
3707		return;
3708	gl->memoryBarrierByRegion(barriers);
3709}
3710
3711void glwMinSampleShading (GLfloat value)
3712{
3713	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3714	if (!gl)
3715		return;
3716	gl->minSampleShading(value);
3717}
3718
3719void glwMultiDrawArrays (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount)
3720{
3721	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3722	if (!gl)
3723		return;
3724	gl->multiDrawArrays(mode, first, count, drawcount);
3725}
3726
3727void glwMultiDrawArraysIndirect (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride)
3728{
3729	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3730	if (!gl)
3731		return;
3732	gl->multiDrawArraysIndirect(mode, indirect, drawcount, stride);
3733}
3734
3735void glwMultiDrawArraysIndirectCount (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride)
3736{
3737	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3738	if (!gl)
3739		return;
3740	gl->multiDrawArraysIndirectCount(mode, indirect, drawcount, maxdrawcount, stride);
3741}
3742
3743void glwMultiDrawElements (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount)
3744{
3745	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3746	if (!gl)
3747		return;
3748	gl->multiDrawElements(mode, count, type, indices, drawcount);
3749}
3750
3751void glwMultiDrawElementsBaseVertex (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex)
3752{
3753	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3754	if (!gl)
3755		return;
3756	gl->multiDrawElementsBaseVertex(mode, count, type, indices, drawcount, basevertex);
3757}
3758
3759void glwMultiDrawElementsIndirect (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride)
3760{
3761	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3762	if (!gl)
3763		return;
3764	gl->multiDrawElementsIndirect(mode, type, indirect, drawcount, stride);
3765}
3766
3767void glwMultiDrawElementsIndirectCount (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride)
3768{
3769	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3770	if (!gl)
3771		return;
3772	gl->multiDrawElementsIndirectCount(mode, type, indirect, drawcount, maxdrawcount, stride);
3773}
3774
3775void glwMultiTexBufferEXT (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer)
3776{
3777	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3778	if (!gl)
3779		return;
3780	gl->multiTexBufferEXT(texunit, target, internalformat, buffer);
3781}
3782
3783void glwMultiTexCoordPointerEXT (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer)
3784{
3785	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3786	if (!gl)
3787		return;
3788	gl->multiTexCoordPointerEXT(texunit, size, type, stride, pointer);
3789}
3790
3791void glwMultiTexEnvfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param)
3792{
3793	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3794	if (!gl)
3795		return;
3796	gl->multiTexEnvfEXT(texunit, target, pname, param);
3797}
3798
3799void glwMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params)
3800{
3801	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3802	if (!gl)
3803		return;
3804	gl->multiTexEnvfvEXT(texunit, target, pname, params);
3805}
3806
3807void glwMultiTexEnviEXT (GLenum texunit, GLenum target, GLenum pname, GLint param)
3808{
3809	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3810	if (!gl)
3811		return;
3812	gl->multiTexEnviEXT(texunit, target, pname, param);
3813}
3814
3815void glwMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params)
3816{
3817	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3818	if (!gl)
3819		return;
3820	gl->multiTexEnvivEXT(texunit, target, pname, params);
3821}
3822
3823void glwMultiTexGendEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble param)
3824{
3825	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3826	if (!gl)
3827		return;
3828	gl->multiTexGendEXT(texunit, coord, pname, param);
3829}
3830
3831void glwMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params)
3832{
3833	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3834	if (!gl)
3835		return;
3836	gl->multiTexGendvEXT(texunit, coord, pname, params);
3837}
3838
3839void glwMultiTexGenfEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat param)
3840{
3841	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3842	if (!gl)
3843		return;
3844	gl->multiTexGenfEXT(texunit, coord, pname, param);
3845}
3846
3847void glwMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params)
3848{
3849	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3850	if (!gl)
3851		return;
3852	gl->multiTexGenfvEXT(texunit, coord, pname, params);
3853}
3854
3855void glwMultiTexGeniEXT (GLenum texunit, GLenum coord, GLenum pname, GLint param)
3856{
3857	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3858	if (!gl)
3859		return;
3860	gl->multiTexGeniEXT(texunit, coord, pname, param);
3861}
3862
3863void glwMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, const GLint *params)
3864{
3865	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3866	if (!gl)
3867		return;
3868	gl->multiTexGenivEXT(texunit, coord, pname, params);
3869}
3870
3871void glwMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels)
3872{
3873	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3874	if (!gl)
3875		return;
3876	gl->multiTexImage1DEXT(texunit, target, level, internalformat, width, border, format, type, pixels);
3877}
3878
3879void glwMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels)
3880{
3881	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3882	if (!gl)
3883		return;
3884	gl->multiTexImage2DEXT(texunit, target, level, internalformat, width, height, border, format, type, pixels);
3885}
3886
3887void glwMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels)
3888{
3889	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3890	if (!gl)
3891		return;
3892	gl->multiTexImage3DEXT(texunit, target, level, internalformat, width, height, depth, border, format, type, pixels);
3893}
3894
3895void glwMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params)
3896{
3897	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3898	if (!gl)
3899		return;
3900	gl->multiTexParameterIivEXT(texunit, target, pname, params);
3901}
3902
3903void glwMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, const GLuint *params)
3904{
3905	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3906	if (!gl)
3907		return;
3908	gl->multiTexParameterIuivEXT(texunit, target, pname, params);
3909}
3910
3911void glwMultiTexParameterfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param)
3912{
3913	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3914	if (!gl)
3915		return;
3916	gl->multiTexParameterfEXT(texunit, target, pname, param);
3917}
3918
3919void glwMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params)
3920{
3921	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3922	if (!gl)
3923		return;
3924	gl->multiTexParameterfvEXT(texunit, target, pname, params);
3925}
3926
3927void glwMultiTexParameteriEXT (GLenum texunit, GLenum target, GLenum pname, GLint param)
3928{
3929	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3930	if (!gl)
3931		return;
3932	gl->multiTexParameteriEXT(texunit, target, pname, param);
3933}
3934
3935void glwMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params)
3936{
3937	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3938	if (!gl)
3939		return;
3940	gl->multiTexParameterivEXT(texunit, target, pname, params);
3941}
3942
3943void glwMultiTexRenderbufferEXT (GLenum texunit, GLenum target, GLuint renderbuffer)
3944{
3945	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3946	if (!gl)
3947		return;
3948	gl->multiTexRenderbufferEXT(texunit, target, renderbuffer);
3949}
3950
3951void glwMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels)
3952{
3953	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3954	if (!gl)
3955		return;
3956	gl->multiTexSubImage1DEXT(texunit, target, level, xoffset, width, format, type, pixels);
3957}
3958
3959void glwMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)
3960{
3961	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3962	if (!gl)
3963		return;
3964	gl->multiTexSubImage2DEXT(texunit, target, level, xoffset, yoffset, width, height, format, type, pixels);
3965}
3966
3967void glwMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels)
3968{
3969	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3970	if (!gl)
3971		return;
3972	gl->multiTexSubImage3DEXT(texunit, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
3973}
3974
3975void glwMulticastBarrierNV (void)
3976{
3977	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3978	if (!gl)
3979		return;
3980	gl->multicastBarrierNV();
3981}
3982
3983void glwMulticastBlitFramebufferNV (GLuint srcGpu, GLuint dstGpu, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
3984{
3985	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3986	if (!gl)
3987		return;
3988	gl->multicastBlitFramebufferNV(srcGpu, dstGpu, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
3989}
3990
3991void glwMulticastBufferSubDataNV (GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data)
3992{
3993	const glw::Functions* gl = glw::getCurrentThreadFunctions();
3994	if (!gl)
3995		return;
3996	gl->multicastBufferSubDataNV(gpuMask, buffer, offset, size, data);
3997}
3998
3999void glwMulticastCopyBufferSubDataNV (GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
4000{
4001	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4002	if (!gl)
4003		return;
4004	gl->multicastCopyBufferSubDataNV(readGpu, writeGpuMask, readBuffer, writeBuffer, readOffset, writeOffset, size);
4005}
4006
4007void glwMulticastCopyImageSubDataNV (GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth)
4008{
4009	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4010	if (!gl)
4011		return;
4012	gl->multicastCopyImageSubDataNV(srcGpu, dstGpuMask, srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth);
4013}
4014
4015void glwMulticastFramebufferSampleLocationsfvNV (GLuint gpu, GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v)
4016{
4017	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4018	if (!gl)
4019		return;
4020	gl->multicastFramebufferSampleLocationsfvNV(gpu, framebuffer, start, count, v);
4021}
4022
4023void glwMulticastGetQueryObjecti64vNV (GLuint gpu, GLuint id, GLenum pname, GLint64 *params)
4024{
4025	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4026	if (!gl)
4027		return;
4028	gl->multicastGetQueryObjecti64vNV(gpu, id, pname, params);
4029}
4030
4031void glwMulticastGetQueryObjectivNV (GLuint gpu, GLuint id, GLenum pname, GLint *params)
4032{
4033	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4034	if (!gl)
4035		return;
4036	gl->multicastGetQueryObjectivNV(gpu, id, pname, params);
4037}
4038
4039void glwMulticastGetQueryObjectui64vNV (GLuint gpu, GLuint id, GLenum pname, GLuint64 *params)
4040{
4041	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4042	if (!gl)
4043		return;
4044	gl->multicastGetQueryObjectui64vNV(gpu, id, pname, params);
4045}
4046
4047void glwMulticastGetQueryObjectuivNV (GLuint gpu, GLuint id, GLenum pname, GLuint *params)
4048{
4049	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4050	if (!gl)
4051		return;
4052	gl->multicastGetQueryObjectuivNV(gpu, id, pname, params);
4053}
4054
4055void glwMulticastWaitSyncNV (GLuint signalGpu, GLbitfield waitGpuMask)
4056{
4057	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4058	if (!gl)
4059		return;
4060	gl->multicastWaitSyncNV(signalGpu, waitGpuMask);
4061}
4062
4063void glwNamedBufferData (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage)
4064{
4065	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4066	if (!gl)
4067		return;
4068	gl->namedBufferData(buffer, size, data, usage);
4069}
4070
4071void glwNamedBufferDataEXT (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage)
4072{
4073	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4074	if (!gl)
4075		return;
4076	gl->namedBufferDataEXT(buffer, size, data, usage);
4077}
4078
4079void glwNamedBufferPageCommitmentARB (GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit)
4080{
4081	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4082	if (!gl)
4083		return;
4084	gl->namedBufferPageCommitmentARB(buffer, offset, size, commit);
4085}
4086
4087void glwNamedBufferPageCommitmentEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit)
4088{
4089	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4090	if (!gl)
4091		return;
4092	gl->namedBufferPageCommitmentEXT(buffer, offset, size, commit);
4093}
4094
4095void glwNamedBufferStorage (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags)
4096{
4097	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4098	if (!gl)
4099		return;
4100	gl->namedBufferStorage(buffer, size, data, flags);
4101}
4102
4103void glwNamedBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data)
4104{
4105	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4106	if (!gl)
4107		return;
4108	gl->namedBufferSubData(buffer, offset, size, data);
4109}
4110
4111void glwNamedCopyBufferSubDataEXT (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
4112{
4113	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4114	if (!gl)
4115		return;
4116	gl->namedCopyBufferSubDataEXT(readBuffer, writeBuffer, readOffset, writeOffset, size);
4117}
4118
4119void glwNamedFramebufferDrawBuffer (GLuint framebuffer, GLenum buf)
4120{
4121	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4122	if (!gl)
4123		return;
4124	gl->namedFramebufferDrawBuffer(framebuffer, buf);
4125}
4126
4127void glwNamedFramebufferDrawBuffers (GLuint framebuffer, GLsizei n, const GLenum *bufs)
4128{
4129	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4130	if (!gl)
4131		return;
4132	gl->namedFramebufferDrawBuffers(framebuffer, n, bufs);
4133}
4134
4135void glwNamedFramebufferParameteri (GLuint framebuffer, GLenum pname, GLint param)
4136{
4137	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4138	if (!gl)
4139		return;
4140	gl->namedFramebufferParameteri(framebuffer, pname, param);
4141}
4142
4143void glwNamedFramebufferParameteriEXT (GLuint framebuffer, GLenum pname, GLint param)
4144{
4145	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4146	if (!gl)
4147		return;
4148	gl->namedFramebufferParameteriEXT(framebuffer, pname, param);
4149}
4150
4151void glwNamedFramebufferReadBuffer (GLuint framebuffer, GLenum src)
4152{
4153	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4154	if (!gl)
4155		return;
4156	gl->namedFramebufferReadBuffer(framebuffer, src);
4157}
4158
4159void glwNamedFramebufferRenderbuffer (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
4160{
4161	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4162	if (!gl)
4163		return;
4164	gl->namedFramebufferRenderbuffer(framebuffer, attachment, renderbuffertarget, renderbuffer);
4165}
4166
4167void glwNamedFramebufferRenderbufferEXT (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
4168{
4169	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4170	if (!gl)
4171		return;
4172	gl->namedFramebufferRenderbufferEXT(framebuffer, attachment, renderbuffertarget, renderbuffer);
4173}
4174
4175void glwNamedFramebufferTexture (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level)
4176{
4177	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4178	if (!gl)
4179		return;
4180	gl->namedFramebufferTexture(framebuffer, attachment, texture, level);
4181}
4182
4183void glwNamedFramebufferTexture1DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
4184{
4185	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4186	if (!gl)
4187		return;
4188	gl->namedFramebufferTexture1DEXT(framebuffer, attachment, textarget, texture, level);
4189}
4190
4191void glwNamedFramebufferTexture2DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
4192{
4193	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4194	if (!gl)
4195		return;
4196	gl->namedFramebufferTexture2DEXT(framebuffer, attachment, textarget, texture, level);
4197}
4198
4199void glwNamedFramebufferTexture3DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
4200{
4201	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4202	if (!gl)
4203		return;
4204	gl->namedFramebufferTexture3DEXT(framebuffer, attachment, textarget, texture, level, zoffset);
4205}
4206
4207void glwNamedFramebufferTextureEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level)
4208{
4209	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4210	if (!gl)
4211		return;
4212	gl->namedFramebufferTextureEXT(framebuffer, attachment, texture, level);
4213}
4214
4215void glwNamedFramebufferTextureFaceEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face)
4216{
4217	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4218	if (!gl)
4219		return;
4220	gl->namedFramebufferTextureFaceEXT(framebuffer, attachment, texture, level, face);
4221}
4222
4223void glwNamedFramebufferTextureLayer (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer)
4224{
4225	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4226	if (!gl)
4227		return;
4228	gl->namedFramebufferTextureLayer(framebuffer, attachment, texture, level, layer);
4229}
4230
4231void glwNamedFramebufferTextureLayerEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer)
4232{
4233	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4234	if (!gl)
4235		return;
4236	gl->namedFramebufferTextureLayerEXT(framebuffer, attachment, texture, level, layer);
4237}
4238
4239void glwNamedProgramLocalParameter4dEXT (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
4240{
4241	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4242	if (!gl)
4243		return;
4244	gl->namedProgramLocalParameter4dEXT(program, target, index, x, y, z, w);
4245}
4246
4247void glwNamedProgramLocalParameter4dvEXT (GLuint program, GLenum target, GLuint index, const GLdouble *params)
4248{
4249	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4250	if (!gl)
4251		return;
4252	gl->namedProgramLocalParameter4dvEXT(program, target, index, params);
4253}
4254
4255void glwNamedProgramLocalParameter4fEXT (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
4256{
4257	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4258	if (!gl)
4259		return;
4260	gl->namedProgramLocalParameter4fEXT(program, target, index, x, y, z, w);
4261}
4262
4263void glwNamedProgramLocalParameter4fvEXT (GLuint program, GLenum target, GLuint index, const GLfloat *params)
4264{
4265	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4266	if (!gl)
4267		return;
4268	gl->namedProgramLocalParameter4fvEXT(program, target, index, params);
4269}
4270
4271void glwNamedProgramLocalParameterI4iEXT (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w)
4272{
4273	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4274	if (!gl)
4275		return;
4276	gl->namedProgramLocalParameterI4iEXT(program, target, index, x, y, z, w);
4277}
4278
4279void glwNamedProgramLocalParameterI4ivEXT (GLuint program, GLenum target, GLuint index, const GLint *params)
4280{
4281	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4282	if (!gl)
4283		return;
4284	gl->namedProgramLocalParameterI4ivEXT(program, target, index, params);
4285}
4286
4287void glwNamedProgramLocalParameterI4uiEXT (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
4288{
4289	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4290	if (!gl)
4291		return;
4292	gl->namedProgramLocalParameterI4uiEXT(program, target, index, x, y, z, w);
4293}
4294
4295void glwNamedProgramLocalParameterI4uivEXT (GLuint program, GLenum target, GLuint index, const GLuint *params)
4296{
4297	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4298	if (!gl)
4299		return;
4300	gl->namedProgramLocalParameterI4uivEXT(program, target, index, params);
4301}
4302
4303void glwNamedProgramLocalParameters4fvEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params)
4304{
4305	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4306	if (!gl)
4307		return;
4308	gl->namedProgramLocalParameters4fvEXT(program, target, index, count, params);
4309}
4310
4311void glwNamedProgramLocalParametersI4ivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params)
4312{
4313	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4314	if (!gl)
4315		return;
4316	gl->namedProgramLocalParametersI4ivEXT(program, target, index, count, params);
4317}
4318
4319void glwNamedProgramLocalParametersI4uivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params)
4320{
4321	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4322	if (!gl)
4323		return;
4324	gl->namedProgramLocalParametersI4uivEXT(program, target, index, count, params);
4325}
4326
4327void glwNamedProgramStringEXT (GLuint program, GLenum target, GLenum format, GLsizei len, const void *string)
4328{
4329	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4330	if (!gl)
4331		return;
4332	gl->namedProgramStringEXT(program, target, format, len, string);
4333}
4334
4335void glwNamedRenderbufferStorage (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height)
4336{
4337	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4338	if (!gl)
4339		return;
4340	gl->namedRenderbufferStorage(renderbuffer, internalformat, width, height);
4341}
4342
4343void glwNamedRenderbufferStorageEXT (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height)
4344{
4345	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4346	if (!gl)
4347		return;
4348	gl->namedRenderbufferStorageEXT(renderbuffer, internalformat, width, height);
4349}
4350
4351void glwNamedRenderbufferStorageMultisample (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
4352{
4353	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4354	if (!gl)
4355		return;
4356	gl->namedRenderbufferStorageMultisample(renderbuffer, samples, internalformat, width, height);
4357}
4358
4359void glwNamedRenderbufferStorageMultisampleCoverageEXT (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height)
4360{
4361	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4362	if (!gl)
4363		return;
4364	gl->namedRenderbufferStorageMultisampleCoverageEXT(renderbuffer, coverageSamples, colorSamples, internalformat, width, height);
4365}
4366
4367void glwNamedRenderbufferStorageMultisampleEXT (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
4368{
4369	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4370	if (!gl)
4371		return;
4372	gl->namedRenderbufferStorageMultisampleEXT(renderbuffer, samples, internalformat, width, height);
4373}
4374
4375void glwObjectLabel (GLenum identifier, GLuint name, GLsizei length, const GLchar *label)
4376{
4377	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4378	if (!gl)
4379		return;
4380	gl->objectLabel(identifier, name, length, label);
4381}
4382
4383void glwObjectPtrLabel (const void *ptr, GLsizei length, const GLchar *label)
4384{
4385	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4386	if (!gl)
4387		return;
4388	gl->objectPtrLabel(ptr, length, label);
4389}
4390
4391void glwPatchParameterfv (GLenum pname, const GLfloat *values)
4392{
4393	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4394	if (!gl)
4395		return;
4396	gl->patchParameterfv(pname, values);
4397}
4398
4399void glwPatchParameteri (GLenum pname, GLint value)
4400{
4401	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4402	if (!gl)
4403		return;
4404	gl->patchParameteri(pname, value);
4405}
4406
4407void glwPauseTransformFeedback (void)
4408{
4409	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4410	if (!gl)
4411		return;
4412	gl->pauseTransformFeedback();
4413}
4414
4415void glwPixelStoref (GLenum pname, GLfloat param)
4416{
4417	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4418	if (!gl)
4419		return;
4420	gl->pixelStoref(pname, param);
4421}
4422
4423void glwPixelStorei (GLenum pname, GLint param)
4424{
4425	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4426	if (!gl)
4427		return;
4428	gl->pixelStorei(pname, param);
4429}
4430
4431void glwPointParameterf (GLenum pname, GLfloat param)
4432{
4433	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4434	if (!gl)
4435		return;
4436	gl->pointParameterf(pname, param);
4437}
4438
4439void glwPointParameterfv (GLenum pname, const GLfloat *params)
4440{
4441	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4442	if (!gl)
4443		return;
4444	gl->pointParameterfv(pname, params);
4445}
4446
4447void glwPointParameteri (GLenum pname, GLint param)
4448{
4449	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4450	if (!gl)
4451		return;
4452	gl->pointParameteri(pname, param);
4453}
4454
4455void glwPointParameteriv (GLenum pname, const GLint *params)
4456{
4457	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4458	if (!gl)
4459		return;
4460	gl->pointParameteriv(pname, params);
4461}
4462
4463void glwPointSize (GLfloat size)
4464{
4465	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4466	if (!gl)
4467		return;
4468	gl->pointSize(size);
4469}
4470
4471void glwPolygonMode (GLenum face, GLenum mode)
4472{
4473	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4474	if (!gl)
4475		return;
4476	gl->polygonMode(face, mode);
4477}
4478
4479void glwPolygonOffset (GLfloat factor, GLfloat units)
4480{
4481	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4482	if (!gl)
4483		return;
4484	gl->polygonOffset(factor, units);
4485}
4486
4487void glwPolygonOffsetClamp (GLfloat factor, GLfloat units, GLfloat clamp)
4488{
4489	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4490	if (!gl)
4491		return;
4492	gl->polygonOffsetClamp(factor, units, clamp);
4493}
4494
4495void glwPopDebugGroup (void)
4496{
4497	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4498	if (!gl)
4499		return;
4500	gl->popDebugGroup();
4501}
4502
4503void glwPopGroupMarkerEXT (void)
4504{
4505	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4506	if (!gl)
4507		return;
4508	gl->popGroupMarkerEXT();
4509}
4510
4511void glwPrimitiveBoundingBox (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW)
4512{
4513	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4514	if (!gl)
4515		return;
4516	gl->primitiveBoundingBox(minX, minY, minZ, minW, maxX, maxY, maxZ, maxW);
4517}
4518
4519void glwPrimitiveRestartIndex (GLuint index)
4520{
4521	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4522	if (!gl)
4523		return;
4524	gl->primitiveRestartIndex(index);
4525}
4526
4527void glwProgramBinary (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length)
4528{
4529	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4530	if (!gl)
4531		return;
4532	gl->programBinary(program, binaryFormat, binary, length);
4533}
4534
4535void glwProgramParameteri (GLuint program, GLenum pname, GLint value)
4536{
4537	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4538	if (!gl)
4539		return;
4540	gl->programParameteri(program, pname, value);
4541}
4542
4543void glwProgramUniform1d (GLuint program, GLint location, GLdouble v0)
4544{
4545	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4546	if (!gl)
4547		return;
4548	gl->programUniform1d(program, location, v0);
4549}
4550
4551void glwProgramUniform1dEXT (GLuint program, GLint location, GLdouble x)
4552{
4553	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4554	if (!gl)
4555		return;
4556	gl->programUniform1dEXT(program, location, x);
4557}
4558
4559void glwProgramUniform1dv (GLuint program, GLint location, GLsizei count, const GLdouble *value)
4560{
4561	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4562	if (!gl)
4563		return;
4564	gl->programUniform1dv(program, location, count, value);
4565}
4566
4567void glwProgramUniform1dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value)
4568{
4569	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4570	if (!gl)
4571		return;
4572	gl->programUniform1dvEXT(program, location, count, value);
4573}
4574
4575void glwProgramUniform1f (GLuint program, GLint location, GLfloat v0)
4576{
4577	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4578	if (!gl)
4579		return;
4580	gl->programUniform1f(program, location, v0);
4581}
4582
4583void glwProgramUniform1fv (GLuint program, GLint location, GLsizei count, const GLfloat *value)
4584{
4585	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4586	if (!gl)
4587		return;
4588	gl->programUniform1fv(program, location, count, value);
4589}
4590
4591void glwProgramUniform1i (GLuint program, GLint location, GLint v0)
4592{
4593	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4594	if (!gl)
4595		return;
4596	gl->programUniform1i(program, location, v0);
4597}
4598
4599void glwProgramUniform1iv (GLuint program, GLint location, GLsizei count, const GLint *value)
4600{
4601	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4602	if (!gl)
4603		return;
4604	gl->programUniform1iv(program, location, count, value);
4605}
4606
4607void glwProgramUniform1ui (GLuint program, GLint location, GLuint v0)
4608{
4609	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4610	if (!gl)
4611		return;
4612	gl->programUniform1ui(program, location, v0);
4613}
4614
4615void glwProgramUniform1uiv (GLuint program, GLint location, GLsizei count, const GLuint *value)
4616{
4617	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4618	if (!gl)
4619		return;
4620	gl->programUniform1uiv(program, location, count, value);
4621}
4622
4623void glwProgramUniform2d (GLuint program, GLint location, GLdouble v0, GLdouble v1)
4624{
4625	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4626	if (!gl)
4627		return;
4628	gl->programUniform2d(program, location, v0, v1);
4629}
4630
4631void glwProgramUniform2dEXT (GLuint program, GLint location, GLdouble x, GLdouble y)
4632{
4633	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4634	if (!gl)
4635		return;
4636	gl->programUniform2dEXT(program, location, x, y);
4637}
4638
4639void glwProgramUniform2dv (GLuint program, GLint location, GLsizei count, const GLdouble *value)
4640{
4641	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4642	if (!gl)
4643		return;
4644	gl->programUniform2dv(program, location, count, value);
4645}
4646
4647void glwProgramUniform2dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value)
4648{
4649	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4650	if (!gl)
4651		return;
4652	gl->programUniform2dvEXT(program, location, count, value);
4653}
4654
4655void glwProgramUniform2f (GLuint program, GLint location, GLfloat v0, GLfloat v1)
4656{
4657	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4658	if (!gl)
4659		return;
4660	gl->programUniform2f(program, location, v0, v1);
4661}
4662
4663void glwProgramUniform2fv (GLuint program, GLint location, GLsizei count, const GLfloat *value)
4664{
4665	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4666	if (!gl)
4667		return;
4668	gl->programUniform2fv(program, location, count, value);
4669}
4670
4671void glwProgramUniform2i (GLuint program, GLint location, GLint v0, GLint v1)
4672{
4673	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4674	if (!gl)
4675		return;
4676	gl->programUniform2i(program, location, v0, v1);
4677}
4678
4679void glwProgramUniform2iv (GLuint program, GLint location, GLsizei count, const GLint *value)
4680{
4681	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4682	if (!gl)
4683		return;
4684	gl->programUniform2iv(program, location, count, value);
4685}
4686
4687void glwProgramUniform2ui (GLuint program, GLint location, GLuint v0, GLuint v1)
4688{
4689	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4690	if (!gl)
4691		return;
4692	gl->programUniform2ui(program, location, v0, v1);
4693}
4694
4695void glwProgramUniform2uiv (GLuint program, GLint location, GLsizei count, const GLuint *value)
4696{
4697	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4698	if (!gl)
4699		return;
4700	gl->programUniform2uiv(program, location, count, value);
4701}
4702
4703void glwProgramUniform3d (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2)
4704{
4705	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4706	if (!gl)
4707		return;
4708	gl->programUniform3d(program, location, v0, v1, v2);
4709}
4710
4711void glwProgramUniform3dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z)
4712{
4713	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4714	if (!gl)
4715		return;
4716	gl->programUniform3dEXT(program, location, x, y, z);
4717}
4718
4719void glwProgramUniform3dv (GLuint program, GLint location, GLsizei count, const GLdouble *value)
4720{
4721	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4722	if (!gl)
4723		return;
4724	gl->programUniform3dv(program, location, count, value);
4725}
4726
4727void glwProgramUniform3dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value)
4728{
4729	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4730	if (!gl)
4731		return;
4732	gl->programUniform3dvEXT(program, location, count, value);
4733}
4734
4735void glwProgramUniform3f (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
4736{
4737	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4738	if (!gl)
4739		return;
4740	gl->programUniform3f(program, location, v0, v1, v2);
4741}
4742
4743void glwProgramUniform3fv (GLuint program, GLint location, GLsizei count, const GLfloat *value)
4744{
4745	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4746	if (!gl)
4747		return;
4748	gl->programUniform3fv(program, location, count, value);
4749}
4750
4751void glwProgramUniform3i (GLuint program, GLint location, GLint v0, GLint v1, GLint v2)
4752{
4753	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4754	if (!gl)
4755		return;
4756	gl->programUniform3i(program, location, v0, v1, v2);
4757}
4758
4759void glwProgramUniform3iv (GLuint program, GLint location, GLsizei count, const GLint *value)
4760{
4761	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4762	if (!gl)
4763		return;
4764	gl->programUniform3iv(program, location, count, value);
4765}
4766
4767void glwProgramUniform3ui (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2)
4768{
4769	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4770	if (!gl)
4771		return;
4772	gl->programUniform3ui(program, location, v0, v1, v2);
4773}
4774
4775void glwProgramUniform3uiv (GLuint program, GLint location, GLsizei count, const GLuint *value)
4776{
4777	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4778	if (!gl)
4779		return;
4780	gl->programUniform3uiv(program, location, count, value);
4781}
4782
4783void glwProgramUniform4d (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3)
4784{
4785	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4786	if (!gl)
4787		return;
4788	gl->programUniform4d(program, location, v0, v1, v2, v3);
4789}
4790
4791void glwProgramUniform4dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
4792{
4793	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4794	if (!gl)
4795		return;
4796	gl->programUniform4dEXT(program, location, x, y, z, w);
4797}
4798
4799void glwProgramUniform4dv (GLuint program, GLint location, GLsizei count, const GLdouble *value)
4800{
4801	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4802	if (!gl)
4803		return;
4804	gl->programUniform4dv(program, location, count, value);
4805}
4806
4807void glwProgramUniform4dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value)
4808{
4809	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4810	if (!gl)
4811		return;
4812	gl->programUniform4dvEXT(program, location, count, value);
4813}
4814
4815void glwProgramUniform4f (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
4816{
4817	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4818	if (!gl)
4819		return;
4820	gl->programUniform4f(program, location, v0, v1, v2, v3);
4821}
4822
4823void glwProgramUniform4fv (GLuint program, GLint location, GLsizei count, const GLfloat *value)
4824{
4825	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4826	if (!gl)
4827		return;
4828	gl->programUniform4fv(program, location, count, value);
4829}
4830
4831void glwProgramUniform4i (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
4832{
4833	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4834	if (!gl)
4835		return;
4836	gl->programUniform4i(program, location, v0, v1, v2, v3);
4837}
4838
4839void glwProgramUniform4iv (GLuint program, GLint location, GLsizei count, const GLint *value)
4840{
4841	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4842	if (!gl)
4843		return;
4844	gl->programUniform4iv(program, location, count, value);
4845}
4846
4847void glwProgramUniform4ui (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
4848{
4849	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4850	if (!gl)
4851		return;
4852	gl->programUniform4ui(program, location, v0, v1, v2, v3);
4853}
4854
4855void glwProgramUniform4uiv (GLuint program, GLint location, GLsizei count, const GLuint *value)
4856{
4857	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4858	if (!gl)
4859		return;
4860	gl->programUniform4uiv(program, location, count, value);
4861}
4862
4863void glwProgramUniformMatrix2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
4864{
4865	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4866	if (!gl)
4867		return;
4868	gl->programUniformMatrix2dv(program, location, count, transpose, value);
4869}
4870
4871void glwProgramUniformMatrix2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
4872{
4873	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4874	if (!gl)
4875		return;
4876	gl->programUniformMatrix2dvEXT(program, location, count, transpose, value);
4877}
4878
4879void glwProgramUniformMatrix2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
4880{
4881	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4882	if (!gl)
4883		return;
4884	gl->programUniformMatrix2fv(program, location, count, transpose, value);
4885}
4886
4887void glwProgramUniformMatrix2x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
4888{
4889	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4890	if (!gl)
4891		return;
4892	gl->programUniformMatrix2x3dv(program, location, count, transpose, value);
4893}
4894
4895void glwProgramUniformMatrix2x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
4896{
4897	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4898	if (!gl)
4899		return;
4900	gl->programUniformMatrix2x3dvEXT(program, location, count, transpose, value);
4901}
4902
4903void glwProgramUniformMatrix2x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
4904{
4905	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4906	if (!gl)
4907		return;
4908	gl->programUniformMatrix2x3fv(program, location, count, transpose, value);
4909}
4910
4911void glwProgramUniformMatrix2x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
4912{
4913	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4914	if (!gl)
4915		return;
4916	gl->programUniformMatrix2x4dv(program, location, count, transpose, value);
4917}
4918
4919void glwProgramUniformMatrix2x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
4920{
4921	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4922	if (!gl)
4923		return;
4924	gl->programUniformMatrix2x4dvEXT(program, location, count, transpose, value);
4925}
4926
4927void glwProgramUniformMatrix2x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
4928{
4929	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4930	if (!gl)
4931		return;
4932	gl->programUniformMatrix2x4fv(program, location, count, transpose, value);
4933}
4934
4935void glwProgramUniformMatrix3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
4936{
4937	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4938	if (!gl)
4939		return;
4940	gl->programUniformMatrix3dv(program, location, count, transpose, value);
4941}
4942
4943void glwProgramUniformMatrix3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
4944{
4945	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4946	if (!gl)
4947		return;
4948	gl->programUniformMatrix3dvEXT(program, location, count, transpose, value);
4949}
4950
4951void glwProgramUniformMatrix3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
4952{
4953	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4954	if (!gl)
4955		return;
4956	gl->programUniformMatrix3fv(program, location, count, transpose, value);
4957}
4958
4959void glwProgramUniformMatrix3x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
4960{
4961	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4962	if (!gl)
4963		return;
4964	gl->programUniformMatrix3x2dv(program, location, count, transpose, value);
4965}
4966
4967void glwProgramUniformMatrix3x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
4968{
4969	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4970	if (!gl)
4971		return;
4972	gl->programUniformMatrix3x2dvEXT(program, location, count, transpose, value);
4973}
4974
4975void glwProgramUniformMatrix3x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
4976{
4977	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4978	if (!gl)
4979		return;
4980	gl->programUniformMatrix3x2fv(program, location, count, transpose, value);
4981}
4982
4983void glwProgramUniformMatrix3x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
4984{
4985	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4986	if (!gl)
4987		return;
4988	gl->programUniformMatrix3x4dv(program, location, count, transpose, value);
4989}
4990
4991void glwProgramUniformMatrix3x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
4992{
4993	const glw::Functions* gl = glw::getCurrentThreadFunctions();
4994	if (!gl)
4995		return;
4996	gl->programUniformMatrix3x4dvEXT(program, location, count, transpose, value);
4997}
4998
4999void glwProgramUniformMatrix3x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
5000{
5001	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5002	if (!gl)
5003		return;
5004	gl->programUniformMatrix3x4fv(program, location, count, transpose, value);
5005}
5006
5007void glwProgramUniformMatrix4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
5008{
5009	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5010	if (!gl)
5011		return;
5012	gl->programUniformMatrix4dv(program, location, count, transpose, value);
5013}
5014
5015void glwProgramUniformMatrix4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
5016{
5017	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5018	if (!gl)
5019		return;
5020	gl->programUniformMatrix4dvEXT(program, location, count, transpose, value);
5021}
5022
5023void glwProgramUniformMatrix4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
5024{
5025	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5026	if (!gl)
5027		return;
5028	gl->programUniformMatrix4fv(program, location, count, transpose, value);
5029}
5030
5031void glwProgramUniformMatrix4x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
5032{
5033	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5034	if (!gl)
5035		return;
5036	gl->programUniformMatrix4x2dv(program, location, count, transpose, value);
5037}
5038
5039void glwProgramUniformMatrix4x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
5040{
5041	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5042	if (!gl)
5043		return;
5044	gl->programUniformMatrix4x2dvEXT(program, location, count, transpose, value);
5045}
5046
5047void glwProgramUniformMatrix4x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
5048{
5049	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5050	if (!gl)
5051		return;
5052	gl->programUniformMatrix4x2fv(program, location, count, transpose, value);
5053}
5054
5055void glwProgramUniformMatrix4x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
5056{
5057	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5058	if (!gl)
5059		return;
5060	gl->programUniformMatrix4x3dv(program, location, count, transpose, value);
5061}
5062
5063void glwProgramUniformMatrix4x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
5064{
5065	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5066	if (!gl)
5067		return;
5068	gl->programUniformMatrix4x3dvEXT(program, location, count, transpose, value);
5069}
5070
5071void glwProgramUniformMatrix4x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
5072{
5073	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5074	if (!gl)
5075		return;
5076	gl->programUniformMatrix4x3fv(program, location, count, transpose, value);
5077}
5078
5079void glwProvokingVertex (GLenum mode)
5080{
5081	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5082	if (!gl)
5083		return;
5084	gl->provokingVertex(mode);
5085}
5086
5087void glwPushClientAttribDefaultEXT (GLbitfield mask)
5088{
5089	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5090	if (!gl)
5091		return;
5092	gl->pushClientAttribDefaultEXT(mask);
5093}
5094
5095void glwPushDebugGroup (GLenum source, GLuint id, GLsizei length, const GLchar *message)
5096{
5097	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5098	if (!gl)
5099		return;
5100	gl->pushDebugGroup(source, id, length, message);
5101}
5102
5103void glwPushGroupMarkerEXT (GLsizei length, const GLchar *marker)
5104{
5105	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5106	if (!gl)
5107		return;
5108	gl->pushGroupMarkerEXT(length, marker);
5109}
5110
5111void glwQueryCounter (GLuint id, GLenum target)
5112{
5113	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5114	if (!gl)
5115		return;
5116	gl->queryCounter(id, target);
5117}
5118
5119void glwReadBuffer (GLenum src)
5120{
5121	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5122	if (!gl)
5123		return;
5124	gl->readBuffer(src);
5125}
5126
5127void glwReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels)
5128{
5129	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5130	if (!gl)
5131		return;
5132	gl->readPixels(x, y, width, height, format, type, pixels);
5133}
5134
5135void glwReadnPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data)
5136{
5137	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5138	if (!gl)
5139		return;
5140	gl->readnPixels(x, y, width, height, format, type, bufSize, data);
5141}
5142
5143void glwReleaseShaderCompiler (void)
5144{
5145	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5146	if (!gl)
5147		return;
5148	gl->releaseShaderCompiler();
5149}
5150
5151void glwRenderGpuMaskNV (GLbitfield mask)
5152{
5153	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5154	if (!gl)
5155		return;
5156	gl->renderGpuMaskNV(mask);
5157}
5158
5159void glwRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
5160{
5161	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5162	if (!gl)
5163		return;
5164	gl->renderbufferStorage(target, internalformat, width, height);
5165}
5166
5167void glwRenderbufferStorageMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
5168{
5169	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5170	if (!gl)
5171		return;
5172	gl->renderbufferStorageMultisample(target, samples, internalformat, width, height);
5173}
5174
5175void glwRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
5176{
5177	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5178	if (!gl)
5179		return;
5180	gl->renderbufferStorageMultisampleEXT(target, samples, internalformat, width, height);
5181}
5182
5183void glwResumeTransformFeedback (void)
5184{
5185	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5186	if (!gl)
5187		return;
5188	gl->resumeTransformFeedback();
5189}
5190
5191void glwSampleCoverage (GLfloat value, GLboolean invert)
5192{
5193	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5194	if (!gl)
5195		return;
5196	gl->sampleCoverage(value, invert);
5197}
5198
5199void glwSampleMaski (GLuint maskNumber, GLbitfield mask)
5200{
5201	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5202	if (!gl)
5203		return;
5204	gl->sampleMaski(maskNumber, mask);
5205}
5206
5207void glwSamplerParameterIiv (GLuint sampler, GLenum pname, const GLint *param)
5208{
5209	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5210	if (!gl)
5211		return;
5212	gl->samplerParameterIiv(sampler, pname, param);
5213}
5214
5215void glwSamplerParameterIuiv (GLuint sampler, GLenum pname, const GLuint *param)
5216{
5217	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5218	if (!gl)
5219		return;
5220	gl->samplerParameterIuiv(sampler, pname, param);
5221}
5222
5223void glwSamplerParameterf (GLuint sampler, GLenum pname, GLfloat param)
5224{
5225	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5226	if (!gl)
5227		return;
5228	gl->samplerParameterf(sampler, pname, param);
5229}
5230
5231void glwSamplerParameterfv (GLuint sampler, GLenum pname, const GLfloat *param)
5232{
5233	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5234	if (!gl)
5235		return;
5236	gl->samplerParameterfv(sampler, pname, param);
5237}
5238
5239void glwSamplerParameteri (GLuint sampler, GLenum pname, GLint param)
5240{
5241	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5242	if (!gl)
5243		return;
5244	gl->samplerParameteri(sampler, pname, param);
5245}
5246
5247void glwSamplerParameteriv (GLuint sampler, GLenum pname, const GLint *param)
5248{
5249	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5250	if (!gl)
5251		return;
5252	gl->samplerParameteriv(sampler, pname, param);
5253}
5254
5255void glwScissor (GLint x, GLint y, GLsizei width, GLsizei height)
5256{
5257	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5258	if (!gl)
5259		return;
5260	gl->scissor(x, y, width, height);
5261}
5262
5263void glwScissorArrayv (GLuint first, GLsizei count, const GLint *v)
5264{
5265	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5266	if (!gl)
5267		return;
5268	gl->scissorArrayv(first, count, v);
5269}
5270
5271void glwScissorIndexed (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height)
5272{
5273	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5274	if (!gl)
5275		return;
5276	gl->scissorIndexed(index, left, bottom, width, height);
5277}
5278
5279void glwScissorIndexedv (GLuint index, const GLint *v)
5280{
5281	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5282	if (!gl)
5283		return;
5284	gl->scissorIndexedv(index, v);
5285}
5286
5287void glwShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length)
5288{
5289	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5290	if (!gl)
5291		return;
5292	gl->shaderBinary(count, shaders, binaryFormat, binary, length);
5293}
5294
5295void glwShaderSource (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length)
5296{
5297	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5298	if (!gl)
5299		return;
5300	gl->shaderSource(shader, count, string, length);
5301}
5302
5303void glwShaderStorageBlockBinding (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding)
5304{
5305	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5306	if (!gl)
5307		return;
5308	gl->shaderStorageBlockBinding(program, storageBlockIndex, storageBlockBinding);
5309}
5310
5311void glwShadingRateEXT (GLenum rate)
5312{
5313	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5314	if (!gl)
5315		return;
5316	gl->shadingRateEXT(rate);
5317}
5318
5319void glwShadingRateCombinerOpsEXT (GLenum combinerOp0, GLenum combinerOp1)
5320{
5321	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5322	if (!gl)
5323		return;
5324	gl->shadingRateCombinerOpsEXT(combinerOp0, combinerOp1);
5325}
5326
5327void glwSpecializeShader (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue)
5328{
5329	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5330	if (!gl)
5331		return;
5332	gl->specializeShader(shader, pEntryPoint, numSpecializationConstants, pConstantIndex, pConstantValue);
5333}
5334
5335void glwStencilFunc (GLenum func, GLint ref, GLuint mask)
5336{
5337	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5338	if (!gl)
5339		return;
5340	gl->stencilFunc(func, ref, mask);
5341}
5342
5343void glwStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask)
5344{
5345	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5346	if (!gl)
5347		return;
5348	gl->stencilFuncSeparate(face, func, ref, mask);
5349}
5350
5351void glwStencilMask (GLuint mask)
5352{
5353	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5354	if (!gl)
5355		return;
5356	gl->stencilMask(mask);
5357}
5358
5359void glwStencilMaskSeparate (GLenum face, GLuint mask)
5360{
5361	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5362	if (!gl)
5363		return;
5364	gl->stencilMaskSeparate(face, mask);
5365}
5366
5367void glwStencilOp (GLenum fail, GLenum zfail, GLenum zpass)
5368{
5369	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5370	if (!gl)
5371		return;
5372	gl->stencilOp(fail, zfail, zpass);
5373}
5374
5375void glwStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass)
5376{
5377	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5378	if (!gl)
5379		return;
5380	gl->stencilOpSeparate(face, sfail, dpfail, dppass);
5381}
5382
5383void glwTexBuffer (GLenum target, GLenum internalformat, GLuint buffer)
5384{
5385	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5386	if (!gl)
5387		return;
5388	gl->texBuffer(target, internalformat, buffer);
5389}
5390
5391void glwTexBufferRange (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size)
5392{
5393	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5394	if (!gl)
5395		return;
5396	gl->texBufferRange(target, internalformat, buffer, offset, size);
5397}
5398
5399void glwTexImage1D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels)
5400{
5401	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5402	if (!gl)
5403		return;
5404	gl->texImage1D(target, level, internalformat, width, border, format, type, pixels);
5405}
5406
5407void glwTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels)
5408{
5409	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5410	if (!gl)
5411		return;
5412	gl->texImage2D(target, level, internalformat, width, height, border, format, type, pixels);
5413}
5414
5415void glwTexImage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)
5416{
5417	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5418	if (!gl)
5419		return;
5420	gl->texImage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations);
5421}
5422
5423void glwTexImage3D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels)
5424{
5425	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5426	if (!gl)
5427		return;
5428	gl->texImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels);
5429}
5430
5431void glwTexImage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)
5432{
5433	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5434	if (!gl)
5435		return;
5436	gl->texImage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations);
5437}
5438
5439void glwTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels)
5440{
5441	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5442	if (!gl)
5443		return;
5444	gl->texImage3DOES(target, level, internalformat, width, height, depth, border, format, type, pixels);
5445}
5446
5447void glwTexPageCommitmentARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit)
5448{
5449	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5450	if (!gl)
5451		return;
5452	gl->texPageCommitmentARB(target, level, xoffset, yoffset, zoffset, width, height, depth, commit);
5453}
5454
5455void glwTexParameterIiv (GLenum target, GLenum pname, const GLint *params)
5456{
5457	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5458	if (!gl)
5459		return;
5460	gl->texParameterIiv(target, pname, params);
5461}
5462
5463void glwTexParameterIuiv (GLenum target, GLenum pname, const GLuint *params)
5464{
5465	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5466	if (!gl)
5467		return;
5468	gl->texParameterIuiv(target, pname, params);
5469}
5470
5471void glwTexParameterf (GLenum target, GLenum pname, GLfloat param)
5472{
5473	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5474	if (!gl)
5475		return;
5476	gl->texParameterf(target, pname, param);
5477}
5478
5479void glwTexParameterfv (GLenum target, GLenum pname, const GLfloat *params)
5480{
5481	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5482	if (!gl)
5483		return;
5484	gl->texParameterfv(target, pname, params);
5485}
5486
5487void glwTexParameteri (GLenum target, GLenum pname, GLint param)
5488{
5489	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5490	if (!gl)
5491		return;
5492	gl->texParameteri(target, pname, param);
5493}
5494
5495void glwTexParameteriv (GLenum target, GLenum pname, const GLint *params)
5496{
5497	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5498	if (!gl)
5499		return;
5500	gl->texParameteriv(target, pname, params);
5501}
5502
5503void glwTexStorage1D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width)
5504{
5505	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5506	if (!gl)
5507		return;
5508	gl->texStorage1D(target, levels, internalformat, width);
5509}
5510
5511void glwTexStorage2D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
5512{
5513	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5514	if (!gl)
5515		return;
5516	gl->texStorage2D(target, levels, internalformat, width, height);
5517}
5518
5519void glwTexStorage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)
5520{
5521	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5522	if (!gl)
5523		return;
5524	gl->texStorage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations);
5525}
5526
5527void glwTexStorage3D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
5528{
5529	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5530	if (!gl)
5531		return;
5532	gl->texStorage3D(target, levels, internalformat, width, height, depth);
5533}
5534
5535void glwTexStorage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)
5536{
5537	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5538	if (!gl)
5539		return;
5540	gl->texStorage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations);
5541}
5542
5543void glwTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels)
5544{
5545	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5546	if (!gl)
5547		return;
5548	gl->texSubImage1D(target, level, xoffset, width, format, type, pixels);
5549}
5550
5551void glwTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)
5552{
5553	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5554	if (!gl)
5555		return;
5556	gl->texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);
5557}
5558
5559void glwTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels)
5560{
5561	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5562	if (!gl)
5563		return;
5564	gl->texSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
5565}
5566
5567void glwTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels)
5568{
5569	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5570	if (!gl)
5571		return;
5572	gl->texSubImage3DOES(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
5573}
5574
5575void glwTextureBarrier (void)
5576{
5577	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5578	if (!gl)
5579		return;
5580	gl->textureBarrier();
5581}
5582
5583void glwTextureBuffer (GLuint texture, GLenum internalformat, GLuint buffer)
5584{
5585	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5586	if (!gl)
5587		return;
5588	gl->textureBuffer(texture, internalformat, buffer);
5589}
5590
5591void glwTextureBufferEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer)
5592{
5593	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5594	if (!gl)
5595		return;
5596	gl->textureBufferEXT(texture, target, internalformat, buffer);
5597}
5598
5599void glwTextureBufferRange (GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size)
5600{
5601	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5602	if (!gl)
5603		return;
5604	gl->textureBufferRange(texture, internalformat, buffer, offset, size);
5605}
5606
5607void glwTextureBufferRangeEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size)
5608{
5609	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5610	if (!gl)
5611		return;
5612	gl->textureBufferRangeEXT(texture, target, internalformat, buffer, offset, size);
5613}
5614
5615void glwTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels)
5616{
5617	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5618	if (!gl)
5619		return;
5620	gl->textureImage1DEXT(texture, target, level, internalformat, width, border, format, type, pixels);
5621}
5622
5623void glwTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels)
5624{
5625	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5626	if (!gl)
5627		return;
5628	gl->textureImage2DEXT(texture, target, level, internalformat, width, height, border, format, type, pixels);
5629}
5630
5631void glwTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels)
5632{
5633	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5634	if (!gl)
5635		return;
5636	gl->textureImage3DEXT(texture, target, level, internalformat, width, height, depth, border, format, type, pixels);
5637}
5638
5639void glwTexturePageCommitmentEXT (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit)
5640{
5641	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5642	if (!gl)
5643		return;
5644	gl->texturePageCommitmentEXT(texture, level, xoffset, yoffset, zoffset, width, height, depth, commit);
5645}
5646
5647void glwTextureParameterIiv (GLuint texture, GLenum pname, const GLint *params)
5648{
5649	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5650	if (!gl)
5651		return;
5652	gl->textureParameterIiv(texture, pname, params);
5653}
5654
5655void glwTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, const GLint *params)
5656{
5657	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5658	if (!gl)
5659		return;
5660	gl->textureParameterIivEXT(texture, target, pname, params);
5661}
5662
5663void glwTextureParameterIuiv (GLuint texture, GLenum pname, const GLuint *params)
5664{
5665	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5666	if (!gl)
5667		return;
5668	gl->textureParameterIuiv(texture, pname, params);
5669}
5670
5671void glwTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, const GLuint *params)
5672{
5673	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5674	if (!gl)
5675		return;
5676	gl->textureParameterIuivEXT(texture, target, pname, params);
5677}
5678
5679void glwTextureParameterf (GLuint texture, GLenum pname, GLfloat param)
5680{
5681	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5682	if (!gl)
5683		return;
5684	gl->textureParameterf(texture, pname, param);
5685}
5686
5687void glwTextureParameterfEXT (GLuint texture, GLenum target, GLenum pname, GLfloat param)
5688{
5689	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5690	if (!gl)
5691		return;
5692	gl->textureParameterfEXT(texture, target, pname, param);
5693}
5694
5695void glwTextureParameterfv (GLuint texture, GLenum pname, const GLfloat *param)
5696{
5697	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5698	if (!gl)
5699		return;
5700	gl->textureParameterfv(texture, pname, param);
5701}
5702
5703void glwTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, const GLfloat *params)
5704{
5705	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5706	if (!gl)
5707		return;
5708	gl->textureParameterfvEXT(texture, target, pname, params);
5709}
5710
5711void glwTextureParameteri (GLuint texture, GLenum pname, GLint param)
5712{
5713	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5714	if (!gl)
5715		return;
5716	gl->textureParameteri(texture, pname, param);
5717}
5718
5719void glwTextureParameteriEXT (GLuint texture, GLenum target, GLenum pname, GLint param)
5720{
5721	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5722	if (!gl)
5723		return;
5724	gl->textureParameteriEXT(texture, target, pname, param);
5725}
5726
5727void glwTextureParameteriv (GLuint texture, GLenum pname, const GLint *param)
5728{
5729	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5730	if (!gl)
5731		return;
5732	gl->textureParameteriv(texture, pname, param);
5733}
5734
5735void glwTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, const GLint *params)
5736{
5737	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5738	if (!gl)
5739		return;
5740	gl->textureParameterivEXT(texture, target, pname, params);
5741}
5742
5743void glwTextureRenderbufferEXT (GLuint texture, GLenum target, GLuint renderbuffer)
5744{
5745	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5746	if (!gl)
5747		return;
5748	gl->textureRenderbufferEXT(texture, target, renderbuffer);
5749}
5750
5751void glwTextureStorage1D (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width)
5752{
5753	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5754	if (!gl)
5755		return;
5756	gl->textureStorage1D(texture, levels, internalformat, width);
5757}
5758
5759void glwTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width)
5760{
5761	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5762	if (!gl)
5763		return;
5764	gl->textureStorage1DEXT(texture, target, levels, internalformat, width);
5765}
5766
5767void glwTextureStorage2D (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
5768{
5769	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5770	if (!gl)
5771		return;
5772	gl->textureStorage2D(texture, levels, internalformat, width, height);
5773}
5774
5775void glwTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
5776{
5777	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5778	if (!gl)
5779		return;
5780	gl->textureStorage2DEXT(texture, target, levels, internalformat, width, height);
5781}
5782
5783void glwTextureStorage2DMultisample (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)
5784{
5785	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5786	if (!gl)
5787		return;
5788	gl->textureStorage2DMultisample(texture, samples, internalformat, width, height, fixedsamplelocations);
5789}
5790
5791void glwTextureStorage2DMultisampleEXT (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)
5792{
5793	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5794	if (!gl)
5795		return;
5796	gl->textureStorage2DMultisampleEXT(texture, target, samples, internalformat, width, height, fixedsamplelocations);
5797}
5798
5799void glwTextureStorage3D (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
5800{
5801	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5802	if (!gl)
5803		return;
5804	gl->textureStorage3D(texture, levels, internalformat, width, height, depth);
5805}
5806
5807void glwTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
5808{
5809	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5810	if (!gl)
5811		return;
5812	gl->textureStorage3DEXT(texture, target, levels, internalformat, width, height, depth);
5813}
5814
5815void glwTextureStorage3DMultisample (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)
5816{
5817	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5818	if (!gl)
5819		return;
5820	gl->textureStorage3DMultisample(texture, samples, internalformat, width, height, depth, fixedsamplelocations);
5821}
5822
5823void glwTextureStorage3DMultisampleEXT (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)
5824{
5825	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5826	if (!gl)
5827		return;
5828	gl->textureStorage3DMultisampleEXT(texture, target, samples, internalformat, width, height, depth, fixedsamplelocations);
5829}
5830
5831void glwTextureSubImage1D (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels)
5832{
5833	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5834	if (!gl)
5835		return;
5836	gl->textureSubImage1D(texture, level, xoffset, width, format, type, pixels);
5837}
5838
5839void glwTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels)
5840{
5841	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5842	if (!gl)
5843		return;
5844	gl->textureSubImage1DEXT(texture, target, level, xoffset, width, format, type, pixels);
5845}
5846
5847void glwTextureSubImage2D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)
5848{
5849	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5850	if (!gl)
5851		return;
5852	gl->textureSubImage2D(texture, level, xoffset, yoffset, width, height, format, type, pixels);
5853}
5854
5855void glwTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)
5856{
5857	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5858	if (!gl)
5859		return;
5860	gl->textureSubImage2DEXT(texture, target, level, xoffset, yoffset, width, height, format, type, pixels);
5861}
5862
5863void glwTextureSubImage3D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels)
5864{
5865	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5866	if (!gl)
5867		return;
5868	gl->textureSubImage3D(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
5869}
5870
5871void glwTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels)
5872{
5873	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5874	if (!gl)
5875		return;
5876	gl->textureSubImage3DEXT(texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
5877}
5878
5879void glwTextureView (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers)
5880{
5881	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5882	if (!gl)
5883		return;
5884	gl->textureView(texture, target, origtexture, internalformat, minlevel, numlevels, minlayer, numlayers);
5885}
5886
5887void glwTransformFeedbackBufferBase (GLuint xfb, GLuint index, GLuint buffer)
5888{
5889	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5890	if (!gl)
5891		return;
5892	gl->transformFeedbackBufferBase(xfb, index, buffer);
5893}
5894
5895void glwTransformFeedbackBufferRange (GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
5896{
5897	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5898	if (!gl)
5899		return;
5900	gl->transformFeedbackBufferRange(xfb, index, buffer, offset, size);
5901}
5902
5903void glwTransformFeedbackVaryings (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode)
5904{
5905	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5906	if (!gl)
5907		return;
5908	gl->transformFeedbackVaryings(program, count, varyings, bufferMode);
5909}
5910
5911void glwUniform1d (GLint location, GLdouble x)
5912{
5913	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5914	if (!gl)
5915		return;
5916	gl->uniform1d(location, x);
5917}
5918
5919void glwUniform1dv (GLint location, GLsizei count, const GLdouble *value)
5920{
5921	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5922	if (!gl)
5923		return;
5924	gl->uniform1dv(location, count, value);
5925}
5926
5927void glwUniform1f (GLint location, GLfloat v0)
5928{
5929	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5930	if (!gl)
5931		return;
5932	gl->uniform1f(location, v0);
5933}
5934
5935void glwUniform1fv (GLint location, GLsizei count, const GLfloat *value)
5936{
5937	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5938	if (!gl)
5939		return;
5940	gl->uniform1fv(location, count, value);
5941}
5942
5943void glwUniform1i (GLint location, GLint v0)
5944{
5945	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5946	if (!gl)
5947		return;
5948	gl->uniform1i(location, v0);
5949}
5950
5951void glwUniform1iv (GLint location, GLsizei count, const GLint *value)
5952{
5953	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5954	if (!gl)
5955		return;
5956	gl->uniform1iv(location, count, value);
5957}
5958
5959void glwUniform1ui (GLint location, GLuint v0)
5960{
5961	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5962	if (!gl)
5963		return;
5964	gl->uniform1ui(location, v0);
5965}
5966
5967void glwUniform1uiv (GLint location, GLsizei count, const GLuint *value)
5968{
5969	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5970	if (!gl)
5971		return;
5972	gl->uniform1uiv(location, count, value);
5973}
5974
5975void glwUniform2d (GLint location, GLdouble x, GLdouble y)
5976{
5977	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5978	if (!gl)
5979		return;
5980	gl->uniform2d(location, x, y);
5981}
5982
5983void glwUniform2dv (GLint location, GLsizei count, const GLdouble *value)
5984{
5985	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5986	if (!gl)
5987		return;
5988	gl->uniform2dv(location, count, value);
5989}
5990
5991void glwUniform2f (GLint location, GLfloat v0, GLfloat v1)
5992{
5993	const glw::Functions* gl = glw::getCurrentThreadFunctions();
5994	if (!gl)
5995		return;
5996	gl->uniform2f(location, v0, v1);
5997}
5998
5999void glwUniform2fv (GLint location, GLsizei count, const GLfloat *value)
6000{
6001	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6002	if (!gl)
6003		return;
6004	gl->uniform2fv(location, count, value);
6005}
6006
6007void glwUniform2i (GLint location, GLint v0, GLint v1)
6008{
6009	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6010	if (!gl)
6011		return;
6012	gl->uniform2i(location, v0, v1);
6013}
6014
6015void glwUniform2iv (GLint location, GLsizei count, const GLint *value)
6016{
6017	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6018	if (!gl)
6019		return;
6020	gl->uniform2iv(location, count, value);
6021}
6022
6023void glwUniform2ui (GLint location, GLuint v0, GLuint v1)
6024{
6025	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6026	if (!gl)
6027		return;
6028	gl->uniform2ui(location, v0, v1);
6029}
6030
6031void glwUniform2uiv (GLint location, GLsizei count, const GLuint *value)
6032{
6033	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6034	if (!gl)
6035		return;
6036	gl->uniform2uiv(location, count, value);
6037}
6038
6039void glwUniform3d (GLint location, GLdouble x, GLdouble y, GLdouble z)
6040{
6041	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6042	if (!gl)
6043		return;
6044	gl->uniform3d(location, x, y, z);
6045}
6046
6047void glwUniform3dv (GLint location, GLsizei count, const GLdouble *value)
6048{
6049	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6050	if (!gl)
6051		return;
6052	gl->uniform3dv(location, count, value);
6053}
6054
6055void glwUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
6056{
6057	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6058	if (!gl)
6059		return;
6060	gl->uniform3f(location, v0, v1, v2);
6061}
6062
6063void glwUniform3fv (GLint location, GLsizei count, const GLfloat *value)
6064{
6065	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6066	if (!gl)
6067		return;
6068	gl->uniform3fv(location, count, value);
6069}
6070
6071void glwUniform3i (GLint location, GLint v0, GLint v1, GLint v2)
6072{
6073	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6074	if (!gl)
6075		return;
6076	gl->uniform3i(location, v0, v1, v2);
6077}
6078
6079void glwUniform3iv (GLint location, GLsizei count, const GLint *value)
6080{
6081	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6082	if (!gl)
6083		return;
6084	gl->uniform3iv(location, count, value);
6085}
6086
6087void glwUniform3ui (GLint location, GLuint v0, GLuint v1, GLuint v2)
6088{
6089	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6090	if (!gl)
6091		return;
6092	gl->uniform3ui(location, v0, v1, v2);
6093}
6094
6095void glwUniform3uiv (GLint location, GLsizei count, const GLuint *value)
6096{
6097	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6098	if (!gl)
6099		return;
6100	gl->uniform3uiv(location, count, value);
6101}
6102
6103void glwUniform4d (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
6104{
6105	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6106	if (!gl)
6107		return;
6108	gl->uniform4d(location, x, y, z, w);
6109}
6110
6111void glwUniform4dv (GLint location, GLsizei count, const GLdouble *value)
6112{
6113	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6114	if (!gl)
6115		return;
6116	gl->uniform4dv(location, count, value);
6117}
6118
6119void glwUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
6120{
6121	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6122	if (!gl)
6123		return;
6124	gl->uniform4f(location, v0, v1, v2, v3);
6125}
6126
6127void glwUniform4fv (GLint location, GLsizei count, const GLfloat *value)
6128{
6129	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6130	if (!gl)
6131		return;
6132	gl->uniform4fv(location, count, value);
6133}
6134
6135void glwUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
6136{
6137	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6138	if (!gl)
6139		return;
6140	gl->uniform4i(location, v0, v1, v2, v3);
6141}
6142
6143void glwUniform4iv (GLint location, GLsizei count, const GLint *value)
6144{
6145	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6146	if (!gl)
6147		return;
6148	gl->uniform4iv(location, count, value);
6149}
6150
6151void glwUniform4ui (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
6152{
6153	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6154	if (!gl)
6155		return;
6156	gl->uniform4ui(location, v0, v1, v2, v3);
6157}
6158
6159void glwUniform4uiv (GLint location, GLsizei count, const GLuint *value)
6160{
6161	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6162	if (!gl)
6163		return;
6164	gl->uniform4uiv(location, count, value);
6165}
6166
6167void glwUniformBlockBinding (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding)
6168{
6169	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6170	if (!gl)
6171		return;
6172	gl->uniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding);
6173}
6174
6175void glwUniformMatrix2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
6176{
6177	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6178	if (!gl)
6179		return;
6180	gl->uniformMatrix2dv(location, count, transpose, value);
6181}
6182
6183void glwUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
6184{
6185	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6186	if (!gl)
6187		return;
6188	gl->uniformMatrix2fv(location, count, transpose, value);
6189}
6190
6191void glwUniformMatrix2x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
6192{
6193	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6194	if (!gl)
6195		return;
6196	gl->uniformMatrix2x3dv(location, count, transpose, value);
6197}
6198
6199void glwUniformMatrix2x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
6200{
6201	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6202	if (!gl)
6203		return;
6204	gl->uniformMatrix2x3fv(location, count, transpose, value);
6205}
6206
6207void glwUniformMatrix2x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
6208{
6209	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6210	if (!gl)
6211		return;
6212	gl->uniformMatrix2x4dv(location, count, transpose, value);
6213}
6214
6215void glwUniformMatrix2x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
6216{
6217	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6218	if (!gl)
6219		return;
6220	gl->uniformMatrix2x4fv(location, count, transpose, value);
6221}
6222
6223void glwUniformMatrix3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
6224{
6225	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6226	if (!gl)
6227		return;
6228	gl->uniformMatrix3dv(location, count, transpose, value);
6229}
6230
6231void glwUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
6232{
6233	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6234	if (!gl)
6235		return;
6236	gl->uniformMatrix3fv(location, count, transpose, value);
6237}
6238
6239void glwUniformMatrix3x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
6240{
6241	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6242	if (!gl)
6243		return;
6244	gl->uniformMatrix3x2dv(location, count, transpose, value);
6245}
6246
6247void glwUniformMatrix3x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
6248{
6249	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6250	if (!gl)
6251		return;
6252	gl->uniformMatrix3x2fv(location, count, transpose, value);
6253}
6254
6255void glwUniformMatrix3x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
6256{
6257	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6258	if (!gl)
6259		return;
6260	gl->uniformMatrix3x4dv(location, count, transpose, value);
6261}
6262
6263void glwUniformMatrix3x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
6264{
6265	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6266	if (!gl)
6267		return;
6268	gl->uniformMatrix3x4fv(location, count, transpose, value);
6269}
6270
6271void glwUniformMatrix4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
6272{
6273	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6274	if (!gl)
6275		return;
6276	gl->uniformMatrix4dv(location, count, transpose, value);
6277}
6278
6279void glwUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
6280{
6281	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6282	if (!gl)
6283		return;
6284	gl->uniformMatrix4fv(location, count, transpose, value);
6285}
6286
6287void glwUniformMatrix4x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
6288{
6289	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6290	if (!gl)
6291		return;
6292	gl->uniformMatrix4x2dv(location, count, transpose, value);
6293}
6294
6295void glwUniformMatrix4x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
6296{
6297	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6298	if (!gl)
6299		return;
6300	gl->uniformMatrix4x2fv(location, count, transpose, value);
6301}
6302
6303void glwUniformMatrix4x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value)
6304{
6305	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6306	if (!gl)
6307		return;
6308	gl->uniformMatrix4x3dv(location, count, transpose, value);
6309}
6310
6311void glwUniformMatrix4x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
6312{
6313	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6314	if (!gl)
6315		return;
6316	gl->uniformMatrix4x3fv(location, count, transpose, value);
6317}
6318
6319void glwUniformSubroutinesuiv (GLenum shadertype, GLsizei count, const GLuint *indices)
6320{
6321	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6322	if (!gl)
6323		return;
6324	gl->uniformSubroutinesuiv(shadertype, count, indices);
6325}
6326
6327GLboolean glwUnmapBuffer (GLenum target)
6328{
6329	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6330	if (!gl)
6331		return (GLboolean)0;
6332	return gl->unmapBuffer(target);
6333}
6334
6335GLboolean glwUnmapNamedBuffer (GLuint buffer)
6336{
6337	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6338	if (!gl)
6339		return (GLboolean)0;
6340	return gl->unmapNamedBuffer(buffer);
6341}
6342
6343GLboolean glwUnmapNamedBufferEXT (GLuint buffer)
6344{
6345	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6346	if (!gl)
6347		return (GLboolean)0;
6348	return gl->unmapNamedBufferEXT(buffer);
6349}
6350
6351void glwUseProgram (GLuint program)
6352{
6353	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6354	if (!gl)
6355		return;
6356	gl->useProgram(program);
6357}
6358
6359void glwUseProgramStages (GLuint pipeline, GLbitfield stages, GLuint program)
6360{
6361	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6362	if (!gl)
6363		return;
6364	gl->useProgramStages(pipeline, stages, program);
6365}
6366
6367void glwValidateProgram (GLuint program)
6368{
6369	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6370	if (!gl)
6371		return;
6372	gl->validateProgram(program);
6373}
6374
6375void glwValidateProgramPipeline (GLuint pipeline)
6376{
6377	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6378	if (!gl)
6379		return;
6380	gl->validateProgramPipeline(pipeline);
6381}
6382
6383void glwVertexArrayAttribBinding (GLuint vaobj, GLuint attribindex, GLuint bindingindex)
6384{
6385	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6386	if (!gl)
6387		return;
6388	gl->vertexArrayAttribBinding(vaobj, attribindex, bindingindex);
6389}
6390
6391void glwVertexArrayAttribFormat (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)
6392{
6393	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6394	if (!gl)
6395		return;
6396	gl->vertexArrayAttribFormat(vaobj, attribindex, size, type, normalized, relativeoffset);
6397}
6398
6399void glwVertexArrayAttribIFormat (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
6400{
6401	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6402	if (!gl)
6403		return;
6404	gl->vertexArrayAttribIFormat(vaobj, attribindex, size, type, relativeoffset);
6405}
6406
6407void glwVertexArrayAttribLFormat (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
6408{
6409	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6410	if (!gl)
6411		return;
6412	gl->vertexArrayAttribLFormat(vaobj, attribindex, size, type, relativeoffset);
6413}
6414
6415void glwVertexArrayBindVertexBufferEXT (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride)
6416{
6417	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6418	if (!gl)
6419		return;
6420	gl->vertexArrayBindVertexBufferEXT(vaobj, bindingindex, buffer, offset, stride);
6421}
6422
6423void glwVertexArrayBindingDivisor (GLuint vaobj, GLuint bindingindex, GLuint divisor)
6424{
6425	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6426	if (!gl)
6427		return;
6428	gl->vertexArrayBindingDivisor(vaobj, bindingindex, divisor);
6429}
6430
6431void glwVertexArrayColorOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset)
6432{
6433	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6434	if (!gl)
6435		return;
6436	gl->vertexArrayColorOffsetEXT(vaobj, buffer, size, type, stride, offset);
6437}
6438
6439void glwVertexArrayEdgeFlagOffsetEXT (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset)
6440{
6441	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6442	if (!gl)
6443		return;
6444	gl->vertexArrayEdgeFlagOffsetEXT(vaobj, buffer, stride, offset);
6445}
6446
6447void glwVertexArrayElementBuffer (GLuint vaobj, GLuint buffer)
6448{
6449	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6450	if (!gl)
6451		return;
6452	gl->vertexArrayElementBuffer(vaobj, buffer);
6453}
6454
6455void glwVertexArrayFogCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset)
6456{
6457	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6458	if (!gl)
6459		return;
6460	gl->vertexArrayFogCoordOffsetEXT(vaobj, buffer, type, stride, offset);
6461}
6462
6463void glwVertexArrayIndexOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset)
6464{
6465	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6466	if (!gl)
6467		return;
6468	gl->vertexArrayIndexOffsetEXT(vaobj, buffer, type, stride, offset);
6469}
6470
6471void glwVertexArrayMultiTexCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset)
6472{
6473	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6474	if (!gl)
6475		return;
6476	gl->vertexArrayMultiTexCoordOffsetEXT(vaobj, buffer, texunit, size, type, stride, offset);
6477}
6478
6479void glwVertexArrayNormalOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset)
6480{
6481	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6482	if (!gl)
6483		return;
6484	gl->vertexArrayNormalOffsetEXT(vaobj, buffer, type, stride, offset);
6485}
6486
6487void glwVertexArraySecondaryColorOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset)
6488{
6489	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6490	if (!gl)
6491		return;
6492	gl->vertexArraySecondaryColorOffsetEXT(vaobj, buffer, size, type, stride, offset);
6493}
6494
6495void glwVertexArrayTexCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset)
6496{
6497	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6498	if (!gl)
6499		return;
6500	gl->vertexArrayTexCoordOffsetEXT(vaobj, buffer, size, type, stride, offset);
6501}
6502
6503void glwVertexArrayVertexAttribBindingEXT (GLuint vaobj, GLuint attribindex, GLuint bindingindex)
6504{
6505	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6506	if (!gl)
6507		return;
6508	gl->vertexArrayVertexAttribBindingEXT(vaobj, attribindex, bindingindex);
6509}
6510
6511void glwVertexArrayVertexAttribDivisorEXT (GLuint vaobj, GLuint index, GLuint divisor)
6512{
6513	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6514	if (!gl)
6515		return;
6516	gl->vertexArrayVertexAttribDivisorEXT(vaobj, index, divisor);
6517}
6518
6519void glwVertexArrayVertexAttribFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)
6520{
6521	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6522	if (!gl)
6523		return;
6524	gl->vertexArrayVertexAttribFormatEXT(vaobj, attribindex, size, type, normalized, relativeoffset);
6525}
6526
6527void glwVertexArrayVertexAttribIFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
6528{
6529	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6530	if (!gl)
6531		return;
6532	gl->vertexArrayVertexAttribIFormatEXT(vaobj, attribindex, size, type, relativeoffset);
6533}
6534
6535void glwVertexArrayVertexAttribIOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset)
6536{
6537	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6538	if (!gl)
6539		return;
6540	gl->vertexArrayVertexAttribIOffsetEXT(vaobj, buffer, index, size, type, stride, offset);
6541}
6542
6543void glwVertexArrayVertexAttribLFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
6544{
6545	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6546	if (!gl)
6547		return;
6548	gl->vertexArrayVertexAttribLFormatEXT(vaobj, attribindex, size, type, relativeoffset);
6549}
6550
6551void glwVertexArrayVertexAttribLOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset)
6552{
6553	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6554	if (!gl)
6555		return;
6556	gl->vertexArrayVertexAttribLOffsetEXT(vaobj, buffer, index, size, type, stride, offset);
6557}
6558
6559void glwVertexArrayVertexAttribOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset)
6560{
6561	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6562	if (!gl)
6563		return;
6564	gl->vertexArrayVertexAttribOffsetEXT(vaobj, buffer, index, size, type, normalized, stride, offset);
6565}
6566
6567void glwVertexArrayVertexBindingDivisorEXT (GLuint vaobj, GLuint bindingindex, GLuint divisor)
6568{
6569	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6570	if (!gl)
6571		return;
6572	gl->vertexArrayVertexBindingDivisorEXT(vaobj, bindingindex, divisor);
6573}
6574
6575void glwVertexArrayVertexBuffer (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride)
6576{
6577	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6578	if (!gl)
6579		return;
6580	gl->vertexArrayVertexBuffer(vaobj, bindingindex, buffer, offset, stride);
6581}
6582
6583void glwVertexArrayVertexBuffers (GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides)
6584{
6585	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6586	if (!gl)
6587		return;
6588	gl->vertexArrayVertexBuffers(vaobj, first, count, buffers, offsets, strides);
6589}
6590
6591void glwVertexArrayVertexOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset)
6592{
6593	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6594	if (!gl)
6595		return;
6596	gl->vertexArrayVertexOffsetEXT(vaobj, buffer, size, type, stride, offset);
6597}
6598
6599void glwVertexAttrib1d (GLuint index, GLdouble x)
6600{
6601	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6602	if (!gl)
6603		return;
6604	gl->vertexAttrib1d(index, x);
6605}
6606
6607void glwVertexAttrib1dv (GLuint index, const GLdouble *v)
6608{
6609	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6610	if (!gl)
6611		return;
6612	gl->vertexAttrib1dv(index, v);
6613}
6614
6615void glwVertexAttrib1f (GLuint index, GLfloat x)
6616{
6617	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6618	if (!gl)
6619		return;
6620	gl->vertexAttrib1f(index, x);
6621}
6622
6623void glwVertexAttrib1fv (GLuint index, const GLfloat *v)
6624{
6625	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6626	if (!gl)
6627		return;
6628	gl->vertexAttrib1fv(index, v);
6629}
6630
6631void glwVertexAttrib1s (GLuint index, GLshort x)
6632{
6633	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6634	if (!gl)
6635		return;
6636	gl->vertexAttrib1s(index, x);
6637}
6638
6639void glwVertexAttrib1sv (GLuint index, const GLshort *v)
6640{
6641	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6642	if (!gl)
6643		return;
6644	gl->vertexAttrib1sv(index, v);
6645}
6646
6647void glwVertexAttrib2d (GLuint index, GLdouble x, GLdouble y)
6648{
6649	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6650	if (!gl)
6651		return;
6652	gl->vertexAttrib2d(index, x, y);
6653}
6654
6655void glwVertexAttrib2dv (GLuint index, const GLdouble *v)
6656{
6657	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6658	if (!gl)
6659		return;
6660	gl->vertexAttrib2dv(index, v);
6661}
6662
6663void glwVertexAttrib2f (GLuint index, GLfloat x, GLfloat y)
6664{
6665	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6666	if (!gl)
6667		return;
6668	gl->vertexAttrib2f(index, x, y);
6669}
6670
6671void glwVertexAttrib2fv (GLuint index, const GLfloat *v)
6672{
6673	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6674	if (!gl)
6675		return;
6676	gl->vertexAttrib2fv(index, v);
6677}
6678
6679void glwVertexAttrib2s (GLuint index, GLshort x, GLshort y)
6680{
6681	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6682	if (!gl)
6683		return;
6684	gl->vertexAttrib2s(index, x, y);
6685}
6686
6687void glwVertexAttrib2sv (GLuint index, const GLshort *v)
6688{
6689	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6690	if (!gl)
6691		return;
6692	gl->vertexAttrib2sv(index, v);
6693}
6694
6695void glwVertexAttrib3d (GLuint index, GLdouble x, GLdouble y, GLdouble z)
6696{
6697	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6698	if (!gl)
6699		return;
6700	gl->vertexAttrib3d(index, x, y, z);
6701}
6702
6703void glwVertexAttrib3dv (GLuint index, const GLdouble *v)
6704{
6705	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6706	if (!gl)
6707		return;
6708	gl->vertexAttrib3dv(index, v);
6709}
6710
6711void glwVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z)
6712{
6713	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6714	if (!gl)
6715		return;
6716	gl->vertexAttrib3f(index, x, y, z);
6717}
6718
6719void glwVertexAttrib3fv (GLuint index, const GLfloat *v)
6720{
6721	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6722	if (!gl)
6723		return;
6724	gl->vertexAttrib3fv(index, v);
6725}
6726
6727void glwVertexAttrib3s (GLuint index, GLshort x, GLshort y, GLshort z)
6728{
6729	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6730	if (!gl)
6731		return;
6732	gl->vertexAttrib3s(index, x, y, z);
6733}
6734
6735void glwVertexAttrib3sv (GLuint index, const GLshort *v)
6736{
6737	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6738	if (!gl)
6739		return;
6740	gl->vertexAttrib3sv(index, v);
6741}
6742
6743void glwVertexAttrib4Nbv (GLuint index, const GLbyte *v)
6744{
6745	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6746	if (!gl)
6747		return;
6748	gl->vertexAttrib4Nbv(index, v);
6749}
6750
6751void glwVertexAttrib4Niv (GLuint index, const GLint *v)
6752{
6753	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6754	if (!gl)
6755		return;
6756	gl->vertexAttrib4Niv(index, v);
6757}
6758
6759void glwVertexAttrib4Nsv (GLuint index, const GLshort *v)
6760{
6761	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6762	if (!gl)
6763		return;
6764	gl->vertexAttrib4Nsv(index, v);
6765}
6766
6767void glwVertexAttrib4Nub (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
6768{
6769	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6770	if (!gl)
6771		return;
6772	gl->vertexAttrib4Nub(index, x, y, z, w);
6773}
6774
6775void glwVertexAttrib4Nubv (GLuint index, const GLubyte *v)
6776{
6777	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6778	if (!gl)
6779		return;
6780	gl->vertexAttrib4Nubv(index, v);
6781}
6782
6783void glwVertexAttrib4Nuiv (GLuint index, const GLuint *v)
6784{
6785	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6786	if (!gl)
6787		return;
6788	gl->vertexAttrib4Nuiv(index, v);
6789}
6790
6791void glwVertexAttrib4Nusv (GLuint index, const GLushort *v)
6792{
6793	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6794	if (!gl)
6795		return;
6796	gl->vertexAttrib4Nusv(index, v);
6797}
6798
6799void glwVertexAttrib4bv (GLuint index, const GLbyte *v)
6800{
6801	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6802	if (!gl)
6803		return;
6804	gl->vertexAttrib4bv(index, v);
6805}
6806
6807void glwVertexAttrib4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
6808{
6809	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6810	if (!gl)
6811		return;
6812	gl->vertexAttrib4d(index, x, y, z, w);
6813}
6814
6815void glwVertexAttrib4dv (GLuint index, const GLdouble *v)
6816{
6817	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6818	if (!gl)
6819		return;
6820	gl->vertexAttrib4dv(index, v);
6821}
6822
6823void glwVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
6824{
6825	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6826	if (!gl)
6827		return;
6828	gl->vertexAttrib4f(index, x, y, z, w);
6829}
6830
6831void glwVertexAttrib4fv (GLuint index, const GLfloat *v)
6832{
6833	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6834	if (!gl)
6835		return;
6836	gl->vertexAttrib4fv(index, v);
6837}
6838
6839void glwVertexAttrib4iv (GLuint index, const GLint *v)
6840{
6841	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6842	if (!gl)
6843		return;
6844	gl->vertexAttrib4iv(index, v);
6845}
6846
6847void glwVertexAttrib4s (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
6848{
6849	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6850	if (!gl)
6851		return;
6852	gl->vertexAttrib4s(index, x, y, z, w);
6853}
6854
6855void glwVertexAttrib4sv (GLuint index, const GLshort *v)
6856{
6857	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6858	if (!gl)
6859		return;
6860	gl->vertexAttrib4sv(index, v);
6861}
6862
6863void glwVertexAttrib4ubv (GLuint index, const GLubyte *v)
6864{
6865	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6866	if (!gl)
6867		return;
6868	gl->vertexAttrib4ubv(index, v);
6869}
6870
6871void glwVertexAttrib4uiv (GLuint index, const GLuint *v)
6872{
6873	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6874	if (!gl)
6875		return;
6876	gl->vertexAttrib4uiv(index, v);
6877}
6878
6879void glwVertexAttrib4usv (GLuint index, const GLushort *v)
6880{
6881	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6882	if (!gl)
6883		return;
6884	gl->vertexAttrib4usv(index, v);
6885}
6886
6887void glwVertexAttribBinding (GLuint attribindex, GLuint bindingindex)
6888{
6889	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6890	if (!gl)
6891		return;
6892	gl->vertexAttribBinding(attribindex, bindingindex);
6893}
6894
6895void glwVertexAttribDivisor (GLuint index, GLuint divisor)
6896{
6897	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6898	if (!gl)
6899		return;
6900	gl->vertexAttribDivisor(index, divisor);
6901}
6902
6903void glwVertexAttribFormat (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)
6904{
6905	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6906	if (!gl)
6907		return;
6908	gl->vertexAttribFormat(attribindex, size, type, normalized, relativeoffset);
6909}
6910
6911void glwVertexAttribI1i (GLuint index, GLint x)
6912{
6913	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6914	if (!gl)
6915		return;
6916	gl->vertexAttribI1i(index, x);
6917}
6918
6919void glwVertexAttribI1iv (GLuint index, const GLint *v)
6920{
6921	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6922	if (!gl)
6923		return;
6924	gl->vertexAttribI1iv(index, v);
6925}
6926
6927void glwVertexAttribI1ui (GLuint index, GLuint x)
6928{
6929	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6930	if (!gl)
6931		return;
6932	gl->vertexAttribI1ui(index, x);
6933}
6934
6935void glwVertexAttribI1uiv (GLuint index, const GLuint *v)
6936{
6937	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6938	if (!gl)
6939		return;
6940	gl->vertexAttribI1uiv(index, v);
6941}
6942
6943void glwVertexAttribI2i (GLuint index, GLint x, GLint y)
6944{
6945	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6946	if (!gl)
6947		return;
6948	gl->vertexAttribI2i(index, x, y);
6949}
6950
6951void glwVertexAttribI2iv (GLuint index, const GLint *v)
6952{
6953	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6954	if (!gl)
6955		return;
6956	gl->vertexAttribI2iv(index, v);
6957}
6958
6959void glwVertexAttribI2ui (GLuint index, GLuint x, GLuint y)
6960{
6961	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6962	if (!gl)
6963		return;
6964	gl->vertexAttribI2ui(index, x, y);
6965}
6966
6967void glwVertexAttribI2uiv (GLuint index, const GLuint *v)
6968{
6969	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6970	if (!gl)
6971		return;
6972	gl->vertexAttribI2uiv(index, v);
6973}
6974
6975void glwVertexAttribI3i (GLuint index, GLint x, GLint y, GLint z)
6976{
6977	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6978	if (!gl)
6979		return;
6980	gl->vertexAttribI3i(index, x, y, z);
6981}
6982
6983void glwVertexAttribI3iv (GLuint index, const GLint *v)
6984{
6985	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6986	if (!gl)
6987		return;
6988	gl->vertexAttribI3iv(index, v);
6989}
6990
6991void glwVertexAttribI3ui (GLuint index, GLuint x, GLuint y, GLuint z)
6992{
6993	const glw::Functions* gl = glw::getCurrentThreadFunctions();
6994	if (!gl)
6995		return;
6996	gl->vertexAttribI3ui(index, x, y, z);
6997}
6998
6999void glwVertexAttribI3uiv (GLuint index, const GLuint *v)
7000{
7001	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7002	if (!gl)
7003		return;
7004	gl->vertexAttribI3uiv(index, v);
7005}
7006
7007void glwVertexAttribI4bv (GLuint index, const GLbyte *v)
7008{
7009	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7010	if (!gl)
7011		return;
7012	gl->vertexAttribI4bv(index, v);
7013}
7014
7015void glwVertexAttribI4i (GLuint index, GLint x, GLint y, GLint z, GLint w)
7016{
7017	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7018	if (!gl)
7019		return;
7020	gl->vertexAttribI4i(index, x, y, z, w);
7021}
7022
7023void glwVertexAttribI4iv (GLuint index, const GLint *v)
7024{
7025	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7026	if (!gl)
7027		return;
7028	gl->vertexAttribI4iv(index, v);
7029}
7030
7031void glwVertexAttribI4sv (GLuint index, const GLshort *v)
7032{
7033	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7034	if (!gl)
7035		return;
7036	gl->vertexAttribI4sv(index, v);
7037}
7038
7039void glwVertexAttribI4ubv (GLuint index, const GLubyte *v)
7040{
7041	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7042	if (!gl)
7043		return;
7044	gl->vertexAttribI4ubv(index, v);
7045}
7046
7047void glwVertexAttribI4ui (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
7048{
7049	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7050	if (!gl)
7051		return;
7052	gl->vertexAttribI4ui(index, x, y, z, w);
7053}
7054
7055void glwVertexAttribI4uiv (GLuint index, const GLuint *v)
7056{
7057	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7058	if (!gl)
7059		return;
7060	gl->vertexAttribI4uiv(index, v);
7061}
7062
7063void glwVertexAttribI4usv (GLuint index, const GLushort *v)
7064{
7065	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7066	if (!gl)
7067		return;
7068	gl->vertexAttribI4usv(index, v);
7069}
7070
7071void glwVertexAttribIFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
7072{
7073	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7074	if (!gl)
7075		return;
7076	gl->vertexAttribIFormat(attribindex, size, type, relativeoffset);
7077}
7078
7079void glwVertexAttribIPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer)
7080{
7081	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7082	if (!gl)
7083		return;
7084	gl->vertexAttribIPointer(index, size, type, stride, pointer);
7085}
7086
7087void glwVertexAttribL1d (GLuint index, GLdouble x)
7088{
7089	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7090	if (!gl)
7091		return;
7092	gl->vertexAttribL1d(index, x);
7093}
7094
7095void glwVertexAttribL1dv (GLuint index, const GLdouble *v)
7096{
7097	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7098	if (!gl)
7099		return;
7100	gl->vertexAttribL1dv(index, v);
7101}
7102
7103void glwVertexAttribL2d (GLuint index, GLdouble x, GLdouble y)
7104{
7105	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7106	if (!gl)
7107		return;
7108	gl->vertexAttribL2d(index, x, y);
7109}
7110
7111void glwVertexAttribL2dv (GLuint index, const GLdouble *v)
7112{
7113	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7114	if (!gl)
7115		return;
7116	gl->vertexAttribL2dv(index, v);
7117}
7118
7119void glwVertexAttribL3d (GLuint index, GLdouble x, GLdouble y, GLdouble z)
7120{
7121	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7122	if (!gl)
7123		return;
7124	gl->vertexAttribL3d(index, x, y, z);
7125}
7126
7127void glwVertexAttribL3dv (GLuint index, const GLdouble *v)
7128{
7129	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7130	if (!gl)
7131		return;
7132	gl->vertexAttribL3dv(index, v);
7133}
7134
7135void glwVertexAttribL4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
7136{
7137	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7138	if (!gl)
7139		return;
7140	gl->vertexAttribL4d(index, x, y, z, w);
7141}
7142
7143void glwVertexAttribL4dv (GLuint index, const GLdouble *v)
7144{
7145	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7146	if (!gl)
7147		return;
7148	gl->vertexAttribL4dv(index, v);
7149}
7150
7151void glwVertexAttribLFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
7152{
7153	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7154	if (!gl)
7155		return;
7156	gl->vertexAttribLFormat(attribindex, size, type, relativeoffset);
7157}
7158
7159void glwVertexAttribLPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer)
7160{
7161	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7162	if (!gl)
7163		return;
7164	gl->vertexAttribLPointer(index, size, type, stride, pointer);
7165}
7166
7167void glwVertexAttribP1ui (GLuint index, GLenum type, GLboolean normalized, GLuint value)
7168{
7169	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7170	if (!gl)
7171		return;
7172	gl->vertexAttribP1ui(index, type, normalized, value);
7173}
7174
7175void glwVertexAttribP1uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value)
7176{
7177	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7178	if (!gl)
7179		return;
7180	gl->vertexAttribP1uiv(index, type, normalized, value);
7181}
7182
7183void glwVertexAttribP2ui (GLuint index, GLenum type, GLboolean normalized, GLuint value)
7184{
7185	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7186	if (!gl)
7187		return;
7188	gl->vertexAttribP2ui(index, type, normalized, value);
7189}
7190
7191void glwVertexAttribP2uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value)
7192{
7193	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7194	if (!gl)
7195		return;
7196	gl->vertexAttribP2uiv(index, type, normalized, value);
7197}
7198
7199void glwVertexAttribP3ui (GLuint index, GLenum type, GLboolean normalized, GLuint value)
7200{
7201	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7202	if (!gl)
7203		return;
7204	gl->vertexAttribP3ui(index, type, normalized, value);
7205}
7206
7207void glwVertexAttribP3uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value)
7208{
7209	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7210	if (!gl)
7211		return;
7212	gl->vertexAttribP3uiv(index, type, normalized, value);
7213}
7214
7215void glwVertexAttribP4ui (GLuint index, GLenum type, GLboolean normalized, GLuint value)
7216{
7217	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7218	if (!gl)
7219		return;
7220	gl->vertexAttribP4ui(index, type, normalized, value);
7221}
7222
7223void glwVertexAttribP4uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value)
7224{
7225	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7226	if (!gl)
7227		return;
7228	gl->vertexAttribP4uiv(index, type, normalized, value);
7229}
7230
7231void glwVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer)
7232{
7233	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7234	if (!gl)
7235		return;
7236	gl->vertexAttribPointer(index, size, type, normalized, stride, pointer);
7237}
7238
7239void glwVertexBindingDivisor (GLuint bindingindex, GLuint divisor)
7240{
7241	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7242	if (!gl)
7243		return;
7244	gl->vertexBindingDivisor(bindingindex, divisor);
7245}
7246
7247void glwViewport (GLint x, GLint y, GLsizei width, GLsizei height)
7248{
7249	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7250	if (!gl)
7251		return;
7252	gl->viewport(x, y, width, height);
7253}
7254
7255void glwViewportArrayv (GLuint first, GLsizei count, const GLfloat *v)
7256{
7257	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7258	if (!gl)
7259		return;
7260	gl->viewportArrayv(first, count, v);
7261}
7262
7263void glwViewportIndexedf (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h)
7264{
7265	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7266	if (!gl)
7267		return;
7268	gl->viewportIndexedf(index, x, y, w, h);
7269}
7270
7271void glwViewportIndexedfv (GLuint index, const GLfloat *v)
7272{
7273	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7274	if (!gl)
7275		return;
7276	gl->viewportIndexedfv(index, v);
7277}
7278
7279void glwWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout)
7280{
7281	const glw::Functions* gl = glw::getCurrentThreadFunctions();
7282	if (!gl)
7283		return;
7284	gl->waitSync(sync, flags, timeout);
7285}
7286