1 /* WARNING: This is auto-generated file. Do not modify, since changes will 2 * be lost! Modify the generating script instead. 3 */ 4 5 GLsync 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 13 void glwBlendBarrierKHR () 14 { 15 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 16 if (!gl) 17 return; 18 gl->blendBarrierKHR(); 19 } 20 21 void glwCullFace (GLenum mode) 22 { 23 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 24 if (!gl) 25 return; 26 gl->cullFace(mode); 27 } 28 29 void glwFrontFace (GLenum mode) 30 { 31 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 32 if (!gl) 33 return; 34 gl->frontFace(mode); 35 } 36 37 void 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 45 void glwLineWidth (GLfloat width) 46 { 47 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 48 if (!gl) 49 return; 50 gl->lineWidth(width); 51 } 52 53 void glwPointSize (GLfloat size) 54 { 55 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 56 if (!gl) 57 return; 58 gl->pointSize(size); 59 } 60 61 void 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 69 void 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 77 void 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 85 void 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 93 void 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 101 void 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 109 void 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 117 void 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 125 void glwDrawBuffer (GLenum mode) 126 { 127 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 128 if (!gl) 129 return; 130 gl->drawBuffer(mode); 131 } 132 133 void glwClear (GLbitfield mask) 134 { 135 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 136 if (!gl) 137 return; 138 gl->clear(mask); 139 } 140 141 void 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 149 void glwClearStencil (GLint s) 150 { 151 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 152 if (!gl) 153 return; 154 gl->clearStencil(s); 155 } 156 157 void glwClearDepth (GLdouble depth) 158 { 159 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 160 if (!gl) 161 return; 162 gl->clearDepth(depth); 163 } 164 165 void glwStencilMask (GLuint mask) 166 { 167 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 168 if (!gl) 169 return; 170 gl->stencilMask(mask); 171 } 172 173 void 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 181 void glwDepthMask (GLboolean flag) 182 { 183 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 184 if (!gl) 185 return; 186 gl->depthMask(flag); 187 } 188 189 void glwDisable (GLenum cap) 190 { 191 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 192 if (!gl) 193 return; 194 gl->disable(cap); 195 } 196 197 void glwEnable (GLenum cap) 198 { 199 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 200 if (!gl) 201 return; 202 gl->enable(cap); 203 } 204 205 void glwFinish () 206 { 207 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 208 if (!gl) 209 return; 210 gl->finish(); 211 } 212 213 void glwFlush () 214 { 215 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 216 if (!gl) 217 return; 218 gl->flush(); 219 } 220 221 void 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 229 void glwLogicOp (GLenum opcode) 230 { 231 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 232 if (!gl) 233 return; 234 gl->logicOp(opcode); 235 } 236 237 void 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 245 void 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 253 void glwDepthFunc (GLenum func) 254 { 255 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 256 if (!gl) 257 return; 258 gl->depthFunc(func); 259 } 260 261 void 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 269 void 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 277 void glwReadBuffer (GLenum mode) 278 { 279 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 280 if (!gl) 281 return; 282 gl->readBuffer(mode); 283 } 284 285 void 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 293 void 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 301 void 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 309 GLenum glwGetError () 310 { 311 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 312 if (!gl) 313 return GL_INVALID_OPERATION; 314 return gl->getError(); 315 } 316 317 void 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 325 void 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 333 const 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 341 void 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 349 void 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 357 void 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 365 void 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 373 void 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 381 GLboolean 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 389 void 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 397 void 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 405 void 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 413 void 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 421 void 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 429 void 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 437 void 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 445 void 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 453 void 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 461 void 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 469 void 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 477 void 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 485 void 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 493 void 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 501 void 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 509 GLboolean 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 517 void 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 525 void glwBlendEquation (GLenum mode) 526 { 527 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 528 if (!gl) 529 return; 530 gl->blendEquation(mode); 531 } 532 533 void 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 541 void 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 549 void 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 557 void 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 565 void glwActiveTexture (GLenum texture) 566 { 567 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 568 if (!gl) 569 return; 570 gl->activeTexture(texture); 571 } 572 573 void 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 581 void 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 589 void 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 597 void 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 605 void 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 613 void 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 621 void 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 629 void 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 637 void 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 645 void 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 653 void 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 661 void 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 669 void 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 677 void 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 685 void 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 693 void 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 701 void 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 709 GLboolean 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 717 void 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 725 void glwEndQuery (GLenum target) 726 { 727 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 728 if (!gl) 729 return; 730 gl->endQuery(target); 731 } 732 733 void 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 741 void 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 749 void 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 757 void 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 765 void 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 773 void 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 781 GLboolean 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 789 void 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 797 void 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 805 void 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 813 GLvoid* 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 821 GLboolean 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 829 void 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 837 void 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 845 void 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 853 void 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 861 void 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 869 void 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 877 void 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 885 void 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 893 void 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 901 void glwCompileShader (GLuint shader) 902 { 903 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 904 if (!gl) 905 return; 906 gl->compileShader(shader); 907 } 908 909 GLuint glwCreateProgram () 910 { 911 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 912 if (!gl) 913 return (GLuint)0; 914 return gl->createProgram(); 915 } 916 917 GLuint 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 925 void glwDeleteProgram (GLuint program) 926 { 927 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 928 if (!gl) 929 return; 930 gl->deleteProgram(program); 931 } 932 933 void glwDeleteShader (GLuint shader) 934 { 935 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 936 if (!gl) 937 return; 938 gl->deleteShader(shader); 939 } 940 941 void 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 949 void glwDisableVertexAttribArray (GLuint index) 950 { 951 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 952 if (!gl) 953 return; 954 gl->disableVertexAttribArray(index); 955 } 956 957 void glwEnableVertexAttribArray (GLuint index) 958 { 959 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 960 if (!gl) 961 return; 962 gl->enableVertexAttribArray(index); 963 } 964 965 void 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 973 void 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 981 void 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 989 GLint 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 997 void 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 1005 void 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 1013 void 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 1021 void 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 1029 void 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 1037 GLint 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 1045 void 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 1053 void 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 1061 void 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 1069 void 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 1077 void 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 1085 void 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 1093 GLboolean 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 1101 GLboolean 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 1109 void glwLinkProgram (GLuint program) 1110 { 1111 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 1112 if (!gl) 1113 return; 1114 gl->linkProgram(program); 1115 } 1116 1117 void 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 1125 void glwUseProgram (GLuint program) 1126 { 1127 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 1128 if (!gl) 1129 return; 1130 gl->useProgram(program); 1131 } 1132 1133 void 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 1141 void 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 1149 void 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 1157 void 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 1165 void 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 1173 void 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 1181 void 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 1189 void 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 1197 void 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 1205 void 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 1213 void 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 1221 void 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 1229 void 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 1237 void 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 1245 void 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 1253 void 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 1261 void 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 1269 void 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 1277 void 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 1285 void glwValidateProgram (GLuint program) 1286 { 1287 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 1288 if (!gl) 1289 return; 1290 gl->validateProgram(program); 1291 } 1292 1293 void 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 1301 void 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 1309 void 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 1317 void 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 1325 void 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 1333 void 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 1341 void 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 1349 void 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 1357 void 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 1365 void 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 1373 void 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 1381 void 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 1389 void 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 1397 void 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 1405 void 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 1413 void 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 1421 void 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 1429 void 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 1437 void 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 1445 void 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 1453 void 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 1461 void 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 1469 void 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 1477 void 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 1485 void 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 1493 void 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 1501 void 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 1509 void 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 1517 void 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 1525 void 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 1533 void 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 1541 void 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 1549 void 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 1557 void 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 1565 void 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 1573 void 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 1581 void 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 1589 void 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 1597 void 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 1605 void 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 1613 void 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 1621 void 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 1629 void 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 1637 void 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 1645 void 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 1653 void 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 1661 void 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 1669 void 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 1677 GLboolean 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 1685 void glwBeginTransformFeedback (GLenum primitiveMode) 1686 { 1687 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 1688 if (!gl) 1689 return; 1690 gl->beginTransformFeedback(primitiveMode); 1691 } 1692 1693 void glwEndTransformFeedback () 1694 { 1695 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 1696 if (!gl) 1697 return; 1698 gl->endTransformFeedback(); 1699 } 1700 1701 void 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 1709 void 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 1717 void 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 1725 void 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 1733 void 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 1741 void 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 1749 void glwEndConditionalRender () 1750 { 1751 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 1752 if (!gl) 1753 return; 1754 gl->endConditionalRender(); 1755 } 1756 1757 void 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 1765 void 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 1773 void 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 1781 void 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 1789 void 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 1797 void 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 1805 void 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 1813 void 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 1821 void 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 1829 void 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 1837 void 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 1845 void 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 1853 void 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 1861 void 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 1869 void 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 1877 void 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 1885 void 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 1893 void 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 1901 void 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 1909 void 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 1917 void 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 1925 void 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 1933 void 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 1941 void 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 1949 void 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 1957 GLint 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 1965 void 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 1973 void 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 1981 void 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 1989 void 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 1997 void 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 2005 void 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 2013 void 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 2021 void 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 2029 void 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 2037 void 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 2045 void 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 2053 void 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 2061 void 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 2069 void 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 2077 void 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 2085 void 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 2093 const 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 2101 GLboolean 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 2109 void 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 2117 void 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 2125 void 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 2133 void 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 2141 void 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 2149 GLboolean 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 2157 void 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 2165 void 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 2173 void 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 2181 GLenum 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 2189 void 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 2197 void 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 2205 void 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 2213 void 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 2221 void 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 2229 void glwGenerateMipmap (GLenum target) 2230 { 2231 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 2232 if (!gl) 2233 return; 2234 gl->generateMipmap(target); 2235 } 2236 2237 void 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 2245 void 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 2253 void 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 2261 GLvoid* 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 2269 void 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 2277 void glwBindVertexArray (GLuint array) 2278 { 2279 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 2280 if (!gl) 2281 return; 2282 gl->bindVertexArray(array); 2283 } 2284 2285 void 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 2293 void 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 2301 GLboolean 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 2309 void 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 2317 void glwPrimitiveRestartIndex (GLuint index) 2318 { 2319 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 2320 if (!gl) 2321 return; 2322 gl->primitiveRestartIndex(index); 2323 } 2324 2325 void 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 2333 void 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 2341 void 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 2349 void 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 2357 void 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 2365 void 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 2373 GLuint 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 2381 void 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 2389 void 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 2397 void 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 2405 void 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 2413 void 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 2421 void 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 2429 void 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 2437 void 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 2445 void 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 2453 void 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 2461 void glwProvokingVertex (GLenum mode) 2462 { 2463 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 2464 if (!gl) 2465 return; 2466 gl->provokingVertex(mode); 2467 } 2468 2469 GLsync 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 2477 GLboolean 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 2485 void glwDeleteSync (GLsync sync) 2486 { 2487 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 2488 if (!gl) 2489 return; 2490 gl->deleteSync(sync); 2491 } 2492 2493 GLenum 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 2501 void 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 2509 void 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 2517 void 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 2525 void 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 2533 void 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 2541 void 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 2549 void 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 2557 void 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 2565 void 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 2573 GLint 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 2581 void 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 2589 void 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 2597 GLboolean 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 2605 void 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 2613 void 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 2621 void 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 2629 void 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 2637 void 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 2645 void 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 2653 void 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 2661 void 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 2669 void 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 2677 void 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 2685 void 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 2693 void 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 2701 void 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 2709 void 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 2717 void 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 2725 void 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 2733 void 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 2741 void 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 2749 void 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 2757 void 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 2765 void 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 2773 void 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 2781 void 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 2789 void 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 2797 void 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 2805 void 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 2813 void 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 2821 void 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 2829 void 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 2837 void 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 2845 void 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 2853 void 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 2861 void 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 2869 void 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 2877 void 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 2885 void 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 2893 void 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 2901 void 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 2909 void 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 2917 void 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 2925 void 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 2933 void 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 2941 void 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 2949 void 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 2957 void 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 2965 void 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 2973 void glwMinSampleShading (GLfloat value) 2974 { 2975 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 2976 if (!gl) 2977 return; 2978 gl->minSampleShading(value); 2979 } 2980 2981 GLint 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 2989 GLuint 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 2997 void 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 3005 void 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 3013 void 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 3021 void 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 3029 void 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 3037 void 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 3045 void 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 3053 void 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 3061 void 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 3069 void 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 3077 void 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 3085 GLboolean 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 3093 void glwPauseTransformFeedback () 3094 { 3095 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 3096 if (!gl) 3097 return; 3098 gl->pauseTransformFeedback(); 3099 } 3100 3101 void glwResumeTransformFeedback () 3102 { 3103 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 3104 if (!gl) 3105 return; 3106 gl->resumeTransformFeedback(); 3107 } 3108 3109 void 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 3117 void 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 3125 void 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 3133 void 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 3141 void 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 3149 void glwReleaseShaderCompiler () 3150 { 3151 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 3152 if (!gl) 3153 return; 3154 gl->releaseShaderCompiler(); 3155 } 3156 3157 void 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 3165 void 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 3173 void 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 3181 void glwClearDepthf (GLfloat d) 3182 { 3183 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 3184 if (!gl) 3185 return; 3186 gl->clearDepthf(d); 3187 } 3188 3189 void 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 3197 void 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 3205 void 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 3213 void 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 3221 void 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 3229 GLuint 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 3237 void glwBindProgramPipeline (GLuint pipeline) 3238 { 3239 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 3240 if (!gl) 3241 return; 3242 gl->bindProgramPipeline(pipeline); 3243 } 3244 3245 void 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 3253 void 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 3261 GLboolean 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 3269 void 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 3277 void 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 3285 void 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 3293 void 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 3301 void 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 3309 void 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 3317 void 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 3325 void 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 3333 void 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 3341 void 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 3349 void 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 3357 void 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 3365 void 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 3373 void 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 3381 void 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 3389 void 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 3397 void 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 3405 void 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 3413 void 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 3421 void 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 3429 void 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 3437 void 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 3445 void 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 3453 void 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 3461 void 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 3469 void 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 3477 void 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 3485 void 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 3493 void 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 3501 void 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 3509 void 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 3517 void 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 3525 void 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 3533 void 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 3541 void 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 3549 void 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 3557 void 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 3565 void 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 3573 void 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 3581 void 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 3589 void 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 3597 void 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 3605 void 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 3613 void 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 3621 void 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 3629 void 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 3637 void 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 3645 void 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 3653 void 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 3661 void 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 3669 void 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 3677 void glwValidateProgramPipeline (GLuint pipeline) 3678 { 3679 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 3680 if (!gl) 3681 return; 3682 gl->validateProgramPipeline(pipeline); 3683 } 3684 3685 void 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 3693 void 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 3701 void 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 3709 void 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 3717 void 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 3725 void 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 3733 void 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 3741 void 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 3749 void 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 3757 void 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 3765 void 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 3773 void 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 3781 void 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 3789 void 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 3797 void 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 3805 void 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 3813 void 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 3821 void 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 3829 void 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 3837 void 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 3845 void 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 3853 void 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 3861 void 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 3869 void 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 3877 void 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 3885 void 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 3893 void 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 3901 void 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 3909 void 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 3917 void glwMemoryBarrier (GLbitfield barriers) 3918 { 3919 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 3920 if (!gl) 3921 return; 3922 gl->memoryBarrier(barriers); 3923 } 3924 3925 void 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 3933 void 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 3941 void 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 3949 void 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 3957 void 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 3965 void 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 3973 void glwDispatchComputeIndirect (GLintptr indirect) 3974 { 3975 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 3976 if (!gl) 3977 return; 3978 gl->dispatchComputeIndirect(indirect); 3979 } 3980 3981 void 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 3989 void 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 3997 void 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 4005 void 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 4013 GLuint 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 4021 void 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 4029 void glwPopDebugGroup () 4030 { 4031 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 4032 if (!gl) 4033 return; 4034 gl->popDebugGroup(); 4035 } 4036 4037 void 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 4045 void 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 4053 void 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 4061 void 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 4069 void 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 4077 void 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 4085 void 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 4093 void 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 4101 void 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 4109 void 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 4117 void glwInvalidateBufferData (GLuint buffer) 4118 { 4119 const glw::Functions* gl = glw::getCurrentThreadFunctions(); 4120 if (!gl) 4121 return; 4122 gl->invalidateBufferData(buffer); 4123 } 4124 4125 void 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 4133 void 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 4141 void 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 4149 void 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 4157 void 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 4165 GLuint 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 4173 void 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 4181 void 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 4189 GLint 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 4197 GLint 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 4205 void 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 4213 void 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 4221 void 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 4229 void 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 4237 void 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 4245 void 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 4253 void 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 4261 void 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 4269 void 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 4277 void 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 4285 void 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 4293 void 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 4301 void 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 4309 void 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 4317 void 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 4325 void 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 4333 void 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 4341 void 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 4349 void 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 4357 void 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 } 4364