1[ 2 { 3 "first_introduced": "20", 4 "name": "glActiveTexture" 5 }, 6 { 7 "first_introduced": "20", 8 "name": "glActiveTextureARB" 9 }, 10 { 11 "first_introduced": "20", 12 "name": "glAttachShader" 13 }, 14 { 15 "first_introduced": "20", 16 "name": "glBindAttribLocation" 17 }, 18 { 19 "first_introduced": "20", 20 "name": "glBindBuffer" 21 }, 22 { 23 "first_introduced": "20", 24 "name": "glBindBufferARB" 25 }, 26 { 27 "first_introduced": "20", 28 "name": "glBindBufferBase" 29 }, 30 { 31 "first_introduced": "20", 32 "name": "glBindBufferRange" 33 }, 34 { 35 "first_introduced": "20", 36 "name": "glBindFramebuffer" 37 }, 38 { 39 "first_introduced": "20", 40 "name": "glBindImageTexture" 41 }, 42 { 43 "first_introduced": "20", 44 "name": "glBindRenderbuffer" 45 }, 46 { 47 "first_introduced": "20", 48 "name": "glBindTexture" 49 }, 50 { 51 "first_introduced": "20", 52 "name": "glBindVertexArray" 53 }, 54 { 55 "first_introduced": "20", 56 "name": "glBindVertexBuffer" 57 }, 58 { 59 "first_introduced": "20", 60 "name": "glBlendColor" 61 }, 62 { 63 "first_introduced": "20", 64 "name": "glBlendEquation" 65 }, 66 { 67 "first_introduced": "20", 68 "name": "glBlendEquationSeparate" 69 }, 70 { 71 "first_introduced": "20", 72 "name": "glBlendFunc" 73 }, 74 { 75 "first_introduced": "20", 76 "name": "glBlendFunci" 77 }, 78 { 79 "first_introduced": "20", 80 "name": "glBlendFuncSeparate" 81 }, 82 { 83 "first_introduced": "20", 84 "name": "glBlitFramebuffer" 85 }, 86 { 87 "first_introduced": "20", 88 "name": "glBufferData" 89 }, 90 { 91 "first_introduced": "20", 92 "name": "glBufferDataARB" 93 }, 94 { 95 "first_introduced": "20", 96 "name": "glBufferStorage" 97 }, 98 { 99 "first_introduced": "20", 100 "name": "glBufferSubData" 101 }, 102 { 103 "first_introduced": "20", 104 "name": "glBufferSubDataARB" 105 }, 106 { 107 "first_introduced": "20", 108 "name": "glCheckFramebufferStatus" 109 }, 110 { 111 "first_introduced": "20", 112 "name": "glClampColor" 113 }, 114 { 115 "first_introduced": "20", 116 "name": "glClear" 117 }, 118 { 119 "first_introduced": "20", 120 "name": "glClearBufferfv" 121 }, 122 { 123 "first_introduced": "20", 124 "name": "glClearBufferData" 125 }, 126 { 127 "first_introduced": "20", 128 "name": "glClearBufferSubData" 129 }, 130 { 131 "first_introduced": "20", 132 "name": "glClearColor" 133 }, 134 { 135 "first_introduced": "20", 136 "name": "glClearDepth" 137 }, 138 { 139 "first_introduced": "20", 140 "name": "glClearDepthf" 141 }, 142 { 143 "first_introduced": "20", 144 "name": "glClearStencil" 145 }, 146 { 147 "first_introduced": "20", 148 "name": "glClientWaitSync" 149 }, 150 { 151 "first_introduced": "20", 152 "name": "glColor4f" 153 }, 154 { 155 "first_introduced": "20", 156 "name": "glColorMask" 157 }, 158 { 159 "first_introduced": "20", 160 "name": "glCompileShader" 161 }, 162 { 163 "first_introduced": "20", 164 "name": "glCompressedTexImage2D" 165 }, 166 { 167 "first_introduced": "20", 168 "name": "glCompressedTexSubImage2D" 169 }, 170 { 171 "first_introduced": "20", 172 "name": "glCopyBufferSubData" 173 }, 174 { 175 "first_introduced": "20", 176 "name": "glCopyTexSubImage2D" 177 }, 178 { 179 "first_introduced": "20", 180 "name": "glCreateProgram" 181 }, 182 { 183 "first_introduced": "20", 184 "name": "glCreateShader" 185 }, 186 { 187 "first_introduced": "20", 188 "name": "glCullFace" 189 }, 190 { 191 "first_introduced": "20", 192 "name": "glDebugMessageCallback" 193 }, 194 { 195 "first_introduced": "20", 196 "name": "glDeleteBuffers" 197 }, 198 { 199 "first_introduced": "20", 200 "name": "glDeleteBuffersARB" 201 }, 202 { 203 "first_introduced": "20", 204 "name": "glDeleteFramebuffers" 205 }, 206 { 207 "first_introduced": "20", 208 "name": "glDeleteProgram" 209 }, 210 { 211 "first_introduced": "20", 212 "name": "glDeleteRenderbuffers" 213 }, 214 { 215 "first_introduced": "20", 216 "name": "glDeleteShader" 217 }, 218 { 219 "first_introduced": "20", 220 "name": "glDeleteSync" 221 }, 222 { 223 "first_introduced": "20", 224 "name": "glDeleteTextures" 225 }, 226 { 227 "first_introduced": "20", 228 "name": "glDeleteVertexArrays" 229 }, 230 { 231 "first_introduced": "20", 232 "name": "glDepthFunc" 233 }, 234 { 235 "first_introduced": "20", 236 "name": "glDepthMask" 237 }, 238 { 239 "first_introduced": "20", 240 "name": "glDepthRange" 241 }, 242 { 243 "first_introduced": "20", 244 "name": "glDepthRangef" 245 }, 246 { 247 "first_introduced": "20", 248 "name": "glDetachShader" 249 }, 250 { 251 "first_introduced": "20", 252 "name": "glDisable" 253 }, 254 { 255 "first_introduced": "20", 256 "name": "glDisableVertexAttribArray" 257 }, 258 { 259 "first_introduced": "20", 260 "name": "glDrawArrays" 261 }, 262 { 263 "first_introduced": "20", 264 "name": "glDrawArraysInstanced" 265 }, 266 { 267 "first_introduced": "20", 268 "name": "glDrawBuffer" 269 }, 270 { 271 "first_introduced": "20", 272 "name": "glDrawBuffers" 273 }, 274 { 275 "first_introduced": "20", 276 "name": "glDrawBuffersARB" 277 }, 278 { 279 "first_introduced": "20", 280 "name": "glDrawElements" 281 }, 282 { 283 "first_introduced": "20", 284 "name": "glDrawElementsBaseVertex" 285 }, 286 { 287 "first_introduced": "20", 288 "name": "glDrawElementsInstanced" 289 }, 290 { 291 "first_introduced": "20", 292 "name": "glDrawElementsInstancedBaseVertex" 293 }, 294 { 295 "first_introduced": "20", 296 "name": "glEnable" 297 }, 298 { 299 "first_introduced": "20", 300 "name": "glEnableVertexAttribArray" 301 }, 302 { 303 "first_introduced": "20", 304 "name": "glFenceSync" 305 }, 306 { 307 "first_introduced": "20", 308 "name": "glFinish" 309 }, 310 { 311 "first_introduced": "20", 312 "name": "glFlush" 313 }, 314 { 315 "first_introduced": "20", 316 "name": "glFlushMappedBufferRange" 317 }, 318 { 319 "first_introduced": "20", 320 "name": "glFramebufferRenderbuffer" 321 }, 322 { 323 "first_introduced": "20", 324 "name": "glFramebufferTexture" 325 }, 326 { 327 "first_introduced": "20", 328 "name": "glFramebufferTexture2D" 329 }, 330 { 331 "first_introduced": "20", 332 "name": "glFrontFace" 333 }, 334 { 335 "first_introduced": "20", 336 "name": "glGenBuffers" 337 }, 338 { 339 "first_introduced": "20", 340 "name": "glGenBuffersARB" 341 }, 342 { 343 "first_introduced": "20", 344 "name": "glGenerateMipmap" 345 }, 346 { 347 "first_introduced": "20", 348 "name": "glGenFramebuffers" 349 }, 350 { 351 "first_introduced": "20", 352 "name": "glGenRenderbuffers" 353 }, 354 { 355 "first_introduced": "20", 356 "name": "glGenTextures" 357 }, 358 { 359 "first_introduced": "20", 360 "name": "glGenVertexArrays" 361 }, 362 { 363 "first_introduced": "20", 364 "name": "glGetActiveAttrib" 365 }, 366 { 367 "first_introduced": "20", 368 "name": "glGetActiveUniform" 369 }, 370 { 371 "first_introduced": "20", 372 "name": "glGetAttachedShaders" 373 }, 374 { 375 "first_introduced": "20", 376 "name": "glGetAttribLocation" 377 }, 378 { 379 "first_introduced": "20", 380 "name": "glGetBooleanv" 381 }, 382 { 383 "first_introduced": "20", 384 "name": "glGetBufferParameteriv" 385 }, 386 { 387 "first_introduced": "20", 388 "name": "glGetBufferSubData" 389 }, 390 { 391 "first_introduced": "20", 392 "name": "glGetBufferSubDataARB" 393 }, 394 { 395 "first_introduced": "20", 396 "name": "glGetError" 397 }, 398 { 399 "first_introduced": "20", 400 "name": "glGetFramebufferAttachmentParameteriv" 401 }, 402 { 403 "first_introduced": "20", 404 "name": "glGetIntegeri_v" 405 }, 406 { 407 "first_introduced": "20", 408 "name": "glGetIntegerv" 409 }, 410 { 411 "first_introduced": "20", 412 "name": "glGetProgramBinary" 413 }, 414 { 415 "first_introduced": "20", 416 "name": "glGetProgramInfoLog" 417 }, 418 { 419 "first_introduced": "20", 420 "name": "glGetProgramiv" 421 }, 422 { 423 "first_introduced": "20", 424 "name": "glGetProgramResourceIndex" 425 }, 426 { 427 "first_introduced": "20", 428 "name": "glGetRenderbufferParameteriv" 429 }, 430 { 431 "first_introduced": "20", 432 "name": "glGetShaderInfoLog" 433 }, 434 { 435 "first_introduced": "20", 436 "name": "glGetShaderiv" 437 }, 438 { 439 "first_introduced": "20", 440 "name": "glGetShaderPrecisionFormat" 441 }, 442 { 443 "first_introduced": "20", 444 "name": "glGetShaderSource" 445 }, 446 { 447 "first_introduced": "20", 448 "name": "glGetString" 449 }, 450 { 451 "first_introduced": "20", 452 "name": "glGetTexImage" 453 }, 454 { 455 "first_introduced": "20", 456 "name": "glGetUniformfv" 457 }, 458 { 459 "first_introduced": "20", 460 "name": "glGetUniformiv" 461 }, 462 { 463 "first_introduced": "20", 464 "name": "glGetUniformLocation" 465 }, 466 { 467 "first_introduced": "20", 468 "name": "glGetVertexAttribfv" 469 }, 470 { 471 "first_introduced": "20", 472 "name": "glGetVertexAttribiv" 473 }, 474 { 475 "first_introduced": "20", 476 "name": "glGetVertexAttribPointerv" 477 }, 478 { 479 "first_introduced": "20", 480 "name": "glInvalidateBufferSubData" 481 }, 482 { 483 "first_introduced": "20", 484 "name": "glIsBuffer" 485 }, 486 { 487 "first_introduced": "20", 488 "name": "glIsFramebuffer" 489 }, 490 { 491 "first_introduced": "20", 492 "name": "glIsProgram" 493 }, 494 { 495 "first_introduced": "20", 496 "name": "glIsRenderbuffer" 497 }, 498 { 499 "first_introduced": "20", 500 "name": "glIsShader" 501 }, 502 { 503 "first_introduced": "20", 504 "name": "glLineWidth" 505 }, 506 { 507 "first_introduced": "20", 508 "name": "glLinkProgram" 509 }, 510 { 511 "first_introduced": "20", 512 "name": "glMapBuffer" 513 }, 514 { 515 "first_introduced": "20", 516 "name": "glMapBufferRange" 517 }, 518 { 519 "first_introduced": "20", 520 "name": "glMemoryBarrier" 521 }, 522 { 523 "first_introduced": "20", 524 "name": "glMultiDrawArrays" 525 }, 526 { 527 "first_introduced": "20", 528 "name": "glMultiDrawElements" 529 }, 530 { 531 "first_introduced": "20", 532 "name": "glMultiDrawElementsIndirect" 533 }, 534 { 535 "first_introduced": "20", 536 "name": "glPatchParameteri" 537 }, 538 { 539 "first_introduced": "20", 540 "name": "glPixelStorei" 541 }, 542 { 543 "first_introduced": "20", 544 "name": "glPointSize" 545 }, 546 { 547 "first_introduced": "20", 548 "name": "glPolygonMode" 549 }, 550 { 551 "first_introduced": "20", 552 "name": "glPolygonOffset" 553 }, 554 { 555 "first_introduced": "20", 556 "name": "glPopDebugGroup" 557 }, 558 { 559 "first_introduced": "20", 560 "name": "glPrimitiveRestartIndex" 561 }, 562 { 563 "first_introduced": "20", 564 "name": "glProgramBinary" 565 }, 566 { 567 "first_introduced": "20", 568 "name": "glProgramParameteri" 569 }, 570 { 571 "first_introduced": "20", 572 "name": "glPushDebugGroup" 573 }, 574 { 575 "first_introduced": "20", 576 "name": "glReadBuffer" 577 }, 578 { 579 "first_introduced": "20", 580 "name": "glReadPixels" 581 }, 582 { 583 "first_introduced": "20", 584 "name": "glReleaseShaderCompiler" 585 }, 586 { 587 "first_introduced": "20", 588 "name": "glRenderbufferStorage" 589 }, 590 { 591 "first_introduced": "20", 592 "name": "glRenderbufferStorageMultisample" 593 }, 594 { 595 "first_introduced": "20", 596 "name": "glSampleCoverage" 597 }, 598 { 599 "first_introduced": "20", 600 "name": "glScissor" 601 }, 602 { 603 "first_introduced": "20", 604 "name": "glShadeModel" 605 }, 606 { 607 "first_introduced": "20", 608 "name": "glShaderBinary" 609 }, 610 { 611 "first_introduced": "20", 612 "name": "glShaderSource" 613 }, 614 { 615 "first_introduced": "20", 616 "name": "glShaderStorageBlockBinding" 617 }, 618 { 619 "first_introduced": "20", 620 "name": "glStencilFunc" 621 }, 622 { 623 "first_introduced": "20", 624 "name": "glStencilFuncSeparate" 625 }, 626 { 627 "first_introduced": "20", 628 "name": "glStencilMask" 629 }, 630 { 631 "first_introduced": "20", 632 "name": "glStencilMaskSeparate" 633 }, 634 { 635 "first_introduced": "20", 636 "name": "glStencilOp" 637 }, 638 { 639 "first_introduced": "20", 640 "name": "glStencilOpSeparate" 641 }, 642 { 643 "first_introduced": "20", 644 "name": "glTexBuffer" 645 }, 646 { 647 "first_introduced": "20", 648 "name": "glTexImage1D" 649 }, 650 { 651 "first_introduced": "20", 652 "name": "glTexImage2D" 653 }, 654 { 655 "first_introduced": "20", 656 "name": "glTexImage2DMultisample" 657 }, 658 { 659 "first_introduced": "20", 660 "name": "glTexParameterfv" 661 }, 662 { 663 "first_introduced": "20", 664 "name": "glTexParameteri" 665 }, 666 { 667 "first_introduced": "20", 668 "name": "glTexSubImage2D" 669 }, 670 { 671 "first_introduced": "20", 672 "name": "glUniform1dv" 673 }, 674 { 675 "first_introduced": "20", 676 "name": "glUniform1f" 677 }, 678 { 679 "first_introduced": "20", 680 "name": "glUniform1fv" 681 }, 682 { 683 "first_introduced": "20", 684 "name": "glUniform1fvARB" 685 }, 686 { 687 "first_introduced": "20", 688 "name": "glUniform1i" 689 }, 690 { 691 "first_introduced": "20", 692 "name": "glUniform1iARB" 693 }, 694 { 695 "first_introduced": "20", 696 "name": "glUniform1iv" 697 }, 698 { 699 "first_introduced": "20", 700 "name": "glUniform1ivARB" 701 }, 702 { 703 "first_introduced": "20", 704 "name": "glUniform1ui" 705 }, 706 { 707 "first_introduced": "20", 708 "name": "glUniform2dv" 709 }, 710 { 711 "first_introduced": "20", 712 "name": "glUniform2f" 713 }, 714 { 715 "first_introduced": "20", 716 "name": "glUniform2fv" 717 }, 718 { 719 "first_introduced": "20", 720 "name": "glUniform2fvARB" 721 }, 722 { 723 "first_introduced": "20", 724 "name": "glUniform2i" 725 }, 726 { 727 "first_introduced": "20", 728 "name": "glUniform2iv" 729 }, 730 { 731 "first_introduced": "20", 732 "name": "glUniform2ivARB" 733 }, 734 { 735 "first_introduced": "20", 736 "name": "glUniform3dv" 737 }, 738 { 739 "first_introduced": "20", 740 "name": "glUniform3f" 741 }, 742 { 743 "first_introduced": "20", 744 "name": "glUniform3fv" 745 }, 746 { 747 "first_introduced": "20", 748 "name": "glUniform3fvARB" 749 }, 750 { 751 "first_introduced": "20", 752 "name": "glUniform3i" 753 }, 754 { 755 "first_introduced": "20", 756 "name": "glUniform3iv" 757 }, 758 { 759 "first_introduced": "20", 760 "name": "glUniform3ivARB" 761 }, 762 { 763 "first_introduced": "20", 764 "name": "glUniform4dv" 765 }, 766 { 767 "first_introduced": "20", 768 "name": "glUniform4f" 769 }, 770 { 771 "first_introduced": "20", 772 "name": "glUniform4fv" 773 }, 774 { 775 "first_introduced": "20", 776 "name": "glUniform4fvARB" 777 }, 778 { 779 "first_introduced": "20", 780 "name": "glUniform4i" 781 }, 782 { 783 "first_introduced": "20", 784 "name": "glUniform4iv" 785 }, 786 { 787 "first_introduced": "20", 788 "name": "glUniform4ivARB" 789 }, 790 { 791 "first_introduced": "20", 792 "name": "glUniformMatrix2fv" 793 }, 794 { 795 "first_introduced": "20", 796 "name": "glUniformMatrix2fvARB" 797 }, 798 { 799 "first_introduced": "20", 800 "name": "glUniformMatrix3dv" 801 }, 802 { 803 "first_introduced": "20", 804 "name": "glUniformMatrix3fv" 805 }, 806 { 807 "first_introduced": "20", 808 "name": "glUniformMatrix3fvARB" 809 }, 810 { 811 "first_introduced": "20", 812 "name": "glUniformMatrix4dv" 813 }, 814 { 815 "first_introduced": "20", 816 "name": "glUniformMatrix4fv" 817 }, 818 { 819 "first_introduced": "20", 820 "name": "glUniformMatrix4fvARB" 821 }, 822 { 823 "first_introduced": "20", 824 "name": "glUnmapBuffer" 825 }, 826 { 827 "first_introduced": "20", 828 "name": "glUseProgram" 829 }, 830 { 831 "first_introduced": "20", 832 "name": "glValidateProgram" 833 }, 834 { 835 "first_introduced": "20", 836 "name": "glVertexAttribBinding" 837 }, 838 { 839 "first_introduced": "20", 840 "name": "glVertexAttrib1f" 841 }, 842 { 843 "first_introduced": "20", 844 "name": "glVertexAttrib1fv" 845 }, 846 { 847 "first_introduced": "20", 848 "name": "glVertexAttrib2f" 849 }, 850 { 851 "first_introduced": "20", 852 "name": "glVertexAttrib2fv" 853 }, 854 { 855 "first_introduced": "20", 856 "name": "glVertexAttrib3f" 857 }, 858 { 859 "first_introduced": "20", 860 "name": "glVertexAttrib3fv" 861 }, 862 { 863 "first_introduced": "20", 864 "name": "glVertexAttrib4f" 865 }, 866 { 867 "first_introduced": "20", 868 "name": "glVertexAttrib4fv" 869 }, 870 { 871 "first_introduced": "20", 872 "name": "glVertexAttribIFormat" 873 }, 874 { 875 "first_introduced": "20", 876 "name": "glVertexAttribIPointer" 877 }, 878 { 879 "first_introduced": "20", 880 "name": "glVertexAttribLPointer" 881 }, 882 { 883 "first_introduced": "20", 884 "name": "glVertexAttribPointer" 885 }, 886 { 887 "first_introduced": "20", 888 "name": "glViewport" 889 }, 890 { 891 "first_introduced": "20", 892 "name": "glCopyImageSubData" 893 }, 894 { 895 "first_introduced": "20", 896 "name": "glCopyTexImage1D" 897 }, 898 { 899 "first_introduced": "20", 900 "name": "glCopyTexImage2D" 901 }, 902 { 903 "first_introduced": "20", 904 "name": "glCopyTexSubImage1D" 905 }, 906 { 907 "first_introduced": "20", 908 "name": "glGetDoublev" 909 }, 910 { 911 "first_introduced": "20", 912 "name": "glGetFloatv" 913 }, 914 { 915 "first_introduced": "20", 916 "name": "glGetPointerv" 917 }, 918 { 919 "first_introduced": "20", 920 "name": "glGetTexLevelParameterfv" 921 }, 922 { 923 "first_introduced": "20", 924 "name": "glGetTexLevelParameteriv" 925 }, 926 { 927 "first_introduced": "20", 928 "name": "glGetTexParameterfv" 929 }, 930 { 931 "first_introduced": "20", 932 "name": "glGetTexParameteriv" 933 }, 934 { 935 "first_introduced": "20", 936 "name": "glHint" 937 }, 938 { 939 "first_introduced": "20", 940 "name": "glIsEnabled" 941 }, 942 { 943 "first_introduced": "20", 944 "name": "glIsTexture" 945 }, 946 { 947 "first_introduced": "20", 948 "name": "glIsVertexArray" 949 }, 950 { 951 "first_introduced": "20", 952 "name": "glLogicOp" 953 }, 954 { 955 "first_introduced": "20", 956 "name": "glMultiDrawElementsBaseVertex" 957 }, 958 { 959 "first_introduced": "20", 960 "name": "glPixelStoref" 961 }, 962 { 963 "first_introduced": "20", 964 "name": "glTexParameterf" 965 }, 966 { 967 "first_introduced": "20", 968 "name": "glTexParameteriv" 969 }, 970 { 971 "first_introduced": "20", 972 "name": "glTexSubImage1D" 973 }, 974 { 975 "first_introduced": "20", 976 "name": "glBeginQuery" 977 }, 978 { 979 "first_introduced": "20", 980 "name": "glBeginTransformFeedback" 981 }, 982 { 983 "first_introduced": "20", 984 "name": "glCopyTexSubImage3D" 985 }, 986 { 987 "first_introduced": "20", 988 "name": "glDeleteQueries" 989 }, 990 { 991 "first_introduced": "20", 992 "name": "glEndQuery" 993 }, 994 { 995 "first_introduced": "20", 996 "name": "glEndTransformFeedback" 997 }, 998 { 999 "first_introduced": "20", 1000 "name": "glGenQueries" 1001 }, 1002 { 1003 "first_introduced": "20", 1004 "name": "glGetActiveUniformBlockName" 1005 }, 1006 { 1007 "first_introduced": "20", 1008 "name": "glGetQueryObjectiv" 1009 }, 1010 { 1011 "first_introduced": "20", 1012 "name": "glGetStringi" 1013 }, 1014 { 1015 "first_introduced": "20", 1016 "name": "glLineStipple" 1017 }, 1018 { 1019 "first_introduced": "20", 1020 "name": "glTexImage3D" 1021 }, 1022 { 1023 "first_introduced": "20", 1024 "name": "glTransformFeedbackVaryings" 1025 }, 1026 { 1027 "first_introduced": "20", 1028 "name": "glUniformBlockBinding" 1029 }, 1030 { 1031 "first_introduced": "20", 1032 "name": "glUniformMatrix2x3fv" 1033 }, 1034 { 1035 "first_introduced": "20", 1036 "name": "glUniformMatrix2x4fv" 1037 }, 1038 { 1039 "first_introduced": "20", 1040 "name": "glUniformMatrix3x2fv" 1041 }, 1042 { 1043 "first_introduced": "20", 1044 "name": "glUniformMatrix3x4fv" 1045 }, 1046 { 1047 "first_introduced": "20", 1048 "name": "glUniformMatrix4x2fv" 1049 }, 1050 { 1051 "first_introduced": "20", 1052 "name": "glUniformMatrix4x3fv" 1053 } 1054]