From 7e7d06852f7469d5f82d1c5b612311dd18b52c08 Mon Sep 17 00:00:00 2001 From: sam Date: Mon, 12 Aug 2024 07:41:57 +1200 Subject: [PATCH] add platform separation --- .DS_Store | Bin 0 -> 6148 bytes .../index/gearlib.h.988F31907B86874A.idx | Bin 0 -> 3230 bytes .../index/gearlib.h.F3910DA3D2BE2856.idx | Bin 0 -> 2644 bytes .../clangd/index/glad.c.2284541ED9E18FA5.idx | Bin 0 -> 84256 bytes .../clangd/index/glad.h.78E2B57030F616B4.idx | Bin 0 -> 165762 bytes .../clangd/index/glfw.c.3E40F30CC2C92A0D.idx | Bin 0 -> 378 bytes .../index/khrplatform.h.68B41E500C05828B.idx | Bin 0 -> 2196 bytes .../clangd/index/log.c.20847E4973F486CE.idx | Bin 0 -> 712 bytes .../clangd/index/log.c.22A62C5806C0A97D.idx | Bin 0 -> 3894 bytes .../clangd/index/log.c.E31E5F97D7D4CFD4.idx | Bin 0 -> 3878 bytes .../clangd/index/log.c.F2526C272D8A7F04.idx | Bin 0 -> 816 bytes .../clangd/index/log.h.6F39AF0595D6554B.idx | Bin 0 -> 2234 bytes .../clangd/index/log.h.D2A5E178892D01BE.idx | Bin 0 -> 2208 bytes .../clangd/index/sdl.c.11591B118153D4AC.idx | Bin 0 -> 2034 bytes .../index/simple-init.c.862F9E6AA847CBC3.idx | Bin 0 -> 452 bytes .../index/simple-init.c.D66F367D416BB1EA.idx | Bin 0 -> 528 bytes .../index/simple-log.c.1523795EF31C0C4D.idx | Bin 0 -> 406 bytes .../index/simple-log.c.78A7DAA7D8B632EE.idx | Bin 0 -> 458 bytes .../index/simple.c.E48C29096FE27DE7.idx | Bin 0 -> 432 bytes .../index/simple.c.FB33403ACB796019.idx | Bin 0 -> 382 bytes .../clangd/index/state.c.5D4C81A09C86E885.idx | Bin 0 -> 830 bytes .../clangd/index/state.c.6FE2060C6206E8DB.idx | Bin 0 -> 916 bytes .../index/window.c.493C31FC67D861C6.idx | Bin 0 -> 2288 bytes .../index/window.c.717246B9D4CE7A41.idx | Bin 0 -> 2404 bytes examples/a.out | Bin 0 -> 93592 bytes examples/simple-init.c | 8 +- src/.DS_Store | Bin 0 -> 6148 bytes src/Makefile | 2 - src/gearlib.h | 18 +- src/log.c | 8 +- src/platforms/glfw.c | 44 + src/platforms/sdl.c | 58 + src/state.c | 6 +- src/thirdparty/.DS_Store | Bin 0 -> 6148 bytes src/thirdparty/KHR/khrplatform.h | 311 ++ src/thirdparty/glad/.DS_Store | Bin 0 -> 6148 bytes src/thirdparty/glad/glad.c | 1421 +++++++++ src/thirdparty/glad/glad.h | 2652 +++++++++++++++++ src/window.c | 56 +- 39 files changed, 4549 insertions(+), 35 deletions(-) create mode 100644 .DS_Store create mode 100644 .cache/clangd/index/gearlib.h.988F31907B86874A.idx create mode 100644 .cache/clangd/index/gearlib.h.F3910DA3D2BE2856.idx create mode 100644 .cache/clangd/index/glad.c.2284541ED9E18FA5.idx create mode 100644 .cache/clangd/index/glad.h.78E2B57030F616B4.idx create mode 100644 .cache/clangd/index/glfw.c.3E40F30CC2C92A0D.idx create mode 100644 .cache/clangd/index/khrplatform.h.68B41E500C05828B.idx create mode 100644 .cache/clangd/index/log.c.20847E4973F486CE.idx create mode 100644 .cache/clangd/index/log.c.22A62C5806C0A97D.idx create mode 100644 .cache/clangd/index/log.c.E31E5F97D7D4CFD4.idx create mode 100644 .cache/clangd/index/log.c.F2526C272D8A7F04.idx create mode 100644 .cache/clangd/index/log.h.6F39AF0595D6554B.idx create mode 100644 .cache/clangd/index/log.h.D2A5E178892D01BE.idx create mode 100644 .cache/clangd/index/sdl.c.11591B118153D4AC.idx create mode 100644 .cache/clangd/index/simple-init.c.862F9E6AA847CBC3.idx create mode 100644 .cache/clangd/index/simple-init.c.D66F367D416BB1EA.idx create mode 100644 .cache/clangd/index/simple-log.c.1523795EF31C0C4D.idx create mode 100644 .cache/clangd/index/simple-log.c.78A7DAA7D8B632EE.idx create mode 100644 .cache/clangd/index/simple.c.E48C29096FE27DE7.idx create mode 100644 .cache/clangd/index/simple.c.FB33403ACB796019.idx create mode 100644 .cache/clangd/index/state.c.5D4C81A09C86E885.idx create mode 100644 .cache/clangd/index/state.c.6FE2060C6206E8DB.idx create mode 100644 .cache/clangd/index/window.c.493C31FC67D861C6.idx create mode 100644 .cache/clangd/index/window.c.717246B9D4CE7A41.idx create mode 100755 examples/a.out create mode 100644 src/.DS_Store create mode 100644 src/platforms/glfw.c create mode 100644 src/platforms/sdl.c create mode 100644 src/thirdparty/.DS_Store create mode 100644 src/thirdparty/KHR/khrplatform.h create mode 100644 src/thirdparty/glad/.DS_Store create mode 100644 src/thirdparty/glad/glad.c create mode 100644 src/thirdparty/glad/glad.h diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..42989aa4c1ffb920b18256ecdbdb1053b8cec02c GIT binary patch literal 6148 zcmeHK%}T>S5Z<-brW7Fug&r5Y7OYJX#7l_v1&ruHr6#6mFlI}VnnNk%tS{t~_&m<+ zZop#BB6bFLzxmzGevtiPjB#%f9WiDz#w=)v9F+z^cVlSFBqMShBcF$f48i&c=O*^o z0l&S)a+a}&u>Ai0Nt_qM;V0i}wYPUVR>$gDcm9(s{URt9xff(NXkAK~gtZ=oSMjWz z+Iwd*ErK|mWvU>KW{`4w9jB2jJ-JAuT-EwIV0EqT)b1~rj^hl3Ga9c3VtFze4#e0w zUah*;{=wnt#q>FON#&cSlLOmIb`93>4vJaLtDmKbOdr8hXV+PT!~iis3=jjG&44)< ztlnnRK&vMPh=B$MaDNcc5M6_nMzwW7hu3F}w-Hf5$F~HcFz6brG(rS~>ry~n%FPpl z>vHf5ljj<&H0pB3)yy!CnYn(va5X#lg-U1K)kr-tKn$!i(9))j=l?nUGL4V?^%Am( z0b<~vF~Hjsf8xQS%-Q;5d3e?eX!p=iFt0)d1oX8_02sKB^i@#D1?rIJ8mu(pDCk$^ PfOHX1giuEe`~m}Crx8hi literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/gearlib.h.988F31907B86874A.idx b/.cache/clangd/index/gearlib.h.988F31907B86874A.idx new file mode 100644 index 0000000000000000000000000000000000000000..c1c2b1cd87f99df5b0242d61de362ac9179f0a9a GIT binary patch literal 3230 zcmYjT30PBC7QT@ryyU$sFC=Wwuw;QGge^cc1!)y3QnU+Np&b{Lfr4QB5h#e%ma45A zGZj><40W`Ml_}%Wua;KI3=Sjhfa}=70c0tyh$AuxI#{$iCoj24!pHe?e*Smvf9|{Y zKcuHFTv$sXl=R!w4eN7C)^HI*UhrF7V$B!LLMVub(1!ZfrRxj&qNLp~MH>Taq{jNK zvdP9HYgTuko^Ss5oFj{Te)DG|uT@jh@N`pXPwHK|Lzk14R(5&bbjbMk8}6@YD!*80 z?oZ>@#Z8!k1^afDcc1diUY*-BT0Zcf^dkf6`lAzXfAsQ}rgeX;eBS4J+R358O;x3d zEyI4x5Ad#jb2$Aq)NeU_c4_b{_p*COKkMM`x4h*sz2`w))wX%6JO3Oowv=?AYi#p= zv)~U8$QknX<=*Pv+Id}<6rpBFD;(~|zT%hEGwOdTs+qHo!Pg^?I?(_L&v*DWp`t_y=OTEv%)Tc@QjlcfO$h0SU^v2Iztn(bw zEo&>JelkAW^;Xe5-NH(r(mnbZ72+91^{DwwJ4Y;Y3xMIDcp4-_GAnxN%Y?jx?;4pE%X?mxG<-oLh6R zf6+Po;ZT5VM@3LZa=^FR{4=S&>tt5~Y(L92$&aossumlMRMf8u`N!VJyv>jK3T10E zDlT8Yw%Y@ttqW474$QeH7NdAi#Fzvoh7E{-lLMb?>xLTx5~DOEibRMJOT;uAkbwOw zhv9X;{%C!2#&RGif#4(cnau_lLDctIMv;KjQb>i+YynT8V05I8K>|J>iDXbAEN;is zsglbE5_v-f1+9>?!BxRZD)q-Q%Ob?+8ITwwjFGYdOI#4(9kZ*sCz?cNc%G0FGB&uL zpXqD~s7#xTAyGIGq*AFD8(f5&#b(|PQ zgMug`O2h`NVAXS`7oM)8lPMGgEyjuBLYOeGFeBTdQVK1aihRF1{l3>y3WebXG^8fj zwFeen>BBoMDX)@f4lGW|C~r2nByMar{Pn@nRheRB0tL}Tw1^E@LH{SRg?Hs=)>251 z7f_RG*kqxHy@OxB%L%vcoy-;?4JMdnW@r(zP%%jKt)5f!;lcF0~tM~*CGMQMHU*CSkk()VMCmL z4}}c4f{Il6A%S3)U1Y=j(weNps}7JT0yNN4+KUY?4bzr)n-e`&){!U*2r^oxV1tVw zX|x`Hm&pP`2oPdt#Zqi=5l+{S(d`=gAc{^;8FpHGn}76?LGC})F?6ySFCyQz#gAl1K4^m{3`02)osC2~;@yW>tb<`S=Kh)IiYl z^cu!M8Vs&?Va>@cPUIuBvi;MMo4dah5fr23D}@d{h+!7{P8%o5r? z#eq{y7(YygFCF$5j==6K4pQnwQd<17^IBL*PRJ$rcw@7Hm26IfSHczpu+3jEjID($ zv|EZ(fR@oJo$r~^s8Dy>TA%G9&ffzAufs6*8T zSEdiq>zx;k(MRiJU0D=2$`d;k#YA(XJ+W(GgM&R{jm;qglc8&yr{S)@>>Ip%rQ`E> zfP;u2=N@@jE8;EfBhSK)N(re1x0Zmko*#xzJqNIYP)P9xFPJgE^Yfm*`2Y(DffV06 z{MJATYmtsMu|WdN8lwZo=L3}3JP`}TZ2@d^LJY51e6H*3w%XOOq=b-2@HNvW<`ENA zZWh2aK})d7!6O}*gpYgebWJRXL34YC)@KxLdK8q zb1H$`hLrH{mi+^_4XNBRHB!4}8l-W{v`Figg`!ZmOow!CnI7rgG6OQWWnn1HEel8C zZkZXGof*Cru#q;$$AYodL$j>KJMcSAn}>!MDBlKl01@DW+1noe{r0j~rnkaI5(FW^ zcLtwJD8h~b2R$NJne(J}`|qHLKjH6-i||V-K3|eJy9Qu}V4QHo`7r-uBjYttn^Jz9oziCFvXbp zW+^@f_&CF}wi$v+SRcT)$$?=!G61&C3k+kEfG*ep;lRr-y}VKfBf+mg#HgolNI~` literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/gearlib.h.F3910DA3D2BE2856.idx b/.cache/clangd/index/gearlib.h.F3910DA3D2BE2856.idx new file mode 100644 index 0000000000000000000000000000000000000000..0c30ac21c2bc31c8cbdc2ba2d97249351bf9ca44 GIT binary patch literal 2644 zcmYjS2~bmK5dI?xyo=-|gvSwrIfx_yQO4o##GicN`M zlxfXL5+j7<@SB~Jm0lr2sNMykMcXS%66V$qX0JZq+uRVF@nd*isP~RBFB8&-)8Flm zsC=wW*l;+vc3{Tc^=}{7)gD}uL8c{jwzj|c?a!K+&arxA$9ZN!YgF zuWND7XKsGjVtq9C=%GM&ue+5yL+=k8uReDvwP9#sYQg^LO`~Nl!RDg0)w!GEHk_T1 zw{OA6GxJR;+KzpV=Zy_b^M3t1Z0oetz17-BlV9DdDz}FBzBHn0vo-fb-H?j>NWUE+ zy9zJ2biV8S{k?TfpJboN55>2OZ~Khg7PkG($vbCF1*|Nm?e3s;19sM(4s2`8pX;0c z!DaH7D>WMF=WnBzZF+g*$<;aA=C$rxQK&qxDNnp>Od*fk)jpS|)mWQn%? zkzr!Zpa-W9Zk)2Yr}*%orOfc7%A}(%D=uc#75a}i*R~({*mu^dOFxBN8+9%vwCK#r z!R1j6LnMvM_o(lTZM#zumZNfC`-=ZbcRNt=i#okIsn=pjd~Efo+Ic@eNo+#di!+m1 zc(H<*xYjKZ|460i8&|}cNwZ2Yh=7-c@7|oo1O5Yh1<)t}AxD+;0qfhqX&!>%=bQ7`Mt+j25AuT3YCPaI32CiB2pqjv=q)qN^;v@or@b!qhQF* zC>TyKP6kU(nX5nSn=wg>0-=D3Fu4l`7kIQoG4!?aL^6Z?p@4_jL&<3=tuG=;7aPI< zu3CF$ZG1o59r@rJSQHijfak{m1MlL9k|!q)<Et$1@#uggsp@f{3dkDr^ z;!|Yasevxjx6;S}0EJxPDHta}b|9-PPc;hwDgXp`3uXl41XONsk=F*uchblR08&mW z1>*$VnE&{3oF;V_jm!X`<+M^TPC$O{`l5Slo*to*2>_IwQVPZixNyC`tRa724TIEh z&3=-8N=`4)D-lVFQBN6k@{e5)s@hAe*Jz}L3^G>cAsAiv$8ct`*}faj><}NH}HuyV!)N zahDB%RuW1Xervo~fabRfqwzXHnBOHF#%m;|Z0lo>Go0R2@8#$Ur&sH{cku%CChR%Z zjIynlBZ10QMLNcd)3|C#$1HIgAB|rZFF+IM^t7&8(lPm*R;Bgt;`Pv)oSwneKsuI~ zGm4FFcw-sPBsRI>^}-ktX!g4|`!wYB~5nc6t<^E&{O9`nI4-IY?FcHMVo*YXDgayg4 zhwIinNo@SoW(6kxgui2Wj>q2`ceeU|svE_55nc|045vaWn0edBa2llP;%Sk#i>E`n zE}j7yx_B03ad>!)fdQ{qI60mq;427}J+3vUO$}~#SpaB1!p{q%+pa1!H%sdaAnZf< zV0lNY+b_KsH~Lcnw1^-G8J_(YQ~Q5O88fdC&}u^MxU}VRknjGcHzk0k37W+sgC`Z3 z2uf(LiJt+I@FIwrVD*DAFMT+SHLn|G(>i;c;ViBe7QYQ1COFHB9zKhSK$w?09L5?4 zVP4>H_*mq{*SZ1bDhPWM-i}t_^@UpqLT86Byftd=a$TP*aAyUfU@?0jnSGc`A@26+(_;2r2kOw(oz0q_9{3 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/glad.c.2284541ED9E18FA5.idx b/.cache/clangd/index/glad.c.2284541ED9E18FA5.idx new file mode 100644 index 0000000000000000000000000000000000000000..528da65da31b5faf9381801fda9b6d30bbc0290e GIT binary patch literal 84256 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 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/glad.h.78E2B57030F616B4.idx b/.cache/clangd/index/glad.h.78E2B57030F616B4.idx new file mode 100644 index 0000000000000000000000000000000000000000..23190cf579070ed2912d2d73fbdaa22ff6343c46 GIT binary patch literal 165762 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 ClZNGv@aJlVm1~mY=?a zReLH2Psz-=<;SZnvmd-Zgx(J~^+Y%IO8xS149;7cBpUGWjwMx_pB z+LfT4nB*%zn!9N77J!)ty5NDXunMy)41V?b(P^0R(*u4aSfOWR(r))DUt-2m4lIdo z$L-dq=p6FGOrAE#BgTRaL!H-*UwjEO#UfBlqTKvjFm+`_N$6obA}B^?k|krszkhoe z=tkf&K6=21gf{;C&!5YzgOf4SuMPT19*^==FZpMoGyg(;@KhH(B{tD?ztt@js#%yx zkb(qaBKlQwEx}C@h8b&ZV682TV~U#aC9B|l%*0ATEE#=8gQhDwo8J6|w2l>zjui_Z z$Hn%`hgXXR{zC7=Wf^;!+9?Tz8ma^7V$T%A*VH@fq7ZFSqq&*u`}pGY{q*MO|=53ht1nvi)Pd+ZSw497RIB zWvn-qBkQb;IV&@9^Pbqy#2tgL-=%UYPmVl_`Xowf7DW9k|jQOtDBm;Ch-64OKWz%ZSj{LLw)i@ z1D+7yIsWW964EGP8zrCe|9wu#BMEm6=d&>FnBOdw4&8-?G(*q~1z(gQUn(DZTU%hJ zPy`A|T*5Qkx0w3;9fp|`1}B6Pl6YWsJgNdW(?x3NLdD5Ec@=J20(ru;bZL+XZPrVd0 z@1KQ#BPLm5m`oO?jpD!lIlg%fmiAH%UXpl)Yu*oAu%Pz-pdZ=Oy&E??SIXv6ZW?(~&Pi_=@3ZHsvp8vE^nNVdP7l}-Kb}kbrvCI` zy%iSHA!j=%XP{0w(OIC zy5gV3%Ep(NsbxSdabqaDGQQ2BM)MEqbAJW!R|s2He=;p+_u9(LAHt- zNUI@J4NVT+5eJSuAxruy%V7SdS5a8VbtSm26sB|YR{b(PuC^L8K{60Tc4midGavS5 zpbay20N4Q~KjalQ*wt{kT2G*V?*ql82Z|qgrYf>__p;$*PN2T<(FQ&w9H`6Y%9GvY zi!k#{7d#`*$LGgnY(EpQ1v7pC_yM8+wp@2AdUhiNGX*-JfMm(@J9;c?`dszDsGcG% zP(=JC)m;;1`UhFeWN3j5Vprv}gCeb?02@Vu`gQv_uI-TjfXg^Dz?tmSFPQSD*NKe( zF=;v=jc5RSV*g(Fa1AbFs{yuTf6e>Qo|AQ3fBqNM(;+tM5DP}5xz8@g?76=im$|MB zuImcZ?UkiR;&v`{#Y~+ps3Vi7%BjPoTeb&bY2F%BZ!)a&XL-@%uT-*?)I_{W$y6y# zCr$i(v1MLmJfE@xsno18Y$mHhm#g7-%}15tic_>e3h}dAd2if}>cm#eWNJVr*>C-R zTFi~>>3x`q7lC+@@W9*~vc3O(JMKU9Se}c(bCK}M>}gh4`h7I}Kcs=J{y1CWfHKA> z-fmg=&zR{^nfH)YmozuK()Zu3SXzz_$kEa8ui3!rQ?ZB79QhA5JzZ*$PEB(%q)dj? zEL3c36`i&nLLg0q?N*0x>8c`xNb=FV@YM_F%?N1nfk@Sjh+YN6m0lPjn=!5^KkZ?d{hT zC(+Z07J+DzG&6VIoB+S)!%iZV{2}X4WmyP-OaL4)_1irfn{`o_h9v6FEeEr(5IY@U zN9MyvWZx9e`g#s#asbF7MhN3ASDd!(o{JfO2KW;fZ~kZ=QZ`ULERc8rPVMwuxm&p! zmwBoLPsz!+Kkr=n=IXOUCsCOQu~`Ih9yLgNU-ZvE7PuJ?#q2{WaCw86X%HJ_eiu;a ze$Orq6S|GG~8} znR~k69@%x{gL@&B-iX;ZRKBDRF*kY*=LfU&4QC?9c>RfmoYn!S$!jn|3*Ix|@-JrE zbU+(9fVW~*#KMUuY%!Cg4RVOpmk+3gDt42wZjuj;mF^P8T{3!pVBkI7q!)!hJHFSh zt&Fok5AKX)%o&o=>nDxJq>m@ZWARoRU_}O~`D0FsG+(7-CYu4-#QAX&9A$O$`wYzZ zDu6H9FyoIWpn5LK%`cKY8l4a+d(pB6m${__ZV}h0{e#zSYW`@%%o`o>hMX$-DD6n( z@)gf86QKhlbcD@A-gtrPah4f66Z^)o-_BM~zC79zF@<8|La|_MJ8(BBN~D~CnTHa? zhh(;VHS;*gwf)2ry(t|E(4i29NInz>>f(z^_9EpvbVHr4R_+gls|xR<9W@^%&GBM z`!dDoGKH{USIz6KoG|h}79Xeu0?GVRQni1f)!G)e_6$N<5a9tvT{taQaDmuTpm6x^?W)m6D$M4#J7MCcY-RupkyylAN)Wi z6R0%(eVDC%*v=i}_^6TS*7IWaJe2{*U(EQ6+4!kuOZ%6W>t8*p%sNr8vPNC-Mh@PP zjmFK;^!3F0q1H%IUDxJZX!C)QdqqIk@0GeRJz}vmng8 zW57E`IH7*yNJPr%QCXOA0>J5m40fL-jWF1M7c(_FpoYx4rhUaG7PWL*qbC^&4I|0Q zhmWy=lyy_FZj@8IyNYpFnfgEQ%^Lo0tN|Z@0Nt9QW;4_u?nq~_x(FHlWro50TBlit88#xp+j#A(# z73O$xro98fA=5Earv>WB)cc=@j<<$x^!i^J1#l#TYwoYd^R?DTV#Y}VoFsxV=;e@{ z%xPz0F_WeR(ulP3yPoRz-Ep?48}op19uT^*qVvw$-<{HNnKJ;K0YiALYqt7rJAA1G zmuXZPHj;VnVA$x@-uvrtnJy*hA}h*@MrV7ImoG8X!hjZ%jFXQQh`P8{V$@1`=0BG( z&n1STo#Em3r`j_7wAY_n7cz*2bTgovSn&C{XGlmXWJ@WRnli|g!QsJ~3;I?Mc~O4p zfakr;d8VgOi~D89{p2jxlfldHZ@(UQ3O%O~1qdPAew}ajjBRq6h?)0V;5|8OY4}TY z=!(mqVCJb7cuHpWy+$+Fjw+po>nT;5mJ+kf<8x_8v^qDPLdsT4*=p&BK4CRdrbcSG z{P^Aga9-cr(Q$I+#b1tM@r62|kfhpe4%sod;L{UWNS=btQ_SWc5BFx~E4XXytD%1T z=g(@0xodJoOQG+Ig`~(p3K{G2t~~rDZ*m~kv0i0RPf{U`7d2XHN|JDy0xeKLJ{rG= zgpa@R)jiBuDS?$z*vI0t$oA=_m{qqJiqN}nDCde9lEtZ!4^=*;BPCK+X{33bbY`&=cA*2KC?ql z(pwvN6Fa@9Sgh>U{DOtVsEuMs0v+^+R&$s68prnzk9Iz?A5mXoKU{tk3*mf!Uy!$r zk9UPMxvXR_Q=fjM|vunj}2baiS4Fz5FX2Go1i*5|aRL#YR0`CmvQuKCw1E4`%kvO2cIW#2|op(Y>`hIAdN^ z0cIlgK_tm5@Vun$PsiC6m??pvgd8E#X)oWp$PU<}{<|armxvcfu-UNBcP`h*%xx`j zn~WrUm{8Oyk0tD5>VN!1!lmvs;WK&WblEPt{Nf)hBvlWjl8uie8xQQRuCu{Rwl>Hn zliACaVaf;9wwQS#124!+{BZ8YW|wqVd)z5-L>EJ=<>N9pW#A^U;cN>z+GKR3 z05hRlAe0`|xG$k-an$X_dCYGo$;f#X{-D~J7;S&xOh)dFuxPAUF{ zL=B8pkBB9vbSbU;Bn@BmG-_U1n=o_W{KHfKG-}=O&q%Z4+Z-%FlkOqZ8 z1DQ`Xt=s*pTh8>;=wT=6fF!c$;3MH8?Smw25Osj@qJ+69G5!9huic$2*N&ZIz9V?z z!zEZqh91Zu=4n1U8WK{jWXs8JJ@=2RP;!@v+mQEzV)N0bjC9c(v(nit2~wm?_r=a{^VF;Mdf?NBq$LiQ~DaE5gbGUuS_Z!fP@)U4_${&gTEV{hwWEF?)6BoWVY zKBgiPQmSA}6(7!U$`nkQVido$NSRYCx%9=qSjbH|xJjI-c_)7KcE&|1|Tr zZun~57ZJG3IW;(^7TQ(Zyt*gYHx@HZBG5z*6R%me_M3>>M$Gu@0Doc_YRt&{=D@uk z%-HGzTV28YW4gQbx}M(Wj;Lq77~nORtB0I&n#!@0sBUy9c1QdQ>D1pbW1}_HhPa;a;oOk;Tos#3GT3t3=c%}B6z?W= z!>iKMe@`M7@|XdSiBZJ(@SzC~OEWO@RtLN#f7@$v+d8*#3!G37U(+|eMvjN^G5S%( z9%9ym+OqW&a|=jAem%Kn)ebB3V}CfIZhNExkI3nZwx4=?V&pbXNJxWzVQL8mCcI+e;=5nKO^~m(GSk3Vtes0d-BPS`_?MDarRm) z{-y}rB*w<pL*xt2FRc3eL6bCa?eR+%`)rEmZ_k z$>H1Z?N|O-AhpBHD+PF^5Jt$a%4R!TKZ?N8-l@&rk;%~FbxCG%JEAeut1#~+$BkZp zI@9t*33Ng2iBOJ+Ab+P%nzOFE{Wix1b(fD0@X-+*i1ZM`5sGvRG8pc~=!f$#EGn)Ot|JPz%UpoWZ8DZ~>KlXorN#Z?yQ{f=- zmg~Er{)>Si1`4ag$`=o()xO(|nKSy}42fg4WW;*UH=Z$FC} zR{&grU;{oHtgkhuvmY~_a^OiUz0TLm7JY3#%pGaaq6b>YjDt^minKnhGCEECQ~3a~ zsQ*%xY${3M$GwPYO70qV1&)TF{=4;^`_k@p&(&M8_)cxmNlvNqf!mRgP$?TqJnc9k zVN&ig(W|vw^nU4Kf4l$2F1XnmjD-~Hfcf;1Fn6Xy?dxh|p@kgPN_I+Sz zANjNFE8m>0vKr}un5SZcr^NY>j~|Lux};(+Q3GMHiV0R36ig|*Zld}-^vv&T{9KOB z@Ic*mO%Ght6MT^Q6lF+!k7isCNnFe4&p_g<#B3F1!LAlF)#Bm2S#W84r;$rwA{L(w zK{gbo+)GxTKjZPP0BfJ7lBB7Gw`@bs)x$ZPig1~J73e2U!ap6U^6t7*gPBk@2qj1V z_!ALG*<3gxmrVLCV^_8=-(}>98kngIGRbF<&(edMQ3%*V60wVWa7BQ-jJ6%${(6Jw zx#}-(yh>aopNWOoYjF!9L0O&Er>0LHw$c*`IVWY$QQi(dQpQI*%sV{n=rmDz-kXV? znwu?H`+YOj*pzrdsvqh_R+SR#HE3~Hfo%J;4r0$XL5$wyHVisE5e!yWW zuhRibt)o=drUO=5N2#1lzgcVj@j(iv)6(^)rN3-iXsVk&WV|saG+64S6)g3j^Ab37 zc?mo}%u5g{T^1?*K5O3A319VHMFFAXq&wrJd%uy-ZPyN(8^-}RrQ2^xck|J6I3Pv3 zEk(ME-+1SMbm{VR=@0x?A_vq-SJz3`&sua={Z)t-l94ChnkWB_3jgoNh5rxwF#Nwi z+~5zl@*8Sgp+NXuAY84i-IH{%?&l&7NK|Y|RP22J-LaXwZT|d>15y?Lr7CQ+D%Q@= zNxx8kkwY>RD>D>7J~8(l(6-Nd!~uB-##X=D&Y?ZRDQkSV)`< z#1X4Otm9W@pUAbmQN{UcvwSl9GA)k$=->_!W+LQ95yTmaw+o^&HPT@ zhiTrZFVeL@I^1e?E58VN*Pc}rY-Q%#(CnY-*}^5N|mvx)H*m##-z!Nnkt&c zg_r}ac`I9fy|d#REaavd+$8I`$gfvzoVEP`X0GXiYh$ z)d{LNTFOR~W^n(57%6uRJK*XQ`jJ%B>vMYLkffLXSjS=wTTE?%m1vj}jj7$yv$wA{ zjMU+?-yo?a61IeTElVX#sl@bMGlkMHN z9YL#HlGAa;Q$$mQnKRdUKgfSDU2l0bHR||?vZ}iqev(F%W6j$XpiLpH&gQE_;$5Sv zu;`l-$xZS-5g+=kHf@H+7b$v5GV&BT1pLKy*W@4bKJi7ZEz_`N)av4{hPkUT`RdK5 z2EYAx@OkAq^Y)C4bYIk&7XY|G=CgdLbR^`wnmw=n&_BUn&G@TFAM!f)c2(q(J1&wR zbh~EW#zK0uK@XXY`-g8DJ1+JPX0D6Dbz=Cwf1&b~^^H4N$7VU(EdOw8p+(NL$c@W= zt{i_U`SMlOw=1!fNp2w{Dkb4Sj+c7d3EE3-eh%WdYLOQN=n^TcKxE z%o&yGxyGc?>@xd8J`*(R$5&E=S0v&CAI%Ukt-zp_WJLCO^1J=r@K5|uw>=esrzCoE z{N7#J?QjNW+O$9$*>XBunscnHXO16IsT#1=ln+!5U}}It@a6*}Z~k<9tm$t#nwpkIb@hnag_M zvYs$#^67PuO8t=Sr+lCWATt0*OmA?X+*5V%>!OS=%QF{uV+Zt{U+y;N)hU@5$bRFWjvoR0#)p+Vx1{RAQu(mqB7$LfX?6d z6l~nN`8>MynUsA-oe5}_GObc}`HIkK-RDInlrdwskAF>hudL#7>?@tNl1{Ga@mGvhwi zq*V{Jk`KyvgGTGShqquRSRVwFF1LDeH{r9b+Wx4^OB9k45&|dO=IJqG*<{T0iY2`y zK{lVG616Kz%tle$=-0%|HSwsivyWDO&aBYWTV$EHf5#py#7!=7lMAz3eo>7o4wIUO zNd-&w_*KrYV?X!8Wd=3l2Fc1*^_Q0KeU-OAdUN7LAdWau<{tm!zVCtz%+%_FTH*^j zyYr#n$NgUipfZmDctkwl7aJWoRhoZ105!u-&Ds%f1n%+JtGR2~lw%8|O_PnQdiLwZ zRODJ=AuqMSOLBPRsfoGQmT`%gDbfK&I>O37V!z8i<)RAA^r=CgTKGVw7>~H*HR*K# zYPyx$+)6!%f6e(+b4Vq3si8YLOUkL_A?2=Nd{nK0^vPjMzIunnr$|7GM3~OThCS;X zazcIq33(@F-%)>n9w`^4hUJ6S@aY`Ttq;}gL$$DL$<^1O=C0x0;`&(qtpTYI*BLI< z-8u3CQaWG4=1YXn+=@E~TmwU3?7q6NYCNv(rfcic~AEc1YN@o4HCEq_i zh;^(`vlZ$O4dD;eoOg&J?<_L1WYWYt=^j{!y%gA!Q%ydHOFBc=Bx1%#1$sgo zG4ATfASA6>Gp1Q1IAbmRYJ=J9F&q9@MjO}?fA*iM!U{Xg{=`h2K8Vv7{t~&$<7=Ag z|HVw2Hb^7u3k|xRI#&! zb*B6}T_lW)Wb}jF;Z=Y5t)1h0`NgU;pPaaeo>Q|9XeK7t>~$?kCd<+>W3K`B#IKXL zm>}_~3O1Fzyxd~@jr;P>y_DQ1SjT3mK{NRyZ?X!~tljV&i%%AT zWO6D!@>+qRah?g38sfBHV^#`lq$`LX!ME)UW;&I_J4xuAPtQDdU6bL78BhH&p8CRHylq!xrqQZv!RXoc zi9nx7_;~YqZ&ByxN!UDzu%*Rye!hgehVow${Q%Xr`r~^qBOwDiV1Rr&YY%st&3&}* zGE%lwe^{x$FoxZ!k9-Hp|HEZ!rJzRiVK3Op$nPdm~QnYoLx-;iT9TrYJ1?ix~8x?s{H#pn9Z zEh6vCvCRxYy;LOvRpfNlXREt^^WT<>D;`jr4v-ORMz><}*ItitnMOU(NCv3xMZY#h zpL>GK)XGQH%IEPdwu@aE^Ji)cF7rwaUXh#}dQJ0Ym+OBNiZpQ215U&mvAZQ=;aNj2 z>ovy=D!?F#7^b!O+wE~7^DyI~4Lrze&F@^GP6<{S29uARR{rcSx2``PikLfc!#m_` z$?&U_wWVJsV`&Z&;6MV}y^i%+IP_FWDC)>4H5)~p=)b0BuBk`buK8z7&)e*0y!8W# zzo{B=QzbNgsc!AW6E^ZN)C>J#pS7d* z?(Fp$d;PJ)tVY*(-*BJ9hvGy+IyB=t$b5FvIv9VtvKd#LA_pmQQ~qfLyi16Vp4^HV zUmf79BQSO)Ca2ZDA6-EeCrQ{OGPU7eon#4j8Sn>1wZHz_+)0PIg4%Ui7hEPO4*1+0 zNTqOzNw`Fq(ePQAk@&X~_O0YIUL{WaI|+AU&$U0NU?_40`0!^mtC%ftm&NkQ^wq)wj z*-P=QiE1{HvM1b7GdI+uCoN4oX0!C_qWJA$Av@wv;QI1)K|a}-Yu#kM;)-@0)-gzB z9z?7{1MZUU%*{7(8D{{Ti9_tA#<^+Bmp{f8+lg5_%9+7l%3_Ul~t|1cAz3xbH7Lut{^+EUSN z%rq)MBRR65JiIWzX@h<^YQ}pNcu%(M)`-5Vi8mOAnHpVCL)KM%_G+Z;Eh&483P)2Q zWeTLGO~q_SQCUeUpOhTkS}$SisaN))gn1}2;7@BT{HJ03^uOzIeW}_Yl}s9%WIwE3 z*V!J9gtW@oR?3Ozxs0>a8uNzR??%o#+qA$S0`>iSnaO)H3uALH=;e<$#f*){)P~qR z{v7Vw^51V0FcYUTj3dKRwx!LOfhAu@po%?|tcUW$rHZGL@l+cAJ7@Ir(2?3pCu$z) zKKtsM2-J_!Y7k8#*NvDNwc_=`{g^o=0;fnoi7|PbZ!L8B2a7)=WzSFv-khY|Ono>% zacAmsAM6@?2Me(f0Sgl0d(*#aqpO$uvG(cEG#v`xrE1OIrk>(dg;G#%a2nLPovg+MA5;IvckVQN- zkL&HbI;CquB617@1lpqcCzuV_q28ZpWdGp;J&N?z9;4qxfyHu+$thXFmrt0_yT z{s*rGmoej`1$>A<=DD5g+sC;WN1&G$yb`cUANRxO%$5PwmY#Z71;d=h1oV!eR-*j3NDYNRnJ4N!@MvG6Q zP~TT*g9>fIC^>y}TGaRFS7PQl1D=z^bm!ii7N=Hi#LS>J7$hM@oR?$jK`5wYmB-?1+j-@{CU95j&A?8;r9Hf?`YU?xfnL=jhci)?@E z2TNKo<0S)LBZ56^&mD3d%b$7u@ls^Q z>mLoTp-u@eC9@^#Y?5(OA=E*<(GnK7j8Vpnl~vy6Nzi{P2{p(!=6^mykx*j zW(2RF;ZcS5wm3E#NsE`7#gkwmd@^X%rhWz6ulVpwJ)mF)6eHhHQvH1MTNB_haNKP0 z^t@Agf@sE1F*lmL$PAQ&zK3< z1>w5Ff-CS!|Jgt4Z84L>fE;pkF!0DHF3~UCF=MF>EVYH01T*dreb@GD6jte!l08L@ zs&-1oPH9+kA|$^2>vrZuYTTVwkK?hBKwS_>67j^Wyf#9&HwiOI3`ipBCCBf)y6V`o zCd_o`f)0}Ph7X~O`r@I&@S)36F#R^8i&h1BVQI&z?nPqBcszoa&~M8Xr!E2&uVQS*PeOoa}pAo-v8 zppmG|W0m1!GQZFhKXsn6>O3wJstZENES>-CpfdT&5&6V9bA8~@Dbb7Ca2b1DU{4Z~ z@}4-Tm+GW!9kmxu1yLA^(1V|FUJP)p4k+TeUzdSuyi2K}bj(_Z6q+ zcJWefATs60r7!;eW9ul}omj|ODL5+~%6F))?BVX~4KA3m0lA)ST4OQvO2=X6}l>U9z>d zzV`5yka?fR<3FVyNG6t=Q%@OF&-veDCV>G7#3wWL(#aWzhVRDASq(T#LR5UEb92!e z)gH_gFra{xdE|SztF7>VjFl8vk!T|W8&{oadAbjmank{A#N4gbp5J%f{%>(ME|UmBBJtAXV^*LtRZ6oe@--U#Ci{tA z-xDmYhI61MXTl`9w`T6GT$6x$=YkfvK!Scu8v4h)z$IP@= zxqn{jE{rS0ObP>1hzY)=e?ysTb|q%w#2`*=%D-m3zdUOCAQ(1CqPN%280-&O(TmIU z>482yp(7V>TClo&V;^Q*wSX&W`o5{JrCXczt|MvJ;jrr@^OW_bLkSO~=VRur-1IH+ zXPQ|!T))xD?>g$pVhJdg2%Gj|wrZ-9F!NFcUaACXW8NG-9VTwaj5h?{B-g>(wPy$+j}P^E(DipmxFd<#`L&kX_)sc3^M_G zAb@N@&q*E}k!tcd5lOqI9C=MC_1MWnjtdr&DrZwk2vSZ+nw+~vOrNCqZcP63(oy}+qYoAqVj-a- z5K7MAOo_R>ypiC*e=Wk9;{oDV^4_GB{G3!lyoVXUB6?2yX?*=t+ZSPz+`4%kXoep?M zMp3hqFWzhS9L3BHJ#a%$sCfIwr3+V__zyGfGSE&YO1?Tjyq~rq0at7(V=YOT39e!* z8Fv}*q0LMGtXZT}l8JA%g{&=gSnCvIPC?V!(Zvb+T2}Q3&zyY{dh0f>uT%v}$!fKQ zJz(_bgl5b%D?qbC*m2}TP@xX3hNjhIJ0-%^cg&T zBHT;sB$oC@3Eq$?D4W)}Uc15qGxtQ`9{Ca{bWBmXO}~nn25rzl@*&%}zjC#G5{a33 zT@X)B%JE4PkZyj^$d8x`oe#hHscnRQGGcDX4Q~)bar++2>M8RlCZo4GT+D`3(M==7 zTqqn=LdcaywaKoBvwPMYye^+85y(+esT08WqxCy@*KmX_RFQMjyLc>rpJ}n#h z;@xL1zF7Qg0A7=$!zFPCX9vZf$Kv0q*msop9u?E0GUH=Jz5aOf!uvNOaBsD0#O`*`hI2ZUr%34k6`AU9yq5b zI2du;>i2!repsb0F_-9QD*w^rwC@&kmuc&+ta+*<-&SmJ+7Wd4#nlw_RIF7-*5ug9 zjjZ7tT*pUX@hnr$-xZ^ri4Rp<8Lb0)cX`y zVj=w^&`&5d&pfU|=qXxAQz%9Y_+11?41YE|E0gfb!H*X(CWeTKb1;n=DFsA<>>k!Tj0KE_T zY$}zwJx!lU<4zy`|H>2(skj9(JUP zy9~zlT>K$Vv}a+0si(#Igir9Toocp|$|&8XX1dhoD-Iee+%(_4FIjf@m*_peq@ivL zk$@11&~5T5;MF9V3)ZAmW?V{!=H8rzP5XLcaTzZFyvTMRpL+*2^tFP0tq@kKoQ`i4 z+{F%gRPtuv#Qe6|zs=lccA^3cd8Gqhkv-%|fz}(3$JAo&QvjPnohnTQOe!$Uj@n!D zMUTUx&|xis1)n{_Lh9t8j`(Boha`|DPD<8E`Jsu-S;;sn$FKWqXljGUzJ=RQZuvHM zF6Wod-RhtN9LTC>Wx4EP;HFjS=wWmzOuERH(5I2`zR|fgxXf(;Zj-=gvsOE7RC(^h zOr{iMlJnIWd%MIzw)-)2UIosRFXxl*`>a#<+NC392W9LawHaU`XDsB#-cLvBxqmO3 z=v`&i$DFYHU&SJDoA|>7F4rtLyUPa)xh-aIQ<2aL#auioBR;&;SC8|0=1;kWg-iug z<-C_}k&*evty89Dpq}W~0^M4|7!+PQ_WEaT-(toU0#}kzWwPW|^3>@+VkS-(#F10a zM}CP}9K2x@W@1DjhHRUyEuJ+hz4%}TYOjMn>p&S!9rYPU{jvODu3Qyp`uT>y42HXP z1Q;O%6Xf0}3oU3tf}3)Hr53cL04ptMMFG}Y(3%2HX~9zjnBMHUe#Yrotg)>K*pdK# z-~P3%c*-xySmQi3n@7b9%2#toBux1e6IUHSnL1saf`t@HKp|NVp1hSgkZSb^Gef~p zA=vl4lj93A%b#YT*X**yA0gy&EHs3vosIr@1i|eUYOsH0T$AA5H zJbd~jZR#`J40}0iPwiHmmNTd2CN;9P!(JXOS(-o3MD#YU6^qZ(23f?hjnCeUnsHt_ z{5)}9J^?|zaUWwxBEc6=G%h-A<+Q&l~^H65eq@J>2;l#hS9iDviu77?V7SgQ; zx{0Of7}LCA&k1EVYG9BK2qKYu_nmurVW!t?%v{j|SIDXgL)fgq8SiPPVh3N z4|o69K0OCX>(l|AWWCd#1FZi2X?_k;wo%SDQZM2oIrB(v{M+(A^TjDPs}ucee|Ffk zEeG{Qg1&izzVOBD*7|D3D>Dx)K1&~D=?lg@o$V3*Klp}Y@qIG3k2(+0FXKWl8S#;r z?uwc^{*_(BLek|Ro#aQ@ed6MZuJxUm>Cgim#2E39&4}+;T%4SX+VxBVo=F5>r!Dc% zgVtsR=c0DK(6BG4J@GaT)210+`16imW*t7V%(C+4IN(7=vAo9VH zP1joIY{JZ-9vCF^&AT7fId_}5V&=3qI8EFdEh|MwbE2>0p>|~fHVX(FuG|=t4Y+GK zANhxK30+^L z?89X;^^G#g?0jI=(_zOwopHr>GS-e-_}j}Edzpc9yY4GD7bD?VJhBq*2!g()0&aM1GXt85`1fnorg@v^Vj=lrHlGr5OU#9H z7|us`Xo)m!PpbSG3%MZyH%M-u?Y4S18p}7`>et~^84X4Y^8xNJ6A54>nNxB=G=R|* z5C>o!1zZR4ItAPW@FoSM0GL7n=>VovKo)>m6p#yGE(P2I@D>FW0$4}^#Q+vlKpB8# z6mTEF`xNj1zy}mi4PZ3|)B#vW0Sy2)P(TxaO%(7Hz^4@O48Ug;@B+XW6wnS}I|aM} z@C^lY0oX+W?*M#90lfhBQosO!0~BB>hL$9%Gxuz5#L$KU?8MNH0vyE9fdZVw(1`+E z#n6=kJjBq00=&i0n*w~qN*}SX+~f2(FNWu-J1&Uf1q!$*Hn=Djj!$t#E{ox1>W(lm z45NT>F$|}GC^3wpfEY21p@4X?CSELfjc~OjieVykN0JyOQ9z~`W>P?o80Jtwz8L0H zz-=+SO#yer@D2r(ieV`Q+!Mol6i^|C6%I%RH)8mP0=mSoivs$@u#W-;#c+@UtR&D%BFvDuUbmG%TMDq3Kzj;s zlt4!caF#%43UHG^Hwy5SKu-$rlR!TT2#~-43J8+GAPNYUz+egpmB3I6xGI5HDIih; zBPk$S0;4G)P6Fd7AV~s~C?Hh=Qz;-rqREha_?~7JCc6narb&Pm}p3hvpn!HMY^Q)XQuu}fx}>m+0^UjCI|}HP!d?m( zkir29u#`bd*@pwHjSSjQfSnB5QGkOCI#7U<3_4MOs|>nQfQJlvP=L1#dQ*Up4Ej*O zc^N!U0T*QO0tH-@!HX1dSq3jtK$r}MQ9!s1hEqV43`S8vj10z5K)ejbQ$V5&CQ?9> z3?@-Pstl%5K!yxvP(Zc}W>Y|(4CYZlfeaQdx_1-z2MR}|18gB=vmErZ<@ z&?AFA6woJweH1V#gM$=cC5Kk>4_|FtIkcq!dpWeH07p4=qyTq0bf*9>IrO4{b8>i& z0{rCAj{*YZFn|JrW=!sIZF0>b4moC2ccFp2_VQ;;^i=&0utq#L=ts`8`zTM zFp0V&RSr`rAVUr_C?H!7vne1?4)Z9WKn@EiphymjD4;|RODN#39NwjXaycxgfJ!;6 zq<|VZtf7ENI*ZX$EqN#qKec)SW5v9A$&*yk05+R0Z$-&LIEvM(?Zqq9Kz?+9WNn# zNdd1Rd`$tJP}xZm-Eo?}h43wP$9o9hQ$Rn2{S;uKfEFZHDksBQ0j(+ElmecjfYSVQ9u_8a91eZNeTz97B2<#qV71SfafT{PXYZXAV2{FC?H6o2_p7WPH30{ zhEaEfD_}SUL@8ht1;i*|3JD!u^riqGrN&43;nMuP5}v2-xS)g=DBz+J zUZjA_N_d$9!jv$K0>YIroC2bhFp2_VlrV+@;*~I-0uq%lkphyGFo^m5 zRKi9Ic&vnvDWF*in<=1G30odCG4hv9wqFdfIcPcqkusr z9Ham%6|_=Ob6gd)r2u;sw5I?^6?CKkXBBj&05=tMqX178^rV2ZDtMLxd{xkw0{m6b zp8^6^FpvT+so*6F2vNZh3b>+zS12Gt1tTcnnhIW{fLIlbrGNw#OrU@pDtLne(p4~> z0WCuY&g};DHK0pnz%>tfqiE6|AFx z1{G|efF>1eqJXC=_>=;kso*mTc%gzXD4<;h+bQ6U3cjI$E*0#efOjhRjskjBu$KY` zRB(U-EY;9b{o#viqlPvVV5f$56yTs%IH*4~LpiCHPQ;^*8-iWc(3L9Up@tq5;H`$< z|3}q%heeSz4ZN4I^zP2i?#}F;tA`5adkyCq&eJms<}5}q=N!)LsUXRKiYN+-A_$6# zAP8atK@dbxG75?yC`t|rq9}ed{XMg@^*sB}{;IpCrzdrHRaXJv&CuQe_%O5&0KN?E z3xGdE`vVZj(18F1F?0|B*BSac03i$=0zeqUhKZ5#xO0hM=m=0EilL(bxW~}<0ElMj zXaHgvIu?Lgyk)aa-c*fAr07z%(bO5p#ItzeYhRy{bkD>Dbc+JqS0VrhXLI8>x zx)^}>4E-K}j|}}0fC@%k0j_>ELsx?mbqrkxz-Na348RwL{Q`RZ8$*8sC4MmU4*=|0 z+MYGMaUEIO5dasKb^+iJOCJKjjiucHIL^|?0q|gH4*)z_+7kdTmi7YR97~@A-~vlu z0Kku>{QwAH=>Pz(u=EuGuCeqr0B*4K4FGPk^i2S6vGgqfZnN}l0PeE%T>u`i^aB7M zvh+g$9?<07td-Q2^Yvv^xMNwe(2 zv=0EjTG|%?e=Y3~K%kZm1RzLD2LW(hOJ4^dL`#PN5T>QW0Ep1i5dcJK=_mm1Y3X|a zL~H420AjUtECBIZIv#*TEu9EJvX)K;AXQ7J0+6Pq(*VfS(wQRooVobO)3wWqXGoq( zmj|}y=c}aos{aXoiz%DWH=KLOo**k6?+?>6C)W`oXT0!e7KxFbtT3SiBE81g+288X=x}@*5IvenX zXuZzpu8U5j+`|&gaKElXc-54w?!!D*^-1RagKBA9D=yEB$%u}w96B(WKb;`CMUZ@e z;2|0~bHe@f`!h(L1~c3s?kzjs!}GV_k1r&W??(8$*f|F$ER~PBzJf@;GWe_L!r8WC zPU?r2bwtu)id#gFx!4~g-&fe~CX!MkTq?Skj+j(8qUp6GX`8pIy|?IF-ZfbkSXg?P z)JZbJNurnRgtrR{di@eYB)-PjSMMznz*5+a@Fj4~pPv14Nzq$!-7TI7vZ!noHlf)zC}xK(QW8IyrK_1aVUP>A*@S% ze^;W!9GmMyWXe3Bf42STMpV2}>)wF8i-l@wq1r--ve75q<;8~iXNigzYWzanEI8WD zW6!(e7m4H$g%63l-X2%)vv-^+P2v0KiWXlH!$Zb;bsYZe8BHXQP4Qzf3!HLcj(pHa zCWSw%$E@x#2!x%;N)y@k1N}dLTNd-RTk4p=aqDLHCQ7`Fv6tAu$8_o_B6%jk z&%~JXf7Zxi<4(*ZlDnq(uDDye?_1mOG1KM~iMJGcOZ5SAgs9W}Bk88GbkhtJ9?7-K zBFY|HpCEOpW*VKNlmg6z$09@~td{)Cs~kNZi`}zxd~o zpYS6h>5Kd7w>UUm4Bx0@GYLN@!RN%hd+YAAhuTlfA(C54d`qeK#}o39^T+p)cl8kS zkN4|j(q>{*BC$2nE49e$3G zZf&2+U)fSQE)_Ri3mHUsB^T+|7scI9+)L1p=6)T5TeCrDjjade<;QgXp0p^HZ==1& z++L%P5qc=G#w>RARw7BE+ogz)`Mb|+x=(ntBUQp_TYwj|+I%DF{keHz;}-r=-fz^t z{iH!oX4px5Ia*!q7}52TGtu=Hw|OfDLGX;3<(B7skkpAa!?9w9uZ}}!uf1u0g49W6 zbH0h%>tu9S#_|TYcn-4o#R) zZFiSQzEJJIh|#gydQC8i`u7Qu>^Ix5-#W6bPh^p-xJ{0D5*}6$kJ*>LA}4W5 zg-?ljk2+P_7XI`41CcZt;U@8`aDCLW%GYI;L~=)h?}!1 zYs3#HB6-8$H)6c1e_j5b6V@h}Nb)5(U(B*dJu&d4*D1p=>{3`IcY) zFzzdzc3@g$U(;oz=zCe)_h6h4Y3w-Y5EokBVDOnwDdVbHv@=zdqQUw)5t? z=lnHx(U`l4kGY*{@QBf;&J#%))3Hpo+|KDh5oxc z`R3*w!dmyII1DgB09dFk) zZVjEK3-@}lc!$Yf3F}>mf&w)z5Wns-b1y&j@x4RZ_f4+*CO3THHOr;V@-~y#OzhW5 zYTYqKUGit`*7$V((qvKXv&7e0!=ET({LEsa{;C{b6+ai}D}3sn4=+#W-{*T(dt1Hp zh-I$LUB5~QsKD!rQFe+Evy8aSPi&q)s%-|}l?ROQ0daULWai-OOt+k_-^W=S`DDRC zx84~%_fdB65jWGW`D*!Z_X&M6_|DIwJ7&>(XMClwq zYjytMJ#k4Zy`*i|F|BakwXCCHKB95E!_*3LUUw_pA(lW)>hs{K{*76@9u)pw$+Igz|# zJG>IVhH<)}A-;1u5N&lDTqlNG$vX6F=9tiBM3N@MX)^utZkwYL8^!!pMDk6BzsdAb z&BjRDeKhTJm`I$}*jc=jr>(2RG5>^-7QAD-z7u!h_iX3i`HWc-IrTW1E)ImdcqEfP zlC>5xi0b~h(4)<=ETX<%itEMjhP$oDdia#(63JU*{8ro;HqCO|tNw#ah{VMNyNKbX zmK=69Ic;v7#dlYW+_FWyf=}<Sm z3H4jo_sb%8Go#A_^UrKXn$2_#XLsbez1mj&eZ6yPsLNoYq*9G5#Rw9{E6cv#vYbsM zS15c%jLp%{Ip?b9odrbl9^?1ouEvR@ZWWcRTu&r!GVCVPhlHNt8>cdU^BTQ`gO7Y(^zh+I`W@+%kMhzH&(}=r?^(l{LKOH?H%x^4_yprNqQhjWgr|ot!Jtj;fk{}}-Bqlqn z+OuOy`;)VY#8rx2rTVBbH)mE>`s}eIl5!JVF2?aVv~1b5;(wNqwgpq|g2k=pb@E}{ z_OcbEPO%9t7UOHoy;j)fnEQGniPqp~js7kck`eOf;~>#Fh@sV6_doMVI{$h$f05%U zT|C$Zm_SJrsJ4k4_IfxpO{mkoc3n3-F@>m)FvbzadgJo@Av)JlV+x4mwhG@?=|6j^ zCZ7_&<`of1tO<@a(GNlY*;X;C^`}2`_yZScbOj)m#2bzDjYgMvwQyl#?~5)=njDN) zFyl$laE&e;Z2P~Zk>1j@7J|M0o$9q??=puR{zMZ^aiX|w(@g!tqc;5vQR1y`>n#RF z=ibd{)!a`fB=5CxPrbI~;Z33>%><{3D+z^;-c{cgJ|L2GjMK${IRSCQzR&ojGKasH zGU&D$Vr-MPsd=5p4*N#xtkA8{@7xl?Qt&kzWtNTNOZC4eb{~>^FV5v9)$&f&Vp^w9 zvY4KKZ{L*5pI)*VP8Or~_n3Y0oYmp|MDm!zkHzO~iDT{lRY~V_S8#Qf>z3>9WbU+Y z;~uwh-wDfp9k#>LvJD6B;vRQ#-vTyvOds~b6b?MXlOACkVQV7?9%Gxw*mm3KNA7pFd@P zpAL^Z>RbGmHCG})K0H7^=F*MwH5Egx-*DiHe9RU3{g|aS;b@%6s0F_cJzM zVY+ZdL@NRY-IR|2VBAglQ~+k*lrJy;6zP#qUL5@I=^9i`OlRcI7zKPNo`GSGw)9Cb{l`^ zz-emzX=>}TUrnF-I{&wW1K!knZ)$7k?#fTo6}NhDAdngsNR1wSaH4s>S<5yK1W}`d zs7ZBwW}klWmwE{YqNrg})aX6;znE9{@c17Alg`M4Iq*=^_n~IcREJ;uI<%g-j@QAA31lWuJn5NtKW+|xp>mmC zxlDf{dk_HwbD7}=Adl&l$MhG*lUxZ$c7`K6@0DBQqG0P@RUB|(SG%yAY)1FC&v)4B zz=3n@jC1U~nlsnEzPO&9MZm&y>}Iyog@Y95y`8Y?T4ASahkxPA`TUCNC+>_p%M<2a47pnXm#(kbC+_c zhINtDutz1ouCT35tFkKNP(6q0In?>rb|)2YIxXW+1BV(oBqW06P!ormIP~wH4?zRU zdQId|Gl!Zv6x@4e;loPhHx9LMsD(p*8Gb*RIp`x}J?)5l z+Og-g0a-n+hYTTL;yvvQ0A}CQE&yQ3J?&}(5Um{>t(_vo58`yBX(yyw?t! zpo)A^HTSdBthe$X*e+WsOqluOZEwB3lduxJ-lB8sR{O(AJF-o1wm1a&wy9R#X?Qk~ z_)D?BnBi`*{l=9KPBy*ZhYe4uc2C72qp|CrUN>j|?%;|m>7Oy@?guy!Nt_vu zGt;lgtgxKT#h7v@k}xR_6Qd(UxK!1z+UiLpQD!*GOdl<9$<4d3=Q(*1NwFC&Hq-Ci z8<(-pQ}V`-NV1J^wzz1sbQ5D9YjuxE8l<>EoSCf4OCHlkSC+?LmK$>24KY&{cRz;6 zxnKK8S&vbfFOSp=f8Khq@<9_(;%ovgPzcl)|X;EOuA3%T)Wf!>Zep`HLv&+JZFT@iOZyZ+gArj6aOHRGBaEzc8Xwv=3DSi(fXa3U#n?Z zpyKhcF{I8BBYZ?mmov^}jrpI)ClbkL6a3jkALpk(9Y3mS^&TQQi19%&hISR>Gjey3 z3z57x#qY&9E54WdzCBZSg-A|F@d>GZe7~vHf9Fd+K7YkumQY$33ha3|Y3WV6%^}N! zOPv-OEfC`S@u%@!(dN4t0&wU>)6L^%YhUw9S~R*A5WwT7M*34@`FzmnofWe~-@bi5 zvftf#=A@{-N@uUq2mayiG6xm+>*6$U=-cV84WBZ4en>hPYyO(=>L4>5BzCCJY|klw z|Lj2|4`ld(Odozrk{7UPY`}D)K9kEuRX-weQer1D^sg|#;`=;6t_zSGruhw&bK$<)3DLjS zt?zLE=-;b}k_Z|{h~cm=?vJOdb(@H!+!&XO-y9(*D}S9_XiFDy0pH=&$W}LXj-*b# z5v~_Ql(rq8dED*wQ6edn;zIGE+2Y#AciE{EZ+LA5j70&XUwl<D&*g5a9Tq@r7LT28)C2Io*)k_Qc>lA5>BgG|@PVqy}3~JYf zNDdm~gJJ}})^1g|C+lp80e(>6Wypp?{iR7XwzG$ld zw%Mkc-&;2CWD(z8XPB;ML`$5Im4?^0RJT;W>d`rB>i5>q!;ARNdM497116y7GU;NcCL-Vgn~XxWF(#=qTL|LF-S8lu#NDD_V@cgCSg?q|OGN~mX^5#1SU z*2U}}QcjMSXoeHTgr*%nO?o_O>`$V^p4Hidh+Gb=)Pc2F^77)!+3T(^5oWaf#b~5- zjo^j-g_3@u+6jj1visNH{j^so&=9$*qrC7W0?SA7g*4AAbohF#JWjMgMk73@6Wc zo!%BXD~8m$roz|6yvy%9oNX~W_^6ogiC9&eSe5>z!W}wJ#r-<&P3|)#IPJ<-MaS}_ zi|1dFqJdgnAed!b)=DpH+jrSI@oujtBi{!`clJ#<{+1l?gAx8scz@M`=??@jfm>> z{x~^as1%2a-)O7Zr|yL72EOB4A8vxf#r#pZcc+k_099YipeHRb}ckWcx__?0;unx%rO2KRzohJ}dRt zy6c{uE(b&J5%rE3JBkhtD|-zbcKyr;B5^Rq4r0vdL0^NrNTPpv&-cYcIesX{2@&oB z{y3Ml7MHd9<1Bu8H~R32outl9BYabw*PJ`>kJ(Ch2O`NZ!x`fDVx+XXrgrpUB8fM{ z@nVjaP7b3^IGWxek^oa2AbM7P-0`SacJRaZe9yX5I(HCa?F1z~LACC@Z$##--%93n zP_E1Q=en$vKaHy_zAAc7dXyJjZ{0|h@=Cs|b>G#7FQp%9=?}HJ^O4`jnT?Iyv>{{k zhwWw>QuHC#J;eI25O)z`G57m5EAY(I;~q~}FKQ_WS<>ovQuHgO`wCt?-zYAHTstA7 z+-%(cZRv;Zq-pPD_?`Gf6dnF@lzG;dNU|`_64&~LB_O`hw^-dR@WGE@r4elV#q!bL z!n*(1d2B^>ZB~FiQE~v|16V)UZQ2GLAA_*|V0cQGe>_Y4{{?h)Cwf!NwkgPg_ zRF{|C!u8WU7CujVG)ja|4(zxo~X`b_-5OYCV2ds_b>2p>LP@?QPhdvRrG?xQ;D zRPUAKIIbG(DjLf66y2RPeAYH1d1{288tLaBzdZZ5<<_hNL=tR@gT+CRF7if2A(#Gx zKaL}9=_rmseK%CMP3d=&)M+rr4WbRVU{$wMi*+waoiKTuFmdD{_(Sp9@+gZuN`F2V zZzRpG&~^Vvu7*ZeBgQZ1E?ljK`?bISb`?9tKGo;G)uM>TKmPp4UyT@393##b9}QXD zedPCRM9B?B>l+HgS9FL%8ltdxvs!aB=l+cy!pbjyJV&+8QEeDB*GVmPQn!EEr`6Ss z8~dyiqHyw!_GK-7#p#WAC$ooh2AY+TN8cDV9K5k^E5L9}4}li?C8kdYIMKu=)%td=InSuiKSMYUhOMj`Zy^ z-w{oX|CRA)TuT41l%61rAM;y{-)og|nW%ro;8%=(=;yuVYh_4m9BF-(Tvr8#r`2-K z*4I%m{Rt^|0;?g;1tH(KgOTU?!Qyk*>qrY}jW%o45U zd?iJl7@ZSic&(iosWW3K_-{0amrFOLO3L};ouVvGiFe)3K(o6wAqUF&J}IVk#k67W zgc4d>LU(BHtKEO~)9c~2&3(c?MY}6zqk(lE+y07#n^-6R|WAx6R2s z#e8eL+n3nMQE-=fHazelODqUTqxsDI5M%HqOAr7%RuIa*dEShAZ((j$g?&Jvw_$sqXQ? ziv#6yTrSsie!Z}N)wm{S4rD8EwnFnEW!>|jHtSY%;DrLeP-s@oX*VmO{hg^CI7v-E zN!bDm+VsQItZWyH#nCPA6`YPJC5}>R?D|Q+ycsu;w~yu0IG5I_x+s5~ z%3eE+10QMpk=8ItI|`@I+P#?rek$yz(mZ)*aV*R^rG*2e=&z^ibt4)06rZpT$RZmG( z&-t&o@3nBND>@FOsVAqYXCL#pT6ep4V>1Ub)l)Lnb6i|!Jb1tQxA`2%QBTfM&yGxu zvON51`XLUyR8M)So@4F4c5d|epuHS;rJnpsJ$u(xRrh&YmhyJ#H|i;G)N=%Pdk$1; zrdMig8}^$I8$Q8$0|#m}(`z)g!Y6|R^_uDR8r#=H?RM>3bLB7GT?2 zUBYfLuxypGt4rA}Z*2!%T%BlJ!RaVtSC_F{y5`57eLB7I9}ZNqt1HnsZDzLu6WH1ocB_E_%t5=>LA!MUZBf_b zO)E$4C{Eh7PTH+PmQ)V7YS+4Iw+gw&IdE9J_ON!VkPd(YN40B@YPW8Ud8C<^AmblZ zckNnt?bhxa=9}&_j&ZN}?$Fb1dLnrr2h+M>F}Dm?^ajoSTK65Pi%R|Y*>U%S{p0TR zPbII?5))h^&ZOqO8l8G*SUq{&2V;4#I4q^ZR}Np*A64-0@DNiRVya)QE8Fx}yR5%V ziKNK{H;LMOT4 <(^ZC8oGU9Bs(C(XV3Y5F#nWxDe|{h5!Ds)cf|!NksD06hAf9 zfBl8a%6}_LSzRfJ5B`Cbeqg&~=6AQdb*+=%$ogKbSMJ+V!GEcYh&bJ^oI-rV2acz3InJB{-n>wJfH?Qq`s;h#>V6{n2wDI>kt*fOUh zmWO&BBN9gjJBs^uHyJmW&Ti*JB*hY3EPA{D=W%|B+wg~^IT?(3hG>Q2%=9Kx?do7*}AbhH!wOr%1V#27Q)(b@)hR4=Ur-u`becNQmIb~bMs>F zJw2~6mHb7!Ey1@%7j|yH(X_%RlZoV#3SSZfldS)1eEOoH3yI``8GazT5;-y1J;s}# ztmK;%qSb|fHHc8HG*sI@ROwuB;`d=k14qmd~)u-`t$d}rKgGHoEo1~>sN4HG^t${KYTzWVMaL2 zNWV7qV$_1I?8F2jIjq5l#SjR7e`y|;bWJ3Z6Q=ltc%6hDIDD&9S&LNh5gIi#!;SK< zBXy!_94+pcDEND5sztY!D!wDrC|w%x8BC|7=~P=Gb55sLE51}Z{#MOjjdB$(7q^qF zw9js=UDCOlKkyxuJD%9e5I{49j*etm|wZ2xa|8tKp1EPgGnMb9kL zeHik%oLn6zMMo!vew*OdlxvkOuFXXK6Rdjz(i|jXX)-pCi!7gigDo6+;&hLqlA($k zzLU;S7H7msMc?}uZkeepYxvtDLyI%C`ZE^rX_#@oHnIfw!Mn3WjgKjUjT25OIHO-+xxm z`>i3GsBe+r7SSu+x6jna#}i^|c=Z9SE&#l<16gSxYaygtn_T{H|EB>7L`jMor-*N` zd99BgE_#qmltjyQ(O^Gmj9eNcH{a%S%)B6A!0&mr!9Ue4s#?Cc4r%crF+Ew1_to9i z@)5Os>pv>ne-s@qgxxv3m(Wj@a*M_B#G`$$H~21dz77=R~= zsZSJh7;V&EFIB;Hu7oc&%$FK-{L$OxAF>MhVYELr+Mk;2Suk#v``4Y5IS@t-3!}!& zn19Qm@S_ty6bPdxgi$jLKm;{9f|@)a?tZGXR)fMJ)tiX%)5B0Mt^W zYpKbhl*V2oJN7T9BU>{#TVplNenq)y%kE7ac%d2mLSuDr=$3!`wK=tgfUz$$Qw>1A zW^lg7N-%+QCGs_6^EFceu*uih8Gr)K-~x@6;Hu44DbS29&`brura)r{z@h@pDg#iY znO>xsS2d^kYnalBpGKExrk7~ubv)7>dHBg&-Y2kBGrd$ZFW@ZqVi}ark9f;8)5|pT zoPC>yJi9;Fh69zF^_7}!V0yE@Mzak}Z`Rjqwt?x*#sq}c(cHyfKZJHYg2 zV~b`7nBHu3V0H-aUalQZ%tj|>hr#s5m6_to%pTo#vrBr??h9OrL+p%0tnGc*?)kOI zw;c!E*wt<a$3M8GoZDe3>n0Hf?HnrOP#K57Y|Keg$svRJ zn1j|u;-Eby0dpl6i4%vwY{^C9${{dca*-V75STH!NRDy{%$Zyy?i>LNpdz4iJJtwN%WgHg%>2RzKYUSfq`f>C9S5~YIpmkJh^||HmM}WMsYuyC^^RB zW182zHdgHv0HBvy)JrTUT0vZHsc(BAz-@&n@^;vUo?bKhyBzWNZ!1v7j>)YjR8 z`|=fEB9cQ=d`POFZ7@ZN*IR|(A`)+my|F$4+t3lxx!$jz*YoF-rsI@;0KXhl;Vq`H)h*6bwxjhwf@APX{8cZiheyy4zJJ-8D>r- zMRHsuX21KxYnddc*Fqx6HpAKCwqn_(E6SzGD~ZJ31lx;ltwJ^?zSRe*HU~v(qFL4Y z65q6KpLmHkYw0ZxwVmc~)EvecjOE*;1!zuZZM;F+Ly;4Fwl8UYmoe ztAk4K)_OGgTKfJD#-I5!^)6TGf+CoJ_Hkss6s78rxsn``!Ob?6ufl91wQ;;_kgV@-I^71%+RT4{2s{9y;r` zot#9ls&lYvgfJkRrd@Nb_ZbILC(RV6i6-9VL*%kGdv6m-juhue^?P9dxzKHB@t`y! zDK^E$;>7ijdqwLie6$UGH+mXlPhEu*4uNQni8iPQ zH+`b#tj#Bq3KLvmqIZ#9v8#H(O`B>WIcJQ|8CwcnY!SuW_$A^iX+e&nb&lvKYWJW= zn>8-RjeMs>s=Gw0_1>)`yT0oE(oEgRcghP^_X5l^Ub51ctVQc%U518lJ?s6yrzbUE zSNzt<_xW21ek;-Y6b*c8WZG}uKq7f*hF^-g)7ZrshtHlLPb5z${6t)mn)e|otxx0v za$ql3=LHVz&2kT+h44%so&N3H;sHyDk{1&ELYy&V@0CN zHgyd-Ol(@7p?>SrAE@1gD8@em?zO-#^{E5lN;LXG--3 zPt)D&!plO}5=kzLbH%Smd67}C(5ZWgr1d|#?x+Yu~x{N3P2Te^v+H;C&*3%8AEHlNYNA03wK*X!c+9$+r|GmTg48)~hL4NiwYaNs<97!> zA(Gps__i3`A@@<%+vn%s5Xof;zAOf(nQ?U25a;=YL{hB4#iH4^q1D+BeRq`-Ng#~_ z#nn2umwyb>=;UAdXQ)xBYXq?=z9^+%lSo5!Z2cJ;j6Jp+y zKG!nmU7OgKNGi>6rRa=5K+cR?;y;;4{7tdHss00W`}Wl%_4noy$x9Rb(nRk^kU21+ zB6az^uYBh>$vZd6_3z=$%j!+P4|O1Qd}-`U>t8Iw{yP3NS`@k#(LbAeKmJs3zt;OM z4WYWs_;c+L>}B39`3yPZT$L_YHC(v1T+tUQ?$;}&$o18gUiiN!eH2N5jD1Ru=WL3d z#qZ19S$|(B+m}xyRc5$Kyl{f?gKtSQt7`@p^6#wlJKIfg+l-rYDl_+G_iy}(e!#6i zh~Df%;%#2iz;tX7<8&17Z1wzA-Og|PMaYoi45|JNx>WU|om7Vql>dISj;IQEx1FqyCaTE-|eipclkyQk(^?BonmGPy|mfg`wCK+ zHS=u?Q<#T|sW}Dja$XWgwT}~H5!_f&TlnT}|7O0`57hX9THoq{hfD+Rl}#WL2RU|- z>mv>b20^|f)6}{&;9QZemZq!QH@6)yt8;o^m&+eqC%cVtZsv<#)aWh(AACQJ)K6ns zKHqWjRij&1i|hh+F)QQ9@rsObk?3&J%5!qYjiMAH@swdt(a-6BDeAR5l%I+EMzyXH zxL|!zOTVbi<=&gK2VZ!*;mpWWiK|z3_|BiGuLk>S^q)(+A*=P2n&78maGULCo^@O1G5)_o8{Bh{LygIy zCJCWZI8aWFE~h4zP}674{#?T^CLN>49HS?FS>$na?X+%J`?bwpAf4ez+EZ(aYsIs> zb3S$HN0*~Sl4FK*#G$UR36gJVlv)=BGP&MSOYf*VRo*jA`EAbWUJ2L#+UPtnnkadO z@iVNyOS1ly&%65g1(7sMakCibWy|iu+h%PFh$LQue#z#fz3v z%k&>~neHf=YjVtH zi}9)ryxsdD9{doG61*A-nD7u!HvrG^!smF!rI*r)-^*^;awRhG!VJ8^c_0%%T~WJ_ zfDIXVn*nf_4Re=`-e;R!7-mJ**4$;2-DNWkz&+WJdon9#Bx9j_Q2sloRjJQA>>Mz#%reKj&?i2J>V)f$S!aw&=4JvuQ?#! zENp4u${djIIv}@~0CGrjK<*CFWe(jiM9%Ux&hpJ({qotxeO3?P6gkUxIdh5tIU{kF zUob=mD!-4A> znm^s(FTn|}+6k_j0lFZcdqKWP_;he(F34A3kZ&>oe)2JX^2wK6N~a}Nj^=F#e)9c( zauR zZ@}y4%H{Wr`G6DOEv(DRtD{)1!l6cffM2iF++4Zg*d zxTTnROJQdK?kYy!Rg4>StD#$=%`g0$=B{GKUBx^D@IW!*fnx03B^5m+Q=Im2B_1fI zKTymy00oMn1q$nd)@PWJmnHmBniWHuxg&Q84gP2&;cxO5#gG<-l`xp)fCDwefwBU@ zB8E6oRtCW$T&W?hl$DUpo2zn|8giJjO6|Y2c;dgO`S<}xsUb%xt4N;^2kWn!`PYg& zHN>5=61>wnaFQBzk{S=(kG<>z+KMTPdU-RT`o~MF;O|A-H3$yk}YLc+)OuP!5FCL&IrnA>Jzo zBI%)#wDqL!BmB+(S~HRZcj%#aXzQdME1vbVTG5FEuj#*D(?d$Cr!GDkzMAj$Lb`7u zJ!sw1J2iRzOIC59n6@jXmkQpZ1gtHlw-|tGx_>o2SaW6F`Nr&YAFf0l-KUNo*pU9X zox52Pzr60In(C&S-KBQoKmUua<(0arcDkwd1K=ug<6QL&&^cBAbE?6|Z~kL@`1q3} zT%`-DJ{MF2tsC35Svso+|85UbO$}1b-v4S&tRJrEM!>=#)d~Y}U1fb;HSvc@S8ep@ z-+6Q6b=CIks=WpvN@W$Ln(%GX&H-zjHt^9x?x{xKQ%%Zw)cTO`{Gq&!Dq3Y1ty-Ep zYiPnl-#7dVELycbTD8>xB&t>@*QK)Pylx@uCNo_)KP z_uX@tE0LvIo~2snW&T%4&Tr>JIgqQGlB=2}%<>4Zm*lEkB?c%@H7!pyM+n2smB~{b zlH_sQn+#B$YD}GKvT5br3z-M+#&BioRI}<-^9{fc)tDcu$p-$AKU5oksI~*J?}y46 zx=fC-S5G!@n6y`Kv{!EjV4uC(+0dubUVV&nv-C7XC)K@9s{6+~ICX6qYZc5j?zH;P z)9Sxfg;V2B8?R=Dh?^pSOKHrkW!5mFe(ly(^vtc;;2f^cwkf0;8g}12YjA6|J3^i3Uc+ zlgyTr%r0TH&K>q7<0v`F9F`cM)6Ck_%$6fQxLfbBzp42yV*WeL6*C~-%mi;{`t&u2 z&RVzc!GDjgGyhy?MhaoYIS|799l{K&3-=z?$|daz2hy28(wV-(chB4%hQ>C z>5Q|)fV^f#y=KM>h8?cRYsTg^V`~5knbn2NCaXJzeY^Sm;>(q&U`AIklc-6SW5=B= zo5O)RW?&sNTyTHkz-Q*K&&-fWi&OSVtbVz3v(Ya zjw|tmwRytY3OjT-@SL@I&e|G;c*$mMvRPXLvuZv&GoQ7)&@iQ;?>`Uu_iq6^uYg?) zoMh(}v5SF|?7R|oF>sQdSIRC1hS_;#>|$V+oma^&HZaQ8uy!@{8$)YuCgs1x~Vd&FoTPorr6C3v1WHE(K1qb`IL5!0>D5q+JTkzILwKrNHQGcUZd= zn0)PyYL^0oubsPgse!row06>It<5^=@9W$;hG@8UoYpQltzB*a!n6y*w9AFyKK&T9b0uU}k;Q&O+ zP$U3%Wath6_hsll0I@O@3&0~8dIZ2@8F~!B6B&8}K#B~d0PtLfo&%5}Lm2>M%TP7| zFJ$Ni0QoYM4?uwo6#!5qLq!0T$WRFYr7~0sK!prd08k}ERRGk=P%QwTWatwBjWW~- zK(h=r1MowJegI%ENA_~V8`n{e9072VBNqS;$8~_hF@&Le7jywT4 zD@SJm@R1`Q0DR@h7XW`b@&_PLjsgJ)lA|C1uFKJN07B#_1b{F(3IiZQjv@fKD@S($ zxGzWd0f>>K7y#nrC=P%GIZ6N^Nsf{Lcq&Iv0eB`y&j3i5qjUhWuIluR!qtBq~rM0LcoJ3_z*^r2>$qKxqJEDo`c>ISP~mz)J;s3BW4_ zdIi861$qO(TLpRxz&izc2fzmf`T#(=0+j<$r9f2x)GAOd0G|}-69A10)Cj;=1^NoW zcLn+mz)uDG3BUmg9iR+vZD$HO18|VbEdam~3LOF97=?}jaDqZ7060aVQvjTy&=~;E zQs^uI=P7g^fQuBm2*4!@T>{`Tg)RedmEzWB4NoqZLcsupQYaLFa0-P35J{m(0Paxe z4gmKlbRU2i3dH~rN1-?X5-5}aKoW(L0C-BFrvN;o&@%wiDU=RC7KO3^$fZy&0C^P3 z1K>4?zi(MbSKE755Hyp_ls z03Rjt0l-&@d;#!RB7Xp`DA5%Ft}4-00D_e$7=TbE3I!lsiNXPhRH8@#?kLe60PZW% zeE?#VCXfJsfX_EC0DBtQ)8I~~ks|;uG;#sp5RDE2;6@`i0FKk>H~=0r@&Le-MxFq8(Z~ycb2K^! zzy%sz0Kkt%egFi}C;)&fG`a%7H5y$5;0BFu0C1B=Hvzasqgw#nrqOKx?$YQk01s&N z0Dy-ydI-QH8a)EwF^wJr@PtNB07#)x3INY(^c;W;8f5^GO`~i8UeM?T0Qoe^2cUpP z1ppM$s0e@(8kGQ0N~2N$%4k#uKqZYT0jQx-4FL5tst2HfMhyTo(WnW4W*RjE&_bgY z031}vL1lPrJE@Qp0In+J3cz6%It;*36*>xly9&7ja8iX%0&rS|P6ObrLf!!QsE`i; zzAEGkfWHd)18_x!t^jaVg{}e+tU|#6gsM;|0O2YW4nU*|MFMa~h3)`wUxn@i5Timd z0K}jsb8&jZOe?N{vnda7K;J0B}}~&H`{=jm`sbQH?GF za7m3W0dQH3E(35?jjjR^tVY2AgsM>}0O4vB4nU+DMFMa~jqU(&Uybeq5Tiyh0K}TM@Q5FEXYLp8=o*Lx=@LG*t15l_&g#Z+* zQ857T)#yC{AJyn102OLf0YJ4HRRd6`Ms)yuR-?}Vd{Lt>0DM!UZvgyIqaOg+YmmLh z@J@ErAV&aPG{^;jLmG4l05=VC1K_v@9S6WegFFE6)F4j)yfnxQfO8sj4uA_9bO8WA z4e|pZK!XARxS~N<0Jx?>*8sSoK{o)nsX;dZxTQh20JyC|w*k1TL3aU&(V!RrVl^lh zfOrjx2Ov>{5&=lopkx42H7FH;G!04vAX9@f0m#vy8~|Qw&`SVbY0xVG-e}Mp0N!fQ zTL9i^&^rJ=XwU}$$~CAQfGQ2D0-#odY61A9L7xC<)SyNHzG~1{0KRL`cL08B&`$sk zFz5hdcxyW|$Qgix3_1wF5e6Lr;249B0dRsrCjdCbpi=;xVbB=>&NApM0OuKW9)ODs zx(L7}23-Q+GJ`GyaFsz<0SIPLFaV(p3I!mXLE!*IGAI&&I}Ex5zwwm40-`TK7;ZBC}2nyqsKnROM00?7I7yuD0iU1&rMNt6UW6?bTqFEFTKrD-50f=W&JOGI- zN(3O8Macl9vM3dRG!~@+kjbJ<0CHHA1Helby#(MDi(UcnhDC1xc*~-<0K8+-I{-eg z=mP-dEGh?}ibYib)Uv1+fKM#?1VAH;8UgsqqOSmaXVG^6ezNE%00*?_fY$KVcGe&_u(GdWSY0)tNPH52y08VMqDFDuB(HQ{FYSCE$&TG+m04{3LMF1{o(Io&b zYtdx@u4>U$0D`qB7=TbM3I!lsi^2hj)S^fL?r6~+0PbtieE?##CMlh2wWCnxQq}eZ1R8Zx*+2pXiLv55&2n&v%-(R zFy`VitpxA0c)-H(0I|LQ&&JrYxRidd%oJvhDTqUjlZ1;_RnA!fmN_NJaSCy@{0Znu zj-Z_-3;AUi@*{5;Uc}F~h+l>`+hEhLS%3b)&L#&rX_JV`CK33i7nll=%p!i-Mf~vX zo&}W$lesP^{s-@V5$5=aI1D}N|AYJ0a~;4kGuSw0u<^l`@KkpxU!CaX29{|P;%Gyh zVs=LL>c8dHzF?VIyd1N5;k$EX4$6joe4g+8|+uwGXiC=@* ztf#2`PLP!J<=)MDJTPkgHqj+Zmj18PyPe3x)-2l+XFDm*GjnZ8;8p&&>ojkd#$KHr z5?>k|;<@$qao?RizpLI@vvNU^tn@yIM)fZyN{44T8Ejl1b3}LI^e<00AL!m#`gxjXeaL+~ zjT7e>AFF&g^`+0O(^hKVJb`WX^II;?&Q##*{Pl3o(yNgYR^kVvOfCAiGyE_3&FE3f z@No6wZieE@+$3NCF%+ey6+`HpL=atElw8aWq#1=2ZyTu}G1}wAz>u7qk^>4&enCM_ URt{z+7B+S+9${W?K1Kls0Cr`Q5C8xG literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/khrplatform.h.68B41E500C05828B.idx b/.cache/clangd/index/khrplatform.h.68B41E500C05828B.idx new file mode 100644 index 0000000000000000000000000000000000000000..9162d1c9a56e1534a40a11ae0caa578ad8aa9e8f GIT binary patch literal 2196 zcmYL}2~ZPP9LC>!Bz4IK0)j#j4CrV@6jH5#pm<f14?TKZ_(;U}rRS-P#d4^b=p-|Wij>3XR7_(G#_6i54nM9Tx`ooLU;iZpwz zMbGFVe=%zJ7q5{IgH%o3&mX)B zcbCgFRvwja>wn$TFg2}sN#~aRNBrCG81L#!o$29l@K1+Mt9`{9f?{`U3a^DMVf#zpYMVDLJ66uM zWA#}T9VODE#Df>ZBoljN+#zQZoO7$A@MDe<Mtk1SQN^l z&jCs&(sY10F+h1aZSutW-!`*I3{W6&*-T_0TBev?J!03{J=5^>?hFe&)Q9`pV>>qjiI251kF?jbT>4A4iL z&`mQIJ3f`5&j2bXf^uTU%OEs(PNgzQ&>a7Smn@P1q{8+pI44dFlTb`lbga8RfP9Xz zh^BWiya=_sHCkl*oiYU@flU~}Uq!2eOe$x_84o8Sks322}FVW(d@%| zF8I`-c?W|FJ2liHIzfDJn*$hfRt^Ws{b=;zGM9U5(71!aWt|!{;$U$3riM|>PS2?g z9W$^Pg2O1Vgl5XZH#PlO{4{S^k%pNx!&A{BfWftZj-ufQgO5D#jPY8_bc&-_!yYQk zsIY{-584D+!RMb}LDLTg7k#>ispV3)h0Ufvz**;FCf9IRaQj4{Fr2mXWha{x9j~)t z&m7F;U^7|+b)UxR*ljNrjK&OxWO2Vw8E32f%WfTk!6k$#A^#g2zU;^JR-Vj6lnF9DY@y(!Jg9%*G=xEw6F!)yS4qXWb-z46kJpzL(5gkRl0|r+d zYS6xb!Igy?qSDT5)6@eUa9~QzD6tvM5`9_lTzqBtC1MCGbCg)o^u|PO4AWb&F%hxw Xfq-mWj#+Vbp~S^56#hlH}fTYW;cf4)jf z*Ri~L@w-gg^2wGQj7s{aO1IY5uGzFnBYv6PqtcIG_>w03wC!#dZ;;pt1iXWNxJU9p({E+8!T%leYG`A+xL3O z<<`P4&-U_Ku(@Stg@o;5oBsWzQY1qjbKwC6>oa?$tc#ovq<@oNqIO}z6AjKa=h7E_ z^)>qVc<(KX5U!A2jWc|^D)yb#_q%m^>2ZF&X@A*kOMZOLTKF)FY3h|-UE31EwhNfc z)iFGm-nyc=GB-&P7(P$mHAo*YTWZ3?AOZ{|W)@~)K~*kQNd`_PMg~yiy5fiE~ix4*pHxEqFuT#6_8oWOlGx7*A zGcYs5gkdxz7uaT?9bn)ccrxoA_iZbnYLHDZVOCY9Bm08+?SaB9{463c&BY45%pdY= zQbEEjEF3Ul+1hgjPiCFn0u*NDWrZ8^O1VxT;QW?{Kw*#rVP-QrUQaPS#rl$oM~F+9 zOB!YfsxR)Jp3ahFqWc4=my3mq52gqhLOF>bgNloii@izbf literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/log.c.22A62C5806C0A97D.idx b/.cache/clangd/index/log.c.22A62C5806C0A97D.idx new file mode 100644 index 0000000000000000000000000000000000000000..6b260b64acb33aadc62cf31b09aa7daa14737cc2 GIT binary patch literal 3894 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 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/log.c.E31E5F97D7D4CFD4.idx b/.cache/clangd/index/log.c.E31E5F97D7D4CFD4.idx new file mode 100644 index 0000000000000000000000000000000000000000..ab581993e57287e46b06218a74195f1f6275bce6 GIT binary patch literal 3878 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 WhLMBZQDtpoWvR5a3$#}ZLH`G`$EcnF literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/log.c.F2526C272D8A7F04.idx b/.cache/clangd/index/log.c.F2526C272D8A7F04.idx new file mode 100644 index 0000000000000000000000000000000000000000..8c7c7595b0a8199279a8859f84e7e49c8bf81159 GIT binary patch literal 816 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 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/sdl.c.11591B118153D4AC.idx b/.cache/clangd/index/sdl.c.11591B118153D4AC.idx new file mode 100644 index 0000000000000000000000000000000000000000..f699679dc18fc3d6d388a1b39bb6b7ecb7610812 GIT binary patch literal 2034 zcmYk73pA8z7{_0HLo@TajJbU?-)F`(W{jyJ)2eop+aeXZkdhU$ir5)Pm(^CQb~|V_ zQ6eR`Y7bFzP8V(3w2C%qQ<0V^#Idz2T7~R8_Pm<+oS8ZQ-}yh!`#jJ4eeVSO`S=VP z0pJ=>yIT8Z^u;E9Ytct7C13+Z}!1jV8K?z$r=9)cTp{NiaHXA>R`Ot?v{r*Uh z*_6Z;b?uXdC!DKpF38yz_@T@G-tc58 zKw3n}xxq2_-}~}Y59C#HV@tj+sUI&QO5bE96-++Lycjazsp+?lsGJ}1@==N%|M+O1 z^?Qp>`4f8M-70?h#jWs#UMmBvLj;S3t z1e~}1WlPI#usH9#qUEPNehbgI@nJHrWdS$w!10{;^_ra88-Zb_VHwWLtVUAjtxbNH zS|d*N-QMOl9_{~+O5M}2pupf--6&f=IFN7=MN#D|8RBXPN^-jkU)5JLmYkR>K1xWo?74fKE=0S)`#PRI}K z^ZFA9R?tAhX_lnDx&7?v3_>0>T-}irJ*bX#gm5 z?@%{`S2Of*N+y(9qrmX`;=bNPHOBflMF({4qdL8CN&+M^s@=_Se?`-A3mB^uDCMZH zrm*n@uaGsiFxC~g;s`?%t|X8`Q_^Ehj|gp`Vp>Q}hi;R@lnNV#1eNnt_S&sH;Ft@< zc9MQyF`Hm3kbClWjFT#7ILZK1rI7ggq*UE_>~0>4t8RKqNs)%nIwRoT36=Kui&o4B^4}2i^X8S-n~;r&b}1DuTJS zcM!@Q^n6#hRr&itZ6!twQ*;%a#i=xd@aQ3k1%zPck$5`KE#KaD_%ApikwWw(N&=Oi zC<3XZ_|sTqki%OT%O$uo<$jf@jt9!tF^KsDe+I95TiA{VwoO9JAvpG^Tvbebq&A^i z6{UvvCIA-Nuj!>n#kwa;8w+<|(YGK0i7)_B3DNP|b24Xf@L5blnh~90Y-(#}!ot|# EKa#b?WB>pF literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/simple-init.c.862F9E6AA847CBC3.idx b/.cache/clangd/index/simple-init.c.862F9E6AA847CBC3.idx new file mode 100644 index 0000000000000000000000000000000000000000..3dee3f4c93777596ddf0ad46791bcbf52970e41f GIT binary patch literal 452 zcmWIYbaUIo$iU#7;#rZKT9U}Zz`!5~#Kk2=nd^Xb7ErEY&e92cxehr9w0v*@7}_V(9li5XiM))6_WT$Dt+8 z>?^On?k@ZDBqA#8*0d=#`{YzU@0^lxWp>b%Sx#SeE#Ph|HYu>-UD?4dA&wdj* ziF-;f>US1b<|fGlUHv!wRrSNA{B1l8JPZt6Oe{BV0|3kApqKyv literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/simple-init.c.D66F367D416BB1EA.idx b/.cache/clangd/index/simple-init.c.D66F367D416BB1EA.idx new file mode 100644 index 0000000000000000000000000000000000000000..a914e9bbff977a1b1bebdf374cee7018d4611d07 GIT binary patch literal 528 zcmWIYbaUfiVqkDi@vO*AElFfyU|^0a++GERKC zlw;nV?ueBEtof7X_TIiR^W>yA)4sjEyU1z%(aYb34^2P7ujo+GBY0P++ zyuTYCOyk`#@!W}XH$F|=+?VrX!P0=Y=0QJ0O|9SEQa_&Vb^C7hmwyc5@>^y-J5*X! zWBB*cmX^kodg?!1QqR0GU$^*ltK%vkL&kG?H$0C{c@S)LU-94R^2y1XPxO!5icI3V zZf0j#!<=U|SG2e?H%T7o&%fcXsvj=pZ{uO$V_@K6VqxL{6F?aVC`wH$UI=79eb*p; zz-*}rBM%P?3yUyJn^B>}wvCO#!9ZaSZVpA5@ZGsWZf`}lCIN-nSlC2h!ZkixZ>%?* zEddHMvoH(7gkdxz7mD4!d%Koam}*W2s%B+j6@sZccq18GK{0CSV8Uvi62F!D0+f@B~dIX5K-#O37XW?^Px<7a2(VB}%|0O@?o AcmMzZ literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/simple-log.c.1523795EF31C0C4D.idx b/.cache/clangd/index/simple-log.c.1523795EF31C0C4D.idx new file mode 100644 index 0000000000000000000000000000000000000000..56a520895c63f9a13329ab11dad56b29eaec0890 GIT binary patch literal 406 zcmWIYbaU%tWMFVk@vO*AElFfyU|amXzndumN!MNP zCJ0CK{yH>Ee$JC)UC}2kr>yI2?N>TkU~p6r!C{g{87 zd0%;5a&cvDl04AWf5Tr@KU~V+#>2qFz`(`C!o&e4fHDwJl$ur?17tpZ*C2hsY^ez& z4;L#7t1wL4-MK<;Z$-8y0fpIE*hFB$H9lHztT&u30SYs-Fbl$jVKgHbiX}yTy_p?(T0gg^$t|6( zR8gd#wA4v-k7t=#-tlujUYDkQyT9ADHLiR4d%;7~4=fhYusO!D-6hd`|F>q8l?FG2P$5dCM?7q%8MF;jK>^eIYw~59`~dbz5{7Pr38o z#~@l@+D`Lr##WYI7w1aIZ3)XeY-C;;s@qrk{Yk~MEm8a3<+qi5bzJ^3VCh>~{bli! zmKku}e%dl;$Gff{y{|viBx+b4bFtX5@I0^P#dN(Q_CN0Blap3G)<4c0daid}N|Den zw#Kcq_cIh%<|fGl{rNZiRrSNA{B1l8d<+acOe{Xs*a*%u0E*c{{7?viM_yuj_-t*`qS&L^ozUV!FS9^Oj^kSDrPsT9 zwHdk`r|(GL=A0|D}9~c8!sj dffpnL0m->3IUp`4H#ZA26B|D}D+ePN0|1Kcp0EG_ literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/simple.c.FB33403ACB796019.idx b/.cache/clangd/index/simple.c.FB33403ACB796019.idx new file mode 100644 index 0000000000000000000000000000000000000000..14eafced81e43f6e1f2a89d7f1219de4b127cbaa GIT binary patch literal 382 zcmWIYbaN|XWMFVk@vO*AElFfyU|em|n`Y~!he=Ph;~D4mUcKOSEGpwf%)2)C zsnVBItoW>yZQAarZNyvVZ!Oqh@_WYIo2I*WrOh#xJ9<(n zdMW=+o6gDC1~ev`@s9-2$-c5K?YHv6W?#=H+_qaH6PWpR7HpeM&m z;%?VM38M&06?VUC0+Cm*-Kb#KPq7bV4Oq0K?~%vc`<&;z`;`o=j>ecT5DC6~@Ttz; z`BSHSeR`(-%A~bh4{9E;{C4@p$%C6iJbxL^>gX&u8m_-#e{g_q6Jwxk`n{gf- z{*^^5>ZB89G4TkqFtBjJ3F4hOqjKa+V6S(^LmuWML2njL>!SpjQh#;77QyCbNb5nBofigV2 Sd>pLoEX-`2T$0>OybJ&pZxN6H literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/state.c.6FE2060C6206E8DB.idx b/.cache/clangd/index/state.c.6FE2060C6206E8DB.idx new file mode 100644 index 0000000000000000000000000000000000000000..7a0b1a2ee1bfcc1a90c197509adbcabf5bb65bb6 GIT binary patch literal 916 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 Uz05`KDsd5uC^vVlR7ivW0CnWL?EnA( literal 0 HcmV?d00001 diff --git a/examples/a.out b/examples/a.out new file mode 100755 index 0000000000000000000000000000000000000000..2d47ceca6e9ebb28db0a9b18f283d3be6bc6f435 GIT binary patch literal 93592 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%0DN7`BQr?3K{GO{DvPg}o6PtEKe> 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 literal 0 HcmV?d00001 diff --git a/examples/simple-init.c b/examples/simple-init.c index be3b766..74b9213 100644 --- a/examples/simple-init.c +++ b/examples/simple-init.c @@ -2,6 +2,12 @@ int main() { gr_state_init(); + gr_log_add_file("log.txt"); gr_window_init(4, 1); - gr_window_create(800, 600, "hi"); + gr_window_create(1920, 1080, "hi"); + + while(!gr_window_should_close()) { + gr_window_clear(249, 163, 255); + } } + diff --git a/src/.DS_Store b/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..a6e2565155c616d7acc88ed279677c1a224d3a12 GIT binary patch literal 6148 zcmeHKPfNov6i>G4T8FTM!j1v21LrD&cqwy!0V{e?nJpczSewyy4jF@<^$Yn){5-yw zq~h2-coA{$!OJgse;V>j$x9exyf+CC7;7@dEKtOX4b2KcKkAZHj0KUaZ-i{je3r7D zJugL*;V&|Pd$$GqHDVF$+n4rwT-s!yaO0~AJS-0v|!@BiGa_Z%N zKFNB1dX1wCDdV8*`@v;2oDP~hr!vX?C>f?IAqs~Oa&r|Wp`7;QBndN>>uHB&TlS#Y zn#~-?X$z-&IB$#DaktYJhtAP_Zd<#1`zPmvhxjp(FPcye|DKXz7RXP?zrhsDwwi2-8ZM-1TkAV3jagM~(QbU=gGNA%YaQJ{}+ z2}EJgHCSi_4+z((fI5|%CkEH)U>7FNHCSlW>5QwH;X7t#ZeA!{%?@^*{hpDEB$r5Iwd d6t_T?fL&k*&^1_S1PcgV1QZR_5Cgx;zy~ipP96XN literal 0 HcmV?d00001 diff --git a/src/Makefile b/src/Makefile index c19b5e4..f536ea5 100644 --- a/src/Makefile +++ b/src/Makefile @@ -18,5 +18,3 @@ $(LIBRARY): $(OBJ) Makefile clean: rm -rf $(OBJ) $(LIBRARY) - - diff --git a/src/gearlib.h b/src/gearlib.h index 1ca035c..ba936f6 100644 --- a/src/gearlib.h +++ b/src/gearlib.h @@ -21,19 +21,29 @@ typedef intptr_t iptr; typedef float_t f32; typedef double_t f64; +typedef void* (*gr_load_proc)(const char* name); + #define GRAPI extern #define GR_DEFAULT_MAJOR 4 #define GR_DEFAULT_MINOR 6 -GRAPI i32 gr_state_init(); +GRAPI bool gr_state_init(); #define gr_state_assert() assert(gr_state != NULL && "State not initialized") #define gr_state_set(prop, val) gr_state_assert(); gr_state->prop = val #define gr_state_get(prop) ({ gr_state_assert(); gr_state->prop; }) -GRAPI i32 gr_window_init(i32 major, i32 minor); -GRAPI i32 gr_window_create(i32 width, i32 height, char* title); +GRAPI bool gr_window_init(i32 major, i32 minor); +GRAPI bool gr_window_create(i32 width, i32 height, const char* title); +GRAPI bool gr_window_should_close(); +GRAPI void gr_window_clear(u8 red, u8 green, u8 blue); -GRAPI i32 gr_log_add_file(char* filename); +GRAPI const char* gr_platform_get_name(); +GRAPI bool gr_platform_init(); +GRAPI void* gr_platform_create_window(i32 width, i32 height, const char* title); +GRAPI bool gr_platform_window_should_close(); +GRAPI gr_load_proc gr_platform_get_load_proc(); + +GRAPI bool gr_log_add_file(char* filename); typedef struct { i32 major; diff --git a/src/log.c b/src/log.c index 19a9d66..9cd4dce 100644 --- a/src/log.c +++ b/src/log.c @@ -1,14 +1,14 @@ #include #include -i32 gr_log_add_file(char* filename) { +bool gr_log_add_file(char* filename) { FILE* fd = fopen(filename, "w"); if(fd == NULL) { log_error("Couldn't open file \"%s\"", filename); - return 1; + return false; } - log_add_fp(fd, LOG_INFO); + log_add_fp(fd, LOG_TRACE); log_info("Added file \"%s\" as logging file", filename); - return 0; + return true; } diff --git a/src/platforms/glfw.c b/src/platforms/glfw.c new file mode 100644 index 0000000..a0ad89a --- /dev/null +++ b/src/platforms/glfw.c @@ -0,0 +1,44 @@ +#ifdef USE_GLFW + +#include +#include + +const char* gr_platform_get_name() { + return "GLFW"; +} + +bool gr_platform_init() { + if(glfwInit() != GLFW_TRUE) { + return false; + } + + return true; +} + +void* gr_platform_create_window(i32 width, i32 height, const char* title) { + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, gr_state_get(major)); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, gr_state_get(minor)); + glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); + glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); + + GLFWwindow* window = glfwCreateWindow(width, height, title, NULL, NULL); + if(window == NULL) { + glfwTerminate(); + return NULL; + } + + glfwMakeContextCurrent(window); + return window; +} + +bool gr_platform_window_should_close() { + glfwPollEvents(); + glfwSwapBuffers(gr_state_get(window)); + return glfwWindowShouldClose(gr_state_get(window)); +} + +gr_load_proc gr_platform_get_load_proc() { + return (gr_load_proc)glfwGetProcAddress; +} + +#endif diff --git a/src/platforms/sdl.c b/src/platforms/sdl.c new file mode 100644 index 0000000..dd4ba6b --- /dev/null +++ b/src/platforms/sdl.c @@ -0,0 +1,58 @@ +#ifdef USE_SDL + +#include +#include + +const char* gr_platform_get_name() { + return "SDL2"; +} + +bool gr_platform_init() { + if(SDL_Init(SDL_INIT_VIDEO) != 0) { + return false; + } + + return true; +} + +void* gr_platform_create_window(i32 width, i32 height, const char* title) { + SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); + SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, 1); + SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8); + SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8); + SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8); + SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8); + + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, gr_state_get(major)); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, gr_state_get(minor)); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG); + + SDL_Window* window = SDL_CreateWindow(title, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, + width, height,SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN); + if(window == NULL) { + SDL_Quit(); + return NULL; + } + + SDL_GL_CreateContext(window); + return window; +} + +bool gr_platform_window_should_close() { + SDL_Event event; + while (SDL_PollEvent(&event)) { + if (event.type == SDL_QUIT) { + return true; + } + } + + SDL_GL_SwapWindow(gr_state_get(window)); + return false; +} + +gr_load_proc gr_platform_get_load_proc() { + return (gr_load_proc)SDL_GL_GetProcAddress; +} + +#endif diff --git a/src/state.c b/src/state.c index 71df5ea..f4ced1e 100644 --- a/src/state.c +++ b/src/state.c @@ -4,13 +4,13 @@ gr_state_t* gr_state = NULL; -i32 gr_state_init() { +bool gr_state_init() { if(gr_state != NULL) { log_fatal("Init must only be called once"); - return 1; + return false; } gr_state = calloc(1, sizeof(gr_state_t)); log_info("Created state"); - return 0; + return true; } diff --git a/src/thirdparty/.DS_Store b/src/thirdparty/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..12a5e0b2c0bb4ff887e208f4ea3f93b5e00721bf GIT binary patch literal 6148 zcmeHK%}T>S5Z<-XrW7Fug&r5Y7OYJX#7l_v1&ruHr6#1*V9b^#HHT8jSzpK}@p+ut z-H63{6|pn0`_1oe_JiyXV~qRr_=quwF=j(UbgvC>jZztb{bpi+ z9q`*NHeo3XS^V|;qiLGtMX&eHw;I;=PSbAMZTl{GkY!MW#XR@J*$rBkQl?R@htX9s zE=SJZnaqkX$;LBPki=t1xxG%ZSeCw=XK}7-10Aqic5CEx77N#PyTa`cmR+$p>G!%~ z;2tlREqnjq@bqHzm_B9lMH9+_Zza11Yj_3ab3M<&EK6lJ0biY8=MfSE!~iis3~Vj~ z=1j2Ln@a($oERVmeqaFi2LTPyGgxUWKkjV3mP}HXS_w&*7I@`^aA{ zA&VFw2L2fX+!_W$9~NcK)^E$hvsOU6hlYZA6)GU0uUrDaz + * by Khronos client API header files that use its types and defines. + * + * The types in khrplatform.h should only be used to define API-specific types. + * + * Types defined in khrplatform.h: + * khronos_int8_t signed 8 bit + * khronos_uint8_t unsigned 8 bit + * khronos_int16_t signed 16 bit + * khronos_uint16_t unsigned 16 bit + * khronos_int32_t signed 32 bit + * khronos_uint32_t unsigned 32 bit + * khronos_int64_t signed 64 bit + * khronos_uint64_t unsigned 64 bit + * khronos_intptr_t signed same number of bits as a pointer + * khronos_uintptr_t unsigned same number of bits as a pointer + * khronos_ssize_t signed size + * khronos_usize_t unsigned size + * khronos_float_t signed 32 bit floating point + * khronos_time_ns_t unsigned 64 bit time in nanoseconds + * khronos_utime_nanoseconds_t unsigned time interval or absolute time in + * nanoseconds + * khronos_stime_nanoseconds_t signed time interval in nanoseconds + * khronos_boolean_enum_t enumerated boolean type. This should + * only be used as a base type when a client API's boolean type is + * an enum. Client APIs which use an integer or other type for + * booleans cannot use this as the base type for their boolean. + * + * Tokens defined in khrplatform.h: + * + * KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values. + * + * KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0. + * KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0. + * + * Calling convention macros defined in this file: + * KHRONOS_APICALL + * KHRONOS_APIENTRY + * KHRONOS_APIATTRIBUTES + * + * These may be used in function prototypes as: + * + * KHRONOS_APICALL void KHRONOS_APIENTRY funcname( + * int arg1, + * int arg2) KHRONOS_APIATTRIBUTES; + */ + +#if defined(__SCITECH_SNAP__) && !defined(KHRONOS_STATIC) +# define KHRONOS_STATIC 1 +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APICALL + *------------------------------------------------------------------------- + * This precedes the return type of the function in the function prototype. + */ +#if defined(KHRONOS_STATIC) + /* If the preprocessor constant KHRONOS_STATIC is defined, make the + * header compatible with static linking. */ +# define KHRONOS_APICALL +#elif defined(_WIN32) +# define KHRONOS_APICALL __declspec(dllimport) +#elif defined (__SYMBIAN32__) +# define KHRONOS_APICALL IMPORT_C +#elif defined(__ANDROID__) +# define KHRONOS_APICALL __attribute__((visibility("default"))) +#else +# define KHRONOS_APICALL +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APIENTRY + *------------------------------------------------------------------------- + * This follows the return type of the function and precedes the function + * name in the function prototype. + */ +#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__) + /* Win32 but not WinCE */ +# define KHRONOS_APIENTRY __stdcall +#else +# define KHRONOS_APIENTRY +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APIATTRIBUTES + *------------------------------------------------------------------------- + * This follows the closing parenthesis of the function prototype arguments. + */ +#if defined (__ARMCC_2__) +#define KHRONOS_APIATTRIBUTES __softfp +#else +#define KHRONOS_APIATTRIBUTES +#endif + +/*------------------------------------------------------------------------- + * basic type definitions + *-----------------------------------------------------------------------*/ +#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__) + + +/* + * Using + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 +/* + * To support platform where unsigned long cannot be used interchangeably with + * inptr_t (e.g. CHERI-extended ISAs), we can use the stdint.h intptr_t. + * Ideally, we could just use (u)intptr_t everywhere, but this could result in + * ABI breakage if khronos_uintptr_t is changed from unsigned long to + * unsigned long long or similar (this results in different C++ name mangling). + * To avoid changes for existing platforms, we restrict usage of intptr_t to + * platforms where the size of a pointer is larger than the size of long. + */ +#if defined(__SIZEOF_LONG__) && defined(__SIZEOF_POINTER__) +#if __SIZEOF_POINTER__ > __SIZEOF_LONG__ +#define KHRONOS_USE_INTPTR_T +#endif +#endif + +#elif defined(__VMS ) || defined(__sgi) + +/* + * Using + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(_WIN32) && !defined(__SCITECH_SNAP__) + +/* + * Win32 + */ +typedef __int32 khronos_int32_t; +typedef unsigned __int32 khronos_uint32_t; +typedef __int64 khronos_int64_t; +typedef unsigned __int64 khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(__sun__) || defined(__digital__) + +/* + * Sun or Digital + */ +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#if defined(__arch64__) || defined(_LP64) +typedef long int khronos_int64_t; +typedef unsigned long int khronos_uint64_t; +#else +typedef long long int khronos_int64_t; +typedef unsigned long long int khronos_uint64_t; +#endif /* __arch64__ */ +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif 0 + +/* + * Hypothetical platform with no float or int64 support + */ +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#define KHRONOS_SUPPORT_INT64 0 +#define KHRONOS_SUPPORT_FLOAT 0 + +#else + +/* + * Generic fallback + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#endif + + +/* + * Types that are (so far) the same on all platforms + */ +typedef signed char khronos_int8_t; +typedef unsigned char khronos_uint8_t; +typedef signed short int khronos_int16_t; +typedef unsigned short int khronos_uint16_t; + +/* + * Types that differ between LLP64 and LP64 architectures - in LLP64, + * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears + * to be the only LLP64 architecture in current use. + */ +#ifdef KHRONOS_USE_INTPTR_T +typedef intptr_t khronos_intptr_t; +typedef uintptr_t khronos_uintptr_t; +#elif defined(_WIN64) +typedef signed long long int khronos_intptr_t; +typedef unsigned long long int khronos_uintptr_t; +#else +typedef signed long int khronos_intptr_t; +typedef unsigned long int khronos_uintptr_t; +#endif + +#if defined(_WIN64) +typedef signed long long int khronos_ssize_t; +typedef unsigned long long int khronos_usize_t; +#else +typedef signed long int khronos_ssize_t; +typedef unsigned long int khronos_usize_t; +#endif + +#if KHRONOS_SUPPORT_FLOAT +/* + * Float type + */ +typedef float khronos_float_t; +#endif + +#if KHRONOS_SUPPORT_INT64 +/* Time types + * + * These types can be used to represent a time interval in nanoseconds or + * an absolute Unadjusted System Time. Unadjusted System Time is the number + * of nanoseconds since some arbitrary system event (e.g. since the last + * time the system booted). The Unadjusted System Time is an unsigned + * 64 bit value that wraps back to 0 every 584 years. Time intervals + * may be either signed or unsigned. + */ +typedef khronos_uint64_t khronos_utime_nanoseconds_t; +typedef khronos_int64_t khronos_stime_nanoseconds_t; +#endif + +/* + * Dummy value used to pad enum types to 32 bits. + */ +#ifndef KHRONOS_MAX_ENUM +#define KHRONOS_MAX_ENUM 0x7FFFFFFF +#endif + +/* + * Enumerated boolean type + * + * Values other than zero should be considered to be true. Therefore + * comparisons should not be made against KHRONOS_TRUE. + */ +typedef enum { + KHRONOS_FALSE = 0, + KHRONOS_TRUE = 1, + KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM +} khronos_boolean_enum_t; + +#endif /* __khrplatform_h_ */ diff --git a/src/thirdparty/glad/.DS_Store b/src/thirdparty/glad/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..95f6d7786630ef2cdedd574ee9f94998e30d4138 GIT binary patch literal 6148 zcmeHKOKJl#43(NJ2D)gLUHS@v9>5LL1B6^4q|+bF#Gxd6U!|AnO}gnR`ednXh8YNS zQA&|OezGmung?TBM8u0jGbfr6Q3VxbF-Am&N2kurc?#sR#-3WbqlNK9_QN6sst(RA?*QfXCQuBkT-Qys; zqeR_w2AlzBz!`7`1`OcN7OBn^y>$kh0cYTg0XZK6R4^K5#d36@DJ1|o+s>cG3zyxoekkt5QPEpxz!~T>FwyQz z?*AM7GNVO)Kg4^^fHUyV7~pBWsu%buyITjJCwFatuAw60m&Jg +#include +#include +#include + +static void* get_proc(const char *namez); + +#if defined(_WIN32) || defined(__CYGWIN__) +#ifndef _WINDOWS_ +#undef APIENTRY +#endif +#include +static HMODULE libGL; + +typedef void* (APIENTRYP PFNWGLGETPROCADDRESSPROC_PRIVATE)(const char*); +static PFNWGLGETPROCADDRESSPROC_PRIVATE gladGetProcAddressPtr; + +#ifdef _MSC_VER +#ifdef __has_include + #if __has_include() + #define HAVE_WINAPIFAMILY 1 + #endif +#elif _MSC_VER >= 1700 && !_USING_V110_SDK71_ + #define HAVE_WINAPIFAMILY 1 +#endif +#endif + +#ifdef HAVE_WINAPIFAMILY + #include + #if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) + #define IS_UWP 1 + #endif +#endif + +static +int open_gl(void) { +#ifndef IS_UWP + libGL = LoadLibraryW(L"opengl32.dll"); + if(libGL != NULL) { + void (* tmp)(void); + tmp = (void(*)(void)) GetProcAddress(libGL, "wglGetProcAddress"); + gladGetProcAddressPtr = (PFNWGLGETPROCADDRESSPROC_PRIVATE) tmp; + return gladGetProcAddressPtr != NULL; + } +#endif + + return 0; +} + +static +void close_gl(void) { + if(libGL != NULL) { + FreeLibrary((HMODULE) libGL); + libGL = NULL; + } +} +#else +#include +static void* libGL; + +#if !defined(__APPLE__) && !defined(__HAIKU__) +typedef void* (APIENTRYP PFNGLXGETPROCADDRESSPROC_PRIVATE)(const char*); +static PFNGLXGETPROCADDRESSPROC_PRIVATE gladGetProcAddressPtr; +#endif + +static +int open_gl(void) { +#ifdef __APPLE__ + static const char *NAMES[] = { + "../Frameworks/OpenGL.framework/OpenGL", + "/Library/Frameworks/OpenGL.framework/OpenGL", + "/System/Library/Frameworks/OpenGL.framework/OpenGL", + "/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL" + }; +#else + static const char *NAMES[] = {"libGL.so.1", "libGL.so"}; +#endif + + unsigned int index = 0; + for(index = 0; index < (sizeof(NAMES) / sizeof(NAMES[0])); index++) { + libGL = dlopen(NAMES[index], RTLD_NOW | RTLD_GLOBAL); + + if(libGL != NULL) { +#if defined(__APPLE__) || defined(__HAIKU__) + return 1; +#else + gladGetProcAddressPtr = (PFNGLXGETPROCADDRESSPROC_PRIVATE)dlsym(libGL, + "glXGetProcAddressARB"); + return gladGetProcAddressPtr != NULL; +#endif + } + } + + return 0; +} + +static +void close_gl(void) { + if(libGL != NULL) { + dlclose(libGL); + libGL = NULL; + } +} +#endif + +static +void* get_proc(const char *namez) { + void* result = NULL; + if(libGL == NULL) return NULL; + +#if !defined(__APPLE__) && !defined(__HAIKU__) + if(gladGetProcAddressPtr != NULL) { + result = gladGetProcAddressPtr(namez); + } +#endif + if(result == NULL) { +#if defined(_WIN32) || defined(__CYGWIN__) + result = (void*)GetProcAddress((HMODULE) libGL, namez); +#else + result = dlsym(libGL, namez); +#endif + } + + return result; +} + +int gladLoadGL(void) { + int status = 0; + + if(open_gl()) { + status = gladLoadGLLoader(&get_proc); + close_gl(); + } + + return status; +} + +struct gladGLversionStruct GLVersion = { 0, 0 }; + +#if defined(GL_ES_VERSION_3_0) || defined(GL_VERSION_3_0) +#define _GLAD_IS_SOME_NEW_VERSION 1 +#endif + +static int max_loaded_major; +static int max_loaded_minor; + +static const char *exts = NULL; +static int num_exts_i = 0; +static char **exts_i = NULL; + +static int get_exts(void) { +#ifdef _GLAD_IS_SOME_NEW_VERSION + if(max_loaded_major < 3) { +#endif + exts = (const char *)glGetString(GL_EXTENSIONS); +#ifdef _GLAD_IS_SOME_NEW_VERSION + } else { + int index; + + num_exts_i = 0; + glGetIntegerv(GL_NUM_EXTENSIONS, &num_exts_i); + if (num_exts_i > 0) { + exts_i = (char **)malloc((size_t)num_exts_i * (sizeof *exts_i)); + } + + if (exts_i == NULL) { + return 0; + } + + for(index = 0; index < num_exts_i; index++) { + const char *gl_str_tmp = (const char*)glGetStringi(GL_EXTENSIONS, index); + size_t len = strlen(gl_str_tmp); + + char *local_str = (char*)malloc((len+1) * sizeof(char)); + if(local_str != NULL) { + memcpy(local_str, gl_str_tmp, (len+1) * sizeof(char)); + } + exts_i[index] = local_str; + } + } +#endif + return 1; +} + +static void free_exts(void) { + if (exts_i != NULL) { + int index; + for(index = 0; index < num_exts_i; index++) { + free((char *)exts_i[index]); + } + free((void *)exts_i); + exts_i = NULL; + } +} + +static int has_ext(const char *ext) { +#ifdef _GLAD_IS_SOME_NEW_VERSION + if(max_loaded_major < 3) { +#endif + const char *extensions; + const char *loc; + const char *terminator; + extensions = exts; + if(extensions == NULL || ext == NULL) { + return 0; + } + + while(1) { + loc = strstr(extensions, ext); + if(loc == NULL) { + return 0; + } + + terminator = loc + strlen(ext); + if((loc == extensions || *(loc - 1) == ' ') && + (*terminator == ' ' || *terminator == '\0')) { + return 1; + } + extensions = terminator; + } +#ifdef _GLAD_IS_SOME_NEW_VERSION + } else { + int index; + if(exts_i == NULL) return 0; + for(index = 0; index < num_exts_i; index++) { + const char *e = exts_i[index]; + + if(exts_i[index] != NULL && strcmp(e, ext) == 0) { + return 1; + } + } + } +#endif + + return 0; +} +int GLAD_GL_VERSION_1_0 = 0; +int GLAD_GL_VERSION_1_1 = 0; +int GLAD_GL_VERSION_1_2 = 0; +int GLAD_GL_VERSION_1_3 = 0; +int GLAD_GL_VERSION_1_4 = 0; +int GLAD_GL_VERSION_1_5 = 0; +int GLAD_GL_VERSION_2_0 = 0; +int GLAD_GL_VERSION_2_1 = 0; +int GLAD_GL_VERSION_3_0 = 0; +int GLAD_GL_VERSION_3_1 = 0; +int GLAD_GL_VERSION_3_2 = 0; +int GLAD_GL_VERSION_3_3 = 0; +int GLAD_GL_VERSION_4_0 = 0; +int GLAD_GL_VERSION_4_1 = 0; +PFNGLACTIVESHADERPROGRAMPROC glad_glActiveShaderProgram = NULL; +PFNGLACTIVETEXTUREPROC glad_glActiveTexture = NULL; +PFNGLATTACHSHADERPROC glad_glAttachShader = NULL; +PFNGLBEGINCONDITIONALRENDERPROC glad_glBeginConditionalRender = NULL; +PFNGLBEGINQUERYPROC glad_glBeginQuery = NULL; +PFNGLBEGINQUERYINDEXEDPROC glad_glBeginQueryIndexed = NULL; +PFNGLBEGINTRANSFORMFEEDBACKPROC glad_glBeginTransformFeedback = NULL; +PFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation = NULL; +PFNGLBINDBUFFERPROC glad_glBindBuffer = NULL; +PFNGLBINDBUFFERBASEPROC glad_glBindBufferBase = NULL; +PFNGLBINDBUFFERRANGEPROC glad_glBindBufferRange = NULL; +PFNGLBINDFRAGDATALOCATIONPROC glad_glBindFragDataLocation = NULL; +PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glad_glBindFragDataLocationIndexed = NULL; +PFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer = NULL; +PFNGLBINDPROGRAMPIPELINEPROC glad_glBindProgramPipeline = NULL; +PFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer = NULL; +PFNGLBINDSAMPLERPROC glad_glBindSampler = NULL; +PFNGLBINDTEXTUREPROC glad_glBindTexture = NULL; +PFNGLBINDTRANSFORMFEEDBACKPROC glad_glBindTransformFeedback = NULL; +PFNGLBINDVERTEXARRAYPROC glad_glBindVertexArray = NULL; +PFNGLBLENDCOLORPROC glad_glBlendColor = NULL; +PFNGLBLENDEQUATIONPROC glad_glBlendEquation = NULL; +PFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate = NULL; +PFNGLBLENDEQUATIONSEPARATEIPROC glad_glBlendEquationSeparatei = NULL; +PFNGLBLENDEQUATIONIPROC glad_glBlendEquationi = NULL; +PFNGLBLENDFUNCPROC glad_glBlendFunc = NULL; +PFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate = NULL; +PFNGLBLENDFUNCSEPARATEIPROC glad_glBlendFuncSeparatei = NULL; +PFNGLBLENDFUNCIPROC glad_glBlendFunci = NULL; +PFNGLBLITFRAMEBUFFERPROC glad_glBlitFramebuffer = NULL; +PFNGLBUFFERDATAPROC glad_glBufferData = NULL; +PFNGLBUFFERSUBDATAPROC glad_glBufferSubData = NULL; +PFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus = NULL; +PFNGLCLAMPCOLORPROC glad_glClampColor = NULL; +PFNGLCLEARPROC glad_glClear = NULL; +PFNGLCLEARBUFFERFIPROC glad_glClearBufferfi = NULL; +PFNGLCLEARBUFFERFVPROC glad_glClearBufferfv = NULL; +PFNGLCLEARBUFFERIVPROC glad_glClearBufferiv = NULL; +PFNGLCLEARBUFFERUIVPROC glad_glClearBufferuiv = NULL; +PFNGLCLEARCOLORPROC glad_glClearColor = NULL; +PFNGLCLEARDEPTHPROC glad_glClearDepth = NULL; +PFNGLCLEARDEPTHFPROC glad_glClearDepthf = NULL; +PFNGLCLEARSTENCILPROC glad_glClearStencil = NULL; +PFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync = NULL; +PFNGLCOLORMASKPROC glad_glColorMask = NULL; +PFNGLCOLORMASKIPROC glad_glColorMaski = NULL; +PFNGLCOLORP3UIPROC glad_glColorP3ui = NULL; +PFNGLCOLORP3UIVPROC glad_glColorP3uiv = NULL; +PFNGLCOLORP4UIPROC glad_glColorP4ui = NULL; +PFNGLCOLORP4UIVPROC glad_glColorP4uiv = NULL; +PFNGLCOMPILESHADERPROC glad_glCompileShader = NULL; +PFNGLCOMPRESSEDTEXIMAGE1DPROC glad_glCompressedTexImage1D = NULL; +PFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D = NULL; +PFNGLCOMPRESSEDTEXIMAGE3DPROC glad_glCompressedTexImage3D = NULL; +PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glad_glCompressedTexSubImage1D = NULL; +PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D = NULL; +PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glad_glCompressedTexSubImage3D = NULL; +PFNGLCOPYBUFFERSUBDATAPROC glad_glCopyBufferSubData = NULL; +PFNGLCOPYTEXIMAGE1DPROC glad_glCopyTexImage1D = NULL; +PFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D = NULL; +PFNGLCOPYTEXSUBIMAGE1DPROC glad_glCopyTexSubImage1D = NULL; +PFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D = NULL; +PFNGLCOPYTEXSUBIMAGE3DPROC glad_glCopyTexSubImage3D = NULL; +PFNGLCREATEPROGRAMPROC glad_glCreateProgram = NULL; +PFNGLCREATESHADERPROC glad_glCreateShader = NULL; +PFNGLCREATESHADERPROGRAMVPROC glad_glCreateShaderProgramv = NULL; +PFNGLCULLFACEPROC glad_glCullFace = NULL; +PFNGLDELETEBUFFERSPROC glad_glDeleteBuffers = NULL; +PFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers = NULL; +PFNGLDELETEPROGRAMPROC glad_glDeleteProgram = NULL; +PFNGLDELETEPROGRAMPIPELINESPROC glad_glDeleteProgramPipelines = NULL; +PFNGLDELETEQUERIESPROC glad_glDeleteQueries = NULL; +PFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers = NULL; +PFNGLDELETESAMPLERSPROC glad_glDeleteSamplers = NULL; +PFNGLDELETESHADERPROC glad_glDeleteShader = NULL; +PFNGLDELETESYNCPROC glad_glDeleteSync = NULL; +PFNGLDELETETEXTURESPROC glad_glDeleteTextures = NULL; +PFNGLDELETETRANSFORMFEEDBACKSPROC glad_glDeleteTransformFeedbacks = NULL; +PFNGLDELETEVERTEXARRAYSPROC glad_glDeleteVertexArrays = NULL; +PFNGLDEPTHFUNCPROC glad_glDepthFunc = NULL; +PFNGLDEPTHMASKPROC glad_glDepthMask = NULL; +PFNGLDEPTHRANGEPROC glad_glDepthRange = NULL; +PFNGLDEPTHRANGEARRAYVPROC glad_glDepthRangeArrayv = NULL; +PFNGLDEPTHRANGEINDEXEDPROC glad_glDepthRangeIndexed = NULL; +PFNGLDEPTHRANGEFPROC glad_glDepthRangef = NULL; +PFNGLDETACHSHADERPROC glad_glDetachShader = NULL; +PFNGLDISABLEPROC glad_glDisable = NULL; +PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray = NULL; +PFNGLDISABLEIPROC glad_glDisablei = NULL; +PFNGLDRAWARRAYSPROC glad_glDrawArrays = NULL; +PFNGLDRAWARRAYSINDIRECTPROC glad_glDrawArraysIndirect = NULL; +PFNGLDRAWARRAYSINSTANCEDPROC glad_glDrawArraysInstanced = NULL; +PFNGLDRAWBUFFERPROC glad_glDrawBuffer = NULL; +PFNGLDRAWBUFFERSPROC glad_glDrawBuffers = NULL; +PFNGLDRAWELEMENTSPROC glad_glDrawElements = NULL; +PFNGLDRAWELEMENTSBASEVERTEXPROC glad_glDrawElementsBaseVertex = NULL; +PFNGLDRAWELEMENTSINDIRECTPROC glad_glDrawElementsIndirect = NULL; +PFNGLDRAWELEMENTSINSTANCEDPROC glad_glDrawElementsInstanced = NULL; +PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glad_glDrawElementsInstancedBaseVertex = NULL; +PFNGLDRAWRANGEELEMENTSPROC glad_glDrawRangeElements = NULL; +PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glad_glDrawRangeElementsBaseVertex = NULL; +PFNGLDRAWTRANSFORMFEEDBACKPROC glad_glDrawTransformFeedback = NULL; +PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC glad_glDrawTransformFeedbackStream = NULL; +PFNGLENABLEPROC glad_glEnable = NULL; +PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray = NULL; +PFNGLENABLEIPROC glad_glEnablei = NULL; +PFNGLENDCONDITIONALRENDERPROC glad_glEndConditionalRender = NULL; +PFNGLENDQUERYPROC glad_glEndQuery = NULL; +PFNGLENDQUERYINDEXEDPROC glad_glEndQueryIndexed = NULL; +PFNGLENDTRANSFORMFEEDBACKPROC glad_glEndTransformFeedback = NULL; +PFNGLFENCESYNCPROC glad_glFenceSync = NULL; +PFNGLFINISHPROC glad_glFinish = NULL; +PFNGLFLUSHPROC glad_glFlush = NULL; +PFNGLFLUSHMAPPEDBUFFERRANGEPROC glad_glFlushMappedBufferRange = NULL; +PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer = NULL; +PFNGLFRAMEBUFFERTEXTUREPROC glad_glFramebufferTexture = NULL; +PFNGLFRAMEBUFFERTEXTURE1DPROC glad_glFramebufferTexture1D = NULL; +PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D = NULL; +PFNGLFRAMEBUFFERTEXTURE3DPROC glad_glFramebufferTexture3D = NULL; +PFNGLFRAMEBUFFERTEXTURELAYERPROC glad_glFramebufferTextureLayer = NULL; +PFNGLFRONTFACEPROC glad_glFrontFace = NULL; +PFNGLGENBUFFERSPROC glad_glGenBuffers = NULL; +PFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers = NULL; +PFNGLGENPROGRAMPIPELINESPROC glad_glGenProgramPipelines = NULL; +PFNGLGENQUERIESPROC glad_glGenQueries = NULL; +PFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers = NULL; +PFNGLGENSAMPLERSPROC glad_glGenSamplers = NULL; +PFNGLGENTEXTURESPROC glad_glGenTextures = NULL; +PFNGLGENTRANSFORMFEEDBACKSPROC glad_glGenTransformFeedbacks = NULL; +PFNGLGENVERTEXARRAYSPROC glad_glGenVertexArrays = NULL; +PFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap = NULL; +PFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib = NULL; +PFNGLGETACTIVESUBROUTINENAMEPROC glad_glGetActiveSubroutineName = NULL; +PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC glad_glGetActiveSubroutineUniformName = NULL; +PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC glad_glGetActiveSubroutineUniformiv = NULL; +PFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform = NULL; +PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glad_glGetActiveUniformBlockName = NULL; +PFNGLGETACTIVEUNIFORMBLOCKIVPROC glad_glGetActiveUniformBlockiv = NULL; +PFNGLGETACTIVEUNIFORMNAMEPROC glad_glGetActiveUniformName = NULL; +PFNGLGETACTIVEUNIFORMSIVPROC glad_glGetActiveUniformsiv = NULL; +PFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders = NULL; +PFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation = NULL; +PFNGLGETBOOLEANI_VPROC glad_glGetBooleani_v = NULL; +PFNGLGETBOOLEANVPROC glad_glGetBooleanv = NULL; +PFNGLGETBUFFERPARAMETERI64VPROC glad_glGetBufferParameteri64v = NULL; +PFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv = NULL; +PFNGLGETBUFFERPOINTERVPROC glad_glGetBufferPointerv = NULL; +PFNGLGETBUFFERSUBDATAPROC glad_glGetBufferSubData = NULL; +PFNGLGETCOMPRESSEDTEXIMAGEPROC glad_glGetCompressedTexImage = NULL; +PFNGLGETDOUBLEI_VPROC glad_glGetDoublei_v = NULL; +PFNGLGETDOUBLEVPROC glad_glGetDoublev = NULL; +PFNGLGETERRORPROC glad_glGetError = NULL; +PFNGLGETFLOATI_VPROC glad_glGetFloati_v = NULL; +PFNGLGETFLOATVPROC glad_glGetFloatv = NULL; +PFNGLGETFRAGDATAINDEXPROC glad_glGetFragDataIndex = NULL; +PFNGLGETFRAGDATALOCATIONPROC glad_glGetFragDataLocation = NULL; +PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv = NULL; +PFNGLGETINTEGER64I_VPROC glad_glGetInteger64i_v = NULL; +PFNGLGETINTEGER64VPROC glad_glGetInteger64v = NULL; +PFNGLGETINTEGERI_VPROC glad_glGetIntegeri_v = NULL; +PFNGLGETINTEGERVPROC glad_glGetIntegerv = NULL; +PFNGLGETMULTISAMPLEFVPROC glad_glGetMultisamplefv = NULL; +PFNGLGETPROGRAMBINARYPROC glad_glGetProgramBinary = NULL; +PFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog = NULL; +PFNGLGETPROGRAMPIPELINEINFOLOGPROC glad_glGetProgramPipelineInfoLog = NULL; +PFNGLGETPROGRAMPIPELINEIVPROC glad_glGetProgramPipelineiv = NULL; +PFNGLGETPROGRAMSTAGEIVPROC glad_glGetProgramStageiv = NULL; +PFNGLGETPROGRAMIVPROC glad_glGetProgramiv = NULL; +PFNGLGETQUERYINDEXEDIVPROC glad_glGetQueryIndexediv = NULL; +PFNGLGETQUERYOBJECTI64VPROC glad_glGetQueryObjecti64v = NULL; +PFNGLGETQUERYOBJECTIVPROC glad_glGetQueryObjectiv = NULL; +PFNGLGETQUERYOBJECTUI64VPROC glad_glGetQueryObjectui64v = NULL; +PFNGLGETQUERYOBJECTUIVPROC glad_glGetQueryObjectuiv = NULL; +PFNGLGETQUERYIVPROC glad_glGetQueryiv = NULL; +PFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv = NULL; +PFNGLGETSAMPLERPARAMETERIIVPROC glad_glGetSamplerParameterIiv = NULL; +PFNGLGETSAMPLERPARAMETERIUIVPROC glad_glGetSamplerParameterIuiv = NULL; +PFNGLGETSAMPLERPARAMETERFVPROC glad_glGetSamplerParameterfv = NULL; +PFNGLGETSAMPLERPARAMETERIVPROC glad_glGetSamplerParameteriv = NULL; +PFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog = NULL; +PFNGLGETSHADERPRECISIONFORMATPROC glad_glGetShaderPrecisionFormat = NULL; +PFNGLGETSHADERSOURCEPROC glad_glGetShaderSource = NULL; +PFNGLGETSHADERIVPROC glad_glGetShaderiv = NULL; +PFNGLGETSTRINGPROC glad_glGetString = NULL; +PFNGLGETSTRINGIPROC glad_glGetStringi = NULL; +PFNGLGETSUBROUTINEINDEXPROC glad_glGetSubroutineIndex = NULL; +PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC glad_glGetSubroutineUniformLocation = NULL; +PFNGLGETSYNCIVPROC glad_glGetSynciv = NULL; +PFNGLGETTEXIMAGEPROC glad_glGetTexImage = NULL; +PFNGLGETTEXLEVELPARAMETERFVPROC glad_glGetTexLevelParameterfv = NULL; +PFNGLGETTEXLEVELPARAMETERIVPROC glad_glGetTexLevelParameteriv = NULL; +PFNGLGETTEXPARAMETERIIVPROC glad_glGetTexParameterIiv = NULL; +PFNGLGETTEXPARAMETERIUIVPROC glad_glGetTexParameterIuiv = NULL; +PFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv = NULL; +PFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv = NULL; +PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glad_glGetTransformFeedbackVarying = NULL; +PFNGLGETUNIFORMBLOCKINDEXPROC glad_glGetUniformBlockIndex = NULL; +PFNGLGETUNIFORMINDICESPROC glad_glGetUniformIndices = NULL; +PFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation = NULL; +PFNGLGETUNIFORMSUBROUTINEUIVPROC glad_glGetUniformSubroutineuiv = NULL; +PFNGLGETUNIFORMDVPROC glad_glGetUniformdv = NULL; +PFNGLGETUNIFORMFVPROC glad_glGetUniformfv = NULL; +PFNGLGETUNIFORMIVPROC glad_glGetUniformiv = NULL; +PFNGLGETUNIFORMUIVPROC glad_glGetUniformuiv = NULL; +PFNGLGETVERTEXATTRIBIIVPROC glad_glGetVertexAttribIiv = NULL; +PFNGLGETVERTEXATTRIBIUIVPROC glad_glGetVertexAttribIuiv = NULL; +PFNGLGETVERTEXATTRIBLDVPROC glad_glGetVertexAttribLdv = NULL; +PFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv = NULL; +PFNGLGETVERTEXATTRIBDVPROC glad_glGetVertexAttribdv = NULL; +PFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv = NULL; +PFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv = NULL; +PFNGLHINTPROC glad_glHint = NULL; +PFNGLISBUFFERPROC glad_glIsBuffer = NULL; +PFNGLISENABLEDPROC glad_glIsEnabled = NULL; +PFNGLISENABLEDIPROC glad_glIsEnabledi = NULL; +PFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer = NULL; +PFNGLISPROGRAMPROC glad_glIsProgram = NULL; +PFNGLISPROGRAMPIPELINEPROC glad_glIsProgramPipeline = NULL; +PFNGLISQUERYPROC glad_glIsQuery = NULL; +PFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer = NULL; +PFNGLISSAMPLERPROC glad_glIsSampler = NULL; +PFNGLISSHADERPROC glad_glIsShader = NULL; +PFNGLISSYNCPROC glad_glIsSync = NULL; +PFNGLISTEXTUREPROC glad_glIsTexture = NULL; +PFNGLISTRANSFORMFEEDBACKPROC glad_glIsTransformFeedback = NULL; +PFNGLISVERTEXARRAYPROC glad_glIsVertexArray = NULL; +PFNGLLINEWIDTHPROC glad_glLineWidth = NULL; +PFNGLLINKPROGRAMPROC glad_glLinkProgram = NULL; +PFNGLLOGICOPPROC glad_glLogicOp = NULL; +PFNGLMAPBUFFERPROC glad_glMapBuffer = NULL; +PFNGLMAPBUFFERRANGEPROC glad_glMapBufferRange = NULL; +PFNGLMINSAMPLESHADINGPROC glad_glMinSampleShading = NULL; +PFNGLMULTIDRAWARRAYSPROC glad_glMultiDrawArrays = NULL; +PFNGLMULTIDRAWELEMENTSPROC glad_glMultiDrawElements = NULL; +PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glad_glMultiDrawElementsBaseVertex = NULL; +PFNGLMULTITEXCOORDP1UIPROC glad_glMultiTexCoordP1ui = NULL; +PFNGLMULTITEXCOORDP1UIVPROC glad_glMultiTexCoordP1uiv = NULL; +PFNGLMULTITEXCOORDP2UIPROC glad_glMultiTexCoordP2ui = NULL; +PFNGLMULTITEXCOORDP2UIVPROC glad_glMultiTexCoordP2uiv = NULL; +PFNGLMULTITEXCOORDP3UIPROC glad_glMultiTexCoordP3ui = NULL; +PFNGLMULTITEXCOORDP3UIVPROC glad_glMultiTexCoordP3uiv = NULL; +PFNGLMULTITEXCOORDP4UIPROC glad_glMultiTexCoordP4ui = NULL; +PFNGLMULTITEXCOORDP4UIVPROC glad_glMultiTexCoordP4uiv = NULL; +PFNGLNORMALP3UIPROC glad_glNormalP3ui = NULL; +PFNGLNORMALP3UIVPROC glad_glNormalP3uiv = NULL; +PFNGLPATCHPARAMETERFVPROC glad_glPatchParameterfv = NULL; +PFNGLPATCHPARAMETERIPROC glad_glPatchParameteri = NULL; +PFNGLPAUSETRANSFORMFEEDBACKPROC glad_glPauseTransformFeedback = NULL; +PFNGLPIXELSTOREFPROC glad_glPixelStoref = NULL; +PFNGLPIXELSTOREIPROC glad_glPixelStorei = NULL; +PFNGLPOINTPARAMETERFPROC glad_glPointParameterf = NULL; +PFNGLPOINTPARAMETERFVPROC glad_glPointParameterfv = NULL; +PFNGLPOINTPARAMETERIPROC glad_glPointParameteri = NULL; +PFNGLPOINTPARAMETERIVPROC glad_glPointParameteriv = NULL; +PFNGLPOINTSIZEPROC glad_glPointSize = NULL; +PFNGLPOLYGONMODEPROC glad_glPolygonMode = NULL; +PFNGLPOLYGONOFFSETPROC glad_glPolygonOffset = NULL; +PFNGLPRIMITIVERESTARTINDEXPROC glad_glPrimitiveRestartIndex = NULL; +PFNGLPROGRAMBINARYPROC glad_glProgramBinary = NULL; +PFNGLPROGRAMPARAMETERIPROC glad_glProgramParameteri = NULL; +PFNGLPROGRAMUNIFORM1DPROC glad_glProgramUniform1d = NULL; +PFNGLPROGRAMUNIFORM1DVPROC glad_glProgramUniform1dv = NULL; +PFNGLPROGRAMUNIFORM1FPROC glad_glProgramUniform1f = NULL; +PFNGLPROGRAMUNIFORM1FVPROC glad_glProgramUniform1fv = NULL; +PFNGLPROGRAMUNIFORM1IPROC glad_glProgramUniform1i = NULL; +PFNGLPROGRAMUNIFORM1IVPROC glad_glProgramUniform1iv = NULL; +PFNGLPROGRAMUNIFORM1UIPROC glad_glProgramUniform1ui = NULL; +PFNGLPROGRAMUNIFORM1UIVPROC glad_glProgramUniform1uiv = NULL; +PFNGLPROGRAMUNIFORM2DPROC glad_glProgramUniform2d = NULL; +PFNGLPROGRAMUNIFORM2DVPROC glad_glProgramUniform2dv = NULL; +PFNGLPROGRAMUNIFORM2FPROC glad_glProgramUniform2f = NULL; +PFNGLPROGRAMUNIFORM2FVPROC glad_glProgramUniform2fv = NULL; +PFNGLPROGRAMUNIFORM2IPROC glad_glProgramUniform2i = NULL; +PFNGLPROGRAMUNIFORM2IVPROC glad_glProgramUniform2iv = NULL; +PFNGLPROGRAMUNIFORM2UIPROC glad_glProgramUniform2ui = NULL; +PFNGLPROGRAMUNIFORM2UIVPROC glad_glProgramUniform2uiv = NULL; +PFNGLPROGRAMUNIFORM3DPROC glad_glProgramUniform3d = NULL; +PFNGLPROGRAMUNIFORM3DVPROC glad_glProgramUniform3dv = NULL; +PFNGLPROGRAMUNIFORM3FPROC glad_glProgramUniform3f = NULL; +PFNGLPROGRAMUNIFORM3FVPROC glad_glProgramUniform3fv = NULL; +PFNGLPROGRAMUNIFORM3IPROC glad_glProgramUniform3i = NULL; +PFNGLPROGRAMUNIFORM3IVPROC glad_glProgramUniform3iv = NULL; +PFNGLPROGRAMUNIFORM3UIPROC glad_glProgramUniform3ui = NULL; +PFNGLPROGRAMUNIFORM3UIVPROC glad_glProgramUniform3uiv = NULL; +PFNGLPROGRAMUNIFORM4DPROC glad_glProgramUniform4d = NULL; +PFNGLPROGRAMUNIFORM4DVPROC glad_glProgramUniform4dv = NULL; +PFNGLPROGRAMUNIFORM4FPROC glad_glProgramUniform4f = NULL; +PFNGLPROGRAMUNIFORM4FVPROC glad_glProgramUniform4fv = NULL; +PFNGLPROGRAMUNIFORM4IPROC glad_glProgramUniform4i = NULL; +PFNGLPROGRAMUNIFORM4IVPROC glad_glProgramUniform4iv = NULL; +PFNGLPROGRAMUNIFORM4UIPROC glad_glProgramUniform4ui = NULL; +PFNGLPROGRAMUNIFORM4UIVPROC glad_glProgramUniform4uiv = NULL; +PFNGLPROGRAMUNIFORMMATRIX2DVPROC glad_glProgramUniformMatrix2dv = NULL; +PFNGLPROGRAMUNIFORMMATRIX2FVPROC glad_glProgramUniformMatrix2fv = NULL; +PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC glad_glProgramUniformMatrix2x3dv = NULL; +PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC glad_glProgramUniformMatrix2x3fv = NULL; +PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC glad_glProgramUniformMatrix2x4dv = NULL; +PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC glad_glProgramUniformMatrix2x4fv = NULL; +PFNGLPROGRAMUNIFORMMATRIX3DVPROC glad_glProgramUniformMatrix3dv = NULL; +PFNGLPROGRAMUNIFORMMATRIX3FVPROC glad_glProgramUniformMatrix3fv = NULL; +PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC glad_glProgramUniformMatrix3x2dv = NULL; +PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC glad_glProgramUniformMatrix3x2fv = NULL; +PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC glad_glProgramUniformMatrix3x4dv = NULL; +PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC glad_glProgramUniformMatrix3x4fv = NULL; +PFNGLPROGRAMUNIFORMMATRIX4DVPROC glad_glProgramUniformMatrix4dv = NULL; +PFNGLPROGRAMUNIFORMMATRIX4FVPROC glad_glProgramUniformMatrix4fv = NULL; +PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC glad_glProgramUniformMatrix4x2dv = NULL; +PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC glad_glProgramUniformMatrix4x2fv = NULL; +PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC glad_glProgramUniformMatrix4x3dv = NULL; +PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC glad_glProgramUniformMatrix4x3fv = NULL; +PFNGLPROVOKINGVERTEXPROC glad_glProvokingVertex = NULL; +PFNGLQUERYCOUNTERPROC glad_glQueryCounter = NULL; +PFNGLREADBUFFERPROC glad_glReadBuffer = NULL; +PFNGLREADPIXELSPROC glad_glReadPixels = NULL; +PFNGLRELEASESHADERCOMPILERPROC glad_glReleaseShaderCompiler = NULL; +PFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage = NULL; +PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glRenderbufferStorageMultisample = NULL; +PFNGLRESUMETRANSFORMFEEDBACKPROC glad_glResumeTransformFeedback = NULL; +PFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage = NULL; +PFNGLSAMPLEMASKIPROC glad_glSampleMaski = NULL; +PFNGLSAMPLERPARAMETERIIVPROC glad_glSamplerParameterIiv = NULL; +PFNGLSAMPLERPARAMETERIUIVPROC glad_glSamplerParameterIuiv = NULL; +PFNGLSAMPLERPARAMETERFPROC glad_glSamplerParameterf = NULL; +PFNGLSAMPLERPARAMETERFVPROC glad_glSamplerParameterfv = NULL; +PFNGLSAMPLERPARAMETERIPROC glad_glSamplerParameteri = NULL; +PFNGLSAMPLERPARAMETERIVPROC glad_glSamplerParameteriv = NULL; +PFNGLSCISSORPROC glad_glScissor = NULL; +PFNGLSCISSORARRAYVPROC glad_glScissorArrayv = NULL; +PFNGLSCISSORINDEXEDPROC glad_glScissorIndexed = NULL; +PFNGLSCISSORINDEXEDVPROC glad_glScissorIndexedv = NULL; +PFNGLSECONDARYCOLORP3UIPROC glad_glSecondaryColorP3ui = NULL; +PFNGLSECONDARYCOLORP3UIVPROC glad_glSecondaryColorP3uiv = NULL; +PFNGLSHADERBINARYPROC glad_glShaderBinary = NULL; +PFNGLSHADERSOURCEPROC glad_glShaderSource = NULL; +PFNGLSTENCILFUNCPROC glad_glStencilFunc = NULL; +PFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate = NULL; +PFNGLSTENCILMASKPROC glad_glStencilMask = NULL; +PFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate = NULL; +PFNGLSTENCILOPPROC glad_glStencilOp = NULL; +PFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate = NULL; +PFNGLTEXBUFFERPROC glad_glTexBuffer = NULL; +PFNGLTEXCOORDP1UIPROC glad_glTexCoordP1ui = NULL; +PFNGLTEXCOORDP1UIVPROC glad_glTexCoordP1uiv = NULL; +PFNGLTEXCOORDP2UIPROC glad_glTexCoordP2ui = NULL; +PFNGLTEXCOORDP2UIVPROC glad_glTexCoordP2uiv = NULL; +PFNGLTEXCOORDP3UIPROC glad_glTexCoordP3ui = NULL; +PFNGLTEXCOORDP3UIVPROC glad_glTexCoordP3uiv = NULL; +PFNGLTEXCOORDP4UIPROC glad_glTexCoordP4ui = NULL; +PFNGLTEXCOORDP4UIVPROC glad_glTexCoordP4uiv = NULL; +PFNGLTEXIMAGE1DPROC glad_glTexImage1D = NULL; +PFNGLTEXIMAGE2DPROC glad_glTexImage2D = NULL; +PFNGLTEXIMAGE2DMULTISAMPLEPROC glad_glTexImage2DMultisample = NULL; +PFNGLTEXIMAGE3DPROC glad_glTexImage3D = NULL; +PFNGLTEXIMAGE3DMULTISAMPLEPROC glad_glTexImage3DMultisample = NULL; +PFNGLTEXPARAMETERIIVPROC glad_glTexParameterIiv = NULL; +PFNGLTEXPARAMETERIUIVPROC glad_glTexParameterIuiv = NULL; +PFNGLTEXPARAMETERFPROC glad_glTexParameterf = NULL; +PFNGLTEXPARAMETERFVPROC glad_glTexParameterfv = NULL; +PFNGLTEXPARAMETERIPROC glad_glTexParameteri = NULL; +PFNGLTEXPARAMETERIVPROC glad_glTexParameteriv = NULL; +PFNGLTEXSUBIMAGE1DPROC glad_glTexSubImage1D = NULL; +PFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D = NULL; +PFNGLTEXSUBIMAGE3DPROC glad_glTexSubImage3D = NULL; +PFNGLTRANSFORMFEEDBACKVARYINGSPROC glad_glTransformFeedbackVaryings = NULL; +PFNGLUNIFORM1DPROC glad_glUniform1d = NULL; +PFNGLUNIFORM1DVPROC glad_glUniform1dv = NULL; +PFNGLUNIFORM1FPROC glad_glUniform1f = NULL; +PFNGLUNIFORM1FVPROC glad_glUniform1fv = NULL; +PFNGLUNIFORM1IPROC glad_glUniform1i = NULL; +PFNGLUNIFORM1IVPROC glad_glUniform1iv = NULL; +PFNGLUNIFORM1UIPROC glad_glUniform1ui = NULL; +PFNGLUNIFORM1UIVPROC glad_glUniform1uiv = NULL; +PFNGLUNIFORM2DPROC glad_glUniform2d = NULL; +PFNGLUNIFORM2DVPROC glad_glUniform2dv = NULL; +PFNGLUNIFORM2FPROC glad_glUniform2f = NULL; +PFNGLUNIFORM2FVPROC glad_glUniform2fv = NULL; +PFNGLUNIFORM2IPROC glad_glUniform2i = NULL; +PFNGLUNIFORM2IVPROC glad_glUniform2iv = NULL; +PFNGLUNIFORM2UIPROC glad_glUniform2ui = NULL; +PFNGLUNIFORM2UIVPROC glad_glUniform2uiv = NULL; +PFNGLUNIFORM3DPROC glad_glUniform3d = NULL; +PFNGLUNIFORM3DVPROC glad_glUniform3dv = NULL; +PFNGLUNIFORM3FPROC glad_glUniform3f = NULL; +PFNGLUNIFORM3FVPROC glad_glUniform3fv = NULL; +PFNGLUNIFORM3IPROC glad_glUniform3i = NULL; +PFNGLUNIFORM3IVPROC glad_glUniform3iv = NULL; +PFNGLUNIFORM3UIPROC glad_glUniform3ui = NULL; +PFNGLUNIFORM3UIVPROC glad_glUniform3uiv = NULL; +PFNGLUNIFORM4DPROC glad_glUniform4d = NULL; +PFNGLUNIFORM4DVPROC glad_glUniform4dv = NULL; +PFNGLUNIFORM4FPROC glad_glUniform4f = NULL; +PFNGLUNIFORM4FVPROC glad_glUniform4fv = NULL; +PFNGLUNIFORM4IPROC glad_glUniform4i = NULL; +PFNGLUNIFORM4IVPROC glad_glUniform4iv = NULL; +PFNGLUNIFORM4UIPROC glad_glUniform4ui = NULL; +PFNGLUNIFORM4UIVPROC glad_glUniform4uiv = NULL; +PFNGLUNIFORMBLOCKBINDINGPROC glad_glUniformBlockBinding = NULL; +PFNGLUNIFORMMATRIX2DVPROC glad_glUniformMatrix2dv = NULL; +PFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv = NULL; +PFNGLUNIFORMMATRIX2X3DVPROC glad_glUniformMatrix2x3dv = NULL; +PFNGLUNIFORMMATRIX2X3FVPROC glad_glUniformMatrix2x3fv = NULL; +PFNGLUNIFORMMATRIX2X4DVPROC glad_glUniformMatrix2x4dv = NULL; +PFNGLUNIFORMMATRIX2X4FVPROC glad_glUniformMatrix2x4fv = NULL; +PFNGLUNIFORMMATRIX3DVPROC glad_glUniformMatrix3dv = NULL; +PFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv = NULL; +PFNGLUNIFORMMATRIX3X2DVPROC glad_glUniformMatrix3x2dv = NULL; +PFNGLUNIFORMMATRIX3X2FVPROC glad_glUniformMatrix3x2fv = NULL; +PFNGLUNIFORMMATRIX3X4DVPROC glad_glUniformMatrix3x4dv = NULL; +PFNGLUNIFORMMATRIX3X4FVPROC glad_glUniformMatrix3x4fv = NULL; +PFNGLUNIFORMMATRIX4DVPROC glad_glUniformMatrix4dv = NULL; +PFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv = NULL; +PFNGLUNIFORMMATRIX4X2DVPROC glad_glUniformMatrix4x2dv = NULL; +PFNGLUNIFORMMATRIX4X2FVPROC glad_glUniformMatrix4x2fv = NULL; +PFNGLUNIFORMMATRIX4X3DVPROC glad_glUniformMatrix4x3dv = NULL; +PFNGLUNIFORMMATRIX4X3FVPROC glad_glUniformMatrix4x3fv = NULL; +PFNGLUNIFORMSUBROUTINESUIVPROC glad_glUniformSubroutinesuiv = NULL; +PFNGLUNMAPBUFFERPROC glad_glUnmapBuffer = NULL; +PFNGLUSEPROGRAMPROC glad_glUseProgram = NULL; +PFNGLUSEPROGRAMSTAGESPROC glad_glUseProgramStages = NULL; +PFNGLVALIDATEPROGRAMPROC glad_glValidateProgram = NULL; +PFNGLVALIDATEPROGRAMPIPELINEPROC glad_glValidateProgramPipeline = NULL; +PFNGLVERTEXATTRIB1DPROC glad_glVertexAttrib1d = NULL; +PFNGLVERTEXATTRIB1DVPROC glad_glVertexAttrib1dv = NULL; +PFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f = NULL; +PFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv = NULL; +PFNGLVERTEXATTRIB1SPROC glad_glVertexAttrib1s = NULL; +PFNGLVERTEXATTRIB1SVPROC glad_glVertexAttrib1sv = NULL; +PFNGLVERTEXATTRIB2DPROC glad_glVertexAttrib2d = NULL; +PFNGLVERTEXATTRIB2DVPROC glad_glVertexAttrib2dv = NULL; +PFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f = NULL; +PFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv = NULL; +PFNGLVERTEXATTRIB2SPROC glad_glVertexAttrib2s = NULL; +PFNGLVERTEXATTRIB2SVPROC glad_glVertexAttrib2sv = NULL; +PFNGLVERTEXATTRIB3DPROC glad_glVertexAttrib3d = NULL; +PFNGLVERTEXATTRIB3DVPROC glad_glVertexAttrib3dv = NULL; +PFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f = NULL; +PFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv = NULL; +PFNGLVERTEXATTRIB3SPROC glad_glVertexAttrib3s = NULL; +PFNGLVERTEXATTRIB3SVPROC glad_glVertexAttrib3sv = NULL; +PFNGLVERTEXATTRIB4NBVPROC glad_glVertexAttrib4Nbv = NULL; +PFNGLVERTEXATTRIB4NIVPROC glad_glVertexAttrib4Niv = NULL; +PFNGLVERTEXATTRIB4NSVPROC glad_glVertexAttrib4Nsv = NULL; +PFNGLVERTEXATTRIB4NUBPROC glad_glVertexAttrib4Nub = NULL; +PFNGLVERTEXATTRIB4NUBVPROC glad_glVertexAttrib4Nubv = NULL; +PFNGLVERTEXATTRIB4NUIVPROC glad_glVertexAttrib4Nuiv = NULL; +PFNGLVERTEXATTRIB4NUSVPROC glad_glVertexAttrib4Nusv = NULL; +PFNGLVERTEXATTRIB4BVPROC glad_glVertexAttrib4bv = NULL; +PFNGLVERTEXATTRIB4DPROC glad_glVertexAttrib4d = NULL; +PFNGLVERTEXATTRIB4DVPROC glad_glVertexAttrib4dv = NULL; +PFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f = NULL; +PFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv = NULL; +PFNGLVERTEXATTRIB4IVPROC glad_glVertexAttrib4iv = NULL; +PFNGLVERTEXATTRIB4SPROC glad_glVertexAttrib4s = NULL; +PFNGLVERTEXATTRIB4SVPROC glad_glVertexAttrib4sv = NULL; +PFNGLVERTEXATTRIB4UBVPROC glad_glVertexAttrib4ubv = NULL; +PFNGLVERTEXATTRIB4UIVPROC glad_glVertexAttrib4uiv = NULL; +PFNGLVERTEXATTRIB4USVPROC glad_glVertexAttrib4usv = NULL; +PFNGLVERTEXATTRIBDIVISORPROC glad_glVertexAttribDivisor = NULL; +PFNGLVERTEXATTRIBI1IPROC glad_glVertexAttribI1i = NULL; +PFNGLVERTEXATTRIBI1IVPROC glad_glVertexAttribI1iv = NULL; +PFNGLVERTEXATTRIBI1UIPROC glad_glVertexAttribI1ui = NULL; +PFNGLVERTEXATTRIBI1UIVPROC glad_glVertexAttribI1uiv = NULL; +PFNGLVERTEXATTRIBI2IPROC glad_glVertexAttribI2i = NULL; +PFNGLVERTEXATTRIBI2IVPROC glad_glVertexAttribI2iv = NULL; +PFNGLVERTEXATTRIBI2UIPROC glad_glVertexAttribI2ui = NULL; +PFNGLVERTEXATTRIBI2UIVPROC glad_glVertexAttribI2uiv = NULL; +PFNGLVERTEXATTRIBI3IPROC glad_glVertexAttribI3i = NULL; +PFNGLVERTEXATTRIBI3IVPROC glad_glVertexAttribI3iv = NULL; +PFNGLVERTEXATTRIBI3UIPROC glad_glVertexAttribI3ui = NULL; +PFNGLVERTEXATTRIBI3UIVPROC glad_glVertexAttribI3uiv = NULL; +PFNGLVERTEXATTRIBI4BVPROC glad_glVertexAttribI4bv = NULL; +PFNGLVERTEXATTRIBI4IPROC glad_glVertexAttribI4i = NULL; +PFNGLVERTEXATTRIBI4IVPROC glad_glVertexAttribI4iv = NULL; +PFNGLVERTEXATTRIBI4SVPROC glad_glVertexAttribI4sv = NULL; +PFNGLVERTEXATTRIBI4UBVPROC glad_glVertexAttribI4ubv = NULL; +PFNGLVERTEXATTRIBI4UIPROC glad_glVertexAttribI4ui = NULL; +PFNGLVERTEXATTRIBI4UIVPROC glad_glVertexAttribI4uiv = NULL; +PFNGLVERTEXATTRIBI4USVPROC glad_glVertexAttribI4usv = NULL; +PFNGLVERTEXATTRIBIPOINTERPROC glad_glVertexAttribIPointer = NULL; +PFNGLVERTEXATTRIBL1DPROC glad_glVertexAttribL1d = NULL; +PFNGLVERTEXATTRIBL1DVPROC glad_glVertexAttribL1dv = NULL; +PFNGLVERTEXATTRIBL2DPROC glad_glVertexAttribL2d = NULL; +PFNGLVERTEXATTRIBL2DVPROC glad_glVertexAttribL2dv = NULL; +PFNGLVERTEXATTRIBL3DPROC glad_glVertexAttribL3d = NULL; +PFNGLVERTEXATTRIBL3DVPROC glad_glVertexAttribL3dv = NULL; +PFNGLVERTEXATTRIBL4DPROC glad_glVertexAttribL4d = NULL; +PFNGLVERTEXATTRIBL4DVPROC glad_glVertexAttribL4dv = NULL; +PFNGLVERTEXATTRIBLPOINTERPROC glad_glVertexAttribLPointer = NULL; +PFNGLVERTEXATTRIBP1UIPROC glad_glVertexAttribP1ui = NULL; +PFNGLVERTEXATTRIBP1UIVPROC glad_glVertexAttribP1uiv = NULL; +PFNGLVERTEXATTRIBP2UIPROC glad_glVertexAttribP2ui = NULL; +PFNGLVERTEXATTRIBP2UIVPROC glad_glVertexAttribP2uiv = NULL; +PFNGLVERTEXATTRIBP3UIPROC glad_glVertexAttribP3ui = NULL; +PFNGLVERTEXATTRIBP3UIVPROC glad_glVertexAttribP3uiv = NULL; +PFNGLVERTEXATTRIBP4UIPROC glad_glVertexAttribP4ui = NULL; +PFNGLVERTEXATTRIBP4UIVPROC glad_glVertexAttribP4uiv = NULL; +PFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer = NULL; +PFNGLVERTEXP2UIPROC glad_glVertexP2ui = NULL; +PFNGLVERTEXP2UIVPROC glad_glVertexP2uiv = NULL; +PFNGLVERTEXP3UIPROC glad_glVertexP3ui = NULL; +PFNGLVERTEXP3UIVPROC glad_glVertexP3uiv = NULL; +PFNGLVERTEXP4UIPROC glad_glVertexP4ui = NULL; +PFNGLVERTEXP4UIVPROC glad_glVertexP4uiv = NULL; +PFNGLVIEWPORTPROC glad_glViewport = NULL; +PFNGLVIEWPORTARRAYVPROC glad_glViewportArrayv = NULL; +PFNGLVIEWPORTINDEXEDFPROC glad_glViewportIndexedf = NULL; +PFNGLVIEWPORTINDEXEDFVPROC glad_glViewportIndexedfv = NULL; +PFNGLWAITSYNCPROC glad_glWaitSync = NULL; +static void load_GL_VERSION_1_0(GLADloadproc load) { + if(!GLAD_GL_VERSION_1_0) return; + glad_glCullFace = (PFNGLCULLFACEPROC)load("glCullFace"); + glad_glFrontFace = (PFNGLFRONTFACEPROC)load("glFrontFace"); + glad_glHint = (PFNGLHINTPROC)load("glHint"); + glad_glLineWidth = (PFNGLLINEWIDTHPROC)load("glLineWidth"); + glad_glPointSize = (PFNGLPOINTSIZEPROC)load("glPointSize"); + glad_glPolygonMode = (PFNGLPOLYGONMODEPROC)load("glPolygonMode"); + glad_glScissor = (PFNGLSCISSORPROC)load("glScissor"); + glad_glTexParameterf = (PFNGLTEXPARAMETERFPROC)load("glTexParameterf"); + glad_glTexParameterfv = (PFNGLTEXPARAMETERFVPROC)load("glTexParameterfv"); + glad_glTexParameteri = (PFNGLTEXPARAMETERIPROC)load("glTexParameteri"); + glad_glTexParameteriv = (PFNGLTEXPARAMETERIVPROC)load("glTexParameteriv"); + glad_glTexImage1D = (PFNGLTEXIMAGE1DPROC)load("glTexImage1D"); + glad_glTexImage2D = (PFNGLTEXIMAGE2DPROC)load("glTexImage2D"); + glad_glDrawBuffer = (PFNGLDRAWBUFFERPROC)load("glDrawBuffer"); + glad_glClear = (PFNGLCLEARPROC)load("glClear"); + glad_glClearColor = (PFNGLCLEARCOLORPROC)load("glClearColor"); + glad_glClearStencil = (PFNGLCLEARSTENCILPROC)load("glClearStencil"); + glad_glClearDepth = (PFNGLCLEARDEPTHPROC)load("glClearDepth"); + glad_glStencilMask = (PFNGLSTENCILMASKPROC)load("glStencilMask"); + glad_glColorMask = (PFNGLCOLORMASKPROC)load("glColorMask"); + glad_glDepthMask = (PFNGLDEPTHMASKPROC)load("glDepthMask"); + glad_glDisable = (PFNGLDISABLEPROC)load("glDisable"); + glad_glEnable = (PFNGLENABLEPROC)load("glEnable"); + glad_glFinish = (PFNGLFINISHPROC)load("glFinish"); + glad_glFlush = (PFNGLFLUSHPROC)load("glFlush"); + glad_glBlendFunc = (PFNGLBLENDFUNCPROC)load("glBlendFunc"); + glad_glLogicOp = (PFNGLLOGICOPPROC)load("glLogicOp"); + glad_glStencilFunc = (PFNGLSTENCILFUNCPROC)load("glStencilFunc"); + glad_glStencilOp = (PFNGLSTENCILOPPROC)load("glStencilOp"); + glad_glDepthFunc = (PFNGLDEPTHFUNCPROC)load("glDepthFunc"); + glad_glPixelStoref = (PFNGLPIXELSTOREFPROC)load("glPixelStoref"); + glad_glPixelStorei = (PFNGLPIXELSTOREIPROC)load("glPixelStorei"); + glad_glReadBuffer = (PFNGLREADBUFFERPROC)load("glReadBuffer"); + glad_glReadPixels = (PFNGLREADPIXELSPROC)load("glReadPixels"); + glad_glGetBooleanv = (PFNGLGETBOOLEANVPROC)load("glGetBooleanv"); + glad_glGetDoublev = (PFNGLGETDOUBLEVPROC)load("glGetDoublev"); + glad_glGetError = (PFNGLGETERRORPROC)load("glGetError"); + glad_glGetFloatv = (PFNGLGETFLOATVPROC)load("glGetFloatv"); + glad_glGetIntegerv = (PFNGLGETINTEGERVPROC)load("glGetIntegerv"); + glad_glGetString = (PFNGLGETSTRINGPROC)load("glGetString"); + glad_glGetTexImage = (PFNGLGETTEXIMAGEPROC)load("glGetTexImage"); + glad_glGetTexParameterfv = (PFNGLGETTEXPARAMETERFVPROC)load("glGetTexParameterfv"); + glad_glGetTexParameteriv = (PFNGLGETTEXPARAMETERIVPROC)load("glGetTexParameteriv"); + glad_glGetTexLevelParameterfv = (PFNGLGETTEXLEVELPARAMETERFVPROC)load("glGetTexLevelParameterfv"); + glad_glGetTexLevelParameteriv = (PFNGLGETTEXLEVELPARAMETERIVPROC)load("glGetTexLevelParameteriv"); + glad_glIsEnabled = (PFNGLISENABLEDPROC)load("glIsEnabled"); + glad_glDepthRange = (PFNGLDEPTHRANGEPROC)load("glDepthRange"); + glad_glViewport = (PFNGLVIEWPORTPROC)load("glViewport"); +} +static void load_GL_VERSION_1_1(GLADloadproc load) { + if(!GLAD_GL_VERSION_1_1) return; + glad_glDrawArrays = (PFNGLDRAWARRAYSPROC)load("glDrawArrays"); + glad_glDrawElements = (PFNGLDRAWELEMENTSPROC)load("glDrawElements"); + glad_glPolygonOffset = (PFNGLPOLYGONOFFSETPROC)load("glPolygonOffset"); + glad_glCopyTexImage1D = (PFNGLCOPYTEXIMAGE1DPROC)load("glCopyTexImage1D"); + glad_glCopyTexImage2D = (PFNGLCOPYTEXIMAGE2DPROC)load("glCopyTexImage2D"); + glad_glCopyTexSubImage1D = (PFNGLCOPYTEXSUBIMAGE1DPROC)load("glCopyTexSubImage1D"); + glad_glCopyTexSubImage2D = (PFNGLCOPYTEXSUBIMAGE2DPROC)load("glCopyTexSubImage2D"); + glad_glTexSubImage1D = (PFNGLTEXSUBIMAGE1DPROC)load("glTexSubImage1D"); + glad_glTexSubImage2D = (PFNGLTEXSUBIMAGE2DPROC)load("glTexSubImage2D"); + glad_glBindTexture = (PFNGLBINDTEXTUREPROC)load("glBindTexture"); + glad_glDeleteTextures = (PFNGLDELETETEXTURESPROC)load("glDeleteTextures"); + glad_glGenTextures = (PFNGLGENTEXTURESPROC)load("glGenTextures"); + glad_glIsTexture = (PFNGLISTEXTUREPROC)load("glIsTexture"); +} +static void load_GL_VERSION_1_2(GLADloadproc load) { + if(!GLAD_GL_VERSION_1_2) return; + glad_glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)load("glDrawRangeElements"); + glad_glTexImage3D = (PFNGLTEXIMAGE3DPROC)load("glTexImage3D"); + glad_glTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC)load("glTexSubImage3D"); + glad_glCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC)load("glCopyTexSubImage3D"); +} +static void load_GL_VERSION_1_3(GLADloadproc load) { + if(!GLAD_GL_VERSION_1_3) return; + glad_glActiveTexture = (PFNGLACTIVETEXTUREPROC)load("glActiveTexture"); + glad_glSampleCoverage = (PFNGLSAMPLECOVERAGEPROC)load("glSampleCoverage"); + glad_glCompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC)load("glCompressedTexImage3D"); + glad_glCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC)load("glCompressedTexImage2D"); + glad_glCompressedTexImage1D = (PFNGLCOMPRESSEDTEXIMAGE1DPROC)load("glCompressedTexImage1D"); + glad_glCompressedTexSubImage3D = (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)load("glCompressedTexSubImage3D"); + glad_glCompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)load("glCompressedTexSubImage2D"); + glad_glCompressedTexSubImage1D = (PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)load("glCompressedTexSubImage1D"); + glad_glGetCompressedTexImage = (PFNGLGETCOMPRESSEDTEXIMAGEPROC)load("glGetCompressedTexImage"); +} +static void load_GL_VERSION_1_4(GLADloadproc load) { + if(!GLAD_GL_VERSION_1_4) return; + glad_glBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC)load("glBlendFuncSeparate"); + glad_glMultiDrawArrays = (PFNGLMULTIDRAWARRAYSPROC)load("glMultiDrawArrays"); + glad_glMultiDrawElements = (PFNGLMULTIDRAWELEMENTSPROC)load("glMultiDrawElements"); + glad_glPointParameterf = (PFNGLPOINTPARAMETERFPROC)load("glPointParameterf"); + glad_glPointParameterfv = (PFNGLPOINTPARAMETERFVPROC)load("glPointParameterfv"); + glad_glPointParameteri = (PFNGLPOINTPARAMETERIPROC)load("glPointParameteri"); + glad_glPointParameteriv = (PFNGLPOINTPARAMETERIVPROC)load("glPointParameteriv"); + glad_glBlendColor = (PFNGLBLENDCOLORPROC)load("glBlendColor"); + glad_glBlendEquation = (PFNGLBLENDEQUATIONPROC)load("glBlendEquation"); +} +static void load_GL_VERSION_1_5(GLADloadproc load) { + if(!GLAD_GL_VERSION_1_5) return; + glad_glGenQueries = (PFNGLGENQUERIESPROC)load("glGenQueries"); + glad_glDeleteQueries = (PFNGLDELETEQUERIESPROC)load("glDeleteQueries"); + glad_glIsQuery = (PFNGLISQUERYPROC)load("glIsQuery"); + glad_glBeginQuery = (PFNGLBEGINQUERYPROC)load("glBeginQuery"); + glad_glEndQuery = (PFNGLENDQUERYPROC)load("glEndQuery"); + glad_glGetQueryiv = (PFNGLGETQUERYIVPROC)load("glGetQueryiv"); + glad_glGetQueryObjectiv = (PFNGLGETQUERYOBJECTIVPROC)load("glGetQueryObjectiv"); + glad_glGetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC)load("glGetQueryObjectuiv"); + glad_glBindBuffer = (PFNGLBINDBUFFERPROC)load("glBindBuffer"); + glad_glDeleteBuffers = (PFNGLDELETEBUFFERSPROC)load("glDeleteBuffers"); + glad_glGenBuffers = (PFNGLGENBUFFERSPROC)load("glGenBuffers"); + glad_glIsBuffer = (PFNGLISBUFFERPROC)load("glIsBuffer"); + glad_glBufferData = (PFNGLBUFFERDATAPROC)load("glBufferData"); + glad_glBufferSubData = (PFNGLBUFFERSUBDATAPROC)load("glBufferSubData"); + glad_glGetBufferSubData = (PFNGLGETBUFFERSUBDATAPROC)load("glGetBufferSubData"); + glad_glMapBuffer = (PFNGLMAPBUFFERPROC)load("glMapBuffer"); + glad_glUnmapBuffer = (PFNGLUNMAPBUFFERPROC)load("glUnmapBuffer"); + glad_glGetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC)load("glGetBufferParameteriv"); + glad_glGetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC)load("glGetBufferPointerv"); +} +static void load_GL_VERSION_2_0(GLADloadproc load) { + if(!GLAD_GL_VERSION_2_0) return; + glad_glBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC)load("glBlendEquationSeparate"); + glad_glDrawBuffers = (PFNGLDRAWBUFFERSPROC)load("glDrawBuffers"); + glad_glStencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC)load("glStencilOpSeparate"); + glad_glStencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC)load("glStencilFuncSeparate"); + glad_glStencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC)load("glStencilMaskSeparate"); + glad_glAttachShader = (PFNGLATTACHSHADERPROC)load("glAttachShader"); + glad_glBindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC)load("glBindAttribLocation"); + glad_glCompileShader = (PFNGLCOMPILESHADERPROC)load("glCompileShader"); + glad_glCreateProgram = (PFNGLCREATEPROGRAMPROC)load("glCreateProgram"); + glad_glCreateShader = (PFNGLCREATESHADERPROC)load("glCreateShader"); + glad_glDeleteProgram = (PFNGLDELETEPROGRAMPROC)load("glDeleteProgram"); + glad_glDeleteShader = (PFNGLDELETESHADERPROC)load("glDeleteShader"); + glad_glDetachShader = (PFNGLDETACHSHADERPROC)load("glDetachShader"); + glad_glDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC)load("glDisableVertexAttribArray"); + glad_glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC)load("glEnableVertexAttribArray"); + glad_glGetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC)load("glGetActiveAttrib"); + glad_glGetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC)load("glGetActiveUniform"); + glad_glGetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC)load("glGetAttachedShaders"); + glad_glGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC)load("glGetAttribLocation"); + glad_glGetProgramiv = (PFNGLGETPROGRAMIVPROC)load("glGetProgramiv"); + glad_glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)load("glGetProgramInfoLog"); + glad_glGetShaderiv = (PFNGLGETSHADERIVPROC)load("glGetShaderiv"); + glad_glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)load("glGetShaderInfoLog"); + glad_glGetShaderSource = (PFNGLGETSHADERSOURCEPROC)load("glGetShaderSource"); + glad_glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)load("glGetUniformLocation"); + glad_glGetUniformfv = (PFNGLGETUNIFORMFVPROC)load("glGetUniformfv"); + glad_glGetUniformiv = (PFNGLGETUNIFORMIVPROC)load("glGetUniformiv"); + glad_glGetVertexAttribdv = (PFNGLGETVERTEXATTRIBDVPROC)load("glGetVertexAttribdv"); + glad_glGetVertexAttribfv = (PFNGLGETVERTEXATTRIBFVPROC)load("glGetVertexAttribfv"); + glad_glGetVertexAttribiv = (PFNGLGETVERTEXATTRIBIVPROC)load("glGetVertexAttribiv"); + glad_glGetVertexAttribPointerv = (PFNGLGETVERTEXATTRIBPOINTERVPROC)load("glGetVertexAttribPointerv"); + glad_glIsProgram = (PFNGLISPROGRAMPROC)load("glIsProgram"); + glad_glIsShader = (PFNGLISSHADERPROC)load("glIsShader"); + glad_glLinkProgram = (PFNGLLINKPROGRAMPROC)load("glLinkProgram"); + glad_glShaderSource = (PFNGLSHADERSOURCEPROC)load("glShaderSource"); + glad_glUseProgram = (PFNGLUSEPROGRAMPROC)load("glUseProgram"); + glad_glUniform1f = (PFNGLUNIFORM1FPROC)load("glUniform1f"); + glad_glUniform2f = (PFNGLUNIFORM2FPROC)load("glUniform2f"); + glad_glUniform3f = (PFNGLUNIFORM3FPROC)load("glUniform3f"); + glad_glUniform4f = (PFNGLUNIFORM4FPROC)load("glUniform4f"); + glad_glUniform1i = (PFNGLUNIFORM1IPROC)load("glUniform1i"); + glad_glUniform2i = (PFNGLUNIFORM2IPROC)load("glUniform2i"); + glad_glUniform3i = (PFNGLUNIFORM3IPROC)load("glUniform3i"); + glad_glUniform4i = (PFNGLUNIFORM4IPROC)load("glUniform4i"); + glad_glUniform1fv = (PFNGLUNIFORM1FVPROC)load("glUniform1fv"); + glad_glUniform2fv = (PFNGLUNIFORM2FVPROC)load("glUniform2fv"); + glad_glUniform3fv = (PFNGLUNIFORM3FVPROC)load("glUniform3fv"); + glad_glUniform4fv = (PFNGLUNIFORM4FVPROC)load("glUniform4fv"); + glad_glUniform1iv = (PFNGLUNIFORM1IVPROC)load("glUniform1iv"); + glad_glUniform2iv = (PFNGLUNIFORM2IVPROC)load("glUniform2iv"); + glad_glUniform3iv = (PFNGLUNIFORM3IVPROC)load("glUniform3iv"); + glad_glUniform4iv = (PFNGLUNIFORM4IVPROC)load("glUniform4iv"); + glad_glUniformMatrix2fv = (PFNGLUNIFORMMATRIX2FVPROC)load("glUniformMatrix2fv"); + glad_glUniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC)load("glUniformMatrix3fv"); + glad_glUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC)load("glUniformMatrix4fv"); + glad_glValidateProgram = (PFNGLVALIDATEPROGRAMPROC)load("glValidateProgram"); + glad_glVertexAttrib1d = (PFNGLVERTEXATTRIB1DPROC)load("glVertexAttrib1d"); + glad_glVertexAttrib1dv = (PFNGLVERTEXATTRIB1DVPROC)load("glVertexAttrib1dv"); + glad_glVertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC)load("glVertexAttrib1f"); + glad_glVertexAttrib1fv = (PFNGLVERTEXATTRIB1FVPROC)load("glVertexAttrib1fv"); + glad_glVertexAttrib1s = (PFNGLVERTEXATTRIB1SPROC)load("glVertexAttrib1s"); + glad_glVertexAttrib1sv = (PFNGLVERTEXATTRIB1SVPROC)load("glVertexAttrib1sv"); + glad_glVertexAttrib2d = (PFNGLVERTEXATTRIB2DPROC)load("glVertexAttrib2d"); + glad_glVertexAttrib2dv = (PFNGLVERTEXATTRIB2DVPROC)load("glVertexAttrib2dv"); + glad_glVertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC)load("glVertexAttrib2f"); + glad_glVertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC)load("glVertexAttrib2fv"); + glad_glVertexAttrib2s = (PFNGLVERTEXATTRIB2SPROC)load("glVertexAttrib2s"); + glad_glVertexAttrib2sv = (PFNGLVERTEXATTRIB2SVPROC)load("glVertexAttrib2sv"); + glad_glVertexAttrib3d = (PFNGLVERTEXATTRIB3DPROC)load("glVertexAttrib3d"); + glad_glVertexAttrib3dv = (PFNGLVERTEXATTRIB3DVPROC)load("glVertexAttrib3dv"); + glad_glVertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC)load("glVertexAttrib3f"); + glad_glVertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC)load("glVertexAttrib3fv"); + glad_glVertexAttrib3s = (PFNGLVERTEXATTRIB3SPROC)load("glVertexAttrib3s"); + glad_glVertexAttrib3sv = (PFNGLVERTEXATTRIB3SVPROC)load("glVertexAttrib3sv"); + glad_glVertexAttrib4Nbv = (PFNGLVERTEXATTRIB4NBVPROC)load("glVertexAttrib4Nbv"); + glad_glVertexAttrib4Niv = (PFNGLVERTEXATTRIB4NIVPROC)load("glVertexAttrib4Niv"); + glad_glVertexAttrib4Nsv = (PFNGLVERTEXATTRIB4NSVPROC)load("glVertexAttrib4Nsv"); + glad_glVertexAttrib4Nub = (PFNGLVERTEXATTRIB4NUBPROC)load("glVertexAttrib4Nub"); + glad_glVertexAttrib4Nubv = (PFNGLVERTEXATTRIB4NUBVPROC)load("glVertexAttrib4Nubv"); + glad_glVertexAttrib4Nuiv = (PFNGLVERTEXATTRIB4NUIVPROC)load("glVertexAttrib4Nuiv"); + glad_glVertexAttrib4Nusv = (PFNGLVERTEXATTRIB4NUSVPROC)load("glVertexAttrib4Nusv"); + glad_glVertexAttrib4bv = (PFNGLVERTEXATTRIB4BVPROC)load("glVertexAttrib4bv"); + glad_glVertexAttrib4d = (PFNGLVERTEXATTRIB4DPROC)load("glVertexAttrib4d"); + glad_glVertexAttrib4dv = (PFNGLVERTEXATTRIB4DVPROC)load("glVertexAttrib4dv"); + glad_glVertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC)load("glVertexAttrib4f"); + glad_glVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC)load("glVertexAttrib4fv"); + glad_glVertexAttrib4iv = (PFNGLVERTEXATTRIB4IVPROC)load("glVertexAttrib4iv"); + glad_glVertexAttrib4s = (PFNGLVERTEXATTRIB4SPROC)load("glVertexAttrib4s"); + glad_glVertexAttrib4sv = (PFNGLVERTEXATTRIB4SVPROC)load("glVertexAttrib4sv"); + glad_glVertexAttrib4ubv = (PFNGLVERTEXATTRIB4UBVPROC)load("glVertexAttrib4ubv"); + glad_glVertexAttrib4uiv = (PFNGLVERTEXATTRIB4UIVPROC)load("glVertexAttrib4uiv"); + glad_glVertexAttrib4usv = (PFNGLVERTEXATTRIB4USVPROC)load("glVertexAttrib4usv"); + glad_glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)load("glVertexAttribPointer"); +} +static void load_GL_VERSION_2_1(GLADloadproc load) { + if(!GLAD_GL_VERSION_2_1) return; + glad_glUniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FVPROC)load("glUniformMatrix2x3fv"); + glad_glUniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FVPROC)load("glUniformMatrix3x2fv"); + glad_glUniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FVPROC)load("glUniformMatrix2x4fv"); + glad_glUniformMatrix4x2fv = (PFNGLUNIFORMMATRIX4X2FVPROC)load("glUniformMatrix4x2fv"); + glad_glUniformMatrix3x4fv = (PFNGLUNIFORMMATRIX3X4FVPROC)load("glUniformMatrix3x4fv"); + glad_glUniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FVPROC)load("glUniformMatrix4x3fv"); +} +static void load_GL_VERSION_3_0(GLADloadproc load) { + if(!GLAD_GL_VERSION_3_0) return; + glad_glColorMaski = (PFNGLCOLORMASKIPROC)load("glColorMaski"); + glad_glGetBooleani_v = (PFNGLGETBOOLEANI_VPROC)load("glGetBooleani_v"); + glad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load("glGetIntegeri_v"); + glad_glEnablei = (PFNGLENABLEIPROC)load("glEnablei"); + glad_glDisablei = (PFNGLDISABLEIPROC)load("glDisablei"); + glad_glIsEnabledi = (PFNGLISENABLEDIPROC)load("glIsEnabledi"); + glad_glBeginTransformFeedback = (PFNGLBEGINTRANSFORMFEEDBACKPROC)load("glBeginTransformFeedback"); + glad_glEndTransformFeedback = (PFNGLENDTRANSFORMFEEDBACKPROC)load("glEndTransformFeedback"); + glad_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)load("glBindBufferRange"); + glad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load("glBindBufferBase"); + glad_glTransformFeedbackVaryings = (PFNGLTRANSFORMFEEDBACKVARYINGSPROC)load("glTransformFeedbackVaryings"); + glad_glGetTransformFeedbackVarying = (PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)load("glGetTransformFeedbackVarying"); + glad_glClampColor = (PFNGLCLAMPCOLORPROC)load("glClampColor"); + glad_glBeginConditionalRender = (PFNGLBEGINCONDITIONALRENDERPROC)load("glBeginConditionalRender"); + glad_glEndConditionalRender = (PFNGLENDCONDITIONALRENDERPROC)load("glEndConditionalRender"); + glad_glVertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTERPROC)load("glVertexAttribIPointer"); + glad_glGetVertexAttribIiv = (PFNGLGETVERTEXATTRIBIIVPROC)load("glGetVertexAttribIiv"); + glad_glGetVertexAttribIuiv = (PFNGLGETVERTEXATTRIBIUIVPROC)load("glGetVertexAttribIuiv"); + glad_glVertexAttribI1i = (PFNGLVERTEXATTRIBI1IPROC)load("glVertexAttribI1i"); + glad_glVertexAttribI2i = (PFNGLVERTEXATTRIBI2IPROC)load("glVertexAttribI2i"); + glad_glVertexAttribI3i = (PFNGLVERTEXATTRIBI3IPROC)load("glVertexAttribI3i"); + glad_glVertexAttribI4i = (PFNGLVERTEXATTRIBI4IPROC)load("glVertexAttribI4i"); + glad_glVertexAttribI1ui = (PFNGLVERTEXATTRIBI1UIPROC)load("glVertexAttribI1ui"); + glad_glVertexAttribI2ui = (PFNGLVERTEXATTRIBI2UIPROC)load("glVertexAttribI2ui"); + glad_glVertexAttribI3ui = (PFNGLVERTEXATTRIBI3UIPROC)load("glVertexAttribI3ui"); + glad_glVertexAttribI4ui = (PFNGLVERTEXATTRIBI4UIPROC)load("glVertexAttribI4ui"); + glad_glVertexAttribI1iv = (PFNGLVERTEXATTRIBI1IVPROC)load("glVertexAttribI1iv"); + glad_glVertexAttribI2iv = (PFNGLVERTEXATTRIBI2IVPROC)load("glVertexAttribI2iv"); + glad_glVertexAttribI3iv = (PFNGLVERTEXATTRIBI3IVPROC)load("glVertexAttribI3iv"); + glad_glVertexAttribI4iv = (PFNGLVERTEXATTRIBI4IVPROC)load("glVertexAttribI4iv"); + glad_glVertexAttribI1uiv = (PFNGLVERTEXATTRIBI1UIVPROC)load("glVertexAttribI1uiv"); + glad_glVertexAttribI2uiv = (PFNGLVERTEXATTRIBI2UIVPROC)load("glVertexAttribI2uiv"); + glad_glVertexAttribI3uiv = (PFNGLVERTEXATTRIBI3UIVPROC)load("glVertexAttribI3uiv"); + glad_glVertexAttribI4uiv = (PFNGLVERTEXATTRIBI4UIVPROC)load("glVertexAttribI4uiv"); + glad_glVertexAttribI4bv = (PFNGLVERTEXATTRIBI4BVPROC)load("glVertexAttribI4bv"); + glad_glVertexAttribI4sv = (PFNGLVERTEXATTRIBI4SVPROC)load("glVertexAttribI4sv"); + glad_glVertexAttribI4ubv = (PFNGLVERTEXATTRIBI4UBVPROC)load("glVertexAttribI4ubv"); + glad_glVertexAttribI4usv = (PFNGLVERTEXATTRIBI4USVPROC)load("glVertexAttribI4usv"); + glad_glGetUniformuiv = (PFNGLGETUNIFORMUIVPROC)load("glGetUniformuiv"); + glad_glBindFragDataLocation = (PFNGLBINDFRAGDATALOCATIONPROC)load("glBindFragDataLocation"); + glad_glGetFragDataLocation = (PFNGLGETFRAGDATALOCATIONPROC)load("glGetFragDataLocation"); + glad_glUniform1ui = (PFNGLUNIFORM1UIPROC)load("glUniform1ui"); + glad_glUniform2ui = (PFNGLUNIFORM2UIPROC)load("glUniform2ui"); + glad_glUniform3ui = (PFNGLUNIFORM3UIPROC)load("glUniform3ui"); + glad_glUniform4ui = (PFNGLUNIFORM4UIPROC)load("glUniform4ui"); + glad_glUniform1uiv = (PFNGLUNIFORM1UIVPROC)load("glUniform1uiv"); + glad_glUniform2uiv = (PFNGLUNIFORM2UIVPROC)load("glUniform2uiv"); + glad_glUniform3uiv = (PFNGLUNIFORM3UIVPROC)load("glUniform3uiv"); + glad_glUniform4uiv = (PFNGLUNIFORM4UIVPROC)load("glUniform4uiv"); + glad_glTexParameterIiv = (PFNGLTEXPARAMETERIIVPROC)load("glTexParameterIiv"); + glad_glTexParameterIuiv = (PFNGLTEXPARAMETERIUIVPROC)load("glTexParameterIuiv"); + glad_glGetTexParameterIiv = (PFNGLGETTEXPARAMETERIIVPROC)load("glGetTexParameterIiv"); + glad_glGetTexParameterIuiv = (PFNGLGETTEXPARAMETERIUIVPROC)load("glGetTexParameterIuiv"); + glad_glClearBufferiv = (PFNGLCLEARBUFFERIVPROC)load("glClearBufferiv"); + glad_glClearBufferuiv = (PFNGLCLEARBUFFERUIVPROC)load("glClearBufferuiv"); + glad_glClearBufferfv = (PFNGLCLEARBUFFERFVPROC)load("glClearBufferfv"); + glad_glClearBufferfi = (PFNGLCLEARBUFFERFIPROC)load("glClearBufferfi"); + glad_glGetStringi = (PFNGLGETSTRINGIPROC)load("glGetStringi"); + glad_glIsRenderbuffer = (PFNGLISRENDERBUFFERPROC)load("glIsRenderbuffer"); + glad_glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC)load("glBindRenderbuffer"); + glad_glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC)load("glDeleteRenderbuffers"); + glad_glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC)load("glGenRenderbuffers"); + glad_glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC)load("glRenderbufferStorage"); + glad_glGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC)load("glGetRenderbufferParameteriv"); + glad_glIsFramebuffer = (PFNGLISFRAMEBUFFERPROC)load("glIsFramebuffer"); + glad_glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC)load("glBindFramebuffer"); + glad_glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)load("glDeleteFramebuffers"); + glad_glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC)load("glGenFramebuffers"); + glad_glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)load("glCheckFramebufferStatus"); + glad_glFramebufferTexture1D = (PFNGLFRAMEBUFFERTEXTURE1DPROC)load("glFramebufferTexture1D"); + glad_glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)load("glFramebufferTexture2D"); + glad_glFramebufferTexture3D = (PFNGLFRAMEBUFFERTEXTURE3DPROC)load("glFramebufferTexture3D"); + glad_glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC)load("glFramebufferRenderbuffer"); + glad_glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)load("glGetFramebufferAttachmentParameteriv"); + glad_glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC)load("glGenerateMipmap"); + glad_glBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC)load("glBlitFramebuffer"); + glad_glRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)load("glRenderbufferStorageMultisample"); + glad_glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC)load("glFramebufferTextureLayer"); + glad_glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC)load("glMapBufferRange"); + glad_glFlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC)load("glFlushMappedBufferRange"); + glad_glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC)load("glBindVertexArray"); + glad_glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC)load("glDeleteVertexArrays"); + glad_glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)load("glGenVertexArrays"); + glad_glIsVertexArray = (PFNGLISVERTEXARRAYPROC)load("glIsVertexArray"); +} +static void load_GL_VERSION_3_1(GLADloadproc load) { + if(!GLAD_GL_VERSION_3_1) return; + glad_glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC)load("glDrawArraysInstanced"); + glad_glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC)load("glDrawElementsInstanced"); + glad_glTexBuffer = (PFNGLTEXBUFFERPROC)load("glTexBuffer"); + glad_glPrimitiveRestartIndex = (PFNGLPRIMITIVERESTARTINDEXPROC)load("glPrimitiveRestartIndex"); + glad_glCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)load("glCopyBufferSubData"); + glad_glGetUniformIndices = (PFNGLGETUNIFORMINDICESPROC)load("glGetUniformIndices"); + glad_glGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC)load("glGetActiveUniformsiv"); + glad_glGetActiveUniformName = (PFNGLGETACTIVEUNIFORMNAMEPROC)load("glGetActiveUniformName"); + glad_glGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)load("glGetUniformBlockIndex"); + glad_glGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)load("glGetActiveUniformBlockiv"); + glad_glGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)load("glGetActiveUniformBlockName"); + glad_glUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)load("glUniformBlockBinding"); + glad_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)load("glBindBufferRange"); + glad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load("glBindBufferBase"); + glad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load("glGetIntegeri_v"); +} +static void load_GL_VERSION_3_2(GLADloadproc load) { + if(!GLAD_GL_VERSION_3_2) return; + glad_glDrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEXPROC)load("glDrawElementsBaseVertex"); + glad_glDrawRangeElementsBaseVertex = (PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)load("glDrawRangeElementsBaseVertex"); + glad_glDrawElementsInstancedBaseVertex = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)load("glDrawElementsInstancedBaseVertex"); + glad_glMultiDrawElementsBaseVertex = (PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)load("glMultiDrawElementsBaseVertex"); + glad_glProvokingVertex = (PFNGLPROVOKINGVERTEXPROC)load("glProvokingVertex"); + glad_glFenceSync = (PFNGLFENCESYNCPROC)load("glFenceSync"); + glad_glIsSync = (PFNGLISSYNCPROC)load("glIsSync"); + glad_glDeleteSync = (PFNGLDELETESYNCPROC)load("glDeleteSync"); + glad_glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)load("glClientWaitSync"); + glad_glWaitSync = (PFNGLWAITSYNCPROC)load("glWaitSync"); + glad_glGetInteger64v = (PFNGLGETINTEGER64VPROC)load("glGetInteger64v"); + glad_glGetSynciv = (PFNGLGETSYNCIVPROC)load("glGetSynciv"); + glad_glGetInteger64i_v = (PFNGLGETINTEGER64I_VPROC)load("glGetInteger64i_v"); + glad_glGetBufferParameteri64v = (PFNGLGETBUFFERPARAMETERI64VPROC)load("glGetBufferParameteri64v"); + glad_glFramebufferTexture = (PFNGLFRAMEBUFFERTEXTUREPROC)load("glFramebufferTexture"); + glad_glTexImage2DMultisample = (PFNGLTEXIMAGE2DMULTISAMPLEPROC)load("glTexImage2DMultisample"); + glad_glTexImage3DMultisample = (PFNGLTEXIMAGE3DMULTISAMPLEPROC)load("glTexImage3DMultisample"); + glad_glGetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC)load("glGetMultisamplefv"); + glad_glSampleMaski = (PFNGLSAMPLEMASKIPROC)load("glSampleMaski"); +} +static void load_GL_VERSION_3_3(GLADloadproc load) { + if(!GLAD_GL_VERSION_3_3) return; + glad_glBindFragDataLocationIndexed = (PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)load("glBindFragDataLocationIndexed"); + glad_glGetFragDataIndex = (PFNGLGETFRAGDATAINDEXPROC)load("glGetFragDataIndex"); + glad_glGenSamplers = (PFNGLGENSAMPLERSPROC)load("glGenSamplers"); + glad_glDeleteSamplers = (PFNGLDELETESAMPLERSPROC)load("glDeleteSamplers"); + glad_glIsSampler = (PFNGLISSAMPLERPROC)load("glIsSampler"); + glad_glBindSampler = (PFNGLBINDSAMPLERPROC)load("glBindSampler"); + glad_glSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC)load("glSamplerParameteri"); + glad_glSamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC)load("glSamplerParameteriv"); + glad_glSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC)load("glSamplerParameterf"); + glad_glSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC)load("glSamplerParameterfv"); + glad_glSamplerParameterIiv = (PFNGLSAMPLERPARAMETERIIVPROC)load("glSamplerParameterIiv"); + glad_glSamplerParameterIuiv = (PFNGLSAMPLERPARAMETERIUIVPROC)load("glSamplerParameterIuiv"); + glad_glGetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC)load("glGetSamplerParameteriv"); + glad_glGetSamplerParameterIiv = (PFNGLGETSAMPLERPARAMETERIIVPROC)load("glGetSamplerParameterIiv"); + glad_glGetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC)load("glGetSamplerParameterfv"); + glad_glGetSamplerParameterIuiv = (PFNGLGETSAMPLERPARAMETERIUIVPROC)load("glGetSamplerParameterIuiv"); + glad_glQueryCounter = (PFNGLQUERYCOUNTERPROC)load("glQueryCounter"); + glad_glGetQueryObjecti64v = (PFNGLGETQUERYOBJECTI64VPROC)load("glGetQueryObjecti64v"); + glad_glGetQueryObjectui64v = (PFNGLGETQUERYOBJECTUI64VPROC)load("glGetQueryObjectui64v"); + glad_glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISORPROC)load("glVertexAttribDivisor"); + glad_glVertexAttribP1ui = (PFNGLVERTEXATTRIBP1UIPROC)load("glVertexAttribP1ui"); + glad_glVertexAttribP1uiv = (PFNGLVERTEXATTRIBP1UIVPROC)load("glVertexAttribP1uiv"); + glad_glVertexAttribP2ui = (PFNGLVERTEXATTRIBP2UIPROC)load("glVertexAttribP2ui"); + glad_glVertexAttribP2uiv = (PFNGLVERTEXATTRIBP2UIVPROC)load("glVertexAttribP2uiv"); + glad_glVertexAttribP3ui = (PFNGLVERTEXATTRIBP3UIPROC)load("glVertexAttribP3ui"); + glad_glVertexAttribP3uiv = (PFNGLVERTEXATTRIBP3UIVPROC)load("glVertexAttribP3uiv"); + glad_glVertexAttribP4ui = (PFNGLVERTEXATTRIBP4UIPROC)load("glVertexAttribP4ui"); + glad_glVertexAttribP4uiv = (PFNGLVERTEXATTRIBP4UIVPROC)load("glVertexAttribP4uiv"); + glad_glVertexP2ui = (PFNGLVERTEXP2UIPROC)load("glVertexP2ui"); + glad_glVertexP2uiv = (PFNGLVERTEXP2UIVPROC)load("glVertexP2uiv"); + glad_glVertexP3ui = (PFNGLVERTEXP3UIPROC)load("glVertexP3ui"); + glad_glVertexP3uiv = (PFNGLVERTEXP3UIVPROC)load("glVertexP3uiv"); + glad_glVertexP4ui = (PFNGLVERTEXP4UIPROC)load("glVertexP4ui"); + glad_glVertexP4uiv = (PFNGLVERTEXP4UIVPROC)load("glVertexP4uiv"); + glad_glTexCoordP1ui = (PFNGLTEXCOORDP1UIPROC)load("glTexCoordP1ui"); + glad_glTexCoordP1uiv = (PFNGLTEXCOORDP1UIVPROC)load("glTexCoordP1uiv"); + glad_glTexCoordP2ui = (PFNGLTEXCOORDP2UIPROC)load("glTexCoordP2ui"); + glad_glTexCoordP2uiv = (PFNGLTEXCOORDP2UIVPROC)load("glTexCoordP2uiv"); + glad_glTexCoordP3ui = (PFNGLTEXCOORDP3UIPROC)load("glTexCoordP3ui"); + glad_glTexCoordP3uiv = (PFNGLTEXCOORDP3UIVPROC)load("glTexCoordP3uiv"); + glad_glTexCoordP4ui = (PFNGLTEXCOORDP4UIPROC)load("glTexCoordP4ui"); + glad_glTexCoordP4uiv = (PFNGLTEXCOORDP4UIVPROC)load("glTexCoordP4uiv"); + glad_glMultiTexCoordP1ui = (PFNGLMULTITEXCOORDP1UIPROC)load("glMultiTexCoordP1ui"); + glad_glMultiTexCoordP1uiv = (PFNGLMULTITEXCOORDP1UIVPROC)load("glMultiTexCoordP1uiv"); + glad_glMultiTexCoordP2ui = (PFNGLMULTITEXCOORDP2UIPROC)load("glMultiTexCoordP2ui"); + glad_glMultiTexCoordP2uiv = (PFNGLMULTITEXCOORDP2UIVPROC)load("glMultiTexCoordP2uiv"); + glad_glMultiTexCoordP3ui = (PFNGLMULTITEXCOORDP3UIPROC)load("glMultiTexCoordP3ui"); + glad_glMultiTexCoordP3uiv = (PFNGLMULTITEXCOORDP3UIVPROC)load("glMultiTexCoordP3uiv"); + glad_glMultiTexCoordP4ui = (PFNGLMULTITEXCOORDP4UIPROC)load("glMultiTexCoordP4ui"); + glad_glMultiTexCoordP4uiv = (PFNGLMULTITEXCOORDP4UIVPROC)load("glMultiTexCoordP4uiv"); + glad_glNormalP3ui = (PFNGLNORMALP3UIPROC)load("glNormalP3ui"); + glad_glNormalP3uiv = (PFNGLNORMALP3UIVPROC)load("glNormalP3uiv"); + glad_glColorP3ui = (PFNGLCOLORP3UIPROC)load("glColorP3ui"); + glad_glColorP3uiv = (PFNGLCOLORP3UIVPROC)load("glColorP3uiv"); + glad_glColorP4ui = (PFNGLCOLORP4UIPROC)load("glColorP4ui"); + glad_glColorP4uiv = (PFNGLCOLORP4UIVPROC)load("glColorP4uiv"); + glad_glSecondaryColorP3ui = (PFNGLSECONDARYCOLORP3UIPROC)load("glSecondaryColorP3ui"); + glad_glSecondaryColorP3uiv = (PFNGLSECONDARYCOLORP3UIVPROC)load("glSecondaryColorP3uiv"); +} +static void load_GL_VERSION_4_0(GLADloadproc load) { + if(!GLAD_GL_VERSION_4_0) return; + glad_glMinSampleShading = (PFNGLMINSAMPLESHADINGPROC)load("glMinSampleShading"); + glad_glBlendEquationi = (PFNGLBLENDEQUATIONIPROC)load("glBlendEquationi"); + glad_glBlendEquationSeparatei = (PFNGLBLENDEQUATIONSEPARATEIPROC)load("glBlendEquationSeparatei"); + glad_glBlendFunci = (PFNGLBLENDFUNCIPROC)load("glBlendFunci"); + glad_glBlendFuncSeparatei = (PFNGLBLENDFUNCSEPARATEIPROC)load("glBlendFuncSeparatei"); + glad_glDrawArraysIndirect = (PFNGLDRAWARRAYSINDIRECTPROC)load("glDrawArraysIndirect"); + glad_glDrawElementsIndirect = (PFNGLDRAWELEMENTSINDIRECTPROC)load("glDrawElementsIndirect"); + glad_glUniform1d = (PFNGLUNIFORM1DPROC)load("glUniform1d"); + glad_glUniform2d = (PFNGLUNIFORM2DPROC)load("glUniform2d"); + glad_glUniform3d = (PFNGLUNIFORM3DPROC)load("glUniform3d"); + glad_glUniform4d = (PFNGLUNIFORM4DPROC)load("glUniform4d"); + glad_glUniform1dv = (PFNGLUNIFORM1DVPROC)load("glUniform1dv"); + glad_glUniform2dv = (PFNGLUNIFORM2DVPROC)load("glUniform2dv"); + glad_glUniform3dv = (PFNGLUNIFORM3DVPROC)load("glUniform3dv"); + glad_glUniform4dv = (PFNGLUNIFORM4DVPROC)load("glUniform4dv"); + glad_glUniformMatrix2dv = (PFNGLUNIFORMMATRIX2DVPROC)load("glUniformMatrix2dv"); + glad_glUniformMatrix3dv = (PFNGLUNIFORMMATRIX3DVPROC)load("glUniformMatrix3dv"); + glad_glUniformMatrix4dv = (PFNGLUNIFORMMATRIX4DVPROC)load("glUniformMatrix4dv"); + glad_glUniformMatrix2x3dv = (PFNGLUNIFORMMATRIX2X3DVPROC)load("glUniformMatrix2x3dv"); + glad_glUniformMatrix2x4dv = (PFNGLUNIFORMMATRIX2X4DVPROC)load("glUniformMatrix2x4dv"); + glad_glUniformMatrix3x2dv = (PFNGLUNIFORMMATRIX3X2DVPROC)load("glUniformMatrix3x2dv"); + glad_glUniformMatrix3x4dv = (PFNGLUNIFORMMATRIX3X4DVPROC)load("glUniformMatrix3x4dv"); + glad_glUniformMatrix4x2dv = (PFNGLUNIFORMMATRIX4X2DVPROC)load("glUniformMatrix4x2dv"); + glad_glUniformMatrix4x3dv = (PFNGLUNIFORMMATRIX4X3DVPROC)load("glUniformMatrix4x3dv"); + glad_glGetUniformdv = (PFNGLGETUNIFORMDVPROC)load("glGetUniformdv"); + glad_glGetSubroutineUniformLocation = (PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC)load("glGetSubroutineUniformLocation"); + glad_glGetSubroutineIndex = (PFNGLGETSUBROUTINEINDEXPROC)load("glGetSubroutineIndex"); + glad_glGetActiveSubroutineUniformiv = (PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC)load("glGetActiveSubroutineUniformiv"); + glad_glGetActiveSubroutineUniformName = (PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC)load("glGetActiveSubroutineUniformName"); + glad_glGetActiveSubroutineName = (PFNGLGETACTIVESUBROUTINENAMEPROC)load("glGetActiveSubroutineName"); + glad_glUniformSubroutinesuiv = (PFNGLUNIFORMSUBROUTINESUIVPROC)load("glUniformSubroutinesuiv"); + glad_glGetUniformSubroutineuiv = (PFNGLGETUNIFORMSUBROUTINEUIVPROC)load("glGetUniformSubroutineuiv"); + glad_glGetProgramStageiv = (PFNGLGETPROGRAMSTAGEIVPROC)load("glGetProgramStageiv"); + glad_glPatchParameteri = (PFNGLPATCHPARAMETERIPROC)load("glPatchParameteri"); + glad_glPatchParameterfv = (PFNGLPATCHPARAMETERFVPROC)load("glPatchParameterfv"); + glad_glBindTransformFeedback = (PFNGLBINDTRANSFORMFEEDBACKPROC)load("glBindTransformFeedback"); + glad_glDeleteTransformFeedbacks = (PFNGLDELETETRANSFORMFEEDBACKSPROC)load("glDeleteTransformFeedbacks"); + glad_glGenTransformFeedbacks = (PFNGLGENTRANSFORMFEEDBACKSPROC)load("glGenTransformFeedbacks"); + glad_glIsTransformFeedback = (PFNGLISTRANSFORMFEEDBACKPROC)load("glIsTransformFeedback"); + glad_glPauseTransformFeedback = (PFNGLPAUSETRANSFORMFEEDBACKPROC)load("glPauseTransformFeedback"); + glad_glResumeTransformFeedback = (PFNGLRESUMETRANSFORMFEEDBACKPROC)load("glResumeTransformFeedback"); + glad_glDrawTransformFeedback = (PFNGLDRAWTRANSFORMFEEDBACKPROC)load("glDrawTransformFeedback"); + glad_glDrawTransformFeedbackStream = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)load("glDrawTransformFeedbackStream"); + glad_glBeginQueryIndexed = (PFNGLBEGINQUERYINDEXEDPROC)load("glBeginQueryIndexed"); + glad_glEndQueryIndexed = (PFNGLENDQUERYINDEXEDPROC)load("glEndQueryIndexed"); + glad_glGetQueryIndexediv = (PFNGLGETQUERYINDEXEDIVPROC)load("glGetQueryIndexediv"); +} +static void load_GL_VERSION_4_1(GLADloadproc load) { + if(!GLAD_GL_VERSION_4_1) return; + glad_glReleaseShaderCompiler = (PFNGLRELEASESHADERCOMPILERPROC)load("glReleaseShaderCompiler"); + glad_glShaderBinary = (PFNGLSHADERBINARYPROC)load("glShaderBinary"); + glad_glGetShaderPrecisionFormat = (PFNGLGETSHADERPRECISIONFORMATPROC)load("glGetShaderPrecisionFormat"); + glad_glDepthRangef = (PFNGLDEPTHRANGEFPROC)load("glDepthRangef"); + glad_glClearDepthf = (PFNGLCLEARDEPTHFPROC)load("glClearDepthf"); + glad_glGetProgramBinary = (PFNGLGETPROGRAMBINARYPROC)load("glGetProgramBinary"); + glad_glProgramBinary = (PFNGLPROGRAMBINARYPROC)load("glProgramBinary"); + glad_glProgramParameteri = (PFNGLPROGRAMPARAMETERIPROC)load("glProgramParameteri"); + glad_glUseProgramStages = (PFNGLUSEPROGRAMSTAGESPROC)load("glUseProgramStages"); + glad_glActiveShaderProgram = (PFNGLACTIVESHADERPROGRAMPROC)load("glActiveShaderProgram"); + glad_glCreateShaderProgramv = (PFNGLCREATESHADERPROGRAMVPROC)load("glCreateShaderProgramv"); + glad_glBindProgramPipeline = (PFNGLBINDPROGRAMPIPELINEPROC)load("glBindProgramPipeline"); + glad_glDeleteProgramPipelines = (PFNGLDELETEPROGRAMPIPELINESPROC)load("glDeleteProgramPipelines"); + glad_glGenProgramPipelines = (PFNGLGENPROGRAMPIPELINESPROC)load("glGenProgramPipelines"); + glad_glIsProgramPipeline = (PFNGLISPROGRAMPIPELINEPROC)load("glIsProgramPipeline"); + glad_glGetProgramPipelineiv = (PFNGLGETPROGRAMPIPELINEIVPROC)load("glGetProgramPipelineiv"); + glad_glProgramParameteri = (PFNGLPROGRAMPARAMETERIPROC)load("glProgramParameteri"); + glad_glProgramUniform1i = (PFNGLPROGRAMUNIFORM1IPROC)load("glProgramUniform1i"); + glad_glProgramUniform1iv = (PFNGLPROGRAMUNIFORM1IVPROC)load("glProgramUniform1iv"); + glad_glProgramUniform1f = (PFNGLPROGRAMUNIFORM1FPROC)load("glProgramUniform1f"); + glad_glProgramUniform1fv = (PFNGLPROGRAMUNIFORM1FVPROC)load("glProgramUniform1fv"); + glad_glProgramUniform1d = (PFNGLPROGRAMUNIFORM1DPROC)load("glProgramUniform1d"); + glad_glProgramUniform1dv = (PFNGLPROGRAMUNIFORM1DVPROC)load("glProgramUniform1dv"); + glad_glProgramUniform1ui = (PFNGLPROGRAMUNIFORM1UIPROC)load("glProgramUniform1ui"); + glad_glProgramUniform1uiv = (PFNGLPROGRAMUNIFORM1UIVPROC)load("glProgramUniform1uiv"); + glad_glProgramUniform2i = (PFNGLPROGRAMUNIFORM2IPROC)load("glProgramUniform2i"); + glad_glProgramUniform2iv = (PFNGLPROGRAMUNIFORM2IVPROC)load("glProgramUniform2iv"); + glad_glProgramUniform2f = (PFNGLPROGRAMUNIFORM2FPROC)load("glProgramUniform2f"); + glad_glProgramUniform2fv = (PFNGLPROGRAMUNIFORM2FVPROC)load("glProgramUniform2fv"); + glad_glProgramUniform2d = (PFNGLPROGRAMUNIFORM2DPROC)load("glProgramUniform2d"); + glad_glProgramUniform2dv = (PFNGLPROGRAMUNIFORM2DVPROC)load("glProgramUniform2dv"); + glad_glProgramUniform2ui = (PFNGLPROGRAMUNIFORM2UIPROC)load("glProgramUniform2ui"); + glad_glProgramUniform2uiv = (PFNGLPROGRAMUNIFORM2UIVPROC)load("glProgramUniform2uiv"); + glad_glProgramUniform3i = (PFNGLPROGRAMUNIFORM3IPROC)load("glProgramUniform3i"); + glad_glProgramUniform3iv = (PFNGLPROGRAMUNIFORM3IVPROC)load("glProgramUniform3iv"); + glad_glProgramUniform3f = (PFNGLPROGRAMUNIFORM3FPROC)load("glProgramUniform3f"); + glad_glProgramUniform3fv = (PFNGLPROGRAMUNIFORM3FVPROC)load("glProgramUniform3fv"); + glad_glProgramUniform3d = (PFNGLPROGRAMUNIFORM3DPROC)load("glProgramUniform3d"); + glad_glProgramUniform3dv = (PFNGLPROGRAMUNIFORM3DVPROC)load("glProgramUniform3dv"); + glad_glProgramUniform3ui = (PFNGLPROGRAMUNIFORM3UIPROC)load("glProgramUniform3ui"); + glad_glProgramUniform3uiv = (PFNGLPROGRAMUNIFORM3UIVPROC)load("glProgramUniform3uiv"); + glad_glProgramUniform4i = (PFNGLPROGRAMUNIFORM4IPROC)load("glProgramUniform4i"); + glad_glProgramUniform4iv = (PFNGLPROGRAMUNIFORM4IVPROC)load("glProgramUniform4iv"); + glad_glProgramUniform4f = (PFNGLPROGRAMUNIFORM4FPROC)load("glProgramUniform4f"); + glad_glProgramUniform4fv = (PFNGLPROGRAMUNIFORM4FVPROC)load("glProgramUniform4fv"); + glad_glProgramUniform4d = (PFNGLPROGRAMUNIFORM4DPROC)load("glProgramUniform4d"); + glad_glProgramUniform4dv = (PFNGLPROGRAMUNIFORM4DVPROC)load("glProgramUniform4dv"); + glad_glProgramUniform4ui = (PFNGLPROGRAMUNIFORM4UIPROC)load("glProgramUniform4ui"); + glad_glProgramUniform4uiv = (PFNGLPROGRAMUNIFORM4UIVPROC)load("glProgramUniform4uiv"); + glad_glProgramUniformMatrix2fv = (PFNGLPROGRAMUNIFORMMATRIX2FVPROC)load("glProgramUniformMatrix2fv"); + glad_glProgramUniformMatrix3fv = (PFNGLPROGRAMUNIFORMMATRIX3FVPROC)load("glProgramUniformMatrix3fv"); + glad_glProgramUniformMatrix4fv = (PFNGLPROGRAMUNIFORMMATRIX4FVPROC)load("glProgramUniformMatrix4fv"); + glad_glProgramUniformMatrix2dv = (PFNGLPROGRAMUNIFORMMATRIX2DVPROC)load("glProgramUniformMatrix2dv"); + glad_glProgramUniformMatrix3dv = (PFNGLPROGRAMUNIFORMMATRIX3DVPROC)load("glProgramUniformMatrix3dv"); + glad_glProgramUniformMatrix4dv = (PFNGLPROGRAMUNIFORMMATRIX4DVPROC)load("glProgramUniformMatrix4dv"); + glad_glProgramUniformMatrix2x3fv = (PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC)load("glProgramUniformMatrix2x3fv"); + glad_glProgramUniformMatrix3x2fv = (PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC)load("glProgramUniformMatrix3x2fv"); + glad_glProgramUniformMatrix2x4fv = (PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC)load("glProgramUniformMatrix2x4fv"); + glad_glProgramUniformMatrix4x2fv = (PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC)load("glProgramUniformMatrix4x2fv"); + glad_glProgramUniformMatrix3x4fv = (PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC)load("glProgramUniformMatrix3x4fv"); + glad_glProgramUniformMatrix4x3fv = (PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC)load("glProgramUniformMatrix4x3fv"); + glad_glProgramUniformMatrix2x3dv = (PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC)load("glProgramUniformMatrix2x3dv"); + glad_glProgramUniformMatrix3x2dv = (PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC)load("glProgramUniformMatrix3x2dv"); + glad_glProgramUniformMatrix2x4dv = (PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC)load("glProgramUniformMatrix2x4dv"); + glad_glProgramUniformMatrix4x2dv = (PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC)load("glProgramUniformMatrix4x2dv"); + glad_glProgramUniformMatrix3x4dv = (PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC)load("glProgramUniformMatrix3x4dv"); + glad_glProgramUniformMatrix4x3dv = (PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC)load("glProgramUniformMatrix4x3dv"); + glad_glValidateProgramPipeline = (PFNGLVALIDATEPROGRAMPIPELINEPROC)load("glValidateProgramPipeline"); + glad_glGetProgramPipelineInfoLog = (PFNGLGETPROGRAMPIPELINEINFOLOGPROC)load("glGetProgramPipelineInfoLog"); + glad_glVertexAttribL1d = (PFNGLVERTEXATTRIBL1DPROC)load("glVertexAttribL1d"); + glad_glVertexAttribL2d = (PFNGLVERTEXATTRIBL2DPROC)load("glVertexAttribL2d"); + glad_glVertexAttribL3d = (PFNGLVERTEXATTRIBL3DPROC)load("glVertexAttribL3d"); + glad_glVertexAttribL4d = (PFNGLVERTEXATTRIBL4DPROC)load("glVertexAttribL4d"); + glad_glVertexAttribL1dv = (PFNGLVERTEXATTRIBL1DVPROC)load("glVertexAttribL1dv"); + glad_glVertexAttribL2dv = (PFNGLVERTEXATTRIBL2DVPROC)load("glVertexAttribL2dv"); + glad_glVertexAttribL3dv = (PFNGLVERTEXATTRIBL3DVPROC)load("glVertexAttribL3dv"); + glad_glVertexAttribL4dv = (PFNGLVERTEXATTRIBL4DVPROC)load("glVertexAttribL4dv"); + glad_glVertexAttribLPointer = (PFNGLVERTEXATTRIBLPOINTERPROC)load("glVertexAttribLPointer"); + glad_glGetVertexAttribLdv = (PFNGLGETVERTEXATTRIBLDVPROC)load("glGetVertexAttribLdv"); + glad_glViewportArrayv = (PFNGLVIEWPORTARRAYVPROC)load("glViewportArrayv"); + glad_glViewportIndexedf = (PFNGLVIEWPORTINDEXEDFPROC)load("glViewportIndexedf"); + glad_glViewportIndexedfv = (PFNGLVIEWPORTINDEXEDFVPROC)load("glViewportIndexedfv"); + glad_glScissorArrayv = (PFNGLSCISSORARRAYVPROC)load("glScissorArrayv"); + glad_glScissorIndexed = (PFNGLSCISSORINDEXEDPROC)load("glScissorIndexed"); + glad_glScissorIndexedv = (PFNGLSCISSORINDEXEDVPROC)load("glScissorIndexedv"); + glad_glDepthRangeArrayv = (PFNGLDEPTHRANGEARRAYVPROC)load("glDepthRangeArrayv"); + glad_glDepthRangeIndexed = (PFNGLDEPTHRANGEINDEXEDPROC)load("glDepthRangeIndexed"); + glad_glGetFloati_v = (PFNGLGETFLOATI_VPROC)load("glGetFloati_v"); + glad_glGetDoublei_v = (PFNGLGETDOUBLEI_VPROC)load("glGetDoublei_v"); +} +static int find_extensionsGL(void) { + if (!get_exts()) return 0; + (void)&has_ext; + free_exts(); + return 1; +} + +static void find_coreGL(void) { + + /* Thank you @elmindreda + * https://github.com/elmindreda/greg/blob/master/templates/greg.c.in#L176 + * https://github.com/glfw/glfw/blob/master/src/context.c#L36 + */ + int i, major, minor; + + const char* version; + const char* prefixes[] = { + "OpenGL ES-CM ", + "OpenGL ES-CL ", + "OpenGL ES ", + NULL + }; + + version = (const char*) glGetString(GL_VERSION); + if (!version) return; + + for (i = 0; prefixes[i]; i++) { + const size_t length = strlen(prefixes[i]); + if (strncmp(version, prefixes[i], length) == 0) { + version += length; + break; + } + } + +/* PR #18 */ +#ifdef _MSC_VER + sscanf_s(version, "%d.%d", &major, &minor); +#else + sscanf(version, "%d.%d", &major, &minor); +#endif + + GLVersion.major = major; GLVersion.minor = minor; + max_loaded_major = major; max_loaded_minor = minor; + GLAD_GL_VERSION_1_0 = (major == 1 && minor >= 0) || major > 1; + GLAD_GL_VERSION_1_1 = (major == 1 && minor >= 1) || major > 1; + GLAD_GL_VERSION_1_2 = (major == 1 && minor >= 2) || major > 1; + GLAD_GL_VERSION_1_3 = (major == 1 && minor >= 3) || major > 1; + GLAD_GL_VERSION_1_4 = (major == 1 && minor >= 4) || major > 1; + GLAD_GL_VERSION_1_5 = (major == 1 && minor >= 5) || major > 1; + GLAD_GL_VERSION_2_0 = (major == 2 && minor >= 0) || major > 2; + GLAD_GL_VERSION_2_1 = (major == 2 && minor >= 1) || major > 2; + GLAD_GL_VERSION_3_0 = (major == 3 && minor >= 0) || major > 3; + GLAD_GL_VERSION_3_1 = (major == 3 && minor >= 1) || major > 3; + GLAD_GL_VERSION_3_2 = (major == 3 && minor >= 2) || major > 3; + GLAD_GL_VERSION_3_3 = (major == 3 && minor >= 3) || major > 3; + GLAD_GL_VERSION_4_0 = (major == 4 && minor >= 0) || major > 4; + GLAD_GL_VERSION_4_1 = (major == 4 && minor >= 1) || major > 4; + if (GLVersion.major > 4 || (GLVersion.major >= 4 && GLVersion.minor >= 1)) { + max_loaded_major = 4; + max_loaded_minor = 1; + } +} + +int gladLoadGLLoader(GLADloadproc load) { + GLVersion.major = 0; GLVersion.minor = 0; + glGetString = (PFNGLGETSTRINGPROC)load("glGetString"); + if(glGetString == NULL) return 0; + if(glGetString(GL_VERSION) == NULL) return 0; + find_coreGL(); + load_GL_VERSION_1_0(load); + load_GL_VERSION_1_1(load); + load_GL_VERSION_1_2(load); + load_GL_VERSION_1_3(load); + load_GL_VERSION_1_4(load); + load_GL_VERSION_1_5(load); + load_GL_VERSION_2_0(load); + load_GL_VERSION_2_1(load); + load_GL_VERSION_3_0(load); + load_GL_VERSION_3_1(load); + load_GL_VERSION_3_2(load); + load_GL_VERSION_3_3(load); + load_GL_VERSION_4_0(load); + load_GL_VERSION_4_1(load); + + if (!find_extensionsGL()) return 0; + return GLVersion.major != 0 || GLVersion.minor != 0; +} + diff --git a/src/thirdparty/glad/glad.h b/src/thirdparty/glad/glad.h new file mode 100644 index 0000000..e4299b9 --- /dev/null +++ b/src/thirdparty/glad/glad.h @@ -0,0 +1,2652 @@ +/* + + OpenGL loader generated by glad 0.1.36 on Sun Aug 11 07:39:53 2024. + + Language/Generator: C/C++ + Specification: gl + APIs: gl=4.1 + Profile: core + Extensions: + + Loader: True + Local files: False + Omit khrplatform: False + Reproducible: False + + Commandline: + --profile="core" --api="gl=4.1" --generator="c" --spec="gl" --extensions="" + Online: + https://glad.dav1d.de/#profile=core&language=c&specification=gl&loader=on&api=gl%3D4.1 +*/ + + +#ifndef __glad_h_ +#define __glad_h_ + +#ifdef __gl_h_ +#error OpenGL header already included, remove this include, glad already provides it +#endif +#define __gl_h_ + +#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) +#define APIENTRY __stdcall +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif +#ifndef APIENTRYP +#define APIENTRYP APIENTRY * +#endif + +#ifndef GLAPIENTRY +#define GLAPIENTRY APIENTRY +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +struct gladGLversionStruct { + int major; + int minor; +}; + +typedef void* (* GLADloadproc)(const char *name); + +#ifndef GLAPI +# if defined(GLAD_GLAPI_EXPORT) +# if defined(_WIN32) || defined(__CYGWIN__) +# if defined(GLAD_GLAPI_EXPORT_BUILD) +# if defined(__GNUC__) +# define GLAPI __attribute__ ((dllexport)) extern +# else +# define GLAPI __declspec(dllexport) extern +# endif +# else +# if defined(__GNUC__) +# define GLAPI __attribute__ ((dllimport)) extern +# else +# define GLAPI __declspec(dllimport) extern +# endif +# endif +# elif defined(__GNUC__) && defined(GLAD_GLAPI_EXPORT_BUILD) +# define GLAPI __attribute__ ((visibility ("default"))) extern +# else +# define GLAPI extern +# endif +# else +# define GLAPI extern +# endif +#endif + +GLAPI struct gladGLversionStruct GLVersion; + +GLAPI int gladLoadGL(void); + +GLAPI int gladLoadGLLoader(GLADloadproc); + +#include +typedef unsigned int GLenum; +typedef unsigned char GLboolean; +typedef unsigned int GLbitfield; +typedef void GLvoid; +typedef khronos_int8_t GLbyte; +typedef khronos_uint8_t GLubyte; +typedef khronos_int16_t GLshort; +typedef khronos_uint16_t GLushort; +typedef int GLint; +typedef unsigned int GLuint; +typedef khronos_int32_t GLclampx; +typedef int GLsizei; +typedef khronos_float_t GLfloat; +typedef khronos_float_t GLclampf; +typedef double GLdouble; +typedef double GLclampd; +typedef void *GLeglClientBufferEXT; +typedef void *GLeglImageOES; +typedef char GLchar; +typedef char GLcharARB; +#ifdef __APPLE__ +typedef void *GLhandleARB; +#else +typedef unsigned int GLhandleARB; +#endif +typedef khronos_uint16_t GLhalf; +typedef khronos_uint16_t GLhalfARB; +typedef khronos_int32_t GLfixed; +typedef khronos_intptr_t GLintptr; +typedef khronos_intptr_t GLintptrARB; +typedef khronos_ssize_t GLsizeiptr; +typedef khronos_ssize_t GLsizeiptrARB; +typedef khronos_int64_t GLint64; +typedef khronos_int64_t GLint64EXT; +typedef khronos_uint64_t GLuint64; +typedef khronos_uint64_t GLuint64EXT; +typedef struct __GLsync *GLsync; +struct _cl_context; +struct _cl_event; +typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +typedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,void *userParam); +typedef unsigned short GLhalfNV; +typedef GLintptr GLvdpauSurfaceNV; +typedef void (APIENTRY *GLVULKANPROCNV)(void); +#define GL_DEPTH_BUFFER_BIT 0x00000100 +#define GL_STENCIL_BUFFER_BIT 0x00000400 +#define GL_COLOR_BUFFER_BIT 0x00004000 +#define GL_FALSE 0 +#define GL_TRUE 1 +#define GL_POINTS 0x0000 +#define GL_LINES 0x0001 +#define GL_LINE_LOOP 0x0002 +#define GL_LINE_STRIP 0x0003 +#define GL_TRIANGLES 0x0004 +#define GL_TRIANGLE_STRIP 0x0005 +#define GL_TRIANGLE_FAN 0x0006 +#define GL_NEVER 0x0200 +#define GL_LESS 0x0201 +#define GL_EQUAL 0x0202 +#define GL_LEQUAL 0x0203 +#define GL_GREATER 0x0204 +#define GL_NOTEQUAL 0x0205 +#define GL_GEQUAL 0x0206 +#define GL_ALWAYS 0x0207 +#define GL_ZERO 0 +#define GL_ONE 1 +#define GL_SRC_COLOR 0x0300 +#define GL_ONE_MINUS_SRC_COLOR 0x0301 +#define GL_SRC_ALPHA 0x0302 +#define GL_ONE_MINUS_SRC_ALPHA 0x0303 +#define GL_DST_ALPHA 0x0304 +#define GL_ONE_MINUS_DST_ALPHA 0x0305 +#define GL_DST_COLOR 0x0306 +#define GL_ONE_MINUS_DST_COLOR 0x0307 +#define GL_SRC_ALPHA_SATURATE 0x0308 +#define GL_NONE 0 +#define GL_FRONT_LEFT 0x0400 +#define GL_FRONT_RIGHT 0x0401 +#define GL_BACK_LEFT 0x0402 +#define GL_BACK_RIGHT 0x0403 +#define GL_FRONT 0x0404 +#define GL_BACK 0x0405 +#define GL_LEFT 0x0406 +#define GL_RIGHT 0x0407 +#define GL_FRONT_AND_BACK 0x0408 +#define GL_NO_ERROR 0 +#define GL_INVALID_ENUM 0x0500 +#define GL_INVALID_VALUE 0x0501 +#define GL_INVALID_OPERATION 0x0502 +#define GL_OUT_OF_MEMORY 0x0505 +#define GL_CW 0x0900 +#define GL_CCW 0x0901 +#define GL_POINT_SIZE 0x0B11 +#define GL_POINT_SIZE_RANGE 0x0B12 +#define GL_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_LINE_SMOOTH 0x0B20 +#define GL_LINE_WIDTH 0x0B21 +#define GL_LINE_WIDTH_RANGE 0x0B22 +#define GL_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_POLYGON_MODE 0x0B40 +#define GL_POLYGON_SMOOTH 0x0B41 +#define GL_CULL_FACE 0x0B44 +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_FRONT_FACE 0x0B46 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_TEST 0x0B71 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_STENCIL_TEST 0x0B90 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 +#define GL_STENCIL_FUNC 0x0B92 +#define GL_STENCIL_VALUE_MASK 0x0B93 +#define GL_STENCIL_FAIL 0x0B94 +#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 +#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 +#define GL_STENCIL_REF 0x0B97 +#define GL_STENCIL_WRITEMASK 0x0B98 +#define GL_VIEWPORT 0x0BA2 +#define GL_DITHER 0x0BD0 +#define GL_BLEND_DST 0x0BE0 +#define GL_BLEND_SRC 0x0BE1 +#define GL_BLEND 0x0BE2 +#define GL_LOGIC_OP_MODE 0x0BF0 +#define GL_DRAW_BUFFER 0x0C01 +#define GL_READ_BUFFER 0x0C02 +#define GL_SCISSOR_BOX 0x0C10 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_DOUBLEBUFFER 0x0C32 +#define GL_STEREO 0x0C33 +#define GL_LINE_SMOOTH_HINT 0x0C52 +#define GL_POLYGON_SMOOTH_HINT 0x0C53 +#define GL_UNPACK_SWAP_BYTES 0x0CF0 +#define GL_UNPACK_LSB_FIRST 0x0CF1 +#define GL_UNPACK_ROW_LENGTH 0x0CF2 +#define GL_UNPACK_SKIP_ROWS 0x0CF3 +#define GL_UNPACK_SKIP_PIXELS 0x0CF4 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_PACK_SWAP_BYTES 0x0D00 +#define GL_PACK_LSB_FIRST 0x0D01 +#define GL_PACK_ROW_LENGTH 0x0D02 +#define GL_PACK_SKIP_ROWS 0x0D03 +#define GL_PACK_SKIP_PIXELS 0x0D04 +#define GL_PACK_ALIGNMENT 0x0D05 +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_TEXTURE_1D 0x0DE0 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_TEXTURE_WIDTH 0x1000 +#define GL_TEXTURE_HEIGHT 0x1001 +#define GL_TEXTURE_BORDER_COLOR 0x1004 +#define GL_DONT_CARE 0x1100 +#define GL_FASTEST 0x1101 +#define GL_NICEST 0x1102 +#define GL_BYTE 0x1400 +#define GL_UNSIGNED_BYTE 0x1401 +#define GL_SHORT 0x1402 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_INT 0x1404 +#define GL_UNSIGNED_INT 0x1405 +#define GL_FLOAT 0x1406 +#define GL_CLEAR 0x1500 +#define GL_AND 0x1501 +#define GL_AND_REVERSE 0x1502 +#define GL_COPY 0x1503 +#define GL_AND_INVERTED 0x1504 +#define GL_NOOP 0x1505 +#define GL_XOR 0x1506 +#define GL_OR 0x1507 +#define GL_NOR 0x1508 +#define GL_EQUIV 0x1509 +#define GL_INVERT 0x150A +#define GL_OR_REVERSE 0x150B +#define GL_COPY_INVERTED 0x150C +#define GL_OR_INVERTED 0x150D +#define GL_NAND 0x150E +#define GL_SET 0x150F +#define GL_TEXTURE 0x1702 +#define GL_COLOR 0x1800 +#define GL_DEPTH 0x1801 +#define GL_STENCIL 0x1802 +#define GL_STENCIL_INDEX 0x1901 +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_RED 0x1903 +#define GL_GREEN 0x1904 +#define GL_BLUE 0x1905 +#define GL_ALPHA 0x1906 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 +#define GL_POINT 0x1B00 +#define GL_LINE 0x1B01 +#define GL_FILL 0x1B02 +#define GL_KEEP 0x1E00 +#define GL_REPLACE 0x1E01 +#define GL_INCR 0x1E02 +#define GL_DECR 0x1E03 +#define GL_VENDOR 0x1F00 +#define GL_RENDERER 0x1F01 +#define GL_VERSION 0x1F02 +#define GL_EXTENSIONS 0x1F03 +#define GL_NEAREST 0x2600 +#define GL_LINEAR 0x2601 +#define GL_NEAREST_MIPMAP_NEAREST 0x2700 +#define GL_LINEAR_MIPMAP_NEAREST 0x2701 +#define GL_NEAREST_MIPMAP_LINEAR 0x2702 +#define GL_LINEAR_MIPMAP_LINEAR 0x2703 +#define GL_TEXTURE_MAG_FILTER 0x2800 +#define GL_TEXTURE_MIN_FILTER 0x2801 +#define GL_TEXTURE_WRAP_S 0x2802 +#define GL_TEXTURE_WRAP_T 0x2803 +#define GL_REPEAT 0x2901 +#define GL_COLOR_LOGIC_OP 0x0BF2 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_POLYGON_OFFSET_POINT 0x2A01 +#define GL_POLYGON_OFFSET_LINE 0x2A02 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_TEXTURE_BINDING_1D 0x8068 +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_TEXTURE_INTERNAL_FORMAT 0x1003 +#define GL_TEXTURE_RED_SIZE 0x805C +#define GL_TEXTURE_GREEN_SIZE 0x805D +#define GL_TEXTURE_BLUE_SIZE 0x805E +#define GL_TEXTURE_ALPHA_SIZE 0x805F +#define GL_DOUBLE 0x140A +#define GL_PROXY_TEXTURE_1D 0x8063 +#define GL_PROXY_TEXTURE_2D 0x8064 +#define GL_R3_G3_B2 0x2A10 +#define GL_RGB4 0x804F +#define GL_RGB5 0x8050 +#define GL_RGB8 0x8051 +#define GL_RGB10 0x8052 +#define GL_RGB12 0x8053 +#define GL_RGB16 0x8054 +#define GL_RGBA2 0x8055 +#define GL_RGBA4 0x8056 +#define GL_RGB5_A1 0x8057 +#define GL_RGBA8 0x8058 +#define GL_RGB10_A2 0x8059 +#define GL_RGBA12 0x805A +#define GL_RGBA16 0x805B +#define GL_UNSIGNED_BYTE_3_3_2 0x8032 +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_INT_8_8_8_8 0x8035 +#define GL_UNSIGNED_INT_10_10_10_2 0x8036 +#define GL_TEXTURE_BINDING_3D 0x806A +#define GL_PACK_SKIP_IMAGES 0x806B +#define GL_PACK_IMAGE_HEIGHT 0x806C +#define GL_UNPACK_SKIP_IMAGES 0x806D +#define GL_UNPACK_IMAGE_HEIGHT 0x806E +#define GL_TEXTURE_3D 0x806F +#define GL_PROXY_TEXTURE_3D 0x8070 +#define GL_TEXTURE_DEPTH 0x8071 +#define GL_TEXTURE_WRAP_R 0x8072 +#define GL_MAX_3D_TEXTURE_SIZE 0x8073 +#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 +#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 +#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 +#define GL_BGR 0x80E0 +#define GL_BGRA 0x80E1 +#define GL_MAX_ELEMENTS_VERTICES 0x80E8 +#define GL_MAX_ELEMENTS_INDICES 0x80E9 +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_TEXTURE_MIN_LOD 0x813A +#define GL_TEXTURE_MAX_LOD 0x813B +#define GL_TEXTURE_BASE_LEVEL 0x813C +#define GL_TEXTURE_MAX_LEVEL 0x813D +#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 +#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 +#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_ACTIVE_TEXTURE 0x84E0 +#define GL_MULTISAMPLE 0x809D +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE 0x809F +#define GL_SAMPLE_COVERAGE 0x80A0 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +#define GL_COMPRESSED_RGB 0x84ED +#define GL_COMPRESSED_RGBA 0x84EE +#define GL_TEXTURE_COMPRESSION_HINT 0x84EF +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 +#define GL_TEXTURE_COMPRESSED 0x86A1 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +#define GL_CLAMP_TO_BORDER 0x812D +#define GL_BLEND_DST_RGB 0x80C8 +#define GL_BLEND_SRC_RGB 0x80C9 +#define GL_BLEND_DST_ALPHA 0x80CA +#define GL_BLEND_SRC_ALPHA 0x80CB +#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_DEPTH_COMPONENT24 0x81A6 +#define GL_DEPTH_COMPONENT32 0x81A7 +#define GL_MIRRORED_REPEAT 0x8370 +#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD +#define GL_TEXTURE_LOD_BIAS 0x8501 +#define GL_INCR_WRAP 0x8507 +#define GL_DECR_WRAP 0x8508 +#define GL_TEXTURE_DEPTH_SIZE 0x884A +#define GL_TEXTURE_COMPARE_MODE 0x884C +#define GL_TEXTURE_COMPARE_FUNC 0x884D +#define GL_BLEND_COLOR 0x8005 +#define GL_BLEND_EQUATION 0x8009 +#define GL_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_FUNC_ADD 0x8006 +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#define GL_FUNC_SUBTRACT 0x800A +#define GL_MIN 0x8007 +#define GL_MAX 0x8008 +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_USAGE 0x8765 +#define GL_QUERY_COUNTER_BITS 0x8864 +#define GL_CURRENT_QUERY 0x8865 +#define GL_QUERY_RESULT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE 0x8867 +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F +#define GL_READ_ONLY 0x88B8 +#define GL_WRITE_ONLY 0x88B9 +#define GL_READ_WRITE 0x88BA +#define GL_BUFFER_ACCESS 0x88BB +#define GL_BUFFER_MAPPED 0x88BC +#define GL_BUFFER_MAP_POINTER 0x88BD +#define GL_STREAM_DRAW 0x88E0 +#define GL_STREAM_READ 0x88E1 +#define GL_STREAM_COPY 0x88E2 +#define GL_STATIC_DRAW 0x88E4 +#define GL_STATIC_READ 0x88E5 +#define GL_STATIC_COPY 0x88E6 +#define GL_DYNAMIC_DRAW 0x88E8 +#define GL_DYNAMIC_READ 0x88E9 +#define GL_DYNAMIC_COPY 0x88EA +#define GL_SAMPLES_PASSED 0x8914 +#define GL_SRC1_ALPHA 0x8589 +#define GL_BLEND_EQUATION_RGB 0x8009 +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 +#define GL_CURRENT_VERTEX_ATTRIB 0x8626 +#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_STENCIL_BACK_FUNC 0x8800 +#define GL_STENCIL_BACK_FAIL 0x8801 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 +#define GL_MAX_DRAW_BUFFERS 0x8824 +#define GL_DRAW_BUFFER0 0x8825 +#define GL_DRAW_BUFFER1 0x8826 +#define GL_DRAW_BUFFER2 0x8827 +#define GL_DRAW_BUFFER3 0x8828 +#define GL_DRAW_BUFFER4 0x8829 +#define GL_DRAW_BUFFER5 0x882A +#define GL_DRAW_BUFFER6 0x882B +#define GL_DRAW_BUFFER7 0x882C +#define GL_DRAW_BUFFER8 0x882D +#define GL_DRAW_BUFFER9 0x882E +#define GL_DRAW_BUFFER10 0x882F +#define GL_DRAW_BUFFER11 0x8830 +#define GL_DRAW_BUFFER12 0x8831 +#define GL_DRAW_BUFFER13 0x8832 +#define GL_DRAW_BUFFER14 0x8833 +#define GL_DRAW_BUFFER15 0x8834 +#define GL_BLEND_EQUATION_ALPHA 0x883D +#define GL_MAX_VERTEX_ATTRIBS 0x8869 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 +#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A +#define GL_MAX_VARYING_FLOATS 0x8B4B +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D +#define GL_SHADER_TYPE 0x8B4F +#define GL_FLOAT_VEC2 0x8B50 +#define GL_FLOAT_VEC3 0x8B51 +#define GL_FLOAT_VEC4 0x8B52 +#define GL_INT_VEC2 0x8B53 +#define GL_INT_VEC3 0x8B54 +#define GL_INT_VEC4 0x8B55 +#define GL_BOOL 0x8B56 +#define GL_BOOL_VEC2 0x8B57 +#define GL_BOOL_VEC3 0x8B58 +#define GL_BOOL_VEC4 0x8B59 +#define GL_FLOAT_MAT2 0x8B5A +#define GL_FLOAT_MAT3 0x8B5B +#define GL_FLOAT_MAT4 0x8B5C +#define GL_SAMPLER_1D 0x8B5D +#define GL_SAMPLER_2D 0x8B5E +#define GL_SAMPLER_3D 0x8B5F +#define GL_SAMPLER_CUBE 0x8B60 +#define GL_SAMPLER_1D_SHADOW 0x8B61 +#define GL_SAMPLER_2D_SHADOW 0x8B62 +#define GL_DELETE_STATUS 0x8B80 +#define GL_COMPILE_STATUS 0x8B81 +#define GL_LINK_STATUS 0x8B82 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_ATTACHED_SHADERS 0x8B85 +#define GL_ACTIVE_UNIFORMS 0x8B86 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 +#define GL_SHADER_SOURCE_LENGTH 0x8B88 +#define GL_ACTIVE_ATTRIBUTES 0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B +#define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#define GL_CURRENT_PROGRAM 0x8B8D +#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0 +#define GL_LOWER_LEFT 0x8CA1 +#define GL_UPPER_LEFT 0x8CA2 +#define GL_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 +#define GL_PIXEL_PACK_BUFFER 0x88EB +#define GL_PIXEL_UNPACK_BUFFER 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF +#define GL_FLOAT_MAT2x3 0x8B65 +#define GL_FLOAT_MAT2x4 0x8B66 +#define GL_FLOAT_MAT3x2 0x8B67 +#define GL_FLOAT_MAT3x4 0x8B68 +#define GL_FLOAT_MAT4x2 0x8B69 +#define GL_FLOAT_MAT4x3 0x8B6A +#define GL_SRGB 0x8C40 +#define GL_SRGB8 0x8C41 +#define GL_SRGB_ALPHA 0x8C42 +#define GL_SRGB8_ALPHA8 0x8C43 +#define GL_COMPRESSED_SRGB 0x8C48 +#define GL_COMPRESSED_SRGB_ALPHA 0x8C49 +#define GL_COMPARE_REF_TO_TEXTURE 0x884E +#define GL_CLIP_DISTANCE0 0x3000 +#define GL_CLIP_DISTANCE1 0x3001 +#define GL_CLIP_DISTANCE2 0x3002 +#define GL_CLIP_DISTANCE3 0x3003 +#define GL_CLIP_DISTANCE4 0x3004 +#define GL_CLIP_DISTANCE5 0x3005 +#define GL_CLIP_DISTANCE6 0x3006 +#define GL_CLIP_DISTANCE7 0x3007 +#define GL_MAX_CLIP_DISTANCES 0x0D32 +#define GL_MAJOR_VERSION 0x821B +#define GL_MINOR_VERSION 0x821C +#define GL_NUM_EXTENSIONS 0x821D +#define GL_CONTEXT_FLAGS 0x821E +#define GL_COMPRESSED_RED 0x8225 +#define GL_COMPRESSED_RG 0x8226 +#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x00000001 +#define GL_RGBA32F 0x8814 +#define GL_RGB32F 0x8815 +#define GL_RGBA16F 0x881A +#define GL_RGB16F 0x881B +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD +#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF +#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904 +#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905 +#define GL_CLAMP_READ_COLOR 0x891C +#define GL_FIXED_ONLY 0x891D +#define GL_MAX_VARYING_COMPONENTS 0x8B4B +#define GL_TEXTURE_1D_ARRAY 0x8C18 +#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19 +#define GL_TEXTURE_2D_ARRAY 0x8C1A +#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B +#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C +#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D +#define GL_R11F_G11F_B10F 0x8C3A +#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B +#define GL_RGB9_E5 0x8C3D +#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E +#define GL_TEXTURE_SHARED_SIZE 0x8C3F +#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76 +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80 +#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83 +#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85 +#define GL_PRIMITIVES_GENERATED 0x8C87 +#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88 +#define GL_RASTERIZER_DISCARD 0x8C89 +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B +#define GL_INTERLEAVED_ATTRIBS 0x8C8C +#define GL_SEPARATE_ATTRIBS 0x8C8D +#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F +#define GL_RGBA32UI 0x8D70 +#define GL_RGB32UI 0x8D71 +#define GL_RGBA16UI 0x8D76 +#define GL_RGB16UI 0x8D77 +#define GL_RGBA8UI 0x8D7C +#define GL_RGB8UI 0x8D7D +#define GL_RGBA32I 0x8D82 +#define GL_RGB32I 0x8D83 +#define GL_RGBA16I 0x8D88 +#define GL_RGB16I 0x8D89 +#define GL_RGBA8I 0x8D8E +#define GL_RGB8I 0x8D8F +#define GL_RED_INTEGER 0x8D94 +#define GL_GREEN_INTEGER 0x8D95 +#define GL_BLUE_INTEGER 0x8D96 +#define GL_RGB_INTEGER 0x8D98 +#define GL_RGBA_INTEGER 0x8D99 +#define GL_BGR_INTEGER 0x8D9A +#define GL_BGRA_INTEGER 0x8D9B +#define GL_SAMPLER_1D_ARRAY 0x8DC0 +#define GL_SAMPLER_2D_ARRAY 0x8DC1 +#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3 +#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4 +#define GL_SAMPLER_CUBE_SHADOW 0x8DC5 +#define GL_UNSIGNED_INT_VEC2 0x8DC6 +#define GL_UNSIGNED_INT_VEC3 0x8DC7 +#define GL_UNSIGNED_INT_VEC4 0x8DC8 +#define GL_INT_SAMPLER_1D 0x8DC9 +#define GL_INT_SAMPLER_2D 0x8DCA +#define GL_INT_SAMPLER_3D 0x8DCB +#define GL_INT_SAMPLER_CUBE 0x8DCC +#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE +#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF +#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1 +#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2 +#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3 +#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4 +#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6 +#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7 +#define GL_QUERY_WAIT 0x8E13 +#define GL_QUERY_NO_WAIT 0x8E14 +#define GL_QUERY_BY_REGION_WAIT 0x8E15 +#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16 +#define GL_BUFFER_ACCESS_FLAGS 0x911F +#define GL_BUFFER_MAP_LENGTH 0x9120 +#define GL_BUFFER_MAP_OFFSET 0x9121 +#define GL_DEPTH_COMPONENT32F 0x8CAC +#define GL_DEPTH32F_STENCIL8 0x8CAD +#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD +#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210 +#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211 +#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212 +#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213 +#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214 +#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215 +#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216 +#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217 +#define GL_FRAMEBUFFER_DEFAULT 0x8218 +#define GL_FRAMEBUFFER_UNDEFINED 0x8219 +#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A +#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 +#define GL_DEPTH_STENCIL 0x84F9 +#define GL_UNSIGNED_INT_24_8 0x84FA +#define GL_DEPTH24_STENCIL8 0x88F0 +#define GL_TEXTURE_STENCIL_SIZE 0x88F1 +#define GL_TEXTURE_RED_TYPE 0x8C10 +#define GL_TEXTURE_GREEN_TYPE 0x8C11 +#define GL_TEXTURE_BLUE_TYPE 0x8C12 +#define GL_TEXTURE_ALPHA_TYPE 0x8C13 +#define GL_TEXTURE_DEPTH_TYPE 0x8C16 +#define GL_UNSIGNED_NORMALIZED 0x8C17 +#define GL_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_RENDERBUFFER_BINDING 0x8CA7 +#define GL_READ_FRAMEBUFFER 0x8CA8 +#define GL_DRAW_FRAMEBUFFER 0x8CA9 +#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA +#define GL_RENDERBUFFER_SAMPLES 0x8CAB +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 +#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB +#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC +#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD +#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF +#define GL_COLOR_ATTACHMENT0 0x8CE0 +#define GL_COLOR_ATTACHMENT1 0x8CE1 +#define GL_COLOR_ATTACHMENT2 0x8CE2 +#define GL_COLOR_ATTACHMENT3 0x8CE3 +#define GL_COLOR_ATTACHMENT4 0x8CE4 +#define GL_COLOR_ATTACHMENT5 0x8CE5 +#define GL_COLOR_ATTACHMENT6 0x8CE6 +#define GL_COLOR_ATTACHMENT7 0x8CE7 +#define GL_COLOR_ATTACHMENT8 0x8CE8 +#define GL_COLOR_ATTACHMENT9 0x8CE9 +#define GL_COLOR_ATTACHMENT10 0x8CEA +#define GL_COLOR_ATTACHMENT11 0x8CEB +#define GL_COLOR_ATTACHMENT12 0x8CEC +#define GL_COLOR_ATTACHMENT13 0x8CED +#define GL_COLOR_ATTACHMENT14 0x8CEE +#define GL_COLOR_ATTACHMENT15 0x8CEF +#define GL_COLOR_ATTACHMENT16 0x8CF0 +#define GL_COLOR_ATTACHMENT17 0x8CF1 +#define GL_COLOR_ATTACHMENT18 0x8CF2 +#define GL_COLOR_ATTACHMENT19 0x8CF3 +#define GL_COLOR_ATTACHMENT20 0x8CF4 +#define GL_COLOR_ATTACHMENT21 0x8CF5 +#define GL_COLOR_ATTACHMENT22 0x8CF6 +#define GL_COLOR_ATTACHMENT23 0x8CF7 +#define GL_COLOR_ATTACHMENT24 0x8CF8 +#define GL_COLOR_ATTACHMENT25 0x8CF9 +#define GL_COLOR_ATTACHMENT26 0x8CFA +#define GL_COLOR_ATTACHMENT27 0x8CFB +#define GL_COLOR_ATTACHMENT28 0x8CFC +#define GL_COLOR_ATTACHMENT29 0x8CFD +#define GL_COLOR_ATTACHMENT30 0x8CFE +#define GL_COLOR_ATTACHMENT31 0x8CFF +#define GL_DEPTH_ATTACHMENT 0x8D00 +#define GL_STENCIL_ATTACHMENT 0x8D20 +#define GL_FRAMEBUFFER 0x8D40 +#define GL_RENDERBUFFER 0x8D41 +#define GL_RENDERBUFFER_WIDTH 0x8D42 +#define GL_RENDERBUFFER_HEIGHT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 +#define GL_STENCIL_INDEX1 0x8D46 +#define GL_STENCIL_INDEX4 0x8D47 +#define GL_STENCIL_INDEX8 0x8D48 +#define GL_STENCIL_INDEX16 0x8D49 +#define GL_RENDERBUFFER_RED_SIZE 0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56 +#define GL_MAX_SAMPLES 0x8D57 +#define GL_FRAMEBUFFER_SRGB 0x8DB9 +#define GL_HALF_FLOAT 0x140B +#define GL_MAP_READ_BIT 0x0001 +#define GL_MAP_WRITE_BIT 0x0002 +#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004 +#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 +#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010 +#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 +#define GL_COMPRESSED_RED_RGTC1 0x8DBB +#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC +#define GL_COMPRESSED_RG_RGTC2 0x8DBD +#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE +#define GL_RG 0x8227 +#define GL_RG_INTEGER 0x8228 +#define GL_R8 0x8229 +#define GL_R16 0x822A +#define GL_RG8 0x822B +#define GL_RG16 0x822C +#define GL_R16F 0x822D +#define GL_R32F 0x822E +#define GL_RG16F 0x822F +#define GL_RG32F 0x8230 +#define GL_R8I 0x8231 +#define GL_R8UI 0x8232 +#define GL_R16I 0x8233 +#define GL_R16UI 0x8234 +#define GL_R32I 0x8235 +#define GL_R32UI 0x8236 +#define GL_RG8I 0x8237 +#define GL_RG8UI 0x8238 +#define GL_RG16I 0x8239 +#define GL_RG16UI 0x823A +#define GL_RG32I 0x823B +#define GL_RG32UI 0x823C +#define GL_VERTEX_ARRAY_BINDING 0x85B5 +#define GL_SAMPLER_2D_RECT 0x8B63 +#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64 +#define GL_SAMPLER_BUFFER 0x8DC2 +#define GL_INT_SAMPLER_2D_RECT 0x8DCD +#define GL_INT_SAMPLER_BUFFER 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8 +#define GL_TEXTURE_BUFFER 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D +#define GL_TEXTURE_RECTANGLE 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8 +#define GL_R8_SNORM 0x8F94 +#define GL_RG8_SNORM 0x8F95 +#define GL_RGB8_SNORM 0x8F96 +#define GL_RGBA8_SNORM 0x8F97 +#define GL_R16_SNORM 0x8F98 +#define GL_RG16_SNORM 0x8F99 +#define GL_RGB16_SNORM 0x8F9A +#define GL_RGBA16_SNORM 0x8F9B +#define GL_SIGNED_NORMALIZED 0x8F9C +#define GL_PRIMITIVE_RESTART 0x8F9D +#define GL_PRIMITIVE_RESTART_INDEX 0x8F9E +#define GL_COPY_READ_BUFFER 0x8F36 +#define GL_COPY_WRITE_BUFFER 0x8F37 +#define GL_UNIFORM_BUFFER 0x8A11 +#define GL_UNIFORM_BUFFER_BINDING 0x8A28 +#define GL_UNIFORM_BUFFER_START 0x8A29 +#define GL_UNIFORM_BUFFER_SIZE 0x8A2A +#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C +#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D +#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E +#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F +#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30 +#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31 +#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32 +#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33 +#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34 +#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35 +#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36 +#define GL_UNIFORM_TYPE 0x8A37 +#define GL_UNIFORM_SIZE 0x8A38 +#define GL_UNIFORM_NAME_LENGTH 0x8A39 +#define GL_UNIFORM_BLOCK_INDEX 0x8A3A +#define GL_UNIFORM_OFFSET 0x8A3B +#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C +#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D +#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E +#define GL_UNIFORM_BLOCK_BINDING 0x8A3F +#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40 +#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41 +#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42 +#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46 +#define GL_INVALID_INDEX 0xFFFFFFFF +#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001 +#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002 +#define GL_LINES_ADJACENCY 0x000A +#define GL_LINE_STRIP_ADJACENCY 0x000B +#define GL_TRIANGLES_ADJACENCY 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D +#define GL_PROGRAM_POINT_SIZE 0x8642 +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8 +#define GL_GEOMETRY_SHADER 0x8DD9 +#define GL_GEOMETRY_VERTICES_OUT 0x8916 +#define GL_GEOMETRY_INPUT_TYPE 0x8917 +#define GL_GEOMETRY_OUTPUT_TYPE 0x8918 +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1 +#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122 +#define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123 +#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124 +#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125 +#define GL_CONTEXT_PROFILE_MASK 0x9126 +#define GL_DEPTH_CLAMP 0x864F +#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C +#define GL_FIRST_VERTEX_CONVENTION 0x8E4D +#define GL_LAST_VERTEX_CONVENTION 0x8E4E +#define GL_PROVOKING_VERTEX 0x8E4F +#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F +#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111 +#define GL_OBJECT_TYPE 0x9112 +#define GL_SYNC_CONDITION 0x9113 +#define GL_SYNC_STATUS 0x9114 +#define GL_SYNC_FLAGS 0x9115 +#define GL_SYNC_FENCE 0x9116 +#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117 +#define GL_UNSIGNALED 0x9118 +#define GL_SIGNALED 0x9119 +#define GL_ALREADY_SIGNALED 0x911A +#define GL_TIMEOUT_EXPIRED 0x911B +#define GL_CONDITION_SATISFIED 0x911C +#define GL_WAIT_FAILED 0x911D +#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFF +#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 +#define GL_SAMPLE_POSITION 0x8E50 +#define GL_SAMPLE_MASK 0x8E51 +#define GL_SAMPLE_MASK_VALUE 0x8E52 +#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59 +#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 +#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 +#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105 +#define GL_TEXTURE_SAMPLES 0x9106 +#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107 +#define GL_SAMPLER_2D_MULTISAMPLE 0x9108 +#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109 +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A +#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B +#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D +#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E +#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F +#define GL_MAX_INTEGER_SAMPLES 0x9110 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE +#define GL_SRC1_COLOR 0x88F9 +#define GL_ONE_MINUS_SRC1_COLOR 0x88FA +#define GL_ONE_MINUS_SRC1_ALPHA 0x88FB +#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC +#define GL_ANY_SAMPLES_PASSED 0x8C2F +#define GL_SAMPLER_BINDING 0x8919 +#define GL_RGB10_A2UI 0x906F +#define GL_TEXTURE_SWIZZLE_R 0x8E42 +#define GL_TEXTURE_SWIZZLE_G 0x8E43 +#define GL_TEXTURE_SWIZZLE_B 0x8E44 +#define GL_TEXTURE_SWIZZLE_A 0x8E45 +#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46 +#define GL_TIME_ELAPSED 0x88BF +#define GL_TIMESTAMP 0x8E28 +#define GL_INT_2_10_10_10_REV 0x8D9F +#define GL_SAMPLE_SHADING 0x8C36 +#define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37 +#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E +#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F +#define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A +#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY 0x900B +#define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F +#define GL_DRAW_INDIRECT_BUFFER 0x8F3F +#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43 +#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F +#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A +#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B +#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C +#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D +#define GL_MAX_VERTEX_STREAMS 0x8E71 +#define GL_DOUBLE_VEC2 0x8FFC +#define GL_DOUBLE_VEC3 0x8FFD +#define GL_DOUBLE_VEC4 0x8FFE +#define GL_DOUBLE_MAT2 0x8F46 +#define GL_DOUBLE_MAT3 0x8F47 +#define GL_DOUBLE_MAT4 0x8F48 +#define GL_DOUBLE_MAT2x3 0x8F49 +#define GL_DOUBLE_MAT2x4 0x8F4A +#define GL_DOUBLE_MAT3x2 0x8F4B +#define GL_DOUBLE_MAT3x4 0x8F4C +#define GL_DOUBLE_MAT4x2 0x8F4D +#define GL_DOUBLE_MAT4x3 0x8F4E +#define GL_ACTIVE_SUBROUTINES 0x8DE5 +#define GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6 +#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47 +#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48 +#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49 +#define GL_MAX_SUBROUTINES 0x8DE7 +#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8 +#define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A +#define GL_COMPATIBLE_SUBROUTINES 0x8E4B +#define GL_PATCHES 0x000E +#define GL_PATCH_VERTICES 0x8E72 +#define GL_PATCH_DEFAULT_INNER_LEVEL 0x8E73 +#define GL_PATCH_DEFAULT_OUTER_LEVEL 0x8E74 +#define GL_TESS_CONTROL_OUTPUT_VERTICES 0x8E75 +#define GL_TESS_GEN_MODE 0x8E76 +#define GL_TESS_GEN_SPACING 0x8E77 +#define GL_TESS_GEN_VERTEX_ORDER 0x8E78 +#define GL_TESS_GEN_POINT_MODE 0x8E79 +#define GL_ISOLINES 0x8E7A +#define GL_QUADS 0x0007 +#define GL_FRACTIONAL_ODD 0x8E7B +#define GL_FRACTIONAL_EVEN 0x8E7C +#define GL_MAX_PATCH_VERTICES 0x8E7D +#define GL_MAX_TESS_GEN_LEVEL 0x8E7E +#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F +#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80 +#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81 +#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82 +#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83 +#define GL_MAX_TESS_PATCH_COMPONENTS 0x8E84 +#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85 +#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86 +#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89 +#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A +#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C +#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D +#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E +#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1 +#define GL_TESS_EVALUATION_SHADER 0x8E87 +#define GL_TESS_CONTROL_SHADER 0x8E88 +#define GL_TRANSFORM_FEEDBACK 0x8E22 +#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23 +#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24 +#define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25 +#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70 +#define GL_FIXED 0x140C +#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B +#define GL_LOW_FLOAT 0x8DF0 +#define GL_MEDIUM_FLOAT 0x8DF1 +#define GL_HIGH_FLOAT 0x8DF2 +#define GL_LOW_INT 0x8DF3 +#define GL_MEDIUM_INT 0x8DF4 +#define GL_HIGH_INT 0x8DF5 +#define GL_SHADER_COMPILER 0x8DFA +#define GL_SHADER_BINARY_FORMATS 0x8DF8 +#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 +#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB +#define GL_MAX_VARYING_VECTORS 0x8DFC +#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD +#define GL_RGB565 0x8D62 +#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257 +#define GL_PROGRAM_BINARY_LENGTH 0x8741 +#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE +#define GL_PROGRAM_BINARY_FORMATS 0x87FF +#define GL_VERTEX_SHADER_BIT 0x00000001 +#define GL_FRAGMENT_SHADER_BIT 0x00000002 +#define GL_GEOMETRY_SHADER_BIT 0x00000004 +#define GL_TESS_CONTROL_SHADER_BIT 0x00000008 +#define GL_TESS_EVALUATION_SHADER_BIT 0x00000010 +#define GL_ALL_SHADER_BITS 0xFFFFFFFF +#define GL_PROGRAM_SEPARABLE 0x8258 +#define GL_ACTIVE_PROGRAM 0x8259 +#define GL_PROGRAM_PIPELINE_BINDING 0x825A +#define GL_MAX_VIEWPORTS 0x825B +#define GL_VIEWPORT_SUBPIXEL_BITS 0x825C +#define GL_VIEWPORT_BOUNDS_RANGE 0x825D +#define GL_LAYER_PROVOKING_VERTEX 0x825E +#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F +#define GL_UNDEFINED_VERTEX 0x8260 +#ifndef GL_VERSION_1_0 +#define GL_VERSION_1_0 1 +GLAPI int GLAD_GL_VERSION_1_0; +typedef void (APIENTRYP PFNGLCULLFACEPROC)(GLenum mode); +GLAPI PFNGLCULLFACEPROC glad_glCullFace; +#define glCullFace glad_glCullFace +typedef void (APIENTRYP PFNGLFRONTFACEPROC)(GLenum mode); +GLAPI PFNGLFRONTFACEPROC glad_glFrontFace; +#define glFrontFace glad_glFrontFace +typedef void (APIENTRYP PFNGLHINTPROC)(GLenum target, GLenum mode); +GLAPI PFNGLHINTPROC glad_glHint; +#define glHint glad_glHint +typedef void (APIENTRYP PFNGLLINEWIDTHPROC)(GLfloat width); +GLAPI PFNGLLINEWIDTHPROC glad_glLineWidth; +#define glLineWidth glad_glLineWidth +typedef void (APIENTRYP PFNGLPOINTSIZEPROC)(GLfloat size); +GLAPI PFNGLPOINTSIZEPROC glad_glPointSize; +#define glPointSize glad_glPointSize +typedef void (APIENTRYP PFNGLPOLYGONMODEPROC)(GLenum face, GLenum mode); +GLAPI PFNGLPOLYGONMODEPROC glad_glPolygonMode; +#define glPolygonMode glad_glPolygonMode +typedef void (APIENTRYP PFNGLSCISSORPROC)(GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLSCISSORPROC glad_glScissor; +#define glScissor glad_glScissor +typedef void (APIENTRYP PFNGLTEXPARAMETERFPROC)(GLenum target, GLenum pname, GLfloat param); +GLAPI PFNGLTEXPARAMETERFPROC glad_glTexParameterf; +#define glTexParameterf glad_glTexParameterf +typedef void (APIENTRYP PFNGLTEXPARAMETERFVPROC)(GLenum target, GLenum pname, const GLfloat *params); +GLAPI PFNGLTEXPARAMETERFVPROC glad_glTexParameterfv; +#define glTexParameterfv glad_glTexParameterfv +typedef void (APIENTRYP PFNGLTEXPARAMETERIPROC)(GLenum target, GLenum pname, GLint param); +GLAPI PFNGLTEXPARAMETERIPROC glad_glTexParameteri; +#define glTexParameteri glad_glTexParameteri +typedef void (APIENTRYP PFNGLTEXPARAMETERIVPROC)(GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLTEXPARAMETERIVPROC glad_glTexParameteriv; +#define glTexParameteriv glad_glTexParameteriv +typedef void (APIENTRYP PFNGLTEXIMAGE1DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXIMAGE1DPROC glad_glTexImage1D; +#define glTexImage1D glad_glTexImage1D +typedef void (APIENTRYP PFNGLTEXIMAGE2DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXIMAGE2DPROC glad_glTexImage2D; +#define glTexImage2D glad_glTexImage2D +typedef void (APIENTRYP PFNGLDRAWBUFFERPROC)(GLenum buf); +GLAPI PFNGLDRAWBUFFERPROC glad_glDrawBuffer; +#define glDrawBuffer glad_glDrawBuffer +typedef void (APIENTRYP PFNGLCLEARPROC)(GLbitfield mask); +GLAPI PFNGLCLEARPROC glad_glClear; +#define glClear glad_glClear +typedef void (APIENTRYP PFNGLCLEARCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GLAPI PFNGLCLEARCOLORPROC glad_glClearColor; +#define glClearColor glad_glClearColor +typedef void (APIENTRYP PFNGLCLEARSTENCILPROC)(GLint s); +GLAPI PFNGLCLEARSTENCILPROC glad_glClearStencil; +#define glClearStencil glad_glClearStencil +typedef void (APIENTRYP PFNGLCLEARDEPTHPROC)(GLdouble depth); +GLAPI PFNGLCLEARDEPTHPROC glad_glClearDepth; +#define glClearDepth glad_glClearDepth +typedef void (APIENTRYP PFNGLSTENCILMASKPROC)(GLuint mask); +GLAPI PFNGLSTENCILMASKPROC glad_glStencilMask; +#define glStencilMask glad_glStencilMask +typedef void (APIENTRYP PFNGLCOLORMASKPROC)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +GLAPI PFNGLCOLORMASKPROC glad_glColorMask; +#define glColorMask glad_glColorMask +typedef void (APIENTRYP PFNGLDEPTHMASKPROC)(GLboolean flag); +GLAPI PFNGLDEPTHMASKPROC glad_glDepthMask; +#define glDepthMask glad_glDepthMask +typedef void (APIENTRYP PFNGLDISABLEPROC)(GLenum cap); +GLAPI PFNGLDISABLEPROC glad_glDisable; +#define glDisable glad_glDisable +typedef void (APIENTRYP PFNGLENABLEPROC)(GLenum cap); +GLAPI PFNGLENABLEPROC glad_glEnable; +#define glEnable glad_glEnable +typedef void (APIENTRYP PFNGLFINISHPROC)(void); +GLAPI PFNGLFINISHPROC glad_glFinish; +#define glFinish glad_glFinish +typedef void (APIENTRYP PFNGLFLUSHPROC)(void); +GLAPI PFNGLFLUSHPROC glad_glFlush; +#define glFlush glad_glFlush +typedef void (APIENTRYP PFNGLBLENDFUNCPROC)(GLenum sfactor, GLenum dfactor); +GLAPI PFNGLBLENDFUNCPROC glad_glBlendFunc; +#define glBlendFunc glad_glBlendFunc +typedef void (APIENTRYP PFNGLLOGICOPPROC)(GLenum opcode); +GLAPI PFNGLLOGICOPPROC glad_glLogicOp; +#define glLogicOp glad_glLogicOp +typedef void (APIENTRYP PFNGLSTENCILFUNCPROC)(GLenum func, GLint ref, GLuint mask); +GLAPI PFNGLSTENCILFUNCPROC glad_glStencilFunc; +#define glStencilFunc glad_glStencilFunc +typedef void (APIENTRYP PFNGLSTENCILOPPROC)(GLenum fail, GLenum zfail, GLenum zpass); +GLAPI PFNGLSTENCILOPPROC glad_glStencilOp; +#define glStencilOp glad_glStencilOp +typedef void (APIENTRYP PFNGLDEPTHFUNCPROC)(GLenum func); +GLAPI PFNGLDEPTHFUNCPROC glad_glDepthFunc; +#define glDepthFunc glad_glDepthFunc +typedef void (APIENTRYP PFNGLPIXELSTOREFPROC)(GLenum pname, GLfloat param); +GLAPI PFNGLPIXELSTOREFPROC glad_glPixelStoref; +#define glPixelStoref glad_glPixelStoref +typedef void (APIENTRYP PFNGLPIXELSTOREIPROC)(GLenum pname, GLint param); +GLAPI PFNGLPIXELSTOREIPROC glad_glPixelStorei; +#define glPixelStorei glad_glPixelStorei +typedef void (APIENTRYP PFNGLREADBUFFERPROC)(GLenum src); +GLAPI PFNGLREADBUFFERPROC glad_glReadBuffer; +#define glReadBuffer glad_glReadBuffer +typedef void (APIENTRYP PFNGLREADPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels); +GLAPI PFNGLREADPIXELSPROC glad_glReadPixels; +#define glReadPixels glad_glReadPixels +typedef void (APIENTRYP PFNGLGETBOOLEANVPROC)(GLenum pname, GLboolean *data); +GLAPI PFNGLGETBOOLEANVPROC glad_glGetBooleanv; +#define glGetBooleanv glad_glGetBooleanv +typedef void (APIENTRYP PFNGLGETDOUBLEVPROC)(GLenum pname, GLdouble *data); +GLAPI PFNGLGETDOUBLEVPROC glad_glGetDoublev; +#define glGetDoublev glad_glGetDoublev +typedef GLenum (APIENTRYP PFNGLGETERRORPROC)(void); +GLAPI PFNGLGETERRORPROC glad_glGetError; +#define glGetError glad_glGetError +typedef void (APIENTRYP PFNGLGETFLOATVPROC)(GLenum pname, GLfloat *data); +GLAPI PFNGLGETFLOATVPROC glad_glGetFloatv; +#define glGetFloatv glad_glGetFloatv +typedef void (APIENTRYP PFNGLGETINTEGERVPROC)(GLenum pname, GLint *data); +GLAPI PFNGLGETINTEGERVPROC glad_glGetIntegerv; +#define glGetIntegerv glad_glGetIntegerv +typedef const GLubyte * (APIENTRYP PFNGLGETSTRINGPROC)(GLenum name); +GLAPI PFNGLGETSTRINGPROC glad_glGetString; +#define glGetString glad_glGetString +typedef void (APIENTRYP PFNGLGETTEXIMAGEPROC)(GLenum target, GLint level, GLenum format, GLenum type, void *pixels); +GLAPI PFNGLGETTEXIMAGEPROC glad_glGetTexImage; +#define glGetTexImage glad_glGetTexImage +typedef void (APIENTRYP PFNGLGETTEXPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv; +#define glGetTexParameterfv glad_glGetTexParameterfv +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv; +#define glGetTexParameteriv glad_glGetTexParameteriv +typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERFVPROC)(GLenum target, GLint level, GLenum pname, GLfloat *params); +GLAPI PFNGLGETTEXLEVELPARAMETERFVPROC glad_glGetTexLevelParameterfv; +#define glGetTexLevelParameterfv glad_glGetTexLevelParameterfv +typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERIVPROC)(GLenum target, GLint level, GLenum pname, GLint *params); +GLAPI PFNGLGETTEXLEVELPARAMETERIVPROC glad_glGetTexLevelParameteriv; +#define glGetTexLevelParameteriv glad_glGetTexLevelParameteriv +typedef GLboolean (APIENTRYP PFNGLISENABLEDPROC)(GLenum cap); +GLAPI PFNGLISENABLEDPROC glad_glIsEnabled; +#define glIsEnabled glad_glIsEnabled +typedef void (APIENTRYP PFNGLDEPTHRANGEPROC)(GLdouble n, GLdouble f); +GLAPI PFNGLDEPTHRANGEPROC glad_glDepthRange; +#define glDepthRange glad_glDepthRange +typedef void (APIENTRYP PFNGLVIEWPORTPROC)(GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLVIEWPORTPROC glad_glViewport; +#define glViewport glad_glViewport +#endif +#ifndef GL_VERSION_1_1 +#define GL_VERSION_1_1 1 +GLAPI int GLAD_GL_VERSION_1_1; +typedef void (APIENTRYP PFNGLDRAWARRAYSPROC)(GLenum mode, GLint first, GLsizei count); +GLAPI PFNGLDRAWARRAYSPROC glad_glDrawArrays; +#define glDrawArrays glad_glDrawArrays +typedef void (APIENTRYP PFNGLDRAWELEMENTSPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices); +GLAPI PFNGLDRAWELEMENTSPROC glad_glDrawElements; +#define glDrawElements glad_glDrawElements +typedef void (APIENTRYP PFNGLPOLYGONOFFSETPROC)(GLfloat factor, GLfloat units); +GLAPI PFNGLPOLYGONOFFSETPROC glad_glPolygonOffset; +#define glPolygonOffset glad_glPolygonOffset +typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DPROC)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +GLAPI PFNGLCOPYTEXIMAGE1DPROC glad_glCopyTexImage1D; +#define glCopyTexImage1D glad_glCopyTexImage1D +typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DPROC)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +GLAPI PFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D; +#define glCopyTexImage2D glad_glCopyTexImage2D +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +GLAPI PFNGLCOPYTEXSUBIMAGE1DPROC glad_glCopyTexSubImage1D; +#define glCopyTexSubImage1D glad_glCopyTexSubImage1D +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D; +#define glCopyTexSubImage2D glad_glCopyTexSubImage2D +typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXSUBIMAGE1DPROC glad_glTexSubImage1D; +#define glTexSubImage1D glad_glTexSubImage1D +typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D; +#define glTexSubImage2D glad_glTexSubImage2D +typedef void (APIENTRYP PFNGLBINDTEXTUREPROC)(GLenum target, GLuint texture); +GLAPI PFNGLBINDTEXTUREPROC glad_glBindTexture; +#define glBindTexture glad_glBindTexture +typedef void (APIENTRYP PFNGLDELETETEXTURESPROC)(GLsizei n, const GLuint *textures); +GLAPI PFNGLDELETETEXTURESPROC glad_glDeleteTextures; +#define glDeleteTextures glad_glDeleteTextures +typedef void (APIENTRYP PFNGLGENTEXTURESPROC)(GLsizei n, GLuint *textures); +GLAPI PFNGLGENTEXTURESPROC glad_glGenTextures; +#define glGenTextures glad_glGenTextures +typedef GLboolean (APIENTRYP PFNGLISTEXTUREPROC)(GLuint texture); +GLAPI PFNGLISTEXTUREPROC glad_glIsTexture; +#define glIsTexture glad_glIsTexture +#endif +#ifndef GL_VERSION_1_2 +#define GL_VERSION_1_2 1 +GLAPI int GLAD_GL_VERSION_1_2; +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); +GLAPI PFNGLDRAWRANGEELEMENTSPROC glad_glDrawRangeElements; +#define glDrawRangeElements glad_glDrawRangeElements +typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXIMAGE3DPROC glad_glTexImage3D; +#define glTexImage3D glad_glTexImage3D +typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXSUBIMAGE3DPROC glad_glTexSubImage3D; +#define glTexSubImage3D glad_glTexSubImage3D +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLCOPYTEXSUBIMAGE3DPROC glad_glCopyTexSubImage3D; +#define glCopyTexSubImage3D glad_glCopyTexSubImage3D +#endif +#ifndef GL_VERSION_1_3 +#define GL_VERSION_1_3 1 +GLAPI int GLAD_GL_VERSION_1_3; +typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC)(GLenum texture); +GLAPI PFNGLACTIVETEXTUREPROC glad_glActiveTexture; +#define glActiveTexture glad_glActiveTexture +typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC)(GLfloat value, GLboolean invert); +GLAPI PFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage; +#define glSampleCoverage glad_glSampleCoverage +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXIMAGE3DPROC glad_glCompressedTexImage3D; +#define glCompressedTexImage3D glad_glCompressedTexImage3D +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D; +#define glCompressedTexImage2D glad_glCompressedTexImage2D +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXIMAGE1DPROC glad_glCompressedTexImage1D; +#define glCompressedTexImage1D glad_glCompressedTexImage1D +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glad_glCompressedTexSubImage3D; +#define glCompressedTexSubImage3D glad_glCompressedTexSubImage3D +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D; +#define glCompressedTexSubImage2D glad_glCompressedTexSubImage2D +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glad_glCompressedTexSubImage1D; +#define glCompressedTexSubImage1D glad_glCompressedTexSubImage1D +typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC)(GLenum target, GLint level, void *img); +GLAPI PFNGLGETCOMPRESSEDTEXIMAGEPROC glad_glGetCompressedTexImage; +#define glGetCompressedTexImage glad_glGetCompressedTexImage +#endif +#ifndef GL_VERSION_1_4 +#define GL_VERSION_1_4 1 +GLAPI int GLAD_GL_VERSION_1_4; +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +GLAPI PFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate; +#define glBlendFuncSeparate glad_glBlendFuncSeparate +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); +GLAPI PFNGLMULTIDRAWARRAYSPROC glad_glMultiDrawArrays; +#define glMultiDrawArrays glad_glMultiDrawArrays +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC)(GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount); +GLAPI PFNGLMULTIDRAWELEMENTSPROC glad_glMultiDrawElements; +#define glMultiDrawElements glad_glMultiDrawElements +typedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC)(GLenum pname, GLfloat param); +GLAPI PFNGLPOINTPARAMETERFPROC glad_glPointParameterf; +#define glPointParameterf glad_glPointParameterf +typedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC)(GLenum pname, const GLfloat *params); +GLAPI PFNGLPOINTPARAMETERFVPROC glad_glPointParameterfv; +#define glPointParameterfv glad_glPointParameterfv +typedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC)(GLenum pname, GLint param); +GLAPI PFNGLPOINTPARAMETERIPROC glad_glPointParameteri; +#define glPointParameteri glad_glPointParameteri +typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC)(GLenum pname, const GLint *params); +GLAPI PFNGLPOINTPARAMETERIVPROC glad_glPointParameteriv; +#define glPointParameteriv glad_glPointParameteriv +typedef void (APIENTRYP PFNGLBLENDCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GLAPI PFNGLBLENDCOLORPROC glad_glBlendColor; +#define glBlendColor glad_glBlendColor +typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC)(GLenum mode); +GLAPI PFNGLBLENDEQUATIONPROC glad_glBlendEquation; +#define glBlendEquation glad_glBlendEquation +#endif +#ifndef GL_VERSION_1_5 +#define GL_VERSION_1_5 1 +GLAPI int GLAD_GL_VERSION_1_5; +typedef void (APIENTRYP PFNGLGENQUERIESPROC)(GLsizei n, GLuint *ids); +GLAPI PFNGLGENQUERIESPROC glad_glGenQueries; +#define glGenQueries glad_glGenQueries +typedef void (APIENTRYP PFNGLDELETEQUERIESPROC)(GLsizei n, const GLuint *ids); +GLAPI PFNGLDELETEQUERIESPROC glad_glDeleteQueries; +#define glDeleteQueries glad_glDeleteQueries +typedef GLboolean (APIENTRYP PFNGLISQUERYPROC)(GLuint id); +GLAPI PFNGLISQUERYPROC glad_glIsQuery; +#define glIsQuery glad_glIsQuery +typedef void (APIENTRYP PFNGLBEGINQUERYPROC)(GLenum target, GLuint id); +GLAPI PFNGLBEGINQUERYPROC glad_glBeginQuery; +#define glBeginQuery glad_glBeginQuery +typedef void (APIENTRYP PFNGLENDQUERYPROC)(GLenum target); +GLAPI PFNGLENDQUERYPROC glad_glEndQuery; +#define glEndQuery glad_glEndQuery +typedef void (APIENTRYP PFNGLGETQUERYIVPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETQUERYIVPROC glad_glGetQueryiv; +#define glGetQueryiv glad_glGetQueryiv +typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVPROC)(GLuint id, GLenum pname, GLint *params); +GLAPI PFNGLGETQUERYOBJECTIVPROC glad_glGetQueryObjectiv; +#define glGetQueryObjectiv glad_glGetQueryObjectiv +typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVPROC)(GLuint id, GLenum pname, GLuint *params); +GLAPI PFNGLGETQUERYOBJECTUIVPROC glad_glGetQueryObjectuiv; +#define glGetQueryObjectuiv glad_glGetQueryObjectuiv +typedef void (APIENTRYP PFNGLBINDBUFFERPROC)(GLenum target, GLuint buffer); +GLAPI PFNGLBINDBUFFERPROC glad_glBindBuffer; +#define glBindBuffer glad_glBindBuffer +typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC)(GLsizei n, const GLuint *buffers); +GLAPI PFNGLDELETEBUFFERSPROC glad_glDeleteBuffers; +#define glDeleteBuffers glad_glDeleteBuffers +typedef void (APIENTRYP PFNGLGENBUFFERSPROC)(GLsizei n, GLuint *buffers); +GLAPI PFNGLGENBUFFERSPROC glad_glGenBuffers; +#define glGenBuffers glad_glGenBuffers +typedef GLboolean (APIENTRYP PFNGLISBUFFERPROC)(GLuint buffer); +GLAPI PFNGLISBUFFERPROC glad_glIsBuffer; +#define glIsBuffer glad_glIsBuffer +typedef void (APIENTRYP PFNGLBUFFERDATAPROC)(GLenum target, GLsizeiptr size, const void *data, GLenum usage); +GLAPI PFNGLBUFFERDATAPROC glad_glBufferData; +#define glBufferData glad_glBufferData +typedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, const void *data); +GLAPI PFNGLBUFFERSUBDATAPROC glad_glBufferSubData; +#define glBufferSubData glad_glBufferSubData +typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, void *data); +GLAPI PFNGLGETBUFFERSUBDATAPROC glad_glGetBufferSubData; +#define glGetBufferSubData glad_glGetBufferSubData +typedef void * (APIENTRYP PFNGLMAPBUFFERPROC)(GLenum target, GLenum access); +GLAPI PFNGLMAPBUFFERPROC glad_glMapBuffer; +#define glMapBuffer glad_glMapBuffer +typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC)(GLenum target); +GLAPI PFNGLUNMAPBUFFERPROC glad_glUnmapBuffer; +#define glUnmapBuffer glad_glUnmapBuffer +typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv; +#define glGetBufferParameteriv glad_glGetBufferParameteriv +typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC)(GLenum target, GLenum pname, void **params); +GLAPI PFNGLGETBUFFERPOINTERVPROC glad_glGetBufferPointerv; +#define glGetBufferPointerv glad_glGetBufferPointerv +#endif +#ifndef GL_VERSION_2_0 +#define GL_VERSION_2_0 1 +GLAPI int GLAD_GL_VERSION_2_0; +typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC)(GLenum modeRGB, GLenum modeAlpha); +GLAPI PFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate; +#define glBlendEquationSeparate glad_glBlendEquationSeparate +typedef void (APIENTRYP PFNGLDRAWBUFFERSPROC)(GLsizei n, const GLenum *bufs); +GLAPI PFNGLDRAWBUFFERSPROC glad_glDrawBuffers; +#define glDrawBuffers glad_glDrawBuffers +typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +GLAPI PFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate; +#define glStencilOpSeparate glad_glStencilOpSeparate +typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC)(GLenum face, GLenum func, GLint ref, GLuint mask); +GLAPI PFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate; +#define glStencilFuncSeparate glad_glStencilFuncSeparate +typedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC)(GLenum face, GLuint mask); +GLAPI PFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate; +#define glStencilMaskSeparate glad_glStencilMaskSeparate +typedef void (APIENTRYP PFNGLATTACHSHADERPROC)(GLuint program, GLuint shader); +GLAPI PFNGLATTACHSHADERPROC glad_glAttachShader; +#define glAttachShader glad_glAttachShader +typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC)(GLuint program, GLuint index, const GLchar *name); +GLAPI PFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation; +#define glBindAttribLocation glad_glBindAttribLocation +typedef void (APIENTRYP PFNGLCOMPILESHADERPROC)(GLuint shader); +GLAPI PFNGLCOMPILESHADERPROC glad_glCompileShader; +#define glCompileShader glad_glCompileShader +typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC)(void); +GLAPI PFNGLCREATEPROGRAMPROC glad_glCreateProgram; +#define glCreateProgram glad_glCreateProgram +typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC)(GLenum type); +GLAPI PFNGLCREATESHADERPROC glad_glCreateShader; +#define glCreateShader glad_glCreateShader +typedef void (APIENTRYP PFNGLDELETEPROGRAMPROC)(GLuint program); +GLAPI PFNGLDELETEPROGRAMPROC glad_glDeleteProgram; +#define glDeleteProgram glad_glDeleteProgram +typedef void (APIENTRYP PFNGLDELETESHADERPROC)(GLuint shader); +GLAPI PFNGLDELETESHADERPROC glad_glDeleteShader; +#define glDeleteShader glad_glDeleteShader +typedef void (APIENTRYP PFNGLDETACHSHADERPROC)(GLuint program, GLuint shader); +GLAPI PFNGLDETACHSHADERPROC glad_glDetachShader; +#define glDetachShader glad_glDetachShader +typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC)(GLuint index); +GLAPI PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray; +#define glDisableVertexAttribArray glad_glDisableVertexAttribArray +typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC)(GLuint index); +GLAPI PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray; +#define glEnableVertexAttribArray glad_glEnableVertexAttribArray +typedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +GLAPI PFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib; +#define glGetActiveAttrib glad_glGetActiveAttrib +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +GLAPI PFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform; +#define glGetActiveUniform glad_glGetActiveUniform +typedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC)(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); +GLAPI PFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders; +#define glGetAttachedShaders glad_glGetAttachedShaders +typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC)(GLuint program, const GLchar *name); +GLAPI PFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation; +#define glGetAttribLocation glad_glGetAttribLocation +typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC)(GLuint program, GLenum pname, GLint *params); +GLAPI PFNGLGETPROGRAMIVPROC glad_glGetProgramiv; +#define glGetProgramiv glad_glGetProgramiv +typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC)(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GLAPI PFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog; +#define glGetProgramInfoLog glad_glGetProgramInfoLog +typedef void (APIENTRYP PFNGLGETSHADERIVPROC)(GLuint shader, GLenum pname, GLint *params); +GLAPI PFNGLGETSHADERIVPROC glad_glGetShaderiv; +#define glGetShaderiv glad_glGetShaderiv +typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GLAPI PFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog; +#define glGetShaderInfoLog glad_glGetShaderInfoLog +typedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +GLAPI PFNGLGETSHADERSOURCEPROC glad_glGetShaderSource; +#define glGetShaderSource glad_glGetShaderSource +typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC)(GLuint program, const GLchar *name); +GLAPI PFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation; +#define glGetUniformLocation glad_glGetUniformLocation +typedef void (APIENTRYP PFNGLGETUNIFORMFVPROC)(GLuint program, GLint location, GLfloat *params); +GLAPI PFNGLGETUNIFORMFVPROC glad_glGetUniformfv; +#define glGetUniformfv glad_glGetUniformfv +typedef void (APIENTRYP PFNGLGETUNIFORMIVPROC)(GLuint program, GLint location, GLint *params); +GLAPI PFNGLGETUNIFORMIVPROC glad_glGetUniformiv; +#define glGetUniformiv glad_glGetUniformiv +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVPROC)(GLuint index, GLenum pname, GLdouble *params); +GLAPI PFNGLGETVERTEXATTRIBDVPROC glad_glGetVertexAttribdv; +#define glGetVertexAttribdv glad_glGetVertexAttribdv +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC)(GLuint index, GLenum pname, GLfloat *params); +GLAPI PFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv; +#define glGetVertexAttribfv glad_glGetVertexAttribfv +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC)(GLuint index, GLenum pname, GLint *params); +GLAPI PFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv; +#define glGetVertexAttribiv glad_glGetVertexAttribiv +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC)(GLuint index, GLenum pname, void **pointer); +GLAPI PFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv; +#define glGetVertexAttribPointerv glad_glGetVertexAttribPointerv +typedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC)(GLuint program); +GLAPI PFNGLISPROGRAMPROC glad_glIsProgram; +#define glIsProgram glad_glIsProgram +typedef GLboolean (APIENTRYP PFNGLISSHADERPROC)(GLuint shader); +GLAPI PFNGLISSHADERPROC glad_glIsShader; +#define glIsShader glad_glIsShader +typedef void (APIENTRYP PFNGLLINKPROGRAMPROC)(GLuint program); +GLAPI PFNGLLINKPROGRAMPROC glad_glLinkProgram; +#define glLinkProgram glad_glLinkProgram +typedef void (APIENTRYP PFNGLSHADERSOURCEPROC)(GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); +GLAPI PFNGLSHADERSOURCEPROC glad_glShaderSource; +#define glShaderSource glad_glShaderSource +typedef void (APIENTRYP PFNGLUSEPROGRAMPROC)(GLuint program); +GLAPI PFNGLUSEPROGRAMPROC glad_glUseProgram; +#define glUseProgram glad_glUseProgram +typedef void (APIENTRYP PFNGLUNIFORM1FPROC)(GLint location, GLfloat v0); +GLAPI PFNGLUNIFORM1FPROC glad_glUniform1f; +#define glUniform1f glad_glUniform1f +typedef void (APIENTRYP PFNGLUNIFORM2FPROC)(GLint location, GLfloat v0, GLfloat v1); +GLAPI PFNGLUNIFORM2FPROC glad_glUniform2f; +#define glUniform2f glad_glUniform2f +typedef void (APIENTRYP PFNGLUNIFORM3FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GLAPI PFNGLUNIFORM3FPROC glad_glUniform3f; +#define glUniform3f glad_glUniform3f +typedef void (APIENTRYP PFNGLUNIFORM4FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GLAPI PFNGLUNIFORM4FPROC glad_glUniform4f; +#define glUniform4f glad_glUniform4f +typedef void (APIENTRYP PFNGLUNIFORM1IPROC)(GLint location, GLint v0); +GLAPI PFNGLUNIFORM1IPROC glad_glUniform1i; +#define glUniform1i glad_glUniform1i +typedef void (APIENTRYP PFNGLUNIFORM2IPROC)(GLint location, GLint v0, GLint v1); +GLAPI PFNGLUNIFORM2IPROC glad_glUniform2i; +#define glUniform2i glad_glUniform2i +typedef void (APIENTRYP PFNGLUNIFORM3IPROC)(GLint location, GLint v0, GLint v1, GLint v2); +GLAPI PFNGLUNIFORM3IPROC glad_glUniform3i; +#define glUniform3i glad_glUniform3i +typedef void (APIENTRYP PFNGLUNIFORM4IPROC)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GLAPI PFNGLUNIFORM4IPROC glad_glUniform4i; +#define glUniform4i glad_glUniform4i +typedef void (APIENTRYP PFNGLUNIFORM1FVPROC)(GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLUNIFORM1FVPROC glad_glUniform1fv; +#define glUniform1fv glad_glUniform1fv +typedef void (APIENTRYP PFNGLUNIFORM2FVPROC)(GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLUNIFORM2FVPROC glad_glUniform2fv; +#define glUniform2fv glad_glUniform2fv +typedef void (APIENTRYP PFNGLUNIFORM3FVPROC)(GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLUNIFORM3FVPROC glad_glUniform3fv; +#define glUniform3fv glad_glUniform3fv +typedef void (APIENTRYP PFNGLUNIFORM4FVPROC)(GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLUNIFORM4FVPROC glad_glUniform4fv; +#define glUniform4fv glad_glUniform4fv +typedef void (APIENTRYP PFNGLUNIFORM1IVPROC)(GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLUNIFORM1IVPROC glad_glUniform1iv; +#define glUniform1iv glad_glUniform1iv +typedef void (APIENTRYP PFNGLUNIFORM2IVPROC)(GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLUNIFORM2IVPROC glad_glUniform2iv; +#define glUniform2iv glad_glUniform2iv +typedef void (APIENTRYP PFNGLUNIFORM3IVPROC)(GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLUNIFORM3IVPROC glad_glUniform3iv; +#define glUniform3iv glad_glUniform3iv +typedef void (APIENTRYP PFNGLUNIFORM4IVPROC)(GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLUNIFORM4IVPROC glad_glUniform4iv; +#define glUniform4iv glad_glUniform4iv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv; +#define glUniformMatrix2fv glad_glUniformMatrix2fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv; +#define glUniformMatrix3fv glad_glUniformMatrix3fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv; +#define glUniformMatrix4fv glad_glUniformMatrix4fv +typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC)(GLuint program); +GLAPI PFNGLVALIDATEPROGRAMPROC glad_glValidateProgram; +#define glValidateProgram glad_glValidateProgram +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DPROC)(GLuint index, GLdouble x); +GLAPI PFNGLVERTEXATTRIB1DPROC glad_glVertexAttrib1d; +#define glVertexAttrib1d glad_glVertexAttrib1d +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIB1DVPROC glad_glVertexAttrib1dv; +#define glVertexAttrib1dv glad_glVertexAttrib1dv +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC)(GLuint index, GLfloat x); +GLAPI PFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f; +#define glVertexAttrib1f glad_glVertexAttrib1f +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv; +#define glVertexAttrib1fv glad_glVertexAttrib1fv +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SPROC)(GLuint index, GLshort x); +GLAPI PFNGLVERTEXATTRIB1SPROC glad_glVertexAttrib1s; +#define glVertexAttrib1s glad_glVertexAttrib1s +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB1SVPROC glad_glVertexAttrib1sv; +#define glVertexAttrib1sv glad_glVertexAttrib1sv +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DPROC)(GLuint index, GLdouble x, GLdouble y); +GLAPI PFNGLVERTEXATTRIB2DPROC glad_glVertexAttrib2d; +#define glVertexAttrib2d glad_glVertexAttrib2d +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIB2DVPROC glad_glVertexAttrib2dv; +#define glVertexAttrib2dv glad_glVertexAttrib2dv +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC)(GLuint index, GLfloat x, GLfloat y); +GLAPI PFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f; +#define glVertexAttrib2f glad_glVertexAttrib2f +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv; +#define glVertexAttrib2fv glad_glVertexAttrib2fv +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SPROC)(GLuint index, GLshort x, GLshort y); +GLAPI PFNGLVERTEXATTRIB2SPROC glad_glVertexAttrib2s; +#define glVertexAttrib2s glad_glVertexAttrib2s +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB2SVPROC glad_glVertexAttrib2sv; +#define glVertexAttrib2sv glad_glVertexAttrib2sv +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLVERTEXATTRIB3DPROC glad_glVertexAttrib3d; +#define glVertexAttrib3d glad_glVertexAttrib3d +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIB3DVPROC glad_glVertexAttrib3dv; +#define glVertexAttrib3dv glad_glVertexAttrib3dv +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f; +#define glVertexAttrib3f glad_glVertexAttrib3f +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv; +#define glVertexAttrib3fv glad_glVertexAttrib3fv +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SPROC)(GLuint index, GLshort x, GLshort y, GLshort z); +GLAPI PFNGLVERTEXATTRIB3SPROC glad_glVertexAttrib3s; +#define glVertexAttrib3s glad_glVertexAttrib3s +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB3SVPROC glad_glVertexAttrib3sv; +#define glVertexAttrib3sv glad_glVertexAttrib3sv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVPROC)(GLuint index, const GLbyte *v); +GLAPI PFNGLVERTEXATTRIB4NBVPROC glad_glVertexAttrib4Nbv; +#define glVertexAttrib4Nbv glad_glVertexAttrib4Nbv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIB4NIVPROC glad_glVertexAttrib4Niv; +#define glVertexAttrib4Niv glad_glVertexAttrib4Niv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB4NSVPROC glad_glVertexAttrib4Nsv; +#define glVertexAttrib4Nsv glad_glVertexAttrib4Nsv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBPROC)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +GLAPI PFNGLVERTEXATTRIB4NUBPROC glad_glVertexAttrib4Nub; +#define glVertexAttrib4Nub glad_glVertexAttrib4Nub +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC)(GLuint index, const GLubyte *v); +GLAPI PFNGLVERTEXATTRIB4NUBVPROC glad_glVertexAttrib4Nubv; +#define glVertexAttrib4Nubv glad_glVertexAttrib4Nubv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIB4NUIVPROC glad_glVertexAttrib4Nuiv; +#define glVertexAttrib4Nuiv glad_glVertexAttrib4Nuiv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC)(GLuint index, const GLushort *v); +GLAPI PFNGLVERTEXATTRIB4NUSVPROC glad_glVertexAttrib4Nusv; +#define glVertexAttrib4Nusv glad_glVertexAttrib4Nusv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVPROC)(GLuint index, const GLbyte *v); +GLAPI PFNGLVERTEXATTRIB4BVPROC glad_glVertexAttrib4bv; +#define glVertexAttrib4bv glad_glVertexAttrib4bv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI PFNGLVERTEXATTRIB4DPROC glad_glVertexAttrib4d; +#define glVertexAttrib4d glad_glVertexAttrib4d +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIB4DVPROC glad_glVertexAttrib4dv; +#define glVertexAttrib4dv glad_glVertexAttrib4dv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI PFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f; +#define glVertexAttrib4f glad_glVertexAttrib4f +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv; +#define glVertexAttrib4fv glad_glVertexAttrib4fv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIB4IVPROC glad_glVertexAttrib4iv; +#define glVertexAttrib4iv glad_glVertexAttrib4iv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SPROC)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI PFNGLVERTEXATTRIB4SPROC glad_glVertexAttrib4s; +#define glVertexAttrib4s glad_glVertexAttrib4s +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB4SVPROC glad_glVertexAttrib4sv; +#define glVertexAttrib4sv glad_glVertexAttrib4sv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVPROC)(GLuint index, const GLubyte *v); +GLAPI PFNGLVERTEXATTRIB4UBVPROC glad_glVertexAttrib4ubv; +#define glVertexAttrib4ubv glad_glVertexAttrib4ubv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIB4UIVPROC glad_glVertexAttrib4uiv; +#define glVertexAttrib4uiv glad_glVertexAttrib4uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVPROC)(GLuint index, const GLushort *v); +GLAPI PFNGLVERTEXATTRIB4USVPROC glad_glVertexAttrib4usv; +#define glVertexAttrib4usv glad_glVertexAttrib4usv +typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); +GLAPI PFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer; +#define glVertexAttribPointer glad_glVertexAttribPointer +#endif +#ifndef GL_VERSION_2_1 +#define GL_VERSION_2_1 1 +GLAPI int GLAD_GL_VERSION_2_1; +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX2X3FVPROC glad_glUniformMatrix2x3fv; +#define glUniformMatrix2x3fv glad_glUniformMatrix2x3fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX3X2FVPROC glad_glUniformMatrix3x2fv; +#define glUniformMatrix3x2fv glad_glUniformMatrix3x2fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX2X4FVPROC glad_glUniformMatrix2x4fv; +#define glUniformMatrix2x4fv glad_glUniformMatrix2x4fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX4X2FVPROC glad_glUniformMatrix4x2fv; +#define glUniformMatrix4x2fv glad_glUniformMatrix4x2fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX3X4FVPROC glad_glUniformMatrix3x4fv; +#define glUniformMatrix3x4fv glad_glUniformMatrix3x4fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX4X3FVPROC glad_glUniformMatrix4x3fv; +#define glUniformMatrix4x3fv glad_glUniformMatrix4x3fv +#endif +#ifndef GL_VERSION_3_0 +#define GL_VERSION_3_0 1 +GLAPI int GLAD_GL_VERSION_3_0; +typedef void (APIENTRYP PFNGLCOLORMASKIPROC)(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +GLAPI PFNGLCOLORMASKIPROC glad_glColorMaski; +#define glColorMaski glad_glColorMaski +typedef void (APIENTRYP PFNGLGETBOOLEANI_VPROC)(GLenum target, GLuint index, GLboolean *data); +GLAPI PFNGLGETBOOLEANI_VPROC glad_glGetBooleani_v; +#define glGetBooleani_v glad_glGetBooleani_v +typedef void (APIENTRYP PFNGLGETINTEGERI_VPROC)(GLenum target, GLuint index, GLint *data); +GLAPI PFNGLGETINTEGERI_VPROC glad_glGetIntegeri_v; +#define glGetIntegeri_v glad_glGetIntegeri_v +typedef void (APIENTRYP PFNGLENABLEIPROC)(GLenum target, GLuint index); +GLAPI PFNGLENABLEIPROC glad_glEnablei; +#define glEnablei glad_glEnablei +typedef void (APIENTRYP PFNGLDISABLEIPROC)(GLenum target, GLuint index); +GLAPI PFNGLDISABLEIPROC glad_glDisablei; +#define glDisablei glad_glDisablei +typedef GLboolean (APIENTRYP PFNGLISENABLEDIPROC)(GLenum target, GLuint index); +GLAPI PFNGLISENABLEDIPROC glad_glIsEnabledi; +#define glIsEnabledi glad_glIsEnabledi +typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKPROC)(GLenum primitiveMode); +GLAPI PFNGLBEGINTRANSFORMFEEDBACKPROC glad_glBeginTransformFeedback; +#define glBeginTransformFeedback glad_glBeginTransformFeedback +typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC)(void); +GLAPI PFNGLENDTRANSFORMFEEDBACKPROC glad_glEndTransformFeedback; +#define glEndTransformFeedback glad_glEndTransformFeedback +typedef void (APIENTRYP PFNGLBINDBUFFERRANGEPROC)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI PFNGLBINDBUFFERRANGEPROC glad_glBindBufferRange; +#define glBindBufferRange glad_glBindBufferRange +typedef void (APIENTRYP PFNGLBINDBUFFERBASEPROC)(GLenum target, GLuint index, GLuint buffer); +GLAPI PFNGLBINDBUFFERBASEPROC glad_glBindBufferBase; +#define glBindBufferBase glad_glBindBufferBase +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSPROC)(GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode); +GLAPI PFNGLTRANSFORMFEEDBACKVARYINGSPROC glad_glTransformFeedbackVaryings; +#define glTransformFeedbackVaryings glad_glTransformFeedbackVaryings +typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +GLAPI PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glad_glGetTransformFeedbackVarying; +#define glGetTransformFeedbackVarying glad_glGetTransformFeedbackVarying +typedef void (APIENTRYP PFNGLCLAMPCOLORPROC)(GLenum target, GLenum clamp); +GLAPI PFNGLCLAMPCOLORPROC glad_glClampColor; +#define glClampColor glad_glClampColor +typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERPROC)(GLuint id, GLenum mode); +GLAPI PFNGLBEGINCONDITIONALRENDERPROC glad_glBeginConditionalRender; +#define glBeginConditionalRender glad_glBeginConditionalRender +typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERPROC)(void); +GLAPI PFNGLENDCONDITIONALRENDERPROC glad_glEndConditionalRender; +#define glEndConditionalRender glad_glEndConditionalRender +typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLVERTEXATTRIBIPOINTERPROC glad_glVertexAttribIPointer; +#define glVertexAttribIPointer glad_glVertexAttribIPointer +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVPROC)(GLuint index, GLenum pname, GLint *params); +GLAPI PFNGLGETVERTEXATTRIBIIVPROC glad_glGetVertexAttribIiv; +#define glGetVertexAttribIiv glad_glGetVertexAttribIiv +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVPROC)(GLuint index, GLenum pname, GLuint *params); +GLAPI PFNGLGETVERTEXATTRIBIUIVPROC glad_glGetVertexAttribIuiv; +#define glGetVertexAttribIuiv glad_glGetVertexAttribIuiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IPROC)(GLuint index, GLint x); +GLAPI PFNGLVERTEXATTRIBI1IPROC glad_glVertexAttribI1i; +#define glVertexAttribI1i glad_glVertexAttribI1i +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IPROC)(GLuint index, GLint x, GLint y); +GLAPI PFNGLVERTEXATTRIBI2IPROC glad_glVertexAttribI2i; +#define glVertexAttribI2i glad_glVertexAttribI2i +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IPROC)(GLuint index, GLint x, GLint y, GLint z); +GLAPI PFNGLVERTEXATTRIBI3IPROC glad_glVertexAttribI3i; +#define glVertexAttribI3i glad_glVertexAttribI3i +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IPROC)(GLuint index, GLint x, GLint y, GLint z, GLint w); +GLAPI PFNGLVERTEXATTRIBI4IPROC glad_glVertexAttribI4i; +#define glVertexAttribI4i glad_glVertexAttribI4i +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIPROC)(GLuint index, GLuint x); +GLAPI PFNGLVERTEXATTRIBI1UIPROC glad_glVertexAttribI1ui; +#define glVertexAttribI1ui glad_glVertexAttribI1ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIPROC)(GLuint index, GLuint x, GLuint y); +GLAPI PFNGLVERTEXATTRIBI2UIPROC glad_glVertexAttribI2ui; +#define glVertexAttribI2ui glad_glVertexAttribI2ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z); +GLAPI PFNGLVERTEXATTRIBI3UIPROC glad_glVertexAttribI3ui; +#define glVertexAttribI3ui glad_glVertexAttribI3ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +GLAPI PFNGLVERTEXATTRIBI4UIPROC glad_glVertexAttribI4ui; +#define glVertexAttribI4ui glad_glVertexAttribI4ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIBI1IVPROC glad_glVertexAttribI1iv; +#define glVertexAttribI1iv glad_glVertexAttribI1iv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIBI2IVPROC glad_glVertexAttribI2iv; +#define glVertexAttribI2iv glad_glVertexAttribI2iv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIBI3IVPROC glad_glVertexAttribI3iv; +#define glVertexAttribI3iv glad_glVertexAttribI3iv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIBI4IVPROC glad_glVertexAttribI4iv; +#define glVertexAttribI4iv glad_glVertexAttribI4iv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIBI1UIVPROC glad_glVertexAttribI1uiv; +#define glVertexAttribI1uiv glad_glVertexAttribI1uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIBI2UIVPROC glad_glVertexAttribI2uiv; +#define glVertexAttribI2uiv glad_glVertexAttribI2uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIBI3UIVPROC glad_glVertexAttribI3uiv; +#define glVertexAttribI3uiv glad_glVertexAttribI3uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIBI4UIVPROC glad_glVertexAttribI4uiv; +#define glVertexAttribI4uiv glad_glVertexAttribI4uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVPROC)(GLuint index, const GLbyte *v); +GLAPI PFNGLVERTEXATTRIBI4BVPROC glad_glVertexAttribI4bv; +#define glVertexAttribI4bv glad_glVertexAttribI4bv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIBI4SVPROC glad_glVertexAttribI4sv; +#define glVertexAttribI4sv glad_glVertexAttribI4sv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVPROC)(GLuint index, const GLubyte *v); +GLAPI PFNGLVERTEXATTRIBI4UBVPROC glad_glVertexAttribI4ubv; +#define glVertexAttribI4ubv glad_glVertexAttribI4ubv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVPROC)(GLuint index, const GLushort *v); +GLAPI PFNGLVERTEXATTRIBI4USVPROC glad_glVertexAttribI4usv; +#define glVertexAttribI4usv glad_glVertexAttribI4usv +typedef void (APIENTRYP PFNGLGETUNIFORMUIVPROC)(GLuint program, GLint location, GLuint *params); +GLAPI PFNGLGETUNIFORMUIVPROC glad_glGetUniformuiv; +#define glGetUniformuiv glad_glGetUniformuiv +typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONPROC)(GLuint program, GLuint color, const GLchar *name); +GLAPI PFNGLBINDFRAGDATALOCATIONPROC glad_glBindFragDataLocation; +#define glBindFragDataLocation glad_glBindFragDataLocation +typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONPROC)(GLuint program, const GLchar *name); +GLAPI PFNGLGETFRAGDATALOCATIONPROC glad_glGetFragDataLocation; +#define glGetFragDataLocation glad_glGetFragDataLocation +typedef void (APIENTRYP PFNGLUNIFORM1UIPROC)(GLint location, GLuint v0); +GLAPI PFNGLUNIFORM1UIPROC glad_glUniform1ui; +#define glUniform1ui glad_glUniform1ui +typedef void (APIENTRYP PFNGLUNIFORM2UIPROC)(GLint location, GLuint v0, GLuint v1); +GLAPI PFNGLUNIFORM2UIPROC glad_glUniform2ui; +#define glUniform2ui glad_glUniform2ui +typedef void (APIENTRYP PFNGLUNIFORM3UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2); +GLAPI PFNGLUNIFORM3UIPROC glad_glUniform3ui; +#define glUniform3ui glad_glUniform3ui +typedef void (APIENTRYP PFNGLUNIFORM4UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +GLAPI PFNGLUNIFORM4UIPROC glad_glUniform4ui; +#define glUniform4ui glad_glUniform4ui +typedef void (APIENTRYP PFNGLUNIFORM1UIVPROC)(GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLUNIFORM1UIVPROC glad_glUniform1uiv; +#define glUniform1uiv glad_glUniform1uiv +typedef void (APIENTRYP PFNGLUNIFORM2UIVPROC)(GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLUNIFORM2UIVPROC glad_glUniform2uiv; +#define glUniform2uiv glad_glUniform2uiv +typedef void (APIENTRYP PFNGLUNIFORM3UIVPROC)(GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLUNIFORM3UIVPROC glad_glUniform3uiv; +#define glUniform3uiv glad_glUniform3uiv +typedef void (APIENTRYP PFNGLUNIFORM4UIVPROC)(GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLUNIFORM4UIVPROC glad_glUniform4uiv; +#define glUniform4uiv glad_glUniform4uiv +typedef void (APIENTRYP PFNGLTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLTEXPARAMETERIIVPROC glad_glTexParameterIiv; +#define glTexParameterIiv glad_glTexParameterIiv +typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, const GLuint *params); +GLAPI PFNGLTEXPARAMETERIUIVPROC glad_glTexParameterIuiv; +#define glTexParameterIuiv glad_glTexParameterIuiv +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETTEXPARAMETERIIVPROC glad_glGetTexParameterIiv; +#define glGetTexParameterIiv glad_glGetTexParameterIiv +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, GLuint *params); +GLAPI PFNGLGETTEXPARAMETERIUIVPROC glad_glGetTexParameterIuiv; +#define glGetTexParameterIuiv glad_glGetTexParameterIuiv +typedef void (APIENTRYP PFNGLCLEARBUFFERIVPROC)(GLenum buffer, GLint drawbuffer, const GLint *value); +GLAPI PFNGLCLEARBUFFERIVPROC glad_glClearBufferiv; +#define glClearBufferiv glad_glClearBufferiv +typedef void (APIENTRYP PFNGLCLEARBUFFERUIVPROC)(GLenum buffer, GLint drawbuffer, const GLuint *value); +GLAPI PFNGLCLEARBUFFERUIVPROC glad_glClearBufferuiv; +#define glClearBufferuiv glad_glClearBufferuiv +typedef void (APIENTRYP PFNGLCLEARBUFFERFVPROC)(GLenum buffer, GLint drawbuffer, const GLfloat *value); +GLAPI PFNGLCLEARBUFFERFVPROC glad_glClearBufferfv; +#define glClearBufferfv glad_glClearBufferfv +typedef void (APIENTRYP PFNGLCLEARBUFFERFIPROC)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); +GLAPI PFNGLCLEARBUFFERFIPROC glad_glClearBufferfi; +#define glClearBufferfi glad_glClearBufferfi +typedef const GLubyte * (APIENTRYP PFNGLGETSTRINGIPROC)(GLenum name, GLuint index); +GLAPI PFNGLGETSTRINGIPROC glad_glGetStringi; +#define glGetStringi glad_glGetStringi +typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFERPROC)(GLuint renderbuffer); +GLAPI PFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer; +#define glIsRenderbuffer glad_glIsRenderbuffer +typedef void (APIENTRYP PFNGLBINDRENDERBUFFERPROC)(GLenum target, GLuint renderbuffer); +GLAPI PFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer; +#define glBindRenderbuffer glad_glBindRenderbuffer +typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSPROC)(GLsizei n, const GLuint *renderbuffers); +GLAPI PFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers; +#define glDeleteRenderbuffers glad_glDeleteRenderbuffers +typedef void (APIENTRYP PFNGLGENRENDERBUFFERSPROC)(GLsizei n, GLuint *renderbuffers); +GLAPI PFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers; +#define glGenRenderbuffers glad_glGenRenderbuffers +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI PFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage; +#define glRenderbufferStorage glad_glRenderbufferStorage +typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv; +#define glGetRenderbufferParameteriv glad_glGetRenderbufferParameteriv +typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFERPROC)(GLuint framebuffer); +GLAPI PFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer; +#define glIsFramebuffer glad_glIsFramebuffer +typedef void (APIENTRYP PFNGLBINDFRAMEBUFFERPROC)(GLenum target, GLuint framebuffer); +GLAPI PFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer; +#define glBindFramebuffer glad_glBindFramebuffer +typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC)(GLsizei n, const GLuint *framebuffers); +GLAPI PFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers; +#define glDeleteFramebuffers glad_glDeleteFramebuffers +typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSPROC)(GLsizei n, GLuint *framebuffers); +GLAPI PFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers; +#define glGenFramebuffers glad_glGenFramebuffers +typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC)(GLenum target); +GLAPI PFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus; +#define glCheckFramebufferStatus glad_glCheckFramebufferStatus +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GLAPI PFNGLFRAMEBUFFERTEXTURE1DPROC glad_glFramebufferTexture1D; +#define glFramebufferTexture1D glad_glFramebufferTexture1D +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GLAPI PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D; +#define glFramebufferTexture2D glad_glFramebufferTexture2D +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +GLAPI PFNGLFRAMEBUFFERTEXTURE3DPROC glad_glFramebufferTexture3D; +#define glFramebufferTexture3D glad_glFramebufferTexture3D +typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GLAPI PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer; +#define glFramebufferRenderbuffer glad_glFramebufferRenderbuffer +typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLenum target, GLenum attachment, GLenum pname, GLint *params); +GLAPI PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv; +#define glGetFramebufferAttachmentParameteriv glad_glGetFramebufferAttachmentParameteriv +typedef void (APIENTRYP PFNGLGENERATEMIPMAPPROC)(GLenum target); +GLAPI PFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap; +#define glGenerateMipmap glad_glGenerateMipmap +typedef void (APIENTRYP PFNGLBLITFRAMEBUFFERPROC)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +GLAPI PFNGLBLITFRAMEBUFFERPROC glad_glBlitFramebuffer; +#define glBlitFramebuffer glad_glBlitFramebuffer +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glRenderbufferStorageMultisample; +#define glRenderbufferStorageMultisample glad_glRenderbufferStorageMultisample +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +GLAPI PFNGLFRAMEBUFFERTEXTURELAYERPROC glad_glFramebufferTextureLayer; +#define glFramebufferTextureLayer glad_glFramebufferTextureLayer +typedef void * (APIENTRYP PFNGLMAPBUFFERRANGEPROC)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +GLAPI PFNGLMAPBUFFERRANGEPROC glad_glMapBufferRange; +#define glMapBufferRange glad_glMapBufferRange +typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC)(GLenum target, GLintptr offset, GLsizeiptr length); +GLAPI PFNGLFLUSHMAPPEDBUFFERRANGEPROC glad_glFlushMappedBufferRange; +#define glFlushMappedBufferRange glad_glFlushMappedBufferRange +typedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC)(GLuint array); +GLAPI PFNGLBINDVERTEXARRAYPROC glad_glBindVertexArray; +#define glBindVertexArray glad_glBindVertexArray +typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC)(GLsizei n, const GLuint *arrays); +GLAPI PFNGLDELETEVERTEXARRAYSPROC glad_glDeleteVertexArrays; +#define glDeleteVertexArrays glad_glDeleteVertexArrays +typedef void (APIENTRYP PFNGLGENVERTEXARRAYSPROC)(GLsizei n, GLuint *arrays); +GLAPI PFNGLGENVERTEXARRAYSPROC glad_glGenVertexArrays; +#define glGenVertexArrays glad_glGenVertexArrays +typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYPROC)(GLuint array); +GLAPI PFNGLISVERTEXARRAYPROC glad_glIsVertexArray; +#define glIsVertexArray glad_glIsVertexArray +#endif +#ifndef GL_VERSION_3_1 +#define GL_VERSION_3_1 1 +GLAPI int GLAD_GL_VERSION_3_1; +typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); +GLAPI PFNGLDRAWARRAYSINSTANCEDPROC glad_glDrawArraysInstanced; +#define glDrawArraysInstanced glad_glDrawArraysInstanced +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount); +GLAPI PFNGLDRAWELEMENTSINSTANCEDPROC glad_glDrawElementsInstanced; +#define glDrawElementsInstanced glad_glDrawElementsInstanced +typedef void (APIENTRYP PFNGLTEXBUFFERPROC)(GLenum target, GLenum internalformat, GLuint buffer); +GLAPI PFNGLTEXBUFFERPROC glad_glTexBuffer; +#define glTexBuffer glad_glTexBuffer +typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC)(GLuint index); +GLAPI PFNGLPRIMITIVERESTARTINDEXPROC glad_glPrimitiveRestartIndex; +#define glPrimitiveRestartIndex glad_glPrimitiveRestartIndex +typedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +GLAPI PFNGLCOPYBUFFERSUBDATAPROC glad_glCopyBufferSubData; +#define glCopyBufferSubData glad_glCopyBufferSubData +typedef void (APIENTRYP PFNGLGETUNIFORMINDICESPROC)(GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices); +GLAPI PFNGLGETUNIFORMINDICESPROC glad_glGetUniformIndices; +#define glGetUniformIndices glad_glGetUniformIndices +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC)(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); +GLAPI PFNGLGETACTIVEUNIFORMSIVPROC glad_glGetActiveUniformsiv; +#define glGetActiveUniformsiv glad_glGetActiveUniformsiv +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMNAMEPROC)(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); +GLAPI PFNGLGETACTIVEUNIFORMNAMEPROC glad_glGetActiveUniformName; +#define glGetActiveUniformName glad_glGetActiveUniformName +typedef GLuint (APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC)(GLuint program, const GLchar *uniformBlockName); +GLAPI PFNGLGETUNIFORMBLOCKINDEXPROC glad_glGetUniformBlockIndex; +#define glGetUniformBlockIndex glad_glGetUniformBlockIndex +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC)(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); +GLAPI PFNGLGETACTIVEUNIFORMBLOCKIVPROC glad_glGetActiveUniformBlockiv; +#define glGetActiveUniformBlockiv glad_glGetActiveUniformBlockiv +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); +GLAPI PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glad_glGetActiveUniformBlockName; +#define glGetActiveUniformBlockName glad_glGetActiveUniformBlockName +typedef void (APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC)(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); +GLAPI PFNGLUNIFORMBLOCKBINDINGPROC glad_glUniformBlockBinding; +#define glUniformBlockBinding glad_glUniformBlockBinding +#endif +#ifndef GL_VERSION_3_2 +#define GL_VERSION_3_2 1 +GLAPI int GLAD_GL_VERSION_3_2; +typedef void (APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GLAPI PFNGLDRAWELEMENTSBASEVERTEXPROC glad_glDrawElementsBaseVertex; +#define glDrawElementsBaseVertex glad_glDrawElementsBaseVertex +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GLAPI PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glad_glDrawRangeElementsBaseVertex; +#define glDrawRangeElementsBaseVertex glad_glDrawRangeElementsBaseVertex +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +GLAPI PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glad_glDrawElementsInstancedBaseVertex; +#define glDrawElementsInstancedBaseVertex glad_glDrawElementsInstancedBaseVertex +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)(GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex); +GLAPI PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glad_glMultiDrawElementsBaseVertex; +#define glMultiDrawElementsBaseVertex glad_glMultiDrawElementsBaseVertex +typedef void (APIENTRYP PFNGLPROVOKINGVERTEXPROC)(GLenum mode); +GLAPI PFNGLPROVOKINGVERTEXPROC glad_glProvokingVertex; +#define glProvokingVertex glad_glProvokingVertex +typedef GLsync (APIENTRYP PFNGLFENCESYNCPROC)(GLenum condition, GLbitfield flags); +GLAPI PFNGLFENCESYNCPROC glad_glFenceSync; +#define glFenceSync glad_glFenceSync +typedef GLboolean (APIENTRYP PFNGLISSYNCPROC)(GLsync sync); +GLAPI PFNGLISSYNCPROC glad_glIsSync; +#define glIsSync glad_glIsSync +typedef void (APIENTRYP PFNGLDELETESYNCPROC)(GLsync sync); +GLAPI PFNGLDELETESYNCPROC glad_glDeleteSync; +#define glDeleteSync glad_glDeleteSync +typedef GLenum (APIENTRYP PFNGLCLIENTWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout); +GLAPI PFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync; +#define glClientWaitSync glad_glClientWaitSync +typedef void (APIENTRYP PFNGLWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout); +GLAPI PFNGLWAITSYNCPROC glad_glWaitSync; +#define glWaitSync glad_glWaitSync +typedef void (APIENTRYP PFNGLGETINTEGER64VPROC)(GLenum pname, GLint64 *data); +GLAPI PFNGLGETINTEGER64VPROC glad_glGetInteger64v; +#define glGetInteger64v glad_glGetInteger64v +typedef void (APIENTRYP PFNGLGETSYNCIVPROC)(GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values); +GLAPI PFNGLGETSYNCIVPROC glad_glGetSynciv; +#define glGetSynciv glad_glGetSynciv +typedef void (APIENTRYP PFNGLGETINTEGER64I_VPROC)(GLenum target, GLuint index, GLint64 *data); +GLAPI PFNGLGETINTEGER64I_VPROC glad_glGetInteger64i_v; +#define glGetInteger64i_v glad_glGetInteger64i_v +typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC)(GLenum target, GLenum pname, GLint64 *params); +GLAPI PFNGLGETBUFFERPARAMETERI64VPROC glad_glGetBufferParameteri64v; +#define glGetBufferParameteri64v glad_glGetBufferParameteri64v +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level); +GLAPI PFNGLFRAMEBUFFERTEXTUREPROC glad_glFramebufferTexture; +#define glFramebufferTexture glad_glFramebufferTexture +typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +GLAPI PFNGLTEXIMAGE2DMULTISAMPLEPROC glad_glTexImage2DMultisample; +#define glTexImage2DMultisample glad_glTexImage2DMultisample +typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +GLAPI PFNGLTEXIMAGE3DMULTISAMPLEPROC glad_glTexImage3DMultisample; +#define glTexImage3DMultisample glad_glTexImage3DMultisample +typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVPROC)(GLenum pname, GLuint index, GLfloat *val); +GLAPI PFNGLGETMULTISAMPLEFVPROC glad_glGetMultisamplefv; +#define glGetMultisamplefv glad_glGetMultisamplefv +typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC)(GLuint maskNumber, GLbitfield mask); +GLAPI PFNGLSAMPLEMASKIPROC glad_glSampleMaski; +#define glSampleMaski glad_glSampleMaski +#endif +#ifndef GL_VERSION_3_3 +#define GL_VERSION_3_3 1 +GLAPI int GLAD_GL_VERSION_3_3; +typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); +GLAPI PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glad_glBindFragDataLocationIndexed; +#define glBindFragDataLocationIndexed glad_glBindFragDataLocationIndexed +typedef GLint (APIENTRYP PFNGLGETFRAGDATAINDEXPROC)(GLuint program, const GLchar *name); +GLAPI PFNGLGETFRAGDATAINDEXPROC glad_glGetFragDataIndex; +#define glGetFragDataIndex glad_glGetFragDataIndex +typedef void (APIENTRYP PFNGLGENSAMPLERSPROC)(GLsizei count, GLuint *samplers); +GLAPI PFNGLGENSAMPLERSPROC glad_glGenSamplers; +#define glGenSamplers glad_glGenSamplers +typedef void (APIENTRYP PFNGLDELETESAMPLERSPROC)(GLsizei count, const GLuint *samplers); +GLAPI PFNGLDELETESAMPLERSPROC glad_glDeleteSamplers; +#define glDeleteSamplers glad_glDeleteSamplers +typedef GLboolean (APIENTRYP PFNGLISSAMPLERPROC)(GLuint sampler); +GLAPI PFNGLISSAMPLERPROC glad_glIsSampler; +#define glIsSampler glad_glIsSampler +typedef void (APIENTRYP PFNGLBINDSAMPLERPROC)(GLuint unit, GLuint sampler); +GLAPI PFNGLBINDSAMPLERPROC glad_glBindSampler; +#define glBindSampler glad_glBindSampler +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIPROC)(GLuint sampler, GLenum pname, GLint param); +GLAPI PFNGLSAMPLERPARAMETERIPROC glad_glSamplerParameteri; +#define glSamplerParameteri glad_glSamplerParameteri +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, const GLint *param); +GLAPI PFNGLSAMPLERPARAMETERIVPROC glad_glSamplerParameteriv; +#define glSamplerParameteriv glad_glSamplerParameteriv +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFPROC)(GLuint sampler, GLenum pname, GLfloat param); +GLAPI PFNGLSAMPLERPARAMETERFPROC glad_glSamplerParameterf; +#define glSamplerParameterf glad_glSamplerParameterf +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, const GLfloat *param); +GLAPI PFNGLSAMPLERPARAMETERFVPROC glad_glSamplerParameterfv; +#define glSamplerParameterfv glad_glSamplerParameterfv +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIIVPROC)(GLuint sampler, GLenum pname, const GLint *param); +GLAPI PFNGLSAMPLERPARAMETERIIVPROC glad_glSamplerParameterIiv; +#define glSamplerParameterIiv glad_glSamplerParameterIiv +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIUIVPROC)(GLuint sampler, GLenum pname, const GLuint *param); +GLAPI PFNGLSAMPLERPARAMETERIUIVPROC glad_glSamplerParameterIuiv; +#define glSamplerParameterIuiv glad_glSamplerParameterIuiv +typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, GLint *params); +GLAPI PFNGLGETSAMPLERPARAMETERIVPROC glad_glGetSamplerParameteriv; +#define glGetSamplerParameteriv glad_glGetSamplerParameteriv +typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIIVPROC)(GLuint sampler, GLenum pname, GLint *params); +GLAPI PFNGLGETSAMPLERPARAMETERIIVPROC glad_glGetSamplerParameterIiv; +#define glGetSamplerParameterIiv glad_glGetSamplerParameterIiv +typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, GLfloat *params); +GLAPI PFNGLGETSAMPLERPARAMETERFVPROC glad_glGetSamplerParameterfv; +#define glGetSamplerParameterfv glad_glGetSamplerParameterfv +typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVPROC)(GLuint sampler, GLenum pname, GLuint *params); +GLAPI PFNGLGETSAMPLERPARAMETERIUIVPROC glad_glGetSamplerParameterIuiv; +#define glGetSamplerParameterIuiv glad_glGetSamplerParameterIuiv +typedef void (APIENTRYP PFNGLQUERYCOUNTERPROC)(GLuint id, GLenum target); +GLAPI PFNGLQUERYCOUNTERPROC glad_glQueryCounter; +#define glQueryCounter glad_glQueryCounter +typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VPROC)(GLuint id, GLenum pname, GLint64 *params); +GLAPI PFNGLGETQUERYOBJECTI64VPROC glad_glGetQueryObjecti64v; +#define glGetQueryObjecti64v glad_glGetQueryObjecti64v +typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VPROC)(GLuint id, GLenum pname, GLuint64 *params); +GLAPI PFNGLGETQUERYOBJECTUI64VPROC glad_glGetQueryObjectui64v; +#define glGetQueryObjectui64v glad_glGetQueryObjectui64v +typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORPROC)(GLuint index, GLuint divisor); +GLAPI PFNGLVERTEXATTRIBDIVISORPROC glad_glVertexAttribDivisor; +#define glVertexAttribDivisor glad_glVertexAttribDivisor +typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); +GLAPI PFNGLVERTEXATTRIBP1UIPROC glad_glVertexAttribP1ui; +#define glVertexAttribP1ui glad_glVertexAttribP1ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +GLAPI PFNGLVERTEXATTRIBP1UIVPROC glad_glVertexAttribP1uiv; +#define glVertexAttribP1uiv glad_glVertexAttribP1uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); +GLAPI PFNGLVERTEXATTRIBP2UIPROC glad_glVertexAttribP2ui; +#define glVertexAttribP2ui glad_glVertexAttribP2ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +GLAPI PFNGLVERTEXATTRIBP2UIVPROC glad_glVertexAttribP2uiv; +#define glVertexAttribP2uiv glad_glVertexAttribP2uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); +GLAPI PFNGLVERTEXATTRIBP3UIPROC glad_glVertexAttribP3ui; +#define glVertexAttribP3ui glad_glVertexAttribP3ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +GLAPI PFNGLVERTEXATTRIBP3UIVPROC glad_glVertexAttribP3uiv; +#define glVertexAttribP3uiv glad_glVertexAttribP3uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); +GLAPI PFNGLVERTEXATTRIBP4UIPROC glad_glVertexAttribP4ui; +#define glVertexAttribP4ui glad_glVertexAttribP4ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +GLAPI PFNGLVERTEXATTRIBP4UIVPROC glad_glVertexAttribP4uiv; +#define glVertexAttribP4uiv glad_glVertexAttribP4uiv +typedef void (APIENTRYP PFNGLVERTEXP2UIPROC)(GLenum type, GLuint value); +GLAPI PFNGLVERTEXP2UIPROC glad_glVertexP2ui; +#define glVertexP2ui glad_glVertexP2ui +typedef void (APIENTRYP PFNGLVERTEXP2UIVPROC)(GLenum type, const GLuint *value); +GLAPI PFNGLVERTEXP2UIVPROC glad_glVertexP2uiv; +#define glVertexP2uiv glad_glVertexP2uiv +typedef void (APIENTRYP PFNGLVERTEXP3UIPROC)(GLenum type, GLuint value); +GLAPI PFNGLVERTEXP3UIPROC glad_glVertexP3ui; +#define glVertexP3ui glad_glVertexP3ui +typedef void (APIENTRYP PFNGLVERTEXP3UIVPROC)(GLenum type, const GLuint *value); +GLAPI PFNGLVERTEXP3UIVPROC glad_glVertexP3uiv; +#define glVertexP3uiv glad_glVertexP3uiv +typedef void (APIENTRYP PFNGLVERTEXP4UIPROC)(GLenum type, GLuint value); +GLAPI PFNGLVERTEXP4UIPROC glad_glVertexP4ui; +#define glVertexP4ui glad_glVertexP4ui +typedef void (APIENTRYP PFNGLVERTEXP4UIVPROC)(GLenum type, const GLuint *value); +GLAPI PFNGLVERTEXP4UIVPROC glad_glVertexP4uiv; +#define glVertexP4uiv glad_glVertexP4uiv +typedef void (APIENTRYP PFNGLTEXCOORDP1UIPROC)(GLenum type, GLuint coords); +GLAPI PFNGLTEXCOORDP1UIPROC glad_glTexCoordP1ui; +#define glTexCoordP1ui glad_glTexCoordP1ui +typedef void (APIENTRYP PFNGLTEXCOORDP1UIVPROC)(GLenum type, const GLuint *coords); +GLAPI PFNGLTEXCOORDP1UIVPROC glad_glTexCoordP1uiv; +#define glTexCoordP1uiv glad_glTexCoordP1uiv +typedef void (APIENTRYP PFNGLTEXCOORDP2UIPROC)(GLenum type, GLuint coords); +GLAPI PFNGLTEXCOORDP2UIPROC glad_glTexCoordP2ui; +#define glTexCoordP2ui glad_glTexCoordP2ui +typedef void (APIENTRYP PFNGLTEXCOORDP2UIVPROC)(GLenum type, const GLuint *coords); +GLAPI PFNGLTEXCOORDP2UIVPROC glad_glTexCoordP2uiv; +#define glTexCoordP2uiv glad_glTexCoordP2uiv +typedef void (APIENTRYP PFNGLTEXCOORDP3UIPROC)(GLenum type, GLuint coords); +GLAPI PFNGLTEXCOORDP3UIPROC glad_glTexCoordP3ui; +#define glTexCoordP3ui glad_glTexCoordP3ui +typedef void (APIENTRYP PFNGLTEXCOORDP3UIVPROC)(GLenum type, const GLuint *coords); +GLAPI PFNGLTEXCOORDP3UIVPROC glad_glTexCoordP3uiv; +#define glTexCoordP3uiv glad_glTexCoordP3uiv +typedef void (APIENTRYP PFNGLTEXCOORDP4UIPROC)(GLenum type, GLuint coords); +GLAPI PFNGLTEXCOORDP4UIPROC glad_glTexCoordP4ui; +#define glTexCoordP4ui glad_glTexCoordP4ui +typedef void (APIENTRYP PFNGLTEXCOORDP4UIVPROC)(GLenum type, const GLuint *coords); +GLAPI PFNGLTEXCOORDP4UIVPROC glad_glTexCoordP4uiv; +#define glTexCoordP4uiv glad_glTexCoordP4uiv +typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIPROC)(GLenum texture, GLenum type, GLuint coords); +GLAPI PFNGLMULTITEXCOORDP1UIPROC glad_glMultiTexCoordP1ui; +#define glMultiTexCoordP1ui glad_glMultiTexCoordP1ui +typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIVPROC)(GLenum texture, GLenum type, const GLuint *coords); +GLAPI PFNGLMULTITEXCOORDP1UIVPROC glad_glMultiTexCoordP1uiv; +#define glMultiTexCoordP1uiv glad_glMultiTexCoordP1uiv +typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIPROC)(GLenum texture, GLenum type, GLuint coords); +GLAPI PFNGLMULTITEXCOORDP2UIPROC glad_glMultiTexCoordP2ui; +#define glMultiTexCoordP2ui glad_glMultiTexCoordP2ui +typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIVPROC)(GLenum texture, GLenum type, const GLuint *coords); +GLAPI PFNGLMULTITEXCOORDP2UIVPROC glad_glMultiTexCoordP2uiv; +#define glMultiTexCoordP2uiv glad_glMultiTexCoordP2uiv +typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIPROC)(GLenum texture, GLenum type, GLuint coords); +GLAPI PFNGLMULTITEXCOORDP3UIPROC glad_glMultiTexCoordP3ui; +#define glMultiTexCoordP3ui glad_glMultiTexCoordP3ui +typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIVPROC)(GLenum texture, GLenum type, const GLuint *coords); +GLAPI PFNGLMULTITEXCOORDP3UIVPROC glad_glMultiTexCoordP3uiv; +#define glMultiTexCoordP3uiv glad_glMultiTexCoordP3uiv +typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIPROC)(GLenum texture, GLenum type, GLuint coords); +GLAPI PFNGLMULTITEXCOORDP4UIPROC glad_glMultiTexCoordP4ui; +#define glMultiTexCoordP4ui glad_glMultiTexCoordP4ui +typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIVPROC)(GLenum texture, GLenum type, const GLuint *coords); +GLAPI PFNGLMULTITEXCOORDP4UIVPROC glad_glMultiTexCoordP4uiv; +#define glMultiTexCoordP4uiv glad_glMultiTexCoordP4uiv +typedef void (APIENTRYP PFNGLNORMALP3UIPROC)(GLenum type, GLuint coords); +GLAPI PFNGLNORMALP3UIPROC glad_glNormalP3ui; +#define glNormalP3ui glad_glNormalP3ui +typedef void (APIENTRYP PFNGLNORMALP3UIVPROC)(GLenum type, const GLuint *coords); +GLAPI PFNGLNORMALP3UIVPROC glad_glNormalP3uiv; +#define glNormalP3uiv glad_glNormalP3uiv +typedef void (APIENTRYP PFNGLCOLORP3UIPROC)(GLenum type, GLuint color); +GLAPI PFNGLCOLORP3UIPROC glad_glColorP3ui; +#define glColorP3ui glad_glColorP3ui +typedef void (APIENTRYP PFNGLCOLORP3UIVPROC)(GLenum type, const GLuint *color); +GLAPI PFNGLCOLORP3UIVPROC glad_glColorP3uiv; +#define glColorP3uiv glad_glColorP3uiv +typedef void (APIENTRYP PFNGLCOLORP4UIPROC)(GLenum type, GLuint color); +GLAPI PFNGLCOLORP4UIPROC glad_glColorP4ui; +#define glColorP4ui glad_glColorP4ui +typedef void (APIENTRYP PFNGLCOLORP4UIVPROC)(GLenum type, const GLuint *color); +GLAPI PFNGLCOLORP4UIVPROC glad_glColorP4uiv; +#define glColorP4uiv glad_glColorP4uiv +typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIPROC)(GLenum type, GLuint color); +GLAPI PFNGLSECONDARYCOLORP3UIPROC glad_glSecondaryColorP3ui; +#define glSecondaryColorP3ui glad_glSecondaryColorP3ui +typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIVPROC)(GLenum type, const GLuint *color); +GLAPI PFNGLSECONDARYCOLORP3UIVPROC glad_glSecondaryColorP3uiv; +#define glSecondaryColorP3uiv glad_glSecondaryColorP3uiv +#endif +#ifndef GL_VERSION_4_0 +#define GL_VERSION_4_0 1 +GLAPI int GLAD_GL_VERSION_4_0; +typedef void (APIENTRYP PFNGLMINSAMPLESHADINGPROC)(GLfloat value); +GLAPI PFNGLMINSAMPLESHADINGPROC glad_glMinSampleShading; +#define glMinSampleShading glad_glMinSampleShading +typedef void (APIENTRYP PFNGLBLENDEQUATIONIPROC)(GLuint buf, GLenum mode); +GLAPI PFNGLBLENDEQUATIONIPROC glad_glBlendEquationi; +#define glBlendEquationi glad_glBlendEquationi +typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIPROC)(GLuint buf, GLenum modeRGB, GLenum modeAlpha); +GLAPI PFNGLBLENDEQUATIONSEPARATEIPROC glad_glBlendEquationSeparatei; +#define glBlendEquationSeparatei glad_glBlendEquationSeparatei +typedef void (APIENTRYP PFNGLBLENDFUNCIPROC)(GLuint buf, GLenum src, GLenum dst); +GLAPI PFNGLBLENDFUNCIPROC glad_glBlendFunci; +#define glBlendFunci glad_glBlendFunci +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIPROC)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +GLAPI PFNGLBLENDFUNCSEPARATEIPROC glad_glBlendFuncSeparatei; +#define glBlendFuncSeparatei glad_glBlendFuncSeparatei +typedef void (APIENTRYP PFNGLDRAWARRAYSINDIRECTPROC)(GLenum mode, const void *indirect); +GLAPI PFNGLDRAWARRAYSINDIRECTPROC glad_glDrawArraysIndirect; +#define glDrawArraysIndirect glad_glDrawArraysIndirect +typedef void (APIENTRYP PFNGLDRAWELEMENTSINDIRECTPROC)(GLenum mode, GLenum type, const void *indirect); +GLAPI PFNGLDRAWELEMENTSINDIRECTPROC glad_glDrawElementsIndirect; +#define glDrawElementsIndirect glad_glDrawElementsIndirect +typedef void (APIENTRYP PFNGLUNIFORM1DPROC)(GLint location, GLdouble x); +GLAPI PFNGLUNIFORM1DPROC glad_glUniform1d; +#define glUniform1d glad_glUniform1d +typedef void (APIENTRYP PFNGLUNIFORM2DPROC)(GLint location, GLdouble x, GLdouble y); +GLAPI PFNGLUNIFORM2DPROC glad_glUniform2d; +#define glUniform2d glad_glUniform2d +typedef void (APIENTRYP PFNGLUNIFORM3DPROC)(GLint location, GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLUNIFORM3DPROC glad_glUniform3d; +#define glUniform3d glad_glUniform3d +typedef void (APIENTRYP PFNGLUNIFORM4DPROC)(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI PFNGLUNIFORM4DPROC glad_glUniform4d; +#define glUniform4d glad_glUniform4d +typedef void (APIENTRYP PFNGLUNIFORM1DVPROC)(GLint location, GLsizei count, const GLdouble *value); +GLAPI PFNGLUNIFORM1DVPROC glad_glUniform1dv; +#define glUniform1dv glad_glUniform1dv +typedef void (APIENTRYP PFNGLUNIFORM2DVPROC)(GLint location, GLsizei count, const GLdouble *value); +GLAPI PFNGLUNIFORM2DVPROC glad_glUniform2dv; +#define glUniform2dv glad_glUniform2dv +typedef void (APIENTRYP PFNGLUNIFORM3DVPROC)(GLint location, GLsizei count, const GLdouble *value); +GLAPI PFNGLUNIFORM3DVPROC glad_glUniform3dv; +#define glUniform3dv glad_glUniform3dv +typedef void (APIENTRYP PFNGLUNIFORM4DVPROC)(GLint location, GLsizei count, const GLdouble *value); +GLAPI PFNGLUNIFORM4DVPROC glad_glUniform4dv; +#define glUniform4dv glad_glUniform4dv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLUNIFORMMATRIX2DVPROC glad_glUniformMatrix2dv; +#define glUniformMatrix2dv glad_glUniformMatrix2dv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLUNIFORMMATRIX3DVPROC glad_glUniformMatrix3dv; +#define glUniformMatrix3dv glad_glUniformMatrix3dv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLUNIFORMMATRIX4DVPROC glad_glUniformMatrix4dv; +#define glUniformMatrix4dv glad_glUniformMatrix4dv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLUNIFORMMATRIX2X3DVPROC glad_glUniformMatrix2x3dv; +#define glUniformMatrix2x3dv glad_glUniformMatrix2x3dv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLUNIFORMMATRIX2X4DVPROC glad_glUniformMatrix2x4dv; +#define glUniformMatrix2x4dv glad_glUniformMatrix2x4dv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLUNIFORMMATRIX3X2DVPROC glad_glUniformMatrix3x2dv; +#define glUniformMatrix3x2dv glad_glUniformMatrix3x2dv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLUNIFORMMATRIX3X4DVPROC glad_glUniformMatrix3x4dv; +#define glUniformMatrix3x4dv glad_glUniformMatrix3x4dv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLUNIFORMMATRIX4X2DVPROC glad_glUniformMatrix4x2dv; +#define glUniformMatrix4x2dv glad_glUniformMatrix4x2dv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLUNIFORMMATRIX4X3DVPROC glad_glUniformMatrix4x3dv; +#define glUniformMatrix4x3dv glad_glUniformMatrix4x3dv +typedef void (APIENTRYP PFNGLGETUNIFORMDVPROC)(GLuint program, GLint location, GLdouble *params); +GLAPI PFNGLGETUNIFORMDVPROC glad_glGetUniformdv; +#define glGetUniformdv glad_glGetUniformdv +typedef GLint (APIENTRYP PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC)(GLuint program, GLenum shadertype, const GLchar *name); +GLAPI PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC glad_glGetSubroutineUniformLocation; +#define glGetSubroutineUniformLocation glad_glGetSubroutineUniformLocation +typedef GLuint (APIENTRYP PFNGLGETSUBROUTINEINDEXPROC)(GLuint program, GLenum shadertype, const GLchar *name); +GLAPI PFNGLGETSUBROUTINEINDEXPROC glad_glGetSubroutineIndex; +#define glGetSubroutineIndex glad_glGetSubroutineIndex +typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC)(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values); +GLAPI PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC glad_glGetActiveSubroutineUniformiv; +#define glGetActiveSubroutineUniformiv glad_glGetActiveSubroutineUniformiv +typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC)(GLuint program, GLenum shadertype, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); +GLAPI PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC glad_glGetActiveSubroutineUniformName; +#define glGetActiveSubroutineUniformName glad_glGetActiveSubroutineUniformName +typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINENAMEPROC)(GLuint program, GLenum shadertype, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); +GLAPI PFNGLGETACTIVESUBROUTINENAMEPROC glad_glGetActiveSubroutineName; +#define glGetActiveSubroutineName glad_glGetActiveSubroutineName +typedef void (APIENTRYP PFNGLUNIFORMSUBROUTINESUIVPROC)(GLenum shadertype, GLsizei count, const GLuint *indices); +GLAPI PFNGLUNIFORMSUBROUTINESUIVPROC glad_glUniformSubroutinesuiv; +#define glUniformSubroutinesuiv glad_glUniformSubroutinesuiv +typedef void (APIENTRYP PFNGLGETUNIFORMSUBROUTINEUIVPROC)(GLenum shadertype, GLint location, GLuint *params); +GLAPI PFNGLGETUNIFORMSUBROUTINEUIVPROC glad_glGetUniformSubroutineuiv; +#define glGetUniformSubroutineuiv glad_glGetUniformSubroutineuiv +typedef void (APIENTRYP PFNGLGETPROGRAMSTAGEIVPROC)(GLuint program, GLenum shadertype, GLenum pname, GLint *values); +GLAPI PFNGLGETPROGRAMSTAGEIVPROC glad_glGetProgramStageiv; +#define glGetProgramStageiv glad_glGetProgramStageiv +typedef void (APIENTRYP PFNGLPATCHPARAMETERIPROC)(GLenum pname, GLint value); +GLAPI PFNGLPATCHPARAMETERIPROC glad_glPatchParameteri; +#define glPatchParameteri glad_glPatchParameteri +typedef void (APIENTRYP PFNGLPATCHPARAMETERFVPROC)(GLenum pname, const GLfloat *values); +GLAPI PFNGLPATCHPARAMETERFVPROC glad_glPatchParameterfv; +#define glPatchParameterfv glad_glPatchParameterfv +typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKPROC)(GLenum target, GLuint id); +GLAPI PFNGLBINDTRANSFORMFEEDBACKPROC glad_glBindTransformFeedback; +#define glBindTransformFeedback glad_glBindTransformFeedback +typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSPROC)(GLsizei n, const GLuint *ids); +GLAPI PFNGLDELETETRANSFORMFEEDBACKSPROC glad_glDeleteTransformFeedbacks; +#define glDeleteTransformFeedbacks glad_glDeleteTransformFeedbacks +typedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSPROC)(GLsizei n, GLuint *ids); +GLAPI PFNGLGENTRANSFORMFEEDBACKSPROC glad_glGenTransformFeedbacks; +#define glGenTransformFeedbacks glad_glGenTransformFeedbacks +typedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKPROC)(GLuint id); +GLAPI PFNGLISTRANSFORMFEEDBACKPROC glad_glIsTransformFeedback; +#define glIsTransformFeedback glad_glIsTransformFeedback +typedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKPROC)(void); +GLAPI PFNGLPAUSETRANSFORMFEEDBACKPROC glad_glPauseTransformFeedback; +#define glPauseTransformFeedback glad_glPauseTransformFeedback +typedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKPROC)(void); +GLAPI PFNGLRESUMETRANSFORMFEEDBACKPROC glad_glResumeTransformFeedback; +#define glResumeTransformFeedback glad_glResumeTransformFeedback +typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKPROC)(GLenum mode, GLuint id); +GLAPI PFNGLDRAWTRANSFORMFEEDBACKPROC glad_glDrawTransformFeedback; +#define glDrawTransformFeedback glad_glDrawTransformFeedback +typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)(GLenum mode, GLuint id, GLuint stream); +GLAPI PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC glad_glDrawTransformFeedbackStream; +#define glDrawTransformFeedbackStream glad_glDrawTransformFeedbackStream +typedef void (APIENTRYP PFNGLBEGINQUERYINDEXEDPROC)(GLenum target, GLuint index, GLuint id); +GLAPI PFNGLBEGINQUERYINDEXEDPROC glad_glBeginQueryIndexed; +#define glBeginQueryIndexed glad_glBeginQueryIndexed +typedef void (APIENTRYP PFNGLENDQUERYINDEXEDPROC)(GLenum target, GLuint index); +GLAPI PFNGLENDQUERYINDEXEDPROC glad_glEndQueryIndexed; +#define glEndQueryIndexed glad_glEndQueryIndexed +typedef void (APIENTRYP PFNGLGETQUERYINDEXEDIVPROC)(GLenum target, GLuint index, GLenum pname, GLint *params); +GLAPI PFNGLGETQUERYINDEXEDIVPROC glad_glGetQueryIndexediv; +#define glGetQueryIndexediv glad_glGetQueryIndexediv +#endif +#ifndef GL_VERSION_4_1 +#define GL_VERSION_4_1 1 +GLAPI int GLAD_GL_VERSION_4_1; +typedef void (APIENTRYP PFNGLRELEASESHADERCOMPILERPROC)(void); +GLAPI PFNGLRELEASESHADERCOMPILERPROC glad_glReleaseShaderCompiler; +#define glReleaseShaderCompiler glad_glReleaseShaderCompiler +typedef void (APIENTRYP PFNGLSHADERBINARYPROC)(GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length); +GLAPI PFNGLSHADERBINARYPROC glad_glShaderBinary; +#define glShaderBinary glad_glShaderBinary +typedef void (APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC)(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); +GLAPI PFNGLGETSHADERPRECISIONFORMATPROC glad_glGetShaderPrecisionFormat; +#define glGetShaderPrecisionFormat glad_glGetShaderPrecisionFormat +typedef void (APIENTRYP PFNGLDEPTHRANGEFPROC)(GLfloat n, GLfloat f); +GLAPI PFNGLDEPTHRANGEFPROC glad_glDepthRangef; +#define glDepthRangef glad_glDepthRangef +typedef void (APIENTRYP PFNGLCLEARDEPTHFPROC)(GLfloat d); +GLAPI PFNGLCLEARDEPTHFPROC glad_glClearDepthf; +#define glClearDepthf glad_glClearDepthf +typedef void (APIENTRYP PFNGLGETPROGRAMBINARYPROC)(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); +GLAPI PFNGLGETPROGRAMBINARYPROC glad_glGetProgramBinary; +#define glGetProgramBinary glad_glGetProgramBinary +typedef void (APIENTRYP PFNGLPROGRAMBINARYPROC)(GLuint program, GLenum binaryFormat, const void *binary, GLsizei length); +GLAPI PFNGLPROGRAMBINARYPROC glad_glProgramBinary; +#define glProgramBinary glad_glProgramBinary +typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIPROC)(GLuint program, GLenum pname, GLint value); +GLAPI PFNGLPROGRAMPARAMETERIPROC glad_glProgramParameteri; +#define glProgramParameteri glad_glProgramParameteri +typedef void (APIENTRYP PFNGLUSEPROGRAMSTAGESPROC)(GLuint pipeline, GLbitfield stages, GLuint program); +GLAPI PFNGLUSEPROGRAMSTAGESPROC glad_glUseProgramStages; +#define glUseProgramStages glad_glUseProgramStages +typedef void (APIENTRYP PFNGLACTIVESHADERPROGRAMPROC)(GLuint pipeline, GLuint program); +GLAPI PFNGLACTIVESHADERPROGRAMPROC glad_glActiveShaderProgram; +#define glActiveShaderProgram glad_glActiveShaderProgram +typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMVPROC)(GLenum type, GLsizei count, const GLchar *const*strings); +GLAPI PFNGLCREATESHADERPROGRAMVPROC glad_glCreateShaderProgramv; +#define glCreateShaderProgramv glad_glCreateShaderProgramv +typedef void (APIENTRYP PFNGLBINDPROGRAMPIPELINEPROC)(GLuint pipeline); +GLAPI PFNGLBINDPROGRAMPIPELINEPROC glad_glBindProgramPipeline; +#define glBindProgramPipeline glad_glBindProgramPipeline +typedef void (APIENTRYP PFNGLDELETEPROGRAMPIPELINESPROC)(GLsizei n, const GLuint *pipelines); +GLAPI PFNGLDELETEPROGRAMPIPELINESPROC glad_glDeleteProgramPipelines; +#define glDeleteProgramPipelines glad_glDeleteProgramPipelines +typedef void (APIENTRYP PFNGLGENPROGRAMPIPELINESPROC)(GLsizei n, GLuint *pipelines); +GLAPI PFNGLGENPROGRAMPIPELINESPROC glad_glGenProgramPipelines; +#define glGenProgramPipelines glad_glGenProgramPipelines +typedef GLboolean (APIENTRYP PFNGLISPROGRAMPIPELINEPROC)(GLuint pipeline); +GLAPI PFNGLISPROGRAMPIPELINEPROC glad_glIsProgramPipeline; +#define glIsProgramPipeline glad_glIsProgramPipeline +typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEIVPROC)(GLuint pipeline, GLenum pname, GLint *params); +GLAPI PFNGLGETPROGRAMPIPELINEIVPROC glad_glGetProgramPipelineiv; +#define glGetProgramPipelineiv glad_glGetProgramPipelineiv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IPROC)(GLuint program, GLint location, GLint v0); +GLAPI PFNGLPROGRAMUNIFORM1IPROC glad_glProgramUniform1i; +#define glProgramUniform1i glad_glProgramUniform1i +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVPROC)(GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLPROGRAMUNIFORM1IVPROC glad_glProgramUniform1iv; +#define glProgramUniform1iv glad_glProgramUniform1iv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FPROC)(GLuint program, GLint location, GLfloat v0); +GLAPI PFNGLPROGRAMUNIFORM1FPROC glad_glProgramUniform1f; +#define glProgramUniform1f glad_glProgramUniform1f +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORM1FVPROC glad_glProgramUniform1fv; +#define glProgramUniform1fv glad_glProgramUniform1fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DPROC)(GLuint program, GLint location, GLdouble v0); +GLAPI PFNGLPROGRAMUNIFORM1DPROC glad_glProgramUniform1d; +#define glProgramUniform1d glad_glProgramUniform1d +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORM1DVPROC glad_glProgramUniform1dv; +#define glProgramUniform1dv glad_glProgramUniform1dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIPROC)(GLuint program, GLint location, GLuint v0); +GLAPI PFNGLPROGRAMUNIFORM1UIPROC glad_glProgramUniform1ui; +#define glProgramUniform1ui glad_glProgramUniform1ui +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLPROGRAMUNIFORM1UIVPROC glad_glProgramUniform1uiv; +#define glProgramUniform1uiv glad_glProgramUniform1uiv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IPROC)(GLuint program, GLint location, GLint v0, GLint v1); +GLAPI PFNGLPROGRAMUNIFORM2IPROC glad_glProgramUniform2i; +#define glProgramUniform2i glad_glProgramUniform2i +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVPROC)(GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLPROGRAMUNIFORM2IVPROC glad_glProgramUniform2iv; +#define glProgramUniform2iv glad_glProgramUniform2iv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1); +GLAPI PFNGLPROGRAMUNIFORM2FPROC glad_glProgramUniform2f; +#define glProgramUniform2f glad_glProgramUniform2f +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORM2FVPROC glad_glProgramUniform2fv; +#define glProgramUniform2fv glad_glProgramUniform2fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DPROC)(GLuint program, GLint location, GLdouble v0, GLdouble v1); +GLAPI PFNGLPROGRAMUNIFORM2DPROC glad_glProgramUniform2d; +#define glProgramUniform2d glad_glProgramUniform2d +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORM2DVPROC glad_glProgramUniform2dv; +#define glProgramUniform2dv glad_glProgramUniform2dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIPROC)(GLuint program, GLint location, GLuint v0, GLuint v1); +GLAPI PFNGLPROGRAMUNIFORM2UIPROC glad_glProgramUniform2ui; +#define glProgramUniform2ui glad_glProgramUniform2ui +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLPROGRAMUNIFORM2UIVPROC glad_glProgramUniform2uiv; +#define glProgramUniform2uiv glad_glProgramUniform2uiv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IPROC)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +GLAPI PFNGLPROGRAMUNIFORM3IPROC glad_glProgramUniform3i; +#define glProgramUniform3i glad_glProgramUniform3i +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVPROC)(GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLPROGRAMUNIFORM3IVPROC glad_glProgramUniform3iv; +#define glProgramUniform3iv glad_glProgramUniform3iv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GLAPI PFNGLPROGRAMUNIFORM3FPROC glad_glProgramUniform3f; +#define glProgramUniform3f glad_glProgramUniform3f +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORM3FVPROC glad_glProgramUniform3fv; +#define glProgramUniform3fv glad_glProgramUniform3fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DPROC)(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); +GLAPI PFNGLPROGRAMUNIFORM3DPROC glad_glProgramUniform3d; +#define glProgramUniform3d glad_glProgramUniform3d +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORM3DVPROC glad_glProgramUniform3dv; +#define glProgramUniform3dv glad_glProgramUniform3dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIPROC)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +GLAPI PFNGLPROGRAMUNIFORM3UIPROC glad_glProgramUniform3ui; +#define glProgramUniform3ui glad_glProgramUniform3ui +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLPROGRAMUNIFORM3UIVPROC glad_glProgramUniform3uiv; +#define glProgramUniform3uiv glad_glProgramUniform3uiv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IPROC)(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GLAPI PFNGLPROGRAMUNIFORM4IPROC glad_glProgramUniform4i; +#define glProgramUniform4i glad_glProgramUniform4i +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVPROC)(GLuint program, GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLPROGRAMUNIFORM4IVPROC glad_glProgramUniform4iv; +#define glProgramUniform4iv glad_glProgramUniform4iv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FPROC)(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GLAPI PFNGLPROGRAMUNIFORM4FPROC glad_glProgramUniform4f; +#define glProgramUniform4f glad_glProgramUniform4f +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVPROC)(GLuint program, GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORM4FVPROC glad_glProgramUniform4fv; +#define glProgramUniform4fv glad_glProgramUniform4fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DPROC)(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); +GLAPI PFNGLPROGRAMUNIFORM4DPROC glad_glProgramUniform4d; +#define glProgramUniform4d glad_glProgramUniform4d +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVPROC)(GLuint program, GLint location, GLsizei count, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORM4DVPROC glad_glProgramUniform4dv; +#define glProgramUniform4dv glad_glProgramUniform4dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIPROC)(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +GLAPI PFNGLPROGRAMUNIFORM4UIPROC glad_glProgramUniform4ui; +#define glProgramUniform4ui glad_glProgramUniform4ui +typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVPROC)(GLuint program, GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLPROGRAMUNIFORM4UIVPROC glad_glProgramUniform4uiv; +#define glProgramUniform4uiv glad_glProgramUniform4uiv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX2FVPROC glad_glProgramUniformMatrix2fv; +#define glProgramUniformMatrix2fv glad_glProgramUniformMatrix2fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX3FVPROC glad_glProgramUniformMatrix3fv; +#define glProgramUniformMatrix3fv glad_glProgramUniformMatrix3fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX4FVPROC glad_glProgramUniformMatrix4fv; +#define glProgramUniformMatrix4fv glad_glProgramUniformMatrix4fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX2DVPROC glad_glProgramUniformMatrix2dv; +#define glProgramUniformMatrix2dv glad_glProgramUniformMatrix2dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX3DVPROC glad_glProgramUniformMatrix3dv; +#define glProgramUniformMatrix3dv glad_glProgramUniformMatrix3dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX4DVPROC glad_glProgramUniformMatrix4dv; +#define glProgramUniformMatrix4dv glad_glProgramUniformMatrix4dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC glad_glProgramUniformMatrix2x3fv; +#define glProgramUniformMatrix2x3fv glad_glProgramUniformMatrix2x3fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC glad_glProgramUniformMatrix3x2fv; +#define glProgramUniformMatrix3x2fv glad_glProgramUniformMatrix3x2fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC glad_glProgramUniformMatrix2x4fv; +#define glProgramUniformMatrix2x4fv glad_glProgramUniformMatrix2x4fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC glad_glProgramUniformMatrix4x2fv; +#define glProgramUniformMatrix4x2fv glad_glProgramUniformMatrix4x2fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC glad_glProgramUniformMatrix3x4fv; +#define glProgramUniformMatrix3x4fv glad_glProgramUniformMatrix3x4fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC glad_glProgramUniformMatrix4x3fv; +#define glProgramUniformMatrix4x3fv glad_glProgramUniformMatrix4x3fv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC glad_glProgramUniformMatrix2x3dv; +#define glProgramUniformMatrix2x3dv glad_glProgramUniformMatrix2x3dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC glad_glProgramUniformMatrix3x2dv; +#define glProgramUniformMatrix3x2dv glad_glProgramUniformMatrix3x2dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC glad_glProgramUniformMatrix2x4dv; +#define glProgramUniformMatrix2x4dv glad_glProgramUniformMatrix2x4dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC glad_glProgramUniformMatrix4x2dv; +#define glProgramUniformMatrix4x2dv glad_glProgramUniformMatrix4x2dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC glad_glProgramUniformMatrix3x4dv; +#define glProgramUniformMatrix3x4dv glad_glProgramUniformMatrix3x4dv +typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value); +GLAPI PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC glad_glProgramUniformMatrix4x3dv; +#define glProgramUniformMatrix4x3dv glad_glProgramUniformMatrix4x3dv +typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEPROC)(GLuint pipeline); +GLAPI PFNGLVALIDATEPROGRAMPIPELINEPROC glad_glValidateProgramPipeline; +#define glValidateProgramPipeline glad_glValidateProgramPipeline +typedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGPROC)(GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GLAPI PFNGLGETPROGRAMPIPELINEINFOLOGPROC glad_glGetProgramPipelineInfoLog; +#define glGetProgramPipelineInfoLog glad_glGetProgramPipelineInfoLog +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DPROC)(GLuint index, GLdouble x); +GLAPI PFNGLVERTEXATTRIBL1DPROC glad_glVertexAttribL1d; +#define glVertexAttribL1d glad_glVertexAttribL1d +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DPROC)(GLuint index, GLdouble x, GLdouble y); +GLAPI PFNGLVERTEXATTRIBL2DPROC glad_glVertexAttribL2d; +#define glVertexAttribL2d glad_glVertexAttribL2d +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLVERTEXATTRIBL3DPROC glad_glVertexAttribL3d; +#define glVertexAttribL3d glad_glVertexAttribL3d +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI PFNGLVERTEXATTRIBL4DPROC glad_glVertexAttribL4d; +#define glVertexAttribL4d glad_glVertexAttribL4d +typedef void (APIENTRYP PFNGLVERTEXATTRIBL1DVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIBL1DVPROC glad_glVertexAttribL1dv; +#define glVertexAttribL1dv glad_glVertexAttribL1dv +typedef void (APIENTRYP PFNGLVERTEXATTRIBL2DVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIBL2DVPROC glad_glVertexAttribL2dv; +#define glVertexAttribL2dv glad_glVertexAttribL2dv +typedef void (APIENTRYP PFNGLVERTEXATTRIBL3DVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIBL3DVPROC glad_glVertexAttribL3dv; +#define glVertexAttribL3dv glad_glVertexAttribL3dv +typedef void (APIENTRYP PFNGLVERTEXATTRIBL4DVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIBL4DVPROC glad_glVertexAttribL4dv; +#define glVertexAttribL4dv glad_glVertexAttribL4dv +typedef void (APIENTRYP PFNGLVERTEXATTRIBLPOINTERPROC)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLVERTEXATTRIBLPOINTERPROC glad_glVertexAttribLPointer; +#define glVertexAttribLPointer glad_glVertexAttribLPointer +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVPROC)(GLuint index, GLenum pname, GLdouble *params); +GLAPI PFNGLGETVERTEXATTRIBLDVPROC glad_glGetVertexAttribLdv; +#define glGetVertexAttribLdv glad_glGetVertexAttribLdv +typedef void (APIENTRYP PFNGLVIEWPORTARRAYVPROC)(GLuint first, GLsizei count, const GLfloat *v); +GLAPI PFNGLVIEWPORTARRAYVPROC glad_glViewportArrayv; +#define glViewportArrayv glad_glViewportArrayv +typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +GLAPI PFNGLVIEWPORTINDEXEDFPROC glad_glViewportIndexedf; +#define glViewportIndexedf glad_glViewportIndexedf +typedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFVPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVIEWPORTINDEXEDFVPROC glad_glViewportIndexedfv; +#define glViewportIndexedfv glad_glViewportIndexedfv +typedef void (APIENTRYP PFNGLSCISSORARRAYVPROC)(GLuint first, GLsizei count, const GLint *v); +GLAPI PFNGLSCISSORARRAYVPROC glad_glScissorArrayv; +#define glScissorArrayv glad_glScissorArrayv +typedef void (APIENTRYP PFNGLSCISSORINDEXEDPROC)(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +GLAPI PFNGLSCISSORINDEXEDPROC glad_glScissorIndexed; +#define glScissorIndexed glad_glScissorIndexed +typedef void (APIENTRYP PFNGLSCISSORINDEXEDVPROC)(GLuint index, const GLint *v); +GLAPI PFNGLSCISSORINDEXEDVPROC glad_glScissorIndexedv; +#define glScissorIndexedv glad_glScissorIndexedv +typedef void (APIENTRYP PFNGLDEPTHRANGEARRAYVPROC)(GLuint first, GLsizei count, const GLdouble *v); +GLAPI PFNGLDEPTHRANGEARRAYVPROC glad_glDepthRangeArrayv; +#define glDepthRangeArrayv glad_glDepthRangeArrayv +typedef void (APIENTRYP PFNGLDEPTHRANGEINDEXEDPROC)(GLuint index, GLdouble n, GLdouble f); +GLAPI PFNGLDEPTHRANGEINDEXEDPROC glad_glDepthRangeIndexed; +#define glDepthRangeIndexed glad_glDepthRangeIndexed +typedef void (APIENTRYP PFNGLGETFLOATI_VPROC)(GLenum target, GLuint index, GLfloat *data); +GLAPI PFNGLGETFLOATI_VPROC glad_glGetFloati_v; +#define glGetFloati_v glad_glGetFloati_v +typedef void (APIENTRYP PFNGLGETDOUBLEI_VPROC)(GLenum target, GLuint index, GLdouble *data); +GLAPI PFNGLGETDOUBLEI_VPROC glad_glGetDoublei_v; +#define glGetDoublei_v glad_glGetDoublei_v +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/window.c b/src/window.c index b84e166..c2bb82f 100644 --- a/src/window.c +++ b/src/window.c @@ -1,11 +1,12 @@ #include +#include #include #include -i32 gr_window_init(i32 major, i32 minor) { +bool gr_window_init(i32 major, i32 minor) { if(gr_state->window_initialized == true) { log_fatal("Init already called"); - return 1; + return false; } gr_state_set(major, major); @@ -14,36 +15,49 @@ i32 gr_window_init(i32 major, i32 minor) { log_info("Initialized for OpenGL %d.%d", major, minor); - return 0; + return true; } -i32 gr_window_create(i32 width, i32 height, char* title) { +bool gr_window_create(i32 width, i32 height, const char* title) { if(!gr_state_get(window_initialized)) { log_info("Window was not initialized before calling create, defaulting to OpenGL %d.%d", GR_DEFAULT_MAJOR, GR_DEFAULT_MINOR); gr_window_init(GR_DEFAULT_MAJOR, GR_DEFAULT_MINOR); } -#ifdef USE_GLFW - if(glfwInit() != GLFW_TRUE) { - log_fatal("GLFW failed to initialize"); - } else { - log_info("GLFW initialized successfully"); + const char* platform = gr_platform_get_name(); + if(!gr_platform_init()) { + log_fatal("%s failed to initialize", platform); + return false; } - glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, gr_state_get(major)); - glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, gr_state_get(minor)); - glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); - glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); + log_info("%s initialized successfully", platform); - gr_state_set(window, glfwCreateWindow(width, height, title, NULL, NULL)); - if(gr_state_get(window) == NULL) { - log_fatal("Failed to create window"); - return 1; - } else { - log_info("Window created successfully"); + void* window = gr_platform_create_window(width, height, title); + if(window == NULL) { + log_fatal("%s failed to create window", platform); + return false; } -#endif - return 0; + log_info("%s window created successfully", platform); + log_debug("Window pointer: %p", window); + + gr_state_set(window, window); + + if(!gladLoadGLLoader(gr_platform_get_load_proc())) { + log_fatal("Glad failed to load"); + return false; + } + log_info("Glad loaded successfully"); + + return true; +} + +bool gr_window_should_close() { + return gr_platform_window_should_close(); +} + +void gr_window_clear(u8 red, u8 green, u8 blue) { + glClearColor(red / 255.0f, green / 255.0f, blue / 255.0f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT); }