blob: f3bd7481fe8c2cc5594418c251511355a850d95e [file] [log] [blame]
Jarkko Poyry3c827362014-09-02 11:48:52 +03001/* WARNING: This is auto-generated file. Do not modify, since changes will
2 * be lost! Modify the generating script instead.
3 */
4
5GLsync glwCreateSyncFromCLeventARB (struct _cl_context* context, struct _cl_event* event, GLbitfield flags)
6{
7 const glw::Functions* gl = glw::getCurrentThreadFunctions();
8 if (!gl)
9 return (GLsync)0;
10 return gl->createSyncFromCLeventARB(context, event, flags);
11}
12
13void glwBlendBarrierKHR ()
14{
15 const glw::Functions* gl = glw::getCurrentThreadFunctions();
16 if (!gl)
17 return;
18 gl->blendBarrierKHR();
19}
20
21void glwCullFace (GLenum mode)
22{
23 const glw::Functions* gl = glw::getCurrentThreadFunctions();
24 if (!gl)
25 return;
26 gl->cullFace(mode);
27}
28
29void glwFrontFace (GLenum mode)
30{
31 const glw::Functions* gl = glw::getCurrentThreadFunctions();
32 if (!gl)
33 return;
34 gl->frontFace(mode);
35}
36
37void glwHint (GLenum target, GLenum mode)
38{
39 const glw::Functions* gl = glw::getCurrentThreadFunctions();
40 if (!gl)
41 return;
42 gl->hint(target, mode);
43}
44
45void glwLineWidth (GLfloat width)
46{
47 const glw::Functions* gl = glw::getCurrentThreadFunctions();
48 if (!gl)
49 return;
50 gl->lineWidth(width);
51}
52
53void glwPointSize (GLfloat size)
54{
55 const glw::Functions* gl = glw::getCurrentThreadFunctions();
56 if (!gl)
57 return;
58 gl->pointSize(size);
59}
60
61void glwPolygonMode (GLenum face, GLenum mode)
62{
63 const glw::Functions* gl = glw::getCurrentThreadFunctions();
64 if (!gl)
65 return;
66 gl->polygonMode(face, mode);
67}
68
69void glwScissor (GLint x, GLint y, GLsizei width, GLsizei height)
70{
71 const glw::Functions* gl = glw::getCurrentThreadFunctions();
72 if (!gl)
73 return;
74 gl->scissor(x, y, width, height);
75}
76
77void glwTexParameterf (GLenum target, GLenum pname, GLfloat param)
78{
79 const glw::Functions* gl = glw::getCurrentThreadFunctions();
80 if (!gl)
81 return;
82 gl->texParameterf(target, pname, param);
83}
84
85void glwTexParameterfv (GLenum target, GLenum pname, const GLfloat* params)
86{
87 const glw::Functions* gl = glw::getCurrentThreadFunctions();
88 if (!gl)
89 return;
90 gl->texParameterfv(target, pname, params);
91}
92
93void glwTexParameteri (GLenum target, GLenum pname, GLint param)
94{
95 const glw::Functions* gl = glw::getCurrentThreadFunctions();
96 if (!gl)
97 return;
98 gl->texParameteri(target, pname, param);
99}
100
101void glwTexParameteriv (GLenum target, GLenum pname, const GLint* params)
102{
103 const glw::Functions* gl = glw::getCurrentThreadFunctions();
104 if (!gl)
105 return;
106 gl->texParameteriv(target, pname, params);
107}
108
109void glwTexImage1D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid* pixels)
110{
111 const glw::Functions* gl = glw::getCurrentThreadFunctions();
112 if (!gl)
113 return;
114 gl->texImage1D(target, level, internalformat, width, border, format, type, pixels);
115}
116
117void glwTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels)
118{
119 const glw::Functions* gl = glw::getCurrentThreadFunctions();
120 if (!gl)
121 return;
122 gl->texImage2D(target, level, internalformat, width, height, border, format, type, pixels);
123}
124
125void glwDrawBuffer (GLenum mode)
126{
127 const glw::Functions* gl = glw::getCurrentThreadFunctions();
128 if (!gl)
129 return;
130 gl->drawBuffer(mode);
131}
132
133void glwClear (GLbitfield mask)
134{
135 const glw::Functions* gl = glw::getCurrentThreadFunctions();
136 if (!gl)
137 return;
138 gl->clear(mask);
139}
140
141void glwClearColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
142{
143 const glw::Functions* gl = glw::getCurrentThreadFunctions();
144 if (!gl)
145 return;
146 gl->clearColor(red, green, blue, alpha);
147}
148
149void glwClearStencil (GLint s)
150{
151 const glw::Functions* gl = glw::getCurrentThreadFunctions();
152 if (!gl)
153 return;
154 gl->clearStencil(s);
155}
156
157void glwClearDepth (GLdouble depth)
158{
159 const glw::Functions* gl = glw::getCurrentThreadFunctions();
160 if (!gl)
161 return;
162 gl->clearDepth(depth);
163}
164
165void glwStencilMask (GLuint mask)
166{
167 const glw::Functions* gl = glw::getCurrentThreadFunctions();
168 if (!gl)
169 return;
170 gl->stencilMask(mask);
171}
172
173void glwColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
174{
175 const glw::Functions* gl = glw::getCurrentThreadFunctions();
176 if (!gl)
177 return;
178 gl->colorMask(red, green, blue, alpha);
179}
180
181void glwDepthMask (GLboolean flag)
182{
183 const glw::Functions* gl = glw::getCurrentThreadFunctions();
184 if (!gl)
185 return;
186 gl->depthMask(flag);
187}
188
189void glwDisable (GLenum cap)
190{
191 const glw::Functions* gl = glw::getCurrentThreadFunctions();
192 if (!gl)
193 return;
194 gl->disable(cap);
195}
196
197void glwEnable (GLenum cap)
198{
199 const glw::Functions* gl = glw::getCurrentThreadFunctions();
200 if (!gl)
201 return;
202 gl->enable(cap);
203}
204
205void glwFinish ()
206{
207 const glw::Functions* gl = glw::getCurrentThreadFunctions();
208 if (!gl)
209 return;
210 gl->finish();
211}
212
213void glwFlush ()
214{
215 const glw::Functions* gl = glw::getCurrentThreadFunctions();
216 if (!gl)
217 return;
218 gl->flush();
219}
220
221void glwBlendFunc (GLenum sfactor, GLenum dfactor)
222{
223 const glw::Functions* gl = glw::getCurrentThreadFunctions();
224 if (!gl)
225 return;
226 gl->blendFunc(sfactor, dfactor);
227}
228
229void glwLogicOp (GLenum opcode)
230{
231 const glw::Functions* gl = glw::getCurrentThreadFunctions();
232 if (!gl)
233 return;
234 gl->logicOp(opcode);
235}
236
237void glwStencilFunc (GLenum func, GLint ref, GLuint mask)
238{
239 const glw::Functions* gl = glw::getCurrentThreadFunctions();
240 if (!gl)
241 return;
242 gl->stencilFunc(func, ref, mask);
243}
244
245void glwStencilOp (GLenum fail, GLenum zfail, GLenum zpass)
246{
247 const glw::Functions* gl = glw::getCurrentThreadFunctions();
248 if (!gl)
249 return;
250 gl->stencilOp(fail, zfail, zpass);
251}
252
253void glwDepthFunc (GLenum func)
254{
255 const glw::Functions* gl = glw::getCurrentThreadFunctions();
256 if (!gl)
257 return;
258 gl->depthFunc(func);
259}
260
261void glwPixelStoref (GLenum pname, GLfloat param)
262{
263 const glw::Functions* gl = glw::getCurrentThreadFunctions();
264 if (!gl)
265 return;
266 gl->pixelStoref(pname, param);
267}
268
269void glwPixelStorei (GLenum pname, GLint param)
270{
271 const glw::Functions* gl = glw::getCurrentThreadFunctions();
272 if (!gl)
273 return;
274 gl->pixelStorei(pname, param);
275}
276
277void glwReadBuffer (GLenum mode)
278{
279 const glw::Functions* gl = glw::getCurrentThreadFunctions();
280 if (!gl)
281 return;
282 gl->readBuffer(mode);
283}
284
285void glwReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels)
286{
287 const glw::Functions* gl = glw::getCurrentThreadFunctions();
288 if (!gl)
289 return;
290 gl->readPixels(x, y, width, height, format, type, pixels);
291}
292
293void glwGetBooleanv (GLenum pname, GLboolean* params)
294{
295 const glw::Functions* gl = glw::getCurrentThreadFunctions();
296 if (!gl)
297 return;
298 gl->getBooleanv(pname, params);
299}
300
301void glwGetDoublev (GLenum pname, GLdouble* params)
302{
303 const glw::Functions* gl = glw::getCurrentThreadFunctions();
304 if (!gl)
305 return;
306 gl->getDoublev(pname, params);
307}
308
309GLenum glwGetError ()
310{
311 const glw::Functions* gl = glw::getCurrentThreadFunctions();
312 if (!gl)
313 return GL_INVALID_OPERATION;
314 return gl->getError();
315}
316
317void glwGetFloatv (GLenum pname, GLfloat* params)
318{
319 const glw::Functions* gl = glw::getCurrentThreadFunctions();
320 if (!gl)
321 return;
322 gl->getFloatv(pname, params);
323}
324
325void glwGetIntegerv (GLenum pname, GLint* params)
326{
327 const glw::Functions* gl = glw::getCurrentThreadFunctions();
328 if (!gl)
329 return;
330 gl->getIntegerv(pname, params);
331}
332
333const GLubyte* glwGetString (GLenum name)
334{
335 const glw::Functions* gl = glw::getCurrentThreadFunctions();
336 if (!gl)
337 return (const GLubyte*)0;
338 return gl->getString(name);
339}
340
341void glwGetTexImage (GLenum target, GLint level, GLenum format, GLenum type, GLvoid* pixels)
342{
343 const glw::Functions* gl = glw::getCurrentThreadFunctions();
344 if (!gl)
345 return;
346 gl->getTexImage(target, level, format, type, pixels);
347}
348
349void glwGetTexParameterfv (GLenum target, GLenum pname, GLfloat* params)
350{
351 const glw::Functions* gl = glw::getCurrentThreadFunctions();
352 if (!gl)
353 return;
354 gl->getTexParameterfv(target, pname, params);
355}
356
357void glwGetTexParameteriv (GLenum target, GLenum pname, GLint* params)
358{
359 const glw::Functions* gl = glw::getCurrentThreadFunctions();
360 if (!gl)
361 return;
362 gl->getTexParameteriv(target, pname, params);
363}
364
365void glwGetTexLevelParameterfv (GLenum target, GLint level, GLenum pname, GLfloat* params)
366{
367 const glw::Functions* gl = glw::getCurrentThreadFunctions();
368 if (!gl)
369 return;
370 gl->getTexLevelParameterfv(target, level, pname, params);
371}
372
373void glwGetTexLevelParameteriv (GLenum target, GLint level, GLenum pname, GLint* params)
374{
375 const glw::Functions* gl = glw::getCurrentThreadFunctions();
376 if (!gl)
377 return;
378 gl->getTexLevelParameteriv(target, level, pname, params);
379}
380
381GLboolean glwIsEnabled (GLenum cap)
382{
383 const glw::Functions* gl = glw::getCurrentThreadFunctions();
384 if (!gl)
385 return (GLboolean)0;
386 return gl->isEnabled(cap);
387}
388
389void glwDepthRange (GLdouble near, GLdouble far)
390{
391 const glw::Functions* gl = glw::getCurrentThreadFunctions();
392 if (!gl)
393 return;
394 gl->depthRange(near, far);
395}
396
397void glwViewport (GLint x, GLint y, GLsizei width, GLsizei height)
398{
399 const glw::Functions* gl = glw::getCurrentThreadFunctions();
400 if (!gl)
401 return;
402 gl->viewport(x, y, width, height);
403}
404
405void glwDrawArrays (GLenum mode, GLint first, GLsizei count)
406{
407 const glw::Functions* gl = glw::getCurrentThreadFunctions();
408 if (!gl)
409 return;
410 gl->drawArrays(mode, first, count);
411}
412
413void glwDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid* indices)
414{
415 const glw::Functions* gl = glw::getCurrentThreadFunctions();
416 if (!gl)
417 return;
418 gl->drawElements(mode, count, type, indices);
419}
420
421void glwGetPointerv (GLenum pname, GLvoid** params)
422{
423 const glw::Functions* gl = glw::getCurrentThreadFunctions();
424 if (!gl)
425 return;
426 gl->getPointerv(pname, params);
427}
428
429void glwPolygonOffset (GLfloat factor, GLfloat units)
430{
431 const glw::Functions* gl = glw::getCurrentThreadFunctions();
432 if (!gl)
433 return;
434 gl->polygonOffset(factor, units);
435}
436
437void glwCopyTexImage1D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)
438{
439 const glw::Functions* gl = glw::getCurrentThreadFunctions();
440 if (!gl)
441 return;
442 gl->copyTexImage1D(target, level, internalformat, x, y, width, border);
443}
444
445void glwCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
446{
447 const glw::Functions* gl = glw::getCurrentThreadFunctions();
448 if (!gl)
449 return;
450 gl->copyTexImage2D(target, level, internalformat, x, y, width, height, border);
451}
452
453void glwCopyTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)
454{
455 const glw::Functions* gl = glw::getCurrentThreadFunctions();
456 if (!gl)
457 return;
458 gl->copyTexSubImage1D(target, level, xoffset, x, y, width);
459}
460
461void glwCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
462{
463 const glw::Functions* gl = glw::getCurrentThreadFunctions();
464 if (!gl)
465 return;
466 gl->copyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height);
467}
468
469void glwTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid* pixels)
470{
471 const glw::Functions* gl = glw::getCurrentThreadFunctions();
472 if (!gl)
473 return;
474 gl->texSubImage1D(target, level, xoffset, width, format, type, pixels);
475}
476
477void glwTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels)
478{
479 const glw::Functions* gl = glw::getCurrentThreadFunctions();
480 if (!gl)
481 return;
482 gl->texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels);
483}
484
485void glwBindTexture (GLenum target, GLuint texture)
486{
487 const glw::Functions* gl = glw::getCurrentThreadFunctions();
488 if (!gl)
489 return;
490 gl->bindTexture(target, texture);
491}
492
493void glwDeleteTextures (GLsizei n, const GLuint* textures)
494{
495 const glw::Functions* gl = glw::getCurrentThreadFunctions();
496 if (!gl)
497 return;
498 gl->deleteTextures(n, textures);
499}
500
501void glwGenTextures (GLsizei n, GLuint* textures)
502{
503 const glw::Functions* gl = glw::getCurrentThreadFunctions();
504 if (!gl)
505 return;
506 gl->genTextures(n, textures);
507}
508
509GLboolean glwIsTexture (GLuint texture)
510{
511 const glw::Functions* gl = glw::getCurrentThreadFunctions();
512 if (!gl)
513 return (GLboolean)0;
514 return gl->isTexture(texture);
515}
516
517void glwBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
518{
519 const glw::Functions* gl = glw::getCurrentThreadFunctions();
520 if (!gl)
521 return;
522 gl->blendColor(red, green, blue, alpha);
523}
524
525void glwBlendEquation (GLenum mode)
526{
527 const glw::Functions* gl = glw::getCurrentThreadFunctions();
528 if (!gl)
529 return;
530 gl->blendEquation(mode);
531}
532
533void glwDrawRangeElements (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid* indices)
534{
535 const glw::Functions* gl = glw::getCurrentThreadFunctions();
536 if (!gl)
537 return;
538 gl->drawRangeElements(mode, start, end, count, type, indices);
539}
540
541void glwTexImage3D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels)
542{
543 const glw::Functions* gl = glw::getCurrentThreadFunctions();
544 if (!gl)
545 return;
546 gl->texImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels);
547}
548
549void glwTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels)
550{
551 const glw::Functions* gl = glw::getCurrentThreadFunctions();
552 if (!gl)
553 return;
554 gl->texSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
555}
556
557void glwCopyTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
558{
559 const glw::Functions* gl = glw::getCurrentThreadFunctions();
560 if (!gl)
561 return;
562 gl->copyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height);
563}
564
565void glwActiveTexture (GLenum texture)
566{
567 const glw::Functions* gl = glw::getCurrentThreadFunctions();
568 if (!gl)
569 return;
570 gl->activeTexture(texture);
571}
572
573void glwSampleCoverage (GLfloat value, GLboolean invert)
574{
575 const glw::Functions* gl = glw::getCurrentThreadFunctions();
576 if (!gl)
577 return;
578 gl->sampleCoverage(value, invert);
579}
580
581void glwCompressedTexImage3D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data)
582{
583 const glw::Functions* gl = glw::getCurrentThreadFunctions();
584 if (!gl)
585 return;
586 gl->compressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data);
587}
588
589void glwCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data)
590{
591 const glw::Functions* gl = glw::getCurrentThreadFunctions();
592 if (!gl)
593 return;
594 gl->compressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data);
595}
596
597void glwCompressedTexImage1D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid* data)
598{
599 const glw::Functions* gl = glw::getCurrentThreadFunctions();
600 if (!gl)
601 return;
602 gl->compressedTexImage1D(target, level, internalformat, width, border, imageSize, data);
603}
604
605void glwCompressedTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data)
606{
607 const glw::Functions* gl = glw::getCurrentThreadFunctions();
608 if (!gl)
609 return;
610 gl->compressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
611}
612
613void glwCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data)
614{
615 const glw::Functions* gl = glw::getCurrentThreadFunctions();
616 if (!gl)
617 return;
618 gl->compressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data);
619}
620
621void glwCompressedTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid* data)
622{
623 const glw::Functions* gl = glw::getCurrentThreadFunctions();
624 if (!gl)
625 return;
626 gl->compressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data);
627}
628
629void glwGetCompressedTexImage (GLenum target, GLint level, GLvoid* img)
630{
631 const glw::Functions* gl = glw::getCurrentThreadFunctions();
632 if (!gl)
633 return;
634 gl->getCompressedTexImage(target, level, img);
635}
636
637void glwBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
638{
639 const glw::Functions* gl = glw::getCurrentThreadFunctions();
640 if (!gl)
641 return;
642 gl->blendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha);
643}
644
645void glwMultiDrawArrays (GLenum mode, const GLint* first, const GLsizei* count, GLsizei drawcount)
646{
647 const glw::Functions* gl = glw::getCurrentThreadFunctions();
648 if (!gl)
649 return;
650 gl->multiDrawArrays(mode, first, count, drawcount);
651}
652
653void glwMultiDrawElements (GLenum mode, const GLsizei* count, GLenum type, const GLvoid* const* indices, GLsizei drawcount)
654{
655 const glw::Functions* gl = glw::getCurrentThreadFunctions();
656 if (!gl)
657 return;
658 gl->multiDrawElements(mode, count, type, indices, drawcount);
659}
660
661void glwPointParameterf (GLenum pname, GLfloat param)
662{
663 const glw::Functions* gl = glw::getCurrentThreadFunctions();
664 if (!gl)
665 return;
666 gl->pointParameterf(pname, param);
667}
668
669void glwPointParameterfv (GLenum pname, const GLfloat* params)
670{
671 const glw::Functions* gl = glw::getCurrentThreadFunctions();
672 if (!gl)
673 return;
674 gl->pointParameterfv(pname, params);
675}
676
677void glwPointParameteri (GLenum pname, GLint param)
678{
679 const glw::Functions* gl = glw::getCurrentThreadFunctions();
680 if (!gl)
681 return;
682 gl->pointParameteri(pname, param);
683}
684
685void glwPointParameteriv (GLenum pname, const GLint* params)
686{
687 const glw::Functions* gl = glw::getCurrentThreadFunctions();
688 if (!gl)
689 return;
690 gl->pointParameteriv(pname, params);
691}
692
693void glwGenQueries (GLsizei n, GLuint* ids)
694{
695 const glw::Functions* gl = glw::getCurrentThreadFunctions();
696 if (!gl)
697 return;
698 gl->genQueries(n, ids);
699}
700
701void glwDeleteQueries (GLsizei n, const GLuint* ids)
702{
703 const glw::Functions* gl = glw::getCurrentThreadFunctions();
704 if (!gl)
705 return;
706 gl->deleteQueries(n, ids);
707}
708
709GLboolean glwIsQuery (GLuint id)
710{
711 const glw::Functions* gl = glw::getCurrentThreadFunctions();
712 if (!gl)
713 return (GLboolean)0;
714 return gl->isQuery(id);
715}
716
717void glwBeginQuery (GLenum target, GLuint id)
718{
719 const glw::Functions* gl = glw::getCurrentThreadFunctions();
720 if (!gl)
721 return;
722 gl->beginQuery(target, id);
723}
724
725void glwEndQuery (GLenum target)
726{
727 const glw::Functions* gl = glw::getCurrentThreadFunctions();
728 if (!gl)
729 return;
730 gl->endQuery(target);
731}
732
733void glwGetQueryiv (GLenum target, GLenum pname, GLint* params)
734{
735 const glw::Functions* gl = glw::getCurrentThreadFunctions();
736 if (!gl)
737 return;
738 gl->getQueryiv(target, pname, params);
739}
740
741void glwGetQueryObjectiv (GLuint id, GLenum pname, GLint* params)
742{
743 const glw::Functions* gl = glw::getCurrentThreadFunctions();
744 if (!gl)
745 return;
746 gl->getQueryObjectiv(id, pname, params);
747}
748
749void glwGetQueryObjectuiv (GLuint id, GLenum pname, GLuint* params)
750{
751 const glw::Functions* gl = glw::getCurrentThreadFunctions();
752 if (!gl)
753 return;
754 gl->getQueryObjectuiv(id, pname, params);
755}
756
757void glwBindBuffer (GLenum target, GLuint buffer)
758{
759 const glw::Functions* gl = glw::getCurrentThreadFunctions();
760 if (!gl)
761 return;
762 gl->bindBuffer(target, buffer);
763}
764
765void glwDeleteBuffers (GLsizei n, const GLuint* buffers)
766{
767 const glw::Functions* gl = glw::getCurrentThreadFunctions();
768 if (!gl)
769 return;
770 gl->deleteBuffers(n, buffers);
771}
772
773void glwGenBuffers (GLsizei n, GLuint* buffers)
774{
775 const glw::Functions* gl = glw::getCurrentThreadFunctions();
776 if (!gl)
777 return;
778 gl->genBuffers(n, buffers);
779}
780
781GLboolean glwIsBuffer (GLuint buffer)
782{
783 const glw::Functions* gl = glw::getCurrentThreadFunctions();
784 if (!gl)
785 return (GLboolean)0;
786 return gl->isBuffer(buffer);
787}
788
789void glwBufferData (GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage)
790{
791 const glw::Functions* gl = glw::getCurrentThreadFunctions();
792 if (!gl)
793 return;
794 gl->bufferData(target, size, data, usage);
795}
796
797void glwBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data)
798{
799 const glw::Functions* gl = glw::getCurrentThreadFunctions();
800 if (!gl)
801 return;
802 gl->bufferSubData(target, offset, size, data);
803}
804
805void glwGetBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid* data)
806{
807 const glw::Functions* gl = glw::getCurrentThreadFunctions();
808 if (!gl)
809 return;
810 gl->getBufferSubData(target, offset, size, data);
811}
812
813GLvoid* glwMapBuffer (GLenum target, GLenum access)
814{
815 const glw::Functions* gl = glw::getCurrentThreadFunctions();
816 if (!gl)
817 return (GLvoid*)0;
818 return gl->mapBuffer(target, access);
819}
820
821GLboolean glwUnmapBuffer (GLenum target)
822{
823 const glw::Functions* gl = glw::getCurrentThreadFunctions();
824 if (!gl)
825 return (GLboolean)0;
826 return gl->unmapBuffer(target);
827}
828
829void glwGetBufferParameteriv (GLenum target, GLenum pname, GLint* params)
830{
831 const glw::Functions* gl = glw::getCurrentThreadFunctions();
832 if (!gl)
833 return;
834 gl->getBufferParameteriv(target, pname, params);
835}
836
837void glwGetBufferPointerv (GLenum target, GLenum pname, GLvoid** params)
838{
839 const glw::Functions* gl = glw::getCurrentThreadFunctions();
840 if (!gl)
841 return;
842 gl->getBufferPointerv(target, pname, params);
843}
844
845void glwBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha)
846{
847 const glw::Functions* gl = glw::getCurrentThreadFunctions();
848 if (!gl)
849 return;
850 gl->blendEquationSeparate(modeRGB, modeAlpha);
851}
852
853void glwDrawBuffers (GLsizei n, const GLenum* bufs)
854{
855 const glw::Functions* gl = glw::getCurrentThreadFunctions();
856 if (!gl)
857 return;
858 gl->drawBuffers(n, bufs);
859}
860
861void glwStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass)
862{
863 const glw::Functions* gl = glw::getCurrentThreadFunctions();
864 if (!gl)
865 return;
866 gl->stencilOpSeparate(face, sfail, dpfail, dppass);
867}
868
869void glwStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask)
870{
871 const glw::Functions* gl = glw::getCurrentThreadFunctions();
872 if (!gl)
873 return;
874 gl->stencilFuncSeparate(face, func, ref, mask);
875}
876
877void glwStencilMaskSeparate (GLenum face, GLuint mask)
878{
879 const glw::Functions* gl = glw::getCurrentThreadFunctions();
880 if (!gl)
881 return;
882 gl->stencilMaskSeparate(face, mask);
883}
884
885void glwAttachShader (GLuint program, GLuint shader)
886{
887 const glw::Functions* gl = glw::getCurrentThreadFunctions();
888 if (!gl)
889 return;
890 gl->attachShader(program, shader);
891}
892
893void glwBindAttribLocation (GLuint program, GLuint index, const GLchar* name)
894{
895 const glw::Functions* gl = glw::getCurrentThreadFunctions();
896 if (!gl)
897 return;
898 gl->bindAttribLocation(program, index, name);
899}
900
901void glwCompileShader (GLuint shader)
902{
903 const glw::Functions* gl = glw::getCurrentThreadFunctions();
904 if (!gl)
905 return;
906 gl->compileShader(shader);
907}
908
909GLuint glwCreateProgram ()
910{
911 const glw::Functions* gl = glw::getCurrentThreadFunctions();
912 if (!gl)
913 return (GLuint)0;
914 return gl->createProgram();
915}
916
917GLuint glwCreateShader (GLenum type)
918{
919 const glw::Functions* gl = glw::getCurrentThreadFunctions();
920 if (!gl)
921 return (GLuint)0;
922 return gl->createShader(type);
923}
924
925void glwDeleteProgram (GLuint program)
926{
927 const glw::Functions* gl = glw::getCurrentThreadFunctions();
928 if (!gl)
929 return;
930 gl->deleteProgram(program);
931}
932
933void glwDeleteShader (GLuint shader)
934{
935 const glw::Functions* gl = glw::getCurrentThreadFunctions();
936 if (!gl)
937 return;
938 gl->deleteShader(shader);
939}
940
941void glwDetachShader (GLuint program, GLuint shader)
942{
943 const glw::Functions* gl = glw::getCurrentThreadFunctions();
944 if (!gl)
945 return;
946 gl->detachShader(program, shader);
947}
948
949void glwDisableVertexAttribArray (GLuint index)
950{
951 const glw::Functions* gl = glw::getCurrentThreadFunctions();
952 if (!gl)
953 return;
954 gl->disableVertexAttribArray(index);
955}
956
957void glwEnableVertexAttribArray (GLuint index)
958{
959 const glw::Functions* gl = glw::getCurrentThreadFunctions();
960 if (!gl)
961 return;
962 gl->enableVertexAttribArray(index);
963}
964
965void glwGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLint* size, GLenum* type, GLchar* name)
966{
967 const glw::Functions* gl = glw::getCurrentThreadFunctions();
968 if (!gl)
969 return;
970 gl->getActiveAttrib(program, index, bufSize, length, size, type, name);
971}
972
973void glwGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLint* size, GLenum* type, GLchar* name)
974{
975 const glw::Functions* gl = glw::getCurrentThreadFunctions();
976 if (!gl)
977 return;
978 gl->getActiveUniform(program, index, bufSize, length, size, type, name);
979}
980
981void glwGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei* count, GLuint* obj)
982{
983 const glw::Functions* gl = glw::getCurrentThreadFunctions();
984 if (!gl)
985 return;
986 gl->getAttachedShaders(program, maxCount, count, obj);
987}
988
989GLint glwGetAttribLocation (GLuint program, const GLchar* name)
990{
991 const glw::Functions* gl = glw::getCurrentThreadFunctions();
992 if (!gl)
993 return (GLint)0;
994 return gl->getAttribLocation(program, name);
995}
996
997void glwGetProgramiv (GLuint program, GLenum pname, GLint* params)
998{
999 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1000 if (!gl)
1001 return;
1002 gl->getProgramiv(program, pname, params);
1003}
1004
1005void glwGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei* length, GLchar* infoLog)
1006{
1007 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1008 if (!gl)
1009 return;
1010 gl->getProgramInfoLog(program, bufSize, length, infoLog);
1011}
1012
1013void glwGetShaderiv (GLuint shader, GLenum pname, GLint* params)
1014{
1015 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1016 if (!gl)
1017 return;
1018 gl->getShaderiv(shader, pname, params);
1019}
1020
1021void glwGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei* length, GLchar* infoLog)
1022{
1023 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1024 if (!gl)
1025 return;
1026 gl->getShaderInfoLog(shader, bufSize, length, infoLog);
1027}
1028
1029void glwGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei* length, GLchar* source)
1030{
1031 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1032 if (!gl)
1033 return;
1034 gl->getShaderSource(shader, bufSize, length, source);
1035}
1036
1037GLint glwGetUniformLocation (GLuint program, const GLchar* name)
1038{
1039 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1040 if (!gl)
1041 return (GLint)0;
1042 return gl->getUniformLocation(program, name);
1043}
1044
1045void glwGetUniformfv (GLuint program, GLint location, GLfloat* params)
1046{
1047 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1048 if (!gl)
1049 return;
1050 gl->getUniformfv(program, location, params);
1051}
1052
1053void glwGetUniformiv (GLuint program, GLint location, GLint* params)
1054{
1055 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1056 if (!gl)
1057 return;
1058 gl->getUniformiv(program, location, params);
1059}
1060
1061void glwGetVertexAttribdv (GLuint index, GLenum pname, GLdouble* params)
1062{
1063 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1064 if (!gl)
1065 return;
1066 gl->getVertexAttribdv(index, pname, params);
1067}
1068
1069void glwGetVertexAttribfv (GLuint index, GLenum pname, GLfloat* params)
1070{
1071 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1072 if (!gl)
1073 return;
1074 gl->getVertexAttribfv(index, pname, params);
1075}
1076
1077void glwGetVertexAttribiv (GLuint index, GLenum pname, GLint* params)
1078{
1079 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1080 if (!gl)
1081 return;
1082 gl->getVertexAttribiv(index, pname, params);
1083}
1084
1085void glwGetVertexAttribPointerv (GLuint index, GLenum pname, GLvoid** pointer)
1086{
1087 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1088 if (!gl)
1089 return;
1090 gl->getVertexAttribPointerv(index, pname, pointer);
1091}
1092
1093GLboolean glwIsProgram (GLuint program)
1094{
1095 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1096 if (!gl)
1097 return (GLboolean)0;
1098 return gl->isProgram(program);
1099}
1100
1101GLboolean glwIsShader (GLuint shader)
1102{
1103 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1104 if (!gl)
1105 return (GLboolean)0;
1106 return gl->isShader(shader);
1107}
1108
1109void glwLinkProgram (GLuint program)
1110{
1111 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1112 if (!gl)
1113 return;
1114 gl->linkProgram(program);
1115}
1116
1117void glwShaderSource (GLuint shader, GLsizei count, const GLchar* const* string, const GLint* length)
1118{
1119 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1120 if (!gl)
1121 return;
1122 gl->shaderSource(shader, count, string, length);
1123}
1124
1125void glwUseProgram (GLuint program)
1126{
1127 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1128 if (!gl)
1129 return;
1130 gl->useProgram(program);
1131}
1132
1133void glwUniform1f (GLint location, GLfloat v0)
1134{
1135 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1136 if (!gl)
1137 return;
1138 gl->uniform1f(location, v0);
1139}
1140
1141void glwUniform2f (GLint location, GLfloat v0, GLfloat v1)
1142{
1143 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1144 if (!gl)
1145 return;
1146 gl->uniform2f(location, v0, v1);
1147}
1148
1149void glwUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
1150{
1151 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1152 if (!gl)
1153 return;
1154 gl->uniform3f(location, v0, v1, v2);
1155}
1156
1157void glwUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
1158{
1159 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1160 if (!gl)
1161 return;
1162 gl->uniform4f(location, v0, v1, v2, v3);
1163}
1164
1165void glwUniform1i (GLint location, GLint v0)
1166{
1167 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1168 if (!gl)
1169 return;
1170 gl->uniform1i(location, v0);
1171}
1172
1173void glwUniform2i (GLint location, GLint v0, GLint v1)
1174{
1175 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1176 if (!gl)
1177 return;
1178 gl->uniform2i(location, v0, v1);
1179}
1180
1181void glwUniform3i (GLint location, GLint v0, GLint v1, GLint v2)
1182{
1183 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1184 if (!gl)
1185 return;
1186 gl->uniform3i(location, v0, v1, v2);
1187}
1188
1189void glwUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
1190{
1191 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1192 if (!gl)
1193 return;
1194 gl->uniform4i(location, v0, v1, v2, v3);
1195}
1196
1197void glwUniform1fv (GLint location, GLsizei count, const GLfloat* value)
1198{
1199 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1200 if (!gl)
1201 return;
1202 gl->uniform1fv(location, count, value);
1203}
1204
1205void glwUniform2fv (GLint location, GLsizei count, const GLfloat* value)
1206{
1207 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1208 if (!gl)
1209 return;
1210 gl->uniform2fv(location, count, value);
1211}
1212
1213void glwUniform3fv (GLint location, GLsizei count, const GLfloat* value)
1214{
1215 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1216 if (!gl)
1217 return;
1218 gl->uniform3fv(location, count, value);
1219}
1220
1221void glwUniform4fv (GLint location, GLsizei count, const GLfloat* value)
1222{
1223 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1224 if (!gl)
1225 return;
1226 gl->uniform4fv(location, count, value);
1227}
1228
1229void glwUniform1iv (GLint location, GLsizei count, const GLint* value)
1230{
1231 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1232 if (!gl)
1233 return;
1234 gl->uniform1iv(location, count, value);
1235}
1236
1237void glwUniform2iv (GLint location, GLsizei count, const GLint* value)
1238{
1239 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1240 if (!gl)
1241 return;
1242 gl->uniform2iv(location, count, value);
1243}
1244
1245void glwUniform3iv (GLint location, GLsizei count, const GLint* value)
1246{
1247 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1248 if (!gl)
1249 return;
1250 gl->uniform3iv(location, count, value);
1251}
1252
1253void glwUniform4iv (GLint location, GLsizei count, const GLint* value)
1254{
1255 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1256 if (!gl)
1257 return;
1258 gl->uniform4iv(location, count, value);
1259}
1260
1261void glwUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
1262{
1263 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1264 if (!gl)
1265 return;
1266 gl->uniformMatrix2fv(location, count, transpose, value);
1267}
1268
1269void glwUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
1270{
1271 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1272 if (!gl)
1273 return;
1274 gl->uniformMatrix3fv(location, count, transpose, value);
1275}
1276
1277void glwUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
1278{
1279 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1280 if (!gl)
1281 return;
1282 gl->uniformMatrix4fv(location, count, transpose, value);
1283}
1284
1285void glwValidateProgram (GLuint program)
1286{
1287 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1288 if (!gl)
1289 return;
1290 gl->validateProgram(program);
1291}
1292
1293void glwVertexAttrib1d (GLuint index, GLdouble x)
1294{
1295 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1296 if (!gl)
1297 return;
1298 gl->vertexAttrib1d(index, x);
1299}
1300
1301void glwVertexAttrib1dv (GLuint index, const GLdouble* v)
1302{
1303 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1304 if (!gl)
1305 return;
1306 gl->vertexAttrib1dv(index, v);
1307}
1308
1309void glwVertexAttrib1f (GLuint index, GLfloat x)
1310{
1311 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1312 if (!gl)
1313 return;
1314 gl->vertexAttrib1f(index, x);
1315}
1316
1317void glwVertexAttrib1fv (GLuint index, const GLfloat* v)
1318{
1319 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1320 if (!gl)
1321 return;
1322 gl->vertexAttrib1fv(index, v);
1323}
1324
1325void glwVertexAttrib1s (GLuint index, GLshort x)
1326{
1327 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1328 if (!gl)
1329 return;
1330 gl->vertexAttrib1s(index, x);
1331}
1332
1333void glwVertexAttrib1sv (GLuint index, const GLshort* v)
1334{
1335 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1336 if (!gl)
1337 return;
1338 gl->vertexAttrib1sv(index, v);
1339}
1340
1341void glwVertexAttrib2d (GLuint index, GLdouble x, GLdouble y)
1342{
1343 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1344 if (!gl)
1345 return;
1346 gl->vertexAttrib2d(index, x, y);
1347}
1348
1349void glwVertexAttrib2dv (GLuint index, const GLdouble* v)
1350{
1351 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1352 if (!gl)
1353 return;
1354 gl->vertexAttrib2dv(index, v);
1355}
1356
1357void glwVertexAttrib2f (GLuint index, GLfloat x, GLfloat y)
1358{
1359 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1360 if (!gl)
1361 return;
1362 gl->vertexAttrib2f(index, x, y);
1363}
1364
1365void glwVertexAttrib2fv (GLuint index, const GLfloat* v)
1366{
1367 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1368 if (!gl)
1369 return;
1370 gl->vertexAttrib2fv(index, v);
1371}
1372
1373void glwVertexAttrib2s (GLuint index, GLshort x, GLshort y)
1374{
1375 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1376 if (!gl)
1377 return;
1378 gl->vertexAttrib2s(index, x, y);
1379}
1380
1381void glwVertexAttrib2sv (GLuint index, const GLshort* v)
1382{
1383 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1384 if (!gl)
1385 return;
1386 gl->vertexAttrib2sv(index, v);
1387}
1388
1389void glwVertexAttrib3d (GLuint index, GLdouble x, GLdouble y, GLdouble z)
1390{
1391 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1392 if (!gl)
1393 return;
1394 gl->vertexAttrib3d(index, x, y, z);
1395}
1396
1397void glwVertexAttrib3dv (GLuint index, const GLdouble* v)
1398{
1399 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1400 if (!gl)
1401 return;
1402 gl->vertexAttrib3dv(index, v);
1403}
1404
1405void glwVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z)
1406{
1407 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1408 if (!gl)
1409 return;
1410 gl->vertexAttrib3f(index, x, y, z);
1411}
1412
1413void glwVertexAttrib3fv (GLuint index, const GLfloat* v)
1414{
1415 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1416 if (!gl)
1417 return;
1418 gl->vertexAttrib3fv(index, v);
1419}
1420
1421void glwVertexAttrib3s (GLuint index, GLshort x, GLshort y, GLshort z)
1422{
1423 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1424 if (!gl)
1425 return;
1426 gl->vertexAttrib3s(index, x, y, z);
1427}
1428
1429void glwVertexAttrib3sv (GLuint index, const GLshort* v)
1430{
1431 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1432 if (!gl)
1433 return;
1434 gl->vertexAttrib3sv(index, v);
1435}
1436
1437void glwVertexAttrib4Nbv (GLuint index, const GLbyte* v)
1438{
1439 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1440 if (!gl)
1441 return;
1442 gl->vertexAttrib4Nbv(index, v);
1443}
1444
1445void glwVertexAttrib4Niv (GLuint index, const GLint* v)
1446{
1447 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1448 if (!gl)
1449 return;
1450 gl->vertexAttrib4Niv(index, v);
1451}
1452
1453void glwVertexAttrib4Nsv (GLuint index, const GLshort* v)
1454{
1455 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1456 if (!gl)
1457 return;
1458 gl->vertexAttrib4Nsv(index, v);
1459}
1460
1461void glwVertexAttrib4Nub (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
1462{
1463 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1464 if (!gl)
1465 return;
1466 gl->vertexAttrib4Nub(index, x, y, z, w);
1467}
1468
1469void glwVertexAttrib4Nubv (GLuint index, const GLubyte* v)
1470{
1471 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1472 if (!gl)
1473 return;
1474 gl->vertexAttrib4Nubv(index, v);
1475}
1476
1477void glwVertexAttrib4Nuiv (GLuint index, const GLuint* v)
1478{
1479 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1480 if (!gl)
1481 return;
1482 gl->vertexAttrib4Nuiv(index, v);
1483}
1484
1485void glwVertexAttrib4Nusv (GLuint index, const GLushort* v)
1486{
1487 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1488 if (!gl)
1489 return;
1490 gl->vertexAttrib4Nusv(index, v);
1491}
1492
1493void glwVertexAttrib4bv (GLuint index, const GLbyte* v)
1494{
1495 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1496 if (!gl)
1497 return;
1498 gl->vertexAttrib4bv(index, v);
1499}
1500
1501void glwVertexAttrib4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
1502{
1503 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1504 if (!gl)
1505 return;
1506 gl->vertexAttrib4d(index, x, y, z, w);
1507}
1508
1509void glwVertexAttrib4dv (GLuint index, const GLdouble* v)
1510{
1511 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1512 if (!gl)
1513 return;
1514 gl->vertexAttrib4dv(index, v);
1515}
1516
1517void glwVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
1518{
1519 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1520 if (!gl)
1521 return;
1522 gl->vertexAttrib4f(index, x, y, z, w);
1523}
1524
1525void glwVertexAttrib4fv (GLuint index, const GLfloat* v)
1526{
1527 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1528 if (!gl)
1529 return;
1530 gl->vertexAttrib4fv(index, v);
1531}
1532
1533void glwVertexAttrib4iv (GLuint index, const GLint* v)
1534{
1535 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1536 if (!gl)
1537 return;
1538 gl->vertexAttrib4iv(index, v);
1539}
1540
1541void glwVertexAttrib4s (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
1542{
1543 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1544 if (!gl)
1545 return;
1546 gl->vertexAttrib4s(index, x, y, z, w);
1547}
1548
1549void glwVertexAttrib4sv (GLuint index, const GLshort* v)
1550{
1551 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1552 if (!gl)
1553 return;
1554 gl->vertexAttrib4sv(index, v);
1555}
1556
1557void glwVertexAttrib4ubv (GLuint index, const GLubyte* v)
1558{
1559 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1560 if (!gl)
1561 return;
1562 gl->vertexAttrib4ubv(index, v);
1563}
1564
1565void glwVertexAttrib4uiv (GLuint index, const GLuint* v)
1566{
1567 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1568 if (!gl)
1569 return;
1570 gl->vertexAttrib4uiv(index, v);
1571}
1572
1573void glwVertexAttrib4usv (GLuint index, const GLushort* v)
1574{
1575 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1576 if (!gl)
1577 return;
1578 gl->vertexAttrib4usv(index, v);
1579}
1580
1581void glwVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* pointer)
1582{
1583 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1584 if (!gl)
1585 return;
1586 gl->vertexAttribPointer(index, size, type, normalized, stride, pointer);
1587}
1588
1589void glwUniformMatrix2x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
1590{
1591 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1592 if (!gl)
1593 return;
1594 gl->uniformMatrix2x3fv(location, count, transpose, value);
1595}
1596
1597void glwUniformMatrix3x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
1598{
1599 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1600 if (!gl)
1601 return;
1602 gl->uniformMatrix3x2fv(location, count, transpose, value);
1603}
1604
1605void glwUniformMatrix2x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
1606{
1607 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1608 if (!gl)
1609 return;
1610 gl->uniformMatrix2x4fv(location, count, transpose, value);
1611}
1612
1613void glwUniformMatrix4x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
1614{
1615 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1616 if (!gl)
1617 return;
1618 gl->uniformMatrix4x2fv(location, count, transpose, value);
1619}
1620
1621void glwUniformMatrix3x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
1622{
1623 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1624 if (!gl)
1625 return;
1626 gl->uniformMatrix3x4fv(location, count, transpose, value);
1627}
1628
1629void glwUniformMatrix4x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
1630{
1631 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1632 if (!gl)
1633 return;
1634 gl->uniformMatrix4x3fv(location, count, transpose, value);
1635}
1636
1637void glwColorMaski (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a)
1638{
1639 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1640 if (!gl)
1641 return;
1642 gl->colorMaski(index, r, g, b, a);
1643}
1644
1645void glwGetBooleani_v (GLenum target, GLuint index, GLboolean* data)
1646{
1647 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1648 if (!gl)
1649 return;
1650 gl->getBooleani_v(target, index, data);
1651}
1652
1653void glwGetIntegeri_v (GLenum target, GLuint index, GLint* data)
1654{
1655 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1656 if (!gl)
1657 return;
1658 gl->getIntegeri_v(target, index, data);
1659}
1660
1661void glwEnablei (GLenum target, GLuint index)
1662{
1663 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1664 if (!gl)
1665 return;
1666 gl->enablei(target, index);
1667}
1668
1669void glwDisablei (GLenum target, GLuint index)
1670{
1671 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1672 if (!gl)
1673 return;
1674 gl->disablei(target, index);
1675}
1676
1677GLboolean glwIsEnabledi (GLenum target, GLuint index)
1678{
1679 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1680 if (!gl)
1681 return (GLboolean)0;
1682 return gl->isEnabledi(target, index);
1683}
1684
1685void glwBeginTransformFeedback (GLenum primitiveMode)
1686{
1687 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1688 if (!gl)
1689 return;
1690 gl->beginTransformFeedback(primitiveMode);
1691}
1692
1693void glwEndTransformFeedback ()
1694{
1695 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1696 if (!gl)
1697 return;
1698 gl->endTransformFeedback();
1699}
1700
1701void glwBindBufferRange (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
1702{
1703 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1704 if (!gl)
1705 return;
1706 gl->bindBufferRange(target, index, buffer, offset, size);
1707}
1708
1709void glwBindBufferBase (GLenum target, GLuint index, GLuint buffer)
1710{
1711 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1712 if (!gl)
1713 return;
1714 gl->bindBufferBase(target, index, buffer);
1715}
1716
1717void glwTransformFeedbackVaryings (GLuint program, GLsizei count, const GLchar* const* varyings, GLenum bufferMode)
1718{
1719 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1720 if (!gl)
1721 return;
1722 gl->transformFeedbackVaryings(program, count, varyings, bufferMode);
1723}
1724
1725void glwGetTransformFeedbackVarying (GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei* size, GLenum* type, GLchar* name)
1726{
1727 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1728 if (!gl)
1729 return;
1730 gl->getTransformFeedbackVarying(program, index, bufSize, length, size, type, name);
1731}
1732
1733void glwClampColor (GLenum target, GLenum clamp)
1734{
1735 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1736 if (!gl)
1737 return;
1738 gl->clampColor(target, clamp);
1739}
1740
1741void glwBeginConditionalRender (GLuint id, GLenum mode)
1742{
1743 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1744 if (!gl)
1745 return;
1746 gl->beginConditionalRender(id, mode);
1747}
1748
1749void glwEndConditionalRender ()
1750{
1751 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1752 if (!gl)
1753 return;
1754 gl->endConditionalRender();
1755}
1756
1757void glwVertexAttribIPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid* pointer)
1758{
1759 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1760 if (!gl)
1761 return;
1762 gl->vertexAttribIPointer(index, size, type, stride, pointer);
1763}
1764
1765void glwGetVertexAttribIiv (GLuint index, GLenum pname, GLint* params)
1766{
1767 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1768 if (!gl)
1769 return;
1770 gl->getVertexAttribIiv(index, pname, params);
1771}
1772
1773void glwGetVertexAttribIuiv (GLuint index, GLenum pname, GLuint* params)
1774{
1775 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1776 if (!gl)
1777 return;
1778 gl->getVertexAttribIuiv(index, pname, params);
1779}
1780
1781void glwVertexAttribI1i (GLuint index, GLint x)
1782{
1783 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1784 if (!gl)
1785 return;
1786 gl->vertexAttribI1i(index, x);
1787}
1788
1789void glwVertexAttribI2i (GLuint index, GLint x, GLint y)
1790{
1791 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1792 if (!gl)
1793 return;
1794 gl->vertexAttribI2i(index, x, y);
1795}
1796
1797void glwVertexAttribI3i (GLuint index, GLint x, GLint y, GLint z)
1798{
1799 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1800 if (!gl)
1801 return;
1802 gl->vertexAttribI3i(index, x, y, z);
1803}
1804
1805void glwVertexAttribI4i (GLuint index, GLint x, GLint y, GLint z, GLint w)
1806{
1807 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1808 if (!gl)
1809 return;
1810 gl->vertexAttribI4i(index, x, y, z, w);
1811}
1812
1813void glwVertexAttribI1ui (GLuint index, GLuint x)
1814{
1815 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1816 if (!gl)
1817 return;
1818 gl->vertexAttribI1ui(index, x);
1819}
1820
1821void glwVertexAttribI2ui (GLuint index, GLuint x, GLuint y)
1822{
1823 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1824 if (!gl)
1825 return;
1826 gl->vertexAttribI2ui(index, x, y);
1827}
1828
1829void glwVertexAttribI3ui (GLuint index, GLuint x, GLuint y, GLuint z)
1830{
1831 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1832 if (!gl)
1833 return;
1834 gl->vertexAttribI3ui(index, x, y, z);
1835}
1836
1837void glwVertexAttribI4ui (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
1838{
1839 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1840 if (!gl)
1841 return;
1842 gl->vertexAttribI4ui(index, x, y, z, w);
1843}
1844
1845void glwVertexAttribI1iv (GLuint index, const GLint* v)
1846{
1847 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1848 if (!gl)
1849 return;
1850 gl->vertexAttribI1iv(index, v);
1851}
1852
1853void glwVertexAttribI2iv (GLuint index, const GLint* v)
1854{
1855 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1856 if (!gl)
1857 return;
1858 gl->vertexAttribI2iv(index, v);
1859}
1860
1861void glwVertexAttribI3iv (GLuint index, const GLint* v)
1862{
1863 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1864 if (!gl)
1865 return;
1866 gl->vertexAttribI3iv(index, v);
1867}
1868
1869void glwVertexAttribI4iv (GLuint index, const GLint* v)
1870{
1871 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1872 if (!gl)
1873 return;
1874 gl->vertexAttribI4iv(index, v);
1875}
1876
1877void glwVertexAttribI1uiv (GLuint index, const GLuint* v)
1878{
1879 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1880 if (!gl)
1881 return;
1882 gl->vertexAttribI1uiv(index, v);
1883}
1884
1885void glwVertexAttribI2uiv (GLuint index, const GLuint* v)
1886{
1887 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1888 if (!gl)
1889 return;
1890 gl->vertexAttribI2uiv(index, v);
1891}
1892
1893void glwVertexAttribI3uiv (GLuint index, const GLuint* v)
1894{
1895 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1896 if (!gl)
1897 return;
1898 gl->vertexAttribI3uiv(index, v);
1899}
1900
1901void glwVertexAttribI4uiv (GLuint index, const GLuint* v)
1902{
1903 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1904 if (!gl)
1905 return;
1906 gl->vertexAttribI4uiv(index, v);
1907}
1908
1909void glwVertexAttribI4bv (GLuint index, const GLbyte* v)
1910{
1911 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1912 if (!gl)
1913 return;
1914 gl->vertexAttribI4bv(index, v);
1915}
1916
1917void glwVertexAttribI4sv (GLuint index, const GLshort* v)
1918{
1919 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1920 if (!gl)
1921 return;
1922 gl->vertexAttribI4sv(index, v);
1923}
1924
1925void glwVertexAttribI4ubv (GLuint index, const GLubyte* v)
1926{
1927 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1928 if (!gl)
1929 return;
1930 gl->vertexAttribI4ubv(index, v);
1931}
1932
1933void glwVertexAttribI4usv (GLuint index, const GLushort* v)
1934{
1935 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1936 if (!gl)
1937 return;
1938 gl->vertexAttribI4usv(index, v);
1939}
1940
1941void glwGetUniformuiv (GLuint program, GLint location, GLuint* params)
1942{
1943 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1944 if (!gl)
1945 return;
1946 gl->getUniformuiv(program, location, params);
1947}
1948
1949void glwBindFragDataLocation (GLuint program, GLuint color, const GLchar* name)
1950{
1951 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1952 if (!gl)
1953 return;
1954 gl->bindFragDataLocation(program, color, name);
1955}
1956
1957GLint glwGetFragDataLocation (GLuint program, const GLchar* name)
1958{
1959 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1960 if (!gl)
1961 return (GLint)0;
1962 return gl->getFragDataLocation(program, name);
1963}
1964
1965void glwUniform1ui (GLint location, GLuint v0)
1966{
1967 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1968 if (!gl)
1969 return;
1970 gl->uniform1ui(location, v0);
1971}
1972
1973void glwUniform2ui (GLint location, GLuint v0, GLuint v1)
1974{
1975 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1976 if (!gl)
1977 return;
1978 gl->uniform2ui(location, v0, v1);
1979}
1980
1981void glwUniform3ui (GLint location, GLuint v0, GLuint v1, GLuint v2)
1982{
1983 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1984 if (!gl)
1985 return;
1986 gl->uniform3ui(location, v0, v1, v2);
1987}
1988
1989void glwUniform4ui (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
1990{
1991 const glw::Functions* gl = glw::getCurrentThreadFunctions();
1992 if (!gl)
1993 return;
1994 gl->uniform4ui(location, v0, v1, v2, v3);
1995}
1996
1997void glwUniform1uiv (GLint location, GLsizei count, const GLuint* value)
1998{
1999 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2000 if (!gl)
2001 return;
2002 gl->uniform1uiv(location, count, value);
2003}
2004
2005void glwUniform2uiv (GLint location, GLsizei count, const GLuint* value)
2006{
2007 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2008 if (!gl)
2009 return;
2010 gl->uniform2uiv(location, count, value);
2011}
2012
2013void glwUniform3uiv (GLint location, GLsizei count, const GLuint* value)
2014{
2015 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2016 if (!gl)
2017 return;
2018 gl->uniform3uiv(location, count, value);
2019}
2020
2021void glwUniform4uiv (GLint location, GLsizei count, const GLuint* value)
2022{
2023 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2024 if (!gl)
2025 return;
2026 gl->uniform4uiv(location, count, value);
2027}
2028
2029void glwTexParameterIiv (GLenum target, GLenum pname, const GLint* params)
2030{
2031 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2032 if (!gl)
2033 return;
2034 gl->texParameterIiv(target, pname, params);
2035}
2036
2037void glwTexParameterIuiv (GLenum target, GLenum pname, const GLuint* params)
2038{
2039 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2040 if (!gl)
2041 return;
2042 gl->texParameterIuiv(target, pname, params);
2043}
2044
2045void glwGetTexParameterIiv (GLenum target, GLenum pname, GLint* params)
2046{
2047 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2048 if (!gl)
2049 return;
2050 gl->getTexParameterIiv(target, pname, params);
2051}
2052
2053void glwGetTexParameterIuiv (GLenum target, GLenum pname, GLuint* params)
2054{
2055 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2056 if (!gl)
2057 return;
2058 gl->getTexParameterIuiv(target, pname, params);
2059}
2060
2061void glwClearBufferiv (GLenum buffer, GLint drawbuffer, const GLint* value)
2062{
2063 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2064 if (!gl)
2065 return;
2066 gl->clearBufferiv(buffer, drawbuffer, value);
2067}
2068
2069void glwClearBufferuiv (GLenum buffer, GLint drawbuffer, const GLuint* value)
2070{
2071 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2072 if (!gl)
2073 return;
2074 gl->clearBufferuiv(buffer, drawbuffer, value);
2075}
2076
2077void glwClearBufferfv (GLenum buffer, GLint drawbuffer, const GLfloat* value)
2078{
2079 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2080 if (!gl)
2081 return;
2082 gl->clearBufferfv(buffer, drawbuffer, value);
2083}
2084
2085void glwClearBufferfi (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)
2086{
2087 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2088 if (!gl)
2089 return;
2090 gl->clearBufferfi(buffer, drawbuffer, depth, stencil);
2091}
2092
2093const GLubyte* glwGetStringi (GLenum name, GLuint index)
2094{
2095 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2096 if (!gl)
2097 return (const GLubyte*)0;
2098 return gl->getStringi(name, index);
2099}
2100
2101GLboolean glwIsRenderbuffer (GLuint renderbuffer)
2102{
2103 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2104 if (!gl)
2105 return (GLboolean)0;
2106 return gl->isRenderbuffer(renderbuffer);
2107}
2108
2109void glwBindRenderbuffer (GLenum target, GLuint renderbuffer)
2110{
2111 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2112 if (!gl)
2113 return;
2114 gl->bindRenderbuffer(target, renderbuffer);
2115}
2116
2117void glwDeleteRenderbuffers (GLsizei n, const GLuint* renderbuffers)
2118{
2119 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2120 if (!gl)
2121 return;
2122 gl->deleteRenderbuffers(n, renderbuffers);
2123}
2124
2125void glwGenRenderbuffers (GLsizei n, GLuint* renderbuffers)
2126{
2127 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2128 if (!gl)
2129 return;
2130 gl->genRenderbuffers(n, renderbuffers);
2131}
2132
2133void glwRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
2134{
2135 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2136 if (!gl)
2137 return;
2138 gl->renderbufferStorage(target, internalformat, width, height);
2139}
2140
2141void glwGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint* params)
2142{
2143 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2144 if (!gl)
2145 return;
2146 gl->getRenderbufferParameteriv(target, pname, params);
2147}
2148
2149GLboolean glwIsFramebuffer (GLuint framebuffer)
2150{
2151 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2152 if (!gl)
2153 return (GLboolean)0;
2154 return gl->isFramebuffer(framebuffer);
2155}
2156
2157void glwBindFramebuffer (GLenum target, GLuint framebuffer)
2158{
2159 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2160 if (!gl)
2161 return;
2162 gl->bindFramebuffer(target, framebuffer);
2163}
2164
2165void glwDeleteFramebuffers (GLsizei n, const GLuint* framebuffers)
2166{
2167 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2168 if (!gl)
2169 return;
2170 gl->deleteFramebuffers(n, framebuffers);
2171}
2172
2173void glwGenFramebuffers (GLsizei n, GLuint* framebuffers)
2174{
2175 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2176 if (!gl)
2177 return;
2178 gl->genFramebuffers(n, framebuffers);
2179}
2180
2181GLenum glwCheckFramebufferStatus (GLenum target)
2182{
2183 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2184 if (!gl)
2185 return (GLenum)0;
2186 return gl->checkFramebufferStatus(target);
2187}
2188
2189void glwFramebufferTexture1D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
2190{
2191 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2192 if (!gl)
2193 return;
2194 gl->framebufferTexture1D(target, attachment, textarget, texture, level);
2195}
2196
2197void glwFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
2198{
2199 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2200 if (!gl)
2201 return;
2202 gl->framebufferTexture2D(target, attachment, textarget, texture, level);
2203}
2204
2205void glwFramebufferTexture3D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
2206{
2207 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2208 if (!gl)
2209 return;
2210 gl->framebufferTexture3D(target, attachment, textarget, texture, level, zoffset);
2211}
2212
2213void glwFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
2214{
2215 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2216 if (!gl)
2217 return;
2218 gl->framebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer);
2219}
2220
2221void glwGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint* params)
2222{
2223 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2224 if (!gl)
2225 return;
2226 gl->getFramebufferAttachmentParameteriv(target, attachment, pname, params);
2227}
2228
2229void glwGenerateMipmap (GLenum target)
2230{
2231 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2232 if (!gl)
2233 return;
2234 gl->generateMipmap(target);
2235}
2236
2237void glwBlitFramebuffer (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
2238{
2239 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2240 if (!gl)
2241 return;
2242 gl->blitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
2243}
2244
2245void glwRenderbufferStorageMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
2246{
2247 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2248 if (!gl)
2249 return;
2250 gl->renderbufferStorageMultisample(target, samples, internalformat, width, height);
2251}
2252
2253void glwFramebufferTextureLayer (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
2254{
2255 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2256 if (!gl)
2257 return;
2258 gl->framebufferTextureLayer(target, attachment, texture, level, layer);
2259}
2260
2261GLvoid* glwMapBufferRange (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)
2262{
2263 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2264 if (!gl)
2265 return (GLvoid*)0;
2266 return gl->mapBufferRange(target, offset, length, access);
2267}
2268
2269void glwFlushMappedBufferRange (GLenum target, GLintptr offset, GLsizeiptr length)
2270{
2271 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2272 if (!gl)
2273 return;
2274 gl->flushMappedBufferRange(target, offset, length);
2275}
2276
2277void glwBindVertexArray (GLuint array)
2278{
2279 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2280 if (!gl)
2281 return;
2282 gl->bindVertexArray(array);
2283}
2284
2285void glwDeleteVertexArrays (GLsizei n, const GLuint* arrays)
2286{
2287 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2288 if (!gl)
2289 return;
2290 gl->deleteVertexArrays(n, arrays);
2291}
2292
2293void glwGenVertexArrays (GLsizei n, GLuint* arrays)
2294{
2295 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2296 if (!gl)
2297 return;
2298 gl->genVertexArrays(n, arrays);
2299}
2300
2301GLboolean glwIsVertexArray (GLuint array)
2302{
2303 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2304 if (!gl)
2305 return (GLboolean)0;
2306 return gl->isVertexArray(array);
2307}
2308
2309void glwTexBuffer (GLenum target, GLenum internalformat, GLuint buffer)
2310{
2311 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2312 if (!gl)
2313 return;
2314 gl->texBuffer(target, internalformat, buffer);
2315}
2316
2317void glwPrimitiveRestartIndex (GLuint index)
2318{
2319 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2320 if (!gl)
2321 return;
2322 gl->primitiveRestartIndex(index);
2323}
2324
2325void glwCopyBufferSubData (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
2326{
2327 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2328 if (!gl)
2329 return;
2330 gl->copyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size);
2331}
2332
2333void glwDrawArraysInstanced (GLenum mode, GLint first, GLsizei count, GLsizei instancecount)
2334{
2335 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2336 if (!gl)
2337 return;
2338 gl->drawArraysInstanced(mode, first, count, instancecount);
2339}
2340
2341void glwDrawElementsInstanced (GLenum mode, GLsizei count, GLenum type, const GLvoid* indices, GLsizei instancecount)
2342{
2343 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2344 if (!gl)
2345 return;
2346 gl->drawElementsInstanced(mode, count, type, indices, instancecount);
2347}
2348
2349void glwGetUniformIndices (GLuint program, GLsizei uniformCount, const GLchar* const* uniformNames, GLuint* uniformIndices)
2350{
2351 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2352 if (!gl)
2353 return;
2354 gl->getUniformIndices(program, uniformCount, uniformNames, uniformIndices);
2355}
2356
2357void glwGetActiveUniformsiv (GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params)
2358{
2359 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2360 if (!gl)
2361 return;
2362 gl->getActiveUniformsiv(program, uniformCount, uniformIndices, pname, params);
2363}
2364
2365void glwGetActiveUniformName (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformName)
2366{
2367 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2368 if (!gl)
2369 return;
2370 gl->getActiveUniformName(program, uniformIndex, bufSize, length, uniformName);
2371}
2372
2373GLuint glwGetUniformBlockIndex (GLuint program, const GLchar* uniformBlockName)
2374{
2375 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2376 if (!gl)
2377 return (GLuint)0;
2378 return gl->getUniformBlockIndex(program, uniformBlockName);
2379}
2380
2381void glwGetActiveUniformBlockiv (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params)
2382{
2383 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2384 if (!gl)
2385 return;
2386 gl->getActiveUniformBlockiv(program, uniformBlockIndex, pname, params);
2387}
2388
2389void glwGetActiveUniformBlockName (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName)
2390{
2391 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2392 if (!gl)
2393 return;
2394 gl->getActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName);
2395}
2396
2397void glwUniformBlockBinding (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding)
2398{
2399 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2400 if (!gl)
2401 return;
2402 gl->uniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding);
2403}
2404
2405void glwGetInteger64i_v (GLenum target, GLuint index, GLint64* data)
2406{
2407 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2408 if (!gl)
2409 return;
2410 gl->getInteger64i_v(target, index, data);
2411}
2412
2413void glwGetBufferParameteri64v (GLenum target, GLenum pname, GLint64* params)
2414{
2415 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2416 if (!gl)
2417 return;
2418 gl->getBufferParameteri64v(target, pname, params);
2419}
2420
2421void glwFramebufferTexture (GLenum target, GLenum attachment, GLuint texture, GLint level)
2422{
2423 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2424 if (!gl)
2425 return;
2426 gl->framebufferTexture(target, attachment, texture, level);
2427}
2428
2429void glwDrawElementsBaseVertex (GLenum mode, GLsizei count, GLenum type, const GLvoid* indices, GLint basevertex)
2430{
2431 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2432 if (!gl)
2433 return;
2434 gl->drawElementsBaseVertex(mode, count, type, indices, basevertex);
2435}
2436
2437void glwDrawRangeElementsBaseVertex (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid* indices, GLint basevertex)
2438{
2439 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2440 if (!gl)
2441 return;
2442 gl->drawRangeElementsBaseVertex(mode, start, end, count, type, indices, basevertex);
2443}
2444
2445void glwDrawElementsInstancedBaseVertex (GLenum mode, GLsizei count, GLenum type, const GLvoid* indices, GLsizei instancecount, GLint basevertex)
2446{
2447 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2448 if (!gl)
2449 return;
2450 gl->drawElementsInstancedBaseVertex(mode, count, type, indices, instancecount, basevertex);
2451}
2452
2453void glwMultiDrawElementsBaseVertex (GLenum mode, const GLsizei* count, GLenum type, const GLvoid* const* indices, GLsizei drawcount, const GLint* basevertex)
2454{
2455 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2456 if (!gl)
2457 return;
2458 gl->multiDrawElementsBaseVertex(mode, count, type, indices, drawcount, basevertex);
2459}
2460
2461void glwProvokingVertex (GLenum mode)
2462{
2463 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2464 if (!gl)
2465 return;
2466 gl->provokingVertex(mode);
2467}
2468
2469GLsync glwFenceSync (GLenum condition, GLbitfield flags)
2470{
2471 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2472 if (!gl)
2473 return (GLsync)0;
2474 return gl->fenceSync(condition, flags);
2475}
2476
2477GLboolean glwIsSync (GLsync sync)
2478{
2479 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2480 if (!gl)
2481 return (GLboolean)0;
2482 return gl->isSync(sync);
2483}
2484
2485void glwDeleteSync (GLsync sync)
2486{
2487 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2488 if (!gl)
2489 return;
2490 gl->deleteSync(sync);
2491}
2492
2493GLenum glwClientWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout)
2494{
2495 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2496 if (!gl)
2497 return (GLenum)0;
2498 return gl->clientWaitSync(sync, flags, timeout);
2499}
2500
2501void glwWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout)
2502{
2503 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2504 if (!gl)
2505 return;
2506 gl->waitSync(sync, flags, timeout);
2507}
2508
2509void glwGetInteger64v (GLenum pname, GLint64* params)
2510{
2511 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2512 if (!gl)
2513 return;
2514 gl->getInteger64v(pname, params);
2515}
2516
2517void glwGetSynciv (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint* values)
2518{
2519 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2520 if (!gl)
2521 return;
2522 gl->getSynciv(sync, pname, bufSize, length, values);
2523}
2524
2525void glwTexImage2DMultisample (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)
2526{
2527 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2528 if (!gl)
2529 return;
2530 gl->texImage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations);
2531}
2532
2533void glwTexImage3DMultisample (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)
2534{
2535 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2536 if (!gl)
2537 return;
2538 gl->texImage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations);
2539}
2540
2541void glwGetMultisamplefv (GLenum pname, GLuint index, GLfloat* val)
2542{
2543 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2544 if (!gl)
2545 return;
2546 gl->getMultisamplefv(pname, index, val);
2547}
2548
2549void glwSampleMaski (GLuint index, GLbitfield mask)
2550{
2551 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2552 if (!gl)
2553 return;
2554 gl->sampleMaski(index, mask);
2555}
2556
2557void glwVertexAttribDivisor (GLuint index, GLuint divisor)
2558{
2559 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2560 if (!gl)
2561 return;
2562 gl->vertexAttribDivisor(index, divisor);
2563}
2564
2565void glwBindFragDataLocationIndexed (GLuint program, GLuint colorNumber, GLuint index, const GLchar* name)
2566{
2567 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2568 if (!gl)
2569 return;
2570 gl->bindFragDataLocationIndexed(program, colorNumber, index, name);
2571}
2572
2573GLint glwGetFragDataIndex (GLuint program, const GLchar* name)
2574{
2575 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2576 if (!gl)
2577 return (GLint)0;
2578 return gl->getFragDataIndex(program, name);
2579}
2580
2581void glwGenSamplers (GLsizei count, GLuint* samplers)
2582{
2583 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2584 if (!gl)
2585 return;
2586 gl->genSamplers(count, samplers);
2587}
2588
2589void glwDeleteSamplers (GLsizei count, const GLuint* samplers)
2590{
2591 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2592 if (!gl)
2593 return;
2594 gl->deleteSamplers(count, samplers);
2595}
2596
2597GLboolean glwIsSampler (GLuint sampler)
2598{
2599 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2600 if (!gl)
2601 return (GLboolean)0;
2602 return gl->isSampler(sampler);
2603}
2604
2605void glwBindSampler (GLuint unit, GLuint sampler)
2606{
2607 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2608 if (!gl)
2609 return;
2610 gl->bindSampler(unit, sampler);
2611}
2612
2613void glwSamplerParameteri (GLuint sampler, GLenum pname, GLint param)
2614{
2615 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2616 if (!gl)
2617 return;
2618 gl->samplerParameteri(sampler, pname, param);
2619}
2620
2621void glwSamplerParameteriv (GLuint sampler, GLenum pname, const GLint* param)
2622{
2623 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2624 if (!gl)
2625 return;
2626 gl->samplerParameteriv(sampler, pname, param);
2627}
2628
2629void glwSamplerParameterf (GLuint sampler, GLenum pname, GLfloat param)
2630{
2631 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2632 if (!gl)
2633 return;
2634 gl->samplerParameterf(sampler, pname, param);
2635}
2636
2637void glwSamplerParameterfv (GLuint sampler, GLenum pname, const GLfloat* param)
2638{
2639 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2640 if (!gl)
2641 return;
2642 gl->samplerParameterfv(sampler, pname, param);
2643}
2644
2645void glwSamplerParameterIiv (GLuint sampler, GLenum pname, const GLint* param)
2646{
2647 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2648 if (!gl)
2649 return;
2650 gl->samplerParameterIiv(sampler, pname, param);
2651}
2652
2653void glwSamplerParameterIuiv (GLuint sampler, GLenum pname, const GLuint* param)
2654{
2655 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2656 if (!gl)
2657 return;
2658 gl->samplerParameterIuiv(sampler, pname, param);
2659}
2660
2661void glwGetSamplerParameteriv (GLuint sampler, GLenum pname, GLint* params)
2662{
2663 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2664 if (!gl)
2665 return;
2666 gl->getSamplerParameteriv(sampler, pname, params);
2667}
2668
2669void glwGetSamplerParameterIiv (GLuint sampler, GLenum pname, GLint* params)
2670{
2671 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2672 if (!gl)
2673 return;
2674 gl->getSamplerParameterIiv(sampler, pname, params);
2675}
2676
2677void glwGetSamplerParameterfv (GLuint sampler, GLenum pname, GLfloat* params)
2678{
2679 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2680 if (!gl)
2681 return;
2682 gl->getSamplerParameterfv(sampler, pname, params);
2683}
2684
2685void glwGetSamplerParameterIuiv (GLuint sampler, GLenum pname, GLuint* params)
2686{
2687 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2688 if (!gl)
2689 return;
2690 gl->getSamplerParameterIuiv(sampler, pname, params);
2691}
2692
2693void glwQueryCounter (GLuint id, GLenum target)
2694{
2695 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2696 if (!gl)
2697 return;
2698 gl->queryCounter(id, target);
2699}
2700
2701void glwGetQueryObjecti64v (GLuint id, GLenum pname, GLint64* params)
2702{
2703 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2704 if (!gl)
2705 return;
2706 gl->getQueryObjecti64v(id, pname, params);
2707}
2708
2709void glwGetQueryObjectui64v (GLuint id, GLenum pname, GLuint64* params)
2710{
2711 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2712 if (!gl)
2713 return;
2714 gl->getQueryObjectui64v(id, pname, params);
2715}
2716
2717void glwVertexAttribP1ui (GLuint index, GLenum type, GLboolean normalized, GLuint value)
2718{
2719 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2720 if (!gl)
2721 return;
2722 gl->vertexAttribP1ui(index, type, normalized, value);
2723}
2724
2725void glwVertexAttribP1uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint* value)
2726{
2727 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2728 if (!gl)
2729 return;
2730 gl->vertexAttribP1uiv(index, type, normalized, value);
2731}
2732
2733void glwVertexAttribP2ui (GLuint index, GLenum type, GLboolean normalized, GLuint value)
2734{
2735 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2736 if (!gl)
2737 return;
2738 gl->vertexAttribP2ui(index, type, normalized, value);
2739}
2740
2741void glwVertexAttribP2uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint* value)
2742{
2743 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2744 if (!gl)
2745 return;
2746 gl->vertexAttribP2uiv(index, type, normalized, value);
2747}
2748
2749void glwVertexAttribP3ui (GLuint index, GLenum type, GLboolean normalized, GLuint value)
2750{
2751 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2752 if (!gl)
2753 return;
2754 gl->vertexAttribP3ui(index, type, normalized, value);
2755}
2756
2757void glwVertexAttribP3uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint* value)
2758{
2759 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2760 if (!gl)
2761 return;
2762 gl->vertexAttribP3uiv(index, type, normalized, value);
2763}
2764
2765void glwVertexAttribP4ui (GLuint index, GLenum type, GLboolean normalized, GLuint value)
2766{
2767 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2768 if (!gl)
2769 return;
2770 gl->vertexAttribP4ui(index, type, normalized, value);
2771}
2772
2773void glwVertexAttribP4uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint* value)
2774{
2775 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2776 if (!gl)
2777 return;
2778 gl->vertexAttribP4uiv(index, type, normalized, value);
2779}
2780
2781void glwBlendEquationi (GLuint buf, GLenum mode)
2782{
2783 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2784 if (!gl)
2785 return;
2786 gl->blendEquationi(buf, mode);
2787}
2788
2789void glwBlendEquationSeparatei (GLuint buf, GLenum modeRGB, GLenum modeAlpha)
2790{
2791 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2792 if (!gl)
2793 return;
2794 gl->blendEquationSeparatei(buf, modeRGB, modeAlpha);
2795}
2796
2797void glwBlendFunci (GLuint buf, GLenum src, GLenum dst)
2798{
2799 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2800 if (!gl)
2801 return;
2802 gl->blendFunci(buf, src, dst);
2803}
2804
2805void glwBlendFuncSeparatei (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
2806{
2807 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2808 if (!gl)
2809 return;
2810 gl->blendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha);
2811}
2812
2813void glwDrawArraysIndirect (GLenum mode, const GLvoid* indirect)
2814{
2815 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2816 if (!gl)
2817 return;
2818 gl->drawArraysIndirect(mode, indirect);
2819}
2820
2821void glwDrawElementsIndirect (GLenum mode, GLenum type, const GLvoid* indirect)
2822{
2823 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2824 if (!gl)
2825 return;
2826 gl->drawElementsIndirect(mode, type, indirect);
2827}
2828
2829void glwUniform1d (GLint location, GLdouble x)
2830{
2831 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2832 if (!gl)
2833 return;
2834 gl->uniform1d(location, x);
2835}
2836
2837void glwUniform2d (GLint location, GLdouble x, GLdouble y)
2838{
2839 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2840 if (!gl)
2841 return;
2842 gl->uniform2d(location, x, y);
2843}
2844
2845void glwUniform3d (GLint location, GLdouble x, GLdouble y, GLdouble z)
2846{
2847 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2848 if (!gl)
2849 return;
2850 gl->uniform3d(location, x, y, z);
2851}
2852
2853void glwUniform4d (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
2854{
2855 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2856 if (!gl)
2857 return;
2858 gl->uniform4d(location, x, y, z, w);
2859}
2860
2861void glwUniform1dv (GLint location, GLsizei count, const GLdouble* value)
2862{
2863 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2864 if (!gl)
2865 return;
2866 gl->uniform1dv(location, count, value);
2867}
2868
2869void glwUniform2dv (GLint location, GLsizei count, const GLdouble* value)
2870{
2871 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2872 if (!gl)
2873 return;
2874 gl->uniform2dv(location, count, value);
2875}
2876
2877void glwUniform3dv (GLint location, GLsizei count, const GLdouble* value)
2878{
2879 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2880 if (!gl)
2881 return;
2882 gl->uniform3dv(location, count, value);
2883}
2884
2885void glwUniform4dv (GLint location, GLsizei count, const GLdouble* value)
2886{
2887 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2888 if (!gl)
2889 return;
2890 gl->uniform4dv(location, count, value);
2891}
2892
2893void glwUniformMatrix2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
2894{
2895 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2896 if (!gl)
2897 return;
2898 gl->uniformMatrix2dv(location, count, transpose, value);
2899}
2900
2901void glwUniformMatrix3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
2902{
2903 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2904 if (!gl)
2905 return;
2906 gl->uniformMatrix3dv(location, count, transpose, value);
2907}
2908
2909void glwUniformMatrix4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
2910{
2911 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2912 if (!gl)
2913 return;
2914 gl->uniformMatrix4dv(location, count, transpose, value);
2915}
2916
2917void glwUniformMatrix2x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
2918{
2919 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2920 if (!gl)
2921 return;
2922 gl->uniformMatrix2x3dv(location, count, transpose, value);
2923}
2924
2925void glwUniformMatrix2x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
2926{
2927 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2928 if (!gl)
2929 return;
2930 gl->uniformMatrix2x4dv(location, count, transpose, value);
2931}
2932
2933void glwUniformMatrix3x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
2934{
2935 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2936 if (!gl)
2937 return;
2938 gl->uniformMatrix3x2dv(location, count, transpose, value);
2939}
2940
2941void glwUniformMatrix3x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
2942{
2943 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2944 if (!gl)
2945 return;
2946 gl->uniformMatrix3x4dv(location, count, transpose, value);
2947}
2948
2949void glwUniformMatrix4x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
2950{
2951 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2952 if (!gl)
2953 return;
2954 gl->uniformMatrix4x2dv(location, count, transpose, value);
2955}
2956
2957void glwUniformMatrix4x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
2958{
2959 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2960 if (!gl)
2961 return;
2962 gl->uniformMatrix4x3dv(location, count, transpose, value);
2963}
2964
2965void glwGetUniformdv (GLuint program, GLint location, GLdouble* params)
2966{
2967 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2968 if (!gl)
2969 return;
2970 gl->getUniformdv(program, location, params);
2971}
2972
2973void glwMinSampleShading (GLfloat value)
2974{
2975 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2976 if (!gl)
2977 return;
2978 gl->minSampleShading(value);
2979}
2980
2981GLint glwGetSubroutineUniformLocation (GLuint program, GLenum shadertype, const GLchar* name)
2982{
2983 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2984 if (!gl)
2985 return (GLint)0;
2986 return gl->getSubroutineUniformLocation(program, shadertype, name);
2987}
2988
2989GLuint glwGetSubroutineIndex (GLuint program, GLenum shadertype, const GLchar* name)
2990{
2991 const glw::Functions* gl = glw::getCurrentThreadFunctions();
2992 if (!gl)
2993 return (GLuint)0;
2994 return gl->getSubroutineIndex(program, shadertype, name);
2995}
2996
2997void glwGetActiveSubroutineUniformiv (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint* values)
2998{
2999 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3000 if (!gl)
3001 return;
3002 gl->getActiveSubroutineUniformiv(program, shadertype, index, pname, values);
3003}
3004
3005void glwGetActiveSubroutineUniformName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei* length, GLchar* name)
3006{
3007 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3008 if (!gl)
3009 return;
3010 gl->getActiveSubroutineUniformName(program, shadertype, index, bufsize, length, name);
3011}
3012
3013void glwGetActiveSubroutineName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei* length, GLchar* name)
3014{
3015 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3016 if (!gl)
3017 return;
3018 gl->getActiveSubroutineName(program, shadertype, index, bufsize, length, name);
3019}
3020
3021void glwUniformSubroutinesuiv (GLenum shadertype, GLsizei count, const GLuint* indices)
3022{
3023 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3024 if (!gl)
3025 return;
3026 gl->uniformSubroutinesuiv(shadertype, count, indices);
3027}
3028
3029void glwGetUniformSubroutineuiv (GLenum shadertype, GLint location, GLuint* params)
3030{
3031 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3032 if (!gl)
3033 return;
3034 gl->getUniformSubroutineuiv(shadertype, location, params);
3035}
3036
3037void glwGetProgramStageiv (GLuint program, GLenum shadertype, GLenum pname, GLint* values)
3038{
3039 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3040 if (!gl)
3041 return;
3042 gl->getProgramStageiv(program, shadertype, pname, values);
3043}
3044
3045void glwPatchParameteri (GLenum pname, GLint value)
3046{
3047 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3048 if (!gl)
3049 return;
3050 gl->patchParameteri(pname, value);
3051}
3052
3053void glwPatchParameterfv (GLenum pname, const GLfloat* values)
3054{
3055 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3056 if (!gl)
3057 return;
3058 gl->patchParameterfv(pname, values);
3059}
3060
3061void glwBindTransformFeedback (GLenum target, GLuint id)
3062{
3063 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3064 if (!gl)
3065 return;
3066 gl->bindTransformFeedback(target, id);
3067}
3068
3069void glwDeleteTransformFeedbacks (GLsizei n, const GLuint* ids)
3070{
3071 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3072 if (!gl)
3073 return;
3074 gl->deleteTransformFeedbacks(n, ids);
3075}
3076
3077void glwGenTransformFeedbacks (GLsizei n, GLuint* ids)
3078{
3079 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3080 if (!gl)
3081 return;
3082 gl->genTransformFeedbacks(n, ids);
3083}
3084
3085GLboolean glwIsTransformFeedback (GLuint id)
3086{
3087 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3088 if (!gl)
3089 return (GLboolean)0;
3090 return gl->isTransformFeedback(id);
3091}
3092
3093void glwPauseTransformFeedback ()
3094{
3095 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3096 if (!gl)
3097 return;
3098 gl->pauseTransformFeedback();
3099}
3100
3101void glwResumeTransformFeedback ()
3102{
3103 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3104 if (!gl)
3105 return;
3106 gl->resumeTransformFeedback();
3107}
3108
3109void glwDrawTransformFeedback (GLenum mode, GLuint id)
3110{
3111 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3112 if (!gl)
3113 return;
3114 gl->drawTransformFeedback(mode, id);
3115}
3116
3117void glwDrawTransformFeedbackStream (GLenum mode, GLuint id, GLuint stream)
3118{
3119 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3120 if (!gl)
3121 return;
3122 gl->drawTransformFeedbackStream(mode, id, stream);
3123}
3124
3125void glwBeginQueryIndexed (GLenum target, GLuint index, GLuint id)
3126{
3127 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3128 if (!gl)
3129 return;
3130 gl->beginQueryIndexed(target, index, id);
3131}
3132
3133void glwEndQueryIndexed (GLenum target, GLuint index)
3134{
3135 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3136 if (!gl)
3137 return;
3138 gl->endQueryIndexed(target, index);
3139}
3140
3141void glwGetQueryIndexediv (GLenum target, GLuint index, GLenum pname, GLint* params)
3142{
3143 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3144 if (!gl)
3145 return;
3146 gl->getQueryIndexediv(target, index, pname, params);
3147}
3148
3149void glwReleaseShaderCompiler ()
3150{
3151 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3152 if (!gl)
3153 return;
3154 gl->releaseShaderCompiler();
3155}
3156
3157void glwShaderBinary (GLsizei count, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length)
3158{
3159 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3160 if (!gl)
3161 return;
3162 gl->shaderBinary(count, shaders, binaryformat, binary, length);
3163}
3164
3165void glwGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision)
3166{
3167 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3168 if (!gl)
3169 return;
3170 gl->getShaderPrecisionFormat(shadertype, precisiontype, range, precision);
3171}
3172
3173void glwDepthRangef (GLfloat n, GLfloat f)
3174{
3175 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3176 if (!gl)
3177 return;
3178 gl->depthRangef(n, f);
3179}
3180
3181void glwClearDepthf (GLfloat d)
3182{
3183 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3184 if (!gl)
3185 return;
3186 gl->clearDepthf(d);
3187}
3188
3189void glwGetProgramBinary (GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, GLvoid* binary)
3190{
3191 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3192 if (!gl)
3193 return;
3194 gl->getProgramBinary(program, bufSize, length, binaryFormat, binary);
3195}
3196
3197void glwProgramBinary (GLuint program, GLenum binaryFormat, const GLvoid* binary, GLsizei length)
3198{
3199 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3200 if (!gl)
3201 return;
3202 gl->programBinary(program, binaryFormat, binary, length);
3203}
3204
3205void glwProgramParameteri (GLuint program, GLenum pname, GLint value)
3206{
3207 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3208 if (!gl)
3209 return;
3210 gl->programParameteri(program, pname, value);
3211}
3212
3213void glwUseProgramStages (GLuint pipeline, GLbitfield stages, GLuint program)
3214{
3215 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3216 if (!gl)
3217 return;
3218 gl->useProgramStages(pipeline, stages, program);
3219}
3220
3221void glwActiveShaderProgram (GLuint pipeline, GLuint program)
3222{
3223 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3224 if (!gl)
3225 return;
3226 gl->activeShaderProgram(pipeline, program);
3227}
3228
3229GLuint glwCreateShaderProgramv (GLenum type, GLsizei count, const GLchar* const* strings)
3230{
3231 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3232 if (!gl)
3233 return (GLuint)0;
3234 return gl->createShaderProgramv(type, count, strings);
3235}
3236
3237void glwBindProgramPipeline (GLuint pipeline)
3238{
3239 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3240 if (!gl)
3241 return;
3242 gl->bindProgramPipeline(pipeline);
3243}
3244
3245void glwDeleteProgramPipelines (GLsizei n, const GLuint* pipelines)
3246{
3247 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3248 if (!gl)
3249 return;
3250 gl->deleteProgramPipelines(n, pipelines);
3251}
3252
3253void glwGenProgramPipelines (GLsizei n, GLuint* pipelines)
3254{
3255 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3256 if (!gl)
3257 return;
3258 gl->genProgramPipelines(n, pipelines);
3259}
3260
3261GLboolean glwIsProgramPipeline (GLuint pipeline)
3262{
3263 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3264 if (!gl)
3265 return (GLboolean)0;
3266 return gl->isProgramPipeline(pipeline);
3267}
3268
3269void glwGetProgramPipelineiv (GLuint pipeline, GLenum pname, GLint* params)
3270{
3271 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3272 if (!gl)
3273 return;
3274 gl->getProgramPipelineiv(pipeline, pname, params);
3275}
3276
3277void glwProgramUniform1i (GLuint program, GLint location, GLint v0)
3278{
3279 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3280 if (!gl)
3281 return;
3282 gl->programUniform1i(program, location, v0);
3283}
3284
3285void glwProgramUniform1iv (GLuint program, GLint location, GLsizei count, const GLint* value)
3286{
3287 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3288 if (!gl)
3289 return;
3290 gl->programUniform1iv(program, location, count, value);
3291}
3292
3293void glwProgramUniform1f (GLuint program, GLint location, GLfloat v0)
3294{
3295 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3296 if (!gl)
3297 return;
3298 gl->programUniform1f(program, location, v0);
3299}
3300
3301void glwProgramUniform1fv (GLuint program, GLint location, GLsizei count, const GLfloat* value)
3302{
3303 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3304 if (!gl)
3305 return;
3306 gl->programUniform1fv(program, location, count, value);
3307}
3308
3309void glwProgramUniform1d (GLuint program, GLint location, GLdouble v0)
3310{
3311 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3312 if (!gl)
3313 return;
3314 gl->programUniform1d(program, location, v0);
3315}
3316
3317void glwProgramUniform1dv (GLuint program, GLint location, GLsizei count, const GLdouble* value)
3318{
3319 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3320 if (!gl)
3321 return;
3322 gl->programUniform1dv(program, location, count, value);
3323}
3324
3325void glwProgramUniform1ui (GLuint program, GLint location, GLuint v0)
3326{
3327 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3328 if (!gl)
3329 return;
3330 gl->programUniform1ui(program, location, v0);
3331}
3332
3333void glwProgramUniform1uiv (GLuint program, GLint location, GLsizei count, const GLuint* value)
3334{
3335 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3336 if (!gl)
3337 return;
3338 gl->programUniform1uiv(program, location, count, value);
3339}
3340
3341void glwProgramUniform2i (GLuint program, GLint location, GLint v0, GLint v1)
3342{
3343 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3344 if (!gl)
3345 return;
3346 gl->programUniform2i(program, location, v0, v1);
3347}
3348
3349void glwProgramUniform2iv (GLuint program, GLint location, GLsizei count, const GLint* value)
3350{
3351 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3352 if (!gl)
3353 return;
3354 gl->programUniform2iv(program, location, count, value);
3355}
3356
3357void glwProgramUniform2f (GLuint program, GLint location, GLfloat v0, GLfloat v1)
3358{
3359 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3360 if (!gl)
3361 return;
3362 gl->programUniform2f(program, location, v0, v1);
3363}
3364
3365void glwProgramUniform2fv (GLuint program, GLint location, GLsizei count, const GLfloat* value)
3366{
3367 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3368 if (!gl)
3369 return;
3370 gl->programUniform2fv(program, location, count, value);
3371}
3372
3373void glwProgramUniform2d (GLuint program, GLint location, GLdouble v0, GLdouble v1)
3374{
3375 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3376 if (!gl)
3377 return;
3378 gl->programUniform2d(program, location, v0, v1);
3379}
3380
3381void glwProgramUniform2dv (GLuint program, GLint location, GLsizei count, const GLdouble* value)
3382{
3383 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3384 if (!gl)
3385 return;
3386 gl->programUniform2dv(program, location, count, value);
3387}
3388
3389void glwProgramUniform2ui (GLuint program, GLint location, GLuint v0, GLuint v1)
3390{
3391 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3392 if (!gl)
3393 return;
3394 gl->programUniform2ui(program, location, v0, v1);
3395}
3396
3397void glwProgramUniform2uiv (GLuint program, GLint location, GLsizei count, const GLuint* value)
3398{
3399 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3400 if (!gl)
3401 return;
3402 gl->programUniform2uiv(program, location, count, value);
3403}
3404
3405void glwProgramUniform3i (GLuint program, GLint location, GLint v0, GLint v1, GLint v2)
3406{
3407 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3408 if (!gl)
3409 return;
3410 gl->programUniform3i(program, location, v0, v1, v2);
3411}
3412
3413void glwProgramUniform3iv (GLuint program, GLint location, GLsizei count, const GLint* value)
3414{
3415 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3416 if (!gl)
3417 return;
3418 gl->programUniform3iv(program, location, count, value);
3419}
3420
3421void glwProgramUniform3f (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
3422{
3423 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3424 if (!gl)
3425 return;
3426 gl->programUniform3f(program, location, v0, v1, v2);
3427}
3428
3429void glwProgramUniform3fv (GLuint program, GLint location, GLsizei count, const GLfloat* value)
3430{
3431 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3432 if (!gl)
3433 return;
3434 gl->programUniform3fv(program, location, count, value);
3435}
3436
3437void glwProgramUniform3d (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2)
3438{
3439 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3440 if (!gl)
3441 return;
3442 gl->programUniform3d(program, location, v0, v1, v2);
3443}
3444
3445void glwProgramUniform3dv (GLuint program, GLint location, GLsizei count, const GLdouble* value)
3446{
3447 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3448 if (!gl)
3449 return;
3450 gl->programUniform3dv(program, location, count, value);
3451}
3452
3453void glwProgramUniform3ui (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2)
3454{
3455 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3456 if (!gl)
3457 return;
3458 gl->programUniform3ui(program, location, v0, v1, v2);
3459}
3460
3461void glwProgramUniform3uiv (GLuint program, GLint location, GLsizei count, const GLuint* value)
3462{
3463 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3464 if (!gl)
3465 return;
3466 gl->programUniform3uiv(program, location, count, value);
3467}
3468
3469void glwProgramUniform4i (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
3470{
3471 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3472 if (!gl)
3473 return;
3474 gl->programUniform4i(program, location, v0, v1, v2, v3);
3475}
3476
3477void glwProgramUniform4iv (GLuint program, GLint location, GLsizei count, const GLint* value)
3478{
3479 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3480 if (!gl)
3481 return;
3482 gl->programUniform4iv(program, location, count, value);
3483}
3484
3485void glwProgramUniform4f (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
3486{
3487 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3488 if (!gl)
3489 return;
3490 gl->programUniform4f(program, location, v0, v1, v2, v3);
3491}
3492
3493void glwProgramUniform4fv (GLuint program, GLint location, GLsizei count, const GLfloat* value)
3494{
3495 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3496 if (!gl)
3497 return;
3498 gl->programUniform4fv(program, location, count, value);
3499}
3500
3501void glwProgramUniform4d (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3)
3502{
3503 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3504 if (!gl)
3505 return;
3506 gl->programUniform4d(program, location, v0, v1, v2, v3);
3507}
3508
3509void glwProgramUniform4dv (GLuint program, GLint location, GLsizei count, const GLdouble* value)
3510{
3511 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3512 if (!gl)
3513 return;
3514 gl->programUniform4dv(program, location, count, value);
3515}
3516
3517void glwProgramUniform4ui (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
3518{
3519 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3520 if (!gl)
3521 return;
3522 gl->programUniform4ui(program, location, v0, v1, v2, v3);
3523}
3524
3525void glwProgramUniform4uiv (GLuint program, GLint location, GLsizei count, const GLuint* value)
3526{
3527 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3528 if (!gl)
3529 return;
3530 gl->programUniform4uiv(program, location, count, value);
3531}
3532
3533void glwProgramUniformMatrix2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
3534{
3535 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3536 if (!gl)
3537 return;
3538 gl->programUniformMatrix2fv(program, location, count, transpose, value);
3539}
3540
3541void glwProgramUniformMatrix3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
3542{
3543 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3544 if (!gl)
3545 return;
3546 gl->programUniformMatrix3fv(program, location, count, transpose, value);
3547}
3548
3549void glwProgramUniformMatrix4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
3550{
3551 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3552 if (!gl)
3553 return;
3554 gl->programUniformMatrix4fv(program, location, count, transpose, value);
3555}
3556
3557void glwProgramUniformMatrix2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
3558{
3559 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3560 if (!gl)
3561 return;
3562 gl->programUniformMatrix2dv(program, location, count, transpose, value);
3563}
3564
3565void glwProgramUniformMatrix3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
3566{
3567 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3568 if (!gl)
3569 return;
3570 gl->programUniformMatrix3dv(program, location, count, transpose, value);
3571}
3572
3573void glwProgramUniformMatrix4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
3574{
3575 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3576 if (!gl)
3577 return;
3578 gl->programUniformMatrix4dv(program, location, count, transpose, value);
3579}
3580
3581void glwProgramUniformMatrix2x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
3582{
3583 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3584 if (!gl)
3585 return;
3586 gl->programUniformMatrix2x3fv(program, location, count, transpose, value);
3587}
3588
3589void glwProgramUniformMatrix3x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
3590{
3591 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3592 if (!gl)
3593 return;
3594 gl->programUniformMatrix3x2fv(program, location, count, transpose, value);
3595}
3596
3597void glwProgramUniformMatrix2x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
3598{
3599 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3600 if (!gl)
3601 return;
3602 gl->programUniformMatrix2x4fv(program, location, count, transpose, value);
3603}
3604
3605void glwProgramUniformMatrix4x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
3606{
3607 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3608 if (!gl)
3609 return;
3610 gl->programUniformMatrix4x2fv(program, location, count, transpose, value);
3611}
3612
3613void glwProgramUniformMatrix3x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
3614{
3615 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3616 if (!gl)
3617 return;
3618 gl->programUniformMatrix3x4fv(program, location, count, transpose, value);
3619}
3620
3621void glwProgramUniformMatrix4x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
3622{
3623 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3624 if (!gl)
3625 return;
3626 gl->programUniformMatrix4x3fv(program, location, count, transpose, value);
3627}
3628
3629void glwProgramUniformMatrix2x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
3630{
3631 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3632 if (!gl)
3633 return;
3634 gl->programUniformMatrix2x3dv(program, location, count, transpose, value);
3635}
3636
3637void glwProgramUniformMatrix3x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
3638{
3639 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3640 if (!gl)
3641 return;
3642 gl->programUniformMatrix3x2dv(program, location, count, transpose, value);
3643}
3644
3645void glwProgramUniformMatrix2x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
3646{
3647 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3648 if (!gl)
3649 return;
3650 gl->programUniformMatrix2x4dv(program, location, count, transpose, value);
3651}
3652
3653void glwProgramUniformMatrix4x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
3654{
3655 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3656 if (!gl)
3657 return;
3658 gl->programUniformMatrix4x2dv(program, location, count, transpose, value);
3659}
3660
3661void glwProgramUniformMatrix3x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
3662{
3663 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3664 if (!gl)
3665 return;
3666 gl->programUniformMatrix3x4dv(program, location, count, transpose, value);
3667}
3668
3669void glwProgramUniformMatrix4x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble* value)
3670{
3671 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3672 if (!gl)
3673 return;
3674 gl->programUniformMatrix4x3dv(program, location, count, transpose, value);
3675}
3676
3677void glwValidateProgramPipeline (GLuint pipeline)
3678{
3679 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3680 if (!gl)
3681 return;
3682 gl->validateProgramPipeline(pipeline);
3683}
3684
3685void glwGetProgramPipelineInfoLog (GLuint pipeline, GLsizei bufSize, GLsizei* length, GLchar* infoLog)
3686{
3687 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3688 if (!gl)
3689 return;
3690 gl->getProgramPipelineInfoLog(pipeline, bufSize, length, infoLog);
3691}
3692
3693void glwVertexAttribL1d (GLuint index, GLdouble x)
3694{
3695 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3696 if (!gl)
3697 return;
3698 gl->vertexAttribL1d(index, x);
3699}
3700
3701void glwVertexAttribL2d (GLuint index, GLdouble x, GLdouble y)
3702{
3703 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3704 if (!gl)
3705 return;
3706 gl->vertexAttribL2d(index, x, y);
3707}
3708
3709void glwVertexAttribL3d (GLuint index, GLdouble x, GLdouble y, GLdouble z)
3710{
3711 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3712 if (!gl)
3713 return;
3714 gl->vertexAttribL3d(index, x, y, z);
3715}
3716
3717void glwVertexAttribL4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
3718{
3719 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3720 if (!gl)
3721 return;
3722 gl->vertexAttribL4d(index, x, y, z, w);
3723}
3724
3725void glwVertexAttribL1dv (GLuint index, const GLdouble* v)
3726{
3727 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3728 if (!gl)
3729 return;
3730 gl->vertexAttribL1dv(index, v);
3731}
3732
3733void glwVertexAttribL2dv (GLuint index, const GLdouble* v)
3734{
3735 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3736 if (!gl)
3737 return;
3738 gl->vertexAttribL2dv(index, v);
3739}
3740
3741void glwVertexAttribL3dv (GLuint index, const GLdouble* v)
3742{
3743 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3744 if (!gl)
3745 return;
3746 gl->vertexAttribL3dv(index, v);
3747}
3748
3749void glwVertexAttribL4dv (GLuint index, const GLdouble* v)
3750{
3751 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3752 if (!gl)
3753 return;
3754 gl->vertexAttribL4dv(index, v);
3755}
3756
3757void glwVertexAttribLPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid* pointer)
3758{
3759 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3760 if (!gl)
3761 return;
3762 gl->vertexAttribLPointer(index, size, type, stride, pointer);
3763}
3764
3765void glwGetVertexAttribLdv (GLuint index, GLenum pname, GLdouble* params)
3766{
3767 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3768 if (!gl)
3769 return;
3770 gl->getVertexAttribLdv(index, pname, params);
3771}
3772
3773void glwViewportArrayv (GLuint first, GLsizei count, const GLfloat* v)
3774{
3775 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3776 if (!gl)
3777 return;
3778 gl->viewportArrayv(first, count, v);
3779}
3780
3781void glwViewportIndexedf (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h)
3782{
3783 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3784 if (!gl)
3785 return;
3786 gl->viewportIndexedf(index, x, y, w, h);
3787}
3788
3789void glwViewportIndexedfv (GLuint index, const GLfloat* v)
3790{
3791 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3792 if (!gl)
3793 return;
3794 gl->viewportIndexedfv(index, v);
3795}
3796
3797void glwScissorArrayv (GLuint first, GLsizei count, const GLint* v)
3798{
3799 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3800 if (!gl)
3801 return;
3802 gl->scissorArrayv(first, count, v);
3803}
3804
3805void glwScissorIndexed (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height)
3806{
3807 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3808 if (!gl)
3809 return;
3810 gl->scissorIndexed(index, left, bottom, width, height);
3811}
3812
3813void glwScissorIndexedv (GLuint index, const GLint* v)
3814{
3815 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3816 if (!gl)
3817 return;
3818 gl->scissorIndexedv(index, v);
3819}
3820
3821void glwDepthRangeArrayv (GLuint first, GLsizei count, const GLdouble* v)
3822{
3823 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3824 if (!gl)
3825 return;
3826 gl->depthRangeArrayv(first, count, v);
3827}
3828
3829void glwDepthRangeIndexed (GLuint index, GLdouble n, GLdouble f)
3830{
3831 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3832 if (!gl)
3833 return;
3834 gl->depthRangeIndexed(index, n, f);
3835}
3836
3837void glwGetFloati_v (GLenum target, GLuint index, GLfloat* data)
3838{
3839 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3840 if (!gl)
3841 return;
3842 gl->getFloati_v(target, index, data);
3843}
3844
3845void glwGetDoublei_v (GLenum target, GLuint index, GLdouble* data)
3846{
3847 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3848 if (!gl)
3849 return;
3850 gl->getDoublei_v(target, index, data);
3851}
3852
3853void glwDrawArraysInstancedBaseInstance (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance)
3854{
3855 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3856 if (!gl)
3857 return;
3858 gl->drawArraysInstancedBaseInstance(mode, first, count, instancecount, baseinstance);
3859}
3860
3861void glwDrawElementsInstancedBaseInstance (GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei instancecount, GLuint baseinstance)
3862{
3863 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3864 if (!gl)
3865 return;
3866 gl->drawElementsInstancedBaseInstance(mode, count, type, indices, instancecount, baseinstance);
3867}
3868
3869void glwDrawElementsInstancedBaseVertexBaseInstance (GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance)
3870{
3871 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3872 if (!gl)
3873 return;
3874 gl->drawElementsInstancedBaseVertexBaseInstance(mode, count, type, indices, instancecount, basevertex, baseinstance);
3875}
3876
3877void glwDrawTransformFeedbackInstanced (GLenum mode, GLuint id, GLsizei instancecount)
3878{
3879 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3880 if (!gl)
3881 return;
3882 gl->drawTransformFeedbackInstanced(mode, id, instancecount);
3883}
3884
3885void glwDrawTransformFeedbackStreamInstanced (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount)
3886{
3887 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3888 if (!gl)
3889 return;
3890 gl->drawTransformFeedbackStreamInstanced(mode, id, stream, instancecount);
3891}
3892
3893void glwGetInternalformativ (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params)
3894{
3895 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3896 if (!gl)
3897 return;
3898 gl->getInternalformativ(target, internalformat, pname, bufSize, params);
3899}
3900
3901void glwGetActiveAtomicCounterBufferiv (GLuint program, GLuint bufferIndex, GLenum pname, GLint* params)
3902{
3903 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3904 if (!gl)
3905 return;
3906 gl->getActiveAtomicCounterBufferiv(program, bufferIndex, pname, params);
3907}
3908
3909void glwBindImageTexture (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format)
3910{
3911 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3912 if (!gl)
3913 return;
3914 gl->bindImageTexture(unit, texture, level, layered, layer, access, format);
3915}
3916
3917void glwMemoryBarrier (GLbitfield barriers)
3918{
3919 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3920 if (!gl)
3921 return;
3922 gl->memoryBarrier(barriers);
3923}
3924
3925void glwTexStorage1D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width)
3926{
3927 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3928 if (!gl)
3929 return;
3930 gl->texStorage1D(target, levels, internalformat, width);
3931}
3932
3933void glwTexStorage2D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
3934{
3935 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3936 if (!gl)
3937 return;
3938 gl->texStorage2D(target, levels, internalformat, width, height);
3939}
3940
3941void glwTexStorage3D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
3942{
3943 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3944 if (!gl)
3945 return;
3946 gl->texStorage3D(target, levels, internalformat, width, height, depth);
3947}
3948
3949void glwClearBufferData (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void* data)
3950{
3951 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3952 if (!gl)
3953 return;
3954 gl->clearBufferData(target, internalformat, format, type, data);
3955}
3956
3957void glwClearBufferSubData (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void* data)
3958{
3959 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3960 if (!gl)
3961 return;
3962 gl->clearBufferSubData(target, internalformat, offset, size, format, type, data);
3963}
3964
3965void glwDispatchCompute (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z)
3966{
3967 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3968 if (!gl)
3969 return;
3970 gl->dispatchCompute(num_groups_x, num_groups_y, num_groups_z);
3971}
3972
3973void glwDispatchComputeIndirect (GLintptr indirect)
3974{
3975 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3976 if (!gl)
3977 return;
3978 gl->dispatchComputeIndirect(indirect);
3979}
3980
3981void 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)
3982{
3983 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3984 if (!gl)
3985 return;
3986 gl->copyImageSubData(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth);
3987}
3988
3989void glwDebugMessageControl (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled)
3990{
3991 const glw::Functions* gl = glw::getCurrentThreadFunctions();
3992 if (!gl)
3993 return;
3994 gl->debugMessageControl(source, type, severity, count, ids, enabled);
3995}
3996
3997void glwDebugMessageInsert (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* buf)
3998{
3999 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4000 if (!gl)
4001 return;
4002 gl->debugMessageInsert(source, type, id, severity, length, buf);
4003}
4004
4005void glwDebugMessageCallback (GLDEBUGPROC callback, const void* userParam)
4006{
4007 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4008 if (!gl)
4009 return;
4010 gl->debugMessageCallback(callback, userParam);
4011}
4012
4013GLuint glwGetDebugMessageLog (GLuint count, GLsizei bufsize, GLenum* sources, GLenum* types, GLuint* ids, GLenum* severities, GLsizei* lengths, GLchar* messageLog)
4014{
4015 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4016 if (!gl)
4017 return (GLuint)0;
4018 return gl->getDebugMessageLog(count, bufsize, sources, types, ids, severities, lengths, messageLog);
4019}
4020
4021void glwPushDebugGroup (GLenum source, GLuint id, GLsizei length, const GLchar* message)
4022{
4023 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4024 if (!gl)
4025 return;
4026 gl->pushDebugGroup(source, id, length, message);
4027}
4028
4029void glwPopDebugGroup ()
4030{
4031 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4032 if (!gl)
4033 return;
4034 gl->popDebugGroup();
4035}
4036
4037void glwObjectLabel (GLenum identifier, GLuint name, GLsizei length, const GLchar* label)
4038{
4039 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4040 if (!gl)
4041 return;
4042 gl->objectLabel(identifier, name, length, label);
4043}
4044
4045void glwGetObjectLabel (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei* length, GLchar* label)
4046{
4047 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4048 if (!gl)
4049 return;
4050 gl->getObjectLabel(identifier, name, bufSize, length, label);
4051}
4052
4053void glwObjectPtrLabel (const void* ptr, GLsizei length, const GLchar* label)
4054{
4055 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4056 if (!gl)
4057 return;
4058 gl->objectPtrLabel(ptr, length, label);
4059}
4060
4061void glwGetObjectPtrLabel (const void* ptr, GLsizei bufSize, GLsizei* length, GLchar* label)
4062{
4063 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4064 if (!gl)
4065 return;
4066 gl->getObjectPtrLabel(ptr, bufSize, length, label);
4067}
4068
4069void glwFramebufferParameteri (GLenum target, GLenum pname, GLint param)
4070{
4071 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4072 if (!gl)
4073 return;
4074 gl->framebufferParameteri(target, pname, param);
4075}
4076
4077void glwGetFramebufferParameteriv (GLenum target, GLenum pname, GLint* params)
4078{
4079 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4080 if (!gl)
4081 return;
4082 gl->getFramebufferParameteriv(target, pname, params);
4083}
4084
4085void glwGetInternalformati64v (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64* params)
4086{
4087 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4088 if (!gl)
4089 return;
4090 gl->getInternalformati64v(target, internalformat, pname, bufSize, params);
4091}
4092
4093void glwInvalidateTexSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth)
4094{
4095 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4096 if (!gl)
4097 return;
4098 gl->invalidateTexSubImage(texture, level, xoffset, yoffset, zoffset, width, height, depth);
4099}
4100
4101void glwInvalidateTexImage (GLuint texture, GLint level)
4102{
4103 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4104 if (!gl)
4105 return;
4106 gl->invalidateTexImage(texture, level);
4107}
4108
4109void glwInvalidateBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr length)
4110{
4111 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4112 if (!gl)
4113 return;
4114 gl->invalidateBufferSubData(buffer, offset, length);
4115}
4116
4117void glwInvalidateBufferData (GLuint buffer)
4118{
4119 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4120 if (!gl)
4121 return;
4122 gl->invalidateBufferData(buffer);
4123}
4124
4125void glwInvalidateFramebuffer (GLenum target, GLsizei numAttachments, const GLenum* attachments)
4126{
4127 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4128 if (!gl)
4129 return;
4130 gl->invalidateFramebuffer(target, numAttachments, attachments);
4131}
4132
4133void glwInvalidateSubFramebuffer (GLenum target, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height)
4134{
4135 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4136 if (!gl)
4137 return;
4138 gl->invalidateSubFramebuffer(target, numAttachments, attachments, x, y, width, height);
4139}
4140
4141void glwMultiDrawArraysIndirect (GLenum mode, const void* indirect, GLsizei drawcount, GLsizei stride)
4142{
4143 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4144 if (!gl)
4145 return;
4146 gl->multiDrawArraysIndirect(mode, indirect, drawcount, stride);
4147}
4148
4149void glwMultiDrawElementsIndirect (GLenum mode, GLenum type, const void* indirect, GLsizei drawcount, GLsizei stride)
4150{
4151 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4152 if (!gl)
4153 return;
4154 gl->multiDrawElementsIndirect(mode, type, indirect, drawcount, stride);
4155}
4156
4157void glwGetProgramInterfaceiv (GLuint program, GLenum programInterface, GLenum pname, GLint* params)
4158{
4159 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4160 if (!gl)
4161 return;
4162 gl->getProgramInterfaceiv(program, programInterface, pname, params);
4163}
4164
4165GLuint glwGetProgramResourceIndex (GLuint program, GLenum programInterface, const GLchar* name)
4166{
4167 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4168 if (!gl)
4169 return (GLuint)0;
4170 return gl->getProgramResourceIndex(program, programInterface, name);
4171}
4172
4173void glwGetProgramResourceName (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei* length, GLchar* name)
4174{
4175 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4176 if (!gl)
4177 return;
4178 gl->getProgramResourceName(program, programInterface, index, bufSize, length, name);
4179}
4180
4181void glwGetProgramResourceiv (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum* props, GLsizei bufSize, GLsizei* length, GLint* params)
4182{
4183 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4184 if (!gl)
4185 return;
4186 gl->getProgramResourceiv(program, programInterface, index, propCount, props, bufSize, length, params);
4187}
4188
4189GLint glwGetProgramResourceLocation (GLuint program, GLenum programInterface, const GLchar* name)
4190{
4191 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4192 if (!gl)
4193 return (GLint)0;
4194 return gl->getProgramResourceLocation(program, programInterface, name);
4195}
4196
4197GLint glwGetProgramResourceLocationIndex (GLuint program, GLenum programInterface, const GLchar* name)
4198{
4199 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4200 if (!gl)
4201 return (GLint)0;
4202 return gl->getProgramResourceLocationIndex(program, programInterface, name);
4203}
4204
4205void glwShaderStorageBlockBinding (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding)
4206{
4207 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4208 if (!gl)
4209 return;
4210 gl->shaderStorageBlockBinding(program, storageBlockIndex, storageBlockBinding);
4211}
4212
4213void glwTexBufferRange (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size)
4214{
4215 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4216 if (!gl)
4217 return;
4218 gl->texBufferRange(target, internalformat, buffer, offset, size);
4219}
4220
4221void glwTexStorage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations)
4222{
4223 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4224 if (!gl)
4225 return;
4226 gl->texStorage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations);
4227}
4228
4229void glwTexStorage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations)
4230{
4231 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4232 if (!gl)
4233 return;
4234 gl->texStorage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations);
4235}
4236
4237void glwTextureView (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers)
4238{
4239 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4240 if (!gl)
4241 return;
4242 gl->textureView(texture, target, origtexture, internalformat, minlevel, numlevels, minlayer, numlayers);
4243}
4244
4245void glwBindVertexBuffer (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride)
4246{
4247 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4248 if (!gl)
4249 return;
4250 gl->bindVertexBuffer(bindingindex, buffer, offset, stride);
4251}
4252
4253void glwVertexAttribFormat (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)
4254{
4255 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4256 if (!gl)
4257 return;
4258 gl->vertexAttribFormat(attribindex, size, type, normalized, relativeoffset);
4259}
4260
4261void glwVertexAttribIFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
4262{
4263 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4264 if (!gl)
4265 return;
4266 gl->vertexAttribIFormat(attribindex, size, type, relativeoffset);
4267}
4268
4269void glwVertexAttribLFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset)
4270{
4271 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4272 if (!gl)
4273 return;
4274 gl->vertexAttribLFormat(attribindex, size, type, relativeoffset);
4275}
4276
4277void glwVertexAttribBinding (GLuint attribindex, GLuint bindingindex)
4278{
4279 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4280 if (!gl)
4281 return;
4282 gl->vertexAttribBinding(attribindex, bindingindex);
4283}
4284
4285void glwVertexBindingDivisor (GLuint bindingindex, GLuint divisor)
4286{
4287 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4288 if (!gl)
4289 return;
4290 gl->vertexBindingDivisor(bindingindex, divisor);
4291}
4292
4293void glwBufferStorage (GLenum target, GLsizeiptr size, const void* data, GLbitfield flags)
4294{
4295 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4296 if (!gl)
4297 return;
4298 gl->bufferStorage(target, size, data, flags);
4299}
4300
4301void glwClearTexImage (GLuint texture, GLint level, GLenum format, GLenum type, const void* data)
4302{
4303 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4304 if (!gl)
4305 return;
4306 gl->clearTexImage(texture, level, format, type, data);
4307}
4308
4309void glwClearTexSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void* data)
4310{
4311 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4312 if (!gl)
4313 return;
4314 gl->clearTexSubImage(texture, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data);
4315}
4316
4317void glwBindBuffersBase (GLenum target, GLuint first, GLsizei count, const GLuint* buffers)
4318{
4319 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4320 if (!gl)
4321 return;
4322 gl->bindBuffersBase(target, first, count, buffers);
4323}
4324
4325void glwBindBuffersRange (GLenum target, GLuint first, GLsizei count, const GLuint* buffers, const GLintptr* offsets, const GLsizeiptr* sizes)
4326{
4327 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4328 if (!gl)
4329 return;
4330 gl->bindBuffersRange(target, first, count, buffers, offsets, sizes);
4331}
4332
4333void glwBindTextures (GLuint first, GLsizei count, const GLuint* textures)
4334{
4335 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4336 if (!gl)
4337 return;
4338 gl->bindTextures(first, count, textures);
4339}
4340
4341void glwBindSamplers (GLuint first, GLsizei count, const GLuint* samplers)
4342{
4343 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4344 if (!gl)
4345 return;
4346 gl->bindSamplers(first, count, samplers);
4347}
4348
4349void glwBindImageTextures (GLuint first, GLsizei count, const GLuint* textures)
4350{
4351 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4352 if (!gl)
4353 return;
4354 gl->bindImageTextures(first, count, textures);
4355}
4356
4357void glwBindVertexBuffers (GLuint first, GLsizei count, const GLuint* buffers, const GLintptr* offsets, const GLsizei* strides)
4358{
4359 const glw::Functions* gl = glw::getCurrentThreadFunctions();
4360 if (!gl)
4361 return;
4362 gl->bindVertexBuffers(first, count, buffers, offsets, strides);
4363}