From 8f91ed81c58fd5cdbeda4db5478649bd677712da Mon Sep 17 00:00:00 2001 From: raysan5 Date: Tue, 31 May 2016 20:08:36 +0200 Subject: [PATCH] Updated Oculus sample to Oculus SDK 1.4 Still working on the sample but almost finished. Some rlgl internals redesign required and it will be ready! --- examples/oculus_glfw_sample/LibOVRRT32_1.dll | Bin 949712 -> 964048 bytes .../LibOVR/Include/Extras/OVR_CAPI_Util.h | 12 +- .../LibOVR/Include/Extras/OVR_Math.h | 4 +- .../OculusSDK/LibOVR/Include/OVR_CAPI.h | 27 +- .../OculusSDK/LibOVR/Include/OVR_CAPI_D3D.h | 28 +- .../OculusSDK/LibOVR/Include/OVR_ErrorCode.h | 28 +- .../OculusSDK/LibOVR/Include/OVR_Version.h | 2 +- examples/oculus_glfw_sample/glad.c | 7684 ----------------- examples/oculus_glfw_sample/glad.h | 7678 ++++++++++++++++ .../oculus_glfw_sample/oculus_glfw_sample.c | 731 +- .../oculus_glfw_sample.old.c | 498 -- ...V1.png => raylib_OculusRiftCV1_test01.png} | Bin .../raylib_OculusRiftCV1_test02.png | Bin 0 -> 348126 bytes .../raylib_OculusRiftCV1_test03.png | Bin 0 -> 182957 bytes .../raylib_rlgl_standalone.c | 420 +- examples/oculus_glfw_sample/raymath.h | 20 +- examples/oculus_glfw_sample/rlgl.c | 1809 ++-- examples/oculus_glfw_sample/rlgl.h | 152 +- 18 files changed, 9807 insertions(+), 9286 deletions(-) delete mode 100644 examples/oculus_glfw_sample/glad.c delete mode 100644 examples/oculus_glfw_sample/oculus_glfw_sample.old.c rename examples/oculus_glfw_sample/{raylib_OculusRiftCV1.png => raylib_OculusRiftCV1_test01.png} (100%) create mode 100644 examples/oculus_glfw_sample/raylib_OculusRiftCV1_test02.png create mode 100644 examples/oculus_glfw_sample/raylib_OculusRiftCV1_test03.png diff --git a/examples/oculus_glfw_sample/LibOVRRT32_1.dll b/examples/oculus_glfw_sample/LibOVRRT32_1.dll index cfa119a5a1b28fd10cca3c12b83a451c65374dc4..70f63f7019536c1a296ddf354cf411c63819f275 100644 GIT binary patch delta 361690 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 a-9I-e*-76VpV3lQ_xWAB#2T%^@P7a~mOW1Z delta 348197 zcmbTf3tW`d_CGw&!vG^949ZPGKphno6$KOTs0>hwj(5vTSY~s~(h`(P9f<4rIBITf ztgN)GV<%5p-mug#iNPYZj;E}wsI0aJN-B?0S-ju1pJy&0`FqbFKl1F$+H0-7_S$Rj zz4nE(4I|I~K4SA|N%!cOi8gzW2P5B0k21Ue&!|6Zu0y=4^HuW>@vSwti0?1vA^1Lc zq1k*E-}llZ&8NplnF~I@YCeZ}!RJ4jFNyEFTKPKheJ{OGd<#B5CBD=DcBhqS>C~V3 zItzl6r2yT$1^PK!qOM*i_vk1E>vWk0ozBofB=e8`bvh%0xk#fBg=L*CfMWP@e|4L~ zbUM9G_v6zc>>jE6u&VTqy7MTq{pOCkS^_*9qDxCbLHEy+5Z&1*M2um&#I-tI;bMa> z?a>}x;`quST{O~n;+yUUrY{&cCqLSwTjxP}cNOFz;h_xRCw4MfH#zR6>feB!xV(n% zE%^HUr0aC)gBCB!TZFX2*?xfQsM9S&B$M4I#}BCr5p~kNhE$)Qbe*nh&;u(UxD#oD zcho_b3hW2iak*P4u}$pj*5S)L?f*{hDm}K`V6?gX4P!eQO{+T^Pu9`TE{Z~ z&EW{CIU-xj&j7rdKiX5$H^0!6U(jy;QFp%0c%WT?eQp5bo_6!|Jo(Go%@6nF2e+HQ zUCXz1GHz}cV7CXsj&}2}c_ehDT?tt{<+Ix@U$5rdAno(*0-W~{INL4(eSy0PuC-e} zK_vkE(e3766!>k_+!xv;h{dDajFnVfeK4)Bl<60-W<8sB1UB){|e=ZhoUD|6;rO8&-F;Y2B!#4S=<9 zn!(8L+UKvkRaD%%g5tBh@mz|VJ@H+^)NMBliBYhkt;9tBOi%t~E#Id0TJ(DXu*U{H6z1Q6f_IFe3fug>z?s_z8?tY zJq{p=2<8&dV;&$|oi%v~0Jajqm;VL83IbT=0jRTXrTluzKSBA0lt0@ie+A`NQvNQ= z-%R;8`Q%?1iu~XwkY7akJ1IZXosa%EOKB{=*c_VJDIqh+7&_;J&^e!m&Z+u2)Yd5- zg|u`;BP=2su>xR-`X?j0B=p1Xx%g7ts(w2asNaYREq^<{$~OxESaI^gqcNBr_&(%Rix_=LfDBxwNJZPyjl zP&b1lAdp)7&qTPt8cwBfoCqH|KMK(1ia?vrI+l_RB6+E_RA;r0?qobtgwn*^bpajZz-uU*vXmg;6JXI%c2XnnJTk=q{))LExfsr^*y_Jt>p zW%hn@P$EL8*KGWr-6n1By z;c{9E+tH`@Aj^#r3~z(ra-Z9J?6w8!1V+VduqWpQyVCV_=)MaVyk*cKT>Btf+PA;F z{TO?!Z;y~+r}et4W`jgLpLv13jhuTYvLE|KNBrZ%K;z5hKbg+b}5~wYN&)(v_(S8Lw=iz5nyz$TnjJtv$+@!F-ig?~b)m2Ms@swj5T5ms zj}DW-Nrk&5bu*id3iZMRRIc!0gU-Hox81xaFIYLl9ly7TgQL+TOzdg*0VlFrbQRqQT8 z3Ag8*T|XtdBIlfv6JC+Sm7M6u?KzE(oV|8)y?xe2{>)LmuEu=LZ&&l~5MyaozCX`7 z4DHIMM3=cy zV_C;D#;|EaBb-$Ze7(`(YAOw97>a-soBh^F^ z11MwRRU=4Tuv%`ObUbGyTD13Hkm@-Cab{B!8?&FFnFSj)HXQNM+i z;=8V*R(x$ym^8tvySx=-rjyswXc081GjA4Hb9B|ngN{wJG1ysI>vtr~8U zbHdn;;X}F(PDK+t$R7J@-H}v3cHcKq?2qALQZ5Tk>zllt=pAj3UMzYI>WLa)2rqH>53|ccX;7Enjk`nF@HEc;QWl){C?IrGC?}aI*l4H zfBp)yj2alf7;^#s%(6hAfgN%#UTe_hh4L*gvK^zkMbvqDDrzhwk(1TF@NKRxf2Tv=CI6^N?w=peULIqJn*NE8 zD(wT1HU_*mCRZLjkPRN&EAqC5YR$et(>cs_7RS_ZeyE69#}2*oj``}~?r>y4K~UAq z8uJB-E0-}`Zd-$-BUEcX>JkRpd;?k4Fj?ZF- z^uF?Y1K5!Cgsv|QXpg~RNq){p2gqHFq77&&k2a|1iCfs&X>sUWs5Js_&iw+U#v z?QVkfnYLv@P_$8@)r0^Q-zbF%f?dB?wL3#iL zaDZ>VO>KNM`z$5@K#lpFBnH2^&v^yy*hV!_wZQnTM+^K>6^BEuoO>vf`6i@73j)Ex zB?mZE*3LX2#@Rq%bdR%+oNB&WR5EX>ie0JYhrR)78X*7KuRX-WiChkGuH*0CrYg$j z3I2Wuct^H~o=ZM7~>uLL%HSP_*| z)ufs)FzX445lpd!i4kD~1=2j|3x~L>d3TmMvBzSnvxRR<^wVAX8WT<$k93}Dth?xu z&`LmDFQGq>>gnMZTJ`V?)Nn2N=Xujc(yng7?y=%iPX{kLuHhQ*>f3LoqB%lVJNCE`_UYpysNL^fY`qDU*a7#dkP2~+X_&# z(yF{HG{=RnwC4C%A1V~G0EOK0|8WjmV2+XX6WK%N8S=P3?2I|0Qz8{m4McZQr0?JR z{NFWwVuL^Xu_2O8$PDki+qaqpo@yS=43>AB*gKiMBG1fHtGUppngbqWepz?gUa0qw zf6_#9Z)=}=_rAW?J!Vs_2~w+dE@2@hoYO9jFDX@1!hG-oM~1e{W8Y+j$`$GCYSxU~ zPxgXl+zq6fW)OZzbnh1)4tD|KdJYEw`~RgGaqCri9nUsIb-UnE3yfzFiDq;zeB0Go zGtqC9O%;J=d3yRMui4az%R<%4cRQU#IX~OcXa$BDBn&situNMSk(gW?E!M8QS z+M0!}!McsoxO^*_727pGbf&q=!B_~O#(Z8iEvujOH7&%VYFY+=?h%g(yt>8XUiZlS zWu&?Xm?w#aV}w^2mtMf>H7>QBiF%}wbs+)}{s*7oLk)YXM|-$u5XBs-gN}bU-ECd; zHnlpt8>ldR4FnKqDLs`x1RhR@BMG>dgoc&6zoWJIWbHd2-=C1b3}1d`s<17Fp`Vf{ z8sz;FkooykV#*Ufl@NTFXn5J4jK2!{CpZO#WQj^|M z%x6cL&*i_xhGa)Cd?5kKdERTbH2G}0;E{d_Ag-5w2;}Bb&iYnns~$E4X6pi%%E@dc z1nbBr44=y5z6yH9tDxUc+AMz&$83}PbPcqq8uuk~9i{WZm#|&AE7|eMsq!rrc4e~3 zc;yrgj*ZYR0^q|~VoqQApK)wjPE^;_cyG6!N=Q_gffiPj6D2PeKw}!>s7h2=wD6j# zvhGq}FYu0$LcC_jHXT4zb&UQ5tSIktql&@V8bcys_!rsEQj6eOr8)#Y7fkYQX`LFw zCQKPBS9E8qrVNyC?M`gV_1)R=DN&I$sVJo`BSd&`1w#CtV%9KaKveK&KD~Q4^0nSQ zaB8l6CWdXA+AH$6$*S<)qN>oW4px8m3RXLHsB{PWeQMvX>xWTBB^0EN55oFSOllGC z$wpav$TzKH3oQxqx)@ey2~Re_5#sJ%VT2HH`WzyVH&v;1Y_pIOPy9&hMk7U`km?xf zH|q3l?qs#!{9y^qA}?R@+5^T1I=1BR(- zyX1~{W|OA%mDhJ;dD9YPYd2!k@276<&d0tfgzEJPPxA_`xY3|VENFU6MAl<)K|HKS z1xeC#;N;<{kFk-{mxWoqMW(5Xlf%=82d%?A7VA%YR|0$;xw zv+RyYNw?qCWI-p9c{p^@ZZ=d7%VE#XNs`a4VrS>XBwX7FmQI&`n%8m0Gz*`|2vczJ zx^UwIK`l4&$5*kAb4P_&`cihc!fkUOk#o1O&*zTz>$ySi{O4(@ucR>Zt#8Xi6&8DI zU%7+AhTV3jY`TX%aoel%qV6nb-c2#I23MEO@Yv2)ex!+WUZ926MC|E#(MIkiHBHPI zYUcIqoC-_obpQt-#+C-hwhJ47?r~q(7Z4M>4q;*%{80rQ#tH1Blu%>B=brAU5_(~N zT%W{lvW{HQssmP;Vn9Rr^9ij`hCj~!Ge0e=s`auu8@`j-+#Jb9EQpu3vRfAvz-{os zf*kx#SU3p3r!Jg<-_I>flosu;TUahdKoVX*veE&IhSEdZm^Jr!muxR<#f{;r4v$!r zI?e5@UHu}tiR-akGEBozXvHE*Y1Vpz5-M2E+ln-e{Q?S;BLp3u#!P#rTCLoz?D(Qv za(OJLc$&|Hl7k@c(%&OmX`ElJ?f$M zg17DFCTOgW%l~6#mcj8xB6Z83j`Y{TnEm{`Bj+3+aX0(-9fSSS9uW@LXy?Ae{{CsT zcd8y+^7Dg8QR94U4R|m&D<@`SraH$_d6v9DrThLsTfjp+w4BYqb4*~$-LPqoHL{&| z#>rFqu&O)f$hjG8!Ch0>-HYdkM8ifMNrnvxo#UUI$=+YwMNaI^zFoX1^1LS}@#N2; zx4s1@dxR+XOiHfU@(e4j0HvRwSB??IIs737T$a=B67?bB5MP>Zab)Q&-1Y(+yrgTF z#V?>K%EMI%;Pc;}!R9ULHy|2(FR_=C=PdMad8`^MQ)3BgY^NGCu~(M#kXKsS2TSgX zBiR48Ry9OYCO3m>x%-=2>>3$pg9CZ*yW0*cE%HBrfFzCGo=h5WVoZ1mCrT?T$g1_yf(5B7AJ z!!0xT*Gt($OB4I;_|9Ow)Nq%-$3qWO;R>Ks{%@qZHxfU-lfAn%X4oEIjWdwhxPE`B zajE1mqh~iIj0!SZc>lXt%st%SiUc+5?4qp@8U1M{1f>iFsOEz2xP*~FwH=OTX_ns41bt|KO^ z7hUFyxyL(z-v=M^*I8!sVPk3k)d0UyINQ9;-SOlTB)JteR|hC&#ME;cD^&?&NSaIap1e=T629iExADbfTHzPS=a{(+e;CF^+2lRo`9`fU$z zBIk}`{q7qnFB`?~y01t0GGBpD)<(-G?&~e5$DyV_DFOEVVUuC zEu)wg(-@YCO$|a+TD2~yWmPagnCq`=2zsz1g^jANw5$r}Pa~PyBY-OC)}=EGuooWB zuB;duw$qp8L})P^et%NXVyJ>6C!B|EV)x!36P~(J>~vu^#>H&x95*b0Yc-O+c7KFC zY!*9pf6|a&aF#;bqJ&&=n1l91+agC7AqQ@P7-joBaA(%G1z>ND$%M*K>pT$Ll4mk< zzxk@J=NOb4J6!QO!LEQtWZS10mC2@L@0RFfQv#gGad2Zi&^69b@1yP}wL=oMSamcD zTzRuJnN3^SuTSDU6@85>pczq=7mikAA$>73&J&s&h`1=G~=!NA6+lPCR;I{j~IogLSdcdFkEpJ`tj<-Rw&D6tM z^13XQ_~)tY*Sr+lP}IT|NMcdvn9vA&mQiuJ0*Rg5-P;6Wl$x#l%H_X=Cm~!9{{hIh zhhK%PV=v{0L>lR=$)cOYkqozT{d+DulOH!G7g@@LX1FFD|Ej*XZ66V2bY&Sgj|?)}*BV?|)@Y!_Ig8cN+Ps5~yr?^1{IWt$OR>_dCal?ew3?UdlSBhHfzZSjH|99BYxA5tBA%~`Tbh5{o0f9 zMKn!I&c@eOWWjIxaTU$fLOv&pBI;m6&~!_z0LYq4aE`;xEPVCw?sT3VX$9(Mjrf!o z(nnV~jxAc9A>;Gyy0}1BIeGJS&d=V}!z=!9qRmxaM+x|Gm7i4u2%XbHV7Q#B>?*I< zQe5R1Js}bT{Xmvo?#7g(X6~d1e_oo7!5qxjl<%P`fS|ih0}4} zxXP=v5Z{dj1vx~@v$5>MPF#64a=@3!-!s0Z{6&QRT$)}}9t{BGko$>#T;(QDC{YV7 zB_c_l#Y?t0%Nw3kfPaJjpw? z5dUNqI=Buos?XtO1c=gZd~r-G-Bo@-01`DjLVxm?-0;YDm6L+ekE^^<4e0oK02Eh` zR$R9)oOhDN7j(BJU^6q5HY_tvBvTM^1k-;GU6+}R9n6dq7NiCsvE;;NU~xm2oY<+w zs6fdHQVn;Rk`q;kjhGgjpQ4p5qG_eOsL*kWP|47u1d*juD@tbX6vW>2ink-Hi{LgB zqF?Q6oA`-)v5uJPUPJTO?q#tL=5&~dk=rrV%15yW9?XwAnCGv9Qe`fN{2*h{%bdw~ z=CMB?+$@h>#x_4>8Ps?WPQ@kQ^pDl@h2FSSUaEJL8{v#5cNmU;U@UT#MDoMLO9*>xBKyYbQ%ldzK6Sv%LIg&E#x3n`fIW zo0qc}Z837<^8Gcoev;fhll@qj8};P9qQt~yo*GY_&&%#*)}me=b2I3uW0)T=Ftf*s zxNOX1g^$$wm7HsF-oI2I?%!z#r@<>;10+L$B=h&(AVNsduFQ17S!Oa|k_1dNe>v0N zS^tF;FK@`i%qcn=`iBY9=RRFVn=Tqkx|{z-B!e9a^*?^w&zNoO0Y*nLtz5OS5B-Ac zG`Rh=1cgaXSfs~67%^vdD2;4si79X_&IdX6N3(4u@j=_M-lbxjt?YP7;<&+IdZtU- z;iESF^<(>jCeg=4_bR6D1>%0-#KMPUv)-lga^*ahS!$BE%wx++d&tY@u}!5t{3p+Y z588R+X}@UpUg_w_yW8o^gYRbXWpl!R_{zgVQDZF-)BJON+0C~3m>qHbgBW2N4O)dA zQ&Ra)819gQPA)m7%;aBtqOxO39zW-a`Z+dk1vdVcCq?hrcz{y&c~blx8)?krPkT}V z92>7t%7%ieZZd(6jWnS1hde+A$Hr7ju_C3YW-fwn;=j&*FqIq~E>}PS9VnclFPB_& zDGnkFs7qzL$|Gg-Qg)<#kSziR!%Cx`qm0H$YLMwzU822RWt&O3_yPL}@sT)f<|-Sl zR})=j=~~FK(SnexEJKTfY*{wKWb9mJlMx~&z(Lte4MI(wJS+%zZOZ0q0FI5=wZ{sX z0CPQnlzZ_e%)H7Ld*G}dI2cOtqvr0#)XY`3!ULD*fh+L9QLYNNhTv=@o{fbbz!DE2 zWv7lNgcSrxaAg}1Do=x8JW!N(6f?VNj*Z(9gepYv1AXc{lt#XY9wdgc$1;cnkUKxa8>A2Er}&Qu=M<9qdprtR6k; zWNA4>WgL!d=dFy7n>(GCku(u>uD`jg3t2%|_ z5{4twU^lojgDI?t6aiu%uYZn`)I%;T{)vbVvxbY+=vxNo*;)Fiux;pRVtt~zWLM2% zwd+mtp|R|T_1#CmkJ&T)&YQ;y!s;TR?$W#8O4oZ-27T=@SelV)EPJV z{>Y*Y33W1~4pEI4JykAlw5Wqrn}LERcCJ9O*{EeCFnXK2z1EK6TVPsjYI7eR?QZT! z-{zibP_lyEjjK!zR+`!o&yzhJd=%9wJ&HS^`vvXVvud!%I{5Q z?{Da03+Inr1Dcs4#JEm{V?; z5dJiR;J%Zx$zx_-qGFrG__PxOq zu1~6ow~YYltTie{lZD?hf(_hc>b8(_SLg9qkv-qTQ1A$L&!)KPeMI(5eld+okM?Ar zLmUxT)@V{`S5~_E$)Jy8YAXL>6`@V#dqufePq`gw?9)wg!G}b4IL|{ido(@VX*ntd zvHFq#Tg*3}ZrlFs?$_cs_n@m79p%)P56Fscn#Hk+)Peu!KH5SJEm26aZ&s;Ldwrlt zvH0S5=%in0$z6a_HqitEz0gm&Ian#5sfTqzgZL@w!S-?*ryb=NP~N_22g1b#*y#g3 z$0pKZ>;TSNuF|6!TJf9bReIGLJ;x^M4}cn`LBSUZC<79~`xPIqsBiHzr!Zc=nP5}1 zgYj`!jk+g)A4rtLG@ZcSoS(7^%$883Dqo-SL4%)S305{0P=dQE%S5hLlii5eH|?a~ z&OP+|@Lv3G@aNr%Fi}V(>$2iza96FLjlCyr;tDwg<6H^<r$%hhsk)2YC1w2d!ZR8v|~Z2FD`J=vhAdEMY9w|BM0r#DL=Yx9Bvs*_CqB?OP&BQ z<}wvDd%@Sg7K_Ivp@UCgUX#@<3bi8cjBwryY~uzR4s&4Z zZDVSu9?->P9Jj@WUs*lw>=ZXf{~S8kKM_r))GakychsIx z>0pE_f%`uLzA{YMk}NUp1bQ%c4oc3~<_L-`$iI1Fknx$T z)fo>{b>WI-mkUvNM4`_c;%Zs5I%RQ$mlT;oc`!Xz6E}?XZ(=;xB&M(vn&HryRP$f=QZ^VM;`k zU|*^4V76d;f;_b^vu%%+zZ=A!+TPFhir26fHExC)d33m`)n4LmT<0q+WptIoy6^b#8g-c^PR#|@#7I%QZimJ>yP(xM`- z1DT%Unr5=xZ>%^a8xbFkl?ZfX*cbsZ2uE2u&E}_Z6kFA@?ig6I02bC3MRm&6hANG& zSPy8ESeM(>JMS6l7sN(CX|%%t zI{b{iNZe_I9kXx6!U4ueA3CQKou+`Z6{8d4$Sc~8yrL7^^=#TxF(day>vijED<+!) z-KM$|zko}F>yd(X53DJqD(Om2Z0yq`yVi80BW-ydRGf4uEYSt5YgDWszSj!tFEz~hbezrNYl5z6 zD@un$hl`$|@>CNX9QI?^@SBhMK#YgmD9KSu05Cbi0Dj$5uPa;|tjp`e`4T;i{tf}O zk>>HAJ;hM~Y1`<_@2+fVaSO$t_p{;hl2RB8X{=9Qt2j8YrhHIRfh1 zS#%jJoS+N6aQ3WN#pMCEdG3tar=}^6i-0Ts(qs>HpE-FrUagXLTUb@cqDIOn?6=`17^c^4#^%7GWVrYZRWP4_EN|i5ry)^ z^9EZ|Vj>E?X@djj-jGf!tll~-0qvQ=h!RD6W&%QcMS(D?J4)>o=_cYdEEC%Zv|-$e zfuTMO$oZ?OrZ%;z>)J4|1E`AYL%rmS>sPD9_X#42Abvn24h0AC-6B0nB_0dnP{LNk z55;!KXQZ=ZOcWE>|^=sD(7+?jw9sWd`yTcb(tzD1NAwSYrB|EDq z-vaB@*=N+DB5`U(Z0+>+E3tHMAKh#&xCLj_2-qj|^o+$w_V$cCEtVjPlxVSJ5xWSz zBgk|SyQ0M`BBmFRQMSxn5e?T0t{@rQ*^NzlzPl~WGip`aOH8SViE}DY{P`wa*bSR$ zGGZ1Ju8a|LXu6a7>~IL8S=l6pnw!^_oXWq&T1Ty|s}+~i-LG(Dm_}<)aIC0tx4#&L zAAOVN1wweK1`q@@Z+2yupYJ{ljtqYEc6gmY5o?2VR0c{AEevHe%?Zd*Dlx)PTC94| zv!>Ou@h^0`#(rP;G* zgKP;fSjmoB_<9ZPWRsO}zH}YVkD~?7zG!!JUWm-GsT#8jgdw=u{GQ3e{bI4MAS%0S zne_K=V|#db-KX(7?mE2ps(67G%0a$->c9}xtY~)Y-v?Q;Aqo4dSTx`_iDFV`EG{tULU)|x&SUJOzgMS;bCd7@ z?Ailnu_gbp-F#rluDysja`w%c=9q*#|3AZjz7IHXVAWh%V}4!7J5FY~|LoZ#7H25| zX1`r;w;6X;q7cRn|9$w{%}1B)I$FyjUyPUkK8b+4R%5#gYb}flfOkwvMG+{de^o6z z`(h9IW))~MHkaA~I;R3P+(MY5_YqkjP{}rFWO*$c_>VaGQ59wl_Od)MJ9Vd2)|zWs zIbenhm|-)q(dL0!vP%yj)bPO000b(`haBd8I7crk4}*e*-C-TCzZo3#ilTz7XU3)(<W4t$*oo`eH+UhEe&aQ$`Q zLsjtLR^V4O@XG#eS^qXeFtfWAxZxdDFv|#BYh2|D3FZj_Zo5GJ%p=EG4Lkwh*x^@2 z=}^eGZ{d?NkXWsUm*LC1U?Y|QX`V(%MNuB+DftnV%=VVF z9Y#?vrAgry{tfJtN~VE;bG^VyYuHo^KjMMCOt1xB*xOsf&a`lc2li)z-5_9Xq!K)( zHE^DVFY*BYLclw{hyz=}3MI4fp&syN0r(0dQJ0E=+lE9@lkZFTd6uHv;NjOYBMez5!SvVoD0rVx_IuX-Wm{URe`?o+qAW zk^3!Ozc_)@sb~0Q8|Ljf*Kn|o{Jldk9dgExkh|FuzxC{%VAE4OIgcCBm>w>E4pqhL zQA$8z<%8q|$Xg2Es#0fPY)V)f)W!>H0ZHA!zIiu!{ZhL6z|1!^c}# z7|34TKR|Ap%s$_rAfKMRfH)F_}GlAYHn`jvg2!e}!@HU{uFU zLw@K|a^6)#s!IiTXb6w7VtX+A;BcD!RyGT+ z>@7c;%~C4O^2}@@hoRYQM`f0LDT{qm*>#GI{?XX{5cekX^jOL3iZk`Nve$$Z%7nB0 z;L+alPZOy~zq2qEYHB-0xK<<`_*hkCFS%qQyX9E_pt)M1bTeCbY=}JO4)*G?=q_`8 zd(&uji{!$wUecm1#|O?t_T1dIr5^o7rD>h~9u^0C z>tG0fbU*C{hchk7XY*^%f$JPxI>2*1Dev9Bkk8XfId0Z{P^~j|Ii@qdUZpcuoX{D6 zM*PF$I%C(9I-}~hbGz>|j>5Sx%uK2sAP*kH2GwRr zcDAy1R`2~dRPAugM6JYb!MP{Fj2Um(HI`NtOv5dRJ~hP!VeI?bf%2nIve;9-1D6Vj zM(3kzq;NL>RFd55Nw)r!*;!a11%#jXRloTf2md)WD)zgPSl55>*@AjbTZ=+~@z z{OWBnv+?gdjJuP^-bupm|GYD>EA6PFfd&E0k+a>sZDD&{b`JSn3U{vPwkq ztL$s5d2fugG*r?6_v=r3cJBnOCBFv-4VKvuJjm`P6z0lt!Ilq ziePKr4{kSo@B3rr+&5X{`+bs#t*q^WEnMsvxz&}mZzd+fd%Ib@Vw&rHiY@TyP zYyeU*+zrV{+kQYpLbpTeaXVzIlC?+8+9NKmAf{bh8L``2>RcLo`h)IL8aw(yZ1?Lf zxF{32Kw;#7`|k%=qaH-p!|kQ>N(Xz+HK=XpIn!qF(V^C? zk>EfMExlW&Zh;vV-jwR|nM8gryq4vDrs!tm(g8VK*K~I3BS+mkbOpTo=Dn~E^aN2g zf8bd$U_>E7U%a-;_`uAT{JnfagJ|`JEPBVsVZIDVOI{FdbcAj*U&cdEpGMd$IB$uW2hYa65Y;rHZkV9aZmS>v0I3KBUiv4J zh@tmIy|7QXjcSgSi%~0YXt(?pN)>OyNW2e;+G4HXh2<* z1$(GErJv^aN?TB!7oE1?GF6K27$T}OSgTGys$;_?@sN>!;V50hC!*4;1XSK9g=;TE z7F88~;vo^AS~px0qEp#-ziedN_naTeDoagP-?&Jcs0zkZ-kxAyrc|wB6X2GoONGBd zB$vqCI?TI8>)o6$&Un1&j*n2|k1OW7QRcJxk1APYAp_<($Mui{Z9<@!0=`xz>l!vx zVt#}Ju9}peo}e=G81k-fr35g8R>H%O7pNn^_^OYhT>uL4WK!h!qSh{REv0C$r4_GD zq%-{a;rv66Y_|COFqZzVzjJt;92#}5{XW4Ke6n0_Dq*KT=@l7sNLBG4Nj1#1Ld92q z%mP0hnpg~H2r3PpNR4ax$)|nQxYGE**p~d=oPEa@ecCnhj=@6N@Jd_YD` zW%pnK<)QQPw?67XoUX=RMO#hyd7R2cLosoYmhXeK!$E5LV18nnr|FN18XF&QH@zCy zJ<#G@VUlC}xLf%_Je}9JmG9CBEf9oE-vLBz*7{b>T2GBgPs)6DN$=d1=@;(&(Si}u>bZ@$Q0`aE%J{6!(ohJ1&4 zCm<_$g(z8vk{v|6V3gY^U7&}^V3ZVd1uBO_DPMmr%6f5r@HKEI^rpPMYF^2w`NJLC z(qMShF4{6$ZJ1vQSzQc;nRSCDwgn)oaf^&|D5GB8$eY6T990&(L}Kz*P^;{SdX z)~Nz|)snx1INuh_KK{a#{3iC=9OepCpc5*vliwbTvDmy*W%>M9ZCG}F#Rk@!2JceS zRkFm$QfynPTIFT_+fgd>pWBG}G;5)kmut8{fk$KcfgF!ksc*pe-RIUSHU9IxEzYNI z_KS6XKhw_;x6J0FQd*7YYE&$Ois=)8pf0c!7h9>+MOCHh`PpyqRKyg&@F0_DStH;4 zrAMpQe%T?s!zCZB+6x;+3&tnDjI&i^rJlzH|?=F@B}s$z?(^)&UjTMnS;9g(FCHz?Q0-k3_%q=ehL>ycZj) z{7cKfv$h<$#s*Rqa#RlO01v}x9c zH>2)8({|PtM_Prs&}RZVZ;JXfAk0hbaEO84QS0(B)vkb)*YlFG%%7rEF=x>6A$!>n z9?6QoG072sV=sQwecDwxP9gp;6*IR7?vqrcNWc@F)%?<9qTTWKA|X|Ui-{LZ6Ng!< z=10`R_3rqKh_jm~#yK~Q(FZK-@eo?21HiSmARJ&f=q7yBM+sXVY>#0(%DLMj=PzDk zTvHGG5bZqsh8)VOzQyaszJf0C2>JpZk}WJ?W54Sa`4TQX)6|$wO^P?SAmqUJ*y`^F z_lbnHg`FJl*p>$t=~Y=(#h*^~aLNi~Hf>CoA>F|-c%xa;r5U0@s(9Cbi2jQPq2j3F zTq;KmGF2@V@^Jw*L6ztR_r8cG7%5L%!tUkW<)KU11|B2#-pXF&ah?BrmuL*g^CIM1 z#lN|Wea!pF3sy7fQbb5*iie$1s|7oK-(Kw_s=s)ew(>JQdw*IN=aeETloehIh?w~w zA7d(%lB_9->O?;K<5I84#urpk<@tyz`yF=Ee+Gxm!QKEw721Hs_(coPUd&egr$?XO zYU*_Y{O1r4$Is@g0!+fwg>C_=4_#LA#J^+U5yC^SqlYfakenD^l@m5d#ZZc#r8G!8};=f zA;*sN?jW{}aq1n@9(3jB)iU{J@wOgPUKfCQ(eC&^7O^!yj8R{{tw%XABRlXhdPDDa zIeGm1<w=C;o^V>Ph8N{tCmj}K*WU_pOD)Q7n9Go z>XYHMzJkft=7B+%wkHM-1025U5=K&sb-H~9uV8SP&C=U;CMDSs&w|^)7ywxTInZXCd#Z5rI| zUAX!c^Of6+t1NU%9-Hvivvd!3`%A2$X_EYHN0#!TlJ=@b}rVALHeOH`(Vu#)tj)tRU~s{Prvh`KeF8>l_&xs$Q*8InS~M zKlSK-`cwD^wRbbV`KJ%DIsDeM?8%=7$Vq2e?N2?7!Y2d2mrhxi>I%>}_~cA04&FV( z`u*G+4wb1tcO9Yf(d2f#gf%J?>Q#qIy;|FPPi-$~ES}p-PAKQ1J$T!q^5@R-BQ93= zbFuu?Og8OGl3!?po)umh5+(lnkG-`fV=4euHehldrbVU&oG)CP}z^FFfo$pY3z$%(&c}>!+JE&>RjB4EAe7aMRRZY_D<}T=85vij_gYF zNcprsOa66OOcbt(!pa6IH-WBVzSi(D4oK6V)cCUlEBrOJLjks?aBXY&DR%7Fu7B~? zTwfbqtkJwGyEyJo;AEjckMhUaChx;@2KcDjK0FuR1V5$8Ui(yj@g)27kJuD}`0X75I(`p+ zxwj?MvxS)FHu)lS^V|Q=E3{>7l5JlBFMT0()?H z))JS*I!wd;T(y;>5BmK##L8;(4*R*wsHjmhU{l-ftNt zeYCBUl!)IqN#l);9vh(EEZ$Zwt(8A|+8H28L&AJA)nUn*ElIQGrx!b4{YDD+t9({} z_^>1;OY)P)otI>3P~^YyH#(GAcqG)Qz)=*8gAQ}J6zv@7C&k2Ej6z;V%9<#uBKtL| zHF^J-^G-i$>tk*r~ERY$!<2z!765Cl=F(8l$5qtfaq^m{IIvQaGoQ$0tOU202u6y_(N=@ z3+o<3lbP^~nvB*YR-SasIae?BlN+`n^zdcjnS$&S{r9LigP$$_(TBBhy*KR z*5Lg%rF%79%39Ebzi}~mjw7d$j{?XDk(Y1udFbsqf~Ndc$XC>|c#5pUs0V{r1}n}! znfeInG3PRWsYjM=9-T8V6gRiz$5^XT0Y}aS-gFd0cY%06?}CN9{sqm+Z^Ae+jOZ(o zEz|Y*^Ao5d)P)%R_VEDPLyB--@|Qxo_|`5~t=-|E0BOD?zYy%S21=F2SWG-B`*)O# zCzbq*m~}d(hvhyY-!2eKe$f>kbUGIsq&wuYSDdv5sZiFx;=HAUv{BA`+4)HaX_@U^ zFA==EfuRHQX%ZnWEqY(eEFMFD%}xs4^dUspGSpGpgeM-Y*XYlC=upJMEz_y)Mm!r( z^y{CPd54zo1!Un-|H}Xj$`8*TLvW$RuOPLi#Gi`m1X3GeEkY{p1r19E5r-ognY?NN zR%)f$2x{$SO+}`KN5^9lD9Gcg6lLSA4wkhdd`wkwmENMtjF(_HxjkuJAYWo@ zX}$Ps8)?-B32A-V1;_1Miz~kBI&nc-Nn2EDeTn<7LRyVSvd$BV4< z+e+-Kscj|JTBB@#sZvJZ6dEPB(x~a^p6$u#A8=2$k_Jus*GNFNt4m*m2MfSzLoz?LiLakwxVT~O&D+-*wCA-C3MY5)vp((5Xa#@ z`bE;R{r~8Ie<7{N+uE1beOSn}k=CeR+DPj*gOJwBu-Z*BS}XB4T7*We zJM5O$|5Gn)Yp1Hca#{iR@L$;}+YJrXU)ZVox$Vm-4SyM?jhy`PGDIsoWeOB>8e>$o zs;AdzKYX-3IaO>Fa_Te&?=K5EWgpV(oO_K@Z`nHB`7fiCDqp+F*&$3y>ogw+j`3dR zD&s;-MVv1irCyz8V%p(NiVKrWbg0vtB7mx|Pa548l_{7u%v&SB*b2Eo6^=8sZJ@3% zXcIg5Zd~rOBL7?O_!yer@&H__G^(@=wJxKxENZv-{^s_&g-@@r{nfbi7u{mPtoEDx zAf7sD)7+2z)TX(2VHS>I>2-`w9y{Az7?I}6_L|#YQJeeq=e6d3`!%%XGvU&rNEi{% zbTSs_9cViF!(L}(q|_%U9PLH%<68WRmcLPpXJa8r`3tr9WHdR&2Wjz(TKvzKRD1`t z@~5@ncUbyN5aZZj1T`nQuaool;F6Xdo3 zah~WZJtgnngK8!kz0cXJ|15PMVXCKz$ytvaZ-UF-{sP4}9LaI!@{rKOL=1OC5oOZYTKSh+pS? zGfs-UB^GP0^E-p_`()+zidKJl7%BnmSYTkK9I`Z+|Fqi&-(>2sK0Lj-R^W@(VSTB+ zFP9oaxD}eVZ1wcTN7o{J@m*fyT%I7s zcA-OFY?>lB2U+l=W57D7v2!L z?2CMB8{}smZo~Ox4f)wc8s{5ti2Q+PeK@Df8or#5d)PUyC+4Tv|01yj(v9i#minPp zn#?gsR#rcKL;SKYe!9oui~r0+tyaY}<`$pOU)qCBI11BG<;BvDquTs|=T_?W>@J@Q z(CrRi0?Qu~6}U}n*G@QEIG+x?uAVRJPO8!5Xr2Ze(feZ^)VKi)<@~6JKO!R;!%lZPYkBf8##> z?9)EgJl6)b~!(Q?JSD4DdY9UjoC_t zW@Wn4SQQp}2(Pqcn6S{CKH3p%;zc8I{8k;oydA1C(RPEn82FYQK7z4AGuKbiSGb4A z+w)c9p8vbi+X$XPu0(txcyp zlh@YnIpgD`Kohgb8J{Q(wS_-*LmZubanSVK7snSX z+cH=8nZFfh?7fz(a*y+d_~T!D!iUKFv^?;|5x>$o zwV%|}*0k=1IDWz(u<;mFT2J`mc=LhlDthU6%@}AcT{-$jrq94_TYL#DgM#}Kxczzp zm0NE#OEHMQxZ`1%);7NQLa)PTtE*gdqwZ|rKVfL{Af%O%FTywPzfJ;`u{W|c2L7xs zzTi9B)OdM22(AA|Gy5W>MVT*y@%IO?vwg#ziw8*E6LgQYZR=^63%fVDzJJ8IYk<@v z{vnJF+H4mucwiRj3-r_m=a&Pd`2I;~W-pL?^=JIvXodvU!Y(uUw{(QVSv^!56s)44bJv9x&Oe9Z^-uR1 zZHE~b4#H;D+s&K~r7V@KE1)TEG>vXFA$VG|304svZMtfQmw>z|yH~AJCYY~v(^uj@UA+3EtRdc$Z=#QV^QK%!s z3!7yZP;2@TmqsM(URrt|z%RfA@QJ_sxihZdYKiq6GAc5I`2eI>WOgd9POQl^N=gmh zsZK2%KB~>32(oiA!T>{)T&IhBC&w$hkjNn%L#Ew`?)) z{mmi8=rBy`YfBoS9S9V)rvl>EMkh{s{s2Xq)?%TzuCccn8|zKc6keGUjWmDmcfh&n7&Z^kXdS|Jmpyea zZcNa&ivAcT#oGS$oA?7u=pH@r(2Noy%5L0`&Aq8Ao-Gs(uxCX#WGMOJ1n~cH_BQZQ z)!6^=7piEy<6m!f4qn6S!tlMxQ(vCmenK~RD!#`uUZzh)E z_DTl89(R((UzAjOrwa!!Q^ZKl9~;WrO-uL}2xRUux2N|g6g-S%4~}Cd2QN4aybL<*BPUj%9$*I|4_YbOJRs^0jFBWv;gi7^HG z<_tb~7|VC3pSI7;m79w`d1XeOydHy4FREL<&+L%;hAi}16oQ+>YSFcqlRrOP@?m}s zUZz2DN6olE!W<&jpQ%qvvd0Apvpm?%q0f7*3k9HLDAG4jg|<=~R8ak@D7gMToSJ0` z+PS`b$Z*zq=6s5*#G~QuxpvqjR#FjUKqp@80V}0u8JT3yU?c1shUkMS^*Bo1Qg_gM zIvzoC1ro}U*@fJ?y6vvKFaOtY=5*&pa=N*Jdzq9wZ{#}bvZV+`&!hYPRuUqzVkRrr zmUh?E%dnYcx>A$hkQn{?!@4j9a-FK{2AS6XTHsXpL z_$B`2b*#Xxde&zzLR{ra7H!gl>TE`LCacGBB#l$hKzNO_XIwpFzY+N~Xj%P?LV z!Qz{r-vf5eP2~qhu+DDK$RjMJ`nb|-^@G$NjaRe>n!}|hVBDQ1+CeaS=#-#&*#z#j zL|fHRzI_q-u=*zlQ`5vZy{}0B*IF=_|26sa?1P@m;%hbn4n_RA>HPi-*4Ld(=r#L% z#&PV2WaAN+nN;D9wUpXndi7`GWbk^vqoHqw+d)^Zlr~3vQG7#`J@v2wA5)HTI2>GZ zz}|nKOt&x^f3h7$GeFCPlb1LNGW#SFW;)>2^c37r+LzJ6aRQIN)eD82A9pPTP=ImB z?nlujyAYxRrpM08;%!DUm-e)W&l$0}Igpy*Z zB;IBe6sT`M%tw!6Lofg483iz79_DY2V*L^@DPi_X+7>jLc^b0-q{q5!u8n4klYaT0 z)XrJ3R>)Pk-aqWkAF1ko0cxJ(!` zIgD3o`T5Z-cW9EObe2kDj2kB&g*hJdD_#;&`YCE->!EO8HQTsIEbPe_X0rap$=(m( z*;E!_v<%G8nj9#|goN|GjXLNyS8b252nl-nhAfy z_GSOZz$#iJhl)d{44ElIcA)98i?FOkN5t4|PkkG%g@F@-dCt_^_;c5@#M^;jp>qyw z`bVR0Mb{!Vy!DD0cQY#IXY3ykTxS}6tX81%oOzU_9@p-wl8~yl0dris^3p6UPZpVV zn_1@2blxY6^=$i6xymzin7!yMe9#u+!<;NOLmOSrcW1Fd+R${SL2%PI%09w6oL2oiiuGr{v6OI96YhHPpqYWwZY7WqXuJ0h$mS zdw@7ZM=}1!1-~q#fgIo7F~8w&oEhg>Mq@d?;YQHuStp86htD}9ZQ=blY>x3qk^K2lA)PIJLDoNo76)K5#sM7 z=20bdryrJ;ogST@&1dJZ9_|OBRL18#2?UcP`wja61{*wi&WvMEQzny{5JfJj^PGi} z57X?G58$KZf)eG^cqaG=2ul|c;vCfQ6-yiz>l1PWj#bu3jX2BUX z2v5~S@jwOa1)Qns(J_(-X1*<+2Q)AUm zbKgh@o5}~6XHT&#w#5H*1$tG~e|#m*!qVnb)I}I|l};L(=$~iDP@08UN~c0wH_!j* zI=s804v8BuDe*r_;$p8#%qVtFlGctqiOe%2;epQC$ zk{NeP1QM!{P#4$=3EZElrfQgR#f;QI37F`O!XM$oqVV{w$B*B7= z3}hj*v-Jlg`L=y{Ir&bzCHXF+o@KJ6UZ-vIOzPD>5T+jKJ?hxXk-TyuOHEigQth#K zE|pqDbt}uN_ZKA$8g(kP$S+XSgLlGKdv#3SoK#?~At|w3t7Fbl@X=yllFA26V%geR zA736`}^eN>oHc~4Y#outTes;_(AZOB$TWQPAxma3H zsoKJjAzcrCc1KXcNWGBfeCvfb2AuwsDSSc!D{>zMpNO@0k*C7l@J-TT3Uln3%p7my zw-3Mf@H>Lvr}&+~?;HFY@%tISbNF4t&x$-P@gw*Iem1}#MY!e!VDGLuBcCyc={;3G zv*dFYJ>4}GGO%7gcgW{a`8+3|N$*p(boq42r%uo9Rd|XM^WXw?J%x?HJQR2zev9y1 zf?p+mkKnfwzqRMHtx3D%#9SN5KiSzX+7PB+W#wL$o-8KIhUm zTn)$_K_KRJ8sZ!n86bSQ4mXV4eYr7MeA|H5*&HV;ZH_>y3TUOxmrhElPyuVH)iWt2 zlWyH@E-&4+8aeU4TrAvENgZ%DCk4q7z;K27B^mGfa^ualz9_D{L=J^^%iBBx3mh)} zDCmybj+DBgP<3~;q3Wg@W_4BDD)G8M+*L!TMR7;cYX_G59fIU2?r`KPeZ zBxRvDqqeMzZbM?d7!McyGrb9IF;ge|TESQxY7-O+?FmuZ;v=79zrVw~Ph-W+=fmlZ z*z!4lcp7tR%Rc9ur?F0Ph%+zcqPrnQ@#p;GX>5X)w~BWwVuf+dehQ02CAyXuVf^lO z4?kGMI<`!JYzQnY#wG9kry|xPs##mcSMFqqJiVArZ?$^{{KNSt+C+z$e04FK7fUl~ zy#)A+ZoftG*y*fi?E4h8j-q}%AH_4Lvo5hmDC!7B?MBqR>8!BZyiXw_=W0g9R(uN_ z7A3(jt*;Tz`;>n*o!z809OKvDz>xNrRZxiCw-3a5ry^r&cZ)DeKU2fum z8(Cs}>dzr6Ep1!`lt>i!EW=;P6{(WwV{QSZ#+qFobUL3w06cD+Wp_V!!+#7x#Ls&k2zKlZ&ffw#MfIkcPydFoA2qote<5!};g-UWY| zg7PO{*{Ql_o6u_^B<;Z3SXKd2^jTJp=RaYO9DqNlWkk z62Hx%H1sOd&{tzEHJwUB%_%;XY3SAeD7BzWNomBvLYN`Taw!OyGW|b7=|d?ExqBnG zB938(flAaZtB}oyl?=qfnZ1{ARoiBfXOX)vt&L^WsF?cGNq4Efml2c$TpMdVN(>>v zJ>mvD#KjnI5^gw56f5{5cqCRgoj4RuNID{nr)UNY1FuSC-=9shE?mh;A^KOhEX29X zf}E>}6#_z3DiFJFAs|(7Ac31igHVW)3JN7sZ^7Q7nk589HkBxsP-J`M27ypWWu-Lg ztr2OYC$n*k+1&f0mkN+RgmP zUL-r5T%WSDQ{s11xKNQR0UR{^T6yY`(7oq|C17@62Iia^_2Q zUot#lP`jaAtC(>CN8$YkG5;bo#FF2c#j`UDUoDF}sOB{e;SAJo;U>)GdAG75?oRqq zLheWerPbu3{sRE3%O*W0HEy(j>Q>ZfvYvQ#VYeTm>n})?If|Hr;)dd^f9n4YQ3w#?)%;l7KK4V}ipN8-u$O zd=ni+*>PF^oOqXBLpydxT%e6Hbq5^X82MX#V>A8WL%&Z7kam-hHGeb3i0@orTFL4} zixuY?>ctq_{P_w;|F)gtwm&Y6(4zcF}S~fGO}x}2bShm z@AtQ{&f2cwJoa{$m~iwQxyRXn=@yNnAf-jzdY-R*fVJn7Z)d&wv)@TEAbl4_iIXVW z@5jLg)sE2!dKPcC*jJ20=D7}W-HrUY+u3zJ$c`HKl-{7EMb0=nkOXy6LNU23Tr$pB zkR|^6E^nc;tlUW`U!O$ zALC_e5@S0_@Dab-EB}i)&;Ech(`vNy6*^;ZeUsgPy>&a03Ek92-?C$dYo(*`r5nCb zB;0dG8SkPiUr*ml5U{J9ExiqYIS6mWRn!~L%|<6}wlZSy9iAnz2N2~AAY7K6zqt_DjGbZ$)cvw#|isWCgUud{Vi)Ir+@Xw!7;8)>zv2xY0@=na?-ou!O z{z52N#Q;Jf=%N(ctH?49A2bE2Axl3;MW=immQL7S@e+CDn#d(iK_mhT6JWGBL52D$ z0f7+=L1P9y{jGNy?}{m>nFS7R&@MronK*Hp@zL{GQR3Ff28|E~FU(_Iu5m!*OCg{d zl>JP?2jj(5fz7!>L(Xb28RDnsK|g)}G;|X=&%+cA=N?W=>Q} z&%3Nvs&^4o!~sEM8$*3?~I3 zY$e(N)b!_9hCMmrUc#S9LMC!?H?wQc6!7zRvk5nk!lVc3P@8D+Z}{;GiEOL*0U#vM zX+fYF66oRG~ZWVM98Nf^0SN8*!<%-?|g^ z#(XQg5r#DLt)fdAx6j9t?RW+sHlGbBIF3PRa-iMyBmPtVnUQ~xT&^tLB`1wfWYO>w zkDOp4AEVlWjoSW5^=*RM%JE^;D#!EJ=d0bAKZoiLpOC51Ss)2eMtws8ONDEZc z6cYJ1ZdfPg@agxljC@?Cgw2zZjUj*R3vRu-wAuT}pY`i#Ln_^c$K^AVL#O%17m#Y+{j4kPH{8!U^rm@Da8ff?FQlyHSIL@>?*763 ztT%FByr1<*uAqdQu9EOe^q^6tY?!;LJnW=zMq-k(L9CadBYO6v)DNb{DBI#$QXEy5 zWaP~EPpz4(mt$2550i$?6?m)ybi%tS+B(bml$uT1^;$yX1RnJtW9R@FFgZq`YHw{Z z)*;AUfVuT%!zQ+Wh6bUT(tEJ%_Is@;6sNXdCXwnVc0j&n;!Fc|F8W4bL;`}Iog`W? z5qTC^%uN!x`8>Z2XQ)Pw;Y-WdfK=)OE;%FYuAd}iY)7x8d-hL^e_F;mM{TWV{C8w; z<357!7cAH!9N$5hE@17np;^3W0UMi}3MhJJB&dd-=;7kCO_#`gRa<Tl5%8=8Q-N z`vM3hLRm_W@=*&} zyDp0;P!*A1HDSX`gi*&${QiY(?1)eP9>xq?rNCkZW!n^y%~UT=6C;|IDGhzCi&%0_ zEoC{1M}reie2wu|cxONvQzKyGR>IAcY6l)DCCK6-*xP?#{I*3bC9%ud2nkMt!<67p zEn?||j}r*Tv2as`@?ZOd5*2iX8FZ+2}8`WPSj0PCi8 zzlPuV0PB=A_#0v%l1O3sYY}gLL-Mtg_G8Z4docUm_W&El(m0HZhu=MjM7zuYj*Au_ z%KRY)Jo8^-z(Qic#U&)*y#(4NG7t~tT(}I#_|YUtj{u4$UXbsQ@i!2YQ5Hm7#IyfZ zv+rFG;;dxuB;N2KYpY?^(OXrW(^vK>syJO zMJii!Gf-^qqCvk;oL=~VI_lpG~4j11TR)F>Hf6asxWf&ld>zM-ekJ|fv%5>b}f z__9B&MpwkJorFn!EUzwy19x{MBb@{z(Fk;)oQ={-yYrTdS@PgzU(xz!(eaj7F1b;vL9=8y16cs&D5@@Hg!s{Dn+!ZAzeaQn$SVHS{C*ZcS2&90p zyzhDvmfdGfTI9=J1O-8h0{^5%;*O!jI9rX}MYvLl;pV4INbK6c!bLhUAqj1Tax!6* zaTScJzExfH2#I8<#mDkz-0a#O|GE}%a~Bzz@lBW(F^g-B`SHH8t>Uk*@PL~Q7@J9; zXGMSxa@*!$tq-6lLM%44hbrU?Fbr1MM$RImY_nwKjxu)VRsn9QNh5JDPMr6H3l#lWMwHjsN z3g>A|8jSI`9%dQs$G}lLKFZ~7j%T;SbIEaEwf{9oG>`YN>Dr;={2mX?g2hI@%!BcO z%znkj=}>avO1DZUX;(A>fwj}aIacyJh#j#HeqyEB+wi#3=AK=) z5&O!1!S7D*XYSG-SYQX&_Yo`p1GM6&6*=huT(siHTK{o_hz^Hm%SqghSWaqLb6Yb` z6=2wg$Jr|%2A-Z;n@UjDP*2VaC~Ke;m*W|nFas8%|0tL>m_aPR@KLV6#$zz?ET=?p zi)BOQ9*scp;gAx*MB4712Z3OsSwD;3QBpkyBAD(tlMGHs`p4N^Vi#nz@frn5A72WC z^O@(GjrgK;xUrX?s$|1c>C-u*)R|%&nkJUQIpI|srub7{;AJV-EEudhpuBP!M>lpv zaxyVhaP;@GuAOR$9}i#2kJH4a6H5BGwOK0O4DzBhZ4yQNqL(EmA8DFRO|>RK=wZK9 zDg&~XvG(qd-y`lGGU6&)?XD^k3T;|~?EEW90l7N%EUvbc_x5`w)$plJ54rB!4DqUo zcaD*?rB4Vl@y$`-I7!$rn@_4@?K(qt;T)59|DtgtCfOEW5AD*_ z3%(Vv6jH~5yTHTCS-%2DJ@Joj1FCu<9`$bm7u;Ij!oSIhH;aMUuLDKrg^L~*Dthbx zU34)OJtbIliCMI#iVaS>_Hj9Zz3E0d5ymvLn2^|XoF4-68vmSsTZQwLn<=sekKiyF zqU3nU4n;{*nB-UVx>`I#(@Xwth?!}==T_}^|5vi5$1e(_=*|aFb>sCJgg&j-9H3v;23duVLy437(p0;J6g-y709CB zrlJV~6_12|>)WX9wGGKKQEQdxDHA_@=}6G)h^Q7<-5BU(&<{Efrg2OGNXNiN7x@MW z0c`sK+u#V>(a?+o0b-4G&w+q{4DFIR%AyTMT5n{NtYP=Yl8h^N&c_IrQD78V4ZFB* zh@?>(#xA4z(p}VBeYsY&a3SH)ns^TkmFFCW8m9A1KT9ODc0calo|ua0!M=%UXn|Ic zj>Li}Yp{2}y=rPSpym`Ch5M|=;C-Or95kv6NXJBy81W^DFE%UH%(DbH%2YyE0b5yV z!Lk!w8b&1r*ccgNRICJl1P*)o$A0Fp7mwIw_cQ`U7~K>)i}^2pHfZFlFj?x8IA+&x zQ8mO7gr9NX{rWz;M!bE$bB|dCWHB{kFqY&F4QxN z`yOSZV+NxEUB0ozz*+prqpa`spJSvM)92#|_*qwhpQYeuO%`{h0{%iP?P_*HtpI2a z&-yd#o|6SqTyxd-%eu1tkPEw$5}9W5z86s0fnYp;0kGT|#^C~*_T=CK9>gY7OCF{c z_Rq&I&U<1emgdGJD;R8+IY9yUrYW+GczaEvESn2#= z--e{nr_4+gxMIn#ox==UmJZRGYqepnGbhNX{LdND9eAvlIcAjNlpmPLv)Ae= zccxp>^26*a9tTN*H3sAnsFA($YiiPfu|#bt4Z{E&gRPy=92C>@MQE&26MS>=_(p8h z7CMLVLn~RLeOO&)40R&&Gr#vu=IpIDf2a#!a%T6!(JyrZ;?;OhozrNnCV>v7TKHun0+oLh2lz-yHT8_hARnEK);n=t$H@t6;@d z3Y9s?ku*(Y_Lr6rfaipSC>IY_VIiZ$q0PuG9_Km77Lr7E@okSmol&)yAASr20FAev z#(3ipjD{duVM?@IM-)PNP8ig~m0h6Bf%1xJAybGiE)iH2g51JfhuAAqAa;>rF!k>p z&PGb;$8FpAE9`481>gbHxB%jo)a5!rKX}YmRCFIlzEW;%nT1qj?;5~h%5>+gx-;Ff8k1t5EHcd?>GH1f=< zC#wW-hmM~+6JKDbWwFb1eCZghj7p~!5jZG{`o!Q3?)KL}X9^nl7CI1Tqpnu!%v`#c zmR`tDb!bV}7S}uz|Zvo<6Kor*p-qas08hIBZqvB$;KVOK_pPeefP1GamBEdrT1Vua8U8CsH=0!KlW&XWj* zmHw^9YL@76*rCK?0I>GqBmJ#J5iW7}GtdJ87k34sfy^FIzMD7(To74~BtZnlFZ(gY z*x{^1Iy6Baq}#h(Q9jFAP7Og@|LI6%=CI*1c%n;?c9K4sWB-6YZXV9ry?!F9Z7e5a zADZUK`HK^#4fp9OU}=4D1Yf&MB!Iv$d0?|hbUG|?I0+1Kd#LkjXuLk=ax~m(`Xl1P zXe8F}0|-!xx+W?|w39T8MK>mzRe%yE$&$ooWJKJaNRsVA`Y_2}rR0iaM6NKyzK|Vd zNegpqd+`(^Oe%J`l4IT3#IYURLFP&(W^EV7`>KS0HS_Wsn-z`)j%Hb%>i1AhCEd;Q za!~fu4o8Y4{xBkbUXb{1YMF3-g4BQXz5kQ?ef|iShcRxMxOA=`4qPDo{I8L$F!sR6 z2y&z@Qwl*eh0875;_$PIei8gsi&8mEWI@KYEmDgIq{wn28fVM0 z46Jzgku|JqhMKu$nk%Bxjs^Pi=4usGg?89p3x^!y!)@}+1_Z0q2%8&zzLO6ixpvEK z7>0@6&`ZH6pFdp%a*F(S{&z)Zj0#t@Nj{y~9R;R3s&ifIrdHlx|JfD5;An!LiW4@WUJGfb1M7>xF`JJ*}G=jx0V zPPydt#iH_->984D;oOAIJ?Nn5(Iu!>T~&~n&}QS&&?**2t@2KQe`hB00B14XPf}$o zRb}DOf&QzF_`UKp2oss_@_y@B_o0tAQMfE_VKg%bsh~dPk=ruvk`J#5umgOd1$ zbu31!$lx!oW9{4h7D8re<7QxPYM4G>$DEzc5H{BTG#TQR!lmGV(lFf|WAVHxjfBhY zRp^GiRXj@31~et5A$JHNLsOs30~g{Mx((pm?+V+MPxh;Fc=Z#k)x@BY-#_6@ z>k5mQqrMr~l$SavT!@vSClO#L9<*C~1>oCEz!PK0cZNl`SR62&J?WYfc$M%DBsAUl z9j~VnxDpebS`*8imR6987y_WrvTTHtjC-DBPPT=wev)<9yvO+VCt*tlUGA|bSu!rT zJ^Li<-^T&?=#>SLx+SctFeXn*_2r-NO-ch}k;(~Lbk|?l688$J_0~L#*IUYOG?o*7 zNKr7i9n!2r_eCH}UrG3F!2``;a*o<)lS7tEOef(a4N6waosRLlz#qYFHBHQ|HC1t| zUE$*dsKVvq^kQ9z6a}AvYvIa&7$&F{HFz9x}J4QE_ft6rb-@QB3%w>fq%mJ zkkmzS``uVLrvDznXclw~rMn?_>C=kBN3V?ceQP$$O>k^^$KXykyc4j%*z$@8p^o2H zjR@biIW*_X7(RAZX)nE+Fgc-WE_)1`QzS40bKql*Wdu1xfjz3u#HOAY$ z)ieWo#I*KqCFbQqic8wpJsdm}Kr1k#c@ZfRRI5xVMSqS_UUkfUy5j-pK9upNqpYH*W)ZG<>xIyx}1>%$0>S$Ndn2a-^!Dr*?1;iZn?shv~jt-y<=8tWceVS_Hs2sVO@ zq1w3SHlOQesDt{H_9%Ld zD$zB^?;eN7Do0tevHZk_Q1-Mjw8@w{n8{=;(11L~Kc8$V!x528CNRtvv=pFOL#;}n zRjWe8hg!6yE{KoTUjY9rCNfO8!tIYj`x7%574XIk6`J8ETKJZ(MB%XTwCfj$5glIw z0Il%M{9z6QJ*gT5QSz~@t6z5UXc7}>iajB&%%N5FSx&e42x_Q zW9%IN8j`P*bw`BFStmUn6x0Xf5iCnd7P)&^=Ur!Fidw|_*H8#W5EQxaOol`ltq&sz zg;ziTo^GTRnnE;;BvHhWkn3}xgVHTvD8F|r(vmsf*YFvvzWUct9P})vM?JVW!Gb<} zD?RoYw#nw=tCL<#25`babW(u!2CI4#fvDC z1|N68MEq!7_6dv`(qXZvczrcqVYkvqt2UhfQ-1^zqb~b6eY1O?qJVcbpi>wK*kv

ErMfyCV!ip=X5OAwuYYE17@Jo|sh&3c|nlsEL3ekF&M)F|uJcp}8 zR1(F!OW!6bI@z%4jkE#dTSNU?+Ka^KE2;P`cr;Yhc`L&xJKX*?6jX2~%d-=~t($zk znsOb!5^06=yE|lGvdeLefP}FpoJXK=Q>3TUt1Q;PhI&`{%twq{KSG5x5^7Hxvc!y75fgq{|DZL@UW^z`nhw{dDgah--CrdnO?6A6iXFF3m{hUSt9u&>PUr|0 z6x&~2MzbncU>niMFS`ZIF_RH+iJ$J5)AcrVM%WQF zi!Xn8Z%zpd%}lSo=Te}-gOkw8wr54;q@0u>v>N4qd6so_pS?S@!VF9-w|jd^=~6=c zfnEK5Wzvj)6N=Nsjk0w5gdh{;sGn!?7R%x|xfb1oG5lYs*iQiO_fo20Eq1S%?U zamdr;=v@p3%(`XNP4JIj^ADUKos_}L{sHd`!pnF3gLP|n1h;7W^EaXE12yW^7BTx@ zw8HJWYV@bgNcGMq3%#>!CDlW{?gwGaauvq(9BfJZ)c+ zL%P#Uet0va>317J$*CuIeb=nwE9T3t@{EEnHvKU1@ImT3#9;7&C@nX?Mr0ly^)`Z^ zlZ5SpC2cD|z~JqoPZjj(dz#Hpv|^9fUWp4bEuQn5y^{P#dCp@v+(R#BuD1HtuUjPJ zL_1}}g)x@O4@z(KkNE}T=E70%c2M{#pZ`zR$DMQ%unY01zYB@PJ3!c_3uFq8a9C%_ z@nHr&*JZCD!qsKdyaIouR3`4g_>O(>CGgbP%#a6*aR^|AFMEr))h5?qWjl~6s^Sf* zuf<+jiKpuJIdpL$Y&@^%_5iR$ta}pV!-2lDWs~$`LUaxu)9|n9LBn0I@>$QZ_>m(h zdG-qG*YG-t;juPO8nx7KLTG7zBi-i^DBEJ>ZxSakP4YYhGj81ZhKP0I5P$hO);47Y zKJGf9`Le5x7E$|r`ISZ-CT%Uuxm|uGKlvQ%!QS94pJyFANV7#NGX=E0Y9tsLCfpS@ zo%rbISqiM@Wx`C$B`UibCo^d&QMO^SvLyG` zE-FFDv?hoBRJGxVdba@H#vz04Rpa^l&$G0CfpmZNia=SFt4LgP@1;O}AtXwmY^!ej zZ@3YI+xus?l2v_=Yj0YIIqPTkN?7VxrigFticHw20DZRVjiB;n&0i$etE_{g&8(z0 zog(~Z)_cvYha<8E3%%aVxrM7jNytnQgUy^tX3q4hp!?k`65YX5%$)xQ>86O!S}Szl zLWt04_Ji>8QWDp$i@x{mbv)~jS1Niq$izB)Jo1|-%NuPG4MP7&9e zAbN{io}zA2*|eLGI-*FNgBT0}X#;^xl10ib`xb~lb!M^awawIAGu{GMEcd<)FT(iU zgx`bskq--A^&*b1jCAssUu3Nk+d*?;dFz+hVsV}9u-^YHG~%-wmyUkRt@T1ko-t#86?%ygGKO{{LkYpdbhu%%2hH<%_e z$<$UnP|ezLZ?)FZdaxyg^rmVpk5|0R+Qp|_2^TZ^TW;S5`vB_PW*QQL~QeuZ`FRnQ968Y)td5Hnc6^$XuncnQJb0l#%G zY!z@yknZ>u*L}qcUtzbat1!EM#ovB~EmVQOf5|hqvSH0X#hp=@s*;O@c;4@2EtYTC z%I>hq`w~Aq5lv2k+RO~&4Yw=Oaq+NitiP7Mh~Ke|-4$OE{vP%k^4&JpC*DtuMmKKy z7B@nz87*%6Pc&z*Yi+GX;tLzkd=+=>d>GA_zRCvJH$+QJs2ho6op4R}qJ;Pjk&uHF z`|eei-nI&!;+fgl|83&w>uZ?T z_|*-Gts^{rodO&Dq(vtTc;+``q$?7u!H3Edje4pknI0w?u|Ks*)$8ae(=`6#>nvG2 zn86Re&L*_2jZEiIEZXZ0B;3aMq&HYR&|zWkFkrV=xVscUfja=;GOkw3kYwdB=r z;3&ZPNFYIGJMaeU*{ux=_s1ddom`h=g$#y2T$}vU%rc6%*}=XVRJ>Z?)_%%D3vjs!KA~8D<#S3?`l#Wnd12#&)i~%ANW3+iL|F1n?gIBCy zS^T|WIN>h$nAhEo&Y3&u}`kyxdyWY2?!vKz7r1AzD26QMAQ}QylOZ zqEyt-UL}K6tge|fE|_HVO|)Ut6wYiM;;CEs##&s7Rs9_Qx|a1EDpR~!16-xqz~DAv zvjOTTb*e(K@01#Wl`@c|0-IzYSp{ljAVmcZ%79Y^j>|x*3Y?LF zG!;nthCrvgRVYJ-2CKj<85pJll`@c_0-IzYQw8?PK$Z$L%D^}ki2s&g=cz!347gOF zPzDNBKu4f=(cg<@=n47}6t8y-gm`^vV+nc+b>G)_vy2JTZkKHY&p4H|0uecO5+8F@47fwELKk-q zV?|ee7+rbmKZ(hiSOc3Dy)v_v!|$cAOT2|U4(po3y-?;J7LUX9eA*tCu07j@SM6cN zeX7WvgIs&lVUscXdelg-!6P_F3od;<>v^kpSWd4+q_YYX#3S`seFvpJ8IjtY&`%Tb z>-mH4z)pA^amYTO|2S}gd#Y>H(tpqjZW-P zq{MTKT%kEOZu$$4sbf8_qiBViZmA#xk-#>hKp=ro@$5W;cMBF@$%IoT9`zPNBSn1G zoI|bKM_ZH3pQvLct-v=%>mnG9iM!VBWBs)E@_G6`me_q;qZ$loJT`p|j!_N{mOCEF zw$;HW8=t$6WyIYQ<}6dHy|xeMt?qBhKih{}8e%#|SxEMj#!1VUku5oFOM1k=5ze)= z5tb^FA1CZ*Lvbq{E|y4D?t82tdyx02cA|6h5bsggCC0VlFYjl6(o#C`OZ%~(`A`Dy zet`8KO`R2)`x)LnNC&k#3_`s-@aoHP_-4k7=h{bEd_(KJM-fHi22F7rCg|zkfn2Wd zTJXmXutdknwQ@4-_mh@HG+W7Q4zNzmijWl(;h*|M#gC5t&ZJUsxKzFET)1|MCQW51 z?&TndQ0OuJ-epPc=1~tJe>~CR-6X(k4%0E5&4`-8x?A_=q*xxG(uq56f@%EP=F;WV z;6WCfW6nlm9G5u~UkSglt{K6F=%wn3Rs6SiS*Niiw(4?XC@Xx~L5me%u_VP(+8SIg z-7MwA(SjGyJzv7CF<$zWrny zHa3Uoh17KO@d(P5BER=AP1tBZ&n2d=HrtZo#6mxV^X!H^L!tp3rH(rjHzS;VV6a|F zpjLtl9RJ3yaLXn+(~uMPvQO+b2Q@=#xWc$Rvb&zt3p(+%-$3$mwbrziMq9c@d=063mtyJ$;9owfiuiJXRP;c%Y(qd>$UI;9e0@B zqro%&!-v@;+N>Pj`h7N0TbIRWzR&6s9B?XUPd#MsU$?;YtDjJw&9D0aZu+jh7{zb? zfL+`2R-D!WtXO>5_yHC)$os(uEU)D(gvDv|M)8zS*mAS7C9x@4{N+z@?sex^{HIUY z)b5$MP?bD&!_#pRidfhVSVohpKDc0qU-JI3gR}S@N3neFd7N)P%CfW#UHK13SyG?P z;f{Ls3xdi{>FJ+XFnA^M0moQc+DULoFh;}0Kyz*WWu;)#UN%n*Y}wW2x;f_L4_$opdo!L+8C&&P0o-@5Q4(WqsSd zuDQ{| zGu{)M*YUHTVhMQPI-d3!>y+^6mo&q1z^Hq$-Oj<#}kO z0|&M^)t15{L~KU5K7(a_sB(05-ncn`r$UXNa5l6^xaaY}aW+mO#L}yV@xAo-amE|z z?>xrae8rrTa%eI2P_lnp&FMg3`%+*F5rvayvC>z@{<7vG{tVPU`~2P$5SuQMgZn1@ zetI|N+eB))l!a9(;14JY&fm?wU$N^ZKlLDK`su(LiE;6$431MlO}J&S20{#9qr`j} zBMl-zI~M5>>}Cl#Le5EcHwOus*rc{rl{{t)QiG8ihj zqYQ@7ilJcsN)!gSmJji#zh)`!WvJ^E%>F2mSSmyDe%!l`(ET!$q`-??WhhydEs79| zKx19g8v0}~gvNt17((Mt3YutWH{mYTldQ|Iq%pA$@xVFUfEFtlyavx`Z0L=L+&Km(ni`bG4({m8EKRSE3H=$EjK2V8Pv2z zlI$#k>{H-MBl*9qYsyUjZr_`6)jCYWb4t^H@TcrL3?^O| zfaTbWqGw^G!MNq6FEH@H^R&F$A&v%TFJ)H2=JkWX5fn!$b57ffy|VxUTfd>G5E^;1rQub)_Sv z-VT}_mvBIyLHX_XQ=AxBM!lNAN`_tq2sM-I(Se>AemZBw++09i1_)3^vj zBp>~~mPA8O&+pmz_xG}PiTQ`x?p7KI>asAwa&_o@7VxH1@x{M*9YmTb&v(+ zb^PG>IMB@(nvJlC#P0U_3?APjZV!afa{fu&uXy5sq_pw%jU*leWqVX}?1$UJnw>u> zp;@!}B%15(kmTHQd3)UGQ0?(UI0K*a18d{HEnK^$jcFL()C>UX;Xf2PGi*4L59whx zk7#>6Ns?j`o2SHC9B5K9REm{vDJb`u5!A4APRU$Tgd2ILU0&*#z|AUZ5`f;5U;@kJiy+{r*$vjxJo{;+IQp7eq_+ zFx8diC$NSbZKY6|9$kZ}F`~TZkV~9~;{uY0Sx^sGo?=-eO1pui(zl)qJ@?PJ)zl)= z%V90MbCxW54xR-r{Uk_%b>y?_7?k$#tEZ>_*n&s>gze(@o(a|tfbfOHa13RY{`jcg zirwAbWW-YVf7bi0u9*9&va{Et;24k;1=~(H)r;Lwa{G)5KWLOHWaGZ_}F(~;}?EWQl;0cdn2XFJe1O8{4at+jz-QGe&IL$ z3^f6I;KH9-7q=CspW)UC&IBIWDqjcHnpdTxvzsGjX>-|0X6(jz33Wgl|F~1IX*PT( zpgHr|CiorMRT#3=G-uQOdy*573!uuinTop1P+ z^|EDB(#oG&@b>{ac5OJp8@I_i@R)O0C}oV|UGcZq97Kqj-=VmrP3A=PvQlybvD0-O9I~gR`U^l+^lj3r7L{BdByd#U&mJC*5!> zZ+)IkNEm!OL{a`anr4r`m8Q}s#DGuvUFTV9?^+^WMg)EkfB>cDEeGxlmHOixB7eu$ zLdlU~X>*a^bMbsv6*-i$U&@^KR9(G9w$~az4K4H`cF5CMu<8;9(MB zli3)b%nfnFgAM=zpZ?3yL1-lvN4RpN2A>fRX6Trtb6ZXsoG1*@AFPLVMyqPoRjpt}9E zP<2ONplp%VJrN+^-Z4lNuC8jT&5@NYzD!Ek1FSf?*M1@uCdwxv-_eau;+PP-*_$CdUuutvPt%>0d0s?jVy5+G zH>wWh79Y(})a`wc$dq+O1|aVr%YN$hJcDq6y$@rv|2_TX?=Wq&E&dlkb^OwT$7ov8wBlP--Tg_wVJi0^wj66nMArAl9MtdE zDe|LFX}Umb&7pSIM@*YKBH5t6xDma|3@+(}v%Q#C3C=>XO4dGh3}pVL8Id{JefPG=DcdX}O(enXzbk_O z(k#T?(hu=UX?#WS|A=Mf&WTu6hDeDiHDP>ru&=Kt5 zGG+Bs(PS<1p1?gRAJ9VW;P#5O>nviYh~i_c+NjB$pl~CKMyQ6qd!KZISc6YJ=+8a^ zSHwp!y%eR_Kzq1YIPQZ{;t|pKhU|kNW>TPRpQ2E=qoB|no1##F?jeV@iCQWTyPQHB z&MOMdv4tpPR@oJ<^3q1KzYEp+k1Aa@O0NcdC@!(AFe~0mj6Q_LvD(L`c$c^Xm%FK5 zRE6%$Pk?SJCJ<=Qyb(>%t-2iDO13E6?}JQ?gj>s1H3;UsSxtM!b3u!cH< zBZ8D0|IPEEEYb(3kSHXd$ckFK#owkf3vR-_PG3Z*3p|3O3N<7x56y-g4+$t6lH$aj z$W}wwZZ{;W{5mls%YK?ucmIRML=OdbRv|O$Ye&+)qw<|W(Tp97dUe;XsXB0}iVoj7(r?Nyx zh`h*&X-BozoO>lYd*9`$b}c1#Yey{D%eK%WYyT9fx8}1>Gpphs@jeiGx^)Pl(T$hW zX#Q!1(9^BMG*URF{1Hyn%YU?MgY2ZNaMfi>Lo)IG8+?F6>u$@WDrfv^&J7=$t{N5C zZNUAJSOTg!?T*7h>;RvQk%*>-IpvoVD(h#3*8zJNFPh0K+-?cu*5n?D;6_omIIZu% z`G846Xj_*ngwVq{Jsv59oKSL!8L@n6oR*+1D^O&7F;27Ju>(NFcbz4Ks0eOIR1l<) zfcVfL$*}mbhyavGu#_k1W)(jd&^S+Wgp!E12pVPBXRuc-K-}=fjiuA{O;qz!pchGy zloug0WG9dkcx|xf0vOZwM39(|GyhvrAj8e|GXYMafq?T|r3?&QnHGQWD{AFovw?11UjN zjY*2A|7@$pN8L2(3cQ#68+hB=hVbrq=5oB7{iyIpBFC?=cCL*?JF?FZf8G?Yb?%`2 z7PJtzgA1StiiQ5F>I`%zV(n@z$(Dvn>8a;TMooddk#pirB70)QM055*;MF5Ogx9du zlr2&M*MG0@>Jbl4RqT1<|3a-}5Va!sz>uhECTh!$%K7>%D&=GlIY(g#xoh(ykSll> z$X%NdMsCOD$Q^@LmKyuogb;F;W`7`Sh;Ht7T3=fuK@q{iyH5!fJ}xh!@Hq!ic(-<; z!rgPuUq+e6232^scB&79IMByqFWs{^CT&{za6O%J)Zh^@BxE_A=3-&-WL0pU(?)BJ zr~d>_lb%L*dloyi@)&&uW#55E!&`%DXYx@WMkVnf?X}Fr@^BTK>=w@Gtj*VM8qW`P z*1ETQ*dJ?@Sc_QXYhM2h1Po!bMq*x?;a@{ZG1EO_ zRrwE&yITHf1XX%EXX3jD;6l;>oVl>!@x#+YcCFpQQ@dzww6FW~Kc#3+ZRZevZ;IAQ zdwK|8nS%WvI)zP37g-oaa@^&zN0iTz`y9C{b~{LD5$B>57N>HrhQ)(~n~6nhVByb? z5qlGGI)+SpiCP3UVTjb={WBPj9&(BI?y5Q6O8~QB1!=A=p<2&1%e(oin7TQ_ZBYH?rUt!m&#ytPlP zyD5^l_Bie<43t$1eKWt%4XyCXkGx}dv`Y8Ql2uwRV2a3hXY*OzwfMAi*(P)3OXk=o zew9T>Fvk!xM?aOLO$~COT$Im59un6N;^oO&*OA%Si}fr<`C!dzao0a0TAk1wGW*IF z|CdD}^IVohX6WDu(EG|%8&|Xmwee^WnJ0CPP2eyReaGiyjouOO&WZ zDHFQ;cNbNTug1t6t>+|0*m6A#p-BlH>ARwvuZbq;*!-(8w zf}N?r4ijU-V9W1QtvT2pYE4K?0P^$?wx$Z--~SSSYJ603Pl+pztTtvwG^<&Gqp%Yo zd3QKdR={}!N>a^wvPrW_U00y&gmC>Mif@=0l^o^xyK2!@i@$8quB|PiK?V4KiuCH# zcTyogk*dXLnWOm+sakjUo%238C`ZDDN*f5E5n#<&6*J{S==R63ajz z7{e$eHV_goNN8E2q!^?Av`=7wyAJ0I8PXneYA`Z>Z7&SDn{~& zeY7s!Z#s{5#o;$FX(1tUMazCMlCSKe#XID<5#q)7|IWAe(YnPy5y^d}U>>Zq`FDM^ z*R`q<{Mj_E=j7^nitp|w&XP8=E?gfVTC9|;7q{0t3^g~okG!cULoo5cU6KLE5(Dmo zU5u#tRdtu@5xjF>EirCr24Ra1PGqx)ee-xuU+r4$&2hxtEFrIc%6UJ zSL>#EUgy8l-ML<{6^i$5BJj&l5&AD8fOChV*z!S33xy%zt~S3 zpgldDr}x*ov|Rj)0#-I$0_%SP*kbjI6@|s{W+Ef{CS9Q`M{^m0FVJyi;FI{~ul%q5 zwT{})tN4!oT8Fmlz6%+mcpB4`F=2gw?Vcp(9RLT*XuEdQZPKF=cQGPf5?cF9CHF0<)Ad<=_r0^ za#Xujjwue_rPykV`z!*jMe^90K0v!wyJ-kNG=Qe2w=2f+(U?wCQwXeY9^tluXx+|V z^7MgPXYC6ocMa6qb-(TB5EtJ#gy>#=nSA>15bhg@8AO*8{H1|f^8d%$o4`d?_5b5D z=dz3l%pe1TAfTe6xZsXEC|e3TZiwZAWrpT1D5W?MqT)C%sU0gzO?$E@E3H&CH7pY> zD=RB~vcj@D1W#gFX{qyjf6l$Lh(0~v@BjOU*S&M^xo7!o=X3VYXV5-mZr@C?K*@A8 zCkXl$Qe2A|gHmd-D(KL9a})|F1`rf#ZR~beINn64QxLK)V0U_;W`o_MPxs2x%El{o zVZ5OS^J(6^iAVEr0=&@L`+%M-pS{$Bm-Ymy$rCh<0uD-2FPH6o_f`BzPnN|V*w35x zVr{LFUlT&c<KxOJ^*Y(jjLiEk+OCFi>NR9Zh)t)w@4vl8Z*%B_7cA(K5l67m-g4eMTI#SHt$baj@+V<`KC1xuSRWCoT zN{J0#KvtV0Mc0jrZZ)=QV^o8*ezJzw(xy^mnJD7#=VKCC`@XL=M-NJ7OZ%%M#kt4T z9x?6JmSu0itPqLCpU^yV2e%Ae62)InWU0+a1!$Y4kvvl@d4l`(Wu17t0W8T}?1{4T zDCoU|7`zb8>hxc^SLR^H#phPRlDiH zkUTYBo`Pl$2)vxaA`F$77=R;9&d;QPo`J9Mh7=a#wdQ#zTJfo@sdbJ!my&v#`gcv1 zH)Ojp5QC9wW`cHri`os>5w1(r?5uyzwd_Lg7IF9=IEuBu2G78VP8t!`;?N{i5g($1 zI;t!W;OBQM{sV0*)M;#ut?D!hD#lBmz?sw@hCG7+d)s)^)Y+|6);eXeV^8slrrdiF43|q&ROD__((-yJ*1wJQ@wPKTAafDlPAdCl(1c~XVr_ZAshBA=V@N?(F=TJI`n1k!~EHF(7NV1ek`4} z_CEr$WNS|A$tUL%8Ei5e^c>I4z=%G~2a^px4jUs@N(&`8~MFf>-({S_NBLO=6773tnW8OU(llT)~)=OtCLy3A*>*v z^p+#vv^rVoH$=%dL{#E%@8n7EV4`T!JEhmXa~H=uV(oc-nW>^4g7Qv9(w}s{CZEs9 z=R$cm{3XNb+2$C4_(O1I;2MEzEUtTT5z8QifO)*_y6wa9;>~2r*L`B zBiNpL%_92Cp!|OW>GJe2dwL{wKo=$7;>oXhHRm<=FrUqf^d_8B`r{rJ>z9GzPx|5@ z!f(9oFqRdVi+8G~&!L-y6MGwu>ZAF#VJwgpl=D}IL4k}Z=N}JazlOw_Wy#U9!D zjzHsMd$otnl@$CO-b$8*>EiUvShg82ebYJ_m#?8X%MwiX5s|h>DC;J&%{rVTvmPV! z?u@*xGV_9*Qiu0~F}N8i(}H{8ow{#!&w^xIS|VIm7WB0hnffjpP|(db$=r8xQbC8} zWhuJ+7WNStqP8n_+Vh+Dot#o;hZXBxI&Oy@t2WFyU+Jd-7AdSRFaGkAWI^_kRB37}hd4?GaU@Nbg!$ zl%;Xf`7tb$rQgrnkHx@cZy}#NmPK_UEc2T>7Ws?cACs*f4l#;4^|8ul&9NpX+4#UB zMr1MHJ(jICzwbu8q@E`5DDPq8*l^aqj`MMBh_x-`qn=tfz1<#zevJ6UACi|xwF-SR zE$o$OgiS*g*WRDSyM0`x_GW1fS615dCF~)^u^41TS&DJ=T1Kx`@@{$yJIBN?_j%Kd zX=%|}gMp@gD#f&AJU5%QVS|_PE>l?O#)PN5*z84oM>cD21w7eRK9o`{RTE+-1pZ)l zFAqBy;IUMm@Uwc;FZL&USKt>Gh;z}w@UFx&(AIUYtnxmgJs-M&hZXuN?;0(jf>Ks_ zU&0-bI;y;d_Ti*={U9qcsPb-beY@&qX~r(K8INI6iklmrfD%I|z8!CnqNO0*-oqapEh9f_9bg!B`Nq-~qAT;ntkL zg-%N)L3CMbAoA_iYebWP0uEn{FxLZGS-K1GKGHA*K9Tw7fehV+g20)9j$Q0+X(;i)aAA`LwV7v^3*luS?lxrl}j_r*wu;c6zi#6I~jkp zNt@1=@}pbuB8K5C7InklqA^D;PLn_&Hu0bDW371jMAppew&E%6)L?*%R8)CI99EvS zFv?tn;e9$PBAzj!FYVkCa}igu?Wa_#0c*{GDSA*R<@p|cl{{cW9b@!3{7#m^W|u>E z(g!s=m+W6+rosX#6OUe@v!2G~|3u2-qp}p(xWtQd^~w>F4?5Wz%J-)r2Ndgtj-tU{ z=v{jjnZx!CLaWMhD0lpUBs5!AzMldt5)a3I!UGk*%4NJ0_Ah54jCS=?a)-pjv7Z>zR7(y6f50PXNyyYr!F}NOAZWo@+dvXoDZbf`FTmB-DmbvEsAg4+tY$j! z4Lh-rG!{u|f5!G(Rsh#1ZoVuQrO2p%BEC(^nN6Cf#r&SZ{wS;c7U6a~Cg2?6xw$aA z33_;|2#Q~>(Z06b^y!6PXu}-E!gnl)sG<81N~A8<>AFD5NMzM7j(Pr$d9dlc3L)dg z!;&NUlWm(bKn~m6HhU)TJsBhRdVKDex+%Xcn(UUUxWU8_0xcpACoUmwzEa%kn)Gng zdA|i70#pf4IS$)6_R~C*XuDK4LL@$r3-Yf@)j*Xb)vB~$h@zSjm;H&jn}TA~f#ctVRSDRto zGglocsC6X|@owv9XuBf}0WK9?THn(>qCv;N-IFgLS7|$5o?2})*|W}xg*eCPtjE2U z5}GY1g3F~v^>7n;Zl=ySH1%8_4B42HW-27^c>uH$ieVli!2lOd+;wz(KJZ6`7Btrq zNnxXO7RRUPb?iSTW%3B3*ix&D3%zs&{jtDOm3kT>I?MQ~)HC$p2w5(r3*N3$&sfMa zf%=LwA7}boQ%~pn9`i!9xVFOK$`-Z){^V5l3|q9DC*IHcvf&%}!u#2G zY|#rm=K;LOujd;dVB7h|X{-}#`7l2|4gHrz3wYpzY-q-kCZN{{_{@txu2flO>PCqs zn^Bq%7WI`XxG0+xKT zZGLd<47ONr*o%IiZQvWn_@^`3Mfcm0huK*7Ti7f%+VBQq_V2a#7+)}pZD~Spb>ns* zVeo7=mLYh?Y&KK@TpPc+5*75@3<-|22l>Mc{`G9uK2-L*dZo(_oBD0McyR`gn8P}B zI71`#A=e~bu9c?*U9Dm=`gds_(X++)8GQB}78xW7G6F`_Y|DC9`8dn7)f^F5LC&>QaacNEO3iqGO9t@MV@xDy<_Bg*^A4eVA^0{oytb;heQd)FXieQb{ z_K-^CtZTNDJwBK$&QFn|s2=`Th2ffe4qVQXcpPU!Rj^$VsQ~~Pi&iiwlZcrhOI6wc ze9(yi?1!4iMtfavip|~9&2z&%W(Xxlix8A64e!AySKv&&5C;S2v#xp;{TLs-fOYFQ z4O30x!XPIOnqn&UluPHd*Ha5vyQI-LqWTeb*g3bQ zZTG~_-#HFj#O4N1n2MZ<-Q`*Ju;|oHbnnMcFT(o%F&t<(z^!O`N`3K}3`y{K?osADwr zVsbxOjR?vE1HGkDxs8Xq1eniwQZZJe;(LW`H(UMW!Td*9k>2-9>}jZY_#uAnQPwr` zdAvYW&=@*IBA8+;I71CQl-QE3d~XpBLgXxAQD$ABN2}<}cJ&grg#GcvLEoipg5GzQ zr zR^p1y2XQeR!)n^WImK+1KIHR@H)%rMbK2;gi~QoppkmBpEI8!JJHM~E$TJ>e?b)P@ zeEwq$=WZ|Z)sL}a_I3^TFJ*&59;=aA4wkb+SenJ*(YZBzN-3rYM%Hj^DQh3nPK^>J zqhK}dtVIOZ@HgqxPv6`Q5T-7__=f*c$_BG1zTtDvvPf?P6@0@dEN4kbH}Me9K#~GZN_ZFxm@0KHA|u2QL9-;6ti?Sdk#O*HZ}u4MJfFkUaN!8FoS4{SOrm^{ji7>Ne;h_7;oNxqUqgze^4W*L&p9CEcBae+=)wf%OcE zGP<;YCK!u1utF;I$_BO|@N%j<$p=w<{^M)|ee>GLo@;j4BdMm9DmJoi!1bq%n0Vcl z%l$X8h-L+Gfbn1@wV-FY*RO-A#g zfrhOYvUz_K+hL?Wcv=!fl*Zp@bNQ0ZEI;V07L)=GnkjoMm2`gM2{tMcQ4y~R;*n9Z zx?WObrKghoseJYmtOvvIb5F2%b|RO5^aN`eldyp~>wzQW2oja2qbLk*DcgYEz=UIp zvUnx$!&xWa-H4D^vx(2-5Gs6J$609Wc_om%kIT~&!Jwv-@9SPUg*

2^@;?D2W? zN_Z8=vh&_t{%>SLzY$xoevRLuTiAqV35aGJ(NlUVqm^6`<&`b$WHUL09+BV~zT!#N zskN)hNMyT_S@$r^hAFnRnDU_pn#wqM_DRO{(OZ!*$nlV4p+VL<6UG$I!cct={`M5> zqGylf@U~l75|}rAs}%b^TiNq$_;^0%87am58Nhxqn;(6KO-H2IXIbmu2DboUTqQeG z2PZtsqVh>fqv-Z(0qK@IJLF~KeLVbm}5*X87!^O)kNv1 zZES4wIq#woTWChblJ%=>Frs2kY4-~Z?@sF_Hlbg+sAF<`faQm-|!quLnh~*1Gw>hHE=5l&Z<_Z#sB&TdjJ%i@&f1&M>RKJU}5B* zyY$WFRLr6X`|y16f-kWB$WnSdMy!d&+y#Qnu&Av~BkZE+))-wu2is7yecZM3)N5Ex zv!};d#MeO>U}CfF$QX-w4w)catR8~?d3p@so##dHKKd$*?NwsIOm&S@;ico7cC%D- zp&S0v`WQ{D{=J(GkgOXjD>#-`HP#Jyk=+{#K;Ti)Tv}+-Ey~35bqx7Wp3nEZ$U6G{ z&>GSMzszDb$J$}*78Dm=m4QPNJcA<@M2x_BY#5LHCrcy#Px~kPmVK4LGhRY}Yquvj z&fd|ZFR^?O@A6BmO^c_1pVq;mHOmrE4|6O;9DW?91bEUOW<*@e9&7>VlffU_!=?nC zb7!g{_{AR94zX_SVa-E1j&-_nlruJz+s081Aw212R6IkFN5$)@WpMAyXy9s6dC|*^ zGh-JX`U)FhAY=;+Jx=k!ZLB$eW(Vw+FM9=J)~S5UE3B0{$ulG8g3AZ5usMh@;8ivT zKkHv*nffID)vIhLZ`jL1LcTbQe)7qT{=XLd0?X=C+RM7&Sj@%cBOdICJscQXGDb{l*Lf`M%fL+iYYkFL;CXG%jody^v;- za|Pn}8@%ETwlcIw8wmo&0YdFGV)iP!4Ij6kz1~EQL9hM=(SmP}U>FaC?K zIl%1f#a2AxAl8HyhV%OlqJSqZxV^($IVKb-u2GjWu7#`3$0JfuZ0E zI@;(Q6h-qtDp=pZAD9dO zDC=UXcITjCcHk(BZL>vMY4iG<^fmnEQP#n%5B8*u25`S)Y(nroRVx4fDELKk%G_O1 z&5OTzj5RfPyIZ<{9b-eUyvMm5mo}Mr6xcaI*o94tC;(A(qPNk8jKIZj&mQ zSZ%7CH-Vl2f&_*ZYUsE{Ba=U5yo<~q~+V-lDrPx6Z9BR^Gqt(c=6?#98@TG8efvO$@k zZ5%qkgTS;e$vv488$<5KQ5`^W@Dcbrkp=1KXi3c z99%)0sez`sk3%F@$mEoLXweD-I@#mOmDjw>a@udg zHV>KwK^?`+#(1h}5dSnyd%yg|H)kZN_=2@Z+Bs$w(!QVnRMq&q~?0zsw_mll9& zA(Y4$SF>3W*W(E_|C1@b_UP;j;dNoFmd$qblB!upUKev*%U52L{cJMu@~Lzm>#Q2zXTY)b4I z%>Rk%A3T)h7*8nu<(8JX_i^Cnr!2ndeb$F9_U9kGk0DGmf8PBxi&X~rD|~{NKCaDQ zmz)-C<=ht7io=7X?rcT=w)5k~OX;`xiRN(0qtE0YoW_*Q&fz@%1NJJ*^WzsjV7(#} zV5ZM@^05{NmJ4iVAri;?_W)L z{u%T#tB+teB1^WGA7LiCp2oFTyC^z|F3>aBu4KdJ+T>$5;gT*4;|MWEJ|@s(hJ4JR z$AR)Omma&z$3l8+Pme3slhora9B(};6VpvoVBJ7lE8>fnvmk!$3~L#(@^Lx4=9+lJ z{=g| z(LPOy-gxov4Se6nEF$F0hTEt20Km}=G~d`Rq!;WUBU8^^Wv#P#+;#2OOpR(5TQS_`6R{PjKl#Ai%2AojcgTt+s@^O2`c6OxKp(b34=C)QJW6@YA2MG3J+NLoid1Xw3zk|9Z26_xPN3 z?zpDnCf2kB77NbKOu~}!S&KbA1cqw|%k#r-11!VzeD&v0P7AK{J)g4{Y+ewr{u~?9 z_ClKR8&u(@iPlE-`2v$YKl15cusHoOzU~W*SiE)oqc2!%<)VXe}y!DSXg{l4%42F~X!DC#A z2|XozJdN2jTJbn;3!x-U-!9O(NGwEX@k(X^v>>h;nI4z!sg$YzVX-ucI-b`7Pe~AIw zg~9yTmn^b7@}RWju0|%zy3ylJ*}n2MF2(i5Hb>SaNImoNQ_`A6EZ_vnfR%VUUKWU#Nj1`x4Z z5}_*uKkyYx0nN1#M5PUs>ACi`7H<5S4HRa?VIUAbXbC7h+*Q@29?kvZK*S8 zs}`hjkQx&-nCNN$?yeOj^=AREsw_^FFOQ|Y7tZkudfv-pYY@QCe}nzR4PANdH!P~# zujgP+9W%}7dP`$UDY5>lF_;L1z+O^jtp6{@$*`OhgeRJY<%u;ZnV z1~a6b|4_r)24CzcYqZ;B=5~J`b&-X)dXP>FqpvIW;9#y}9myBYUKFZ!R z#k73`#(#G7Bxi&-K&4Karq4lFGj)8>`Z-L?v2~55|rIQ3zwIKwRekn?J1h0OR(E1Oq|6* z(u$<3eBbwavlTuzMFE^)Yg_)(qCStlYfIsF1)M%2SOH=CFa z6{CWQFl<^cg=L*o!?Ag0>?5f(rZ%jOD*jGiJn%sRe$}M%J0-M7z$6GI+^e0w$iEicc z5R$hzw~Fb0_wmZl#$*tDk}ev7oj#Hj*KRc73EyFsGyh46IQ9;&L5^Nx8c?^}XMqZ` zfHEL%E80}616CMJ`#c~EKiN~Yqg_yzlYJgmBGlu1=@-WKt0Pd(XkA!L0-;p5n*Ww*cK#P-PzeB342ySV_Y z@~(nJ#g|xEeC!q?krNSvFavVc*N#M_*9J)S1sHp8(FNpFyDR1# z?76m`sM19yVLX)N)$l$#pGma+Sua*@C2+$|dQ;8NdzSIAR>lce8E?WJIz-c%z5jaE z{E>(4nfO2)>bvg~X%U3)4O0B9w?G?DTPd%1mGvKyZnNs+Z1YxuU1Kobz9bc(aq~N+ z1Bq)o<8so!>ULFFo?h~aR7v|WC8wz*gQ}8tB1Ebr1F0lis<*)gw)2;NU|FsEVjwf! zIM=%YMslYcPKl~9A@L8%R0ebP?aPB2o&n!Y3>&8t>jt@Yq zCsJopiRVx*wzW~kRxDyFln|bD;vA#_(&8;%EnzxYA*#G3(GXi!4Sw-m%mWr*)q5GG zIZ<0vaOtnJU;w{zLm$>MuQ8LtI;%|j9C4(9plhBaaa!8(t7R?PNRs4tQ8(eHc~$w4 zb#lpZi`dgiW8OKc{fWg}TdRiGtIEzm zMG&tvB#mW1;pKKj;VT+p7?+2YoJ<6Z?MErmp(F(U`h4wS{FDyNBgxPAJGL7R)oNcx z&`fL+b>=PJDAMVU3j7Iz=@l5WckKEtuE8qw-frA_%Ws+p+QVPvi1 z(=UJ+LOmRDTxv{&VI5T>IKJR}>R5bd=saqH$ws}iqoMw~+w`~f(7(mgpk8_GMSa^4 zizm^bi_{5ZYNQj?DmA_ml`-|Kv8)tW-cG3eIUd@1pq`i1v(VI#Bpgjw(b244mHGl5 z<@_D!9BGVB3s`wT@4lkzd48duWrZH~gsr4LPh;p{SpBz3;A~3_wuS!XN8`{ImGAF_ zyRobo&5qrE4jj{f6&+W~+NejDUh8F4p?@pQ$@>&MkY{p0V*PPbrBzC-+z+qWP5uk# z^&qqmSsZJX84IxrlZ1BrdS`RfgsOo&QK&|cb^j`gwVkYm2|x&&>>rR52?I1-J~W`o zI|EPfo8g@+e>+uTO%Xj1l9|nGknsS0ez&{<1Y4pCo3l1a*sPjezFZe@N-f#%D850- z3MpCsU6SPmp?_`>9bKusYC9s8-A;3iqRkF$swzvsBax@7tf%$_biCoW0&k?T15DU* zZYA6;_VNqprinGVG&GQ;K~x`c8koDN<1PNZ!bu%6u2zh!)nnMg>oAVV$#ec|5UA#@ z9z{UTYfv-9+v6}Qm2?&_AeX$YgxD6`tmM`_TaBz4r5G zQ}!e)l4Gg#{bVi9(UR6$OBVD*tFQDr$AJbPeECqs!r}wuW1bjpJqpm_nDLQTT2_zV zp4DGvNKjRK6L>kBAB*FFI>=ff2U!PbkY#& zN2SLNwTUR#sh`xrLW8@eqwnO=u9MlbkykLQkT;0Wzrv!_)?pO`NVfQXSv%hd#{P zBAOh!NyfR&zE_C`xjLTwn?5w~w{ln97KnTNhCWiY^w?VucrD+!tg(%r))?SptyO?6 z-vB8|n~Dm=@lfL+6ejPa2c~=mFA3OQi%v-C@doTrE=lp?Q+{Rb%?X}(Hm2jNzp^OB zcmj~?v1&|qC{=1E=m1@Ijgy-9ipIblZKVR&jp7h+D$^{Ug=q`Ix9@U=gQOm(u&FjN zfYdc?|I4idORqAsPbbVO*{XT6KQo7Fw&NehL}f+9MU-L7s<$1NtQ}I>7?@vURA6L8 zrxZCsn&$~pV?KBNjkQq@AJjN!)`Q_Dy~??EP!!Pd#O2||o}7E=7GR40*2TF&V=0-Z z&|i*L;fem%$vKTY>;D#(-&qHPR4{WtSIsSUdM9rw*I7zr6TPB4G=kc^{d9!Mew3VPp_3yWAANM4 z%{ElNannI<1W);sJD0>?drQeQll`6Zn$jFRqyZ4#~3 zs_0m$L@SkO&5`g&v{1z<$xXVuv>7*8Tc!GSO}y6=2s+p=r&eGS`i5FXJXGi@-k<#r z1oqXs#CyQG#*j}6Qvu&stBJP?N$%f5a+5_Uzc?$JK>;LQ8YIsyb3yXXVh?-Bs-%DW z8^GE16G=L`WO>5OeEL&rPvthdxe8DbMRRNZ;=cpPag%jYt{l)v6GvHY(Exe|<06eT zZ!hvB&DU1}%kDZCX(Hw|hGcrE#?w00!0dKU5aP5R!=JaXJqJC84i47F_XM)A2tPi? z!Fnc#nP}p8!aKOgG1&5iNLN5kKrVdo{A%oU3Lmo0!m(V|8QXC+qU+novZXSfRtIS1 zzXIHw^^Dg!SnGjX8^anHqQZ(8S_`i7vCRtn|E169;TE* zFWWp!A?^~Z^L29f&E~^O;B@ODd4QKw1`;lV2H97L29ef)_hnO~`BTWCay+T=3RY2QFrR(JDGh2RNcdk6 z1#>Kb z{5@zkkJ22$t?n?o&_jt}gItv)G_R6A8+>`Pw-TOw{|Xmj4$h_gK$xu*;R0?RBqfI^ zwbM{@aP(Bw5!L?&t&aU7Y1QHRQ=YV{p$t4}m1b0Fh3L|HcCIIl8Yv1M?E_6=@XQ6HM<|&m{Feh%_@l2nd9C$(}Vs8|@UHDX82-yt%kDcI3KdDXiS z$$>VIx?vY7(?@4`B4YMKT$3OFsHxJ?H<4a?`aR+ARC)t{1eo_+cYzsENHILYd>014 zNYx<{c{4KWB0Ti|U8`>nWl`zpB6ApYi<`{-@;ss2PH`{!sbm)PlF*cQ3jmo<(2G~o z|3c;;zX$x={&c}V$bb~L!9Ukmg@4;kj};QvJ|(*QbP78U9$c(jJ8$O{pA9GNF^onB!3$p75uutT;RLA zs!4x`!eFBk)?qv4XYhA+3TU(~J3~cSd~)+-+k+ZUHXD`ZBm5CPZ!B)oyP4XczG!2k z&`ldO}c^;&ugVGbCCqZ+hUSjSBt_ zv$-avFUz0iv7)jWW>YJ!P&RU4n_S$usMcChr#*{u>hZrTYj6EiMIi$oNul9m7wh}WQ za0-parproFWTbPplFT4JubC1y?2W3Mj=IdeJp|is+}v!krxt5-%1JXcaV{1Q-jA&W z(j7DWOKIbP4K={?HwW=AGIP!m&o=&aW0Z|dMfo>}3uP7GGoJWrhsCA08#(tGtaM>H zLEIXw#B?V-u>;)Kc~a_NF=na}5R3rYI$Y=1G}Tn#ZMyqD}hxx}y*GJANO#cS3 z#^@E(J9VF{F0eWUG!iyNuY!0@hgj!-rY+%N8)Me{m>b+6s&fc5y>YKuNeEu>J)Xd*;Z@pGqWQOO4DmJxd7 zMYNi#t~A+n@R1D9$z+=cNi1SFd`Qp|1ES&#L20$4^oJX8r`=#YuFoh45Hr5eyKFJ4 z3oSHFvJ*qzOsuUQ!3?84YdZ=?UJh~deWEO0x2p!tOwW2DUoTIy=FZJmDn&+>K4Q=n zH4&Hi^-v|Mizj8UheF$M^dHA1sm+yvU0Zxg=o6EHQjYu?F;-k9Gl%lEf7;mmR z+G8%Fp5*(QE5ociKEY@A&X4Y&q5lluV!KO@)8HG_O2*0<_Qx-UDRt~7kPg9~C#yQE zo|%ICcv0E$rrcuUk;%WYMGBdeQ3N8WWsF_AsZw2oVSgmbL^y+kE32-^7u18eVU5S2 z#TQ>qq(zQInE~t!){PvWHx^RmQTfX%F;AyWx>_Gl>%X1C#15pbi*)QCi_BC}{pep1 z)q~y;zSYlA4{bH3uASE9`CswaWbxtwPXVrOEWpEX#)Je|=AkLu1D+frCvJbQ12IUV z1C!WyJ;_wi(>eF%C`ixS72wAo3s-_oFF<#do`_MsPK#6b@wu&)Fm`!Ae=A%G4XZjs z0<{~Qod^_APcb{H6FYw8{|;AL>EGhU7Ro)bDTw63htEDy`9LC3a{P$o=W)KYg%TBV zf7~5hTlWcnwT05WZ?I$SUEM!Xp_D{>t4|Udsx4D0$lGMub;ce8rc*a!~ z21wGK;j<%^R%7P0yMuI3t5K!ba4GPbE347~4_cC(H&eY+Vr|tQbP*eKPy}XN`3`R- z)PMhLsuYgTn-$3QP2p@nT~vsfqEVEnU-z2y zQ)&5f6E`iLD>1!WdMMyKg}9T;0I^2R|18Bv0(nWeVm3WA*;9zi$E!m8>OSsh2_as2 z+9||T4~>r+g<%sWRZQToStW|VS|)fbUGgm}w`o;Z@^rQKeJ$p<7n0q`v%tF>%jRRuyqzvn6`cZx!> zMdz_RxfL|qg+P8^DL3MQ7XX4&Uq^F;oGFn>yFSp10&t*epNR5_YUo%r}C zezdg`um7IcwpQ*LJ`?dgIP}*kmonNatH4jNqekuWBU%k0ij5bWqVM3=@l(90jnXPO z5IqvD(N*<&=U@1~HcGH{_b9iFZvzX)=j{Tjo^5SDLN$DcLt{y1QCRH^+*BKTDl4A( z2&||zQ9T$#X>_1%-qOb0=yOHoMzWFW0UsKxn1iD{6j6rC5k50kiK6cH>R2VG)!}zR zkNu=JT-4Ka$R?tmO>m{H(p|shVDGj{pq@qT<7w@b)*Uy^lN(TXi}(|_(eubj7dJ3D6c;I}T zJt{Hj$GkdsFCb5)gkF3%3{;ff8D;Mf6SYl7i4%MH_KwQKqpRgOMINH_5afurU4*|O z3GdfM734XZASVHu@#2lG%aX`3_|H#O4rw}i^HH^WHA=}#TQUrrhHu>5=&77YEYu2Oe85Z$-A2=6-p3vi*QEAZ`te6_G$A4(* z5li0gt$`-dUPX+IUoQ=TtuG3!osEKdac8BQwU7!l(7r48nBvK|B+JX_TgmYYYU>g& zxo%uu0bJo4=B(&}+;Dn{R2244k>BCxV~}8sXn_w1zz2l_;}AGrcq0%YULM7CM=@3! zc4%A0$f4*F(hWbMM8x%$0z(bbi$79>85J8NARso$Pa7tE zpeL*!Y}X`Gs?S}GMQhFvs%XiS9-`GD+Czt~znf^eBuf(`>O@TPhnTrXBwrS!D|y#U ze12DS=BhFY0n`LieWEs1Hf{k%4ZN~b$Kv1Shr22fVP9a6pgnax#EUA4#lG$hqWiwD z_`ka=SYYKy~hn%tD41Win+lanoSn>odVk(iJg86$=xPzsJa*Fr5OLMdyqoW~R8?$i+xFCNCxEHpZ7tL#Wn9;!JFEH>LS#IioY>Z7{ig6qsBa zPf;XKBa!&F8N}g7QQo~vg*5lb6`&%af{UmVRZcUQu!ZqQ5WZvd`4l-wPXSOf?3aCGd{ zW*$;-{gB#VY_f=3&yjFJU_!b{-s$0L#_9ytV*r)<@fYK|MKikzP*Ri zCUPF2wP4cstQg!`>c>e{*z1hHklpw5Z+a-9E%w|GYeGfBV7HT~K?%_T%2Al7c!e8# zDj_XLI5V%Cmsa<>jH$-4wi6qz-?M59*_|VOMvk^v!JMr0*0cb+kV&`tG`)zts!$J>sG-RaG~A zU*4nAcg_xtd3Vy+zZq}U8}w}k?J4OiRZ-8up7f1Wle_5a?p5KR-`u^%k-}?WNBo{!EsRygI%Wg^TB>En3(Ra``OvP4)K`LSRuXAG( z_uj6OIA}Y6ppVim^QC_hf&ASf^}#lcVzso@z+Hw|yI&R|J3R1E^Q_DnLot{>Wj389 zFQ*x=>7#^?7z2eS>1hB*M8QDX?oFdVF${q9sHBpnm;0#lo23@!qA&FqRrxJ?6ZCD; zR-^B|+>^e#;70WQ>w-#O#HTKiHU%8x(P;hO2;A9M%s{)N3GlPexC#7Nd}9Jne^w=M z^0O*|zm(0o2Z3+GD!tSvjR}10bx#5}Y;8>7N{zs!Lp%xme18{#9|d5I2wbEVb{7J_ zj7f)z^X)VOuiorQ;AxEs9RHZ+dH&pj!XKQSAaNk<5c2wxVq7kIHwyEXY+ZLICJCp zmHtZTg#Z7@;w!H2by20uQ@paD62fjirIO{`Q@4|)NR6tI<<%z}lVy!YmLa6!s6CNn znU?4xOW&vd8(9_~09lM3HL{F-+>1P8jr|d0XgI7u=c)->>%F4= zNNFJ_u-8e{ufEV5KX2kMn;HR^t0UBvTY4g`Z6E!U&lnq_k+0Oi?VBK)0Yi zVjeo!9XOryz$D0Cvdpe^Q!@CUM`C2=JU2-RdHA7*8`4Yel%7OCGd{uKJtUik174yQ zp?GLoI~n~y0#rOG-F3iCFh#{cp}m$q`mX6;q|hvKL(RlMUX!G>W4$A|Az6uKrU>38 zSxI1Dx8S+SN{8M`7MW+LH?2Om01K1n#CgKG}Nj55SUYe2VyCO4Vn}xVnKo=hi~m11Q7u9C9veInxaAq z_iE{Pch$AJO9tJM0nz~`y*LTe%c)9R_EspjrYa%U>htO_8PWwonTRK9c1AX`v!>f?MFqoQ>$r6Ec*Lww<+@$ZEi3r`n-Z zVE7U($wHYV@Mb5XwCbFE!z6CcP}+`It&XV;WnUKbEuU0bKIugHB=p=V5-HtE5&nY| zV*`2TR#)$Asg=pa{8e zW3>546(f5*A9asn?$g`@zLzGd8s&lOE=hn@3?TVhxKj|+_vga-)_at;Q4tt3xcIN( z@2eHy=qL+lQ;s+)$1mN+ane-K7&XGWfo~fDjt{o093L@EX%gDTLou9ibA0wNaQyxb z{K7DB+uEe#^ktwzUWNOY%i!DP)`|l;~j~cjD%&|!Z@MT#_BpWUhN6WF|auI9emQ1u< zi!Z4(o{RYor$1b$&hQe~5sKWK)?Sr5EsPDRR5&I_{8 zOr0y&ssKSk*zXwXY@#ScZK7I!r=l0q{%+`PqfiaJ9?%KYMAcorA)Bc0@T)aZ)LcsX zcEw~MHBscUw}}=O8NyqSKohmO-R(`3MxSNhssJp)=R4`E0|1~enyCLEaKEon1@6Eq zwTareiUhB%`IM*7(S$n2;~Ss47-by*SczWc`~C5BvMh|=tI8s^;Hom3>!b)(Wi&xZ zPw>MPCm*ZiEUo&Hz*nDo;)(vM$`Wy>FuU9UfpMqQJCDao92A=`x@*?u{{k?ud02MJ zxcnm$8VP~LvDix-9;eoUqwZk)NV5ojL>eT6k9C4V^RfOU#jz9cqBL8Iob<6SH(tD5 zqmuM63f4d=Beao3X9YExNN(#)jaQxc1O?ar1D~P9Cfn^9l2im7HR?wy6#^hiXtq7v0JRW_5}g2>%~9{inglxkhc54D$_T0rL1GG z>+PEf1t`4`4ZDYuq|m}iJAF`v_PcLX1ix%^CxQ~c`z7W?9f{wsV}V~4F{aFFLLe}Z zl)Dim#WlrV<{A2f8rsDsMWMeGgMt!UI@vMufniQ`EbMaE3+-W=01#@Qaza)M>ln^1 z7=eo>BvFGkL4`FLp;az!NMH}*3uMI$@Tn(`QI6Xyyi?8`^1!~>QSR=7b$q!yV_Ym64r%}*L-%98*V!oy7^BQ#qhff`7$r7jlq&Ym zl1O99i)8*>K0h!<8OlCg%KsXpL|Q+?GC5g>s6!U^tWDxKq_Jb33d1lYt?fo-A)na;q;$b;IVDl0tM*GZtBcXDtonK6^{_`? z4h!=7fnZ8q1qHZC1VUMZPVhaXzTXPqXU3u%i22w*#wu;BqqV$;x%2kO`Yb{r3Es%i z<*=OK0)F9I!l1h*d|FK?MJRR8ZB6qYWCrH!7HiAkE&96=s>AZo=I?lN<^tkq-Sw}= zDMf5SOFl7MX&*L1<;*ukt+ISTBAN5+eExK{axeRFDgPr|iR=6UR>+AtJ`~MP(Zo+k zY2O@%M*!0o@OL<`615e#<|rWpUux-$DtR&h(QDJ($tU)eY#E|vp|a)NIW>nfk-RuZ zF%P=;_AKhMki~Dn!(K*%HdJv5$W=edkmTD#zxLw|xoDL&$T8FBmy%ozhIp0V^*gq~dP zO(|j8h4Qo_(-MTvWR6}5ct<;qk0J=WfUpq;kJ=P$UQc|qh#B8gIHkur6@9jd-pAFl z%P1l3<{bA48NL#8Fq3AtZ&$MbTODH0N=ht4~Hm6gu3PLRLwlqj!)9d9FjCFk#k1-8KuH zoZDtqs)@7M;d3{7b-Hv1y{^C2h+bhIOL}$di0;Mh1e?3!PJ&s)(j1Lm-4<%}8c^&u z?f3tMWS4-Rqq|10PGm_;6|02M#$x43G^<;#{xi`&gfRRkqCMW~?nL|P+dGJM5cXq9 zz+FQ2`A7P$BxRS+H6~i;vbzzj-*}a1oiESVi1z0)C(%@rU3XVRw`GpQla+S;pL+yJ z$S6PdASKwd{b9`+bxc>4W{^KVh9sEC`y{_PEd?8FN)@X_Z7(0T>{XKn(lAuoMtD(_cJR zAaxT|V~}d44e`q}yi{)uBaxOLzo>-p-VZ1dY}Y**o$A*GX^dFAm(^RQ)Q=S%$QJSA5D6|c-whOx(A=KeF3=+H>m zEz}(EOs|5Q5J-5)*j%1GLor9-1cC8DW^9wP%EQD#W6FEkt1@E)r1zhBGcX1QOzUPS z_cgy(gGJ5Cuu1P67pArjih7_JVO&2`32UZ)G)#I2@~wr(&s4hk&4M_PG3F0v^XW5{ zRxS27g=rjEYNoJlvpw{`YDIrgTaSKL7~pX?0NL&qU`OKffu`O1g6^f&`knMF{hA&c zfG15uiw`#G(cp|Sn8Yu$WGVPSdN)r-D!YL0D?Pb9P7~@oZuFzYhRTA)VqK|TH#61- zPpoi@C;OVM@)F69p8XP1ikf2NzB~!8^vdWR=grIb+=rEx19O0`=#R3i(qfRKoMaGn z;o$g(qNg6l;K-EP$^=_4`c+|3;i97){G;8p{xOYTd{~LKRzd^A<5=W*f8byq}TxLEv#`-l+{@&Z+Y}wQtJ)2=eH=WRq~DZ3+(cONJE;C0l zrQu4#)el!sTwQR*;cAU55?3fL6R!2RR^wWZYZkJ*|;9U zH5J!=xW?fciR&I*Lvann)dyEMT=BTt;)=!2du9O8kcFGOk)&-{JZS*B7{~ALI5uu6J?0h3g$8IEw2au6?+OY%k$@ z9@jQpPvY8$%Z_U$t`b~o_hYTQ8IWFM8Xw^*FMw+n(zVd)P&GR7TL{yo*+;}+6s8v) znql-b0u$Ak5(+TNUOTD&DxVaj*g=}N|H*sLDq+Q~{!M5g)ZcY2WU@ zMn(ITHl07aK#4b3x}kOZj{9nX5)+8F70qoSAjBe?KX1BF>D%I3Fzsn6Y-%(1Pxdmd z-HdOrvK%YU9OIK0Dg*U;zICCJ(t4td_J~&xtnEMCkfZdWj0g?wC?J{(mXD@Cmv_y_ zA;BV8nub4>FnF;DlkQr|$HvB3M4tsXM3xfU(~@@v6%9|hdBrFY9yS;8l6)m3qc_r_ zXHfja7TsuzsK8oSJY0**_B7&`>@gx#{cghi+H=-01_9Sd$@?>)LfwfFJV0;N@A?-f`tzUG(T z!Uk*jI6r68wFQ#a42y`AUjho+YF}pR-QRR8`LhK|*aZJ}uKvP*5)}IgQ7-v(AS6zMl6bqnQf7b)HTcSSr>bXyTK@p|_nELsuo zqKE;bJg`uwFB%E_dH4pdQV0o6;B5;N(fk^=+j+S_xUQ;iDG|V>KU=gK0G+A&7qYCW=B^*U!Eh+Dkl&AgDPKK%UBS+~He_dGq zbn<{aUuIE{EEL;te~Y;2%b$5fi3tjeCJ~&0B$RvU30R+dNeS-!bb-fN%i$)>Zs<`9 z^CN6SP0mA`D9=kKj^=@nD$Sdv$QQj@IC(@q$@@HtxvxYSemanZ+)R|cQsT_Z?2%WV zjP|^Y=5HGlXM5W=yi=Rw@X4GXJPL+)PUnr4F-m0&lYMxC*sW$1WgD8{SlH7euT?VU z1Q|2fRJvqghwd{ox}3$D${Zef8Ap zQSc)biGx{^^i{S3fg`D45^=@jWNM3iH?&>cZtSkZ}) zM^K{kB;>~HBbq*u0b|AAwD(T1Cp-J)FzI3uwTlQegE}h&g+I!k?5vdX`zd~PiPG9H zy9o&enbYOPEm)}OoLlZxS7K>PF=AS5;2$r-n(Vw3=3@Y45O z>hu&$^Oc<@oKqVtA_n~@TZ5(+VC47lKsp`#7zt{@8#H3C{^NYasnX+Kqa3|v;iI~| zBl;?G#13smB+8rjc%T)Mx9J2X$$Xr=(+&bp!90&TVn=M67FxCsB&Ze~LoS^0MS7k1 zayqh0-R?Tz`*Y&|WAE+bV?4U};oZF^1YtL92$rNQRs=y11VL8PN?5N+h@i#2RV}Rq zt*}WGlGvSf`A>_XtK0mc zR?jPLqdL-ktHY}st=n1Ea+g`FP+)qe0awU(z(&5)8cRV#;INPXIgMFXqia+Ig26xz1OvQZfP)L-BE_VRg`1ze z4eO62)NIYKm_+dX4U+Kk$tK(;S^5dG<7r*GB_QYjQ`N@=qlUdoENWvpK})SmyB5?{ zsCALAH$J9z#L$H2_-yj!TOv^Mx%W-@HhJpHVk_T);RhGL4fkC9eh7DnCMb(btRN|I z;)zM`3Z6)Zy5E(UPdp{>pH4iHUuMl$E`5L2N4fOfcq+1k%Q21fC&PYUfHTmRR6B+q z91xsz1HIQ-=1k->dP)X9^c+Tm?8*SNoU)jvMH^#* zFT|E8u`6~xXm98i(JM3)g`L_o%-z*Cj|$^N_F;%53vzCS>+?3EPW5}Ui)M?3T{J%X z_ki$`{lSh<`pCi)`VhGn3dm{UJ}TS^;&-}$gtjA`n*w4N?sWowRk-(vUt4>^2^GJ` z#BY}PjW-kAU;LgIzpKnM0qRw9#94dh3COMZyNEw6GPoPx9r$}6f4A}X3I0CA-$(fS z3V+|??`Qn|hQIp2Z;ZcY_-l#35d3w(Ul;uKz+d0l{LgGD782Ru=cQJ<-Out#&r6{? zc`9H0JPy~F+xdIXOT8Vh{7wht3P8h+)n|d~cJBb-7LS5`hr%1qA^rvR z#2{G7vvZ*AxwDpU$w97X&*qyKK*4n}2Zi=hAr;ik9BE`LuY7!%MCk)Ul-8ALXUFi= zT&a!21_n)k6vmwuMm0GDvu_a$hn%1xvek|;z$8BWU>S{bB%Say;5i5Y_7j#+vpKZ` zPGvN=lfTyRYTYnAF?=_ON=>@5(N1kaBCkd!TIJoqu##9)7Teb!S{l4bnmi(-+}T5} zoyEH^l@fKKGx?IGl3llV2A7vg@w(_IdCz51hh`SfEaJT=F>9IhtgdAh|8AKyx@{@+ z9hj=rvDpd16oX{#(|9A;Ah-I3kIR$B>c;=f-^_zbZd(7t>Ie>&>TbWVpWDCA#42379s3amAd&1Z$eexCDBoFm4|M)t@K)N6%>I{K-U|AS6F%P_$nEdt~# z&HTj`xO!^tzz?jD!iL)sS~lD`r>QhhK8Ss@oN8TqN8G{=ijF0E_Js(SkJJ~o zEB#dU@o?Cx3>F$wB_pDqMT@o68%l z#!99(jdx#-<3n*1dD3be#r8pRJPy7>|4Ly?ZyU)`K?^)A*3}(n#H=iG1~XsfDh37=LTM zl=`3;llhPh6eESN-XK|x4Z=Ka>>V2avq1{eF61%mr8c}L$3eGa$$Tc4Y!9HjX%hd1 zgYJ(>e8@&zt@`#BpR`eW+xW0AeS^A{-|7V%T8^Jcc{lM#UqAvIC-4m~JTQSLQ}{zK zB7qOb^QT`#0=xg<&KIRhD)O^0N#g?bxWHdv^>>Yg`~-<|?kN8COH!0E%Qtjd6N)X5=dW)YBj@hZtF77^VON!5WZxg*57F8;=?lTgu}L? zi${;)W41~Ib(===)mx>gX6=6#l$5g7LO8uKRw>>3hpBXJbu&iu&aWWpPZLGictru^ z+m)|K4UI9riP+WB?RZ7%q}y-f7haL#boxXd@+#)`>YtEEb^RrJ*W6psP=(8|44?F> zv_|*sXny@woUqT1<88K~8WKkFq1zx7yfT6pZj(ZShKO79qMUoLiE`G@yucsYB{f@H zavUclwxJ7->&S0!ljfVIVjRGZ4?}%8FXb!>_R}xDOoGm5@~+B#uGgd(ZG%+`3alSr zcwGu@Hl(3XEve6r7sTR8#Oy>Ze|E?U&qhH>e@(cM`Kir)rGJk9H`}? zP5fH$x8IN&w$1_?>MrMSxO@H`j}!f3xxF^x%jS+eZ%t)a{{0TyY@Z!Aaw|J*<9v45 z{sNENBgSBdtsRaxgD2JT)-I654jZ}Z?yy~rQg+x9<&W^*#@|X7O|5s$>(LMMP1~gw zt!ej6>+F4%cF)wzK(NEjOLh0m{D;LerzuiKrMJ8o4V8Cp8oViWd3aq6#_C^_pyi4S zMcW9Ch-;LkG|sG%Q*n6RH7XpFi6q;|ZLNZv(JF20OM*!uSy8Z`jF)Z~zbUn9z8=SZ z+-th5#Sqo&L!4j5cf1LH9X_1PZ%UyZvykLg%Dbw6CTE_n{uxT;ncaD}x1``M3E{pB zp>TBFg}YOkPuIopr{9uVJPchkWym=q6bnN?Ib#A!HcTnmFf)~ocI@fpY_b^#uLOOX zb6&W!tgcdFvX!5COA4_@qY2#Q0k+mnmw~Q(o;?O*L1mJ+R7ZqXT`5(W1dTeqbJdzh zlxXW2^L@+X9@%HT4O3Ioc;VYptEMxdRKPd_Qvy`6xOwm}-~ToQo8(x2;cZMXsa#tO zuRfNC6iY1;3olH!;I?APzm;1)qZKXg1YK2HEc zCjlrSKyarNK&lm#cL9O$8Dv4Gou}*?;K?sRn?bNp1r|fFJQa3{WX4nW1cJ>2jB;3J zy-C8Q%^uo`7w^D2BBB%jYzGFlarJrC4ym*8l5cCc$IGtoNWrMr;qO4GST%+(c}Hpk zZ_zuD$_l^ZAHO4YYBL?FU`h*@!!YXDTnXl=(p+;c>Xpe0hx2;xN^M*F5AiY%p3zp- znACNe@WJm&?H-OoA?TKPRYAHr25(d{v%K&d(e_la=~RwjoYa$lEhp844SrNyJ%W5A zAjt~k=GXkKcQG#&cj8~Zivj-A0lfWAX&5_-VE(UnrLLUslmb(R4G@D9MC^>VpkuXR zFpM>aJL9RFH1PNf=7ypqStyB)x(P7508<5N@P>P2T?J^@!Cbpb)KADRsZ(HRSD)TG zl|;0pUDB$FR8*yex4%|O_?gXKNF{u!9Oaq+C6#a+mFF|LfFRQaq*8$_0EBjX5O`uF zjp3J+T>Hx>NAe;6l&0#cJMmZlDb3K8cj66qOMT2&5wXm=&18X$y13Y>B?g2%y9b6Q zoS###vYRb@`fjP0&S2p$?3UW;qAmQx-O{_dEeZUoJyNFz2I8>K?eP}=@*bRL2nQv( z_-h=3w3gc=;jzgpE?^~n6x!sBhSY%)JYC5K7wqTzr4mDaZns-_^&ZG-=@uUTp41`c z1B|22#iyOtgE0lxg9EI`^o9O7JLX(`$@zJi^+Ym=msyWZ#m8A+bew{W?YP_EJVj%b zeVv7`eorztPXZNnqEV~H3WzXsq5G>f|K>d@$e8Tg7@pPgUNO{!@5ObBTq;$2)Gl~1 zgANi0%Rwj=hB#-{1bZPu0hZhGMTnDD^(D0&gUZFeo#IvDf@5t)fPBdd-%0RGfMa2q zg!eC&{tJ90a{#VgfeQ@fms47OUDxaPURU6GWtDwDVt~hTukb(jN;CXR6mN6>kA2ec zh9QHX-mEuP=2!T>eNr2S@p}2%Uq%M=s(n&@hqrL|%-=rNy_~n?fGEtcp?`aZWpeMk z=GeS`SUbN*Cu2st;@r}M^Mp;72B2i8)ODy@pPmGrxR(cgP!SFu0}u=OC`KQ_!mA}2tD>zfiyRh>3@)&91VUs)J$zkl5nyGRzu8c!ES}N|VNFP1C*oBHuH=CT} z%)!n}aG4>U(wLM?3sC;k0qKz$=P@Vux>A;F#?Yj37f_wivGY=B#-Oa3UeFj3G{VGL zp_z&U)!-}`6{Y=_0CDDxCa9|=Xt!i*onr-4l$-~ib){_zJ==lao9?7|ED#s^Z` zgy=8aJz;_zL+4si$|SiST(yY?*Cdv4N`CfpWGmeq;Y>A0W9qY0i+zT1K0?+5ZGwHS z0LVHecH~(3*ctx%LFrZPF#gDgQfQ;I=czKBRr2xkJmW*DSU0IJZ+}SoNcUnNe)W(v zzUjHsBHeKG$edDt+XQ(GAMugYHZtdok{^sr3cMXIrCjfrQ|*`0#yQXA{0zglJQ6Tu z+M-}+_@s#-M!PEoBe9j>nADl*4nC(Mp`CpI4pJ5z1yF6KP(Mvzq*Jr7y(9WUUzug&8x~2F)I{@2g`{ zGaVgdyz!}Yk-ndOhB@%{&Ata!hWcV5Kxx!T# zr=1hR2Y(?A(2WV@nO{hwkbx6l-~e;b-hJ1;kj7}KB?ex^-W9$n7o|yB3xDsTbbvbE z)0Z${9cxdrbbxEvbm+gK@E$g9mUuaAXM29?lGOPjf8wIaq#OVK)Xvha~Zw!tET+;WpH-O(VoWt>$1}LlfLxj>;=Tx{{Ux$ z7d@PvM4bH(;_ME8%h_K5<)nCJ+TBZ&FDdm1c6RsY6!e!=fQi}N98TQMjaQ_ug0tPY z;OxtjsX3`l1FdLX;&A>L@H{1Z^9o8P8~C9s($a>bR2LoGM554#WJduci2&3bDgP?3gluA6IAz zvP4hx6A#hn8}oO*liD>s`jz$QS0=N3XoRO4lmCTT5?q!4FK9?H1Rnbrw2AoEuaL~5 z+o?IxThR72obkaGP$A$uxdMDRdk}xALOMYd9{&cD4!#Gzk)}1AI-G`ZLt|4c@9=M_ zC~3N2>tpl%#RwUgNQ1LH;ZKQLbG$*Hbo_>XqEeJJKf*;?jm^r}k4lSq;Fx|QrYc00 zSNta81yN`C7ALmMvHJ#mE6veT>cv-a8!bMT`+p~;t2`7OOqG3atyI^eS_x|yiCs0y ztHM;FT=zW+_W#msVCbsMEBBifh{5=+?-ilVLAgAKX=KoN`?yxw(j5rQwiE_DvrgE|rz zME#%F!37c4eZO3n0=2q{3px7{Lto@V9`>Wu+F%$8-dz$**U;xPd2l5k|D)9YE@(g{ z&;Jp!&h_j3%^zV^W}Jbal>7X&jxO5+UL>o9guZIeS5@WDSxEiG(34igRQ zLmTtA#zEx%J?BW2Yr0wEV!a5qwC7*7!*lNVXY#C{q)vMeYAj*PQ$f=>`Tjk!6Fv$0MWTtm~gN_ zzV3lYt`*S)x$J>3*NRkvlzAY2t`(UCc@Gc}spncz1TQGcuX=FmyH*?|9LH)8$R8OM zAP=MgGDMIk0V!K%LWR-4vSpzjS2$d>d@EaK@wm($SCq#U>2XDPT+!qjB_hYbsgRCW zUG%{CCG-~8p}ByRElVIctpH1AmMyahB#hL{=tU6#rV2pWvgv{RwOYv%VYBatf?6nw zn#e0)j~NGn3E~#4U%3As`7cn5xYC%~AEa`ni{R3fCg)H&O5qRNKzol-ak3T4Fi^RS z0&rRY4SoqO`Zu#+86o8yI*MNrXD1x8Bhed)LX=1)aH)|9E9X!Venq5wIOLYzI2547 z*$9^!hmdj(<>FVwAp@V3vjoFYxVy zbe$b)mn!XpQC8`19|))DjXQ<2i2B@X!kJ0V7lkvGoGXPhnw+`9X(H#d!YRg%r-YLR z9QiRg%Otf~Y1D)6uA~KnR;grwvcEyYU7prwf1^rb4SHF6dRjK8G8!6SY}OowvMADh z1Qk|lV$Jc2ol@s5CpQK1aK_pWk)c<>rbC>0YZY7tapC%Xem4nL5Er4}>-RgH`Efma zm6XQy!d6u<)n8ehsic+05EVDuxe{cYjJ1y113ZZ2ahce~@HQVlfayEGl9ypr9E+-h#YB^6mBO8ODF~Mm*t;XsU;NRjc_b2Xw0j z(F*deDl}Lap9l;!IqbeD`C1NGn7^7_B%oUjB33k)f$U0v1xG#@eQ!R+G0Nub6y${r(K& zO&WPhQt6I3un{xs_J{Gu?i04A5h~;as8EHFp$m{H596PBQH$tG1NF|Eglg%cpcVs) ztVVU=odP@syy-?w3Sj2u(LlB5s`v~eC-4)x@YP=Y1ONr;!+?#fQFD>1pavi&iZ+{k zd;OZgm!J0(JQzUo=HRO-%d^o(xW>VybnI<#37S0`qmm73@_PW?8VXNA-cdL~(ANEzMg37-o!s zvb)D-B@+}30zUvQ#^QoHaCO<1VHSA>5E_`y?wGRtJI z#D^Nnh#LjS&D<{hRudND#SPW7_JNmFq}hbD&rj~c$LW0uX6jj|j&H(zdud(;P?XH> zhYRBoGJ6m%PiBwnS=**tK+sl}7mRIZnE24h;d>tK~4aj#`&q?e20NO;EHlIglq3^ga6}~e z_WCUe=fQ!#g&!QqI_bXuj@tu$Q!NZc-XahaB{+?kZK(unzT*c0S4S8VP9BS9lml6t zru!9K3xFYn+xI)(qA6?pxWZoPDlW3HuB0GuF1)TG3~Wk{yj=XwYHh!ykjR3sHIXRC zP+yw28D4O2S>8f&;Gf`No2#J;F__RAY3&Y zq43UXDKcV$)0G#AUwe^4A_DG~M53d}Mk2f-8y0flpU6fyJPPSdxO_-2gm;!nkWPn_ zPc^doO-)@zedYsT0tNZAZ~3!EwLX=&QF-SZ^Vf{5U8iW^Qd3_AGK~Q6q7iSBZ?E4- z`1139C&E=m*1||xPzd0Wv%K&oRGqv<5DN{viNa8yj0S9L4Lq1+-~>gDLNT6vd;N4> z`LrPRP^?mzTmXFvlLfEc27FPTO!&(3R^iu(Lf{!dKZYR6>pH-;8oTntpyZy003u4f zDhR`1zKU20D6+7zD{tSNwNo1>65^Lnq7m?l^upnw_K(3Aa+^r8NF@{tSZUrk{31(H z^bxLTxRjC!_?VU3BnEw+b;@MXNZb3ZnILm_O>SLlYz5nj4<(#u0Pf;yhr zZWDwny*bVXVRX1?rNdd|q!QlP#9BF)?pL;7)UyqrRsO9_Dj$<1^sFeEkkaZ`(i+O1 zK)Ld@xwLW;s9@fgc$gI1B!#q;82 zN}5yLrx>+Q)Eg{)$;lYIczGMv%DB?IEY7Z+i(!k-Mm21UYPRk~nKaHE8Xj?2X?gtO z+~esjacFYNBxuIO&BL-d;ylf@w=pV>b~*`D?(yawI{gub?9c3V2gj!lb{FraKpRB= z?N%JpOOm_54t35^^EKEvawlQk@0uHr6Cn+8U}DQOe}} zXY~t{G&anZ4hq{&<&#%7$9w`!Cfqq6CIC&NFI*3wT4cjpcWNn{CFv0=WCk$W2c54A`$zsxXFPJ9ZPewht-N>|4OCLZ_zG;XqM`|AE=) zoTCxfT7iyh#B}*B=pOQONTujXT!qJ+Z1Tp((R8RH^^ql<%~=MBlg`RYIRn#Qpl4)O zzK&86>n?=X<;q3Ua_ID$T8C?C5!^s!_DlrX<=DR)kc@e-~yzKNI4L) zAM{C)I1FTKAKS6k^@Rq^5zY1OS*Wf?&wI3IkLb=^;Mtv78{N<d1sUB0kHLlgG1W2l7P{kGD%+@F_ zP^$nBA+Axs61L$mE~q`Y(7XpNEzeIzFUd6@Rc0%}gF3YzpMYU*1f2kyo%Nuu`r>ai z_Zh%>M*)O%Yn0=LfN2n)kTe1*14!;@CINZu?r6cX!6#ZUAvxqhKJm)MxDkGLya@Sn zj5oPU0;#@Fv?>AlO}+K($)!bp#V1;&KsrrUqt(I{1LCmBhwhFSEB86ib^kn%_pJ-Vknyqd$2aXKNe+~AQE>mE2@rk!lKw8#`H&#CG z6K9>k_~Tb^(ZU7fJ3zecmL#wDiDMBMM;tzp>;kl_PNWI)G$j&AJ2WhR%*3#Kr7?!( zLNn=;amJB`Fs8Jyb{Duc5!aH;4Tc_U^@R}UHt^+3hxM=?;=IsHh3 zDNaAW`??r|m1h(8ecGMrv<-JcqftA5wmfnNzYu{1?6bl@Rc^6^H|_!dP~jgZR}}MD z@;4Ixc=^p@zKHziq0_0I5A!L-{Ga6CB>WNbfMR}){4<5$EVE)B+7tfn!XGT3e48hc zzZx2V+W7(UhPU~Oo-Dk{$K>xLPkWohWh0-KDH-{uk-BDh|BTgZG##BvLV=vy}AqIRn>W1d;SB zL*SVu)%M;f=IObZ8s&FJqd}J9SRfs!rCG*aBxY(D+Mu~NKnb(Sf6z;LWRQ|#Q6v9e ziv~F+>l@JAOZR~hpVqf>;(IlicL_pG>k_VOn?PB~2JElC01w$;RkA_$6l4psp^8V> z+Y3a8LF-5-p~44CQm_zR1GyLR)XYvo=0sizW|I@#c_q@6*AYryr~4zXiCf$meQghl zZiRP?!h`#l2_96XURrae@XNiKrNIcOG9Xc|dXzWp!`eJKef{<4v1B==q- z8fv-KKRA^z`)mXLNDr8WvL-=5TQlrVtt&3r zH8Oa>vGj%ng)x$08~U=ajyvx{9eN+sZiL#NKQ>Yq+~f@83vle*H}2xt5oOxDw$GH^ zGv$!0*gX@6Tw#+z*&k7shBaO1m`GhDIrA^~2qgV^a{My^Fm?Ez0Ju!@gv{bZrnY9uz#8of(H$c(a zw93CWhUnm>lwSnh^hDQs!UhLN5S2uKo80NXG#h0J{!lr3D>bJwVyrN<`fPvpkC@7*sRlEQ zE-PeA)Lz2+J9M-qrWDT^^}K?5q3#ZYEm(ATAJm~OK_qcWe(wz)I)IsauX;vM*+1Gf z{#RGxQQ3y)TCh$;8DDc*Wt8!#+y*Kj_}9Drjl1)w2e3Xtkv>CKHOPv*t?fE$9IvqG z0(4Uc^S05fy~Bwig<2Z7&d}0$PXl@VVXeq(6MBhcKjrgUlxV*b@?=q}^pURhWGW5q zS9Du#zqNy@0tt${+#Viig9iZI=8JYAC2#wIY6{NZ@RDfOY(xRBRUvW6_VsKo7aiS@ zUr*F%P+u(+ukt1e!X=s3PS?ZSVDVx=7=c<)?&UeW?LZcy9mNOX(=-IS8-*WAP*->e zq${5@kabMU8w7s%8H1$C4{BlN{^{X|8Nj%=I6ni5rV|>m#H+a9)MT`B76(@@P#`p2 zh5YYr{MUi3vu?u{-gXe{6PbqPDVofAYCzwNpVMml%83eKiswbW9B)(M&bR25`PChm zBdoS|?XKz}x<4!U%|Xo8?5WKPr3-FKlQ;9E!E9rP4;x|?RjOJ6cYd1WdRDt!I|Q|N ztIOw8MvuX$^isnbZj50AI!ykrr~`nS4phfq4gMR|E4~amgr2Kn2q zxVSLiAYTz*qkIluQtH<$Jk-G8J`}QPlTxUA4u#-3E-V6ux99dDSUEhio)-;a(SZq( zSoW-$FKO)4$u)64zcz$*YkClMN=fYzU!z>Sg?Ao`<;*rSpE#6F)_r$~zdw|92^5i% zGu+WfX7JyJvRK_?hxmYD%+$=cAv{+ohoLd&yu{ZJW0n>+9HJ^nB)e)7T0dZPZ7(@9 z=T0pdUJh4GLeC$rTGk7L~jGWi@v`0haR?T5I?n7PO=wn0t z{`#zULBgxfa;T=;vjM%!%KG9VBy8MkW&I1?J^HLyzE^twz=N*}eKcJO}Jqiu(vtvoKf4@{$D-DQ!>? zjdS2loC$HZIgMXf>RVcy(LIT5)J+0PKM|H;*gAVaV?)fV^!qAdQ+R_7KoF7nBYxUY zT~IoY9?rV;KZ?b(3r4dHFXEuy!oe^zY%RCRKkP(iGpd}Y3VKsQ&gL*pJV9PPPt{z= za=ir-?{Qlj#NQvznl$U}8DMiNqtqKsUk+yv=@x9{e+_4?TaabA>kXYlf-w(Bt|2B2 zK?miK-n@GpmZq$PkBVc>>%GytrglGDdw9N)JK|Vye_yK8?^ihmcxD_IlPhHlBw1$_ z>4^$5WO>~}ekP7tEFw|KIUo0QSJ~v$g(&|W3_q?>+U51*#E@_+E=m67W&Th+>r{Uy z-O)bsG9N{r?c`biGG83erZ;*Cwzo*%Cog`7SH`n&o!P}(JM_{0&cCtmVM zOk_{$TGsF_kFii*vruYuU*!G?0=er*AP4_9wyH9Kd%x0_33ohAeWO9l%{9fNlJrupbKGPbL7nnTkDoI}6~J zQMy2>V1;(AzJHJ@r!;uL9~qY*fC{k=Lv504NoZNUA{@BoF|Fv(9e$dY)vJ2~xA6*o z(Z0Np9|tt~!PIsX@V?_&s%}&P|71MQh|IWMTkD>ULIkXv?&o|Zj8;|d zu#fV2hY75kZe>0nPv0pj&Uy^pZk+D<{5^ya-0S#+m|@qmf!k-tys z)m*-M;)C+iK9>hhdJw{^Iehg45!&bQz*J-nFX}lK**wNoSCrN8*7dtdoC;b^0{fOo$iAazAlY*l74Aa!w;pg zmhHzcR23@9(kzwhPV!LT7q`Ah|gu~S)(dKMBN%jk%2bG~IN zYgnglEow!4IF8u zTz-__n1*WUH-R^Q6j7h_ui--qK?e$AL%Ll={aPiQd4!d6Wh5-jA`S z(v12w{E^34Z{4YJJo_=!haLdbM_3!*^rw5r%Mb-GcNpI|^8tAN!}vlw>khK<|9Aje>QIGT)ev6&AUu#v%OV6Rda32-xCv9>W+5 zBZ_`@zcPMW?n@u!+_zZ&Su{Ru#4n;%A5n-rc@IL&5G9!q72_{#PSqumHH1I@ zBuG50kZ|3D5IvM%_CaWK4?^e={_smn`b8yb>eIx&E z4$H4Ury0cBi{p9jT-LSK0C*tDqv~trQ>Z?Op=1EW_)ZPqwOD85a}W9j@tbp5^R~Wi zai1a9@-!Q1=mTmt99Wo+4ylnZo#V@%W@G)&ofMXAi}^QCvz9t}Hm`Y_g*MIFgoR9| zIYBvs5GC)O&AUCrN*nz2gfeL!;fK>$^Oh~AqvmjXKUg)kmvgl`r*a&I1Rg$*wQYG2 z0);I}zK&B5(8AI&^Uzr_HhJtk{@6U$MfdV!eAPVG8kao<_E81x+lU@}l0k4nfd;cCcYXU7vJiroQ`SJugA0VKenfC+LdH7J=XW z7~DattXw-ED{xIL?>(PQ)3u$;H_m7M+f1D5n^7g7-eiBC&sOPd!+G`s7TiQ7cUUF& z#sUUY4Y9mp0m#jJipX`~_Jt_ZyJ_69keNEU&-TYVt){WCtPQ(E#w45l7-|-kAMCtE z)qnFz{_#Ro=-@Q|^Fnr|4)55#!}(NoW|5y|V*<{D!u5`>INgEMF?{%QtbM{f%(U2r zi{6hDW4P5p2Kc+uE^fj( z+nm2^S^or3`VFM8y32Zk(6at@ggZqz22*E)0nY}^3vluYep;ihL!Y`U{Lob275*PI z5GyNuN>g3oZ|&__;WzK6uJ9kv#R}iIF5N5q<+myGc^FJ|$L?CD!xVFPDP-CnJ^7DInK@$n zo(IO(`NT%rn0%D9d+-^{Sa>(vC-=nmzUGCrlf`%nWp8ymBuh<&^}AD@r3{YxJhdku8xJ{iZrK2x0ZVBy`|xeDPHic}p;O{48z#|(SYPB7K;Rw<$A<;1 zMYCh`F-`fLbGtJ}QG8C}PqZc12)s5Rwoa_g`7S{Jhf{ZcNX`38Mm&QDX&o_m9~mh;9dn5FrG zdxNHz-{xs&b)ACx-y7DcoaZ5$?yoCK6O~`#XIHS~py#isiK};}FJTkp3Lm@@iCgat z>Uo7{t^^PK`K5@}PTaIMxvYrw!Tn@7|zoU&2N)g3|8|n)W46q@W)62DSZ? zuUf@S-F9w(j(9j3_>x~E=P)xlUldLYIadm2I5~4S@Gn=f)mwCh0l!<$T zrd{TV6x8G1pthI!s?{u{|Bm%YIp-kQl#_K3_{K`;3mFE<;PLwHo>0TE1otYu7gzyPq!aU`S}F-d2hf1at@22N(jd@5w3YrgfPvEFoB%&VhB3I3yl#@ zJaS=^dkcgFLI{J?p{5w(#V`ttWWs15pn^;8tfAZq62A(ku*WZxbC{h7Z~Be$Gnb;B z6$m0)89C=Igta62pclGJIEmN<`E_#dCW(xqZuBC#JV^5M0%w(qlkUZN+>4VYoFZ3a z*YHN`!LZA|xTj_3eZdE;$6%^k!&3>R_q{0XzTk!H*^oXfSJ%{1zVqJd`f2=Ae^F_BgmO^THx5^b|S`kHHOg}qk%WZofUlQMkqcm zxcI`2&^GOL@r@f<52L2P&phTVUUuUh%!_k7w*s3E_Ju!zmtX}{-1FR`%T z?@x*1ccS87e+cN|^v3<^Q?QQ>HPJIEJfMg@r2RMVR>VS@Pf?IN3S=rhGBx59f2@dg z2^zE!nj}aASSkc#2Bo)QCQatA7O_r&W74oshnESS`}z(&?~*f}Ujenqb^>gaA5p+# zrvpn(e_ufj89;>(5Hp$r=VIc5<*bvu+a?yQTgG|(CRD&w&Y#-EnwvIG#+ge$`OITr zD&XVxjTsLg;h`A08|Pa#u{KS9J|XHHqk~O;>?;3k6Lw>7jNvt#pc0&v#M{3Njhs1& zPkfoBHjVb>8Gj*S9DA9y8?vo0nXK>+#uTk?1gd8Xob_MwlCPt+c=S0%YjON4|86szpbM?f_#~Q#yn@Bo>(PABD^P#E{41aO z3XANxF%mMUcnw_0mN*Jse}GSibX$x&@Cq|EFb}5cwFQ5~|MdzB9&(>*T*#z57?nQw z25o7rEQ^b#&I#)YXw-r!QF0F8HdKx1NW&dG>Q!d#HV4urVB$JbJ*9yvv6-PZ&`!}n zpUKxUpc0bC_2zHC%7%9p2yr`Ms=_rC82yXO;`WT|joru_bHL*ZWOzf-$hZ>_>TI%B z`)g413G$BqiV6qOzy+~UJCT2WYo@L+OfLVZu2uHZU2skV}uSVRM8;?$P4-@2`6CaDi!a-yxT*oS-bkf zX8hGw&e}K(OFYB9pKyxd{?Ek(74z56!U>}!Hu8p(NCID^S~N;pmAJR+Q- z;Z zw=QNOj(_7;TrYauGRSGIah`I*auTvwh&XWrZa;H9YYI4d*Xa<4FR;DlpQ&#&=280k|ex7meR4h7|qhL6Jqz z((?qC9S3>e9jsH(AtlJujtF}DAfLB`MFh26cu!5#TgdnCVBtYg_r~gQkl)(DItFc8 za8In|3wY!^EG#JP-k=c+_`G+poErT>-L^VvlLvjkD=1b|CCHO`T+pdKz(d|e(76M3 zW9_lYB?oxgyO^fe-W61Ald}%+m)~Waz>#MTKMdX`?!<0Zp1F!G~f+w=P zJ`jBdKALJz$#wy+cAoOf2Y=vhj>lgp{PFPTEMk5c4Qn%C!(9%p<{Nf0OWP)ZyK?9( zH1%7J@I|P;8yUQOCmU#z-WL@ZM)Ix4E|*}fYx{ZcT`XGHWj~*{i#_^8+EV@Ng zp}mL{p!6T98`W0_jhJ*AKg3AUTR4L$@i5^GC1;3miXLYa&Ip1w5Kd)tHl4@(ll5{O zp9f0A#JG7#IK=?6TR6o4vYnjsFn~;uH<43WxvUXRftx3AZ8Xva5PfAOr6s2#iU016 zcAcE_Vu@IVfSPHxmA~*}d@3-;eE{(sw{K|GuzwzJzMIY0g}%pE>}CUXF+KRn-K^bs zlWSC{EAkWIX}VNF%m}r)0)CNy=q^OP;y<)ZAGBA12bw;CXWJjN@_}Qn1twQ- z=u;L(z+(%As}zpLQC1$ihnd?`6u>^l-?bYs=!mdfK?i`#@D%>Bojdoij^-^2B4{UH z0DO;1KRF(BQ!7NYEΠETV-ns20>+)u{+jC@N{E98^n_d~BwEA}TJm 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

EUVimbP8r{E&76|%qkaf+9EPtt!WAxerPN7$W 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

v;UF5w11uHLpsieC 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%0Aw`u)v)0p87kTE(*n=JzB0u)OBQ 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�$|Yt6aI)<>`Grc(I?g;OQYS4 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%0D-@A83v|O@Fm3(^5okA&9 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

_>eyTk) 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%0D-3JrY3+Dv6*E{JvU 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%0A37ziTX{1R7mTfol*%~%Lo4FYRw?4x@8o6RwZTS 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 literal 0 HcmV?d00001 diff --git a/examples/oculus_glfw_sample/raylib_rlgl_standalone.c b/examples/oculus_glfw_sample/raylib_rlgl_standalone.c index adce92763..288418a14 100644 --- a/examples/oculus_glfw_sample/raylib_rlgl_standalone.c +++ b/examples/oculus_glfw_sample/raylib_rlgl_standalone.c @@ -9,7 +9,7 @@ * gcc -c rlgl.c -Wall -std=c99 -DRLGL_STANDALONE -DRAYMATH_IMPLEMENTATION -DGRAPHICS_API_OPENGL_33 * * Compile example using: -* gcc -o $(NAME_PART).exe $(FILE_NAME) rlgl.o glad.o -lglfw3 -lopengl32 -lgdi32 -std=c99 +* gcc -o $(NAME_PART).exe $(FILE_NAME) rlgl.o -lglfw3 -lopengl32 -lgdi32 -std=c99 * * This example has been created using raylib 1.5 (www.raylib.com) * raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) @@ -18,23 +18,168 @@ * ********************************************************************************************/ -#include "glad.h" -#include +#define GLAD_IMPLEMENTATION +#include "glad.h" // Extensions loading library +#include // Windows/Context and inputs management #define RLGL_STANDALONE #include "rlgl.h" #include #include +#include + +#define RED (Color){ 230, 41, 55, 255 } // Red +#define MAROON (Color){ 190, 33, 55, 255 } // Maroon +#define RAYWHITE (Color){ 245, 245, 245, 255 } // My own White (raylib logo) +#define DARKGRAY (Color){ 80, 80, 80, 255 } // Dark Gray +//---------------------------------------------------------------------------------- +typedef enum { LOG_INFO = 0, LOG_ERROR, LOG_WARNING, LOG_DEBUG, LOG_OTHER } TraceLogType; //---------------------------------------------------------------------------------- // Module specific Functions Declaration //---------------------------------------------------------------------------------- -static void ErrorCallback(int error, const char* description) +static void ErrorCallback(int error, const char* description); +static void KeyCallback(GLFWwindow* window, int key, int scancode, int action, int mods); +static void TraceLog(int msgType, const char *text, ...); + +// Drawing functions (uses rlgl functionality) +static void DrawGrid(int slices, float spacing); +static void DrawCube(Vector3 position, float width, float height, float length, Color color); +static void DrawCubeWires(Vector3 position, float width, float height, float length, Color color); +static void DrawRectangleV(Vector2 position, Vector2 size, Color color); + +//---------------------------------------------------------------------------------- +// Main Entry point +//---------------------------------------------------------------------------------- +int main(void) { - fputs(description, stderr); + // Initialization + //-------------------------------------------------------------------------------------- + const int screenWidth = 800; + const int screenHeight = 450; + + + // GLFW3 Initialization + OpenGL 3.3 Context + Extensions + //-------------------------------------------------------- + glfwSetErrorCallback(ErrorCallback); + + if (!glfwInit()) + { + TraceLog(LOG_WARNING, "GLFW3: Can not initialize GLFW"); + exit(EXIT_FAILURE); + } + else TraceLog(LOG_INFO, "GLFW3: GLFW initialized successfully"); + + glfwWindowHint(GLFW_SAMPLES, 4); + glfwWindowHint(GLFW_DEPTH_BITS, 16); + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); + glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); + glfwWindowHint(GLFW_OPENGL_DEBUG_CONTEXT, GL_TRUE); + + GLFWwindow *window = glfwCreateWindow(screenWidth, screenHeight, "rlgl standalone", NULL, NULL); + + if (!window) + { + glfwTerminate(); + exit(EXIT_FAILURE); + } + else TraceLog(LOG_INFO, "GLFW3: Window created successfully"); + + glfwSetKeyCallback(window, KeyCallback); + + glfwMakeContextCurrent(window); + glfwSwapInterval(1); + + // Load OpenGL 3.3 extensions + if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) + { + TraceLog(LOG_WARNING, "GLAD: Cannot load OpenGL extensions"); + exit(1); + } + else TraceLog(LOG_INFO, "GLAD: OpenGL extensions loaded successfully"); + //-------------------------------------------------------- + + // Initialize rlgl internal buffers and OpenGL state + rlglInit(); + rlglInitGraphics(0, 0, screenWidth, screenHeight); + rlClearColor(245, 245, 245, 255); // Define clear color + rlEnableDepthTest(); // Enable DEPTH_TEST for 3D + + Vector2 size = { 200, 200 }; + Vector3 cubePosition = { 0.0f, 0.0f, 0.0f }; + + Camera camera; + camera.position = (Vector3){ 5.0f, 5.0f, 5.0f }; // Camera position + camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; // Camera looking at point + camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) + camera.fovy = 45.0f; // Camera field-of-view Y + //-------------------------------------------------------------------------------------- + + // Main game loop + while (!glfwWindowShouldClose(window)) + { + // Update + //---------------------------------------------------------------------------------- + // ... + //---------------------------------------------------------------------------------- + + // Draw + //---------------------------------------------------------------------------------- + rlClearScreenBuffers(); // Clear current framebuffer + // Calculate projection matrix (from perspective) and view matrix from camera look at + Matrix matProj = MatrixPerspective(camera.fovy, (double)screenWidth/(double)screenHeight, 0.01, 1000.0); + MatrixTranspose(&matProj); + Matrix matView = MatrixLookAt(camera.position, camera.target, camera.up); + Matrix mvp = MatrixMultiply(matView, matProj); + + DrawCube(cubePosition, 2.0f, 2.0f, 2.0f, RED); + DrawCubeWires(cubePosition, 2.0f, 2.0f, 2.0f, RAYWHITE); + DrawGrid(10, 1.0f); + + // NOTE: Internal buffers drawing (3D data) + rlglDraw(mvp); + + matProj = MatrixOrtho(0.0, screenWidth, screenHeight, 0.0, 0.0, 1.0); + MatrixTranspose(&matProj); + matView = MatrixIdentity(); + mvp = MatrixMultiply(matView, matProj); + + // TODO: 2D drawing on Oculus Rift: requires an ovrLayerQuad layer + DrawRectangleV((Vector2){ 10.0f, 10.0f }, (Vector2){ 300.0f, 20.0f }, DARKGRAY); + + // NOTE: Internal buffers drawing (2D data) + rlglDraw(mvp); + + glfwSwapBuffers(window); + glfwPollEvents(); + //---------------------------------------------------------------------------------- + } + + // De-Initialization + //-------------------------------------------------------------------------------------- + rlglClose(); // Unload rlgl internal buffers and default shader/texture + + glfwDestroyWindow(window); + glfwTerminate(); + + //-------------------------------------------------------------------------------------- + + return 0; } +//---------------------------------------------------------------------------------- +// Module specific Functions Definitions +//---------------------------------------------------------------------------------- + +// GLFW3: Error callback +static void ErrorCallback(int error, const char* description) +{ + TraceLog(LOG_ERROR, description); +} + +// GLFW3: Keyboard callback static void KeyCallback(GLFWwindow* window, int key, int scancode, int action, int mods) { if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) @@ -43,79 +188,31 @@ static void KeyCallback(GLFWwindow* window, int key, int scancode, int action, i } } -void DrawRectangleV(Vector2 position, Vector2 size, Color color); - -//---------------------------------------------------------------------------------- -// Main Entry point -//---------------------------------------------------------------------------------- -int main(void) +// Output a trace log message +static void TraceLog(int msgType, const char *text, ...) { - const int screenWidth = 800; - const int screenHeight = 450; - - GLFWwindow *window; - - glfwSetErrorCallback(ErrorCallback); - - if (!glfwInit()) exit(EXIT_FAILURE); - - glfwWindowHint(GLFW_SAMPLES, 4); - glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); - glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); - glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); - glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); - - window = glfwCreateWindow(screenWidth, screenHeight, "rlgl standalone", NULL, NULL); - - if (!window) - { - glfwTerminate(); - exit(EXIT_FAILURE); - } - - glfwSetKeyCallback(window, KeyCallback); - - glfwMakeContextCurrent(window); - glfwSwapInterval(1); + va_list args; + va_start(args, text); - if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) + switch(msgType) { - printf("Cannot load GL extensions.\n"); - exit(1); + case LOG_INFO: fprintf(stdout, "INFO: "); break; + case LOG_ERROR: fprintf(stdout, "ERROR: "); break; + case LOG_WARNING: fprintf(stdout, "WARNING: "); break; + case LOG_DEBUG: fprintf(stdout, "DEBUG: "); break; + default: break; } - - rlglInit(); - rlglInitGraphics(0, 0, screenWidth, screenHeight); - rlClearColor(245, 245, 245, 255); // Define clear color - - Vector2 position = { screenWidth/2 - 100, screenHeight/2 - 100 }; - Vector2 size = { 200, 200 }; - Color color = { 180, 20, 20, 255 }; - - while (!glfwWindowShouldClose(window)) - { - rlClearScreenBuffers(); - - DrawRectangleV(position, size, color); - - rlglDraw(); - - glfwSwapBuffers(window); - glfwPollEvents(); - } - - rlglClose(); - - glfwDestroyWindow(window); - glfwTerminate(); - - return 0; + + vfprintf(stdout, text, args); + fprintf(stdout, "\n"); + + va_end(args); + + //if (msgType == LOG_ERROR) exit(1); } -//---------------------------------------------------------------------------------- -// Module specific Functions Definitions -//---------------------------------------------------------------------------------- -void DrawRectangleV(Vector2 position, Vector2 size, Color color) +// Draw rectangle using rlgl OpenGL 1.1 style coding (translated to OpenGL 3.3 internally) +static void DrawRectangleV(Vector2 position, Vector2 size, Color color) { rlBegin(RL_TRIANGLES); rlColor4ub(color.r, color.g, color.b, color.a); @@ -128,4 +225,181 @@ void DrawRectangleV(Vector2 position, Vector2 size, Color color) rlVertex2i(position.x + size.x, position.y + size.y); rlVertex2i(position.x + size.x, position.y); rlEnd(); -} \ No newline at end of file +} + +// Draw a grid centered at (0, 0, 0) +static void DrawGrid(int slices, float spacing) +{ + int halfSlices = slices / 2; + + rlBegin(RL_LINES); + for(int i = -halfSlices; i <= halfSlices; i++) + { + if (i == 0) + { + rlColor3f(0.5f, 0.5f, 0.5f); + rlColor3f(0.5f, 0.5f, 0.5f); + rlColor3f(0.5f, 0.5f, 0.5f); + rlColor3f(0.5f, 0.5f, 0.5f); + } + else + { + rlColor3f(0.75f, 0.75f, 0.75f); + rlColor3f(0.75f, 0.75f, 0.75f); + rlColor3f(0.75f, 0.75f, 0.75f); + rlColor3f(0.75f, 0.75f, 0.75f); + } + + rlVertex3f((float)i*spacing, 0.0f, (float)-halfSlices*spacing); + rlVertex3f((float)i*spacing, 0.0f, (float)halfSlices*spacing); + + rlVertex3f((float)-halfSlices*spacing, 0.0f, (float)i*spacing); + rlVertex3f((float)halfSlices*spacing, 0.0f, (float)i*spacing); + } + rlEnd(); +} + +// Draw cube +// NOTE: Cube position is the center position +void DrawCube(Vector3 position, float width, float height, float length, Color color) +{ + float x = 0.0f; + float y = 0.0f; + float z = 0.0f; + + rlPushMatrix(); + + // NOTE: Be careful! Function order matters (rotate -> scale -> translate) + rlTranslatef(position.x, position.y, position.z); + //rlScalef(2.0f, 2.0f, 2.0f); + //rlRotatef(45, 0, 1, 0); + + rlBegin(RL_TRIANGLES); + rlColor4ub(color.r, color.g, color.b, color.a); + + // Front Face ----------------------------------------------------- + rlVertex3f(x-width/2, y-height/2, z+length/2); // Bottom Left + rlVertex3f(x+width/2, y-height/2, z+length/2); // Bottom Right + rlVertex3f(x-width/2, y+height/2, z+length/2); // Top Left + + rlVertex3f(x+width/2, y+height/2, z+length/2); // Top Right + rlVertex3f(x-width/2, y+height/2, z+length/2); // Top Left + rlVertex3f(x+width/2, y-height/2, z+length/2); // Bottom Right + + // Back Face ------------------------------------------------------ + rlVertex3f(x-width/2, y-height/2, z-length/2); // Bottom Left + rlVertex3f(x-width/2, y+height/2, z-length/2); // Top Left + rlVertex3f(x+width/2, y-height/2, z-length/2); // Bottom Right + + rlVertex3f(x+width/2, y+height/2, z-length/2); // Top Right + rlVertex3f(x+width/2, y-height/2, z-length/2); // Bottom Right + rlVertex3f(x-width/2, y+height/2, z-length/2); // Top Left + + // Top Face ------------------------------------------------------- + rlVertex3f(x-width/2, y+height/2, z-length/2); // Top Left + rlVertex3f(x-width/2, y+height/2, z+length/2); // Bottom Left + rlVertex3f(x+width/2, y+height/2, z+length/2); // Bottom Right + + rlVertex3f(x+width/2, y+height/2, z-length/2); // Top Right + rlVertex3f(x-width/2, y+height/2, z-length/2); // Top Left + rlVertex3f(x+width/2, y+height/2, z+length/2); // Bottom Right + + // Bottom Face ---------------------------------------------------- + rlVertex3f(x-width/2, y-height/2, z-length/2); // Top Left + rlVertex3f(x+width/2, y-height/2, z+length/2); // Bottom Right + rlVertex3f(x-width/2, y-height/2, z+length/2); // Bottom Left + + rlVertex3f(x+width/2, y-height/2, z-length/2); // Top Right + rlVertex3f(x+width/2, y-height/2, z+length/2); // Bottom Right + rlVertex3f(x-width/2, y-height/2, z-length/2); // Top Left + + // Right face ----------------------------------------------------- + rlVertex3f(x+width/2, y-height/2, z-length/2); // Bottom Right + rlVertex3f(x+width/2, y+height/2, z-length/2); // Top Right + rlVertex3f(x+width/2, y+height/2, z+length/2); // Top Left + + rlVertex3f(x+width/2, y-height/2, z+length/2); // Bottom Left + rlVertex3f(x+width/2, y-height/2, z-length/2); // Bottom Right + rlVertex3f(x+width/2, y+height/2, z+length/2); // Top Left + + // Left Face ------------------------------------------------------ + rlVertex3f(x-width/2, y-height/2, z-length/2); // Bottom Right + rlVertex3f(x-width/2, y+height/2, z+length/2); // Top Left + rlVertex3f(x-width/2, y+height/2, z-length/2); // Top Right + + rlVertex3f(x-width/2, y-height/2, z+length/2); // Bottom Left + rlVertex3f(x-width/2, y+height/2, z+length/2); // Top Left + rlVertex3f(x-width/2, y-height/2, z-length/2); // Bottom Right + rlEnd(); + rlPopMatrix(); +} + +// Draw cube wires +void DrawCubeWires(Vector3 position, float width, float height, float length, Color color) +{ + float x = 0.0f; + float y = 0.0f; + float z = 0.0f; + + rlPushMatrix(); + + rlTranslatef(position.x, position.y, position.z); + //rlRotatef(45, 0, 1, 0); + + rlBegin(RL_LINES); + rlColor4ub(color.r, color.g, color.b, color.a); + + // Front Face ----------------------------------------------------- + // Bottom Line + rlVertex3f(x-width/2, y-height/2, z+length/2); // Bottom Left + rlVertex3f(x+width/2, y-height/2, z+length/2); // Bottom Right + + // Left Line + rlVertex3f(x+width/2, y-height/2, z+length/2); // Bottom Right + rlVertex3f(x+width/2, y+height/2, z+length/2); // Top Right + + // Top Line + rlVertex3f(x+width/2, y+height/2, z+length/2); // Top Right + rlVertex3f(x-width/2, y+height/2, z+length/2); // Top Left + + // Right Line + rlVertex3f(x-width/2, y+height/2, z+length/2); // Top Left + rlVertex3f(x-width/2, y-height/2, z+length/2); // Bottom Left + + // Back Face ------------------------------------------------------ + // Bottom Line + rlVertex3f(x-width/2, y-height/2, z-length/2); // Bottom Left + rlVertex3f(x+width/2, y-height/2, z-length/2); // Bottom Right + + // Left Line + rlVertex3f(x+width/2, y-height/2, z-length/2); // Bottom Right + rlVertex3f(x+width/2, y+height/2, z-length/2); // Top Right + + // Top Line + rlVertex3f(x+width/2, y+height/2, z-length/2); // Top Right + rlVertex3f(x-width/2, y+height/2, z-length/2); // Top Left + + // Right Line + rlVertex3f(x-width/2, y+height/2, z-length/2); // Top Left + rlVertex3f(x-width/2, y-height/2, z-length/2); // Bottom Left + + // Top Face ------------------------------------------------------- + // Left Line + rlVertex3f(x-width/2, y+height/2, z+length/2); // Top Left Front + rlVertex3f(x-width/2, y+height/2, z-length/2); // Top Left Back + + // Right Line + rlVertex3f(x+width/2, y+height/2, z+length/2); // Top Right Front + rlVertex3f(x+width/2, y+height/2, z-length/2); // Top Right Back + + // Bottom Face --------------------------------------------------- + // Left Line + rlVertex3f(x-width/2, y-height/2, z+length/2); // Top Left Front + rlVertex3f(x-width/2, y-height/2, z-length/2); // Top Left Back + + // Right Line + rlVertex3f(x+width/2, y-height/2, z+length/2); // Top Right Front + rlVertex3f(x+width/2, y-height/2, z-length/2); // Top Right Back + rlEnd(); + rlPopMatrix(); +} diff --git a/examples/oculus_glfw_sample/raymath.h b/examples/oculus_glfw_sample/raymath.h index 52e92b50e..2e055e9ff 100644 --- a/examples/oculus_glfw_sample/raymath.h +++ b/examples/oculus_glfw_sample/raymath.h @@ -73,7 +73,7 @@ //---------------------------------------------------------------------------------- #if defined(RAYMATH_STANDALONE) - // Vector2 type + // Vector2 type typedef struct Vector2 { float x; float y; @@ -158,6 +158,7 @@ RMDEF void PrintMatrix(Matrix m); // Print matrix ut //------------------------------------------------------------------------------------ RMDEF float QuaternionLength(Quaternion quat); // Compute the length of a quaternion RMDEF void QuaternionNormalize(Quaternion *q); // Normalize provided quaternion +RMDEF void QuaternionInvert(Quaternion *quat); // Invert provided quaternion RMDEF Quaternion QuaternionMultiply(Quaternion q1, Quaternion q2); // Calculate two quaternion multiplication RMDEF Quaternion QuaternionSlerp(Quaternion q1, Quaternion q2, float slerp); // Calculates spherical linear interpolation between two quaternions RMDEF Quaternion QuaternionFromMatrix(Matrix matrix); // Returns a quaternion for a given rotation matrix @@ -908,6 +909,23 @@ RMDEF void QuaternionNormalize(Quaternion *q) q->w *= ilength; } +// Invert provided quaternion +RMDEF void QuaternionInvert(Quaternion *quat) +{ + float length = QuaternionLength(*quat); + float lengthSq = length*length; + + if (lengthSq != 0.0) + { + float i = 1.0f/lengthSq; + + quat->x *= -i; + quat->y *= -i; + quat->z *= -i; + quat->w *= i; + } +} + // Calculate two quaternion multiplication RMDEF Quaternion QuaternionMultiply(Quaternion q1, Quaternion q2) { diff --git a/examples/oculus_glfw_sample/rlgl.c b/examples/oculus_glfw_sample/rlgl.c index 7129402d8..dcc84c2f7 100644 --- a/examples/oculus_glfw_sample/rlgl.c +++ b/examples/oculus_glfw_sample/rlgl.c @@ -71,6 +71,8 @@ #define MAX_DRAWS_BY_TEXTURE 256 // Draws are organized by texture changes #define TEMP_VERTEX_BUFFER_SIZE 4096 // Temporal Vertex Buffer (required for vertex-transformations) // NOTE: Every vertex are 3 floats (12 bytes) + +#define MAX_LIGHTS 8 // Max lights supported by standard shader #ifndef GL_SHADING_LANGUAGE_VERSION #define GL_SHADING_LANGUAGE_VERSION 0x8B8C @@ -115,58 +117,36 @@ #define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 #define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 #endif + +// Default vertex attribute names on shader to set location points +#define DEFAULT_ATTRIB_POSITION_NAME "vertexPosition" // shader-location = 0 +#define DEFAULT_ATTRIB_TEXCOORD_NAME "vertexTexCoord" // shader-location = 1 +#define DEFAULT_ATTRIB_NORMAL_NAME "vertexNormal" // shader-location = 2 +#define DEFAULT_ATTRIB_COLOR_NAME "vertexColor" // shader-location = 3 +#define DEFAULT_ATTRIB_TANGENT_NAME "vertexTangent" // shader-location = 4 +#define DEFAULT_ATTRIB_TEXCOORD2_NAME "vertexTexCoord2" // shader-location = 5 + //---------------------------------------------------------------------------------- // Types and Structures Definition //---------------------------------------------------------------------------------- -// Vertex buffer (position + color arrays) -// NOTE: Used for lines and triangles VAOs +// Dynamic vertex buffers (position + texcoords + colors + indices arrays) typedef struct { - int vCounter; - int cCounter; - float *vertices; // 3 components per vertex - unsigned char *colors; // 4 components per vertex -} VertexPositionColorBuffer; - -// Vertex buffer (position + texcoords + color arrays) -// NOTE: Not used -typedef struct { - int vCounter; - int tcCounter; - int cCounter; - float *vertices; // 3 components per vertex - float *texcoords; // 2 components per vertex - unsigned char *colors; // 4 components per vertex -} VertexPositionColorTextureBuffer; - -// Vertex buffer (position + texcoords + normals arrays) -// NOTE: Not used -typedef struct { - int vCounter; - int tcCounter; - int nCounter; - float *vertices; // 3 components per vertex - float *texcoords; // 2 components per vertex - float *normals; // 3 components per vertex - //short *normals; // NOTE: Less data load... but padding issues and normalizing required! -} VertexPositionTextureNormalBuffer; - -// Vertex buffer (position + texcoords + colors + indices arrays) -// NOTE: Used for quads VAO -typedef struct { - int vCounter; - int tcCounter; - int cCounter; - float *vertices; // 3 components per vertex - float *texcoords; // 2 components per vertex - unsigned char *colors; // 4 components per vertex + int vCounter; // vertex position counter to process (and draw) from full buffer + int tcCounter; // vertex texcoord counter to process (and draw) from full buffer + int cCounter; // vertex color counter to process (and draw) from full buffer + float *vertices; // vertex position (XYZ - 3 components per vertex) (shader-location = 0) + float *texcoords; // vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1) + unsigned char *colors; // vertex colors (RGBA - 4 components per vertex) (shader-location = 3) #if defined(GRAPHICS_API_OPENGL_11) || defined(GRAPHICS_API_OPENGL_33) - unsigned int *indices; // 6 indices per quad (could be int) + unsigned int *indices; // vertex indices (in case vertex data comes indexed) (6 indices per quad) #elif defined(GRAPHICS_API_OPENGL_ES2) - unsigned short *indices; // 6 indices per quad (must be short) + unsigned short *indices; // vertex indices (in case vertex data comes indexed) (6 indices per quad) // NOTE: 6*2 byte = 12 byte, not alignment problem! #endif -} VertexPositionColorTextureIndexBuffer; + unsigned int vaoId; // OpenGL Vertex Array Object id + unsigned int vboId[4]; // OpenGL Vertex Buffer Objects id (4 types of vertex data) +} DynamicBuffer; // Draw call type // NOTE: Used to track required draw-calls, organized by texture @@ -191,23 +171,15 @@ static Matrix modelview; static Matrix projection; static Matrix *currentMatrix; static int currentMatrixMode; +static Matrix customMVP; static DrawMode currentDrawMode; static float currentDepth = -1.0f; -// Default vertex buffers for lines, triangles and quads -static VertexPositionColorBuffer lines; // No texture support -static VertexPositionColorBuffer triangles; // No texture support -static VertexPositionColorTextureIndexBuffer quads; - -// Default vertex buffers VAOs (if supported) -static GLuint vaoLines, vaoTriangles, vaoQuads; - -// Default vertex buffers VBOs -static GLuint linesBuffer[2]; // Lines buffers (position, color) -static GLuint trianglesBuffer[2]; // Triangles buffers (position, color) -static GLuint quadsBuffer[4]; // Quads buffers (position, texcoord, color, index) +static DynamicBuffer lines; +static DynamicBuffer triangles; +static DynamicBuffer quads; // Default buffers draw calls static DrawCall *draws; @@ -220,6 +192,7 @@ static bool useTempBuffer = false; // Shader Programs static Shader defaultShader; +static Shader standardShader; static Shader currentShader; // By default, defaultShader // Flags for supported extensions @@ -230,6 +203,10 @@ static bool texCompETC1Supported = false; // ETC1 texture compression support static bool texCompETC2Supported = false; // ETC2/EAC texture compression support static bool texCompPVRTSupported = false; // PVR texture compression support static bool texCompASTCSupported = false; // ASTC texture compression support + +// Lighting data +static Light lights[MAX_LIGHTS]; // Lights pool +static int lightsCount; // Counts current enabled physic objects #endif // Compressed textures support flags @@ -255,14 +232,20 @@ unsigned int whiteTexture; //---------------------------------------------------------------------------------- #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) static void LoadCompressedTexture(unsigned char *data, int width, int height, int mipmapCount, int compressedFormat); +static unsigned int LoadShaderProgram(char *vShaderStr, char *fShaderStr); // Load custom shader strings and return program id -static Shader LoadDefaultShader(void); -static void LoadDefaultShaderLocations(Shader *shader); -static void UnloadDefaultShader(void); +static Shader LoadDefaultShader(void); // Load default shader (just vertex positioning and texture coloring) +static Shader LoadStandardShader(void); // Load standard shader (support materials and lighting) +static void LoadDefaultShaderLocations(Shader *shader); // Bind default shader locations (attributes and uniforms) +static void UnloadDefaultShader(void); // Unload default shader +static void UnloadStandardShader(void); // Unload standard shader -static void LoadDefaultBuffers(void); -static void UpdateDefaultBuffers(void); -static void UnloadDefaultBuffers(void); +static void LoadDefaultBuffers(void); // Load default internal buffers (lines, triangles, quads) +static void UpdateDefaultBuffers(void); // Update default internal buffers (VAOs/VBOs) with vertex data +static void DrawDefaultBuffers(void); // Draw default internal buffers vertex data +static void UnloadDefaultBuffers(void); // Unload default internal buffers vertex data from CPU and GPU + +static void SetShaderLights(Shader shader); // Sets shader uniform values for lights array static char *ReadTextFile(const char *fileName); #endif @@ -274,7 +257,7 @@ static Color *GenNextMipmap(Color *srcData, int srcWidth, int srcHeight); #if defined(RLGL_STANDALONE) static void TraceLog(int msgType, const char *text, ...); -float *MatrixToFloat(Matrix mat); // Converts Matrix to float array +float *MatrixToFloat(Matrix mat); // Converts Matrix to float array #endif //---------------------------------------------------------------------------------- @@ -422,6 +405,12 @@ void rlOrtho(double left, double right, double bottom, double top, double near, #endif +// Set the viewport area (trasnformation from normalized device coordinates to window coordinates) +void rlViewport(int x, int y, int width, int height) +{ + glViewport(x, y, width, height); +} + //---------------------------------------------------------------------------------- // Module Functions Definition - Vertex level operations //---------------------------------------------------------------------------------- @@ -743,17 +732,25 @@ void rlDisableTexture(void) #endif } +// Enable rendering to texture (fbo) void rlEnableRenderTexture(unsigned int id) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) glBindFramebuffer(GL_FRAMEBUFFER, id); + + //glDisable(GL_CULL_FACE); // Allow double side drawing for texture flipping + //glCullFace(GL_FRONT); #endif } +// Disable rendering to texture void rlDisableRenderTexture(void) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) glBindFramebuffer(GL_FRAMEBUFFER, 0); + + //glEnable(GL_CULL_FACE); + //glCullFace(GL_BACK); #endif } @@ -769,19 +766,37 @@ void rlDisableDepthTest(void) glDisable(GL_DEPTH_TEST); } +// Enable wire mode +void rlEnableWireMode(void) +{ +#if defined (GRAPHICS_API_OPENGL_11) || defined(GRAPHICS_API_OPENGL_33) + // NOTE: glPolygonMode() not available on OpenGL ES + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); +#endif +} + +// Disable wire mode +void rlDisableWireMode(void) +{ +#if defined (GRAPHICS_API_OPENGL_11) || defined(GRAPHICS_API_OPENGL_33) + // NOTE: glPolygonMode() not available on OpenGL ES + glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); +#endif +} + // Unload texture from GPU memory void rlDeleteTextures(unsigned int id) { - glDeleteTextures(1, &id); + if (id != 0) glDeleteTextures(1, &id); } // Unload render texture from GPU memory void rlDeleteRenderTextures(RenderTexture2D target) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - glDeleteFramebuffers(1, &target.id); - glDeleteTextures(1, &target.texture.id); - glDeleteTextures(1, &target.depth.id); + if (target.id != 0) glDeleteFramebuffers(1, &target.id); + if (target.texture.id != 0) glDeleteTextures(1, &target.texture.id); + if (target.depth.id != 0) glDeleteTextures(1, &target.depth.id); #endif } @@ -789,7 +804,7 @@ void rlDeleteRenderTextures(RenderTexture2D target) void rlDeleteShader(unsigned int id) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - glDeleteProgram(id); + if (id != 0) glDeleteProgram(id); #endif } @@ -799,7 +814,7 @@ void rlDeleteVertexArrays(unsigned int id) #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) if (vaoSupported) { - glDeleteVertexArrays(1, &id); + if (id != 0) glDeleteVertexArrays(1, &id); TraceLog(INFO, "[VAO ID %i] Unloaded model data from VRAM (GPU)", id); } #endif @@ -809,9 +824,11 @@ void rlDeleteVertexArrays(unsigned int id) void rlDeleteBuffers(unsigned int id) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - glDeleteBuffers(1, &id); - - if (!vaoSupported) TraceLog(INFO, "[VBO ID %i] Unloaded model vertex data from VRAM (GPU)", id); + if (id != 0) + { + glDeleteBuffers(1, &id); + if (!vaoSupported) TraceLog(INFO, "[VBO ID %i] Unloaded model vertex data from VRAM (GPU)", id); + } #endif } @@ -1018,6 +1035,7 @@ void rlglInit(void) // Init default Shader (customized for GL 3.3 and ES2) defaultShader = LoadDefaultShader(); + standardShader = LoadStandardShader(); currentShader = defaultShader; LoadDefaultBuffers(); // Initialize default vertex arrays buffers (lines, triangles, quads) @@ -1046,11 +1064,19 @@ void rlglClose(void) { #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) UnloadDefaultShader(); + UnloadStandardShader(); UnloadDefaultBuffers(); // Delete default white texture glDeleteTextures(1, &whiteTexture); TraceLog(INFO, "[TEX ID %i] Unloaded texture data (base white texture) from VRAM", whiteTexture); + + // Unload lights + if (lightsCount > 0) + { + for (int i = 0; i < lightsCount; i++) free(lights[i]); + lightsCount = 0; + } free(draws); #endif @@ -1059,316 +1085,18 @@ void rlglClose(void) // Drawing batches: triangles, quads, lines void rlglDraw(Matrix mvp) { + customMVP = mvp; + #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) +/* + for (int i = 0; i < modelsCount; i++) + { + rlglDrawMesh(models[i]->mesh, models[i]->material, models[i]->transform); + } +*/ + // NOTE: Default buffers always drawn at the end UpdateDefaultBuffers(); - - if ((lines.vCounter > 0) || (triangles.vCounter > 0) || (quads.vCounter > 0)) - { - glUseProgram(currentShader.id); - - Matrix mvp2 = MatrixMultiply(modelview, projection); // Create modelview-projection matrix - - glUniformMatrix4fv(currentShader.mvpLoc, 1, false, MatrixToFloat(mvp2)); - glUniform1i(currentShader.mapDiffuseLoc, 0); - glUniform4f(currentShader.tintColorLoc, 1.0f, 1.0f, 1.0f, 1.0f); - } - - // NOTE: We draw in this order: lines, triangles, quads - - if (lines.vCounter > 0) - { - glBindTexture(GL_TEXTURE_2D, whiteTexture); - - if (vaoSupported) - { - glBindVertexArray(vaoLines); - } - else - { - glBindBuffer(GL_ARRAY_BUFFER, linesBuffer[0]); - glVertexAttribPointer(currentShader.vertexLoc, 3, GL_FLOAT, 0, 0, 0); - glEnableVertexAttribArray(currentShader.vertexLoc); - - if (currentShader.colorLoc != -1) - { - glBindBuffer(GL_ARRAY_BUFFER, linesBuffer[1]); - glVertexAttribPointer(currentShader.colorLoc, 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); - glEnableVertexAttribArray(currentShader.colorLoc); - } - } - - glDrawArrays(GL_LINES, 0, lines.vCounter); - - if (!vaoSupported) glBindBuffer(GL_ARRAY_BUFFER, 0); - glBindTexture(GL_TEXTURE_2D, 0); - } - - if (triangles.vCounter > 0) - { - glBindTexture(GL_TEXTURE_2D, whiteTexture); - - if (vaoSupported) - { - glBindVertexArray(vaoTriangles); - } - else - { - glBindBuffer(GL_ARRAY_BUFFER, trianglesBuffer[0]); - glVertexAttribPointer(currentShader.vertexLoc, 3, GL_FLOAT, 0, 0, 0); - glEnableVertexAttribArray(currentShader.vertexLoc); - - if (currentShader.colorLoc != -1) - { - glBindBuffer(GL_ARRAY_BUFFER, trianglesBuffer[1]); - glVertexAttribPointer(currentShader.colorLoc, 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); - glEnableVertexAttribArray(currentShader.colorLoc); - } - } - - glDrawArrays(GL_TRIANGLES, 0, triangles.vCounter); - - if (!vaoSupported) glBindBuffer(GL_ARRAY_BUFFER, 0); - glBindTexture(GL_TEXTURE_2D, 0); - } - - if (quads.vCounter > 0) - { - int quadsCount = 0; - int numIndicesToProcess = 0; - int indicesOffset = 0; - - if (vaoSupported) - { - glBindVertexArray(vaoQuads); - } - else - { - // Enable vertex attributes - glBindBuffer(GL_ARRAY_BUFFER, quadsBuffer[0]); - glVertexAttribPointer(currentShader.vertexLoc, 3, GL_FLOAT, 0, 0, 0); - glEnableVertexAttribArray(currentShader.vertexLoc); - - glBindBuffer(GL_ARRAY_BUFFER, quadsBuffer[1]); - glVertexAttribPointer(currentShader.texcoordLoc, 2, GL_FLOAT, 0, 0, 0); - glEnableVertexAttribArray(currentShader.texcoordLoc); - - if (currentShader.colorLoc != -1) - { - glBindBuffer(GL_ARRAY_BUFFER, quadsBuffer[2]); - glVertexAttribPointer(currentShader.colorLoc, 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); - glEnableVertexAttribArray(currentShader.colorLoc); - } - - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, quadsBuffer[3]); - } - - //TraceLog(DEBUG, "Draws required per frame: %i", drawsCounter); - - for (int i = 0; i < drawsCounter; i++) - { - quadsCount = draws[i].vertexCount/4; - numIndicesToProcess = quadsCount*6; // Get number of Quads * 6 index by Quad - - //TraceLog(DEBUG, "Quads to render: %i - Vertex Count: %i", quadsCount, draws[i].vertexCount); - - glBindTexture(GL_TEXTURE_2D, draws[i].textureId); - - // NOTE: The final parameter tells the GPU the offset in bytes from the start of the index buffer to the location of the first index to process -#if defined(GRAPHICS_API_OPENGL_33) - glDrawElements(GL_TRIANGLES, numIndicesToProcess, GL_UNSIGNED_INT, (GLvoid*) (sizeof(GLuint) * indicesOffset)); -#elif defined(GRAPHICS_API_OPENGL_ES2) - glDrawElements(GL_TRIANGLES, numIndicesToProcess, GL_UNSIGNED_SHORT, (GLvoid*) (sizeof(GLushort) * indicesOffset)); -#endif - //GLenum err; - //if ((err = glGetError()) != GL_NO_ERROR) TraceLog(INFO, "OpenGL error: %i", (int)err); //GL_INVALID_ENUM! - - indicesOffset += draws[i].vertexCount/4*6; - } - - if (!vaoSupported) - { - glBindBuffer(GL_ARRAY_BUFFER, 0); - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); - } - - glBindTexture(GL_TEXTURE_2D, 0); // Unbind textures - } - - if (vaoSupported) glBindVertexArray(0); // Unbind VAO - - glUseProgram(0); // Unbind shader program - - // Reset draws counter - drawsCounter = 1; - draws[0].textureId = whiteTexture; - draws[0].vertexCount = 0; - - // Reset vertex counters for next frame - lines.vCounter = 0; - lines.cCounter = 0; - - triangles.vCounter = 0; - triangles.cCounter = 0; - - quads.vCounter = 0; - quads.tcCounter = 0; - quads.cCounter = 0; - - // Reset depth for next draw - currentDepth = -1.0f; -#endif -} - -// Draw a 3d model -// NOTE: Model transform can come within model struct -void rlglDrawModel(Model model, Vector3 position, Vector3 rotationAxis, float rotationAngle, Vector3 scale, Color color, bool wires) -{ -#if defined (GRAPHICS_API_OPENGL_11) || defined(GRAPHICS_API_OPENGL_33) - // NOTE: glPolygonMode() not available on OpenGL ES - if (wires) glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); -#endif - -#if defined(GRAPHICS_API_OPENGL_11) - glEnable(GL_TEXTURE_2D); - glBindTexture(GL_TEXTURE_2D, model.material.texDiffuse.id); - - // NOTE: On OpenGL 1.1 we use Vertex Arrays to draw model - glEnableClientState(GL_VERTEX_ARRAY); // Enable vertex array - glEnableClientState(GL_TEXTURE_COORD_ARRAY); // Enable texture coords array - glEnableClientState(GL_NORMAL_ARRAY); // Enable normals array - - glVertexPointer(3, GL_FLOAT, 0, model.mesh.vertices); // Pointer to vertex coords array - glTexCoordPointer(2, GL_FLOAT, 0, model.mesh.texcoords); // Pointer to texture coords array - glNormalPointer(GL_FLOAT, 0, model.mesh.normals); // Pointer to normals array - //glColorPointer(4, GL_UNSIGNED_BYTE, 0, model.mesh.colors); // Pointer to colors array (NOT USED) - - rlPushMatrix(); - rlTranslatef(position.x, position.y, position.z); - rlScalef(scale.x, scale.y, scale.z); - rlRotatef(rotationAngle, rotationAxis.x, rotationAxis.y, rotationAxis.z); - - rlColor4ub(color.r, color.g, color.b, color.a); - - glDrawArrays(GL_TRIANGLES, 0, model.mesh.vertexCount); - rlPopMatrix(); - - glDisableClientState(GL_VERTEX_ARRAY); // Disable vertex array - glDisableClientState(GL_TEXTURE_COORD_ARRAY); // Disable texture coords array - glDisableClientState(GL_NORMAL_ARRAY); // Disable normals array - - glDisable(GL_TEXTURE_2D); - glBindTexture(GL_TEXTURE_2D, 0); -#endif - -#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - glUseProgram(model.material.shader.id); - - // At this point the modelview matrix just contains the view matrix (camera) - // That's because Begin3dMode() sets it an no model-drawing function modifies it, all use rlPushMatrix() and rlPopMatrix() - Matrix matView = modelview; // View matrix (camera) - Matrix matProjection = projection; // Projection matrix (perspective) - - // Calculate transformation matrix from function parameters - // Get transform matrix (rotation -> scale -> translation) - Matrix matRotation = MatrixRotate(rotationAxis, rotationAngle*DEG2RAD); - Matrix matScale = MatrixScale(scale.x, scale.y, scale.z); - Matrix matTranslation = MatrixTranslate(position.x, position.y, position.z); - Matrix matTransform = MatrixMultiply(MatrixMultiply(matScale, matRotation), matTranslation); - - // Combine model internal transformation matrix (model.transform) with matrix generated by function parameters (matTransform) - Matrix matModel = MatrixMultiply(model.transform, matTransform); // Transform to world-space coordinates - - // Calculate model-view matrix combining matModel and matView - Matrix matModelView = MatrixMultiply(matModel, matView); // Transform to camera-space coordinates - - // Calculate model-view-projection matrix (MVP) - Matrix matMVP = MatrixMultiply(matModelView, matProjection); // Transform to screen-space coordinates - - // Send combined model-view-projection matrix to shader - glUniformMatrix4fv(model.material.shader.mvpLoc, 1, false, MatrixToFloat(matMVP)); - - // Apply color tinting to model - // NOTE: Just update one uniform on fragment shader - float vColor[4] = { (float)color.r/255, (float)color.g/255, (float)color.b/255, (float)color.a/255 }; - glUniform4fv(model.material.shader.tintColorLoc, 1, vColor); - - // Set shader textures (diffuse, normal, specular) - glActiveTexture(GL_TEXTURE0); - glBindTexture(GL_TEXTURE_2D, model.material.texDiffuse.id); - glUniform1i(model.material.shader.mapDiffuseLoc, 0); // Texture fits in active texture unit 0 - - if ((model.material.texNormal.id != 0) && (model.material.shader.mapNormalLoc != -1)) - { - glActiveTexture(GL_TEXTURE1); - glBindTexture(GL_TEXTURE_2D, model.material.texNormal.id); - glUniform1i(model.material.shader.mapNormalLoc, 1); // Texture fits in active texture unit 1 - } - - if ((model.material.texSpecular.id != 0) && (model.material.shader.mapSpecularLoc != -1)) - { - glActiveTexture(GL_TEXTURE2); - glBindTexture(GL_TEXTURE_2D, model.material.texSpecular.id); - glUniform1i(model.material.shader.mapSpecularLoc, 2); // Texture fits in active texture unit 2 - } - - if (vaoSupported) - { - glBindVertexArray(model.mesh.vaoId); - } - else - { - // Bind model VBO data: vertex position - glBindBuffer(GL_ARRAY_BUFFER, model.mesh.vboId[0]); - glVertexAttribPointer(model.material.shader.vertexLoc, 3, GL_FLOAT, 0, 0, 0); - glEnableVertexAttribArray(model.material.shader.vertexLoc); - - // Bind model VBO data: vertex texcoords - glBindBuffer(GL_ARRAY_BUFFER, model.mesh.vboId[1]); - glVertexAttribPointer(model.material.shader.texcoordLoc, 2, GL_FLOAT, 0, 0, 0); - glEnableVertexAttribArray(model.material.shader.texcoordLoc); - - // Bind model VBO data: vertex normals (if available) - if (model.material.shader.normalLoc != -1) - { - glBindBuffer(GL_ARRAY_BUFFER, model.mesh.vboId[2]); - glVertexAttribPointer(model.material.shader.normalLoc, 3, GL_FLOAT, 0, 0, 0); - glEnableVertexAttribArray(model.material.shader.normalLoc); - } - - // TODO: Bind model VBO data: colors, tangents, texcoords2 (if available) - } - - // Draw call! - glDrawArrays(GL_TRIANGLES, 0, model.mesh.vertexCount); - - //glDisableVertexAttribArray(model.shader.vertexLoc); - //glDisableVertexAttribArray(model.shader.texcoordLoc); - //if (model.shader.normalLoc != -1) glDisableVertexAttribArray(model.shader.normalLoc); - - if (model.material.texNormal.id != 0) - { - glActiveTexture(GL_TEXTURE1); - glBindTexture(GL_TEXTURE_2D, 0); - } - - if (model.material.texSpecular.id != 0) - { - glActiveTexture(GL_TEXTURE2); - glBindTexture(GL_TEXTURE_2D, 0); - } - - glActiveTexture(GL_TEXTURE0); // Set shader active texture to default 0 - glBindTexture(GL_TEXTURE_2D, 0); // Unbind textures - - if (vaoSupported) glBindVertexArray(0); // Unbind VAO - else glBindBuffer(GL_ARRAY_BUFFER, 0); // Unbind VBOs - - glUseProgram(0); // Unbind shader program -#endif - -#if defined (GRAPHICS_API_OPENGL_11) || defined(GRAPHICS_API_OPENGL_33) - // NOTE: glPolygonMode() not available on OpenGL ES - if (wires) glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + DrawDefaultBuffers(); #endif } @@ -1693,7 +1421,7 @@ RenderTexture2D rlglLoadRenderTexture(int width, int height) { TraceLog(WARNING, "Framebuffer object could not be created..."); - switch(status) + switch (status) { case GL_FRAMEBUFFER_UNSUPPORTED: TraceLog(WARNING, "Framebuffer is unsupported"); break; case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: TraceLog(WARNING, "Framebuffer incomplete attachment"); break; @@ -1808,95 +1536,409 @@ void rlglGenerateMipmaps(Texture2D texture) glBindTexture(GL_TEXTURE_2D, 0); } -// Load vertex data into a VAO (if supported) and VBO -Model rlglLoadModel(Mesh mesh) +// Upload vertex data into a VAO (if supported) and VBO +void rlglLoadMesh(Mesh *mesh, bool dynamic) { - Model model; + mesh->vaoId = 0; // Vertex Array Object + mesh->vboId[0] = 0; // Vertex positions VBO + mesh->vboId[1] = 0; // Vertex texcoords VBO + mesh->vboId[2] = 0; // Vertex normals VBO + mesh->vboId[3] = 0; // Vertex colors VBO + mesh->vboId[4] = 0; // Vertex tangents VBO + mesh->vboId[5] = 0; // Vertex texcoords2 VBO + mesh->vboId[6] = 0; // Vertex indices VBO + + int drawHint = GL_STATIC_DRAW; + if (dynamic) drawHint = GL_DYNAMIC_DRAW; - model.mesh = mesh; - model.mesh.vaoId = 0; // Vertex Array Object - model.mesh.vboId[0] = 0; // Vertex positions VBO - model.mesh.vboId[1] = 0; // Vertex texcoords VBO - model.mesh.vboId[2] = 0; // Vertex normals VBO - - // TODO: Consider attributes: color, texcoords2, tangents (if available) - - model.transform = MatrixIdentity(); - -#if defined(GRAPHICS_API_OPENGL_11) - model.material.texDiffuse.id = 0; // No texture required - model.material.shader.id = 0; // No shader used - -#elif defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - model.material.shader = defaultShader; // Default model shader - - model.material.texDiffuse.id = whiteTexture; // Default whiteTexture - model.material.texDiffuse.width = 1; // Default whiteTexture width - model.material.texDiffuse.height = 1; // Default whiteTexture height - model.material.texDiffuse.format = UNCOMPRESSED_R8G8B8A8; // Default whiteTexture format - - model.material.texNormal.id = 0; // By default, no normal texture - model.material.texSpecular.id = 0; // By default, no specular texture - - // TODO: Fill default material properties (color, glossiness...) - - GLuint vaoModel = 0; // Vertex Array Objects (VAO) - GLuint vertexBuffer[3]; // Vertex Buffer Objects (VBO) +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + GLuint vaoId = 0; // Vertex Array Objects (VAO) + GLuint vboId[7]; // Vertex Buffer Objects (VBOs) if (vaoSupported) { // Initialize Quads VAO (Buffer A) - glGenVertexArrays(1, &vaoModel); - glBindVertexArray(vaoModel); + glGenVertexArrays(1, &vaoId); + glBindVertexArray(vaoId); } - // Create buffers for our vertex data (positions, texcoords, normals) - glGenBuffers(3, vertexBuffer); + // NOTE: Attributes must be uploaded considering default locations points - // NOTE: Default shader is assigned to model, so vbo buffers are properly linked to vertex attribs - // If model shader is changed, vbo buffers must be re-assigned to new location points (previously loaded) + // Enable vertex attributes: position (shader-location = 0) + glGenBuffers(1, &vboId[0]); + glBindBuffer(GL_ARRAY_BUFFER, vboId[0]); + glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*mesh->vertexCount, mesh->vertices, drawHint); + glVertexAttribPointer(0, 3, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(0); - // Enable vertex attributes: position - glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer[0]); - glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*mesh.vertexCount, mesh.vertices, GL_STATIC_DRAW); - glVertexAttribPointer(model.material.shader.vertexLoc, 3, GL_FLOAT, 0, 0, 0); - glEnableVertexAttribArray(model.material.shader.vertexLoc); + // Enable vertex attributes: texcoords (shader-location = 1) + glGenBuffers(1, &vboId[1]); + glBindBuffer(GL_ARRAY_BUFFER, vboId[1]); + glBufferData(GL_ARRAY_BUFFER, sizeof(float)*2*mesh->vertexCount, mesh->texcoords, drawHint); + glVertexAttribPointer(1, 2, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(1); - // Enable vertex attributes: texcoords - glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer[1]); - glBufferData(GL_ARRAY_BUFFER, sizeof(float)*2*mesh.vertexCount, mesh.texcoords, GL_STATIC_DRAW); - glVertexAttribPointer(model.material.shader.texcoordLoc, 2, GL_FLOAT, 0, 0, 0); - glEnableVertexAttribArray(model.material.shader.texcoordLoc); - - // Enable vertex attributes: normals - glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer[2]); - glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*mesh.vertexCount, mesh.normals, GL_STATIC_DRAW); - glVertexAttribPointer(model.material.shader.normalLoc, 3, GL_FLOAT, 0, 0, 0); - glEnableVertexAttribArray(model.material.shader.normalLoc); - - glVertexAttrib4f(model.material.shader.colorLoc, 1.0f, 1.0f, 1.0f, 1.0f); // Color vertex attribute set to default: WHITE - glDisableVertexAttribArray(model.material.shader.colorLoc); - - model.mesh.vboId[0] = vertexBuffer[0]; // Vertex position VBO - model.mesh.vboId[1] = vertexBuffer[1]; // Texcoords VBO - model.mesh.vboId[2] = vertexBuffer[2]; // Normals VBO - - if (vaoSupported) + // Enable vertex attributes: normals (shader-location = 2) + if (mesh->normals != NULL) { - if (vaoModel > 0) - { - model.mesh.vaoId = vaoModel; - TraceLog(INFO, "[VAO ID %i] Model uploaded successfully to VRAM (GPU)", vaoModel); - } - else TraceLog(WARNING, "Model could not be uploaded to VRAM (GPU)"); + glGenBuffers(1, &vboId[2]); + glBindBuffer(GL_ARRAY_BUFFER, vboId[2]); + glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*mesh->vertexCount, mesh->normals, drawHint); + glVertexAttribPointer(2, 3, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(2); } else { - TraceLog(INFO, "[VBO ID %i][VBO ID %i][VBO ID %i] Model uploaded successfully to VRAM (GPU)", model.mesh.vboId[0], model.mesh.vboId[1], model.mesh.vboId[2]); + // Default color vertex attribute set to WHITE + glVertexAttrib3f(2, 1.0f, 1.0f, 1.0f); + glDisableVertexAttribArray(2); + } + + // Default color vertex attribute (shader-location = 3) + if (mesh->colors != NULL) + { + glGenBuffers(1, &vboId[3]); + glBindBuffer(GL_ARRAY_BUFFER, vboId[3]); + glBufferData(GL_ARRAY_BUFFER, sizeof(unsigned char)*4*mesh->vertexCount, mesh->colors, drawHint); + glVertexAttribPointer(3, 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); + glEnableVertexAttribArray(3); + } + else + { + // Default color vertex attribute set to WHITE + glVertexAttrib4f(3, 1.0f, 1.0f, 1.0f, 1.0f); + glDisableVertexAttribArray(3); + } + + // Default tangent vertex attribute (shader-location = 4) + if (mesh->tangents != NULL) + { + glGenBuffers(1, &vboId[4]); + glBindBuffer(GL_ARRAY_BUFFER, vboId[4]); + glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*mesh->vertexCount, mesh->tangents, drawHint); + glVertexAttribPointer(4, 3, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(4); + } + else + { + // Default tangents vertex attribute + glVertexAttrib3f(4, 0.0f, 0.0f, 0.0f); + glDisableVertexAttribArray(4); + } + + // Default texcoord2 vertex attribute (shader-location = 5) + if (mesh->texcoords2 != NULL) + { + glGenBuffers(1, &vboId[5]); + glBindBuffer(GL_ARRAY_BUFFER, vboId[5]); + glBufferData(GL_ARRAY_BUFFER, sizeof(float)*2*mesh->vertexCount, mesh->texcoords2, drawHint); + glVertexAttribPointer(5, 2, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(5); + } + else + { + // Default tangents vertex attribute + glVertexAttrib2f(5, 0.0f, 0.0f); + glDisableVertexAttribArray(5); + } + + if (mesh->indices != NULL) + { + glGenBuffers(1, &vboId[6]); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, vboId[6]); + glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(unsigned short)*mesh->triangleCount*3, mesh->indices, GL_STATIC_DRAW); + } + + + mesh->vboId[0] = vboId[0]; // Vertex position VBO + mesh->vboId[1] = vboId[1]; // Texcoords VBO + mesh->vboId[2] = vboId[2]; // Normals VBO + mesh->vboId[3] = vboId[3]; // Colors VBO + mesh->vboId[4] = vboId[4]; // Tangents VBO + mesh->vboId[5] = vboId[5]; // Texcoords2 VBO + mesh->vboId[6] = vboId[6]; // Indices VBO + + if (vaoSupported) + { + if (vaoId > 0) + { + mesh->vaoId = vaoId; + TraceLog(INFO, "[VAO ID %i] Mesh uploaded successfully to VRAM (GPU)", mesh->vaoId); + } + else TraceLog(WARNING, "Mesh could not be uploaded to VRAM (GPU)"); + } + else + { + TraceLog(INFO, "[VBOs] Mesh uploaded successfully to VRAM (GPU)"); } #endif +} - return model; +// Update vertex data on GPU (upload new data to one buffer) +void rlglUpdateMesh(Mesh mesh, int buffer, int numVertex) +{ + // Activate mesh VAO + if (vaoSupported) glBindVertexArray(mesh.vaoId); + + switch (buffer) + { + case 0: // Update vertices (vertex position) + { + glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[0]); + if (numVertex >= mesh.vertexCount) glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*numVertex, mesh.vertices, GL_DYNAMIC_DRAW); + else glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(float)*3*numVertex, mesh.vertices); + + } break; + case 1: // Update texcoords (vertex texture coordinates) + { + glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[1]); + if (numVertex >= mesh.vertexCount) glBufferData(GL_ARRAY_BUFFER, sizeof(float)*2*numVertex, mesh.texcoords, GL_DYNAMIC_DRAW); + else glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(float)*2*numVertex, mesh.texcoords); + + } break; + case 2: // Update normals (vertex normals) + { + glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[0]); + if (numVertex >= mesh.vertexCount) glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*numVertex, mesh.normals, GL_DYNAMIC_DRAW); + else glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(float)*3*numVertex, mesh.normals); + + } break; + case 3: // Update colors (vertex colors) + { + glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[2]); + if (numVertex >= mesh.vertexCount) glBufferData(GL_ARRAY_BUFFER, sizeof(float)*4*numVertex, mesh.colors, GL_DYNAMIC_DRAW); + else glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(unsigned char)*4*numVertex, mesh.colors); + + } break; + case 4: // Update tangents (vertex tangents) + { + glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[0]); + if (numVertex >= mesh.vertexCount) glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*numVertex, mesh.tangents, GL_DYNAMIC_DRAW); + else glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(float)*3*numVertex, mesh.tangents); + } break; + case 5: // Update texcoords2 (vertex second texture coordinates) + { + glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[1]); + if (numVertex >= mesh.vertexCount) glBufferData(GL_ARRAY_BUFFER, sizeof(float)*2*numVertex, mesh.texcoords2, GL_DYNAMIC_DRAW); + else glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(float)*2*numVertex, mesh.texcoords2); + } break; + default: break; + } + + // Unbind the current VAO + if (vaoSupported) glBindVertexArray(0); + + // Another option would be using buffer mapping... + //mesh.vertices = glMapBuffer(GL_ARRAY_BUFFER, GL_READ_WRITE); + // Now we can modify vertices + //glUnmapBuffer(GL_ARRAY_BUFFER); +} + +// Draw a 3d mesh with material and transform +void rlglDrawMesh(Mesh mesh, Material material, Matrix transform) +{ +#if defined(GRAPHICS_API_OPENGL_11) + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, material.texDiffuse.id); + + // NOTE: On OpenGL 1.1 we use Vertex Arrays to draw model + glEnableClientState(GL_VERTEX_ARRAY); // Enable vertex array + glEnableClientState(GL_TEXTURE_COORD_ARRAY); // Enable texture coords array + if (mesh.normals != NULL) glEnableClientState(GL_NORMAL_ARRAY); // Enable normals array + if (mesh.colors != NULL) glEnableClientState(GL_COLOR_ARRAY); // Enable colors array + + glVertexPointer(3, GL_FLOAT, 0, mesh.vertices); // Pointer to vertex coords array + glTexCoordPointer(2, GL_FLOAT, 0, mesh.texcoords); // Pointer to texture coords array + if (mesh.normals != NULL) glNormalPointer(GL_FLOAT, 0, mesh.normals); // Pointer to normals array + if (mesh.colors != NULL) glColorPointer(4, GL_UNSIGNED_BYTE, 0, mesh.colors); // Pointer to colors array + + rlPushMatrix(); + rlMultMatrixf(MatrixToFloat(transform)); + rlColor4ub(material.colDiffuse.r, material.colDiffuse.g, material.colDiffuse.b, material.colDiffuse.a); + + if (mesh.indices != NULL) glDrawElements(GL_TRIANGLES, mesh.triangleCount*3, GL_UNSIGNED_SHORT, mesh.indices); + else glDrawArrays(GL_TRIANGLES, 0, mesh.vertexCount); + rlPopMatrix(); + + glDisableClientState(GL_VERTEX_ARRAY); // Disable vertex array + glDisableClientState(GL_TEXTURE_COORD_ARRAY); // Disable texture coords array + if (mesh.normals != NULL) glDisableClientState(GL_NORMAL_ARRAY); // Disable normals array + if (mesh.colors != NULL) glDisableClientState(GL_NORMAL_ARRAY); // Disable colors array + + glDisable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, 0); +#endif + +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + glUseProgram(material.shader.id); + + // At this point the modelview matrix just contains the view matrix (camera) + // That's because Begin3dMode() sets it an no model-drawing function modifies it, all use rlPushMatrix() and rlPopMatrix() + Matrix matView = modelview; // View matrix (camera) + Matrix matProjection = projection; // Projection matrix (perspective) + + // Calculate model-view matrix combining matModel and matView + Matrix matModelView = MatrixMultiply(transform, matView); // Transform to camera-space coordinates + + // Calculate model-view-projection matrix (MVP) + Matrix matMVP = MatrixMultiply(matModelView, matProjection); // Transform to screen-space coordinates + + // Send combined model-view-projection matrix to shader + glUniformMatrix4fv(material.shader.mvpLoc, 1, false, MatrixToFloat(matMVP)); + + // Upload to shader material.colDiffuse + float vColorDiffuse[4] = { (float)material.colDiffuse.r/255, (float)material.colDiffuse.g/255, (float)material.colDiffuse.b/255, (float)material.colDiffuse.a/255 }; + glUniform4fv(material.shader.tintColorLoc, 1, vColorDiffuse); + + // Check if using standard shader to get location points + // NOTE: standard shader specific locations are got at render time to keep Shader struct as simple as possible (with just default shader locations) + if (material.shader.id == standardShader.id) + { + // Send model transformations matrix to shader + glUniformMatrix4fv(glGetUniformLocation(material.shader.id, "modelMatrix"), 1, false, MatrixToFloat(transform)); + + // Send view transformation matrix to shader. View matrix 8, 9 and 10 are view direction vector axis values (target - position) + glUniform3f(glGetUniformLocation(material.shader.id, "viewDir"), matView.m8, matView.m9, matView.m10); + + // Setup shader uniforms for lights + SetShaderLights(material.shader); + + // Upload to shader material.colAmbient + glUniform4f(glGetUniformLocation(material.shader.id, "colAmbient"), (float)material.colAmbient.r/255, (float)material.colAmbient.g/255, (float)material.colAmbient.b/255, (float)material.colAmbient.a/255); + + // Upload to shader material.colSpecular + glUniform4f(glGetUniformLocation(material.shader.id, "colSpecular"), (float)material.colSpecular.r/255, (float)material.colSpecular.g/255, (float)material.colSpecular.b/255, (float)material.colSpecular.a/255); + + // Upload to shader glossiness + glUniform1f(glGetUniformLocation(material.shader.id, "glossiness"), material.glossiness); + } + + // Set shader textures (diffuse, normal, specular) + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, material.texDiffuse.id); + glUniform1i(material.shader.mapTexture0Loc, 0); // Diffuse texture fits in active texture unit 0 + + if ((material.texNormal.id != 0) && (material.shader.mapTexture1Loc != -1)) + { + // Upload to shader specular map flag + glUniform1i(glGetUniformLocation(material.shader.id, "useNormal"), 1); + + glActiveTexture(GL_TEXTURE1); + glBindTexture(GL_TEXTURE_2D, material.texNormal.id); + glUniform1i(material.shader.mapTexture1Loc, 1); // Normal texture fits in active texture unit 1 + } + + if ((material.texSpecular.id != 0) && (material.shader.mapTexture2Loc != -1)) + { + // Upload to shader specular map flag + glUniform1i(glGetUniformLocation(material.shader.id, "useSpecular"), 1); + + glActiveTexture(GL_TEXTURE2); + glBindTexture(GL_TEXTURE_2D, material.texSpecular.id); + glUniform1i(material.shader.mapTexture2Loc, 2); // Specular texture fits in active texture unit 2 + } + + if (vaoSupported) + { + glBindVertexArray(mesh.vaoId); + } + else + { + // Bind mesh VBO data: vertex position (shader-location = 0) + glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[0]); + glVertexAttribPointer(material.shader.vertexLoc, 3, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(material.shader.vertexLoc); + + // Bind mesh VBO data: vertex texcoords (shader-location = 1) + glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[1]); + glVertexAttribPointer(material.shader.texcoordLoc, 2, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(material.shader.texcoordLoc); + + // Bind mesh VBO data: vertex normals (shader-location = 2, if available) + if (material.shader.normalLoc != -1) + { + glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[2]); + glVertexAttribPointer(material.shader.normalLoc, 3, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(material.shader.normalLoc); + } + + // Bind mesh VBO data: vertex colors (shader-location = 3, if available) , tangents, texcoords2 (if available) + if (material.shader.colorLoc != -1) + { + glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[3]); + glVertexAttribPointer(material.shader.colorLoc, 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); + glEnableVertexAttribArray(material.shader.colorLoc); + } + + // Bind mesh VBO data: vertex tangents (shader-location = 4, if available) + if (material.shader.tangentLoc != -1) + { + glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[4]); + glVertexAttribPointer(material.shader.tangentLoc, 3, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(material.shader.tangentLoc); + } + + // Bind mesh VBO data: vertex texcoords2 (shader-location = 5, if available) + if (material.shader.texcoord2Loc != -1) + { + glBindBuffer(GL_ARRAY_BUFFER, mesh.vboId[5]); + glVertexAttribPointer(material.shader.texcoord2Loc, 2, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(material.shader.texcoord2Loc); + } + + if (mesh.indices != NULL) glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, quads.vboId[3]); + } + + // Draw call! + if (mesh.indices != NULL) glDrawElements(GL_TRIANGLES, mesh.triangleCount*3, GL_UNSIGNED_SHORT, 0); // Indexed vertices draw + else glDrawArrays(GL_TRIANGLES, 0, mesh.vertexCount); + + if (material.texNormal.id != 0) + { + glActiveTexture(GL_TEXTURE1); + glBindTexture(GL_TEXTURE_2D, 0); + } + + if (material.texSpecular.id != 0) + { + glActiveTexture(GL_TEXTURE2); + glBindTexture(GL_TEXTURE_2D, 0); + } + + glActiveTexture(GL_TEXTURE0); // Set shader active texture to default 0 + glBindTexture(GL_TEXTURE_2D, 0); // Unbind textures + + if (vaoSupported) glBindVertexArray(0); // Unbind VAO + else + { + glBindBuffer(GL_ARRAY_BUFFER, 0); // Unbind VBOs + if (mesh.indices != NULL) glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + } + + glUseProgram(0); // Unbind shader program +#endif +} + +// Unload mesh data from CPU and GPU +void rlglUnloadMesh(Mesh *mesh) +{ + if (mesh->vertices != NULL) free(mesh->vertices); + if (mesh->texcoords != NULL) free(mesh->texcoords); + if (mesh->normals != NULL) free(mesh->normals); + if (mesh->colors != NULL) free(mesh->colors); + if (mesh->tangents != NULL) free(mesh->tangents); + if (mesh->texcoords2 != NULL) free(mesh->texcoords2); + if (mesh->indices != NULL) free(mesh->indices); + + rlDeleteBuffers(mesh->vboId[0]); // vertex + rlDeleteBuffers(mesh->vboId[1]); // texcoords + rlDeleteBuffers(mesh->vboId[2]); // normals + rlDeleteBuffers(mesh->vboId[3]); // colors + rlDeleteBuffers(mesh->vboId[4]); // tangents + rlDeleteBuffers(mesh->vboId[5]); // texcoords2 + rlDeleteBuffers(mesh->vboId[6]); // indices + + rlDeleteVertexArrays(mesh->vaoId); } // Read screen pixel data (color buffer) @@ -2058,6 +2100,20 @@ void *rlglReadTexturePixels(Texture2D texture) // NOTE: Those functions are exposed directly to the user in raylib.h //---------------------------------------------------------------------------------- +// Get default internal texture (white texture) +Texture2D GetDefaultTexture(void) +{ + Texture2D texture; + + texture.id = whiteTexture; + texture.width = 1; + texture.height = 1; + texture.mipmaps = 1; + texture.format = UNCOMPRESSED_R8G8B8A8; + + return texture; +} + // Load a custom shader and bind default locations Shader LoadShader(char *vsFileName, char *fsFileName) { @@ -2090,11 +2146,233 @@ Shader LoadShader(char *vsFileName, char *fsFileName) return shader; } +// Unload a custom shader from memory +void UnloadShader(Shader shader) +{ + if (shader.id != 0) + { + rlDeleteShader(shader.id); + TraceLog(INFO, "[SHDR ID %i] Unloaded shader program data", shader.id); + } +} + +// Set custom shader to be used on batch draw +void BeginShaderMode(Shader shader) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + if (currentShader.id != shader.id) + { + //rlglDraw(); + currentShader = shader; + } +#endif +} + +// Set default shader to be used in batch draw +void EndShaderMode(void) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + BeginShaderMode(defaultShader); +#endif +} + +// Get default shader +Shader GetDefaultShader(void) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + return defaultShader; +#else + Shader shader = { 0 }; + return shader; +#endif +} + +// Get default shader +Shader GetStandardShader(void) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + return standardShader; +#else + Shader shader = { 0 }; + return shader; +#endif +} + +// Get shader uniform location +int GetShaderLocation(Shader shader, const char *uniformName) +{ + int location = -1; +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + location = glGetUniformLocation(shader.id, uniformName); + + if (location == -1) TraceLog(WARNING, "[SHDR ID %i] Shader location for %s could not be found", shader.id, uniformName); +#endif + return location; +} + +// Set shader uniform value (float) +void SetShaderValue(Shader shader, int uniformLoc, float *value, int size) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + glUseProgram(shader.id); + + if (size == 1) glUniform1fv(uniformLoc, 1, value); // Shader uniform type: float + else if (size == 2) glUniform2fv(uniformLoc, 1, value); // Shader uniform type: vec2 + else if (size == 3) glUniform3fv(uniformLoc, 1, value); // Shader uniform type: vec3 + else if (size == 4) glUniform4fv(uniformLoc, 1, value); // Shader uniform type: vec4 + else TraceLog(WARNING, "Shader value float array size not supported"); + + glUseProgram(0); +#endif +} + +// Set shader uniform value (int) +void SetShaderValuei(Shader shader, int uniformLoc, int *value, int size) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + glUseProgram(shader.id); + + if (size == 1) glUniform1iv(uniformLoc, 1, value); // Shader uniform type: int + else if (size == 2) glUniform2iv(uniformLoc, 1, value); // Shader uniform type: ivec2 + else if (size == 3) glUniform3iv(uniformLoc, 1, value); // Shader uniform type: ivec3 + else if (size == 4) glUniform4iv(uniformLoc, 1, value); // Shader uniform type: ivec4 + else TraceLog(WARNING, "Shader value int array size not supported"); + + glUseProgram(0); +#endif +} + +// Set shader uniform value (matrix 4x4) +void SetShaderValueMatrix(Shader shader, int uniformLoc, Matrix mat) +{ +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) + glUseProgram(shader.id); + + glUniformMatrix4fv(uniformLoc, 1, false, MatrixToFloat(mat)); + + glUseProgram(0); +#endif +} + +// Begin blending mode (alpha, additive, multiplied) +// NOTE: Only 3 blending modes supported, default blend mode is alpha +void BeginBlendMode(int mode) +{ + if ((blendMode != mode) && (mode < 3)) + { + //rlglDraw(); + + switch (mode) + { + case BLEND_ALPHA: glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); break; + case BLEND_ADDITIVE: glBlendFunc(GL_SRC_ALPHA, GL_ONE); break; // Alternative: glBlendFunc(GL_ONE, GL_ONE); + case BLEND_MULTIPLIED: glBlendFunc(GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA); break; + default: break; + } + + blendMode = mode; + } +} + +// End blending mode (reset to default: alpha blending) +void EndBlendMode(void) +{ + BeginBlendMode(BLEND_ALPHA); +} + +// Create a new light, initialize it and add to pool +Light CreateLight(int type, Vector3 position, Color diffuse) +{ + // Allocate dynamic memory + Light light = (Light)malloc(sizeof(LightData)); + + // Initialize light values with generic values + light->id = lightsCount; + light->type = type; + light->enabled = true; + + light->position = position; + light->target = (Vector3){ 0.0f, 0.0f, 0.0f }; + light->intensity = 1.0f; + light->diffuse = diffuse; + + // Add new light to the array + lights[lightsCount] = light; + + // Increase enabled lights count + lightsCount++; + + return light; +} + +// Destroy a light and take it out of the list +void DestroyLight(Light light) +{ + // Free dynamic memory allocation + free(lights[light->id]); + + // Remove *obj from the pointers array + for (int i = light->id; i < lightsCount; i++) + { + // Resort all the following pointers of the array + if ((i + 1) < lightsCount) + { + lights[i] = lights[i + 1]; + lights[i]->id = lights[i + 1]->id; + } + else free(lights[i]); + } + + // Decrease enabled physic objects count + lightsCount--; +} + +//---------------------------------------------------------------------------------- +// Module specific Functions Definition +//---------------------------------------------------------------------------------- + +#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) +// Convert image data to OpenGL texture (returns OpenGL valid Id) +// NOTE: Expected compressed image data and POT image +static void LoadCompressedTexture(unsigned char *data, int width, int height, int mipmapCount, int compressedFormat) +{ + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + + int blockSize = 0; // Bytes every block + int offset = 0; + + if ((compressedFormat == GL_COMPRESSED_RGB_S3TC_DXT1_EXT) || + (compressedFormat == GL_COMPRESSED_RGBA_S3TC_DXT1_EXT) || +#if defined(GRAPHICS_API_OPENGL_ES2) + (compressedFormat == GL_ETC1_RGB8_OES) || +#endif + (compressedFormat == GL_COMPRESSED_RGB8_ETC2)) blockSize = 8; + else blockSize = 16; + + // Load the mipmap levels + for (int level = 0; level < mipmapCount && (width || height); level++) + { + unsigned int size = 0; + + size = ((width + 3)/4)*((height + 3)/4)*blockSize; + + glCompressedTexImage2D(GL_TEXTURE_2D, level, compressedFormat, width, height, 0, size, data + offset); + + offset += size; + width /= 2; + height /= 2; + + // Security check for NPOT textures + if (width < 1) width = 1; + if (height < 1) height = 1; + } +} + // Load custom shader strings and return program id -unsigned int LoadShaderProgram(char *vShaderStr, char *fShaderStr) +static unsigned int LoadShaderProgram(char *vShaderStr, char *fShaderStr) { unsigned int program = 0; - + #if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) GLuint vertexShader; GLuint fragmentShader; @@ -2156,7 +2434,17 @@ unsigned int LoadShaderProgram(char *vShaderStr, char *fShaderStr) glAttachShader(program, vertexShader); glAttachShader(program, fragmentShader); - + + // NOTE: Default attribute shader locations must be binded before linking + glBindAttribLocation(program, 0, DEFAULT_ATTRIB_POSITION_NAME); + glBindAttribLocation(program, 1, DEFAULT_ATTRIB_TEXCOORD_NAME); + glBindAttribLocation(program, 2, DEFAULT_ATTRIB_NORMAL_NAME); + glBindAttribLocation(program, 3, DEFAULT_ATTRIB_COLOR_NAME); + glBindAttribLocation(program, 4, DEFAULT_ATTRIB_TANGENT_NAME); + glBindAttribLocation(program, 5, DEFAULT_ATTRIB_TEXCOORD2_NAME); + + // NOTE: If some attrib name is no found on the shader, it locations becomes -1 + glLinkProgram(program); // NOTE: All uniform variables are intitialised to 0 when a program links @@ -2190,184 +2478,8 @@ unsigned int LoadShaderProgram(char *vShaderStr, char *fShaderStr) return program; } -// Unload a custom shader from memory -void UnloadShader(Shader shader) -{ - if (shader.id != 0) - { - rlDeleteShader(shader.id); - TraceLog(INFO, "[SHDR ID %i] Unloaded shader program data", shader.id); - } -} -// Set custom shader to be used on batch draw -void SetCustomShader(Shader shader) -{ -#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - if (currentShader.id != shader.id) - { - //rlglDraw(); - currentShader = shader; - } -#endif -} - -// Set default shader to be used in batch draw -void SetDefaultShader(void) -{ -#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - SetCustomShader(defaultShader); -#endif -} - -// Link shader to model -void SetModelShader(Model *model, Shader shader) -{ -#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - model->material.shader = shader; - - if (vaoSupported) glBindVertexArray(model->mesh.vaoId); - - // Enable vertex attributes: position - glBindBuffer(GL_ARRAY_BUFFER, model->mesh.vboId[0]); - glEnableVertexAttribArray(shader.vertexLoc); - glVertexAttribPointer(shader.vertexLoc, 3, GL_FLOAT, 0, 0, 0); - - // Enable vertex attributes: texcoords - glBindBuffer(GL_ARRAY_BUFFER, model->mesh.vboId[1]); - glEnableVertexAttribArray(shader.texcoordLoc); - glVertexAttribPointer(shader.texcoordLoc, 2, GL_FLOAT, 0, 0, 0); - - // Enable vertex attributes: normals - glBindBuffer(GL_ARRAY_BUFFER, model->mesh.vboId[2]); - glEnableVertexAttribArray(shader.normalLoc); - glVertexAttribPointer(shader.normalLoc, 3, GL_FLOAT, 0, 0, 0); - - if (vaoSupported) glBindVertexArray(0); // Unbind VAO - -#elif (GRAPHICS_API_OPENGL_11) - TraceLog(WARNING, "Shaders not supported on OpenGL 1.1"); -#endif -} - -// Get shader uniform location -int GetShaderLocation(Shader shader, const char *uniformName) -{ - int location = -1; -#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - location = glGetUniformLocation(shader.id, uniformName); - - if (location == -1) TraceLog(WARNING, "[SHDR ID %i] Shader location for %s could not be found", shader.id, uniformName); -#endif - return location; -} - -// Set shader uniform value (float) -void SetShaderValue(Shader shader, int uniformLoc, float *value, int size) -{ -#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - glUseProgram(shader.id); - - if (size == 1) glUniform1fv(uniformLoc, 1, value); // Shader uniform type: float - else if (size == 2) glUniform2fv(uniformLoc, 1, value); // Shader uniform type: vec2 - else if (size == 3) glUniform3fv(uniformLoc, 1, value); // Shader uniform type: vec3 - else if (size == 4) glUniform4fv(uniformLoc, 1, value); // Shader uniform type: vec4 - else TraceLog(WARNING, "Shader value float array size not supported"); - - glUseProgram(0); -#endif -} - -// Set shader uniform value (int) -void SetShaderValuei(Shader shader, int uniformLoc, int *value, int size) -{ -#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - glUseProgram(shader.id); - - if (size == 1) glUniform1iv(uniformLoc, 1, value); // Shader uniform type: int - else if (size == 2) glUniform2iv(uniformLoc, 1, value); // Shader uniform type: ivec2 - else if (size == 3) glUniform3iv(uniformLoc, 1, value); // Shader uniform type: ivec3 - else if (size == 4) glUniform4iv(uniformLoc, 1, value); // Shader uniform type: ivec4 - else TraceLog(WARNING, "Shader value int array size not supported"); - - glUseProgram(0); -#endif -} - -// Set shader uniform value (matrix 4x4) -void SetShaderValueMatrix(Shader shader, int uniformLoc, Matrix mat) -{ -#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) - glUseProgram(shader.id); - - glUniformMatrix4fv(uniformLoc, 1, false, MatrixToFloat(mat)); - - glUseProgram(0); -#endif -} - -// Set blending mode (alpha, additive, multiplied) -// NOTE: Only 3 blending modes predefined -void SetBlendMode(int mode) -{ - if ((blendMode != mode) && (mode < 3)) - { - //rlglDraw(); - - switch (mode) - { - case BLEND_ALPHA: glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); break; - case BLEND_ADDITIVE: glBlendFunc(GL_SRC_ALPHA, GL_ONE); break; // Alternative: glBlendFunc(GL_ONE, GL_ONE); - case BLEND_MULTIPLIED: glBlendFunc(GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA); break; - default: break; - } - - blendMode = mode; - } -} - -//---------------------------------------------------------------------------------- -// Module specific Functions Definition -//---------------------------------------------------------------------------------- - -#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2) -// Convert image data to OpenGL texture (returns OpenGL valid Id) -// NOTE: Expected compressed image data and POT image -static void LoadCompressedTexture(unsigned char *data, int width, int height, int mipmapCount, int compressedFormat) -{ - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - int blockSize = 0; // Bytes every block - int offset = 0; - - if ((compressedFormat == GL_COMPRESSED_RGB_S3TC_DXT1_EXT) || - (compressedFormat == GL_COMPRESSED_RGBA_S3TC_DXT1_EXT) || -#if defined(GRAPHICS_API_OPENGL_ES2) - (compressedFormat == GL_ETC1_RGB8_OES) || -#endif - (compressedFormat == GL_COMPRESSED_RGB8_ETC2)) blockSize = 8; - else blockSize = 16; - - // Load the mipmap levels - for (int level = 0; level < mipmapCount && (width || height); level++) - { - unsigned int size = 0; - - size = ((width + 3)/4)*((height + 3)/4)*blockSize; - - glCompressedTexImage2D(GL_TEXTURE_2D, level, compressedFormat, width, height, 0, size, data + offset); - - offset += size; - width /= 2; - height /= 2; - - // Security check for NPOT textures - if (width < 1) width = 1; - if (height < 1) height = 1; - } -} - -// Load default shader (Vertex and Fragment) +// Load default shader (just vertex positioning and texture coloring) // NOTE: This shader program is used for batch buffers (lines, triangles, quads) static Shader LoadDefaultShader(void) { @@ -2410,15 +2522,15 @@ static Shader LoadDefaultShader(void) "varying vec4 fragColor; \n" #endif "uniform sampler2D texture0; \n" - "uniform vec4 fragTintColor; \n" + "uniform vec4 colDiffuse; \n" "void main() \n" "{ \n" #if defined(GRAPHICS_API_OPENGL_33) " vec4 texelColor = texture(texture0, fragTexCoord); \n" - " finalColor = texelColor*fragTintColor*fragColor; \n" + " finalColor = texelColor*colDiffuse*fragColor; \n" #elif defined(GRAPHICS_API_OPENGL_ES2) " vec4 texelColor = texture2D(texture0, fragTexCoord); \n" // NOTE: texture2D() is deprecated on OpenGL 3.3 and ES 3.0 - " gl_FragColor = texelColor*fragTintColor*fragColor; \n" + " gl_FragColor = texelColor*colDiffuse*fragColor; \n" #endif "} \n"; @@ -2432,24 +2544,52 @@ static Shader LoadDefaultShader(void) return shader; } +// Load standard shader +// NOTE: This shader supports: +// - Up to 3 different maps: diffuse, normal, specular +// - Material properties: colAmbient, colDiffuse, colSpecular, glossiness +// - Up to 8 lights: Point, Directional or Spot +static Shader LoadStandardShader(void) +{ + // Load standard shader (TODO: rewrite as char pointers) + Shader shader = { 0 }; //LoadShader("resources/shaders/standard.vs", "resources/shaders/standard.fs"); + + if (shader.id != 0) TraceLog(INFO, "[SHDR ID %i] Standard shader loaded successfully", shader.id); + else TraceLog(WARNING, "[SHDR ID %i] Standard shader could not be loaded", shader.id); + + if (shader.id != 0) LoadDefaultShaderLocations(&shader); + + return shader; +} + // Get location handlers to for shader attributes and uniforms // NOTE: If any location is not found, loc point becomes -1 static void LoadDefaultShaderLocations(Shader *shader) { + // NOTE: Default shader attrib locations have been fixed before linking: + // vertex position location = 0 + // vertex texcoord location = 1 + // vertex normal location = 2 + // vertex color location = 3 + // vertex tangent location = 4 + // vertex texcoord2 location = 5 + // Get handles to GLSL input attibute locations - shader->vertexLoc = glGetAttribLocation(shader->id, "vertexPosition"); - shader->texcoordLoc = glGetAttribLocation(shader->id, "vertexTexCoord"); - shader->normalLoc = glGetAttribLocation(shader->id, "vertexNormal"); - shader->colorLoc = glGetAttribLocation(shader->id, "vertexColor"); + shader->vertexLoc = glGetAttribLocation(shader->id, DEFAULT_ATTRIB_POSITION_NAME); + shader->texcoordLoc = glGetAttribLocation(shader->id, DEFAULT_ATTRIB_TEXCOORD_NAME); + shader->texcoord2Loc = glGetAttribLocation(shader->id, DEFAULT_ATTRIB_TEXCOORD2_NAME); + shader->normalLoc = glGetAttribLocation(shader->id, DEFAULT_ATTRIB_NORMAL_NAME); + shader->tangentLoc = glGetAttribLocation(shader->id, DEFAULT_ATTRIB_TANGENT_NAME); + shader->colorLoc = glGetAttribLocation(shader->id, DEFAULT_ATTRIB_COLOR_NAME); // Get handles to GLSL uniform locations (vertex shader) shader->mvpLoc = glGetUniformLocation(shader->id, "mvpMatrix"); // Get handles to GLSL uniform locations (fragment shader) - shader->tintColorLoc = glGetUniformLocation(shader->id, "fragTintColor"); - shader->mapDiffuseLoc = glGetUniformLocation(shader->id, "texture0"); - shader->mapNormalLoc = glGetUniformLocation(shader->id, "texture1"); - shader->mapSpecularLoc = glGetUniformLocation(shader->id, "texture2"); + shader->tintColorLoc = glGetUniformLocation(shader->id, "colDiffuse"); + shader->mapTexture0Loc = glGetUniformLocation(shader->id, "texture0"); + shader->mapTexture1Loc = glGetUniformLocation(shader->id, "texture1"); + shader->mapTexture2Loc = glGetUniformLocation(shader->id, "texture2"); } // Unload default shader @@ -2457,40 +2597,59 @@ static void UnloadDefaultShader(void) { glUseProgram(0); - //glDetachShader(defaultShaderProgram, vertexShader); - //glDetachShader(defaultShaderProgram, fragmentShader); + //glDetachShader(defaultShader, vertexShader); + //glDetachShader(defaultShader, fragmentShader); //glDeleteShader(vertexShader); // Already deleted on shader compilation - //glDeleteShader(fragmentShader); // Already deleted on sahder compilation + //glDeleteShader(fragmentShader); // Already deleted on shader compilation glDeleteProgram(defaultShader.id); } +// Unload standard shader +static void UnloadStandardShader(void) +{ + glUseProgram(0); + + //glDetachShader(defaultShader, vertexShader); + //glDetachShader(defaultShader, fragmentShader); + //glDeleteShader(vertexShader); // Already deleted on shader compilation + //glDeleteShader(fragmentShader); // Already deleted on shader compilation + glDeleteProgram(standardShader.id); +} + + // Load default internal buffers (lines, triangles, quads) static void LoadDefaultBuffers(void) { // [CPU] Allocate and initialize float array buffers to store vertex data (lines, triangles, quads) //-------------------------------------------------------------------------------------------- - // Initialize lines arrays (vertex position and color data) + // Lines - Initialize arrays (vertex position and color data) lines.vertices = (float *)malloc(sizeof(float)*3*2*MAX_LINES_BATCH); // 3 float by vertex, 2 vertex by line lines.colors = (unsigned char *)malloc(sizeof(unsigned char)*4*2*MAX_LINES_BATCH); // 4 float by color, 2 colors by line + lines.texcoords = NULL; + lines.indices = NULL; for (int i = 0; i < (3*2*MAX_LINES_BATCH); i++) lines.vertices[i] = 0.0f; for (int i = 0; i < (4*2*MAX_LINES_BATCH); i++) lines.colors[i] = 0; lines.vCounter = 0; lines.cCounter = 0; + lines.tcCounter = 0; - // Initialize triangles arrays (vertex position and color data) + // Triangles - Initialize arrays (vertex position and color data) triangles.vertices = (float *)malloc(sizeof(float)*3*3*MAX_TRIANGLES_BATCH); // 3 float by vertex, 3 vertex by triangle triangles.colors = (unsigned char *)malloc(sizeof(unsigned char)*4*3*MAX_TRIANGLES_BATCH); // 4 float by color, 3 colors by triangle + triangles.texcoords = NULL; + triangles.indices = NULL; for (int i = 0; i < (3*3*MAX_TRIANGLES_BATCH); i++) triangles.vertices[i] = 0.0f; for (int i = 0; i < (4*3*MAX_TRIANGLES_BATCH); i++) triangles.colors[i] = 0; triangles.vCounter = 0; triangles.cCounter = 0; + triangles.tcCounter = 0; - // Initialize quads arrays (vertex position, texcoord and color data... and indexes) + // Quads - Initialize arrays (vertex position, texcoord, color data and indexes) quads.vertices = (float *)malloc(sizeof(float)*3*4*MAX_QUADS_BATCH); // 3 float by vertex, 4 vertex by quad quads.texcoords = (float *)malloc(sizeof(float)*2*4*MAX_QUADS_BATCH); // 2 float by texcoord, 4 texcoord by quad quads.colors = (unsigned char *)malloc(sizeof(unsigned char)*4*4*MAX_QUADS_BATCH); // 4 float by color, 4 colors by quad @@ -2523,7 +2682,7 @@ static void LoadDefaultBuffers(void) quads.tcCounter = 0; quads.cCounter = 0; - TraceLog(INFO, "Default buffers initialized successfully in CPU (lines, triangles, quads)"); + TraceLog(INFO, "[CPU] Default buffers initialized successfully (lines, triangles, quads)"); //-------------------------------------------------------------------------------------------- // [GPU] Upload vertex data and initialize VAOs/VBOs (lines, triangles, quads) @@ -2534,97 +2693,102 @@ static void LoadDefaultBuffers(void) if (vaoSupported) { // Initialize Lines VAO - glGenVertexArrays(1, &vaoLines); - glBindVertexArray(vaoLines); + glGenVertexArrays(1, &lines.vaoId); + glBindVertexArray(lines.vaoId); } - // Create buffers for our vertex data - glGenBuffers(2, linesBuffer); - - // Lines - Vertex positions buffer binding and attributes enable - glBindBuffer(GL_ARRAY_BUFFER, linesBuffer[0]); + // Lines - Vertex buffers binding and attributes enable + // Vertex position buffer (shader-location = 0) + glGenBuffers(2, &lines.vboId[0]); + glBindBuffer(GL_ARRAY_BUFFER, lines.vboId[0]); glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*2*MAX_LINES_BATCH, lines.vertices, GL_DYNAMIC_DRAW); glEnableVertexAttribArray(currentShader.vertexLoc); glVertexAttribPointer(currentShader.vertexLoc, 3, GL_FLOAT, 0, 0, 0); - // Lines - colors buffer - glBindBuffer(GL_ARRAY_BUFFER, linesBuffer[1]); + // Vertex color buffer (shader-location = 3) + glGenBuffers(2, &lines.vboId[1]); + glBindBuffer(GL_ARRAY_BUFFER, lines.vboId[1]); glBufferData(GL_ARRAY_BUFFER, sizeof(unsigned char)*4*2*MAX_LINES_BATCH, lines.colors, GL_DYNAMIC_DRAW); glEnableVertexAttribArray(currentShader.colorLoc); glVertexAttribPointer(currentShader.colorLoc, 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); - if (vaoSupported) TraceLog(INFO, "[VAO ID %i] Default buffers (lines) VAO initialized successfully", vaoLines); - else TraceLog(INFO, "[VBO ID %i][VBO ID %i] Default buffers (lines) VBOs initialized successfully", linesBuffer[0], linesBuffer[1]); + if (vaoSupported) TraceLog(INFO, "[VAO ID %i] Default buffers VAO initialized successfully (lines)", lines.vaoId); + else TraceLog(INFO, "[VBO ID %i][VBO ID %i] Default buffers VBOs initialized successfully (lines)", lines.vboId[0], lines.vboId[1]); // Upload and link triangles vertex buffers if (vaoSupported) { // Initialize Triangles VAO - glGenVertexArrays(1, &vaoTriangles); - glBindVertexArray(vaoTriangles); + glGenVertexArrays(1, &triangles.vaoId); + glBindVertexArray(triangles.vaoId); } - // Create buffers for our vertex data - glGenBuffers(2, trianglesBuffer); - - // Enable vertex attributes - glBindBuffer(GL_ARRAY_BUFFER, trianglesBuffer[0]); + // Triangles - Vertex buffers binding and attributes enable + // Vertex position buffer (shader-location = 0) + glGenBuffers(1, &triangles.vboId[0]); + glBindBuffer(GL_ARRAY_BUFFER, triangles.vboId[0]); glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*3*MAX_TRIANGLES_BATCH, triangles.vertices, GL_DYNAMIC_DRAW); glEnableVertexAttribArray(currentShader.vertexLoc); glVertexAttribPointer(currentShader.vertexLoc, 3, GL_FLOAT, 0, 0, 0); - glBindBuffer(GL_ARRAY_BUFFER, trianglesBuffer[1]); + // Vertex color buffer (shader-location = 3) + glGenBuffers(1, &triangles.vboId[1]); + glBindBuffer(GL_ARRAY_BUFFER, triangles.vboId[1]); glBufferData(GL_ARRAY_BUFFER, sizeof(unsigned char)*4*3*MAX_TRIANGLES_BATCH, triangles.colors, GL_DYNAMIC_DRAW); glEnableVertexAttribArray(currentShader.colorLoc); glVertexAttribPointer(currentShader.colorLoc, 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); - if (vaoSupported) TraceLog(INFO, "[VAO ID %i] Default buffers (triangles) VAO initialized successfully", vaoTriangles); - else TraceLog(INFO, "[VBO ID %i][VBO ID %i] Default buffers (triangles) VBOs initialized successfully", trianglesBuffer[0], trianglesBuffer[1]); + if (vaoSupported) TraceLog(INFO, "[VAO ID %i] Default buffers VAO initialized successfully (triangles)", triangles.vaoId); + else TraceLog(INFO, "[VBO ID %i][VBO ID %i] Default buffers VBOs initialized successfully(triangles)", triangles.vboId[0], triangles.vboId[1]); // Upload and link quads vertex buffers if (vaoSupported) { // Initialize Quads VAO - glGenVertexArrays(1, &vaoQuads); - glBindVertexArray(vaoQuads); + glGenVertexArrays(1, &quads.vaoId); + glBindVertexArray(quads.vaoId); } - // Create buffers for our vertex data - glGenBuffers(4, quadsBuffer); - - // Enable vertex attributes - glBindBuffer(GL_ARRAY_BUFFER, quadsBuffer[0]); + // Quads - Vertex buffers binding and attributes enable + // Vertex position buffer (shader-location = 0) + glGenBuffers(1, &quads.vboId[0]); + glBindBuffer(GL_ARRAY_BUFFER, quads.vboId[0]); glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*4*MAX_QUADS_BATCH, quads.vertices, GL_DYNAMIC_DRAW); glEnableVertexAttribArray(currentShader.vertexLoc); glVertexAttribPointer(currentShader.vertexLoc, 3, GL_FLOAT, 0, 0, 0); - glBindBuffer(GL_ARRAY_BUFFER, quadsBuffer[1]); + // Vertex texcoord buffer (shader-location = 1) + glGenBuffers(1, &quads.vboId[1]); + glBindBuffer(GL_ARRAY_BUFFER, quads.vboId[1]); glBufferData(GL_ARRAY_BUFFER, sizeof(float)*2*4*MAX_QUADS_BATCH, quads.texcoords, GL_DYNAMIC_DRAW); glEnableVertexAttribArray(currentShader.texcoordLoc); glVertexAttribPointer(currentShader.texcoordLoc, 2, GL_FLOAT, 0, 0, 0); - glBindBuffer(GL_ARRAY_BUFFER, quadsBuffer[2]); + // Vertex color buffer (shader-location = 3) + glGenBuffers(1, &quads.vboId[2]); + glBindBuffer(GL_ARRAY_BUFFER, quads.vboId[2]); glBufferData(GL_ARRAY_BUFFER, sizeof(unsigned char)*4*4*MAX_QUADS_BATCH, quads.colors, GL_DYNAMIC_DRAW); glEnableVertexAttribArray(currentShader.colorLoc); glVertexAttribPointer(currentShader.colorLoc, 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); // Fill index buffer - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, quadsBuffer[3]); + glGenBuffers(1, &quads.vboId[3]); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, quads.vboId[3]); #if defined(GRAPHICS_API_OPENGL_33) glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(int)*6*MAX_QUADS_BATCH, quads.indices, GL_STATIC_DRAW); #elif defined(GRAPHICS_API_OPENGL_ES2) glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(short)*6*MAX_QUADS_BATCH, quads.indices, GL_STATIC_DRAW); #endif - if (vaoSupported) TraceLog(INFO, "[VAO ID %i] Default buffers (quads) VAO initialized successfully", vaoQuads); - else TraceLog(INFO, "[VBO ID %i][VBO ID %i][VBO ID %i][VBO ID %i] Default buffers (quads) VBOs initialized successfully", quadsBuffer[0], quadsBuffer[1], quadsBuffer[2], quadsBuffer[3]); + if (vaoSupported) TraceLog(INFO, "[VAO ID %i] Default buffers VAO initialized successfully (quads)", quads.vaoId); + else TraceLog(INFO, "[VBO ID %i][VBO ID %i][VBO ID %i][VBO ID %i] Default buffers VBOs initialized successfully (quads)", quads.vboId[0], quads.vboId[1], quads.vboId[2], quads.vboId[3]); // Unbind the current VAO if (vaoSupported) glBindVertexArray(0); //-------------------------------------------------------------------------------------------- } -// Update default buffers (VAOs/VBOs) with vertex array data +// Update default internal buffers (VAOs/VBOs) with vertex array data // NOTE: If there is not vertex data, buffers doesn't need to be updated (vertexCount > 0) // TODO: If no data changed on the CPU arrays --> No need to re-update GPU arrays (change flag required) static void UpdateDefaultBuffers(void) @@ -2633,15 +2797,15 @@ static void UpdateDefaultBuffers(void) if (lines.vCounter > 0) { // Activate Lines VAO - if (vaoSupported) glBindVertexArray(vaoLines); + if (vaoSupported) glBindVertexArray(lines.vaoId); // Lines - vertex positions buffer - glBindBuffer(GL_ARRAY_BUFFER, linesBuffer[0]); + glBindBuffer(GL_ARRAY_BUFFER, lines.vboId[0]); //glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*2*MAX_LINES_BATCH, lines.vertices, GL_DYNAMIC_DRAW); glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(float)*3*lines.vCounter, lines.vertices); // target - offset (in bytes) - size (in bytes) - data pointer // Lines - colors buffer - glBindBuffer(GL_ARRAY_BUFFER, linesBuffer[1]); + glBindBuffer(GL_ARRAY_BUFFER, lines.vboId[1]); //glBufferData(GL_ARRAY_BUFFER, sizeof(float)*4*2*MAX_LINES_BATCH, lines.colors, GL_DYNAMIC_DRAW); glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(unsigned char)*4*lines.cCounter, lines.colors); } @@ -2650,15 +2814,15 @@ static void UpdateDefaultBuffers(void) if (triangles.vCounter > 0) { // Activate Triangles VAO - if (vaoSupported) glBindVertexArray(vaoTriangles); + if (vaoSupported) glBindVertexArray(triangles.vaoId); // Triangles - vertex positions buffer - glBindBuffer(GL_ARRAY_BUFFER, trianglesBuffer[0]); + glBindBuffer(GL_ARRAY_BUFFER, triangles.vboId[0]); //glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*3*MAX_TRIANGLES_BATCH, triangles.vertices, GL_DYNAMIC_DRAW); glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(float)*3*triangles.vCounter, triangles.vertices); // Triangles - colors buffer - glBindBuffer(GL_ARRAY_BUFFER, trianglesBuffer[1]); + glBindBuffer(GL_ARRAY_BUFFER, triangles.vboId[1]); //glBufferData(GL_ARRAY_BUFFER, sizeof(float)*4*3*MAX_TRIANGLES_BATCH, triangles.colors, GL_DYNAMIC_DRAW); glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(unsigned char)*4*triangles.cCounter, triangles.colors); } @@ -2667,20 +2831,20 @@ static void UpdateDefaultBuffers(void) if (quads.vCounter > 0) { // Activate Quads VAO - if (vaoSupported) glBindVertexArray(vaoQuads); + if (vaoSupported) glBindVertexArray(quads.vaoId); // Quads - vertex positions buffer - glBindBuffer(GL_ARRAY_BUFFER, quadsBuffer[0]); + glBindBuffer(GL_ARRAY_BUFFER, quads.vboId[0]); //glBufferData(GL_ARRAY_BUFFER, sizeof(float)*3*4*MAX_QUADS_BATCH, quads.vertices, GL_DYNAMIC_DRAW); glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(float)*3*quads.vCounter, quads.vertices); // Quads - texture coordinates buffer - glBindBuffer(GL_ARRAY_BUFFER, quadsBuffer[1]); + glBindBuffer(GL_ARRAY_BUFFER, quads.vboId[1]); //glBufferData(GL_ARRAY_BUFFER, sizeof(float)*2*4*MAX_QUADS_BATCH, quads.texcoords, GL_DYNAMIC_DRAW); glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(float)*2*quads.vCounter, quads.texcoords); // Quads - colors buffer - glBindBuffer(GL_ARRAY_BUFFER, quadsBuffer[2]); + glBindBuffer(GL_ARRAY_BUFFER, quads.vboId[2]); //glBufferData(GL_ARRAY_BUFFER, sizeof(float)*4*4*MAX_QUADS_BATCH, quads.colors, GL_DYNAMIC_DRAW); glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(unsigned char)*4*quads.vCounter, quads.colors); @@ -2695,7 +2859,167 @@ static void UpdateDefaultBuffers(void) if (vaoSupported) glBindVertexArray(0); } -// Unload default buffers vertex data from CPU and GPU +// Draw default internal buffers vertex data +// NOTE: We draw in this order: lines, triangles, quads +static void DrawDefaultBuffers(void) +{ + // Set current shader and upload current MVP matrix + if ((lines.vCounter > 0) || (triangles.vCounter > 0) || (quads.vCounter > 0)) + { + glUseProgram(currentShader.id); + + // Create modelview-projection matrix + //Matrix matMVP = MatrixMultiply(modelview, projection); + + glUniformMatrix4fv(currentShader.mvpLoc, 1, false, MatrixToFloat(customMVP)); //customMVP + glUniform4f(currentShader.tintColorLoc, 1.0f, 1.0f, 1.0f, 1.0f); + glUniform1i(currentShader.mapTexture0Loc, 0); + + // NOTE: Additional map textures not considered for default buffers drawing + } + + // Draw lines buffers + if (lines.vCounter > 0) + { + glBindTexture(GL_TEXTURE_2D, whiteTexture); + + if (vaoSupported) + { + glBindVertexArray(lines.vaoId); + } + else + { + // Bind vertex attrib: position (shader-location = 0) + glBindBuffer(GL_ARRAY_BUFFER, lines.vboId[0]); + glVertexAttribPointer(currentShader.vertexLoc, 3, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(currentShader.vertexLoc); + + // Bind vertex attrib: color (shader-location = 3) + glBindBuffer(GL_ARRAY_BUFFER, lines.vboId[1]); + glVertexAttribPointer(currentShader.colorLoc, 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); + glEnableVertexAttribArray(currentShader.colorLoc); + } + + glDrawArrays(GL_LINES, 0, lines.vCounter); + + if (!vaoSupported) glBindBuffer(GL_ARRAY_BUFFER, 0); + glBindTexture(GL_TEXTURE_2D, 0); + } + + // Draw triangles buffers + if (triangles.vCounter > 0) + { + glBindTexture(GL_TEXTURE_2D, whiteTexture); + + if (vaoSupported) + { + glBindVertexArray(triangles.vaoId); + } + else + { + // Bind vertex attrib: position (shader-location = 0) + glBindBuffer(GL_ARRAY_BUFFER, triangles.vboId[0]); + glVertexAttribPointer(currentShader.vertexLoc, 3, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(currentShader.vertexLoc); + + // Bind vertex attrib: color (shader-location = 3) + glBindBuffer(GL_ARRAY_BUFFER, triangles.vboId[1]); + glVertexAttribPointer(currentShader.colorLoc, 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); + glEnableVertexAttribArray(currentShader.colorLoc); + } + + glDrawArrays(GL_TRIANGLES, 0, triangles.vCounter); + + if (!vaoSupported) glBindBuffer(GL_ARRAY_BUFFER, 0); + glBindTexture(GL_TEXTURE_2D, 0); + } + + // Draw quads buffers + if (quads.vCounter > 0) + { + int quadsCount = 0; + int numIndicesToProcess = 0; + int indicesOffset = 0; + + if (vaoSupported) + { + glBindVertexArray(quads.vaoId); + } + else + { + // Bind vertex attrib: position (shader-location = 0) + glBindBuffer(GL_ARRAY_BUFFER, quads.vboId[0]); + glVertexAttribPointer(currentShader.vertexLoc, 3, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(currentShader.vertexLoc); + + // Bind vertex attrib: texcoord (shader-location = 1) + glBindBuffer(GL_ARRAY_BUFFER, quads.vboId[1]); + glVertexAttribPointer(currentShader.texcoordLoc, 2, GL_FLOAT, 0, 0, 0); + glEnableVertexAttribArray(currentShader.texcoordLoc); + + // Bind vertex attrib: color (shader-location = 3) + glBindBuffer(GL_ARRAY_BUFFER, quads.vboId[2]); + glVertexAttribPointer(currentShader.colorLoc, 4, GL_UNSIGNED_BYTE, GL_TRUE, 0, 0); + glEnableVertexAttribArray(currentShader.colorLoc); + + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, quads.vboId[3]); + } + + //TraceLog(DEBUG, "Draws required per frame: %i", drawsCounter); + + for (int i = 0; i < drawsCounter; i++) + { + quadsCount = draws[i].vertexCount/4; + numIndicesToProcess = quadsCount*6; // Get number of Quads * 6 index by Quad + + //TraceLog(DEBUG, "Quads to render: %i - Vertex Count: %i", quadsCount, draws[i].vertexCount); + + glBindTexture(GL_TEXTURE_2D, draws[i].textureId); + + // NOTE: The final parameter tells the GPU the offset in bytes from the start of the index buffer to the location of the first index to process +#if defined(GRAPHICS_API_OPENGL_33) + glDrawElements(GL_TRIANGLES, numIndicesToProcess, GL_UNSIGNED_INT, (GLvoid *)(sizeof(GLuint)*indicesOffset)); +#elif defined(GRAPHICS_API_OPENGL_ES2) + glDrawElements(GL_TRIANGLES, numIndicesToProcess, GL_UNSIGNED_SHORT, (GLvoid *)(sizeof(GLushort)*indicesOffset)); +#endif + //GLenum err; + //if ((err = glGetError()) != GL_NO_ERROR) TraceLog(INFO, "OpenGL error: %i", (int)err); //GL_INVALID_ENUM! + + indicesOffset += draws[i].vertexCount/4*6; + } + + if (!vaoSupported) + { + glBindBuffer(GL_ARRAY_BUFFER, 0); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + } + + glBindTexture(GL_TEXTURE_2D, 0); // Unbind textures + } + + if (vaoSupported) glBindVertexArray(0); // Unbind VAO + + glUseProgram(0); // Unbind shader program + + // Reset draws counter + drawsCounter = 1; + draws[0].textureId = whiteTexture; + draws[0].vertexCount = 0; + + // Reset vertex counters for next frame + lines.vCounter = 0; + lines.cCounter = 0; + triangles.vCounter = 0; + triangles.cCounter = 0; + quads.vCounter = 0; + quads.tcCounter = 0; + quads.cCounter = 0; + + // Reset depth for next draw + currentDepth = -1.0f; +} + +// Unload default internal buffers vertex data from CPU and GPU static void UnloadDefaultBuffers(void) { // Unbind everything @@ -2708,21 +3032,21 @@ static void UnloadDefaultBuffers(void) glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); // Delete VBOs from GPU (VRAM) - glDeleteBuffers(1, &linesBuffer[0]); - glDeleteBuffers(1, &linesBuffer[1]); - glDeleteBuffers(1, &trianglesBuffer[0]); - glDeleteBuffers(1, &trianglesBuffer[1]); - glDeleteBuffers(1, &quadsBuffer[0]); - glDeleteBuffers(1, &quadsBuffer[1]); - glDeleteBuffers(1, &quadsBuffer[2]); - glDeleteBuffers(1, &quadsBuffer[3]); + glDeleteBuffers(1, &lines.vboId[0]); + glDeleteBuffers(1, &lines.vboId[1]); + glDeleteBuffers(1, &triangles.vboId[0]); + glDeleteBuffers(1, &triangles.vboId[1]); + glDeleteBuffers(1, &quads.vboId[0]); + glDeleteBuffers(1, &quads.vboId[1]); + glDeleteBuffers(1, &quads.vboId[2]); + glDeleteBuffers(1, &quads.vboId[3]); if (vaoSupported) { // Delete VAOs from GPU (VRAM) - glDeleteVertexArrays(1, &vaoLines); - glDeleteVertexArrays(1, &vaoTriangles); - glDeleteVertexArrays(1, &vaoQuads); + glDeleteVertexArrays(1, &lines.vaoId); + glDeleteVertexArrays(1, &triangles.vaoId); + glDeleteVertexArrays(1, &quads.vaoId); } // Free vertex arrays memory from CPU (RAM) @@ -2738,6 +3062,79 @@ static void UnloadDefaultBuffers(void) free(quads.indices); } +// Sets shader uniform values for lights array +// NOTE: It would be far easier with shader UBOs but are not supported on OpenGL ES 2.0f +static void SetShaderLights(Shader shader) +{ + int locPoint = glGetUniformLocation(shader.id, "lightsCount"); + glUniform1i(locPoint, lightsCount); + + char locName[32] = "lights[x].position\0"; + + for (int i = 0; i < lightsCount; i++) + { + locName[7] = '0' + i; + + memcpy(&locName[10], "enabled\0", strlen("enabled\0") + 1); + locPoint = GetShaderLocation(shader, locName); + glUniform1i(locPoint, lights[i]->enabled); + + memcpy(&locName[10], "type\0", strlen("type\0") + 1); + locPoint = GetShaderLocation(shader, locName); + glUniform1i(locPoint, lights[i]->type); + + memcpy(&locName[10], "diffuse\0", strlen("diffuse\0") + 2); + locPoint = glGetUniformLocation(shader.id, locName); + glUniform4f(locPoint, (float)lights[i]->diffuse.r/255, (float)lights[i]->diffuse.g/255, (float)lights[i]->diffuse.b/255, (float)lights[i]->diffuse.a/255); + + memcpy(&locName[10], "intensity\0", strlen("intensity\0")); + locPoint = glGetUniformLocation(shader.id, locName); + glUniform1f(locPoint, lights[i]->intensity); + + switch (lights[i]->type) + { + case LIGHT_POINT: + { + memcpy(&locName[10], "position\0", strlen("position\0") + 1); + locPoint = GetShaderLocation(shader, locName); + glUniform3f(locPoint, lights[i]->position.x, lights[i]->position.y, lights[i]->position.z); + + memcpy(&locName[10], "radius\0", strlen("radius\0") + 2); + locPoint = GetShaderLocation(shader, locName); + glUniform1f(locPoint, lights[i]->radius); + } break; + case LIGHT_DIRECTIONAL: + { + memcpy(&locName[10], "direction\0", strlen("direction\0") + 2); + locPoint = GetShaderLocation(shader, locName); + Vector3 direction = { lights[i]->target.x - lights[i]->position.x, lights[i]->target.y - lights[i]->position.y, lights[i]->target.z - lights[i]->position.z }; + VectorNormalize(&direction); + glUniform3f(locPoint, direction.x, direction.y, direction.z); + } break; + case LIGHT_SPOT: + { + memcpy(&locName[10], "position\0", strlen("position\0") + 1); + locPoint = GetShaderLocation(shader, locName); + glUniform3f(locPoint, lights[i]->position.x, lights[i]->position.y, lights[i]->position.z); + + memcpy(&locName[10], "direction\0", strlen("direction\0") + 2); + locPoint = GetShaderLocation(shader, locName); + + Vector3 direction = { lights[i]->target.x - lights[i]->position.x, lights[i]->target.y - lights[i]->position.y, lights[i]->target.z - lights[i]->position.z }; + VectorNormalize(&direction); + glUniform3f(locPoint, direction.x, direction.y, direction.z); + + memcpy(&locName[10], "coneAngle\0", strlen("coneAngle\0")); + locPoint = GetShaderLocation(shader, locName); + glUniform1f(locPoint, lights[i]->coneAngle); + } break; + default: break; + } + + // TODO: Pass to the shader any other required data from LightData struct + } +} + // Read text data from file // NOTE: text chars array should be freed manually static char *ReadTextFile(const char *fileName) @@ -2908,7 +3305,7 @@ static void TraceLog(int msgType, const char *text, ...) va_list args; va_start(args, text); - switch(msgType) + switch (msgType) { case INFO: fprintf(stdout, "INFO: "); break; case ERROR: fprintf(stdout, "ERROR: "); break; diff --git a/examples/oculus_glfw_sample/rlgl.h b/examples/oculus_glfw_sample/rlgl.h index 99427929a..e7e600369 100644 --- a/examples/oculus_glfw_sample/rlgl.h +++ b/examples/oculus_glfw_sample/rlgl.h @@ -130,47 +130,43 @@ typedef enum { OPENGL_11 = 1, OPENGL_33, OPENGL_ES_20 } GlVersion; COMPRESSED_ASTC_4x4_RGBA, // 8 bpp COMPRESSED_ASTC_8x8_RGBA // 2 bpp } TextureFormat; - - // Bounding box type - typedef struct BoundingBox { - Vector3 min; - Vector3 max; - } BoundingBox; - // Mesh with vertex data type - // NOTE: If using OpenGL 1.1, data loaded in CPU; if OpenGL 3.3+ data loaded in GPU (vaoId) + // Vertex data definning a mesh typedef struct Mesh { - int vertexCount; // num vertices - float *vertices; // vertex position (XYZ - 3 components per vertex) - float *texcoords; // vertex texture coordinates (UV - 2 components per vertex) - float *texcoords2; // vertex second texture coordinates (useful for lightmaps) - float *normals; // vertex normals (XYZ - 3 components per vertex) - float *tangents; // vertex tangents (XYZ - 3 components per vertex) - unsigned char *colors; // vertex colors (RGBA - 4 components per vertex) - - BoundingBox bounds; // mesh limits defined by min and max points - - unsigned int vaoId; // OpenGL Vertex Array Object id - unsigned int vboId[6]; // OpenGL Vertex Buffer Objects id (6 types of vertex data) + int vertexCount; // number of vertices stored in arrays + int triangleCount; // number of triangles stored (indexed or not) + float *vertices; // vertex position (XYZ - 3 components per vertex) (shader-location = 0) + float *texcoords; // vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1) + float *texcoords2; // vertex second texture coordinates (useful for lightmaps) (shader-location = 5) + float *normals; // vertex normals (XYZ - 3 components per vertex) (shader-location = 2) + float *tangents; // vertex tangents (XYZ - 3 components per vertex) (shader-location = 4) + unsigned char *colors; // vertex colors (RGBA - 4 components per vertex) (shader-location = 3) + unsigned short *indices;// vertex indices (in case vertex data comes indexed) + + unsigned int vaoId; // OpenGL Vertex Array Object id + unsigned int vboId[7]; // OpenGL Vertex Buffer Objects id (7 types of vertex data) } Mesh; - // Shader type + // Shader type (generic shader) typedef struct Shader { - unsigned int id; // Shader program id - - // Variable attributes - int vertexLoc; // Vertex attribute location point (vertex shader) - int texcoordLoc; // Texcoord attribute location point (vertex shader) - int normalLoc; // Normal attribute location point (vertex shader) - int colorLoc; // Color attibute location point (vertex shader) - - // Uniforms - int mvpLoc; // ModelView-Projection matrix uniform location point (vertex shader) - int tintColorLoc; // Color uniform location point (fragment shader) + unsigned int id; // Shader program id - int mapDiffuseLoc; // Diffuse map texture uniform location point (fragment shader) - int mapNormalLoc; // Normal map texture uniform location point (fragment shader) - int mapSpecularLoc; // Specular map texture uniform location point (fragment shader) + // Vertex attributes locations (default locations) + int vertexLoc; // Vertex attribute location point (default-location = 0) + int texcoordLoc; // Texcoord attribute location point (default-location = 1) + int normalLoc; // Normal attribute location point (default-location = 2) + int colorLoc; // Color attibute location point (default-location = 3) + int tangentLoc; // Tangent attribute location point (default-location = 4) + int texcoord2Loc; // Texcoord2 attribute location point (default-location = 5) + + // Uniform locations + int mvpLoc; // ModelView-Projection matrix uniform location point (vertex shader) + int tintColorLoc; // Color uniform location point (fragment shader) + + // Texture map locations (generic for any kind of map) + int mapTexture0Loc; // Map texture uniform location point (default-texture-unit = 0) + int mapTexture1Loc; // Map texture uniform location point (default-texture-unit = 1) + int mapTexture2Loc; // Map texture uniform location point (default-texture-unit = 2) } Shader; // Texture2D type @@ -192,27 +188,46 @@ typedef enum { OPENGL_11 = 1, OPENGL_33, OPENGL_ES_20 } GlVersion; // Material type typedef struct Material { - Shader shader; + Shader shader; // Standard shader (supports 3 map types: diffuse, normal, specular) - Texture2D texDiffuse; // Diffuse texture - Texture2D texNormal; // Normal texture - Texture2D texSpecular; // Specular texture + Texture2D texDiffuse; // Diffuse texture + Texture2D texNormal; // Normal texture + Texture2D texSpecular; // Specular texture + + Color colDiffuse; // Diffuse color + Color colAmbient; // Ambient color + Color colSpecular; // Specular color - Color colDiffuse; - Color colAmbient; - Color colSpecular; - - float glossiness; - float normalDepth; + float glossiness; // Glossiness level (Ranges from 0 to 1000) } Material; + + // Camera type, defines a camera position/orientation in 3d space + typedef struct Camera { + Vector3 position; // Camera position + Vector3 target; // Camera target it looks-at + Vector3 up; // Camera up vector (rotation over its axis) + float fovy; // Camera field-of-view apperture in Y (degrees) + } Camera; + + // Light type + typedef struct LightData { + unsigned int id; // Light unique id + int type; // Light type: LIGHT_POINT, LIGHT_DIRECTIONAL, LIGHT_SPOT + bool enabled; // Light enabled + + Vector3 position; // Light position + Vector3 target; // Light target: LIGHT_DIRECTIONAL and LIGHT_SPOT (cone direction target) + float radius; // Light attenuation radius light intensity reduced with distance (world distance) + + Color diffuse; // Light diffuse color + float intensity; // Light intensity level + + float coneAngle; // Light cone max angle: LIGHT_SPOT + } LightData, *Light; + + // Light types + typedef enum { LIGHT_POINT, LIGHT_DIRECTIONAL, LIGHT_SPOT } LightType; - // 3d Model type - typedef struct Model { - Mesh mesh; - Matrix transform; - Material material; - } Model; - // Color blending modes (pre-defined) typedef enum { BLEND_ALPHA = 0, BLEND_ADDITIVE, BLEND_MULTIPLIED } BlendMode; #endif @@ -234,6 +249,7 @@ void rlScalef(float x, float y, float z); // Multiply the current matrix b void rlMultMatrixf(float *mat); // Multiply the current matrix by another matrix void rlFrustum(double left, double right, double bottom, double top, double near, double far); void rlOrtho(double left, double right, double bottom, double top, double near, double far); +void rlViewport(int x, int y, int width, int height); // Set the viewport area //------------------------------------------------------------------------------------ // Functions Declaration - Vertex level operations @@ -259,6 +275,8 @@ void rlEnableRenderTexture(unsigned int id); // Enable render texture (fbo) void rlDisableRenderTexture(void); // Disable render texture (fbo), return to default framebuffer void rlEnableDepthTest(void); // Enable depth test void rlDisableDepthTest(void); // Disable depth test +void rlEnableWireMode(void); // Enable wire mode +void rlDisableWireMode(void); // Disable wire mode void rlDeleteTextures(unsigned int id); // Delete OpenGL texture from GPU void rlDeleteRenderTextures(RenderTexture2D target); // Delete render textures (fbo) from GPU void rlDeleteShader(unsigned int id); // Delete OpenGL shader program from GPU @@ -273,7 +291,7 @@ int rlGetVersion(void); // Returns current OpenGL versio //------------------------------------------------------------------------------------ void rlglInit(void); // Initialize rlgl (shaders, VAO, VBO...) void rlglClose(void); // De-init rlgl -void rlglDraw(Matrix mvp); // Draw VAO/VBO +void rlglDraw(Matrix mvp); // Draw VAO/VBO void rlglInitGraphics(int offsetX, int offsetY, int width, int height); // Initialize Graphics (OpenGL stuff) unsigned int rlglLoadTexture(void *data, int width, int height, int textureFormat, int mipmapCount); // Load texture in GPU @@ -281,35 +299,43 @@ RenderTexture2D rlglLoadRenderTexture(int width, int height); // Load a textur void rlglUpdateTexture(unsigned int id, int width, int height, int format, void *data); // Update GPU texture with new data void rlglGenerateMipmaps(Texture2D texture); // Generate mipmap data for selected texture -// NOTE: There is a set of shader related functions that are available to end user, -// to avoid creating function wrappers through core module, they have been directly declared in raylib.h - -Model rlglLoadModel(Mesh mesh); // Upload vertex data into GPU and provided VAO/VBO ids -void rlglDrawModel(Model model, Vector3 position, Vector3 rotationAxis, float rotationAngle, Vector3 scale, Color color, bool wires); +void rlglLoadMesh(Mesh *mesh, bool dynamic); // Upload vertex data into GPU and provided VAO/VBO ids +void rlglUpdateMesh(Mesh mesh, int buffer, int numVertex); // Update vertex data on GPU (upload new data to one buffer) +void rlglDrawMesh(Mesh mesh, Material material, Matrix transform); // Draw a 3d mesh with material and transform +void rlglUnloadMesh(Mesh *mesh); // Unload mesh data from CPU and GPU Vector3 rlglUnproject(Vector3 source, Matrix proj, Matrix view); // Get world coordinates from screen coordinates unsigned char *rlglReadScreenPixels(int width, int height); // Read screen pixel data (color buffer) void *rlglReadTexturePixels(Texture2D texture); // Read texture pixel data +// NOTE: There is a set of shader related functions that are available to end user, +// to avoid creating function wrappers through core module, they have been directly declared in raylib.h + #if defined(RLGL_STANDALONE) //------------------------------------------------------------------------------------ // Shaders System Functions (Module: rlgl) // NOTE: This functions are useless when using OpenGL 1.1 //------------------------------------------------------------------------------------ Shader LoadShader(char *vsFileName, char *fsFileName); // Load a custom shader and bind default locations -unsigned int LoadShaderProgram(char *vShaderStr, char *fShaderStr); // Load custom shader strings and return program id void UnloadShader(Shader shader); // Unload a custom shader from memory -void SetCustomShader(Shader shader); // Set custom shader to be used in batch draw -void SetDefaultShader(void); // Set default shader to be used in batch draw -void SetModelShader(Model *model, Shader shader); // Link a shader to a model + +Shader GetDefaultShader(void); // Get default shader +Shader GetStandardShader(void); // Get default shader +Texture2D GetDefaultTexture(void); // Get default texture int GetShaderLocation(Shader shader, const char *uniformName); // Get shader uniform location void SetShaderValue(Shader shader, int uniformLoc, float *value, int size); // Set shader uniform value (float) void SetShaderValuei(Shader shader, int uniformLoc, int *value, int size); // Set shader uniform value (int) void SetShaderValueMatrix(Shader shader, int uniformLoc, Matrix mat); // Set shader uniform value (matrix 4x4) -void SetBlendMode(int mode); // Set blending mode (alpha, additive, multiplied) +void BeginShaderMode(Shader shader); // Begin custom shader drawing +void EndShaderMode(void); // End custom shader drawing (use default shader) +void BeginBlendMode(int mode); // Begin blending mode (alpha, additive, multiplied) +void EndBlendMode(void); // End blending mode (reset to default: alpha blending) + +Light CreateLight(int type, Vector3 position, Color diffuse); // Create a new light, initialize it and add to pool +void DestroyLight(Light light); // Destroy a light and take it out of the list #endif #ifdef __cplusplus

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 diff --git a/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/Extras/OVR_CAPI_Util.h b/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/Extras/OVR_CAPI_Util.h index 587c696ea..552f3b125 100644 --- a/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/Extras/OVR_CAPI_Util.h +++ b/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/Extras/OVR_CAPI_Util.h @@ -137,14 +137,14 @@ OVR_PUBLIC_FUNCTION(ovrMatrix4f) ovrMatrix4f_OrthoSubProjection(ovrMatrix4f proj /// Computes offset eye poses based on headPose returned by ovrTrackingState. /// /// \param[in] headPose Indicates the HMD position and orientation to use for the calculation. -/// \param[in] HmdToEyeOffset Can be ovrEyeRenderDesc.HmdToEyeOffset returned from +/// \param[in] hmdToEyeOffset Can be ovrEyeRenderDesc.HmdToEyeOffset returned from /// ovr_GetRenderDesc. For monoscopic rendering, use a vector that is the average /// of the two vectors for both eyes. /// \param[out] outEyePoses If outEyePoses are used for rendering, they should be passed to /// ovr_SubmitFrame in ovrLayerEyeFov::RenderPose or ovrLayerEyeFovDepth::RenderPose. /// OVR_PUBLIC_FUNCTION(void) ovr_CalcEyePoses(ovrPosef headPose, - const ovrVector3f HmdToEyeOffset[2], + const ovrVector3f hmdToEyeOffset[2], ovrPosef outEyePoses[2]); @@ -158,17 +158,17 @@ OVR_PUBLIC_FUNCTION(void) ovr_CalcEyePoses(ovrPosef headPose, /// \param[in] hmd Specifies an ovrSession previously returned by ovr_Create. /// \param[in] frameIndex Specifies the targeted frame index, or 0 to refer to one frame after /// the last time ovr_SubmitFrame was called. -/// \param[in] HmdToEyeOffset Can be ovrEyeRenderDesc.HmdToEyeOffset returned from -/// ovr_GetRenderDesc. For monoscopic rendering, use a vector that is the average -/// of the two vectors for both eyes. /// \param[in] latencyMarker Specifies that this call is the point in time where /// the "App-to-Mid-Photon" latency timer starts from. If a given ovrLayer /// provides "SensorSampleTimestamp", that will override the value stored here. +/// \param[in] hmdToEyeOffset Can be ovrEyeRenderDesc.HmdToEyeOffset returned from +/// ovr_GetRenderDesc. For monoscopic rendering, use a vector that is the average +/// of the two vectors for both eyes. /// \param[out] outEyePoses The predicted eye poses. /// \param[out] outSensorSampleTime The time when this function was called. May be NULL, in which case it is ignored. /// OVR_PUBLIC_FUNCTION(void) ovr_GetEyePoses(ovrSession session, long long frameIndex, ovrBool latencyMarker, - const ovrVector3f HmdToEyeOffset[2], + const ovrVector3f hmdToEyeOffset[2], ovrPosef outEyePoses[2], double* outSensorSampleTime); diff --git a/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/Extras/OVR_Math.h b/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/Extras/OVR_Math.h index 3a8a80456..c182ed5b4 100644 --- a/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/Extras/OVR_Math.h +++ b/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/Extras/OVR_Math.h @@ -1,7 +1,7 @@ /********************************************************************************//** \file OVR_Math.h \brief Implementation of 3D primitives such as vectors, matrices. -\copyright Copyright 2015 Oculus VR, LLC All Rights reserved. +\copyright Copyright 2014-2016 Oculus VR, LLC All Rights reserved. *************************************************************************************/ #ifndef OVR_Math_h @@ -1754,7 +1754,7 @@ public: : Rotation(s.Rotation), Translation(s.Translation) { // Ensure normalized rotation if converting from float to double - if (sizeof(T) > sizeof(Math::OtherFloatType)) + if (sizeof(T) > sizeof(typename Math::OtherFloatType)) Rotation.Normalize(); } diff --git a/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/OVR_CAPI.h b/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/OVR_CAPI.h index 5eb17e607..b1ec3cc0e 100644 --- a/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/OVR_CAPI.h +++ b/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/OVR_CAPI.h @@ -1,7 +1,7 @@ /********************************************************************************//** \file OVR_CAPI.h \brief C Interface to the Oculus PC SDK tracking and rendering library. -\copyright Copyright 2014-2016 Oculus VR, LLC All Rights reserved. +\copyright Copyright 2014 Oculus VR, LLC All Rights reserved. ************************************************************************************/ #ifndef OVR_CAPI_h // We don't use version numbers within this name, as all versioned variations of this file are currently mutually exclusive. @@ -687,6 +687,11 @@ typedef enum ovrTextureMiscFlags_ /// call. This flag requires that RenderTarget binding also be specified. ovrTextureMisc_AllowGenerateMips = 0x0002, + /// Texture swap chain contains protected content, and requires + /// HDCP connection in order to display to HMD. Also prevents + /// mirroring or other redirection of any frame containing this contents + ovrTextureMisc_ProtectedContent = 0x0004, + ovrTextureMisc_EnumSize = 0x7fffffff ///< \internal Force type int32_t. } ovrTextureFlags; @@ -695,7 +700,7 @@ typedef enum ovrTextureMiscFlags_ /// \see ovr_CreateTextureSwapChainDX /// \see ovr_CreateTextureSwapChainGL /// -typedef struct +typedef struct ovrTextureSwapChainDesc_ { ovrTextureType Type; ovrTextureFormat Format; @@ -705,7 +710,7 @@ typedef struct int MipLevels; int SampleCount; ///< Current only supported on depth textures ovrBool StaticImage; ///< Not buffered in a chain. For images that don't change - unsigned int MiscFlags; ///< ovrTextureMiscFlags + unsigned int MiscFlags; ///< ovrTextureFlags unsigned int BindFlags; ///< ovrTextureBindFlags. Not used for GL. } ovrTextureSwapChainDesc; @@ -714,12 +719,12 @@ typedef struct /// \see ovr_CreateMirrorTextureDX /// \see ovr_CreateMirrorTextureGL /// -typedef struct +typedef struct ovrMirrorTextureDesc_ { ovrTextureFormat Format; int Width; int Height; - unsigned int MiscFlags; ///< ovrTextureMiscFlags + unsigned int MiscFlags; ///< ovrTextureFlags } ovrMirrorTextureDesc; typedef struct ovrTextureSwapChainData* ovrTextureSwapChain; @@ -987,8 +992,8 @@ extern "C" { /// Initializes LibOVR /// /// Initialize LibOVR for application usage. This includes finding and loading the LibOVRRT -/// shared library. No LibOVR API functions, other than ovr_GetLastErrorInfo, can be called -/// unless ovr_Initialize succeeds. A successful call to ovr_Initialize must be eventually +/// shared library. No LibOVR API functions, other than ovr_GetLastErrorInfo and ovr_Detect, can +/// be called unless ovr_Initialize succeeds. A successful call to ovr_Initialize must be eventually /// followed by a call to ovr_Shutdown. ovr_Initialize calls are idempotent. /// Calling ovr_Initialize twice does not require two matching calls to ovr_Shutdown. /// If already initialized, the return value is ovr_Success. @@ -1696,6 +1701,14 @@ OVR_PUBLIC_FUNCTION(void) ovr_DestroyMirrorTexture(ovrSession session, ovrMirror /// \param[in] pixelsPerDisplayPixel Specifies the ratio of the number of render target pixels /// to display pixels at the center of distortion. 1.0 is the default value. Lower /// values can improve performance, higher values give improved quality. +/// +/// Example code +/// \code{.cpp} +/// ovrHmdDesc hmdDesc = ovr_GetHmdDesc(session); +/// ovrSizei eyeSizeLeft = ovr_GetFovTextureSize(session, ovrEye_Left, hmdDesc.DefaultEyeFov[ovrEye_Left], 1.0f); +/// ovrSizei eyeSizeRight = ovr_GetFovTextureSize(session, ovrEye_Right, hmdDesc.DefaultEyeFov[ovrEye_Right], 1.0f); +/// \endcode +/// /// \return Returns the texture width and height size. /// OVR_PUBLIC_FUNCTION(ovrSizei) ovr_GetFovTextureSize(ovrSession session, ovrEyeType eye, ovrFovPort fov, diff --git a/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/OVR_CAPI_D3D.h b/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/OVR_CAPI_D3D.h index 5c6e94eb8..50806bca1 100644 --- a/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/OVR_CAPI_D3D.h +++ b/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/OVR_CAPI_D3D.h @@ -67,8 +67,8 @@ OVR_PUBLIC_FUNCTION(ovrResult) ovr_CreateTextureSwapChainDX(ovrSession session, /// /// Example code /// \code{.cpp} -/// ovr_GetTextureSwapChainBuffer(session, chain, 0, IID_ID3D11Texture2D, &d3d11Texture); -/// ovr_GetTextureSwapChainBuffer(session, chain, 1, IID_PPV_ARGS(&dxgiResource)); +/// ovr_GetTextureSwapChainBufferDX(session, chain, 0, IID_ID3D11Texture2D, &d3d11Texture); +/// ovr_GetTextureSwapChainBufferDX(session, chain, 1, IID_PPV_ARGS(&dxgiResource)); /// \endcode /// OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetTextureSwapChainBufferDX(ovrSession session, @@ -102,6 +102,21 @@ OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetTextureSwapChainBufferDX(ovrSession sessio /// compositor continues to treat is as sRGB. Failure to do so will cause the compositor to apply unexpected gamma conversions leading to /// gamma-curve artifacts. /// +/// +/// Example code +/// \code{.cpp} +/// ovrMirrorTexture mirrorTexture = nullptr; +/// ovrMirrorTextureDesc mirrorDesc = {}; +/// mirrorDesc.Format = OVR_FORMAT_R8G8B8A8_UNORM_SRGB; +/// mirrorDesc.Width = mirrorWindowWidth; +/// mirrorDesc.Height = mirrorWindowHeight; +/// ovrResult result = ovr_CreateMirrorTextureDX(session, d3d11Device, &mirrorDesc, &mirrorTexture); +/// [...] +/// // Destroy the texture when done with it. +/// ovr_DestroyMirrorTexture(session, mirrorTexture); +/// mirrorTexture = nullptr; +/// \endcode +/// /// \see ovr_GetMirrorTextureBufferDX /// \see ovr_DestroyMirrorTexture /// @@ -120,6 +135,15 @@ OVR_PUBLIC_FUNCTION(ovrResult) ovr_CreateMirrorTextureDX(ovrSession session, /// \return Returns an ovrResult indicating success or failure. In the case of failure, use /// ovr_GetLastErrorInfo to get more information. /// +/// Example code +/// \code{.cpp} +/// ID3D11Texture2D* d3d11Texture = nullptr; +/// ovr_GetMirrorTextureBufferDX(session, mirrorTexture, IID_PPV_ARGS(&d3d11Texture)); +/// d3d11DeviceContext->CopyResource(d3d11TextureBackBuffer, d3d11Texture); +/// d3d11Texture->Release(); +/// dxgiSwapChain->Present(0, 0); +/// \endcode +/// OVR_PUBLIC_FUNCTION(ovrResult) ovr_GetMirrorTextureBufferDX(ovrSession session, ovrMirrorTexture mirrorTexture, IID iid, diff --git a/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/OVR_ErrorCode.h b/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/OVR_ErrorCode.h index 3d4061743..ed0be0e70 100644 --- a/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/OVR_ErrorCode.h +++ b/examples/oculus_glfw_sample/OculusSDK/LibOVR/Include/OVR_ErrorCode.h @@ -91,6 +91,7 @@ typedef enum ovrErrorType_ ovrError_InvalidHeadsetOrientation = -1011, ///< The headset was in an invalid orientation for the requested operation (e.g. vertically oriented during ovr_RecenterPose). ovrError_ClientSkippedDestroy = -1012, ///< The client failed to call ovr_Destroy on an active session before calling ovr_Shutdown. Or the client crashed. ovrError_ClientSkippedShutdown = -1013, ///< The client failed to call ovr_Shutdown or the client crashed. + ovrError_ServiceDeadlockDetected = -1014, ///< The service watchdog discovered a deadlock. /* Audio error range, reserved for Audio errors. */ ovrError_AudioReservedBegin = -2000, ///< First Audio error. @@ -140,25 +141,42 @@ typedef enum ovrErrorType_ ovrError_NordicEnabledNoSync = -4015, ///< The nordic indicates that sync is enabled but it is not sending sync pulses ovrError_NordicSyncNoFrames = -4016, ///< It looks like we're getting a sync signal, but no camera frames have been received ovrError_CatastrophicFailure = -4017, ///< A catastrophic failure has occurred. We will attempt to recover by resetting the device + ovrError_CatastrophicTimeout = -4018, ///< The catastrophic recovery has timed out. + ovrError_RepeatCatastrophicFail = -4019, ///< Catastrophic failure has repeated too many times. + ovrError_USBOpenDeviceFailure = -4020, ///< Could not open handle for Rift device (likely already in use by another process). + ovrError_HMDGeneralFailure = -4021, ///< Unexpected HMD issues that don't fit a specific bucket. ovrError_HMDFirmwareMismatch = -4100, ///< The HMD Firmware is out of date and is unacceptable. ovrError_TrackerFirmwareMismatch = -4101, ///< The sensor Firmware is out of date and is unacceptable. ovrError_BootloaderDeviceDetected = -4102, ///< A bootloader HMD is detected by the service. ovrError_TrackerCalibrationError = -4103, ///< The sensor calibration is missing or incorrect. ovrError_ControllerFirmwareMismatch = -4104, ///< The controller firmware is out of date and is unacceptable. + ovrError_DevManDeviceDetected = -4105, ///< A DeviceManagement mode HMD is detected by the service. + ovrError_RebootedBootloaderDevice = -4106, ///< Had to reboot bootloader device, which succeeded. + ovrError_FailedRebootBootloaderDev = -4107, ///< Had to reboot bootloader device, which failed. Device is stuck in bootloader mode. ovrError_IMUTooManyLostSamples = -4200, ///< Too many lost IMU samples. ovrError_IMURateError = -4201, ///< IMU rate is outside of the expected range. ovrError_FeatureReportFailure = -4202, ///< A feature report has failed. + ovrError_HMDWirelessTimeout = -4203, ///< HMD wireless interface never returned from busy state. + + ovrError_BootloaderAssertLog = -4300, ///< HMD Bootloader Assert Log was not empty. + ovrError_AppAssertLog = -4301, ///< HMD App Assert Log was not empty. /* Synchronization errors */ - ovrError_Incomplete = -5000, /// -#include -#include -#include "glad.h" - -struct gladGLversionStruct GLVersion; - -#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 const 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 = (const char **)realloc((void *)exts_i, num_exts_i * sizeof *exts_i); - } - - if (exts_i == NULL) { - return 0; - } - - for(index = 0; index < num_exts_i; index++) { - exts_i[index] = (const char*)glGetStringi(GL_EXTENSIONS, index); - } - } -#endif - return 1; -} - -static void free_exts(void) { - if (exts_i != NULL) { - free(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; - - for(index = 0; index < num_exts_i; index++) { - const char *e = exts_i[index]; - - if(strcmp(e, ext) == 0) { - return 1; - } - } - } -#endif - - return 0; -} -int GLAD_GL_VERSION_1_0; -int GLAD_GL_VERSION_1_1; -int GLAD_GL_VERSION_1_2; -int GLAD_GL_VERSION_1_3; -int GLAD_GL_VERSION_1_4; -int GLAD_GL_VERSION_1_5; -int GLAD_GL_VERSION_2_0; -int GLAD_GL_VERSION_2_1; -int GLAD_GL_VERSION_3_0; -int GLAD_GL_VERSION_3_1; -int GLAD_GL_VERSION_3_2; -int GLAD_GL_VERSION_3_3; -PFNGLCOPYTEXIMAGE1DPROC glad_glCopyTexImage1D; -PFNGLVERTEXATTRIBI3UIPROC glad_glVertexAttribI3ui; -PFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate; -PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer; -PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glad_glCompressedTexSubImage3D; -PFNGLTEXCOORDP3UIVPROC glad_glTexCoordP3uiv; -PFNGLVERTEXATTRIB1SVPROC glad_glVertexAttrib1sv; -PFNGLBINDSAMPLERPROC glad_glBindSampler; -PFNGLLINEWIDTHPROC glad_glLineWidth; -PFNGLCOLORP3UIVPROC glad_glColorP3uiv; -PFNGLGETINTEGERI_VPROC glad_glGetIntegeri_v; -PFNGLCOMPILESHADERPROC glad_glCompileShader; -PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glad_glGetTransformFeedbackVarying; -PFNGLVERTEXATTRIBIPOINTERPROC glad_glVertexAttribIPointer; -PFNGLMULTITEXCOORDP3UIPROC glad_glMultiTexCoordP3ui; -PFNGLVERTEXP4UIPROC glad_glVertexP4ui; -PFNGLENABLEIPROC glad_glEnablei; -PFNGLVERTEXATTRIBP4UIPROC glad_glVertexAttribP4ui; -PFNGLCREATESHADERPROC glad_glCreateShader; -PFNGLISBUFFERPROC glad_glIsBuffer; -PFNGLGETMULTISAMPLEFVPROC glad_glGetMultisamplefv; -PFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers; -PFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D; -PFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D; -PFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f; -PFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate; -PFNGLHINTPROC glad_glHint; -PFNGLVERTEXATTRIB1SPROC glad_glVertexAttrib1s; -PFNGLSAMPLEMASKIPROC glad_glSampleMaski; -PFNGLVERTEXP2UIPROC glad_glVertexP2ui; -PFNGLUNIFORMMATRIX3X2FVPROC glad_glUniformMatrix3x2fv; -PFNGLPOINTSIZEPROC glad_glPointSize; -PFNGLVERTEXATTRIB2DVPROC glad_glVertexAttrib2dv; -PFNGLDELETEPROGRAMPROC glad_glDeleteProgram; -PFNGLVERTEXATTRIB4NUIVPROC glad_glVertexAttrib4Nuiv; -PFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage; -PFNGLWAITSYNCPROC glad_glWaitSync; -PFNGLUNIFORMMATRIX4X3FVPROC glad_glUniformMatrix4x3fv; -PFNGLUNIFORM3IPROC glad_glUniform3i; -PFNGLCLEARBUFFERFVPROC glad_glClearBufferfv; -PFNGLUNIFORM3FPROC glad_glUniform3f; -PFNGLVERTEXATTRIB4UBVPROC glad_glVertexAttrib4ubv; -PFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv; -PFNGLTEXCOORDP2UIPROC glad_glTexCoordP2ui; -PFNGLCOLORMASKIPROC glad_glColorMaski; -PFNGLCLEARBUFFERFIPROC glad_glClearBufferfi; -PFNGLGENVERTEXARRAYSPROC glad_glGenVertexArrays; -PFNGLMULTITEXCOORDP2UIPROC glad_glMultiTexCoordP2ui; -PFNGLGETSAMPLERPARAMETERIIVPROC glad_glGetSamplerParameterIiv; -PFNGLGETFRAGDATAINDEXPROC glad_glGetFragDataIndex; -PFNGLGETVERTEXATTRIBDVPROC glad_glGetVertexAttribdv; -PFNGLUNIFORMMATRIX3X4FVPROC glad_glUniformMatrix3x4fv; -PFNGLMULTITEXCOORDP4UIPROC glad_glMultiTexCoordP4ui; -PFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers; -PFNGLDRAWARRAYSPROC glad_glDrawArrays; -PFNGLUNIFORM1UIPROC glad_glUniform1ui; -PFNGLVERTEXATTRIBI2IPROC glad_glVertexAttribI2i; -PFNGLTEXCOORDP3UIPROC glad_glTexCoordP3ui; -PFNGLVERTEXATTRIB3DPROC glad_glVertexAttrib3d; -PFNGLCLEARPROC glad_glClear; -PFNGLGETACTIVEUNIFORMNAMEPROC glad_glGetActiveUniformName; -PFNGLISENABLEDPROC glad_glIsEnabled; -PFNGLSTENCILOPPROC glad_glStencilOp; -PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D; -PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv; -PFNGLVERTEXATTRIB4NUBPROC glad_glVertexAttrib4Nub; -PFNGLGETFRAGDATALOCATIONPROC glad_glGetFragDataLocation; -PFNGLTEXIMAGE1DPROC glad_glTexImage1D; -PFNGLTEXPARAMETERIVPROC glad_glTexParameteriv; -PFNGLGETTEXIMAGEPROC glad_glGetTexImage; -PFNGLGETQUERYOBJECTI64VPROC glad_glGetQueryObjecti64v; -PFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers; -PFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders; -PFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer; -PFNGLDELETEVERTEXARRAYSPROC glad_glDeleteVertexArrays; -PFNGLISVERTEXARRAYPROC glad_glIsVertexArray; -PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray; -PFNGLGETQUERYIVPROC glad_glGetQueryiv; -PFNGLGETSAMPLERPARAMETERFVPROC glad_glGetSamplerParameterfv; -PFNGLGETUNIFORMINDICESPROC glad_glGetUniformIndices; -PFNGLISSHADERPROC glad_glIsShader; -PFNGLVERTEXATTRIBI4UBVPROC glad_glVertexAttribI4ubv; -PFNGLPOINTPARAMETERIVPROC glad_glPointParameteriv; -PFNGLENABLEPROC glad_glEnable; -PFNGLGETACTIVEUNIFORMSIVPROC glad_glGetActiveUniformsiv; -PFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation; -PFNGLVERTEXATTRIB4DVPROC glad_glVertexAttrib4dv; -PFNGLMULTITEXCOORDP3UIVPROC glad_glMultiTexCoordP3uiv; -PFNGLVERTEXATTRIBP3UIPROC glad_glVertexAttribP3ui; -PFNGLGETUNIFORMFVPROC glad_glGetUniformfv; -PFNGLGETUNIFORMUIVPROC glad_glGetUniformuiv; -PFNGLGETVERTEXATTRIBIIVPROC glad_glGetVertexAttribIiv; -PFNGLDRAWBUFFERPROC glad_glDrawBuffer; -PFNGLCLEARBUFFERUIVPROC glad_glClearBufferuiv; -PFNGLDRAWELEMENTSINSTANCEDPROC glad_glDrawElementsInstanced; -PFNGLFLUSHPROC glad_glFlush; -PFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv; -PFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv; -PFNGLFENCESYNCPROC glad_glFenceSync; -PFNGLCOLORP3UIPROC glad_glColorP3ui; -PFNGLVERTEXATTRIB3SVPROC glad_glVertexAttrib3sv; -PFNGLBEGINCONDITIONALRENDERPROC glad_glBeginConditionalRender; -PFNGLGETTEXLEVELPARAMETERIVPROC glad_glGetTexLevelParameteriv; -PFNGLMULTITEXCOORDP4UIVPROC glad_glMultiTexCoordP4uiv; -PFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate; -PFNGLGENSAMPLERSPROC glad_glGenSamplers; -PFNGLCLAMPCOLORPROC glad_glClampColor; -PFNGLUNIFORM4IVPROC glad_glUniform4iv; -PFNGLCLEARSTENCILPROC glad_glClearStencil; -PFNGLTEXCOORDP1UIVPROC glad_glTexCoordP1uiv; -PFNGLGENTEXTURESPROC glad_glGenTextures; -PFNGLGETTEXPARAMETERIUIVPROC glad_glGetTexParameterIuiv; -PFNGLVERTEXATTRIB4NBVPROC glad_glVertexAttrib4Nbv; -PFNGLISSYNCPROC glad_glIsSync; -PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glad_glGetActiveUniformBlockName; -PFNGLUNIFORM2IPROC glad_glUniform2i; -PFNGLUNIFORM2FPROC glad_glUniform2f; -PFNGLTEXCOORDP4UIPROC glad_glTexCoordP4ui; -PFNGLGETPROGRAMIVPROC glad_glGetProgramiv; -PFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer; -PFNGLFRAMEBUFFERTEXTURELAYERPROC glad_glFramebufferTextureLayer; -PFNGLFLUSHMAPPEDBUFFERRANGEPROC glad_glFlushMappedBufferRange; -PFNGLGENQUERIESPROC glad_glGenQueries; -PFNGLVERTEXATTRIBP1UIPROC glad_glVertexAttribP1ui; -PFNGLTEXSUBIMAGE3DPROC glad_glTexSubImage3D; -PFNGLGETINTEGER64I_VPROC glad_glGetInteger64i_v; -PFNGLDELETESAMPLERSPROC glad_glDeleteSamplers; -PFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D; -PFNGLBLITFRAMEBUFFERPROC glad_glBlitFramebuffer; -PFNGLISENABLEDIPROC glad_glIsEnabledi; -PFNGLSECONDARYCOLORP3UIPROC glad_glSecondaryColorP3ui; -PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glad_glBindFragDataLocationIndexed; -PFNGLUNIFORM2IVPROC glad_glUniform2iv; -PFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv; -PFNGLUNIFORM4UIVPROC glad_glUniform4uiv; -PFNGLFRAMEBUFFERTEXTURE1DPROC glad_glFramebufferTexture1D; -PFNGLGETSHADERIVPROC glad_glGetShaderiv; -PFNGLBINDFRAGDATALOCATIONPROC glad_glBindFragDataLocation; -PFNGLPOLYGONOFFSETPROC glad_glPolygonOffset; -PFNGLGETDOUBLEVPROC glad_glGetDoublev; -PFNGLVERTEXATTRIB1DPROC glad_glVertexAttrib1d; -PFNGLGETUNIFORMIVPROC glad_glGetUniformiv; -PFNGLMULTITEXCOORDP1UIVPROC glad_glMultiTexCoordP1uiv; -PFNGLUNIFORM3FVPROC glad_glUniform3fv; -PFNGLDEPTHRANGEPROC glad_glDepthRange; -PFNGLMAPBUFFERPROC glad_glMapBuffer; -PFNGLCOMPRESSEDTEXIMAGE3DPROC glad_glCompressedTexImage3D; -PFNGLDELETESYNCPROC glad_glDeleteSync; -PFNGLCOPYTEXSUBIMAGE3DPROC glad_glCopyTexSubImage3D; -PFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv; -PFNGLMULTIDRAWELEMENTSPROC glad_glMultiDrawElements; -PFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv; -PFNGLUNIFORM3IVPROC glad_glUniform3iv; -PFNGLPOLYGONMODEPROC glad_glPolygonMode; -PFNGLDRAWBUFFERSPROC glad_glDrawBuffers; -PFNGLGETACTIVEUNIFORMBLOCKIVPROC glad_glGetActiveUniformBlockiv; -PFNGLUSEPROGRAMPROC glad_glUseProgram; -PFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog; -PFNGLBINDVERTEXARRAYPROC glad_glBindVertexArray; -PFNGLDELETEBUFFERSPROC glad_glDeleteBuffers; -PFNGLSAMPLERPARAMETERIIVPROC glad_glSamplerParameterIiv; -PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glad_glMultiDrawElementsBaseVertex; -PFNGLUNIFORM2UIVPROC glad_glUniform2uiv; -PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glad_glCompressedTexSubImage1D; -PFNGLFINISHPROC glad_glFinish; -PFNGLDELETESHADERPROC glad_glDeleteShader; -PFNGLVERTEXATTRIB4NSVPROC glad_glVertexAttrib4Nsv; -PFNGLVIEWPORTPROC glad_glViewport; -PFNGLUNIFORM1UIVPROC glad_glUniform1uiv; -PFNGLTRANSFORMFEEDBACKVARYINGSPROC glad_glTransformFeedbackVaryings; -PFNGLUNIFORM2UIPROC glad_glUniform2ui; -PFNGLVERTEXATTRIBI3IPROC glad_glVertexAttribI3i; -PFNGLCLEARDEPTHPROC glad_glClearDepth; -PFNGLVERTEXATTRIBI4USVPROC glad_glVertexAttribI4usv; -PFNGLTEXPARAMETERFPROC glad_glTexParameterf; -PFNGLTEXPARAMETERIPROC glad_glTexParameteri; -PFNGLGETSHADERSOURCEPROC glad_glGetShaderSource; -PFNGLTEXBUFFERPROC glad_glTexBuffer; -PFNGLPIXELSTOREIPROC glad_glPixelStorei; -PFNGLVALIDATEPROGRAMPROC glad_glValidateProgram; -PFNGLPIXELSTOREFPROC glad_glPixelStoref; -PFNGLGETBOOLEANI_VPROC glad_glGetBooleani_v; -PFNGLMULTITEXCOORDP2UIVPROC glad_glMultiTexCoordP2uiv; -PFNGLVERTEXATTRIBP1UIVPROC glad_glVertexAttribP1uiv; -PFNGLLINKPROGRAMPROC glad_glLinkProgram; -PFNGLBINDTEXTUREPROC glad_glBindTexture; -PFNGLGETSTRINGPROC glad_glGetString; -PFNGLVERTEXATTRIBP2UIVPROC glad_glVertexAttribP2uiv; -PFNGLDETACHSHADERPROC glad_glDetachShader; -PFNGLENDQUERYPROC glad_glEndQuery; -PFNGLNORMALP3UIPROC glad_glNormalP3ui; -PFNGLVERTEXATTRIBI2UIPROC glad_glVertexAttribI2ui; -PFNGLDELETETEXTURESPROC glad_glDeleteTextures; -PFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate; -PFNGLDELETEQUERIESPROC glad_glDeleteQueries; -PFNGLNORMALP3UIVPROC glad_glNormalP3uiv; -PFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f; -PFNGLVERTEXATTRIB4DPROC glad_glVertexAttrib4d; -PFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv; -PFNGLVERTEXATTRIB4SPROC glad_glVertexAttrib4s; -PFNGLDRAWELEMENTSBASEVERTEXPROC glad_glDrawElementsBaseVertex; -PFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage; -PFNGLSAMPLERPARAMETERIPROC glad_glSamplerParameteri; -PFNGLSAMPLERPARAMETERFPROC glad_glSamplerParameterf; -PFNGLUNIFORM1FPROC glad_glUniform1f; -PFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv; -PFNGLGETCOMPRESSEDTEXIMAGEPROC glad_glGetCompressedTexImage; -PFNGLUNIFORM1IPROC glad_glUniform1i; -PFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib; -PFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D; -PFNGLDISABLEPROC glad_glDisable; -PFNGLLOGICOPPROC glad_glLogicOp; -PFNGLUNIFORM4UIPROC glad_glUniform4ui; -PFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer; -PFNGLCULLFACEPROC glad_glCullFace; -PFNGLGETSTRINGIPROC glad_glGetStringi; -PFNGLATTACHSHADERPROC glad_glAttachShader; -PFNGLQUERYCOUNTERPROC glad_glQueryCounter; -PFNGLPROVOKINGVERTEXPROC glad_glProvokingVertex; -PFNGLDRAWELEMENTSPROC glad_glDrawElements; -PFNGLVERTEXATTRIBI4SVPROC glad_glVertexAttribI4sv; -PFNGLUNIFORM1IVPROC glad_glUniform1iv; -PFNGLGETQUERYOBJECTIVPROC glad_glGetQueryObjectiv; -PFNGLREADBUFFERPROC glad_glReadBuffer; -PFNGLTEXPARAMETERIUIVPROC glad_glTexParameterIuiv; -PFNGLDRAWARRAYSINSTANCEDPROC glad_glDrawArraysInstanced; -PFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap; -PFNGLSAMPLERPARAMETERIVPROC glad_glSamplerParameteriv; -PFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f; -PFNGLVERTEXATTRIB4UIVPROC glad_glVertexAttrib4uiv; -PFNGLPOINTPARAMETERIPROC glad_glPointParameteri; -PFNGLBLENDCOLORPROC glad_glBlendColor; -PFNGLSAMPLERPARAMETERIUIVPROC glad_glSamplerParameterIuiv; -PFNGLUNMAPBUFFERPROC glad_glUnmapBuffer; -PFNGLPOINTPARAMETERFPROC glad_glPointParameterf; -PFNGLVERTEXATTRIB3SPROC glad_glVertexAttrib3s; -PFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer; -PFNGLVERTEXATTRIBP4UIVPROC glad_glVertexAttribP4uiv; -PFNGLISPROGRAMPROC glad_glIsProgram; -PFNGLVERTEXATTRIB4BVPROC glad_glVertexAttrib4bv; -PFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv; -PFNGLUNIFORM4IPROC glad_glUniform4i; -PFNGLACTIVETEXTUREPROC glad_glActiveTexture; -PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray; -PFNGLREADPIXELSPROC glad_glReadPixels; -PFNGLVERTEXATTRIBI3IVPROC glad_glVertexAttribI3iv; -PFNGLUNIFORM4FPROC glad_glUniform4f; -PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glRenderbufferStorageMultisample; -PFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv; -PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glad_glDrawElementsInstancedBaseVertex; -PFNGLSTENCILFUNCPROC glad_glStencilFunc; -PFNGLUNIFORMBLOCKBINDINGPROC glad_glUniformBlockBinding; -PFNGLCOLORP4UIPROC glad_glColorP4ui; -PFNGLVERTEXATTRIBI4IVPROC glad_glVertexAttribI4iv; -PFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog; -PFNGLVERTEXATTRIBI4IPROC glad_glVertexAttribI4i; -PFNGLGETBUFFERSUBDATAPROC glad_glGetBufferSubData; -PFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate; -PFNGLVERTEXATTRIBI1UIPROC glad_glVertexAttribI1ui; -PFNGLGENBUFFERSPROC glad_glGenBuffers; -PFNGLVERTEXATTRIB2SVPROC glad_glVertexAttrib2sv; -PFNGLBLENDFUNCPROC glad_glBlendFunc; -PFNGLCREATEPROGRAMPROC glad_glCreateProgram; -PFNGLTEXIMAGE3DPROC glad_glTexImage3D; -PFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer; -PFNGLPRIMITIVERESTARTINDEXPROC glad_glPrimitiveRestartIndex; -PFNGLGETINTEGER64VPROC glad_glGetInteger64v; -PFNGLSCISSORPROC glad_glScissor; -PFNGLTEXCOORDP4UIVPROC glad_glTexCoordP4uiv; -PFNGLGETBOOLEANVPROC glad_glGetBooleanv; -PFNGLVERTEXP2UIVPROC glad_glVertexP2uiv; -PFNGLUNIFORM3UIVPROC glad_glUniform3uiv; -PFNGLCLEARCOLORPROC glad_glClearColor; -PFNGLVERTEXATTRIB4NIVPROC glad_glVertexAttrib4Niv; -PFNGLCLEARBUFFERIVPROC glad_glClearBufferiv; -PFNGLGETBUFFERPARAMETERI64VPROC glad_glGetBufferParameteri64v; -PFNGLCOLORP4UIVPROC glad_glColorP4uiv; -PFNGLVERTEXATTRIBI2UIVPROC glad_glVertexAttribI2uiv; -PFNGLUNIFORM3UIPROC glad_glUniform3ui; -PFNGLVERTEXATTRIBI4UIVPROC glad_glVertexAttribI4uiv; -PFNGLPOINTPARAMETERFVPROC glad_glPointParameterfv; -PFNGLUNIFORM2FVPROC glad_glUniform2fv; -PFNGLGETSAMPLERPARAMETERIUIVPROC glad_glGetSamplerParameterIuiv; -PFNGLBINDBUFFERRANGEPROC glad_glBindBufferRange; -PFNGLUNIFORMMATRIX2X3FVPROC glad_glUniformMatrix2x3fv; -PFNGLGETVERTEXATTRIBIUIVPROC glad_glGetVertexAttribIuiv; -PFNGLVERTEXATTRIB4NUSVPROC glad_glVertexAttrib4Nusv; -PFNGLDEPTHFUNCPROC glad_glDepthFunc; -PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D; -PFNGLVERTEXATTRIBI4BVPROC glad_glVertexAttribI4bv; -PFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv; -PFNGLMULTITEXCOORDP1UIPROC glad_glMultiTexCoordP1ui; -PFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync; -PFNGLVERTEXATTRIBI4UIPROC glad_glVertexAttribI4ui; -PFNGLCOLORMASKPROC glad_glColorMask; -PFNGLTEXPARAMETERIIVPROC glad_glTexParameterIiv; -PFNGLBLENDEQUATIONPROC glad_glBlendEquation; -PFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation; -PFNGLENDTRANSFORMFEEDBACKPROC glad_glEndTransformFeedback; -PFNGLVERTEXATTRIB4USVPROC glad_glVertexAttrib4usv; -PFNGLUNIFORM4FVPROC glad_glUniform4fv; -PFNGLBEGINTRANSFORMFEEDBACKPROC glad_glBeginTransformFeedback; -PFNGLVERTEXATTRIBI1IVPROC glad_glVertexAttribI1iv; -PFNGLISSAMPLERPROC glad_glIsSampler; -PFNGLVERTEXP3UIPROC glad_glVertexP3ui; -PFNGLVERTEXATTRIBDIVISORPROC glad_glVertexAttribDivisor; -PFNGLCOMPRESSEDTEXIMAGE1DPROC glad_glCompressedTexImage1D; -PFNGLCOPYTEXSUBIMAGE1DPROC glad_glCopyTexSubImage1D; -PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glad_glDrawRangeElementsBaseVertex; -PFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus; -PFNGLENDCONDITIONALRENDERPROC glad_glEndConditionalRender; -PFNGLVERTEXP3UIVPROC glad_glVertexP3uiv; -PFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation; -PFNGLUNIFORMMATRIX4X2FVPROC glad_glUniformMatrix4x2fv; -PFNGLVERTEXATTRIB1DVPROC glad_glVertexAttrib1dv; -PFNGLDRAWRANGEELEMENTSPROC glad_glDrawRangeElements; -PFNGLGETQUERYOBJECTUIVPROC glad_glGetQueryObjectuiv; -PFNGLBINDBUFFERBASEPROC glad_glBindBufferBase; -PFNGLBUFFERSUBDATAPROC glad_glBufferSubData; -PFNGLVERTEXATTRIB4IVPROC glad_glVertexAttrib4iv; -PFNGLMAPBUFFERRANGEPROC glad_glMapBufferRange; -PFNGLFRAMEBUFFERTEXTUREPROC glad_glFramebufferTexture; -PFNGLMULTIDRAWARRAYSPROC glad_glMultiDrawArrays; -PFNGLVERTEXP4UIVPROC glad_glVertexP4uiv; -PFNGLVERTEXATTRIBI2IVPROC glad_glVertexAttribI2iv; -PFNGLDISABLEIPROC glad_glDisablei; -PFNGLSHADERSOURCEPROC glad_glShaderSource; -PFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers; -PFNGLVERTEXATTRIBI3UIVPROC glad_glVertexAttribI3uiv; -PFNGLGETSYNCIVPROC glad_glGetSynciv; -PFNGLTEXCOORDP2UIVPROC glad_glTexCoordP2uiv; -PFNGLBEGINQUERYPROC glad_glBeginQuery; -PFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv; -PFNGLBINDBUFFERPROC glad_glBindBuffer; -PFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv; -PFNGLUNIFORMMATRIX2X4FVPROC glad_glUniformMatrix2x4fv; -PFNGLBUFFERDATAPROC glad_glBufferData; -PFNGLGETTEXPARAMETERIIVPROC glad_glGetTexParameterIiv; -PFNGLTEXCOORDP1UIPROC glad_glTexCoordP1ui; -PFNGLGETERRORPROC glad_glGetError; -PFNGLVERTEXATTRIBP2UIPROC glad_glVertexAttribP2ui; -PFNGLGETFLOATVPROC glad_glGetFloatv; -PFNGLTEXSUBIMAGE1DPROC glad_glTexSubImage1D; -PFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv; -PFNGLGETTEXLEVELPARAMETERFVPROC glad_glGetTexLevelParameterfv; -PFNGLVERTEXATTRIBI1IPROC glad_glVertexAttribI1i; -PFNGLVERTEXATTRIBP3UIVPROC glad_glVertexAttribP3uiv; -PFNGLSECONDARYCOLORP3UIVPROC glad_glSecondaryColorP3uiv; -PFNGLGETINTEGERVPROC glad_glGetIntegerv; -PFNGLGETBUFFERPOINTERVPROC glad_glGetBufferPointerv; -PFNGLFRAMEBUFFERTEXTURE3DPROC glad_glFramebufferTexture3D; -PFNGLISQUERYPROC glad_glIsQuery; -PFNGLVERTEXATTRIB4SVPROC glad_glVertexAttrib4sv; -PFNGLTEXIMAGE2DPROC glad_glTexImage2D; -PFNGLSTENCILMASKPROC glad_glStencilMask; -PFNGLSAMPLERPARAMETERFVPROC glad_glSamplerParameterfv; -PFNGLISTEXTUREPROC glad_glIsTexture; -PFNGLUNIFORM1FVPROC glad_glUniform1fv; -PFNGLVERTEXATTRIB4NUBVPROC glad_glVertexAttrib4Nubv; -PFNGLTEXPARAMETERFVPROC glad_glTexParameterfv; -PFNGLGETSAMPLERPARAMETERIVPROC glad_glGetSamplerParameteriv; -PFNGLCOPYBUFFERSUBDATAPROC glad_glCopyBufferSubData; -PFNGLVERTEXATTRIBI1UIVPROC glad_glVertexAttribI1uiv; -PFNGLVERTEXATTRIB2DPROC glad_glVertexAttrib2d; -PFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f; -PFNGLVERTEXATTRIB3DVPROC glad_glVertexAttrib3dv; -PFNGLGETQUERYOBJECTUI64VPROC glad_glGetQueryObjectui64v; -PFNGLDEPTHMASKPROC glad_glDepthMask; -PFNGLVERTEXATTRIB2SPROC glad_glVertexAttrib2s; -PFNGLTEXIMAGE3DMULTISAMPLEPROC glad_glTexImage3DMultisample; -PFNGLGETUNIFORMBLOCKINDEXPROC glad_glGetUniformBlockIndex; -PFNGLTEXIMAGE2DMULTISAMPLEPROC glad_glTexImage2DMultisample; -PFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform; -PFNGLFRONTFACEPROC glad_glFrontFace; -int GLAD_GL_SGIX_pixel_tiles; -int GLAD_GL_NV_point_sprite; -int GLAD_GL_APPLE_element_array; -int GLAD_GL_AMD_multi_draw_indirect; -int GLAD_GL_EXT_blend_subtract; -int GLAD_GL_SGIX_tag_sample_buffer; -int GLAD_GL_IBM_texture_mirrored_repeat; -int GLAD_GL_APPLE_transform_hint; -int GLAD_GL_ATI_separate_stencil; -int GLAD_GL_NV_shader_atomic_int64; -int GLAD_GL_NV_vertex_program2_option; -int GLAD_GL_EXT_texture_buffer_object; -int GLAD_GL_ARB_vertex_blend; -int GLAD_GL_OVR_multiview; -int GLAD_GL_ARB_program_interface_query; -int GLAD_GL_EXT_misc_attribute; -int GLAD_GL_NV_multisample_coverage; -int GLAD_GL_ARB_shading_language_packing; -int GLAD_GL_EXT_texture_cube_map; -int GLAD_GL_NV_viewport_array2; -int GLAD_GL_KHR_robustness; -int GLAD_GL_EXT_index_func; -int GLAD_GL_OES_compressed_paletted_texture; -int GLAD_GL_NV_depth_clamp; -int GLAD_GL_NV_shader_buffer_load; -int GLAD_GL_EXT_color_subtable; -int GLAD_GL_SUNX_constant_data; -int GLAD_GL_EXT_multi_draw_arrays; -int GLAD_GL_ARB_shader_atomic_counters; -int GLAD_GL_ARB_arrays_of_arrays; -int GLAD_GL_NV_conditional_render; -int GLAD_GL_EXT_texture_env_combine; -int GLAD_GL_AMD_depth_clamp_separate; -int GLAD_GL_SGIX_async_histogram; -int GLAD_GL_MESA_resize_buffers; -int GLAD_GL_ARB_sample_shading; -int GLAD_GL_NV_texture_env_combine4; -int GLAD_GL_ARB_texture_view; -int GLAD_GL_ARB_texture_env_combine; -int GLAD_GL_ARB_map_buffer_range; -int GLAD_GL_EXT_convolution; -int GLAD_GL_NV_compute_program5; -int GLAD_GL_EXT_paletted_texture; -int GLAD_GL_ARB_texture_buffer_object; -int GLAD_GL_SUN_triangle_list; -int GLAD_GL_SGIX_resample; -int GLAD_GL_SGIX_flush_raster; -int GLAD_GL_EXT_light_texture; -int GLAD_GL_ARB_point_sprite; -int GLAD_GL_ARB_sparse_texture2; -int GLAD_GL_ARB_half_float_pixel; -int GLAD_GL_NV_tessellation_program5; -int GLAD_GL_REND_screen_coordinates; -int GLAD_GL_HP_image_transform; -int GLAD_GL_EXT_packed_float; -int GLAD_GL_ATI_vertex_attrib_array_object; -int GLAD_GL_SGIX_vertex_preclip; -int GLAD_GL_SGIX_texture_scale_bias; -int GLAD_GL_AMD_draw_buffers_blend; -int GLAD_GL_APPLE_texture_range; -int GLAD_GL_SGIX_framezoom; -int GLAD_GL_NV_texture_barrier; -int GLAD_GL_ARB_texture_query_levels; -int GLAD_GL_EXT_blend_logic_op; -int GLAD_GL_EXT_texture_swizzle; -int GLAD_GL_ARB_texture_rg; -int GLAD_GL_ARB_vertex_type_2_10_10_10_rev; -int GLAD_GL_ARB_fragment_shader; -int GLAD_GL_3DFX_tbuffer; -int GLAD_GL_SGIX_ycrcb; -int GLAD_GL_IBM_cull_vertex; -int GLAD_GL_EXT_separate_shader_objects; -int GLAD_GL_NV_texture_multisample; -int GLAD_GL_ARB_shader_objects; -int GLAD_GL_ARB_framebuffer_object; -int GLAD_GL_ATI_envmap_bumpmap; -int GLAD_GL_ARB_robust_buffer_access_behavior; -int GLAD_GL_ARB_shader_stencil_export; -int GLAD_GL_AMD_sample_positions; -int GLAD_GL_ARB_enhanced_layouts; -int GLAD_GL_ARB_texture_rectangle; -int GLAD_GL_SGI_texture_color_table; -int GLAD_GL_ATI_map_object_buffer; -int GLAD_GL_ARB_robustness; -int GLAD_GL_NV_pixel_data_range; -int GLAD_GL_EXT_framebuffer_blit; -int GLAD_GL_ARB_gpu_shader_fp64; -int GLAD_GL_NV_command_list; -int GLAD_GL_ARB_window_pos; -int GLAD_GL_ARB_robustness_isolation; -int GLAD_GL_GREMEDY_string_marker; -int GLAD_GL_ARB_texture_compression_bptc; -int GLAD_GL_EXT_subtexture; -int GLAD_GL_EXT_pixel_transform_color_table; -int GLAD_GL_EXT_texture_compression_rgtc; -int GLAD_GL_ARB_shadow; -int GLAD_GL_SGIX_depth_pass_instrument; -int GLAD_GL_NVX_conditional_render; -int GLAD_GL_NV_evaluators; -int GLAD_GL_SGIS_texture_filter4; -int GLAD_GL_AMD_performance_monitor; -int GLAD_GL_NV_geometry_shader4; -int GLAD_GL_EXT_stencil_clear_tag; -int GLAD_GL_NV_vertex_program1_1; -int GLAD_GL_NV_present_video; -int GLAD_GL_ARB_texture_compression_rgtc; -int GLAD_GL_ARB_texture_filter_minmax; -int GLAD_GL_HP_convolution_border_modes; -int GLAD_GL_EXT_gpu_program_parameters; -int GLAD_GL_SGIX_list_priority; -int GLAD_GL_ARB_stencil_texturing; -int GLAD_GL_ARB_shader_clock; -int GLAD_GL_NV_shader_atomic_fp16_vector; -int GLAD_GL_SGIX_fog_offset; -int GLAD_GL_ARB_draw_elements_base_vertex; -int GLAD_GL_INGR_interlace_read; -int GLAD_GL_NV_transform_feedback; -int GLAD_GL_EXT_post_depth_coverage; -int GLAD_GL_ARB_debug_output; -int GLAD_GL_AMD_stencil_operation_extended; -int GLAD_GL_ARB_compatibility; -int GLAD_GL_ARB_instanced_arrays; -int GLAD_GL_ARB_get_texture_sub_image; -int GLAD_GL_NV_vertex_array_range2; -int GLAD_GL_ARB_texture_stencil8; -int GLAD_GL_AMD_sparse_texture; -int GLAD_GL_ARB_clip_control; -int GLAD_GL_NV_fragment_coverage_to_color; -int GLAD_GL_NV_fence; -int GLAD_GL_ARB_texture_buffer_range; -int GLAD_GL_SUN_mesh_array; -int GLAD_GL_ARB_vertex_attrib_binding; -int GLAD_GL_EXT_texture_compression_s3tc; -int GLAD_GL_ARB_cl_event; -int GLAD_GL_ARB_derivative_control; -int GLAD_GL_NV_packed_depth_stencil; -int GLAD_GL_OES_single_precision; -int GLAD_GL_NV_primitive_restart; -int GLAD_GL_ARB_fragment_shader_interlock; -int GLAD_GL_EXT_texture_object; -int GLAD_GL_AMD_name_gen_delete; -int GLAD_GL_NV_texture_compression_vtc; -int GLAD_GL_NV_sample_mask_override_coverage; -int GLAD_GL_NV_texture_shader3; -int GLAD_GL_NV_texture_shader2; -int GLAD_GL_EXT_texture; -int GLAD_GL_ARB_buffer_storage; -int GLAD_GL_AMD_shader_atomic_counter_ops; -int GLAD_GL_APPLE_vertex_program_evaluators; -int GLAD_GL_ARB_multi_bind; -int GLAD_GL_ARB_explicit_uniform_location; -int GLAD_GL_ARB_depth_buffer_float; -int GLAD_GL_NV_path_rendering_shared_edge; -int GLAD_GL_SGIX_shadow_ambient; -int GLAD_GL_ARB_texture_cube_map; -int GLAD_GL_AMD_vertex_shader_viewport_index; -int GLAD_GL_EXT_shader_integer_mix; -int GLAD_GL_NV_vertex_buffer_unified_memory; -int GLAD_GL_EXT_fog_coord; -int GLAD_GL_EXT_texture_env_dot3; -int GLAD_GL_ATI_texture_env_combine3; -int GLAD_GL_ARB_map_buffer_alignment; -int GLAD_GL_NV_blend_equation_advanced; -int GLAD_GL_SGIS_sharpen_texture; -int GLAD_GL_KHR_robust_buffer_access_behavior; -int GLAD_GL_ARB_pipeline_statistics_query; -int GLAD_GL_ARB_vertex_program; -int GLAD_GL_ARB_texture_rgb10_a2ui; -int GLAD_GL_OML_interlace; -int GLAD_GL_ATI_pixel_format_float; -int GLAD_GL_ARB_vertex_buffer_object; -int GLAD_GL_EXT_shadow_funcs; -int GLAD_GL_ATI_text_fragment_shader; -int GLAD_GL_NV_vertex_array_range; -int GLAD_GL_SGIX_fragment_lighting; -int GLAD_GL_NV_texture_expand_normal; -int GLAD_GL_NV_framebuffer_multisample_coverage; -int GLAD_GL_ARB_framebuffer_no_attachments; -int GLAD_GL_EXT_timer_query; -int GLAD_GL_EXT_vertex_array_bgra; -int GLAD_GL_NV_bindless_texture; -int GLAD_GL_KHR_debug; -int GLAD_GL_SGIS_texture_border_clamp; -int GLAD_GL_OML_subsample; -int GLAD_GL_SGIX_clipmap; -int GLAD_GL_EXT_geometry_shader4; -int GLAD_GL_ARB_shader_texture_image_samples; -int GLAD_GL_MESA_ycbcr_texture; -int GLAD_GL_MESAX_texture_stack; -int GLAD_GL_AMD_seamless_cubemap_per_texture; -int GLAD_GL_EXT_bindable_uniform; -int GLAD_GL_KHR_texture_compression_astc_hdr; -int GLAD_GL_ARB_shader_ballot; -int GLAD_GL_KHR_blend_equation_advanced; -int GLAD_GL_ARB_fragment_program_shadow; -int GLAD_GL_ATI_element_array; -int GLAD_GL_ARB_sparse_texture_clamp; -int GLAD_GL_AMD_texture_texture4; -int GLAD_GL_SGIX_reference_plane; -int GLAD_GL_EXT_stencil_two_side; -int GLAD_GL_ARB_transform_feedback_overflow_query; -int GLAD_GL_SGIX_texture_lod_bias; -int GLAD_GL_KHR_no_error; -int GLAD_GL_NV_explicit_multisample; -int GLAD_GL_IBM_static_data; -int GLAD_GL_EXT_clip_volume_hint; -int GLAD_GL_EXT_texture_perturb_normal; -int GLAD_GL_NV_fragment_program2; -int GLAD_GL_NV_fragment_program4; -int GLAD_GL_EXT_point_parameters; -int GLAD_GL_PGI_misc_hints; -int GLAD_GL_SGIX_subsample; -int GLAD_GL_AMD_shader_stencil_export; -int GLAD_GL_ARB_shader_texture_lod; -int GLAD_GL_ARB_vertex_shader; -int GLAD_GL_ARB_depth_clamp; -int GLAD_GL_SGIS_texture_select; -int GLAD_GL_NV_texture_shader; -int GLAD_GL_ARB_tessellation_shader; -int GLAD_GL_EXT_draw_buffers2; -int GLAD_GL_ARB_vertex_attrib_64bit; -int GLAD_GL_EXT_texture_filter_minmax; -int GLAD_GL_ARB_texture_gather; -int GLAD_GL_AMD_interleaved_elements; -int GLAD_GL_ARB_fragment_program; -int GLAD_GL_OML_resample; -int GLAD_GL_APPLE_ycbcr_422; -int GLAD_GL_SGIX_texture_add_env; -int GLAD_GL_ARB_shadow_ambient; -int GLAD_GL_ARB_texture_storage; -int GLAD_GL_EXT_pixel_buffer_object; -int GLAD_GL_NV_vertex_program; -int GLAD_GL_SGIS_pixel_texture; -int GLAD_GL_SGIS_generate_mipmap; -int GLAD_GL_SGIX_instruments; -int GLAD_GL_ARB_fragment_layer_viewport; -int GLAD_GL_ARB_shader_storage_buffer_object; -int GLAD_GL_EXT_sparse_texture2; -int GLAD_GL_EXT_blend_minmax; -int GLAD_GL_MESA_pack_invert; -int GLAD_GL_ARB_base_instance; -int GLAD_GL_SUN_global_alpha; -int GLAD_GL_PGI_vertex_hints; -int GLAD_GL_AMD_transform_feedback4; -int GLAD_GL_ARB_ES3_1_compatibility; -int GLAD_GL_EXT_texture_integer; -int GLAD_GL_ARB_texture_multisample; -int GLAD_GL_AMD_gpu_shader_int64; -int GLAD_GL_S3_s3tc; -int GLAD_GL_ARB_query_buffer_object; -int GLAD_GL_AMD_vertex_shader_tessellator; -int GLAD_GL_ARB_invalidate_subdata; -int GLAD_GL_ARB_draw_indirect; -int GLAD_GL_ARB_transform_feedback2; -int GLAD_GL_EXT_index_material; -int GLAD_GL_NV_blend_equation_advanced_coherent; -int GLAD_GL_ARB_texture_non_power_of_two; -int GLAD_GL_KHR_texture_compression_astc_sliced_3d; -int GLAD_GL_ATI_draw_buffers; -int GLAD_GL_EXT_cmyka; -int GLAD_GL_SGIX_pixel_texture; -int GLAD_GL_APPLE_specular_vector; -int GLAD_GL_ARB_seamless_cubemap_per_texture; -int GLAD_GL_ARB_conservative_depth; -int GLAD_GL_SGIX_interlace; -int GLAD_GL_NV_parameter_buffer_object; -int GLAD_GL_AMD_shader_trinary_minmax; -int GLAD_GL_EXT_texture_lod_bias; -int GLAD_GL_EXT_rescale_normal; -int GLAD_GL_ARB_pixel_buffer_object; -int GLAD_GL_ARB_uniform_buffer_object; -int GLAD_GL_ARB_vertex_type_10f_11f_11f_rev; -int GLAD_GL_ARB_texture_swizzle; -int GLAD_GL_ARB_texture_compression; -int GLAD_GL_SGIX_async_pixel; -int GLAD_GL_NV_fragment_program_option; -int GLAD_GL_ARB_explicit_attrib_location; -int GLAD_GL_EXT_blend_color; -int GLAD_GL_NV_shader_thread_group; -int GLAD_GL_EXT_stencil_wrap; -int GLAD_GL_EXT_index_array_formats; -int GLAD_GL_OVR_multiview2; -int GLAD_GL_EXT_histogram; -int GLAD_GL_EXT_polygon_offset; -int GLAD_GL_SGIS_point_parameters; -int GLAD_GL_EXT_direct_state_access; -int GLAD_GL_ARB_shader_group_vote; -int GLAD_GL_NV_texture_rectangle; -int GLAD_GL_ARB_copy_image; -int GLAD_GL_NV_shader_thread_shuffle; -int GLAD_GL_ARB_shader_precision; -int GLAD_GL_EXT_vertex_shader; -int GLAD_GL_EXT_blend_func_separate; -int GLAD_GL_APPLE_fence; -int GLAD_GL_OES_byte_coordinates; -int GLAD_GL_ARB_transpose_matrix; -int GLAD_GL_ARB_provoking_vertex; -int GLAD_GL_NV_uniform_buffer_unified_memory; -int GLAD_GL_NV_fragment_shader_interlock; -int GLAD_GL_EXT_vertex_array; -int GLAD_GL_ARB_half_float_vertex; -int GLAD_GL_EXT_blend_equation_separate; -int GLAD_GL_NV_framebuffer_mixed_samples; -int GLAD_GL_ARB_multi_draw_indirect; -int GLAD_GL_EXT_raster_multisample; -int GLAD_GL_NV_copy_image; -int GLAD_GL_NV_geometry_shader_passthrough; -int GLAD_GL_INTEL_framebuffer_CMAA; -int GLAD_GL_SGIX_convolution_accuracy; -int GLAD_GL_ARB_transform_feedback3; -int GLAD_GL_SGIX_ycrcba; -int GLAD_GL_EXT_debug_marker; -int GLAD_GL_EXT_bgra; -int GLAD_GL_INTEL_parallel_arrays; -int GLAD_GL_EXT_pixel_transform; -int GLAD_GL_NV_vertex_attrib_integer_64bit; -int GLAD_GL_ATI_fragment_shader; -int GLAD_GL_ARB_vertex_array_object; -int GLAD_GL_ATI_pn_triangles; -int GLAD_GL_EXT_texture_env_add; -int GLAD_GL_EXT_packed_depth_stencil; -int GLAD_GL_EXT_texture_mirror_clamp; -int GLAD_GL_NV_multisample_filter_hint; -int GLAD_GL_INTEL_performance_query; -int GLAD_GL_ARB_transform_feedback_instanced; -int GLAD_GL_SGIX_async; -int GLAD_GL_EXT_texture_compression_latc; -int GLAD_GL_NV_shader_atomic_float; -int GLAD_GL_ARB_shading_language_100; -int GLAD_GL_APPLE_float_pixels; -int GLAD_GL_ARB_texture_mirror_clamp_to_edge; -int GLAD_GL_NV_vertex_program2; -int GLAD_GL_NV_bindless_multi_draw_indirect_count; -int GLAD_GL_ARB_depth_texture; -int GLAD_GL_ARB_ES2_compatibility; -int GLAD_GL_ARB_indirect_parameters; -int GLAD_GL_NV_half_float; -int GLAD_GL_ARB_ES3_2_compatibility; -int GLAD_GL_ATI_texture_mirror_once; -int GLAD_GL_IBM_rasterpos_clip; -int GLAD_GL_SGIX_shadow; -int GLAD_GL_EXT_polygon_offset_clamp; -int GLAD_GL_NV_deep_texture3D; -int GLAD_GL_ARB_shader_draw_parameters; -int GLAD_GL_SGIX_calligraphic_fragment; -int GLAD_GL_ARB_shader_bit_encoding; -int GLAD_GL_EXT_compiled_vertex_array; -int GLAD_GL_NV_depth_buffer_float; -int GLAD_GL_APPLE_flush_buffer_range; -int GLAD_GL_ARB_imaging; -int GLAD_GL_ARB_draw_buffers_blend; -int GLAD_GL_AMD_gcn_shader; -int GLAD_GL_AMD_blend_minmax_factor; -int GLAD_GL_EXT_texture_sRGB_decode; -int GLAD_GL_ARB_shading_language_420pack; -int GLAD_GL_ARB_shader_viewport_layer_array; -int GLAD_GL_ATI_meminfo; -int GLAD_GL_EXT_abgr; -int GLAD_GL_AMD_pinned_memory; -int GLAD_GL_EXT_texture_snorm; -int GLAD_GL_SGIX_texture_coordinate_clamp; -int GLAD_GL_ARB_clear_buffer_object; -int GLAD_GL_ARB_multisample; -int GLAD_GL_EXT_debug_label; -int GLAD_GL_NV_light_max_exponent; -int GLAD_GL_NV_internalformat_sample_query; -int GLAD_GL_INTEL_map_texture; -int GLAD_GL_ARB_texture_env_crossbar; -int GLAD_GL_EXT_422_pixels; -int GLAD_GL_ARB_compute_shader; -int GLAD_GL_NV_texgen_emboss; -int GLAD_GL_ARB_blend_func_extended; -int GLAD_GL_IBM_vertex_array_lists; -int GLAD_GL_ARB_color_buffer_float; -int GLAD_GL_ARB_bindless_texture; -int GLAD_GL_SGIX_depth_texture; -int GLAD_GL_ARB_internalformat_query; -int GLAD_GL_ARB_shader_atomic_counter_ops; -int GLAD_GL_ARB_texture_mirrored_repeat; -int GLAD_GL_EXT_shader_image_load_store; -int GLAD_GL_EXT_copy_texture; -int GLAD_GL_NV_register_combiners2; -int GLAD_GL_SGIX_ycrcb_subsample; -int GLAD_GL_ARB_copy_buffer; -int GLAD_GL_NV_draw_texture; -int GLAD_GL_EXT_texture_shared_exponent; -int GLAD_GL_EXT_draw_instanced; -int GLAD_GL_NV_copy_depth_to_color; -int GLAD_GL_ARB_viewport_array; -int GLAD_GL_ARB_separate_shader_objects; -int GLAD_GL_EXT_multisample; -int GLAD_GL_EXT_depth_bounds_test; -int GLAD_GL_EXT_shared_texture_palette; -int GLAD_GL_ARB_texture_env_add; -int GLAD_GL_NV_video_capture; -int GLAD_GL_ARB_sampler_objects; -int GLAD_GL_ARB_matrix_palette; -int GLAD_GL_SGIS_texture_color_mask; -int GLAD_GL_EXT_packed_pixels; -int GLAD_GL_EXT_coordinate_frame; -int GLAD_GL_NV_transform_feedback2; -int GLAD_GL_APPLE_aux_depth_stencil; -int GLAD_GL_ARB_shader_subroutine; -int GLAD_GL_EXT_framebuffer_sRGB; -int GLAD_GL_ARB_texture_storage_multisample; -int GLAD_GL_KHR_blend_equation_advanced_coherent; -int GLAD_GL_EXT_vertex_attrib_64bit; -int GLAD_GL_HP_texture_lighting; -int GLAD_GL_NV_shader_buffer_store; -int GLAD_GL_OES_query_matrix; -int GLAD_GL_MESA_window_pos; -int GLAD_GL_NV_fill_rectangle; -int GLAD_GL_NV_shader_storage_buffer_object; -int GLAD_GL_ARB_texture_query_lod; -int GLAD_GL_SGIX_ir_instrument1; -int GLAD_GL_ARB_shader_image_size; -int GLAD_GL_NV_shader_atomic_counters; -int GLAD_GL_APPLE_object_purgeable; -int GLAD_GL_ARB_occlusion_query; -int GLAD_GL_INGR_color_clamp; -int GLAD_GL_SGI_color_table; -int GLAD_GL_EXT_framebuffer_multisample_blit_scaled; -int GLAD_GL_ARB_texture_cube_map_array; -int GLAD_GL_AMD_debug_output; -int GLAD_GL_EXT_gpu_shader4; -int GLAD_GL_NV_geometry_program4; -int GLAD_GL_NV_gpu_program5_mem_extended; -int GLAD_GL_SGIX_scalebias_hint; -int GLAD_GL_ARB_texture_border_clamp; -int GLAD_GL_ARB_fragment_coord_conventions; -int GLAD_GL_SGIX_polynomial_ffd; -int GLAD_GL_EXT_provoking_vertex; -int GLAD_GL_ARB_point_parameters; -int GLAD_GL_ARB_shader_image_load_store; -int GLAD_GL_ARB_conditional_render_inverted; -int GLAD_GL_HP_occlusion_test; -int GLAD_GL_ARB_ES3_compatibility; -int GLAD_GL_EXT_texture_array; -int GLAD_GL_ARB_texture_buffer_object_rgb32; -int GLAD_GL_NV_bindless_multi_draw_indirect; -int GLAD_GL_SGIX_texture_multi_buffer; -int GLAD_GL_EXT_transform_feedback; -int GLAD_GL_KHR_texture_compression_astc_ldr; -int GLAD_GL_3DFX_multisample; -int GLAD_GL_INTEL_fragment_shader_ordering; -int GLAD_GL_ARB_texture_env_dot3; -int GLAD_GL_NV_gpu_program4; -int GLAD_GL_NV_gpu_program5; -int GLAD_GL_NV_float_buffer; -int GLAD_GL_SGIS_texture_edge_clamp; -int GLAD_GL_ARB_framebuffer_sRGB; -int GLAD_GL_SUN_slice_accum; -int GLAD_GL_EXT_index_texture; -int GLAD_GL_EXT_shader_image_load_formatted; -int GLAD_GL_ARB_geometry_shader4; -int GLAD_GL_EXT_separate_specular_color; -int GLAD_GL_NV_fog_distance; -int GLAD_GL_NV_conservative_raster; -int GLAD_GL_SUN_convolution_border_modes; -int GLAD_GL_SGIX_sprite; -int GLAD_GL_ARB_get_program_binary; -int GLAD_GL_ARB_timer_query; -int GLAD_GL_AMD_occlusion_query_event; -int GLAD_GL_SGIS_multisample; -int GLAD_GL_EXT_framebuffer_object; -int GLAD_GL_EXT_vertex_weighting; -int GLAD_GL_ARB_vertex_array_bgra; -int GLAD_GL_APPLE_vertex_array_range; -int GLAD_GL_AMD_query_buffer_object; -int GLAD_GL_NV_register_combiners; -int GLAD_GL_ARB_draw_buffers; -int GLAD_GL_ARB_clear_texture; -int GLAD_GL_NV_fragment_program; -int GLAD_GL_SGI_color_matrix; -int GLAD_GL_EXT_cull_vertex; -int GLAD_GL_EXT_texture_sRGB; -int GLAD_GL_APPLE_row_bytes; -int GLAD_GL_NV_texgen_reflection; -int GLAD_GL_IBM_multimode_draw_arrays; -int GLAD_GL_APPLE_vertex_array_object; -int GLAD_GL_3DFX_texture_compression_FXT1; -int GLAD_GL_GREMEDY_frame_terminator; -int GLAD_GL_AMD_conservative_depth; -int GLAD_GL_ARB_texture_float; -int GLAD_GL_ARB_compressed_texture_pixel_storage; -int GLAD_GL_SGIS_detail_texture; -int GLAD_GL_ARB_draw_instanced; -int GLAD_GL_OES_read_format; -int GLAD_GL_ATI_texture_float; -int GLAD_GL_WIN_specular_fog; -int GLAD_GL_AMD_vertex_shader_layer; -int GLAD_GL_ARB_shading_language_include; -int GLAD_GL_APPLE_client_storage; -int GLAD_GL_WIN_phong_shading; -int GLAD_GL_INGR_blend_func_separate; -int GLAD_GL_NV_path_rendering; -int GLAD_GL_NV_conservative_raster_dilate; -int GLAD_GL_ARB_texture_barrier; -int GLAD_GL_ATI_vertex_streams; -int GLAD_GL_ARB_post_depth_coverage; -int GLAD_GL_NV_occlusion_query; -int GLAD_GL_APPLE_rgb_422; -int GLAD_GL_ARB_direct_state_access; -int GLAD_GL_ARB_gpu_shader_int64; -int GLAD_GL_ARB_seamless_cube_map; -int GLAD_GL_ARB_cull_distance; -int GLAD_GL_NV_vdpau_interop; -int GLAD_GL_ARB_occlusion_query2; -int GLAD_GL_ARB_internalformat_query2; -int GLAD_GL_EXT_texture_filter_anisotropic; -int GLAD_GL_SUN_vertex; -int GLAD_GL_ARB_sparse_texture; -int GLAD_GL_SGIS_texture_lod; -int GLAD_GL_NV_vertex_program3; -int GLAD_GL_NV_gpu_shader5; -int GLAD_GL_NV_vertex_program4; -int GLAD_GL_AMD_transform_feedback3_lines_triangles; -int GLAD_GL_SGIS_fog_function; -int GLAD_GL_EXT_x11_sync_object; -int GLAD_GL_ARB_sync; -int GLAD_GL_NV_sample_locations; -int GLAD_GL_ARB_compute_variable_group_size; -int GLAD_GL_OES_fixed_point; -int GLAD_GL_NV_blend_square; -int GLAD_GL_EXT_framebuffer_multisample; -int GLAD_GL_ARB_gpu_shader5; -int GLAD_GL_SGIS_texture4D; -int GLAD_GL_EXT_texture3D; -int GLAD_GL_ARB_multitexture; -int GLAD_GL_EXT_secondary_color; -int GLAD_GL_NV_parameter_buffer_object2; -int GLAD_GL_ATI_vertex_array_object; -int GLAD_GL_ARB_parallel_shader_compile; -int GLAD_GL_NVX_gpu_memory_info; -int GLAD_GL_SGIX_igloo_interface; -int GLAD_GL_SGIS_point_line_texgen; -int GLAD_GL_ARB_sample_locations; -int GLAD_GL_ARB_sparse_buffer; -int GLAD_GL_EXT_draw_range_elements; -int GLAD_GL_SGIX_blend_alpha_minmax; -int GLAD_GL_KHR_context_flush_control; -PFNGLELEMENTPOINTERAPPLEPROC glad_glElementPointerAPPLE; -PFNGLDRAWELEMENTARRAYAPPLEPROC glad_glDrawElementArrayAPPLE; -PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC glad_glDrawRangeElementArrayAPPLE; -PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC glad_glMultiDrawElementArrayAPPLE; -PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC glad_glMultiDrawRangeElementArrayAPPLE; -PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC glad_glMultiDrawArraysIndirectAMD; -PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC glad_glMultiDrawElementsIndirectAMD; -PFNGLTAGSAMPLEBUFFERSGIXPROC glad_glTagSampleBufferSGIX; -PFNGLPOINTPARAMETERINVPROC glad_glPointParameteriNV; -PFNGLPOINTPARAMETERIVNVPROC glad_glPointParameterivNV; -PFNGLSTENCILOPSEPARATEATIPROC glad_glStencilOpSeparateATI; -PFNGLSTENCILFUNCSEPARATEATIPROC glad_glStencilFuncSeparateATI; -PFNGLTEXBUFFEREXTPROC glad_glTexBufferEXT; -PFNGLWEIGHTBVARBPROC glad_glWeightbvARB; -PFNGLWEIGHTSVARBPROC glad_glWeightsvARB; -PFNGLWEIGHTIVARBPROC glad_glWeightivARB; -PFNGLWEIGHTFVARBPROC glad_glWeightfvARB; -PFNGLWEIGHTDVARBPROC glad_glWeightdvARB; -PFNGLWEIGHTUBVARBPROC glad_glWeightubvARB; -PFNGLWEIGHTUSVARBPROC glad_glWeightusvARB; -PFNGLWEIGHTUIVARBPROC glad_glWeightuivARB; -PFNGLWEIGHTPOINTERARBPROC glad_glWeightPointerARB; -PFNGLVERTEXBLENDARBPROC glad_glVertexBlendARB; -PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC glad_glFramebufferTextureMultiviewOVR; -PFNGLGETPROGRAMINTERFACEIVPROC glad_glGetProgramInterfaceiv; -PFNGLGETPROGRAMRESOURCEINDEXPROC glad_glGetProgramResourceIndex; -PFNGLGETPROGRAMRESOURCENAMEPROC glad_glGetProgramResourceName; -PFNGLGETPROGRAMRESOURCEIVPROC glad_glGetProgramResourceiv; -PFNGLGETPROGRAMRESOURCELOCATIONPROC glad_glGetProgramResourceLocation; -PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC glad_glGetProgramResourceLocationIndex; -PFNGLINDEXFUNCEXTPROC glad_glIndexFuncEXT; -PFNGLMAKEBUFFERRESIDENTNVPROC glad_glMakeBufferResidentNV; -PFNGLMAKEBUFFERNONRESIDENTNVPROC glad_glMakeBufferNonResidentNV; -PFNGLISBUFFERRESIDENTNVPROC glad_glIsBufferResidentNV; -PFNGLMAKENAMEDBUFFERRESIDENTNVPROC glad_glMakeNamedBufferResidentNV; -PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC glad_glMakeNamedBufferNonResidentNV; -PFNGLISNAMEDBUFFERRESIDENTNVPROC glad_glIsNamedBufferResidentNV; -PFNGLGETBUFFERPARAMETERUI64VNVPROC glad_glGetBufferParameterui64vNV; -PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC glad_glGetNamedBufferParameterui64vNV; -PFNGLGETINTEGERUI64VNVPROC glad_glGetIntegerui64vNV; -PFNGLUNIFORMUI64NVPROC glad_glUniformui64NV; -PFNGLUNIFORMUI64VNVPROC glad_glUniformui64vNV; -PFNGLGETUNIFORMUI64VNVPROC glad_glGetUniformui64vNV; -PFNGLPROGRAMUNIFORMUI64NVPROC glad_glProgramUniformui64NV; -PFNGLPROGRAMUNIFORMUI64VNVPROC glad_glProgramUniformui64vNV; -PFNGLCOLORSUBTABLEEXTPROC glad_glColorSubTableEXT; -PFNGLCOPYCOLORSUBTABLEEXTPROC glad_glCopyColorSubTableEXT; -PFNGLFINISHTEXTURESUNXPROC glad_glFinishTextureSUNX; -PFNGLMULTIDRAWARRAYSEXTPROC glad_glMultiDrawArraysEXT; -PFNGLMULTIDRAWELEMENTSEXTPROC glad_glMultiDrawElementsEXT; -PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC glad_glGetActiveAtomicCounterBufferiv; -PFNGLBEGINCONDITIONALRENDERNVPROC glad_glBeginConditionalRenderNV; -PFNGLENDCONDITIONALRENDERNVPROC glad_glEndConditionalRenderNV; -PFNGLRESIZEBUFFERSMESAPROC glad_glResizeBuffersMESA; -PFNGLTEXTUREVIEWPROC glad_glTextureView; -PFNGLCONVOLUTIONFILTER1DEXTPROC glad_glConvolutionFilter1DEXT; -PFNGLCONVOLUTIONFILTER2DEXTPROC glad_glConvolutionFilter2DEXT; -PFNGLCONVOLUTIONPARAMETERFEXTPROC glad_glConvolutionParameterfEXT; -PFNGLCONVOLUTIONPARAMETERFVEXTPROC glad_glConvolutionParameterfvEXT; -PFNGLCONVOLUTIONPARAMETERIEXTPROC glad_glConvolutionParameteriEXT; -PFNGLCONVOLUTIONPARAMETERIVEXTPROC glad_glConvolutionParameterivEXT; -PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC glad_glCopyConvolutionFilter1DEXT; -PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC glad_glCopyConvolutionFilter2DEXT; -PFNGLGETCONVOLUTIONFILTEREXTPROC glad_glGetConvolutionFilterEXT; -PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC glad_glGetConvolutionParameterfvEXT; -PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC glad_glGetConvolutionParameterivEXT; -PFNGLGETSEPARABLEFILTEREXTPROC glad_glGetSeparableFilterEXT; -PFNGLSEPARABLEFILTER2DEXTPROC glad_glSeparableFilter2DEXT; -PFNGLVERTEXATTRIBL1I64NVPROC glad_glVertexAttribL1i64NV; -PFNGLVERTEXATTRIBL2I64NVPROC glad_glVertexAttribL2i64NV; -PFNGLVERTEXATTRIBL3I64NVPROC glad_glVertexAttribL3i64NV; -PFNGLVERTEXATTRIBL4I64NVPROC glad_glVertexAttribL4i64NV; -PFNGLVERTEXATTRIBL1I64VNVPROC glad_glVertexAttribL1i64vNV; -PFNGLVERTEXATTRIBL2I64VNVPROC glad_glVertexAttribL2i64vNV; -PFNGLVERTEXATTRIBL3I64VNVPROC glad_glVertexAttribL3i64vNV; -PFNGLVERTEXATTRIBL4I64VNVPROC glad_glVertexAttribL4i64vNV; -PFNGLVERTEXATTRIBL1UI64NVPROC glad_glVertexAttribL1ui64NV; -PFNGLVERTEXATTRIBL2UI64NVPROC glad_glVertexAttribL2ui64NV; -PFNGLVERTEXATTRIBL3UI64NVPROC glad_glVertexAttribL3ui64NV; -PFNGLVERTEXATTRIBL4UI64NVPROC glad_glVertexAttribL4ui64NV; -PFNGLVERTEXATTRIBL1UI64VNVPROC glad_glVertexAttribL1ui64vNV; -PFNGLVERTEXATTRIBL2UI64VNVPROC glad_glVertexAttribL2ui64vNV; -PFNGLVERTEXATTRIBL3UI64VNVPROC glad_glVertexAttribL3ui64vNV; -PFNGLVERTEXATTRIBL4UI64VNVPROC glad_glVertexAttribL4ui64vNV; -PFNGLGETVERTEXATTRIBLI64VNVPROC glad_glGetVertexAttribLi64vNV; -PFNGLGETVERTEXATTRIBLUI64VNVPROC glad_glGetVertexAttribLui64vNV; -PFNGLVERTEXATTRIBLFORMATNVPROC glad_glVertexAttribLFormatNV; -PFNGLCOLORTABLEEXTPROC glad_glColorTableEXT; -PFNGLGETCOLORTABLEEXTPROC glad_glGetColorTableEXT; -PFNGLGETCOLORTABLEPARAMETERIVEXTPROC glad_glGetColorTableParameterivEXT; -PFNGLGETCOLORTABLEPARAMETERFVEXTPROC glad_glGetColorTableParameterfvEXT; -PFNGLTEXBUFFERARBPROC glad_glTexBufferARB; -PFNGLPNTRIANGLESIATIPROC glad_glPNTrianglesiATI; -PFNGLPNTRIANGLESFATIPROC glad_glPNTrianglesfATI; -PFNGLFLUSHRASTERSGIXPROC glad_glFlushRasterSGIX; -PFNGLAPPLYTEXTUREEXTPROC glad_glApplyTextureEXT; -PFNGLTEXTURELIGHTEXTPROC glad_glTextureLightEXT; -PFNGLTEXTUREMATERIALEXTPROC glad_glTextureMaterialEXT; -PFNGLIMAGETRANSFORMPARAMETERIHPPROC glad_glImageTransformParameteriHP; -PFNGLIMAGETRANSFORMPARAMETERFHPPROC glad_glImageTransformParameterfHP; -PFNGLIMAGETRANSFORMPARAMETERIVHPPROC glad_glImageTransformParameterivHP; -PFNGLIMAGETRANSFORMPARAMETERFVHPPROC glad_glImageTransformParameterfvHP; -PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC glad_glGetImageTransformParameterivHP; -PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC glad_glGetImageTransformParameterfvHP; -PFNGLBLENDFUNCINDEXEDAMDPROC glad_glBlendFuncIndexedAMD; -PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC glad_glBlendFuncSeparateIndexedAMD; -PFNGLBLENDEQUATIONINDEXEDAMDPROC glad_glBlendEquationIndexedAMD; -PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC glad_glBlendEquationSeparateIndexedAMD; -PFNGLTEXTURERANGEAPPLEPROC glad_glTextureRangeAPPLE; -PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC glad_glGetTexParameterPointervAPPLE; -PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC glad_glFramebufferTextureLayerEXT; -PFNGLTEXTUREBARRIERNVPROC glad_glTextureBarrierNV; -PFNGLTBUFFERMASK3DFXPROC glad_glTbufferMask3DFX; -PFNGLFRAMETERMINATORGREMEDYPROC glad_glFrameTerminatorGREMEDY; -PFNGLUSESHADERPROGRAMEXTPROC glad_glUseShaderProgramEXT; -PFNGLACTIVEPROGRAMEXTPROC glad_glActiveProgramEXT; -PFNGLCREATESHADERPROGRAMEXTPROC glad_glCreateShaderProgramEXT; -PFNGLACTIVESHADERPROGRAMEXTPROC glad_glActiveShaderProgramEXT; -PFNGLBINDPROGRAMPIPELINEEXTPROC glad_glBindProgramPipelineEXT; -PFNGLCREATESHADERPROGRAMVEXTPROC glad_glCreateShaderProgramvEXT; -PFNGLDELETEPROGRAMPIPELINESEXTPROC glad_glDeleteProgramPipelinesEXT; -PFNGLGENPROGRAMPIPELINESEXTPROC glad_glGenProgramPipelinesEXT; -PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC glad_glGetProgramPipelineInfoLogEXT; -PFNGLGETPROGRAMPIPELINEIVEXTPROC glad_glGetProgramPipelineivEXT; -PFNGLISPROGRAMPIPELINEEXTPROC glad_glIsProgramPipelineEXT; -PFNGLPROGRAMPARAMETERIEXTPROC glad_glProgramParameteriEXT; -PFNGLPROGRAMUNIFORM1FEXTPROC glad_glProgramUniform1fEXT; -PFNGLPROGRAMUNIFORM1FVEXTPROC glad_glProgramUniform1fvEXT; -PFNGLPROGRAMUNIFORM1IEXTPROC glad_glProgramUniform1iEXT; -PFNGLPROGRAMUNIFORM1IVEXTPROC glad_glProgramUniform1ivEXT; -PFNGLPROGRAMUNIFORM2FEXTPROC glad_glProgramUniform2fEXT; -PFNGLPROGRAMUNIFORM2FVEXTPROC glad_glProgramUniform2fvEXT; -PFNGLPROGRAMUNIFORM2IEXTPROC glad_glProgramUniform2iEXT; -PFNGLPROGRAMUNIFORM2IVEXTPROC glad_glProgramUniform2ivEXT; -PFNGLPROGRAMUNIFORM3FEXTPROC glad_glProgramUniform3fEXT; -PFNGLPROGRAMUNIFORM3FVEXTPROC glad_glProgramUniform3fvEXT; -PFNGLPROGRAMUNIFORM3IEXTPROC glad_glProgramUniform3iEXT; -PFNGLPROGRAMUNIFORM3IVEXTPROC glad_glProgramUniform3ivEXT; -PFNGLPROGRAMUNIFORM4FEXTPROC glad_glProgramUniform4fEXT; -PFNGLPROGRAMUNIFORM4FVEXTPROC glad_glProgramUniform4fvEXT; -PFNGLPROGRAMUNIFORM4IEXTPROC glad_glProgramUniform4iEXT; -PFNGLPROGRAMUNIFORM4IVEXTPROC glad_glProgramUniform4ivEXT; -PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC glad_glProgramUniformMatrix2fvEXT; -PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC glad_glProgramUniformMatrix3fvEXT; -PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC glad_glProgramUniformMatrix4fvEXT; -PFNGLUSEPROGRAMSTAGESEXTPROC glad_glUseProgramStagesEXT; -PFNGLVALIDATEPROGRAMPIPELINEEXTPROC glad_glValidateProgramPipelineEXT; -PFNGLPROGRAMUNIFORM1UIEXTPROC glad_glProgramUniform1uiEXT; -PFNGLPROGRAMUNIFORM2UIEXTPROC glad_glProgramUniform2uiEXT; -PFNGLPROGRAMUNIFORM3UIEXTPROC glad_glProgramUniform3uiEXT; -PFNGLPROGRAMUNIFORM4UIEXTPROC glad_glProgramUniform4uiEXT; -PFNGLPROGRAMUNIFORM1UIVEXTPROC glad_glProgramUniform1uivEXT; -PFNGLPROGRAMUNIFORM2UIVEXTPROC glad_glProgramUniform2uivEXT; -PFNGLPROGRAMUNIFORM3UIVEXTPROC glad_glProgramUniform3uivEXT; -PFNGLPROGRAMUNIFORM4UIVEXTPROC glad_glProgramUniform4uivEXT; -PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC glad_glProgramUniformMatrix2x3fvEXT; -PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC glad_glProgramUniformMatrix3x2fvEXT; -PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC glad_glProgramUniformMatrix2x4fvEXT; -PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC glad_glProgramUniformMatrix4x2fvEXT; -PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC glad_glProgramUniformMatrix3x4fvEXT; -PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC glad_glProgramUniformMatrix4x3fvEXT; -PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC glad_glTexImage2DMultisampleCoverageNV; -PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC glad_glTexImage3DMultisampleCoverageNV; -PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC glad_glTextureImage2DMultisampleNV; -PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC glad_glTextureImage3DMultisampleNV; -PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC glad_glTextureImage2DMultisampleCoverageNV; -PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC glad_glTextureImage3DMultisampleCoverageNV; -PFNGLDELETEOBJECTARBPROC glad_glDeleteObjectARB; -PFNGLGETHANDLEARBPROC glad_glGetHandleARB; -PFNGLDETACHOBJECTARBPROC glad_glDetachObjectARB; -PFNGLCREATESHADEROBJECTARBPROC glad_glCreateShaderObjectARB; -PFNGLSHADERSOURCEARBPROC glad_glShaderSourceARB; -PFNGLCOMPILESHADERARBPROC glad_glCompileShaderARB; -PFNGLCREATEPROGRAMOBJECTARBPROC glad_glCreateProgramObjectARB; -PFNGLATTACHOBJECTARBPROC glad_glAttachObjectARB; -PFNGLLINKPROGRAMARBPROC glad_glLinkProgramARB; -PFNGLUSEPROGRAMOBJECTARBPROC glad_glUseProgramObjectARB; -PFNGLVALIDATEPROGRAMARBPROC glad_glValidateProgramARB; -PFNGLUNIFORM1FARBPROC glad_glUniform1fARB; -PFNGLUNIFORM2FARBPROC glad_glUniform2fARB; -PFNGLUNIFORM3FARBPROC glad_glUniform3fARB; -PFNGLUNIFORM4FARBPROC glad_glUniform4fARB; -PFNGLUNIFORM1IARBPROC glad_glUniform1iARB; -PFNGLUNIFORM2IARBPROC glad_glUniform2iARB; -PFNGLUNIFORM3IARBPROC glad_glUniform3iARB; -PFNGLUNIFORM4IARBPROC glad_glUniform4iARB; -PFNGLUNIFORM1FVARBPROC glad_glUniform1fvARB; -PFNGLUNIFORM2FVARBPROC glad_glUniform2fvARB; -PFNGLUNIFORM3FVARBPROC glad_glUniform3fvARB; -PFNGLUNIFORM4FVARBPROC glad_glUniform4fvARB; -PFNGLUNIFORM1IVARBPROC glad_glUniform1ivARB; -PFNGLUNIFORM2IVARBPROC glad_glUniform2ivARB; -PFNGLUNIFORM3IVARBPROC glad_glUniform3ivARB; -PFNGLUNIFORM4IVARBPROC glad_glUniform4ivARB; -PFNGLUNIFORMMATRIX2FVARBPROC glad_glUniformMatrix2fvARB; -PFNGLUNIFORMMATRIX3FVARBPROC glad_glUniformMatrix3fvARB; -PFNGLUNIFORMMATRIX4FVARBPROC glad_glUniformMatrix4fvARB; -PFNGLGETOBJECTPARAMETERFVARBPROC glad_glGetObjectParameterfvARB; -PFNGLGETOBJECTPARAMETERIVARBPROC glad_glGetObjectParameterivARB; -PFNGLGETINFOLOGARBPROC glad_glGetInfoLogARB; -PFNGLGETATTACHEDOBJECTSARBPROC glad_glGetAttachedObjectsARB; -PFNGLGETUNIFORMLOCATIONARBPROC glad_glGetUniformLocationARB; -PFNGLGETACTIVEUNIFORMARBPROC glad_glGetActiveUniformARB; -PFNGLGETUNIFORMFVARBPROC glad_glGetUniformfvARB; -PFNGLGETUNIFORMIVARBPROC glad_glGetUniformivARB; -PFNGLGETSHADERSOURCEARBPROC glad_glGetShaderSourceARB; -PFNGLTEXBUMPPARAMETERIVATIPROC glad_glTexBumpParameterivATI; -PFNGLTEXBUMPPARAMETERFVATIPROC glad_glTexBumpParameterfvATI; -PFNGLGETTEXBUMPPARAMETERIVATIPROC glad_glGetTexBumpParameterivATI; -PFNGLGETTEXBUMPPARAMETERFVATIPROC glad_glGetTexBumpParameterfvATI; -PFNGLMAPOBJECTBUFFERATIPROC glad_glMapObjectBufferATI; -PFNGLUNMAPOBJECTBUFFERATIPROC glad_glUnmapObjectBufferATI; -PFNGLGETGRAPHICSRESETSTATUSARBPROC glad_glGetGraphicsResetStatusARB; -PFNGLGETNTEXIMAGEARBPROC glad_glGetnTexImageARB; -PFNGLREADNPIXELSARBPROC glad_glReadnPixelsARB; -PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC glad_glGetnCompressedTexImageARB; -PFNGLGETNUNIFORMFVARBPROC glad_glGetnUniformfvARB; -PFNGLGETNUNIFORMIVARBPROC glad_glGetnUniformivARB; -PFNGLGETNUNIFORMUIVARBPROC glad_glGetnUniformuivARB; -PFNGLGETNUNIFORMDVARBPROC glad_glGetnUniformdvARB; -PFNGLGETNMAPDVARBPROC glad_glGetnMapdvARB; -PFNGLGETNMAPFVARBPROC glad_glGetnMapfvARB; -PFNGLGETNMAPIVARBPROC glad_glGetnMapivARB; -PFNGLGETNPIXELMAPFVARBPROC glad_glGetnPixelMapfvARB; -PFNGLGETNPIXELMAPUIVARBPROC glad_glGetnPixelMapuivARB; -PFNGLGETNPIXELMAPUSVARBPROC glad_glGetnPixelMapusvARB; -PFNGLGETNPOLYGONSTIPPLEARBPROC glad_glGetnPolygonStippleARB; -PFNGLGETNCOLORTABLEARBPROC glad_glGetnColorTableARB; -PFNGLGETNCONVOLUTIONFILTERARBPROC glad_glGetnConvolutionFilterARB; -PFNGLGETNSEPARABLEFILTERARBPROC glad_glGetnSeparableFilterARB; -PFNGLGETNHISTOGRAMARBPROC glad_glGetnHistogramARB; -PFNGLGETNMINMAXARBPROC glad_glGetnMinmaxARB; -PFNGLPIXELDATARANGENVPROC glad_glPixelDataRangeNV; -PFNGLFLUSHPIXELDATARANGENVPROC glad_glFlushPixelDataRangeNV; -PFNGLBLITFRAMEBUFFEREXTPROC glad_glBlitFramebufferEXT; -PFNGLUNIFORM1DPROC glad_glUniform1d; -PFNGLUNIFORM2DPROC glad_glUniform2d; -PFNGLUNIFORM3DPROC glad_glUniform3d; -PFNGLUNIFORM4DPROC glad_glUniform4d; -PFNGLUNIFORM1DVPROC glad_glUniform1dv; -PFNGLUNIFORM2DVPROC glad_glUniform2dv; -PFNGLUNIFORM3DVPROC glad_glUniform3dv; -PFNGLUNIFORM4DVPROC glad_glUniform4dv; -PFNGLUNIFORMMATRIX2DVPROC glad_glUniformMatrix2dv; -PFNGLUNIFORMMATRIX3DVPROC glad_glUniformMatrix3dv; -PFNGLUNIFORMMATRIX4DVPROC glad_glUniformMatrix4dv; -PFNGLUNIFORMMATRIX2X3DVPROC glad_glUniformMatrix2x3dv; -PFNGLUNIFORMMATRIX2X4DVPROC glad_glUniformMatrix2x4dv; -PFNGLUNIFORMMATRIX3X2DVPROC glad_glUniformMatrix3x2dv; -PFNGLUNIFORMMATRIX3X4DVPROC glad_glUniformMatrix3x4dv; -PFNGLUNIFORMMATRIX4X2DVPROC glad_glUniformMatrix4x2dv; -PFNGLUNIFORMMATRIX4X3DVPROC glad_glUniformMatrix4x3dv; -PFNGLGETUNIFORMDVPROC glad_glGetUniformdv; -PFNGLCREATESTATESNVPROC glad_glCreateStatesNV; -PFNGLDELETESTATESNVPROC glad_glDeleteStatesNV; -PFNGLISSTATENVPROC glad_glIsStateNV; -PFNGLSTATECAPTURENVPROC glad_glStateCaptureNV; -PFNGLGETCOMMANDHEADERNVPROC glad_glGetCommandHeaderNV; -PFNGLGETSTAGEINDEXNVPROC glad_glGetStageIndexNV; -PFNGLDRAWCOMMANDSNVPROC glad_glDrawCommandsNV; -PFNGLDRAWCOMMANDSADDRESSNVPROC glad_glDrawCommandsAddressNV; -PFNGLDRAWCOMMANDSSTATESNVPROC glad_glDrawCommandsStatesNV; -PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC glad_glDrawCommandsStatesAddressNV; -PFNGLCREATECOMMANDLISTSNVPROC glad_glCreateCommandListsNV; -PFNGLDELETECOMMANDLISTSNVPROC glad_glDeleteCommandListsNV; -PFNGLISCOMMANDLISTNVPROC glad_glIsCommandListNV; -PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC glad_glListDrawCommandsStatesClientNV; -PFNGLCOMMANDLISTSEGMENTSNVPROC glad_glCommandListSegmentsNV; -PFNGLCOMPILECOMMANDLISTNVPROC glad_glCompileCommandListNV; -PFNGLCALLCOMMANDLISTNVPROC glad_glCallCommandListNV; -PFNGLVERTEXWEIGHTFEXTPROC glad_glVertexWeightfEXT; -PFNGLVERTEXWEIGHTFVEXTPROC glad_glVertexWeightfvEXT; -PFNGLVERTEXWEIGHTPOINTEREXTPROC glad_glVertexWeightPointerEXT; -PFNGLSTRINGMARKERGREMEDYPROC glad_glStringMarkerGREMEDY; -PFNGLTEXSUBIMAGE1DEXTPROC glad_glTexSubImage1DEXT; -PFNGLTEXSUBIMAGE2DEXTPROC glad_glTexSubImage2DEXT; -PFNGLPROGRAMENVPARAMETERS4FVEXTPROC glad_glProgramEnvParameters4fvEXT; -PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC glad_glProgramLocalParameters4fvEXT; -PFNGLMAPCONTROLPOINTSNVPROC glad_glMapControlPointsNV; -PFNGLMAPPARAMETERIVNVPROC glad_glMapParameterivNV; -PFNGLMAPPARAMETERFVNVPROC glad_glMapParameterfvNV; -PFNGLGETMAPCONTROLPOINTSNVPROC glad_glGetMapControlPointsNV; -PFNGLGETMAPPARAMETERIVNVPROC glad_glGetMapParameterivNV; -PFNGLGETMAPPARAMETERFVNVPROC glad_glGetMapParameterfvNV; -PFNGLGETMAPATTRIBPARAMETERIVNVPROC glad_glGetMapAttribParameterivNV; -PFNGLGETMAPATTRIBPARAMETERFVNVPROC glad_glGetMapAttribParameterfvNV; -PFNGLEVALMAPSNVPROC glad_glEvalMapsNV; -PFNGLGETTEXFILTERFUNCSGISPROC glad_glGetTexFilterFuncSGIS; -PFNGLTEXFILTERFUNCSGISPROC glad_glTexFilterFuncSGIS; -PFNGLGETPERFMONITORGROUPSAMDPROC glad_glGetPerfMonitorGroupsAMD; -PFNGLGETPERFMONITORCOUNTERSAMDPROC glad_glGetPerfMonitorCountersAMD; -PFNGLGETPERFMONITORGROUPSTRINGAMDPROC glad_glGetPerfMonitorGroupStringAMD; -PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC glad_glGetPerfMonitorCounterStringAMD; -PFNGLGETPERFMONITORCOUNTERINFOAMDPROC glad_glGetPerfMonitorCounterInfoAMD; -PFNGLGENPERFMONITORSAMDPROC glad_glGenPerfMonitorsAMD; -PFNGLDELETEPERFMONITORSAMDPROC glad_glDeletePerfMonitorsAMD; -PFNGLSELECTPERFMONITORCOUNTERSAMDPROC glad_glSelectPerfMonitorCountersAMD; -PFNGLBEGINPERFMONITORAMDPROC glad_glBeginPerfMonitorAMD; -PFNGLENDPERFMONITORAMDPROC glad_glEndPerfMonitorAMD; -PFNGLGETPERFMONITORCOUNTERDATAAMDPROC glad_glGetPerfMonitorCounterDataAMD; -PFNGLSTENCILCLEARTAGEXTPROC glad_glStencilClearTagEXT; -PFNGLPRESENTFRAMEKEYEDNVPROC glad_glPresentFrameKeyedNV; -PFNGLPRESENTFRAMEDUALFILLNVPROC glad_glPresentFrameDualFillNV; -PFNGLGETVIDEOIVNVPROC glad_glGetVideoivNV; -PFNGLGETVIDEOUIVNVPROC glad_glGetVideouivNV; -PFNGLGETVIDEOI64VNVPROC glad_glGetVideoi64vNV; -PFNGLGETVIDEOUI64VNVPROC glad_glGetVideoui64vNV; -PFNGLFRAMEZOOMSGIXPROC glad_glFrameZoomSGIX; -PFNGLBEGINTRANSFORMFEEDBACKNVPROC glad_glBeginTransformFeedbackNV; -PFNGLENDTRANSFORMFEEDBACKNVPROC glad_glEndTransformFeedbackNV; -PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC glad_glTransformFeedbackAttribsNV; -PFNGLBINDBUFFERRANGENVPROC glad_glBindBufferRangeNV; -PFNGLBINDBUFFEROFFSETNVPROC glad_glBindBufferOffsetNV; -PFNGLBINDBUFFERBASENVPROC glad_glBindBufferBaseNV; -PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC glad_glTransformFeedbackVaryingsNV; -PFNGLACTIVEVARYINGNVPROC glad_glActiveVaryingNV; -PFNGLGETVARYINGLOCATIONNVPROC glad_glGetVaryingLocationNV; -PFNGLGETACTIVEVARYINGNVPROC glad_glGetActiveVaryingNV; -PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC glad_glGetTransformFeedbackVaryingNV; -PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC glad_glTransformFeedbackStreamAttribsNV; -PFNGLPROGRAMNAMEDPARAMETER4FNVPROC glad_glProgramNamedParameter4fNV; -PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC glad_glProgramNamedParameter4fvNV; -PFNGLPROGRAMNAMEDPARAMETER4DNVPROC glad_glProgramNamedParameter4dNV; -PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC glad_glProgramNamedParameter4dvNV; -PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC glad_glGetProgramNamedParameterfvNV; -PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC glad_glGetProgramNamedParameterdvNV; -PFNGLSTENCILOPVALUEAMDPROC glad_glStencilOpValueAMD; -PFNGLVERTEXATTRIBDIVISORARBPROC glad_glVertexAttribDivisorARB; -PFNGLPOLYGONOFFSETEXTPROC glad_glPolygonOffsetEXT; -PFNGLGETGRAPHICSRESETSTATUSPROC glad_glGetGraphicsResetStatus; -PFNGLREADNPIXELSPROC glad_glReadnPixels; -PFNGLGETNUNIFORMFVPROC glad_glGetnUniformfv; -PFNGLGETNUNIFORMIVPROC glad_glGetnUniformiv; -PFNGLGETNUNIFORMUIVPROC glad_glGetnUniformuiv; -PFNGLGETGRAPHICSRESETSTATUSKHRPROC glad_glGetGraphicsResetStatusKHR; -PFNGLREADNPIXELSKHRPROC glad_glReadnPixelsKHR; -PFNGLGETNUNIFORMFVKHRPROC glad_glGetnUniformfvKHR; -PFNGLGETNUNIFORMIVKHRPROC glad_glGetnUniformivKHR; -PFNGLGETNUNIFORMUIVKHRPROC glad_glGetnUniformuivKHR; -PFNGLTEXSTORAGESPARSEAMDPROC glad_glTexStorageSparseAMD; -PFNGLTEXTURESTORAGESPARSEAMDPROC glad_glTextureStorageSparseAMD; -PFNGLCLIPCONTROLPROC glad_glClipControl; -PFNGLFRAGMENTCOVERAGECOLORNVPROC glad_glFragmentCoverageColorNV; -PFNGLDELETEFENCESNVPROC glad_glDeleteFencesNV; -PFNGLGENFENCESNVPROC glad_glGenFencesNV; -PFNGLISFENCENVPROC glad_glIsFenceNV; -PFNGLTESTFENCENVPROC glad_glTestFenceNV; -PFNGLGETFENCEIVNVPROC glad_glGetFenceivNV; -PFNGLFINISHFENCENVPROC glad_glFinishFenceNV; -PFNGLSETFENCENVPROC glad_glSetFenceNV; -PFNGLTEXBUFFERRANGEPROC glad_glTexBufferRange; -PFNGLDRAWMESHARRAYSSUNPROC glad_glDrawMeshArraysSUN; -PFNGLBINDVERTEXBUFFERPROC glad_glBindVertexBuffer; -PFNGLVERTEXATTRIBFORMATPROC glad_glVertexAttribFormat; -PFNGLVERTEXATTRIBIFORMATPROC glad_glVertexAttribIFormat; -PFNGLVERTEXATTRIBLFORMATPROC glad_glVertexAttribLFormat; -PFNGLVERTEXATTRIBBINDINGPROC glad_glVertexAttribBinding; -PFNGLVERTEXBINDINGDIVISORPROC glad_glVertexBindingDivisor; -PFNGLFRAMEBUFFERPARAMETERIPROC glad_glFramebufferParameteri; -PFNGLGETFRAMEBUFFERPARAMETERIVPROC glad_glGetFramebufferParameteriv; -PFNGLCREATESYNCFROMCLEVENTARBPROC glad_glCreateSyncFromCLeventARB; -PFNGLCLEARDEPTHFOESPROC glad_glClearDepthfOES; -PFNGLCLIPPLANEFOESPROC glad_glClipPlanefOES; -PFNGLDEPTHRANGEFOESPROC glad_glDepthRangefOES; -PFNGLFRUSTUMFOESPROC glad_glFrustumfOES; -PFNGLGETCLIPPLANEFOESPROC glad_glGetClipPlanefOES; -PFNGLORTHOFOESPROC glad_glOrthofOES; -PFNGLPRIMITIVERESTARTNVPROC glad_glPrimitiveRestartNV; -PFNGLPRIMITIVERESTARTINDEXNVPROC glad_glPrimitiveRestartIndexNV; -PFNGLGLOBALALPHAFACTORBSUNPROC glad_glGlobalAlphaFactorbSUN; -PFNGLGLOBALALPHAFACTORSSUNPROC glad_glGlobalAlphaFactorsSUN; -PFNGLGLOBALALPHAFACTORISUNPROC glad_glGlobalAlphaFactoriSUN; -PFNGLGLOBALALPHAFACTORFSUNPROC glad_glGlobalAlphaFactorfSUN; -PFNGLGLOBALALPHAFACTORDSUNPROC glad_glGlobalAlphaFactordSUN; -PFNGLGLOBALALPHAFACTORUBSUNPROC glad_glGlobalAlphaFactorubSUN; -PFNGLGLOBALALPHAFACTORUSSUNPROC glad_glGlobalAlphaFactorusSUN; -PFNGLGLOBALALPHAFACTORUISUNPROC glad_glGlobalAlphaFactoruiSUN; -PFNGLARETEXTURESRESIDENTEXTPROC glad_glAreTexturesResidentEXT; -PFNGLBINDTEXTUREEXTPROC glad_glBindTextureEXT; -PFNGLDELETETEXTURESEXTPROC glad_glDeleteTexturesEXT; -PFNGLGENTEXTURESEXTPROC glad_glGenTexturesEXT; -PFNGLISTEXTUREEXTPROC glad_glIsTextureEXT; -PFNGLPRIORITIZETEXTURESEXTPROC glad_glPrioritizeTexturesEXT; -PFNGLGENNAMESAMDPROC glad_glGenNamesAMD; -PFNGLDELETENAMESAMDPROC glad_glDeleteNamesAMD; -PFNGLISNAMEAMDPROC glad_glIsNameAMD; -PFNGLBUFFERSTORAGEPROC glad_glBufferStorage; -PFNGLENABLEVERTEXATTRIBAPPLEPROC glad_glEnableVertexAttribAPPLE; -PFNGLDISABLEVERTEXATTRIBAPPLEPROC glad_glDisableVertexAttribAPPLE; -PFNGLISVERTEXATTRIBENABLEDAPPLEPROC glad_glIsVertexAttribEnabledAPPLE; -PFNGLMAPVERTEXATTRIB1DAPPLEPROC glad_glMapVertexAttrib1dAPPLE; -PFNGLMAPVERTEXATTRIB1FAPPLEPROC glad_glMapVertexAttrib1fAPPLE; -PFNGLMAPVERTEXATTRIB2DAPPLEPROC glad_glMapVertexAttrib2dAPPLE; -PFNGLMAPVERTEXATTRIB2FAPPLEPROC glad_glMapVertexAttrib2fAPPLE; -PFNGLBINDBUFFERSBASEPROC glad_glBindBuffersBase; -PFNGLBINDBUFFERSRANGEPROC glad_glBindBuffersRange; -PFNGLBINDTEXTURESPROC glad_glBindTextures; -PFNGLBINDSAMPLERSPROC glad_glBindSamplers; -PFNGLBINDIMAGETEXTURESPROC glad_glBindImageTextures; -PFNGLBINDVERTEXBUFFERSPROC glad_glBindVertexBuffers; -PFNGLGETLISTPARAMETERFVSGIXPROC glad_glGetListParameterfvSGIX; -PFNGLGETLISTPARAMETERIVSGIXPROC glad_glGetListParameterivSGIX; -PFNGLLISTPARAMETERFSGIXPROC glad_glListParameterfSGIX; -PFNGLLISTPARAMETERFVSGIXPROC glad_glListParameterfvSGIX; -PFNGLLISTPARAMETERISGIXPROC glad_glListParameteriSGIX; -PFNGLLISTPARAMETERIVSGIXPROC glad_glListParameterivSGIX; -PFNGLBUFFERADDRESSRANGENVPROC glad_glBufferAddressRangeNV; -PFNGLVERTEXFORMATNVPROC glad_glVertexFormatNV; -PFNGLNORMALFORMATNVPROC glad_glNormalFormatNV; -PFNGLCOLORFORMATNVPROC glad_glColorFormatNV; -PFNGLINDEXFORMATNVPROC glad_glIndexFormatNV; -PFNGLTEXCOORDFORMATNVPROC glad_glTexCoordFormatNV; -PFNGLEDGEFLAGFORMATNVPROC glad_glEdgeFlagFormatNV; -PFNGLSECONDARYCOLORFORMATNVPROC glad_glSecondaryColorFormatNV; -PFNGLFOGCOORDFORMATNVPROC glad_glFogCoordFormatNV; -PFNGLVERTEXATTRIBFORMATNVPROC glad_glVertexAttribFormatNV; -PFNGLVERTEXATTRIBIFORMATNVPROC glad_glVertexAttribIFormatNV; -PFNGLGETINTEGERUI64I_VNVPROC glad_glGetIntegerui64i_vNV; -PFNGLBLENDPARAMETERINVPROC glad_glBlendParameteriNV; -PFNGLBLENDBARRIERNVPROC glad_glBlendBarrierNV; -PFNGLSHARPENTEXFUNCSGISPROC glad_glSharpenTexFuncSGIS; -PFNGLGETSHARPENTEXFUNCSGISPROC glad_glGetSharpenTexFuncSGIS; -PFNGLVERTEXATTRIB1DARBPROC glad_glVertexAttrib1dARB; -PFNGLVERTEXATTRIB1DVARBPROC glad_glVertexAttrib1dvARB; -PFNGLVERTEXATTRIB1FARBPROC glad_glVertexAttrib1fARB; -PFNGLVERTEXATTRIB1FVARBPROC glad_glVertexAttrib1fvARB; -PFNGLVERTEXATTRIB1SARBPROC glad_glVertexAttrib1sARB; -PFNGLVERTEXATTRIB1SVARBPROC glad_glVertexAttrib1svARB; -PFNGLVERTEXATTRIB2DARBPROC glad_glVertexAttrib2dARB; -PFNGLVERTEXATTRIB2DVARBPROC glad_glVertexAttrib2dvARB; -PFNGLVERTEXATTRIB2FARBPROC glad_glVertexAttrib2fARB; -PFNGLVERTEXATTRIB2FVARBPROC glad_glVertexAttrib2fvARB; -PFNGLVERTEXATTRIB2SARBPROC glad_glVertexAttrib2sARB; -PFNGLVERTEXATTRIB2SVARBPROC glad_glVertexAttrib2svARB; -PFNGLVERTEXATTRIB3DARBPROC glad_glVertexAttrib3dARB; -PFNGLVERTEXATTRIB3DVARBPROC glad_glVertexAttrib3dvARB; -PFNGLVERTEXATTRIB3FARBPROC glad_glVertexAttrib3fARB; -PFNGLVERTEXATTRIB3FVARBPROC glad_glVertexAttrib3fvARB; -PFNGLVERTEXATTRIB3SARBPROC glad_glVertexAttrib3sARB; -PFNGLVERTEXATTRIB3SVARBPROC glad_glVertexAttrib3svARB; -PFNGLVERTEXATTRIB4NBVARBPROC glad_glVertexAttrib4NbvARB; -PFNGLVERTEXATTRIB4NIVARBPROC glad_glVertexAttrib4NivARB; -PFNGLVERTEXATTRIB4NSVARBPROC glad_glVertexAttrib4NsvARB; -PFNGLVERTEXATTRIB4NUBARBPROC glad_glVertexAttrib4NubARB; -PFNGLVERTEXATTRIB4NUBVARBPROC glad_glVertexAttrib4NubvARB; -PFNGLVERTEXATTRIB4NUIVARBPROC glad_glVertexAttrib4NuivARB; -PFNGLVERTEXATTRIB4NUSVARBPROC glad_glVertexAttrib4NusvARB; -PFNGLVERTEXATTRIB4BVARBPROC glad_glVertexAttrib4bvARB; -PFNGLVERTEXATTRIB4DARBPROC glad_glVertexAttrib4dARB; -PFNGLVERTEXATTRIB4DVARBPROC glad_glVertexAttrib4dvARB; -PFNGLVERTEXATTRIB4FARBPROC glad_glVertexAttrib4fARB; -PFNGLVERTEXATTRIB4FVARBPROC glad_glVertexAttrib4fvARB; -PFNGLVERTEXATTRIB4IVARBPROC glad_glVertexAttrib4ivARB; -PFNGLVERTEXATTRIB4SARBPROC glad_glVertexAttrib4sARB; -PFNGLVERTEXATTRIB4SVARBPROC glad_glVertexAttrib4svARB; -PFNGLVERTEXATTRIB4UBVARBPROC glad_glVertexAttrib4ubvARB; -PFNGLVERTEXATTRIB4UIVARBPROC glad_glVertexAttrib4uivARB; -PFNGLVERTEXATTRIB4USVARBPROC glad_glVertexAttrib4usvARB; -PFNGLVERTEXATTRIBPOINTERARBPROC glad_glVertexAttribPointerARB; -PFNGLENABLEVERTEXATTRIBARRAYARBPROC glad_glEnableVertexAttribArrayARB; -PFNGLDISABLEVERTEXATTRIBARRAYARBPROC glad_glDisableVertexAttribArrayARB; -PFNGLPROGRAMSTRINGARBPROC glad_glProgramStringARB; -PFNGLBINDPROGRAMARBPROC glad_glBindProgramARB; -PFNGLDELETEPROGRAMSARBPROC glad_glDeleteProgramsARB; -PFNGLGENPROGRAMSARBPROC glad_glGenProgramsARB; -PFNGLPROGRAMENVPARAMETER4DARBPROC glad_glProgramEnvParameter4dARB; -PFNGLPROGRAMENVPARAMETER4DVARBPROC glad_glProgramEnvParameter4dvARB; -PFNGLPROGRAMENVPARAMETER4FARBPROC glad_glProgramEnvParameter4fARB; -PFNGLPROGRAMENVPARAMETER4FVARBPROC glad_glProgramEnvParameter4fvARB; -PFNGLPROGRAMLOCALPARAMETER4DARBPROC glad_glProgramLocalParameter4dARB; -PFNGLPROGRAMLOCALPARAMETER4DVARBPROC glad_glProgramLocalParameter4dvARB; -PFNGLPROGRAMLOCALPARAMETER4FARBPROC glad_glProgramLocalParameter4fARB; -PFNGLPROGRAMLOCALPARAMETER4FVARBPROC glad_glProgramLocalParameter4fvARB; -PFNGLGETPROGRAMENVPARAMETERDVARBPROC glad_glGetProgramEnvParameterdvARB; -PFNGLGETPROGRAMENVPARAMETERFVARBPROC glad_glGetProgramEnvParameterfvARB; -PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC glad_glGetProgramLocalParameterdvARB; -PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC glad_glGetProgramLocalParameterfvARB; -PFNGLGETPROGRAMIVARBPROC glad_glGetProgramivARB; -PFNGLGETPROGRAMSTRINGARBPROC glad_glGetProgramStringARB; -PFNGLGETVERTEXATTRIBDVARBPROC glad_glGetVertexAttribdvARB; -PFNGLGETVERTEXATTRIBFVARBPROC glad_glGetVertexAttribfvARB; -PFNGLGETVERTEXATTRIBIVARBPROC glad_glGetVertexAttribivARB; -PFNGLGETVERTEXATTRIBPOINTERVARBPROC glad_glGetVertexAttribPointervARB; -PFNGLISPROGRAMARBPROC glad_glIsProgramARB; -PFNGLBINDBUFFERARBPROC glad_glBindBufferARB; -PFNGLDELETEBUFFERSARBPROC glad_glDeleteBuffersARB; -PFNGLGENBUFFERSARBPROC glad_glGenBuffersARB; -PFNGLISBUFFERARBPROC glad_glIsBufferARB; -PFNGLBUFFERDATAARBPROC glad_glBufferDataARB; -PFNGLBUFFERSUBDATAARBPROC glad_glBufferSubDataARB; -PFNGLGETBUFFERSUBDATAARBPROC glad_glGetBufferSubDataARB; -PFNGLMAPBUFFERARBPROC glad_glMapBufferARB; -PFNGLUNMAPBUFFERARBPROC glad_glUnmapBufferARB; -PFNGLGETBUFFERPARAMETERIVARBPROC glad_glGetBufferParameterivARB; -PFNGLGETBUFFERPOINTERVARBPROC glad_glGetBufferPointervARB; -PFNGLFLUSHVERTEXARRAYRANGENVPROC glad_glFlushVertexArrayRangeNV; -PFNGLVERTEXARRAYRANGENVPROC glad_glVertexArrayRangeNV; -PFNGLFRAGMENTCOLORMATERIALSGIXPROC glad_glFragmentColorMaterialSGIX; -PFNGLFRAGMENTLIGHTFSGIXPROC glad_glFragmentLightfSGIX; -PFNGLFRAGMENTLIGHTFVSGIXPROC glad_glFragmentLightfvSGIX; -PFNGLFRAGMENTLIGHTISGIXPROC glad_glFragmentLightiSGIX; -PFNGLFRAGMENTLIGHTIVSGIXPROC glad_glFragmentLightivSGIX; -PFNGLFRAGMENTLIGHTMODELFSGIXPROC glad_glFragmentLightModelfSGIX; -PFNGLFRAGMENTLIGHTMODELFVSGIXPROC glad_glFragmentLightModelfvSGIX; -PFNGLFRAGMENTLIGHTMODELISGIXPROC glad_glFragmentLightModeliSGIX; -PFNGLFRAGMENTLIGHTMODELIVSGIXPROC glad_glFragmentLightModelivSGIX; -PFNGLFRAGMENTMATERIALFSGIXPROC glad_glFragmentMaterialfSGIX; -PFNGLFRAGMENTMATERIALFVSGIXPROC glad_glFragmentMaterialfvSGIX; -PFNGLFRAGMENTMATERIALISGIXPROC glad_glFragmentMaterialiSGIX; -PFNGLFRAGMENTMATERIALIVSGIXPROC glad_glFragmentMaterialivSGIX; -PFNGLGETFRAGMENTLIGHTFVSGIXPROC glad_glGetFragmentLightfvSGIX; -PFNGLGETFRAGMENTLIGHTIVSGIXPROC glad_glGetFragmentLightivSGIX; -PFNGLGETFRAGMENTMATERIALFVSGIXPROC glad_glGetFragmentMaterialfvSGIX; -PFNGLGETFRAGMENTMATERIALIVSGIXPROC glad_glGetFragmentMaterialivSGIX; -PFNGLLIGHTENVISGIXPROC glad_glLightEnviSGIX; -PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC glad_glRenderbufferStorageMultisampleCoverageNV; -PFNGLGETQUERYOBJECTI64VEXTPROC glad_glGetQueryObjecti64vEXT; -PFNGLGETQUERYOBJECTUI64VEXTPROC glad_glGetQueryObjectui64vEXT; -PFNGLGETTEXTUREHANDLENVPROC glad_glGetTextureHandleNV; -PFNGLGETTEXTURESAMPLERHANDLENVPROC glad_glGetTextureSamplerHandleNV; -PFNGLMAKETEXTUREHANDLERESIDENTNVPROC glad_glMakeTextureHandleResidentNV; -PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC glad_glMakeTextureHandleNonResidentNV; -PFNGLGETIMAGEHANDLENVPROC glad_glGetImageHandleNV; -PFNGLMAKEIMAGEHANDLERESIDENTNVPROC glad_glMakeImageHandleResidentNV; -PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC glad_glMakeImageHandleNonResidentNV; -PFNGLUNIFORMHANDLEUI64NVPROC glad_glUniformHandleui64NV; -PFNGLUNIFORMHANDLEUI64VNVPROC glad_glUniformHandleui64vNV; -PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC glad_glProgramUniformHandleui64NV; -PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC glad_glProgramUniformHandleui64vNV; -PFNGLISTEXTUREHANDLERESIDENTNVPROC glad_glIsTextureHandleResidentNV; -PFNGLISIMAGEHANDLERESIDENTNVPROC glad_glIsImageHandleResidentNV; -PFNGLDEBUGMESSAGECONTROLPROC glad_glDebugMessageControl; -PFNGLDEBUGMESSAGEINSERTPROC glad_glDebugMessageInsert; -PFNGLDEBUGMESSAGECALLBACKPROC glad_glDebugMessageCallback; -PFNGLGETDEBUGMESSAGELOGPROC glad_glGetDebugMessageLog; -PFNGLPUSHDEBUGGROUPPROC glad_glPushDebugGroup; -PFNGLPOPDEBUGGROUPPROC glad_glPopDebugGroup; -PFNGLOBJECTLABELPROC glad_glObjectLabel; -PFNGLGETOBJECTLABELPROC glad_glGetObjectLabel; -PFNGLOBJECTPTRLABELPROC glad_glObjectPtrLabel; -PFNGLGETOBJECTPTRLABELPROC glad_glGetObjectPtrLabel; -PFNGLGETPOINTERVPROC glad_glGetPointerv; -PFNGLDEBUGMESSAGECONTROLKHRPROC glad_glDebugMessageControlKHR; -PFNGLDEBUGMESSAGEINSERTKHRPROC glad_glDebugMessageInsertKHR; -PFNGLDEBUGMESSAGECALLBACKKHRPROC glad_glDebugMessageCallbackKHR; -PFNGLGETDEBUGMESSAGELOGKHRPROC glad_glGetDebugMessageLogKHR; -PFNGLPUSHDEBUGGROUPKHRPROC glad_glPushDebugGroupKHR; -PFNGLPOPDEBUGGROUPKHRPROC glad_glPopDebugGroupKHR; -PFNGLOBJECTLABELKHRPROC glad_glObjectLabelKHR; -PFNGLGETOBJECTLABELKHRPROC glad_glGetObjectLabelKHR; -PFNGLOBJECTPTRLABELKHRPROC glad_glObjectPtrLabelKHR; -PFNGLGETOBJECTPTRLABELKHRPROC glad_glGetObjectPtrLabelKHR; -PFNGLGETPOINTERVKHRPROC glad_glGetPointervKHR; -PFNGLVERTEXATTRIBARRAYOBJECTATIPROC glad_glVertexAttribArrayObjectATI; -PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC glad_glGetVertexAttribArrayObjectfvATI; -PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC glad_glGetVertexAttribArrayObjectivATI; -PFNGLUNIFORMBUFFEREXTPROC glad_glUniformBufferEXT; -PFNGLGETUNIFORMBUFFERSIZEEXTPROC glad_glGetUniformBufferSizeEXT; -PFNGLGETUNIFORMOFFSETEXTPROC glad_glGetUniformOffsetEXT; -PFNGLBLENDBARRIERKHRPROC glad_glBlendBarrierKHR; -PFNGLELEMENTPOINTERATIPROC glad_glElementPointerATI; -PFNGLDRAWELEMENTARRAYATIPROC glad_glDrawElementArrayATI; -PFNGLDRAWRANGEELEMENTARRAYATIPROC glad_glDrawRangeElementArrayATI; -PFNGLREFERENCEPLANESGIXPROC glad_glReferencePlaneSGIX; -PFNGLACTIVESTENCILFACEEXTPROC glad_glActiveStencilFaceEXT; -PFNGLGETMULTISAMPLEFVNVPROC glad_glGetMultisamplefvNV; -PFNGLSAMPLEMASKINDEXEDNVPROC glad_glSampleMaskIndexedNV; -PFNGLTEXRENDERBUFFERNVPROC glad_glTexRenderbufferNV; -PFNGLFLUSHSTATICDATAIBMPROC glad_glFlushStaticDataIBM; -PFNGLTEXTURENORMALEXTPROC glad_glTextureNormalEXT; -PFNGLPOINTPARAMETERFEXTPROC glad_glPointParameterfEXT; -PFNGLPOINTPARAMETERFVEXTPROC glad_glPointParameterfvEXT; -PFNGLHINTPGIPROC glad_glHintPGI; -PFNGLBINDATTRIBLOCATIONARBPROC glad_glBindAttribLocationARB; -PFNGLGETACTIVEATTRIBARBPROC glad_glGetActiveAttribARB; -PFNGLGETATTRIBLOCATIONARBPROC glad_glGetAttribLocationARB; -PFNGLPATCHPARAMETERIPROC glad_glPatchParameteri; -PFNGLPATCHPARAMETERFVPROC glad_glPatchParameterfv; -PFNGLCOLORMASKINDEXEDEXTPROC glad_glColorMaskIndexedEXT; -PFNGLGETBOOLEANINDEXEDVEXTPROC glad_glGetBooleanIndexedvEXT; -PFNGLGETINTEGERINDEXEDVEXTPROC glad_glGetIntegerIndexedvEXT; -PFNGLENABLEINDEXEDEXTPROC glad_glEnableIndexedEXT; -PFNGLDISABLEINDEXEDEXTPROC glad_glDisableIndexedEXT; -PFNGLISENABLEDINDEXEDEXTPROC glad_glIsEnabledIndexedEXT; -PFNGLVERTEXATTRIBL1DPROC glad_glVertexAttribL1d; -PFNGLVERTEXATTRIBL2DPROC glad_glVertexAttribL2d; -PFNGLVERTEXATTRIBL3DPROC glad_glVertexAttribL3d; -PFNGLVERTEXATTRIBL4DPROC glad_glVertexAttribL4d; -PFNGLVERTEXATTRIBL1DVPROC glad_glVertexAttribL1dv; -PFNGLVERTEXATTRIBL2DVPROC glad_glVertexAttribL2dv; -PFNGLVERTEXATTRIBL3DVPROC glad_glVertexAttribL3dv; -PFNGLVERTEXATTRIBL4DVPROC glad_glVertexAttribL4dv; -PFNGLVERTEXATTRIBLPOINTERPROC glad_glVertexAttribLPointer; -PFNGLGETVERTEXATTRIBLDVPROC glad_glGetVertexAttribLdv; -PFNGLRASTERSAMPLESEXTPROC glad_glRasterSamplesEXT; -PFNGLVERTEXATTRIBPARAMETERIAMDPROC glad_glVertexAttribParameteriAMD; -PFNGLTEXSTORAGE1DPROC glad_glTexStorage1D; -PFNGLTEXSTORAGE2DPROC glad_glTexStorage2D; -PFNGLTEXSTORAGE3DPROC glad_glTexStorage3D; -PFNGLCOPYIMAGESUBDATAPROC glad_glCopyImageSubData; -PFNGLPIXELTEXGENPARAMETERISGISPROC glad_glPixelTexGenParameteriSGIS; -PFNGLPIXELTEXGENPARAMETERIVSGISPROC glad_glPixelTexGenParameterivSGIS; -PFNGLPIXELTEXGENPARAMETERFSGISPROC glad_glPixelTexGenParameterfSGIS; -PFNGLPIXELTEXGENPARAMETERFVSGISPROC glad_glPixelTexGenParameterfvSGIS; -PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC glad_glGetPixelTexGenParameterivSGIS; -PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC glad_glGetPixelTexGenParameterfvSGIS; -PFNGLGETINSTRUMENTSSGIXPROC glad_glGetInstrumentsSGIX; -PFNGLINSTRUMENTSBUFFERSGIXPROC glad_glInstrumentsBufferSGIX; -PFNGLPOLLINSTRUMENTSSGIXPROC glad_glPollInstrumentsSGIX; -PFNGLREADINSTRUMENTSSGIXPROC glad_glReadInstrumentsSGIX; -PFNGLSTARTINSTRUMENTSSGIXPROC glad_glStartInstrumentsSGIX; -PFNGLSTOPINSTRUMENTSSGIXPROC glad_glStopInstrumentsSGIX; -PFNGLSHADERSTORAGEBLOCKBINDINGPROC glad_glShaderStorageBlockBinding; -PFNGLBLENDEQUATIONEXTPROC glad_glBlendEquationEXT; -PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC glad_glDrawArraysInstancedBaseInstance; -PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC glad_glDrawElementsInstancedBaseInstance; -PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC glad_glDrawElementsInstancedBaseVertexBaseInstance; -PFNGLMEMORYBARRIERBYREGIONPROC glad_glMemoryBarrierByRegion; -PFNGLTEXPARAMETERIIVEXTPROC glad_glTexParameterIivEXT; -PFNGLTEXPARAMETERIUIVEXTPROC glad_glTexParameterIuivEXT; -PFNGLGETTEXPARAMETERIIVEXTPROC glad_glGetTexParameterIivEXT; -PFNGLGETTEXPARAMETERIUIVEXTPROC glad_glGetTexParameterIuivEXT; -PFNGLCLEARCOLORIIEXTPROC glad_glClearColorIiEXT; -PFNGLCLEARCOLORIUIEXTPROC glad_glClearColorIuiEXT; -PFNGLUNIFORM1I64NVPROC glad_glUniform1i64NV; -PFNGLUNIFORM2I64NVPROC glad_glUniform2i64NV; -PFNGLUNIFORM3I64NVPROC glad_glUniform3i64NV; -PFNGLUNIFORM4I64NVPROC glad_glUniform4i64NV; -PFNGLUNIFORM1I64VNVPROC glad_glUniform1i64vNV; -PFNGLUNIFORM2I64VNVPROC glad_glUniform2i64vNV; -PFNGLUNIFORM3I64VNVPROC glad_glUniform3i64vNV; -PFNGLUNIFORM4I64VNVPROC glad_glUniform4i64vNV; -PFNGLUNIFORM1UI64NVPROC glad_glUniform1ui64NV; -PFNGLUNIFORM2UI64NVPROC glad_glUniform2ui64NV; -PFNGLUNIFORM3UI64NVPROC glad_glUniform3ui64NV; -PFNGLUNIFORM4UI64NVPROC glad_glUniform4ui64NV; -PFNGLUNIFORM1UI64VNVPROC glad_glUniform1ui64vNV; -PFNGLUNIFORM2UI64VNVPROC glad_glUniform2ui64vNV; -PFNGLUNIFORM3UI64VNVPROC glad_glUniform3ui64vNV; -PFNGLUNIFORM4UI64VNVPROC glad_glUniform4ui64vNV; -PFNGLGETUNIFORMI64VNVPROC glad_glGetUniformi64vNV; -PFNGLPROGRAMUNIFORM1I64NVPROC glad_glProgramUniform1i64NV; -PFNGLPROGRAMUNIFORM2I64NVPROC glad_glProgramUniform2i64NV; -PFNGLPROGRAMUNIFORM3I64NVPROC glad_glProgramUniform3i64NV; -PFNGLPROGRAMUNIFORM4I64NVPROC glad_glProgramUniform4i64NV; -PFNGLPROGRAMUNIFORM1I64VNVPROC glad_glProgramUniform1i64vNV; -PFNGLPROGRAMUNIFORM2I64VNVPROC glad_glProgramUniform2i64vNV; -PFNGLPROGRAMUNIFORM3I64VNVPROC glad_glProgramUniform3i64vNV; -PFNGLPROGRAMUNIFORM4I64VNVPROC glad_glProgramUniform4i64vNV; -PFNGLPROGRAMUNIFORM1UI64NVPROC glad_glProgramUniform1ui64NV; -PFNGLPROGRAMUNIFORM2UI64NVPROC glad_glProgramUniform2ui64NV; -PFNGLPROGRAMUNIFORM3UI64NVPROC glad_glProgramUniform3ui64NV; -PFNGLPROGRAMUNIFORM4UI64NVPROC glad_glProgramUniform4ui64NV; -PFNGLPROGRAMUNIFORM1UI64VNVPROC glad_glProgramUniform1ui64vNV; -PFNGLPROGRAMUNIFORM2UI64VNVPROC glad_glProgramUniform2ui64vNV; -PFNGLPROGRAMUNIFORM3UI64VNVPROC glad_glProgramUniform3ui64vNV; -PFNGLPROGRAMUNIFORM4UI64VNVPROC glad_glProgramUniform4ui64vNV; -PFNGLTESSELLATIONFACTORAMDPROC glad_glTessellationFactorAMD; -PFNGLTESSELLATIONMODEAMDPROC glad_glTessellationModeAMD; -PFNGLINVALIDATETEXSUBIMAGEPROC glad_glInvalidateTexSubImage; -PFNGLINVALIDATETEXIMAGEPROC glad_glInvalidateTexImage; -PFNGLINVALIDATEBUFFERSUBDATAPROC glad_glInvalidateBufferSubData; -PFNGLINVALIDATEBUFFERDATAPROC glad_glInvalidateBufferData; -PFNGLINVALIDATEFRAMEBUFFERPROC glad_glInvalidateFramebuffer; -PFNGLINVALIDATESUBFRAMEBUFFERPROC glad_glInvalidateSubFramebuffer; -PFNGLINDEXMATERIALEXTPROC glad_glIndexMaterialEXT; -PFNGLVERTEXPOINTERVINTELPROC glad_glVertexPointervINTEL; -PFNGLNORMALPOINTERVINTELPROC glad_glNormalPointervINTEL; -PFNGLCOLORPOINTERVINTELPROC glad_glColorPointervINTEL; -PFNGLTEXCOORDPOINTERVINTELPROC glad_glTexCoordPointervINTEL; -PFNGLDRAWBUFFERSATIPROC glad_glDrawBuffersATI; -PFNGLPIXELTEXGENSGIXPROC glad_glPixelTexGenSGIX; -PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC glad_glProgramBufferParametersfvNV; -PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC glad_glProgramBufferParametersIivNV; -PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC glad_glProgramBufferParametersIuivNV; -PFNGLCREATETRANSFORMFEEDBACKSPROC glad_glCreateTransformFeedbacks; -PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC glad_glTransformFeedbackBufferBase; -PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC glad_glTransformFeedbackBufferRange; -PFNGLGETTRANSFORMFEEDBACKIVPROC glad_glGetTransformFeedbackiv; -PFNGLGETTRANSFORMFEEDBACKI_VPROC glad_glGetTransformFeedbacki_v; -PFNGLGETTRANSFORMFEEDBACKI64_VPROC glad_glGetTransformFeedbacki64_v; -PFNGLCREATEBUFFERSPROC glad_glCreateBuffers; -PFNGLNAMEDBUFFERSTORAGEPROC glad_glNamedBufferStorage; -PFNGLNAMEDBUFFERDATAPROC glad_glNamedBufferData; -PFNGLNAMEDBUFFERSUBDATAPROC glad_glNamedBufferSubData; -PFNGLCOPYNAMEDBUFFERSUBDATAPROC glad_glCopyNamedBufferSubData; -PFNGLCLEARNAMEDBUFFERDATAPROC glad_glClearNamedBufferData; -PFNGLCLEARNAMEDBUFFERSUBDATAPROC glad_glClearNamedBufferSubData; -PFNGLMAPNAMEDBUFFERPROC glad_glMapNamedBuffer; -PFNGLMAPNAMEDBUFFERRANGEPROC glad_glMapNamedBufferRange; -PFNGLUNMAPNAMEDBUFFERPROC glad_glUnmapNamedBuffer; -PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC glad_glFlushMappedNamedBufferRange; -PFNGLGETNAMEDBUFFERPARAMETERIVPROC glad_glGetNamedBufferParameteriv; -PFNGLGETNAMEDBUFFERPARAMETERI64VPROC glad_glGetNamedBufferParameteri64v; -PFNGLGETNAMEDBUFFERPOINTERVPROC glad_glGetNamedBufferPointerv; -PFNGLGETNAMEDBUFFERSUBDATAPROC glad_glGetNamedBufferSubData; -PFNGLCREATEFRAMEBUFFERSPROC glad_glCreateFramebuffers; -PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC glad_glNamedFramebufferRenderbuffer; -PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC glad_glNamedFramebufferParameteri; -PFNGLNAMEDFRAMEBUFFERTEXTUREPROC glad_glNamedFramebufferTexture; -PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC glad_glNamedFramebufferTextureLayer; -PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC glad_glNamedFramebufferDrawBuffer; -PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC glad_glNamedFramebufferDrawBuffers; -PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC glad_glNamedFramebufferReadBuffer; -PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC glad_glInvalidateNamedFramebufferData; -PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC glad_glInvalidateNamedFramebufferSubData; -PFNGLCLEARNAMEDFRAMEBUFFERIVPROC glad_glClearNamedFramebufferiv; -PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC glad_glClearNamedFramebufferuiv; -PFNGLCLEARNAMEDFRAMEBUFFERFVPROC glad_glClearNamedFramebufferfv; -PFNGLCLEARNAMEDFRAMEBUFFERFIPROC glad_glClearNamedFramebufferfi; -PFNGLBLITNAMEDFRAMEBUFFERPROC glad_glBlitNamedFramebuffer; -PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC glad_glCheckNamedFramebufferStatus; -PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC glad_glGetNamedFramebufferParameteriv; -PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetNamedFramebufferAttachmentParameteriv; -PFNGLCREATERENDERBUFFERSPROC glad_glCreateRenderbuffers; -PFNGLNAMEDRENDERBUFFERSTORAGEPROC glad_glNamedRenderbufferStorage; -PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glNamedRenderbufferStorageMultisample; -PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC glad_glGetNamedRenderbufferParameteriv; -PFNGLCREATETEXTURESPROC glad_glCreateTextures; -PFNGLTEXTUREBUFFERPROC glad_glTextureBuffer; -PFNGLTEXTUREBUFFERRANGEPROC glad_glTextureBufferRange; -PFNGLTEXTURESTORAGE1DPROC glad_glTextureStorage1D; -PFNGLTEXTURESTORAGE2DPROC glad_glTextureStorage2D; -PFNGLTEXTURESTORAGE3DPROC glad_glTextureStorage3D; -PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC glad_glTextureStorage2DMultisample; -PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC glad_glTextureStorage3DMultisample; -PFNGLTEXTURESUBIMAGE1DPROC glad_glTextureSubImage1D; -PFNGLTEXTURESUBIMAGE2DPROC glad_glTextureSubImage2D; -PFNGLTEXTURESUBIMAGE3DPROC glad_glTextureSubImage3D; -PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC glad_glCompressedTextureSubImage1D; -PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC glad_glCompressedTextureSubImage2D; -PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC glad_glCompressedTextureSubImage3D; -PFNGLCOPYTEXTURESUBIMAGE1DPROC glad_glCopyTextureSubImage1D; -PFNGLCOPYTEXTURESUBIMAGE2DPROC glad_glCopyTextureSubImage2D; -PFNGLCOPYTEXTURESUBIMAGE3DPROC glad_glCopyTextureSubImage3D; -PFNGLTEXTUREPARAMETERFPROC glad_glTextureParameterf; -PFNGLTEXTUREPARAMETERFVPROC glad_glTextureParameterfv; -PFNGLTEXTUREPARAMETERIPROC glad_glTextureParameteri; -PFNGLTEXTUREPARAMETERIIVPROC glad_glTextureParameterIiv; -PFNGLTEXTUREPARAMETERIUIVPROC glad_glTextureParameterIuiv; -PFNGLTEXTUREPARAMETERIVPROC glad_glTextureParameteriv; -PFNGLGENERATETEXTUREMIPMAPPROC glad_glGenerateTextureMipmap; -PFNGLBINDTEXTUREUNITPROC glad_glBindTextureUnit; -PFNGLGETTEXTUREIMAGEPROC glad_glGetTextureImage; -PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC glad_glGetCompressedTextureImage; -PFNGLGETTEXTURELEVELPARAMETERFVPROC glad_glGetTextureLevelParameterfv; -PFNGLGETTEXTURELEVELPARAMETERIVPROC glad_glGetTextureLevelParameteriv; -PFNGLGETTEXTUREPARAMETERFVPROC glad_glGetTextureParameterfv; -PFNGLGETTEXTUREPARAMETERIIVPROC glad_glGetTextureParameterIiv; -PFNGLGETTEXTUREPARAMETERIUIVPROC glad_glGetTextureParameterIuiv; -PFNGLGETTEXTUREPARAMETERIVPROC glad_glGetTextureParameteriv; -PFNGLCREATEVERTEXARRAYSPROC glad_glCreateVertexArrays; -PFNGLDISABLEVERTEXARRAYATTRIBPROC glad_glDisableVertexArrayAttrib; -PFNGLENABLEVERTEXARRAYATTRIBPROC glad_glEnableVertexArrayAttrib; -PFNGLVERTEXARRAYELEMENTBUFFERPROC glad_glVertexArrayElementBuffer; -PFNGLVERTEXARRAYVERTEXBUFFERPROC glad_glVertexArrayVertexBuffer; -PFNGLVERTEXARRAYVERTEXBUFFERSPROC glad_glVertexArrayVertexBuffers; -PFNGLVERTEXARRAYATTRIBBINDINGPROC glad_glVertexArrayAttribBinding; -PFNGLVERTEXARRAYATTRIBFORMATPROC glad_glVertexArrayAttribFormat; -PFNGLVERTEXARRAYATTRIBIFORMATPROC glad_glVertexArrayAttribIFormat; -PFNGLVERTEXARRAYATTRIBLFORMATPROC glad_glVertexArrayAttribLFormat; -PFNGLVERTEXARRAYBINDINGDIVISORPROC glad_glVertexArrayBindingDivisor; -PFNGLGETVERTEXARRAYIVPROC glad_glGetVertexArrayiv; -PFNGLGETVERTEXARRAYINDEXEDIVPROC glad_glGetVertexArrayIndexediv; -PFNGLGETVERTEXARRAYINDEXED64IVPROC glad_glGetVertexArrayIndexed64iv; -PFNGLCREATESAMPLERSPROC glad_glCreateSamplers; -PFNGLCREATEPROGRAMPIPELINESPROC glad_glCreateProgramPipelines; -PFNGLCREATEQUERIESPROC glad_glCreateQueries; -PFNGLGETQUERYBUFFEROBJECTI64VPROC glad_glGetQueryBufferObjecti64v; -PFNGLGETQUERYBUFFEROBJECTIVPROC glad_glGetQueryBufferObjectiv; -PFNGLGETQUERYBUFFEROBJECTUI64VPROC glad_glGetQueryBufferObjectui64v; -PFNGLGETQUERYBUFFEROBJECTUIVPROC glad_glGetQueryBufferObjectuiv; -PFNGLBINDTRANSFORMFEEDBACKNVPROC glad_glBindTransformFeedbackNV; -PFNGLDELETETRANSFORMFEEDBACKSNVPROC glad_glDeleteTransformFeedbacksNV; -PFNGLGENTRANSFORMFEEDBACKSNVPROC glad_glGenTransformFeedbacksNV; -PFNGLISTRANSFORMFEEDBACKNVPROC glad_glIsTransformFeedbackNV; -PFNGLPAUSETRANSFORMFEEDBACKNVPROC glad_glPauseTransformFeedbackNV; -PFNGLRESUMETRANSFORMFEEDBACKNVPROC glad_glResumeTransformFeedbackNV; -PFNGLDRAWTRANSFORMFEEDBACKNVPROC glad_glDrawTransformFeedbackNV; -PFNGLBLENDCOLOREXTPROC glad_glBlendColorEXT; -PFNGLGETHISTOGRAMEXTPROC glad_glGetHistogramEXT; -PFNGLGETHISTOGRAMPARAMETERFVEXTPROC glad_glGetHistogramParameterfvEXT; -PFNGLGETHISTOGRAMPARAMETERIVEXTPROC glad_glGetHistogramParameterivEXT; -PFNGLGETMINMAXEXTPROC glad_glGetMinmaxEXT; -PFNGLGETMINMAXPARAMETERFVEXTPROC glad_glGetMinmaxParameterfvEXT; -PFNGLGETMINMAXPARAMETERIVEXTPROC glad_glGetMinmaxParameterivEXT; -PFNGLHISTOGRAMEXTPROC glad_glHistogramEXT; -PFNGLMINMAXEXTPROC glad_glMinmaxEXT; -PFNGLRESETHISTOGRAMEXTPROC glad_glResetHistogramEXT; -PFNGLRESETMINMAXEXTPROC glad_glResetMinmaxEXT; -PFNGLGETTEXTURESUBIMAGEPROC glad_glGetTextureSubImage; -PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC glad_glGetCompressedTextureSubImage; -PFNGLPOINTPARAMETERFSGISPROC glad_glPointParameterfSGIS; -PFNGLPOINTPARAMETERFVSGISPROC glad_glPointParameterfvSGIS; -PFNGLMATRIXLOADFEXTPROC glad_glMatrixLoadfEXT; -PFNGLMATRIXLOADDEXTPROC glad_glMatrixLoaddEXT; -PFNGLMATRIXMULTFEXTPROC glad_glMatrixMultfEXT; -PFNGLMATRIXMULTDEXTPROC glad_glMatrixMultdEXT; -PFNGLMATRIXLOADIDENTITYEXTPROC glad_glMatrixLoadIdentityEXT; -PFNGLMATRIXROTATEFEXTPROC glad_glMatrixRotatefEXT; -PFNGLMATRIXROTATEDEXTPROC glad_glMatrixRotatedEXT; -PFNGLMATRIXSCALEFEXTPROC glad_glMatrixScalefEXT; -PFNGLMATRIXSCALEDEXTPROC glad_glMatrixScaledEXT; -PFNGLMATRIXTRANSLATEFEXTPROC glad_glMatrixTranslatefEXT; -PFNGLMATRIXTRANSLATEDEXTPROC glad_glMatrixTranslatedEXT; -PFNGLMATRIXFRUSTUMEXTPROC glad_glMatrixFrustumEXT; -PFNGLMATRIXORTHOEXTPROC glad_glMatrixOrthoEXT; -PFNGLMATRIXPOPEXTPROC glad_glMatrixPopEXT; -PFNGLMATRIXPUSHEXTPROC glad_glMatrixPushEXT; -PFNGLCLIENTATTRIBDEFAULTEXTPROC glad_glClientAttribDefaultEXT; -PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC glad_glPushClientAttribDefaultEXT; -PFNGLTEXTUREPARAMETERFEXTPROC glad_glTextureParameterfEXT; -PFNGLTEXTUREPARAMETERFVEXTPROC glad_glTextureParameterfvEXT; -PFNGLTEXTUREPARAMETERIEXTPROC glad_glTextureParameteriEXT; -PFNGLTEXTUREPARAMETERIVEXTPROC glad_glTextureParameterivEXT; -PFNGLTEXTUREIMAGE1DEXTPROC glad_glTextureImage1DEXT; -PFNGLTEXTUREIMAGE2DEXTPROC glad_glTextureImage2DEXT; -PFNGLTEXTURESUBIMAGE1DEXTPROC glad_glTextureSubImage1DEXT; -PFNGLTEXTURESUBIMAGE2DEXTPROC glad_glTextureSubImage2DEXT; -PFNGLCOPYTEXTUREIMAGE1DEXTPROC glad_glCopyTextureImage1DEXT; -PFNGLCOPYTEXTUREIMAGE2DEXTPROC glad_glCopyTextureImage2DEXT; -PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC glad_glCopyTextureSubImage1DEXT; -PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC glad_glCopyTextureSubImage2DEXT; -PFNGLGETTEXTUREIMAGEEXTPROC glad_glGetTextureImageEXT; -PFNGLGETTEXTUREPARAMETERFVEXTPROC glad_glGetTextureParameterfvEXT; -PFNGLGETTEXTUREPARAMETERIVEXTPROC glad_glGetTextureParameterivEXT; -PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC glad_glGetTextureLevelParameterfvEXT; -PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC glad_glGetTextureLevelParameterivEXT; -PFNGLTEXTUREIMAGE3DEXTPROC glad_glTextureImage3DEXT; -PFNGLTEXTURESUBIMAGE3DEXTPROC glad_glTextureSubImage3DEXT; -PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC glad_glCopyTextureSubImage3DEXT; -PFNGLBINDMULTITEXTUREEXTPROC glad_glBindMultiTextureEXT; -PFNGLMULTITEXCOORDPOINTEREXTPROC glad_glMultiTexCoordPointerEXT; -PFNGLMULTITEXENVFEXTPROC glad_glMultiTexEnvfEXT; -PFNGLMULTITEXENVFVEXTPROC glad_glMultiTexEnvfvEXT; -PFNGLMULTITEXENVIEXTPROC glad_glMultiTexEnviEXT; -PFNGLMULTITEXENVIVEXTPROC glad_glMultiTexEnvivEXT; -PFNGLMULTITEXGENDEXTPROC glad_glMultiTexGendEXT; -PFNGLMULTITEXGENDVEXTPROC glad_glMultiTexGendvEXT; -PFNGLMULTITEXGENFEXTPROC glad_glMultiTexGenfEXT; -PFNGLMULTITEXGENFVEXTPROC glad_glMultiTexGenfvEXT; -PFNGLMULTITEXGENIEXTPROC glad_glMultiTexGeniEXT; -PFNGLMULTITEXGENIVEXTPROC glad_glMultiTexGenivEXT; -PFNGLGETMULTITEXENVFVEXTPROC glad_glGetMultiTexEnvfvEXT; -PFNGLGETMULTITEXENVIVEXTPROC glad_glGetMultiTexEnvivEXT; -PFNGLGETMULTITEXGENDVEXTPROC glad_glGetMultiTexGendvEXT; -PFNGLGETMULTITEXGENFVEXTPROC glad_glGetMultiTexGenfvEXT; -PFNGLGETMULTITEXGENIVEXTPROC glad_glGetMultiTexGenivEXT; -PFNGLMULTITEXPARAMETERIEXTPROC glad_glMultiTexParameteriEXT; -PFNGLMULTITEXPARAMETERIVEXTPROC glad_glMultiTexParameterivEXT; -PFNGLMULTITEXPARAMETERFEXTPROC glad_glMultiTexParameterfEXT; -PFNGLMULTITEXPARAMETERFVEXTPROC glad_glMultiTexParameterfvEXT; -PFNGLMULTITEXIMAGE1DEXTPROC glad_glMultiTexImage1DEXT; -PFNGLMULTITEXIMAGE2DEXTPROC glad_glMultiTexImage2DEXT; -PFNGLMULTITEXSUBIMAGE1DEXTPROC glad_glMultiTexSubImage1DEXT; -PFNGLMULTITEXSUBIMAGE2DEXTPROC glad_glMultiTexSubImage2DEXT; -PFNGLCOPYMULTITEXIMAGE1DEXTPROC glad_glCopyMultiTexImage1DEXT; -PFNGLCOPYMULTITEXIMAGE2DEXTPROC glad_glCopyMultiTexImage2DEXT; -PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC glad_glCopyMultiTexSubImage1DEXT; -PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC glad_glCopyMultiTexSubImage2DEXT; -PFNGLGETMULTITEXIMAGEEXTPROC glad_glGetMultiTexImageEXT; -PFNGLGETMULTITEXPARAMETERFVEXTPROC glad_glGetMultiTexParameterfvEXT; -PFNGLGETMULTITEXPARAMETERIVEXTPROC glad_glGetMultiTexParameterivEXT; -PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC glad_glGetMultiTexLevelParameterfvEXT; -PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC glad_glGetMultiTexLevelParameterivEXT; -PFNGLMULTITEXIMAGE3DEXTPROC glad_glMultiTexImage3DEXT; -PFNGLMULTITEXSUBIMAGE3DEXTPROC glad_glMultiTexSubImage3DEXT; -PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC glad_glCopyMultiTexSubImage3DEXT; -PFNGLENABLECLIENTSTATEINDEXEDEXTPROC glad_glEnableClientStateIndexedEXT; -PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC glad_glDisableClientStateIndexedEXT; -PFNGLGETFLOATINDEXEDVEXTPROC glad_glGetFloatIndexedvEXT; -PFNGLGETDOUBLEINDEXEDVEXTPROC glad_glGetDoubleIndexedvEXT; -PFNGLGETPOINTERINDEXEDVEXTPROC glad_glGetPointerIndexedvEXT; -PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC glad_glCompressedTextureImage3DEXT; -PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC glad_glCompressedTextureImage2DEXT; -PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC glad_glCompressedTextureImage1DEXT; -PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC glad_glCompressedTextureSubImage3DEXT; -PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC glad_glCompressedTextureSubImage2DEXT; -PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC glad_glCompressedTextureSubImage1DEXT; -PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC glad_glGetCompressedTextureImageEXT; -PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC glad_glCompressedMultiTexImage3DEXT; -PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC glad_glCompressedMultiTexImage2DEXT; -PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC glad_glCompressedMultiTexImage1DEXT; -PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC glad_glCompressedMultiTexSubImage3DEXT; -PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC glad_glCompressedMultiTexSubImage2DEXT; -PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC glad_glCompressedMultiTexSubImage1DEXT; -PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC glad_glGetCompressedMultiTexImageEXT; -PFNGLMATRIXLOADTRANSPOSEFEXTPROC glad_glMatrixLoadTransposefEXT; -PFNGLMATRIXLOADTRANSPOSEDEXTPROC glad_glMatrixLoadTransposedEXT; -PFNGLMATRIXMULTTRANSPOSEFEXTPROC glad_glMatrixMultTransposefEXT; -PFNGLMATRIXMULTTRANSPOSEDEXTPROC glad_glMatrixMultTransposedEXT; -PFNGLNAMEDBUFFERDATAEXTPROC glad_glNamedBufferDataEXT; -PFNGLNAMEDBUFFERSUBDATAEXTPROC glad_glNamedBufferSubDataEXT; -PFNGLMAPNAMEDBUFFEREXTPROC glad_glMapNamedBufferEXT; -PFNGLUNMAPNAMEDBUFFEREXTPROC glad_glUnmapNamedBufferEXT; -PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC glad_glGetNamedBufferParameterivEXT; -PFNGLGETNAMEDBUFFERPOINTERVEXTPROC glad_glGetNamedBufferPointervEXT; -PFNGLGETNAMEDBUFFERSUBDATAEXTPROC glad_glGetNamedBufferSubDataEXT; -PFNGLTEXTUREBUFFEREXTPROC glad_glTextureBufferEXT; -PFNGLMULTITEXBUFFEREXTPROC glad_glMultiTexBufferEXT; -PFNGLTEXTUREPARAMETERIIVEXTPROC glad_glTextureParameterIivEXT; -PFNGLTEXTUREPARAMETERIUIVEXTPROC glad_glTextureParameterIuivEXT; -PFNGLGETTEXTUREPARAMETERIIVEXTPROC glad_glGetTextureParameterIivEXT; -PFNGLGETTEXTUREPARAMETERIUIVEXTPROC glad_glGetTextureParameterIuivEXT; -PFNGLMULTITEXPARAMETERIIVEXTPROC glad_glMultiTexParameterIivEXT; -PFNGLMULTITEXPARAMETERIUIVEXTPROC glad_glMultiTexParameterIuivEXT; -PFNGLGETMULTITEXPARAMETERIIVEXTPROC glad_glGetMultiTexParameterIivEXT; -PFNGLGETMULTITEXPARAMETERIUIVEXTPROC glad_glGetMultiTexParameterIuivEXT; -PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC glad_glNamedProgramLocalParameters4fvEXT; -PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC glad_glNamedProgramLocalParameterI4iEXT; -PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC glad_glNamedProgramLocalParameterI4ivEXT; -PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC glad_glNamedProgramLocalParametersI4ivEXT; -PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC glad_glNamedProgramLocalParameterI4uiEXT; -PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC glad_glNamedProgramLocalParameterI4uivEXT; -PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC glad_glNamedProgramLocalParametersI4uivEXT; -PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC glad_glGetNamedProgramLocalParameterIivEXT; -PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC glad_glGetNamedProgramLocalParameterIuivEXT; -PFNGLENABLECLIENTSTATEIEXTPROC glad_glEnableClientStateiEXT; -PFNGLDISABLECLIENTSTATEIEXTPROC glad_glDisableClientStateiEXT; -PFNGLGETFLOATI_VEXTPROC glad_glGetFloati_vEXT; -PFNGLGETDOUBLEI_VEXTPROC glad_glGetDoublei_vEXT; -PFNGLGETPOINTERI_VEXTPROC glad_glGetPointeri_vEXT; -PFNGLNAMEDPROGRAMSTRINGEXTPROC glad_glNamedProgramStringEXT; -PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC glad_glNamedProgramLocalParameter4dEXT; -PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC glad_glNamedProgramLocalParameter4dvEXT; -PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC glad_glNamedProgramLocalParameter4fEXT; -PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC glad_glNamedProgramLocalParameter4fvEXT; -PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC glad_glGetNamedProgramLocalParameterdvEXT; -PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC glad_glGetNamedProgramLocalParameterfvEXT; -PFNGLGETNAMEDPROGRAMIVEXTPROC glad_glGetNamedProgramivEXT; -PFNGLGETNAMEDPROGRAMSTRINGEXTPROC glad_glGetNamedProgramStringEXT; -PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC glad_glNamedRenderbufferStorageEXT; -PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC glad_glGetNamedRenderbufferParameterivEXT; -PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC glad_glNamedRenderbufferStorageMultisampleEXT; -PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC glad_glNamedRenderbufferStorageMultisampleCoverageEXT; -PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC glad_glCheckNamedFramebufferStatusEXT; -PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC glad_glNamedFramebufferTexture1DEXT; -PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC glad_glNamedFramebufferTexture2DEXT; -PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC glad_glNamedFramebufferTexture3DEXT; -PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC glad_glNamedFramebufferRenderbufferEXT; -PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glad_glGetNamedFramebufferAttachmentParameterivEXT; -PFNGLGENERATETEXTUREMIPMAPEXTPROC glad_glGenerateTextureMipmapEXT; -PFNGLGENERATEMULTITEXMIPMAPEXTPROC glad_glGenerateMultiTexMipmapEXT; -PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC glad_glFramebufferDrawBufferEXT; -PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC glad_glFramebufferDrawBuffersEXT; -PFNGLFRAMEBUFFERREADBUFFEREXTPROC glad_glFramebufferReadBufferEXT; -PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC glad_glGetFramebufferParameterivEXT; -PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC glad_glNamedCopyBufferSubDataEXT; -PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC glad_glNamedFramebufferTextureEXT; -PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC glad_glNamedFramebufferTextureLayerEXT; -PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC glad_glNamedFramebufferTextureFaceEXT; -PFNGLTEXTURERENDERBUFFEREXTPROC glad_glTextureRenderbufferEXT; -PFNGLMULTITEXRENDERBUFFEREXTPROC glad_glMultiTexRenderbufferEXT; -PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC glad_glVertexArrayVertexOffsetEXT; -PFNGLVERTEXARRAYCOLOROFFSETEXTPROC glad_glVertexArrayColorOffsetEXT; -PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC glad_glVertexArrayEdgeFlagOffsetEXT; -PFNGLVERTEXARRAYINDEXOFFSETEXTPROC glad_glVertexArrayIndexOffsetEXT; -PFNGLVERTEXARRAYNORMALOFFSETEXTPROC glad_glVertexArrayNormalOffsetEXT; -PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC glad_glVertexArrayTexCoordOffsetEXT; -PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC glad_glVertexArrayMultiTexCoordOffsetEXT; -PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC glad_glVertexArrayFogCoordOffsetEXT; -PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC glad_glVertexArraySecondaryColorOffsetEXT; -PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC glad_glVertexArrayVertexAttribOffsetEXT; -PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC glad_glVertexArrayVertexAttribIOffsetEXT; -PFNGLENABLEVERTEXARRAYEXTPROC glad_glEnableVertexArrayEXT; -PFNGLDISABLEVERTEXARRAYEXTPROC glad_glDisableVertexArrayEXT; -PFNGLENABLEVERTEXARRAYATTRIBEXTPROC glad_glEnableVertexArrayAttribEXT; -PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC glad_glDisableVertexArrayAttribEXT; -PFNGLGETVERTEXARRAYINTEGERVEXTPROC glad_glGetVertexArrayIntegervEXT; -PFNGLGETVERTEXARRAYPOINTERVEXTPROC glad_glGetVertexArrayPointervEXT; -PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC glad_glGetVertexArrayIntegeri_vEXT; -PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC glad_glGetVertexArrayPointeri_vEXT; -PFNGLMAPNAMEDBUFFERRANGEEXTPROC glad_glMapNamedBufferRangeEXT; -PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC glad_glFlushMappedNamedBufferRangeEXT; -PFNGLNAMEDBUFFERSTORAGEEXTPROC glad_glNamedBufferStorageEXT; -PFNGLCLEARNAMEDBUFFERDATAEXTPROC glad_glClearNamedBufferDataEXT; -PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC glad_glClearNamedBufferSubDataEXT; -PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC glad_glNamedFramebufferParameteriEXT; -PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC glad_glGetNamedFramebufferParameterivEXT; -PFNGLPROGRAMUNIFORM1DEXTPROC glad_glProgramUniform1dEXT; -PFNGLPROGRAMUNIFORM2DEXTPROC glad_glProgramUniform2dEXT; -PFNGLPROGRAMUNIFORM3DEXTPROC glad_glProgramUniform3dEXT; -PFNGLPROGRAMUNIFORM4DEXTPROC glad_glProgramUniform4dEXT; -PFNGLPROGRAMUNIFORM1DVEXTPROC glad_glProgramUniform1dvEXT; -PFNGLPROGRAMUNIFORM2DVEXTPROC glad_glProgramUniform2dvEXT; -PFNGLPROGRAMUNIFORM3DVEXTPROC glad_glProgramUniform3dvEXT; -PFNGLPROGRAMUNIFORM4DVEXTPROC glad_glProgramUniform4dvEXT; -PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC glad_glProgramUniformMatrix2dvEXT; -PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC glad_glProgramUniformMatrix3dvEXT; -PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC glad_glProgramUniformMatrix4dvEXT; -PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC glad_glProgramUniformMatrix2x3dvEXT; -PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC glad_glProgramUniformMatrix2x4dvEXT; -PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC glad_glProgramUniformMatrix3x2dvEXT; -PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC glad_glProgramUniformMatrix3x4dvEXT; -PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC glad_glProgramUniformMatrix4x2dvEXT; -PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC glad_glProgramUniformMatrix4x3dvEXT; -PFNGLTEXTUREBUFFERRANGEEXTPROC glad_glTextureBufferRangeEXT; -PFNGLTEXTURESTORAGE1DEXTPROC glad_glTextureStorage1DEXT; -PFNGLTEXTURESTORAGE2DEXTPROC glad_glTextureStorage2DEXT; -PFNGLTEXTURESTORAGE3DEXTPROC glad_glTextureStorage3DEXT; -PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC glad_glTextureStorage2DMultisampleEXT; -PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC glad_glTextureStorage3DMultisampleEXT; -PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC glad_glVertexArrayBindVertexBufferEXT; -PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC glad_glVertexArrayVertexAttribFormatEXT; -PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC glad_glVertexArrayVertexAttribIFormatEXT; -PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC glad_glVertexArrayVertexAttribLFormatEXT; -PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC glad_glVertexArrayVertexAttribBindingEXT; -PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC glad_glVertexArrayVertexBindingDivisorEXT; -PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC glad_glVertexArrayVertexAttribLOffsetEXT; -PFNGLTEXTUREPAGECOMMITMENTEXTPROC glad_glTexturePageCommitmentEXT; -PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC glad_glVertexArrayVertexAttribDivisorEXT; -PFNGLSETMULTISAMPLEFVAMDPROC glad_glSetMultisamplefvAMD; -PFNGLAREPROGRAMSRESIDENTNVPROC glad_glAreProgramsResidentNV; -PFNGLBINDPROGRAMNVPROC glad_glBindProgramNV; -PFNGLDELETEPROGRAMSNVPROC glad_glDeleteProgramsNV; -PFNGLEXECUTEPROGRAMNVPROC glad_glExecuteProgramNV; -PFNGLGENPROGRAMSNVPROC glad_glGenProgramsNV; -PFNGLGETPROGRAMPARAMETERDVNVPROC glad_glGetProgramParameterdvNV; -PFNGLGETPROGRAMPARAMETERFVNVPROC glad_glGetProgramParameterfvNV; -PFNGLGETPROGRAMIVNVPROC glad_glGetProgramivNV; -PFNGLGETPROGRAMSTRINGNVPROC glad_glGetProgramStringNV; -PFNGLGETTRACKMATRIXIVNVPROC glad_glGetTrackMatrixivNV; -PFNGLGETVERTEXATTRIBDVNVPROC glad_glGetVertexAttribdvNV; -PFNGLGETVERTEXATTRIBFVNVPROC glad_glGetVertexAttribfvNV; -PFNGLGETVERTEXATTRIBIVNVPROC glad_glGetVertexAttribivNV; -PFNGLGETVERTEXATTRIBPOINTERVNVPROC glad_glGetVertexAttribPointervNV; -PFNGLISPROGRAMNVPROC glad_glIsProgramNV; -PFNGLLOADPROGRAMNVPROC glad_glLoadProgramNV; -PFNGLPROGRAMPARAMETER4DNVPROC glad_glProgramParameter4dNV; -PFNGLPROGRAMPARAMETER4DVNVPROC glad_glProgramParameter4dvNV; -PFNGLPROGRAMPARAMETER4FNVPROC glad_glProgramParameter4fNV; -PFNGLPROGRAMPARAMETER4FVNVPROC glad_glProgramParameter4fvNV; -PFNGLPROGRAMPARAMETERS4DVNVPROC glad_glProgramParameters4dvNV; -PFNGLPROGRAMPARAMETERS4FVNVPROC glad_glProgramParameters4fvNV; -PFNGLREQUESTRESIDENTPROGRAMSNVPROC glad_glRequestResidentProgramsNV; -PFNGLTRACKMATRIXNVPROC glad_glTrackMatrixNV; -PFNGLVERTEXATTRIBPOINTERNVPROC glad_glVertexAttribPointerNV; -PFNGLVERTEXATTRIB1DNVPROC glad_glVertexAttrib1dNV; -PFNGLVERTEXATTRIB1DVNVPROC glad_glVertexAttrib1dvNV; -PFNGLVERTEXATTRIB1FNVPROC glad_glVertexAttrib1fNV; -PFNGLVERTEXATTRIB1FVNVPROC glad_glVertexAttrib1fvNV; -PFNGLVERTEXATTRIB1SNVPROC glad_glVertexAttrib1sNV; -PFNGLVERTEXATTRIB1SVNVPROC glad_glVertexAttrib1svNV; -PFNGLVERTEXATTRIB2DNVPROC glad_glVertexAttrib2dNV; -PFNGLVERTEXATTRIB2DVNVPROC glad_glVertexAttrib2dvNV; -PFNGLVERTEXATTRIB2FNVPROC glad_glVertexAttrib2fNV; -PFNGLVERTEXATTRIB2FVNVPROC glad_glVertexAttrib2fvNV; -PFNGLVERTEXATTRIB2SNVPROC glad_glVertexAttrib2sNV; -PFNGLVERTEXATTRIB2SVNVPROC glad_glVertexAttrib2svNV; -PFNGLVERTEXATTRIB3DNVPROC glad_glVertexAttrib3dNV; -PFNGLVERTEXATTRIB3DVNVPROC glad_glVertexAttrib3dvNV; -PFNGLVERTEXATTRIB3FNVPROC glad_glVertexAttrib3fNV; -PFNGLVERTEXATTRIB3FVNVPROC glad_glVertexAttrib3fvNV; -PFNGLVERTEXATTRIB3SNVPROC glad_glVertexAttrib3sNV; -PFNGLVERTEXATTRIB3SVNVPROC glad_glVertexAttrib3svNV; -PFNGLVERTEXATTRIB4DNVPROC glad_glVertexAttrib4dNV; -PFNGLVERTEXATTRIB4DVNVPROC glad_glVertexAttrib4dvNV; -PFNGLVERTEXATTRIB4FNVPROC glad_glVertexAttrib4fNV; -PFNGLVERTEXATTRIB4FVNVPROC glad_glVertexAttrib4fvNV; -PFNGLVERTEXATTRIB4SNVPROC glad_glVertexAttrib4sNV; -PFNGLVERTEXATTRIB4SVNVPROC glad_glVertexAttrib4svNV; -PFNGLVERTEXATTRIB4UBNVPROC glad_glVertexAttrib4ubNV; -PFNGLVERTEXATTRIB4UBVNVPROC glad_glVertexAttrib4ubvNV; -PFNGLVERTEXATTRIBS1DVNVPROC glad_glVertexAttribs1dvNV; -PFNGLVERTEXATTRIBS1FVNVPROC glad_glVertexAttribs1fvNV; -PFNGLVERTEXATTRIBS1SVNVPROC glad_glVertexAttribs1svNV; -PFNGLVERTEXATTRIBS2DVNVPROC glad_glVertexAttribs2dvNV; -PFNGLVERTEXATTRIBS2FVNVPROC glad_glVertexAttribs2fvNV; -PFNGLVERTEXATTRIBS2SVNVPROC glad_glVertexAttribs2svNV; -PFNGLVERTEXATTRIBS3DVNVPROC glad_glVertexAttribs3dvNV; -PFNGLVERTEXATTRIBS3FVNVPROC glad_glVertexAttribs3fvNV; -PFNGLVERTEXATTRIBS3SVNVPROC glad_glVertexAttribs3svNV; -PFNGLVERTEXATTRIBS4DVNVPROC glad_glVertexAttribs4dvNV; -PFNGLVERTEXATTRIBS4FVNVPROC glad_glVertexAttribs4fvNV; -PFNGLVERTEXATTRIBS4SVNVPROC glad_glVertexAttribs4svNV; -PFNGLVERTEXATTRIBS4UBVNVPROC glad_glVertexAttribs4ubvNV; -PFNGLBEGINVERTEXSHADEREXTPROC glad_glBeginVertexShaderEXT; -PFNGLENDVERTEXSHADEREXTPROC glad_glEndVertexShaderEXT; -PFNGLBINDVERTEXSHADEREXTPROC glad_glBindVertexShaderEXT; -PFNGLGENVERTEXSHADERSEXTPROC glad_glGenVertexShadersEXT; -PFNGLDELETEVERTEXSHADEREXTPROC glad_glDeleteVertexShaderEXT; -PFNGLSHADEROP1EXTPROC glad_glShaderOp1EXT; -PFNGLSHADEROP2EXTPROC glad_glShaderOp2EXT; -PFNGLSHADEROP3EXTPROC glad_glShaderOp3EXT; -PFNGLSWIZZLEEXTPROC glad_glSwizzleEXT; -PFNGLWRITEMASKEXTPROC glad_glWriteMaskEXT; -PFNGLINSERTCOMPONENTEXTPROC glad_glInsertComponentEXT; -PFNGLEXTRACTCOMPONENTEXTPROC glad_glExtractComponentEXT; -PFNGLGENSYMBOLSEXTPROC glad_glGenSymbolsEXT; -PFNGLSETINVARIANTEXTPROC glad_glSetInvariantEXT; -PFNGLSETLOCALCONSTANTEXTPROC glad_glSetLocalConstantEXT; -PFNGLVARIANTBVEXTPROC glad_glVariantbvEXT; -PFNGLVARIANTSVEXTPROC glad_glVariantsvEXT; -PFNGLVARIANTIVEXTPROC glad_glVariantivEXT; -PFNGLVARIANTFVEXTPROC glad_glVariantfvEXT; -PFNGLVARIANTDVEXTPROC glad_glVariantdvEXT; -PFNGLVARIANTUBVEXTPROC glad_glVariantubvEXT; -PFNGLVARIANTUSVEXTPROC glad_glVariantusvEXT; -PFNGLVARIANTUIVEXTPROC glad_glVariantuivEXT; -PFNGLVARIANTPOINTEREXTPROC glad_glVariantPointerEXT; -PFNGLENABLEVARIANTCLIENTSTATEEXTPROC glad_glEnableVariantClientStateEXT; -PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC glad_glDisableVariantClientStateEXT; -PFNGLBINDLIGHTPARAMETEREXTPROC glad_glBindLightParameterEXT; -PFNGLBINDMATERIALPARAMETEREXTPROC glad_glBindMaterialParameterEXT; -PFNGLBINDTEXGENPARAMETEREXTPROC glad_glBindTexGenParameterEXT; -PFNGLBINDTEXTUREUNITPARAMETEREXTPROC glad_glBindTextureUnitParameterEXT; -PFNGLBINDPARAMETEREXTPROC glad_glBindParameterEXT; -PFNGLISVARIANTENABLEDEXTPROC glad_glIsVariantEnabledEXT; -PFNGLGETVARIANTBOOLEANVEXTPROC glad_glGetVariantBooleanvEXT; -PFNGLGETVARIANTINTEGERVEXTPROC glad_glGetVariantIntegervEXT; -PFNGLGETVARIANTFLOATVEXTPROC glad_glGetVariantFloatvEXT; -PFNGLGETVARIANTPOINTERVEXTPROC glad_glGetVariantPointervEXT; -PFNGLGETINVARIANTBOOLEANVEXTPROC glad_glGetInvariantBooleanvEXT; -PFNGLGETINVARIANTINTEGERVEXTPROC glad_glGetInvariantIntegervEXT; -PFNGLGETINVARIANTFLOATVEXTPROC glad_glGetInvariantFloatvEXT; -PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC glad_glGetLocalConstantBooleanvEXT; -PFNGLGETLOCALCONSTANTINTEGERVEXTPROC glad_glGetLocalConstantIntegervEXT; -PFNGLGETLOCALCONSTANTFLOATVEXTPROC glad_glGetLocalConstantFloatvEXT; -PFNGLBLENDFUNCSEPARATEEXTPROC glad_glBlendFuncSeparateEXT; -PFNGLGENFENCESAPPLEPROC glad_glGenFencesAPPLE; -PFNGLDELETEFENCESAPPLEPROC glad_glDeleteFencesAPPLE; -PFNGLSETFENCEAPPLEPROC glad_glSetFenceAPPLE; -PFNGLISFENCEAPPLEPROC glad_glIsFenceAPPLE; -PFNGLTESTFENCEAPPLEPROC glad_glTestFenceAPPLE; -PFNGLFINISHFENCEAPPLEPROC glad_glFinishFenceAPPLE; -PFNGLTESTOBJECTAPPLEPROC glad_glTestObjectAPPLE; -PFNGLFINISHOBJECTAPPLEPROC glad_glFinishObjectAPPLE; -PFNGLMULTITEXCOORD1BOESPROC glad_glMultiTexCoord1bOES; -PFNGLMULTITEXCOORD1BVOESPROC glad_glMultiTexCoord1bvOES; -PFNGLMULTITEXCOORD2BOESPROC glad_glMultiTexCoord2bOES; -PFNGLMULTITEXCOORD2BVOESPROC glad_glMultiTexCoord2bvOES; -PFNGLMULTITEXCOORD3BOESPROC glad_glMultiTexCoord3bOES; -PFNGLMULTITEXCOORD3BVOESPROC glad_glMultiTexCoord3bvOES; -PFNGLMULTITEXCOORD4BOESPROC glad_glMultiTexCoord4bOES; -PFNGLMULTITEXCOORD4BVOESPROC glad_glMultiTexCoord4bvOES; -PFNGLTEXCOORD1BOESPROC glad_glTexCoord1bOES; -PFNGLTEXCOORD1BVOESPROC glad_glTexCoord1bvOES; -PFNGLTEXCOORD2BOESPROC glad_glTexCoord2bOES; -PFNGLTEXCOORD2BVOESPROC glad_glTexCoord2bvOES; -PFNGLTEXCOORD3BOESPROC glad_glTexCoord3bOES; -PFNGLTEXCOORD3BVOESPROC glad_glTexCoord3bvOES; -PFNGLTEXCOORD4BOESPROC glad_glTexCoord4bOES; -PFNGLTEXCOORD4BVOESPROC glad_glTexCoord4bvOES; -PFNGLVERTEX2BOESPROC glad_glVertex2bOES; -PFNGLVERTEX2BVOESPROC glad_glVertex2bvOES; -PFNGLVERTEX3BOESPROC glad_glVertex3bOES; -PFNGLVERTEX3BVOESPROC glad_glVertex3bvOES; -PFNGLVERTEX4BOESPROC glad_glVertex4bOES; -PFNGLVERTEX4BVOESPROC glad_glVertex4bvOES; -PFNGLLOADTRANSPOSEMATRIXFARBPROC glad_glLoadTransposeMatrixfARB; -PFNGLLOADTRANSPOSEMATRIXDARBPROC glad_glLoadTransposeMatrixdARB; -PFNGLMULTTRANSPOSEMATRIXFARBPROC glad_glMultTransposeMatrixfARB; -PFNGLMULTTRANSPOSEMATRIXDARBPROC glad_glMultTransposeMatrixdARB; -PFNGLFOGCOORDFEXTPROC glad_glFogCoordfEXT; -PFNGLFOGCOORDFVEXTPROC glad_glFogCoordfvEXT; -PFNGLFOGCOORDDEXTPROC glad_glFogCoorddEXT; -PFNGLFOGCOORDDVEXTPROC glad_glFogCoorddvEXT; -PFNGLFOGCOORDPOINTEREXTPROC glad_glFogCoordPointerEXT; -PFNGLARRAYELEMENTEXTPROC glad_glArrayElementEXT; -PFNGLCOLORPOINTEREXTPROC glad_glColorPointerEXT; -PFNGLDRAWARRAYSEXTPROC glad_glDrawArraysEXT; -PFNGLEDGEFLAGPOINTEREXTPROC glad_glEdgeFlagPointerEXT; -PFNGLGETPOINTERVEXTPROC glad_glGetPointervEXT; -PFNGLINDEXPOINTEREXTPROC glad_glIndexPointerEXT; -PFNGLNORMALPOINTEREXTPROC glad_glNormalPointerEXT; -PFNGLTEXCOORDPOINTEREXTPROC glad_glTexCoordPointerEXT; -PFNGLVERTEXPOINTEREXTPROC glad_glVertexPointerEXT; -PFNGLBLENDEQUATIONSEPARATEEXTPROC glad_glBlendEquationSeparateEXT; -PFNGLCOVERAGEMODULATIONTABLENVPROC glad_glCoverageModulationTableNV; -PFNGLGETCOVERAGEMODULATIONTABLENVPROC glad_glGetCoverageModulationTableNV; -PFNGLCOVERAGEMODULATIONNVPROC glad_glCoverageModulationNV; -PFNGLBEGINCONDITIONALRENDERNVXPROC glad_glBeginConditionalRenderNVX; -PFNGLENDCONDITIONALRENDERNVXPROC glad_glEndConditionalRenderNVX; -PFNGLMULTIDRAWARRAYSINDIRECTPROC glad_glMultiDrawArraysIndirect; -PFNGLMULTIDRAWELEMENTSINDIRECTPROC glad_glMultiDrawElementsIndirect; -PFNGLCOPYIMAGESUBDATANVPROC glad_glCopyImageSubDataNV; -PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC glad_glApplyFramebufferAttachmentCMAAINTEL; -PFNGLBINDTRANSFORMFEEDBACKPROC glad_glBindTransformFeedback; -PFNGLDELETETRANSFORMFEEDBACKSPROC glad_glDeleteTransformFeedbacks; -PFNGLGENTRANSFORMFEEDBACKSPROC glad_glGenTransformFeedbacks; -PFNGLISTRANSFORMFEEDBACKPROC glad_glIsTransformFeedback; -PFNGLPAUSETRANSFORMFEEDBACKPROC glad_glPauseTransformFeedback; -PFNGLRESUMETRANSFORMFEEDBACKPROC glad_glResumeTransformFeedback; -PFNGLDRAWTRANSFORMFEEDBACKPROC glad_glDrawTransformFeedback; -PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC glad_glDrawTransformFeedbackStream; -PFNGLBEGINQUERYINDEXEDPROC glad_glBeginQueryIndexed; -PFNGLENDQUERYINDEXEDPROC glad_glEndQueryIndexed; -PFNGLGETQUERYINDEXEDIVPROC glad_glGetQueryIndexediv; -PFNGLINSERTEVENTMARKEREXTPROC glad_glInsertEventMarkerEXT; -PFNGLPUSHGROUPMARKEREXTPROC glad_glPushGroupMarkerEXT; -PFNGLPOPGROUPMARKEREXTPROC glad_glPopGroupMarkerEXT; -PFNGLPIXELTRANSFORMPARAMETERIEXTPROC glad_glPixelTransformParameteriEXT; -PFNGLPIXELTRANSFORMPARAMETERFEXTPROC glad_glPixelTransformParameterfEXT; -PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC glad_glPixelTransformParameterivEXT; -PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC glad_glPixelTransformParameterfvEXT; -PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC glad_glGetPixelTransformParameterivEXT; -PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC glad_glGetPixelTransformParameterfvEXT; -PFNGLGENFRAGMENTSHADERSATIPROC glad_glGenFragmentShadersATI; -PFNGLBINDFRAGMENTSHADERATIPROC glad_glBindFragmentShaderATI; -PFNGLDELETEFRAGMENTSHADERATIPROC glad_glDeleteFragmentShaderATI; -PFNGLBEGINFRAGMENTSHADERATIPROC glad_glBeginFragmentShaderATI; -PFNGLENDFRAGMENTSHADERATIPROC glad_glEndFragmentShaderATI; -PFNGLPASSTEXCOORDATIPROC glad_glPassTexCoordATI; -PFNGLSAMPLEMAPATIPROC glad_glSampleMapATI; -PFNGLCOLORFRAGMENTOP1ATIPROC glad_glColorFragmentOp1ATI; -PFNGLCOLORFRAGMENTOP2ATIPROC glad_glColorFragmentOp2ATI; -PFNGLCOLORFRAGMENTOP3ATIPROC glad_glColorFragmentOp3ATI; -PFNGLALPHAFRAGMENTOP1ATIPROC glad_glAlphaFragmentOp1ATI; -PFNGLALPHAFRAGMENTOP2ATIPROC glad_glAlphaFragmentOp2ATI; -PFNGLALPHAFRAGMENTOP3ATIPROC glad_glAlphaFragmentOp3ATI; -PFNGLSETFRAGMENTSHADERCONSTANTATIPROC glad_glSetFragmentShaderConstantATI; -PFNGLREPLACEMENTCODEUISUNPROC glad_glReplacementCodeuiSUN; -PFNGLREPLACEMENTCODEUSSUNPROC glad_glReplacementCodeusSUN; -PFNGLREPLACEMENTCODEUBSUNPROC glad_glReplacementCodeubSUN; -PFNGLREPLACEMENTCODEUIVSUNPROC glad_glReplacementCodeuivSUN; -PFNGLREPLACEMENTCODEUSVSUNPROC glad_glReplacementCodeusvSUN; -PFNGLREPLACEMENTCODEUBVSUNPROC glad_glReplacementCodeubvSUN; -PFNGLREPLACEMENTCODEPOINTERSUNPROC glad_glReplacementCodePointerSUN; -PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC glad_glDrawTransformFeedbackInstanced; -PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC glad_glDrawTransformFeedbackStreamInstanced; -PFNGLASYNCMARKERSGIXPROC glad_glAsyncMarkerSGIX; -PFNGLFINISHASYNCSGIXPROC glad_glFinishAsyncSGIX; -PFNGLPOLLASYNCSGIXPROC glad_glPollAsyncSGIX; -PFNGLGENASYNCMARKERSSGIXPROC glad_glGenAsyncMarkersSGIX; -PFNGLDELETEASYNCMARKERSSGIXPROC glad_glDeleteAsyncMarkersSGIX; -PFNGLISASYNCMARKERSGIXPROC glad_glIsAsyncMarkerSGIX; -PFNGLBEGINPERFQUERYINTELPROC glad_glBeginPerfQueryINTEL; -PFNGLCREATEPERFQUERYINTELPROC glad_glCreatePerfQueryINTEL; -PFNGLDELETEPERFQUERYINTELPROC glad_glDeletePerfQueryINTEL; -PFNGLENDPERFQUERYINTELPROC glad_glEndPerfQueryINTEL; -PFNGLGETFIRSTPERFQUERYIDINTELPROC glad_glGetFirstPerfQueryIdINTEL; -PFNGLGETNEXTPERFQUERYIDINTELPROC glad_glGetNextPerfQueryIdINTEL; -PFNGLGETPERFCOUNTERINFOINTELPROC glad_glGetPerfCounterInfoINTEL; -PFNGLGETPERFQUERYDATAINTELPROC glad_glGetPerfQueryDataINTEL; -PFNGLGETPERFQUERYIDBYNAMEINTELPROC glad_glGetPerfQueryIdByNameINTEL; -PFNGLGETPERFQUERYINFOINTELPROC glad_glGetPerfQueryInfoINTEL; -PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC glad_glMultiDrawArraysIndirectBindlessCountNV; -PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC glad_glMultiDrawElementsIndirectBindlessCountNV; -PFNGLRELEASESHADERCOMPILERPROC glad_glReleaseShaderCompiler; -PFNGLSHADERBINARYPROC glad_glShaderBinary; -PFNGLGETSHADERPRECISIONFORMATPROC glad_glGetShaderPrecisionFormat; -PFNGLDEPTHRANGEFPROC glad_glDepthRangef; -PFNGLCLEARDEPTHFPROC glad_glClearDepthf; -PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC glad_glMultiDrawArraysIndirectCountARB; -PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC glad_glMultiDrawElementsIndirectCountARB; -PFNGLVERTEX2HNVPROC glad_glVertex2hNV; -PFNGLVERTEX2HVNVPROC glad_glVertex2hvNV; -PFNGLVERTEX3HNVPROC glad_glVertex3hNV; -PFNGLVERTEX3HVNVPROC glad_glVertex3hvNV; -PFNGLVERTEX4HNVPROC glad_glVertex4hNV; -PFNGLVERTEX4HVNVPROC glad_glVertex4hvNV; -PFNGLNORMAL3HNVPROC glad_glNormal3hNV; -PFNGLNORMAL3HVNVPROC glad_glNormal3hvNV; -PFNGLCOLOR3HNVPROC glad_glColor3hNV; -PFNGLCOLOR3HVNVPROC glad_glColor3hvNV; -PFNGLCOLOR4HNVPROC glad_glColor4hNV; -PFNGLCOLOR4HVNVPROC glad_glColor4hvNV; -PFNGLTEXCOORD1HNVPROC glad_glTexCoord1hNV; -PFNGLTEXCOORD1HVNVPROC glad_glTexCoord1hvNV; -PFNGLTEXCOORD2HNVPROC glad_glTexCoord2hNV; -PFNGLTEXCOORD2HVNVPROC glad_glTexCoord2hvNV; -PFNGLTEXCOORD3HNVPROC glad_glTexCoord3hNV; -PFNGLTEXCOORD3HVNVPROC glad_glTexCoord3hvNV; -PFNGLTEXCOORD4HNVPROC glad_glTexCoord4hNV; -PFNGLTEXCOORD4HVNVPROC glad_glTexCoord4hvNV; -PFNGLMULTITEXCOORD1HNVPROC glad_glMultiTexCoord1hNV; -PFNGLMULTITEXCOORD1HVNVPROC glad_glMultiTexCoord1hvNV; -PFNGLMULTITEXCOORD2HNVPROC glad_glMultiTexCoord2hNV; -PFNGLMULTITEXCOORD2HVNVPROC glad_glMultiTexCoord2hvNV; -PFNGLMULTITEXCOORD3HNVPROC glad_glMultiTexCoord3hNV; -PFNGLMULTITEXCOORD3HVNVPROC glad_glMultiTexCoord3hvNV; -PFNGLMULTITEXCOORD4HNVPROC glad_glMultiTexCoord4hNV; -PFNGLMULTITEXCOORD4HVNVPROC glad_glMultiTexCoord4hvNV; -PFNGLFOGCOORDHNVPROC glad_glFogCoordhNV; -PFNGLFOGCOORDHVNVPROC glad_glFogCoordhvNV; -PFNGLSECONDARYCOLOR3HNVPROC glad_glSecondaryColor3hNV; -PFNGLSECONDARYCOLOR3HVNVPROC glad_glSecondaryColor3hvNV; -PFNGLVERTEXWEIGHTHNVPROC glad_glVertexWeighthNV; -PFNGLVERTEXWEIGHTHVNVPROC glad_glVertexWeighthvNV; -PFNGLVERTEXATTRIB1HNVPROC glad_glVertexAttrib1hNV; -PFNGLVERTEXATTRIB1HVNVPROC glad_glVertexAttrib1hvNV; -PFNGLVERTEXATTRIB2HNVPROC glad_glVertexAttrib2hNV; -PFNGLVERTEXATTRIB2HVNVPROC glad_glVertexAttrib2hvNV; -PFNGLVERTEXATTRIB3HNVPROC glad_glVertexAttrib3hNV; -PFNGLVERTEXATTRIB3HVNVPROC glad_glVertexAttrib3hvNV; -PFNGLVERTEXATTRIB4HNVPROC glad_glVertexAttrib4hNV; -PFNGLVERTEXATTRIB4HVNVPROC glad_glVertexAttrib4hvNV; -PFNGLVERTEXATTRIBS1HVNVPROC glad_glVertexAttribs1hvNV; -PFNGLVERTEXATTRIBS2HVNVPROC glad_glVertexAttribs2hvNV; -PFNGLVERTEXATTRIBS3HVNVPROC glad_glVertexAttribs3hvNV; -PFNGLVERTEXATTRIBS4HVNVPROC glad_glVertexAttribs4hvNV; -PFNGLPRIMITIVEBOUNDINGBOXARBPROC glad_glPrimitiveBoundingBoxARB; -PFNGLPOLYGONOFFSETCLAMPEXTPROC glad_glPolygonOffsetClampEXT; -PFNGLLOCKARRAYSEXTPROC glad_glLockArraysEXT; -PFNGLUNLOCKARRAYSEXTPROC glad_glUnlockArraysEXT; -PFNGLDEPTHRANGEDNVPROC glad_glDepthRangedNV; -PFNGLCLEARDEPTHDNVPROC glad_glClearDepthdNV; -PFNGLDEPTHBOUNDSDNVPROC glad_glDepthBoundsdNV; -PFNGLGENOCCLUSIONQUERIESNVPROC glad_glGenOcclusionQueriesNV; -PFNGLDELETEOCCLUSIONQUERIESNVPROC glad_glDeleteOcclusionQueriesNV; -PFNGLISOCCLUSIONQUERYNVPROC glad_glIsOcclusionQueryNV; -PFNGLBEGINOCCLUSIONQUERYNVPROC glad_glBeginOcclusionQueryNV; -PFNGLENDOCCLUSIONQUERYNVPROC glad_glEndOcclusionQueryNV; -PFNGLGETOCCLUSIONQUERYIVNVPROC glad_glGetOcclusionQueryivNV; -PFNGLGETOCCLUSIONQUERYUIVNVPROC glad_glGetOcclusionQueryuivNV; -PFNGLBUFFERPARAMETERIAPPLEPROC glad_glBufferParameteriAPPLE; -PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC glad_glFlushMappedBufferRangeAPPLE; -PFNGLCOLORTABLEPROC glad_glColorTable; -PFNGLCOLORTABLEPARAMETERFVPROC glad_glColorTableParameterfv; -PFNGLCOLORTABLEPARAMETERIVPROC glad_glColorTableParameteriv; -PFNGLCOPYCOLORTABLEPROC glad_glCopyColorTable; -PFNGLGETCOLORTABLEPROC glad_glGetColorTable; -PFNGLGETCOLORTABLEPARAMETERFVPROC glad_glGetColorTableParameterfv; -PFNGLGETCOLORTABLEPARAMETERIVPROC glad_glGetColorTableParameteriv; -PFNGLCOLORSUBTABLEPROC glad_glColorSubTable; -PFNGLCOPYCOLORSUBTABLEPROC glad_glCopyColorSubTable; -PFNGLCONVOLUTIONFILTER1DPROC glad_glConvolutionFilter1D; -PFNGLCONVOLUTIONFILTER2DPROC glad_glConvolutionFilter2D; -PFNGLCONVOLUTIONPARAMETERFPROC glad_glConvolutionParameterf; -PFNGLCONVOLUTIONPARAMETERFVPROC glad_glConvolutionParameterfv; -PFNGLCONVOLUTIONPARAMETERIPROC glad_glConvolutionParameteri; -PFNGLCONVOLUTIONPARAMETERIVPROC glad_glConvolutionParameteriv; -PFNGLCOPYCONVOLUTIONFILTER1DPROC glad_glCopyConvolutionFilter1D; -PFNGLCOPYCONVOLUTIONFILTER2DPROC glad_glCopyConvolutionFilter2D; -PFNGLGETCONVOLUTIONFILTERPROC glad_glGetConvolutionFilter; -PFNGLGETCONVOLUTIONPARAMETERFVPROC glad_glGetConvolutionParameterfv; -PFNGLGETCONVOLUTIONPARAMETERIVPROC glad_glGetConvolutionParameteriv; -PFNGLGETSEPARABLEFILTERPROC glad_glGetSeparableFilter; -PFNGLSEPARABLEFILTER2DPROC glad_glSeparableFilter2D; -PFNGLGETHISTOGRAMPROC glad_glGetHistogram; -PFNGLGETHISTOGRAMPARAMETERFVPROC glad_glGetHistogramParameterfv; -PFNGLGETHISTOGRAMPARAMETERIVPROC glad_glGetHistogramParameteriv; -PFNGLGETMINMAXPROC glad_glGetMinmax; -PFNGLGETMINMAXPARAMETERFVPROC glad_glGetMinmaxParameterfv; -PFNGLGETMINMAXPARAMETERIVPROC glad_glGetMinmaxParameteriv; -PFNGLHISTOGRAMPROC glad_glHistogram; -PFNGLMINMAXPROC glad_glMinmax; -PFNGLRESETHISTOGRAMPROC glad_glResetHistogram; -PFNGLRESETMINMAXPROC glad_glResetMinmax; -PFNGLBLENDEQUATIONIARBPROC glad_glBlendEquationiARB; -PFNGLBLENDEQUATIONSEPARATEIARBPROC glad_glBlendEquationSeparateiARB; -PFNGLBLENDFUNCIARBPROC glad_glBlendFunciARB; -PFNGLBLENDFUNCSEPARATEIARBPROC glad_glBlendFuncSeparateiARB; -PFNGLCLEARBUFFERDATAPROC glad_glClearBufferData; -PFNGLCLEARBUFFERSUBDATAPROC glad_glClearBufferSubData; -PFNGLSAMPLECOVERAGEARBPROC glad_glSampleCoverageARB; -PFNGLLABELOBJECTEXTPROC glad_glLabelObjectEXT; -PFNGLGETOBJECTLABELEXTPROC glad_glGetObjectLabelEXT; -PFNGLMINSAMPLESHADINGARBPROC glad_glMinSampleShadingARB; -PFNGLGETINTERNALFORMATSAMPLEIVNVPROC glad_glGetInternalformatSampleivNV; -PFNGLSYNCTEXTUREINTELPROC glad_glSyncTextureINTEL; -PFNGLUNMAPTEXTURE2DINTELPROC glad_glUnmapTexture2DINTEL; -PFNGLMAPTEXTURE2DINTELPROC glad_glMapTexture2DINTEL; -PFNGLDISPATCHCOMPUTEPROC glad_glDispatchCompute; -PFNGLDISPATCHCOMPUTEINDIRECTPROC glad_glDispatchComputeIndirect; -PFNGLCOLORPOINTERLISTIBMPROC glad_glColorPointerListIBM; -PFNGLSECONDARYCOLORPOINTERLISTIBMPROC glad_glSecondaryColorPointerListIBM; -PFNGLEDGEFLAGPOINTERLISTIBMPROC glad_glEdgeFlagPointerListIBM; -PFNGLFOGCOORDPOINTERLISTIBMPROC glad_glFogCoordPointerListIBM; -PFNGLINDEXPOINTERLISTIBMPROC glad_glIndexPointerListIBM; -PFNGLNORMALPOINTERLISTIBMPROC glad_glNormalPointerListIBM; -PFNGLTEXCOORDPOINTERLISTIBMPROC glad_glTexCoordPointerListIBM; -PFNGLVERTEXPOINTERLISTIBMPROC glad_glVertexPointerListIBM; -PFNGLCLAMPCOLORARBPROC glad_glClampColorARB; -PFNGLGETTEXTUREHANDLEARBPROC glad_glGetTextureHandleARB; -PFNGLGETTEXTURESAMPLERHANDLEARBPROC glad_glGetTextureSamplerHandleARB; -PFNGLMAKETEXTUREHANDLERESIDENTARBPROC glad_glMakeTextureHandleResidentARB; -PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC glad_glMakeTextureHandleNonResidentARB; -PFNGLGETIMAGEHANDLEARBPROC glad_glGetImageHandleARB; -PFNGLMAKEIMAGEHANDLERESIDENTARBPROC glad_glMakeImageHandleResidentARB; -PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC glad_glMakeImageHandleNonResidentARB; -PFNGLUNIFORMHANDLEUI64ARBPROC glad_glUniformHandleui64ARB; -PFNGLUNIFORMHANDLEUI64VARBPROC glad_glUniformHandleui64vARB; -PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC glad_glProgramUniformHandleui64ARB; -PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC glad_glProgramUniformHandleui64vARB; -PFNGLISTEXTUREHANDLERESIDENTARBPROC glad_glIsTextureHandleResidentARB; -PFNGLISIMAGEHANDLERESIDENTARBPROC glad_glIsImageHandleResidentARB; -PFNGLVERTEXATTRIBL1UI64ARBPROC glad_glVertexAttribL1ui64ARB; -PFNGLVERTEXATTRIBL1UI64VARBPROC glad_glVertexAttribL1ui64vARB; -PFNGLGETVERTEXATTRIBLUI64VARBPROC glad_glGetVertexAttribLui64vARB; -PFNGLWINDOWPOS2DARBPROC glad_glWindowPos2dARB; -PFNGLWINDOWPOS2DVARBPROC glad_glWindowPos2dvARB; -PFNGLWINDOWPOS2FARBPROC glad_glWindowPos2fARB; -PFNGLWINDOWPOS2FVARBPROC glad_glWindowPos2fvARB; -PFNGLWINDOWPOS2IARBPROC glad_glWindowPos2iARB; -PFNGLWINDOWPOS2IVARBPROC glad_glWindowPos2ivARB; -PFNGLWINDOWPOS2SARBPROC glad_glWindowPos2sARB; -PFNGLWINDOWPOS2SVARBPROC glad_glWindowPos2svARB; -PFNGLWINDOWPOS3DARBPROC glad_glWindowPos3dARB; -PFNGLWINDOWPOS3DVARBPROC glad_glWindowPos3dvARB; -PFNGLWINDOWPOS3FARBPROC glad_glWindowPos3fARB; -PFNGLWINDOWPOS3FVARBPROC glad_glWindowPos3fvARB; -PFNGLWINDOWPOS3IARBPROC glad_glWindowPos3iARB; -PFNGLWINDOWPOS3IVARBPROC glad_glWindowPos3ivARB; -PFNGLWINDOWPOS3SARBPROC glad_glWindowPos3sARB; -PFNGLWINDOWPOS3SVARBPROC glad_glWindowPos3svARB; -PFNGLGETINTERNALFORMATIVPROC glad_glGetInternalformativ; -PFNGLBINDIMAGETEXTUREEXTPROC glad_glBindImageTextureEXT; -PFNGLMEMORYBARRIEREXTPROC glad_glMemoryBarrierEXT; -PFNGLCOPYTEXIMAGE1DEXTPROC glad_glCopyTexImage1DEXT; -PFNGLCOPYTEXIMAGE2DEXTPROC glad_glCopyTexImage2DEXT; -PFNGLCOPYTEXSUBIMAGE1DEXTPROC glad_glCopyTexSubImage1DEXT; -PFNGLCOPYTEXSUBIMAGE2DEXTPROC glad_glCopyTexSubImage2DEXT; -PFNGLCOPYTEXSUBIMAGE3DEXTPROC glad_glCopyTexSubImage3DEXT; -PFNGLCOMBINERSTAGEPARAMETERFVNVPROC glad_glCombinerStageParameterfvNV; -PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC glad_glGetCombinerStageParameterfvNV; -PFNGLDRAWTEXTURENVPROC glad_glDrawTextureNV; -PFNGLDRAWARRAYSINSTANCEDEXTPROC glad_glDrawArraysInstancedEXT; -PFNGLDRAWELEMENTSINSTANCEDEXTPROC glad_glDrawElementsInstancedEXT; -PFNGLVIEWPORTARRAYVPROC glad_glViewportArrayv; -PFNGLVIEWPORTINDEXEDFPROC glad_glViewportIndexedf; -PFNGLVIEWPORTINDEXEDFVPROC glad_glViewportIndexedfv; -PFNGLSCISSORARRAYVPROC glad_glScissorArrayv; -PFNGLSCISSORINDEXEDPROC glad_glScissorIndexed; -PFNGLSCISSORINDEXEDVPROC glad_glScissorIndexedv; -PFNGLDEPTHRANGEARRAYVPROC glad_glDepthRangeArrayv; -PFNGLDEPTHRANGEINDEXEDPROC glad_glDepthRangeIndexed; -PFNGLGETFLOATI_VPROC glad_glGetFloati_v; -PFNGLGETDOUBLEI_VPROC glad_glGetDoublei_v; -PFNGLUSEPROGRAMSTAGESPROC glad_glUseProgramStages; -PFNGLACTIVESHADERPROGRAMPROC glad_glActiveShaderProgram; -PFNGLCREATESHADERPROGRAMVPROC glad_glCreateShaderProgramv; -PFNGLBINDPROGRAMPIPELINEPROC glad_glBindProgramPipeline; -PFNGLDELETEPROGRAMPIPELINESPROC glad_glDeleteProgramPipelines; -PFNGLGENPROGRAMPIPELINESPROC glad_glGenProgramPipelines; -PFNGLISPROGRAMPIPELINEPROC glad_glIsProgramPipeline; -PFNGLGETPROGRAMPIPELINEIVPROC glad_glGetProgramPipelineiv; -PFNGLPROGRAMUNIFORM1IPROC glad_glProgramUniform1i; -PFNGLPROGRAMUNIFORM1IVPROC glad_glProgramUniform1iv; -PFNGLPROGRAMUNIFORM1FPROC glad_glProgramUniform1f; -PFNGLPROGRAMUNIFORM1FVPROC glad_glProgramUniform1fv; -PFNGLPROGRAMUNIFORM1DPROC glad_glProgramUniform1d; -PFNGLPROGRAMUNIFORM1DVPROC glad_glProgramUniform1dv; -PFNGLPROGRAMUNIFORM1UIPROC glad_glProgramUniform1ui; -PFNGLPROGRAMUNIFORM1UIVPROC glad_glProgramUniform1uiv; -PFNGLPROGRAMUNIFORM2IPROC glad_glProgramUniform2i; -PFNGLPROGRAMUNIFORM2IVPROC glad_glProgramUniform2iv; -PFNGLPROGRAMUNIFORM2FPROC glad_glProgramUniform2f; -PFNGLPROGRAMUNIFORM2FVPROC glad_glProgramUniform2fv; -PFNGLPROGRAMUNIFORM2DPROC glad_glProgramUniform2d; -PFNGLPROGRAMUNIFORM2DVPROC glad_glProgramUniform2dv; -PFNGLPROGRAMUNIFORM2UIPROC glad_glProgramUniform2ui; -PFNGLPROGRAMUNIFORM2UIVPROC glad_glProgramUniform2uiv; -PFNGLPROGRAMUNIFORM3IPROC glad_glProgramUniform3i; -PFNGLPROGRAMUNIFORM3IVPROC glad_glProgramUniform3iv; -PFNGLPROGRAMUNIFORM3FPROC glad_glProgramUniform3f; -PFNGLPROGRAMUNIFORM3FVPROC glad_glProgramUniform3fv; -PFNGLPROGRAMUNIFORM3DPROC glad_glProgramUniform3d; -PFNGLPROGRAMUNIFORM3DVPROC glad_glProgramUniform3dv; -PFNGLPROGRAMUNIFORM3UIPROC glad_glProgramUniform3ui; -PFNGLPROGRAMUNIFORM3UIVPROC glad_glProgramUniform3uiv; -PFNGLPROGRAMUNIFORM4IPROC glad_glProgramUniform4i; -PFNGLPROGRAMUNIFORM4IVPROC glad_glProgramUniform4iv; -PFNGLPROGRAMUNIFORM4FPROC glad_glProgramUniform4f; -PFNGLPROGRAMUNIFORM4FVPROC glad_glProgramUniform4fv; -PFNGLPROGRAMUNIFORM4DPROC glad_glProgramUniform4d; -PFNGLPROGRAMUNIFORM4DVPROC glad_glProgramUniform4dv; -PFNGLPROGRAMUNIFORM4UIPROC glad_glProgramUniform4ui; -PFNGLPROGRAMUNIFORM4UIVPROC glad_glProgramUniform4uiv; -PFNGLPROGRAMUNIFORMMATRIX2FVPROC glad_glProgramUniformMatrix2fv; -PFNGLPROGRAMUNIFORMMATRIX3FVPROC glad_glProgramUniformMatrix3fv; -PFNGLPROGRAMUNIFORMMATRIX4FVPROC glad_glProgramUniformMatrix4fv; -PFNGLPROGRAMUNIFORMMATRIX2DVPROC glad_glProgramUniformMatrix2dv; -PFNGLPROGRAMUNIFORMMATRIX3DVPROC glad_glProgramUniformMatrix3dv; -PFNGLPROGRAMUNIFORMMATRIX4DVPROC glad_glProgramUniformMatrix4dv; -PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC glad_glProgramUniformMatrix2x3fv; -PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC glad_glProgramUniformMatrix3x2fv; -PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC glad_glProgramUniformMatrix2x4fv; -PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC glad_glProgramUniformMatrix4x2fv; -PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC glad_glProgramUniformMatrix3x4fv; -PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC glad_glProgramUniformMatrix4x3fv; -PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC glad_glProgramUniformMatrix2x3dv; -PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC glad_glProgramUniformMatrix3x2dv; -PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC glad_glProgramUniformMatrix2x4dv; -PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC glad_glProgramUniformMatrix4x2dv; -PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC glad_glProgramUniformMatrix3x4dv; -PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC glad_glProgramUniformMatrix4x3dv; -PFNGLVALIDATEPROGRAMPIPELINEPROC glad_glValidateProgramPipeline; -PFNGLGETPROGRAMPIPELINEINFOLOGPROC glad_glGetProgramPipelineInfoLog; -PFNGLDEPTHBOUNDSEXTPROC glad_glDepthBoundsEXT; -PFNGLBEGINVIDEOCAPTURENVPROC glad_glBeginVideoCaptureNV; -PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC glad_glBindVideoCaptureStreamBufferNV; -PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC glad_glBindVideoCaptureStreamTextureNV; -PFNGLENDVIDEOCAPTURENVPROC glad_glEndVideoCaptureNV; -PFNGLGETVIDEOCAPTUREIVNVPROC glad_glGetVideoCaptureivNV; -PFNGLGETVIDEOCAPTURESTREAMIVNVPROC glad_glGetVideoCaptureStreamivNV; -PFNGLGETVIDEOCAPTURESTREAMFVNVPROC glad_glGetVideoCaptureStreamfvNV; -PFNGLGETVIDEOCAPTURESTREAMDVNVPROC glad_glGetVideoCaptureStreamdvNV; -PFNGLVIDEOCAPTURENVPROC glad_glVideoCaptureNV; -PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC glad_glVideoCaptureStreamParameterivNV; -PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC glad_glVideoCaptureStreamParameterfvNV; -PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC glad_glVideoCaptureStreamParameterdvNV; -PFNGLCURRENTPALETTEMATRIXARBPROC glad_glCurrentPaletteMatrixARB; -PFNGLMATRIXINDEXUBVARBPROC glad_glMatrixIndexubvARB; -PFNGLMATRIXINDEXUSVARBPROC glad_glMatrixIndexusvARB; -PFNGLMATRIXINDEXUIVARBPROC glad_glMatrixIndexuivARB; -PFNGLMATRIXINDEXPOINTERARBPROC glad_glMatrixIndexPointerARB; -PFNGLTEXTURECOLORMASKSGISPROC glad_glTextureColorMaskSGIS; -PFNGLTANGENT3BEXTPROC glad_glTangent3bEXT; -PFNGLTANGENT3BVEXTPROC glad_glTangent3bvEXT; -PFNGLTANGENT3DEXTPROC glad_glTangent3dEXT; -PFNGLTANGENT3DVEXTPROC glad_glTangent3dvEXT; -PFNGLTANGENT3FEXTPROC glad_glTangent3fEXT; -PFNGLTANGENT3FVEXTPROC glad_glTangent3fvEXT; -PFNGLTANGENT3IEXTPROC glad_glTangent3iEXT; -PFNGLTANGENT3IVEXTPROC glad_glTangent3ivEXT; -PFNGLTANGENT3SEXTPROC glad_glTangent3sEXT; -PFNGLTANGENT3SVEXTPROC glad_glTangent3svEXT; -PFNGLBINORMAL3BEXTPROC glad_glBinormal3bEXT; -PFNGLBINORMAL3BVEXTPROC glad_glBinormal3bvEXT; -PFNGLBINORMAL3DEXTPROC glad_glBinormal3dEXT; -PFNGLBINORMAL3DVEXTPROC glad_glBinormal3dvEXT; -PFNGLBINORMAL3FEXTPROC glad_glBinormal3fEXT; -PFNGLBINORMAL3FVEXTPROC glad_glBinormal3fvEXT; -PFNGLBINORMAL3IEXTPROC glad_glBinormal3iEXT; -PFNGLBINORMAL3IVEXTPROC glad_glBinormal3ivEXT; -PFNGLBINORMAL3SEXTPROC glad_glBinormal3sEXT; -PFNGLBINORMAL3SVEXTPROC glad_glBinormal3svEXT; -PFNGLTANGENTPOINTEREXTPROC glad_glTangentPointerEXT; -PFNGLBINORMALPOINTEREXTPROC glad_glBinormalPointerEXT; -PFNGLCOMPRESSEDTEXIMAGE3DARBPROC glad_glCompressedTexImage3DARB; -PFNGLCOMPRESSEDTEXIMAGE2DARBPROC glad_glCompressedTexImage2DARB; -PFNGLCOMPRESSEDTEXIMAGE1DARBPROC glad_glCompressedTexImage1DARB; -PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC glad_glCompressedTexSubImage3DARB; -PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC glad_glCompressedTexSubImage2DARB; -PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC glad_glCompressedTexSubImage1DARB; -PFNGLGETCOMPRESSEDTEXIMAGEARBPROC glad_glGetCompressedTexImageARB; -PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC glad_glGetSubroutineUniformLocation; -PFNGLGETSUBROUTINEINDEXPROC glad_glGetSubroutineIndex; -PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC glad_glGetActiveSubroutineUniformiv; -PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC glad_glGetActiveSubroutineUniformName; -PFNGLGETACTIVESUBROUTINENAMEPROC glad_glGetActiveSubroutineName; -PFNGLUNIFORMSUBROUTINESUIVPROC glad_glUniformSubroutinesuiv; -PFNGLGETUNIFORMSUBROUTINEUIVPROC glad_glGetUniformSubroutineuiv; -PFNGLGETPROGRAMSTAGEIVPROC glad_glGetProgramStageiv; -PFNGLTEXSTORAGE2DMULTISAMPLEPROC glad_glTexStorage2DMultisample; -PFNGLTEXSTORAGE3DMULTISAMPLEPROC glad_glTexStorage3DMultisample; -PFNGLVERTEXATTRIBL1DEXTPROC glad_glVertexAttribL1dEXT; -PFNGLVERTEXATTRIBL2DEXTPROC glad_glVertexAttribL2dEXT; -PFNGLVERTEXATTRIBL3DEXTPROC glad_glVertexAttribL3dEXT; -PFNGLVERTEXATTRIBL4DEXTPROC glad_glVertexAttribL4dEXT; -PFNGLVERTEXATTRIBL1DVEXTPROC glad_glVertexAttribL1dvEXT; -PFNGLVERTEXATTRIBL2DVEXTPROC glad_glVertexAttribL2dvEXT; -PFNGLVERTEXATTRIBL3DVEXTPROC glad_glVertexAttribL3dvEXT; -PFNGLVERTEXATTRIBL4DVEXTPROC glad_glVertexAttribL4dvEXT; -PFNGLVERTEXATTRIBLPOINTEREXTPROC glad_glVertexAttribLPointerEXT; -PFNGLGETVERTEXATTRIBLDVEXTPROC glad_glGetVertexAttribLdvEXT; -PFNGLQUERYMATRIXXOESPROC glad_glQueryMatrixxOES; -PFNGLWINDOWPOS2DMESAPROC glad_glWindowPos2dMESA; -PFNGLWINDOWPOS2DVMESAPROC glad_glWindowPos2dvMESA; -PFNGLWINDOWPOS2FMESAPROC glad_glWindowPos2fMESA; -PFNGLWINDOWPOS2FVMESAPROC glad_glWindowPos2fvMESA; -PFNGLWINDOWPOS2IMESAPROC glad_glWindowPos2iMESA; -PFNGLWINDOWPOS2IVMESAPROC glad_glWindowPos2ivMESA; -PFNGLWINDOWPOS2SMESAPROC glad_glWindowPos2sMESA; -PFNGLWINDOWPOS2SVMESAPROC glad_glWindowPos2svMESA; -PFNGLWINDOWPOS3DMESAPROC glad_glWindowPos3dMESA; -PFNGLWINDOWPOS3DVMESAPROC glad_glWindowPos3dvMESA; -PFNGLWINDOWPOS3FMESAPROC glad_glWindowPos3fMESA; -PFNGLWINDOWPOS3FVMESAPROC glad_glWindowPos3fvMESA; -PFNGLWINDOWPOS3IMESAPROC glad_glWindowPos3iMESA; -PFNGLWINDOWPOS3IVMESAPROC glad_glWindowPos3ivMESA; -PFNGLWINDOWPOS3SMESAPROC glad_glWindowPos3sMESA; -PFNGLWINDOWPOS3SVMESAPROC glad_glWindowPos3svMESA; -PFNGLWINDOWPOS4DMESAPROC glad_glWindowPos4dMESA; -PFNGLWINDOWPOS4DVMESAPROC glad_glWindowPos4dvMESA; -PFNGLWINDOWPOS4FMESAPROC glad_glWindowPos4fMESA; -PFNGLWINDOWPOS4FVMESAPROC glad_glWindowPos4fvMESA; -PFNGLWINDOWPOS4IMESAPROC glad_glWindowPos4iMESA; -PFNGLWINDOWPOS4IVMESAPROC glad_glWindowPos4ivMESA; -PFNGLWINDOWPOS4SMESAPROC glad_glWindowPos4sMESA; -PFNGLWINDOWPOS4SVMESAPROC glad_glWindowPos4svMESA; -PFNGLOBJECTPURGEABLEAPPLEPROC glad_glObjectPurgeableAPPLE; -PFNGLOBJECTUNPURGEABLEAPPLEPROC glad_glObjectUnpurgeableAPPLE; -PFNGLGETOBJECTPARAMETERIVAPPLEPROC glad_glGetObjectParameterivAPPLE; -PFNGLGENQUERIESARBPROC glad_glGenQueriesARB; -PFNGLDELETEQUERIESARBPROC glad_glDeleteQueriesARB; -PFNGLISQUERYARBPROC glad_glIsQueryARB; -PFNGLBEGINQUERYARBPROC glad_glBeginQueryARB; -PFNGLENDQUERYARBPROC glad_glEndQueryARB; -PFNGLGETQUERYIVARBPROC glad_glGetQueryivARB; -PFNGLGETQUERYOBJECTIVARBPROC glad_glGetQueryObjectivARB; -PFNGLGETQUERYOBJECTUIVARBPROC glad_glGetQueryObjectuivARB; -PFNGLCOLORTABLESGIPROC glad_glColorTableSGI; -PFNGLCOLORTABLEPARAMETERFVSGIPROC glad_glColorTableParameterfvSGI; -PFNGLCOLORTABLEPARAMETERIVSGIPROC glad_glColorTableParameterivSGI; -PFNGLCOPYCOLORTABLESGIPROC glad_glCopyColorTableSGI; -PFNGLGETCOLORTABLESGIPROC glad_glGetColorTableSGI; -PFNGLGETCOLORTABLEPARAMETERFVSGIPROC glad_glGetColorTableParameterfvSGI; -PFNGLGETCOLORTABLEPARAMETERIVSGIPROC glad_glGetColorTableParameterivSGI; -PFNGLGETUNIFORMUIVEXTPROC glad_glGetUniformuivEXT; -PFNGLBINDFRAGDATALOCATIONEXTPROC glad_glBindFragDataLocationEXT; -PFNGLGETFRAGDATALOCATIONEXTPROC glad_glGetFragDataLocationEXT; -PFNGLUNIFORM1UIEXTPROC glad_glUniform1uiEXT; -PFNGLUNIFORM2UIEXTPROC glad_glUniform2uiEXT; -PFNGLUNIFORM3UIEXTPROC glad_glUniform3uiEXT; -PFNGLUNIFORM4UIEXTPROC glad_glUniform4uiEXT; -PFNGLUNIFORM1UIVEXTPROC glad_glUniform1uivEXT; -PFNGLUNIFORM2UIVEXTPROC glad_glUniform2uivEXT; -PFNGLUNIFORM3UIVEXTPROC glad_glUniform3uivEXT; -PFNGLUNIFORM4UIVEXTPROC glad_glUniform4uivEXT; -PFNGLPROGRAMVERTEXLIMITNVPROC glad_glProgramVertexLimitNV; -PFNGLFRAMEBUFFERTEXTUREEXTPROC glad_glFramebufferTextureEXT; -PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC glad_glFramebufferTextureFaceEXT; -PFNGLDEBUGMESSAGEENABLEAMDPROC glad_glDebugMessageEnableAMD; -PFNGLDEBUGMESSAGEINSERTAMDPROC glad_glDebugMessageInsertAMD; -PFNGLDEBUGMESSAGECALLBACKAMDPROC glad_glDebugMessageCallbackAMD; -PFNGLGETDEBUGMESSAGELOGAMDPROC glad_glGetDebugMessageLogAMD; -PFNGLACTIVETEXTUREARBPROC glad_glActiveTextureARB; -PFNGLCLIENTACTIVETEXTUREARBPROC glad_glClientActiveTextureARB; -PFNGLMULTITEXCOORD1DARBPROC glad_glMultiTexCoord1dARB; -PFNGLMULTITEXCOORD1DVARBPROC glad_glMultiTexCoord1dvARB; -PFNGLMULTITEXCOORD1FARBPROC glad_glMultiTexCoord1fARB; -PFNGLMULTITEXCOORD1FVARBPROC glad_glMultiTexCoord1fvARB; -PFNGLMULTITEXCOORD1IARBPROC glad_glMultiTexCoord1iARB; -PFNGLMULTITEXCOORD1IVARBPROC glad_glMultiTexCoord1ivARB; -PFNGLMULTITEXCOORD1SARBPROC glad_glMultiTexCoord1sARB; -PFNGLMULTITEXCOORD1SVARBPROC glad_glMultiTexCoord1svARB; -PFNGLMULTITEXCOORD2DARBPROC glad_glMultiTexCoord2dARB; -PFNGLMULTITEXCOORD2DVARBPROC glad_glMultiTexCoord2dvARB; -PFNGLMULTITEXCOORD2FARBPROC glad_glMultiTexCoord2fARB; -PFNGLMULTITEXCOORD2FVARBPROC glad_glMultiTexCoord2fvARB; -PFNGLMULTITEXCOORD2IARBPROC glad_glMultiTexCoord2iARB; -PFNGLMULTITEXCOORD2IVARBPROC glad_glMultiTexCoord2ivARB; -PFNGLMULTITEXCOORD2SARBPROC glad_glMultiTexCoord2sARB; -PFNGLMULTITEXCOORD2SVARBPROC glad_glMultiTexCoord2svARB; -PFNGLMULTITEXCOORD3DARBPROC glad_glMultiTexCoord3dARB; -PFNGLMULTITEXCOORD3DVARBPROC glad_glMultiTexCoord3dvARB; -PFNGLMULTITEXCOORD3FARBPROC glad_glMultiTexCoord3fARB; -PFNGLMULTITEXCOORD3FVARBPROC glad_glMultiTexCoord3fvARB; -PFNGLMULTITEXCOORD3IARBPROC glad_glMultiTexCoord3iARB; -PFNGLMULTITEXCOORD3IVARBPROC glad_glMultiTexCoord3ivARB; -PFNGLMULTITEXCOORD3SARBPROC glad_glMultiTexCoord3sARB; -PFNGLMULTITEXCOORD3SVARBPROC glad_glMultiTexCoord3svARB; -PFNGLMULTITEXCOORD4DARBPROC glad_glMultiTexCoord4dARB; -PFNGLMULTITEXCOORD4DVARBPROC glad_glMultiTexCoord4dvARB; -PFNGLMULTITEXCOORD4FARBPROC glad_glMultiTexCoord4fARB; -PFNGLMULTITEXCOORD4FVARBPROC glad_glMultiTexCoord4fvARB; -PFNGLMULTITEXCOORD4IARBPROC glad_glMultiTexCoord4iARB; -PFNGLMULTITEXCOORD4IVARBPROC glad_glMultiTexCoord4ivARB; -PFNGLMULTITEXCOORD4SARBPROC glad_glMultiTexCoord4sARB; -PFNGLMULTITEXCOORD4SVARBPROC glad_glMultiTexCoord4svARB; -PFNGLDEFORMATIONMAP3DSGIXPROC glad_glDeformationMap3dSGIX; -PFNGLDEFORMATIONMAP3FSGIXPROC glad_glDeformationMap3fSGIX; -PFNGLDEFORMSGIXPROC glad_glDeformSGIX; -PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC glad_glLoadIdentityDeformationMapSGIX; -PFNGLPROVOKINGVERTEXEXTPROC glad_glProvokingVertexEXT; -PFNGLPOINTPARAMETERFARBPROC glad_glPointParameterfARB; -PFNGLPOINTPARAMETERFVARBPROC glad_glPointParameterfvARB; -PFNGLBINDIMAGETEXTUREPROC glad_glBindImageTexture; -PFNGLMEMORYBARRIERPROC glad_glMemoryBarrier; -PFNGLTEXTUREBARRIERPROC glad_glTextureBarrier; -PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC glad_glMultiDrawArraysIndirectBindlessNV; -PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC glad_glMultiDrawElementsIndirectBindlessNV; -PFNGLBEGINTRANSFORMFEEDBACKEXTPROC glad_glBeginTransformFeedbackEXT; -PFNGLENDTRANSFORMFEEDBACKEXTPROC glad_glEndTransformFeedbackEXT; -PFNGLBINDBUFFERRANGEEXTPROC glad_glBindBufferRangeEXT; -PFNGLBINDBUFFEROFFSETEXTPROC glad_glBindBufferOffsetEXT; -PFNGLBINDBUFFERBASEEXTPROC glad_glBindBufferBaseEXT; -PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC glad_glTransformFeedbackVaryingsEXT; -PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC glad_glGetTransformFeedbackVaryingEXT; -PFNGLPROGRAMLOCALPARAMETERI4INVPROC glad_glProgramLocalParameterI4iNV; -PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC glad_glProgramLocalParameterI4ivNV; -PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC glad_glProgramLocalParametersI4ivNV; -PFNGLPROGRAMLOCALPARAMETERI4UINVPROC glad_glProgramLocalParameterI4uiNV; -PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC glad_glProgramLocalParameterI4uivNV; -PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC glad_glProgramLocalParametersI4uivNV; -PFNGLPROGRAMENVPARAMETERI4INVPROC glad_glProgramEnvParameterI4iNV; -PFNGLPROGRAMENVPARAMETERI4IVNVPROC glad_glProgramEnvParameterI4ivNV; -PFNGLPROGRAMENVPARAMETERSI4IVNVPROC glad_glProgramEnvParametersI4ivNV; -PFNGLPROGRAMENVPARAMETERI4UINVPROC glad_glProgramEnvParameterI4uiNV; -PFNGLPROGRAMENVPARAMETERI4UIVNVPROC glad_glProgramEnvParameterI4uivNV; -PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC glad_glProgramEnvParametersI4uivNV; -PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC glad_glGetProgramLocalParameterIivNV; -PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC glad_glGetProgramLocalParameterIuivNV; -PFNGLGETPROGRAMENVPARAMETERIIVNVPROC glad_glGetProgramEnvParameterIivNV; -PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC glad_glGetProgramEnvParameterIuivNV; -PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC glad_glProgramSubroutineParametersuivNV; -PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC glad_glGetProgramSubroutineParameteruivNV; -PFNGLPROGRAMPARAMETERIARBPROC glad_glProgramParameteriARB; -PFNGLFRAMEBUFFERTEXTUREARBPROC glad_glFramebufferTextureARB; -PFNGLFRAMEBUFFERTEXTURELAYERARBPROC glad_glFramebufferTextureLayerARB; -PFNGLFRAMEBUFFERTEXTUREFACEARBPROC glad_glFramebufferTextureFaceARB; -PFNGLSUBPIXELPRECISIONBIASNVPROC glad_glSubpixelPrecisionBiasNV; -PFNGLSPRITEPARAMETERFSGIXPROC glad_glSpriteParameterfSGIX; -PFNGLSPRITEPARAMETERFVSGIXPROC glad_glSpriteParameterfvSGIX; -PFNGLSPRITEPARAMETERISGIXPROC glad_glSpriteParameteriSGIX; -PFNGLSPRITEPARAMETERIVSGIXPROC glad_glSpriteParameterivSGIX; -PFNGLGETPROGRAMBINARYPROC glad_glGetProgramBinary; -PFNGLPROGRAMBINARYPROC glad_glProgramBinary; -PFNGLPROGRAMPARAMETERIPROC glad_glProgramParameteri; -PFNGLQUERYOBJECTPARAMETERUIAMDPROC glad_glQueryObjectParameteruiAMD; -PFNGLSAMPLEMASKSGISPROC glad_glSampleMaskSGIS; -PFNGLSAMPLEPATTERNSGISPROC glad_glSamplePatternSGIS; -PFNGLISRENDERBUFFEREXTPROC glad_glIsRenderbufferEXT; -PFNGLBINDRENDERBUFFEREXTPROC glad_glBindRenderbufferEXT; -PFNGLDELETERENDERBUFFERSEXTPROC glad_glDeleteRenderbuffersEXT; -PFNGLGENRENDERBUFFERSEXTPROC glad_glGenRenderbuffersEXT; -PFNGLRENDERBUFFERSTORAGEEXTPROC glad_glRenderbufferStorageEXT; -PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC glad_glGetRenderbufferParameterivEXT; -PFNGLISFRAMEBUFFEREXTPROC glad_glIsFramebufferEXT; -PFNGLBINDFRAMEBUFFEREXTPROC glad_glBindFramebufferEXT; -PFNGLDELETEFRAMEBUFFERSEXTPROC glad_glDeleteFramebuffersEXT; -PFNGLGENFRAMEBUFFERSEXTPROC glad_glGenFramebuffersEXT; -PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glad_glCheckFramebufferStatusEXT; -PFNGLFRAMEBUFFERTEXTURE1DEXTPROC glad_glFramebufferTexture1DEXT; -PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glad_glFramebufferTexture2DEXT; -PFNGLFRAMEBUFFERTEXTURE3DEXTPROC glad_glFramebufferTexture3DEXT; -PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glad_glFramebufferRenderbufferEXT; -PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glad_glGetFramebufferAttachmentParameterivEXT; -PFNGLGENERATEMIPMAPEXTPROC glad_glGenerateMipmapEXT; -PFNGLVERTEXARRAYRANGEAPPLEPROC glad_glVertexArrayRangeAPPLE; -PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC glad_glFlushVertexArrayRangeAPPLE; -PFNGLVERTEXARRAYPARAMETERIAPPLEPROC glad_glVertexArrayParameteriAPPLE; -PFNGLCOMBINERPARAMETERFVNVPROC glad_glCombinerParameterfvNV; -PFNGLCOMBINERPARAMETERFNVPROC glad_glCombinerParameterfNV; -PFNGLCOMBINERPARAMETERIVNVPROC glad_glCombinerParameterivNV; -PFNGLCOMBINERPARAMETERINVPROC glad_glCombinerParameteriNV; -PFNGLCOMBINERINPUTNVPROC glad_glCombinerInputNV; -PFNGLCOMBINEROUTPUTNVPROC glad_glCombinerOutputNV; -PFNGLFINALCOMBINERINPUTNVPROC glad_glFinalCombinerInputNV; -PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC glad_glGetCombinerInputParameterfvNV; -PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC glad_glGetCombinerInputParameterivNV; -PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC glad_glGetCombinerOutputParameterfvNV; -PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC glad_glGetCombinerOutputParameterivNV; -PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC glad_glGetFinalCombinerInputParameterfvNV; -PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC glad_glGetFinalCombinerInputParameterivNV; -PFNGLDRAWBUFFERSARBPROC glad_glDrawBuffersARB; -PFNGLCLEARTEXIMAGEPROC glad_glClearTexImage; -PFNGLCLEARTEXSUBIMAGEPROC glad_glClearTexSubImage; -PFNGLDEBUGMESSAGECONTROLARBPROC glad_glDebugMessageControlARB; -PFNGLDEBUGMESSAGEINSERTARBPROC glad_glDebugMessageInsertARB; -PFNGLDEBUGMESSAGECALLBACKARBPROC glad_glDebugMessageCallbackARB; -PFNGLGETDEBUGMESSAGELOGARBPROC glad_glGetDebugMessageLogARB; -PFNGLCULLPARAMETERDVEXTPROC glad_glCullParameterdvEXT; -PFNGLCULLPARAMETERFVEXTPROC glad_glCullParameterfvEXT; -PFNGLMULTIMODEDRAWARRAYSIBMPROC glad_glMultiModeDrawArraysIBM; -PFNGLMULTIMODEDRAWELEMENTSIBMPROC glad_glMultiModeDrawElementsIBM; -PFNGLBINDVERTEXARRAYAPPLEPROC glad_glBindVertexArrayAPPLE; -PFNGLDELETEVERTEXARRAYSAPPLEPROC glad_glDeleteVertexArraysAPPLE; -PFNGLGENVERTEXARRAYSAPPLEPROC glad_glGenVertexArraysAPPLE; -PFNGLISVERTEXARRAYAPPLEPROC glad_glIsVertexArrayAPPLE; -PFNGLDETAILTEXFUNCSGISPROC glad_glDetailTexFuncSGIS; -PFNGLGETDETAILTEXFUNCSGISPROC glad_glGetDetailTexFuncSGIS; -PFNGLDRAWARRAYSINSTANCEDARBPROC glad_glDrawArraysInstancedARB; -PFNGLDRAWELEMENTSINSTANCEDARBPROC glad_glDrawElementsInstancedARB; -PFNGLNAMEDSTRINGARBPROC glad_glNamedStringARB; -PFNGLDELETENAMEDSTRINGARBPROC glad_glDeleteNamedStringARB; -PFNGLCOMPILESHADERINCLUDEARBPROC glad_glCompileShaderIncludeARB; -PFNGLISNAMEDSTRINGARBPROC glad_glIsNamedStringARB; -PFNGLGETNAMEDSTRINGARBPROC glad_glGetNamedStringARB; -PFNGLGETNAMEDSTRINGIVARBPROC glad_glGetNamedStringivARB; -PFNGLBLENDFUNCSEPARATEINGRPROC glad_glBlendFuncSeparateINGR; -PFNGLGENPATHSNVPROC glad_glGenPathsNV; -PFNGLDELETEPATHSNVPROC glad_glDeletePathsNV; -PFNGLISPATHNVPROC glad_glIsPathNV; -PFNGLPATHCOMMANDSNVPROC glad_glPathCommandsNV; -PFNGLPATHCOORDSNVPROC glad_glPathCoordsNV; -PFNGLPATHSUBCOMMANDSNVPROC glad_glPathSubCommandsNV; -PFNGLPATHSUBCOORDSNVPROC glad_glPathSubCoordsNV; -PFNGLPATHSTRINGNVPROC glad_glPathStringNV; -PFNGLPATHGLYPHSNVPROC glad_glPathGlyphsNV; -PFNGLPATHGLYPHRANGENVPROC glad_glPathGlyphRangeNV; -PFNGLWEIGHTPATHSNVPROC glad_glWeightPathsNV; -PFNGLCOPYPATHNVPROC glad_glCopyPathNV; -PFNGLINTERPOLATEPATHSNVPROC glad_glInterpolatePathsNV; -PFNGLTRANSFORMPATHNVPROC glad_glTransformPathNV; -PFNGLPATHPARAMETERIVNVPROC glad_glPathParameterivNV; -PFNGLPATHPARAMETERINVPROC glad_glPathParameteriNV; -PFNGLPATHPARAMETERFVNVPROC glad_glPathParameterfvNV; -PFNGLPATHPARAMETERFNVPROC glad_glPathParameterfNV; -PFNGLPATHDASHARRAYNVPROC glad_glPathDashArrayNV; -PFNGLPATHSTENCILFUNCNVPROC glad_glPathStencilFuncNV; -PFNGLPATHSTENCILDEPTHOFFSETNVPROC glad_glPathStencilDepthOffsetNV; -PFNGLSTENCILFILLPATHNVPROC glad_glStencilFillPathNV; -PFNGLSTENCILSTROKEPATHNVPROC glad_glStencilStrokePathNV; -PFNGLSTENCILFILLPATHINSTANCEDNVPROC glad_glStencilFillPathInstancedNV; -PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC glad_glStencilStrokePathInstancedNV; -PFNGLPATHCOVERDEPTHFUNCNVPROC glad_glPathCoverDepthFuncNV; -PFNGLCOVERFILLPATHNVPROC glad_glCoverFillPathNV; -PFNGLCOVERSTROKEPATHNVPROC glad_glCoverStrokePathNV; -PFNGLCOVERFILLPATHINSTANCEDNVPROC glad_glCoverFillPathInstancedNV; -PFNGLCOVERSTROKEPATHINSTANCEDNVPROC glad_glCoverStrokePathInstancedNV; -PFNGLGETPATHPARAMETERIVNVPROC glad_glGetPathParameterivNV; -PFNGLGETPATHPARAMETERFVNVPROC glad_glGetPathParameterfvNV; -PFNGLGETPATHCOMMANDSNVPROC glad_glGetPathCommandsNV; -PFNGLGETPATHCOORDSNVPROC glad_glGetPathCoordsNV; -PFNGLGETPATHDASHARRAYNVPROC glad_glGetPathDashArrayNV; -PFNGLGETPATHMETRICSNVPROC glad_glGetPathMetricsNV; -PFNGLGETPATHMETRICRANGENVPROC glad_glGetPathMetricRangeNV; -PFNGLGETPATHSPACINGNVPROC glad_glGetPathSpacingNV; -PFNGLISPOINTINFILLPATHNVPROC glad_glIsPointInFillPathNV; -PFNGLISPOINTINSTROKEPATHNVPROC glad_glIsPointInStrokePathNV; -PFNGLGETPATHLENGTHNVPROC glad_glGetPathLengthNV; -PFNGLPOINTALONGPATHNVPROC glad_glPointAlongPathNV; -PFNGLMATRIXLOAD3X2FNVPROC glad_glMatrixLoad3x2fNV; -PFNGLMATRIXLOAD3X3FNVPROC glad_glMatrixLoad3x3fNV; -PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC glad_glMatrixLoadTranspose3x3fNV; -PFNGLMATRIXMULT3X2FNVPROC glad_glMatrixMult3x2fNV; -PFNGLMATRIXMULT3X3FNVPROC glad_glMatrixMult3x3fNV; -PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC glad_glMatrixMultTranspose3x3fNV; -PFNGLSTENCILTHENCOVERFILLPATHNVPROC glad_glStencilThenCoverFillPathNV; -PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC glad_glStencilThenCoverStrokePathNV; -PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC glad_glStencilThenCoverFillPathInstancedNV; -PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC glad_glStencilThenCoverStrokePathInstancedNV; -PFNGLPATHGLYPHINDEXRANGENVPROC glad_glPathGlyphIndexRangeNV; -PFNGLPATHGLYPHINDEXARRAYNVPROC glad_glPathGlyphIndexArrayNV; -PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC glad_glPathMemoryGlyphIndexArrayNV; -PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC glad_glProgramPathFragmentInputGenNV; -PFNGLGETPROGRAMRESOURCEFVNVPROC glad_glGetProgramResourcefvNV; -PFNGLPATHCOLORGENNVPROC glad_glPathColorGenNV; -PFNGLPATHTEXGENNVPROC glad_glPathTexGenNV; -PFNGLPATHFOGGENNVPROC glad_glPathFogGenNV; -PFNGLGETPATHCOLORGENIVNVPROC glad_glGetPathColorGenivNV; -PFNGLGETPATHCOLORGENFVNVPROC glad_glGetPathColorGenfvNV; -PFNGLGETPATHTEXGENIVNVPROC glad_glGetPathTexGenivNV; -PFNGLGETPATHTEXGENFVNVPROC glad_glGetPathTexGenfvNV; -PFNGLCONSERVATIVERASTERPARAMETERFNVPROC glad_glConservativeRasterParameterfNV; -PFNGLVERTEXSTREAM1SATIPROC glad_glVertexStream1sATI; -PFNGLVERTEXSTREAM1SVATIPROC glad_glVertexStream1svATI; -PFNGLVERTEXSTREAM1IATIPROC glad_glVertexStream1iATI; -PFNGLVERTEXSTREAM1IVATIPROC glad_glVertexStream1ivATI; -PFNGLVERTEXSTREAM1FATIPROC glad_glVertexStream1fATI; -PFNGLVERTEXSTREAM1FVATIPROC glad_glVertexStream1fvATI; -PFNGLVERTEXSTREAM1DATIPROC glad_glVertexStream1dATI; -PFNGLVERTEXSTREAM1DVATIPROC glad_glVertexStream1dvATI; -PFNGLVERTEXSTREAM2SATIPROC glad_glVertexStream2sATI; -PFNGLVERTEXSTREAM2SVATIPROC glad_glVertexStream2svATI; -PFNGLVERTEXSTREAM2IATIPROC glad_glVertexStream2iATI; -PFNGLVERTEXSTREAM2IVATIPROC glad_glVertexStream2ivATI; -PFNGLVERTEXSTREAM2FATIPROC glad_glVertexStream2fATI; -PFNGLVERTEXSTREAM2FVATIPROC glad_glVertexStream2fvATI; -PFNGLVERTEXSTREAM2DATIPROC glad_glVertexStream2dATI; -PFNGLVERTEXSTREAM2DVATIPROC glad_glVertexStream2dvATI; -PFNGLVERTEXSTREAM3SATIPROC glad_glVertexStream3sATI; -PFNGLVERTEXSTREAM3SVATIPROC glad_glVertexStream3svATI; -PFNGLVERTEXSTREAM3IATIPROC glad_glVertexStream3iATI; -PFNGLVERTEXSTREAM3IVATIPROC glad_glVertexStream3ivATI; -PFNGLVERTEXSTREAM3FATIPROC glad_glVertexStream3fATI; -PFNGLVERTEXSTREAM3FVATIPROC glad_glVertexStream3fvATI; -PFNGLVERTEXSTREAM3DATIPROC glad_glVertexStream3dATI; -PFNGLVERTEXSTREAM3DVATIPROC glad_glVertexStream3dvATI; -PFNGLVERTEXSTREAM4SATIPROC glad_glVertexStream4sATI; -PFNGLVERTEXSTREAM4SVATIPROC glad_glVertexStream4svATI; -PFNGLVERTEXSTREAM4IATIPROC glad_glVertexStream4iATI; -PFNGLVERTEXSTREAM4IVATIPROC glad_glVertexStream4ivATI; -PFNGLVERTEXSTREAM4FATIPROC glad_glVertexStream4fATI; -PFNGLVERTEXSTREAM4FVATIPROC glad_glVertexStream4fvATI; -PFNGLVERTEXSTREAM4DATIPROC glad_glVertexStream4dATI; -PFNGLVERTEXSTREAM4DVATIPROC glad_glVertexStream4dvATI; -PFNGLNORMALSTREAM3BATIPROC glad_glNormalStream3bATI; -PFNGLNORMALSTREAM3BVATIPROC glad_glNormalStream3bvATI; -PFNGLNORMALSTREAM3SATIPROC glad_glNormalStream3sATI; -PFNGLNORMALSTREAM3SVATIPROC glad_glNormalStream3svATI; -PFNGLNORMALSTREAM3IATIPROC glad_glNormalStream3iATI; -PFNGLNORMALSTREAM3IVATIPROC glad_glNormalStream3ivATI; -PFNGLNORMALSTREAM3FATIPROC glad_glNormalStream3fATI; -PFNGLNORMALSTREAM3FVATIPROC glad_glNormalStream3fvATI; -PFNGLNORMALSTREAM3DATIPROC glad_glNormalStream3dATI; -PFNGLNORMALSTREAM3DVATIPROC glad_glNormalStream3dvATI; -PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC glad_glClientActiveVertexStreamATI; -PFNGLVERTEXBLENDENVIATIPROC glad_glVertexBlendEnviATI; -PFNGLVERTEXBLENDENVFATIPROC glad_glVertexBlendEnvfATI; -PFNGLUNIFORM1I64ARBPROC glad_glUniform1i64ARB; -PFNGLUNIFORM2I64ARBPROC glad_glUniform2i64ARB; -PFNGLUNIFORM3I64ARBPROC glad_glUniform3i64ARB; -PFNGLUNIFORM4I64ARBPROC glad_glUniform4i64ARB; -PFNGLUNIFORM1I64VARBPROC glad_glUniform1i64vARB; -PFNGLUNIFORM2I64VARBPROC glad_glUniform2i64vARB; -PFNGLUNIFORM3I64VARBPROC glad_glUniform3i64vARB; -PFNGLUNIFORM4I64VARBPROC glad_glUniform4i64vARB; -PFNGLUNIFORM1UI64ARBPROC glad_glUniform1ui64ARB; -PFNGLUNIFORM2UI64ARBPROC glad_glUniform2ui64ARB; -PFNGLUNIFORM3UI64ARBPROC glad_glUniform3ui64ARB; -PFNGLUNIFORM4UI64ARBPROC glad_glUniform4ui64ARB; -PFNGLUNIFORM1UI64VARBPROC glad_glUniform1ui64vARB; -PFNGLUNIFORM2UI64VARBPROC glad_glUniform2ui64vARB; -PFNGLUNIFORM3UI64VARBPROC glad_glUniform3ui64vARB; -PFNGLUNIFORM4UI64VARBPROC glad_glUniform4ui64vARB; -PFNGLGETUNIFORMI64VARBPROC glad_glGetUniformi64vARB; -PFNGLGETUNIFORMUI64VARBPROC glad_glGetUniformui64vARB; -PFNGLGETNUNIFORMI64VARBPROC glad_glGetnUniformi64vARB; -PFNGLGETNUNIFORMUI64VARBPROC glad_glGetnUniformui64vARB; -PFNGLPROGRAMUNIFORM1I64ARBPROC glad_glProgramUniform1i64ARB; -PFNGLPROGRAMUNIFORM2I64ARBPROC glad_glProgramUniform2i64ARB; -PFNGLPROGRAMUNIFORM3I64ARBPROC glad_glProgramUniform3i64ARB; -PFNGLPROGRAMUNIFORM4I64ARBPROC glad_glProgramUniform4i64ARB; -PFNGLPROGRAMUNIFORM1I64VARBPROC glad_glProgramUniform1i64vARB; -PFNGLPROGRAMUNIFORM2I64VARBPROC glad_glProgramUniform2i64vARB; -PFNGLPROGRAMUNIFORM3I64VARBPROC glad_glProgramUniform3i64vARB; -PFNGLPROGRAMUNIFORM4I64VARBPROC glad_glProgramUniform4i64vARB; -PFNGLPROGRAMUNIFORM1UI64ARBPROC glad_glProgramUniform1ui64ARB; -PFNGLPROGRAMUNIFORM2UI64ARBPROC glad_glProgramUniform2ui64ARB; -PFNGLPROGRAMUNIFORM3UI64ARBPROC glad_glProgramUniform3ui64ARB; -PFNGLPROGRAMUNIFORM4UI64ARBPROC glad_glProgramUniform4ui64ARB; -PFNGLPROGRAMUNIFORM1UI64VARBPROC glad_glProgramUniform1ui64vARB; -PFNGLPROGRAMUNIFORM2UI64VARBPROC glad_glProgramUniform2ui64vARB; -PFNGLPROGRAMUNIFORM3UI64VARBPROC glad_glProgramUniform3ui64vARB; -PFNGLPROGRAMUNIFORM4UI64VARBPROC glad_glProgramUniform4ui64vARB; -PFNGLVDPAUINITNVPROC glad_glVDPAUInitNV; -PFNGLVDPAUFININVPROC glad_glVDPAUFiniNV; -PFNGLVDPAUREGISTERVIDEOSURFACENVPROC glad_glVDPAURegisterVideoSurfaceNV; -PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC glad_glVDPAURegisterOutputSurfaceNV; -PFNGLVDPAUISSURFACENVPROC glad_glVDPAUIsSurfaceNV; -PFNGLVDPAUUNREGISTERSURFACENVPROC glad_glVDPAUUnregisterSurfaceNV; -PFNGLVDPAUGETSURFACEIVNVPROC glad_glVDPAUGetSurfaceivNV; -PFNGLVDPAUSURFACEACCESSNVPROC glad_glVDPAUSurfaceAccessNV; -PFNGLVDPAUMAPSURFACESNVPROC glad_glVDPAUMapSurfacesNV; -PFNGLVDPAUUNMAPSURFACESNVPROC glad_glVDPAUUnmapSurfacesNV; -PFNGLGETINTERNALFORMATI64VPROC glad_glGetInternalformati64v; -PFNGLCOLOR4UBVERTEX2FSUNPROC glad_glColor4ubVertex2fSUN; -PFNGLCOLOR4UBVERTEX2FVSUNPROC glad_glColor4ubVertex2fvSUN; -PFNGLCOLOR4UBVERTEX3FSUNPROC glad_glColor4ubVertex3fSUN; -PFNGLCOLOR4UBVERTEX3FVSUNPROC glad_glColor4ubVertex3fvSUN; -PFNGLCOLOR3FVERTEX3FSUNPROC glad_glColor3fVertex3fSUN; -PFNGLCOLOR3FVERTEX3FVSUNPROC glad_glColor3fVertex3fvSUN; -PFNGLNORMAL3FVERTEX3FSUNPROC glad_glNormal3fVertex3fSUN; -PFNGLNORMAL3FVERTEX3FVSUNPROC glad_glNormal3fVertex3fvSUN; -PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC glad_glColor4fNormal3fVertex3fSUN; -PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC glad_glColor4fNormal3fVertex3fvSUN; -PFNGLTEXCOORD2FVERTEX3FSUNPROC glad_glTexCoord2fVertex3fSUN; -PFNGLTEXCOORD2FVERTEX3FVSUNPROC glad_glTexCoord2fVertex3fvSUN; -PFNGLTEXCOORD4FVERTEX4FSUNPROC glad_glTexCoord4fVertex4fSUN; -PFNGLTEXCOORD4FVERTEX4FVSUNPROC glad_glTexCoord4fVertex4fvSUN; -PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC glad_glTexCoord2fColor4ubVertex3fSUN; -PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC glad_glTexCoord2fColor4ubVertex3fvSUN; -PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC glad_glTexCoord2fColor3fVertex3fSUN; -PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC glad_glTexCoord2fColor3fVertex3fvSUN; -PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC glad_glTexCoord2fNormal3fVertex3fSUN; -PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC glad_glTexCoord2fNormal3fVertex3fvSUN; -PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC glad_glTexCoord2fColor4fNormal3fVertex3fSUN; -PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC glad_glTexCoord2fColor4fNormal3fVertex3fvSUN; -PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC glad_glTexCoord4fColor4fNormal3fVertex4fSUN; -PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC glad_glTexCoord4fColor4fNormal3fVertex4fvSUN; -PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC glad_glReplacementCodeuiVertex3fSUN; -PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC glad_glReplacementCodeuiVertex3fvSUN; -PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC glad_glReplacementCodeuiColor4ubVertex3fSUN; -PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC glad_glReplacementCodeuiColor4ubVertex3fvSUN; -PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC glad_glReplacementCodeuiColor3fVertex3fSUN; -PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC glad_glReplacementCodeuiColor3fVertex3fvSUN; -PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC glad_glReplacementCodeuiNormal3fVertex3fSUN; -PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC glad_glReplacementCodeuiNormal3fVertex3fvSUN; -PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC glad_glReplacementCodeuiColor4fNormal3fVertex3fSUN; -PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC glad_glReplacementCodeuiColor4fNormal3fVertex3fvSUN; -PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC glad_glReplacementCodeuiTexCoord2fVertex3fSUN; -PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC glad_glReplacementCodeuiTexCoord2fVertex3fvSUN; -PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC glad_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN; -PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC glad_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN; -PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC glad_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN; -PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC glad_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN; -PFNGLIGLOOINTERFACESGIXPROC glad_glIglooInterfaceSGIX; -PFNGLDRAWARRAYSINDIRECTPROC glad_glDrawArraysIndirect; -PFNGLDRAWELEMENTSINDIRECTPROC glad_glDrawElementsIndirect; -PFNGLVERTEXATTRIBI1IEXTPROC glad_glVertexAttribI1iEXT; -PFNGLVERTEXATTRIBI2IEXTPROC glad_glVertexAttribI2iEXT; -PFNGLVERTEXATTRIBI3IEXTPROC glad_glVertexAttribI3iEXT; -PFNGLVERTEXATTRIBI4IEXTPROC glad_glVertexAttribI4iEXT; -PFNGLVERTEXATTRIBI1UIEXTPROC glad_glVertexAttribI1uiEXT; -PFNGLVERTEXATTRIBI2UIEXTPROC glad_glVertexAttribI2uiEXT; -PFNGLVERTEXATTRIBI3UIEXTPROC glad_glVertexAttribI3uiEXT; -PFNGLVERTEXATTRIBI4UIEXTPROC glad_glVertexAttribI4uiEXT; -PFNGLVERTEXATTRIBI1IVEXTPROC glad_glVertexAttribI1ivEXT; -PFNGLVERTEXATTRIBI2IVEXTPROC glad_glVertexAttribI2ivEXT; -PFNGLVERTEXATTRIBI3IVEXTPROC glad_glVertexAttribI3ivEXT; -PFNGLVERTEXATTRIBI4IVEXTPROC glad_glVertexAttribI4ivEXT; -PFNGLVERTEXATTRIBI1UIVEXTPROC glad_glVertexAttribI1uivEXT; -PFNGLVERTEXATTRIBI2UIVEXTPROC glad_glVertexAttribI2uivEXT; -PFNGLVERTEXATTRIBI3UIVEXTPROC glad_glVertexAttribI3uivEXT; -PFNGLVERTEXATTRIBI4UIVEXTPROC glad_glVertexAttribI4uivEXT; -PFNGLVERTEXATTRIBI4BVEXTPROC glad_glVertexAttribI4bvEXT; -PFNGLVERTEXATTRIBI4SVEXTPROC glad_glVertexAttribI4svEXT; -PFNGLVERTEXATTRIBI4UBVEXTPROC glad_glVertexAttribI4ubvEXT; -PFNGLVERTEXATTRIBI4USVEXTPROC glad_glVertexAttribI4usvEXT; -PFNGLVERTEXATTRIBIPOINTEREXTPROC glad_glVertexAttribIPointerEXT; -PFNGLGETVERTEXATTRIBIIVEXTPROC glad_glGetVertexAttribIivEXT; -PFNGLGETVERTEXATTRIBIUIVEXTPROC glad_glGetVertexAttribIuivEXT; -PFNGLFOGFUNCSGISPROC glad_glFogFuncSGIS; -PFNGLGETFOGFUNCSGISPROC glad_glGetFogFuncSGIS; -PFNGLIMPORTSYNCEXTPROC glad_glImportSyncEXT; -PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC glad_glFramebufferSampleLocationsfvNV; -PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC glad_glNamedFramebufferSampleLocationsfvNV; -PFNGLRESOLVEDEPTHVALUESNVPROC glad_glResolveDepthValuesNV; -PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC glad_glDispatchComputeGroupSizeARB; -PFNGLALPHAFUNCXOESPROC glad_glAlphaFuncxOES; -PFNGLCLEARCOLORXOESPROC glad_glClearColorxOES; -PFNGLCLEARDEPTHXOESPROC glad_glClearDepthxOES; -PFNGLCLIPPLANEXOESPROC glad_glClipPlanexOES; -PFNGLCOLOR4XOESPROC glad_glColor4xOES; -PFNGLDEPTHRANGEXOESPROC glad_glDepthRangexOES; -PFNGLFOGXOESPROC glad_glFogxOES; -PFNGLFOGXVOESPROC glad_glFogxvOES; -PFNGLFRUSTUMXOESPROC glad_glFrustumxOES; -PFNGLGETCLIPPLANEXOESPROC glad_glGetClipPlanexOES; -PFNGLGETFIXEDVOESPROC glad_glGetFixedvOES; -PFNGLGETTEXENVXVOESPROC glad_glGetTexEnvxvOES; -PFNGLGETTEXPARAMETERXVOESPROC glad_glGetTexParameterxvOES; -PFNGLLIGHTMODELXOESPROC glad_glLightModelxOES; -PFNGLLIGHTMODELXVOESPROC glad_glLightModelxvOES; -PFNGLLIGHTXOESPROC glad_glLightxOES; -PFNGLLIGHTXVOESPROC glad_glLightxvOES; -PFNGLLINEWIDTHXOESPROC glad_glLineWidthxOES; -PFNGLLOADMATRIXXOESPROC glad_glLoadMatrixxOES; -PFNGLMATERIALXOESPROC glad_glMaterialxOES; -PFNGLMATERIALXVOESPROC glad_glMaterialxvOES; -PFNGLMULTMATRIXXOESPROC glad_glMultMatrixxOES; -PFNGLMULTITEXCOORD4XOESPROC glad_glMultiTexCoord4xOES; -PFNGLNORMAL3XOESPROC glad_glNormal3xOES; -PFNGLORTHOXOESPROC glad_glOrthoxOES; -PFNGLPOINTPARAMETERXVOESPROC glad_glPointParameterxvOES; -PFNGLPOINTSIZEXOESPROC glad_glPointSizexOES; -PFNGLPOLYGONOFFSETXOESPROC glad_glPolygonOffsetxOES; -PFNGLROTATEXOESPROC glad_glRotatexOES; -PFNGLSCALEXOESPROC glad_glScalexOES; -PFNGLTEXENVXOESPROC glad_glTexEnvxOES; -PFNGLTEXENVXVOESPROC glad_glTexEnvxvOES; -PFNGLTEXPARAMETERXOESPROC glad_glTexParameterxOES; -PFNGLTEXPARAMETERXVOESPROC glad_glTexParameterxvOES; -PFNGLTRANSLATEXOESPROC glad_glTranslatexOES; -PFNGLGETLIGHTXVOESPROC glad_glGetLightxvOES; -PFNGLGETMATERIALXVOESPROC glad_glGetMaterialxvOES; -PFNGLPOINTPARAMETERXOESPROC glad_glPointParameterxOES; -PFNGLSAMPLECOVERAGEXOESPROC glad_glSampleCoveragexOES; -PFNGLACCUMXOESPROC glad_glAccumxOES; -PFNGLBITMAPXOESPROC glad_glBitmapxOES; -PFNGLBLENDCOLORXOESPROC glad_glBlendColorxOES; -PFNGLCLEARACCUMXOESPROC glad_glClearAccumxOES; -PFNGLCOLOR3XOESPROC glad_glColor3xOES; -PFNGLCOLOR3XVOESPROC glad_glColor3xvOES; -PFNGLCOLOR4XVOESPROC glad_glColor4xvOES; -PFNGLCONVOLUTIONPARAMETERXOESPROC glad_glConvolutionParameterxOES; -PFNGLCONVOLUTIONPARAMETERXVOESPROC glad_glConvolutionParameterxvOES; -PFNGLEVALCOORD1XOESPROC glad_glEvalCoord1xOES; -PFNGLEVALCOORD1XVOESPROC glad_glEvalCoord1xvOES; -PFNGLEVALCOORD2XOESPROC glad_glEvalCoord2xOES; -PFNGLEVALCOORD2XVOESPROC glad_glEvalCoord2xvOES; -PFNGLFEEDBACKBUFFERXOESPROC glad_glFeedbackBufferxOES; -PFNGLGETCONVOLUTIONPARAMETERXVOESPROC glad_glGetConvolutionParameterxvOES; -PFNGLGETHISTOGRAMPARAMETERXVOESPROC glad_glGetHistogramParameterxvOES; -PFNGLGETLIGHTXOESPROC glad_glGetLightxOES; -PFNGLGETMAPXVOESPROC glad_glGetMapxvOES; -PFNGLGETMATERIALXOESPROC glad_glGetMaterialxOES; -PFNGLGETPIXELMAPXVPROC glad_glGetPixelMapxv; -PFNGLGETTEXGENXVOESPROC glad_glGetTexGenxvOES; -PFNGLGETTEXLEVELPARAMETERXVOESPROC glad_glGetTexLevelParameterxvOES; -PFNGLINDEXXOESPROC glad_glIndexxOES; -PFNGLINDEXXVOESPROC glad_glIndexxvOES; -PFNGLLOADTRANSPOSEMATRIXXOESPROC glad_glLoadTransposeMatrixxOES; -PFNGLMAP1XOESPROC glad_glMap1xOES; -PFNGLMAP2XOESPROC glad_glMap2xOES; -PFNGLMAPGRID1XOESPROC glad_glMapGrid1xOES; -PFNGLMAPGRID2XOESPROC glad_glMapGrid2xOES; -PFNGLMULTTRANSPOSEMATRIXXOESPROC glad_glMultTransposeMatrixxOES; -PFNGLMULTITEXCOORD1XOESPROC glad_glMultiTexCoord1xOES; -PFNGLMULTITEXCOORD1XVOESPROC glad_glMultiTexCoord1xvOES; -PFNGLMULTITEXCOORD2XOESPROC glad_glMultiTexCoord2xOES; -PFNGLMULTITEXCOORD2XVOESPROC glad_glMultiTexCoord2xvOES; -PFNGLMULTITEXCOORD3XOESPROC glad_glMultiTexCoord3xOES; -PFNGLMULTITEXCOORD3XVOESPROC glad_glMultiTexCoord3xvOES; -PFNGLMULTITEXCOORD4XVOESPROC glad_glMultiTexCoord4xvOES; -PFNGLNORMAL3XVOESPROC glad_glNormal3xvOES; -PFNGLPASSTHROUGHXOESPROC glad_glPassThroughxOES; -PFNGLPIXELMAPXPROC glad_glPixelMapx; -PFNGLPIXELSTOREXPROC glad_glPixelStorex; -PFNGLPIXELTRANSFERXOESPROC glad_glPixelTransferxOES; -PFNGLPIXELZOOMXOESPROC glad_glPixelZoomxOES; -PFNGLPRIORITIZETEXTURESXOESPROC glad_glPrioritizeTexturesxOES; -PFNGLRASTERPOS2XOESPROC glad_glRasterPos2xOES; -PFNGLRASTERPOS2XVOESPROC glad_glRasterPos2xvOES; -PFNGLRASTERPOS3XOESPROC glad_glRasterPos3xOES; -PFNGLRASTERPOS3XVOESPROC glad_glRasterPos3xvOES; -PFNGLRASTERPOS4XOESPROC glad_glRasterPos4xOES; -PFNGLRASTERPOS4XVOESPROC glad_glRasterPos4xvOES; -PFNGLRECTXOESPROC glad_glRectxOES; -PFNGLRECTXVOESPROC glad_glRectxvOES; -PFNGLTEXCOORD1XOESPROC glad_glTexCoord1xOES; -PFNGLTEXCOORD1XVOESPROC glad_glTexCoord1xvOES; -PFNGLTEXCOORD2XOESPROC glad_glTexCoord2xOES; -PFNGLTEXCOORD2XVOESPROC glad_glTexCoord2xvOES; -PFNGLTEXCOORD3XOESPROC glad_glTexCoord3xOES; -PFNGLTEXCOORD3XVOESPROC glad_glTexCoord3xvOES; -PFNGLTEXCOORD4XOESPROC glad_glTexCoord4xOES; -PFNGLTEXCOORD4XVOESPROC glad_glTexCoord4xvOES; -PFNGLTEXGENXOESPROC glad_glTexGenxOES; -PFNGLTEXGENXVOESPROC glad_glTexGenxvOES; -PFNGLVERTEX2XOESPROC glad_glVertex2xOES; -PFNGLVERTEX2XVOESPROC glad_glVertex2xvOES; -PFNGLVERTEX3XOESPROC glad_glVertex3xOES; -PFNGLVERTEX3XVOESPROC glad_glVertex3xvOES; -PFNGLVERTEX4XOESPROC glad_glVertex4xOES; -PFNGLVERTEX4XVOESPROC glad_glVertex4xvOES; -PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC glad_glRenderbufferStorageMultisampleEXT; -PFNGLTEXIMAGE4DSGISPROC glad_glTexImage4DSGIS; -PFNGLTEXSUBIMAGE4DSGISPROC glad_glTexSubImage4DSGIS; -PFNGLTEXIMAGE3DEXTPROC glad_glTexImage3DEXT; -PFNGLTEXSUBIMAGE3DEXTPROC glad_glTexSubImage3DEXT; -PFNGLSAMPLEMASKEXTPROC glad_glSampleMaskEXT; -PFNGLSAMPLEPATTERNEXTPROC glad_glSamplePatternEXT; -PFNGLSECONDARYCOLOR3BEXTPROC glad_glSecondaryColor3bEXT; -PFNGLSECONDARYCOLOR3BVEXTPROC glad_glSecondaryColor3bvEXT; -PFNGLSECONDARYCOLOR3DEXTPROC glad_glSecondaryColor3dEXT; -PFNGLSECONDARYCOLOR3DVEXTPROC glad_glSecondaryColor3dvEXT; -PFNGLSECONDARYCOLOR3FEXTPROC glad_glSecondaryColor3fEXT; -PFNGLSECONDARYCOLOR3FVEXTPROC glad_glSecondaryColor3fvEXT; -PFNGLSECONDARYCOLOR3IEXTPROC glad_glSecondaryColor3iEXT; -PFNGLSECONDARYCOLOR3IVEXTPROC glad_glSecondaryColor3ivEXT; -PFNGLSECONDARYCOLOR3SEXTPROC glad_glSecondaryColor3sEXT; -PFNGLSECONDARYCOLOR3SVEXTPROC glad_glSecondaryColor3svEXT; -PFNGLSECONDARYCOLOR3UBEXTPROC glad_glSecondaryColor3ubEXT; -PFNGLSECONDARYCOLOR3UBVEXTPROC glad_glSecondaryColor3ubvEXT; -PFNGLSECONDARYCOLOR3UIEXTPROC glad_glSecondaryColor3uiEXT; -PFNGLSECONDARYCOLOR3UIVEXTPROC glad_glSecondaryColor3uivEXT; -PFNGLSECONDARYCOLOR3USEXTPROC glad_glSecondaryColor3usEXT; -PFNGLSECONDARYCOLOR3USVEXTPROC glad_glSecondaryColor3usvEXT; -PFNGLSECONDARYCOLORPOINTEREXTPROC glad_glSecondaryColorPointerEXT; -PFNGLNEWOBJECTBUFFERATIPROC glad_glNewObjectBufferATI; -PFNGLISOBJECTBUFFERATIPROC glad_glIsObjectBufferATI; -PFNGLUPDATEOBJECTBUFFERATIPROC glad_glUpdateObjectBufferATI; -PFNGLGETOBJECTBUFFERFVATIPROC glad_glGetObjectBufferfvATI; -PFNGLGETOBJECTBUFFERIVATIPROC glad_glGetObjectBufferivATI; -PFNGLFREEOBJECTBUFFERATIPROC glad_glFreeObjectBufferATI; -PFNGLARRAYOBJECTATIPROC glad_glArrayObjectATI; -PFNGLGETARRAYOBJECTFVATIPROC glad_glGetArrayObjectfvATI; -PFNGLGETARRAYOBJECTIVATIPROC glad_glGetArrayObjectivATI; -PFNGLVARIANTARRAYOBJECTATIPROC glad_glVariantArrayObjectATI; -PFNGLGETVARIANTARRAYOBJECTFVATIPROC glad_glGetVariantArrayObjectfvATI; -PFNGLGETVARIANTARRAYOBJECTIVATIPROC glad_glGetVariantArrayObjectivATI; -PFNGLMAXSHADERCOMPILERTHREADSARBPROC glad_glMaxShaderCompilerThreadsARB; -PFNGLTEXPAGECOMMITMENTARBPROC glad_glTexPageCommitmentARB; -PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC glad_glFramebufferSampleLocationsfvARB; -PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC glad_glNamedFramebufferSampleLocationsfvARB; -PFNGLEVALUATEDEPTHVALUESARBPROC glad_glEvaluateDepthValuesARB; -PFNGLBUFFERPAGECOMMITMENTARBPROC glad_glBufferPageCommitmentARB; -PFNGLNAMEDBUFFERPAGECOMMITMENTEXTPROC glad_glNamedBufferPageCommitmentEXT; -PFNGLNAMEDBUFFERPAGECOMMITMENTARBPROC glad_glNamedBufferPageCommitmentARB; -PFNGLDRAWRANGEELEMENTSEXTPROC glad_glDrawRangeElementsEXT; -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_APPLE_element_array(GLADloadproc load) { - if(!GLAD_GL_APPLE_element_array) return; - glad_glElementPointerAPPLE = (PFNGLELEMENTPOINTERAPPLEPROC)load("glElementPointerAPPLE"); - glad_glDrawElementArrayAPPLE = (PFNGLDRAWELEMENTARRAYAPPLEPROC)load("glDrawElementArrayAPPLE"); - glad_glDrawRangeElementArrayAPPLE = (PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC)load("glDrawRangeElementArrayAPPLE"); - glad_glMultiDrawElementArrayAPPLE = (PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC)load("glMultiDrawElementArrayAPPLE"); - glad_glMultiDrawRangeElementArrayAPPLE = (PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC)load("glMultiDrawRangeElementArrayAPPLE"); -} -static void load_GL_AMD_multi_draw_indirect(GLADloadproc load) { - if(!GLAD_GL_AMD_multi_draw_indirect) return; - glad_glMultiDrawArraysIndirectAMD = (PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC)load("glMultiDrawArraysIndirectAMD"); - glad_glMultiDrawElementsIndirectAMD = (PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC)load("glMultiDrawElementsIndirectAMD"); -} -static void load_GL_SGIX_tag_sample_buffer(GLADloadproc load) { - if(!GLAD_GL_SGIX_tag_sample_buffer) return; - glad_glTagSampleBufferSGIX = (PFNGLTAGSAMPLEBUFFERSGIXPROC)load("glTagSampleBufferSGIX"); -} -static void load_GL_NV_point_sprite(GLADloadproc load) { - if(!GLAD_GL_NV_point_sprite) return; - glad_glPointParameteriNV = (PFNGLPOINTPARAMETERINVPROC)load("glPointParameteriNV"); - glad_glPointParameterivNV = (PFNGLPOINTPARAMETERIVNVPROC)load("glPointParameterivNV"); -} -static void load_GL_ATI_separate_stencil(GLADloadproc load) { - if(!GLAD_GL_ATI_separate_stencil) return; - glad_glStencilOpSeparateATI = (PFNGLSTENCILOPSEPARATEATIPROC)load("glStencilOpSeparateATI"); - glad_glStencilFuncSeparateATI = (PFNGLSTENCILFUNCSEPARATEATIPROC)load("glStencilFuncSeparateATI"); -} -static void load_GL_EXT_texture_buffer_object(GLADloadproc load) { - if(!GLAD_GL_EXT_texture_buffer_object) return; - glad_glTexBufferEXT = (PFNGLTEXBUFFEREXTPROC)load("glTexBufferEXT"); -} -static void load_GL_ARB_vertex_blend(GLADloadproc load) { - if(!GLAD_GL_ARB_vertex_blend) return; - glad_glWeightbvARB = (PFNGLWEIGHTBVARBPROC)load("glWeightbvARB"); - glad_glWeightsvARB = (PFNGLWEIGHTSVARBPROC)load("glWeightsvARB"); - glad_glWeightivARB = (PFNGLWEIGHTIVARBPROC)load("glWeightivARB"); - glad_glWeightfvARB = (PFNGLWEIGHTFVARBPROC)load("glWeightfvARB"); - glad_glWeightdvARB = (PFNGLWEIGHTDVARBPROC)load("glWeightdvARB"); - glad_glWeightubvARB = (PFNGLWEIGHTUBVARBPROC)load("glWeightubvARB"); - glad_glWeightusvARB = (PFNGLWEIGHTUSVARBPROC)load("glWeightusvARB"); - glad_glWeightuivARB = (PFNGLWEIGHTUIVARBPROC)load("glWeightuivARB"); - glad_glWeightPointerARB = (PFNGLWEIGHTPOINTERARBPROC)load("glWeightPointerARB"); - glad_glVertexBlendARB = (PFNGLVERTEXBLENDARBPROC)load("glVertexBlendARB"); -} -static void load_GL_OVR_multiview(GLADloadproc load) { - if(!GLAD_GL_OVR_multiview) return; - glad_glFramebufferTextureMultiviewOVR = (PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC)load("glFramebufferTextureMultiviewOVR"); -} -static void load_GL_ARB_program_interface_query(GLADloadproc load) { - if(!GLAD_GL_ARB_program_interface_query) return; - glad_glGetProgramInterfaceiv = (PFNGLGETPROGRAMINTERFACEIVPROC)load("glGetProgramInterfaceiv"); - glad_glGetProgramResourceIndex = (PFNGLGETPROGRAMRESOURCEINDEXPROC)load("glGetProgramResourceIndex"); - glad_glGetProgramResourceName = (PFNGLGETPROGRAMRESOURCENAMEPROC)load("glGetProgramResourceName"); - glad_glGetProgramResourceiv = (PFNGLGETPROGRAMRESOURCEIVPROC)load("glGetProgramResourceiv"); - glad_glGetProgramResourceLocation = (PFNGLGETPROGRAMRESOURCELOCATIONPROC)load("glGetProgramResourceLocation"); - glad_glGetProgramResourceLocationIndex = (PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC)load("glGetProgramResourceLocationIndex"); -} -static void load_GL_EXT_index_func(GLADloadproc load) { - if(!GLAD_GL_EXT_index_func) return; - glad_glIndexFuncEXT = (PFNGLINDEXFUNCEXTPROC)load("glIndexFuncEXT"); -} -static void load_GL_NV_shader_buffer_load(GLADloadproc load) { - if(!GLAD_GL_NV_shader_buffer_load) return; - glad_glMakeBufferResidentNV = (PFNGLMAKEBUFFERRESIDENTNVPROC)load("glMakeBufferResidentNV"); - glad_glMakeBufferNonResidentNV = (PFNGLMAKEBUFFERNONRESIDENTNVPROC)load("glMakeBufferNonResidentNV"); - glad_glIsBufferResidentNV = (PFNGLISBUFFERRESIDENTNVPROC)load("glIsBufferResidentNV"); - glad_glMakeNamedBufferResidentNV = (PFNGLMAKENAMEDBUFFERRESIDENTNVPROC)load("glMakeNamedBufferResidentNV"); - glad_glMakeNamedBufferNonResidentNV = (PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC)load("glMakeNamedBufferNonResidentNV"); - glad_glIsNamedBufferResidentNV = (PFNGLISNAMEDBUFFERRESIDENTNVPROC)load("glIsNamedBufferResidentNV"); - glad_glGetBufferParameterui64vNV = (PFNGLGETBUFFERPARAMETERUI64VNVPROC)load("glGetBufferParameterui64vNV"); - glad_glGetNamedBufferParameterui64vNV = (PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC)load("glGetNamedBufferParameterui64vNV"); - glad_glGetIntegerui64vNV = (PFNGLGETINTEGERUI64VNVPROC)load("glGetIntegerui64vNV"); - glad_glUniformui64NV = (PFNGLUNIFORMUI64NVPROC)load("glUniformui64NV"); - glad_glUniformui64vNV = (PFNGLUNIFORMUI64VNVPROC)load("glUniformui64vNV"); - glad_glGetUniformui64vNV = (PFNGLGETUNIFORMUI64VNVPROC)load("glGetUniformui64vNV"); - glad_glProgramUniformui64NV = (PFNGLPROGRAMUNIFORMUI64NVPROC)load("glProgramUniformui64NV"); - glad_glProgramUniformui64vNV = (PFNGLPROGRAMUNIFORMUI64VNVPROC)load("glProgramUniformui64vNV"); -} -static void load_GL_EXT_color_subtable(GLADloadproc load) { - if(!GLAD_GL_EXT_color_subtable) return; - glad_glColorSubTableEXT = (PFNGLCOLORSUBTABLEEXTPROC)load("glColorSubTableEXT"); - glad_glCopyColorSubTableEXT = (PFNGLCOPYCOLORSUBTABLEEXTPROC)load("glCopyColorSubTableEXT"); -} -static void load_GL_SUNX_constant_data(GLADloadproc load) { - if(!GLAD_GL_SUNX_constant_data) return; - glad_glFinishTextureSUNX = (PFNGLFINISHTEXTURESUNXPROC)load("glFinishTextureSUNX"); -} -static void load_GL_EXT_multi_draw_arrays(GLADloadproc load) { - if(!GLAD_GL_EXT_multi_draw_arrays) return; - glad_glMultiDrawArraysEXT = (PFNGLMULTIDRAWARRAYSEXTPROC)load("glMultiDrawArraysEXT"); - glad_glMultiDrawElementsEXT = (PFNGLMULTIDRAWELEMENTSEXTPROC)load("glMultiDrawElementsEXT"); -} -static void load_GL_ARB_shader_atomic_counters(GLADloadproc load) { - if(!GLAD_GL_ARB_shader_atomic_counters) return; - glad_glGetActiveAtomicCounterBufferiv = (PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC)load("glGetActiveAtomicCounterBufferiv"); -} -static void load_GL_NV_conditional_render(GLADloadproc load) { - if(!GLAD_GL_NV_conditional_render) return; - glad_glBeginConditionalRenderNV = (PFNGLBEGINCONDITIONALRENDERNVPROC)load("glBeginConditionalRenderNV"); - glad_glEndConditionalRenderNV = (PFNGLENDCONDITIONALRENDERNVPROC)load("glEndConditionalRenderNV"); -} -static void load_GL_MESA_resize_buffers(GLADloadproc load) { - if(!GLAD_GL_MESA_resize_buffers) return; - glad_glResizeBuffersMESA = (PFNGLRESIZEBUFFERSMESAPROC)load("glResizeBuffersMESA"); -} -static void load_GL_ARB_texture_view(GLADloadproc load) { - if(!GLAD_GL_ARB_texture_view) return; - glad_glTextureView = (PFNGLTEXTUREVIEWPROC)load("glTextureView"); -} -static void load_GL_ARB_map_buffer_range(GLADloadproc load) { - if(!GLAD_GL_ARB_map_buffer_range) return; - glad_glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC)load("glMapBufferRange"); - glad_glFlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC)load("glFlushMappedBufferRange"); -} -static void load_GL_EXT_convolution(GLADloadproc load) { - if(!GLAD_GL_EXT_convolution) return; - glad_glConvolutionFilter1DEXT = (PFNGLCONVOLUTIONFILTER1DEXTPROC)load("glConvolutionFilter1DEXT"); - glad_glConvolutionFilter2DEXT = (PFNGLCONVOLUTIONFILTER2DEXTPROC)load("glConvolutionFilter2DEXT"); - glad_glConvolutionParameterfEXT = (PFNGLCONVOLUTIONPARAMETERFEXTPROC)load("glConvolutionParameterfEXT"); - glad_glConvolutionParameterfvEXT = (PFNGLCONVOLUTIONPARAMETERFVEXTPROC)load("glConvolutionParameterfvEXT"); - glad_glConvolutionParameteriEXT = (PFNGLCONVOLUTIONPARAMETERIEXTPROC)load("glConvolutionParameteriEXT"); - glad_glConvolutionParameterivEXT = (PFNGLCONVOLUTIONPARAMETERIVEXTPROC)load("glConvolutionParameterivEXT"); - glad_glCopyConvolutionFilter1DEXT = (PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC)load("glCopyConvolutionFilter1DEXT"); - glad_glCopyConvolutionFilter2DEXT = (PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC)load("glCopyConvolutionFilter2DEXT"); - glad_glGetConvolutionFilterEXT = (PFNGLGETCONVOLUTIONFILTEREXTPROC)load("glGetConvolutionFilterEXT"); - glad_glGetConvolutionParameterfvEXT = (PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC)load("glGetConvolutionParameterfvEXT"); - glad_glGetConvolutionParameterivEXT = (PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC)load("glGetConvolutionParameterivEXT"); - glad_glGetSeparableFilterEXT = (PFNGLGETSEPARABLEFILTEREXTPROC)load("glGetSeparableFilterEXT"); - glad_glSeparableFilter2DEXT = (PFNGLSEPARABLEFILTER2DEXTPROC)load("glSeparableFilter2DEXT"); -} -static void load_GL_NV_vertex_attrib_integer_64bit(GLADloadproc load) { - if(!GLAD_GL_NV_vertex_attrib_integer_64bit) return; - glad_glVertexAttribL1i64NV = (PFNGLVERTEXATTRIBL1I64NVPROC)load("glVertexAttribL1i64NV"); - glad_glVertexAttribL2i64NV = (PFNGLVERTEXATTRIBL2I64NVPROC)load("glVertexAttribL2i64NV"); - glad_glVertexAttribL3i64NV = (PFNGLVERTEXATTRIBL3I64NVPROC)load("glVertexAttribL3i64NV"); - glad_glVertexAttribL4i64NV = (PFNGLVERTEXATTRIBL4I64NVPROC)load("glVertexAttribL4i64NV"); - glad_glVertexAttribL1i64vNV = (PFNGLVERTEXATTRIBL1I64VNVPROC)load("glVertexAttribL1i64vNV"); - glad_glVertexAttribL2i64vNV = (PFNGLVERTEXATTRIBL2I64VNVPROC)load("glVertexAttribL2i64vNV"); - glad_glVertexAttribL3i64vNV = (PFNGLVERTEXATTRIBL3I64VNVPROC)load("glVertexAttribL3i64vNV"); - glad_glVertexAttribL4i64vNV = (PFNGLVERTEXATTRIBL4I64VNVPROC)load("glVertexAttribL4i64vNV"); - glad_glVertexAttribL1ui64NV = (PFNGLVERTEXATTRIBL1UI64NVPROC)load("glVertexAttribL1ui64NV"); - glad_glVertexAttribL2ui64NV = (PFNGLVERTEXATTRIBL2UI64NVPROC)load("glVertexAttribL2ui64NV"); - glad_glVertexAttribL3ui64NV = (PFNGLVERTEXATTRIBL3UI64NVPROC)load("glVertexAttribL3ui64NV"); - glad_glVertexAttribL4ui64NV = (PFNGLVERTEXATTRIBL4UI64NVPROC)load("glVertexAttribL4ui64NV"); - glad_glVertexAttribL1ui64vNV = (PFNGLVERTEXATTRIBL1UI64VNVPROC)load("glVertexAttribL1ui64vNV"); - glad_glVertexAttribL2ui64vNV = (PFNGLVERTEXATTRIBL2UI64VNVPROC)load("glVertexAttribL2ui64vNV"); - glad_glVertexAttribL3ui64vNV = (PFNGLVERTEXATTRIBL3UI64VNVPROC)load("glVertexAttribL3ui64vNV"); - glad_glVertexAttribL4ui64vNV = (PFNGLVERTEXATTRIBL4UI64VNVPROC)load("glVertexAttribL4ui64vNV"); - glad_glGetVertexAttribLi64vNV = (PFNGLGETVERTEXATTRIBLI64VNVPROC)load("glGetVertexAttribLi64vNV"); - glad_glGetVertexAttribLui64vNV = (PFNGLGETVERTEXATTRIBLUI64VNVPROC)load("glGetVertexAttribLui64vNV"); - glad_glVertexAttribLFormatNV = (PFNGLVERTEXATTRIBLFORMATNVPROC)load("glVertexAttribLFormatNV"); -} -static void load_GL_EXT_paletted_texture(GLADloadproc load) { - if(!GLAD_GL_EXT_paletted_texture) return; - glad_glColorTableEXT = (PFNGLCOLORTABLEEXTPROC)load("glColorTableEXT"); - glad_glGetColorTableEXT = (PFNGLGETCOLORTABLEEXTPROC)load("glGetColorTableEXT"); - glad_glGetColorTableParameterivEXT = (PFNGLGETCOLORTABLEPARAMETERIVEXTPROC)load("glGetColorTableParameterivEXT"); - glad_glGetColorTableParameterfvEXT = (PFNGLGETCOLORTABLEPARAMETERFVEXTPROC)load("glGetColorTableParameterfvEXT"); -} -static void load_GL_ARB_texture_buffer_object(GLADloadproc load) { - if(!GLAD_GL_ARB_texture_buffer_object) return; - glad_glTexBufferARB = (PFNGLTEXBUFFERARBPROC)load("glTexBufferARB"); -} -static void load_GL_ATI_pn_triangles(GLADloadproc load) { - if(!GLAD_GL_ATI_pn_triangles) return; - glad_glPNTrianglesiATI = (PFNGLPNTRIANGLESIATIPROC)load("glPNTrianglesiATI"); - glad_glPNTrianglesfATI = (PFNGLPNTRIANGLESFATIPROC)load("glPNTrianglesfATI"); -} -static void load_GL_SGIX_flush_raster(GLADloadproc load) { - if(!GLAD_GL_SGIX_flush_raster) return; - glad_glFlushRasterSGIX = (PFNGLFLUSHRASTERSGIXPROC)load("glFlushRasterSGIX"); -} -static void load_GL_EXT_light_texture(GLADloadproc load) { - if(!GLAD_GL_EXT_light_texture) return; - glad_glApplyTextureEXT = (PFNGLAPPLYTEXTUREEXTPROC)load("glApplyTextureEXT"); - glad_glTextureLightEXT = (PFNGLTEXTURELIGHTEXTPROC)load("glTextureLightEXT"); - glad_glTextureMaterialEXT = (PFNGLTEXTUREMATERIALEXTPROC)load("glTextureMaterialEXT"); -} -static void load_GL_HP_image_transform(GLADloadproc load) { - if(!GLAD_GL_HP_image_transform) return; - glad_glImageTransformParameteriHP = (PFNGLIMAGETRANSFORMPARAMETERIHPPROC)load("glImageTransformParameteriHP"); - glad_glImageTransformParameterfHP = (PFNGLIMAGETRANSFORMPARAMETERFHPPROC)load("glImageTransformParameterfHP"); - glad_glImageTransformParameterivHP = (PFNGLIMAGETRANSFORMPARAMETERIVHPPROC)load("glImageTransformParameterivHP"); - glad_glImageTransformParameterfvHP = (PFNGLIMAGETRANSFORMPARAMETERFVHPPROC)load("glImageTransformParameterfvHP"); - glad_glGetImageTransformParameterivHP = (PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC)load("glGetImageTransformParameterivHP"); - glad_glGetImageTransformParameterfvHP = (PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC)load("glGetImageTransformParameterfvHP"); -} -static void load_GL_AMD_draw_buffers_blend(GLADloadproc load) { - if(!GLAD_GL_AMD_draw_buffers_blend) return; - glad_glBlendFuncIndexedAMD = (PFNGLBLENDFUNCINDEXEDAMDPROC)load("glBlendFuncIndexedAMD"); - glad_glBlendFuncSeparateIndexedAMD = (PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC)load("glBlendFuncSeparateIndexedAMD"); - glad_glBlendEquationIndexedAMD = (PFNGLBLENDEQUATIONINDEXEDAMDPROC)load("glBlendEquationIndexedAMD"); - glad_glBlendEquationSeparateIndexedAMD = (PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC)load("glBlendEquationSeparateIndexedAMD"); -} -static void load_GL_APPLE_texture_range(GLADloadproc load) { - if(!GLAD_GL_APPLE_texture_range) return; - glad_glTextureRangeAPPLE = (PFNGLTEXTURERANGEAPPLEPROC)load("glTextureRangeAPPLE"); - glad_glGetTexParameterPointervAPPLE = (PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC)load("glGetTexParameterPointervAPPLE"); -} -static void load_GL_EXT_texture_array(GLADloadproc load) { - if(!GLAD_GL_EXT_texture_array) return; - glad_glFramebufferTextureLayerEXT = (PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC)load("glFramebufferTextureLayerEXT"); -} -static void load_GL_NV_texture_barrier(GLADloadproc load) { - if(!GLAD_GL_NV_texture_barrier) return; - glad_glTextureBarrierNV = (PFNGLTEXTUREBARRIERNVPROC)load("glTextureBarrierNV"); -} -static void load_GL_ARB_vertex_type_2_10_10_10_rev(GLADloadproc load) { - if(!GLAD_GL_ARB_vertex_type_2_10_10_10_rev) return; - 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_3DFX_tbuffer(GLADloadproc load) { - if(!GLAD_GL_3DFX_tbuffer) return; - glad_glTbufferMask3DFX = (PFNGLTBUFFERMASK3DFXPROC)load("glTbufferMask3DFX"); -} -static void load_GL_GREMEDY_frame_terminator(GLADloadproc load) { - if(!GLAD_GL_GREMEDY_frame_terminator) return; - glad_glFrameTerminatorGREMEDY = (PFNGLFRAMETERMINATORGREMEDYPROC)load("glFrameTerminatorGREMEDY"); -} -static void load_GL_ARB_blend_func_extended(GLADloadproc load) { - if(!GLAD_GL_ARB_blend_func_extended) return; - glad_glBindFragDataLocationIndexed = (PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)load("glBindFragDataLocationIndexed"); - glad_glGetFragDataIndex = (PFNGLGETFRAGDATAINDEXPROC)load("glGetFragDataIndex"); -} -static void load_GL_EXT_separate_shader_objects(GLADloadproc load) { - if(!GLAD_GL_EXT_separate_shader_objects) return; - glad_glUseShaderProgramEXT = (PFNGLUSESHADERPROGRAMEXTPROC)load("glUseShaderProgramEXT"); - glad_glActiveProgramEXT = (PFNGLACTIVEPROGRAMEXTPROC)load("glActiveProgramEXT"); - glad_glCreateShaderProgramEXT = (PFNGLCREATESHADERPROGRAMEXTPROC)load("glCreateShaderProgramEXT"); - glad_glActiveShaderProgramEXT = (PFNGLACTIVESHADERPROGRAMEXTPROC)load("glActiveShaderProgramEXT"); - glad_glBindProgramPipelineEXT = (PFNGLBINDPROGRAMPIPELINEEXTPROC)load("glBindProgramPipelineEXT"); - glad_glCreateShaderProgramvEXT = (PFNGLCREATESHADERPROGRAMVEXTPROC)load("glCreateShaderProgramvEXT"); - glad_glDeleteProgramPipelinesEXT = (PFNGLDELETEPROGRAMPIPELINESEXTPROC)load("glDeleteProgramPipelinesEXT"); - glad_glGenProgramPipelinesEXT = (PFNGLGENPROGRAMPIPELINESEXTPROC)load("glGenProgramPipelinesEXT"); - glad_glGetProgramPipelineInfoLogEXT = (PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC)load("glGetProgramPipelineInfoLogEXT"); - glad_glGetProgramPipelineivEXT = (PFNGLGETPROGRAMPIPELINEIVEXTPROC)load("glGetProgramPipelineivEXT"); - glad_glIsProgramPipelineEXT = (PFNGLISPROGRAMPIPELINEEXTPROC)load("glIsProgramPipelineEXT"); - glad_glProgramParameteriEXT = (PFNGLPROGRAMPARAMETERIEXTPROC)load("glProgramParameteriEXT"); - glad_glProgramUniform1fEXT = (PFNGLPROGRAMUNIFORM1FEXTPROC)load("glProgramUniform1fEXT"); - glad_glProgramUniform1fvEXT = (PFNGLPROGRAMUNIFORM1FVEXTPROC)load("glProgramUniform1fvEXT"); - glad_glProgramUniform1iEXT = (PFNGLPROGRAMUNIFORM1IEXTPROC)load("glProgramUniform1iEXT"); - glad_glProgramUniform1ivEXT = (PFNGLPROGRAMUNIFORM1IVEXTPROC)load("glProgramUniform1ivEXT"); - glad_glProgramUniform2fEXT = (PFNGLPROGRAMUNIFORM2FEXTPROC)load("glProgramUniform2fEXT"); - glad_glProgramUniform2fvEXT = (PFNGLPROGRAMUNIFORM2FVEXTPROC)load("glProgramUniform2fvEXT"); - glad_glProgramUniform2iEXT = (PFNGLPROGRAMUNIFORM2IEXTPROC)load("glProgramUniform2iEXT"); - glad_glProgramUniform2ivEXT = (PFNGLPROGRAMUNIFORM2IVEXTPROC)load("glProgramUniform2ivEXT"); - glad_glProgramUniform3fEXT = (PFNGLPROGRAMUNIFORM3FEXTPROC)load("glProgramUniform3fEXT"); - glad_glProgramUniform3fvEXT = (PFNGLPROGRAMUNIFORM3FVEXTPROC)load("glProgramUniform3fvEXT"); - glad_glProgramUniform3iEXT = (PFNGLPROGRAMUNIFORM3IEXTPROC)load("glProgramUniform3iEXT"); - glad_glProgramUniform3ivEXT = (PFNGLPROGRAMUNIFORM3IVEXTPROC)load("glProgramUniform3ivEXT"); - glad_glProgramUniform4fEXT = (PFNGLPROGRAMUNIFORM4FEXTPROC)load("glProgramUniform4fEXT"); - glad_glProgramUniform4fvEXT = (PFNGLPROGRAMUNIFORM4FVEXTPROC)load("glProgramUniform4fvEXT"); - glad_glProgramUniform4iEXT = (PFNGLPROGRAMUNIFORM4IEXTPROC)load("glProgramUniform4iEXT"); - glad_glProgramUniform4ivEXT = (PFNGLPROGRAMUNIFORM4IVEXTPROC)load("glProgramUniform4ivEXT"); - glad_glProgramUniformMatrix2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC)load("glProgramUniformMatrix2fvEXT"); - glad_glProgramUniformMatrix3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC)load("glProgramUniformMatrix3fvEXT"); - glad_glProgramUniformMatrix4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC)load("glProgramUniformMatrix4fvEXT"); - glad_glUseProgramStagesEXT = (PFNGLUSEPROGRAMSTAGESEXTPROC)load("glUseProgramStagesEXT"); - glad_glValidateProgramPipelineEXT = (PFNGLVALIDATEPROGRAMPIPELINEEXTPROC)load("glValidateProgramPipelineEXT"); - glad_glProgramUniform1uiEXT = (PFNGLPROGRAMUNIFORM1UIEXTPROC)load("glProgramUniform1uiEXT"); - glad_glProgramUniform2uiEXT = (PFNGLPROGRAMUNIFORM2UIEXTPROC)load("glProgramUniform2uiEXT"); - glad_glProgramUniform3uiEXT = (PFNGLPROGRAMUNIFORM3UIEXTPROC)load("glProgramUniform3uiEXT"); - glad_glProgramUniform4uiEXT = (PFNGLPROGRAMUNIFORM4UIEXTPROC)load("glProgramUniform4uiEXT"); - glad_glProgramUniform1uivEXT = (PFNGLPROGRAMUNIFORM1UIVEXTPROC)load("glProgramUniform1uivEXT"); - glad_glProgramUniform2uivEXT = (PFNGLPROGRAMUNIFORM2UIVEXTPROC)load("glProgramUniform2uivEXT"); - glad_glProgramUniform3uivEXT = (PFNGLPROGRAMUNIFORM3UIVEXTPROC)load("glProgramUniform3uivEXT"); - glad_glProgramUniform4uivEXT = (PFNGLPROGRAMUNIFORM4UIVEXTPROC)load("glProgramUniform4uivEXT"); - glad_glProgramUniformMatrix4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC)load("glProgramUniformMatrix4fvEXT"); - glad_glProgramUniformMatrix2x3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC)load("glProgramUniformMatrix2x3fvEXT"); - glad_glProgramUniformMatrix3x2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC)load("glProgramUniformMatrix3x2fvEXT"); - glad_glProgramUniformMatrix2x4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC)load("glProgramUniformMatrix2x4fvEXT"); - glad_glProgramUniformMatrix4x2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC)load("glProgramUniformMatrix4x2fvEXT"); - glad_glProgramUniformMatrix3x4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC)load("glProgramUniformMatrix3x4fvEXT"); - glad_glProgramUniformMatrix4x3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC)load("glProgramUniformMatrix4x3fvEXT"); -} -static void load_GL_NV_texture_multisample(GLADloadproc load) { - if(!GLAD_GL_NV_texture_multisample) return; - glad_glTexImage2DMultisampleCoverageNV = (PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC)load("glTexImage2DMultisampleCoverageNV"); - glad_glTexImage3DMultisampleCoverageNV = (PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC)load("glTexImage3DMultisampleCoverageNV"); - glad_glTextureImage2DMultisampleNV = (PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC)load("glTextureImage2DMultisampleNV"); - glad_glTextureImage3DMultisampleNV = (PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC)load("glTextureImage3DMultisampleNV"); - glad_glTextureImage2DMultisampleCoverageNV = (PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC)load("glTextureImage2DMultisampleCoverageNV"); - glad_glTextureImage3DMultisampleCoverageNV = (PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC)load("glTextureImage3DMultisampleCoverageNV"); -} -static void load_GL_ARB_shader_objects(GLADloadproc load) { - if(!GLAD_GL_ARB_shader_objects) return; - glad_glDeleteObjectARB = (PFNGLDELETEOBJECTARBPROC)load("glDeleteObjectARB"); - glad_glGetHandleARB = (PFNGLGETHANDLEARBPROC)load("glGetHandleARB"); - glad_glDetachObjectARB = (PFNGLDETACHOBJECTARBPROC)load("glDetachObjectARB"); - glad_glCreateShaderObjectARB = (PFNGLCREATESHADEROBJECTARBPROC)load("glCreateShaderObjectARB"); - glad_glShaderSourceARB = (PFNGLSHADERSOURCEARBPROC)load("glShaderSourceARB"); - glad_glCompileShaderARB = (PFNGLCOMPILESHADERARBPROC)load("glCompileShaderARB"); - glad_glCreateProgramObjectARB = (PFNGLCREATEPROGRAMOBJECTARBPROC)load("glCreateProgramObjectARB"); - glad_glAttachObjectARB = (PFNGLATTACHOBJECTARBPROC)load("glAttachObjectARB"); - glad_glLinkProgramARB = (PFNGLLINKPROGRAMARBPROC)load("glLinkProgramARB"); - glad_glUseProgramObjectARB = (PFNGLUSEPROGRAMOBJECTARBPROC)load("glUseProgramObjectARB"); - glad_glValidateProgramARB = (PFNGLVALIDATEPROGRAMARBPROC)load("glValidateProgramARB"); - glad_glUniform1fARB = (PFNGLUNIFORM1FARBPROC)load("glUniform1fARB"); - glad_glUniform2fARB = (PFNGLUNIFORM2FARBPROC)load("glUniform2fARB"); - glad_glUniform3fARB = (PFNGLUNIFORM3FARBPROC)load("glUniform3fARB"); - glad_glUniform4fARB = (PFNGLUNIFORM4FARBPROC)load("glUniform4fARB"); - glad_glUniform1iARB = (PFNGLUNIFORM1IARBPROC)load("glUniform1iARB"); - glad_glUniform2iARB = (PFNGLUNIFORM2IARBPROC)load("glUniform2iARB"); - glad_glUniform3iARB = (PFNGLUNIFORM3IARBPROC)load("glUniform3iARB"); - glad_glUniform4iARB = (PFNGLUNIFORM4IARBPROC)load("glUniform4iARB"); - glad_glUniform1fvARB = (PFNGLUNIFORM1FVARBPROC)load("glUniform1fvARB"); - glad_glUniform2fvARB = (PFNGLUNIFORM2FVARBPROC)load("glUniform2fvARB"); - glad_glUniform3fvARB = (PFNGLUNIFORM3FVARBPROC)load("glUniform3fvARB"); - glad_glUniform4fvARB = (PFNGLUNIFORM4FVARBPROC)load("glUniform4fvARB"); - glad_glUniform1ivARB = (PFNGLUNIFORM1IVARBPROC)load("glUniform1ivARB"); - glad_glUniform2ivARB = (PFNGLUNIFORM2IVARBPROC)load("glUniform2ivARB"); - glad_glUniform3ivARB = (PFNGLUNIFORM3IVARBPROC)load("glUniform3ivARB"); - glad_glUniform4ivARB = (PFNGLUNIFORM4IVARBPROC)load("glUniform4ivARB"); - glad_glUniformMatrix2fvARB = (PFNGLUNIFORMMATRIX2FVARBPROC)load("glUniformMatrix2fvARB"); - glad_glUniformMatrix3fvARB = (PFNGLUNIFORMMATRIX3FVARBPROC)load("glUniformMatrix3fvARB"); - glad_glUniformMatrix4fvARB = (PFNGLUNIFORMMATRIX4FVARBPROC)load("glUniformMatrix4fvARB"); - glad_glGetObjectParameterfvARB = (PFNGLGETOBJECTPARAMETERFVARBPROC)load("glGetObjectParameterfvARB"); - glad_glGetObjectParameterivARB = (PFNGLGETOBJECTPARAMETERIVARBPROC)load("glGetObjectParameterivARB"); - glad_glGetInfoLogARB = (PFNGLGETINFOLOGARBPROC)load("glGetInfoLogARB"); - glad_glGetAttachedObjectsARB = (PFNGLGETATTACHEDOBJECTSARBPROC)load("glGetAttachedObjectsARB"); - glad_glGetUniformLocationARB = (PFNGLGETUNIFORMLOCATIONARBPROC)load("glGetUniformLocationARB"); - glad_glGetActiveUniformARB = (PFNGLGETACTIVEUNIFORMARBPROC)load("glGetActiveUniformARB"); - glad_glGetUniformfvARB = (PFNGLGETUNIFORMFVARBPROC)load("glGetUniformfvARB"); - glad_glGetUniformivARB = (PFNGLGETUNIFORMIVARBPROC)load("glGetUniformivARB"); - glad_glGetShaderSourceARB = (PFNGLGETSHADERSOURCEARBPROC)load("glGetShaderSourceARB"); -} -static void load_GL_ARB_framebuffer_object(GLADloadproc load) { - if(!GLAD_GL_ARB_framebuffer_object) return; - 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"); -} -static void load_GL_ATI_envmap_bumpmap(GLADloadproc load) { - if(!GLAD_GL_ATI_envmap_bumpmap) return; - glad_glTexBumpParameterivATI = (PFNGLTEXBUMPPARAMETERIVATIPROC)load("glTexBumpParameterivATI"); - glad_glTexBumpParameterfvATI = (PFNGLTEXBUMPPARAMETERFVATIPROC)load("glTexBumpParameterfvATI"); - glad_glGetTexBumpParameterivATI = (PFNGLGETTEXBUMPPARAMETERIVATIPROC)load("glGetTexBumpParameterivATI"); - glad_glGetTexBumpParameterfvATI = (PFNGLGETTEXBUMPPARAMETERFVATIPROC)load("glGetTexBumpParameterfvATI"); -} -static void load_GL_ATI_map_object_buffer(GLADloadproc load) { - if(!GLAD_GL_ATI_map_object_buffer) return; - glad_glMapObjectBufferATI = (PFNGLMAPOBJECTBUFFERATIPROC)load("glMapObjectBufferATI"); - glad_glUnmapObjectBufferATI = (PFNGLUNMAPOBJECTBUFFERATIPROC)load("glUnmapObjectBufferATI"); -} -static void load_GL_ARB_robustness(GLADloadproc load) { - if(!GLAD_GL_ARB_robustness) return; - glad_glGetGraphicsResetStatusARB = (PFNGLGETGRAPHICSRESETSTATUSARBPROC)load("glGetGraphicsResetStatusARB"); - glad_glGetnTexImageARB = (PFNGLGETNTEXIMAGEARBPROC)load("glGetnTexImageARB"); - glad_glReadnPixelsARB = (PFNGLREADNPIXELSARBPROC)load("glReadnPixelsARB"); - glad_glGetnCompressedTexImageARB = (PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC)load("glGetnCompressedTexImageARB"); - glad_glGetnUniformfvARB = (PFNGLGETNUNIFORMFVARBPROC)load("glGetnUniformfvARB"); - glad_glGetnUniformivARB = (PFNGLGETNUNIFORMIVARBPROC)load("glGetnUniformivARB"); - glad_glGetnUniformuivARB = (PFNGLGETNUNIFORMUIVARBPROC)load("glGetnUniformuivARB"); - glad_glGetnUniformdvARB = (PFNGLGETNUNIFORMDVARBPROC)load("glGetnUniformdvARB"); - glad_glGetnMapdvARB = (PFNGLGETNMAPDVARBPROC)load("glGetnMapdvARB"); - glad_glGetnMapfvARB = (PFNGLGETNMAPFVARBPROC)load("glGetnMapfvARB"); - glad_glGetnMapivARB = (PFNGLGETNMAPIVARBPROC)load("glGetnMapivARB"); - glad_glGetnPixelMapfvARB = (PFNGLGETNPIXELMAPFVARBPROC)load("glGetnPixelMapfvARB"); - glad_glGetnPixelMapuivARB = (PFNGLGETNPIXELMAPUIVARBPROC)load("glGetnPixelMapuivARB"); - glad_glGetnPixelMapusvARB = (PFNGLGETNPIXELMAPUSVARBPROC)load("glGetnPixelMapusvARB"); - glad_glGetnPolygonStippleARB = (PFNGLGETNPOLYGONSTIPPLEARBPROC)load("glGetnPolygonStippleARB"); - glad_glGetnColorTableARB = (PFNGLGETNCOLORTABLEARBPROC)load("glGetnColorTableARB"); - glad_glGetnConvolutionFilterARB = (PFNGLGETNCONVOLUTIONFILTERARBPROC)load("glGetnConvolutionFilterARB"); - glad_glGetnSeparableFilterARB = (PFNGLGETNSEPARABLEFILTERARBPROC)load("glGetnSeparableFilterARB"); - glad_glGetnHistogramARB = (PFNGLGETNHISTOGRAMARBPROC)load("glGetnHistogramARB"); - glad_glGetnMinmaxARB = (PFNGLGETNMINMAXARBPROC)load("glGetnMinmaxARB"); -} -static void load_GL_NV_pixel_data_range(GLADloadproc load) { - if(!GLAD_GL_NV_pixel_data_range) return; - glad_glPixelDataRangeNV = (PFNGLPIXELDATARANGENVPROC)load("glPixelDataRangeNV"); - glad_glFlushPixelDataRangeNV = (PFNGLFLUSHPIXELDATARANGENVPROC)load("glFlushPixelDataRangeNV"); -} -static void load_GL_EXT_framebuffer_blit(GLADloadproc load) { - if(!GLAD_GL_EXT_framebuffer_blit) return; - glad_glBlitFramebufferEXT = (PFNGLBLITFRAMEBUFFEREXTPROC)load("glBlitFramebufferEXT"); -} -static void load_GL_ARB_gpu_shader_fp64(GLADloadproc load) { - if(!GLAD_GL_ARB_gpu_shader_fp64) return; - 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"); -} -static void load_GL_NV_command_list(GLADloadproc load) { - if(!GLAD_GL_NV_command_list) return; - glad_glCreateStatesNV = (PFNGLCREATESTATESNVPROC)load("glCreateStatesNV"); - glad_glDeleteStatesNV = (PFNGLDELETESTATESNVPROC)load("glDeleteStatesNV"); - glad_glIsStateNV = (PFNGLISSTATENVPROC)load("glIsStateNV"); - glad_glStateCaptureNV = (PFNGLSTATECAPTURENVPROC)load("glStateCaptureNV"); - glad_glGetCommandHeaderNV = (PFNGLGETCOMMANDHEADERNVPROC)load("glGetCommandHeaderNV"); - glad_glGetStageIndexNV = (PFNGLGETSTAGEINDEXNVPROC)load("glGetStageIndexNV"); - glad_glDrawCommandsNV = (PFNGLDRAWCOMMANDSNVPROC)load("glDrawCommandsNV"); - glad_glDrawCommandsAddressNV = (PFNGLDRAWCOMMANDSADDRESSNVPROC)load("glDrawCommandsAddressNV"); - glad_glDrawCommandsStatesNV = (PFNGLDRAWCOMMANDSSTATESNVPROC)load("glDrawCommandsStatesNV"); - glad_glDrawCommandsStatesAddressNV = (PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC)load("glDrawCommandsStatesAddressNV"); - glad_glCreateCommandListsNV = (PFNGLCREATECOMMANDLISTSNVPROC)load("glCreateCommandListsNV"); - glad_glDeleteCommandListsNV = (PFNGLDELETECOMMANDLISTSNVPROC)load("glDeleteCommandListsNV"); - glad_glIsCommandListNV = (PFNGLISCOMMANDLISTNVPROC)load("glIsCommandListNV"); - glad_glListDrawCommandsStatesClientNV = (PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC)load("glListDrawCommandsStatesClientNV"); - glad_glCommandListSegmentsNV = (PFNGLCOMMANDLISTSEGMENTSNVPROC)load("glCommandListSegmentsNV"); - glad_glCompileCommandListNV = (PFNGLCOMPILECOMMANDLISTNVPROC)load("glCompileCommandListNV"); - glad_glCallCommandListNV = (PFNGLCALLCOMMANDLISTNVPROC)load("glCallCommandListNV"); -} -static void load_GL_EXT_vertex_weighting(GLADloadproc load) { - if(!GLAD_GL_EXT_vertex_weighting) return; - glad_glVertexWeightfEXT = (PFNGLVERTEXWEIGHTFEXTPROC)load("glVertexWeightfEXT"); - glad_glVertexWeightfvEXT = (PFNGLVERTEXWEIGHTFVEXTPROC)load("glVertexWeightfvEXT"); - glad_glVertexWeightPointerEXT = (PFNGLVERTEXWEIGHTPOINTEREXTPROC)load("glVertexWeightPointerEXT"); -} -static void load_GL_GREMEDY_string_marker(GLADloadproc load) { - if(!GLAD_GL_GREMEDY_string_marker) return; - glad_glStringMarkerGREMEDY = (PFNGLSTRINGMARKERGREMEDYPROC)load("glStringMarkerGREMEDY"); -} -static void load_GL_EXT_subtexture(GLADloadproc load) { - if(!GLAD_GL_EXT_subtexture) return; - glad_glTexSubImage1DEXT = (PFNGLTEXSUBIMAGE1DEXTPROC)load("glTexSubImage1DEXT"); - glad_glTexSubImage2DEXT = (PFNGLTEXSUBIMAGE2DEXTPROC)load("glTexSubImage2DEXT"); -} -static void load_GL_EXT_gpu_program_parameters(GLADloadproc load) { - if(!GLAD_GL_EXT_gpu_program_parameters) return; - glad_glProgramEnvParameters4fvEXT = (PFNGLPROGRAMENVPARAMETERS4FVEXTPROC)load("glProgramEnvParameters4fvEXT"); - glad_glProgramLocalParameters4fvEXT = (PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC)load("glProgramLocalParameters4fvEXT"); -} -static void load_GL_NV_evaluators(GLADloadproc load) { - if(!GLAD_GL_NV_evaluators) return; - glad_glMapControlPointsNV = (PFNGLMAPCONTROLPOINTSNVPROC)load("glMapControlPointsNV"); - glad_glMapParameterivNV = (PFNGLMAPPARAMETERIVNVPROC)load("glMapParameterivNV"); - glad_glMapParameterfvNV = (PFNGLMAPPARAMETERFVNVPROC)load("glMapParameterfvNV"); - glad_glGetMapControlPointsNV = (PFNGLGETMAPCONTROLPOINTSNVPROC)load("glGetMapControlPointsNV"); - glad_glGetMapParameterivNV = (PFNGLGETMAPPARAMETERIVNVPROC)load("glGetMapParameterivNV"); - glad_glGetMapParameterfvNV = (PFNGLGETMAPPARAMETERFVNVPROC)load("glGetMapParameterfvNV"); - glad_glGetMapAttribParameterivNV = (PFNGLGETMAPATTRIBPARAMETERIVNVPROC)load("glGetMapAttribParameterivNV"); - glad_glGetMapAttribParameterfvNV = (PFNGLGETMAPATTRIBPARAMETERFVNVPROC)load("glGetMapAttribParameterfvNV"); - glad_glEvalMapsNV = (PFNGLEVALMAPSNVPROC)load("glEvalMapsNV"); -} -static void load_GL_SGIS_texture_filter4(GLADloadproc load) { - if(!GLAD_GL_SGIS_texture_filter4) return; - glad_glGetTexFilterFuncSGIS = (PFNGLGETTEXFILTERFUNCSGISPROC)load("glGetTexFilterFuncSGIS"); - glad_glTexFilterFuncSGIS = (PFNGLTEXFILTERFUNCSGISPROC)load("glTexFilterFuncSGIS"); -} -static void load_GL_AMD_performance_monitor(GLADloadproc load) { - if(!GLAD_GL_AMD_performance_monitor) return; - glad_glGetPerfMonitorGroupsAMD = (PFNGLGETPERFMONITORGROUPSAMDPROC)load("glGetPerfMonitorGroupsAMD"); - glad_glGetPerfMonitorCountersAMD = (PFNGLGETPERFMONITORCOUNTERSAMDPROC)load("glGetPerfMonitorCountersAMD"); - glad_glGetPerfMonitorGroupStringAMD = (PFNGLGETPERFMONITORGROUPSTRINGAMDPROC)load("glGetPerfMonitorGroupStringAMD"); - glad_glGetPerfMonitorCounterStringAMD = (PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC)load("glGetPerfMonitorCounterStringAMD"); - glad_glGetPerfMonitorCounterInfoAMD = (PFNGLGETPERFMONITORCOUNTERINFOAMDPROC)load("glGetPerfMonitorCounterInfoAMD"); - glad_glGenPerfMonitorsAMD = (PFNGLGENPERFMONITORSAMDPROC)load("glGenPerfMonitorsAMD"); - glad_glDeletePerfMonitorsAMD = (PFNGLDELETEPERFMONITORSAMDPROC)load("glDeletePerfMonitorsAMD"); - glad_glSelectPerfMonitorCountersAMD = (PFNGLSELECTPERFMONITORCOUNTERSAMDPROC)load("glSelectPerfMonitorCountersAMD"); - glad_glBeginPerfMonitorAMD = (PFNGLBEGINPERFMONITORAMDPROC)load("glBeginPerfMonitorAMD"); - glad_glEndPerfMonitorAMD = (PFNGLENDPERFMONITORAMDPROC)load("glEndPerfMonitorAMD"); - glad_glGetPerfMonitorCounterDataAMD = (PFNGLGETPERFMONITORCOUNTERDATAAMDPROC)load("glGetPerfMonitorCounterDataAMD"); -} -static void load_GL_EXT_stencil_clear_tag(GLADloadproc load) { - if(!GLAD_GL_EXT_stencil_clear_tag) return; - glad_glStencilClearTagEXT = (PFNGLSTENCILCLEARTAGEXTPROC)load("glStencilClearTagEXT"); -} -static void load_GL_NV_present_video(GLADloadproc load) { - if(!GLAD_GL_NV_present_video) return; - glad_glPresentFrameKeyedNV = (PFNGLPRESENTFRAMEKEYEDNVPROC)load("glPresentFrameKeyedNV"); - glad_glPresentFrameDualFillNV = (PFNGLPRESENTFRAMEDUALFILLNVPROC)load("glPresentFrameDualFillNV"); - glad_glGetVideoivNV = (PFNGLGETVIDEOIVNVPROC)load("glGetVideoivNV"); - glad_glGetVideouivNV = (PFNGLGETVIDEOUIVNVPROC)load("glGetVideouivNV"); - glad_glGetVideoi64vNV = (PFNGLGETVIDEOI64VNVPROC)load("glGetVideoi64vNV"); - glad_glGetVideoui64vNV = (PFNGLGETVIDEOUI64VNVPROC)load("glGetVideoui64vNV"); -} -static void load_GL_SGIX_framezoom(GLADloadproc load) { - if(!GLAD_GL_SGIX_framezoom) return; - glad_glFrameZoomSGIX = (PFNGLFRAMEZOOMSGIXPROC)load("glFrameZoomSGIX"); -} -static void load_GL_ARB_draw_elements_base_vertex(GLADloadproc load) { - if(!GLAD_GL_ARB_draw_elements_base_vertex) return; - glad_glDrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEXPROC)load("glDrawElementsBaseVertex"); - glad_glDrawRangeElementsBaseVertex = (PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)load("glDrawRangeElementsBaseVertex"); - glad_glDrawElementsInstancedBaseVertex = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)load("glDrawElementsInstancedBaseVertex"); - glad_glMultiDrawElementsBaseVertex = (PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)load("glMultiDrawElementsBaseVertex"); -} -static void load_GL_NV_transform_feedback(GLADloadproc load) { - if(!GLAD_GL_NV_transform_feedback) return; - glad_glBeginTransformFeedbackNV = (PFNGLBEGINTRANSFORMFEEDBACKNVPROC)load("glBeginTransformFeedbackNV"); - glad_glEndTransformFeedbackNV = (PFNGLENDTRANSFORMFEEDBACKNVPROC)load("glEndTransformFeedbackNV"); - glad_glTransformFeedbackAttribsNV = (PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC)load("glTransformFeedbackAttribsNV"); - glad_glBindBufferRangeNV = (PFNGLBINDBUFFERRANGENVPROC)load("glBindBufferRangeNV"); - glad_glBindBufferOffsetNV = (PFNGLBINDBUFFEROFFSETNVPROC)load("glBindBufferOffsetNV"); - glad_glBindBufferBaseNV = (PFNGLBINDBUFFERBASENVPROC)load("glBindBufferBaseNV"); - glad_glTransformFeedbackVaryingsNV = (PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC)load("glTransformFeedbackVaryingsNV"); - glad_glActiveVaryingNV = (PFNGLACTIVEVARYINGNVPROC)load("glActiveVaryingNV"); - glad_glGetVaryingLocationNV = (PFNGLGETVARYINGLOCATIONNVPROC)load("glGetVaryingLocationNV"); - glad_glGetActiveVaryingNV = (PFNGLGETACTIVEVARYINGNVPROC)load("glGetActiveVaryingNV"); - glad_glGetTransformFeedbackVaryingNV = (PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC)load("glGetTransformFeedbackVaryingNV"); - glad_glTransformFeedbackStreamAttribsNV = (PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC)load("glTransformFeedbackStreamAttribsNV"); -} -static void load_GL_NV_fragment_program(GLADloadproc load) { - if(!GLAD_GL_NV_fragment_program) return; - glad_glProgramNamedParameter4fNV = (PFNGLPROGRAMNAMEDPARAMETER4FNVPROC)load("glProgramNamedParameter4fNV"); - glad_glProgramNamedParameter4fvNV = (PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC)load("glProgramNamedParameter4fvNV"); - glad_glProgramNamedParameter4dNV = (PFNGLPROGRAMNAMEDPARAMETER4DNVPROC)load("glProgramNamedParameter4dNV"); - glad_glProgramNamedParameter4dvNV = (PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC)load("glProgramNamedParameter4dvNV"); - glad_glGetProgramNamedParameterfvNV = (PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC)load("glGetProgramNamedParameterfvNV"); - glad_glGetProgramNamedParameterdvNV = (PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC)load("glGetProgramNamedParameterdvNV"); -} -static void load_GL_AMD_stencil_operation_extended(GLADloadproc load) { - if(!GLAD_GL_AMD_stencil_operation_extended) return; - glad_glStencilOpValueAMD = (PFNGLSTENCILOPVALUEAMDPROC)load("glStencilOpValueAMD"); -} -static void load_GL_ARB_instanced_arrays(GLADloadproc load) { - if(!GLAD_GL_ARB_instanced_arrays) return; - glad_glVertexAttribDivisorARB = (PFNGLVERTEXATTRIBDIVISORARBPROC)load("glVertexAttribDivisorARB"); -} -static void load_GL_EXT_polygon_offset(GLADloadproc load) { - if(!GLAD_GL_EXT_polygon_offset) return; - glad_glPolygonOffsetEXT = (PFNGLPOLYGONOFFSETEXTPROC)load("glPolygonOffsetEXT"); -} -static void load_GL_KHR_robustness(GLADloadproc load) { - if(!GLAD_GL_KHR_robustness) return; - glad_glGetGraphicsResetStatus = (PFNGLGETGRAPHICSRESETSTATUSPROC)load("glGetGraphicsResetStatus"); - glad_glReadnPixels = (PFNGLREADNPIXELSPROC)load("glReadnPixels"); - glad_glGetnUniformfv = (PFNGLGETNUNIFORMFVPROC)load("glGetnUniformfv"); - glad_glGetnUniformiv = (PFNGLGETNUNIFORMIVPROC)load("glGetnUniformiv"); - glad_glGetnUniformuiv = (PFNGLGETNUNIFORMUIVPROC)load("glGetnUniformuiv"); - glad_glGetGraphicsResetStatusKHR = (PFNGLGETGRAPHICSRESETSTATUSKHRPROC)load("glGetGraphicsResetStatusKHR"); - glad_glReadnPixelsKHR = (PFNGLREADNPIXELSKHRPROC)load("glReadnPixelsKHR"); - glad_glGetnUniformfvKHR = (PFNGLGETNUNIFORMFVKHRPROC)load("glGetnUniformfvKHR"); - glad_glGetnUniformivKHR = (PFNGLGETNUNIFORMIVKHRPROC)load("glGetnUniformivKHR"); - glad_glGetnUniformuivKHR = (PFNGLGETNUNIFORMUIVKHRPROC)load("glGetnUniformuivKHR"); -} -static void load_GL_AMD_sparse_texture(GLADloadproc load) { - if(!GLAD_GL_AMD_sparse_texture) return; - glad_glTexStorageSparseAMD = (PFNGLTEXSTORAGESPARSEAMDPROC)load("glTexStorageSparseAMD"); - glad_glTextureStorageSparseAMD = (PFNGLTEXTURESTORAGESPARSEAMDPROC)load("glTextureStorageSparseAMD"); -} -static void load_GL_ARB_clip_control(GLADloadproc load) { - if(!GLAD_GL_ARB_clip_control) return; - glad_glClipControl = (PFNGLCLIPCONTROLPROC)load("glClipControl"); -} -static void load_GL_NV_fragment_coverage_to_color(GLADloadproc load) { - if(!GLAD_GL_NV_fragment_coverage_to_color) return; - glad_glFragmentCoverageColorNV = (PFNGLFRAGMENTCOVERAGECOLORNVPROC)load("glFragmentCoverageColorNV"); -} -static void load_GL_NV_fence(GLADloadproc load) { - if(!GLAD_GL_NV_fence) return; - glad_glDeleteFencesNV = (PFNGLDELETEFENCESNVPROC)load("glDeleteFencesNV"); - glad_glGenFencesNV = (PFNGLGENFENCESNVPROC)load("glGenFencesNV"); - glad_glIsFenceNV = (PFNGLISFENCENVPROC)load("glIsFenceNV"); - glad_glTestFenceNV = (PFNGLTESTFENCENVPROC)load("glTestFenceNV"); - glad_glGetFenceivNV = (PFNGLGETFENCEIVNVPROC)load("glGetFenceivNV"); - glad_glFinishFenceNV = (PFNGLFINISHFENCENVPROC)load("glFinishFenceNV"); - glad_glSetFenceNV = (PFNGLSETFENCENVPROC)load("glSetFenceNV"); -} -static void load_GL_ARB_texture_buffer_range(GLADloadproc load) { - if(!GLAD_GL_ARB_texture_buffer_range) return; - glad_glTexBufferRange = (PFNGLTEXBUFFERRANGEPROC)load("glTexBufferRange"); -} -static void load_GL_SUN_mesh_array(GLADloadproc load) { - if(!GLAD_GL_SUN_mesh_array) return; - glad_glDrawMeshArraysSUN = (PFNGLDRAWMESHARRAYSSUNPROC)load("glDrawMeshArraysSUN"); -} -static void load_GL_ARB_vertex_attrib_binding(GLADloadproc load) { - if(!GLAD_GL_ARB_vertex_attrib_binding) return; - glad_glBindVertexBuffer = (PFNGLBINDVERTEXBUFFERPROC)load("glBindVertexBuffer"); - glad_glVertexAttribFormat = (PFNGLVERTEXATTRIBFORMATPROC)load("glVertexAttribFormat"); - glad_glVertexAttribIFormat = (PFNGLVERTEXATTRIBIFORMATPROC)load("glVertexAttribIFormat"); - glad_glVertexAttribLFormat = (PFNGLVERTEXATTRIBLFORMATPROC)load("glVertexAttribLFormat"); - glad_glVertexAttribBinding = (PFNGLVERTEXATTRIBBINDINGPROC)load("glVertexAttribBinding"); - glad_glVertexBindingDivisor = (PFNGLVERTEXBINDINGDIVISORPROC)load("glVertexBindingDivisor"); -} -static void load_GL_ARB_framebuffer_no_attachments(GLADloadproc load) { - if(!GLAD_GL_ARB_framebuffer_no_attachments) return; - glad_glFramebufferParameteri = (PFNGLFRAMEBUFFERPARAMETERIPROC)load("glFramebufferParameteri"); - glad_glGetFramebufferParameteriv = (PFNGLGETFRAMEBUFFERPARAMETERIVPROC)load("glGetFramebufferParameteriv"); -} -static void load_GL_ARB_cl_event(GLADloadproc load) { - if(!GLAD_GL_ARB_cl_event) return; - glad_glCreateSyncFromCLeventARB = (PFNGLCREATESYNCFROMCLEVENTARBPROC)load("glCreateSyncFromCLeventARB"); -} -static void load_GL_OES_single_precision(GLADloadproc load) { - if(!GLAD_GL_OES_single_precision) return; - glad_glClearDepthfOES = (PFNGLCLEARDEPTHFOESPROC)load("glClearDepthfOES"); - glad_glClipPlanefOES = (PFNGLCLIPPLANEFOESPROC)load("glClipPlanefOES"); - glad_glDepthRangefOES = (PFNGLDEPTHRANGEFOESPROC)load("glDepthRangefOES"); - glad_glFrustumfOES = (PFNGLFRUSTUMFOESPROC)load("glFrustumfOES"); - glad_glGetClipPlanefOES = (PFNGLGETCLIPPLANEFOESPROC)load("glGetClipPlanefOES"); - glad_glOrthofOES = (PFNGLORTHOFOESPROC)load("glOrthofOES"); -} -static void load_GL_NV_primitive_restart(GLADloadproc load) { - if(!GLAD_GL_NV_primitive_restart) return; - glad_glPrimitiveRestartNV = (PFNGLPRIMITIVERESTARTNVPROC)load("glPrimitiveRestartNV"); - glad_glPrimitiveRestartIndexNV = (PFNGLPRIMITIVERESTARTINDEXNVPROC)load("glPrimitiveRestartIndexNV"); -} -static void load_GL_SUN_global_alpha(GLADloadproc load) { - if(!GLAD_GL_SUN_global_alpha) return; - glad_glGlobalAlphaFactorbSUN = (PFNGLGLOBALALPHAFACTORBSUNPROC)load("glGlobalAlphaFactorbSUN"); - glad_glGlobalAlphaFactorsSUN = (PFNGLGLOBALALPHAFACTORSSUNPROC)load("glGlobalAlphaFactorsSUN"); - glad_glGlobalAlphaFactoriSUN = (PFNGLGLOBALALPHAFACTORISUNPROC)load("glGlobalAlphaFactoriSUN"); - glad_glGlobalAlphaFactorfSUN = (PFNGLGLOBALALPHAFACTORFSUNPROC)load("glGlobalAlphaFactorfSUN"); - glad_glGlobalAlphaFactordSUN = (PFNGLGLOBALALPHAFACTORDSUNPROC)load("glGlobalAlphaFactordSUN"); - glad_glGlobalAlphaFactorubSUN = (PFNGLGLOBALALPHAFACTORUBSUNPROC)load("glGlobalAlphaFactorubSUN"); - glad_glGlobalAlphaFactorusSUN = (PFNGLGLOBALALPHAFACTORUSSUNPROC)load("glGlobalAlphaFactorusSUN"); - glad_glGlobalAlphaFactoruiSUN = (PFNGLGLOBALALPHAFACTORUISUNPROC)load("glGlobalAlphaFactoruiSUN"); -} -static void load_GL_EXT_texture_object(GLADloadproc load) { - if(!GLAD_GL_EXT_texture_object) return; - glad_glAreTexturesResidentEXT = (PFNGLARETEXTURESRESIDENTEXTPROC)load("glAreTexturesResidentEXT"); - glad_glBindTextureEXT = (PFNGLBINDTEXTUREEXTPROC)load("glBindTextureEXT"); - glad_glDeleteTexturesEXT = (PFNGLDELETETEXTURESEXTPROC)load("glDeleteTexturesEXT"); - glad_glGenTexturesEXT = (PFNGLGENTEXTURESEXTPROC)load("glGenTexturesEXT"); - glad_glIsTextureEXT = (PFNGLISTEXTUREEXTPROC)load("glIsTextureEXT"); - glad_glPrioritizeTexturesEXT = (PFNGLPRIORITIZETEXTURESEXTPROC)load("glPrioritizeTexturesEXT"); -} -static void load_GL_AMD_name_gen_delete(GLADloadproc load) { - if(!GLAD_GL_AMD_name_gen_delete) return; - glad_glGenNamesAMD = (PFNGLGENNAMESAMDPROC)load("glGenNamesAMD"); - glad_glDeleteNamesAMD = (PFNGLDELETENAMESAMDPROC)load("glDeleteNamesAMD"); - glad_glIsNameAMD = (PFNGLISNAMEAMDPROC)load("glIsNameAMD"); -} -static void load_GL_ARB_buffer_storage(GLADloadproc load) { - if(!GLAD_GL_ARB_buffer_storage) return; - glad_glBufferStorage = (PFNGLBUFFERSTORAGEPROC)load("glBufferStorage"); -} -static void load_GL_APPLE_vertex_program_evaluators(GLADloadproc load) { - if(!GLAD_GL_APPLE_vertex_program_evaluators) return; - glad_glEnableVertexAttribAPPLE = (PFNGLENABLEVERTEXATTRIBAPPLEPROC)load("glEnableVertexAttribAPPLE"); - glad_glDisableVertexAttribAPPLE = (PFNGLDISABLEVERTEXATTRIBAPPLEPROC)load("glDisableVertexAttribAPPLE"); - glad_glIsVertexAttribEnabledAPPLE = (PFNGLISVERTEXATTRIBENABLEDAPPLEPROC)load("glIsVertexAttribEnabledAPPLE"); - glad_glMapVertexAttrib1dAPPLE = (PFNGLMAPVERTEXATTRIB1DAPPLEPROC)load("glMapVertexAttrib1dAPPLE"); - glad_glMapVertexAttrib1fAPPLE = (PFNGLMAPVERTEXATTRIB1FAPPLEPROC)load("glMapVertexAttrib1fAPPLE"); - glad_glMapVertexAttrib2dAPPLE = (PFNGLMAPVERTEXATTRIB2DAPPLEPROC)load("glMapVertexAttrib2dAPPLE"); - glad_glMapVertexAttrib2fAPPLE = (PFNGLMAPVERTEXATTRIB2FAPPLEPROC)load("glMapVertexAttrib2fAPPLE"); -} -static void load_GL_ARB_multi_bind(GLADloadproc load) { - if(!GLAD_GL_ARB_multi_bind) return; - glad_glBindBuffersBase = (PFNGLBINDBUFFERSBASEPROC)load("glBindBuffersBase"); - glad_glBindBuffersRange = (PFNGLBINDBUFFERSRANGEPROC)load("glBindBuffersRange"); - glad_glBindTextures = (PFNGLBINDTEXTURESPROC)load("glBindTextures"); - glad_glBindSamplers = (PFNGLBINDSAMPLERSPROC)load("glBindSamplers"); - glad_glBindImageTextures = (PFNGLBINDIMAGETEXTURESPROC)load("glBindImageTextures"); - glad_glBindVertexBuffers = (PFNGLBINDVERTEXBUFFERSPROC)load("glBindVertexBuffers"); -} -static void load_GL_SGIX_list_priority(GLADloadproc load) { - if(!GLAD_GL_SGIX_list_priority) return; - glad_glGetListParameterfvSGIX = (PFNGLGETLISTPARAMETERFVSGIXPROC)load("glGetListParameterfvSGIX"); - glad_glGetListParameterivSGIX = (PFNGLGETLISTPARAMETERIVSGIXPROC)load("glGetListParameterivSGIX"); - glad_glListParameterfSGIX = (PFNGLLISTPARAMETERFSGIXPROC)load("glListParameterfSGIX"); - glad_glListParameterfvSGIX = (PFNGLLISTPARAMETERFVSGIXPROC)load("glListParameterfvSGIX"); - glad_glListParameteriSGIX = (PFNGLLISTPARAMETERISGIXPROC)load("glListParameteriSGIX"); - glad_glListParameterivSGIX = (PFNGLLISTPARAMETERIVSGIXPROC)load("glListParameterivSGIX"); -} -static void load_GL_NV_vertex_buffer_unified_memory(GLADloadproc load) { - if(!GLAD_GL_NV_vertex_buffer_unified_memory) return; - glad_glBufferAddressRangeNV = (PFNGLBUFFERADDRESSRANGENVPROC)load("glBufferAddressRangeNV"); - glad_glVertexFormatNV = (PFNGLVERTEXFORMATNVPROC)load("glVertexFormatNV"); - glad_glNormalFormatNV = (PFNGLNORMALFORMATNVPROC)load("glNormalFormatNV"); - glad_glColorFormatNV = (PFNGLCOLORFORMATNVPROC)load("glColorFormatNV"); - glad_glIndexFormatNV = (PFNGLINDEXFORMATNVPROC)load("glIndexFormatNV"); - glad_glTexCoordFormatNV = (PFNGLTEXCOORDFORMATNVPROC)load("glTexCoordFormatNV"); - glad_glEdgeFlagFormatNV = (PFNGLEDGEFLAGFORMATNVPROC)load("glEdgeFlagFormatNV"); - glad_glSecondaryColorFormatNV = (PFNGLSECONDARYCOLORFORMATNVPROC)load("glSecondaryColorFormatNV"); - glad_glFogCoordFormatNV = (PFNGLFOGCOORDFORMATNVPROC)load("glFogCoordFormatNV"); - glad_glVertexAttribFormatNV = (PFNGLVERTEXATTRIBFORMATNVPROC)load("glVertexAttribFormatNV"); - glad_glVertexAttribIFormatNV = (PFNGLVERTEXATTRIBIFORMATNVPROC)load("glVertexAttribIFormatNV"); - glad_glGetIntegerui64i_vNV = (PFNGLGETINTEGERUI64I_VNVPROC)load("glGetIntegerui64i_vNV"); -} -static void load_GL_NV_blend_equation_advanced(GLADloadproc load) { - if(!GLAD_GL_NV_blend_equation_advanced) return; - glad_glBlendParameteriNV = (PFNGLBLENDPARAMETERINVPROC)load("glBlendParameteriNV"); - glad_glBlendBarrierNV = (PFNGLBLENDBARRIERNVPROC)load("glBlendBarrierNV"); -} -static void load_GL_SGIS_sharpen_texture(GLADloadproc load) { - if(!GLAD_GL_SGIS_sharpen_texture) return; - glad_glSharpenTexFuncSGIS = (PFNGLSHARPENTEXFUNCSGISPROC)load("glSharpenTexFuncSGIS"); - glad_glGetSharpenTexFuncSGIS = (PFNGLGETSHARPENTEXFUNCSGISPROC)load("glGetSharpenTexFuncSGIS"); -} -static void load_GL_ARB_vertex_program(GLADloadproc load) { - if(!GLAD_GL_ARB_vertex_program) return; - glad_glVertexAttrib1dARB = (PFNGLVERTEXATTRIB1DARBPROC)load("glVertexAttrib1dARB"); - glad_glVertexAttrib1dvARB = (PFNGLVERTEXATTRIB1DVARBPROC)load("glVertexAttrib1dvARB"); - glad_glVertexAttrib1fARB = (PFNGLVERTEXATTRIB1FARBPROC)load("glVertexAttrib1fARB"); - glad_glVertexAttrib1fvARB = (PFNGLVERTEXATTRIB1FVARBPROC)load("glVertexAttrib1fvARB"); - glad_glVertexAttrib1sARB = (PFNGLVERTEXATTRIB1SARBPROC)load("glVertexAttrib1sARB"); - glad_glVertexAttrib1svARB = (PFNGLVERTEXATTRIB1SVARBPROC)load("glVertexAttrib1svARB"); - glad_glVertexAttrib2dARB = (PFNGLVERTEXATTRIB2DARBPROC)load("glVertexAttrib2dARB"); - glad_glVertexAttrib2dvARB = (PFNGLVERTEXATTRIB2DVARBPROC)load("glVertexAttrib2dvARB"); - glad_glVertexAttrib2fARB = (PFNGLVERTEXATTRIB2FARBPROC)load("glVertexAttrib2fARB"); - glad_glVertexAttrib2fvARB = (PFNGLVERTEXATTRIB2FVARBPROC)load("glVertexAttrib2fvARB"); - glad_glVertexAttrib2sARB = (PFNGLVERTEXATTRIB2SARBPROC)load("glVertexAttrib2sARB"); - glad_glVertexAttrib2svARB = (PFNGLVERTEXATTRIB2SVARBPROC)load("glVertexAttrib2svARB"); - glad_glVertexAttrib3dARB = (PFNGLVERTEXATTRIB3DARBPROC)load("glVertexAttrib3dARB"); - glad_glVertexAttrib3dvARB = (PFNGLVERTEXATTRIB3DVARBPROC)load("glVertexAttrib3dvARB"); - glad_glVertexAttrib3fARB = (PFNGLVERTEXATTRIB3FARBPROC)load("glVertexAttrib3fARB"); - glad_glVertexAttrib3fvARB = (PFNGLVERTEXATTRIB3FVARBPROC)load("glVertexAttrib3fvARB"); - glad_glVertexAttrib3sARB = (PFNGLVERTEXATTRIB3SARBPROC)load("glVertexAttrib3sARB"); - glad_glVertexAttrib3svARB = (PFNGLVERTEXATTRIB3SVARBPROC)load("glVertexAttrib3svARB"); - glad_glVertexAttrib4NbvARB = (PFNGLVERTEXATTRIB4NBVARBPROC)load("glVertexAttrib4NbvARB"); - glad_glVertexAttrib4NivARB = (PFNGLVERTEXATTRIB4NIVARBPROC)load("glVertexAttrib4NivARB"); - glad_glVertexAttrib4NsvARB = (PFNGLVERTEXATTRIB4NSVARBPROC)load("glVertexAttrib4NsvARB"); - glad_glVertexAttrib4NubARB = (PFNGLVERTEXATTRIB4NUBARBPROC)load("glVertexAttrib4NubARB"); - glad_glVertexAttrib4NubvARB = (PFNGLVERTEXATTRIB4NUBVARBPROC)load("glVertexAttrib4NubvARB"); - glad_glVertexAttrib4NuivARB = (PFNGLVERTEXATTRIB4NUIVARBPROC)load("glVertexAttrib4NuivARB"); - glad_glVertexAttrib4NusvARB = (PFNGLVERTEXATTRIB4NUSVARBPROC)load("glVertexAttrib4NusvARB"); - glad_glVertexAttrib4bvARB = (PFNGLVERTEXATTRIB4BVARBPROC)load("glVertexAttrib4bvARB"); - glad_glVertexAttrib4dARB = (PFNGLVERTEXATTRIB4DARBPROC)load("glVertexAttrib4dARB"); - glad_glVertexAttrib4dvARB = (PFNGLVERTEXATTRIB4DVARBPROC)load("glVertexAttrib4dvARB"); - glad_glVertexAttrib4fARB = (PFNGLVERTEXATTRIB4FARBPROC)load("glVertexAttrib4fARB"); - glad_glVertexAttrib4fvARB = (PFNGLVERTEXATTRIB4FVARBPROC)load("glVertexAttrib4fvARB"); - glad_glVertexAttrib4ivARB = (PFNGLVERTEXATTRIB4IVARBPROC)load("glVertexAttrib4ivARB"); - glad_glVertexAttrib4sARB = (PFNGLVERTEXATTRIB4SARBPROC)load("glVertexAttrib4sARB"); - glad_glVertexAttrib4svARB = (PFNGLVERTEXATTRIB4SVARBPROC)load("glVertexAttrib4svARB"); - glad_glVertexAttrib4ubvARB = (PFNGLVERTEXATTRIB4UBVARBPROC)load("glVertexAttrib4ubvARB"); - glad_glVertexAttrib4uivARB = (PFNGLVERTEXATTRIB4UIVARBPROC)load("glVertexAttrib4uivARB"); - glad_glVertexAttrib4usvARB = (PFNGLVERTEXATTRIB4USVARBPROC)load("glVertexAttrib4usvARB"); - glad_glVertexAttribPointerARB = (PFNGLVERTEXATTRIBPOINTERARBPROC)load("glVertexAttribPointerARB"); - glad_glEnableVertexAttribArrayARB = (PFNGLENABLEVERTEXATTRIBARRAYARBPROC)load("glEnableVertexAttribArrayARB"); - glad_glDisableVertexAttribArrayARB = (PFNGLDISABLEVERTEXATTRIBARRAYARBPROC)load("glDisableVertexAttribArrayARB"); - glad_glProgramStringARB = (PFNGLPROGRAMSTRINGARBPROC)load("glProgramStringARB"); - glad_glBindProgramARB = (PFNGLBINDPROGRAMARBPROC)load("glBindProgramARB"); - glad_glDeleteProgramsARB = (PFNGLDELETEPROGRAMSARBPROC)load("glDeleteProgramsARB"); - glad_glGenProgramsARB = (PFNGLGENPROGRAMSARBPROC)load("glGenProgramsARB"); - glad_glProgramEnvParameter4dARB = (PFNGLPROGRAMENVPARAMETER4DARBPROC)load("glProgramEnvParameter4dARB"); - glad_glProgramEnvParameter4dvARB = (PFNGLPROGRAMENVPARAMETER4DVARBPROC)load("glProgramEnvParameter4dvARB"); - glad_glProgramEnvParameter4fARB = (PFNGLPROGRAMENVPARAMETER4FARBPROC)load("glProgramEnvParameter4fARB"); - glad_glProgramEnvParameter4fvARB = (PFNGLPROGRAMENVPARAMETER4FVARBPROC)load("glProgramEnvParameter4fvARB"); - glad_glProgramLocalParameter4dARB = (PFNGLPROGRAMLOCALPARAMETER4DARBPROC)load("glProgramLocalParameter4dARB"); - glad_glProgramLocalParameter4dvARB = (PFNGLPROGRAMLOCALPARAMETER4DVARBPROC)load("glProgramLocalParameter4dvARB"); - glad_glProgramLocalParameter4fARB = (PFNGLPROGRAMLOCALPARAMETER4FARBPROC)load("glProgramLocalParameter4fARB"); - glad_glProgramLocalParameter4fvARB = (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC)load("glProgramLocalParameter4fvARB"); - glad_glGetProgramEnvParameterdvARB = (PFNGLGETPROGRAMENVPARAMETERDVARBPROC)load("glGetProgramEnvParameterdvARB"); - glad_glGetProgramEnvParameterfvARB = (PFNGLGETPROGRAMENVPARAMETERFVARBPROC)load("glGetProgramEnvParameterfvARB"); - glad_glGetProgramLocalParameterdvARB = (PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC)load("glGetProgramLocalParameterdvARB"); - glad_glGetProgramLocalParameterfvARB = (PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC)load("glGetProgramLocalParameterfvARB"); - glad_glGetProgramivARB = (PFNGLGETPROGRAMIVARBPROC)load("glGetProgramivARB"); - glad_glGetProgramStringARB = (PFNGLGETPROGRAMSTRINGARBPROC)load("glGetProgramStringARB"); - glad_glGetVertexAttribdvARB = (PFNGLGETVERTEXATTRIBDVARBPROC)load("glGetVertexAttribdvARB"); - glad_glGetVertexAttribfvARB = (PFNGLGETVERTEXATTRIBFVARBPROC)load("glGetVertexAttribfvARB"); - glad_glGetVertexAttribivARB = (PFNGLGETVERTEXATTRIBIVARBPROC)load("glGetVertexAttribivARB"); - glad_glGetVertexAttribPointervARB = (PFNGLGETVERTEXATTRIBPOINTERVARBPROC)load("glGetVertexAttribPointervARB"); - glad_glIsProgramARB = (PFNGLISPROGRAMARBPROC)load("glIsProgramARB"); -} -static void load_GL_ARB_vertex_buffer_object(GLADloadproc load) { - if(!GLAD_GL_ARB_vertex_buffer_object) return; - glad_glBindBufferARB = (PFNGLBINDBUFFERARBPROC)load("glBindBufferARB"); - glad_glDeleteBuffersARB = (PFNGLDELETEBUFFERSARBPROC)load("glDeleteBuffersARB"); - glad_glGenBuffersARB = (PFNGLGENBUFFERSARBPROC)load("glGenBuffersARB"); - glad_glIsBufferARB = (PFNGLISBUFFERARBPROC)load("glIsBufferARB"); - glad_glBufferDataARB = (PFNGLBUFFERDATAARBPROC)load("glBufferDataARB"); - glad_glBufferSubDataARB = (PFNGLBUFFERSUBDATAARBPROC)load("glBufferSubDataARB"); - glad_glGetBufferSubDataARB = (PFNGLGETBUFFERSUBDATAARBPROC)load("glGetBufferSubDataARB"); - glad_glMapBufferARB = (PFNGLMAPBUFFERARBPROC)load("glMapBufferARB"); - glad_glUnmapBufferARB = (PFNGLUNMAPBUFFERARBPROC)load("glUnmapBufferARB"); - glad_glGetBufferParameterivARB = (PFNGLGETBUFFERPARAMETERIVARBPROC)load("glGetBufferParameterivARB"); - glad_glGetBufferPointervARB = (PFNGLGETBUFFERPOINTERVARBPROC)load("glGetBufferPointervARB"); -} -static void load_GL_NV_vertex_array_range(GLADloadproc load) { - if(!GLAD_GL_NV_vertex_array_range) return; - glad_glFlushVertexArrayRangeNV = (PFNGLFLUSHVERTEXARRAYRANGENVPROC)load("glFlushVertexArrayRangeNV"); - glad_glVertexArrayRangeNV = (PFNGLVERTEXARRAYRANGENVPROC)load("glVertexArrayRangeNV"); -} -static void load_GL_SGIX_fragment_lighting(GLADloadproc load) { - if(!GLAD_GL_SGIX_fragment_lighting) return; - glad_glFragmentColorMaterialSGIX = (PFNGLFRAGMENTCOLORMATERIALSGIXPROC)load("glFragmentColorMaterialSGIX"); - glad_glFragmentLightfSGIX = (PFNGLFRAGMENTLIGHTFSGIXPROC)load("glFragmentLightfSGIX"); - glad_glFragmentLightfvSGIX = (PFNGLFRAGMENTLIGHTFVSGIXPROC)load("glFragmentLightfvSGIX"); - glad_glFragmentLightiSGIX = (PFNGLFRAGMENTLIGHTISGIXPROC)load("glFragmentLightiSGIX"); - glad_glFragmentLightivSGIX = (PFNGLFRAGMENTLIGHTIVSGIXPROC)load("glFragmentLightivSGIX"); - glad_glFragmentLightModelfSGIX = (PFNGLFRAGMENTLIGHTMODELFSGIXPROC)load("glFragmentLightModelfSGIX"); - glad_glFragmentLightModelfvSGIX = (PFNGLFRAGMENTLIGHTMODELFVSGIXPROC)load("glFragmentLightModelfvSGIX"); - glad_glFragmentLightModeliSGIX = (PFNGLFRAGMENTLIGHTMODELISGIXPROC)load("glFragmentLightModeliSGIX"); - glad_glFragmentLightModelivSGIX = (PFNGLFRAGMENTLIGHTMODELIVSGIXPROC)load("glFragmentLightModelivSGIX"); - glad_glFragmentMaterialfSGIX = (PFNGLFRAGMENTMATERIALFSGIXPROC)load("glFragmentMaterialfSGIX"); - glad_glFragmentMaterialfvSGIX = (PFNGLFRAGMENTMATERIALFVSGIXPROC)load("glFragmentMaterialfvSGIX"); - glad_glFragmentMaterialiSGIX = (PFNGLFRAGMENTMATERIALISGIXPROC)load("glFragmentMaterialiSGIX"); - glad_glFragmentMaterialivSGIX = (PFNGLFRAGMENTMATERIALIVSGIXPROC)load("glFragmentMaterialivSGIX"); - glad_glGetFragmentLightfvSGIX = (PFNGLGETFRAGMENTLIGHTFVSGIXPROC)load("glGetFragmentLightfvSGIX"); - glad_glGetFragmentLightivSGIX = (PFNGLGETFRAGMENTLIGHTIVSGIXPROC)load("glGetFragmentLightivSGIX"); - glad_glGetFragmentMaterialfvSGIX = (PFNGLGETFRAGMENTMATERIALFVSGIXPROC)load("glGetFragmentMaterialfvSGIX"); - glad_glGetFragmentMaterialivSGIX = (PFNGLGETFRAGMENTMATERIALIVSGIXPROC)load("glGetFragmentMaterialivSGIX"); - glad_glLightEnviSGIX = (PFNGLLIGHTENVISGIXPROC)load("glLightEnviSGIX"); -} -static void load_GL_NV_framebuffer_multisample_coverage(GLADloadproc load) { - if(!GLAD_GL_NV_framebuffer_multisample_coverage) return; - glad_glRenderbufferStorageMultisampleCoverageNV = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC)load("glRenderbufferStorageMultisampleCoverageNV"); -} -static void load_GL_EXT_timer_query(GLADloadproc load) { - if(!GLAD_GL_EXT_timer_query) return; - glad_glGetQueryObjecti64vEXT = (PFNGLGETQUERYOBJECTI64VEXTPROC)load("glGetQueryObjecti64vEXT"); - glad_glGetQueryObjectui64vEXT = (PFNGLGETQUERYOBJECTUI64VEXTPROC)load("glGetQueryObjectui64vEXT"); -} -static void load_GL_NV_bindless_texture(GLADloadproc load) { - if(!GLAD_GL_NV_bindless_texture) return; - glad_glGetTextureHandleNV = (PFNGLGETTEXTUREHANDLENVPROC)load("glGetTextureHandleNV"); - glad_glGetTextureSamplerHandleNV = (PFNGLGETTEXTURESAMPLERHANDLENVPROC)load("glGetTextureSamplerHandleNV"); - glad_glMakeTextureHandleResidentNV = (PFNGLMAKETEXTUREHANDLERESIDENTNVPROC)load("glMakeTextureHandleResidentNV"); - glad_glMakeTextureHandleNonResidentNV = (PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC)load("glMakeTextureHandleNonResidentNV"); - glad_glGetImageHandleNV = (PFNGLGETIMAGEHANDLENVPROC)load("glGetImageHandleNV"); - glad_glMakeImageHandleResidentNV = (PFNGLMAKEIMAGEHANDLERESIDENTNVPROC)load("glMakeImageHandleResidentNV"); - glad_glMakeImageHandleNonResidentNV = (PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC)load("glMakeImageHandleNonResidentNV"); - glad_glUniformHandleui64NV = (PFNGLUNIFORMHANDLEUI64NVPROC)load("glUniformHandleui64NV"); - glad_glUniformHandleui64vNV = (PFNGLUNIFORMHANDLEUI64VNVPROC)load("glUniformHandleui64vNV"); - glad_glProgramUniformHandleui64NV = (PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC)load("glProgramUniformHandleui64NV"); - glad_glProgramUniformHandleui64vNV = (PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC)load("glProgramUniformHandleui64vNV"); - glad_glIsTextureHandleResidentNV = (PFNGLISTEXTUREHANDLERESIDENTNVPROC)load("glIsTextureHandleResidentNV"); - glad_glIsImageHandleResidentNV = (PFNGLISIMAGEHANDLERESIDENTNVPROC)load("glIsImageHandleResidentNV"); -} -static void load_GL_KHR_debug(GLADloadproc load) { - if(!GLAD_GL_KHR_debug) return; - glad_glDebugMessageControl = (PFNGLDEBUGMESSAGECONTROLPROC)load("glDebugMessageControl"); - glad_glDebugMessageInsert = (PFNGLDEBUGMESSAGEINSERTPROC)load("glDebugMessageInsert"); - glad_glDebugMessageCallback = (PFNGLDEBUGMESSAGECALLBACKPROC)load("glDebugMessageCallback"); - glad_glGetDebugMessageLog = (PFNGLGETDEBUGMESSAGELOGPROC)load("glGetDebugMessageLog"); - glad_glPushDebugGroup = (PFNGLPUSHDEBUGGROUPPROC)load("glPushDebugGroup"); - glad_glPopDebugGroup = (PFNGLPOPDEBUGGROUPPROC)load("glPopDebugGroup"); - glad_glObjectLabel = (PFNGLOBJECTLABELPROC)load("glObjectLabel"); - glad_glGetObjectLabel = (PFNGLGETOBJECTLABELPROC)load("glGetObjectLabel"); - glad_glObjectPtrLabel = (PFNGLOBJECTPTRLABELPROC)load("glObjectPtrLabel"); - glad_glGetObjectPtrLabel = (PFNGLGETOBJECTPTRLABELPROC)load("glGetObjectPtrLabel"); - glad_glGetPointerv = (PFNGLGETPOINTERVPROC)load("glGetPointerv"); - glad_glDebugMessageControlKHR = (PFNGLDEBUGMESSAGECONTROLKHRPROC)load("glDebugMessageControlKHR"); - glad_glDebugMessageInsertKHR = (PFNGLDEBUGMESSAGEINSERTKHRPROC)load("glDebugMessageInsertKHR"); - glad_glDebugMessageCallbackKHR = (PFNGLDEBUGMESSAGECALLBACKKHRPROC)load("glDebugMessageCallbackKHR"); - glad_glGetDebugMessageLogKHR = (PFNGLGETDEBUGMESSAGELOGKHRPROC)load("glGetDebugMessageLogKHR"); - glad_glPushDebugGroupKHR = (PFNGLPUSHDEBUGGROUPKHRPROC)load("glPushDebugGroupKHR"); - glad_glPopDebugGroupKHR = (PFNGLPOPDEBUGGROUPKHRPROC)load("glPopDebugGroupKHR"); - glad_glObjectLabelKHR = (PFNGLOBJECTLABELKHRPROC)load("glObjectLabelKHR"); - glad_glGetObjectLabelKHR = (PFNGLGETOBJECTLABELKHRPROC)load("glGetObjectLabelKHR"); - glad_glObjectPtrLabelKHR = (PFNGLOBJECTPTRLABELKHRPROC)load("glObjectPtrLabelKHR"); - glad_glGetObjectPtrLabelKHR = (PFNGLGETOBJECTPTRLABELKHRPROC)load("glGetObjectPtrLabelKHR"); - glad_glGetPointervKHR = (PFNGLGETPOINTERVKHRPROC)load("glGetPointervKHR"); -} -static void load_GL_ATI_vertex_attrib_array_object(GLADloadproc load) { - if(!GLAD_GL_ATI_vertex_attrib_array_object) return; - glad_glVertexAttribArrayObjectATI = (PFNGLVERTEXATTRIBARRAYOBJECTATIPROC)load("glVertexAttribArrayObjectATI"); - glad_glGetVertexAttribArrayObjectfvATI = (PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC)load("glGetVertexAttribArrayObjectfvATI"); - glad_glGetVertexAttribArrayObjectivATI = (PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC)load("glGetVertexAttribArrayObjectivATI"); -} -static void load_GL_EXT_geometry_shader4(GLADloadproc load) { - if(!GLAD_GL_EXT_geometry_shader4) return; - glad_glProgramParameteriEXT = (PFNGLPROGRAMPARAMETERIEXTPROC)load("glProgramParameteriEXT"); -} -static void load_GL_EXT_bindable_uniform(GLADloadproc load) { - if(!GLAD_GL_EXT_bindable_uniform) return; - glad_glUniformBufferEXT = (PFNGLUNIFORMBUFFEREXTPROC)load("glUniformBufferEXT"); - glad_glGetUniformBufferSizeEXT = (PFNGLGETUNIFORMBUFFERSIZEEXTPROC)load("glGetUniformBufferSizeEXT"); - glad_glGetUniformOffsetEXT = (PFNGLGETUNIFORMOFFSETEXTPROC)load("glGetUniformOffsetEXT"); -} -static void load_GL_KHR_blend_equation_advanced(GLADloadproc load) { - if(!GLAD_GL_KHR_blend_equation_advanced) return; - glad_glBlendBarrierKHR = (PFNGLBLENDBARRIERKHRPROC)load("glBlendBarrierKHR"); -} -static void load_GL_ATI_element_array(GLADloadproc load) { - if(!GLAD_GL_ATI_element_array) return; - glad_glElementPointerATI = (PFNGLELEMENTPOINTERATIPROC)load("glElementPointerATI"); - glad_glDrawElementArrayATI = (PFNGLDRAWELEMENTARRAYATIPROC)load("glDrawElementArrayATI"); - glad_glDrawRangeElementArrayATI = (PFNGLDRAWRANGEELEMENTARRAYATIPROC)load("glDrawRangeElementArrayATI"); -} -static void load_GL_SGIX_reference_plane(GLADloadproc load) { - if(!GLAD_GL_SGIX_reference_plane) return; - glad_glReferencePlaneSGIX = (PFNGLREFERENCEPLANESGIXPROC)load("glReferencePlaneSGIX"); -} -static void load_GL_EXT_stencil_two_side(GLADloadproc load) { - if(!GLAD_GL_EXT_stencil_two_side) return; - glad_glActiveStencilFaceEXT = (PFNGLACTIVESTENCILFACEEXTPROC)load("glActiveStencilFaceEXT"); -} -static void load_GL_NV_explicit_multisample(GLADloadproc load) { - if(!GLAD_GL_NV_explicit_multisample) return; - glad_glGetMultisamplefvNV = (PFNGLGETMULTISAMPLEFVNVPROC)load("glGetMultisamplefvNV"); - glad_glSampleMaskIndexedNV = (PFNGLSAMPLEMASKINDEXEDNVPROC)load("glSampleMaskIndexedNV"); - glad_glTexRenderbufferNV = (PFNGLTEXRENDERBUFFERNVPROC)load("glTexRenderbufferNV"); -} -static void load_GL_IBM_static_data(GLADloadproc load) { - if(!GLAD_GL_IBM_static_data) return; - glad_glFlushStaticDataIBM = (PFNGLFLUSHSTATICDATAIBMPROC)load("glFlushStaticDataIBM"); -} -static void load_GL_EXT_texture_perturb_normal(GLADloadproc load) { - if(!GLAD_GL_EXT_texture_perturb_normal) return; - glad_glTextureNormalEXT = (PFNGLTEXTURENORMALEXTPROC)load("glTextureNormalEXT"); -} -static void load_GL_EXT_point_parameters(GLADloadproc load) { - if(!GLAD_GL_EXT_point_parameters) return; - glad_glPointParameterfEXT = (PFNGLPOINTPARAMETERFEXTPROC)load("glPointParameterfEXT"); - glad_glPointParameterfvEXT = (PFNGLPOINTPARAMETERFVEXTPROC)load("glPointParameterfvEXT"); -} -static void load_GL_PGI_misc_hints(GLADloadproc load) { - if(!GLAD_GL_PGI_misc_hints) return; - glad_glHintPGI = (PFNGLHINTPGIPROC)load("glHintPGI"); -} -static void load_GL_ARB_vertex_shader(GLADloadproc load) { - if(!GLAD_GL_ARB_vertex_shader) return; - glad_glVertexAttrib1fARB = (PFNGLVERTEXATTRIB1FARBPROC)load("glVertexAttrib1fARB"); - glad_glVertexAttrib1sARB = (PFNGLVERTEXATTRIB1SARBPROC)load("glVertexAttrib1sARB"); - glad_glVertexAttrib1dARB = (PFNGLVERTEXATTRIB1DARBPROC)load("glVertexAttrib1dARB"); - glad_glVertexAttrib2fARB = (PFNGLVERTEXATTRIB2FARBPROC)load("glVertexAttrib2fARB"); - glad_glVertexAttrib2sARB = (PFNGLVERTEXATTRIB2SARBPROC)load("glVertexAttrib2sARB"); - glad_glVertexAttrib2dARB = (PFNGLVERTEXATTRIB2DARBPROC)load("glVertexAttrib2dARB"); - glad_glVertexAttrib3fARB = (PFNGLVERTEXATTRIB3FARBPROC)load("glVertexAttrib3fARB"); - glad_glVertexAttrib3sARB = (PFNGLVERTEXATTRIB3SARBPROC)load("glVertexAttrib3sARB"); - glad_glVertexAttrib3dARB = (PFNGLVERTEXATTRIB3DARBPROC)load("glVertexAttrib3dARB"); - glad_glVertexAttrib4fARB = (PFNGLVERTEXATTRIB4FARBPROC)load("glVertexAttrib4fARB"); - glad_glVertexAttrib4sARB = (PFNGLVERTEXATTRIB4SARBPROC)load("glVertexAttrib4sARB"); - glad_glVertexAttrib4dARB = (PFNGLVERTEXATTRIB4DARBPROC)load("glVertexAttrib4dARB"); - glad_glVertexAttrib4NubARB = (PFNGLVERTEXATTRIB4NUBARBPROC)load("glVertexAttrib4NubARB"); - glad_glVertexAttrib1fvARB = (PFNGLVERTEXATTRIB1FVARBPROC)load("glVertexAttrib1fvARB"); - glad_glVertexAttrib1svARB = (PFNGLVERTEXATTRIB1SVARBPROC)load("glVertexAttrib1svARB"); - glad_glVertexAttrib1dvARB = (PFNGLVERTEXATTRIB1DVARBPROC)load("glVertexAttrib1dvARB"); - glad_glVertexAttrib2fvARB = (PFNGLVERTEXATTRIB2FVARBPROC)load("glVertexAttrib2fvARB"); - glad_glVertexAttrib2svARB = (PFNGLVERTEXATTRIB2SVARBPROC)load("glVertexAttrib2svARB"); - glad_glVertexAttrib2dvARB = (PFNGLVERTEXATTRIB2DVARBPROC)load("glVertexAttrib2dvARB"); - glad_glVertexAttrib3fvARB = (PFNGLVERTEXATTRIB3FVARBPROC)load("glVertexAttrib3fvARB"); - glad_glVertexAttrib3svARB = (PFNGLVERTEXATTRIB3SVARBPROC)load("glVertexAttrib3svARB"); - glad_glVertexAttrib3dvARB = (PFNGLVERTEXATTRIB3DVARBPROC)load("glVertexAttrib3dvARB"); - glad_glVertexAttrib4fvARB = (PFNGLVERTEXATTRIB4FVARBPROC)load("glVertexAttrib4fvARB"); - glad_glVertexAttrib4svARB = (PFNGLVERTEXATTRIB4SVARBPROC)load("glVertexAttrib4svARB"); - glad_glVertexAttrib4dvARB = (PFNGLVERTEXATTRIB4DVARBPROC)load("glVertexAttrib4dvARB"); - glad_glVertexAttrib4ivARB = (PFNGLVERTEXATTRIB4IVARBPROC)load("glVertexAttrib4ivARB"); - glad_glVertexAttrib4bvARB = (PFNGLVERTEXATTRIB4BVARBPROC)load("glVertexAttrib4bvARB"); - glad_glVertexAttrib4ubvARB = (PFNGLVERTEXATTRIB4UBVARBPROC)load("glVertexAttrib4ubvARB"); - glad_glVertexAttrib4usvARB = (PFNGLVERTEXATTRIB4USVARBPROC)load("glVertexAttrib4usvARB"); - glad_glVertexAttrib4uivARB = (PFNGLVERTEXATTRIB4UIVARBPROC)load("glVertexAttrib4uivARB"); - glad_glVertexAttrib4NbvARB = (PFNGLVERTEXATTRIB4NBVARBPROC)load("glVertexAttrib4NbvARB"); - glad_glVertexAttrib4NsvARB = (PFNGLVERTEXATTRIB4NSVARBPROC)load("glVertexAttrib4NsvARB"); - glad_glVertexAttrib4NivARB = (PFNGLVERTEXATTRIB4NIVARBPROC)load("glVertexAttrib4NivARB"); - glad_glVertexAttrib4NubvARB = (PFNGLVERTEXATTRIB4NUBVARBPROC)load("glVertexAttrib4NubvARB"); - glad_glVertexAttrib4NusvARB = (PFNGLVERTEXATTRIB4NUSVARBPROC)load("glVertexAttrib4NusvARB"); - glad_glVertexAttrib4NuivARB = (PFNGLVERTEXATTRIB4NUIVARBPROC)load("glVertexAttrib4NuivARB"); - glad_glVertexAttribPointerARB = (PFNGLVERTEXATTRIBPOINTERARBPROC)load("glVertexAttribPointerARB"); - glad_glEnableVertexAttribArrayARB = (PFNGLENABLEVERTEXATTRIBARRAYARBPROC)load("glEnableVertexAttribArrayARB"); - glad_glDisableVertexAttribArrayARB = (PFNGLDISABLEVERTEXATTRIBARRAYARBPROC)load("glDisableVertexAttribArrayARB"); - glad_glBindAttribLocationARB = (PFNGLBINDATTRIBLOCATIONARBPROC)load("glBindAttribLocationARB"); - glad_glGetActiveAttribARB = (PFNGLGETACTIVEATTRIBARBPROC)load("glGetActiveAttribARB"); - glad_glGetAttribLocationARB = (PFNGLGETATTRIBLOCATIONARBPROC)load("glGetAttribLocationARB"); - glad_glGetVertexAttribdvARB = (PFNGLGETVERTEXATTRIBDVARBPROC)load("glGetVertexAttribdvARB"); - glad_glGetVertexAttribfvARB = (PFNGLGETVERTEXATTRIBFVARBPROC)load("glGetVertexAttribfvARB"); - glad_glGetVertexAttribivARB = (PFNGLGETVERTEXATTRIBIVARBPROC)load("glGetVertexAttribivARB"); - glad_glGetVertexAttribPointervARB = (PFNGLGETVERTEXATTRIBPOINTERVARBPROC)load("glGetVertexAttribPointervARB"); -} -static void load_GL_ARB_tessellation_shader(GLADloadproc load) { - if(!GLAD_GL_ARB_tessellation_shader) return; - glad_glPatchParameteri = (PFNGLPATCHPARAMETERIPROC)load("glPatchParameteri"); - glad_glPatchParameterfv = (PFNGLPATCHPARAMETERFVPROC)load("glPatchParameterfv"); -} -static void load_GL_EXT_draw_buffers2(GLADloadproc load) { - if(!GLAD_GL_EXT_draw_buffers2) return; - glad_glColorMaskIndexedEXT = (PFNGLCOLORMASKINDEXEDEXTPROC)load("glColorMaskIndexedEXT"); - glad_glGetBooleanIndexedvEXT = (PFNGLGETBOOLEANINDEXEDVEXTPROC)load("glGetBooleanIndexedvEXT"); - glad_glGetIntegerIndexedvEXT = (PFNGLGETINTEGERINDEXEDVEXTPROC)load("glGetIntegerIndexedvEXT"); - glad_glEnableIndexedEXT = (PFNGLENABLEINDEXEDEXTPROC)load("glEnableIndexedEXT"); - glad_glDisableIndexedEXT = (PFNGLDISABLEINDEXEDEXTPROC)load("glDisableIndexedEXT"); - glad_glIsEnabledIndexedEXT = (PFNGLISENABLEDINDEXEDEXTPROC)load("glIsEnabledIndexedEXT"); -} -static void load_GL_ARB_vertex_attrib_64bit(GLADloadproc load) { - if(!GLAD_GL_ARB_vertex_attrib_64bit) return; - 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"); -} -static void load_GL_EXT_texture_filter_minmax(GLADloadproc load) { - if(!GLAD_GL_EXT_texture_filter_minmax) return; - glad_glRasterSamplesEXT = (PFNGLRASTERSAMPLESEXTPROC)load("glRasterSamplesEXT"); -} -static void load_GL_AMD_interleaved_elements(GLADloadproc load) { - if(!GLAD_GL_AMD_interleaved_elements) return; - glad_glVertexAttribParameteriAMD = (PFNGLVERTEXATTRIBPARAMETERIAMDPROC)load("glVertexAttribParameteriAMD"); -} -static void load_GL_ARB_fragment_program(GLADloadproc load) { - if(!GLAD_GL_ARB_fragment_program) return; - glad_glProgramStringARB = (PFNGLPROGRAMSTRINGARBPROC)load("glProgramStringARB"); - glad_glBindProgramARB = (PFNGLBINDPROGRAMARBPROC)load("glBindProgramARB"); - glad_glDeleteProgramsARB = (PFNGLDELETEPROGRAMSARBPROC)load("glDeleteProgramsARB"); - glad_glGenProgramsARB = (PFNGLGENPROGRAMSARBPROC)load("glGenProgramsARB"); - glad_glProgramEnvParameter4dARB = (PFNGLPROGRAMENVPARAMETER4DARBPROC)load("glProgramEnvParameter4dARB"); - glad_glProgramEnvParameter4dvARB = (PFNGLPROGRAMENVPARAMETER4DVARBPROC)load("glProgramEnvParameter4dvARB"); - glad_glProgramEnvParameter4fARB = (PFNGLPROGRAMENVPARAMETER4FARBPROC)load("glProgramEnvParameter4fARB"); - glad_glProgramEnvParameter4fvARB = (PFNGLPROGRAMENVPARAMETER4FVARBPROC)load("glProgramEnvParameter4fvARB"); - glad_glProgramLocalParameter4dARB = (PFNGLPROGRAMLOCALPARAMETER4DARBPROC)load("glProgramLocalParameter4dARB"); - glad_glProgramLocalParameter4dvARB = (PFNGLPROGRAMLOCALPARAMETER4DVARBPROC)load("glProgramLocalParameter4dvARB"); - glad_glProgramLocalParameter4fARB = (PFNGLPROGRAMLOCALPARAMETER4FARBPROC)load("glProgramLocalParameter4fARB"); - glad_glProgramLocalParameter4fvARB = (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC)load("glProgramLocalParameter4fvARB"); - glad_glGetProgramEnvParameterdvARB = (PFNGLGETPROGRAMENVPARAMETERDVARBPROC)load("glGetProgramEnvParameterdvARB"); - glad_glGetProgramEnvParameterfvARB = (PFNGLGETPROGRAMENVPARAMETERFVARBPROC)load("glGetProgramEnvParameterfvARB"); - glad_glGetProgramLocalParameterdvARB = (PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC)load("glGetProgramLocalParameterdvARB"); - glad_glGetProgramLocalParameterfvARB = (PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC)load("glGetProgramLocalParameterfvARB"); - glad_glGetProgramivARB = (PFNGLGETPROGRAMIVARBPROC)load("glGetProgramivARB"); - glad_glGetProgramStringARB = (PFNGLGETPROGRAMSTRINGARBPROC)load("glGetProgramStringARB"); - glad_glIsProgramARB = (PFNGLISPROGRAMARBPROC)load("glIsProgramARB"); -} -static void load_GL_ARB_texture_storage(GLADloadproc load) { - if(!GLAD_GL_ARB_texture_storage) return; - glad_glTexStorage1D = (PFNGLTEXSTORAGE1DPROC)load("glTexStorage1D"); - glad_glTexStorage2D = (PFNGLTEXSTORAGE2DPROC)load("glTexStorage2D"); - glad_glTexStorage3D = (PFNGLTEXSTORAGE3DPROC)load("glTexStorage3D"); -} -static void load_GL_ARB_copy_image(GLADloadproc load) { - if(!GLAD_GL_ARB_copy_image) return; - glad_glCopyImageSubData = (PFNGLCOPYIMAGESUBDATAPROC)load("glCopyImageSubData"); -} -static void load_GL_SGIS_pixel_texture(GLADloadproc load) { - if(!GLAD_GL_SGIS_pixel_texture) return; - glad_glPixelTexGenParameteriSGIS = (PFNGLPIXELTEXGENPARAMETERISGISPROC)load("glPixelTexGenParameteriSGIS"); - glad_glPixelTexGenParameterivSGIS = (PFNGLPIXELTEXGENPARAMETERIVSGISPROC)load("glPixelTexGenParameterivSGIS"); - glad_glPixelTexGenParameterfSGIS = (PFNGLPIXELTEXGENPARAMETERFSGISPROC)load("glPixelTexGenParameterfSGIS"); - glad_glPixelTexGenParameterfvSGIS = (PFNGLPIXELTEXGENPARAMETERFVSGISPROC)load("glPixelTexGenParameterfvSGIS"); - glad_glGetPixelTexGenParameterivSGIS = (PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC)load("glGetPixelTexGenParameterivSGIS"); - glad_glGetPixelTexGenParameterfvSGIS = (PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC)load("glGetPixelTexGenParameterfvSGIS"); -} -static void load_GL_SGIX_instruments(GLADloadproc load) { - if(!GLAD_GL_SGIX_instruments) return; - glad_glGetInstrumentsSGIX = (PFNGLGETINSTRUMENTSSGIXPROC)load("glGetInstrumentsSGIX"); - glad_glInstrumentsBufferSGIX = (PFNGLINSTRUMENTSBUFFERSGIXPROC)load("glInstrumentsBufferSGIX"); - glad_glPollInstrumentsSGIX = (PFNGLPOLLINSTRUMENTSSGIXPROC)load("glPollInstrumentsSGIX"); - glad_glReadInstrumentsSGIX = (PFNGLREADINSTRUMENTSSGIXPROC)load("glReadInstrumentsSGIX"); - glad_glStartInstrumentsSGIX = (PFNGLSTARTINSTRUMENTSSGIXPROC)load("glStartInstrumentsSGIX"); - glad_glStopInstrumentsSGIX = (PFNGLSTOPINSTRUMENTSSGIXPROC)load("glStopInstrumentsSGIX"); -} -static void load_GL_ARB_shader_storage_buffer_object(GLADloadproc load) { - if(!GLAD_GL_ARB_shader_storage_buffer_object) return; - glad_glShaderStorageBlockBinding = (PFNGLSHADERSTORAGEBLOCKBINDINGPROC)load("glShaderStorageBlockBinding"); -} -static void load_GL_EXT_blend_minmax(GLADloadproc load) { - if(!GLAD_GL_EXT_blend_minmax) return; - glad_glBlendEquationEXT = (PFNGLBLENDEQUATIONEXTPROC)load("glBlendEquationEXT"); -} -static void load_GL_ARB_base_instance(GLADloadproc load) { - if(!GLAD_GL_ARB_base_instance) return; - glad_glDrawArraysInstancedBaseInstance = (PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC)load("glDrawArraysInstancedBaseInstance"); - glad_glDrawElementsInstancedBaseInstance = (PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC)load("glDrawElementsInstancedBaseInstance"); - glad_glDrawElementsInstancedBaseVertexBaseInstance = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC)load("glDrawElementsInstancedBaseVertexBaseInstance"); -} -static void load_GL_ARB_ES3_1_compatibility(GLADloadproc load) { - if(!GLAD_GL_ARB_ES3_1_compatibility) return; - glad_glMemoryBarrierByRegion = (PFNGLMEMORYBARRIERBYREGIONPROC)load("glMemoryBarrierByRegion"); -} -static void load_GL_EXT_texture_integer(GLADloadproc load) { - if(!GLAD_GL_EXT_texture_integer) return; - glad_glTexParameterIivEXT = (PFNGLTEXPARAMETERIIVEXTPROC)load("glTexParameterIivEXT"); - glad_glTexParameterIuivEXT = (PFNGLTEXPARAMETERIUIVEXTPROC)load("glTexParameterIuivEXT"); - glad_glGetTexParameterIivEXT = (PFNGLGETTEXPARAMETERIIVEXTPROC)load("glGetTexParameterIivEXT"); - glad_glGetTexParameterIuivEXT = (PFNGLGETTEXPARAMETERIUIVEXTPROC)load("glGetTexParameterIuivEXT"); - glad_glClearColorIiEXT = (PFNGLCLEARCOLORIIEXTPROC)load("glClearColorIiEXT"); - glad_glClearColorIuiEXT = (PFNGLCLEARCOLORIUIEXTPROC)load("glClearColorIuiEXT"); -} -static void load_GL_ARB_texture_multisample(GLADloadproc load) { - if(!GLAD_GL_ARB_texture_multisample) return; - glad_glTexImage2DMultisample = (PFNGLTEXIMAGE2DMULTISAMPLEPROC)load("glTexImage2DMultisample"); - glad_glTexImage3DMultisample = (PFNGLTEXIMAGE3DMULTISAMPLEPROC)load("glTexImage3DMultisample"); - glad_glGetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC)load("glGetMultisamplefv"); - glad_glSampleMaski = (PFNGLSAMPLEMASKIPROC)load("glSampleMaski"); -} -static void load_GL_AMD_gpu_shader_int64(GLADloadproc load) { - if(!GLAD_GL_AMD_gpu_shader_int64) return; - glad_glUniform1i64NV = (PFNGLUNIFORM1I64NVPROC)load("glUniform1i64NV"); - glad_glUniform2i64NV = (PFNGLUNIFORM2I64NVPROC)load("glUniform2i64NV"); - glad_glUniform3i64NV = (PFNGLUNIFORM3I64NVPROC)load("glUniform3i64NV"); - glad_glUniform4i64NV = (PFNGLUNIFORM4I64NVPROC)load("glUniform4i64NV"); - glad_glUniform1i64vNV = (PFNGLUNIFORM1I64VNVPROC)load("glUniform1i64vNV"); - glad_glUniform2i64vNV = (PFNGLUNIFORM2I64VNVPROC)load("glUniform2i64vNV"); - glad_glUniform3i64vNV = (PFNGLUNIFORM3I64VNVPROC)load("glUniform3i64vNV"); - glad_glUniform4i64vNV = (PFNGLUNIFORM4I64VNVPROC)load("glUniform4i64vNV"); - glad_glUniform1ui64NV = (PFNGLUNIFORM1UI64NVPROC)load("glUniform1ui64NV"); - glad_glUniform2ui64NV = (PFNGLUNIFORM2UI64NVPROC)load("glUniform2ui64NV"); - glad_glUniform3ui64NV = (PFNGLUNIFORM3UI64NVPROC)load("glUniform3ui64NV"); - glad_glUniform4ui64NV = (PFNGLUNIFORM4UI64NVPROC)load("glUniform4ui64NV"); - glad_glUniform1ui64vNV = (PFNGLUNIFORM1UI64VNVPROC)load("glUniform1ui64vNV"); - glad_glUniform2ui64vNV = (PFNGLUNIFORM2UI64VNVPROC)load("glUniform2ui64vNV"); - glad_glUniform3ui64vNV = (PFNGLUNIFORM3UI64VNVPROC)load("glUniform3ui64vNV"); - glad_glUniform4ui64vNV = (PFNGLUNIFORM4UI64VNVPROC)load("glUniform4ui64vNV"); - glad_glGetUniformi64vNV = (PFNGLGETUNIFORMI64VNVPROC)load("glGetUniformi64vNV"); - glad_glGetUniformui64vNV = (PFNGLGETUNIFORMUI64VNVPROC)load("glGetUniformui64vNV"); - glad_glProgramUniform1i64NV = (PFNGLPROGRAMUNIFORM1I64NVPROC)load("glProgramUniform1i64NV"); - glad_glProgramUniform2i64NV = (PFNGLPROGRAMUNIFORM2I64NVPROC)load("glProgramUniform2i64NV"); - glad_glProgramUniform3i64NV = (PFNGLPROGRAMUNIFORM3I64NVPROC)load("glProgramUniform3i64NV"); - glad_glProgramUniform4i64NV = (PFNGLPROGRAMUNIFORM4I64NVPROC)load("glProgramUniform4i64NV"); - glad_glProgramUniform1i64vNV = (PFNGLPROGRAMUNIFORM1I64VNVPROC)load("glProgramUniform1i64vNV"); - glad_glProgramUniform2i64vNV = (PFNGLPROGRAMUNIFORM2I64VNVPROC)load("glProgramUniform2i64vNV"); - glad_glProgramUniform3i64vNV = (PFNGLPROGRAMUNIFORM3I64VNVPROC)load("glProgramUniform3i64vNV"); - glad_glProgramUniform4i64vNV = (PFNGLPROGRAMUNIFORM4I64VNVPROC)load("glProgramUniform4i64vNV"); - glad_glProgramUniform1ui64NV = (PFNGLPROGRAMUNIFORM1UI64NVPROC)load("glProgramUniform1ui64NV"); - glad_glProgramUniform2ui64NV = (PFNGLPROGRAMUNIFORM2UI64NVPROC)load("glProgramUniform2ui64NV"); - glad_glProgramUniform3ui64NV = (PFNGLPROGRAMUNIFORM3UI64NVPROC)load("glProgramUniform3ui64NV"); - glad_glProgramUniform4ui64NV = (PFNGLPROGRAMUNIFORM4UI64NVPROC)load("glProgramUniform4ui64NV"); - glad_glProgramUniform1ui64vNV = (PFNGLPROGRAMUNIFORM1UI64VNVPROC)load("glProgramUniform1ui64vNV"); - glad_glProgramUniform2ui64vNV = (PFNGLPROGRAMUNIFORM2UI64VNVPROC)load("glProgramUniform2ui64vNV"); - glad_glProgramUniform3ui64vNV = (PFNGLPROGRAMUNIFORM3UI64VNVPROC)load("glProgramUniform3ui64vNV"); - glad_glProgramUniform4ui64vNV = (PFNGLPROGRAMUNIFORM4UI64VNVPROC)load("glProgramUniform4ui64vNV"); -} -static void load_GL_AMD_vertex_shader_tessellator(GLADloadproc load) { - if(!GLAD_GL_AMD_vertex_shader_tessellator) return; - glad_glTessellationFactorAMD = (PFNGLTESSELLATIONFACTORAMDPROC)load("glTessellationFactorAMD"); - glad_glTessellationModeAMD = (PFNGLTESSELLATIONMODEAMDPROC)load("glTessellationModeAMD"); -} -static void load_GL_ARB_invalidate_subdata(GLADloadproc load) { - if(!GLAD_GL_ARB_invalidate_subdata) return; - glad_glInvalidateTexSubImage = (PFNGLINVALIDATETEXSUBIMAGEPROC)load("glInvalidateTexSubImage"); - glad_glInvalidateTexImage = (PFNGLINVALIDATETEXIMAGEPROC)load("glInvalidateTexImage"); - glad_glInvalidateBufferSubData = (PFNGLINVALIDATEBUFFERSUBDATAPROC)load("glInvalidateBufferSubData"); - glad_glInvalidateBufferData = (PFNGLINVALIDATEBUFFERDATAPROC)load("glInvalidateBufferData"); - glad_glInvalidateFramebuffer = (PFNGLINVALIDATEFRAMEBUFFERPROC)load("glInvalidateFramebuffer"); - glad_glInvalidateSubFramebuffer = (PFNGLINVALIDATESUBFRAMEBUFFERPROC)load("glInvalidateSubFramebuffer"); -} -static void load_GL_EXT_index_material(GLADloadproc load) { - if(!GLAD_GL_EXT_index_material) return; - glad_glIndexMaterialEXT = (PFNGLINDEXMATERIALEXTPROC)load("glIndexMaterialEXT"); -} -static void load_GL_INTEL_parallel_arrays(GLADloadproc load) { - if(!GLAD_GL_INTEL_parallel_arrays) return; - glad_glVertexPointervINTEL = (PFNGLVERTEXPOINTERVINTELPROC)load("glVertexPointervINTEL"); - glad_glNormalPointervINTEL = (PFNGLNORMALPOINTERVINTELPROC)load("glNormalPointervINTEL"); - glad_glColorPointervINTEL = (PFNGLCOLORPOINTERVINTELPROC)load("glColorPointervINTEL"); - glad_glTexCoordPointervINTEL = (PFNGLTEXCOORDPOINTERVINTELPROC)load("glTexCoordPointervINTEL"); -} -static void load_GL_ATI_draw_buffers(GLADloadproc load) { - if(!GLAD_GL_ATI_draw_buffers) return; - glad_glDrawBuffersATI = (PFNGLDRAWBUFFERSATIPROC)load("glDrawBuffersATI"); -} -static void load_GL_SGIX_pixel_texture(GLADloadproc load) { - if(!GLAD_GL_SGIX_pixel_texture) return; - glad_glPixelTexGenSGIX = (PFNGLPIXELTEXGENSGIXPROC)load("glPixelTexGenSGIX"); -} -static void load_GL_ARB_timer_query(GLADloadproc load) { - if(!GLAD_GL_ARB_timer_query) return; - glad_glQueryCounter = (PFNGLQUERYCOUNTERPROC)load("glQueryCounter"); - glad_glGetQueryObjecti64v = (PFNGLGETQUERYOBJECTI64VPROC)load("glGetQueryObjecti64v"); - glad_glGetQueryObjectui64v = (PFNGLGETQUERYOBJECTUI64VPROC)load("glGetQueryObjectui64v"); -} -static void load_GL_NV_parameter_buffer_object(GLADloadproc load) { - if(!GLAD_GL_NV_parameter_buffer_object) return; - glad_glProgramBufferParametersfvNV = (PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC)load("glProgramBufferParametersfvNV"); - glad_glProgramBufferParametersIivNV = (PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC)load("glProgramBufferParametersIivNV"); - glad_glProgramBufferParametersIuivNV = (PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC)load("glProgramBufferParametersIuivNV"); -} -static void load_GL_ARB_direct_state_access(GLADloadproc load) { - if(!GLAD_GL_ARB_direct_state_access) return; - glad_glCreateTransformFeedbacks = (PFNGLCREATETRANSFORMFEEDBACKSPROC)load("glCreateTransformFeedbacks"); - glad_glTransformFeedbackBufferBase = (PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC)load("glTransformFeedbackBufferBase"); - glad_glTransformFeedbackBufferRange = (PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC)load("glTransformFeedbackBufferRange"); - glad_glGetTransformFeedbackiv = (PFNGLGETTRANSFORMFEEDBACKIVPROC)load("glGetTransformFeedbackiv"); - glad_glGetTransformFeedbacki_v = (PFNGLGETTRANSFORMFEEDBACKI_VPROC)load("glGetTransformFeedbacki_v"); - glad_glGetTransformFeedbacki64_v = (PFNGLGETTRANSFORMFEEDBACKI64_VPROC)load("glGetTransformFeedbacki64_v"); - glad_glCreateBuffers = (PFNGLCREATEBUFFERSPROC)load("glCreateBuffers"); - glad_glNamedBufferStorage = (PFNGLNAMEDBUFFERSTORAGEPROC)load("glNamedBufferStorage"); - glad_glNamedBufferData = (PFNGLNAMEDBUFFERDATAPROC)load("glNamedBufferData"); - glad_glNamedBufferSubData = (PFNGLNAMEDBUFFERSUBDATAPROC)load("glNamedBufferSubData"); - glad_glCopyNamedBufferSubData = (PFNGLCOPYNAMEDBUFFERSUBDATAPROC)load("glCopyNamedBufferSubData"); - glad_glClearNamedBufferData = (PFNGLCLEARNAMEDBUFFERDATAPROC)load("glClearNamedBufferData"); - glad_glClearNamedBufferSubData = (PFNGLCLEARNAMEDBUFFERSUBDATAPROC)load("glClearNamedBufferSubData"); - glad_glMapNamedBuffer = (PFNGLMAPNAMEDBUFFERPROC)load("glMapNamedBuffer"); - glad_glMapNamedBufferRange = (PFNGLMAPNAMEDBUFFERRANGEPROC)load("glMapNamedBufferRange"); - glad_glUnmapNamedBuffer = (PFNGLUNMAPNAMEDBUFFERPROC)load("glUnmapNamedBuffer"); - glad_glFlushMappedNamedBufferRange = (PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC)load("glFlushMappedNamedBufferRange"); - glad_glGetNamedBufferParameteriv = (PFNGLGETNAMEDBUFFERPARAMETERIVPROC)load("glGetNamedBufferParameteriv"); - glad_glGetNamedBufferParameteri64v = (PFNGLGETNAMEDBUFFERPARAMETERI64VPROC)load("glGetNamedBufferParameteri64v"); - glad_glGetNamedBufferPointerv = (PFNGLGETNAMEDBUFFERPOINTERVPROC)load("glGetNamedBufferPointerv"); - glad_glGetNamedBufferSubData = (PFNGLGETNAMEDBUFFERSUBDATAPROC)load("glGetNamedBufferSubData"); - glad_glCreateFramebuffers = (PFNGLCREATEFRAMEBUFFERSPROC)load("glCreateFramebuffers"); - glad_glNamedFramebufferRenderbuffer = (PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC)load("glNamedFramebufferRenderbuffer"); - glad_glNamedFramebufferParameteri = (PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC)load("glNamedFramebufferParameteri"); - glad_glNamedFramebufferTexture = (PFNGLNAMEDFRAMEBUFFERTEXTUREPROC)load("glNamedFramebufferTexture"); - glad_glNamedFramebufferTextureLayer = (PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC)load("glNamedFramebufferTextureLayer"); - glad_glNamedFramebufferDrawBuffer = (PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC)load("glNamedFramebufferDrawBuffer"); - glad_glNamedFramebufferDrawBuffers = (PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC)load("glNamedFramebufferDrawBuffers"); - glad_glNamedFramebufferReadBuffer = (PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC)load("glNamedFramebufferReadBuffer"); - glad_glInvalidateNamedFramebufferData = (PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC)load("glInvalidateNamedFramebufferData"); - glad_glInvalidateNamedFramebufferSubData = (PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC)load("glInvalidateNamedFramebufferSubData"); - glad_glClearNamedFramebufferiv = (PFNGLCLEARNAMEDFRAMEBUFFERIVPROC)load("glClearNamedFramebufferiv"); - glad_glClearNamedFramebufferuiv = (PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC)load("glClearNamedFramebufferuiv"); - glad_glClearNamedFramebufferfv = (PFNGLCLEARNAMEDFRAMEBUFFERFVPROC)load("glClearNamedFramebufferfv"); - glad_glClearNamedFramebufferfi = (PFNGLCLEARNAMEDFRAMEBUFFERFIPROC)load("glClearNamedFramebufferfi"); - glad_glBlitNamedFramebuffer = (PFNGLBLITNAMEDFRAMEBUFFERPROC)load("glBlitNamedFramebuffer"); - glad_glCheckNamedFramebufferStatus = (PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC)load("glCheckNamedFramebufferStatus"); - glad_glGetNamedFramebufferParameteriv = (PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC)load("glGetNamedFramebufferParameteriv"); - glad_glGetNamedFramebufferAttachmentParameteriv = (PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC)load("glGetNamedFramebufferAttachmentParameteriv"); - glad_glCreateRenderbuffers = (PFNGLCREATERENDERBUFFERSPROC)load("glCreateRenderbuffers"); - glad_glNamedRenderbufferStorage = (PFNGLNAMEDRENDERBUFFERSTORAGEPROC)load("glNamedRenderbufferStorage"); - glad_glNamedRenderbufferStorageMultisample = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC)load("glNamedRenderbufferStorageMultisample"); - glad_glGetNamedRenderbufferParameteriv = (PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC)load("glGetNamedRenderbufferParameteriv"); - glad_glCreateTextures = (PFNGLCREATETEXTURESPROC)load("glCreateTextures"); - glad_glTextureBuffer = (PFNGLTEXTUREBUFFERPROC)load("glTextureBuffer"); - glad_glTextureBufferRange = (PFNGLTEXTUREBUFFERRANGEPROC)load("glTextureBufferRange"); - glad_glTextureStorage1D = (PFNGLTEXTURESTORAGE1DPROC)load("glTextureStorage1D"); - glad_glTextureStorage2D = (PFNGLTEXTURESTORAGE2DPROC)load("glTextureStorage2D"); - glad_glTextureStorage3D = (PFNGLTEXTURESTORAGE3DPROC)load("glTextureStorage3D"); - glad_glTextureStorage2DMultisample = (PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC)load("glTextureStorage2DMultisample"); - glad_glTextureStorage3DMultisample = (PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC)load("glTextureStorage3DMultisample"); - glad_glTextureSubImage1D = (PFNGLTEXTURESUBIMAGE1DPROC)load("glTextureSubImage1D"); - glad_glTextureSubImage2D = (PFNGLTEXTURESUBIMAGE2DPROC)load("glTextureSubImage2D"); - glad_glTextureSubImage3D = (PFNGLTEXTURESUBIMAGE3DPROC)load("glTextureSubImage3D"); - glad_glCompressedTextureSubImage1D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC)load("glCompressedTextureSubImage1D"); - glad_glCompressedTextureSubImage2D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC)load("glCompressedTextureSubImage2D"); - glad_glCompressedTextureSubImage3D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC)load("glCompressedTextureSubImage3D"); - glad_glCopyTextureSubImage1D = (PFNGLCOPYTEXTURESUBIMAGE1DPROC)load("glCopyTextureSubImage1D"); - glad_glCopyTextureSubImage2D = (PFNGLCOPYTEXTURESUBIMAGE2DPROC)load("glCopyTextureSubImage2D"); - glad_glCopyTextureSubImage3D = (PFNGLCOPYTEXTURESUBIMAGE3DPROC)load("glCopyTextureSubImage3D"); - glad_glTextureParameterf = (PFNGLTEXTUREPARAMETERFPROC)load("glTextureParameterf"); - glad_glTextureParameterfv = (PFNGLTEXTUREPARAMETERFVPROC)load("glTextureParameterfv"); - glad_glTextureParameteri = (PFNGLTEXTUREPARAMETERIPROC)load("glTextureParameteri"); - glad_glTextureParameterIiv = (PFNGLTEXTUREPARAMETERIIVPROC)load("glTextureParameterIiv"); - glad_glTextureParameterIuiv = (PFNGLTEXTUREPARAMETERIUIVPROC)load("glTextureParameterIuiv"); - glad_glTextureParameteriv = (PFNGLTEXTUREPARAMETERIVPROC)load("glTextureParameteriv"); - glad_glGenerateTextureMipmap = (PFNGLGENERATETEXTUREMIPMAPPROC)load("glGenerateTextureMipmap"); - glad_glBindTextureUnit = (PFNGLBINDTEXTUREUNITPROC)load("glBindTextureUnit"); - glad_glGetTextureImage = (PFNGLGETTEXTUREIMAGEPROC)load("glGetTextureImage"); - glad_glGetCompressedTextureImage = (PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC)load("glGetCompressedTextureImage"); - glad_glGetTextureLevelParameterfv = (PFNGLGETTEXTURELEVELPARAMETERFVPROC)load("glGetTextureLevelParameterfv"); - glad_glGetTextureLevelParameteriv = (PFNGLGETTEXTURELEVELPARAMETERIVPROC)load("glGetTextureLevelParameteriv"); - glad_glGetTextureParameterfv = (PFNGLGETTEXTUREPARAMETERFVPROC)load("glGetTextureParameterfv"); - glad_glGetTextureParameterIiv = (PFNGLGETTEXTUREPARAMETERIIVPROC)load("glGetTextureParameterIiv"); - glad_glGetTextureParameterIuiv = (PFNGLGETTEXTUREPARAMETERIUIVPROC)load("glGetTextureParameterIuiv"); - glad_glGetTextureParameteriv = (PFNGLGETTEXTUREPARAMETERIVPROC)load("glGetTextureParameteriv"); - glad_glCreateVertexArrays = (PFNGLCREATEVERTEXARRAYSPROC)load("glCreateVertexArrays"); - glad_glDisableVertexArrayAttrib = (PFNGLDISABLEVERTEXARRAYATTRIBPROC)load("glDisableVertexArrayAttrib"); - glad_glEnableVertexArrayAttrib = (PFNGLENABLEVERTEXARRAYATTRIBPROC)load("glEnableVertexArrayAttrib"); - glad_glVertexArrayElementBuffer = (PFNGLVERTEXARRAYELEMENTBUFFERPROC)load("glVertexArrayElementBuffer"); - glad_glVertexArrayVertexBuffer = (PFNGLVERTEXARRAYVERTEXBUFFERPROC)load("glVertexArrayVertexBuffer"); - glad_glVertexArrayVertexBuffers = (PFNGLVERTEXARRAYVERTEXBUFFERSPROC)load("glVertexArrayVertexBuffers"); - glad_glVertexArrayAttribBinding = (PFNGLVERTEXARRAYATTRIBBINDINGPROC)load("glVertexArrayAttribBinding"); - glad_glVertexArrayAttribFormat = (PFNGLVERTEXARRAYATTRIBFORMATPROC)load("glVertexArrayAttribFormat"); - glad_glVertexArrayAttribIFormat = (PFNGLVERTEXARRAYATTRIBIFORMATPROC)load("glVertexArrayAttribIFormat"); - glad_glVertexArrayAttribLFormat = (PFNGLVERTEXARRAYATTRIBLFORMATPROC)load("glVertexArrayAttribLFormat"); - glad_glVertexArrayBindingDivisor = (PFNGLVERTEXARRAYBINDINGDIVISORPROC)load("glVertexArrayBindingDivisor"); - glad_glGetVertexArrayiv = (PFNGLGETVERTEXARRAYIVPROC)load("glGetVertexArrayiv"); - glad_glGetVertexArrayIndexediv = (PFNGLGETVERTEXARRAYINDEXEDIVPROC)load("glGetVertexArrayIndexediv"); - glad_glGetVertexArrayIndexed64iv = (PFNGLGETVERTEXARRAYINDEXED64IVPROC)load("glGetVertexArrayIndexed64iv"); - glad_glCreateSamplers = (PFNGLCREATESAMPLERSPROC)load("glCreateSamplers"); - glad_glCreateProgramPipelines = (PFNGLCREATEPROGRAMPIPELINESPROC)load("glCreateProgramPipelines"); - glad_glCreateQueries = (PFNGLCREATEQUERIESPROC)load("glCreateQueries"); - glad_glGetQueryBufferObjecti64v = (PFNGLGETQUERYBUFFEROBJECTI64VPROC)load("glGetQueryBufferObjecti64v"); - glad_glGetQueryBufferObjectiv = (PFNGLGETQUERYBUFFEROBJECTIVPROC)load("glGetQueryBufferObjectiv"); - glad_glGetQueryBufferObjectui64v = (PFNGLGETQUERYBUFFEROBJECTUI64VPROC)load("glGetQueryBufferObjectui64v"); - glad_glGetQueryBufferObjectuiv = (PFNGLGETQUERYBUFFEROBJECTUIVPROC)load("glGetQueryBufferObjectuiv"); -} -static void load_GL_ARB_uniform_buffer_object(GLADloadproc load) { - if(!GLAD_GL_ARB_uniform_buffer_object) return; - 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_NV_transform_feedback2(GLADloadproc load) { - if(!GLAD_GL_NV_transform_feedback2) return; - glad_glBindTransformFeedbackNV = (PFNGLBINDTRANSFORMFEEDBACKNVPROC)load("glBindTransformFeedbackNV"); - glad_glDeleteTransformFeedbacksNV = (PFNGLDELETETRANSFORMFEEDBACKSNVPROC)load("glDeleteTransformFeedbacksNV"); - glad_glGenTransformFeedbacksNV = (PFNGLGENTRANSFORMFEEDBACKSNVPROC)load("glGenTransformFeedbacksNV"); - glad_glIsTransformFeedbackNV = (PFNGLISTRANSFORMFEEDBACKNVPROC)load("glIsTransformFeedbackNV"); - glad_glPauseTransformFeedbackNV = (PFNGLPAUSETRANSFORMFEEDBACKNVPROC)load("glPauseTransformFeedbackNV"); - glad_glResumeTransformFeedbackNV = (PFNGLRESUMETRANSFORMFEEDBACKNVPROC)load("glResumeTransformFeedbackNV"); - glad_glDrawTransformFeedbackNV = (PFNGLDRAWTRANSFORMFEEDBACKNVPROC)load("glDrawTransformFeedbackNV"); -} -static void load_GL_EXT_blend_color(GLADloadproc load) { - if(!GLAD_GL_EXT_blend_color) return; - glad_glBlendColorEXT = (PFNGLBLENDCOLOREXTPROC)load("glBlendColorEXT"); -} -static void load_GL_EXT_histogram(GLADloadproc load) { - if(!GLAD_GL_EXT_histogram) return; - glad_glGetHistogramEXT = (PFNGLGETHISTOGRAMEXTPROC)load("glGetHistogramEXT"); - glad_glGetHistogramParameterfvEXT = (PFNGLGETHISTOGRAMPARAMETERFVEXTPROC)load("glGetHistogramParameterfvEXT"); - glad_glGetHistogramParameterivEXT = (PFNGLGETHISTOGRAMPARAMETERIVEXTPROC)load("glGetHistogramParameterivEXT"); - glad_glGetMinmaxEXT = (PFNGLGETMINMAXEXTPROC)load("glGetMinmaxEXT"); - glad_glGetMinmaxParameterfvEXT = (PFNGLGETMINMAXPARAMETERFVEXTPROC)load("glGetMinmaxParameterfvEXT"); - glad_glGetMinmaxParameterivEXT = (PFNGLGETMINMAXPARAMETERIVEXTPROC)load("glGetMinmaxParameterivEXT"); - glad_glHistogramEXT = (PFNGLHISTOGRAMEXTPROC)load("glHistogramEXT"); - glad_glMinmaxEXT = (PFNGLMINMAXEXTPROC)load("glMinmaxEXT"); - glad_glResetHistogramEXT = (PFNGLRESETHISTOGRAMEXTPROC)load("glResetHistogramEXT"); - glad_glResetMinmaxEXT = (PFNGLRESETMINMAXEXTPROC)load("glResetMinmaxEXT"); -} -static void load_GL_ARB_get_texture_sub_image(GLADloadproc load) { - if(!GLAD_GL_ARB_get_texture_sub_image) return; - glad_glGetTextureSubImage = (PFNGLGETTEXTURESUBIMAGEPROC)load("glGetTextureSubImage"); - glad_glGetCompressedTextureSubImage = (PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC)load("glGetCompressedTextureSubImage"); -} -static void load_GL_SGIS_point_parameters(GLADloadproc load) { - if(!GLAD_GL_SGIS_point_parameters) return; - glad_glPointParameterfSGIS = (PFNGLPOINTPARAMETERFSGISPROC)load("glPointParameterfSGIS"); - glad_glPointParameterfvSGIS = (PFNGLPOINTPARAMETERFVSGISPROC)load("glPointParameterfvSGIS"); -} -static void load_GL_EXT_direct_state_access(GLADloadproc load) { - if(!GLAD_GL_EXT_direct_state_access) return; - glad_glMatrixLoadfEXT = (PFNGLMATRIXLOADFEXTPROC)load("glMatrixLoadfEXT"); - glad_glMatrixLoaddEXT = (PFNGLMATRIXLOADDEXTPROC)load("glMatrixLoaddEXT"); - glad_glMatrixMultfEXT = (PFNGLMATRIXMULTFEXTPROC)load("glMatrixMultfEXT"); - glad_glMatrixMultdEXT = (PFNGLMATRIXMULTDEXTPROC)load("glMatrixMultdEXT"); - glad_glMatrixLoadIdentityEXT = (PFNGLMATRIXLOADIDENTITYEXTPROC)load("glMatrixLoadIdentityEXT"); - glad_glMatrixRotatefEXT = (PFNGLMATRIXROTATEFEXTPROC)load("glMatrixRotatefEXT"); - glad_glMatrixRotatedEXT = (PFNGLMATRIXROTATEDEXTPROC)load("glMatrixRotatedEXT"); - glad_glMatrixScalefEXT = (PFNGLMATRIXSCALEFEXTPROC)load("glMatrixScalefEXT"); - glad_glMatrixScaledEXT = (PFNGLMATRIXSCALEDEXTPROC)load("glMatrixScaledEXT"); - glad_glMatrixTranslatefEXT = (PFNGLMATRIXTRANSLATEFEXTPROC)load("glMatrixTranslatefEXT"); - glad_glMatrixTranslatedEXT = (PFNGLMATRIXTRANSLATEDEXTPROC)load("glMatrixTranslatedEXT"); - glad_glMatrixFrustumEXT = (PFNGLMATRIXFRUSTUMEXTPROC)load("glMatrixFrustumEXT"); - glad_glMatrixOrthoEXT = (PFNGLMATRIXORTHOEXTPROC)load("glMatrixOrthoEXT"); - glad_glMatrixPopEXT = (PFNGLMATRIXPOPEXTPROC)load("glMatrixPopEXT"); - glad_glMatrixPushEXT = (PFNGLMATRIXPUSHEXTPROC)load("glMatrixPushEXT"); - glad_glClientAttribDefaultEXT = (PFNGLCLIENTATTRIBDEFAULTEXTPROC)load("glClientAttribDefaultEXT"); - glad_glPushClientAttribDefaultEXT = (PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC)load("glPushClientAttribDefaultEXT"); - glad_glTextureParameterfEXT = (PFNGLTEXTUREPARAMETERFEXTPROC)load("glTextureParameterfEXT"); - glad_glTextureParameterfvEXT = (PFNGLTEXTUREPARAMETERFVEXTPROC)load("glTextureParameterfvEXT"); - glad_glTextureParameteriEXT = (PFNGLTEXTUREPARAMETERIEXTPROC)load("glTextureParameteriEXT"); - glad_glTextureParameterivEXT = (PFNGLTEXTUREPARAMETERIVEXTPROC)load("glTextureParameterivEXT"); - glad_glTextureImage1DEXT = (PFNGLTEXTUREIMAGE1DEXTPROC)load("glTextureImage1DEXT"); - glad_glTextureImage2DEXT = (PFNGLTEXTUREIMAGE2DEXTPROC)load("glTextureImage2DEXT"); - glad_glTextureSubImage1DEXT = (PFNGLTEXTURESUBIMAGE1DEXTPROC)load("glTextureSubImage1DEXT"); - glad_glTextureSubImage2DEXT = (PFNGLTEXTURESUBIMAGE2DEXTPROC)load("glTextureSubImage2DEXT"); - glad_glCopyTextureImage1DEXT = (PFNGLCOPYTEXTUREIMAGE1DEXTPROC)load("glCopyTextureImage1DEXT"); - glad_glCopyTextureImage2DEXT = (PFNGLCOPYTEXTUREIMAGE2DEXTPROC)load("glCopyTextureImage2DEXT"); - glad_glCopyTextureSubImage1DEXT = (PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC)load("glCopyTextureSubImage1DEXT"); - glad_glCopyTextureSubImage2DEXT = (PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC)load("glCopyTextureSubImage2DEXT"); - glad_glGetTextureImageEXT = (PFNGLGETTEXTUREIMAGEEXTPROC)load("glGetTextureImageEXT"); - glad_glGetTextureParameterfvEXT = (PFNGLGETTEXTUREPARAMETERFVEXTPROC)load("glGetTextureParameterfvEXT"); - glad_glGetTextureParameterivEXT = (PFNGLGETTEXTUREPARAMETERIVEXTPROC)load("glGetTextureParameterivEXT"); - glad_glGetTextureLevelParameterfvEXT = (PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC)load("glGetTextureLevelParameterfvEXT"); - glad_glGetTextureLevelParameterivEXT = (PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC)load("glGetTextureLevelParameterivEXT"); - glad_glTextureImage3DEXT = (PFNGLTEXTUREIMAGE3DEXTPROC)load("glTextureImage3DEXT"); - glad_glTextureSubImage3DEXT = (PFNGLTEXTURESUBIMAGE3DEXTPROC)load("glTextureSubImage3DEXT"); - glad_glCopyTextureSubImage3DEXT = (PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC)load("glCopyTextureSubImage3DEXT"); - glad_glBindMultiTextureEXT = (PFNGLBINDMULTITEXTUREEXTPROC)load("glBindMultiTextureEXT"); - glad_glMultiTexCoordPointerEXT = (PFNGLMULTITEXCOORDPOINTEREXTPROC)load("glMultiTexCoordPointerEXT"); - glad_glMultiTexEnvfEXT = (PFNGLMULTITEXENVFEXTPROC)load("glMultiTexEnvfEXT"); - glad_glMultiTexEnvfvEXT = (PFNGLMULTITEXENVFVEXTPROC)load("glMultiTexEnvfvEXT"); - glad_glMultiTexEnviEXT = (PFNGLMULTITEXENVIEXTPROC)load("glMultiTexEnviEXT"); - glad_glMultiTexEnvivEXT = (PFNGLMULTITEXENVIVEXTPROC)load("glMultiTexEnvivEXT"); - glad_glMultiTexGendEXT = (PFNGLMULTITEXGENDEXTPROC)load("glMultiTexGendEXT"); - glad_glMultiTexGendvEXT = (PFNGLMULTITEXGENDVEXTPROC)load("glMultiTexGendvEXT"); - glad_glMultiTexGenfEXT = (PFNGLMULTITEXGENFEXTPROC)load("glMultiTexGenfEXT"); - glad_glMultiTexGenfvEXT = (PFNGLMULTITEXGENFVEXTPROC)load("glMultiTexGenfvEXT"); - glad_glMultiTexGeniEXT = (PFNGLMULTITEXGENIEXTPROC)load("glMultiTexGeniEXT"); - glad_glMultiTexGenivEXT = (PFNGLMULTITEXGENIVEXTPROC)load("glMultiTexGenivEXT"); - glad_glGetMultiTexEnvfvEXT = (PFNGLGETMULTITEXENVFVEXTPROC)load("glGetMultiTexEnvfvEXT"); - glad_glGetMultiTexEnvivEXT = (PFNGLGETMULTITEXENVIVEXTPROC)load("glGetMultiTexEnvivEXT"); - glad_glGetMultiTexGendvEXT = (PFNGLGETMULTITEXGENDVEXTPROC)load("glGetMultiTexGendvEXT"); - glad_glGetMultiTexGenfvEXT = (PFNGLGETMULTITEXGENFVEXTPROC)load("glGetMultiTexGenfvEXT"); - glad_glGetMultiTexGenivEXT = (PFNGLGETMULTITEXGENIVEXTPROC)load("glGetMultiTexGenivEXT"); - glad_glMultiTexParameteriEXT = (PFNGLMULTITEXPARAMETERIEXTPROC)load("glMultiTexParameteriEXT"); - glad_glMultiTexParameterivEXT = (PFNGLMULTITEXPARAMETERIVEXTPROC)load("glMultiTexParameterivEXT"); - glad_glMultiTexParameterfEXT = (PFNGLMULTITEXPARAMETERFEXTPROC)load("glMultiTexParameterfEXT"); - glad_glMultiTexParameterfvEXT = (PFNGLMULTITEXPARAMETERFVEXTPROC)load("glMultiTexParameterfvEXT"); - glad_glMultiTexImage1DEXT = (PFNGLMULTITEXIMAGE1DEXTPROC)load("glMultiTexImage1DEXT"); - glad_glMultiTexImage2DEXT = (PFNGLMULTITEXIMAGE2DEXTPROC)load("glMultiTexImage2DEXT"); - glad_glMultiTexSubImage1DEXT = (PFNGLMULTITEXSUBIMAGE1DEXTPROC)load("glMultiTexSubImage1DEXT"); - glad_glMultiTexSubImage2DEXT = (PFNGLMULTITEXSUBIMAGE2DEXTPROC)load("glMultiTexSubImage2DEXT"); - glad_glCopyMultiTexImage1DEXT = (PFNGLCOPYMULTITEXIMAGE1DEXTPROC)load("glCopyMultiTexImage1DEXT"); - glad_glCopyMultiTexImage2DEXT = (PFNGLCOPYMULTITEXIMAGE2DEXTPROC)load("glCopyMultiTexImage2DEXT"); - glad_glCopyMultiTexSubImage1DEXT = (PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC)load("glCopyMultiTexSubImage1DEXT"); - glad_glCopyMultiTexSubImage2DEXT = (PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC)load("glCopyMultiTexSubImage2DEXT"); - glad_glGetMultiTexImageEXT = (PFNGLGETMULTITEXIMAGEEXTPROC)load("glGetMultiTexImageEXT"); - glad_glGetMultiTexParameterfvEXT = (PFNGLGETMULTITEXPARAMETERFVEXTPROC)load("glGetMultiTexParameterfvEXT"); - glad_glGetMultiTexParameterivEXT = (PFNGLGETMULTITEXPARAMETERIVEXTPROC)load("glGetMultiTexParameterivEXT"); - glad_glGetMultiTexLevelParameterfvEXT = (PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC)load("glGetMultiTexLevelParameterfvEXT"); - glad_glGetMultiTexLevelParameterivEXT = (PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC)load("glGetMultiTexLevelParameterivEXT"); - glad_glMultiTexImage3DEXT = (PFNGLMULTITEXIMAGE3DEXTPROC)load("glMultiTexImage3DEXT"); - glad_glMultiTexSubImage3DEXT = (PFNGLMULTITEXSUBIMAGE3DEXTPROC)load("glMultiTexSubImage3DEXT"); - glad_glCopyMultiTexSubImage3DEXT = (PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC)load("glCopyMultiTexSubImage3DEXT"); - glad_glEnableClientStateIndexedEXT = (PFNGLENABLECLIENTSTATEINDEXEDEXTPROC)load("glEnableClientStateIndexedEXT"); - glad_glDisableClientStateIndexedEXT = (PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC)load("glDisableClientStateIndexedEXT"); - glad_glGetFloatIndexedvEXT = (PFNGLGETFLOATINDEXEDVEXTPROC)load("glGetFloatIndexedvEXT"); - glad_glGetDoubleIndexedvEXT = (PFNGLGETDOUBLEINDEXEDVEXTPROC)load("glGetDoubleIndexedvEXT"); - glad_glGetPointerIndexedvEXT = (PFNGLGETPOINTERINDEXEDVEXTPROC)load("glGetPointerIndexedvEXT"); - glad_glEnableIndexedEXT = (PFNGLENABLEINDEXEDEXTPROC)load("glEnableIndexedEXT"); - glad_glDisableIndexedEXT = (PFNGLDISABLEINDEXEDEXTPROC)load("glDisableIndexedEXT"); - glad_glIsEnabledIndexedEXT = (PFNGLISENABLEDINDEXEDEXTPROC)load("glIsEnabledIndexedEXT"); - glad_glGetIntegerIndexedvEXT = (PFNGLGETINTEGERINDEXEDVEXTPROC)load("glGetIntegerIndexedvEXT"); - glad_glGetBooleanIndexedvEXT = (PFNGLGETBOOLEANINDEXEDVEXTPROC)load("glGetBooleanIndexedvEXT"); - glad_glCompressedTextureImage3DEXT = (PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC)load("glCompressedTextureImage3DEXT"); - glad_glCompressedTextureImage2DEXT = (PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC)load("glCompressedTextureImage2DEXT"); - glad_glCompressedTextureImage1DEXT = (PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC)load("glCompressedTextureImage1DEXT"); - glad_glCompressedTextureSubImage3DEXT = (PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC)load("glCompressedTextureSubImage3DEXT"); - glad_glCompressedTextureSubImage2DEXT = (PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC)load("glCompressedTextureSubImage2DEXT"); - glad_glCompressedTextureSubImage1DEXT = (PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC)load("glCompressedTextureSubImage1DEXT"); - glad_glGetCompressedTextureImageEXT = (PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC)load("glGetCompressedTextureImageEXT"); - glad_glCompressedMultiTexImage3DEXT = (PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC)load("glCompressedMultiTexImage3DEXT"); - glad_glCompressedMultiTexImage2DEXT = (PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC)load("glCompressedMultiTexImage2DEXT"); - glad_glCompressedMultiTexImage1DEXT = (PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC)load("glCompressedMultiTexImage1DEXT"); - glad_glCompressedMultiTexSubImage3DEXT = (PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC)load("glCompressedMultiTexSubImage3DEXT"); - glad_glCompressedMultiTexSubImage2DEXT = (PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC)load("glCompressedMultiTexSubImage2DEXT"); - glad_glCompressedMultiTexSubImage1DEXT = (PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC)load("glCompressedMultiTexSubImage1DEXT"); - glad_glGetCompressedMultiTexImageEXT = (PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC)load("glGetCompressedMultiTexImageEXT"); - glad_glMatrixLoadTransposefEXT = (PFNGLMATRIXLOADTRANSPOSEFEXTPROC)load("glMatrixLoadTransposefEXT"); - glad_glMatrixLoadTransposedEXT = (PFNGLMATRIXLOADTRANSPOSEDEXTPROC)load("glMatrixLoadTransposedEXT"); - glad_glMatrixMultTransposefEXT = (PFNGLMATRIXMULTTRANSPOSEFEXTPROC)load("glMatrixMultTransposefEXT"); - glad_glMatrixMultTransposedEXT = (PFNGLMATRIXMULTTRANSPOSEDEXTPROC)load("glMatrixMultTransposedEXT"); - glad_glNamedBufferDataEXT = (PFNGLNAMEDBUFFERDATAEXTPROC)load("glNamedBufferDataEXT"); - glad_glNamedBufferSubDataEXT = (PFNGLNAMEDBUFFERSUBDATAEXTPROC)load("glNamedBufferSubDataEXT"); - glad_glMapNamedBufferEXT = (PFNGLMAPNAMEDBUFFEREXTPROC)load("glMapNamedBufferEXT"); - glad_glUnmapNamedBufferEXT = (PFNGLUNMAPNAMEDBUFFEREXTPROC)load("glUnmapNamedBufferEXT"); - glad_glGetNamedBufferParameterivEXT = (PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC)load("glGetNamedBufferParameterivEXT"); - glad_glGetNamedBufferPointervEXT = (PFNGLGETNAMEDBUFFERPOINTERVEXTPROC)load("glGetNamedBufferPointervEXT"); - glad_glGetNamedBufferSubDataEXT = (PFNGLGETNAMEDBUFFERSUBDATAEXTPROC)load("glGetNamedBufferSubDataEXT"); - glad_glProgramUniform1fEXT = (PFNGLPROGRAMUNIFORM1FEXTPROC)load("glProgramUniform1fEXT"); - glad_glProgramUniform2fEXT = (PFNGLPROGRAMUNIFORM2FEXTPROC)load("glProgramUniform2fEXT"); - glad_glProgramUniform3fEXT = (PFNGLPROGRAMUNIFORM3FEXTPROC)load("glProgramUniform3fEXT"); - glad_glProgramUniform4fEXT = (PFNGLPROGRAMUNIFORM4FEXTPROC)load("glProgramUniform4fEXT"); - glad_glProgramUniform1iEXT = (PFNGLPROGRAMUNIFORM1IEXTPROC)load("glProgramUniform1iEXT"); - glad_glProgramUniform2iEXT = (PFNGLPROGRAMUNIFORM2IEXTPROC)load("glProgramUniform2iEXT"); - glad_glProgramUniform3iEXT = (PFNGLPROGRAMUNIFORM3IEXTPROC)load("glProgramUniform3iEXT"); - glad_glProgramUniform4iEXT = (PFNGLPROGRAMUNIFORM4IEXTPROC)load("glProgramUniform4iEXT"); - glad_glProgramUniform1fvEXT = (PFNGLPROGRAMUNIFORM1FVEXTPROC)load("glProgramUniform1fvEXT"); - glad_glProgramUniform2fvEXT = (PFNGLPROGRAMUNIFORM2FVEXTPROC)load("glProgramUniform2fvEXT"); - glad_glProgramUniform3fvEXT = (PFNGLPROGRAMUNIFORM3FVEXTPROC)load("glProgramUniform3fvEXT"); - glad_glProgramUniform4fvEXT = (PFNGLPROGRAMUNIFORM4FVEXTPROC)load("glProgramUniform4fvEXT"); - glad_glProgramUniform1ivEXT = (PFNGLPROGRAMUNIFORM1IVEXTPROC)load("glProgramUniform1ivEXT"); - glad_glProgramUniform2ivEXT = (PFNGLPROGRAMUNIFORM2IVEXTPROC)load("glProgramUniform2ivEXT"); - glad_glProgramUniform3ivEXT = (PFNGLPROGRAMUNIFORM3IVEXTPROC)load("glProgramUniform3ivEXT"); - glad_glProgramUniform4ivEXT = (PFNGLPROGRAMUNIFORM4IVEXTPROC)load("glProgramUniform4ivEXT"); - glad_glProgramUniformMatrix2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC)load("glProgramUniformMatrix2fvEXT"); - glad_glProgramUniformMatrix3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC)load("glProgramUniformMatrix3fvEXT"); - glad_glProgramUniformMatrix4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC)load("glProgramUniformMatrix4fvEXT"); - glad_glProgramUniformMatrix2x3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC)load("glProgramUniformMatrix2x3fvEXT"); - glad_glProgramUniformMatrix3x2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC)load("glProgramUniformMatrix3x2fvEXT"); - glad_glProgramUniformMatrix2x4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC)load("glProgramUniformMatrix2x4fvEXT"); - glad_glProgramUniformMatrix4x2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC)load("glProgramUniformMatrix4x2fvEXT"); - glad_glProgramUniformMatrix3x4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC)load("glProgramUniformMatrix3x4fvEXT"); - glad_glProgramUniformMatrix4x3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC)load("glProgramUniformMatrix4x3fvEXT"); - glad_glTextureBufferEXT = (PFNGLTEXTUREBUFFEREXTPROC)load("glTextureBufferEXT"); - glad_glMultiTexBufferEXT = (PFNGLMULTITEXBUFFEREXTPROC)load("glMultiTexBufferEXT"); - glad_glTextureParameterIivEXT = (PFNGLTEXTUREPARAMETERIIVEXTPROC)load("glTextureParameterIivEXT"); - glad_glTextureParameterIuivEXT = (PFNGLTEXTUREPARAMETERIUIVEXTPROC)load("glTextureParameterIuivEXT"); - glad_glGetTextureParameterIivEXT = (PFNGLGETTEXTUREPARAMETERIIVEXTPROC)load("glGetTextureParameterIivEXT"); - glad_glGetTextureParameterIuivEXT = (PFNGLGETTEXTUREPARAMETERIUIVEXTPROC)load("glGetTextureParameterIuivEXT"); - glad_glMultiTexParameterIivEXT = (PFNGLMULTITEXPARAMETERIIVEXTPROC)load("glMultiTexParameterIivEXT"); - glad_glMultiTexParameterIuivEXT = (PFNGLMULTITEXPARAMETERIUIVEXTPROC)load("glMultiTexParameterIuivEXT"); - glad_glGetMultiTexParameterIivEXT = (PFNGLGETMULTITEXPARAMETERIIVEXTPROC)load("glGetMultiTexParameterIivEXT"); - glad_glGetMultiTexParameterIuivEXT = (PFNGLGETMULTITEXPARAMETERIUIVEXTPROC)load("glGetMultiTexParameterIuivEXT"); - glad_glProgramUniform1uiEXT = (PFNGLPROGRAMUNIFORM1UIEXTPROC)load("glProgramUniform1uiEXT"); - glad_glProgramUniform2uiEXT = (PFNGLPROGRAMUNIFORM2UIEXTPROC)load("glProgramUniform2uiEXT"); - glad_glProgramUniform3uiEXT = (PFNGLPROGRAMUNIFORM3UIEXTPROC)load("glProgramUniform3uiEXT"); - glad_glProgramUniform4uiEXT = (PFNGLPROGRAMUNIFORM4UIEXTPROC)load("glProgramUniform4uiEXT"); - glad_glProgramUniform1uivEXT = (PFNGLPROGRAMUNIFORM1UIVEXTPROC)load("glProgramUniform1uivEXT"); - glad_glProgramUniform2uivEXT = (PFNGLPROGRAMUNIFORM2UIVEXTPROC)load("glProgramUniform2uivEXT"); - glad_glProgramUniform3uivEXT = (PFNGLPROGRAMUNIFORM3UIVEXTPROC)load("glProgramUniform3uivEXT"); - glad_glProgramUniform4uivEXT = (PFNGLPROGRAMUNIFORM4UIVEXTPROC)load("glProgramUniform4uivEXT"); - glad_glNamedProgramLocalParameters4fvEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC)load("glNamedProgramLocalParameters4fvEXT"); - glad_glNamedProgramLocalParameterI4iEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC)load("glNamedProgramLocalParameterI4iEXT"); - glad_glNamedProgramLocalParameterI4ivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC)load("glNamedProgramLocalParameterI4ivEXT"); - glad_glNamedProgramLocalParametersI4ivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC)load("glNamedProgramLocalParametersI4ivEXT"); - glad_glNamedProgramLocalParameterI4uiEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC)load("glNamedProgramLocalParameterI4uiEXT"); - glad_glNamedProgramLocalParameterI4uivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC)load("glNamedProgramLocalParameterI4uivEXT"); - glad_glNamedProgramLocalParametersI4uivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC)load("glNamedProgramLocalParametersI4uivEXT"); - glad_glGetNamedProgramLocalParameterIivEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC)load("glGetNamedProgramLocalParameterIivEXT"); - glad_glGetNamedProgramLocalParameterIuivEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC)load("glGetNamedProgramLocalParameterIuivEXT"); - glad_glEnableClientStateiEXT = (PFNGLENABLECLIENTSTATEIEXTPROC)load("glEnableClientStateiEXT"); - glad_glDisableClientStateiEXT = (PFNGLDISABLECLIENTSTATEIEXTPROC)load("glDisableClientStateiEXT"); - glad_glGetFloati_vEXT = (PFNGLGETFLOATI_VEXTPROC)load("glGetFloati_vEXT"); - glad_glGetDoublei_vEXT = (PFNGLGETDOUBLEI_VEXTPROC)load("glGetDoublei_vEXT"); - glad_glGetPointeri_vEXT = (PFNGLGETPOINTERI_VEXTPROC)load("glGetPointeri_vEXT"); - glad_glNamedProgramStringEXT = (PFNGLNAMEDPROGRAMSTRINGEXTPROC)load("glNamedProgramStringEXT"); - glad_glNamedProgramLocalParameter4dEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC)load("glNamedProgramLocalParameter4dEXT"); - glad_glNamedProgramLocalParameter4dvEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC)load("glNamedProgramLocalParameter4dvEXT"); - glad_glNamedProgramLocalParameter4fEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC)load("glNamedProgramLocalParameter4fEXT"); - glad_glNamedProgramLocalParameter4fvEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC)load("glNamedProgramLocalParameter4fvEXT"); - glad_glGetNamedProgramLocalParameterdvEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC)load("glGetNamedProgramLocalParameterdvEXT"); - glad_glGetNamedProgramLocalParameterfvEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC)load("glGetNamedProgramLocalParameterfvEXT"); - glad_glGetNamedProgramivEXT = (PFNGLGETNAMEDPROGRAMIVEXTPROC)load("glGetNamedProgramivEXT"); - glad_glGetNamedProgramStringEXT = (PFNGLGETNAMEDPROGRAMSTRINGEXTPROC)load("glGetNamedProgramStringEXT"); - glad_glNamedRenderbufferStorageEXT = (PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC)load("glNamedRenderbufferStorageEXT"); - glad_glGetNamedRenderbufferParameterivEXT = (PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC)load("glGetNamedRenderbufferParameterivEXT"); - glad_glNamedRenderbufferStorageMultisampleEXT = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)load("glNamedRenderbufferStorageMultisampleEXT"); - glad_glNamedRenderbufferStorageMultisampleCoverageEXT = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC)load("glNamedRenderbufferStorageMultisampleCoverageEXT"); - glad_glCheckNamedFramebufferStatusEXT = (PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC)load("glCheckNamedFramebufferStatusEXT"); - glad_glNamedFramebufferTexture1DEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC)load("glNamedFramebufferTexture1DEXT"); - glad_glNamedFramebufferTexture2DEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC)load("glNamedFramebufferTexture2DEXT"); - glad_glNamedFramebufferTexture3DEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC)load("glNamedFramebufferTexture3DEXT"); - glad_glNamedFramebufferRenderbufferEXT = (PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC)load("glNamedFramebufferRenderbufferEXT"); - glad_glGetNamedFramebufferAttachmentParameterivEXT = (PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)load("glGetNamedFramebufferAttachmentParameterivEXT"); - glad_glGenerateTextureMipmapEXT = (PFNGLGENERATETEXTUREMIPMAPEXTPROC)load("glGenerateTextureMipmapEXT"); - glad_glGenerateMultiTexMipmapEXT = (PFNGLGENERATEMULTITEXMIPMAPEXTPROC)load("glGenerateMultiTexMipmapEXT"); - glad_glFramebufferDrawBufferEXT = (PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC)load("glFramebufferDrawBufferEXT"); - glad_glFramebufferDrawBuffersEXT = (PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC)load("glFramebufferDrawBuffersEXT"); - glad_glFramebufferReadBufferEXT = (PFNGLFRAMEBUFFERREADBUFFEREXTPROC)load("glFramebufferReadBufferEXT"); - glad_glGetFramebufferParameterivEXT = (PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC)load("glGetFramebufferParameterivEXT"); - glad_glNamedCopyBufferSubDataEXT = (PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC)load("glNamedCopyBufferSubDataEXT"); - glad_glNamedFramebufferTextureEXT = (PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC)load("glNamedFramebufferTextureEXT"); - glad_glNamedFramebufferTextureLayerEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC)load("glNamedFramebufferTextureLayerEXT"); - glad_glNamedFramebufferTextureFaceEXT = (PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC)load("glNamedFramebufferTextureFaceEXT"); - glad_glTextureRenderbufferEXT = (PFNGLTEXTURERENDERBUFFEREXTPROC)load("glTextureRenderbufferEXT"); - glad_glMultiTexRenderbufferEXT = (PFNGLMULTITEXRENDERBUFFEREXTPROC)load("glMultiTexRenderbufferEXT"); - glad_glVertexArrayVertexOffsetEXT = (PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC)load("glVertexArrayVertexOffsetEXT"); - glad_glVertexArrayColorOffsetEXT = (PFNGLVERTEXARRAYCOLOROFFSETEXTPROC)load("glVertexArrayColorOffsetEXT"); - glad_glVertexArrayEdgeFlagOffsetEXT = (PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC)load("glVertexArrayEdgeFlagOffsetEXT"); - glad_glVertexArrayIndexOffsetEXT = (PFNGLVERTEXARRAYINDEXOFFSETEXTPROC)load("glVertexArrayIndexOffsetEXT"); - glad_glVertexArrayNormalOffsetEXT = (PFNGLVERTEXARRAYNORMALOFFSETEXTPROC)load("glVertexArrayNormalOffsetEXT"); - glad_glVertexArrayTexCoordOffsetEXT = (PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC)load("glVertexArrayTexCoordOffsetEXT"); - glad_glVertexArrayMultiTexCoordOffsetEXT = (PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC)load("glVertexArrayMultiTexCoordOffsetEXT"); - glad_glVertexArrayFogCoordOffsetEXT = (PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC)load("glVertexArrayFogCoordOffsetEXT"); - glad_glVertexArraySecondaryColorOffsetEXT = (PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC)load("glVertexArraySecondaryColorOffsetEXT"); - glad_glVertexArrayVertexAttribOffsetEXT = (PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC)load("glVertexArrayVertexAttribOffsetEXT"); - glad_glVertexArrayVertexAttribIOffsetEXT = (PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC)load("glVertexArrayVertexAttribIOffsetEXT"); - glad_glEnableVertexArrayEXT = (PFNGLENABLEVERTEXARRAYEXTPROC)load("glEnableVertexArrayEXT"); - glad_glDisableVertexArrayEXT = (PFNGLDISABLEVERTEXARRAYEXTPROC)load("glDisableVertexArrayEXT"); - glad_glEnableVertexArrayAttribEXT = (PFNGLENABLEVERTEXARRAYATTRIBEXTPROC)load("glEnableVertexArrayAttribEXT"); - glad_glDisableVertexArrayAttribEXT = (PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC)load("glDisableVertexArrayAttribEXT"); - glad_glGetVertexArrayIntegervEXT = (PFNGLGETVERTEXARRAYINTEGERVEXTPROC)load("glGetVertexArrayIntegervEXT"); - glad_glGetVertexArrayPointervEXT = (PFNGLGETVERTEXARRAYPOINTERVEXTPROC)load("glGetVertexArrayPointervEXT"); - glad_glGetVertexArrayIntegeri_vEXT = (PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC)load("glGetVertexArrayIntegeri_vEXT"); - glad_glGetVertexArrayPointeri_vEXT = (PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC)load("glGetVertexArrayPointeri_vEXT"); - glad_glMapNamedBufferRangeEXT = (PFNGLMAPNAMEDBUFFERRANGEEXTPROC)load("glMapNamedBufferRangeEXT"); - glad_glFlushMappedNamedBufferRangeEXT = (PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC)load("glFlushMappedNamedBufferRangeEXT"); - glad_glNamedBufferStorageEXT = (PFNGLNAMEDBUFFERSTORAGEEXTPROC)load("glNamedBufferStorageEXT"); - glad_glClearNamedBufferDataEXT = (PFNGLCLEARNAMEDBUFFERDATAEXTPROC)load("glClearNamedBufferDataEXT"); - glad_glClearNamedBufferSubDataEXT = (PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC)load("glClearNamedBufferSubDataEXT"); - glad_glNamedFramebufferParameteriEXT = (PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC)load("glNamedFramebufferParameteriEXT"); - glad_glGetNamedFramebufferParameterivEXT = (PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC)load("glGetNamedFramebufferParameterivEXT"); - glad_glProgramUniform1dEXT = (PFNGLPROGRAMUNIFORM1DEXTPROC)load("glProgramUniform1dEXT"); - glad_glProgramUniform2dEXT = (PFNGLPROGRAMUNIFORM2DEXTPROC)load("glProgramUniform2dEXT"); - glad_glProgramUniform3dEXT = (PFNGLPROGRAMUNIFORM3DEXTPROC)load("glProgramUniform3dEXT"); - glad_glProgramUniform4dEXT = (PFNGLPROGRAMUNIFORM4DEXTPROC)load("glProgramUniform4dEXT"); - glad_glProgramUniform1dvEXT = (PFNGLPROGRAMUNIFORM1DVEXTPROC)load("glProgramUniform1dvEXT"); - glad_glProgramUniform2dvEXT = (PFNGLPROGRAMUNIFORM2DVEXTPROC)load("glProgramUniform2dvEXT"); - glad_glProgramUniform3dvEXT = (PFNGLPROGRAMUNIFORM3DVEXTPROC)load("glProgramUniform3dvEXT"); - glad_glProgramUniform4dvEXT = (PFNGLPROGRAMUNIFORM4DVEXTPROC)load("glProgramUniform4dvEXT"); - glad_glProgramUniformMatrix2dvEXT = (PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC)load("glProgramUniformMatrix2dvEXT"); - glad_glProgramUniformMatrix3dvEXT = (PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC)load("glProgramUniformMatrix3dvEXT"); - glad_glProgramUniformMatrix4dvEXT = (PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC)load("glProgramUniformMatrix4dvEXT"); - glad_glProgramUniformMatrix2x3dvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC)load("glProgramUniformMatrix2x3dvEXT"); - glad_glProgramUniformMatrix2x4dvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC)load("glProgramUniformMatrix2x4dvEXT"); - glad_glProgramUniformMatrix3x2dvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC)load("glProgramUniformMatrix3x2dvEXT"); - glad_glProgramUniformMatrix3x4dvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC)load("glProgramUniformMatrix3x4dvEXT"); - glad_glProgramUniformMatrix4x2dvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC)load("glProgramUniformMatrix4x2dvEXT"); - glad_glProgramUniformMatrix4x3dvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC)load("glProgramUniformMatrix4x3dvEXT"); - glad_glTextureBufferRangeEXT = (PFNGLTEXTUREBUFFERRANGEEXTPROC)load("glTextureBufferRangeEXT"); - glad_glTextureStorage1DEXT = (PFNGLTEXTURESTORAGE1DEXTPROC)load("glTextureStorage1DEXT"); - glad_glTextureStorage2DEXT = (PFNGLTEXTURESTORAGE2DEXTPROC)load("glTextureStorage2DEXT"); - glad_glTextureStorage3DEXT = (PFNGLTEXTURESTORAGE3DEXTPROC)load("glTextureStorage3DEXT"); - glad_glTextureStorage2DMultisampleEXT = (PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC)load("glTextureStorage2DMultisampleEXT"); - glad_glTextureStorage3DMultisampleEXT = (PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC)load("glTextureStorage3DMultisampleEXT"); - glad_glVertexArrayBindVertexBufferEXT = (PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC)load("glVertexArrayBindVertexBufferEXT"); - glad_glVertexArrayVertexAttribFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC)load("glVertexArrayVertexAttribFormatEXT"); - glad_glVertexArrayVertexAttribIFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC)load("glVertexArrayVertexAttribIFormatEXT"); - glad_glVertexArrayVertexAttribLFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC)load("glVertexArrayVertexAttribLFormatEXT"); - glad_glVertexArrayVertexAttribBindingEXT = (PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC)load("glVertexArrayVertexAttribBindingEXT"); - glad_glVertexArrayVertexBindingDivisorEXT = (PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC)load("glVertexArrayVertexBindingDivisorEXT"); - glad_glVertexArrayVertexAttribLOffsetEXT = (PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC)load("glVertexArrayVertexAttribLOffsetEXT"); - glad_glTexturePageCommitmentEXT = (PFNGLTEXTUREPAGECOMMITMENTEXTPROC)load("glTexturePageCommitmentEXT"); - glad_glVertexArrayVertexAttribDivisorEXT = (PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC)load("glVertexArrayVertexAttribDivisorEXT"); -} -static void load_GL_AMD_sample_positions(GLADloadproc load) { - if(!GLAD_GL_AMD_sample_positions) return; - glad_glSetMultisamplefvAMD = (PFNGLSETMULTISAMPLEFVAMDPROC)load("glSetMultisamplefvAMD"); -} -static void load_GL_NV_vertex_program(GLADloadproc load) { - if(!GLAD_GL_NV_vertex_program) return; - glad_glAreProgramsResidentNV = (PFNGLAREPROGRAMSRESIDENTNVPROC)load("glAreProgramsResidentNV"); - glad_glBindProgramNV = (PFNGLBINDPROGRAMNVPROC)load("glBindProgramNV"); - glad_glDeleteProgramsNV = (PFNGLDELETEPROGRAMSNVPROC)load("glDeleteProgramsNV"); - glad_glExecuteProgramNV = (PFNGLEXECUTEPROGRAMNVPROC)load("glExecuteProgramNV"); - glad_glGenProgramsNV = (PFNGLGENPROGRAMSNVPROC)load("glGenProgramsNV"); - glad_glGetProgramParameterdvNV = (PFNGLGETPROGRAMPARAMETERDVNVPROC)load("glGetProgramParameterdvNV"); - glad_glGetProgramParameterfvNV = (PFNGLGETPROGRAMPARAMETERFVNVPROC)load("glGetProgramParameterfvNV"); - glad_glGetProgramivNV = (PFNGLGETPROGRAMIVNVPROC)load("glGetProgramivNV"); - glad_glGetProgramStringNV = (PFNGLGETPROGRAMSTRINGNVPROC)load("glGetProgramStringNV"); - glad_glGetTrackMatrixivNV = (PFNGLGETTRACKMATRIXIVNVPROC)load("glGetTrackMatrixivNV"); - glad_glGetVertexAttribdvNV = (PFNGLGETVERTEXATTRIBDVNVPROC)load("glGetVertexAttribdvNV"); - glad_glGetVertexAttribfvNV = (PFNGLGETVERTEXATTRIBFVNVPROC)load("glGetVertexAttribfvNV"); - glad_glGetVertexAttribivNV = (PFNGLGETVERTEXATTRIBIVNVPROC)load("glGetVertexAttribivNV"); - glad_glGetVertexAttribPointervNV = (PFNGLGETVERTEXATTRIBPOINTERVNVPROC)load("glGetVertexAttribPointervNV"); - glad_glIsProgramNV = (PFNGLISPROGRAMNVPROC)load("glIsProgramNV"); - glad_glLoadProgramNV = (PFNGLLOADPROGRAMNVPROC)load("glLoadProgramNV"); - glad_glProgramParameter4dNV = (PFNGLPROGRAMPARAMETER4DNVPROC)load("glProgramParameter4dNV"); - glad_glProgramParameter4dvNV = (PFNGLPROGRAMPARAMETER4DVNVPROC)load("glProgramParameter4dvNV"); - glad_glProgramParameter4fNV = (PFNGLPROGRAMPARAMETER4FNVPROC)load("glProgramParameter4fNV"); - glad_glProgramParameter4fvNV = (PFNGLPROGRAMPARAMETER4FVNVPROC)load("glProgramParameter4fvNV"); - glad_glProgramParameters4dvNV = (PFNGLPROGRAMPARAMETERS4DVNVPROC)load("glProgramParameters4dvNV"); - glad_glProgramParameters4fvNV = (PFNGLPROGRAMPARAMETERS4FVNVPROC)load("glProgramParameters4fvNV"); - glad_glRequestResidentProgramsNV = (PFNGLREQUESTRESIDENTPROGRAMSNVPROC)load("glRequestResidentProgramsNV"); - glad_glTrackMatrixNV = (PFNGLTRACKMATRIXNVPROC)load("glTrackMatrixNV"); - glad_glVertexAttribPointerNV = (PFNGLVERTEXATTRIBPOINTERNVPROC)load("glVertexAttribPointerNV"); - glad_glVertexAttrib1dNV = (PFNGLVERTEXATTRIB1DNVPROC)load("glVertexAttrib1dNV"); - glad_glVertexAttrib1dvNV = (PFNGLVERTEXATTRIB1DVNVPROC)load("glVertexAttrib1dvNV"); - glad_glVertexAttrib1fNV = (PFNGLVERTEXATTRIB1FNVPROC)load("glVertexAttrib1fNV"); - glad_glVertexAttrib1fvNV = (PFNGLVERTEXATTRIB1FVNVPROC)load("glVertexAttrib1fvNV"); - glad_glVertexAttrib1sNV = (PFNGLVERTEXATTRIB1SNVPROC)load("glVertexAttrib1sNV"); - glad_glVertexAttrib1svNV = (PFNGLVERTEXATTRIB1SVNVPROC)load("glVertexAttrib1svNV"); - glad_glVertexAttrib2dNV = (PFNGLVERTEXATTRIB2DNVPROC)load("glVertexAttrib2dNV"); - glad_glVertexAttrib2dvNV = (PFNGLVERTEXATTRIB2DVNVPROC)load("glVertexAttrib2dvNV"); - glad_glVertexAttrib2fNV = (PFNGLVERTEXATTRIB2FNVPROC)load("glVertexAttrib2fNV"); - glad_glVertexAttrib2fvNV = (PFNGLVERTEXATTRIB2FVNVPROC)load("glVertexAttrib2fvNV"); - glad_glVertexAttrib2sNV = (PFNGLVERTEXATTRIB2SNVPROC)load("glVertexAttrib2sNV"); - glad_glVertexAttrib2svNV = (PFNGLVERTEXATTRIB2SVNVPROC)load("glVertexAttrib2svNV"); - glad_glVertexAttrib3dNV = (PFNGLVERTEXATTRIB3DNVPROC)load("glVertexAttrib3dNV"); - glad_glVertexAttrib3dvNV = (PFNGLVERTEXATTRIB3DVNVPROC)load("glVertexAttrib3dvNV"); - glad_glVertexAttrib3fNV = (PFNGLVERTEXATTRIB3FNVPROC)load("glVertexAttrib3fNV"); - glad_glVertexAttrib3fvNV = (PFNGLVERTEXATTRIB3FVNVPROC)load("glVertexAttrib3fvNV"); - glad_glVertexAttrib3sNV = (PFNGLVERTEXATTRIB3SNVPROC)load("glVertexAttrib3sNV"); - glad_glVertexAttrib3svNV = (PFNGLVERTEXATTRIB3SVNVPROC)load("glVertexAttrib3svNV"); - glad_glVertexAttrib4dNV = (PFNGLVERTEXATTRIB4DNVPROC)load("glVertexAttrib4dNV"); - glad_glVertexAttrib4dvNV = (PFNGLVERTEXATTRIB4DVNVPROC)load("glVertexAttrib4dvNV"); - glad_glVertexAttrib4fNV = (PFNGLVERTEXATTRIB4FNVPROC)load("glVertexAttrib4fNV"); - glad_glVertexAttrib4fvNV = (PFNGLVERTEXATTRIB4FVNVPROC)load("glVertexAttrib4fvNV"); - glad_glVertexAttrib4sNV = (PFNGLVERTEXATTRIB4SNVPROC)load("glVertexAttrib4sNV"); - glad_glVertexAttrib4svNV = (PFNGLVERTEXATTRIB4SVNVPROC)load("glVertexAttrib4svNV"); - glad_glVertexAttrib4ubNV = (PFNGLVERTEXATTRIB4UBNVPROC)load("glVertexAttrib4ubNV"); - glad_glVertexAttrib4ubvNV = (PFNGLVERTEXATTRIB4UBVNVPROC)load("glVertexAttrib4ubvNV"); - glad_glVertexAttribs1dvNV = (PFNGLVERTEXATTRIBS1DVNVPROC)load("glVertexAttribs1dvNV"); - glad_glVertexAttribs1fvNV = (PFNGLVERTEXATTRIBS1FVNVPROC)load("glVertexAttribs1fvNV"); - glad_glVertexAttribs1svNV = (PFNGLVERTEXATTRIBS1SVNVPROC)load("glVertexAttribs1svNV"); - glad_glVertexAttribs2dvNV = (PFNGLVERTEXATTRIBS2DVNVPROC)load("glVertexAttribs2dvNV"); - glad_glVertexAttribs2fvNV = (PFNGLVERTEXATTRIBS2FVNVPROC)load("glVertexAttribs2fvNV"); - glad_glVertexAttribs2svNV = (PFNGLVERTEXATTRIBS2SVNVPROC)load("glVertexAttribs2svNV"); - glad_glVertexAttribs3dvNV = (PFNGLVERTEXATTRIBS3DVNVPROC)load("glVertexAttribs3dvNV"); - glad_glVertexAttribs3fvNV = (PFNGLVERTEXATTRIBS3FVNVPROC)load("glVertexAttribs3fvNV"); - glad_glVertexAttribs3svNV = (PFNGLVERTEXATTRIBS3SVNVPROC)load("glVertexAttribs3svNV"); - glad_glVertexAttribs4dvNV = (PFNGLVERTEXATTRIBS4DVNVPROC)load("glVertexAttribs4dvNV"); - glad_glVertexAttribs4fvNV = (PFNGLVERTEXATTRIBS4FVNVPROC)load("glVertexAttribs4fvNV"); - glad_glVertexAttribs4svNV = (PFNGLVERTEXATTRIBS4SVNVPROC)load("glVertexAttribs4svNV"); - glad_glVertexAttribs4ubvNV = (PFNGLVERTEXATTRIBS4UBVNVPROC)load("glVertexAttribs4ubvNV"); -} -static void load_GL_EXT_vertex_shader(GLADloadproc load) { - if(!GLAD_GL_EXT_vertex_shader) return; - glad_glBeginVertexShaderEXT = (PFNGLBEGINVERTEXSHADEREXTPROC)load("glBeginVertexShaderEXT"); - glad_glEndVertexShaderEXT = (PFNGLENDVERTEXSHADEREXTPROC)load("glEndVertexShaderEXT"); - glad_glBindVertexShaderEXT = (PFNGLBINDVERTEXSHADEREXTPROC)load("glBindVertexShaderEXT"); - glad_glGenVertexShadersEXT = (PFNGLGENVERTEXSHADERSEXTPROC)load("glGenVertexShadersEXT"); - glad_glDeleteVertexShaderEXT = (PFNGLDELETEVERTEXSHADEREXTPROC)load("glDeleteVertexShaderEXT"); - glad_glShaderOp1EXT = (PFNGLSHADEROP1EXTPROC)load("glShaderOp1EXT"); - glad_glShaderOp2EXT = (PFNGLSHADEROP2EXTPROC)load("glShaderOp2EXT"); - glad_glShaderOp3EXT = (PFNGLSHADEROP3EXTPROC)load("glShaderOp3EXT"); - glad_glSwizzleEXT = (PFNGLSWIZZLEEXTPROC)load("glSwizzleEXT"); - glad_glWriteMaskEXT = (PFNGLWRITEMASKEXTPROC)load("glWriteMaskEXT"); - glad_glInsertComponentEXT = (PFNGLINSERTCOMPONENTEXTPROC)load("glInsertComponentEXT"); - glad_glExtractComponentEXT = (PFNGLEXTRACTCOMPONENTEXTPROC)load("glExtractComponentEXT"); - glad_glGenSymbolsEXT = (PFNGLGENSYMBOLSEXTPROC)load("glGenSymbolsEXT"); - glad_glSetInvariantEXT = (PFNGLSETINVARIANTEXTPROC)load("glSetInvariantEXT"); - glad_glSetLocalConstantEXT = (PFNGLSETLOCALCONSTANTEXTPROC)load("glSetLocalConstantEXT"); - glad_glVariantbvEXT = (PFNGLVARIANTBVEXTPROC)load("glVariantbvEXT"); - glad_glVariantsvEXT = (PFNGLVARIANTSVEXTPROC)load("glVariantsvEXT"); - glad_glVariantivEXT = (PFNGLVARIANTIVEXTPROC)load("glVariantivEXT"); - glad_glVariantfvEXT = (PFNGLVARIANTFVEXTPROC)load("glVariantfvEXT"); - glad_glVariantdvEXT = (PFNGLVARIANTDVEXTPROC)load("glVariantdvEXT"); - glad_glVariantubvEXT = (PFNGLVARIANTUBVEXTPROC)load("glVariantubvEXT"); - glad_glVariantusvEXT = (PFNGLVARIANTUSVEXTPROC)load("glVariantusvEXT"); - glad_glVariantuivEXT = (PFNGLVARIANTUIVEXTPROC)load("glVariantuivEXT"); - glad_glVariantPointerEXT = (PFNGLVARIANTPOINTEREXTPROC)load("glVariantPointerEXT"); - glad_glEnableVariantClientStateEXT = (PFNGLENABLEVARIANTCLIENTSTATEEXTPROC)load("glEnableVariantClientStateEXT"); - glad_glDisableVariantClientStateEXT = (PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC)load("glDisableVariantClientStateEXT"); - glad_glBindLightParameterEXT = (PFNGLBINDLIGHTPARAMETEREXTPROC)load("glBindLightParameterEXT"); - glad_glBindMaterialParameterEXT = (PFNGLBINDMATERIALPARAMETEREXTPROC)load("glBindMaterialParameterEXT"); - glad_glBindTexGenParameterEXT = (PFNGLBINDTEXGENPARAMETEREXTPROC)load("glBindTexGenParameterEXT"); - glad_glBindTextureUnitParameterEXT = (PFNGLBINDTEXTUREUNITPARAMETEREXTPROC)load("glBindTextureUnitParameterEXT"); - glad_glBindParameterEXT = (PFNGLBINDPARAMETEREXTPROC)load("glBindParameterEXT"); - glad_glIsVariantEnabledEXT = (PFNGLISVARIANTENABLEDEXTPROC)load("glIsVariantEnabledEXT"); - glad_glGetVariantBooleanvEXT = (PFNGLGETVARIANTBOOLEANVEXTPROC)load("glGetVariantBooleanvEXT"); - glad_glGetVariantIntegervEXT = (PFNGLGETVARIANTINTEGERVEXTPROC)load("glGetVariantIntegervEXT"); - glad_glGetVariantFloatvEXT = (PFNGLGETVARIANTFLOATVEXTPROC)load("glGetVariantFloatvEXT"); - glad_glGetVariantPointervEXT = (PFNGLGETVARIANTPOINTERVEXTPROC)load("glGetVariantPointervEXT"); - glad_glGetInvariantBooleanvEXT = (PFNGLGETINVARIANTBOOLEANVEXTPROC)load("glGetInvariantBooleanvEXT"); - glad_glGetInvariantIntegervEXT = (PFNGLGETINVARIANTINTEGERVEXTPROC)load("glGetInvariantIntegervEXT"); - glad_glGetInvariantFloatvEXT = (PFNGLGETINVARIANTFLOATVEXTPROC)load("glGetInvariantFloatvEXT"); - glad_glGetLocalConstantBooleanvEXT = (PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC)load("glGetLocalConstantBooleanvEXT"); - glad_glGetLocalConstantIntegervEXT = (PFNGLGETLOCALCONSTANTINTEGERVEXTPROC)load("glGetLocalConstantIntegervEXT"); - glad_glGetLocalConstantFloatvEXT = (PFNGLGETLOCALCONSTANTFLOATVEXTPROC)load("glGetLocalConstantFloatvEXT"); -} -static void load_GL_EXT_blend_func_separate(GLADloadproc load) { - if(!GLAD_GL_EXT_blend_func_separate) return; - glad_glBlendFuncSeparateEXT = (PFNGLBLENDFUNCSEPARATEEXTPROC)load("glBlendFuncSeparateEXT"); -} -static void load_GL_APPLE_fence(GLADloadproc load) { - if(!GLAD_GL_APPLE_fence) return; - glad_glGenFencesAPPLE = (PFNGLGENFENCESAPPLEPROC)load("glGenFencesAPPLE"); - glad_glDeleteFencesAPPLE = (PFNGLDELETEFENCESAPPLEPROC)load("glDeleteFencesAPPLE"); - glad_glSetFenceAPPLE = (PFNGLSETFENCEAPPLEPROC)load("glSetFenceAPPLE"); - glad_glIsFenceAPPLE = (PFNGLISFENCEAPPLEPROC)load("glIsFenceAPPLE"); - glad_glTestFenceAPPLE = (PFNGLTESTFENCEAPPLEPROC)load("glTestFenceAPPLE"); - glad_glFinishFenceAPPLE = (PFNGLFINISHFENCEAPPLEPROC)load("glFinishFenceAPPLE"); - glad_glTestObjectAPPLE = (PFNGLTESTOBJECTAPPLEPROC)load("glTestObjectAPPLE"); - glad_glFinishObjectAPPLE = (PFNGLFINISHOBJECTAPPLEPROC)load("glFinishObjectAPPLE"); -} -static void load_GL_OES_byte_coordinates(GLADloadproc load) { - if(!GLAD_GL_OES_byte_coordinates) return; - glad_glMultiTexCoord1bOES = (PFNGLMULTITEXCOORD1BOESPROC)load("glMultiTexCoord1bOES"); - glad_glMultiTexCoord1bvOES = (PFNGLMULTITEXCOORD1BVOESPROC)load("glMultiTexCoord1bvOES"); - glad_glMultiTexCoord2bOES = (PFNGLMULTITEXCOORD2BOESPROC)load("glMultiTexCoord2bOES"); - glad_glMultiTexCoord2bvOES = (PFNGLMULTITEXCOORD2BVOESPROC)load("glMultiTexCoord2bvOES"); - glad_glMultiTexCoord3bOES = (PFNGLMULTITEXCOORD3BOESPROC)load("glMultiTexCoord3bOES"); - glad_glMultiTexCoord3bvOES = (PFNGLMULTITEXCOORD3BVOESPROC)load("glMultiTexCoord3bvOES"); - glad_glMultiTexCoord4bOES = (PFNGLMULTITEXCOORD4BOESPROC)load("glMultiTexCoord4bOES"); - glad_glMultiTexCoord4bvOES = (PFNGLMULTITEXCOORD4BVOESPROC)load("glMultiTexCoord4bvOES"); - glad_glTexCoord1bOES = (PFNGLTEXCOORD1BOESPROC)load("glTexCoord1bOES"); - glad_glTexCoord1bvOES = (PFNGLTEXCOORD1BVOESPROC)load("glTexCoord1bvOES"); - glad_glTexCoord2bOES = (PFNGLTEXCOORD2BOESPROC)load("glTexCoord2bOES"); - glad_glTexCoord2bvOES = (PFNGLTEXCOORD2BVOESPROC)load("glTexCoord2bvOES"); - glad_glTexCoord3bOES = (PFNGLTEXCOORD3BOESPROC)load("glTexCoord3bOES"); - glad_glTexCoord3bvOES = (PFNGLTEXCOORD3BVOESPROC)load("glTexCoord3bvOES"); - glad_glTexCoord4bOES = (PFNGLTEXCOORD4BOESPROC)load("glTexCoord4bOES"); - glad_glTexCoord4bvOES = (PFNGLTEXCOORD4BVOESPROC)load("glTexCoord4bvOES"); - glad_glVertex2bOES = (PFNGLVERTEX2BOESPROC)load("glVertex2bOES"); - glad_glVertex2bvOES = (PFNGLVERTEX2BVOESPROC)load("glVertex2bvOES"); - glad_glVertex3bOES = (PFNGLVERTEX3BOESPROC)load("glVertex3bOES"); - glad_glVertex3bvOES = (PFNGLVERTEX3BVOESPROC)load("glVertex3bvOES"); - glad_glVertex4bOES = (PFNGLVERTEX4BOESPROC)load("glVertex4bOES"); - glad_glVertex4bvOES = (PFNGLVERTEX4BVOESPROC)load("glVertex4bvOES"); -} -static void load_GL_ARB_transpose_matrix(GLADloadproc load) { - if(!GLAD_GL_ARB_transpose_matrix) return; - glad_glLoadTransposeMatrixfARB = (PFNGLLOADTRANSPOSEMATRIXFARBPROC)load("glLoadTransposeMatrixfARB"); - glad_glLoadTransposeMatrixdARB = (PFNGLLOADTRANSPOSEMATRIXDARBPROC)load("glLoadTransposeMatrixdARB"); - glad_glMultTransposeMatrixfARB = (PFNGLMULTTRANSPOSEMATRIXFARBPROC)load("glMultTransposeMatrixfARB"); - glad_glMultTransposeMatrixdARB = (PFNGLMULTTRANSPOSEMATRIXDARBPROC)load("glMultTransposeMatrixdARB"); -} -static void load_GL_ARB_provoking_vertex(GLADloadproc load) { - if(!GLAD_GL_ARB_provoking_vertex) return; - glad_glProvokingVertex = (PFNGLPROVOKINGVERTEXPROC)load("glProvokingVertex"); -} -static void load_GL_EXT_fog_coord(GLADloadproc load) { - if(!GLAD_GL_EXT_fog_coord) return; - glad_glFogCoordfEXT = (PFNGLFOGCOORDFEXTPROC)load("glFogCoordfEXT"); - glad_glFogCoordfvEXT = (PFNGLFOGCOORDFVEXTPROC)load("glFogCoordfvEXT"); - glad_glFogCoorddEXT = (PFNGLFOGCOORDDEXTPROC)load("glFogCoorddEXT"); - glad_glFogCoorddvEXT = (PFNGLFOGCOORDDVEXTPROC)load("glFogCoorddvEXT"); - glad_glFogCoordPointerEXT = (PFNGLFOGCOORDPOINTEREXTPROC)load("glFogCoordPointerEXT"); -} -static void load_GL_EXT_vertex_array(GLADloadproc load) { - if(!GLAD_GL_EXT_vertex_array) return; - glad_glArrayElementEXT = (PFNGLARRAYELEMENTEXTPROC)load("glArrayElementEXT"); - glad_glColorPointerEXT = (PFNGLCOLORPOINTEREXTPROC)load("glColorPointerEXT"); - glad_glDrawArraysEXT = (PFNGLDRAWARRAYSEXTPROC)load("glDrawArraysEXT"); - glad_glEdgeFlagPointerEXT = (PFNGLEDGEFLAGPOINTEREXTPROC)load("glEdgeFlagPointerEXT"); - glad_glGetPointervEXT = (PFNGLGETPOINTERVEXTPROC)load("glGetPointervEXT"); - glad_glIndexPointerEXT = (PFNGLINDEXPOINTEREXTPROC)load("glIndexPointerEXT"); - glad_glNormalPointerEXT = (PFNGLNORMALPOINTEREXTPROC)load("glNormalPointerEXT"); - glad_glTexCoordPointerEXT = (PFNGLTEXCOORDPOINTEREXTPROC)load("glTexCoordPointerEXT"); - glad_glVertexPointerEXT = (PFNGLVERTEXPOINTEREXTPROC)load("glVertexPointerEXT"); -} -static void load_GL_EXT_blend_equation_separate(GLADloadproc load) { - if(!GLAD_GL_EXT_blend_equation_separate) return; - glad_glBlendEquationSeparateEXT = (PFNGLBLENDEQUATIONSEPARATEEXTPROC)load("glBlendEquationSeparateEXT"); -} -static void load_GL_NV_framebuffer_mixed_samples(GLADloadproc load) { - if(!GLAD_GL_NV_framebuffer_mixed_samples) return; - glad_glRasterSamplesEXT = (PFNGLRASTERSAMPLESEXTPROC)load("glRasterSamplesEXT"); - glad_glCoverageModulationTableNV = (PFNGLCOVERAGEMODULATIONTABLENVPROC)load("glCoverageModulationTableNV"); - glad_glGetCoverageModulationTableNV = (PFNGLGETCOVERAGEMODULATIONTABLENVPROC)load("glGetCoverageModulationTableNV"); - glad_glCoverageModulationNV = (PFNGLCOVERAGEMODULATIONNVPROC)load("glCoverageModulationNV"); -} -static void load_GL_NVX_conditional_render(GLADloadproc load) { - if(!GLAD_GL_NVX_conditional_render) return; - glad_glBeginConditionalRenderNVX = (PFNGLBEGINCONDITIONALRENDERNVXPROC)load("glBeginConditionalRenderNVX"); - glad_glEndConditionalRenderNVX = (PFNGLENDCONDITIONALRENDERNVXPROC)load("glEndConditionalRenderNVX"); -} -static void load_GL_ARB_multi_draw_indirect(GLADloadproc load) { - if(!GLAD_GL_ARB_multi_draw_indirect) return; - glad_glMultiDrawArraysIndirect = (PFNGLMULTIDRAWARRAYSINDIRECTPROC)load("glMultiDrawArraysIndirect"); - glad_glMultiDrawElementsIndirect = (PFNGLMULTIDRAWELEMENTSINDIRECTPROC)load("glMultiDrawElementsIndirect"); -} -static void load_GL_EXT_raster_multisample(GLADloadproc load) { - if(!GLAD_GL_EXT_raster_multisample) return; - glad_glRasterSamplesEXT = (PFNGLRASTERSAMPLESEXTPROC)load("glRasterSamplesEXT"); -} -static void load_GL_NV_copy_image(GLADloadproc load) { - if(!GLAD_GL_NV_copy_image) return; - glad_glCopyImageSubDataNV = (PFNGLCOPYIMAGESUBDATANVPROC)load("glCopyImageSubDataNV"); -} -static void load_GL_INTEL_framebuffer_CMAA(GLADloadproc load) { - if(!GLAD_GL_INTEL_framebuffer_CMAA) return; - glad_glApplyFramebufferAttachmentCMAAINTEL = (PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC)load("glApplyFramebufferAttachmentCMAAINTEL"); -} -static void load_GL_ARB_transform_feedback2(GLADloadproc load) { - if(!GLAD_GL_ARB_transform_feedback2) return; - 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"); -} -static void load_GL_ARB_transform_feedback3(GLADloadproc load) { - if(!GLAD_GL_ARB_transform_feedback3) return; - glad_glDrawTransformFeedbackStream = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)load("glDrawTransformFeedbackStream"); - glad_glBeginQueryIndexed = (PFNGLBEGINQUERYINDEXEDPROC)load("glBeginQueryIndexed"); - glad_glEndQueryIndexed = (PFNGLENDQUERYINDEXEDPROC)load("glEndQueryIndexed"); - glad_glGetQueryIndexediv = (PFNGLGETQUERYINDEXEDIVPROC)load("glGetQueryIndexediv"); -} -static void load_GL_EXT_debug_marker(GLADloadproc load) { - if(!GLAD_GL_EXT_debug_marker) return; - glad_glInsertEventMarkerEXT = (PFNGLINSERTEVENTMARKEREXTPROC)load("glInsertEventMarkerEXT"); - glad_glPushGroupMarkerEXT = (PFNGLPUSHGROUPMARKEREXTPROC)load("glPushGroupMarkerEXT"); - glad_glPopGroupMarkerEXT = (PFNGLPOPGROUPMARKEREXTPROC)load("glPopGroupMarkerEXT"); -} -static void load_GL_EXT_pixel_transform(GLADloadproc load) { - if(!GLAD_GL_EXT_pixel_transform) return; - glad_glPixelTransformParameteriEXT = (PFNGLPIXELTRANSFORMPARAMETERIEXTPROC)load("glPixelTransformParameteriEXT"); - glad_glPixelTransformParameterfEXT = (PFNGLPIXELTRANSFORMPARAMETERFEXTPROC)load("glPixelTransformParameterfEXT"); - glad_glPixelTransformParameterivEXT = (PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC)load("glPixelTransformParameterivEXT"); - glad_glPixelTransformParameterfvEXT = (PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC)load("glPixelTransformParameterfvEXT"); - glad_glGetPixelTransformParameterivEXT = (PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC)load("glGetPixelTransformParameterivEXT"); - glad_glGetPixelTransformParameterfvEXT = (PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC)load("glGetPixelTransformParameterfvEXT"); -} -static void load_GL_ATI_fragment_shader(GLADloadproc load) { - if(!GLAD_GL_ATI_fragment_shader) return; - glad_glGenFragmentShadersATI = (PFNGLGENFRAGMENTSHADERSATIPROC)load("glGenFragmentShadersATI"); - glad_glBindFragmentShaderATI = (PFNGLBINDFRAGMENTSHADERATIPROC)load("glBindFragmentShaderATI"); - glad_glDeleteFragmentShaderATI = (PFNGLDELETEFRAGMENTSHADERATIPROC)load("glDeleteFragmentShaderATI"); - glad_glBeginFragmentShaderATI = (PFNGLBEGINFRAGMENTSHADERATIPROC)load("glBeginFragmentShaderATI"); - glad_glEndFragmentShaderATI = (PFNGLENDFRAGMENTSHADERATIPROC)load("glEndFragmentShaderATI"); - glad_glPassTexCoordATI = (PFNGLPASSTEXCOORDATIPROC)load("glPassTexCoordATI"); - glad_glSampleMapATI = (PFNGLSAMPLEMAPATIPROC)load("glSampleMapATI"); - glad_glColorFragmentOp1ATI = (PFNGLCOLORFRAGMENTOP1ATIPROC)load("glColorFragmentOp1ATI"); - glad_glColorFragmentOp2ATI = (PFNGLCOLORFRAGMENTOP2ATIPROC)load("glColorFragmentOp2ATI"); - glad_glColorFragmentOp3ATI = (PFNGLCOLORFRAGMENTOP3ATIPROC)load("glColorFragmentOp3ATI"); - glad_glAlphaFragmentOp1ATI = (PFNGLALPHAFRAGMENTOP1ATIPROC)load("glAlphaFragmentOp1ATI"); - glad_glAlphaFragmentOp2ATI = (PFNGLALPHAFRAGMENTOP2ATIPROC)load("glAlphaFragmentOp2ATI"); - glad_glAlphaFragmentOp3ATI = (PFNGLALPHAFRAGMENTOP3ATIPROC)load("glAlphaFragmentOp3ATI"); - glad_glSetFragmentShaderConstantATI = (PFNGLSETFRAGMENTSHADERCONSTANTATIPROC)load("glSetFragmentShaderConstantATI"); -} -static void load_GL_ARB_vertex_array_object(GLADloadproc load) { - if(!GLAD_GL_ARB_vertex_array_object) return; - glad_glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC)load("glBindVertexArray"); - glad_glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC)load("glDeleteVertexArrays"); - glad_glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)load("glGenVertexArrays"); - glad_glIsVertexArray = (PFNGLISVERTEXARRAYPROC)load("glIsVertexArray"); -} -static void load_GL_SUN_triangle_list(GLADloadproc load) { - if(!GLAD_GL_SUN_triangle_list) return; - glad_glReplacementCodeuiSUN = (PFNGLREPLACEMENTCODEUISUNPROC)load("glReplacementCodeuiSUN"); - glad_glReplacementCodeusSUN = (PFNGLREPLACEMENTCODEUSSUNPROC)load("glReplacementCodeusSUN"); - glad_glReplacementCodeubSUN = (PFNGLREPLACEMENTCODEUBSUNPROC)load("glReplacementCodeubSUN"); - glad_glReplacementCodeuivSUN = (PFNGLREPLACEMENTCODEUIVSUNPROC)load("glReplacementCodeuivSUN"); - glad_glReplacementCodeusvSUN = (PFNGLREPLACEMENTCODEUSVSUNPROC)load("glReplacementCodeusvSUN"); - glad_glReplacementCodeubvSUN = (PFNGLREPLACEMENTCODEUBVSUNPROC)load("glReplacementCodeubvSUN"); - glad_glReplacementCodePointerSUN = (PFNGLREPLACEMENTCODEPOINTERSUNPROC)load("glReplacementCodePointerSUN"); -} -static void load_GL_ARB_transform_feedback_instanced(GLADloadproc load) { - if(!GLAD_GL_ARB_transform_feedback_instanced) return; - glad_glDrawTransformFeedbackInstanced = (PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC)load("glDrawTransformFeedbackInstanced"); - glad_glDrawTransformFeedbackStreamInstanced = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC)load("glDrawTransformFeedbackStreamInstanced"); -} -static void load_GL_SGIX_async(GLADloadproc load) { - if(!GLAD_GL_SGIX_async) return; - glad_glAsyncMarkerSGIX = (PFNGLASYNCMARKERSGIXPROC)load("glAsyncMarkerSGIX"); - glad_glFinishAsyncSGIX = (PFNGLFINISHASYNCSGIXPROC)load("glFinishAsyncSGIX"); - glad_glPollAsyncSGIX = (PFNGLPOLLASYNCSGIXPROC)load("glPollAsyncSGIX"); - glad_glGenAsyncMarkersSGIX = (PFNGLGENASYNCMARKERSSGIXPROC)load("glGenAsyncMarkersSGIX"); - glad_glDeleteAsyncMarkersSGIX = (PFNGLDELETEASYNCMARKERSSGIXPROC)load("glDeleteAsyncMarkersSGIX"); - glad_glIsAsyncMarkerSGIX = (PFNGLISASYNCMARKERSGIXPROC)load("glIsAsyncMarkerSGIX"); -} -static void load_GL_INTEL_performance_query(GLADloadproc load) { - if(!GLAD_GL_INTEL_performance_query) return; - glad_glBeginPerfQueryINTEL = (PFNGLBEGINPERFQUERYINTELPROC)load("glBeginPerfQueryINTEL"); - glad_glCreatePerfQueryINTEL = (PFNGLCREATEPERFQUERYINTELPROC)load("glCreatePerfQueryINTEL"); - glad_glDeletePerfQueryINTEL = (PFNGLDELETEPERFQUERYINTELPROC)load("glDeletePerfQueryINTEL"); - glad_glEndPerfQueryINTEL = (PFNGLENDPERFQUERYINTELPROC)load("glEndPerfQueryINTEL"); - glad_glGetFirstPerfQueryIdINTEL = (PFNGLGETFIRSTPERFQUERYIDINTELPROC)load("glGetFirstPerfQueryIdINTEL"); - glad_glGetNextPerfQueryIdINTEL = (PFNGLGETNEXTPERFQUERYIDINTELPROC)load("glGetNextPerfQueryIdINTEL"); - glad_glGetPerfCounterInfoINTEL = (PFNGLGETPERFCOUNTERINFOINTELPROC)load("glGetPerfCounterInfoINTEL"); - glad_glGetPerfQueryDataINTEL = (PFNGLGETPERFQUERYDATAINTELPROC)load("glGetPerfQueryDataINTEL"); - glad_glGetPerfQueryIdByNameINTEL = (PFNGLGETPERFQUERYIDBYNAMEINTELPROC)load("glGetPerfQueryIdByNameINTEL"); - glad_glGetPerfQueryInfoINTEL = (PFNGLGETPERFQUERYINFOINTELPROC)load("glGetPerfQueryInfoINTEL"); -} -static void load_GL_NV_gpu_shader5(GLADloadproc load) { - if(!GLAD_GL_NV_gpu_shader5) return; - glad_glUniform1i64NV = (PFNGLUNIFORM1I64NVPROC)load("glUniform1i64NV"); - glad_glUniform2i64NV = (PFNGLUNIFORM2I64NVPROC)load("glUniform2i64NV"); - glad_glUniform3i64NV = (PFNGLUNIFORM3I64NVPROC)load("glUniform3i64NV"); - glad_glUniform4i64NV = (PFNGLUNIFORM4I64NVPROC)load("glUniform4i64NV"); - glad_glUniform1i64vNV = (PFNGLUNIFORM1I64VNVPROC)load("glUniform1i64vNV"); - glad_glUniform2i64vNV = (PFNGLUNIFORM2I64VNVPROC)load("glUniform2i64vNV"); - glad_glUniform3i64vNV = (PFNGLUNIFORM3I64VNVPROC)load("glUniform3i64vNV"); - glad_glUniform4i64vNV = (PFNGLUNIFORM4I64VNVPROC)load("glUniform4i64vNV"); - glad_glUniform1ui64NV = (PFNGLUNIFORM1UI64NVPROC)load("glUniform1ui64NV"); - glad_glUniform2ui64NV = (PFNGLUNIFORM2UI64NVPROC)load("glUniform2ui64NV"); - glad_glUniform3ui64NV = (PFNGLUNIFORM3UI64NVPROC)load("glUniform3ui64NV"); - glad_glUniform4ui64NV = (PFNGLUNIFORM4UI64NVPROC)load("glUniform4ui64NV"); - glad_glUniform1ui64vNV = (PFNGLUNIFORM1UI64VNVPROC)load("glUniform1ui64vNV"); - glad_glUniform2ui64vNV = (PFNGLUNIFORM2UI64VNVPROC)load("glUniform2ui64vNV"); - glad_glUniform3ui64vNV = (PFNGLUNIFORM3UI64VNVPROC)load("glUniform3ui64vNV"); - glad_glUniform4ui64vNV = (PFNGLUNIFORM4UI64VNVPROC)load("glUniform4ui64vNV"); - glad_glGetUniformi64vNV = (PFNGLGETUNIFORMI64VNVPROC)load("glGetUniformi64vNV"); - glad_glProgramUniform1i64NV = (PFNGLPROGRAMUNIFORM1I64NVPROC)load("glProgramUniform1i64NV"); - glad_glProgramUniform2i64NV = (PFNGLPROGRAMUNIFORM2I64NVPROC)load("glProgramUniform2i64NV"); - glad_glProgramUniform3i64NV = (PFNGLPROGRAMUNIFORM3I64NVPROC)load("glProgramUniform3i64NV"); - glad_glProgramUniform4i64NV = (PFNGLPROGRAMUNIFORM4I64NVPROC)load("glProgramUniform4i64NV"); - glad_glProgramUniform1i64vNV = (PFNGLPROGRAMUNIFORM1I64VNVPROC)load("glProgramUniform1i64vNV"); - glad_glProgramUniform2i64vNV = (PFNGLPROGRAMUNIFORM2I64VNVPROC)load("glProgramUniform2i64vNV"); - glad_glProgramUniform3i64vNV = (PFNGLPROGRAMUNIFORM3I64VNVPROC)load("glProgramUniform3i64vNV"); - glad_glProgramUniform4i64vNV = (PFNGLPROGRAMUNIFORM4I64VNVPROC)load("glProgramUniform4i64vNV"); - glad_glProgramUniform1ui64NV = (PFNGLPROGRAMUNIFORM1UI64NVPROC)load("glProgramUniform1ui64NV"); - glad_glProgramUniform2ui64NV = (PFNGLPROGRAMUNIFORM2UI64NVPROC)load("glProgramUniform2ui64NV"); - glad_glProgramUniform3ui64NV = (PFNGLPROGRAMUNIFORM3UI64NVPROC)load("glProgramUniform3ui64NV"); - glad_glProgramUniform4ui64NV = (PFNGLPROGRAMUNIFORM4UI64NVPROC)load("glProgramUniform4ui64NV"); - glad_glProgramUniform1ui64vNV = (PFNGLPROGRAMUNIFORM1UI64VNVPROC)load("glProgramUniform1ui64vNV"); - glad_glProgramUniform2ui64vNV = (PFNGLPROGRAMUNIFORM2UI64VNVPROC)load("glProgramUniform2ui64vNV"); - glad_glProgramUniform3ui64vNV = (PFNGLPROGRAMUNIFORM3UI64VNVPROC)load("glProgramUniform3ui64vNV"); - glad_glProgramUniform4ui64vNV = (PFNGLPROGRAMUNIFORM4UI64VNVPROC)load("glProgramUniform4ui64vNV"); -} -static void load_GL_NV_bindless_multi_draw_indirect_count(GLADloadproc load) { - if(!GLAD_GL_NV_bindless_multi_draw_indirect_count) return; - glad_glMultiDrawArraysIndirectBindlessCountNV = (PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC)load("glMultiDrawArraysIndirectBindlessCountNV"); - glad_glMultiDrawElementsIndirectBindlessCountNV = (PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC)load("glMultiDrawElementsIndirectBindlessCountNV"); -} -static void load_GL_ARB_ES2_compatibility(GLADloadproc load) { - if(!GLAD_GL_ARB_ES2_compatibility) 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"); -} -static void load_GL_ARB_indirect_parameters(GLADloadproc load) { - if(!GLAD_GL_ARB_indirect_parameters) return; - glad_glMultiDrawArraysIndirectCountARB = (PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC)load("glMultiDrawArraysIndirectCountARB"); - glad_glMultiDrawElementsIndirectCountARB = (PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC)load("glMultiDrawElementsIndirectCountARB"); -} -static void load_GL_NV_half_float(GLADloadproc load) { - if(!GLAD_GL_NV_half_float) return; - glad_glVertex2hNV = (PFNGLVERTEX2HNVPROC)load("glVertex2hNV"); - glad_glVertex2hvNV = (PFNGLVERTEX2HVNVPROC)load("glVertex2hvNV"); - glad_glVertex3hNV = (PFNGLVERTEX3HNVPROC)load("glVertex3hNV"); - glad_glVertex3hvNV = (PFNGLVERTEX3HVNVPROC)load("glVertex3hvNV"); - glad_glVertex4hNV = (PFNGLVERTEX4HNVPROC)load("glVertex4hNV"); - glad_glVertex4hvNV = (PFNGLVERTEX4HVNVPROC)load("glVertex4hvNV"); - glad_glNormal3hNV = (PFNGLNORMAL3HNVPROC)load("glNormal3hNV"); - glad_glNormal3hvNV = (PFNGLNORMAL3HVNVPROC)load("glNormal3hvNV"); - glad_glColor3hNV = (PFNGLCOLOR3HNVPROC)load("glColor3hNV"); - glad_glColor3hvNV = (PFNGLCOLOR3HVNVPROC)load("glColor3hvNV"); - glad_glColor4hNV = (PFNGLCOLOR4HNVPROC)load("glColor4hNV"); - glad_glColor4hvNV = (PFNGLCOLOR4HVNVPROC)load("glColor4hvNV"); - glad_glTexCoord1hNV = (PFNGLTEXCOORD1HNVPROC)load("glTexCoord1hNV"); - glad_glTexCoord1hvNV = (PFNGLTEXCOORD1HVNVPROC)load("glTexCoord1hvNV"); - glad_glTexCoord2hNV = (PFNGLTEXCOORD2HNVPROC)load("glTexCoord2hNV"); - glad_glTexCoord2hvNV = (PFNGLTEXCOORD2HVNVPROC)load("glTexCoord2hvNV"); - glad_glTexCoord3hNV = (PFNGLTEXCOORD3HNVPROC)load("glTexCoord3hNV"); - glad_glTexCoord3hvNV = (PFNGLTEXCOORD3HVNVPROC)load("glTexCoord3hvNV"); - glad_glTexCoord4hNV = (PFNGLTEXCOORD4HNVPROC)load("glTexCoord4hNV"); - glad_glTexCoord4hvNV = (PFNGLTEXCOORD4HVNVPROC)load("glTexCoord4hvNV"); - glad_glMultiTexCoord1hNV = (PFNGLMULTITEXCOORD1HNVPROC)load("glMultiTexCoord1hNV"); - glad_glMultiTexCoord1hvNV = (PFNGLMULTITEXCOORD1HVNVPROC)load("glMultiTexCoord1hvNV"); - glad_glMultiTexCoord2hNV = (PFNGLMULTITEXCOORD2HNVPROC)load("glMultiTexCoord2hNV"); - glad_glMultiTexCoord2hvNV = (PFNGLMULTITEXCOORD2HVNVPROC)load("glMultiTexCoord2hvNV"); - glad_glMultiTexCoord3hNV = (PFNGLMULTITEXCOORD3HNVPROC)load("glMultiTexCoord3hNV"); - glad_glMultiTexCoord3hvNV = (PFNGLMULTITEXCOORD3HVNVPROC)load("glMultiTexCoord3hvNV"); - glad_glMultiTexCoord4hNV = (PFNGLMULTITEXCOORD4HNVPROC)load("glMultiTexCoord4hNV"); - glad_glMultiTexCoord4hvNV = (PFNGLMULTITEXCOORD4HVNVPROC)load("glMultiTexCoord4hvNV"); - glad_glFogCoordhNV = (PFNGLFOGCOORDHNVPROC)load("glFogCoordhNV"); - glad_glFogCoordhvNV = (PFNGLFOGCOORDHVNVPROC)load("glFogCoordhvNV"); - glad_glSecondaryColor3hNV = (PFNGLSECONDARYCOLOR3HNVPROC)load("glSecondaryColor3hNV"); - glad_glSecondaryColor3hvNV = (PFNGLSECONDARYCOLOR3HVNVPROC)load("glSecondaryColor3hvNV"); - glad_glVertexWeighthNV = (PFNGLVERTEXWEIGHTHNVPROC)load("glVertexWeighthNV"); - glad_glVertexWeighthvNV = (PFNGLVERTEXWEIGHTHVNVPROC)load("glVertexWeighthvNV"); - glad_glVertexAttrib1hNV = (PFNGLVERTEXATTRIB1HNVPROC)load("glVertexAttrib1hNV"); - glad_glVertexAttrib1hvNV = (PFNGLVERTEXATTRIB1HVNVPROC)load("glVertexAttrib1hvNV"); - glad_glVertexAttrib2hNV = (PFNGLVERTEXATTRIB2HNVPROC)load("glVertexAttrib2hNV"); - glad_glVertexAttrib2hvNV = (PFNGLVERTEXATTRIB2HVNVPROC)load("glVertexAttrib2hvNV"); - glad_glVertexAttrib3hNV = (PFNGLVERTEXATTRIB3HNVPROC)load("glVertexAttrib3hNV"); - glad_glVertexAttrib3hvNV = (PFNGLVERTEXATTRIB3HVNVPROC)load("glVertexAttrib3hvNV"); - glad_glVertexAttrib4hNV = (PFNGLVERTEXATTRIB4HNVPROC)load("glVertexAttrib4hNV"); - glad_glVertexAttrib4hvNV = (PFNGLVERTEXATTRIB4HVNVPROC)load("glVertexAttrib4hvNV"); - glad_glVertexAttribs1hvNV = (PFNGLVERTEXATTRIBS1HVNVPROC)load("glVertexAttribs1hvNV"); - glad_glVertexAttribs2hvNV = (PFNGLVERTEXATTRIBS2HVNVPROC)load("glVertexAttribs2hvNV"); - glad_glVertexAttribs3hvNV = (PFNGLVERTEXATTRIBS3HVNVPROC)load("glVertexAttribs3hvNV"); - glad_glVertexAttribs4hvNV = (PFNGLVERTEXATTRIBS4HVNVPROC)load("glVertexAttribs4hvNV"); -} -static void load_GL_ARB_ES3_2_compatibility(GLADloadproc load) { - if(!GLAD_GL_ARB_ES3_2_compatibility) return; - glad_glPrimitiveBoundingBoxARB = (PFNGLPRIMITIVEBOUNDINGBOXARBPROC)load("glPrimitiveBoundingBoxARB"); -} -static void load_GL_EXT_polygon_offset_clamp(GLADloadproc load) { - if(!GLAD_GL_EXT_polygon_offset_clamp) return; - glad_glPolygonOffsetClampEXT = (PFNGLPOLYGONOFFSETCLAMPEXTPROC)load("glPolygonOffsetClampEXT"); -} -static void load_GL_EXT_compiled_vertex_array(GLADloadproc load) { - if(!GLAD_GL_EXT_compiled_vertex_array) return; - glad_glLockArraysEXT = (PFNGLLOCKARRAYSEXTPROC)load("glLockArraysEXT"); - glad_glUnlockArraysEXT = (PFNGLUNLOCKARRAYSEXTPROC)load("glUnlockArraysEXT"); -} -static void load_GL_NV_depth_buffer_float(GLADloadproc load) { - if(!GLAD_GL_NV_depth_buffer_float) return; - glad_glDepthRangedNV = (PFNGLDEPTHRANGEDNVPROC)load("glDepthRangedNV"); - glad_glClearDepthdNV = (PFNGLCLEARDEPTHDNVPROC)load("glClearDepthdNV"); - glad_glDepthBoundsdNV = (PFNGLDEPTHBOUNDSDNVPROC)load("glDepthBoundsdNV"); -} -static void load_GL_NV_occlusion_query(GLADloadproc load) { - if(!GLAD_GL_NV_occlusion_query) return; - glad_glGenOcclusionQueriesNV = (PFNGLGENOCCLUSIONQUERIESNVPROC)load("glGenOcclusionQueriesNV"); - glad_glDeleteOcclusionQueriesNV = (PFNGLDELETEOCCLUSIONQUERIESNVPROC)load("glDeleteOcclusionQueriesNV"); - glad_glIsOcclusionQueryNV = (PFNGLISOCCLUSIONQUERYNVPROC)load("glIsOcclusionQueryNV"); - glad_glBeginOcclusionQueryNV = (PFNGLBEGINOCCLUSIONQUERYNVPROC)load("glBeginOcclusionQueryNV"); - glad_glEndOcclusionQueryNV = (PFNGLENDOCCLUSIONQUERYNVPROC)load("glEndOcclusionQueryNV"); - glad_glGetOcclusionQueryivNV = (PFNGLGETOCCLUSIONQUERYIVNVPROC)load("glGetOcclusionQueryivNV"); - glad_glGetOcclusionQueryuivNV = (PFNGLGETOCCLUSIONQUERYUIVNVPROC)load("glGetOcclusionQueryuivNV"); -} -static void load_GL_APPLE_flush_buffer_range(GLADloadproc load) { - if(!GLAD_GL_APPLE_flush_buffer_range) return; - glad_glBufferParameteriAPPLE = (PFNGLBUFFERPARAMETERIAPPLEPROC)load("glBufferParameteriAPPLE"); - glad_glFlushMappedBufferRangeAPPLE = (PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC)load("glFlushMappedBufferRangeAPPLE"); -} -static void load_GL_ARB_imaging(GLADloadproc load) { - if(!GLAD_GL_ARB_imaging) return; - glad_glBlendColor = (PFNGLBLENDCOLORPROC)load("glBlendColor"); - glad_glBlendEquation = (PFNGLBLENDEQUATIONPROC)load("glBlendEquation"); - glad_glColorTable = (PFNGLCOLORTABLEPROC)load("glColorTable"); - glad_glColorTableParameterfv = (PFNGLCOLORTABLEPARAMETERFVPROC)load("glColorTableParameterfv"); - glad_glColorTableParameteriv = (PFNGLCOLORTABLEPARAMETERIVPROC)load("glColorTableParameteriv"); - glad_glCopyColorTable = (PFNGLCOPYCOLORTABLEPROC)load("glCopyColorTable"); - glad_glGetColorTable = (PFNGLGETCOLORTABLEPROC)load("glGetColorTable"); - glad_glGetColorTableParameterfv = (PFNGLGETCOLORTABLEPARAMETERFVPROC)load("glGetColorTableParameterfv"); - glad_glGetColorTableParameteriv = (PFNGLGETCOLORTABLEPARAMETERIVPROC)load("glGetColorTableParameteriv"); - glad_glColorSubTable = (PFNGLCOLORSUBTABLEPROC)load("glColorSubTable"); - glad_glCopyColorSubTable = (PFNGLCOPYCOLORSUBTABLEPROC)load("glCopyColorSubTable"); - glad_glConvolutionFilter1D = (PFNGLCONVOLUTIONFILTER1DPROC)load("glConvolutionFilter1D"); - glad_glConvolutionFilter2D = (PFNGLCONVOLUTIONFILTER2DPROC)load("glConvolutionFilter2D"); - glad_glConvolutionParameterf = (PFNGLCONVOLUTIONPARAMETERFPROC)load("glConvolutionParameterf"); - glad_glConvolutionParameterfv = (PFNGLCONVOLUTIONPARAMETERFVPROC)load("glConvolutionParameterfv"); - glad_glConvolutionParameteri = (PFNGLCONVOLUTIONPARAMETERIPROC)load("glConvolutionParameteri"); - glad_glConvolutionParameteriv = (PFNGLCONVOLUTIONPARAMETERIVPROC)load("glConvolutionParameteriv"); - glad_glCopyConvolutionFilter1D = (PFNGLCOPYCONVOLUTIONFILTER1DPROC)load("glCopyConvolutionFilter1D"); - glad_glCopyConvolutionFilter2D = (PFNGLCOPYCONVOLUTIONFILTER2DPROC)load("glCopyConvolutionFilter2D"); - glad_glGetConvolutionFilter = (PFNGLGETCONVOLUTIONFILTERPROC)load("glGetConvolutionFilter"); - glad_glGetConvolutionParameterfv = (PFNGLGETCONVOLUTIONPARAMETERFVPROC)load("glGetConvolutionParameterfv"); - glad_glGetConvolutionParameteriv = (PFNGLGETCONVOLUTIONPARAMETERIVPROC)load("glGetConvolutionParameteriv"); - glad_glGetSeparableFilter = (PFNGLGETSEPARABLEFILTERPROC)load("glGetSeparableFilter"); - glad_glSeparableFilter2D = (PFNGLSEPARABLEFILTER2DPROC)load("glSeparableFilter2D"); - glad_glGetHistogram = (PFNGLGETHISTOGRAMPROC)load("glGetHistogram"); - glad_glGetHistogramParameterfv = (PFNGLGETHISTOGRAMPARAMETERFVPROC)load("glGetHistogramParameterfv"); - glad_glGetHistogramParameteriv = (PFNGLGETHISTOGRAMPARAMETERIVPROC)load("glGetHistogramParameteriv"); - glad_glGetMinmax = (PFNGLGETMINMAXPROC)load("glGetMinmax"); - glad_glGetMinmaxParameterfv = (PFNGLGETMINMAXPARAMETERFVPROC)load("glGetMinmaxParameterfv"); - glad_glGetMinmaxParameteriv = (PFNGLGETMINMAXPARAMETERIVPROC)load("glGetMinmaxParameteriv"); - glad_glHistogram = (PFNGLHISTOGRAMPROC)load("glHistogram"); - glad_glMinmax = (PFNGLMINMAXPROC)load("glMinmax"); - glad_glResetHistogram = (PFNGLRESETHISTOGRAMPROC)load("glResetHistogram"); - glad_glResetMinmax = (PFNGLRESETMINMAXPROC)load("glResetMinmax"); -} -static void load_GL_ARB_draw_buffers_blend(GLADloadproc load) { - if(!GLAD_GL_ARB_draw_buffers_blend) return; - glad_glBlendEquationiARB = (PFNGLBLENDEQUATIONIARBPROC)load("glBlendEquationiARB"); - glad_glBlendEquationSeparateiARB = (PFNGLBLENDEQUATIONSEPARATEIARBPROC)load("glBlendEquationSeparateiARB"); - glad_glBlendFunciARB = (PFNGLBLENDFUNCIARBPROC)load("glBlendFunciARB"); - glad_glBlendFuncSeparateiARB = (PFNGLBLENDFUNCSEPARATEIARBPROC)load("glBlendFuncSeparateiARB"); -} -static void load_GL_ARB_clear_buffer_object(GLADloadproc load) { - if(!GLAD_GL_ARB_clear_buffer_object) return; - glad_glClearBufferData = (PFNGLCLEARBUFFERDATAPROC)load("glClearBufferData"); - glad_glClearBufferSubData = (PFNGLCLEARBUFFERSUBDATAPROC)load("glClearBufferSubData"); -} -static void load_GL_ARB_multisample(GLADloadproc load) { - if(!GLAD_GL_ARB_multisample) return; - glad_glSampleCoverageARB = (PFNGLSAMPLECOVERAGEARBPROC)load("glSampleCoverageARB"); -} -static void load_GL_EXT_debug_label(GLADloadproc load) { - if(!GLAD_GL_EXT_debug_label) return; - glad_glLabelObjectEXT = (PFNGLLABELOBJECTEXTPROC)load("glLabelObjectEXT"); - glad_glGetObjectLabelEXT = (PFNGLGETOBJECTLABELEXTPROC)load("glGetObjectLabelEXT"); -} -static void load_GL_ARB_sample_shading(GLADloadproc load) { - if(!GLAD_GL_ARB_sample_shading) return; - glad_glMinSampleShadingARB = (PFNGLMINSAMPLESHADINGARBPROC)load("glMinSampleShadingARB"); -} -static void load_GL_NV_internalformat_sample_query(GLADloadproc load) { - if(!GLAD_GL_NV_internalformat_sample_query) return; - glad_glGetInternalformatSampleivNV = (PFNGLGETINTERNALFORMATSAMPLEIVNVPROC)load("glGetInternalformatSampleivNV"); -} -static void load_GL_INTEL_map_texture(GLADloadproc load) { - if(!GLAD_GL_INTEL_map_texture) return; - glad_glSyncTextureINTEL = (PFNGLSYNCTEXTUREINTELPROC)load("glSyncTextureINTEL"); - glad_glUnmapTexture2DINTEL = (PFNGLUNMAPTEXTURE2DINTELPROC)load("glUnmapTexture2DINTEL"); - glad_glMapTexture2DINTEL = (PFNGLMAPTEXTURE2DINTELPROC)load("glMapTexture2DINTEL"); -} -static void load_GL_ARB_compute_shader(GLADloadproc load) { - if(!GLAD_GL_ARB_compute_shader) return; - glad_glDispatchCompute = (PFNGLDISPATCHCOMPUTEPROC)load("glDispatchCompute"); - glad_glDispatchComputeIndirect = (PFNGLDISPATCHCOMPUTEINDIRECTPROC)load("glDispatchComputeIndirect"); -} -static void load_GL_IBM_vertex_array_lists(GLADloadproc load) { - if(!GLAD_GL_IBM_vertex_array_lists) return; - glad_glColorPointerListIBM = (PFNGLCOLORPOINTERLISTIBMPROC)load("glColorPointerListIBM"); - glad_glSecondaryColorPointerListIBM = (PFNGLSECONDARYCOLORPOINTERLISTIBMPROC)load("glSecondaryColorPointerListIBM"); - glad_glEdgeFlagPointerListIBM = (PFNGLEDGEFLAGPOINTERLISTIBMPROC)load("glEdgeFlagPointerListIBM"); - glad_glFogCoordPointerListIBM = (PFNGLFOGCOORDPOINTERLISTIBMPROC)load("glFogCoordPointerListIBM"); - glad_glIndexPointerListIBM = (PFNGLINDEXPOINTERLISTIBMPROC)load("glIndexPointerListIBM"); - glad_glNormalPointerListIBM = (PFNGLNORMALPOINTERLISTIBMPROC)load("glNormalPointerListIBM"); - glad_glTexCoordPointerListIBM = (PFNGLTEXCOORDPOINTERLISTIBMPROC)load("glTexCoordPointerListIBM"); - glad_glVertexPointerListIBM = (PFNGLVERTEXPOINTERLISTIBMPROC)load("glVertexPointerListIBM"); -} -static void load_GL_ARB_color_buffer_float(GLADloadproc load) { - if(!GLAD_GL_ARB_color_buffer_float) return; - glad_glClampColorARB = (PFNGLCLAMPCOLORARBPROC)load("glClampColorARB"); -} -static void load_GL_ARB_bindless_texture(GLADloadproc load) { - if(!GLAD_GL_ARB_bindless_texture) return; - glad_glGetTextureHandleARB = (PFNGLGETTEXTUREHANDLEARBPROC)load("glGetTextureHandleARB"); - glad_glGetTextureSamplerHandleARB = (PFNGLGETTEXTURESAMPLERHANDLEARBPROC)load("glGetTextureSamplerHandleARB"); - glad_glMakeTextureHandleResidentARB = (PFNGLMAKETEXTUREHANDLERESIDENTARBPROC)load("glMakeTextureHandleResidentARB"); - glad_glMakeTextureHandleNonResidentARB = (PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC)load("glMakeTextureHandleNonResidentARB"); - glad_glGetImageHandleARB = (PFNGLGETIMAGEHANDLEARBPROC)load("glGetImageHandleARB"); - glad_glMakeImageHandleResidentARB = (PFNGLMAKEIMAGEHANDLERESIDENTARBPROC)load("glMakeImageHandleResidentARB"); - glad_glMakeImageHandleNonResidentARB = (PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC)load("glMakeImageHandleNonResidentARB"); - glad_glUniformHandleui64ARB = (PFNGLUNIFORMHANDLEUI64ARBPROC)load("glUniformHandleui64ARB"); - glad_glUniformHandleui64vARB = (PFNGLUNIFORMHANDLEUI64VARBPROC)load("glUniformHandleui64vARB"); - glad_glProgramUniformHandleui64ARB = (PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC)load("glProgramUniformHandleui64ARB"); - glad_glProgramUniformHandleui64vARB = (PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC)load("glProgramUniformHandleui64vARB"); - glad_glIsTextureHandleResidentARB = (PFNGLISTEXTUREHANDLERESIDENTARBPROC)load("glIsTextureHandleResidentARB"); - glad_glIsImageHandleResidentARB = (PFNGLISIMAGEHANDLERESIDENTARBPROC)load("glIsImageHandleResidentARB"); - glad_glVertexAttribL1ui64ARB = (PFNGLVERTEXATTRIBL1UI64ARBPROC)load("glVertexAttribL1ui64ARB"); - glad_glVertexAttribL1ui64vARB = (PFNGLVERTEXATTRIBL1UI64VARBPROC)load("glVertexAttribL1ui64vARB"); - glad_glGetVertexAttribLui64vARB = (PFNGLGETVERTEXATTRIBLUI64VARBPROC)load("glGetVertexAttribLui64vARB"); -} -static void load_GL_ARB_window_pos(GLADloadproc load) { - if(!GLAD_GL_ARB_window_pos) return; - glad_glWindowPos2dARB = (PFNGLWINDOWPOS2DARBPROC)load("glWindowPos2dARB"); - glad_glWindowPos2dvARB = (PFNGLWINDOWPOS2DVARBPROC)load("glWindowPos2dvARB"); - glad_glWindowPos2fARB = (PFNGLWINDOWPOS2FARBPROC)load("glWindowPos2fARB"); - glad_glWindowPos2fvARB = (PFNGLWINDOWPOS2FVARBPROC)load("glWindowPos2fvARB"); - glad_glWindowPos2iARB = (PFNGLWINDOWPOS2IARBPROC)load("glWindowPos2iARB"); - glad_glWindowPos2ivARB = (PFNGLWINDOWPOS2IVARBPROC)load("glWindowPos2ivARB"); - glad_glWindowPos2sARB = (PFNGLWINDOWPOS2SARBPROC)load("glWindowPos2sARB"); - glad_glWindowPos2svARB = (PFNGLWINDOWPOS2SVARBPROC)load("glWindowPos2svARB"); - glad_glWindowPos3dARB = (PFNGLWINDOWPOS3DARBPROC)load("glWindowPos3dARB"); - glad_glWindowPos3dvARB = (PFNGLWINDOWPOS3DVARBPROC)load("glWindowPos3dvARB"); - glad_glWindowPos3fARB = (PFNGLWINDOWPOS3FARBPROC)load("glWindowPos3fARB"); - glad_glWindowPos3fvARB = (PFNGLWINDOWPOS3FVARBPROC)load("glWindowPos3fvARB"); - glad_glWindowPos3iARB = (PFNGLWINDOWPOS3IARBPROC)load("glWindowPos3iARB"); - glad_glWindowPos3ivARB = (PFNGLWINDOWPOS3IVARBPROC)load("glWindowPos3ivARB"); - glad_glWindowPos3sARB = (PFNGLWINDOWPOS3SARBPROC)load("glWindowPos3sARB"); - glad_glWindowPos3svARB = (PFNGLWINDOWPOS3SVARBPROC)load("glWindowPos3svARB"); -} -static void load_GL_ARB_internalformat_query(GLADloadproc load) { - if(!GLAD_GL_ARB_internalformat_query) return; - glad_glGetInternalformativ = (PFNGLGETINTERNALFORMATIVPROC)load("glGetInternalformativ"); -} -static void load_GL_EXT_shader_image_load_store(GLADloadproc load) { - if(!GLAD_GL_EXT_shader_image_load_store) return; - glad_glBindImageTextureEXT = (PFNGLBINDIMAGETEXTUREEXTPROC)load("glBindImageTextureEXT"); - glad_glMemoryBarrierEXT = (PFNGLMEMORYBARRIEREXTPROC)load("glMemoryBarrierEXT"); -} -static void load_GL_EXT_copy_texture(GLADloadproc load) { - if(!GLAD_GL_EXT_copy_texture) return; - glad_glCopyTexImage1DEXT = (PFNGLCOPYTEXIMAGE1DEXTPROC)load("glCopyTexImage1DEXT"); - glad_glCopyTexImage2DEXT = (PFNGLCOPYTEXIMAGE2DEXTPROC)load("glCopyTexImage2DEXT"); - glad_glCopyTexSubImage1DEXT = (PFNGLCOPYTEXSUBIMAGE1DEXTPROC)load("glCopyTexSubImage1DEXT"); - glad_glCopyTexSubImage2DEXT = (PFNGLCOPYTEXSUBIMAGE2DEXTPROC)load("glCopyTexSubImage2DEXT"); - glad_glCopyTexSubImage3DEXT = (PFNGLCOPYTEXSUBIMAGE3DEXTPROC)load("glCopyTexSubImage3DEXT"); -} -static void load_GL_NV_register_combiners2(GLADloadproc load) { - if(!GLAD_GL_NV_register_combiners2) return; - glad_glCombinerStageParameterfvNV = (PFNGLCOMBINERSTAGEPARAMETERFVNVPROC)load("glCombinerStageParameterfvNV"); - glad_glGetCombinerStageParameterfvNV = (PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC)load("glGetCombinerStageParameterfvNV"); -} -static void load_GL_NV_draw_texture(GLADloadproc load) { - if(!GLAD_GL_NV_draw_texture) return; - glad_glDrawTextureNV = (PFNGLDRAWTEXTURENVPROC)load("glDrawTextureNV"); -} -static void load_GL_EXT_draw_instanced(GLADloadproc load) { - if(!GLAD_GL_EXT_draw_instanced) return; - glad_glDrawArraysInstancedEXT = (PFNGLDRAWARRAYSINSTANCEDEXTPROC)load("glDrawArraysInstancedEXT"); - glad_glDrawElementsInstancedEXT = (PFNGLDRAWELEMENTSINSTANCEDEXTPROC)load("glDrawElementsInstancedEXT"); -} -static void load_GL_ARB_viewport_array(GLADloadproc load) { - if(!GLAD_GL_ARB_viewport_array) return; - 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 void load_GL_ARB_separate_shader_objects(GLADloadproc load) { - if(!GLAD_GL_ARB_separate_shader_objects) return; - 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_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"); -} -static void load_GL_EXT_depth_bounds_test(GLADloadproc load) { - if(!GLAD_GL_EXT_depth_bounds_test) return; - glad_glDepthBoundsEXT = (PFNGLDEPTHBOUNDSEXTPROC)load("glDepthBoundsEXT"); -} -static void load_GL_NV_video_capture(GLADloadproc load) { - if(!GLAD_GL_NV_video_capture) return; - glad_glBeginVideoCaptureNV = (PFNGLBEGINVIDEOCAPTURENVPROC)load("glBeginVideoCaptureNV"); - glad_glBindVideoCaptureStreamBufferNV = (PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC)load("glBindVideoCaptureStreamBufferNV"); - glad_glBindVideoCaptureStreamTextureNV = (PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC)load("glBindVideoCaptureStreamTextureNV"); - glad_glEndVideoCaptureNV = (PFNGLENDVIDEOCAPTURENVPROC)load("glEndVideoCaptureNV"); - glad_glGetVideoCaptureivNV = (PFNGLGETVIDEOCAPTUREIVNVPROC)load("glGetVideoCaptureivNV"); - glad_glGetVideoCaptureStreamivNV = (PFNGLGETVIDEOCAPTURESTREAMIVNVPROC)load("glGetVideoCaptureStreamivNV"); - glad_glGetVideoCaptureStreamfvNV = (PFNGLGETVIDEOCAPTURESTREAMFVNVPROC)load("glGetVideoCaptureStreamfvNV"); - glad_glGetVideoCaptureStreamdvNV = (PFNGLGETVIDEOCAPTURESTREAMDVNVPROC)load("glGetVideoCaptureStreamdvNV"); - glad_glVideoCaptureNV = (PFNGLVIDEOCAPTURENVPROC)load("glVideoCaptureNV"); - glad_glVideoCaptureStreamParameterivNV = (PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC)load("glVideoCaptureStreamParameterivNV"); - glad_glVideoCaptureStreamParameterfvNV = (PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC)load("glVideoCaptureStreamParameterfvNV"); - glad_glVideoCaptureStreamParameterdvNV = (PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC)load("glVideoCaptureStreamParameterdvNV"); -} -static void load_GL_ARB_sampler_objects(GLADloadproc load) { - if(!GLAD_GL_ARB_sampler_objects) return; - 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"); -} -static void load_GL_ARB_matrix_palette(GLADloadproc load) { - if(!GLAD_GL_ARB_matrix_palette) return; - glad_glCurrentPaletteMatrixARB = (PFNGLCURRENTPALETTEMATRIXARBPROC)load("glCurrentPaletteMatrixARB"); - glad_glMatrixIndexubvARB = (PFNGLMATRIXINDEXUBVARBPROC)load("glMatrixIndexubvARB"); - glad_glMatrixIndexusvARB = (PFNGLMATRIXINDEXUSVARBPROC)load("glMatrixIndexusvARB"); - glad_glMatrixIndexuivARB = (PFNGLMATRIXINDEXUIVARBPROC)load("glMatrixIndexuivARB"); - glad_glMatrixIndexPointerARB = (PFNGLMATRIXINDEXPOINTERARBPROC)load("glMatrixIndexPointerARB"); -} -static void load_GL_SGIS_texture_color_mask(GLADloadproc load) { - if(!GLAD_GL_SGIS_texture_color_mask) return; - glad_glTextureColorMaskSGIS = (PFNGLTEXTURECOLORMASKSGISPROC)load("glTextureColorMaskSGIS"); -} -static void load_GL_EXT_coordinate_frame(GLADloadproc load) { - if(!GLAD_GL_EXT_coordinate_frame) return; - glad_glTangent3bEXT = (PFNGLTANGENT3BEXTPROC)load("glTangent3bEXT"); - glad_glTangent3bvEXT = (PFNGLTANGENT3BVEXTPROC)load("glTangent3bvEXT"); - glad_glTangent3dEXT = (PFNGLTANGENT3DEXTPROC)load("glTangent3dEXT"); - glad_glTangent3dvEXT = (PFNGLTANGENT3DVEXTPROC)load("glTangent3dvEXT"); - glad_glTangent3fEXT = (PFNGLTANGENT3FEXTPROC)load("glTangent3fEXT"); - glad_glTangent3fvEXT = (PFNGLTANGENT3FVEXTPROC)load("glTangent3fvEXT"); - glad_glTangent3iEXT = (PFNGLTANGENT3IEXTPROC)load("glTangent3iEXT"); - glad_glTangent3ivEXT = (PFNGLTANGENT3IVEXTPROC)load("glTangent3ivEXT"); - glad_glTangent3sEXT = (PFNGLTANGENT3SEXTPROC)load("glTangent3sEXT"); - glad_glTangent3svEXT = (PFNGLTANGENT3SVEXTPROC)load("glTangent3svEXT"); - glad_glBinormal3bEXT = (PFNGLBINORMAL3BEXTPROC)load("glBinormal3bEXT"); - glad_glBinormal3bvEXT = (PFNGLBINORMAL3BVEXTPROC)load("glBinormal3bvEXT"); - glad_glBinormal3dEXT = (PFNGLBINORMAL3DEXTPROC)load("glBinormal3dEXT"); - glad_glBinormal3dvEXT = (PFNGLBINORMAL3DVEXTPROC)load("glBinormal3dvEXT"); - glad_glBinormal3fEXT = (PFNGLBINORMAL3FEXTPROC)load("glBinormal3fEXT"); - glad_glBinormal3fvEXT = (PFNGLBINORMAL3FVEXTPROC)load("glBinormal3fvEXT"); - glad_glBinormal3iEXT = (PFNGLBINORMAL3IEXTPROC)load("glBinormal3iEXT"); - glad_glBinormal3ivEXT = (PFNGLBINORMAL3IVEXTPROC)load("glBinormal3ivEXT"); - glad_glBinormal3sEXT = (PFNGLBINORMAL3SEXTPROC)load("glBinormal3sEXT"); - glad_glBinormal3svEXT = (PFNGLBINORMAL3SVEXTPROC)load("glBinormal3svEXT"); - glad_glTangentPointerEXT = (PFNGLTANGENTPOINTEREXTPROC)load("glTangentPointerEXT"); - glad_glBinormalPointerEXT = (PFNGLBINORMALPOINTEREXTPROC)load("glBinormalPointerEXT"); -} -static void load_GL_ARB_texture_compression(GLADloadproc load) { - if(!GLAD_GL_ARB_texture_compression) return; - glad_glCompressedTexImage3DARB = (PFNGLCOMPRESSEDTEXIMAGE3DARBPROC)load("glCompressedTexImage3DARB"); - glad_glCompressedTexImage2DARB = (PFNGLCOMPRESSEDTEXIMAGE2DARBPROC)load("glCompressedTexImage2DARB"); - glad_glCompressedTexImage1DARB = (PFNGLCOMPRESSEDTEXIMAGE1DARBPROC)load("glCompressedTexImage1DARB"); - glad_glCompressedTexSubImage3DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC)load("glCompressedTexSubImage3DARB"); - glad_glCompressedTexSubImage2DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC)load("glCompressedTexSubImage2DARB"); - glad_glCompressedTexSubImage1DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC)load("glCompressedTexSubImage1DARB"); - glad_glGetCompressedTexImageARB = (PFNGLGETCOMPRESSEDTEXIMAGEARBPROC)load("glGetCompressedTexImageARB"); -} -static void load_GL_ARB_shader_subroutine(GLADloadproc load) { - if(!GLAD_GL_ARB_shader_subroutine) return; - 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"); -} -static void load_GL_ARB_texture_storage_multisample(GLADloadproc load) { - if(!GLAD_GL_ARB_texture_storage_multisample) return; - glad_glTexStorage2DMultisample = (PFNGLTEXSTORAGE2DMULTISAMPLEPROC)load("glTexStorage2DMultisample"); - glad_glTexStorage3DMultisample = (PFNGLTEXSTORAGE3DMULTISAMPLEPROC)load("glTexStorage3DMultisample"); -} -static void load_GL_EXT_vertex_attrib_64bit(GLADloadproc load) { - if(!GLAD_GL_EXT_vertex_attrib_64bit) return; - glad_glVertexAttribL1dEXT = (PFNGLVERTEXATTRIBL1DEXTPROC)load("glVertexAttribL1dEXT"); - glad_glVertexAttribL2dEXT = (PFNGLVERTEXATTRIBL2DEXTPROC)load("glVertexAttribL2dEXT"); - glad_glVertexAttribL3dEXT = (PFNGLVERTEXATTRIBL3DEXTPROC)load("glVertexAttribL3dEXT"); - glad_glVertexAttribL4dEXT = (PFNGLVERTEXATTRIBL4DEXTPROC)load("glVertexAttribL4dEXT"); - glad_glVertexAttribL1dvEXT = (PFNGLVERTEXATTRIBL1DVEXTPROC)load("glVertexAttribL1dvEXT"); - glad_glVertexAttribL2dvEXT = (PFNGLVERTEXATTRIBL2DVEXTPROC)load("glVertexAttribL2dvEXT"); - glad_glVertexAttribL3dvEXT = (PFNGLVERTEXATTRIBL3DVEXTPROC)load("glVertexAttribL3dvEXT"); - glad_glVertexAttribL4dvEXT = (PFNGLVERTEXATTRIBL4DVEXTPROC)load("glVertexAttribL4dvEXT"); - glad_glVertexAttribLPointerEXT = (PFNGLVERTEXATTRIBLPOINTEREXTPROC)load("glVertexAttribLPointerEXT"); - glad_glGetVertexAttribLdvEXT = (PFNGLGETVERTEXATTRIBLDVEXTPROC)load("glGetVertexAttribLdvEXT"); -} -static void load_GL_OES_query_matrix(GLADloadproc load) { - if(!GLAD_GL_OES_query_matrix) return; - glad_glQueryMatrixxOES = (PFNGLQUERYMATRIXXOESPROC)load("glQueryMatrixxOES"); -} -static void load_GL_MESA_window_pos(GLADloadproc load) { - if(!GLAD_GL_MESA_window_pos) return; - glad_glWindowPos2dMESA = (PFNGLWINDOWPOS2DMESAPROC)load("glWindowPos2dMESA"); - glad_glWindowPos2dvMESA = (PFNGLWINDOWPOS2DVMESAPROC)load("glWindowPos2dvMESA"); - glad_glWindowPos2fMESA = (PFNGLWINDOWPOS2FMESAPROC)load("glWindowPos2fMESA"); - glad_glWindowPos2fvMESA = (PFNGLWINDOWPOS2FVMESAPROC)load("glWindowPos2fvMESA"); - glad_glWindowPos2iMESA = (PFNGLWINDOWPOS2IMESAPROC)load("glWindowPos2iMESA"); - glad_glWindowPos2ivMESA = (PFNGLWINDOWPOS2IVMESAPROC)load("glWindowPos2ivMESA"); - glad_glWindowPos2sMESA = (PFNGLWINDOWPOS2SMESAPROC)load("glWindowPos2sMESA"); - glad_glWindowPos2svMESA = (PFNGLWINDOWPOS2SVMESAPROC)load("glWindowPos2svMESA"); - glad_glWindowPos3dMESA = (PFNGLWINDOWPOS3DMESAPROC)load("glWindowPos3dMESA"); - glad_glWindowPos3dvMESA = (PFNGLWINDOWPOS3DVMESAPROC)load("glWindowPos3dvMESA"); - glad_glWindowPos3fMESA = (PFNGLWINDOWPOS3FMESAPROC)load("glWindowPos3fMESA"); - glad_glWindowPos3fvMESA = (PFNGLWINDOWPOS3FVMESAPROC)load("glWindowPos3fvMESA"); - glad_glWindowPos3iMESA = (PFNGLWINDOWPOS3IMESAPROC)load("glWindowPos3iMESA"); - glad_glWindowPos3ivMESA = (PFNGLWINDOWPOS3IVMESAPROC)load("glWindowPos3ivMESA"); - glad_glWindowPos3sMESA = (PFNGLWINDOWPOS3SMESAPROC)load("glWindowPos3sMESA"); - glad_glWindowPos3svMESA = (PFNGLWINDOWPOS3SVMESAPROC)load("glWindowPos3svMESA"); - glad_glWindowPos4dMESA = (PFNGLWINDOWPOS4DMESAPROC)load("glWindowPos4dMESA"); - glad_glWindowPos4dvMESA = (PFNGLWINDOWPOS4DVMESAPROC)load("glWindowPos4dvMESA"); - glad_glWindowPos4fMESA = (PFNGLWINDOWPOS4FMESAPROC)load("glWindowPos4fMESA"); - glad_glWindowPos4fvMESA = (PFNGLWINDOWPOS4FVMESAPROC)load("glWindowPos4fvMESA"); - glad_glWindowPos4iMESA = (PFNGLWINDOWPOS4IMESAPROC)load("glWindowPos4iMESA"); - glad_glWindowPos4ivMESA = (PFNGLWINDOWPOS4IVMESAPROC)load("glWindowPos4ivMESA"); - glad_glWindowPos4sMESA = (PFNGLWINDOWPOS4SMESAPROC)load("glWindowPos4sMESA"); - glad_glWindowPos4svMESA = (PFNGLWINDOWPOS4SVMESAPROC)load("glWindowPos4svMESA"); -} -static void load_GL_ARB_copy_buffer(GLADloadproc load) { - if(!GLAD_GL_ARB_copy_buffer) return; - glad_glCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)load("glCopyBufferSubData"); -} -static void load_GL_APPLE_object_purgeable(GLADloadproc load) { - if(!GLAD_GL_APPLE_object_purgeable) return; - glad_glObjectPurgeableAPPLE = (PFNGLOBJECTPURGEABLEAPPLEPROC)load("glObjectPurgeableAPPLE"); - glad_glObjectUnpurgeableAPPLE = (PFNGLOBJECTUNPURGEABLEAPPLEPROC)load("glObjectUnpurgeableAPPLE"); - glad_glGetObjectParameterivAPPLE = (PFNGLGETOBJECTPARAMETERIVAPPLEPROC)load("glGetObjectParameterivAPPLE"); -} -static void load_GL_ARB_occlusion_query(GLADloadproc load) { - if(!GLAD_GL_ARB_occlusion_query) return; - glad_glGenQueriesARB = (PFNGLGENQUERIESARBPROC)load("glGenQueriesARB"); - glad_glDeleteQueriesARB = (PFNGLDELETEQUERIESARBPROC)load("glDeleteQueriesARB"); - glad_glIsQueryARB = (PFNGLISQUERYARBPROC)load("glIsQueryARB"); - glad_glBeginQueryARB = (PFNGLBEGINQUERYARBPROC)load("glBeginQueryARB"); - glad_glEndQueryARB = (PFNGLENDQUERYARBPROC)load("glEndQueryARB"); - glad_glGetQueryivARB = (PFNGLGETQUERYIVARBPROC)load("glGetQueryivARB"); - glad_glGetQueryObjectivARB = (PFNGLGETQUERYOBJECTIVARBPROC)load("glGetQueryObjectivARB"); - glad_glGetQueryObjectuivARB = (PFNGLGETQUERYOBJECTUIVARBPROC)load("glGetQueryObjectuivARB"); -} -static void load_GL_SGI_color_table(GLADloadproc load) { - if(!GLAD_GL_SGI_color_table) return; - glad_glColorTableSGI = (PFNGLCOLORTABLESGIPROC)load("glColorTableSGI"); - glad_glColorTableParameterfvSGI = (PFNGLCOLORTABLEPARAMETERFVSGIPROC)load("glColorTableParameterfvSGI"); - glad_glColorTableParameterivSGI = (PFNGLCOLORTABLEPARAMETERIVSGIPROC)load("glColorTableParameterivSGI"); - glad_glCopyColorTableSGI = (PFNGLCOPYCOLORTABLESGIPROC)load("glCopyColorTableSGI"); - glad_glGetColorTableSGI = (PFNGLGETCOLORTABLESGIPROC)load("glGetColorTableSGI"); - glad_glGetColorTableParameterfvSGI = (PFNGLGETCOLORTABLEPARAMETERFVSGIPROC)load("glGetColorTableParameterfvSGI"); - glad_glGetColorTableParameterivSGI = (PFNGLGETCOLORTABLEPARAMETERIVSGIPROC)load("glGetColorTableParameterivSGI"); -} -static void load_GL_EXT_gpu_shader4(GLADloadproc load) { - if(!GLAD_GL_EXT_gpu_shader4) return; - glad_glGetUniformuivEXT = (PFNGLGETUNIFORMUIVEXTPROC)load("glGetUniformuivEXT"); - glad_glBindFragDataLocationEXT = (PFNGLBINDFRAGDATALOCATIONEXTPROC)load("glBindFragDataLocationEXT"); - glad_glGetFragDataLocationEXT = (PFNGLGETFRAGDATALOCATIONEXTPROC)load("glGetFragDataLocationEXT"); - glad_glUniform1uiEXT = (PFNGLUNIFORM1UIEXTPROC)load("glUniform1uiEXT"); - glad_glUniform2uiEXT = (PFNGLUNIFORM2UIEXTPROC)load("glUniform2uiEXT"); - glad_glUniform3uiEXT = (PFNGLUNIFORM3UIEXTPROC)load("glUniform3uiEXT"); - glad_glUniform4uiEXT = (PFNGLUNIFORM4UIEXTPROC)load("glUniform4uiEXT"); - glad_glUniform1uivEXT = (PFNGLUNIFORM1UIVEXTPROC)load("glUniform1uivEXT"); - glad_glUniform2uivEXT = (PFNGLUNIFORM2UIVEXTPROC)load("glUniform2uivEXT"); - glad_glUniform3uivEXT = (PFNGLUNIFORM3UIVEXTPROC)load("glUniform3uivEXT"); - glad_glUniform4uivEXT = (PFNGLUNIFORM4UIVEXTPROC)load("glUniform4uivEXT"); -} -static void load_GL_NV_geometry_program4(GLADloadproc load) { - if(!GLAD_GL_NV_geometry_program4) return; - glad_glProgramVertexLimitNV = (PFNGLPROGRAMVERTEXLIMITNVPROC)load("glProgramVertexLimitNV"); - glad_glFramebufferTextureEXT = (PFNGLFRAMEBUFFERTEXTUREEXTPROC)load("glFramebufferTextureEXT"); - glad_glFramebufferTextureLayerEXT = (PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC)load("glFramebufferTextureLayerEXT"); - glad_glFramebufferTextureFaceEXT = (PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC)load("glFramebufferTextureFaceEXT"); -} -static void load_GL_AMD_debug_output(GLADloadproc load) { - if(!GLAD_GL_AMD_debug_output) return; - glad_glDebugMessageEnableAMD = (PFNGLDEBUGMESSAGEENABLEAMDPROC)load("glDebugMessageEnableAMD"); - glad_glDebugMessageInsertAMD = (PFNGLDEBUGMESSAGEINSERTAMDPROC)load("glDebugMessageInsertAMD"); - glad_glDebugMessageCallbackAMD = (PFNGLDEBUGMESSAGECALLBACKAMDPROC)load("glDebugMessageCallbackAMD"); - glad_glGetDebugMessageLogAMD = (PFNGLGETDEBUGMESSAGELOGAMDPROC)load("glGetDebugMessageLogAMD"); -} -static void load_GL_ARB_multitexture(GLADloadproc load) { - if(!GLAD_GL_ARB_multitexture) return; - glad_glActiveTextureARB = (PFNGLACTIVETEXTUREARBPROC)load("glActiveTextureARB"); - glad_glClientActiveTextureARB = (PFNGLCLIENTACTIVETEXTUREARBPROC)load("glClientActiveTextureARB"); - glad_glMultiTexCoord1dARB = (PFNGLMULTITEXCOORD1DARBPROC)load("glMultiTexCoord1dARB"); - glad_glMultiTexCoord1dvARB = (PFNGLMULTITEXCOORD1DVARBPROC)load("glMultiTexCoord1dvARB"); - glad_glMultiTexCoord1fARB = (PFNGLMULTITEXCOORD1FARBPROC)load("glMultiTexCoord1fARB"); - glad_glMultiTexCoord1fvARB = (PFNGLMULTITEXCOORD1FVARBPROC)load("glMultiTexCoord1fvARB"); - glad_glMultiTexCoord1iARB = (PFNGLMULTITEXCOORD1IARBPROC)load("glMultiTexCoord1iARB"); - glad_glMultiTexCoord1ivARB = (PFNGLMULTITEXCOORD1IVARBPROC)load("glMultiTexCoord1ivARB"); - glad_glMultiTexCoord1sARB = (PFNGLMULTITEXCOORD1SARBPROC)load("glMultiTexCoord1sARB"); - glad_glMultiTexCoord1svARB = (PFNGLMULTITEXCOORD1SVARBPROC)load("glMultiTexCoord1svARB"); - glad_glMultiTexCoord2dARB = (PFNGLMULTITEXCOORD2DARBPROC)load("glMultiTexCoord2dARB"); - glad_glMultiTexCoord2dvARB = (PFNGLMULTITEXCOORD2DVARBPROC)load("glMultiTexCoord2dvARB"); - glad_glMultiTexCoord2fARB = (PFNGLMULTITEXCOORD2FARBPROC)load("glMultiTexCoord2fARB"); - glad_glMultiTexCoord2fvARB = (PFNGLMULTITEXCOORD2FVARBPROC)load("glMultiTexCoord2fvARB"); - glad_glMultiTexCoord2iARB = (PFNGLMULTITEXCOORD2IARBPROC)load("glMultiTexCoord2iARB"); - glad_glMultiTexCoord2ivARB = (PFNGLMULTITEXCOORD2IVARBPROC)load("glMultiTexCoord2ivARB"); - glad_glMultiTexCoord2sARB = (PFNGLMULTITEXCOORD2SARBPROC)load("glMultiTexCoord2sARB"); - glad_glMultiTexCoord2svARB = (PFNGLMULTITEXCOORD2SVARBPROC)load("glMultiTexCoord2svARB"); - glad_glMultiTexCoord3dARB = (PFNGLMULTITEXCOORD3DARBPROC)load("glMultiTexCoord3dARB"); - glad_glMultiTexCoord3dvARB = (PFNGLMULTITEXCOORD3DVARBPROC)load("glMultiTexCoord3dvARB"); - glad_glMultiTexCoord3fARB = (PFNGLMULTITEXCOORD3FARBPROC)load("glMultiTexCoord3fARB"); - glad_glMultiTexCoord3fvARB = (PFNGLMULTITEXCOORD3FVARBPROC)load("glMultiTexCoord3fvARB"); - glad_glMultiTexCoord3iARB = (PFNGLMULTITEXCOORD3IARBPROC)load("glMultiTexCoord3iARB"); - glad_glMultiTexCoord3ivARB = (PFNGLMULTITEXCOORD3IVARBPROC)load("glMultiTexCoord3ivARB"); - glad_glMultiTexCoord3sARB = (PFNGLMULTITEXCOORD3SARBPROC)load("glMultiTexCoord3sARB"); - glad_glMultiTexCoord3svARB = (PFNGLMULTITEXCOORD3SVARBPROC)load("glMultiTexCoord3svARB"); - glad_glMultiTexCoord4dARB = (PFNGLMULTITEXCOORD4DARBPROC)load("glMultiTexCoord4dARB"); - glad_glMultiTexCoord4dvARB = (PFNGLMULTITEXCOORD4DVARBPROC)load("glMultiTexCoord4dvARB"); - glad_glMultiTexCoord4fARB = (PFNGLMULTITEXCOORD4FARBPROC)load("glMultiTexCoord4fARB"); - glad_glMultiTexCoord4fvARB = (PFNGLMULTITEXCOORD4FVARBPROC)load("glMultiTexCoord4fvARB"); - glad_glMultiTexCoord4iARB = (PFNGLMULTITEXCOORD4IARBPROC)load("glMultiTexCoord4iARB"); - glad_glMultiTexCoord4ivARB = (PFNGLMULTITEXCOORD4IVARBPROC)load("glMultiTexCoord4ivARB"); - glad_glMultiTexCoord4sARB = (PFNGLMULTITEXCOORD4SARBPROC)load("glMultiTexCoord4sARB"); - glad_glMultiTexCoord4svARB = (PFNGLMULTITEXCOORD4SVARBPROC)load("glMultiTexCoord4svARB"); -} -static void load_GL_SGIX_polynomial_ffd(GLADloadproc load) { - if(!GLAD_GL_SGIX_polynomial_ffd) return; - glad_glDeformationMap3dSGIX = (PFNGLDEFORMATIONMAP3DSGIXPROC)load("glDeformationMap3dSGIX"); - glad_glDeformationMap3fSGIX = (PFNGLDEFORMATIONMAP3FSGIXPROC)load("glDeformationMap3fSGIX"); - glad_glDeformSGIX = (PFNGLDEFORMSGIXPROC)load("glDeformSGIX"); - glad_glLoadIdentityDeformationMapSGIX = (PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC)load("glLoadIdentityDeformationMapSGIX"); -} -static void load_GL_EXT_provoking_vertex(GLADloadproc load) { - if(!GLAD_GL_EXT_provoking_vertex) return; - glad_glProvokingVertexEXT = (PFNGLPROVOKINGVERTEXEXTPROC)load("glProvokingVertexEXT"); -} -static void load_GL_ARB_point_parameters(GLADloadproc load) { - if(!GLAD_GL_ARB_point_parameters) return; - glad_glPointParameterfARB = (PFNGLPOINTPARAMETERFARBPROC)load("glPointParameterfARB"); - glad_glPointParameterfvARB = (PFNGLPOINTPARAMETERFVARBPROC)load("glPointParameterfvARB"); -} -static void load_GL_ARB_shader_image_load_store(GLADloadproc load) { - if(!GLAD_GL_ARB_shader_image_load_store) return; - glad_glBindImageTexture = (PFNGLBINDIMAGETEXTUREPROC)load("glBindImageTexture"); - glad_glMemoryBarrier = (PFNGLMEMORYBARRIERPROC)load("glMemoryBarrier"); -} -static void load_GL_ARB_texture_barrier(GLADloadproc load) { - if(!GLAD_GL_ARB_texture_barrier) return; - glad_glTextureBarrier = (PFNGLTEXTUREBARRIERPROC)load("glTextureBarrier"); -} -static void load_GL_NV_bindless_multi_draw_indirect(GLADloadproc load) { - if(!GLAD_GL_NV_bindless_multi_draw_indirect) return; - glad_glMultiDrawArraysIndirectBindlessNV = (PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC)load("glMultiDrawArraysIndirectBindlessNV"); - glad_glMultiDrawElementsIndirectBindlessNV = (PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC)load("glMultiDrawElementsIndirectBindlessNV"); -} -static void load_GL_EXT_transform_feedback(GLADloadproc load) { - if(!GLAD_GL_EXT_transform_feedback) return; - glad_glBeginTransformFeedbackEXT = (PFNGLBEGINTRANSFORMFEEDBACKEXTPROC)load("glBeginTransformFeedbackEXT"); - glad_glEndTransformFeedbackEXT = (PFNGLENDTRANSFORMFEEDBACKEXTPROC)load("glEndTransformFeedbackEXT"); - glad_glBindBufferRangeEXT = (PFNGLBINDBUFFERRANGEEXTPROC)load("glBindBufferRangeEXT"); - glad_glBindBufferOffsetEXT = (PFNGLBINDBUFFEROFFSETEXTPROC)load("glBindBufferOffsetEXT"); - glad_glBindBufferBaseEXT = (PFNGLBINDBUFFERBASEEXTPROC)load("glBindBufferBaseEXT"); - glad_glTransformFeedbackVaryingsEXT = (PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC)load("glTransformFeedbackVaryingsEXT"); - glad_glGetTransformFeedbackVaryingEXT = (PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC)load("glGetTransformFeedbackVaryingEXT"); -} -static void load_GL_NV_gpu_program4(GLADloadproc load) { - if(!GLAD_GL_NV_gpu_program4) return; - glad_glProgramLocalParameterI4iNV = (PFNGLPROGRAMLOCALPARAMETERI4INVPROC)load("glProgramLocalParameterI4iNV"); - glad_glProgramLocalParameterI4ivNV = (PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC)load("glProgramLocalParameterI4ivNV"); - glad_glProgramLocalParametersI4ivNV = (PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC)load("glProgramLocalParametersI4ivNV"); - glad_glProgramLocalParameterI4uiNV = (PFNGLPROGRAMLOCALPARAMETERI4UINVPROC)load("glProgramLocalParameterI4uiNV"); - glad_glProgramLocalParameterI4uivNV = (PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC)load("glProgramLocalParameterI4uivNV"); - glad_glProgramLocalParametersI4uivNV = (PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC)load("glProgramLocalParametersI4uivNV"); - glad_glProgramEnvParameterI4iNV = (PFNGLPROGRAMENVPARAMETERI4INVPROC)load("glProgramEnvParameterI4iNV"); - glad_glProgramEnvParameterI4ivNV = (PFNGLPROGRAMENVPARAMETERI4IVNVPROC)load("glProgramEnvParameterI4ivNV"); - glad_glProgramEnvParametersI4ivNV = (PFNGLPROGRAMENVPARAMETERSI4IVNVPROC)load("glProgramEnvParametersI4ivNV"); - glad_glProgramEnvParameterI4uiNV = (PFNGLPROGRAMENVPARAMETERI4UINVPROC)load("glProgramEnvParameterI4uiNV"); - glad_glProgramEnvParameterI4uivNV = (PFNGLPROGRAMENVPARAMETERI4UIVNVPROC)load("glProgramEnvParameterI4uivNV"); - glad_glProgramEnvParametersI4uivNV = (PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC)load("glProgramEnvParametersI4uivNV"); - glad_glGetProgramLocalParameterIivNV = (PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC)load("glGetProgramLocalParameterIivNV"); - glad_glGetProgramLocalParameterIuivNV = (PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC)load("glGetProgramLocalParameterIuivNV"); - glad_glGetProgramEnvParameterIivNV = (PFNGLGETPROGRAMENVPARAMETERIIVNVPROC)load("glGetProgramEnvParameterIivNV"); - glad_glGetProgramEnvParameterIuivNV = (PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC)load("glGetProgramEnvParameterIuivNV"); -} -static void load_GL_NV_gpu_program5(GLADloadproc load) { - if(!GLAD_GL_NV_gpu_program5) return; - glad_glProgramSubroutineParametersuivNV = (PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC)load("glProgramSubroutineParametersuivNV"); - glad_glGetProgramSubroutineParameteruivNV = (PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC)load("glGetProgramSubroutineParameteruivNV"); -} -static void load_GL_ARB_geometry_shader4(GLADloadproc load) { - if(!GLAD_GL_ARB_geometry_shader4) return; - glad_glProgramParameteriARB = (PFNGLPROGRAMPARAMETERIARBPROC)load("glProgramParameteriARB"); - glad_glFramebufferTextureARB = (PFNGLFRAMEBUFFERTEXTUREARBPROC)load("glFramebufferTextureARB"); - glad_glFramebufferTextureLayerARB = (PFNGLFRAMEBUFFERTEXTURELAYERARBPROC)load("glFramebufferTextureLayerARB"); - glad_glFramebufferTextureFaceARB = (PFNGLFRAMEBUFFERTEXTUREFACEARBPROC)load("glFramebufferTextureFaceARB"); -} -static void load_GL_NV_conservative_raster(GLADloadproc load) { - if(!GLAD_GL_NV_conservative_raster) return; - glad_glSubpixelPrecisionBiasNV = (PFNGLSUBPIXELPRECISIONBIASNVPROC)load("glSubpixelPrecisionBiasNV"); -} -static void load_GL_SGIX_sprite(GLADloadproc load) { - if(!GLAD_GL_SGIX_sprite) return; - glad_glSpriteParameterfSGIX = (PFNGLSPRITEPARAMETERFSGIXPROC)load("glSpriteParameterfSGIX"); - glad_glSpriteParameterfvSGIX = (PFNGLSPRITEPARAMETERFVSGIXPROC)load("glSpriteParameterfvSGIX"); - glad_glSpriteParameteriSGIX = (PFNGLSPRITEPARAMETERISGIXPROC)load("glSpriteParameteriSGIX"); - glad_glSpriteParameterivSGIX = (PFNGLSPRITEPARAMETERIVSGIXPROC)load("glSpriteParameterivSGIX"); -} -static void load_GL_ARB_get_program_binary(GLADloadproc load) { - if(!GLAD_GL_ARB_get_program_binary) return; - glad_glGetProgramBinary = (PFNGLGETPROGRAMBINARYPROC)load("glGetProgramBinary"); - glad_glProgramBinary = (PFNGLPROGRAMBINARYPROC)load("glProgramBinary"); - glad_glProgramParameteri = (PFNGLPROGRAMPARAMETERIPROC)load("glProgramParameteri"); -} -static void load_GL_AMD_occlusion_query_event(GLADloadproc load) { - if(!GLAD_GL_AMD_occlusion_query_event) return; - glad_glQueryObjectParameteruiAMD = (PFNGLQUERYOBJECTPARAMETERUIAMDPROC)load("glQueryObjectParameteruiAMD"); -} -static void load_GL_SGIS_multisample(GLADloadproc load) { - if(!GLAD_GL_SGIS_multisample) return; - glad_glSampleMaskSGIS = (PFNGLSAMPLEMASKSGISPROC)load("glSampleMaskSGIS"); - glad_glSamplePatternSGIS = (PFNGLSAMPLEPATTERNSGISPROC)load("glSamplePatternSGIS"); -} -static void load_GL_EXT_framebuffer_object(GLADloadproc load) { - if(!GLAD_GL_EXT_framebuffer_object) return; - glad_glIsRenderbufferEXT = (PFNGLISRENDERBUFFEREXTPROC)load("glIsRenderbufferEXT"); - glad_glBindRenderbufferEXT = (PFNGLBINDRENDERBUFFEREXTPROC)load("glBindRenderbufferEXT"); - glad_glDeleteRenderbuffersEXT = (PFNGLDELETERENDERBUFFERSEXTPROC)load("glDeleteRenderbuffersEXT"); - glad_glGenRenderbuffersEXT = (PFNGLGENRENDERBUFFERSEXTPROC)load("glGenRenderbuffersEXT"); - glad_glRenderbufferStorageEXT = (PFNGLRENDERBUFFERSTORAGEEXTPROC)load("glRenderbufferStorageEXT"); - glad_glGetRenderbufferParameterivEXT = (PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC)load("glGetRenderbufferParameterivEXT"); - glad_glIsFramebufferEXT = (PFNGLISFRAMEBUFFEREXTPROC)load("glIsFramebufferEXT"); - glad_glBindFramebufferEXT = (PFNGLBINDFRAMEBUFFEREXTPROC)load("glBindFramebufferEXT"); - glad_glDeleteFramebuffersEXT = (PFNGLDELETEFRAMEBUFFERSEXTPROC)load("glDeleteFramebuffersEXT"); - glad_glGenFramebuffersEXT = (PFNGLGENFRAMEBUFFERSEXTPROC)load("glGenFramebuffersEXT"); - glad_glCheckFramebufferStatusEXT = (PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC)load("glCheckFramebufferStatusEXT"); - glad_glFramebufferTexture1DEXT = (PFNGLFRAMEBUFFERTEXTURE1DEXTPROC)load("glFramebufferTexture1DEXT"); - glad_glFramebufferTexture2DEXT = (PFNGLFRAMEBUFFERTEXTURE2DEXTPROC)load("glFramebufferTexture2DEXT"); - glad_glFramebufferTexture3DEXT = (PFNGLFRAMEBUFFERTEXTURE3DEXTPROC)load("glFramebufferTexture3DEXT"); - glad_glFramebufferRenderbufferEXT = (PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC)load("glFramebufferRenderbufferEXT"); - glad_glGetFramebufferAttachmentParameterivEXT = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)load("glGetFramebufferAttachmentParameterivEXT"); - glad_glGenerateMipmapEXT = (PFNGLGENERATEMIPMAPEXTPROC)load("glGenerateMipmapEXT"); -} -static void load_GL_APPLE_vertex_array_range(GLADloadproc load) { - if(!GLAD_GL_APPLE_vertex_array_range) return; - glad_glVertexArrayRangeAPPLE = (PFNGLVERTEXARRAYRANGEAPPLEPROC)load("glVertexArrayRangeAPPLE"); - glad_glFlushVertexArrayRangeAPPLE = (PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC)load("glFlushVertexArrayRangeAPPLE"); - glad_glVertexArrayParameteriAPPLE = (PFNGLVERTEXARRAYPARAMETERIAPPLEPROC)load("glVertexArrayParameteriAPPLE"); -} -static void load_GL_NV_register_combiners(GLADloadproc load) { - if(!GLAD_GL_NV_register_combiners) return; - glad_glCombinerParameterfvNV = (PFNGLCOMBINERPARAMETERFVNVPROC)load("glCombinerParameterfvNV"); - glad_glCombinerParameterfNV = (PFNGLCOMBINERPARAMETERFNVPROC)load("glCombinerParameterfNV"); - glad_glCombinerParameterivNV = (PFNGLCOMBINERPARAMETERIVNVPROC)load("glCombinerParameterivNV"); - glad_glCombinerParameteriNV = (PFNGLCOMBINERPARAMETERINVPROC)load("glCombinerParameteriNV"); - glad_glCombinerInputNV = (PFNGLCOMBINERINPUTNVPROC)load("glCombinerInputNV"); - glad_glCombinerOutputNV = (PFNGLCOMBINEROUTPUTNVPROC)load("glCombinerOutputNV"); - glad_glFinalCombinerInputNV = (PFNGLFINALCOMBINERINPUTNVPROC)load("glFinalCombinerInputNV"); - glad_glGetCombinerInputParameterfvNV = (PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC)load("glGetCombinerInputParameterfvNV"); - glad_glGetCombinerInputParameterivNV = (PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC)load("glGetCombinerInputParameterivNV"); - glad_glGetCombinerOutputParameterfvNV = (PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC)load("glGetCombinerOutputParameterfvNV"); - glad_glGetCombinerOutputParameterivNV = (PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC)load("glGetCombinerOutputParameterivNV"); - glad_glGetFinalCombinerInputParameterfvNV = (PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC)load("glGetFinalCombinerInputParameterfvNV"); - glad_glGetFinalCombinerInputParameterivNV = (PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC)load("glGetFinalCombinerInputParameterivNV"); -} -static void load_GL_ARB_draw_buffers(GLADloadproc load) { - if(!GLAD_GL_ARB_draw_buffers) return; - glad_glDrawBuffersARB = (PFNGLDRAWBUFFERSARBPROC)load("glDrawBuffersARB"); -} -static void load_GL_ARB_clear_texture(GLADloadproc load) { - if(!GLAD_GL_ARB_clear_texture) return; - glad_glClearTexImage = (PFNGLCLEARTEXIMAGEPROC)load("glClearTexImage"); - glad_glClearTexSubImage = (PFNGLCLEARTEXSUBIMAGEPROC)load("glClearTexSubImage"); -} -static void load_GL_ARB_debug_output(GLADloadproc load) { - if(!GLAD_GL_ARB_debug_output) return; - glad_glDebugMessageControlARB = (PFNGLDEBUGMESSAGECONTROLARBPROC)load("glDebugMessageControlARB"); - glad_glDebugMessageInsertARB = (PFNGLDEBUGMESSAGEINSERTARBPROC)load("glDebugMessageInsertARB"); - glad_glDebugMessageCallbackARB = (PFNGLDEBUGMESSAGECALLBACKARBPROC)load("glDebugMessageCallbackARB"); - glad_glGetDebugMessageLogARB = (PFNGLGETDEBUGMESSAGELOGARBPROC)load("glGetDebugMessageLogARB"); -} -static void load_GL_EXT_cull_vertex(GLADloadproc load) { - if(!GLAD_GL_EXT_cull_vertex) return; - glad_glCullParameterdvEXT = (PFNGLCULLPARAMETERDVEXTPROC)load("glCullParameterdvEXT"); - glad_glCullParameterfvEXT = (PFNGLCULLPARAMETERFVEXTPROC)load("glCullParameterfvEXT"); -} -static void load_GL_IBM_multimode_draw_arrays(GLADloadproc load) { - if(!GLAD_GL_IBM_multimode_draw_arrays) return; - glad_glMultiModeDrawArraysIBM = (PFNGLMULTIMODEDRAWARRAYSIBMPROC)load("glMultiModeDrawArraysIBM"); - glad_glMultiModeDrawElementsIBM = (PFNGLMULTIMODEDRAWELEMENTSIBMPROC)load("glMultiModeDrawElementsIBM"); -} -static void load_GL_APPLE_vertex_array_object(GLADloadproc load) { - if(!GLAD_GL_APPLE_vertex_array_object) return; - glad_glBindVertexArrayAPPLE = (PFNGLBINDVERTEXARRAYAPPLEPROC)load("glBindVertexArrayAPPLE"); - glad_glDeleteVertexArraysAPPLE = (PFNGLDELETEVERTEXARRAYSAPPLEPROC)load("glDeleteVertexArraysAPPLE"); - glad_glGenVertexArraysAPPLE = (PFNGLGENVERTEXARRAYSAPPLEPROC)load("glGenVertexArraysAPPLE"); - glad_glIsVertexArrayAPPLE = (PFNGLISVERTEXARRAYAPPLEPROC)load("glIsVertexArrayAPPLE"); -} -static void load_GL_SGIS_detail_texture(GLADloadproc load) { - if(!GLAD_GL_SGIS_detail_texture) return; - glad_glDetailTexFuncSGIS = (PFNGLDETAILTEXFUNCSGISPROC)load("glDetailTexFuncSGIS"); - glad_glGetDetailTexFuncSGIS = (PFNGLGETDETAILTEXFUNCSGISPROC)load("glGetDetailTexFuncSGIS"); -} -static void load_GL_ARB_draw_instanced(GLADloadproc load) { - if(!GLAD_GL_ARB_draw_instanced) return; - glad_glDrawArraysInstancedARB = (PFNGLDRAWARRAYSINSTANCEDARBPROC)load("glDrawArraysInstancedARB"); - glad_glDrawElementsInstancedARB = (PFNGLDRAWELEMENTSINSTANCEDARBPROC)load("glDrawElementsInstancedARB"); -} -static void load_GL_ARB_shading_language_include(GLADloadproc load) { - if(!GLAD_GL_ARB_shading_language_include) return; - glad_glNamedStringARB = (PFNGLNAMEDSTRINGARBPROC)load("glNamedStringARB"); - glad_glDeleteNamedStringARB = (PFNGLDELETENAMEDSTRINGARBPROC)load("glDeleteNamedStringARB"); - glad_glCompileShaderIncludeARB = (PFNGLCOMPILESHADERINCLUDEARBPROC)load("glCompileShaderIncludeARB"); - glad_glIsNamedStringARB = (PFNGLISNAMEDSTRINGARBPROC)load("glIsNamedStringARB"); - glad_glGetNamedStringARB = (PFNGLGETNAMEDSTRINGARBPROC)load("glGetNamedStringARB"); - glad_glGetNamedStringivARB = (PFNGLGETNAMEDSTRINGIVARBPROC)load("glGetNamedStringivARB"); -} -static void load_GL_INGR_blend_func_separate(GLADloadproc load) { - if(!GLAD_GL_INGR_blend_func_separate) return; - glad_glBlendFuncSeparateINGR = (PFNGLBLENDFUNCSEPARATEINGRPROC)load("glBlendFuncSeparateINGR"); -} -static void load_GL_NV_path_rendering(GLADloadproc load) { - if(!GLAD_GL_NV_path_rendering) return; - glad_glGenPathsNV = (PFNGLGENPATHSNVPROC)load("glGenPathsNV"); - glad_glDeletePathsNV = (PFNGLDELETEPATHSNVPROC)load("glDeletePathsNV"); - glad_glIsPathNV = (PFNGLISPATHNVPROC)load("glIsPathNV"); - glad_glPathCommandsNV = (PFNGLPATHCOMMANDSNVPROC)load("glPathCommandsNV"); - glad_glPathCoordsNV = (PFNGLPATHCOORDSNVPROC)load("glPathCoordsNV"); - glad_glPathSubCommandsNV = (PFNGLPATHSUBCOMMANDSNVPROC)load("glPathSubCommandsNV"); - glad_glPathSubCoordsNV = (PFNGLPATHSUBCOORDSNVPROC)load("glPathSubCoordsNV"); - glad_glPathStringNV = (PFNGLPATHSTRINGNVPROC)load("glPathStringNV"); - glad_glPathGlyphsNV = (PFNGLPATHGLYPHSNVPROC)load("glPathGlyphsNV"); - glad_glPathGlyphRangeNV = (PFNGLPATHGLYPHRANGENVPROC)load("glPathGlyphRangeNV"); - glad_glWeightPathsNV = (PFNGLWEIGHTPATHSNVPROC)load("glWeightPathsNV"); - glad_glCopyPathNV = (PFNGLCOPYPATHNVPROC)load("glCopyPathNV"); - glad_glInterpolatePathsNV = (PFNGLINTERPOLATEPATHSNVPROC)load("glInterpolatePathsNV"); - glad_glTransformPathNV = (PFNGLTRANSFORMPATHNVPROC)load("glTransformPathNV"); - glad_glPathParameterivNV = (PFNGLPATHPARAMETERIVNVPROC)load("glPathParameterivNV"); - glad_glPathParameteriNV = (PFNGLPATHPARAMETERINVPROC)load("glPathParameteriNV"); - glad_glPathParameterfvNV = (PFNGLPATHPARAMETERFVNVPROC)load("glPathParameterfvNV"); - glad_glPathParameterfNV = (PFNGLPATHPARAMETERFNVPROC)load("glPathParameterfNV"); - glad_glPathDashArrayNV = (PFNGLPATHDASHARRAYNVPROC)load("glPathDashArrayNV"); - glad_glPathStencilFuncNV = (PFNGLPATHSTENCILFUNCNVPROC)load("glPathStencilFuncNV"); - glad_glPathStencilDepthOffsetNV = (PFNGLPATHSTENCILDEPTHOFFSETNVPROC)load("glPathStencilDepthOffsetNV"); - glad_glStencilFillPathNV = (PFNGLSTENCILFILLPATHNVPROC)load("glStencilFillPathNV"); - glad_glStencilStrokePathNV = (PFNGLSTENCILSTROKEPATHNVPROC)load("glStencilStrokePathNV"); - glad_glStencilFillPathInstancedNV = (PFNGLSTENCILFILLPATHINSTANCEDNVPROC)load("glStencilFillPathInstancedNV"); - glad_glStencilStrokePathInstancedNV = (PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC)load("glStencilStrokePathInstancedNV"); - glad_glPathCoverDepthFuncNV = (PFNGLPATHCOVERDEPTHFUNCNVPROC)load("glPathCoverDepthFuncNV"); - glad_glCoverFillPathNV = (PFNGLCOVERFILLPATHNVPROC)load("glCoverFillPathNV"); - glad_glCoverStrokePathNV = (PFNGLCOVERSTROKEPATHNVPROC)load("glCoverStrokePathNV"); - glad_glCoverFillPathInstancedNV = (PFNGLCOVERFILLPATHINSTANCEDNVPROC)load("glCoverFillPathInstancedNV"); - glad_glCoverStrokePathInstancedNV = (PFNGLCOVERSTROKEPATHINSTANCEDNVPROC)load("glCoverStrokePathInstancedNV"); - glad_glGetPathParameterivNV = (PFNGLGETPATHPARAMETERIVNVPROC)load("glGetPathParameterivNV"); - glad_glGetPathParameterfvNV = (PFNGLGETPATHPARAMETERFVNVPROC)load("glGetPathParameterfvNV"); - glad_glGetPathCommandsNV = (PFNGLGETPATHCOMMANDSNVPROC)load("glGetPathCommandsNV"); - glad_glGetPathCoordsNV = (PFNGLGETPATHCOORDSNVPROC)load("glGetPathCoordsNV"); - glad_glGetPathDashArrayNV = (PFNGLGETPATHDASHARRAYNVPROC)load("glGetPathDashArrayNV"); - glad_glGetPathMetricsNV = (PFNGLGETPATHMETRICSNVPROC)load("glGetPathMetricsNV"); - glad_glGetPathMetricRangeNV = (PFNGLGETPATHMETRICRANGENVPROC)load("glGetPathMetricRangeNV"); - glad_glGetPathSpacingNV = (PFNGLGETPATHSPACINGNVPROC)load("glGetPathSpacingNV"); - glad_glIsPointInFillPathNV = (PFNGLISPOINTINFILLPATHNVPROC)load("glIsPointInFillPathNV"); - glad_glIsPointInStrokePathNV = (PFNGLISPOINTINSTROKEPATHNVPROC)load("glIsPointInStrokePathNV"); - glad_glGetPathLengthNV = (PFNGLGETPATHLENGTHNVPROC)load("glGetPathLengthNV"); - glad_glPointAlongPathNV = (PFNGLPOINTALONGPATHNVPROC)load("glPointAlongPathNV"); - glad_glMatrixLoad3x2fNV = (PFNGLMATRIXLOAD3X2FNVPROC)load("glMatrixLoad3x2fNV"); - glad_glMatrixLoad3x3fNV = (PFNGLMATRIXLOAD3X3FNVPROC)load("glMatrixLoad3x3fNV"); - glad_glMatrixLoadTranspose3x3fNV = (PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC)load("glMatrixLoadTranspose3x3fNV"); - glad_glMatrixMult3x2fNV = (PFNGLMATRIXMULT3X2FNVPROC)load("glMatrixMult3x2fNV"); - glad_glMatrixMult3x3fNV = (PFNGLMATRIXMULT3X3FNVPROC)load("glMatrixMult3x3fNV"); - glad_glMatrixMultTranspose3x3fNV = (PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC)load("glMatrixMultTranspose3x3fNV"); - glad_glStencilThenCoverFillPathNV = (PFNGLSTENCILTHENCOVERFILLPATHNVPROC)load("glStencilThenCoverFillPathNV"); - glad_glStencilThenCoverStrokePathNV = (PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC)load("glStencilThenCoverStrokePathNV"); - glad_glStencilThenCoverFillPathInstancedNV = (PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC)load("glStencilThenCoverFillPathInstancedNV"); - glad_glStencilThenCoverStrokePathInstancedNV = (PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC)load("glStencilThenCoverStrokePathInstancedNV"); - glad_glPathGlyphIndexRangeNV = (PFNGLPATHGLYPHINDEXRANGENVPROC)load("glPathGlyphIndexRangeNV"); - glad_glPathGlyphIndexArrayNV = (PFNGLPATHGLYPHINDEXARRAYNVPROC)load("glPathGlyphIndexArrayNV"); - glad_glPathMemoryGlyphIndexArrayNV = (PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC)load("glPathMemoryGlyphIndexArrayNV"); - glad_glProgramPathFragmentInputGenNV = (PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC)load("glProgramPathFragmentInputGenNV"); - glad_glGetProgramResourcefvNV = (PFNGLGETPROGRAMRESOURCEFVNVPROC)load("glGetProgramResourcefvNV"); - glad_glPathColorGenNV = (PFNGLPATHCOLORGENNVPROC)load("glPathColorGenNV"); - glad_glPathTexGenNV = (PFNGLPATHTEXGENNVPROC)load("glPathTexGenNV"); - glad_glPathFogGenNV = (PFNGLPATHFOGGENNVPROC)load("glPathFogGenNV"); - glad_glGetPathColorGenivNV = (PFNGLGETPATHCOLORGENIVNVPROC)load("glGetPathColorGenivNV"); - glad_glGetPathColorGenfvNV = (PFNGLGETPATHCOLORGENFVNVPROC)load("glGetPathColorGenfvNV"); - glad_glGetPathTexGenivNV = (PFNGLGETPATHTEXGENIVNVPROC)load("glGetPathTexGenivNV"); - glad_glGetPathTexGenfvNV = (PFNGLGETPATHTEXGENFVNVPROC)load("glGetPathTexGenfvNV"); -} -static void load_GL_NV_conservative_raster_dilate(GLADloadproc load) { - if(!GLAD_GL_NV_conservative_raster_dilate) return; - glad_glConservativeRasterParameterfNV = (PFNGLCONSERVATIVERASTERPARAMETERFNVPROC)load("glConservativeRasterParameterfNV"); -} -static void load_GL_ATI_vertex_streams(GLADloadproc load) { - if(!GLAD_GL_ATI_vertex_streams) return; - glad_glVertexStream1sATI = (PFNGLVERTEXSTREAM1SATIPROC)load("glVertexStream1sATI"); - glad_glVertexStream1svATI = (PFNGLVERTEXSTREAM1SVATIPROC)load("glVertexStream1svATI"); - glad_glVertexStream1iATI = (PFNGLVERTEXSTREAM1IATIPROC)load("glVertexStream1iATI"); - glad_glVertexStream1ivATI = (PFNGLVERTEXSTREAM1IVATIPROC)load("glVertexStream1ivATI"); - glad_glVertexStream1fATI = (PFNGLVERTEXSTREAM1FATIPROC)load("glVertexStream1fATI"); - glad_glVertexStream1fvATI = (PFNGLVERTEXSTREAM1FVATIPROC)load("glVertexStream1fvATI"); - glad_glVertexStream1dATI = (PFNGLVERTEXSTREAM1DATIPROC)load("glVertexStream1dATI"); - glad_glVertexStream1dvATI = (PFNGLVERTEXSTREAM1DVATIPROC)load("glVertexStream1dvATI"); - glad_glVertexStream2sATI = (PFNGLVERTEXSTREAM2SATIPROC)load("glVertexStream2sATI"); - glad_glVertexStream2svATI = (PFNGLVERTEXSTREAM2SVATIPROC)load("glVertexStream2svATI"); - glad_glVertexStream2iATI = (PFNGLVERTEXSTREAM2IATIPROC)load("glVertexStream2iATI"); - glad_glVertexStream2ivATI = (PFNGLVERTEXSTREAM2IVATIPROC)load("glVertexStream2ivATI"); - glad_glVertexStream2fATI = (PFNGLVERTEXSTREAM2FATIPROC)load("glVertexStream2fATI"); - glad_glVertexStream2fvATI = (PFNGLVERTEXSTREAM2FVATIPROC)load("glVertexStream2fvATI"); - glad_glVertexStream2dATI = (PFNGLVERTEXSTREAM2DATIPROC)load("glVertexStream2dATI"); - glad_glVertexStream2dvATI = (PFNGLVERTEXSTREAM2DVATIPROC)load("glVertexStream2dvATI"); - glad_glVertexStream3sATI = (PFNGLVERTEXSTREAM3SATIPROC)load("glVertexStream3sATI"); - glad_glVertexStream3svATI = (PFNGLVERTEXSTREAM3SVATIPROC)load("glVertexStream3svATI"); - glad_glVertexStream3iATI = (PFNGLVERTEXSTREAM3IATIPROC)load("glVertexStream3iATI"); - glad_glVertexStream3ivATI = (PFNGLVERTEXSTREAM3IVATIPROC)load("glVertexStream3ivATI"); - glad_glVertexStream3fATI = (PFNGLVERTEXSTREAM3FATIPROC)load("glVertexStream3fATI"); - glad_glVertexStream3fvATI = (PFNGLVERTEXSTREAM3FVATIPROC)load("glVertexStream3fvATI"); - glad_glVertexStream3dATI = (PFNGLVERTEXSTREAM3DATIPROC)load("glVertexStream3dATI"); - glad_glVertexStream3dvATI = (PFNGLVERTEXSTREAM3DVATIPROC)load("glVertexStream3dvATI"); - glad_glVertexStream4sATI = (PFNGLVERTEXSTREAM4SATIPROC)load("glVertexStream4sATI"); - glad_glVertexStream4svATI = (PFNGLVERTEXSTREAM4SVATIPROC)load("glVertexStream4svATI"); - glad_glVertexStream4iATI = (PFNGLVERTEXSTREAM4IATIPROC)load("glVertexStream4iATI"); - glad_glVertexStream4ivATI = (PFNGLVERTEXSTREAM4IVATIPROC)load("glVertexStream4ivATI"); - glad_glVertexStream4fATI = (PFNGLVERTEXSTREAM4FATIPROC)load("glVertexStream4fATI"); - glad_glVertexStream4fvATI = (PFNGLVERTEXSTREAM4FVATIPROC)load("glVertexStream4fvATI"); - glad_glVertexStream4dATI = (PFNGLVERTEXSTREAM4DATIPROC)load("glVertexStream4dATI"); - glad_glVertexStream4dvATI = (PFNGLVERTEXSTREAM4DVATIPROC)load("glVertexStream4dvATI"); - glad_glNormalStream3bATI = (PFNGLNORMALSTREAM3BATIPROC)load("glNormalStream3bATI"); - glad_glNormalStream3bvATI = (PFNGLNORMALSTREAM3BVATIPROC)load("glNormalStream3bvATI"); - glad_glNormalStream3sATI = (PFNGLNORMALSTREAM3SATIPROC)load("glNormalStream3sATI"); - glad_glNormalStream3svATI = (PFNGLNORMALSTREAM3SVATIPROC)load("glNormalStream3svATI"); - glad_glNormalStream3iATI = (PFNGLNORMALSTREAM3IATIPROC)load("glNormalStream3iATI"); - glad_glNormalStream3ivATI = (PFNGLNORMALSTREAM3IVATIPROC)load("glNormalStream3ivATI"); - glad_glNormalStream3fATI = (PFNGLNORMALSTREAM3FATIPROC)load("glNormalStream3fATI"); - glad_glNormalStream3fvATI = (PFNGLNORMALSTREAM3FVATIPROC)load("glNormalStream3fvATI"); - glad_glNormalStream3dATI = (PFNGLNORMALSTREAM3DATIPROC)load("glNormalStream3dATI"); - glad_glNormalStream3dvATI = (PFNGLNORMALSTREAM3DVATIPROC)load("glNormalStream3dvATI"); - glad_glClientActiveVertexStreamATI = (PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC)load("glClientActiveVertexStreamATI"); - glad_glVertexBlendEnviATI = (PFNGLVERTEXBLENDENVIATIPROC)load("glVertexBlendEnviATI"); - glad_glVertexBlendEnvfATI = (PFNGLVERTEXBLENDENVFATIPROC)load("glVertexBlendEnvfATI"); -} -static void load_GL_ARB_gpu_shader_int64(GLADloadproc load) { - if(!GLAD_GL_ARB_gpu_shader_int64) return; - glad_glUniform1i64ARB = (PFNGLUNIFORM1I64ARBPROC)load("glUniform1i64ARB"); - glad_glUniform2i64ARB = (PFNGLUNIFORM2I64ARBPROC)load("glUniform2i64ARB"); - glad_glUniform3i64ARB = (PFNGLUNIFORM3I64ARBPROC)load("glUniform3i64ARB"); - glad_glUniform4i64ARB = (PFNGLUNIFORM4I64ARBPROC)load("glUniform4i64ARB"); - glad_glUniform1i64vARB = (PFNGLUNIFORM1I64VARBPROC)load("glUniform1i64vARB"); - glad_glUniform2i64vARB = (PFNGLUNIFORM2I64VARBPROC)load("glUniform2i64vARB"); - glad_glUniform3i64vARB = (PFNGLUNIFORM3I64VARBPROC)load("glUniform3i64vARB"); - glad_glUniform4i64vARB = (PFNGLUNIFORM4I64VARBPROC)load("glUniform4i64vARB"); - glad_glUniform1ui64ARB = (PFNGLUNIFORM1UI64ARBPROC)load("glUniform1ui64ARB"); - glad_glUniform2ui64ARB = (PFNGLUNIFORM2UI64ARBPROC)load("glUniform2ui64ARB"); - glad_glUniform3ui64ARB = (PFNGLUNIFORM3UI64ARBPROC)load("glUniform3ui64ARB"); - glad_glUniform4ui64ARB = (PFNGLUNIFORM4UI64ARBPROC)load("glUniform4ui64ARB"); - glad_glUniform1ui64vARB = (PFNGLUNIFORM1UI64VARBPROC)load("glUniform1ui64vARB"); - glad_glUniform2ui64vARB = (PFNGLUNIFORM2UI64VARBPROC)load("glUniform2ui64vARB"); - glad_glUniform3ui64vARB = (PFNGLUNIFORM3UI64VARBPROC)load("glUniform3ui64vARB"); - glad_glUniform4ui64vARB = (PFNGLUNIFORM4UI64VARBPROC)load("glUniform4ui64vARB"); - glad_glGetUniformi64vARB = (PFNGLGETUNIFORMI64VARBPROC)load("glGetUniformi64vARB"); - glad_glGetUniformui64vARB = (PFNGLGETUNIFORMUI64VARBPROC)load("glGetUniformui64vARB"); - glad_glGetnUniformi64vARB = (PFNGLGETNUNIFORMI64VARBPROC)load("glGetnUniformi64vARB"); - glad_glGetnUniformui64vARB = (PFNGLGETNUNIFORMUI64VARBPROC)load("glGetnUniformui64vARB"); - glad_glProgramUniform1i64ARB = (PFNGLPROGRAMUNIFORM1I64ARBPROC)load("glProgramUniform1i64ARB"); - glad_glProgramUniform2i64ARB = (PFNGLPROGRAMUNIFORM2I64ARBPROC)load("glProgramUniform2i64ARB"); - glad_glProgramUniform3i64ARB = (PFNGLPROGRAMUNIFORM3I64ARBPROC)load("glProgramUniform3i64ARB"); - glad_glProgramUniform4i64ARB = (PFNGLPROGRAMUNIFORM4I64ARBPROC)load("glProgramUniform4i64ARB"); - glad_glProgramUniform1i64vARB = (PFNGLPROGRAMUNIFORM1I64VARBPROC)load("glProgramUniform1i64vARB"); - glad_glProgramUniform2i64vARB = (PFNGLPROGRAMUNIFORM2I64VARBPROC)load("glProgramUniform2i64vARB"); - glad_glProgramUniform3i64vARB = (PFNGLPROGRAMUNIFORM3I64VARBPROC)load("glProgramUniform3i64vARB"); - glad_glProgramUniform4i64vARB = (PFNGLPROGRAMUNIFORM4I64VARBPROC)load("glProgramUniform4i64vARB"); - glad_glProgramUniform1ui64ARB = (PFNGLPROGRAMUNIFORM1UI64ARBPROC)load("glProgramUniform1ui64ARB"); - glad_glProgramUniform2ui64ARB = (PFNGLPROGRAMUNIFORM2UI64ARBPROC)load("glProgramUniform2ui64ARB"); - glad_glProgramUniform3ui64ARB = (PFNGLPROGRAMUNIFORM3UI64ARBPROC)load("glProgramUniform3ui64ARB"); - glad_glProgramUniform4ui64ARB = (PFNGLPROGRAMUNIFORM4UI64ARBPROC)load("glProgramUniform4ui64ARB"); - glad_glProgramUniform1ui64vARB = (PFNGLPROGRAMUNIFORM1UI64VARBPROC)load("glProgramUniform1ui64vARB"); - glad_glProgramUniform2ui64vARB = (PFNGLPROGRAMUNIFORM2UI64VARBPROC)load("glProgramUniform2ui64vARB"); - glad_glProgramUniform3ui64vARB = (PFNGLPROGRAMUNIFORM3UI64VARBPROC)load("glProgramUniform3ui64vARB"); - glad_glProgramUniform4ui64vARB = (PFNGLPROGRAMUNIFORM4UI64VARBPROC)load("glProgramUniform4ui64vARB"); -} -static void load_GL_NV_vdpau_interop(GLADloadproc load) { - if(!GLAD_GL_NV_vdpau_interop) return; - glad_glVDPAUInitNV = (PFNGLVDPAUINITNVPROC)load("glVDPAUInitNV"); - glad_glVDPAUFiniNV = (PFNGLVDPAUFININVPROC)load("glVDPAUFiniNV"); - glad_glVDPAURegisterVideoSurfaceNV = (PFNGLVDPAUREGISTERVIDEOSURFACENVPROC)load("glVDPAURegisterVideoSurfaceNV"); - glad_glVDPAURegisterOutputSurfaceNV = (PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC)load("glVDPAURegisterOutputSurfaceNV"); - glad_glVDPAUIsSurfaceNV = (PFNGLVDPAUISSURFACENVPROC)load("glVDPAUIsSurfaceNV"); - glad_glVDPAUUnregisterSurfaceNV = (PFNGLVDPAUUNREGISTERSURFACENVPROC)load("glVDPAUUnregisterSurfaceNV"); - glad_glVDPAUGetSurfaceivNV = (PFNGLVDPAUGETSURFACEIVNVPROC)load("glVDPAUGetSurfaceivNV"); - glad_glVDPAUSurfaceAccessNV = (PFNGLVDPAUSURFACEACCESSNVPROC)load("glVDPAUSurfaceAccessNV"); - glad_glVDPAUMapSurfacesNV = (PFNGLVDPAUMAPSURFACESNVPROC)load("glVDPAUMapSurfacesNV"); - glad_glVDPAUUnmapSurfacesNV = (PFNGLVDPAUUNMAPSURFACESNVPROC)load("glVDPAUUnmapSurfacesNV"); -} -static void load_GL_ARB_internalformat_query2(GLADloadproc load) { - if(!GLAD_GL_ARB_internalformat_query2) return; - glad_glGetInternalformati64v = (PFNGLGETINTERNALFORMATI64VPROC)load("glGetInternalformati64v"); -} -static void load_GL_SUN_vertex(GLADloadproc load) { - if(!GLAD_GL_SUN_vertex) return; - glad_glColor4ubVertex2fSUN = (PFNGLCOLOR4UBVERTEX2FSUNPROC)load("glColor4ubVertex2fSUN"); - glad_glColor4ubVertex2fvSUN = (PFNGLCOLOR4UBVERTEX2FVSUNPROC)load("glColor4ubVertex2fvSUN"); - glad_glColor4ubVertex3fSUN = (PFNGLCOLOR4UBVERTEX3FSUNPROC)load("glColor4ubVertex3fSUN"); - glad_glColor4ubVertex3fvSUN = (PFNGLCOLOR4UBVERTEX3FVSUNPROC)load("glColor4ubVertex3fvSUN"); - glad_glColor3fVertex3fSUN = (PFNGLCOLOR3FVERTEX3FSUNPROC)load("glColor3fVertex3fSUN"); - glad_glColor3fVertex3fvSUN = (PFNGLCOLOR3FVERTEX3FVSUNPROC)load("glColor3fVertex3fvSUN"); - glad_glNormal3fVertex3fSUN = (PFNGLNORMAL3FVERTEX3FSUNPROC)load("glNormal3fVertex3fSUN"); - glad_glNormal3fVertex3fvSUN = (PFNGLNORMAL3FVERTEX3FVSUNPROC)load("glNormal3fVertex3fvSUN"); - glad_glColor4fNormal3fVertex3fSUN = (PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC)load("glColor4fNormal3fVertex3fSUN"); - glad_glColor4fNormal3fVertex3fvSUN = (PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC)load("glColor4fNormal3fVertex3fvSUN"); - glad_glTexCoord2fVertex3fSUN = (PFNGLTEXCOORD2FVERTEX3FSUNPROC)load("glTexCoord2fVertex3fSUN"); - glad_glTexCoord2fVertex3fvSUN = (PFNGLTEXCOORD2FVERTEX3FVSUNPROC)load("glTexCoord2fVertex3fvSUN"); - glad_glTexCoord4fVertex4fSUN = (PFNGLTEXCOORD4FVERTEX4FSUNPROC)load("glTexCoord4fVertex4fSUN"); - glad_glTexCoord4fVertex4fvSUN = (PFNGLTEXCOORD4FVERTEX4FVSUNPROC)load("glTexCoord4fVertex4fvSUN"); - glad_glTexCoord2fColor4ubVertex3fSUN = (PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC)load("glTexCoord2fColor4ubVertex3fSUN"); - glad_glTexCoord2fColor4ubVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC)load("glTexCoord2fColor4ubVertex3fvSUN"); - glad_glTexCoord2fColor3fVertex3fSUN = (PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC)load("glTexCoord2fColor3fVertex3fSUN"); - glad_glTexCoord2fColor3fVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC)load("glTexCoord2fColor3fVertex3fvSUN"); - glad_glTexCoord2fNormal3fVertex3fSUN = (PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC)load("glTexCoord2fNormal3fVertex3fSUN"); - glad_glTexCoord2fNormal3fVertex3fvSUN = (PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)load("glTexCoord2fNormal3fVertex3fvSUN"); - glad_glTexCoord2fColor4fNormal3fVertex3fSUN = (PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)load("glTexCoord2fColor4fNormal3fVertex3fSUN"); - glad_glTexCoord2fColor4fNormal3fVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)load("glTexCoord2fColor4fNormal3fVertex3fvSUN"); - glad_glTexCoord4fColor4fNormal3fVertex4fSUN = (PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC)load("glTexCoord4fColor4fNormal3fVertex4fSUN"); - glad_glTexCoord4fColor4fNormal3fVertex4fvSUN = (PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC)load("glTexCoord4fColor4fNormal3fVertex4fvSUN"); - glad_glReplacementCodeuiVertex3fSUN = (PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC)load("glReplacementCodeuiVertex3fSUN"); - glad_glReplacementCodeuiVertex3fvSUN = (PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC)load("glReplacementCodeuiVertex3fvSUN"); - glad_glReplacementCodeuiColor4ubVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC)load("glReplacementCodeuiColor4ubVertex3fSUN"); - glad_glReplacementCodeuiColor4ubVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC)load("glReplacementCodeuiColor4ubVertex3fvSUN"); - glad_glReplacementCodeuiColor3fVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC)load("glReplacementCodeuiColor3fVertex3fSUN"); - glad_glReplacementCodeuiColor3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC)load("glReplacementCodeuiColor3fVertex3fvSUN"); - glad_glReplacementCodeuiNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC)load("glReplacementCodeuiNormal3fVertex3fSUN"); - glad_glReplacementCodeuiNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC)load("glReplacementCodeuiNormal3fVertex3fvSUN"); - glad_glReplacementCodeuiColor4fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC)load("glReplacementCodeuiColor4fNormal3fVertex3fSUN"); - glad_glReplacementCodeuiColor4fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC)load("glReplacementCodeuiColor4fNormal3fVertex3fvSUN"); - glad_glReplacementCodeuiTexCoord2fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC)load("glReplacementCodeuiTexCoord2fVertex3fSUN"); - glad_glReplacementCodeuiTexCoord2fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC)load("glReplacementCodeuiTexCoord2fVertex3fvSUN"); - glad_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC)load("glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN"); - glad_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)load("glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN"); - glad_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)load("glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN"); - glad_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)load("glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN"); -} -static void load_GL_SGIX_igloo_interface(GLADloadproc load) { - if(!GLAD_GL_SGIX_igloo_interface) return; - glad_glIglooInterfaceSGIX = (PFNGLIGLOOINTERFACESGIXPROC)load("glIglooInterfaceSGIX"); -} -static void load_GL_ARB_draw_indirect(GLADloadproc load) { - if(!GLAD_GL_ARB_draw_indirect) return; - glad_glDrawArraysIndirect = (PFNGLDRAWARRAYSINDIRECTPROC)load("glDrawArraysIndirect"); - glad_glDrawElementsIndirect = (PFNGLDRAWELEMENTSINDIRECTPROC)load("glDrawElementsIndirect"); -} -static void load_GL_NV_vertex_program4(GLADloadproc load) { - if(!GLAD_GL_NV_vertex_program4) return; - glad_glVertexAttribI1iEXT = (PFNGLVERTEXATTRIBI1IEXTPROC)load("glVertexAttribI1iEXT"); - glad_glVertexAttribI2iEXT = (PFNGLVERTEXATTRIBI2IEXTPROC)load("glVertexAttribI2iEXT"); - glad_glVertexAttribI3iEXT = (PFNGLVERTEXATTRIBI3IEXTPROC)load("glVertexAttribI3iEXT"); - glad_glVertexAttribI4iEXT = (PFNGLVERTEXATTRIBI4IEXTPROC)load("glVertexAttribI4iEXT"); - glad_glVertexAttribI1uiEXT = (PFNGLVERTEXATTRIBI1UIEXTPROC)load("glVertexAttribI1uiEXT"); - glad_glVertexAttribI2uiEXT = (PFNGLVERTEXATTRIBI2UIEXTPROC)load("glVertexAttribI2uiEXT"); - glad_glVertexAttribI3uiEXT = (PFNGLVERTEXATTRIBI3UIEXTPROC)load("glVertexAttribI3uiEXT"); - glad_glVertexAttribI4uiEXT = (PFNGLVERTEXATTRIBI4UIEXTPROC)load("glVertexAttribI4uiEXT"); - glad_glVertexAttribI1ivEXT = (PFNGLVERTEXATTRIBI1IVEXTPROC)load("glVertexAttribI1ivEXT"); - glad_glVertexAttribI2ivEXT = (PFNGLVERTEXATTRIBI2IVEXTPROC)load("glVertexAttribI2ivEXT"); - glad_glVertexAttribI3ivEXT = (PFNGLVERTEXATTRIBI3IVEXTPROC)load("glVertexAttribI3ivEXT"); - glad_glVertexAttribI4ivEXT = (PFNGLVERTEXATTRIBI4IVEXTPROC)load("glVertexAttribI4ivEXT"); - glad_glVertexAttribI1uivEXT = (PFNGLVERTEXATTRIBI1UIVEXTPROC)load("glVertexAttribI1uivEXT"); - glad_glVertexAttribI2uivEXT = (PFNGLVERTEXATTRIBI2UIVEXTPROC)load("glVertexAttribI2uivEXT"); - glad_glVertexAttribI3uivEXT = (PFNGLVERTEXATTRIBI3UIVEXTPROC)load("glVertexAttribI3uivEXT"); - glad_glVertexAttribI4uivEXT = (PFNGLVERTEXATTRIBI4UIVEXTPROC)load("glVertexAttribI4uivEXT"); - glad_glVertexAttribI4bvEXT = (PFNGLVERTEXATTRIBI4BVEXTPROC)load("glVertexAttribI4bvEXT"); - glad_glVertexAttribI4svEXT = (PFNGLVERTEXATTRIBI4SVEXTPROC)load("glVertexAttribI4svEXT"); - glad_glVertexAttribI4ubvEXT = (PFNGLVERTEXATTRIBI4UBVEXTPROC)load("glVertexAttribI4ubvEXT"); - glad_glVertexAttribI4usvEXT = (PFNGLVERTEXATTRIBI4USVEXTPROC)load("glVertexAttribI4usvEXT"); - glad_glVertexAttribIPointerEXT = (PFNGLVERTEXATTRIBIPOINTEREXTPROC)load("glVertexAttribIPointerEXT"); - glad_glGetVertexAttribIivEXT = (PFNGLGETVERTEXATTRIBIIVEXTPROC)load("glGetVertexAttribIivEXT"); - glad_glGetVertexAttribIuivEXT = (PFNGLGETVERTEXATTRIBIUIVEXTPROC)load("glGetVertexAttribIuivEXT"); -} -static void load_GL_SGIS_fog_function(GLADloadproc load) { - if(!GLAD_GL_SGIS_fog_function) return; - glad_glFogFuncSGIS = (PFNGLFOGFUNCSGISPROC)load("glFogFuncSGIS"); - glad_glGetFogFuncSGIS = (PFNGLGETFOGFUNCSGISPROC)load("glGetFogFuncSGIS"); -} -static void load_GL_EXT_x11_sync_object(GLADloadproc load) { - if(!GLAD_GL_EXT_x11_sync_object) return; - glad_glImportSyncEXT = (PFNGLIMPORTSYNCEXTPROC)load("glImportSyncEXT"); -} -static void load_GL_ARB_sync(GLADloadproc load) { - if(!GLAD_GL_ARB_sync) return; - 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"); -} -static void load_GL_NV_sample_locations(GLADloadproc load) { - if(!GLAD_GL_NV_sample_locations) return; - glad_glFramebufferSampleLocationsfvNV = (PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)load("glFramebufferSampleLocationsfvNV"); - glad_glNamedFramebufferSampleLocationsfvNV = (PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)load("glNamedFramebufferSampleLocationsfvNV"); - glad_glResolveDepthValuesNV = (PFNGLRESOLVEDEPTHVALUESNVPROC)load("glResolveDepthValuesNV"); -} -static void load_GL_ARB_compute_variable_group_size(GLADloadproc load) { - if(!GLAD_GL_ARB_compute_variable_group_size) return; - glad_glDispatchComputeGroupSizeARB = (PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC)load("glDispatchComputeGroupSizeARB"); -} -static void load_GL_OES_fixed_point(GLADloadproc load) { - if(!GLAD_GL_OES_fixed_point) return; - glad_glAlphaFuncxOES = (PFNGLALPHAFUNCXOESPROC)load("glAlphaFuncxOES"); - glad_glClearColorxOES = (PFNGLCLEARCOLORXOESPROC)load("glClearColorxOES"); - glad_glClearDepthxOES = (PFNGLCLEARDEPTHXOESPROC)load("glClearDepthxOES"); - glad_glClipPlanexOES = (PFNGLCLIPPLANEXOESPROC)load("glClipPlanexOES"); - glad_glColor4xOES = (PFNGLCOLOR4XOESPROC)load("glColor4xOES"); - glad_glDepthRangexOES = (PFNGLDEPTHRANGEXOESPROC)load("glDepthRangexOES"); - glad_glFogxOES = (PFNGLFOGXOESPROC)load("glFogxOES"); - glad_glFogxvOES = (PFNGLFOGXVOESPROC)load("glFogxvOES"); - glad_glFrustumxOES = (PFNGLFRUSTUMXOESPROC)load("glFrustumxOES"); - glad_glGetClipPlanexOES = (PFNGLGETCLIPPLANEXOESPROC)load("glGetClipPlanexOES"); - glad_glGetFixedvOES = (PFNGLGETFIXEDVOESPROC)load("glGetFixedvOES"); - glad_glGetTexEnvxvOES = (PFNGLGETTEXENVXVOESPROC)load("glGetTexEnvxvOES"); - glad_glGetTexParameterxvOES = (PFNGLGETTEXPARAMETERXVOESPROC)load("glGetTexParameterxvOES"); - glad_glLightModelxOES = (PFNGLLIGHTMODELXOESPROC)load("glLightModelxOES"); - glad_glLightModelxvOES = (PFNGLLIGHTMODELXVOESPROC)load("glLightModelxvOES"); - glad_glLightxOES = (PFNGLLIGHTXOESPROC)load("glLightxOES"); - glad_glLightxvOES = (PFNGLLIGHTXVOESPROC)load("glLightxvOES"); - glad_glLineWidthxOES = (PFNGLLINEWIDTHXOESPROC)load("glLineWidthxOES"); - glad_glLoadMatrixxOES = (PFNGLLOADMATRIXXOESPROC)load("glLoadMatrixxOES"); - glad_glMaterialxOES = (PFNGLMATERIALXOESPROC)load("glMaterialxOES"); - glad_glMaterialxvOES = (PFNGLMATERIALXVOESPROC)load("glMaterialxvOES"); - glad_glMultMatrixxOES = (PFNGLMULTMATRIXXOESPROC)load("glMultMatrixxOES"); - glad_glMultiTexCoord4xOES = (PFNGLMULTITEXCOORD4XOESPROC)load("glMultiTexCoord4xOES"); - glad_glNormal3xOES = (PFNGLNORMAL3XOESPROC)load("glNormal3xOES"); - glad_glOrthoxOES = (PFNGLORTHOXOESPROC)load("glOrthoxOES"); - glad_glPointParameterxvOES = (PFNGLPOINTPARAMETERXVOESPROC)load("glPointParameterxvOES"); - glad_glPointSizexOES = (PFNGLPOINTSIZEXOESPROC)load("glPointSizexOES"); - glad_glPolygonOffsetxOES = (PFNGLPOLYGONOFFSETXOESPROC)load("glPolygonOffsetxOES"); - glad_glRotatexOES = (PFNGLROTATEXOESPROC)load("glRotatexOES"); - glad_glScalexOES = (PFNGLSCALEXOESPROC)load("glScalexOES"); - glad_glTexEnvxOES = (PFNGLTEXENVXOESPROC)load("glTexEnvxOES"); - glad_glTexEnvxvOES = (PFNGLTEXENVXVOESPROC)load("glTexEnvxvOES"); - glad_glTexParameterxOES = (PFNGLTEXPARAMETERXOESPROC)load("glTexParameterxOES"); - glad_glTexParameterxvOES = (PFNGLTEXPARAMETERXVOESPROC)load("glTexParameterxvOES"); - glad_glTranslatexOES = (PFNGLTRANSLATEXOESPROC)load("glTranslatexOES"); - glad_glGetLightxvOES = (PFNGLGETLIGHTXVOESPROC)load("glGetLightxvOES"); - glad_glGetMaterialxvOES = (PFNGLGETMATERIALXVOESPROC)load("glGetMaterialxvOES"); - glad_glPointParameterxOES = (PFNGLPOINTPARAMETERXOESPROC)load("glPointParameterxOES"); - glad_glSampleCoveragexOES = (PFNGLSAMPLECOVERAGEXOESPROC)load("glSampleCoveragexOES"); - glad_glAccumxOES = (PFNGLACCUMXOESPROC)load("glAccumxOES"); - glad_glBitmapxOES = (PFNGLBITMAPXOESPROC)load("glBitmapxOES"); - glad_glBlendColorxOES = (PFNGLBLENDCOLORXOESPROC)load("glBlendColorxOES"); - glad_glClearAccumxOES = (PFNGLCLEARACCUMXOESPROC)load("glClearAccumxOES"); - glad_glColor3xOES = (PFNGLCOLOR3XOESPROC)load("glColor3xOES"); - glad_glColor3xvOES = (PFNGLCOLOR3XVOESPROC)load("glColor3xvOES"); - glad_glColor4xvOES = (PFNGLCOLOR4XVOESPROC)load("glColor4xvOES"); - glad_glConvolutionParameterxOES = (PFNGLCONVOLUTIONPARAMETERXOESPROC)load("glConvolutionParameterxOES"); - glad_glConvolutionParameterxvOES = (PFNGLCONVOLUTIONPARAMETERXVOESPROC)load("glConvolutionParameterxvOES"); - glad_glEvalCoord1xOES = (PFNGLEVALCOORD1XOESPROC)load("glEvalCoord1xOES"); - glad_glEvalCoord1xvOES = (PFNGLEVALCOORD1XVOESPROC)load("glEvalCoord1xvOES"); - glad_glEvalCoord2xOES = (PFNGLEVALCOORD2XOESPROC)load("glEvalCoord2xOES"); - glad_glEvalCoord2xvOES = (PFNGLEVALCOORD2XVOESPROC)load("glEvalCoord2xvOES"); - glad_glFeedbackBufferxOES = (PFNGLFEEDBACKBUFFERXOESPROC)load("glFeedbackBufferxOES"); - glad_glGetConvolutionParameterxvOES = (PFNGLGETCONVOLUTIONPARAMETERXVOESPROC)load("glGetConvolutionParameterxvOES"); - glad_glGetHistogramParameterxvOES = (PFNGLGETHISTOGRAMPARAMETERXVOESPROC)load("glGetHistogramParameterxvOES"); - glad_glGetLightxOES = (PFNGLGETLIGHTXOESPROC)load("glGetLightxOES"); - glad_glGetMapxvOES = (PFNGLGETMAPXVOESPROC)load("glGetMapxvOES"); - glad_glGetMaterialxOES = (PFNGLGETMATERIALXOESPROC)load("glGetMaterialxOES"); - glad_glGetPixelMapxv = (PFNGLGETPIXELMAPXVPROC)load("glGetPixelMapxv"); - glad_glGetTexGenxvOES = (PFNGLGETTEXGENXVOESPROC)load("glGetTexGenxvOES"); - glad_glGetTexLevelParameterxvOES = (PFNGLGETTEXLEVELPARAMETERXVOESPROC)load("glGetTexLevelParameterxvOES"); - glad_glIndexxOES = (PFNGLINDEXXOESPROC)load("glIndexxOES"); - glad_glIndexxvOES = (PFNGLINDEXXVOESPROC)load("glIndexxvOES"); - glad_glLoadTransposeMatrixxOES = (PFNGLLOADTRANSPOSEMATRIXXOESPROC)load("glLoadTransposeMatrixxOES"); - glad_glMap1xOES = (PFNGLMAP1XOESPROC)load("glMap1xOES"); - glad_glMap2xOES = (PFNGLMAP2XOESPROC)load("glMap2xOES"); - glad_glMapGrid1xOES = (PFNGLMAPGRID1XOESPROC)load("glMapGrid1xOES"); - glad_glMapGrid2xOES = (PFNGLMAPGRID2XOESPROC)load("glMapGrid2xOES"); - glad_glMultTransposeMatrixxOES = (PFNGLMULTTRANSPOSEMATRIXXOESPROC)load("glMultTransposeMatrixxOES"); - glad_glMultiTexCoord1xOES = (PFNGLMULTITEXCOORD1XOESPROC)load("glMultiTexCoord1xOES"); - glad_glMultiTexCoord1xvOES = (PFNGLMULTITEXCOORD1XVOESPROC)load("glMultiTexCoord1xvOES"); - glad_glMultiTexCoord2xOES = (PFNGLMULTITEXCOORD2XOESPROC)load("glMultiTexCoord2xOES"); - glad_glMultiTexCoord2xvOES = (PFNGLMULTITEXCOORD2XVOESPROC)load("glMultiTexCoord2xvOES"); - glad_glMultiTexCoord3xOES = (PFNGLMULTITEXCOORD3XOESPROC)load("glMultiTexCoord3xOES"); - glad_glMultiTexCoord3xvOES = (PFNGLMULTITEXCOORD3XVOESPROC)load("glMultiTexCoord3xvOES"); - glad_glMultiTexCoord4xvOES = (PFNGLMULTITEXCOORD4XVOESPROC)load("glMultiTexCoord4xvOES"); - glad_glNormal3xvOES = (PFNGLNORMAL3XVOESPROC)load("glNormal3xvOES"); - glad_glPassThroughxOES = (PFNGLPASSTHROUGHXOESPROC)load("glPassThroughxOES"); - glad_glPixelMapx = (PFNGLPIXELMAPXPROC)load("glPixelMapx"); - glad_glPixelStorex = (PFNGLPIXELSTOREXPROC)load("glPixelStorex"); - glad_glPixelTransferxOES = (PFNGLPIXELTRANSFERXOESPROC)load("glPixelTransferxOES"); - glad_glPixelZoomxOES = (PFNGLPIXELZOOMXOESPROC)load("glPixelZoomxOES"); - glad_glPrioritizeTexturesxOES = (PFNGLPRIORITIZETEXTURESXOESPROC)load("glPrioritizeTexturesxOES"); - glad_glRasterPos2xOES = (PFNGLRASTERPOS2XOESPROC)load("glRasterPos2xOES"); - glad_glRasterPos2xvOES = (PFNGLRASTERPOS2XVOESPROC)load("glRasterPos2xvOES"); - glad_glRasterPos3xOES = (PFNGLRASTERPOS3XOESPROC)load("glRasterPos3xOES"); - glad_glRasterPos3xvOES = (PFNGLRASTERPOS3XVOESPROC)load("glRasterPos3xvOES"); - glad_glRasterPos4xOES = (PFNGLRASTERPOS4XOESPROC)load("glRasterPos4xOES"); - glad_glRasterPos4xvOES = (PFNGLRASTERPOS4XVOESPROC)load("glRasterPos4xvOES"); - glad_glRectxOES = (PFNGLRECTXOESPROC)load("glRectxOES"); - glad_glRectxvOES = (PFNGLRECTXVOESPROC)load("glRectxvOES"); - glad_glTexCoord1xOES = (PFNGLTEXCOORD1XOESPROC)load("glTexCoord1xOES"); - glad_glTexCoord1xvOES = (PFNGLTEXCOORD1XVOESPROC)load("glTexCoord1xvOES"); - glad_glTexCoord2xOES = (PFNGLTEXCOORD2XOESPROC)load("glTexCoord2xOES"); - glad_glTexCoord2xvOES = (PFNGLTEXCOORD2XVOESPROC)load("glTexCoord2xvOES"); - glad_glTexCoord3xOES = (PFNGLTEXCOORD3XOESPROC)load("glTexCoord3xOES"); - glad_glTexCoord3xvOES = (PFNGLTEXCOORD3XVOESPROC)load("glTexCoord3xvOES"); - glad_glTexCoord4xOES = (PFNGLTEXCOORD4XOESPROC)load("glTexCoord4xOES"); - glad_glTexCoord4xvOES = (PFNGLTEXCOORD4XVOESPROC)load("glTexCoord4xvOES"); - glad_glTexGenxOES = (PFNGLTEXGENXOESPROC)load("glTexGenxOES"); - glad_glTexGenxvOES = (PFNGLTEXGENXVOESPROC)load("glTexGenxvOES"); - glad_glVertex2xOES = (PFNGLVERTEX2XOESPROC)load("glVertex2xOES"); - glad_glVertex2xvOES = (PFNGLVERTEX2XVOESPROC)load("glVertex2xvOES"); - glad_glVertex3xOES = (PFNGLVERTEX3XOESPROC)load("glVertex3xOES"); - glad_glVertex3xvOES = (PFNGLVERTEX3XVOESPROC)load("glVertex3xvOES"); - glad_glVertex4xOES = (PFNGLVERTEX4XOESPROC)load("glVertex4xOES"); - glad_glVertex4xvOES = (PFNGLVERTEX4XVOESPROC)load("glVertex4xvOES"); -} -static void load_GL_EXT_framebuffer_multisample(GLADloadproc load) { - if(!GLAD_GL_EXT_framebuffer_multisample) return; - glad_glRenderbufferStorageMultisampleEXT = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)load("glRenderbufferStorageMultisampleEXT"); -} -static void load_GL_SGIS_texture4D(GLADloadproc load) { - if(!GLAD_GL_SGIS_texture4D) return; - glad_glTexImage4DSGIS = (PFNGLTEXIMAGE4DSGISPROC)load("glTexImage4DSGIS"); - glad_glTexSubImage4DSGIS = (PFNGLTEXSUBIMAGE4DSGISPROC)load("glTexSubImage4DSGIS"); -} -static void load_GL_EXT_texture3D(GLADloadproc load) { - if(!GLAD_GL_EXT_texture3D) return; - glad_glTexImage3DEXT = (PFNGLTEXIMAGE3DEXTPROC)load("glTexImage3DEXT"); - glad_glTexSubImage3DEXT = (PFNGLTEXSUBIMAGE3DEXTPROC)load("glTexSubImage3DEXT"); -} -static void load_GL_EXT_multisample(GLADloadproc load) { - if(!GLAD_GL_EXT_multisample) return; - glad_glSampleMaskEXT = (PFNGLSAMPLEMASKEXTPROC)load("glSampleMaskEXT"); - glad_glSamplePatternEXT = (PFNGLSAMPLEPATTERNEXTPROC)load("glSamplePatternEXT"); -} -static void load_GL_EXT_secondary_color(GLADloadproc load) { - if(!GLAD_GL_EXT_secondary_color) return; - glad_glSecondaryColor3bEXT = (PFNGLSECONDARYCOLOR3BEXTPROC)load("glSecondaryColor3bEXT"); - glad_glSecondaryColor3bvEXT = (PFNGLSECONDARYCOLOR3BVEXTPROC)load("glSecondaryColor3bvEXT"); - glad_glSecondaryColor3dEXT = (PFNGLSECONDARYCOLOR3DEXTPROC)load("glSecondaryColor3dEXT"); - glad_glSecondaryColor3dvEXT = (PFNGLSECONDARYCOLOR3DVEXTPROC)load("glSecondaryColor3dvEXT"); - glad_glSecondaryColor3fEXT = (PFNGLSECONDARYCOLOR3FEXTPROC)load("glSecondaryColor3fEXT"); - glad_glSecondaryColor3fvEXT = (PFNGLSECONDARYCOLOR3FVEXTPROC)load("glSecondaryColor3fvEXT"); - glad_glSecondaryColor3iEXT = (PFNGLSECONDARYCOLOR3IEXTPROC)load("glSecondaryColor3iEXT"); - glad_glSecondaryColor3ivEXT = (PFNGLSECONDARYCOLOR3IVEXTPROC)load("glSecondaryColor3ivEXT"); - glad_glSecondaryColor3sEXT = (PFNGLSECONDARYCOLOR3SEXTPROC)load("glSecondaryColor3sEXT"); - glad_glSecondaryColor3svEXT = (PFNGLSECONDARYCOLOR3SVEXTPROC)load("glSecondaryColor3svEXT"); - glad_glSecondaryColor3ubEXT = (PFNGLSECONDARYCOLOR3UBEXTPROC)load("glSecondaryColor3ubEXT"); - glad_glSecondaryColor3ubvEXT = (PFNGLSECONDARYCOLOR3UBVEXTPROC)load("glSecondaryColor3ubvEXT"); - glad_glSecondaryColor3uiEXT = (PFNGLSECONDARYCOLOR3UIEXTPROC)load("glSecondaryColor3uiEXT"); - glad_glSecondaryColor3uivEXT = (PFNGLSECONDARYCOLOR3UIVEXTPROC)load("glSecondaryColor3uivEXT"); - glad_glSecondaryColor3usEXT = (PFNGLSECONDARYCOLOR3USEXTPROC)load("glSecondaryColor3usEXT"); - glad_glSecondaryColor3usvEXT = (PFNGLSECONDARYCOLOR3USVEXTPROC)load("glSecondaryColor3usvEXT"); - glad_glSecondaryColorPointerEXT = (PFNGLSECONDARYCOLORPOINTEREXTPROC)load("glSecondaryColorPointerEXT"); -} -static void load_GL_ATI_vertex_array_object(GLADloadproc load) { - if(!GLAD_GL_ATI_vertex_array_object) return; - glad_glNewObjectBufferATI = (PFNGLNEWOBJECTBUFFERATIPROC)load("glNewObjectBufferATI"); - glad_glIsObjectBufferATI = (PFNGLISOBJECTBUFFERATIPROC)load("glIsObjectBufferATI"); - glad_glUpdateObjectBufferATI = (PFNGLUPDATEOBJECTBUFFERATIPROC)load("glUpdateObjectBufferATI"); - glad_glGetObjectBufferfvATI = (PFNGLGETOBJECTBUFFERFVATIPROC)load("glGetObjectBufferfvATI"); - glad_glGetObjectBufferivATI = (PFNGLGETOBJECTBUFFERIVATIPROC)load("glGetObjectBufferivATI"); - glad_glFreeObjectBufferATI = (PFNGLFREEOBJECTBUFFERATIPROC)load("glFreeObjectBufferATI"); - glad_glArrayObjectATI = (PFNGLARRAYOBJECTATIPROC)load("glArrayObjectATI"); - glad_glGetArrayObjectfvATI = (PFNGLGETARRAYOBJECTFVATIPROC)load("glGetArrayObjectfvATI"); - glad_glGetArrayObjectivATI = (PFNGLGETARRAYOBJECTIVATIPROC)load("glGetArrayObjectivATI"); - glad_glVariantArrayObjectATI = (PFNGLVARIANTARRAYOBJECTATIPROC)load("glVariantArrayObjectATI"); - glad_glGetVariantArrayObjectfvATI = (PFNGLGETVARIANTARRAYOBJECTFVATIPROC)load("glGetVariantArrayObjectfvATI"); - glad_glGetVariantArrayObjectivATI = (PFNGLGETVARIANTARRAYOBJECTIVATIPROC)load("glGetVariantArrayObjectivATI"); -} -static void load_GL_ARB_parallel_shader_compile(GLADloadproc load) { - if(!GLAD_GL_ARB_parallel_shader_compile) return; - glad_glMaxShaderCompilerThreadsARB = (PFNGLMAXSHADERCOMPILERTHREADSARBPROC)load("glMaxShaderCompilerThreadsARB"); -} -static void load_GL_ARB_sparse_texture(GLADloadproc load) { - if(!GLAD_GL_ARB_sparse_texture) return; - glad_glTexPageCommitmentARB = (PFNGLTEXPAGECOMMITMENTARBPROC)load("glTexPageCommitmentARB"); -} -static void load_GL_ARB_sample_locations(GLADloadproc load) { - if(!GLAD_GL_ARB_sample_locations) return; - glad_glFramebufferSampleLocationsfvARB = (PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC)load("glFramebufferSampleLocationsfvARB"); - glad_glNamedFramebufferSampleLocationsfvARB = (PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC)load("glNamedFramebufferSampleLocationsfvARB"); - glad_glEvaluateDepthValuesARB = (PFNGLEVALUATEDEPTHVALUESARBPROC)load("glEvaluateDepthValuesARB"); -} -static void load_GL_ARB_sparse_buffer(GLADloadproc load) { - if(!GLAD_GL_ARB_sparse_buffer) return; - glad_glBufferPageCommitmentARB = (PFNGLBUFFERPAGECOMMITMENTARBPROC)load("glBufferPageCommitmentARB"); - glad_glNamedBufferPageCommitmentEXT = (PFNGLNAMEDBUFFERPAGECOMMITMENTEXTPROC)load("glNamedBufferPageCommitmentEXT"); - glad_glNamedBufferPageCommitmentARB = (PFNGLNAMEDBUFFERPAGECOMMITMENTARBPROC)load("glNamedBufferPageCommitmentARB"); -} -static void load_GL_EXT_draw_range_elements(GLADloadproc load) { - if(!GLAD_GL_EXT_draw_range_elements) return; - glad_glDrawRangeElementsEXT = (PFNGLDRAWRANGEELEMENTSEXTPROC)load("glDrawRangeElementsEXT"); -} -static int find_extensionsGL(void) { - if (!get_exts()) return 0; - GLAD_GL_SGIX_pixel_tiles = has_ext("GL_SGIX_pixel_tiles"); - GLAD_GL_EXT_post_depth_coverage = has_ext("GL_EXT_post_depth_coverage"); - GLAD_GL_APPLE_element_array = has_ext("GL_APPLE_element_array"); - GLAD_GL_AMD_multi_draw_indirect = has_ext("GL_AMD_multi_draw_indirect"); - GLAD_GL_EXT_blend_subtract = has_ext("GL_EXT_blend_subtract"); - GLAD_GL_SGIX_tag_sample_buffer = has_ext("GL_SGIX_tag_sample_buffer"); - GLAD_GL_NV_point_sprite = has_ext("GL_NV_point_sprite"); - GLAD_GL_IBM_texture_mirrored_repeat = has_ext("GL_IBM_texture_mirrored_repeat"); - GLAD_GL_APPLE_transform_hint = has_ext("GL_APPLE_transform_hint"); - GLAD_GL_ATI_separate_stencil = has_ext("GL_ATI_separate_stencil"); - GLAD_GL_NV_shader_atomic_int64 = has_ext("GL_NV_shader_atomic_int64"); - GLAD_GL_NV_vertex_program2_option = has_ext("GL_NV_vertex_program2_option"); - GLAD_GL_EXT_texture_buffer_object = has_ext("GL_EXT_texture_buffer_object"); - GLAD_GL_ARB_vertex_blend = has_ext("GL_ARB_vertex_blend"); - GLAD_GL_OVR_multiview = has_ext("GL_OVR_multiview"); - GLAD_GL_NV_vertex_program2 = has_ext("GL_NV_vertex_program2"); - GLAD_GL_ARB_program_interface_query = has_ext("GL_ARB_program_interface_query"); - GLAD_GL_EXT_misc_attribute = has_ext("GL_EXT_misc_attribute"); - GLAD_GL_NV_multisample_coverage = has_ext("GL_NV_multisample_coverage"); - GLAD_GL_ARB_shading_language_packing = has_ext("GL_ARB_shading_language_packing"); - GLAD_GL_EXT_texture_cube_map = has_ext("GL_EXT_texture_cube_map"); - GLAD_GL_NV_viewport_array2 = has_ext("GL_NV_viewport_array2"); - GLAD_GL_ARB_texture_stencil8 = has_ext("GL_ARB_texture_stencil8"); - GLAD_GL_EXT_index_func = has_ext("GL_EXT_index_func"); - GLAD_GL_OES_compressed_paletted_texture = has_ext("GL_OES_compressed_paletted_texture"); - GLAD_GL_NV_depth_clamp = has_ext("GL_NV_depth_clamp"); - GLAD_GL_NV_shader_buffer_load = has_ext("GL_NV_shader_buffer_load"); - GLAD_GL_EXT_color_subtable = has_ext("GL_EXT_color_subtable"); - GLAD_GL_SUNX_constant_data = has_ext("GL_SUNX_constant_data"); - GLAD_GL_EXT_texture_compression_s3tc = has_ext("GL_EXT_texture_compression_s3tc"); - GLAD_GL_EXT_multi_draw_arrays = has_ext("GL_EXT_multi_draw_arrays"); - GLAD_GL_ARB_shader_atomic_counters = has_ext("GL_ARB_shader_atomic_counters"); - GLAD_GL_ARB_arrays_of_arrays = has_ext("GL_ARB_arrays_of_arrays"); - GLAD_GL_NV_conditional_render = has_ext("GL_NV_conditional_render"); - GLAD_GL_EXT_texture_env_combine = has_ext("GL_EXT_texture_env_combine"); - GLAD_GL_NV_fog_distance = has_ext("GL_NV_fog_distance"); - GLAD_GL_SGIX_async_histogram = has_ext("GL_SGIX_async_histogram"); - GLAD_GL_MESA_resize_buffers = has_ext("GL_MESA_resize_buffers"); - GLAD_GL_NV_light_max_exponent = has_ext("GL_NV_light_max_exponent"); - GLAD_GL_NV_texture_env_combine4 = has_ext("GL_NV_texture_env_combine4"); - GLAD_GL_ARB_texture_view = has_ext("GL_ARB_texture_view"); - GLAD_GL_ARB_texture_env_combine = has_ext("GL_ARB_texture_env_combine"); - GLAD_GL_ARB_map_buffer_range = has_ext("GL_ARB_map_buffer_range"); - GLAD_GL_EXT_convolution = has_ext("GL_EXT_convolution"); - GLAD_GL_NV_compute_program5 = has_ext("GL_NV_compute_program5"); - GLAD_GL_NV_vertex_attrib_integer_64bit = has_ext("GL_NV_vertex_attrib_integer_64bit"); - GLAD_GL_EXT_paletted_texture = has_ext("GL_EXT_paletted_texture"); - GLAD_GL_ARB_texture_buffer_object = has_ext("GL_ARB_texture_buffer_object"); - GLAD_GL_ATI_pn_triangles = has_ext("GL_ATI_pn_triangles"); - GLAD_GL_SGIX_resample = has_ext("GL_SGIX_resample"); - GLAD_GL_SGIX_flush_raster = has_ext("GL_SGIX_flush_raster"); - GLAD_GL_EXT_light_texture = has_ext("GL_EXT_light_texture"); - GLAD_GL_ARB_point_sprite = has_ext("GL_ARB_point_sprite"); - GLAD_GL_SUN_convolution_border_modes = has_ext("GL_SUN_convolution_border_modes"); - GLAD_GL_NV_parameter_buffer_object2 = has_ext("GL_NV_parameter_buffer_object2"); - GLAD_GL_ARB_half_float_pixel = has_ext("GL_ARB_half_float_pixel"); - GLAD_GL_NV_tessellation_program5 = has_ext("GL_NV_tessellation_program5"); - GLAD_GL_REND_screen_coordinates = has_ext("GL_REND_screen_coordinates"); - GLAD_GL_HP_image_transform = has_ext("GL_HP_image_transform"); - GLAD_GL_EXT_packed_float = has_ext("GL_EXT_packed_float"); - GLAD_GL_OML_subsample = has_ext("GL_OML_subsample"); - GLAD_GL_SGIX_vertex_preclip = has_ext("GL_SGIX_vertex_preclip"); - GLAD_GL_SGIX_texture_scale_bias = has_ext("GL_SGIX_texture_scale_bias"); - GLAD_GL_AMD_draw_buffers_blend = has_ext("GL_AMD_draw_buffers_blend"); - GLAD_GL_APPLE_texture_range = has_ext("GL_APPLE_texture_range"); - GLAD_GL_EXT_texture_array = has_ext("GL_EXT_texture_array"); - GLAD_GL_NV_texture_barrier = has_ext("GL_NV_texture_barrier"); - GLAD_GL_ARB_texture_query_levels = has_ext("GL_ARB_texture_query_levels"); - GLAD_GL_NV_texgen_emboss = has_ext("GL_NV_texgen_emboss"); - GLAD_GL_EXT_texture_swizzle = has_ext("GL_EXT_texture_swizzle"); - GLAD_GL_ARB_texture_rg = has_ext("GL_ARB_texture_rg"); - GLAD_GL_ARB_vertex_type_2_10_10_10_rev = has_ext("GL_ARB_vertex_type_2_10_10_10_rev"); - GLAD_GL_ARB_fragment_shader = has_ext("GL_ARB_fragment_shader"); - GLAD_GL_3DFX_tbuffer = has_ext("GL_3DFX_tbuffer"); - GLAD_GL_GREMEDY_frame_terminator = has_ext("GL_GREMEDY_frame_terminator"); - GLAD_GL_ARB_blend_func_extended = has_ext("GL_ARB_blend_func_extended"); - GLAD_GL_EXT_separate_shader_objects = has_ext("GL_EXT_separate_shader_objects"); - GLAD_GL_NV_texture_multisample = has_ext("GL_NV_texture_multisample"); - GLAD_GL_ARB_shader_objects = has_ext("GL_ARB_shader_objects"); - GLAD_GL_ARB_framebuffer_object = has_ext("GL_ARB_framebuffer_object"); - GLAD_GL_ATI_envmap_bumpmap = has_ext("GL_ATI_envmap_bumpmap"); - GLAD_GL_ARB_robust_buffer_access_behavior = has_ext("GL_ARB_robust_buffer_access_behavior"); - GLAD_GL_ARB_shader_stencil_export = has_ext("GL_ARB_shader_stencil_export"); - GLAD_GL_NV_texture_rectangle = has_ext("GL_NV_texture_rectangle"); - GLAD_GL_ARB_enhanced_layouts = has_ext("GL_ARB_enhanced_layouts"); - GLAD_GL_ARB_texture_rectangle = has_ext("GL_ARB_texture_rectangle"); - GLAD_GL_SGI_texture_color_table = has_ext("GL_SGI_texture_color_table"); - GLAD_GL_ATI_map_object_buffer = has_ext("GL_ATI_map_object_buffer"); - GLAD_GL_ARB_robustness = has_ext("GL_ARB_robustness"); - GLAD_GL_NV_pixel_data_range = has_ext("GL_NV_pixel_data_range"); - GLAD_GL_EXT_framebuffer_blit = has_ext("GL_EXT_framebuffer_blit"); - GLAD_GL_ARB_gpu_shader_fp64 = has_ext("GL_ARB_gpu_shader_fp64"); - GLAD_GL_NV_command_list = has_ext("GL_NV_command_list"); - GLAD_GL_SGIX_depth_texture = has_ext("GL_SGIX_depth_texture"); - GLAD_GL_EXT_vertex_weighting = has_ext("GL_EXT_vertex_weighting"); - GLAD_GL_GREMEDY_string_marker = has_ext("GL_GREMEDY_string_marker"); - GLAD_GL_ARB_texture_compression_bptc = has_ext("GL_ARB_texture_compression_bptc"); - GLAD_GL_EXT_subtexture = has_ext("GL_EXT_subtexture"); - GLAD_GL_EXT_pixel_transform_color_table = has_ext("GL_EXT_pixel_transform_color_table"); - GLAD_GL_EXT_texture_compression_rgtc = has_ext("GL_EXT_texture_compression_rgtc"); - GLAD_GL_ARB_shader_atomic_counter_ops = has_ext("GL_ARB_shader_atomic_counter_ops"); - GLAD_GL_SGIX_depth_pass_instrument = has_ext("GL_SGIX_depth_pass_instrument"); - GLAD_GL_EXT_gpu_program_parameters = has_ext("GL_EXT_gpu_program_parameters"); - GLAD_GL_NV_evaluators = has_ext("GL_NV_evaluators"); - GLAD_GL_SGIS_texture_filter4 = has_ext("GL_SGIS_texture_filter4"); - GLAD_GL_AMD_performance_monitor = has_ext("GL_AMD_performance_monitor"); - GLAD_GL_NV_geometry_shader4 = has_ext("GL_NV_geometry_shader4"); - GLAD_GL_EXT_stencil_clear_tag = has_ext("GL_EXT_stencil_clear_tag"); - GLAD_GL_NV_vertex_program1_1 = has_ext("GL_NV_vertex_program1_1"); - GLAD_GL_NV_present_video = has_ext("GL_NV_present_video"); - GLAD_GL_ARB_texture_compression_rgtc = has_ext("GL_ARB_texture_compression_rgtc"); - GLAD_GL_HP_convolution_border_modes = has_ext("GL_HP_convolution_border_modes"); - GLAD_GL_EXT_shader_integer_mix = has_ext("GL_EXT_shader_integer_mix"); - GLAD_GL_SGIX_framezoom = has_ext("GL_SGIX_framezoom"); - GLAD_GL_ARB_stencil_texturing = has_ext("GL_ARB_stencil_texturing"); - GLAD_GL_ARB_shader_clock = has_ext("GL_ARB_shader_clock"); - GLAD_GL_NV_shader_atomic_fp16_vector = has_ext("GL_NV_shader_atomic_fp16_vector"); - GLAD_GL_SGIX_fog_offset = has_ext("GL_SGIX_fog_offset"); - GLAD_GL_ARB_draw_elements_base_vertex = has_ext("GL_ARB_draw_elements_base_vertex"); - GLAD_GL_INGR_interlace_read = has_ext("GL_INGR_interlace_read"); - GLAD_GL_NV_transform_feedback = has_ext("GL_NV_transform_feedback"); - GLAD_GL_NV_fragment_program = has_ext("GL_NV_fragment_program"); - GLAD_GL_AMD_stencil_operation_extended = has_ext("GL_AMD_stencil_operation_extended"); - GLAD_GL_ARB_seamless_cubemap_per_texture = has_ext("GL_ARB_seamless_cubemap_per_texture"); - GLAD_GL_ARB_instanced_arrays = has_ext("GL_ARB_instanced_arrays"); - GLAD_GL_EXT_polygon_offset = has_ext("GL_EXT_polygon_offset"); - GLAD_GL_NV_vertex_array_range2 = has_ext("GL_NV_vertex_array_range2"); - GLAD_GL_KHR_robustness = has_ext("GL_KHR_robustness"); - GLAD_GL_AMD_sparse_texture = has_ext("GL_AMD_sparse_texture"); - GLAD_GL_ARB_clip_control = has_ext("GL_ARB_clip_control"); - GLAD_GL_NV_fragment_coverage_to_color = has_ext("GL_NV_fragment_coverage_to_color"); - GLAD_GL_NV_fence = has_ext("GL_NV_fence"); - GLAD_GL_ARB_texture_buffer_range = has_ext("GL_ARB_texture_buffer_range"); - GLAD_GL_SUN_mesh_array = has_ext("GL_SUN_mesh_array"); - GLAD_GL_ARB_vertex_attrib_binding = has_ext("GL_ARB_vertex_attrib_binding"); - GLAD_GL_ARB_framebuffer_no_attachments = has_ext("GL_ARB_framebuffer_no_attachments"); - GLAD_GL_ARB_cl_event = has_ext("GL_ARB_cl_event"); - GLAD_GL_ARB_derivative_control = has_ext("GL_ARB_derivative_control"); - GLAD_GL_NV_packed_depth_stencil = has_ext("GL_NV_packed_depth_stencil"); - GLAD_GL_OES_single_precision = has_ext("GL_OES_single_precision"); - GLAD_GL_NV_primitive_restart = has_ext("GL_NV_primitive_restart"); - GLAD_GL_SUN_global_alpha = has_ext("GL_SUN_global_alpha"); - GLAD_GL_ARB_fragment_shader_interlock = has_ext("GL_ARB_fragment_shader_interlock"); - GLAD_GL_EXT_texture_object = has_ext("GL_EXT_texture_object"); - GLAD_GL_AMD_name_gen_delete = has_ext("GL_AMD_name_gen_delete"); - GLAD_GL_NV_texture_compression_vtc = has_ext("GL_NV_texture_compression_vtc"); - GLAD_GL_NV_sample_mask_override_coverage = has_ext("GL_NV_sample_mask_override_coverage"); - GLAD_GL_NV_texture_shader3 = has_ext("GL_NV_texture_shader3"); - GLAD_GL_NV_texture_shader2 = has_ext("GL_NV_texture_shader2"); - GLAD_GL_EXT_texture = has_ext("GL_EXT_texture"); - GLAD_GL_ARB_buffer_storage = has_ext("GL_ARB_buffer_storage"); - GLAD_GL_AMD_shader_atomic_counter_ops = has_ext("GL_AMD_shader_atomic_counter_ops"); - GLAD_GL_APPLE_vertex_program_evaluators = has_ext("GL_APPLE_vertex_program_evaluators"); - GLAD_GL_ARB_multi_bind = has_ext("GL_ARB_multi_bind"); - GLAD_GL_ARB_explicit_uniform_location = has_ext("GL_ARB_explicit_uniform_location"); - GLAD_GL_ARB_depth_buffer_float = has_ext("GL_ARB_depth_buffer_float"); - GLAD_GL_NV_path_rendering_shared_edge = has_ext("GL_NV_path_rendering_shared_edge"); - GLAD_GL_SGIX_shadow_ambient = has_ext("GL_SGIX_shadow_ambient"); - GLAD_GL_ARB_texture_cube_map = has_ext("GL_ARB_texture_cube_map"); - GLAD_GL_AMD_vertex_shader_viewport_index = has_ext("GL_AMD_vertex_shader_viewport_index"); - GLAD_GL_SGIX_list_priority = has_ext("GL_SGIX_list_priority"); - GLAD_GL_NV_vertex_buffer_unified_memory = has_ext("GL_NV_vertex_buffer_unified_memory"); - GLAD_GL_NV_uniform_buffer_unified_memory = has_ext("GL_NV_uniform_buffer_unified_memory"); - GLAD_GL_EXT_texture_env_dot3 = has_ext("GL_EXT_texture_env_dot3"); - GLAD_GL_ATI_texture_env_combine3 = has_ext("GL_ATI_texture_env_combine3"); - GLAD_GL_ARB_map_buffer_alignment = has_ext("GL_ARB_map_buffer_alignment"); - GLAD_GL_NV_blend_equation_advanced = has_ext("GL_NV_blend_equation_advanced"); - GLAD_GL_SGIS_sharpen_texture = has_ext("GL_SGIS_sharpen_texture"); - GLAD_GL_KHR_robust_buffer_access_behavior = has_ext("GL_KHR_robust_buffer_access_behavior"); - GLAD_GL_ARB_pipeline_statistics_query = has_ext("GL_ARB_pipeline_statistics_query"); - GLAD_GL_ARB_vertex_program = has_ext("GL_ARB_vertex_program"); - GLAD_GL_ARB_texture_rgb10_a2ui = has_ext("GL_ARB_texture_rgb10_a2ui"); - GLAD_GL_OML_interlace = has_ext("GL_OML_interlace"); - GLAD_GL_ATI_pixel_format_float = has_ext("GL_ATI_pixel_format_float"); - GLAD_GL_NV_geometry_shader_passthrough = has_ext("GL_NV_geometry_shader_passthrough"); - GLAD_GL_ARB_vertex_buffer_object = has_ext("GL_ARB_vertex_buffer_object"); - GLAD_GL_EXT_shadow_funcs = has_ext("GL_EXT_shadow_funcs"); - GLAD_GL_ATI_text_fragment_shader = has_ext("GL_ATI_text_fragment_shader"); - GLAD_GL_NV_vertex_array_range = has_ext("GL_NV_vertex_array_range"); - GLAD_GL_SGIX_fragment_lighting = has_ext("GL_SGIX_fragment_lighting"); - GLAD_GL_NV_texture_expand_normal = has_ext("GL_NV_texture_expand_normal"); - GLAD_GL_NV_framebuffer_multisample_coverage = has_ext("GL_NV_framebuffer_multisample_coverage"); - GLAD_GL_EXT_timer_query = has_ext("GL_EXT_timer_query"); - GLAD_GL_EXT_vertex_array_bgra = has_ext("GL_EXT_vertex_array_bgra"); - GLAD_GL_NV_bindless_texture = has_ext("GL_NV_bindless_texture"); - GLAD_GL_KHR_debug = has_ext("GL_KHR_debug"); - GLAD_GL_SGIS_texture_border_clamp = has_ext("GL_SGIS_texture_border_clamp"); - GLAD_GL_ATI_vertex_attrib_array_object = has_ext("GL_ATI_vertex_attrib_array_object"); - GLAD_GL_SGIX_clipmap = has_ext("GL_SGIX_clipmap"); - GLAD_GL_EXT_geometry_shader4 = has_ext("GL_EXT_geometry_shader4"); - GLAD_GL_ARB_shader_texture_image_samples = has_ext("GL_ARB_shader_texture_image_samples"); - GLAD_GL_MESA_ycbcr_texture = has_ext("GL_MESA_ycbcr_texture"); - GLAD_GL_MESAX_texture_stack = has_ext("GL_MESAX_texture_stack"); - GLAD_GL_AMD_seamless_cubemap_per_texture = has_ext("GL_AMD_seamless_cubemap_per_texture"); - GLAD_GL_EXT_bindable_uniform = has_ext("GL_EXT_bindable_uniform"); - GLAD_GL_KHR_texture_compression_astc_hdr = has_ext("GL_KHR_texture_compression_astc_hdr"); - GLAD_GL_ARB_shader_ballot = has_ext("GL_ARB_shader_ballot"); - GLAD_GL_KHR_blend_equation_advanced = has_ext("GL_KHR_blend_equation_advanced"); - GLAD_GL_ARB_fragment_program_shadow = has_ext("GL_ARB_fragment_program_shadow"); - GLAD_GL_ATI_element_array = has_ext("GL_ATI_element_array"); - GLAD_GL_AMD_texture_texture4 = has_ext("GL_AMD_texture_texture4"); - GLAD_GL_SGIX_reference_plane = has_ext("GL_SGIX_reference_plane"); - GLAD_GL_EXT_stencil_two_side = has_ext("GL_EXT_stencil_two_side"); - GLAD_GL_ARB_transform_feedback_overflow_query = has_ext("GL_ARB_transform_feedback_overflow_query"); - GLAD_GL_SGIX_texture_lod_bias = has_ext("GL_SGIX_texture_lod_bias"); - GLAD_GL_KHR_no_error = has_ext("GL_KHR_no_error"); - GLAD_GL_NV_explicit_multisample = has_ext("GL_NV_explicit_multisample"); - GLAD_GL_IBM_static_data = has_ext("GL_IBM_static_data"); - GLAD_GL_EXT_clip_volume_hint = has_ext("GL_EXT_clip_volume_hint"); - GLAD_GL_EXT_texture_perturb_normal = has_ext("GL_EXT_texture_perturb_normal"); - GLAD_GL_NV_fragment_program2 = has_ext("GL_NV_fragment_program2"); - GLAD_GL_NV_fragment_program4 = has_ext("GL_NV_fragment_program4"); - GLAD_GL_EXT_point_parameters = has_ext("GL_EXT_point_parameters"); - GLAD_GL_PGI_misc_hints = has_ext("GL_PGI_misc_hints"); - GLAD_GL_SGIX_subsample = has_ext("GL_SGIX_subsample"); - GLAD_GL_AMD_shader_stencil_export = has_ext("GL_AMD_shader_stencil_export"); - GLAD_GL_ARB_shader_texture_lod = has_ext("GL_ARB_shader_texture_lod"); - GLAD_GL_ARB_vertex_shader = has_ext("GL_ARB_vertex_shader"); - GLAD_GL_ARB_depth_clamp = has_ext("GL_ARB_depth_clamp"); - GLAD_GL_SGIS_texture_select = has_ext("GL_SGIS_texture_select"); - GLAD_GL_NV_texture_shader = has_ext("GL_NV_texture_shader"); - GLAD_GL_ARB_tessellation_shader = has_ext("GL_ARB_tessellation_shader"); - GLAD_GL_EXT_draw_buffers2 = has_ext("GL_EXT_draw_buffers2"); - GLAD_GL_ARB_vertex_attrib_64bit = has_ext("GL_ARB_vertex_attrib_64bit"); - GLAD_GL_EXT_texture_filter_minmax = has_ext("GL_EXT_texture_filter_minmax"); - GLAD_GL_WIN_specular_fog = has_ext("GL_WIN_specular_fog"); - GLAD_GL_AMD_interleaved_elements = has_ext("GL_AMD_interleaved_elements"); - GLAD_GL_ARB_fragment_program = has_ext("GL_ARB_fragment_program"); - GLAD_GL_OML_resample = has_ext("GL_OML_resample"); - GLAD_GL_APPLE_ycbcr_422 = has_ext("GL_APPLE_ycbcr_422"); - GLAD_GL_SGIX_texture_add_env = has_ext("GL_SGIX_texture_add_env"); - GLAD_GL_ARB_shadow_ambient = has_ext("GL_ARB_shadow_ambient"); - GLAD_GL_ARB_texture_storage = has_ext("GL_ARB_texture_storage"); - GLAD_GL_EXT_pixel_buffer_object = has_ext("GL_EXT_pixel_buffer_object"); - GLAD_GL_ARB_copy_image = has_ext("GL_ARB_copy_image"); - GLAD_GL_SGIS_pixel_texture = has_ext("GL_SGIS_pixel_texture"); - GLAD_GL_SGIS_generate_mipmap = has_ext("GL_SGIS_generate_mipmap"); - GLAD_GL_SGIX_instruments = has_ext("GL_SGIX_instruments"); - GLAD_GL_HP_texture_lighting = has_ext("GL_HP_texture_lighting"); - GLAD_GL_ARB_shader_storage_buffer_object = has_ext("GL_ARB_shader_storage_buffer_object"); - GLAD_GL_EXT_sparse_texture2 = has_ext("GL_EXT_sparse_texture2"); - GLAD_GL_EXT_blend_minmax = has_ext("GL_EXT_blend_minmax"); - GLAD_GL_MESA_pack_invert = has_ext("GL_MESA_pack_invert"); - GLAD_GL_ARB_base_instance = has_ext("GL_ARB_base_instance"); - GLAD_GL_SGIX_convolution_accuracy = has_ext("GL_SGIX_convolution_accuracy"); - GLAD_GL_PGI_vertex_hints = has_ext("GL_PGI_vertex_hints"); - GLAD_GL_AMD_transform_feedback4 = has_ext("GL_AMD_transform_feedback4"); - GLAD_GL_ARB_ES3_1_compatibility = has_ext("GL_ARB_ES3_1_compatibility"); - GLAD_GL_EXT_texture_integer = has_ext("GL_EXT_texture_integer"); - GLAD_GL_ARB_texture_multisample = has_ext("GL_ARB_texture_multisample"); - GLAD_GL_AMD_gpu_shader_int64 = has_ext("GL_AMD_gpu_shader_int64"); - GLAD_GL_S3_s3tc = has_ext("GL_S3_s3tc"); - GLAD_GL_ARB_query_buffer_object = has_ext("GL_ARB_query_buffer_object"); - GLAD_GL_AMD_vertex_shader_tessellator = has_ext("GL_AMD_vertex_shader_tessellator"); - GLAD_GL_ARB_invalidate_subdata = has_ext("GL_ARB_invalidate_subdata"); - GLAD_GL_EXT_index_material = has_ext("GL_EXT_index_material"); - GLAD_GL_NV_blend_equation_advanced_coherent = has_ext("GL_NV_blend_equation_advanced_coherent"); - GLAD_GL_KHR_texture_compression_astc_sliced_3d = has_ext("GL_KHR_texture_compression_astc_sliced_3d"); - GLAD_GL_INTEL_parallel_arrays = has_ext("GL_INTEL_parallel_arrays"); - GLAD_GL_ATI_draw_buffers = has_ext("GL_ATI_draw_buffers"); - GLAD_GL_EXT_cmyka = has_ext("GL_EXT_cmyka"); - GLAD_GL_SGIX_pixel_texture = has_ext("GL_SGIX_pixel_texture"); - GLAD_GL_APPLE_specular_vector = has_ext("GL_APPLE_specular_vector"); - GLAD_GL_ARB_compatibility = has_ext("GL_ARB_compatibility"); - GLAD_GL_ARB_timer_query = has_ext("GL_ARB_timer_query"); - GLAD_GL_SGIX_interlace = has_ext("GL_SGIX_interlace"); - GLAD_GL_NV_parameter_buffer_object = has_ext("GL_NV_parameter_buffer_object"); - GLAD_GL_AMD_shader_trinary_minmax = has_ext("GL_AMD_shader_trinary_minmax"); - GLAD_GL_ARB_direct_state_access = has_ext("GL_ARB_direct_state_access"); - GLAD_GL_EXT_rescale_normal = has_ext("GL_EXT_rescale_normal"); - GLAD_GL_ARB_pixel_buffer_object = has_ext("GL_ARB_pixel_buffer_object"); - GLAD_GL_ARB_uniform_buffer_object = has_ext("GL_ARB_uniform_buffer_object"); - GLAD_GL_ARB_vertex_type_10f_11f_11f_rev = has_ext("GL_ARB_vertex_type_10f_11f_11f_rev"); - GLAD_GL_ARB_texture_swizzle = has_ext("GL_ARB_texture_swizzle"); - GLAD_GL_NV_transform_feedback2 = has_ext("GL_NV_transform_feedback2"); - GLAD_GL_SGIX_async_pixel = has_ext("GL_SGIX_async_pixel"); - GLAD_GL_NV_fragment_program_option = has_ext("GL_NV_fragment_program_option"); - GLAD_GL_ARB_explicit_attrib_location = has_ext("GL_ARB_explicit_attrib_location"); - GLAD_GL_EXT_blend_color = has_ext("GL_EXT_blend_color"); - GLAD_GL_NV_shader_thread_group = has_ext("GL_NV_shader_thread_group"); - GLAD_GL_EXT_stencil_wrap = has_ext("GL_EXT_stencil_wrap"); - GLAD_GL_EXT_index_array_formats = has_ext("GL_EXT_index_array_formats"); - GLAD_GL_OVR_multiview2 = has_ext("GL_OVR_multiview2"); - GLAD_GL_EXT_histogram = has_ext("GL_EXT_histogram"); - GLAD_GL_ARB_get_texture_sub_image = has_ext("GL_ARB_get_texture_sub_image"); - GLAD_GL_SGIS_point_parameters = has_ext("GL_SGIS_point_parameters"); - GLAD_GL_SGIX_ycrcb = has_ext("GL_SGIX_ycrcb"); - GLAD_GL_EXT_direct_state_access = has_ext("GL_EXT_direct_state_access"); - GLAD_GL_ARB_cull_distance = has_ext("GL_ARB_cull_distance"); - GLAD_GL_AMD_sample_positions = has_ext("GL_AMD_sample_positions"); - GLAD_GL_NV_vertex_program = has_ext("GL_NV_vertex_program"); - GLAD_GL_NV_shader_thread_shuffle = has_ext("GL_NV_shader_thread_shuffle"); - GLAD_GL_ARB_shader_precision = has_ext("GL_ARB_shader_precision"); - GLAD_GL_EXT_vertex_shader = has_ext("GL_EXT_vertex_shader"); - GLAD_GL_EXT_blend_func_separate = has_ext("GL_EXT_blend_func_separate"); - GLAD_GL_APPLE_fence = has_ext("GL_APPLE_fence"); - GLAD_GL_OES_byte_coordinates = has_ext("GL_OES_byte_coordinates"); - GLAD_GL_ARB_transpose_matrix = has_ext("GL_ARB_transpose_matrix"); - GLAD_GL_ARB_provoking_vertex = has_ext("GL_ARB_provoking_vertex"); - GLAD_GL_EXT_fog_coord = has_ext("GL_EXT_fog_coord"); - GLAD_GL_EXT_vertex_array = has_ext("GL_EXT_vertex_array"); - GLAD_GL_ARB_half_float_vertex = has_ext("GL_ARB_half_float_vertex"); - GLAD_GL_EXT_blend_equation_separate = has_ext("GL_EXT_blend_equation_separate"); - GLAD_GL_NV_framebuffer_mixed_samples = has_ext("GL_NV_framebuffer_mixed_samples"); - GLAD_GL_NVX_conditional_render = has_ext("GL_NVX_conditional_render"); - GLAD_GL_ARB_multi_draw_indirect = has_ext("GL_ARB_multi_draw_indirect"); - GLAD_GL_EXT_raster_multisample = has_ext("GL_EXT_raster_multisample"); - GLAD_GL_NV_copy_image = has_ext("GL_NV_copy_image"); - GLAD_GL_ARB_fragment_layer_viewport = has_ext("GL_ARB_fragment_layer_viewport"); - GLAD_GL_INTEL_framebuffer_CMAA = has_ext("GL_INTEL_framebuffer_CMAA"); - GLAD_GL_ARB_transform_feedback2 = has_ext("GL_ARB_transform_feedback2"); - GLAD_GL_ARB_transform_feedback3 = has_ext("GL_ARB_transform_feedback3"); - GLAD_GL_SGIX_ycrcba = has_ext("GL_SGIX_ycrcba"); - GLAD_GL_EXT_debug_marker = has_ext("GL_EXT_debug_marker"); - GLAD_GL_EXT_bgra = has_ext("GL_EXT_bgra"); - GLAD_GL_ARB_sparse_texture_clamp = has_ext("GL_ARB_sparse_texture_clamp"); - GLAD_GL_EXT_pixel_transform = has_ext("GL_EXT_pixel_transform"); - GLAD_GL_ARB_conservative_depth = has_ext("GL_ARB_conservative_depth"); - GLAD_GL_ATI_fragment_shader = has_ext("GL_ATI_fragment_shader"); - GLAD_GL_ARB_vertex_array_object = has_ext("GL_ARB_vertex_array_object"); - GLAD_GL_SUN_triangle_list = has_ext("GL_SUN_triangle_list"); - GLAD_GL_EXT_texture_env_add = has_ext("GL_EXT_texture_env_add"); - GLAD_GL_EXT_packed_depth_stencil = has_ext("GL_EXT_packed_depth_stencil"); - GLAD_GL_EXT_texture_mirror_clamp = has_ext("GL_EXT_texture_mirror_clamp"); - GLAD_GL_NV_multisample_filter_hint = has_ext("GL_NV_multisample_filter_hint"); - GLAD_GL_APPLE_float_pixels = has_ext("GL_APPLE_float_pixels"); - GLAD_GL_ARB_transform_feedback_instanced = has_ext("GL_ARB_transform_feedback_instanced"); - GLAD_GL_SGIX_async = has_ext("GL_SGIX_async"); - GLAD_GL_EXT_texture_compression_latc = has_ext("GL_EXT_texture_compression_latc"); - GLAD_GL_NV_shader_atomic_float = has_ext("GL_NV_shader_atomic_float"); - GLAD_GL_ARB_shading_language_100 = has_ext("GL_ARB_shading_language_100"); - GLAD_GL_INTEL_performance_query = has_ext("GL_INTEL_performance_query"); - GLAD_GL_ARB_texture_mirror_clamp_to_edge = has_ext("GL_ARB_texture_mirror_clamp_to_edge"); - GLAD_GL_NV_gpu_shader5 = has_ext("GL_NV_gpu_shader5"); - GLAD_GL_NV_bindless_multi_draw_indirect_count = has_ext("GL_NV_bindless_multi_draw_indirect_count"); - GLAD_GL_ARB_ES2_compatibility = has_ext("GL_ARB_ES2_compatibility"); - GLAD_GL_ARB_indirect_parameters = has_ext("GL_ARB_indirect_parameters"); - GLAD_GL_NV_half_float = has_ext("GL_NV_half_float"); - GLAD_GL_ARB_ES3_2_compatibility = has_ext("GL_ARB_ES3_2_compatibility"); - GLAD_GL_ATI_texture_mirror_once = has_ext("GL_ATI_texture_mirror_once"); - GLAD_GL_IBM_rasterpos_clip = has_ext("GL_IBM_rasterpos_clip"); - GLAD_GL_SGIX_shadow = has_ext("GL_SGIX_shadow"); - GLAD_GL_EXT_polygon_offset_clamp = has_ext("GL_EXT_polygon_offset_clamp"); - GLAD_GL_NV_deep_texture3D = has_ext("GL_NV_deep_texture3D"); - GLAD_GL_ARB_shader_draw_parameters = has_ext("GL_ARB_shader_draw_parameters"); - GLAD_GL_SGIX_calligraphic_fragment = has_ext("GL_SGIX_calligraphic_fragment"); - GLAD_GL_ARB_shader_bit_encoding = has_ext("GL_ARB_shader_bit_encoding"); - GLAD_GL_EXT_compiled_vertex_array = has_ext("GL_EXT_compiled_vertex_array"); - GLAD_GL_NV_depth_buffer_float = has_ext("GL_NV_depth_buffer_float"); - GLAD_GL_NV_occlusion_query = has_ext("GL_NV_occlusion_query"); - GLAD_GL_APPLE_flush_buffer_range = has_ext("GL_APPLE_flush_buffer_range"); - GLAD_GL_ARB_imaging = has_ext("GL_ARB_imaging"); - GLAD_GL_ARB_draw_buffers_blend = has_ext("GL_ARB_draw_buffers_blend"); - GLAD_GL_AMD_gcn_shader = has_ext("GL_AMD_gcn_shader"); - GLAD_GL_AMD_blend_minmax_factor = has_ext("GL_AMD_blend_minmax_factor"); - GLAD_GL_EXT_texture_sRGB_decode = has_ext("GL_EXT_texture_sRGB_decode"); - GLAD_GL_ARB_shading_language_420pack = has_ext("GL_ARB_shading_language_420pack"); - GLAD_GL_ARB_shader_viewport_layer_array = has_ext("GL_ARB_shader_viewport_layer_array"); - GLAD_GL_ATI_meminfo = has_ext("GL_ATI_meminfo"); - GLAD_GL_EXT_abgr = has_ext("GL_EXT_abgr"); - GLAD_GL_AMD_pinned_memory = has_ext("GL_AMD_pinned_memory"); - GLAD_GL_EXT_texture_snorm = has_ext("GL_EXT_texture_snorm"); - GLAD_GL_SGIX_texture_coordinate_clamp = has_ext("GL_SGIX_texture_coordinate_clamp"); - GLAD_GL_ARB_clear_buffer_object = has_ext("GL_ARB_clear_buffer_object"); - GLAD_GL_ARB_multisample = has_ext("GL_ARB_multisample"); - GLAD_GL_EXT_debug_label = has_ext("GL_EXT_debug_label"); - GLAD_GL_ARB_sample_shading = has_ext("GL_ARB_sample_shading"); - GLAD_GL_NV_internalformat_sample_query = has_ext("GL_NV_internalformat_sample_query"); - GLAD_GL_INTEL_map_texture = has_ext("GL_INTEL_map_texture"); - GLAD_GL_ARB_texture_env_crossbar = has_ext("GL_ARB_texture_env_crossbar"); - GLAD_GL_EXT_422_pixels = has_ext("GL_EXT_422_pixels"); - GLAD_GL_ARB_compute_shader = has_ext("GL_ARB_compute_shader"); - GLAD_GL_EXT_blend_logic_op = has_ext("GL_EXT_blend_logic_op"); - GLAD_GL_IBM_cull_vertex = has_ext("GL_IBM_cull_vertex"); - GLAD_GL_IBM_vertex_array_lists = has_ext("GL_IBM_vertex_array_lists"); - GLAD_GL_ARB_color_buffer_float = has_ext("GL_ARB_color_buffer_float"); - GLAD_GL_ARB_bindless_texture = has_ext("GL_ARB_bindless_texture"); - GLAD_GL_ARB_window_pos = has_ext("GL_ARB_window_pos"); - GLAD_GL_ARB_internalformat_query = has_ext("GL_ARB_internalformat_query"); - GLAD_GL_ARB_shadow = has_ext("GL_ARB_shadow"); - GLAD_GL_ARB_texture_mirrored_repeat = has_ext("GL_ARB_texture_mirrored_repeat"); - GLAD_GL_EXT_shader_image_load_store = has_ext("GL_EXT_shader_image_load_store"); - GLAD_GL_EXT_copy_texture = has_ext("GL_EXT_copy_texture"); - GLAD_GL_NV_register_combiners2 = has_ext("GL_NV_register_combiners2"); - GLAD_GL_SGIX_ycrcb_subsample = has_ext("GL_SGIX_ycrcb_subsample"); - GLAD_GL_SGIX_ir_instrument1 = has_ext("GL_SGIX_ir_instrument1"); - GLAD_GL_NV_draw_texture = has_ext("GL_NV_draw_texture"); - GLAD_GL_EXT_texture_shared_exponent = has_ext("GL_EXT_texture_shared_exponent"); - GLAD_GL_EXT_draw_instanced = has_ext("GL_EXT_draw_instanced"); - GLAD_GL_NV_copy_depth_to_color = has_ext("GL_NV_copy_depth_to_color"); - GLAD_GL_ARB_viewport_array = has_ext("GL_ARB_viewport_array"); - GLAD_GL_ARB_separate_shader_objects = has_ext("GL_ARB_separate_shader_objects"); - GLAD_GL_EXT_depth_bounds_test = has_ext("GL_EXT_depth_bounds_test"); - GLAD_GL_EXT_shared_texture_palette = has_ext("GL_EXT_shared_texture_palette"); - GLAD_GL_ARB_texture_env_add = has_ext("GL_ARB_texture_env_add"); - GLAD_GL_NV_video_capture = has_ext("GL_NV_video_capture"); - GLAD_GL_ARB_sampler_objects = has_ext("GL_ARB_sampler_objects"); - GLAD_GL_ARB_matrix_palette = has_ext("GL_ARB_matrix_palette"); - GLAD_GL_SGIS_texture_color_mask = has_ext("GL_SGIS_texture_color_mask"); - GLAD_GL_EXT_packed_pixels = has_ext("GL_EXT_packed_pixels"); - GLAD_GL_EXT_coordinate_frame = has_ext("GL_EXT_coordinate_frame"); - GLAD_GL_ARB_texture_compression = has_ext("GL_ARB_texture_compression"); - GLAD_GL_APPLE_aux_depth_stencil = has_ext("GL_APPLE_aux_depth_stencil"); - GLAD_GL_ARB_shader_subroutine = has_ext("GL_ARB_shader_subroutine"); - GLAD_GL_EXT_framebuffer_sRGB = has_ext("GL_EXT_framebuffer_sRGB"); - GLAD_GL_ARB_texture_storage_multisample = has_ext("GL_ARB_texture_storage_multisample"); - GLAD_GL_KHR_blend_equation_advanced_coherent = has_ext("GL_KHR_blend_equation_advanced_coherent"); - GLAD_GL_EXT_vertex_attrib_64bit = has_ext("GL_EXT_vertex_attrib_64bit"); - GLAD_GL_ARB_depth_texture = has_ext("GL_ARB_depth_texture"); - GLAD_GL_NV_shader_buffer_store = has_ext("GL_NV_shader_buffer_store"); - GLAD_GL_OES_query_matrix = has_ext("GL_OES_query_matrix"); - GLAD_GL_MESA_window_pos = has_ext("GL_MESA_window_pos"); - GLAD_GL_NV_fill_rectangle = has_ext("GL_NV_fill_rectangle"); - GLAD_GL_NV_shader_storage_buffer_object = has_ext("GL_NV_shader_storage_buffer_object"); - GLAD_GL_ARB_texture_query_lod = has_ext("GL_ARB_texture_query_lod"); - GLAD_GL_ARB_copy_buffer = has_ext("GL_ARB_copy_buffer"); - GLAD_GL_ARB_shader_image_size = has_ext("GL_ARB_shader_image_size"); - GLAD_GL_NV_shader_atomic_counters = has_ext("GL_NV_shader_atomic_counters"); - GLAD_GL_APPLE_object_purgeable = has_ext("GL_APPLE_object_purgeable"); - GLAD_GL_ARB_occlusion_query = has_ext("GL_ARB_occlusion_query"); - GLAD_GL_INGR_color_clamp = has_ext("GL_INGR_color_clamp"); - GLAD_GL_SGI_color_table = has_ext("GL_SGI_color_table"); - GLAD_GL_NV_gpu_program5_mem_extended = has_ext("GL_NV_gpu_program5_mem_extended"); - GLAD_GL_ARB_texture_cube_map_array = has_ext("GL_ARB_texture_cube_map_array"); - GLAD_GL_SGIX_scalebias_hint = has_ext("GL_SGIX_scalebias_hint"); - GLAD_GL_EXT_gpu_shader4 = has_ext("GL_EXT_gpu_shader4"); - GLAD_GL_NV_geometry_program4 = has_ext("GL_NV_geometry_program4"); - GLAD_GL_EXT_framebuffer_multisample_blit_scaled = has_ext("GL_EXT_framebuffer_multisample_blit_scaled"); - GLAD_GL_AMD_debug_output = has_ext("GL_AMD_debug_output"); - GLAD_GL_ARB_texture_border_clamp = has_ext("GL_ARB_texture_border_clamp"); - GLAD_GL_ARB_fragment_coord_conventions = has_ext("GL_ARB_fragment_coord_conventions"); - GLAD_GL_ARB_multitexture = has_ext("GL_ARB_multitexture"); - GLAD_GL_SGIX_polynomial_ffd = has_ext("GL_SGIX_polynomial_ffd"); - GLAD_GL_EXT_provoking_vertex = has_ext("GL_EXT_provoking_vertex"); - GLAD_GL_ARB_point_parameters = has_ext("GL_ARB_point_parameters"); - GLAD_GL_ARB_shader_image_load_store = has_ext("GL_ARB_shader_image_load_store"); - GLAD_GL_ARB_conditional_render_inverted = has_ext("GL_ARB_conditional_render_inverted"); - GLAD_GL_HP_occlusion_test = has_ext("GL_HP_occlusion_test"); - GLAD_GL_ARB_ES3_compatibility = has_ext("GL_ARB_ES3_compatibility"); - GLAD_GL_ARB_texture_barrier = has_ext("GL_ARB_texture_barrier"); - GLAD_GL_ARB_texture_buffer_object_rgb32 = has_ext("GL_ARB_texture_buffer_object_rgb32"); - GLAD_GL_NV_bindless_multi_draw_indirect = has_ext("GL_NV_bindless_multi_draw_indirect"); - GLAD_GL_SGIX_texture_multi_buffer = has_ext("GL_SGIX_texture_multi_buffer"); - GLAD_GL_EXT_transform_feedback = has_ext("GL_EXT_transform_feedback"); - GLAD_GL_KHR_texture_compression_astc_ldr = has_ext("GL_KHR_texture_compression_astc_ldr"); - GLAD_GL_3DFX_multisample = has_ext("GL_3DFX_multisample"); - GLAD_GL_INTEL_fragment_shader_ordering = has_ext("GL_INTEL_fragment_shader_ordering"); - GLAD_GL_ARB_texture_env_dot3 = has_ext("GL_ARB_texture_env_dot3"); - GLAD_GL_NV_gpu_program4 = has_ext("GL_NV_gpu_program4"); - GLAD_GL_NV_gpu_program5 = has_ext("GL_NV_gpu_program5"); - GLAD_GL_NV_float_buffer = has_ext("GL_NV_float_buffer"); - GLAD_GL_SGIS_texture_edge_clamp = has_ext("GL_SGIS_texture_edge_clamp"); - GLAD_GL_ARB_framebuffer_sRGB = has_ext("GL_ARB_framebuffer_sRGB"); - GLAD_GL_SUN_slice_accum = has_ext("GL_SUN_slice_accum"); - GLAD_GL_EXT_index_texture = has_ext("GL_EXT_index_texture"); - GLAD_GL_EXT_shader_image_load_formatted = has_ext("GL_EXT_shader_image_load_formatted"); - GLAD_GL_ARB_geometry_shader4 = has_ext("GL_ARB_geometry_shader4"); - GLAD_GL_EXT_separate_specular_color = has_ext("GL_EXT_separate_specular_color"); - GLAD_GL_AMD_depth_clamp_separate = has_ext("GL_AMD_depth_clamp_separate"); - GLAD_GL_NV_conservative_raster = has_ext("GL_NV_conservative_raster"); - GLAD_GL_ARB_sparse_texture2 = has_ext("GL_ARB_sparse_texture2"); - GLAD_GL_SGIX_sprite = has_ext("GL_SGIX_sprite"); - GLAD_GL_ARB_get_program_binary = has_ext("GL_ARB_get_program_binary"); - GLAD_GL_AMD_occlusion_query_event = has_ext("GL_AMD_occlusion_query_event"); - GLAD_GL_SGIS_multisample = has_ext("GL_SGIS_multisample"); - GLAD_GL_EXT_framebuffer_object = has_ext("GL_EXT_framebuffer_object"); - GLAD_GL_ARB_robustness_isolation = has_ext("GL_ARB_robustness_isolation"); - GLAD_GL_ARB_vertex_array_bgra = has_ext("GL_ARB_vertex_array_bgra"); - GLAD_GL_APPLE_vertex_array_range = has_ext("GL_APPLE_vertex_array_range"); - GLAD_GL_AMD_query_buffer_object = has_ext("GL_AMD_query_buffer_object"); - GLAD_GL_NV_register_combiners = has_ext("GL_NV_register_combiners"); - GLAD_GL_ARB_draw_buffers = has_ext("GL_ARB_draw_buffers"); - GLAD_GL_ARB_clear_texture = has_ext("GL_ARB_clear_texture"); - GLAD_GL_ARB_debug_output = has_ext("GL_ARB_debug_output"); - GLAD_GL_SGI_color_matrix = has_ext("GL_SGI_color_matrix"); - GLAD_GL_EXT_cull_vertex = has_ext("GL_EXT_cull_vertex"); - GLAD_GL_EXT_texture_sRGB = has_ext("GL_EXT_texture_sRGB"); - GLAD_GL_APPLE_row_bytes = has_ext("GL_APPLE_row_bytes"); - GLAD_GL_NV_texgen_reflection = has_ext("GL_NV_texgen_reflection"); - GLAD_GL_IBM_multimode_draw_arrays = has_ext("GL_IBM_multimode_draw_arrays"); - GLAD_GL_APPLE_vertex_array_object = has_ext("GL_APPLE_vertex_array_object"); - GLAD_GL_3DFX_texture_compression_FXT1 = has_ext("GL_3DFX_texture_compression_FXT1"); - GLAD_GL_NV_fragment_shader_interlock = has_ext("GL_NV_fragment_shader_interlock"); - GLAD_GL_AMD_conservative_depth = has_ext("GL_AMD_conservative_depth"); - GLAD_GL_ARB_texture_float = has_ext("GL_ARB_texture_float"); - GLAD_GL_ARB_compressed_texture_pixel_storage = has_ext("GL_ARB_compressed_texture_pixel_storage"); - GLAD_GL_SGIS_detail_texture = has_ext("GL_SGIS_detail_texture"); - GLAD_GL_ARB_draw_instanced = has_ext("GL_ARB_draw_instanced"); - GLAD_GL_OES_read_format = has_ext("GL_OES_read_format"); - GLAD_GL_ATI_texture_float = has_ext("GL_ATI_texture_float"); - GLAD_GL_ARB_texture_gather = has_ext("GL_ARB_texture_gather"); - GLAD_GL_AMD_vertex_shader_layer = has_ext("GL_AMD_vertex_shader_layer"); - GLAD_GL_ARB_shading_language_include = has_ext("GL_ARB_shading_language_include"); - GLAD_GL_APPLE_client_storage = has_ext("GL_APPLE_client_storage"); - GLAD_GL_WIN_phong_shading = has_ext("GL_WIN_phong_shading"); - GLAD_GL_INGR_blend_func_separate = has_ext("GL_INGR_blend_func_separate"); - GLAD_GL_NV_path_rendering = has_ext("GL_NV_path_rendering"); - GLAD_GL_NV_conservative_raster_dilate = has_ext("GL_NV_conservative_raster_dilate"); - GLAD_GL_ATI_vertex_streams = has_ext("GL_ATI_vertex_streams"); - GLAD_GL_ARB_post_depth_coverage = has_ext("GL_ARB_post_depth_coverage"); - GLAD_GL_ARB_texture_non_power_of_two = has_ext("GL_ARB_texture_non_power_of_two"); - GLAD_GL_APPLE_rgb_422 = has_ext("GL_APPLE_rgb_422"); - GLAD_GL_EXT_texture_lod_bias = has_ext("GL_EXT_texture_lod_bias"); - GLAD_GL_ARB_gpu_shader_int64 = has_ext("GL_ARB_gpu_shader_int64"); - GLAD_GL_ARB_seamless_cube_map = has_ext("GL_ARB_seamless_cube_map"); - GLAD_GL_ARB_shader_group_vote = has_ext("GL_ARB_shader_group_vote"); - GLAD_GL_NV_vdpau_interop = has_ext("GL_NV_vdpau_interop"); - GLAD_GL_ARB_occlusion_query2 = has_ext("GL_ARB_occlusion_query2"); - GLAD_GL_ARB_internalformat_query2 = has_ext("GL_ARB_internalformat_query2"); - GLAD_GL_EXT_texture_filter_anisotropic = has_ext("GL_EXT_texture_filter_anisotropic"); - GLAD_GL_SUN_vertex = has_ext("GL_SUN_vertex"); - GLAD_GL_SGIX_igloo_interface = has_ext("GL_SGIX_igloo_interface"); - GLAD_GL_SGIS_texture_lod = has_ext("GL_SGIS_texture_lod"); - GLAD_GL_NV_vertex_program3 = has_ext("GL_NV_vertex_program3"); - GLAD_GL_ARB_draw_indirect = has_ext("GL_ARB_draw_indirect"); - GLAD_GL_NV_vertex_program4 = has_ext("GL_NV_vertex_program4"); - GLAD_GL_AMD_transform_feedback3_lines_triangles = has_ext("GL_AMD_transform_feedback3_lines_triangles"); - GLAD_GL_SGIS_fog_function = has_ext("GL_SGIS_fog_function"); - GLAD_GL_EXT_x11_sync_object = has_ext("GL_EXT_x11_sync_object"); - GLAD_GL_ARB_sync = has_ext("GL_ARB_sync"); - GLAD_GL_NV_sample_locations = has_ext("GL_NV_sample_locations"); - GLAD_GL_ARB_compute_variable_group_size = has_ext("GL_ARB_compute_variable_group_size"); - GLAD_GL_OES_fixed_point = has_ext("GL_OES_fixed_point"); - GLAD_GL_NV_blend_square = has_ext("GL_NV_blend_square"); - GLAD_GL_EXT_framebuffer_multisample = has_ext("GL_EXT_framebuffer_multisample"); - GLAD_GL_ARB_gpu_shader5 = has_ext("GL_ARB_gpu_shader5"); - GLAD_GL_SGIS_texture4D = has_ext("GL_SGIS_texture4D"); - GLAD_GL_EXT_texture3D = has_ext("GL_EXT_texture3D"); - GLAD_GL_EXT_multisample = has_ext("GL_EXT_multisample"); - GLAD_GL_EXT_secondary_color = has_ext("GL_EXT_secondary_color"); - GLAD_GL_ARB_texture_filter_minmax = has_ext("GL_ARB_texture_filter_minmax"); - GLAD_GL_ATI_vertex_array_object = has_ext("GL_ATI_vertex_array_object"); - GLAD_GL_ARB_parallel_shader_compile = has_ext("GL_ARB_parallel_shader_compile"); - GLAD_GL_NVX_gpu_memory_info = has_ext("GL_NVX_gpu_memory_info"); - GLAD_GL_ARB_sparse_texture = has_ext("GL_ARB_sparse_texture"); - GLAD_GL_SGIS_point_line_texgen = has_ext("GL_SGIS_point_line_texgen"); - GLAD_GL_ARB_sample_locations = has_ext("GL_ARB_sample_locations"); - GLAD_GL_ARB_sparse_buffer = has_ext("GL_ARB_sparse_buffer"); - GLAD_GL_EXT_draw_range_elements = has_ext("GL_EXT_draw_range_elements"); - GLAD_GL_SGIX_blend_alpha_minmax = has_ext("GL_SGIX_blend_alpha_minmax"); - GLAD_GL_KHR_context_flush_control = has_ext("GL_KHR_context_flush_control"); - 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; - if (GLVersion.major > 3 || (GLVersion.major >= 3 && GLVersion.minor >= 3)) { - max_loaded_major = 3; - max_loaded_minor = 3; - } -} - -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); - - if (!find_extensionsGL()) return 0; - load_GL_APPLE_element_array(load); - load_GL_AMD_multi_draw_indirect(load); - load_GL_SGIX_tag_sample_buffer(load); - load_GL_NV_point_sprite(load); - load_GL_ATI_separate_stencil(load); - load_GL_EXT_texture_buffer_object(load); - load_GL_ARB_vertex_blend(load); - load_GL_OVR_multiview(load); - load_GL_ARB_program_interface_query(load); - load_GL_EXT_index_func(load); - load_GL_NV_shader_buffer_load(load); - load_GL_EXT_color_subtable(load); - load_GL_SUNX_constant_data(load); - load_GL_EXT_multi_draw_arrays(load); - load_GL_ARB_shader_atomic_counters(load); - load_GL_NV_conditional_render(load); - load_GL_MESA_resize_buffers(load); - load_GL_ARB_texture_view(load); - load_GL_ARB_map_buffer_range(load); - load_GL_EXT_convolution(load); - load_GL_NV_vertex_attrib_integer_64bit(load); - load_GL_EXT_paletted_texture(load); - load_GL_ARB_texture_buffer_object(load); - load_GL_ATI_pn_triangles(load); - load_GL_SGIX_flush_raster(load); - load_GL_EXT_light_texture(load); - load_GL_HP_image_transform(load); - load_GL_AMD_draw_buffers_blend(load); - load_GL_APPLE_texture_range(load); - load_GL_EXT_texture_array(load); - load_GL_NV_texture_barrier(load); - load_GL_ARB_vertex_type_2_10_10_10_rev(load); - load_GL_3DFX_tbuffer(load); - load_GL_GREMEDY_frame_terminator(load); - load_GL_ARB_blend_func_extended(load); - load_GL_EXT_separate_shader_objects(load); - load_GL_NV_texture_multisample(load); - load_GL_ARB_shader_objects(load); - load_GL_ARB_framebuffer_object(load); - load_GL_ATI_envmap_bumpmap(load); - load_GL_ATI_map_object_buffer(load); - load_GL_ARB_robustness(load); - load_GL_NV_pixel_data_range(load); - load_GL_EXT_framebuffer_blit(load); - load_GL_ARB_gpu_shader_fp64(load); - load_GL_NV_command_list(load); - load_GL_EXT_vertex_weighting(load); - load_GL_GREMEDY_string_marker(load); - load_GL_EXT_subtexture(load); - load_GL_EXT_gpu_program_parameters(load); - load_GL_NV_evaluators(load); - load_GL_SGIS_texture_filter4(load); - load_GL_AMD_performance_monitor(load); - load_GL_EXT_stencil_clear_tag(load); - load_GL_NV_present_video(load); - load_GL_SGIX_framezoom(load); - load_GL_ARB_draw_elements_base_vertex(load); - load_GL_NV_transform_feedback(load); - load_GL_NV_fragment_program(load); - load_GL_AMD_stencil_operation_extended(load); - load_GL_ARB_instanced_arrays(load); - load_GL_EXT_polygon_offset(load); - load_GL_KHR_robustness(load); - load_GL_AMD_sparse_texture(load); - load_GL_ARB_clip_control(load); - load_GL_NV_fragment_coverage_to_color(load); - load_GL_NV_fence(load); - load_GL_ARB_texture_buffer_range(load); - load_GL_SUN_mesh_array(load); - load_GL_ARB_vertex_attrib_binding(load); - load_GL_ARB_framebuffer_no_attachments(load); - load_GL_ARB_cl_event(load); - load_GL_OES_single_precision(load); - load_GL_NV_primitive_restart(load); - load_GL_SUN_global_alpha(load); - load_GL_EXT_texture_object(load); - load_GL_AMD_name_gen_delete(load); - load_GL_ARB_buffer_storage(load); - load_GL_APPLE_vertex_program_evaluators(load); - load_GL_ARB_multi_bind(load); - load_GL_SGIX_list_priority(load); - load_GL_NV_vertex_buffer_unified_memory(load); - load_GL_NV_blend_equation_advanced(load); - load_GL_SGIS_sharpen_texture(load); - load_GL_ARB_vertex_program(load); - load_GL_ARB_vertex_buffer_object(load); - load_GL_NV_vertex_array_range(load); - load_GL_SGIX_fragment_lighting(load); - load_GL_NV_framebuffer_multisample_coverage(load); - load_GL_EXT_timer_query(load); - load_GL_NV_bindless_texture(load); - load_GL_KHR_debug(load); - load_GL_ATI_vertex_attrib_array_object(load); - load_GL_EXT_geometry_shader4(load); - load_GL_EXT_bindable_uniform(load); - load_GL_KHR_blend_equation_advanced(load); - load_GL_ATI_element_array(load); - load_GL_SGIX_reference_plane(load); - load_GL_EXT_stencil_two_side(load); - load_GL_NV_explicit_multisample(load); - load_GL_IBM_static_data(load); - load_GL_EXT_texture_perturb_normal(load); - load_GL_EXT_point_parameters(load); - load_GL_PGI_misc_hints(load); - load_GL_ARB_vertex_shader(load); - load_GL_ARB_tessellation_shader(load); - load_GL_EXT_draw_buffers2(load); - load_GL_ARB_vertex_attrib_64bit(load); - load_GL_EXT_texture_filter_minmax(load); - load_GL_AMD_interleaved_elements(load); - load_GL_ARB_fragment_program(load); - load_GL_ARB_texture_storage(load); - load_GL_ARB_copy_image(load); - load_GL_SGIS_pixel_texture(load); - load_GL_SGIX_instruments(load); - load_GL_ARB_shader_storage_buffer_object(load); - load_GL_EXT_blend_minmax(load); - load_GL_ARB_base_instance(load); - load_GL_ARB_ES3_1_compatibility(load); - load_GL_EXT_texture_integer(load); - load_GL_ARB_texture_multisample(load); - load_GL_AMD_gpu_shader_int64(load); - load_GL_AMD_vertex_shader_tessellator(load); - load_GL_ARB_invalidate_subdata(load); - load_GL_EXT_index_material(load); - load_GL_INTEL_parallel_arrays(load); - load_GL_ATI_draw_buffers(load); - load_GL_SGIX_pixel_texture(load); - load_GL_ARB_timer_query(load); - load_GL_NV_parameter_buffer_object(load); - load_GL_ARB_direct_state_access(load); - load_GL_ARB_uniform_buffer_object(load); - load_GL_NV_transform_feedback2(load); - load_GL_EXT_blend_color(load); - load_GL_EXT_histogram(load); - load_GL_ARB_get_texture_sub_image(load); - load_GL_SGIS_point_parameters(load); - load_GL_EXT_direct_state_access(load); - load_GL_AMD_sample_positions(load); - load_GL_NV_vertex_program(load); - load_GL_EXT_vertex_shader(load); - load_GL_EXT_blend_func_separate(load); - load_GL_APPLE_fence(load); - load_GL_OES_byte_coordinates(load); - load_GL_ARB_transpose_matrix(load); - load_GL_ARB_provoking_vertex(load); - load_GL_EXT_fog_coord(load); - load_GL_EXT_vertex_array(load); - load_GL_EXT_blend_equation_separate(load); - load_GL_NV_framebuffer_mixed_samples(load); - load_GL_NVX_conditional_render(load); - load_GL_ARB_multi_draw_indirect(load); - load_GL_EXT_raster_multisample(load); - load_GL_NV_copy_image(load); - load_GL_INTEL_framebuffer_CMAA(load); - load_GL_ARB_transform_feedback2(load); - load_GL_ARB_transform_feedback3(load); - load_GL_EXT_debug_marker(load); - load_GL_EXT_pixel_transform(load); - load_GL_ATI_fragment_shader(load); - load_GL_ARB_vertex_array_object(load); - load_GL_SUN_triangle_list(load); - load_GL_ARB_transform_feedback_instanced(load); - load_GL_SGIX_async(load); - load_GL_INTEL_performance_query(load); - load_GL_NV_gpu_shader5(load); - load_GL_NV_bindless_multi_draw_indirect_count(load); - load_GL_ARB_ES2_compatibility(load); - load_GL_ARB_indirect_parameters(load); - load_GL_NV_half_float(load); - load_GL_ARB_ES3_2_compatibility(load); - load_GL_EXT_polygon_offset_clamp(load); - load_GL_EXT_compiled_vertex_array(load); - load_GL_NV_depth_buffer_float(load); - load_GL_NV_occlusion_query(load); - load_GL_APPLE_flush_buffer_range(load); - load_GL_ARB_imaging(load); - load_GL_ARB_draw_buffers_blend(load); - load_GL_ARB_clear_buffer_object(load); - load_GL_ARB_multisample(load); - load_GL_EXT_debug_label(load); - load_GL_ARB_sample_shading(load); - load_GL_NV_internalformat_sample_query(load); - load_GL_INTEL_map_texture(load); - load_GL_ARB_compute_shader(load); - load_GL_IBM_vertex_array_lists(load); - load_GL_ARB_color_buffer_float(load); - load_GL_ARB_bindless_texture(load); - load_GL_ARB_window_pos(load); - load_GL_ARB_internalformat_query(load); - load_GL_EXT_shader_image_load_store(load); - load_GL_EXT_copy_texture(load); - load_GL_NV_register_combiners2(load); - load_GL_NV_draw_texture(load); - load_GL_EXT_draw_instanced(load); - load_GL_ARB_viewport_array(load); - load_GL_ARB_separate_shader_objects(load); - load_GL_EXT_depth_bounds_test(load); - load_GL_NV_video_capture(load); - load_GL_ARB_sampler_objects(load); - load_GL_ARB_matrix_palette(load); - load_GL_SGIS_texture_color_mask(load); - load_GL_EXT_coordinate_frame(load); - load_GL_ARB_texture_compression(load); - load_GL_ARB_shader_subroutine(load); - load_GL_ARB_texture_storage_multisample(load); - load_GL_EXT_vertex_attrib_64bit(load); - load_GL_OES_query_matrix(load); - load_GL_MESA_window_pos(load); - load_GL_ARB_copy_buffer(load); - load_GL_APPLE_object_purgeable(load); - load_GL_ARB_occlusion_query(load); - load_GL_SGI_color_table(load); - load_GL_EXT_gpu_shader4(load); - load_GL_NV_geometry_program4(load); - load_GL_AMD_debug_output(load); - load_GL_ARB_multitexture(load); - load_GL_SGIX_polynomial_ffd(load); - load_GL_EXT_provoking_vertex(load); - load_GL_ARB_point_parameters(load); - load_GL_ARB_shader_image_load_store(load); - load_GL_ARB_texture_barrier(load); - load_GL_NV_bindless_multi_draw_indirect(load); - load_GL_EXT_transform_feedback(load); - load_GL_NV_gpu_program4(load); - load_GL_NV_gpu_program5(load); - load_GL_ARB_geometry_shader4(load); - load_GL_NV_conservative_raster(load); - load_GL_SGIX_sprite(load); - load_GL_ARB_get_program_binary(load); - load_GL_AMD_occlusion_query_event(load); - load_GL_SGIS_multisample(load); - load_GL_EXT_framebuffer_object(load); - load_GL_APPLE_vertex_array_range(load); - load_GL_NV_register_combiners(load); - load_GL_ARB_draw_buffers(load); - load_GL_ARB_clear_texture(load); - load_GL_ARB_debug_output(load); - load_GL_EXT_cull_vertex(load); - load_GL_IBM_multimode_draw_arrays(load); - load_GL_APPLE_vertex_array_object(load); - load_GL_SGIS_detail_texture(load); - load_GL_ARB_draw_instanced(load); - load_GL_ARB_shading_language_include(load); - load_GL_INGR_blend_func_separate(load); - load_GL_NV_path_rendering(load); - load_GL_NV_conservative_raster_dilate(load); - load_GL_ATI_vertex_streams(load); - load_GL_ARB_gpu_shader_int64(load); - load_GL_NV_vdpau_interop(load); - load_GL_ARB_internalformat_query2(load); - load_GL_SUN_vertex(load); - load_GL_SGIX_igloo_interface(load); - load_GL_ARB_draw_indirect(load); - load_GL_NV_vertex_program4(load); - load_GL_SGIS_fog_function(load); - load_GL_EXT_x11_sync_object(load); - load_GL_ARB_sync(load); - load_GL_NV_sample_locations(load); - load_GL_ARB_compute_variable_group_size(load); - load_GL_OES_fixed_point(load); - load_GL_EXT_framebuffer_multisample(load); - load_GL_SGIS_texture4D(load); - load_GL_EXT_texture3D(load); - load_GL_EXT_multisample(load); - load_GL_EXT_secondary_color(load); - load_GL_ATI_vertex_array_object(load); - load_GL_ARB_parallel_shader_compile(load); - load_GL_ARB_sparse_texture(load); - load_GL_ARB_sample_locations(load); - load_GL_ARB_sparse_buffer(load); - load_GL_EXT_draw_range_elements(load); - return GLVersion.major != 0 || GLVersion.minor != 0; -} - diff --git a/examples/oculus_glfw_sample/glad.h b/examples/oculus_glfw_sample/glad.h index 56bb622d8..db1516f8d 100644 --- a/examples/oculus_glfw_sample/glad.h +++ b/examples/oculus_glfw_sample/glad.h @@ -16,6 +16,10 @@ Too many extensions */ +////////////////////////////////////////////////////////////////////////////// +// +// INCLUDE SECTION +// #ifndef __glad_h_ #define __glad_h_ @@ -14239,3 +14243,7677 @@ GLAPI int GLAD_GL_KHR_context_flush_control; #endif #endif + +////////////////////////////////////////////////////////////////////////////// +// +// IMPLEMENTATION SECTION +// + +#ifdef GLAD_IMPLEMENTATION + +#include +#include +#include + +struct gladGLversionStruct GLVersion; + +#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 const 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 = (const char **)realloc((void *)exts_i, num_exts_i * sizeof *exts_i); + } + + if (exts_i == NULL) { + return 0; + } + + for(index = 0; index < num_exts_i; index++) { + exts_i[index] = (const char*)glGetStringi(GL_EXTENSIONS, index); + } + } +#endif + return 1; +} + +static void free_exts(void) { + if (exts_i != NULL) { + free(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; + + for(index = 0; index < num_exts_i; index++) { + const char *e = exts_i[index]; + + if(strcmp(e, ext) == 0) { + return 1; + } + } + } +#endif + + return 0; +} +int GLAD_GL_VERSION_1_0; +int GLAD_GL_VERSION_1_1; +int GLAD_GL_VERSION_1_2; +int GLAD_GL_VERSION_1_3; +int GLAD_GL_VERSION_1_4; +int GLAD_GL_VERSION_1_5; +int GLAD_GL_VERSION_2_0; +int GLAD_GL_VERSION_2_1; +int GLAD_GL_VERSION_3_0; +int GLAD_GL_VERSION_3_1; +int GLAD_GL_VERSION_3_2; +int GLAD_GL_VERSION_3_3; +PFNGLCOPYTEXIMAGE1DPROC glad_glCopyTexImage1D; +PFNGLVERTEXATTRIBI3UIPROC glad_glVertexAttribI3ui; +PFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate; +PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer; +PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glad_glCompressedTexSubImage3D; +PFNGLTEXCOORDP3UIVPROC glad_glTexCoordP3uiv; +PFNGLVERTEXATTRIB1SVPROC glad_glVertexAttrib1sv; +PFNGLBINDSAMPLERPROC glad_glBindSampler; +PFNGLLINEWIDTHPROC glad_glLineWidth; +PFNGLCOLORP3UIVPROC glad_glColorP3uiv; +PFNGLGETINTEGERI_VPROC glad_glGetIntegeri_v; +PFNGLCOMPILESHADERPROC glad_glCompileShader; +PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glad_glGetTransformFeedbackVarying; +PFNGLVERTEXATTRIBIPOINTERPROC glad_glVertexAttribIPointer; +PFNGLMULTITEXCOORDP3UIPROC glad_glMultiTexCoordP3ui; +PFNGLVERTEXP4UIPROC glad_glVertexP4ui; +PFNGLENABLEIPROC glad_glEnablei; +PFNGLVERTEXATTRIBP4UIPROC glad_glVertexAttribP4ui; +PFNGLCREATESHADERPROC glad_glCreateShader; +PFNGLISBUFFERPROC glad_glIsBuffer; +PFNGLGETMULTISAMPLEFVPROC glad_glGetMultisamplefv; +PFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers; +PFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D; +PFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D; +PFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f; +PFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate; +PFNGLHINTPROC glad_glHint; +PFNGLVERTEXATTRIB1SPROC glad_glVertexAttrib1s; +PFNGLSAMPLEMASKIPROC glad_glSampleMaski; +PFNGLVERTEXP2UIPROC glad_glVertexP2ui; +PFNGLUNIFORMMATRIX3X2FVPROC glad_glUniformMatrix3x2fv; +PFNGLPOINTSIZEPROC glad_glPointSize; +PFNGLVERTEXATTRIB2DVPROC glad_glVertexAttrib2dv; +PFNGLDELETEPROGRAMPROC glad_glDeleteProgram; +PFNGLVERTEXATTRIB4NUIVPROC glad_glVertexAttrib4Nuiv; +PFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage; +PFNGLWAITSYNCPROC glad_glWaitSync; +PFNGLUNIFORMMATRIX4X3FVPROC glad_glUniformMatrix4x3fv; +PFNGLUNIFORM3IPROC glad_glUniform3i; +PFNGLCLEARBUFFERFVPROC glad_glClearBufferfv; +PFNGLUNIFORM3FPROC glad_glUniform3f; +PFNGLVERTEXATTRIB4UBVPROC glad_glVertexAttrib4ubv; +PFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv; +PFNGLTEXCOORDP2UIPROC glad_glTexCoordP2ui; +PFNGLCOLORMASKIPROC glad_glColorMaski; +PFNGLCLEARBUFFERFIPROC glad_glClearBufferfi; +PFNGLGENVERTEXARRAYSPROC glad_glGenVertexArrays; +PFNGLMULTITEXCOORDP2UIPROC glad_glMultiTexCoordP2ui; +PFNGLGETSAMPLERPARAMETERIIVPROC glad_glGetSamplerParameterIiv; +PFNGLGETFRAGDATAINDEXPROC glad_glGetFragDataIndex; +PFNGLGETVERTEXATTRIBDVPROC glad_glGetVertexAttribdv; +PFNGLUNIFORMMATRIX3X4FVPROC glad_glUniformMatrix3x4fv; +PFNGLMULTITEXCOORDP4UIPROC glad_glMultiTexCoordP4ui; +PFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers; +PFNGLDRAWARRAYSPROC glad_glDrawArrays; +PFNGLUNIFORM1UIPROC glad_glUniform1ui; +PFNGLVERTEXATTRIBI2IPROC glad_glVertexAttribI2i; +PFNGLTEXCOORDP3UIPROC glad_glTexCoordP3ui; +PFNGLVERTEXATTRIB3DPROC glad_glVertexAttrib3d; +PFNGLCLEARPROC glad_glClear; +PFNGLGETACTIVEUNIFORMNAMEPROC glad_glGetActiveUniformName; +PFNGLISENABLEDPROC glad_glIsEnabled; +PFNGLSTENCILOPPROC glad_glStencilOp; +PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D; +PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv; +PFNGLVERTEXATTRIB4NUBPROC glad_glVertexAttrib4Nub; +PFNGLGETFRAGDATALOCATIONPROC glad_glGetFragDataLocation; +PFNGLTEXIMAGE1DPROC glad_glTexImage1D; +PFNGLTEXPARAMETERIVPROC glad_glTexParameteriv; +PFNGLGETTEXIMAGEPROC glad_glGetTexImage; +PFNGLGETQUERYOBJECTI64VPROC glad_glGetQueryObjecti64v; +PFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers; +PFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders; +PFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer; +PFNGLDELETEVERTEXARRAYSPROC glad_glDeleteVertexArrays; +PFNGLISVERTEXARRAYPROC glad_glIsVertexArray; +PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray; +PFNGLGETQUERYIVPROC glad_glGetQueryiv; +PFNGLGETSAMPLERPARAMETERFVPROC glad_glGetSamplerParameterfv; +PFNGLGETUNIFORMINDICESPROC glad_glGetUniformIndices; +PFNGLISSHADERPROC glad_glIsShader; +PFNGLVERTEXATTRIBI4UBVPROC glad_glVertexAttribI4ubv; +PFNGLPOINTPARAMETERIVPROC glad_glPointParameteriv; +PFNGLENABLEPROC glad_glEnable; +PFNGLGETACTIVEUNIFORMSIVPROC glad_glGetActiveUniformsiv; +PFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation; +PFNGLVERTEXATTRIB4DVPROC glad_glVertexAttrib4dv; +PFNGLMULTITEXCOORDP3UIVPROC glad_glMultiTexCoordP3uiv; +PFNGLVERTEXATTRIBP3UIPROC glad_glVertexAttribP3ui; +PFNGLGETUNIFORMFVPROC glad_glGetUniformfv; +PFNGLGETUNIFORMUIVPROC glad_glGetUniformuiv; +PFNGLGETVERTEXATTRIBIIVPROC glad_glGetVertexAttribIiv; +PFNGLDRAWBUFFERPROC glad_glDrawBuffer; +PFNGLCLEARBUFFERUIVPROC glad_glClearBufferuiv; +PFNGLDRAWELEMENTSINSTANCEDPROC glad_glDrawElementsInstanced; +PFNGLFLUSHPROC glad_glFlush; +PFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv; +PFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv; +PFNGLFENCESYNCPROC glad_glFenceSync; +PFNGLCOLORP3UIPROC glad_glColorP3ui; +PFNGLVERTEXATTRIB3SVPROC glad_glVertexAttrib3sv; +PFNGLBEGINCONDITIONALRENDERPROC glad_glBeginConditionalRender; +PFNGLGETTEXLEVELPARAMETERIVPROC glad_glGetTexLevelParameteriv; +PFNGLMULTITEXCOORDP4UIVPROC glad_glMultiTexCoordP4uiv; +PFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate; +PFNGLGENSAMPLERSPROC glad_glGenSamplers; +PFNGLCLAMPCOLORPROC glad_glClampColor; +PFNGLUNIFORM4IVPROC glad_glUniform4iv; +PFNGLCLEARSTENCILPROC glad_glClearStencil; +PFNGLTEXCOORDP1UIVPROC glad_glTexCoordP1uiv; +PFNGLGENTEXTURESPROC glad_glGenTextures; +PFNGLGETTEXPARAMETERIUIVPROC glad_glGetTexParameterIuiv; +PFNGLVERTEXATTRIB4NBVPROC glad_glVertexAttrib4Nbv; +PFNGLISSYNCPROC glad_glIsSync; +PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glad_glGetActiveUniformBlockName; +PFNGLUNIFORM2IPROC glad_glUniform2i; +PFNGLUNIFORM2FPROC glad_glUniform2f; +PFNGLTEXCOORDP4UIPROC glad_glTexCoordP4ui; +PFNGLGETPROGRAMIVPROC glad_glGetProgramiv; +PFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer; +PFNGLFRAMEBUFFERTEXTURELAYERPROC glad_glFramebufferTextureLayer; +PFNGLFLUSHMAPPEDBUFFERRANGEPROC glad_glFlushMappedBufferRange; +PFNGLGENQUERIESPROC glad_glGenQueries; +PFNGLVERTEXATTRIBP1UIPROC glad_glVertexAttribP1ui; +PFNGLTEXSUBIMAGE3DPROC glad_glTexSubImage3D; +PFNGLGETINTEGER64I_VPROC glad_glGetInteger64i_v; +PFNGLDELETESAMPLERSPROC glad_glDeleteSamplers; +PFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D; +PFNGLBLITFRAMEBUFFERPROC glad_glBlitFramebuffer; +PFNGLISENABLEDIPROC glad_glIsEnabledi; +PFNGLSECONDARYCOLORP3UIPROC glad_glSecondaryColorP3ui; +PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glad_glBindFragDataLocationIndexed; +PFNGLUNIFORM2IVPROC glad_glUniform2iv; +PFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv; +PFNGLUNIFORM4UIVPROC glad_glUniform4uiv; +PFNGLFRAMEBUFFERTEXTURE1DPROC glad_glFramebufferTexture1D; +PFNGLGETSHADERIVPROC glad_glGetShaderiv; +PFNGLBINDFRAGDATALOCATIONPROC glad_glBindFragDataLocation; +PFNGLPOLYGONOFFSETPROC glad_glPolygonOffset; +PFNGLGETDOUBLEVPROC glad_glGetDoublev; +PFNGLVERTEXATTRIB1DPROC glad_glVertexAttrib1d; +PFNGLGETUNIFORMIVPROC glad_glGetUniformiv; +PFNGLMULTITEXCOORDP1UIVPROC glad_glMultiTexCoordP1uiv; +PFNGLUNIFORM3FVPROC glad_glUniform3fv; +PFNGLDEPTHRANGEPROC glad_glDepthRange; +PFNGLMAPBUFFERPROC glad_glMapBuffer; +PFNGLCOMPRESSEDTEXIMAGE3DPROC glad_glCompressedTexImage3D; +PFNGLDELETESYNCPROC glad_glDeleteSync; +PFNGLCOPYTEXSUBIMAGE3DPROC glad_glCopyTexSubImage3D; +PFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv; +PFNGLMULTIDRAWELEMENTSPROC glad_glMultiDrawElements; +PFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv; +PFNGLUNIFORM3IVPROC glad_glUniform3iv; +PFNGLPOLYGONMODEPROC glad_glPolygonMode; +PFNGLDRAWBUFFERSPROC glad_glDrawBuffers; +PFNGLGETACTIVEUNIFORMBLOCKIVPROC glad_glGetActiveUniformBlockiv; +PFNGLUSEPROGRAMPROC glad_glUseProgram; +PFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog; +PFNGLBINDVERTEXARRAYPROC glad_glBindVertexArray; +PFNGLDELETEBUFFERSPROC glad_glDeleteBuffers; +PFNGLSAMPLERPARAMETERIIVPROC glad_glSamplerParameterIiv; +PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glad_glMultiDrawElementsBaseVertex; +PFNGLUNIFORM2UIVPROC glad_glUniform2uiv; +PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glad_glCompressedTexSubImage1D; +PFNGLFINISHPROC glad_glFinish; +PFNGLDELETESHADERPROC glad_glDeleteShader; +PFNGLVERTEXATTRIB4NSVPROC glad_glVertexAttrib4Nsv; +PFNGLVIEWPORTPROC glad_glViewport; +PFNGLUNIFORM1UIVPROC glad_glUniform1uiv; +PFNGLTRANSFORMFEEDBACKVARYINGSPROC glad_glTransformFeedbackVaryings; +PFNGLUNIFORM2UIPROC glad_glUniform2ui; +PFNGLVERTEXATTRIBI3IPROC glad_glVertexAttribI3i; +PFNGLCLEARDEPTHPROC glad_glClearDepth; +PFNGLVERTEXATTRIBI4USVPROC glad_glVertexAttribI4usv; +PFNGLTEXPARAMETERFPROC glad_glTexParameterf; +PFNGLTEXPARAMETERIPROC glad_glTexParameteri; +PFNGLGETSHADERSOURCEPROC glad_glGetShaderSource; +PFNGLTEXBUFFERPROC glad_glTexBuffer; +PFNGLPIXELSTOREIPROC glad_glPixelStorei; +PFNGLVALIDATEPROGRAMPROC glad_glValidateProgram; +PFNGLPIXELSTOREFPROC glad_glPixelStoref; +PFNGLGETBOOLEANI_VPROC glad_glGetBooleani_v; +PFNGLMULTITEXCOORDP2UIVPROC glad_glMultiTexCoordP2uiv; +PFNGLVERTEXATTRIBP1UIVPROC glad_glVertexAttribP1uiv; +PFNGLLINKPROGRAMPROC glad_glLinkProgram; +PFNGLBINDTEXTUREPROC glad_glBindTexture; +PFNGLGETSTRINGPROC glad_glGetString; +PFNGLVERTEXATTRIBP2UIVPROC glad_glVertexAttribP2uiv; +PFNGLDETACHSHADERPROC glad_glDetachShader; +PFNGLENDQUERYPROC glad_glEndQuery; +PFNGLNORMALP3UIPROC glad_glNormalP3ui; +PFNGLVERTEXATTRIBI2UIPROC glad_glVertexAttribI2ui; +PFNGLDELETETEXTURESPROC glad_glDeleteTextures; +PFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate; +PFNGLDELETEQUERIESPROC glad_glDeleteQueries; +PFNGLNORMALP3UIVPROC glad_glNormalP3uiv; +PFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f; +PFNGLVERTEXATTRIB4DPROC glad_glVertexAttrib4d; +PFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv; +PFNGLVERTEXATTRIB4SPROC glad_glVertexAttrib4s; +PFNGLDRAWELEMENTSBASEVERTEXPROC glad_glDrawElementsBaseVertex; +PFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage; +PFNGLSAMPLERPARAMETERIPROC glad_glSamplerParameteri; +PFNGLSAMPLERPARAMETERFPROC glad_glSamplerParameterf; +PFNGLUNIFORM1FPROC glad_glUniform1f; +PFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv; +PFNGLGETCOMPRESSEDTEXIMAGEPROC glad_glGetCompressedTexImage; +PFNGLUNIFORM1IPROC glad_glUniform1i; +PFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib; +PFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D; +PFNGLDISABLEPROC glad_glDisable; +PFNGLLOGICOPPROC glad_glLogicOp; +PFNGLUNIFORM4UIPROC glad_glUniform4ui; +PFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer; +PFNGLCULLFACEPROC glad_glCullFace; +PFNGLGETSTRINGIPROC glad_glGetStringi; +PFNGLATTACHSHADERPROC glad_glAttachShader; +PFNGLQUERYCOUNTERPROC glad_glQueryCounter; +PFNGLPROVOKINGVERTEXPROC glad_glProvokingVertex; +PFNGLDRAWELEMENTSPROC glad_glDrawElements; +PFNGLVERTEXATTRIBI4SVPROC glad_glVertexAttribI4sv; +PFNGLUNIFORM1IVPROC glad_glUniform1iv; +PFNGLGETQUERYOBJECTIVPROC glad_glGetQueryObjectiv; +PFNGLREADBUFFERPROC glad_glReadBuffer; +PFNGLTEXPARAMETERIUIVPROC glad_glTexParameterIuiv; +PFNGLDRAWARRAYSINSTANCEDPROC glad_glDrawArraysInstanced; +PFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap; +PFNGLSAMPLERPARAMETERIVPROC glad_glSamplerParameteriv; +PFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f; +PFNGLVERTEXATTRIB4UIVPROC glad_glVertexAttrib4uiv; +PFNGLPOINTPARAMETERIPROC glad_glPointParameteri; +PFNGLBLENDCOLORPROC glad_glBlendColor; +PFNGLSAMPLERPARAMETERIUIVPROC glad_glSamplerParameterIuiv; +PFNGLUNMAPBUFFERPROC glad_glUnmapBuffer; +PFNGLPOINTPARAMETERFPROC glad_glPointParameterf; +PFNGLVERTEXATTRIB3SPROC glad_glVertexAttrib3s; +PFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer; +PFNGLVERTEXATTRIBP4UIVPROC glad_glVertexAttribP4uiv; +PFNGLISPROGRAMPROC glad_glIsProgram; +PFNGLVERTEXATTRIB4BVPROC glad_glVertexAttrib4bv; +PFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv; +PFNGLUNIFORM4IPROC glad_glUniform4i; +PFNGLACTIVETEXTUREPROC glad_glActiveTexture; +PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray; +PFNGLREADPIXELSPROC glad_glReadPixels; +PFNGLVERTEXATTRIBI3IVPROC glad_glVertexAttribI3iv; +PFNGLUNIFORM4FPROC glad_glUniform4f; +PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glRenderbufferStorageMultisample; +PFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv; +PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glad_glDrawElementsInstancedBaseVertex; +PFNGLSTENCILFUNCPROC glad_glStencilFunc; +PFNGLUNIFORMBLOCKBINDINGPROC glad_glUniformBlockBinding; +PFNGLCOLORP4UIPROC glad_glColorP4ui; +PFNGLVERTEXATTRIBI4IVPROC glad_glVertexAttribI4iv; +PFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog; +PFNGLVERTEXATTRIBI4IPROC glad_glVertexAttribI4i; +PFNGLGETBUFFERSUBDATAPROC glad_glGetBufferSubData; +PFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate; +PFNGLVERTEXATTRIBI1UIPROC glad_glVertexAttribI1ui; +PFNGLGENBUFFERSPROC glad_glGenBuffers; +PFNGLVERTEXATTRIB2SVPROC glad_glVertexAttrib2sv; +PFNGLBLENDFUNCPROC glad_glBlendFunc; +PFNGLCREATEPROGRAMPROC glad_glCreateProgram; +PFNGLTEXIMAGE3DPROC glad_glTexImage3D; +PFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer; +PFNGLPRIMITIVERESTARTINDEXPROC glad_glPrimitiveRestartIndex; +PFNGLGETINTEGER64VPROC glad_glGetInteger64v; +PFNGLSCISSORPROC glad_glScissor; +PFNGLTEXCOORDP4UIVPROC glad_glTexCoordP4uiv; +PFNGLGETBOOLEANVPROC glad_glGetBooleanv; +PFNGLVERTEXP2UIVPROC glad_glVertexP2uiv; +PFNGLUNIFORM3UIVPROC glad_glUniform3uiv; +PFNGLCLEARCOLORPROC glad_glClearColor; +PFNGLVERTEXATTRIB4NIVPROC glad_glVertexAttrib4Niv; +PFNGLCLEARBUFFERIVPROC glad_glClearBufferiv; +PFNGLGETBUFFERPARAMETERI64VPROC glad_glGetBufferParameteri64v; +PFNGLCOLORP4UIVPROC glad_glColorP4uiv; +PFNGLVERTEXATTRIBI2UIVPROC glad_glVertexAttribI2uiv; +PFNGLUNIFORM3UIPROC glad_glUniform3ui; +PFNGLVERTEXATTRIBI4UIVPROC glad_glVertexAttribI4uiv; +PFNGLPOINTPARAMETERFVPROC glad_glPointParameterfv; +PFNGLUNIFORM2FVPROC glad_glUniform2fv; +PFNGLGETSAMPLERPARAMETERIUIVPROC glad_glGetSamplerParameterIuiv; +PFNGLBINDBUFFERRANGEPROC glad_glBindBufferRange; +PFNGLUNIFORMMATRIX2X3FVPROC glad_glUniformMatrix2x3fv; +PFNGLGETVERTEXATTRIBIUIVPROC glad_glGetVertexAttribIuiv; +PFNGLVERTEXATTRIB4NUSVPROC glad_glVertexAttrib4Nusv; +PFNGLDEPTHFUNCPROC glad_glDepthFunc; +PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D; +PFNGLVERTEXATTRIBI4BVPROC glad_glVertexAttribI4bv; +PFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv; +PFNGLMULTITEXCOORDP1UIPROC glad_glMultiTexCoordP1ui; +PFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync; +PFNGLVERTEXATTRIBI4UIPROC glad_glVertexAttribI4ui; +PFNGLCOLORMASKPROC glad_glColorMask; +PFNGLTEXPARAMETERIIVPROC glad_glTexParameterIiv; +PFNGLBLENDEQUATIONPROC glad_glBlendEquation; +PFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation; +PFNGLENDTRANSFORMFEEDBACKPROC glad_glEndTransformFeedback; +PFNGLVERTEXATTRIB4USVPROC glad_glVertexAttrib4usv; +PFNGLUNIFORM4FVPROC glad_glUniform4fv; +PFNGLBEGINTRANSFORMFEEDBACKPROC glad_glBeginTransformFeedback; +PFNGLVERTEXATTRIBI1IVPROC glad_glVertexAttribI1iv; +PFNGLISSAMPLERPROC glad_glIsSampler; +PFNGLVERTEXP3UIPROC glad_glVertexP3ui; +PFNGLVERTEXATTRIBDIVISORPROC glad_glVertexAttribDivisor; +PFNGLCOMPRESSEDTEXIMAGE1DPROC glad_glCompressedTexImage1D; +PFNGLCOPYTEXSUBIMAGE1DPROC glad_glCopyTexSubImage1D; +PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glad_glDrawRangeElementsBaseVertex; +PFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus; +PFNGLENDCONDITIONALRENDERPROC glad_glEndConditionalRender; +PFNGLVERTEXP3UIVPROC glad_glVertexP3uiv; +PFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation; +PFNGLUNIFORMMATRIX4X2FVPROC glad_glUniformMatrix4x2fv; +PFNGLVERTEXATTRIB1DVPROC glad_glVertexAttrib1dv; +PFNGLDRAWRANGEELEMENTSPROC glad_glDrawRangeElements; +PFNGLGETQUERYOBJECTUIVPROC glad_glGetQueryObjectuiv; +PFNGLBINDBUFFERBASEPROC glad_glBindBufferBase; +PFNGLBUFFERSUBDATAPROC glad_glBufferSubData; +PFNGLVERTEXATTRIB4IVPROC glad_glVertexAttrib4iv; +PFNGLMAPBUFFERRANGEPROC glad_glMapBufferRange; +PFNGLFRAMEBUFFERTEXTUREPROC glad_glFramebufferTexture; +PFNGLMULTIDRAWARRAYSPROC glad_glMultiDrawArrays; +PFNGLVERTEXP4UIVPROC glad_glVertexP4uiv; +PFNGLVERTEXATTRIBI2IVPROC glad_glVertexAttribI2iv; +PFNGLDISABLEIPROC glad_glDisablei; +PFNGLSHADERSOURCEPROC glad_glShaderSource; +PFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers; +PFNGLVERTEXATTRIBI3UIVPROC glad_glVertexAttribI3uiv; +PFNGLGETSYNCIVPROC glad_glGetSynciv; +PFNGLTEXCOORDP2UIVPROC glad_glTexCoordP2uiv; +PFNGLBEGINQUERYPROC glad_glBeginQuery; +PFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv; +PFNGLBINDBUFFERPROC glad_glBindBuffer; +PFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv; +PFNGLUNIFORMMATRIX2X4FVPROC glad_glUniformMatrix2x4fv; +PFNGLBUFFERDATAPROC glad_glBufferData; +PFNGLGETTEXPARAMETERIIVPROC glad_glGetTexParameterIiv; +PFNGLTEXCOORDP1UIPROC glad_glTexCoordP1ui; +PFNGLGETERRORPROC glad_glGetError; +PFNGLVERTEXATTRIBP2UIPROC glad_glVertexAttribP2ui; +PFNGLGETFLOATVPROC glad_glGetFloatv; +PFNGLTEXSUBIMAGE1DPROC glad_glTexSubImage1D; +PFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv; +PFNGLGETTEXLEVELPARAMETERFVPROC glad_glGetTexLevelParameterfv; +PFNGLVERTEXATTRIBI1IPROC glad_glVertexAttribI1i; +PFNGLVERTEXATTRIBP3UIVPROC glad_glVertexAttribP3uiv; +PFNGLSECONDARYCOLORP3UIVPROC glad_glSecondaryColorP3uiv; +PFNGLGETINTEGERVPROC glad_glGetIntegerv; +PFNGLGETBUFFERPOINTERVPROC glad_glGetBufferPointerv; +PFNGLFRAMEBUFFERTEXTURE3DPROC glad_glFramebufferTexture3D; +PFNGLISQUERYPROC glad_glIsQuery; +PFNGLVERTEXATTRIB4SVPROC glad_glVertexAttrib4sv; +PFNGLTEXIMAGE2DPROC glad_glTexImage2D; +PFNGLSTENCILMASKPROC glad_glStencilMask; +PFNGLSAMPLERPARAMETERFVPROC glad_glSamplerParameterfv; +PFNGLISTEXTUREPROC glad_glIsTexture; +PFNGLUNIFORM1FVPROC glad_glUniform1fv; +PFNGLVERTEXATTRIB4NUBVPROC glad_glVertexAttrib4Nubv; +PFNGLTEXPARAMETERFVPROC glad_glTexParameterfv; +PFNGLGETSAMPLERPARAMETERIVPROC glad_glGetSamplerParameteriv; +PFNGLCOPYBUFFERSUBDATAPROC glad_glCopyBufferSubData; +PFNGLVERTEXATTRIBI1UIVPROC glad_glVertexAttribI1uiv; +PFNGLVERTEXATTRIB2DPROC glad_glVertexAttrib2d; +PFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f; +PFNGLVERTEXATTRIB3DVPROC glad_glVertexAttrib3dv; +PFNGLGETQUERYOBJECTUI64VPROC glad_glGetQueryObjectui64v; +PFNGLDEPTHMASKPROC glad_glDepthMask; +PFNGLVERTEXATTRIB2SPROC glad_glVertexAttrib2s; +PFNGLTEXIMAGE3DMULTISAMPLEPROC glad_glTexImage3DMultisample; +PFNGLGETUNIFORMBLOCKINDEXPROC glad_glGetUniformBlockIndex; +PFNGLTEXIMAGE2DMULTISAMPLEPROC glad_glTexImage2DMultisample; +PFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform; +PFNGLFRONTFACEPROC glad_glFrontFace; +int GLAD_GL_SGIX_pixel_tiles; +int GLAD_GL_NV_point_sprite; +int GLAD_GL_APPLE_element_array; +int GLAD_GL_AMD_multi_draw_indirect; +int GLAD_GL_EXT_blend_subtract; +int GLAD_GL_SGIX_tag_sample_buffer; +int GLAD_GL_IBM_texture_mirrored_repeat; +int GLAD_GL_APPLE_transform_hint; +int GLAD_GL_ATI_separate_stencil; +int GLAD_GL_NV_shader_atomic_int64; +int GLAD_GL_NV_vertex_program2_option; +int GLAD_GL_EXT_texture_buffer_object; +int GLAD_GL_ARB_vertex_blend; +int GLAD_GL_OVR_multiview; +int GLAD_GL_ARB_program_interface_query; +int GLAD_GL_EXT_misc_attribute; +int GLAD_GL_NV_multisample_coverage; +int GLAD_GL_ARB_shading_language_packing; +int GLAD_GL_EXT_texture_cube_map; +int GLAD_GL_NV_viewport_array2; +int GLAD_GL_KHR_robustness; +int GLAD_GL_EXT_index_func; +int GLAD_GL_OES_compressed_paletted_texture; +int GLAD_GL_NV_depth_clamp; +int GLAD_GL_NV_shader_buffer_load; +int GLAD_GL_EXT_color_subtable; +int GLAD_GL_SUNX_constant_data; +int GLAD_GL_EXT_multi_draw_arrays; +int GLAD_GL_ARB_shader_atomic_counters; +int GLAD_GL_ARB_arrays_of_arrays; +int GLAD_GL_NV_conditional_render; +int GLAD_GL_EXT_texture_env_combine; +int GLAD_GL_AMD_depth_clamp_separate; +int GLAD_GL_SGIX_async_histogram; +int GLAD_GL_MESA_resize_buffers; +int GLAD_GL_ARB_sample_shading; +int GLAD_GL_NV_texture_env_combine4; +int GLAD_GL_ARB_texture_view; +int GLAD_GL_ARB_texture_env_combine; +int GLAD_GL_ARB_map_buffer_range; +int GLAD_GL_EXT_convolution; +int GLAD_GL_NV_compute_program5; +int GLAD_GL_EXT_paletted_texture; +int GLAD_GL_ARB_texture_buffer_object; +int GLAD_GL_SUN_triangle_list; +int GLAD_GL_SGIX_resample; +int GLAD_GL_SGIX_flush_raster; +int GLAD_GL_EXT_light_texture; +int GLAD_GL_ARB_point_sprite; +int GLAD_GL_ARB_sparse_texture2; +int GLAD_GL_ARB_half_float_pixel; +int GLAD_GL_NV_tessellation_program5; +int GLAD_GL_REND_screen_coordinates; +int GLAD_GL_HP_image_transform; +int GLAD_GL_EXT_packed_float; +int GLAD_GL_ATI_vertex_attrib_array_object; +int GLAD_GL_SGIX_vertex_preclip; +int GLAD_GL_SGIX_texture_scale_bias; +int GLAD_GL_AMD_draw_buffers_blend; +int GLAD_GL_APPLE_texture_range; +int GLAD_GL_SGIX_framezoom; +int GLAD_GL_NV_texture_barrier; +int GLAD_GL_ARB_texture_query_levels; +int GLAD_GL_EXT_blend_logic_op; +int GLAD_GL_EXT_texture_swizzle; +int GLAD_GL_ARB_texture_rg; +int GLAD_GL_ARB_vertex_type_2_10_10_10_rev; +int GLAD_GL_ARB_fragment_shader; +int GLAD_GL_3DFX_tbuffer; +int GLAD_GL_SGIX_ycrcb; +int GLAD_GL_IBM_cull_vertex; +int GLAD_GL_EXT_separate_shader_objects; +int GLAD_GL_NV_texture_multisample; +int GLAD_GL_ARB_shader_objects; +int GLAD_GL_ARB_framebuffer_object; +int GLAD_GL_ATI_envmap_bumpmap; +int GLAD_GL_ARB_robust_buffer_access_behavior; +int GLAD_GL_ARB_shader_stencil_export; +int GLAD_GL_AMD_sample_positions; +int GLAD_GL_ARB_enhanced_layouts; +int GLAD_GL_ARB_texture_rectangle; +int GLAD_GL_SGI_texture_color_table; +int GLAD_GL_ATI_map_object_buffer; +int GLAD_GL_ARB_robustness; +int GLAD_GL_NV_pixel_data_range; +int GLAD_GL_EXT_framebuffer_blit; +int GLAD_GL_ARB_gpu_shader_fp64; +int GLAD_GL_NV_command_list; +int GLAD_GL_ARB_window_pos; +int GLAD_GL_ARB_robustness_isolation; +int GLAD_GL_GREMEDY_string_marker; +int GLAD_GL_ARB_texture_compression_bptc; +int GLAD_GL_EXT_subtexture; +int GLAD_GL_EXT_pixel_transform_color_table; +int GLAD_GL_EXT_texture_compression_rgtc; +int GLAD_GL_ARB_shadow; +int GLAD_GL_SGIX_depth_pass_instrument; +int GLAD_GL_NVX_conditional_render; +int GLAD_GL_NV_evaluators; +int GLAD_GL_SGIS_texture_filter4; +int GLAD_GL_AMD_performance_monitor; +int GLAD_GL_NV_geometry_shader4; +int GLAD_GL_EXT_stencil_clear_tag; +int GLAD_GL_NV_vertex_program1_1; +int GLAD_GL_NV_present_video; +int GLAD_GL_ARB_texture_compression_rgtc; +int GLAD_GL_ARB_texture_filter_minmax; +int GLAD_GL_HP_convolution_border_modes; +int GLAD_GL_EXT_gpu_program_parameters; +int GLAD_GL_SGIX_list_priority; +int GLAD_GL_ARB_stencil_texturing; +int GLAD_GL_ARB_shader_clock; +int GLAD_GL_NV_shader_atomic_fp16_vector; +int GLAD_GL_SGIX_fog_offset; +int GLAD_GL_ARB_draw_elements_base_vertex; +int GLAD_GL_INGR_interlace_read; +int GLAD_GL_NV_transform_feedback; +int GLAD_GL_EXT_post_depth_coverage; +int GLAD_GL_ARB_debug_output; +int GLAD_GL_AMD_stencil_operation_extended; +int GLAD_GL_ARB_compatibility; +int GLAD_GL_ARB_instanced_arrays; +int GLAD_GL_ARB_get_texture_sub_image; +int GLAD_GL_NV_vertex_array_range2; +int GLAD_GL_ARB_texture_stencil8; +int GLAD_GL_AMD_sparse_texture; +int GLAD_GL_ARB_clip_control; +int GLAD_GL_NV_fragment_coverage_to_color; +int GLAD_GL_NV_fence; +int GLAD_GL_ARB_texture_buffer_range; +int GLAD_GL_SUN_mesh_array; +int GLAD_GL_ARB_vertex_attrib_binding; +int GLAD_GL_EXT_texture_compression_s3tc; +int GLAD_GL_ARB_cl_event; +int GLAD_GL_ARB_derivative_control; +int GLAD_GL_NV_packed_depth_stencil; +int GLAD_GL_OES_single_precision; +int GLAD_GL_NV_primitive_restart; +int GLAD_GL_ARB_fragment_shader_interlock; +int GLAD_GL_EXT_texture_object; +int GLAD_GL_AMD_name_gen_delete; +int GLAD_GL_NV_texture_compression_vtc; +int GLAD_GL_NV_sample_mask_override_coverage; +int GLAD_GL_NV_texture_shader3; +int GLAD_GL_NV_texture_shader2; +int GLAD_GL_EXT_texture; +int GLAD_GL_ARB_buffer_storage; +int GLAD_GL_AMD_shader_atomic_counter_ops; +int GLAD_GL_APPLE_vertex_program_evaluators; +int GLAD_GL_ARB_multi_bind; +int GLAD_GL_ARB_explicit_uniform_location; +int GLAD_GL_ARB_depth_buffer_float; +int GLAD_GL_NV_path_rendering_shared_edge; +int GLAD_GL_SGIX_shadow_ambient; +int GLAD_GL_ARB_texture_cube_map; +int GLAD_GL_AMD_vertex_shader_viewport_index; +int GLAD_GL_EXT_shader_integer_mix; +int GLAD_GL_NV_vertex_buffer_unified_memory; +int GLAD_GL_EXT_fog_coord; +int GLAD_GL_EXT_texture_env_dot3; +int GLAD_GL_ATI_texture_env_combine3; +int GLAD_GL_ARB_map_buffer_alignment; +int GLAD_GL_NV_blend_equation_advanced; +int GLAD_GL_SGIS_sharpen_texture; +int GLAD_GL_KHR_robust_buffer_access_behavior; +int GLAD_GL_ARB_pipeline_statistics_query; +int GLAD_GL_ARB_vertex_program; +int GLAD_GL_ARB_texture_rgb10_a2ui; +int GLAD_GL_OML_interlace; +int GLAD_GL_ATI_pixel_format_float; +int GLAD_GL_ARB_vertex_buffer_object; +int GLAD_GL_EXT_shadow_funcs; +int GLAD_GL_ATI_text_fragment_shader; +int GLAD_GL_NV_vertex_array_range; +int GLAD_GL_SGIX_fragment_lighting; +int GLAD_GL_NV_texture_expand_normal; +int GLAD_GL_NV_framebuffer_multisample_coverage; +int GLAD_GL_ARB_framebuffer_no_attachments; +int GLAD_GL_EXT_timer_query; +int GLAD_GL_EXT_vertex_array_bgra; +int GLAD_GL_NV_bindless_texture; +int GLAD_GL_KHR_debug; +int GLAD_GL_SGIS_texture_border_clamp; +int GLAD_GL_OML_subsample; +int GLAD_GL_SGIX_clipmap; +int GLAD_GL_EXT_geometry_shader4; +int GLAD_GL_ARB_shader_texture_image_samples; +int GLAD_GL_MESA_ycbcr_texture; +int GLAD_GL_MESAX_texture_stack; +int GLAD_GL_AMD_seamless_cubemap_per_texture; +int GLAD_GL_EXT_bindable_uniform; +int GLAD_GL_KHR_texture_compression_astc_hdr; +int GLAD_GL_ARB_shader_ballot; +int GLAD_GL_KHR_blend_equation_advanced; +int GLAD_GL_ARB_fragment_program_shadow; +int GLAD_GL_ATI_element_array; +int GLAD_GL_ARB_sparse_texture_clamp; +int GLAD_GL_AMD_texture_texture4; +int GLAD_GL_SGIX_reference_plane; +int GLAD_GL_EXT_stencil_two_side; +int GLAD_GL_ARB_transform_feedback_overflow_query; +int GLAD_GL_SGIX_texture_lod_bias; +int GLAD_GL_KHR_no_error; +int GLAD_GL_NV_explicit_multisample; +int GLAD_GL_IBM_static_data; +int GLAD_GL_EXT_clip_volume_hint; +int GLAD_GL_EXT_texture_perturb_normal; +int GLAD_GL_NV_fragment_program2; +int GLAD_GL_NV_fragment_program4; +int GLAD_GL_EXT_point_parameters; +int GLAD_GL_PGI_misc_hints; +int GLAD_GL_SGIX_subsample; +int GLAD_GL_AMD_shader_stencil_export; +int GLAD_GL_ARB_shader_texture_lod; +int GLAD_GL_ARB_vertex_shader; +int GLAD_GL_ARB_depth_clamp; +int GLAD_GL_SGIS_texture_select; +int GLAD_GL_NV_texture_shader; +int GLAD_GL_ARB_tessellation_shader; +int GLAD_GL_EXT_draw_buffers2; +int GLAD_GL_ARB_vertex_attrib_64bit; +int GLAD_GL_EXT_texture_filter_minmax; +int GLAD_GL_ARB_texture_gather; +int GLAD_GL_AMD_interleaved_elements; +int GLAD_GL_ARB_fragment_program; +int GLAD_GL_OML_resample; +int GLAD_GL_APPLE_ycbcr_422; +int GLAD_GL_SGIX_texture_add_env; +int GLAD_GL_ARB_shadow_ambient; +int GLAD_GL_ARB_texture_storage; +int GLAD_GL_EXT_pixel_buffer_object; +int GLAD_GL_NV_vertex_program; +int GLAD_GL_SGIS_pixel_texture; +int GLAD_GL_SGIS_generate_mipmap; +int GLAD_GL_SGIX_instruments; +int GLAD_GL_ARB_fragment_layer_viewport; +int GLAD_GL_ARB_shader_storage_buffer_object; +int GLAD_GL_EXT_sparse_texture2; +int GLAD_GL_EXT_blend_minmax; +int GLAD_GL_MESA_pack_invert; +int GLAD_GL_ARB_base_instance; +int GLAD_GL_SUN_global_alpha; +int GLAD_GL_PGI_vertex_hints; +int GLAD_GL_AMD_transform_feedback4; +int GLAD_GL_ARB_ES3_1_compatibility; +int GLAD_GL_EXT_texture_integer; +int GLAD_GL_ARB_texture_multisample; +int GLAD_GL_AMD_gpu_shader_int64; +int GLAD_GL_S3_s3tc; +int GLAD_GL_ARB_query_buffer_object; +int GLAD_GL_AMD_vertex_shader_tessellator; +int GLAD_GL_ARB_invalidate_subdata; +int GLAD_GL_ARB_draw_indirect; +int GLAD_GL_ARB_transform_feedback2; +int GLAD_GL_EXT_index_material; +int GLAD_GL_NV_blend_equation_advanced_coherent; +int GLAD_GL_ARB_texture_non_power_of_two; +int GLAD_GL_KHR_texture_compression_astc_sliced_3d; +int GLAD_GL_ATI_draw_buffers; +int GLAD_GL_EXT_cmyka; +int GLAD_GL_SGIX_pixel_texture; +int GLAD_GL_APPLE_specular_vector; +int GLAD_GL_ARB_seamless_cubemap_per_texture; +int GLAD_GL_ARB_conservative_depth; +int GLAD_GL_SGIX_interlace; +int GLAD_GL_NV_parameter_buffer_object; +int GLAD_GL_AMD_shader_trinary_minmax; +int GLAD_GL_EXT_texture_lod_bias; +int GLAD_GL_EXT_rescale_normal; +int GLAD_GL_ARB_pixel_buffer_object; +int GLAD_GL_ARB_uniform_buffer_object; +int GLAD_GL_ARB_vertex_type_10f_11f_11f_rev; +int GLAD_GL_ARB_texture_swizzle; +int GLAD_GL_ARB_texture_compression; +int GLAD_GL_SGIX_async_pixel; +int GLAD_GL_NV_fragment_program_option; +int GLAD_GL_ARB_explicit_attrib_location; +int GLAD_GL_EXT_blend_color; +int GLAD_GL_NV_shader_thread_group; +int GLAD_GL_EXT_stencil_wrap; +int GLAD_GL_EXT_index_array_formats; +int GLAD_GL_OVR_multiview2; +int GLAD_GL_EXT_histogram; +int GLAD_GL_EXT_polygon_offset; +int GLAD_GL_SGIS_point_parameters; +int GLAD_GL_EXT_direct_state_access; +int GLAD_GL_ARB_shader_group_vote; +int GLAD_GL_NV_texture_rectangle; +int GLAD_GL_ARB_copy_image; +int GLAD_GL_NV_shader_thread_shuffle; +int GLAD_GL_ARB_shader_precision; +int GLAD_GL_EXT_vertex_shader; +int GLAD_GL_EXT_blend_func_separate; +int GLAD_GL_APPLE_fence; +int GLAD_GL_OES_byte_coordinates; +int GLAD_GL_ARB_transpose_matrix; +int GLAD_GL_ARB_provoking_vertex; +int GLAD_GL_NV_uniform_buffer_unified_memory; +int GLAD_GL_NV_fragment_shader_interlock; +int GLAD_GL_EXT_vertex_array; +int GLAD_GL_ARB_half_float_vertex; +int GLAD_GL_EXT_blend_equation_separate; +int GLAD_GL_NV_framebuffer_mixed_samples; +int GLAD_GL_ARB_multi_draw_indirect; +int GLAD_GL_EXT_raster_multisample; +int GLAD_GL_NV_copy_image; +int GLAD_GL_NV_geometry_shader_passthrough; +int GLAD_GL_INTEL_framebuffer_CMAA; +int GLAD_GL_SGIX_convolution_accuracy; +int GLAD_GL_ARB_transform_feedback3; +int GLAD_GL_SGIX_ycrcba; +int GLAD_GL_EXT_debug_marker; +int GLAD_GL_EXT_bgra; +int GLAD_GL_INTEL_parallel_arrays; +int GLAD_GL_EXT_pixel_transform; +int GLAD_GL_NV_vertex_attrib_integer_64bit; +int GLAD_GL_ATI_fragment_shader; +int GLAD_GL_ARB_vertex_array_object; +int GLAD_GL_ATI_pn_triangles; +int GLAD_GL_EXT_texture_env_add; +int GLAD_GL_EXT_packed_depth_stencil; +int GLAD_GL_EXT_texture_mirror_clamp; +int GLAD_GL_NV_multisample_filter_hint; +int GLAD_GL_INTEL_performance_query; +int GLAD_GL_ARB_transform_feedback_instanced; +int GLAD_GL_SGIX_async; +int GLAD_GL_EXT_texture_compression_latc; +int GLAD_GL_NV_shader_atomic_float; +int GLAD_GL_ARB_shading_language_100; +int GLAD_GL_APPLE_float_pixels; +int GLAD_GL_ARB_texture_mirror_clamp_to_edge; +int GLAD_GL_NV_vertex_program2; +int GLAD_GL_NV_bindless_multi_draw_indirect_count; +int GLAD_GL_ARB_depth_texture; +int GLAD_GL_ARB_ES2_compatibility; +int GLAD_GL_ARB_indirect_parameters; +int GLAD_GL_NV_half_float; +int GLAD_GL_ARB_ES3_2_compatibility; +int GLAD_GL_ATI_texture_mirror_once; +int GLAD_GL_IBM_rasterpos_clip; +int GLAD_GL_SGIX_shadow; +int GLAD_GL_EXT_polygon_offset_clamp; +int GLAD_GL_NV_deep_texture3D; +int GLAD_GL_ARB_shader_draw_parameters; +int GLAD_GL_SGIX_calligraphic_fragment; +int GLAD_GL_ARB_shader_bit_encoding; +int GLAD_GL_EXT_compiled_vertex_array; +int GLAD_GL_NV_depth_buffer_float; +int GLAD_GL_APPLE_flush_buffer_range; +int GLAD_GL_ARB_imaging; +int GLAD_GL_ARB_draw_buffers_blend; +int GLAD_GL_AMD_gcn_shader; +int GLAD_GL_AMD_blend_minmax_factor; +int GLAD_GL_EXT_texture_sRGB_decode; +int GLAD_GL_ARB_shading_language_420pack; +int GLAD_GL_ARB_shader_viewport_layer_array; +int GLAD_GL_ATI_meminfo; +int GLAD_GL_EXT_abgr; +int GLAD_GL_AMD_pinned_memory; +int GLAD_GL_EXT_texture_snorm; +int GLAD_GL_SGIX_texture_coordinate_clamp; +int GLAD_GL_ARB_clear_buffer_object; +int GLAD_GL_ARB_multisample; +int GLAD_GL_EXT_debug_label; +int GLAD_GL_NV_light_max_exponent; +int GLAD_GL_NV_internalformat_sample_query; +int GLAD_GL_INTEL_map_texture; +int GLAD_GL_ARB_texture_env_crossbar; +int GLAD_GL_EXT_422_pixels; +int GLAD_GL_ARB_compute_shader; +int GLAD_GL_NV_texgen_emboss; +int GLAD_GL_ARB_blend_func_extended; +int GLAD_GL_IBM_vertex_array_lists; +int GLAD_GL_ARB_color_buffer_float; +int GLAD_GL_ARB_bindless_texture; +int GLAD_GL_SGIX_depth_texture; +int GLAD_GL_ARB_internalformat_query; +int GLAD_GL_ARB_shader_atomic_counter_ops; +int GLAD_GL_ARB_texture_mirrored_repeat; +int GLAD_GL_EXT_shader_image_load_store; +int GLAD_GL_EXT_copy_texture; +int GLAD_GL_NV_register_combiners2; +int GLAD_GL_SGIX_ycrcb_subsample; +int GLAD_GL_ARB_copy_buffer; +int GLAD_GL_NV_draw_texture; +int GLAD_GL_EXT_texture_shared_exponent; +int GLAD_GL_EXT_draw_instanced; +int GLAD_GL_NV_copy_depth_to_color; +int GLAD_GL_ARB_viewport_array; +int GLAD_GL_ARB_separate_shader_objects; +int GLAD_GL_EXT_multisample; +int GLAD_GL_EXT_depth_bounds_test; +int GLAD_GL_EXT_shared_texture_palette; +int GLAD_GL_ARB_texture_env_add; +int GLAD_GL_NV_video_capture; +int GLAD_GL_ARB_sampler_objects; +int GLAD_GL_ARB_matrix_palette; +int GLAD_GL_SGIS_texture_color_mask; +int GLAD_GL_EXT_packed_pixels; +int GLAD_GL_EXT_coordinate_frame; +int GLAD_GL_NV_transform_feedback2; +int GLAD_GL_APPLE_aux_depth_stencil; +int GLAD_GL_ARB_shader_subroutine; +int GLAD_GL_EXT_framebuffer_sRGB; +int GLAD_GL_ARB_texture_storage_multisample; +int GLAD_GL_KHR_blend_equation_advanced_coherent; +int GLAD_GL_EXT_vertex_attrib_64bit; +int GLAD_GL_HP_texture_lighting; +int GLAD_GL_NV_shader_buffer_store; +int GLAD_GL_OES_query_matrix; +int GLAD_GL_MESA_window_pos; +int GLAD_GL_NV_fill_rectangle; +int GLAD_GL_NV_shader_storage_buffer_object; +int GLAD_GL_ARB_texture_query_lod; +int GLAD_GL_SGIX_ir_instrument1; +int GLAD_GL_ARB_shader_image_size; +int GLAD_GL_NV_shader_atomic_counters; +int GLAD_GL_APPLE_object_purgeable; +int GLAD_GL_ARB_occlusion_query; +int GLAD_GL_INGR_color_clamp; +int GLAD_GL_SGI_color_table; +int GLAD_GL_EXT_framebuffer_multisample_blit_scaled; +int GLAD_GL_ARB_texture_cube_map_array; +int GLAD_GL_AMD_debug_output; +int GLAD_GL_EXT_gpu_shader4; +int GLAD_GL_NV_geometry_program4; +int GLAD_GL_NV_gpu_program5_mem_extended; +int GLAD_GL_SGIX_scalebias_hint; +int GLAD_GL_ARB_texture_border_clamp; +int GLAD_GL_ARB_fragment_coord_conventions; +int GLAD_GL_SGIX_polynomial_ffd; +int GLAD_GL_EXT_provoking_vertex; +int GLAD_GL_ARB_point_parameters; +int GLAD_GL_ARB_shader_image_load_store; +int GLAD_GL_ARB_conditional_render_inverted; +int GLAD_GL_HP_occlusion_test; +int GLAD_GL_ARB_ES3_compatibility; +int GLAD_GL_EXT_texture_array; +int GLAD_GL_ARB_texture_buffer_object_rgb32; +int GLAD_GL_NV_bindless_multi_draw_indirect; +int GLAD_GL_SGIX_texture_multi_buffer; +int GLAD_GL_EXT_transform_feedback; +int GLAD_GL_KHR_texture_compression_astc_ldr; +int GLAD_GL_3DFX_multisample; +int GLAD_GL_INTEL_fragment_shader_ordering; +int GLAD_GL_ARB_texture_env_dot3; +int GLAD_GL_NV_gpu_program4; +int GLAD_GL_NV_gpu_program5; +int GLAD_GL_NV_float_buffer; +int GLAD_GL_SGIS_texture_edge_clamp; +int GLAD_GL_ARB_framebuffer_sRGB; +int GLAD_GL_SUN_slice_accum; +int GLAD_GL_EXT_index_texture; +int GLAD_GL_EXT_shader_image_load_formatted; +int GLAD_GL_ARB_geometry_shader4; +int GLAD_GL_EXT_separate_specular_color; +int GLAD_GL_NV_fog_distance; +int GLAD_GL_NV_conservative_raster; +int GLAD_GL_SUN_convolution_border_modes; +int GLAD_GL_SGIX_sprite; +int GLAD_GL_ARB_get_program_binary; +int GLAD_GL_ARB_timer_query; +int GLAD_GL_AMD_occlusion_query_event; +int GLAD_GL_SGIS_multisample; +int GLAD_GL_EXT_framebuffer_object; +int GLAD_GL_EXT_vertex_weighting; +int GLAD_GL_ARB_vertex_array_bgra; +int GLAD_GL_APPLE_vertex_array_range; +int GLAD_GL_AMD_query_buffer_object; +int GLAD_GL_NV_register_combiners; +int GLAD_GL_ARB_draw_buffers; +int GLAD_GL_ARB_clear_texture; +int GLAD_GL_NV_fragment_program; +int GLAD_GL_SGI_color_matrix; +int GLAD_GL_EXT_cull_vertex; +int GLAD_GL_EXT_texture_sRGB; +int GLAD_GL_APPLE_row_bytes; +int GLAD_GL_NV_texgen_reflection; +int GLAD_GL_IBM_multimode_draw_arrays; +int GLAD_GL_APPLE_vertex_array_object; +int GLAD_GL_3DFX_texture_compression_FXT1; +int GLAD_GL_GREMEDY_frame_terminator; +int GLAD_GL_AMD_conservative_depth; +int GLAD_GL_ARB_texture_float; +int GLAD_GL_ARB_compressed_texture_pixel_storage; +int GLAD_GL_SGIS_detail_texture; +int GLAD_GL_ARB_draw_instanced; +int GLAD_GL_OES_read_format; +int GLAD_GL_ATI_texture_float; +int GLAD_GL_WIN_specular_fog; +int GLAD_GL_AMD_vertex_shader_layer; +int GLAD_GL_ARB_shading_language_include; +int GLAD_GL_APPLE_client_storage; +int GLAD_GL_WIN_phong_shading; +int GLAD_GL_INGR_blend_func_separate; +int GLAD_GL_NV_path_rendering; +int GLAD_GL_NV_conservative_raster_dilate; +int GLAD_GL_ARB_texture_barrier; +int GLAD_GL_ATI_vertex_streams; +int GLAD_GL_ARB_post_depth_coverage; +int GLAD_GL_NV_occlusion_query; +int GLAD_GL_APPLE_rgb_422; +int GLAD_GL_ARB_direct_state_access; +int GLAD_GL_ARB_gpu_shader_int64; +int GLAD_GL_ARB_seamless_cube_map; +int GLAD_GL_ARB_cull_distance; +int GLAD_GL_NV_vdpau_interop; +int GLAD_GL_ARB_occlusion_query2; +int GLAD_GL_ARB_internalformat_query2; +int GLAD_GL_EXT_texture_filter_anisotropic; +int GLAD_GL_SUN_vertex; +int GLAD_GL_ARB_sparse_texture; +int GLAD_GL_SGIS_texture_lod; +int GLAD_GL_NV_vertex_program3; +int GLAD_GL_NV_gpu_shader5; +int GLAD_GL_NV_vertex_program4; +int GLAD_GL_AMD_transform_feedback3_lines_triangles; +int GLAD_GL_SGIS_fog_function; +int GLAD_GL_EXT_x11_sync_object; +int GLAD_GL_ARB_sync; +int GLAD_GL_NV_sample_locations; +int GLAD_GL_ARB_compute_variable_group_size; +int GLAD_GL_OES_fixed_point; +int GLAD_GL_NV_blend_square; +int GLAD_GL_EXT_framebuffer_multisample; +int GLAD_GL_ARB_gpu_shader5; +int GLAD_GL_SGIS_texture4D; +int GLAD_GL_EXT_texture3D; +int GLAD_GL_ARB_multitexture; +int GLAD_GL_EXT_secondary_color; +int GLAD_GL_NV_parameter_buffer_object2; +int GLAD_GL_ATI_vertex_array_object; +int GLAD_GL_ARB_parallel_shader_compile; +int GLAD_GL_NVX_gpu_memory_info; +int GLAD_GL_SGIX_igloo_interface; +int GLAD_GL_SGIS_point_line_texgen; +int GLAD_GL_ARB_sample_locations; +int GLAD_GL_ARB_sparse_buffer; +int GLAD_GL_EXT_draw_range_elements; +int GLAD_GL_SGIX_blend_alpha_minmax; +int GLAD_GL_KHR_context_flush_control; +PFNGLELEMENTPOINTERAPPLEPROC glad_glElementPointerAPPLE; +PFNGLDRAWELEMENTARRAYAPPLEPROC glad_glDrawElementArrayAPPLE; +PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC glad_glDrawRangeElementArrayAPPLE; +PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC glad_glMultiDrawElementArrayAPPLE; +PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC glad_glMultiDrawRangeElementArrayAPPLE; +PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC glad_glMultiDrawArraysIndirectAMD; +PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC glad_glMultiDrawElementsIndirectAMD; +PFNGLTAGSAMPLEBUFFERSGIXPROC glad_glTagSampleBufferSGIX; +PFNGLPOINTPARAMETERINVPROC glad_glPointParameteriNV; +PFNGLPOINTPARAMETERIVNVPROC glad_glPointParameterivNV; +PFNGLSTENCILOPSEPARATEATIPROC glad_glStencilOpSeparateATI; +PFNGLSTENCILFUNCSEPARATEATIPROC glad_glStencilFuncSeparateATI; +PFNGLTEXBUFFEREXTPROC glad_glTexBufferEXT; +PFNGLWEIGHTBVARBPROC glad_glWeightbvARB; +PFNGLWEIGHTSVARBPROC glad_glWeightsvARB; +PFNGLWEIGHTIVARBPROC glad_glWeightivARB; +PFNGLWEIGHTFVARBPROC glad_glWeightfvARB; +PFNGLWEIGHTDVARBPROC glad_glWeightdvARB; +PFNGLWEIGHTUBVARBPROC glad_glWeightubvARB; +PFNGLWEIGHTUSVARBPROC glad_glWeightusvARB; +PFNGLWEIGHTUIVARBPROC glad_glWeightuivARB; +PFNGLWEIGHTPOINTERARBPROC glad_glWeightPointerARB; +PFNGLVERTEXBLENDARBPROC glad_glVertexBlendARB; +PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC glad_glFramebufferTextureMultiviewOVR; +PFNGLGETPROGRAMINTERFACEIVPROC glad_glGetProgramInterfaceiv; +PFNGLGETPROGRAMRESOURCEINDEXPROC glad_glGetProgramResourceIndex; +PFNGLGETPROGRAMRESOURCENAMEPROC glad_glGetProgramResourceName; +PFNGLGETPROGRAMRESOURCEIVPROC glad_glGetProgramResourceiv; +PFNGLGETPROGRAMRESOURCELOCATIONPROC glad_glGetProgramResourceLocation; +PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC glad_glGetProgramResourceLocationIndex; +PFNGLINDEXFUNCEXTPROC glad_glIndexFuncEXT; +PFNGLMAKEBUFFERRESIDENTNVPROC glad_glMakeBufferResidentNV; +PFNGLMAKEBUFFERNONRESIDENTNVPROC glad_glMakeBufferNonResidentNV; +PFNGLISBUFFERRESIDENTNVPROC glad_glIsBufferResidentNV; +PFNGLMAKENAMEDBUFFERRESIDENTNVPROC glad_glMakeNamedBufferResidentNV; +PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC glad_glMakeNamedBufferNonResidentNV; +PFNGLISNAMEDBUFFERRESIDENTNVPROC glad_glIsNamedBufferResidentNV; +PFNGLGETBUFFERPARAMETERUI64VNVPROC glad_glGetBufferParameterui64vNV; +PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC glad_glGetNamedBufferParameterui64vNV; +PFNGLGETINTEGERUI64VNVPROC glad_glGetIntegerui64vNV; +PFNGLUNIFORMUI64NVPROC glad_glUniformui64NV; +PFNGLUNIFORMUI64VNVPROC glad_glUniformui64vNV; +PFNGLGETUNIFORMUI64VNVPROC glad_glGetUniformui64vNV; +PFNGLPROGRAMUNIFORMUI64NVPROC glad_glProgramUniformui64NV; +PFNGLPROGRAMUNIFORMUI64VNVPROC glad_glProgramUniformui64vNV; +PFNGLCOLORSUBTABLEEXTPROC glad_glColorSubTableEXT; +PFNGLCOPYCOLORSUBTABLEEXTPROC glad_glCopyColorSubTableEXT; +PFNGLFINISHTEXTURESUNXPROC glad_glFinishTextureSUNX; +PFNGLMULTIDRAWARRAYSEXTPROC glad_glMultiDrawArraysEXT; +PFNGLMULTIDRAWELEMENTSEXTPROC glad_glMultiDrawElementsEXT; +PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC glad_glGetActiveAtomicCounterBufferiv; +PFNGLBEGINCONDITIONALRENDERNVPROC glad_glBeginConditionalRenderNV; +PFNGLENDCONDITIONALRENDERNVPROC glad_glEndConditionalRenderNV; +PFNGLRESIZEBUFFERSMESAPROC glad_glResizeBuffersMESA; +PFNGLTEXTUREVIEWPROC glad_glTextureView; +PFNGLCONVOLUTIONFILTER1DEXTPROC glad_glConvolutionFilter1DEXT; +PFNGLCONVOLUTIONFILTER2DEXTPROC glad_glConvolutionFilter2DEXT; +PFNGLCONVOLUTIONPARAMETERFEXTPROC glad_glConvolutionParameterfEXT; +PFNGLCONVOLUTIONPARAMETERFVEXTPROC glad_glConvolutionParameterfvEXT; +PFNGLCONVOLUTIONPARAMETERIEXTPROC glad_glConvolutionParameteriEXT; +PFNGLCONVOLUTIONPARAMETERIVEXTPROC glad_glConvolutionParameterivEXT; +PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC glad_glCopyConvolutionFilter1DEXT; +PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC glad_glCopyConvolutionFilter2DEXT; +PFNGLGETCONVOLUTIONFILTEREXTPROC glad_glGetConvolutionFilterEXT; +PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC glad_glGetConvolutionParameterfvEXT; +PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC glad_glGetConvolutionParameterivEXT; +PFNGLGETSEPARABLEFILTEREXTPROC glad_glGetSeparableFilterEXT; +PFNGLSEPARABLEFILTER2DEXTPROC glad_glSeparableFilter2DEXT; +PFNGLVERTEXATTRIBL1I64NVPROC glad_glVertexAttribL1i64NV; +PFNGLVERTEXATTRIBL2I64NVPROC glad_glVertexAttribL2i64NV; +PFNGLVERTEXATTRIBL3I64NVPROC glad_glVertexAttribL3i64NV; +PFNGLVERTEXATTRIBL4I64NVPROC glad_glVertexAttribL4i64NV; +PFNGLVERTEXATTRIBL1I64VNVPROC glad_glVertexAttribL1i64vNV; +PFNGLVERTEXATTRIBL2I64VNVPROC glad_glVertexAttribL2i64vNV; +PFNGLVERTEXATTRIBL3I64VNVPROC glad_glVertexAttribL3i64vNV; +PFNGLVERTEXATTRIBL4I64VNVPROC glad_glVertexAttribL4i64vNV; +PFNGLVERTEXATTRIBL1UI64NVPROC glad_glVertexAttribL1ui64NV; +PFNGLVERTEXATTRIBL2UI64NVPROC glad_glVertexAttribL2ui64NV; +PFNGLVERTEXATTRIBL3UI64NVPROC glad_glVertexAttribL3ui64NV; +PFNGLVERTEXATTRIBL4UI64NVPROC glad_glVertexAttribL4ui64NV; +PFNGLVERTEXATTRIBL1UI64VNVPROC glad_glVertexAttribL1ui64vNV; +PFNGLVERTEXATTRIBL2UI64VNVPROC glad_glVertexAttribL2ui64vNV; +PFNGLVERTEXATTRIBL3UI64VNVPROC glad_glVertexAttribL3ui64vNV; +PFNGLVERTEXATTRIBL4UI64VNVPROC glad_glVertexAttribL4ui64vNV; +PFNGLGETVERTEXATTRIBLI64VNVPROC glad_glGetVertexAttribLi64vNV; +PFNGLGETVERTEXATTRIBLUI64VNVPROC glad_glGetVertexAttribLui64vNV; +PFNGLVERTEXATTRIBLFORMATNVPROC glad_glVertexAttribLFormatNV; +PFNGLCOLORTABLEEXTPROC glad_glColorTableEXT; +PFNGLGETCOLORTABLEEXTPROC glad_glGetColorTableEXT; +PFNGLGETCOLORTABLEPARAMETERIVEXTPROC glad_glGetColorTableParameterivEXT; +PFNGLGETCOLORTABLEPARAMETERFVEXTPROC glad_glGetColorTableParameterfvEXT; +PFNGLTEXBUFFERARBPROC glad_glTexBufferARB; +PFNGLPNTRIANGLESIATIPROC glad_glPNTrianglesiATI; +PFNGLPNTRIANGLESFATIPROC glad_glPNTrianglesfATI; +PFNGLFLUSHRASTERSGIXPROC glad_glFlushRasterSGIX; +PFNGLAPPLYTEXTUREEXTPROC glad_glApplyTextureEXT; +PFNGLTEXTURELIGHTEXTPROC glad_glTextureLightEXT; +PFNGLTEXTUREMATERIALEXTPROC glad_glTextureMaterialEXT; +PFNGLIMAGETRANSFORMPARAMETERIHPPROC glad_glImageTransformParameteriHP; +PFNGLIMAGETRANSFORMPARAMETERFHPPROC glad_glImageTransformParameterfHP; +PFNGLIMAGETRANSFORMPARAMETERIVHPPROC glad_glImageTransformParameterivHP; +PFNGLIMAGETRANSFORMPARAMETERFVHPPROC glad_glImageTransformParameterfvHP; +PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC glad_glGetImageTransformParameterivHP; +PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC glad_glGetImageTransformParameterfvHP; +PFNGLBLENDFUNCINDEXEDAMDPROC glad_glBlendFuncIndexedAMD; +PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC glad_glBlendFuncSeparateIndexedAMD; +PFNGLBLENDEQUATIONINDEXEDAMDPROC glad_glBlendEquationIndexedAMD; +PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC glad_glBlendEquationSeparateIndexedAMD; +PFNGLTEXTURERANGEAPPLEPROC glad_glTextureRangeAPPLE; +PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC glad_glGetTexParameterPointervAPPLE; +PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC glad_glFramebufferTextureLayerEXT; +PFNGLTEXTUREBARRIERNVPROC glad_glTextureBarrierNV; +PFNGLTBUFFERMASK3DFXPROC glad_glTbufferMask3DFX; +PFNGLFRAMETERMINATORGREMEDYPROC glad_glFrameTerminatorGREMEDY; +PFNGLUSESHADERPROGRAMEXTPROC glad_glUseShaderProgramEXT; +PFNGLACTIVEPROGRAMEXTPROC glad_glActiveProgramEXT; +PFNGLCREATESHADERPROGRAMEXTPROC glad_glCreateShaderProgramEXT; +PFNGLACTIVESHADERPROGRAMEXTPROC glad_glActiveShaderProgramEXT; +PFNGLBINDPROGRAMPIPELINEEXTPROC glad_glBindProgramPipelineEXT; +PFNGLCREATESHADERPROGRAMVEXTPROC glad_glCreateShaderProgramvEXT; +PFNGLDELETEPROGRAMPIPELINESEXTPROC glad_glDeleteProgramPipelinesEXT; +PFNGLGENPROGRAMPIPELINESEXTPROC glad_glGenProgramPipelinesEXT; +PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC glad_glGetProgramPipelineInfoLogEXT; +PFNGLGETPROGRAMPIPELINEIVEXTPROC glad_glGetProgramPipelineivEXT; +PFNGLISPROGRAMPIPELINEEXTPROC glad_glIsProgramPipelineEXT; +PFNGLPROGRAMPARAMETERIEXTPROC glad_glProgramParameteriEXT; +PFNGLPROGRAMUNIFORM1FEXTPROC glad_glProgramUniform1fEXT; +PFNGLPROGRAMUNIFORM1FVEXTPROC glad_glProgramUniform1fvEXT; +PFNGLPROGRAMUNIFORM1IEXTPROC glad_glProgramUniform1iEXT; +PFNGLPROGRAMUNIFORM1IVEXTPROC glad_glProgramUniform1ivEXT; +PFNGLPROGRAMUNIFORM2FEXTPROC glad_glProgramUniform2fEXT; +PFNGLPROGRAMUNIFORM2FVEXTPROC glad_glProgramUniform2fvEXT; +PFNGLPROGRAMUNIFORM2IEXTPROC glad_glProgramUniform2iEXT; +PFNGLPROGRAMUNIFORM2IVEXTPROC glad_glProgramUniform2ivEXT; +PFNGLPROGRAMUNIFORM3FEXTPROC glad_glProgramUniform3fEXT; +PFNGLPROGRAMUNIFORM3FVEXTPROC glad_glProgramUniform3fvEXT; +PFNGLPROGRAMUNIFORM3IEXTPROC glad_glProgramUniform3iEXT; +PFNGLPROGRAMUNIFORM3IVEXTPROC glad_glProgramUniform3ivEXT; +PFNGLPROGRAMUNIFORM4FEXTPROC glad_glProgramUniform4fEXT; +PFNGLPROGRAMUNIFORM4FVEXTPROC glad_glProgramUniform4fvEXT; +PFNGLPROGRAMUNIFORM4IEXTPROC glad_glProgramUniform4iEXT; +PFNGLPROGRAMUNIFORM4IVEXTPROC glad_glProgramUniform4ivEXT; +PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC glad_glProgramUniformMatrix2fvEXT; +PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC glad_glProgramUniformMatrix3fvEXT; +PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC glad_glProgramUniformMatrix4fvEXT; +PFNGLUSEPROGRAMSTAGESEXTPROC glad_glUseProgramStagesEXT; +PFNGLVALIDATEPROGRAMPIPELINEEXTPROC glad_glValidateProgramPipelineEXT; +PFNGLPROGRAMUNIFORM1UIEXTPROC glad_glProgramUniform1uiEXT; +PFNGLPROGRAMUNIFORM2UIEXTPROC glad_glProgramUniform2uiEXT; +PFNGLPROGRAMUNIFORM3UIEXTPROC glad_glProgramUniform3uiEXT; +PFNGLPROGRAMUNIFORM4UIEXTPROC glad_glProgramUniform4uiEXT; +PFNGLPROGRAMUNIFORM1UIVEXTPROC glad_glProgramUniform1uivEXT; +PFNGLPROGRAMUNIFORM2UIVEXTPROC glad_glProgramUniform2uivEXT; +PFNGLPROGRAMUNIFORM3UIVEXTPROC glad_glProgramUniform3uivEXT; +PFNGLPROGRAMUNIFORM4UIVEXTPROC glad_glProgramUniform4uivEXT; +PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC glad_glProgramUniformMatrix2x3fvEXT; +PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC glad_glProgramUniformMatrix3x2fvEXT; +PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC glad_glProgramUniformMatrix2x4fvEXT; +PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC glad_glProgramUniformMatrix4x2fvEXT; +PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC glad_glProgramUniformMatrix3x4fvEXT; +PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC glad_glProgramUniformMatrix4x3fvEXT; +PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC glad_glTexImage2DMultisampleCoverageNV; +PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC glad_glTexImage3DMultisampleCoverageNV; +PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC glad_glTextureImage2DMultisampleNV; +PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC glad_glTextureImage3DMultisampleNV; +PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC glad_glTextureImage2DMultisampleCoverageNV; +PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC glad_glTextureImage3DMultisampleCoverageNV; +PFNGLDELETEOBJECTARBPROC glad_glDeleteObjectARB; +PFNGLGETHANDLEARBPROC glad_glGetHandleARB; +PFNGLDETACHOBJECTARBPROC glad_glDetachObjectARB; +PFNGLCREATESHADEROBJECTARBPROC glad_glCreateShaderObjectARB; +PFNGLSHADERSOURCEARBPROC glad_glShaderSourceARB; +PFNGLCOMPILESHADERARBPROC glad_glCompileShaderARB; +PFNGLCREATEPROGRAMOBJECTARBPROC glad_glCreateProgramObjectARB; +PFNGLATTACHOBJECTARBPROC glad_glAttachObjectARB; +PFNGLLINKPROGRAMARBPROC glad_glLinkProgramARB; +PFNGLUSEPROGRAMOBJECTARBPROC glad_glUseProgramObjectARB; +PFNGLVALIDATEPROGRAMARBPROC glad_glValidateProgramARB; +PFNGLUNIFORM1FARBPROC glad_glUniform1fARB; +PFNGLUNIFORM2FARBPROC glad_glUniform2fARB; +PFNGLUNIFORM3FARBPROC glad_glUniform3fARB; +PFNGLUNIFORM4FARBPROC glad_glUniform4fARB; +PFNGLUNIFORM1IARBPROC glad_glUniform1iARB; +PFNGLUNIFORM2IARBPROC glad_glUniform2iARB; +PFNGLUNIFORM3IARBPROC glad_glUniform3iARB; +PFNGLUNIFORM4IARBPROC glad_glUniform4iARB; +PFNGLUNIFORM1FVARBPROC glad_glUniform1fvARB; +PFNGLUNIFORM2FVARBPROC glad_glUniform2fvARB; +PFNGLUNIFORM3FVARBPROC glad_glUniform3fvARB; +PFNGLUNIFORM4FVARBPROC glad_glUniform4fvARB; +PFNGLUNIFORM1IVARBPROC glad_glUniform1ivARB; +PFNGLUNIFORM2IVARBPROC glad_glUniform2ivARB; +PFNGLUNIFORM3IVARBPROC glad_glUniform3ivARB; +PFNGLUNIFORM4IVARBPROC glad_glUniform4ivARB; +PFNGLUNIFORMMATRIX2FVARBPROC glad_glUniformMatrix2fvARB; +PFNGLUNIFORMMATRIX3FVARBPROC glad_glUniformMatrix3fvARB; +PFNGLUNIFORMMATRIX4FVARBPROC glad_glUniformMatrix4fvARB; +PFNGLGETOBJECTPARAMETERFVARBPROC glad_glGetObjectParameterfvARB; +PFNGLGETOBJECTPARAMETERIVARBPROC glad_glGetObjectParameterivARB; +PFNGLGETINFOLOGARBPROC glad_glGetInfoLogARB; +PFNGLGETATTACHEDOBJECTSARBPROC glad_glGetAttachedObjectsARB; +PFNGLGETUNIFORMLOCATIONARBPROC glad_glGetUniformLocationARB; +PFNGLGETACTIVEUNIFORMARBPROC glad_glGetActiveUniformARB; +PFNGLGETUNIFORMFVARBPROC glad_glGetUniformfvARB; +PFNGLGETUNIFORMIVARBPROC glad_glGetUniformivARB; +PFNGLGETSHADERSOURCEARBPROC glad_glGetShaderSourceARB; +PFNGLTEXBUMPPARAMETERIVATIPROC glad_glTexBumpParameterivATI; +PFNGLTEXBUMPPARAMETERFVATIPROC glad_glTexBumpParameterfvATI; +PFNGLGETTEXBUMPPARAMETERIVATIPROC glad_glGetTexBumpParameterivATI; +PFNGLGETTEXBUMPPARAMETERFVATIPROC glad_glGetTexBumpParameterfvATI; +PFNGLMAPOBJECTBUFFERATIPROC glad_glMapObjectBufferATI; +PFNGLUNMAPOBJECTBUFFERATIPROC glad_glUnmapObjectBufferATI; +PFNGLGETGRAPHICSRESETSTATUSARBPROC glad_glGetGraphicsResetStatusARB; +PFNGLGETNTEXIMAGEARBPROC glad_glGetnTexImageARB; +PFNGLREADNPIXELSARBPROC glad_glReadnPixelsARB; +PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC glad_glGetnCompressedTexImageARB; +PFNGLGETNUNIFORMFVARBPROC glad_glGetnUniformfvARB; +PFNGLGETNUNIFORMIVARBPROC glad_glGetnUniformivARB; +PFNGLGETNUNIFORMUIVARBPROC glad_glGetnUniformuivARB; +PFNGLGETNUNIFORMDVARBPROC glad_glGetnUniformdvARB; +PFNGLGETNMAPDVARBPROC glad_glGetnMapdvARB; +PFNGLGETNMAPFVARBPROC glad_glGetnMapfvARB; +PFNGLGETNMAPIVARBPROC glad_glGetnMapivARB; +PFNGLGETNPIXELMAPFVARBPROC glad_glGetnPixelMapfvARB; +PFNGLGETNPIXELMAPUIVARBPROC glad_glGetnPixelMapuivARB; +PFNGLGETNPIXELMAPUSVARBPROC glad_glGetnPixelMapusvARB; +PFNGLGETNPOLYGONSTIPPLEARBPROC glad_glGetnPolygonStippleARB; +PFNGLGETNCOLORTABLEARBPROC glad_glGetnColorTableARB; +PFNGLGETNCONVOLUTIONFILTERARBPROC glad_glGetnConvolutionFilterARB; +PFNGLGETNSEPARABLEFILTERARBPROC glad_glGetnSeparableFilterARB; +PFNGLGETNHISTOGRAMARBPROC glad_glGetnHistogramARB; +PFNGLGETNMINMAXARBPROC glad_glGetnMinmaxARB; +PFNGLPIXELDATARANGENVPROC glad_glPixelDataRangeNV; +PFNGLFLUSHPIXELDATARANGENVPROC glad_glFlushPixelDataRangeNV; +PFNGLBLITFRAMEBUFFEREXTPROC glad_glBlitFramebufferEXT; +PFNGLUNIFORM1DPROC glad_glUniform1d; +PFNGLUNIFORM2DPROC glad_glUniform2d; +PFNGLUNIFORM3DPROC glad_glUniform3d; +PFNGLUNIFORM4DPROC glad_glUniform4d; +PFNGLUNIFORM1DVPROC glad_glUniform1dv; +PFNGLUNIFORM2DVPROC glad_glUniform2dv; +PFNGLUNIFORM3DVPROC glad_glUniform3dv; +PFNGLUNIFORM4DVPROC glad_glUniform4dv; +PFNGLUNIFORMMATRIX2DVPROC glad_glUniformMatrix2dv; +PFNGLUNIFORMMATRIX3DVPROC glad_glUniformMatrix3dv; +PFNGLUNIFORMMATRIX4DVPROC glad_glUniformMatrix4dv; +PFNGLUNIFORMMATRIX2X3DVPROC glad_glUniformMatrix2x3dv; +PFNGLUNIFORMMATRIX2X4DVPROC glad_glUniformMatrix2x4dv; +PFNGLUNIFORMMATRIX3X2DVPROC glad_glUniformMatrix3x2dv; +PFNGLUNIFORMMATRIX3X4DVPROC glad_glUniformMatrix3x4dv; +PFNGLUNIFORMMATRIX4X2DVPROC glad_glUniformMatrix4x2dv; +PFNGLUNIFORMMATRIX4X3DVPROC glad_glUniformMatrix4x3dv; +PFNGLGETUNIFORMDVPROC glad_glGetUniformdv; +PFNGLCREATESTATESNVPROC glad_glCreateStatesNV; +PFNGLDELETESTATESNVPROC glad_glDeleteStatesNV; +PFNGLISSTATENVPROC glad_glIsStateNV; +PFNGLSTATECAPTURENVPROC glad_glStateCaptureNV; +PFNGLGETCOMMANDHEADERNVPROC glad_glGetCommandHeaderNV; +PFNGLGETSTAGEINDEXNVPROC glad_glGetStageIndexNV; +PFNGLDRAWCOMMANDSNVPROC glad_glDrawCommandsNV; +PFNGLDRAWCOMMANDSADDRESSNVPROC glad_glDrawCommandsAddressNV; +PFNGLDRAWCOMMANDSSTATESNVPROC glad_glDrawCommandsStatesNV; +PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC glad_glDrawCommandsStatesAddressNV; +PFNGLCREATECOMMANDLISTSNVPROC glad_glCreateCommandListsNV; +PFNGLDELETECOMMANDLISTSNVPROC glad_glDeleteCommandListsNV; +PFNGLISCOMMANDLISTNVPROC glad_glIsCommandListNV; +PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC glad_glListDrawCommandsStatesClientNV; +PFNGLCOMMANDLISTSEGMENTSNVPROC glad_glCommandListSegmentsNV; +PFNGLCOMPILECOMMANDLISTNVPROC glad_glCompileCommandListNV; +PFNGLCALLCOMMANDLISTNVPROC glad_glCallCommandListNV; +PFNGLVERTEXWEIGHTFEXTPROC glad_glVertexWeightfEXT; +PFNGLVERTEXWEIGHTFVEXTPROC glad_glVertexWeightfvEXT; +PFNGLVERTEXWEIGHTPOINTEREXTPROC glad_glVertexWeightPointerEXT; +PFNGLSTRINGMARKERGREMEDYPROC glad_glStringMarkerGREMEDY; +PFNGLTEXSUBIMAGE1DEXTPROC glad_glTexSubImage1DEXT; +PFNGLTEXSUBIMAGE2DEXTPROC glad_glTexSubImage2DEXT; +PFNGLPROGRAMENVPARAMETERS4FVEXTPROC glad_glProgramEnvParameters4fvEXT; +PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC glad_glProgramLocalParameters4fvEXT; +PFNGLMAPCONTROLPOINTSNVPROC glad_glMapControlPointsNV; +PFNGLMAPPARAMETERIVNVPROC glad_glMapParameterivNV; +PFNGLMAPPARAMETERFVNVPROC glad_glMapParameterfvNV; +PFNGLGETMAPCONTROLPOINTSNVPROC glad_glGetMapControlPointsNV; +PFNGLGETMAPPARAMETERIVNVPROC glad_glGetMapParameterivNV; +PFNGLGETMAPPARAMETERFVNVPROC glad_glGetMapParameterfvNV; +PFNGLGETMAPATTRIBPARAMETERIVNVPROC glad_glGetMapAttribParameterivNV; +PFNGLGETMAPATTRIBPARAMETERFVNVPROC glad_glGetMapAttribParameterfvNV; +PFNGLEVALMAPSNVPROC glad_glEvalMapsNV; +PFNGLGETTEXFILTERFUNCSGISPROC glad_glGetTexFilterFuncSGIS; +PFNGLTEXFILTERFUNCSGISPROC glad_glTexFilterFuncSGIS; +PFNGLGETPERFMONITORGROUPSAMDPROC glad_glGetPerfMonitorGroupsAMD; +PFNGLGETPERFMONITORCOUNTERSAMDPROC glad_glGetPerfMonitorCountersAMD; +PFNGLGETPERFMONITORGROUPSTRINGAMDPROC glad_glGetPerfMonitorGroupStringAMD; +PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC glad_glGetPerfMonitorCounterStringAMD; +PFNGLGETPERFMONITORCOUNTERINFOAMDPROC glad_glGetPerfMonitorCounterInfoAMD; +PFNGLGENPERFMONITORSAMDPROC glad_glGenPerfMonitorsAMD; +PFNGLDELETEPERFMONITORSAMDPROC glad_glDeletePerfMonitorsAMD; +PFNGLSELECTPERFMONITORCOUNTERSAMDPROC glad_glSelectPerfMonitorCountersAMD; +PFNGLBEGINPERFMONITORAMDPROC glad_glBeginPerfMonitorAMD; +PFNGLENDPERFMONITORAMDPROC glad_glEndPerfMonitorAMD; +PFNGLGETPERFMONITORCOUNTERDATAAMDPROC glad_glGetPerfMonitorCounterDataAMD; +PFNGLSTENCILCLEARTAGEXTPROC glad_glStencilClearTagEXT; +PFNGLPRESENTFRAMEKEYEDNVPROC glad_glPresentFrameKeyedNV; +PFNGLPRESENTFRAMEDUALFILLNVPROC glad_glPresentFrameDualFillNV; +PFNGLGETVIDEOIVNVPROC glad_glGetVideoivNV; +PFNGLGETVIDEOUIVNVPROC glad_glGetVideouivNV; +PFNGLGETVIDEOI64VNVPROC glad_glGetVideoi64vNV; +PFNGLGETVIDEOUI64VNVPROC glad_glGetVideoui64vNV; +PFNGLFRAMEZOOMSGIXPROC glad_glFrameZoomSGIX; +PFNGLBEGINTRANSFORMFEEDBACKNVPROC glad_glBeginTransformFeedbackNV; +PFNGLENDTRANSFORMFEEDBACKNVPROC glad_glEndTransformFeedbackNV; +PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC glad_glTransformFeedbackAttribsNV; +PFNGLBINDBUFFERRANGENVPROC glad_glBindBufferRangeNV; +PFNGLBINDBUFFEROFFSETNVPROC glad_glBindBufferOffsetNV; +PFNGLBINDBUFFERBASENVPROC glad_glBindBufferBaseNV; +PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC glad_glTransformFeedbackVaryingsNV; +PFNGLACTIVEVARYINGNVPROC glad_glActiveVaryingNV; +PFNGLGETVARYINGLOCATIONNVPROC glad_glGetVaryingLocationNV; +PFNGLGETACTIVEVARYINGNVPROC glad_glGetActiveVaryingNV; +PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC glad_glGetTransformFeedbackVaryingNV; +PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC glad_glTransformFeedbackStreamAttribsNV; +PFNGLPROGRAMNAMEDPARAMETER4FNVPROC glad_glProgramNamedParameter4fNV; +PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC glad_glProgramNamedParameter4fvNV; +PFNGLPROGRAMNAMEDPARAMETER4DNVPROC glad_glProgramNamedParameter4dNV; +PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC glad_glProgramNamedParameter4dvNV; +PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC glad_glGetProgramNamedParameterfvNV; +PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC glad_glGetProgramNamedParameterdvNV; +PFNGLSTENCILOPVALUEAMDPROC glad_glStencilOpValueAMD; +PFNGLVERTEXATTRIBDIVISORARBPROC glad_glVertexAttribDivisorARB; +PFNGLPOLYGONOFFSETEXTPROC glad_glPolygonOffsetEXT; +PFNGLGETGRAPHICSRESETSTATUSPROC glad_glGetGraphicsResetStatus; +PFNGLREADNPIXELSPROC glad_glReadnPixels; +PFNGLGETNUNIFORMFVPROC glad_glGetnUniformfv; +PFNGLGETNUNIFORMIVPROC glad_glGetnUniformiv; +PFNGLGETNUNIFORMUIVPROC glad_glGetnUniformuiv; +PFNGLGETGRAPHICSRESETSTATUSKHRPROC glad_glGetGraphicsResetStatusKHR; +PFNGLREADNPIXELSKHRPROC glad_glReadnPixelsKHR; +PFNGLGETNUNIFORMFVKHRPROC glad_glGetnUniformfvKHR; +PFNGLGETNUNIFORMIVKHRPROC glad_glGetnUniformivKHR; +PFNGLGETNUNIFORMUIVKHRPROC glad_glGetnUniformuivKHR; +PFNGLTEXSTORAGESPARSEAMDPROC glad_glTexStorageSparseAMD; +PFNGLTEXTURESTORAGESPARSEAMDPROC glad_glTextureStorageSparseAMD; +PFNGLCLIPCONTROLPROC glad_glClipControl; +PFNGLFRAGMENTCOVERAGECOLORNVPROC glad_glFragmentCoverageColorNV; +PFNGLDELETEFENCESNVPROC glad_glDeleteFencesNV; +PFNGLGENFENCESNVPROC glad_glGenFencesNV; +PFNGLISFENCENVPROC glad_glIsFenceNV; +PFNGLTESTFENCENVPROC glad_glTestFenceNV; +PFNGLGETFENCEIVNVPROC glad_glGetFenceivNV; +PFNGLFINISHFENCENVPROC glad_glFinishFenceNV; +PFNGLSETFENCENVPROC glad_glSetFenceNV; +PFNGLTEXBUFFERRANGEPROC glad_glTexBufferRange; +PFNGLDRAWMESHARRAYSSUNPROC glad_glDrawMeshArraysSUN; +PFNGLBINDVERTEXBUFFERPROC glad_glBindVertexBuffer; +PFNGLVERTEXATTRIBFORMATPROC glad_glVertexAttribFormat; +PFNGLVERTEXATTRIBIFORMATPROC glad_glVertexAttribIFormat; +PFNGLVERTEXATTRIBLFORMATPROC glad_glVertexAttribLFormat; +PFNGLVERTEXATTRIBBINDINGPROC glad_glVertexAttribBinding; +PFNGLVERTEXBINDINGDIVISORPROC glad_glVertexBindingDivisor; +PFNGLFRAMEBUFFERPARAMETERIPROC glad_glFramebufferParameteri; +PFNGLGETFRAMEBUFFERPARAMETERIVPROC glad_glGetFramebufferParameteriv; +PFNGLCREATESYNCFROMCLEVENTARBPROC glad_glCreateSyncFromCLeventARB; +PFNGLCLEARDEPTHFOESPROC glad_glClearDepthfOES; +PFNGLCLIPPLANEFOESPROC glad_glClipPlanefOES; +PFNGLDEPTHRANGEFOESPROC glad_glDepthRangefOES; +PFNGLFRUSTUMFOESPROC glad_glFrustumfOES; +PFNGLGETCLIPPLANEFOESPROC glad_glGetClipPlanefOES; +PFNGLORTHOFOESPROC glad_glOrthofOES; +PFNGLPRIMITIVERESTARTNVPROC glad_glPrimitiveRestartNV; +PFNGLPRIMITIVERESTARTINDEXNVPROC glad_glPrimitiveRestartIndexNV; +PFNGLGLOBALALPHAFACTORBSUNPROC glad_glGlobalAlphaFactorbSUN; +PFNGLGLOBALALPHAFACTORSSUNPROC glad_glGlobalAlphaFactorsSUN; +PFNGLGLOBALALPHAFACTORISUNPROC glad_glGlobalAlphaFactoriSUN; +PFNGLGLOBALALPHAFACTORFSUNPROC glad_glGlobalAlphaFactorfSUN; +PFNGLGLOBALALPHAFACTORDSUNPROC glad_glGlobalAlphaFactordSUN; +PFNGLGLOBALALPHAFACTORUBSUNPROC glad_glGlobalAlphaFactorubSUN; +PFNGLGLOBALALPHAFACTORUSSUNPROC glad_glGlobalAlphaFactorusSUN; +PFNGLGLOBALALPHAFACTORUISUNPROC glad_glGlobalAlphaFactoruiSUN; +PFNGLARETEXTURESRESIDENTEXTPROC glad_glAreTexturesResidentEXT; +PFNGLBINDTEXTUREEXTPROC glad_glBindTextureEXT; +PFNGLDELETETEXTURESEXTPROC glad_glDeleteTexturesEXT; +PFNGLGENTEXTURESEXTPROC glad_glGenTexturesEXT; +PFNGLISTEXTUREEXTPROC glad_glIsTextureEXT; +PFNGLPRIORITIZETEXTURESEXTPROC glad_glPrioritizeTexturesEXT; +PFNGLGENNAMESAMDPROC glad_glGenNamesAMD; +PFNGLDELETENAMESAMDPROC glad_glDeleteNamesAMD; +PFNGLISNAMEAMDPROC glad_glIsNameAMD; +PFNGLBUFFERSTORAGEPROC glad_glBufferStorage; +PFNGLENABLEVERTEXATTRIBAPPLEPROC glad_glEnableVertexAttribAPPLE; +PFNGLDISABLEVERTEXATTRIBAPPLEPROC glad_glDisableVertexAttribAPPLE; +PFNGLISVERTEXATTRIBENABLEDAPPLEPROC glad_glIsVertexAttribEnabledAPPLE; +PFNGLMAPVERTEXATTRIB1DAPPLEPROC glad_glMapVertexAttrib1dAPPLE; +PFNGLMAPVERTEXATTRIB1FAPPLEPROC glad_glMapVertexAttrib1fAPPLE; +PFNGLMAPVERTEXATTRIB2DAPPLEPROC glad_glMapVertexAttrib2dAPPLE; +PFNGLMAPVERTEXATTRIB2FAPPLEPROC glad_glMapVertexAttrib2fAPPLE; +PFNGLBINDBUFFERSBASEPROC glad_glBindBuffersBase; +PFNGLBINDBUFFERSRANGEPROC glad_glBindBuffersRange; +PFNGLBINDTEXTURESPROC glad_glBindTextures; +PFNGLBINDSAMPLERSPROC glad_glBindSamplers; +PFNGLBINDIMAGETEXTURESPROC glad_glBindImageTextures; +PFNGLBINDVERTEXBUFFERSPROC glad_glBindVertexBuffers; +PFNGLGETLISTPARAMETERFVSGIXPROC glad_glGetListParameterfvSGIX; +PFNGLGETLISTPARAMETERIVSGIXPROC glad_glGetListParameterivSGIX; +PFNGLLISTPARAMETERFSGIXPROC glad_glListParameterfSGIX; +PFNGLLISTPARAMETERFVSGIXPROC glad_glListParameterfvSGIX; +PFNGLLISTPARAMETERISGIXPROC glad_glListParameteriSGIX; +PFNGLLISTPARAMETERIVSGIXPROC glad_glListParameterivSGIX; +PFNGLBUFFERADDRESSRANGENVPROC glad_glBufferAddressRangeNV; +PFNGLVERTEXFORMATNVPROC glad_glVertexFormatNV; +PFNGLNORMALFORMATNVPROC glad_glNormalFormatNV; +PFNGLCOLORFORMATNVPROC glad_glColorFormatNV; +PFNGLINDEXFORMATNVPROC glad_glIndexFormatNV; +PFNGLTEXCOORDFORMATNVPROC glad_glTexCoordFormatNV; +PFNGLEDGEFLAGFORMATNVPROC glad_glEdgeFlagFormatNV; +PFNGLSECONDARYCOLORFORMATNVPROC glad_glSecondaryColorFormatNV; +PFNGLFOGCOORDFORMATNVPROC glad_glFogCoordFormatNV; +PFNGLVERTEXATTRIBFORMATNVPROC glad_glVertexAttribFormatNV; +PFNGLVERTEXATTRIBIFORMATNVPROC glad_glVertexAttribIFormatNV; +PFNGLGETINTEGERUI64I_VNVPROC glad_glGetIntegerui64i_vNV; +PFNGLBLENDPARAMETERINVPROC glad_glBlendParameteriNV; +PFNGLBLENDBARRIERNVPROC glad_glBlendBarrierNV; +PFNGLSHARPENTEXFUNCSGISPROC glad_glSharpenTexFuncSGIS; +PFNGLGETSHARPENTEXFUNCSGISPROC glad_glGetSharpenTexFuncSGIS; +PFNGLVERTEXATTRIB1DARBPROC glad_glVertexAttrib1dARB; +PFNGLVERTEXATTRIB1DVARBPROC glad_glVertexAttrib1dvARB; +PFNGLVERTEXATTRIB1FARBPROC glad_glVertexAttrib1fARB; +PFNGLVERTEXATTRIB1FVARBPROC glad_glVertexAttrib1fvARB; +PFNGLVERTEXATTRIB1SARBPROC glad_glVertexAttrib1sARB; +PFNGLVERTEXATTRIB1SVARBPROC glad_glVertexAttrib1svARB; +PFNGLVERTEXATTRIB2DARBPROC glad_glVertexAttrib2dARB; +PFNGLVERTEXATTRIB2DVARBPROC glad_glVertexAttrib2dvARB; +PFNGLVERTEXATTRIB2FARBPROC glad_glVertexAttrib2fARB; +PFNGLVERTEXATTRIB2FVARBPROC glad_glVertexAttrib2fvARB; +PFNGLVERTEXATTRIB2SARBPROC glad_glVertexAttrib2sARB; +PFNGLVERTEXATTRIB2SVARBPROC glad_glVertexAttrib2svARB; +PFNGLVERTEXATTRIB3DARBPROC glad_glVertexAttrib3dARB; +PFNGLVERTEXATTRIB3DVARBPROC glad_glVertexAttrib3dvARB; +PFNGLVERTEXATTRIB3FARBPROC glad_glVertexAttrib3fARB; +PFNGLVERTEXATTRIB3FVARBPROC glad_glVertexAttrib3fvARB; +PFNGLVERTEXATTRIB3SARBPROC glad_glVertexAttrib3sARB; +PFNGLVERTEXATTRIB3SVARBPROC glad_glVertexAttrib3svARB; +PFNGLVERTEXATTRIB4NBVARBPROC glad_glVertexAttrib4NbvARB; +PFNGLVERTEXATTRIB4NIVARBPROC glad_glVertexAttrib4NivARB; +PFNGLVERTEXATTRIB4NSVARBPROC glad_glVertexAttrib4NsvARB; +PFNGLVERTEXATTRIB4NUBARBPROC glad_glVertexAttrib4NubARB; +PFNGLVERTEXATTRIB4NUBVARBPROC glad_glVertexAttrib4NubvARB; +PFNGLVERTEXATTRIB4NUIVARBPROC glad_glVertexAttrib4NuivARB; +PFNGLVERTEXATTRIB4NUSVARBPROC glad_glVertexAttrib4NusvARB; +PFNGLVERTEXATTRIB4BVARBPROC glad_glVertexAttrib4bvARB; +PFNGLVERTEXATTRIB4DARBPROC glad_glVertexAttrib4dARB; +PFNGLVERTEXATTRIB4DVARBPROC glad_glVertexAttrib4dvARB; +PFNGLVERTEXATTRIB4FARBPROC glad_glVertexAttrib4fARB; +PFNGLVERTEXATTRIB4FVARBPROC glad_glVertexAttrib4fvARB; +PFNGLVERTEXATTRIB4IVARBPROC glad_glVertexAttrib4ivARB; +PFNGLVERTEXATTRIB4SARBPROC glad_glVertexAttrib4sARB; +PFNGLVERTEXATTRIB4SVARBPROC glad_glVertexAttrib4svARB; +PFNGLVERTEXATTRIB4UBVARBPROC glad_glVertexAttrib4ubvARB; +PFNGLVERTEXATTRIB4UIVARBPROC glad_glVertexAttrib4uivARB; +PFNGLVERTEXATTRIB4USVARBPROC glad_glVertexAttrib4usvARB; +PFNGLVERTEXATTRIBPOINTERARBPROC glad_glVertexAttribPointerARB; +PFNGLENABLEVERTEXATTRIBARRAYARBPROC glad_glEnableVertexAttribArrayARB; +PFNGLDISABLEVERTEXATTRIBARRAYARBPROC glad_glDisableVertexAttribArrayARB; +PFNGLPROGRAMSTRINGARBPROC glad_glProgramStringARB; +PFNGLBINDPROGRAMARBPROC glad_glBindProgramARB; +PFNGLDELETEPROGRAMSARBPROC glad_glDeleteProgramsARB; +PFNGLGENPROGRAMSARBPROC glad_glGenProgramsARB; +PFNGLPROGRAMENVPARAMETER4DARBPROC glad_glProgramEnvParameter4dARB; +PFNGLPROGRAMENVPARAMETER4DVARBPROC glad_glProgramEnvParameter4dvARB; +PFNGLPROGRAMENVPARAMETER4FARBPROC glad_glProgramEnvParameter4fARB; +PFNGLPROGRAMENVPARAMETER4FVARBPROC glad_glProgramEnvParameter4fvARB; +PFNGLPROGRAMLOCALPARAMETER4DARBPROC glad_glProgramLocalParameter4dARB; +PFNGLPROGRAMLOCALPARAMETER4DVARBPROC glad_glProgramLocalParameter4dvARB; +PFNGLPROGRAMLOCALPARAMETER4FARBPROC glad_glProgramLocalParameter4fARB; +PFNGLPROGRAMLOCALPARAMETER4FVARBPROC glad_glProgramLocalParameter4fvARB; +PFNGLGETPROGRAMENVPARAMETERDVARBPROC glad_glGetProgramEnvParameterdvARB; +PFNGLGETPROGRAMENVPARAMETERFVARBPROC glad_glGetProgramEnvParameterfvARB; +PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC glad_glGetProgramLocalParameterdvARB; +PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC glad_glGetProgramLocalParameterfvARB; +PFNGLGETPROGRAMIVARBPROC glad_glGetProgramivARB; +PFNGLGETPROGRAMSTRINGARBPROC glad_glGetProgramStringARB; +PFNGLGETVERTEXATTRIBDVARBPROC glad_glGetVertexAttribdvARB; +PFNGLGETVERTEXATTRIBFVARBPROC glad_glGetVertexAttribfvARB; +PFNGLGETVERTEXATTRIBIVARBPROC glad_glGetVertexAttribivARB; +PFNGLGETVERTEXATTRIBPOINTERVARBPROC glad_glGetVertexAttribPointervARB; +PFNGLISPROGRAMARBPROC glad_glIsProgramARB; +PFNGLBINDBUFFERARBPROC glad_glBindBufferARB; +PFNGLDELETEBUFFERSARBPROC glad_glDeleteBuffersARB; +PFNGLGENBUFFERSARBPROC glad_glGenBuffersARB; +PFNGLISBUFFERARBPROC glad_glIsBufferARB; +PFNGLBUFFERDATAARBPROC glad_glBufferDataARB; +PFNGLBUFFERSUBDATAARBPROC glad_glBufferSubDataARB; +PFNGLGETBUFFERSUBDATAARBPROC glad_glGetBufferSubDataARB; +PFNGLMAPBUFFERARBPROC glad_glMapBufferARB; +PFNGLUNMAPBUFFERARBPROC glad_glUnmapBufferARB; +PFNGLGETBUFFERPARAMETERIVARBPROC glad_glGetBufferParameterivARB; +PFNGLGETBUFFERPOINTERVARBPROC glad_glGetBufferPointervARB; +PFNGLFLUSHVERTEXARRAYRANGENVPROC glad_glFlushVertexArrayRangeNV; +PFNGLVERTEXARRAYRANGENVPROC glad_glVertexArrayRangeNV; +PFNGLFRAGMENTCOLORMATERIALSGIXPROC glad_glFragmentColorMaterialSGIX; +PFNGLFRAGMENTLIGHTFSGIXPROC glad_glFragmentLightfSGIX; +PFNGLFRAGMENTLIGHTFVSGIXPROC glad_glFragmentLightfvSGIX; +PFNGLFRAGMENTLIGHTISGIXPROC glad_glFragmentLightiSGIX; +PFNGLFRAGMENTLIGHTIVSGIXPROC glad_glFragmentLightivSGIX; +PFNGLFRAGMENTLIGHTMODELFSGIXPROC glad_glFragmentLightModelfSGIX; +PFNGLFRAGMENTLIGHTMODELFVSGIXPROC glad_glFragmentLightModelfvSGIX; +PFNGLFRAGMENTLIGHTMODELISGIXPROC glad_glFragmentLightModeliSGIX; +PFNGLFRAGMENTLIGHTMODELIVSGIXPROC glad_glFragmentLightModelivSGIX; +PFNGLFRAGMENTMATERIALFSGIXPROC glad_glFragmentMaterialfSGIX; +PFNGLFRAGMENTMATERIALFVSGIXPROC glad_glFragmentMaterialfvSGIX; +PFNGLFRAGMENTMATERIALISGIXPROC glad_glFragmentMaterialiSGIX; +PFNGLFRAGMENTMATERIALIVSGIXPROC glad_glFragmentMaterialivSGIX; +PFNGLGETFRAGMENTLIGHTFVSGIXPROC glad_glGetFragmentLightfvSGIX; +PFNGLGETFRAGMENTLIGHTIVSGIXPROC glad_glGetFragmentLightivSGIX; +PFNGLGETFRAGMENTMATERIALFVSGIXPROC glad_glGetFragmentMaterialfvSGIX; +PFNGLGETFRAGMENTMATERIALIVSGIXPROC glad_glGetFragmentMaterialivSGIX; +PFNGLLIGHTENVISGIXPROC glad_glLightEnviSGIX; +PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC glad_glRenderbufferStorageMultisampleCoverageNV; +PFNGLGETQUERYOBJECTI64VEXTPROC glad_glGetQueryObjecti64vEXT; +PFNGLGETQUERYOBJECTUI64VEXTPROC glad_glGetQueryObjectui64vEXT; +PFNGLGETTEXTUREHANDLENVPROC glad_glGetTextureHandleNV; +PFNGLGETTEXTURESAMPLERHANDLENVPROC glad_glGetTextureSamplerHandleNV; +PFNGLMAKETEXTUREHANDLERESIDENTNVPROC glad_glMakeTextureHandleResidentNV; +PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC glad_glMakeTextureHandleNonResidentNV; +PFNGLGETIMAGEHANDLENVPROC glad_glGetImageHandleNV; +PFNGLMAKEIMAGEHANDLERESIDENTNVPROC glad_glMakeImageHandleResidentNV; +PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC glad_glMakeImageHandleNonResidentNV; +PFNGLUNIFORMHANDLEUI64NVPROC glad_glUniformHandleui64NV; +PFNGLUNIFORMHANDLEUI64VNVPROC glad_glUniformHandleui64vNV; +PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC glad_glProgramUniformHandleui64NV; +PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC glad_glProgramUniformHandleui64vNV; +PFNGLISTEXTUREHANDLERESIDENTNVPROC glad_glIsTextureHandleResidentNV; +PFNGLISIMAGEHANDLERESIDENTNVPROC glad_glIsImageHandleResidentNV; +PFNGLDEBUGMESSAGECONTROLPROC glad_glDebugMessageControl; +PFNGLDEBUGMESSAGEINSERTPROC glad_glDebugMessageInsert; +PFNGLDEBUGMESSAGECALLBACKPROC glad_glDebugMessageCallback; +PFNGLGETDEBUGMESSAGELOGPROC glad_glGetDebugMessageLog; +PFNGLPUSHDEBUGGROUPPROC glad_glPushDebugGroup; +PFNGLPOPDEBUGGROUPPROC glad_glPopDebugGroup; +PFNGLOBJECTLABELPROC glad_glObjectLabel; +PFNGLGETOBJECTLABELPROC glad_glGetObjectLabel; +PFNGLOBJECTPTRLABELPROC glad_glObjectPtrLabel; +PFNGLGETOBJECTPTRLABELPROC glad_glGetObjectPtrLabel; +PFNGLGETPOINTERVPROC glad_glGetPointerv; +PFNGLDEBUGMESSAGECONTROLKHRPROC glad_glDebugMessageControlKHR; +PFNGLDEBUGMESSAGEINSERTKHRPROC glad_glDebugMessageInsertKHR; +PFNGLDEBUGMESSAGECALLBACKKHRPROC glad_glDebugMessageCallbackKHR; +PFNGLGETDEBUGMESSAGELOGKHRPROC glad_glGetDebugMessageLogKHR; +PFNGLPUSHDEBUGGROUPKHRPROC glad_glPushDebugGroupKHR; +PFNGLPOPDEBUGGROUPKHRPROC glad_glPopDebugGroupKHR; +PFNGLOBJECTLABELKHRPROC glad_glObjectLabelKHR; +PFNGLGETOBJECTLABELKHRPROC glad_glGetObjectLabelKHR; +PFNGLOBJECTPTRLABELKHRPROC glad_glObjectPtrLabelKHR; +PFNGLGETOBJECTPTRLABELKHRPROC glad_glGetObjectPtrLabelKHR; +PFNGLGETPOINTERVKHRPROC glad_glGetPointervKHR; +PFNGLVERTEXATTRIBARRAYOBJECTATIPROC glad_glVertexAttribArrayObjectATI; +PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC glad_glGetVertexAttribArrayObjectfvATI; +PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC glad_glGetVertexAttribArrayObjectivATI; +PFNGLUNIFORMBUFFEREXTPROC glad_glUniformBufferEXT; +PFNGLGETUNIFORMBUFFERSIZEEXTPROC glad_glGetUniformBufferSizeEXT; +PFNGLGETUNIFORMOFFSETEXTPROC glad_glGetUniformOffsetEXT; +PFNGLBLENDBARRIERKHRPROC glad_glBlendBarrierKHR; +PFNGLELEMENTPOINTERATIPROC glad_glElementPointerATI; +PFNGLDRAWELEMENTARRAYATIPROC glad_glDrawElementArrayATI; +PFNGLDRAWRANGEELEMENTARRAYATIPROC glad_glDrawRangeElementArrayATI; +PFNGLREFERENCEPLANESGIXPROC glad_glReferencePlaneSGIX; +PFNGLACTIVESTENCILFACEEXTPROC glad_glActiveStencilFaceEXT; +PFNGLGETMULTISAMPLEFVNVPROC glad_glGetMultisamplefvNV; +PFNGLSAMPLEMASKINDEXEDNVPROC glad_glSampleMaskIndexedNV; +PFNGLTEXRENDERBUFFERNVPROC glad_glTexRenderbufferNV; +PFNGLFLUSHSTATICDATAIBMPROC glad_glFlushStaticDataIBM; +PFNGLTEXTURENORMALEXTPROC glad_glTextureNormalEXT; +PFNGLPOINTPARAMETERFEXTPROC glad_glPointParameterfEXT; +PFNGLPOINTPARAMETERFVEXTPROC glad_glPointParameterfvEXT; +PFNGLHINTPGIPROC glad_glHintPGI; +PFNGLBINDATTRIBLOCATIONARBPROC glad_glBindAttribLocationARB; +PFNGLGETACTIVEATTRIBARBPROC glad_glGetActiveAttribARB; +PFNGLGETATTRIBLOCATIONARBPROC glad_glGetAttribLocationARB; +PFNGLPATCHPARAMETERIPROC glad_glPatchParameteri; +PFNGLPATCHPARAMETERFVPROC glad_glPatchParameterfv; +PFNGLCOLORMASKINDEXEDEXTPROC glad_glColorMaskIndexedEXT; +PFNGLGETBOOLEANINDEXEDVEXTPROC glad_glGetBooleanIndexedvEXT; +PFNGLGETINTEGERINDEXEDVEXTPROC glad_glGetIntegerIndexedvEXT; +PFNGLENABLEINDEXEDEXTPROC glad_glEnableIndexedEXT; +PFNGLDISABLEINDEXEDEXTPROC glad_glDisableIndexedEXT; +PFNGLISENABLEDINDEXEDEXTPROC glad_glIsEnabledIndexedEXT; +PFNGLVERTEXATTRIBL1DPROC glad_glVertexAttribL1d; +PFNGLVERTEXATTRIBL2DPROC glad_glVertexAttribL2d; +PFNGLVERTEXATTRIBL3DPROC glad_glVertexAttribL3d; +PFNGLVERTEXATTRIBL4DPROC glad_glVertexAttribL4d; +PFNGLVERTEXATTRIBL1DVPROC glad_glVertexAttribL1dv; +PFNGLVERTEXATTRIBL2DVPROC glad_glVertexAttribL2dv; +PFNGLVERTEXATTRIBL3DVPROC glad_glVertexAttribL3dv; +PFNGLVERTEXATTRIBL4DVPROC glad_glVertexAttribL4dv; +PFNGLVERTEXATTRIBLPOINTERPROC glad_glVertexAttribLPointer; +PFNGLGETVERTEXATTRIBLDVPROC glad_glGetVertexAttribLdv; +PFNGLRASTERSAMPLESEXTPROC glad_glRasterSamplesEXT; +PFNGLVERTEXATTRIBPARAMETERIAMDPROC glad_glVertexAttribParameteriAMD; +PFNGLTEXSTORAGE1DPROC glad_glTexStorage1D; +PFNGLTEXSTORAGE2DPROC glad_glTexStorage2D; +PFNGLTEXSTORAGE3DPROC glad_glTexStorage3D; +PFNGLCOPYIMAGESUBDATAPROC glad_glCopyImageSubData; +PFNGLPIXELTEXGENPARAMETERISGISPROC glad_glPixelTexGenParameteriSGIS; +PFNGLPIXELTEXGENPARAMETERIVSGISPROC glad_glPixelTexGenParameterivSGIS; +PFNGLPIXELTEXGENPARAMETERFSGISPROC glad_glPixelTexGenParameterfSGIS; +PFNGLPIXELTEXGENPARAMETERFVSGISPROC glad_glPixelTexGenParameterfvSGIS; +PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC glad_glGetPixelTexGenParameterivSGIS; +PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC glad_glGetPixelTexGenParameterfvSGIS; +PFNGLGETINSTRUMENTSSGIXPROC glad_glGetInstrumentsSGIX; +PFNGLINSTRUMENTSBUFFERSGIXPROC glad_glInstrumentsBufferSGIX; +PFNGLPOLLINSTRUMENTSSGIXPROC glad_glPollInstrumentsSGIX; +PFNGLREADINSTRUMENTSSGIXPROC glad_glReadInstrumentsSGIX; +PFNGLSTARTINSTRUMENTSSGIXPROC glad_glStartInstrumentsSGIX; +PFNGLSTOPINSTRUMENTSSGIXPROC glad_glStopInstrumentsSGIX; +PFNGLSHADERSTORAGEBLOCKBINDINGPROC glad_glShaderStorageBlockBinding; +PFNGLBLENDEQUATIONEXTPROC glad_glBlendEquationEXT; +PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC glad_glDrawArraysInstancedBaseInstance; +PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC glad_glDrawElementsInstancedBaseInstance; +PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC glad_glDrawElementsInstancedBaseVertexBaseInstance; +PFNGLMEMORYBARRIERBYREGIONPROC glad_glMemoryBarrierByRegion; +PFNGLTEXPARAMETERIIVEXTPROC glad_glTexParameterIivEXT; +PFNGLTEXPARAMETERIUIVEXTPROC glad_glTexParameterIuivEXT; +PFNGLGETTEXPARAMETERIIVEXTPROC glad_glGetTexParameterIivEXT; +PFNGLGETTEXPARAMETERIUIVEXTPROC glad_glGetTexParameterIuivEXT; +PFNGLCLEARCOLORIIEXTPROC glad_glClearColorIiEXT; +PFNGLCLEARCOLORIUIEXTPROC glad_glClearColorIuiEXT; +PFNGLUNIFORM1I64NVPROC glad_glUniform1i64NV; +PFNGLUNIFORM2I64NVPROC glad_glUniform2i64NV; +PFNGLUNIFORM3I64NVPROC glad_glUniform3i64NV; +PFNGLUNIFORM4I64NVPROC glad_glUniform4i64NV; +PFNGLUNIFORM1I64VNVPROC glad_glUniform1i64vNV; +PFNGLUNIFORM2I64VNVPROC glad_glUniform2i64vNV; +PFNGLUNIFORM3I64VNVPROC glad_glUniform3i64vNV; +PFNGLUNIFORM4I64VNVPROC glad_glUniform4i64vNV; +PFNGLUNIFORM1UI64NVPROC glad_glUniform1ui64NV; +PFNGLUNIFORM2UI64NVPROC glad_glUniform2ui64NV; +PFNGLUNIFORM3UI64NVPROC glad_glUniform3ui64NV; +PFNGLUNIFORM4UI64NVPROC glad_glUniform4ui64NV; +PFNGLUNIFORM1UI64VNVPROC glad_glUniform1ui64vNV; +PFNGLUNIFORM2UI64VNVPROC glad_glUniform2ui64vNV; +PFNGLUNIFORM3UI64VNVPROC glad_glUniform3ui64vNV; +PFNGLUNIFORM4UI64VNVPROC glad_glUniform4ui64vNV; +PFNGLGETUNIFORMI64VNVPROC glad_glGetUniformi64vNV; +PFNGLPROGRAMUNIFORM1I64NVPROC glad_glProgramUniform1i64NV; +PFNGLPROGRAMUNIFORM2I64NVPROC glad_glProgramUniform2i64NV; +PFNGLPROGRAMUNIFORM3I64NVPROC glad_glProgramUniform3i64NV; +PFNGLPROGRAMUNIFORM4I64NVPROC glad_glProgramUniform4i64NV; +PFNGLPROGRAMUNIFORM1I64VNVPROC glad_glProgramUniform1i64vNV; +PFNGLPROGRAMUNIFORM2I64VNVPROC glad_glProgramUniform2i64vNV; +PFNGLPROGRAMUNIFORM3I64VNVPROC glad_glProgramUniform3i64vNV; +PFNGLPROGRAMUNIFORM4I64VNVPROC glad_glProgramUniform4i64vNV; +PFNGLPROGRAMUNIFORM1UI64NVPROC glad_glProgramUniform1ui64NV; +PFNGLPROGRAMUNIFORM2UI64NVPROC glad_glProgramUniform2ui64NV; +PFNGLPROGRAMUNIFORM3UI64NVPROC glad_glProgramUniform3ui64NV; +PFNGLPROGRAMUNIFORM4UI64NVPROC glad_glProgramUniform4ui64NV; +PFNGLPROGRAMUNIFORM1UI64VNVPROC glad_glProgramUniform1ui64vNV; +PFNGLPROGRAMUNIFORM2UI64VNVPROC glad_glProgramUniform2ui64vNV; +PFNGLPROGRAMUNIFORM3UI64VNVPROC glad_glProgramUniform3ui64vNV; +PFNGLPROGRAMUNIFORM4UI64VNVPROC glad_glProgramUniform4ui64vNV; +PFNGLTESSELLATIONFACTORAMDPROC glad_glTessellationFactorAMD; +PFNGLTESSELLATIONMODEAMDPROC glad_glTessellationModeAMD; +PFNGLINVALIDATETEXSUBIMAGEPROC glad_glInvalidateTexSubImage; +PFNGLINVALIDATETEXIMAGEPROC glad_glInvalidateTexImage; +PFNGLINVALIDATEBUFFERSUBDATAPROC glad_glInvalidateBufferSubData; +PFNGLINVALIDATEBUFFERDATAPROC glad_glInvalidateBufferData; +PFNGLINVALIDATEFRAMEBUFFERPROC glad_glInvalidateFramebuffer; +PFNGLINVALIDATESUBFRAMEBUFFERPROC glad_glInvalidateSubFramebuffer; +PFNGLINDEXMATERIALEXTPROC glad_glIndexMaterialEXT; +PFNGLVERTEXPOINTERVINTELPROC glad_glVertexPointervINTEL; +PFNGLNORMALPOINTERVINTELPROC glad_glNormalPointervINTEL; +PFNGLCOLORPOINTERVINTELPROC glad_glColorPointervINTEL; +PFNGLTEXCOORDPOINTERVINTELPROC glad_glTexCoordPointervINTEL; +PFNGLDRAWBUFFERSATIPROC glad_glDrawBuffersATI; +PFNGLPIXELTEXGENSGIXPROC glad_glPixelTexGenSGIX; +PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC glad_glProgramBufferParametersfvNV; +PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC glad_glProgramBufferParametersIivNV; +PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC glad_glProgramBufferParametersIuivNV; +PFNGLCREATETRANSFORMFEEDBACKSPROC glad_glCreateTransformFeedbacks; +PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC glad_glTransformFeedbackBufferBase; +PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC glad_glTransformFeedbackBufferRange; +PFNGLGETTRANSFORMFEEDBACKIVPROC glad_glGetTransformFeedbackiv; +PFNGLGETTRANSFORMFEEDBACKI_VPROC glad_glGetTransformFeedbacki_v; +PFNGLGETTRANSFORMFEEDBACKI64_VPROC glad_glGetTransformFeedbacki64_v; +PFNGLCREATEBUFFERSPROC glad_glCreateBuffers; +PFNGLNAMEDBUFFERSTORAGEPROC glad_glNamedBufferStorage; +PFNGLNAMEDBUFFERDATAPROC glad_glNamedBufferData; +PFNGLNAMEDBUFFERSUBDATAPROC glad_glNamedBufferSubData; +PFNGLCOPYNAMEDBUFFERSUBDATAPROC glad_glCopyNamedBufferSubData; +PFNGLCLEARNAMEDBUFFERDATAPROC glad_glClearNamedBufferData; +PFNGLCLEARNAMEDBUFFERSUBDATAPROC glad_glClearNamedBufferSubData; +PFNGLMAPNAMEDBUFFERPROC glad_glMapNamedBuffer; +PFNGLMAPNAMEDBUFFERRANGEPROC glad_glMapNamedBufferRange; +PFNGLUNMAPNAMEDBUFFERPROC glad_glUnmapNamedBuffer; +PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC glad_glFlushMappedNamedBufferRange; +PFNGLGETNAMEDBUFFERPARAMETERIVPROC glad_glGetNamedBufferParameteriv; +PFNGLGETNAMEDBUFFERPARAMETERI64VPROC glad_glGetNamedBufferParameteri64v; +PFNGLGETNAMEDBUFFERPOINTERVPROC glad_glGetNamedBufferPointerv; +PFNGLGETNAMEDBUFFERSUBDATAPROC glad_glGetNamedBufferSubData; +PFNGLCREATEFRAMEBUFFERSPROC glad_glCreateFramebuffers; +PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC glad_glNamedFramebufferRenderbuffer; +PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC glad_glNamedFramebufferParameteri; +PFNGLNAMEDFRAMEBUFFERTEXTUREPROC glad_glNamedFramebufferTexture; +PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC glad_glNamedFramebufferTextureLayer; +PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC glad_glNamedFramebufferDrawBuffer; +PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC glad_glNamedFramebufferDrawBuffers; +PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC glad_glNamedFramebufferReadBuffer; +PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC glad_glInvalidateNamedFramebufferData; +PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC glad_glInvalidateNamedFramebufferSubData; +PFNGLCLEARNAMEDFRAMEBUFFERIVPROC glad_glClearNamedFramebufferiv; +PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC glad_glClearNamedFramebufferuiv; +PFNGLCLEARNAMEDFRAMEBUFFERFVPROC glad_glClearNamedFramebufferfv; +PFNGLCLEARNAMEDFRAMEBUFFERFIPROC glad_glClearNamedFramebufferfi; +PFNGLBLITNAMEDFRAMEBUFFERPROC glad_glBlitNamedFramebuffer; +PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC glad_glCheckNamedFramebufferStatus; +PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC glad_glGetNamedFramebufferParameteriv; +PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetNamedFramebufferAttachmentParameteriv; +PFNGLCREATERENDERBUFFERSPROC glad_glCreateRenderbuffers; +PFNGLNAMEDRENDERBUFFERSTORAGEPROC glad_glNamedRenderbufferStorage; +PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glNamedRenderbufferStorageMultisample; +PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC glad_glGetNamedRenderbufferParameteriv; +PFNGLCREATETEXTURESPROC glad_glCreateTextures; +PFNGLTEXTUREBUFFERPROC glad_glTextureBuffer; +PFNGLTEXTUREBUFFERRANGEPROC glad_glTextureBufferRange; +PFNGLTEXTURESTORAGE1DPROC glad_glTextureStorage1D; +PFNGLTEXTURESTORAGE2DPROC glad_glTextureStorage2D; +PFNGLTEXTURESTORAGE3DPROC glad_glTextureStorage3D; +PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC glad_glTextureStorage2DMultisample; +PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC glad_glTextureStorage3DMultisample; +PFNGLTEXTURESUBIMAGE1DPROC glad_glTextureSubImage1D; +PFNGLTEXTURESUBIMAGE2DPROC glad_glTextureSubImage2D; +PFNGLTEXTURESUBIMAGE3DPROC glad_glTextureSubImage3D; +PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC glad_glCompressedTextureSubImage1D; +PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC glad_glCompressedTextureSubImage2D; +PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC glad_glCompressedTextureSubImage3D; +PFNGLCOPYTEXTURESUBIMAGE1DPROC glad_glCopyTextureSubImage1D; +PFNGLCOPYTEXTURESUBIMAGE2DPROC glad_glCopyTextureSubImage2D; +PFNGLCOPYTEXTURESUBIMAGE3DPROC glad_glCopyTextureSubImage3D; +PFNGLTEXTUREPARAMETERFPROC glad_glTextureParameterf; +PFNGLTEXTUREPARAMETERFVPROC glad_glTextureParameterfv; +PFNGLTEXTUREPARAMETERIPROC glad_glTextureParameteri; +PFNGLTEXTUREPARAMETERIIVPROC glad_glTextureParameterIiv; +PFNGLTEXTUREPARAMETERIUIVPROC glad_glTextureParameterIuiv; +PFNGLTEXTUREPARAMETERIVPROC glad_glTextureParameteriv; +PFNGLGENERATETEXTUREMIPMAPPROC glad_glGenerateTextureMipmap; +PFNGLBINDTEXTUREUNITPROC glad_glBindTextureUnit; +PFNGLGETTEXTUREIMAGEPROC glad_glGetTextureImage; +PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC glad_glGetCompressedTextureImage; +PFNGLGETTEXTURELEVELPARAMETERFVPROC glad_glGetTextureLevelParameterfv; +PFNGLGETTEXTURELEVELPARAMETERIVPROC glad_glGetTextureLevelParameteriv; +PFNGLGETTEXTUREPARAMETERFVPROC glad_glGetTextureParameterfv; +PFNGLGETTEXTUREPARAMETERIIVPROC glad_glGetTextureParameterIiv; +PFNGLGETTEXTUREPARAMETERIUIVPROC glad_glGetTextureParameterIuiv; +PFNGLGETTEXTUREPARAMETERIVPROC glad_glGetTextureParameteriv; +PFNGLCREATEVERTEXARRAYSPROC glad_glCreateVertexArrays; +PFNGLDISABLEVERTEXARRAYATTRIBPROC glad_glDisableVertexArrayAttrib; +PFNGLENABLEVERTEXARRAYATTRIBPROC glad_glEnableVertexArrayAttrib; +PFNGLVERTEXARRAYELEMENTBUFFERPROC glad_glVertexArrayElementBuffer; +PFNGLVERTEXARRAYVERTEXBUFFERPROC glad_glVertexArrayVertexBuffer; +PFNGLVERTEXARRAYVERTEXBUFFERSPROC glad_glVertexArrayVertexBuffers; +PFNGLVERTEXARRAYATTRIBBINDINGPROC glad_glVertexArrayAttribBinding; +PFNGLVERTEXARRAYATTRIBFORMATPROC glad_glVertexArrayAttribFormat; +PFNGLVERTEXARRAYATTRIBIFORMATPROC glad_glVertexArrayAttribIFormat; +PFNGLVERTEXARRAYATTRIBLFORMATPROC glad_glVertexArrayAttribLFormat; +PFNGLVERTEXARRAYBINDINGDIVISORPROC glad_glVertexArrayBindingDivisor; +PFNGLGETVERTEXARRAYIVPROC glad_glGetVertexArrayiv; +PFNGLGETVERTEXARRAYINDEXEDIVPROC glad_glGetVertexArrayIndexediv; +PFNGLGETVERTEXARRAYINDEXED64IVPROC glad_glGetVertexArrayIndexed64iv; +PFNGLCREATESAMPLERSPROC glad_glCreateSamplers; +PFNGLCREATEPROGRAMPIPELINESPROC glad_glCreateProgramPipelines; +PFNGLCREATEQUERIESPROC glad_glCreateQueries; +PFNGLGETQUERYBUFFEROBJECTI64VPROC glad_glGetQueryBufferObjecti64v; +PFNGLGETQUERYBUFFEROBJECTIVPROC glad_glGetQueryBufferObjectiv; +PFNGLGETQUERYBUFFEROBJECTUI64VPROC glad_glGetQueryBufferObjectui64v; +PFNGLGETQUERYBUFFEROBJECTUIVPROC glad_glGetQueryBufferObjectuiv; +PFNGLBINDTRANSFORMFEEDBACKNVPROC glad_glBindTransformFeedbackNV; +PFNGLDELETETRANSFORMFEEDBACKSNVPROC glad_glDeleteTransformFeedbacksNV; +PFNGLGENTRANSFORMFEEDBACKSNVPROC glad_glGenTransformFeedbacksNV; +PFNGLISTRANSFORMFEEDBACKNVPROC glad_glIsTransformFeedbackNV; +PFNGLPAUSETRANSFORMFEEDBACKNVPROC glad_glPauseTransformFeedbackNV; +PFNGLRESUMETRANSFORMFEEDBACKNVPROC glad_glResumeTransformFeedbackNV; +PFNGLDRAWTRANSFORMFEEDBACKNVPROC glad_glDrawTransformFeedbackNV; +PFNGLBLENDCOLOREXTPROC glad_glBlendColorEXT; +PFNGLGETHISTOGRAMEXTPROC glad_glGetHistogramEXT; +PFNGLGETHISTOGRAMPARAMETERFVEXTPROC glad_glGetHistogramParameterfvEXT; +PFNGLGETHISTOGRAMPARAMETERIVEXTPROC glad_glGetHistogramParameterivEXT; +PFNGLGETMINMAXEXTPROC glad_glGetMinmaxEXT; +PFNGLGETMINMAXPARAMETERFVEXTPROC glad_glGetMinmaxParameterfvEXT; +PFNGLGETMINMAXPARAMETERIVEXTPROC glad_glGetMinmaxParameterivEXT; +PFNGLHISTOGRAMEXTPROC glad_glHistogramEXT; +PFNGLMINMAXEXTPROC glad_glMinmaxEXT; +PFNGLRESETHISTOGRAMEXTPROC glad_glResetHistogramEXT; +PFNGLRESETMINMAXEXTPROC glad_glResetMinmaxEXT; +PFNGLGETTEXTURESUBIMAGEPROC glad_glGetTextureSubImage; +PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC glad_glGetCompressedTextureSubImage; +PFNGLPOINTPARAMETERFSGISPROC glad_glPointParameterfSGIS; +PFNGLPOINTPARAMETERFVSGISPROC glad_glPointParameterfvSGIS; +PFNGLMATRIXLOADFEXTPROC glad_glMatrixLoadfEXT; +PFNGLMATRIXLOADDEXTPROC glad_glMatrixLoaddEXT; +PFNGLMATRIXMULTFEXTPROC glad_glMatrixMultfEXT; +PFNGLMATRIXMULTDEXTPROC glad_glMatrixMultdEXT; +PFNGLMATRIXLOADIDENTITYEXTPROC glad_glMatrixLoadIdentityEXT; +PFNGLMATRIXROTATEFEXTPROC glad_glMatrixRotatefEXT; +PFNGLMATRIXROTATEDEXTPROC glad_glMatrixRotatedEXT; +PFNGLMATRIXSCALEFEXTPROC glad_glMatrixScalefEXT; +PFNGLMATRIXSCALEDEXTPROC glad_glMatrixScaledEXT; +PFNGLMATRIXTRANSLATEFEXTPROC glad_glMatrixTranslatefEXT; +PFNGLMATRIXTRANSLATEDEXTPROC glad_glMatrixTranslatedEXT; +PFNGLMATRIXFRUSTUMEXTPROC glad_glMatrixFrustumEXT; +PFNGLMATRIXORTHOEXTPROC glad_glMatrixOrthoEXT; +PFNGLMATRIXPOPEXTPROC glad_glMatrixPopEXT; +PFNGLMATRIXPUSHEXTPROC glad_glMatrixPushEXT; +PFNGLCLIENTATTRIBDEFAULTEXTPROC glad_glClientAttribDefaultEXT; +PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC glad_glPushClientAttribDefaultEXT; +PFNGLTEXTUREPARAMETERFEXTPROC glad_glTextureParameterfEXT; +PFNGLTEXTUREPARAMETERFVEXTPROC glad_glTextureParameterfvEXT; +PFNGLTEXTUREPARAMETERIEXTPROC glad_glTextureParameteriEXT; +PFNGLTEXTUREPARAMETERIVEXTPROC glad_glTextureParameterivEXT; +PFNGLTEXTUREIMAGE1DEXTPROC glad_glTextureImage1DEXT; +PFNGLTEXTUREIMAGE2DEXTPROC glad_glTextureImage2DEXT; +PFNGLTEXTURESUBIMAGE1DEXTPROC glad_glTextureSubImage1DEXT; +PFNGLTEXTURESUBIMAGE2DEXTPROC glad_glTextureSubImage2DEXT; +PFNGLCOPYTEXTUREIMAGE1DEXTPROC glad_glCopyTextureImage1DEXT; +PFNGLCOPYTEXTUREIMAGE2DEXTPROC glad_glCopyTextureImage2DEXT; +PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC glad_glCopyTextureSubImage1DEXT; +PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC glad_glCopyTextureSubImage2DEXT; +PFNGLGETTEXTUREIMAGEEXTPROC glad_glGetTextureImageEXT; +PFNGLGETTEXTUREPARAMETERFVEXTPROC glad_glGetTextureParameterfvEXT; +PFNGLGETTEXTUREPARAMETERIVEXTPROC glad_glGetTextureParameterivEXT; +PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC glad_glGetTextureLevelParameterfvEXT; +PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC glad_glGetTextureLevelParameterivEXT; +PFNGLTEXTUREIMAGE3DEXTPROC glad_glTextureImage3DEXT; +PFNGLTEXTURESUBIMAGE3DEXTPROC glad_glTextureSubImage3DEXT; +PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC glad_glCopyTextureSubImage3DEXT; +PFNGLBINDMULTITEXTUREEXTPROC glad_glBindMultiTextureEXT; +PFNGLMULTITEXCOORDPOINTEREXTPROC glad_glMultiTexCoordPointerEXT; +PFNGLMULTITEXENVFEXTPROC glad_glMultiTexEnvfEXT; +PFNGLMULTITEXENVFVEXTPROC glad_glMultiTexEnvfvEXT; +PFNGLMULTITEXENVIEXTPROC glad_glMultiTexEnviEXT; +PFNGLMULTITEXENVIVEXTPROC glad_glMultiTexEnvivEXT; +PFNGLMULTITEXGENDEXTPROC glad_glMultiTexGendEXT; +PFNGLMULTITEXGENDVEXTPROC glad_glMultiTexGendvEXT; +PFNGLMULTITEXGENFEXTPROC glad_glMultiTexGenfEXT; +PFNGLMULTITEXGENFVEXTPROC glad_glMultiTexGenfvEXT; +PFNGLMULTITEXGENIEXTPROC glad_glMultiTexGeniEXT; +PFNGLMULTITEXGENIVEXTPROC glad_glMultiTexGenivEXT; +PFNGLGETMULTITEXENVFVEXTPROC glad_glGetMultiTexEnvfvEXT; +PFNGLGETMULTITEXENVIVEXTPROC glad_glGetMultiTexEnvivEXT; +PFNGLGETMULTITEXGENDVEXTPROC glad_glGetMultiTexGendvEXT; +PFNGLGETMULTITEXGENFVEXTPROC glad_glGetMultiTexGenfvEXT; +PFNGLGETMULTITEXGENIVEXTPROC glad_glGetMultiTexGenivEXT; +PFNGLMULTITEXPARAMETERIEXTPROC glad_glMultiTexParameteriEXT; +PFNGLMULTITEXPARAMETERIVEXTPROC glad_glMultiTexParameterivEXT; +PFNGLMULTITEXPARAMETERFEXTPROC glad_glMultiTexParameterfEXT; +PFNGLMULTITEXPARAMETERFVEXTPROC glad_glMultiTexParameterfvEXT; +PFNGLMULTITEXIMAGE1DEXTPROC glad_glMultiTexImage1DEXT; +PFNGLMULTITEXIMAGE2DEXTPROC glad_glMultiTexImage2DEXT; +PFNGLMULTITEXSUBIMAGE1DEXTPROC glad_glMultiTexSubImage1DEXT; +PFNGLMULTITEXSUBIMAGE2DEXTPROC glad_glMultiTexSubImage2DEXT; +PFNGLCOPYMULTITEXIMAGE1DEXTPROC glad_glCopyMultiTexImage1DEXT; +PFNGLCOPYMULTITEXIMAGE2DEXTPROC glad_glCopyMultiTexImage2DEXT; +PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC glad_glCopyMultiTexSubImage1DEXT; +PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC glad_glCopyMultiTexSubImage2DEXT; +PFNGLGETMULTITEXIMAGEEXTPROC glad_glGetMultiTexImageEXT; +PFNGLGETMULTITEXPARAMETERFVEXTPROC glad_glGetMultiTexParameterfvEXT; +PFNGLGETMULTITEXPARAMETERIVEXTPROC glad_glGetMultiTexParameterivEXT; +PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC glad_glGetMultiTexLevelParameterfvEXT; +PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC glad_glGetMultiTexLevelParameterivEXT; +PFNGLMULTITEXIMAGE3DEXTPROC glad_glMultiTexImage3DEXT; +PFNGLMULTITEXSUBIMAGE3DEXTPROC glad_glMultiTexSubImage3DEXT; +PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC glad_glCopyMultiTexSubImage3DEXT; +PFNGLENABLECLIENTSTATEINDEXEDEXTPROC glad_glEnableClientStateIndexedEXT; +PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC glad_glDisableClientStateIndexedEXT; +PFNGLGETFLOATINDEXEDVEXTPROC glad_glGetFloatIndexedvEXT; +PFNGLGETDOUBLEINDEXEDVEXTPROC glad_glGetDoubleIndexedvEXT; +PFNGLGETPOINTERINDEXEDVEXTPROC glad_glGetPointerIndexedvEXT; +PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC glad_glCompressedTextureImage3DEXT; +PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC glad_glCompressedTextureImage2DEXT; +PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC glad_glCompressedTextureImage1DEXT; +PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC glad_glCompressedTextureSubImage3DEXT; +PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC glad_glCompressedTextureSubImage2DEXT; +PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC glad_glCompressedTextureSubImage1DEXT; +PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC glad_glGetCompressedTextureImageEXT; +PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC glad_glCompressedMultiTexImage3DEXT; +PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC glad_glCompressedMultiTexImage2DEXT; +PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC glad_glCompressedMultiTexImage1DEXT; +PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC glad_glCompressedMultiTexSubImage3DEXT; +PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC glad_glCompressedMultiTexSubImage2DEXT; +PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC glad_glCompressedMultiTexSubImage1DEXT; +PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC glad_glGetCompressedMultiTexImageEXT; +PFNGLMATRIXLOADTRANSPOSEFEXTPROC glad_glMatrixLoadTransposefEXT; +PFNGLMATRIXLOADTRANSPOSEDEXTPROC glad_glMatrixLoadTransposedEXT; +PFNGLMATRIXMULTTRANSPOSEFEXTPROC glad_glMatrixMultTransposefEXT; +PFNGLMATRIXMULTTRANSPOSEDEXTPROC glad_glMatrixMultTransposedEXT; +PFNGLNAMEDBUFFERDATAEXTPROC glad_glNamedBufferDataEXT; +PFNGLNAMEDBUFFERSUBDATAEXTPROC glad_glNamedBufferSubDataEXT; +PFNGLMAPNAMEDBUFFEREXTPROC glad_glMapNamedBufferEXT; +PFNGLUNMAPNAMEDBUFFEREXTPROC glad_glUnmapNamedBufferEXT; +PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC glad_glGetNamedBufferParameterivEXT; +PFNGLGETNAMEDBUFFERPOINTERVEXTPROC glad_glGetNamedBufferPointervEXT; +PFNGLGETNAMEDBUFFERSUBDATAEXTPROC glad_glGetNamedBufferSubDataEXT; +PFNGLTEXTUREBUFFEREXTPROC glad_glTextureBufferEXT; +PFNGLMULTITEXBUFFEREXTPROC glad_glMultiTexBufferEXT; +PFNGLTEXTUREPARAMETERIIVEXTPROC glad_glTextureParameterIivEXT; +PFNGLTEXTUREPARAMETERIUIVEXTPROC glad_glTextureParameterIuivEXT; +PFNGLGETTEXTUREPARAMETERIIVEXTPROC glad_glGetTextureParameterIivEXT; +PFNGLGETTEXTUREPARAMETERIUIVEXTPROC glad_glGetTextureParameterIuivEXT; +PFNGLMULTITEXPARAMETERIIVEXTPROC glad_glMultiTexParameterIivEXT; +PFNGLMULTITEXPARAMETERIUIVEXTPROC glad_glMultiTexParameterIuivEXT; +PFNGLGETMULTITEXPARAMETERIIVEXTPROC glad_glGetMultiTexParameterIivEXT; +PFNGLGETMULTITEXPARAMETERIUIVEXTPROC glad_glGetMultiTexParameterIuivEXT; +PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC glad_glNamedProgramLocalParameters4fvEXT; +PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC glad_glNamedProgramLocalParameterI4iEXT; +PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC glad_glNamedProgramLocalParameterI4ivEXT; +PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC glad_glNamedProgramLocalParametersI4ivEXT; +PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC glad_glNamedProgramLocalParameterI4uiEXT; +PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC glad_glNamedProgramLocalParameterI4uivEXT; +PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC glad_glNamedProgramLocalParametersI4uivEXT; +PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC glad_glGetNamedProgramLocalParameterIivEXT; +PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC glad_glGetNamedProgramLocalParameterIuivEXT; +PFNGLENABLECLIENTSTATEIEXTPROC glad_glEnableClientStateiEXT; +PFNGLDISABLECLIENTSTATEIEXTPROC glad_glDisableClientStateiEXT; +PFNGLGETFLOATI_VEXTPROC glad_glGetFloati_vEXT; +PFNGLGETDOUBLEI_VEXTPROC glad_glGetDoublei_vEXT; +PFNGLGETPOINTERI_VEXTPROC glad_glGetPointeri_vEXT; +PFNGLNAMEDPROGRAMSTRINGEXTPROC glad_glNamedProgramStringEXT; +PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC glad_glNamedProgramLocalParameter4dEXT; +PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC glad_glNamedProgramLocalParameter4dvEXT; +PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC glad_glNamedProgramLocalParameter4fEXT; +PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC glad_glNamedProgramLocalParameter4fvEXT; +PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC glad_glGetNamedProgramLocalParameterdvEXT; +PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC glad_glGetNamedProgramLocalParameterfvEXT; +PFNGLGETNAMEDPROGRAMIVEXTPROC glad_glGetNamedProgramivEXT; +PFNGLGETNAMEDPROGRAMSTRINGEXTPROC glad_glGetNamedProgramStringEXT; +PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC glad_glNamedRenderbufferStorageEXT; +PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC glad_glGetNamedRenderbufferParameterivEXT; +PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC glad_glNamedRenderbufferStorageMultisampleEXT; +PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC glad_glNamedRenderbufferStorageMultisampleCoverageEXT; +PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC glad_glCheckNamedFramebufferStatusEXT; +PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC glad_glNamedFramebufferTexture1DEXT; +PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC glad_glNamedFramebufferTexture2DEXT; +PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC glad_glNamedFramebufferTexture3DEXT; +PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC glad_glNamedFramebufferRenderbufferEXT; +PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glad_glGetNamedFramebufferAttachmentParameterivEXT; +PFNGLGENERATETEXTUREMIPMAPEXTPROC glad_glGenerateTextureMipmapEXT; +PFNGLGENERATEMULTITEXMIPMAPEXTPROC glad_glGenerateMultiTexMipmapEXT; +PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC glad_glFramebufferDrawBufferEXT; +PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC glad_glFramebufferDrawBuffersEXT; +PFNGLFRAMEBUFFERREADBUFFEREXTPROC glad_glFramebufferReadBufferEXT; +PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC glad_glGetFramebufferParameterivEXT; +PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC glad_glNamedCopyBufferSubDataEXT; +PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC glad_glNamedFramebufferTextureEXT; +PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC glad_glNamedFramebufferTextureLayerEXT; +PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC glad_glNamedFramebufferTextureFaceEXT; +PFNGLTEXTURERENDERBUFFEREXTPROC glad_glTextureRenderbufferEXT; +PFNGLMULTITEXRENDERBUFFEREXTPROC glad_glMultiTexRenderbufferEXT; +PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC glad_glVertexArrayVertexOffsetEXT; +PFNGLVERTEXARRAYCOLOROFFSETEXTPROC glad_glVertexArrayColorOffsetEXT; +PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC glad_glVertexArrayEdgeFlagOffsetEXT; +PFNGLVERTEXARRAYINDEXOFFSETEXTPROC glad_glVertexArrayIndexOffsetEXT; +PFNGLVERTEXARRAYNORMALOFFSETEXTPROC glad_glVertexArrayNormalOffsetEXT; +PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC glad_glVertexArrayTexCoordOffsetEXT; +PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC glad_glVertexArrayMultiTexCoordOffsetEXT; +PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC glad_glVertexArrayFogCoordOffsetEXT; +PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC glad_glVertexArraySecondaryColorOffsetEXT; +PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC glad_glVertexArrayVertexAttribOffsetEXT; +PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC glad_glVertexArrayVertexAttribIOffsetEXT; +PFNGLENABLEVERTEXARRAYEXTPROC glad_glEnableVertexArrayEXT; +PFNGLDISABLEVERTEXARRAYEXTPROC glad_glDisableVertexArrayEXT; +PFNGLENABLEVERTEXARRAYATTRIBEXTPROC glad_glEnableVertexArrayAttribEXT; +PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC glad_glDisableVertexArrayAttribEXT; +PFNGLGETVERTEXARRAYINTEGERVEXTPROC glad_glGetVertexArrayIntegervEXT; +PFNGLGETVERTEXARRAYPOINTERVEXTPROC glad_glGetVertexArrayPointervEXT; +PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC glad_glGetVertexArrayIntegeri_vEXT; +PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC glad_glGetVertexArrayPointeri_vEXT; +PFNGLMAPNAMEDBUFFERRANGEEXTPROC glad_glMapNamedBufferRangeEXT; +PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC glad_glFlushMappedNamedBufferRangeEXT; +PFNGLNAMEDBUFFERSTORAGEEXTPROC glad_glNamedBufferStorageEXT; +PFNGLCLEARNAMEDBUFFERDATAEXTPROC glad_glClearNamedBufferDataEXT; +PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC glad_glClearNamedBufferSubDataEXT; +PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC glad_glNamedFramebufferParameteriEXT; +PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC glad_glGetNamedFramebufferParameterivEXT; +PFNGLPROGRAMUNIFORM1DEXTPROC glad_glProgramUniform1dEXT; +PFNGLPROGRAMUNIFORM2DEXTPROC glad_glProgramUniform2dEXT; +PFNGLPROGRAMUNIFORM3DEXTPROC glad_glProgramUniform3dEXT; +PFNGLPROGRAMUNIFORM4DEXTPROC glad_glProgramUniform4dEXT; +PFNGLPROGRAMUNIFORM1DVEXTPROC glad_glProgramUniform1dvEXT; +PFNGLPROGRAMUNIFORM2DVEXTPROC glad_glProgramUniform2dvEXT; +PFNGLPROGRAMUNIFORM3DVEXTPROC glad_glProgramUniform3dvEXT; +PFNGLPROGRAMUNIFORM4DVEXTPROC glad_glProgramUniform4dvEXT; +PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC glad_glProgramUniformMatrix2dvEXT; +PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC glad_glProgramUniformMatrix3dvEXT; +PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC glad_glProgramUniformMatrix4dvEXT; +PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC glad_glProgramUniformMatrix2x3dvEXT; +PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC glad_glProgramUniformMatrix2x4dvEXT; +PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC glad_glProgramUniformMatrix3x2dvEXT; +PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC glad_glProgramUniformMatrix3x4dvEXT; +PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC glad_glProgramUniformMatrix4x2dvEXT; +PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC glad_glProgramUniformMatrix4x3dvEXT; +PFNGLTEXTUREBUFFERRANGEEXTPROC glad_glTextureBufferRangeEXT; +PFNGLTEXTURESTORAGE1DEXTPROC glad_glTextureStorage1DEXT; +PFNGLTEXTURESTORAGE2DEXTPROC glad_glTextureStorage2DEXT; +PFNGLTEXTURESTORAGE3DEXTPROC glad_glTextureStorage3DEXT; +PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC glad_glTextureStorage2DMultisampleEXT; +PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC glad_glTextureStorage3DMultisampleEXT; +PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC glad_glVertexArrayBindVertexBufferEXT; +PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC glad_glVertexArrayVertexAttribFormatEXT; +PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC glad_glVertexArrayVertexAttribIFormatEXT; +PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC glad_glVertexArrayVertexAttribLFormatEXT; +PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC glad_glVertexArrayVertexAttribBindingEXT; +PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC glad_glVertexArrayVertexBindingDivisorEXT; +PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC glad_glVertexArrayVertexAttribLOffsetEXT; +PFNGLTEXTUREPAGECOMMITMENTEXTPROC glad_glTexturePageCommitmentEXT; +PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC glad_glVertexArrayVertexAttribDivisorEXT; +PFNGLSETMULTISAMPLEFVAMDPROC glad_glSetMultisamplefvAMD; +PFNGLAREPROGRAMSRESIDENTNVPROC glad_glAreProgramsResidentNV; +PFNGLBINDPROGRAMNVPROC glad_glBindProgramNV; +PFNGLDELETEPROGRAMSNVPROC glad_glDeleteProgramsNV; +PFNGLEXECUTEPROGRAMNVPROC glad_glExecuteProgramNV; +PFNGLGENPROGRAMSNVPROC glad_glGenProgramsNV; +PFNGLGETPROGRAMPARAMETERDVNVPROC glad_glGetProgramParameterdvNV; +PFNGLGETPROGRAMPARAMETERFVNVPROC glad_glGetProgramParameterfvNV; +PFNGLGETPROGRAMIVNVPROC glad_glGetProgramivNV; +PFNGLGETPROGRAMSTRINGNVPROC glad_glGetProgramStringNV; +PFNGLGETTRACKMATRIXIVNVPROC glad_glGetTrackMatrixivNV; +PFNGLGETVERTEXATTRIBDVNVPROC glad_glGetVertexAttribdvNV; +PFNGLGETVERTEXATTRIBFVNVPROC glad_glGetVertexAttribfvNV; +PFNGLGETVERTEXATTRIBIVNVPROC glad_glGetVertexAttribivNV; +PFNGLGETVERTEXATTRIBPOINTERVNVPROC glad_glGetVertexAttribPointervNV; +PFNGLISPROGRAMNVPROC glad_glIsProgramNV; +PFNGLLOADPROGRAMNVPROC glad_glLoadProgramNV; +PFNGLPROGRAMPARAMETER4DNVPROC glad_glProgramParameter4dNV; +PFNGLPROGRAMPARAMETER4DVNVPROC glad_glProgramParameter4dvNV; +PFNGLPROGRAMPARAMETER4FNVPROC glad_glProgramParameter4fNV; +PFNGLPROGRAMPARAMETER4FVNVPROC glad_glProgramParameter4fvNV; +PFNGLPROGRAMPARAMETERS4DVNVPROC glad_glProgramParameters4dvNV; +PFNGLPROGRAMPARAMETERS4FVNVPROC glad_glProgramParameters4fvNV; +PFNGLREQUESTRESIDENTPROGRAMSNVPROC glad_glRequestResidentProgramsNV; +PFNGLTRACKMATRIXNVPROC glad_glTrackMatrixNV; +PFNGLVERTEXATTRIBPOINTERNVPROC glad_glVertexAttribPointerNV; +PFNGLVERTEXATTRIB1DNVPROC glad_glVertexAttrib1dNV; +PFNGLVERTEXATTRIB1DVNVPROC glad_glVertexAttrib1dvNV; +PFNGLVERTEXATTRIB1FNVPROC glad_glVertexAttrib1fNV; +PFNGLVERTEXATTRIB1FVNVPROC glad_glVertexAttrib1fvNV; +PFNGLVERTEXATTRIB1SNVPROC glad_glVertexAttrib1sNV; +PFNGLVERTEXATTRIB1SVNVPROC glad_glVertexAttrib1svNV; +PFNGLVERTEXATTRIB2DNVPROC glad_glVertexAttrib2dNV; +PFNGLVERTEXATTRIB2DVNVPROC glad_glVertexAttrib2dvNV; +PFNGLVERTEXATTRIB2FNVPROC glad_glVertexAttrib2fNV; +PFNGLVERTEXATTRIB2FVNVPROC glad_glVertexAttrib2fvNV; +PFNGLVERTEXATTRIB2SNVPROC glad_glVertexAttrib2sNV; +PFNGLVERTEXATTRIB2SVNVPROC glad_glVertexAttrib2svNV; +PFNGLVERTEXATTRIB3DNVPROC glad_glVertexAttrib3dNV; +PFNGLVERTEXATTRIB3DVNVPROC glad_glVertexAttrib3dvNV; +PFNGLVERTEXATTRIB3FNVPROC glad_glVertexAttrib3fNV; +PFNGLVERTEXATTRIB3FVNVPROC glad_glVertexAttrib3fvNV; +PFNGLVERTEXATTRIB3SNVPROC glad_glVertexAttrib3sNV; +PFNGLVERTEXATTRIB3SVNVPROC glad_glVertexAttrib3svNV; +PFNGLVERTEXATTRIB4DNVPROC glad_glVertexAttrib4dNV; +PFNGLVERTEXATTRIB4DVNVPROC glad_glVertexAttrib4dvNV; +PFNGLVERTEXATTRIB4FNVPROC glad_glVertexAttrib4fNV; +PFNGLVERTEXATTRIB4FVNVPROC glad_glVertexAttrib4fvNV; +PFNGLVERTEXATTRIB4SNVPROC glad_glVertexAttrib4sNV; +PFNGLVERTEXATTRIB4SVNVPROC glad_glVertexAttrib4svNV; +PFNGLVERTEXATTRIB4UBNVPROC glad_glVertexAttrib4ubNV; +PFNGLVERTEXATTRIB4UBVNVPROC glad_glVertexAttrib4ubvNV; +PFNGLVERTEXATTRIBS1DVNVPROC glad_glVertexAttribs1dvNV; +PFNGLVERTEXATTRIBS1FVNVPROC glad_glVertexAttribs1fvNV; +PFNGLVERTEXATTRIBS1SVNVPROC glad_glVertexAttribs1svNV; +PFNGLVERTEXATTRIBS2DVNVPROC glad_glVertexAttribs2dvNV; +PFNGLVERTEXATTRIBS2FVNVPROC glad_glVertexAttribs2fvNV; +PFNGLVERTEXATTRIBS2SVNVPROC glad_glVertexAttribs2svNV; +PFNGLVERTEXATTRIBS3DVNVPROC glad_glVertexAttribs3dvNV; +PFNGLVERTEXATTRIBS3FVNVPROC glad_glVertexAttribs3fvNV; +PFNGLVERTEXATTRIBS3SVNVPROC glad_glVertexAttribs3svNV; +PFNGLVERTEXATTRIBS4DVNVPROC glad_glVertexAttribs4dvNV; +PFNGLVERTEXATTRIBS4FVNVPROC glad_glVertexAttribs4fvNV; +PFNGLVERTEXATTRIBS4SVNVPROC glad_glVertexAttribs4svNV; +PFNGLVERTEXATTRIBS4UBVNVPROC glad_glVertexAttribs4ubvNV; +PFNGLBEGINVERTEXSHADEREXTPROC glad_glBeginVertexShaderEXT; +PFNGLENDVERTEXSHADEREXTPROC glad_glEndVertexShaderEXT; +PFNGLBINDVERTEXSHADEREXTPROC glad_glBindVertexShaderEXT; +PFNGLGENVERTEXSHADERSEXTPROC glad_glGenVertexShadersEXT; +PFNGLDELETEVERTEXSHADEREXTPROC glad_glDeleteVertexShaderEXT; +PFNGLSHADEROP1EXTPROC glad_glShaderOp1EXT; +PFNGLSHADEROP2EXTPROC glad_glShaderOp2EXT; +PFNGLSHADEROP3EXTPROC glad_glShaderOp3EXT; +PFNGLSWIZZLEEXTPROC glad_glSwizzleEXT; +PFNGLWRITEMASKEXTPROC glad_glWriteMaskEXT; +PFNGLINSERTCOMPONENTEXTPROC glad_glInsertComponentEXT; +PFNGLEXTRACTCOMPONENTEXTPROC glad_glExtractComponentEXT; +PFNGLGENSYMBOLSEXTPROC glad_glGenSymbolsEXT; +PFNGLSETINVARIANTEXTPROC glad_glSetInvariantEXT; +PFNGLSETLOCALCONSTANTEXTPROC glad_glSetLocalConstantEXT; +PFNGLVARIANTBVEXTPROC glad_glVariantbvEXT; +PFNGLVARIANTSVEXTPROC glad_glVariantsvEXT; +PFNGLVARIANTIVEXTPROC glad_glVariantivEXT; +PFNGLVARIANTFVEXTPROC glad_glVariantfvEXT; +PFNGLVARIANTDVEXTPROC glad_glVariantdvEXT; +PFNGLVARIANTUBVEXTPROC glad_glVariantubvEXT; +PFNGLVARIANTUSVEXTPROC glad_glVariantusvEXT; +PFNGLVARIANTUIVEXTPROC glad_glVariantuivEXT; +PFNGLVARIANTPOINTEREXTPROC glad_glVariantPointerEXT; +PFNGLENABLEVARIANTCLIENTSTATEEXTPROC glad_glEnableVariantClientStateEXT; +PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC glad_glDisableVariantClientStateEXT; +PFNGLBINDLIGHTPARAMETEREXTPROC glad_glBindLightParameterEXT; +PFNGLBINDMATERIALPARAMETEREXTPROC glad_glBindMaterialParameterEXT; +PFNGLBINDTEXGENPARAMETEREXTPROC glad_glBindTexGenParameterEXT; +PFNGLBINDTEXTUREUNITPARAMETEREXTPROC glad_glBindTextureUnitParameterEXT; +PFNGLBINDPARAMETEREXTPROC glad_glBindParameterEXT; +PFNGLISVARIANTENABLEDEXTPROC glad_glIsVariantEnabledEXT; +PFNGLGETVARIANTBOOLEANVEXTPROC glad_glGetVariantBooleanvEXT; +PFNGLGETVARIANTINTEGERVEXTPROC glad_glGetVariantIntegervEXT; +PFNGLGETVARIANTFLOATVEXTPROC glad_glGetVariantFloatvEXT; +PFNGLGETVARIANTPOINTERVEXTPROC glad_glGetVariantPointervEXT; +PFNGLGETINVARIANTBOOLEANVEXTPROC glad_glGetInvariantBooleanvEXT; +PFNGLGETINVARIANTINTEGERVEXTPROC glad_glGetInvariantIntegervEXT; +PFNGLGETINVARIANTFLOATVEXTPROC glad_glGetInvariantFloatvEXT; +PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC glad_glGetLocalConstantBooleanvEXT; +PFNGLGETLOCALCONSTANTINTEGERVEXTPROC glad_glGetLocalConstantIntegervEXT; +PFNGLGETLOCALCONSTANTFLOATVEXTPROC glad_glGetLocalConstantFloatvEXT; +PFNGLBLENDFUNCSEPARATEEXTPROC glad_glBlendFuncSeparateEXT; +PFNGLGENFENCESAPPLEPROC glad_glGenFencesAPPLE; +PFNGLDELETEFENCESAPPLEPROC glad_glDeleteFencesAPPLE; +PFNGLSETFENCEAPPLEPROC glad_glSetFenceAPPLE; +PFNGLISFENCEAPPLEPROC glad_glIsFenceAPPLE; +PFNGLTESTFENCEAPPLEPROC glad_glTestFenceAPPLE; +PFNGLFINISHFENCEAPPLEPROC glad_glFinishFenceAPPLE; +PFNGLTESTOBJECTAPPLEPROC glad_glTestObjectAPPLE; +PFNGLFINISHOBJECTAPPLEPROC glad_glFinishObjectAPPLE; +PFNGLMULTITEXCOORD1BOESPROC glad_glMultiTexCoord1bOES; +PFNGLMULTITEXCOORD1BVOESPROC glad_glMultiTexCoord1bvOES; +PFNGLMULTITEXCOORD2BOESPROC glad_glMultiTexCoord2bOES; +PFNGLMULTITEXCOORD2BVOESPROC glad_glMultiTexCoord2bvOES; +PFNGLMULTITEXCOORD3BOESPROC glad_glMultiTexCoord3bOES; +PFNGLMULTITEXCOORD3BVOESPROC glad_glMultiTexCoord3bvOES; +PFNGLMULTITEXCOORD4BOESPROC glad_glMultiTexCoord4bOES; +PFNGLMULTITEXCOORD4BVOESPROC glad_glMultiTexCoord4bvOES; +PFNGLTEXCOORD1BOESPROC glad_glTexCoord1bOES; +PFNGLTEXCOORD1BVOESPROC glad_glTexCoord1bvOES; +PFNGLTEXCOORD2BOESPROC glad_glTexCoord2bOES; +PFNGLTEXCOORD2BVOESPROC glad_glTexCoord2bvOES; +PFNGLTEXCOORD3BOESPROC glad_glTexCoord3bOES; +PFNGLTEXCOORD3BVOESPROC glad_glTexCoord3bvOES; +PFNGLTEXCOORD4BOESPROC glad_glTexCoord4bOES; +PFNGLTEXCOORD4BVOESPROC glad_glTexCoord4bvOES; +PFNGLVERTEX2BOESPROC glad_glVertex2bOES; +PFNGLVERTEX2BVOESPROC glad_glVertex2bvOES; +PFNGLVERTEX3BOESPROC glad_glVertex3bOES; +PFNGLVERTEX3BVOESPROC glad_glVertex3bvOES; +PFNGLVERTEX4BOESPROC glad_glVertex4bOES; +PFNGLVERTEX4BVOESPROC glad_glVertex4bvOES; +PFNGLLOADTRANSPOSEMATRIXFARBPROC glad_glLoadTransposeMatrixfARB; +PFNGLLOADTRANSPOSEMATRIXDARBPROC glad_glLoadTransposeMatrixdARB; +PFNGLMULTTRANSPOSEMATRIXFARBPROC glad_glMultTransposeMatrixfARB; +PFNGLMULTTRANSPOSEMATRIXDARBPROC glad_glMultTransposeMatrixdARB; +PFNGLFOGCOORDFEXTPROC glad_glFogCoordfEXT; +PFNGLFOGCOORDFVEXTPROC glad_glFogCoordfvEXT; +PFNGLFOGCOORDDEXTPROC glad_glFogCoorddEXT; +PFNGLFOGCOORDDVEXTPROC glad_glFogCoorddvEXT; +PFNGLFOGCOORDPOINTEREXTPROC glad_glFogCoordPointerEXT; +PFNGLARRAYELEMENTEXTPROC glad_glArrayElementEXT; +PFNGLCOLORPOINTEREXTPROC glad_glColorPointerEXT; +PFNGLDRAWARRAYSEXTPROC glad_glDrawArraysEXT; +PFNGLEDGEFLAGPOINTEREXTPROC glad_glEdgeFlagPointerEXT; +PFNGLGETPOINTERVEXTPROC glad_glGetPointervEXT; +PFNGLINDEXPOINTEREXTPROC glad_glIndexPointerEXT; +PFNGLNORMALPOINTEREXTPROC glad_glNormalPointerEXT; +PFNGLTEXCOORDPOINTEREXTPROC glad_glTexCoordPointerEXT; +PFNGLVERTEXPOINTEREXTPROC glad_glVertexPointerEXT; +PFNGLBLENDEQUATIONSEPARATEEXTPROC glad_glBlendEquationSeparateEXT; +PFNGLCOVERAGEMODULATIONTABLENVPROC glad_glCoverageModulationTableNV; +PFNGLGETCOVERAGEMODULATIONTABLENVPROC glad_glGetCoverageModulationTableNV; +PFNGLCOVERAGEMODULATIONNVPROC glad_glCoverageModulationNV; +PFNGLBEGINCONDITIONALRENDERNVXPROC glad_glBeginConditionalRenderNVX; +PFNGLENDCONDITIONALRENDERNVXPROC glad_glEndConditionalRenderNVX; +PFNGLMULTIDRAWARRAYSINDIRECTPROC glad_glMultiDrawArraysIndirect; +PFNGLMULTIDRAWELEMENTSINDIRECTPROC glad_glMultiDrawElementsIndirect; +PFNGLCOPYIMAGESUBDATANVPROC glad_glCopyImageSubDataNV; +PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC glad_glApplyFramebufferAttachmentCMAAINTEL; +PFNGLBINDTRANSFORMFEEDBACKPROC glad_glBindTransformFeedback; +PFNGLDELETETRANSFORMFEEDBACKSPROC glad_glDeleteTransformFeedbacks; +PFNGLGENTRANSFORMFEEDBACKSPROC glad_glGenTransformFeedbacks; +PFNGLISTRANSFORMFEEDBACKPROC glad_glIsTransformFeedback; +PFNGLPAUSETRANSFORMFEEDBACKPROC glad_glPauseTransformFeedback; +PFNGLRESUMETRANSFORMFEEDBACKPROC glad_glResumeTransformFeedback; +PFNGLDRAWTRANSFORMFEEDBACKPROC glad_glDrawTransformFeedback; +PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC glad_glDrawTransformFeedbackStream; +PFNGLBEGINQUERYINDEXEDPROC glad_glBeginQueryIndexed; +PFNGLENDQUERYINDEXEDPROC glad_glEndQueryIndexed; +PFNGLGETQUERYINDEXEDIVPROC glad_glGetQueryIndexediv; +PFNGLINSERTEVENTMARKEREXTPROC glad_glInsertEventMarkerEXT; +PFNGLPUSHGROUPMARKEREXTPROC glad_glPushGroupMarkerEXT; +PFNGLPOPGROUPMARKEREXTPROC glad_glPopGroupMarkerEXT; +PFNGLPIXELTRANSFORMPARAMETERIEXTPROC glad_glPixelTransformParameteriEXT; +PFNGLPIXELTRANSFORMPARAMETERFEXTPROC glad_glPixelTransformParameterfEXT; +PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC glad_glPixelTransformParameterivEXT; +PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC glad_glPixelTransformParameterfvEXT; +PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC glad_glGetPixelTransformParameterivEXT; +PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC glad_glGetPixelTransformParameterfvEXT; +PFNGLGENFRAGMENTSHADERSATIPROC glad_glGenFragmentShadersATI; +PFNGLBINDFRAGMENTSHADERATIPROC glad_glBindFragmentShaderATI; +PFNGLDELETEFRAGMENTSHADERATIPROC glad_glDeleteFragmentShaderATI; +PFNGLBEGINFRAGMENTSHADERATIPROC glad_glBeginFragmentShaderATI; +PFNGLENDFRAGMENTSHADERATIPROC glad_glEndFragmentShaderATI; +PFNGLPASSTEXCOORDATIPROC glad_glPassTexCoordATI; +PFNGLSAMPLEMAPATIPROC glad_glSampleMapATI; +PFNGLCOLORFRAGMENTOP1ATIPROC glad_glColorFragmentOp1ATI; +PFNGLCOLORFRAGMENTOP2ATIPROC glad_glColorFragmentOp2ATI; +PFNGLCOLORFRAGMENTOP3ATIPROC glad_glColorFragmentOp3ATI; +PFNGLALPHAFRAGMENTOP1ATIPROC glad_glAlphaFragmentOp1ATI; +PFNGLALPHAFRAGMENTOP2ATIPROC glad_glAlphaFragmentOp2ATI; +PFNGLALPHAFRAGMENTOP3ATIPROC glad_glAlphaFragmentOp3ATI; +PFNGLSETFRAGMENTSHADERCONSTANTATIPROC glad_glSetFragmentShaderConstantATI; +PFNGLREPLACEMENTCODEUISUNPROC glad_glReplacementCodeuiSUN; +PFNGLREPLACEMENTCODEUSSUNPROC glad_glReplacementCodeusSUN; +PFNGLREPLACEMENTCODEUBSUNPROC glad_glReplacementCodeubSUN; +PFNGLREPLACEMENTCODEUIVSUNPROC glad_glReplacementCodeuivSUN; +PFNGLREPLACEMENTCODEUSVSUNPROC glad_glReplacementCodeusvSUN; +PFNGLREPLACEMENTCODEUBVSUNPROC glad_glReplacementCodeubvSUN; +PFNGLREPLACEMENTCODEPOINTERSUNPROC glad_glReplacementCodePointerSUN; +PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC glad_glDrawTransformFeedbackInstanced; +PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC glad_glDrawTransformFeedbackStreamInstanced; +PFNGLASYNCMARKERSGIXPROC glad_glAsyncMarkerSGIX; +PFNGLFINISHASYNCSGIXPROC glad_glFinishAsyncSGIX; +PFNGLPOLLASYNCSGIXPROC glad_glPollAsyncSGIX; +PFNGLGENASYNCMARKERSSGIXPROC glad_glGenAsyncMarkersSGIX; +PFNGLDELETEASYNCMARKERSSGIXPROC glad_glDeleteAsyncMarkersSGIX; +PFNGLISASYNCMARKERSGIXPROC glad_glIsAsyncMarkerSGIX; +PFNGLBEGINPERFQUERYINTELPROC glad_glBeginPerfQueryINTEL; +PFNGLCREATEPERFQUERYINTELPROC glad_glCreatePerfQueryINTEL; +PFNGLDELETEPERFQUERYINTELPROC glad_glDeletePerfQueryINTEL; +PFNGLENDPERFQUERYINTELPROC glad_glEndPerfQueryINTEL; +PFNGLGETFIRSTPERFQUERYIDINTELPROC glad_glGetFirstPerfQueryIdINTEL; +PFNGLGETNEXTPERFQUERYIDINTELPROC glad_glGetNextPerfQueryIdINTEL; +PFNGLGETPERFCOUNTERINFOINTELPROC glad_glGetPerfCounterInfoINTEL; +PFNGLGETPERFQUERYDATAINTELPROC glad_glGetPerfQueryDataINTEL; +PFNGLGETPERFQUERYIDBYNAMEINTELPROC glad_glGetPerfQueryIdByNameINTEL; +PFNGLGETPERFQUERYINFOINTELPROC glad_glGetPerfQueryInfoINTEL; +PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC glad_glMultiDrawArraysIndirectBindlessCountNV; +PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC glad_glMultiDrawElementsIndirectBindlessCountNV; +PFNGLRELEASESHADERCOMPILERPROC glad_glReleaseShaderCompiler; +PFNGLSHADERBINARYPROC glad_glShaderBinary; +PFNGLGETSHADERPRECISIONFORMATPROC glad_glGetShaderPrecisionFormat; +PFNGLDEPTHRANGEFPROC glad_glDepthRangef; +PFNGLCLEARDEPTHFPROC glad_glClearDepthf; +PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC glad_glMultiDrawArraysIndirectCountARB; +PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC glad_glMultiDrawElementsIndirectCountARB; +PFNGLVERTEX2HNVPROC glad_glVertex2hNV; +PFNGLVERTEX2HVNVPROC glad_glVertex2hvNV; +PFNGLVERTEX3HNVPROC glad_glVertex3hNV; +PFNGLVERTEX3HVNVPROC glad_glVertex3hvNV; +PFNGLVERTEX4HNVPROC glad_glVertex4hNV; +PFNGLVERTEX4HVNVPROC glad_glVertex4hvNV; +PFNGLNORMAL3HNVPROC glad_glNormal3hNV; +PFNGLNORMAL3HVNVPROC glad_glNormal3hvNV; +PFNGLCOLOR3HNVPROC glad_glColor3hNV; +PFNGLCOLOR3HVNVPROC glad_glColor3hvNV; +PFNGLCOLOR4HNVPROC glad_glColor4hNV; +PFNGLCOLOR4HVNVPROC glad_glColor4hvNV; +PFNGLTEXCOORD1HNVPROC glad_glTexCoord1hNV; +PFNGLTEXCOORD1HVNVPROC glad_glTexCoord1hvNV; +PFNGLTEXCOORD2HNVPROC glad_glTexCoord2hNV; +PFNGLTEXCOORD2HVNVPROC glad_glTexCoord2hvNV; +PFNGLTEXCOORD3HNVPROC glad_glTexCoord3hNV; +PFNGLTEXCOORD3HVNVPROC glad_glTexCoord3hvNV; +PFNGLTEXCOORD4HNVPROC glad_glTexCoord4hNV; +PFNGLTEXCOORD4HVNVPROC glad_glTexCoord4hvNV; +PFNGLMULTITEXCOORD1HNVPROC glad_glMultiTexCoord1hNV; +PFNGLMULTITEXCOORD1HVNVPROC glad_glMultiTexCoord1hvNV; +PFNGLMULTITEXCOORD2HNVPROC glad_glMultiTexCoord2hNV; +PFNGLMULTITEXCOORD2HVNVPROC glad_glMultiTexCoord2hvNV; +PFNGLMULTITEXCOORD3HNVPROC glad_glMultiTexCoord3hNV; +PFNGLMULTITEXCOORD3HVNVPROC glad_glMultiTexCoord3hvNV; +PFNGLMULTITEXCOORD4HNVPROC glad_glMultiTexCoord4hNV; +PFNGLMULTITEXCOORD4HVNVPROC glad_glMultiTexCoord4hvNV; +PFNGLFOGCOORDHNVPROC glad_glFogCoordhNV; +PFNGLFOGCOORDHVNVPROC glad_glFogCoordhvNV; +PFNGLSECONDARYCOLOR3HNVPROC glad_glSecondaryColor3hNV; +PFNGLSECONDARYCOLOR3HVNVPROC glad_glSecondaryColor3hvNV; +PFNGLVERTEXWEIGHTHNVPROC glad_glVertexWeighthNV; +PFNGLVERTEXWEIGHTHVNVPROC glad_glVertexWeighthvNV; +PFNGLVERTEXATTRIB1HNVPROC glad_glVertexAttrib1hNV; +PFNGLVERTEXATTRIB1HVNVPROC glad_glVertexAttrib1hvNV; +PFNGLVERTEXATTRIB2HNVPROC glad_glVertexAttrib2hNV; +PFNGLVERTEXATTRIB2HVNVPROC glad_glVertexAttrib2hvNV; +PFNGLVERTEXATTRIB3HNVPROC glad_glVertexAttrib3hNV; +PFNGLVERTEXATTRIB3HVNVPROC glad_glVertexAttrib3hvNV; +PFNGLVERTEXATTRIB4HNVPROC glad_glVertexAttrib4hNV; +PFNGLVERTEXATTRIB4HVNVPROC glad_glVertexAttrib4hvNV; +PFNGLVERTEXATTRIBS1HVNVPROC glad_glVertexAttribs1hvNV; +PFNGLVERTEXATTRIBS2HVNVPROC glad_glVertexAttribs2hvNV; +PFNGLVERTEXATTRIBS3HVNVPROC glad_glVertexAttribs3hvNV; +PFNGLVERTEXATTRIBS4HVNVPROC glad_glVertexAttribs4hvNV; +PFNGLPRIMITIVEBOUNDINGBOXARBPROC glad_glPrimitiveBoundingBoxARB; +PFNGLPOLYGONOFFSETCLAMPEXTPROC glad_glPolygonOffsetClampEXT; +PFNGLLOCKARRAYSEXTPROC glad_glLockArraysEXT; +PFNGLUNLOCKARRAYSEXTPROC glad_glUnlockArraysEXT; +PFNGLDEPTHRANGEDNVPROC glad_glDepthRangedNV; +PFNGLCLEARDEPTHDNVPROC glad_glClearDepthdNV; +PFNGLDEPTHBOUNDSDNVPROC glad_glDepthBoundsdNV; +PFNGLGENOCCLUSIONQUERIESNVPROC glad_glGenOcclusionQueriesNV; +PFNGLDELETEOCCLUSIONQUERIESNVPROC glad_glDeleteOcclusionQueriesNV; +PFNGLISOCCLUSIONQUERYNVPROC glad_glIsOcclusionQueryNV; +PFNGLBEGINOCCLUSIONQUERYNVPROC glad_glBeginOcclusionQueryNV; +PFNGLENDOCCLUSIONQUERYNVPROC glad_glEndOcclusionQueryNV; +PFNGLGETOCCLUSIONQUERYIVNVPROC glad_glGetOcclusionQueryivNV; +PFNGLGETOCCLUSIONQUERYUIVNVPROC glad_glGetOcclusionQueryuivNV; +PFNGLBUFFERPARAMETERIAPPLEPROC glad_glBufferParameteriAPPLE; +PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC glad_glFlushMappedBufferRangeAPPLE; +PFNGLCOLORTABLEPROC glad_glColorTable; +PFNGLCOLORTABLEPARAMETERFVPROC glad_glColorTableParameterfv; +PFNGLCOLORTABLEPARAMETERIVPROC glad_glColorTableParameteriv; +PFNGLCOPYCOLORTABLEPROC glad_glCopyColorTable; +PFNGLGETCOLORTABLEPROC glad_glGetColorTable; +PFNGLGETCOLORTABLEPARAMETERFVPROC glad_glGetColorTableParameterfv; +PFNGLGETCOLORTABLEPARAMETERIVPROC glad_glGetColorTableParameteriv; +PFNGLCOLORSUBTABLEPROC glad_glColorSubTable; +PFNGLCOPYCOLORSUBTABLEPROC glad_glCopyColorSubTable; +PFNGLCONVOLUTIONFILTER1DPROC glad_glConvolutionFilter1D; +PFNGLCONVOLUTIONFILTER2DPROC glad_glConvolutionFilter2D; +PFNGLCONVOLUTIONPARAMETERFPROC glad_glConvolutionParameterf; +PFNGLCONVOLUTIONPARAMETERFVPROC glad_glConvolutionParameterfv; +PFNGLCONVOLUTIONPARAMETERIPROC glad_glConvolutionParameteri; +PFNGLCONVOLUTIONPARAMETERIVPROC glad_glConvolutionParameteriv; +PFNGLCOPYCONVOLUTIONFILTER1DPROC glad_glCopyConvolutionFilter1D; +PFNGLCOPYCONVOLUTIONFILTER2DPROC glad_glCopyConvolutionFilter2D; +PFNGLGETCONVOLUTIONFILTERPROC glad_glGetConvolutionFilter; +PFNGLGETCONVOLUTIONPARAMETERFVPROC glad_glGetConvolutionParameterfv; +PFNGLGETCONVOLUTIONPARAMETERIVPROC glad_glGetConvolutionParameteriv; +PFNGLGETSEPARABLEFILTERPROC glad_glGetSeparableFilter; +PFNGLSEPARABLEFILTER2DPROC glad_glSeparableFilter2D; +PFNGLGETHISTOGRAMPROC glad_glGetHistogram; +PFNGLGETHISTOGRAMPARAMETERFVPROC glad_glGetHistogramParameterfv; +PFNGLGETHISTOGRAMPARAMETERIVPROC glad_glGetHistogramParameteriv; +PFNGLGETMINMAXPROC glad_glGetMinmax; +PFNGLGETMINMAXPARAMETERFVPROC glad_glGetMinmaxParameterfv; +PFNGLGETMINMAXPARAMETERIVPROC glad_glGetMinmaxParameteriv; +PFNGLHISTOGRAMPROC glad_glHistogram; +PFNGLMINMAXPROC glad_glMinmax; +PFNGLRESETHISTOGRAMPROC glad_glResetHistogram; +PFNGLRESETMINMAXPROC glad_glResetMinmax; +PFNGLBLENDEQUATIONIARBPROC glad_glBlendEquationiARB; +PFNGLBLENDEQUATIONSEPARATEIARBPROC glad_glBlendEquationSeparateiARB; +PFNGLBLENDFUNCIARBPROC glad_glBlendFunciARB; +PFNGLBLENDFUNCSEPARATEIARBPROC glad_glBlendFuncSeparateiARB; +PFNGLCLEARBUFFERDATAPROC glad_glClearBufferData; +PFNGLCLEARBUFFERSUBDATAPROC glad_glClearBufferSubData; +PFNGLSAMPLECOVERAGEARBPROC glad_glSampleCoverageARB; +PFNGLLABELOBJECTEXTPROC glad_glLabelObjectEXT; +PFNGLGETOBJECTLABELEXTPROC glad_glGetObjectLabelEXT; +PFNGLMINSAMPLESHADINGARBPROC glad_glMinSampleShadingARB; +PFNGLGETINTERNALFORMATSAMPLEIVNVPROC glad_glGetInternalformatSampleivNV; +PFNGLSYNCTEXTUREINTELPROC glad_glSyncTextureINTEL; +PFNGLUNMAPTEXTURE2DINTELPROC glad_glUnmapTexture2DINTEL; +PFNGLMAPTEXTURE2DINTELPROC glad_glMapTexture2DINTEL; +PFNGLDISPATCHCOMPUTEPROC glad_glDispatchCompute; +PFNGLDISPATCHCOMPUTEINDIRECTPROC glad_glDispatchComputeIndirect; +PFNGLCOLORPOINTERLISTIBMPROC glad_glColorPointerListIBM; +PFNGLSECONDARYCOLORPOINTERLISTIBMPROC glad_glSecondaryColorPointerListIBM; +PFNGLEDGEFLAGPOINTERLISTIBMPROC glad_glEdgeFlagPointerListIBM; +PFNGLFOGCOORDPOINTERLISTIBMPROC glad_glFogCoordPointerListIBM; +PFNGLINDEXPOINTERLISTIBMPROC glad_glIndexPointerListIBM; +PFNGLNORMALPOINTERLISTIBMPROC glad_glNormalPointerListIBM; +PFNGLTEXCOORDPOINTERLISTIBMPROC glad_glTexCoordPointerListIBM; +PFNGLVERTEXPOINTERLISTIBMPROC glad_glVertexPointerListIBM; +PFNGLCLAMPCOLORARBPROC glad_glClampColorARB; +PFNGLGETTEXTUREHANDLEARBPROC glad_glGetTextureHandleARB; +PFNGLGETTEXTURESAMPLERHANDLEARBPROC glad_glGetTextureSamplerHandleARB; +PFNGLMAKETEXTUREHANDLERESIDENTARBPROC glad_glMakeTextureHandleResidentARB; +PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC glad_glMakeTextureHandleNonResidentARB; +PFNGLGETIMAGEHANDLEARBPROC glad_glGetImageHandleARB; +PFNGLMAKEIMAGEHANDLERESIDENTARBPROC glad_glMakeImageHandleResidentARB; +PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC glad_glMakeImageHandleNonResidentARB; +PFNGLUNIFORMHANDLEUI64ARBPROC glad_glUniformHandleui64ARB; +PFNGLUNIFORMHANDLEUI64VARBPROC glad_glUniformHandleui64vARB; +PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC glad_glProgramUniformHandleui64ARB; +PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC glad_glProgramUniformHandleui64vARB; +PFNGLISTEXTUREHANDLERESIDENTARBPROC glad_glIsTextureHandleResidentARB; +PFNGLISIMAGEHANDLERESIDENTARBPROC glad_glIsImageHandleResidentARB; +PFNGLVERTEXATTRIBL1UI64ARBPROC glad_glVertexAttribL1ui64ARB; +PFNGLVERTEXATTRIBL1UI64VARBPROC glad_glVertexAttribL1ui64vARB; +PFNGLGETVERTEXATTRIBLUI64VARBPROC glad_glGetVertexAttribLui64vARB; +PFNGLWINDOWPOS2DARBPROC glad_glWindowPos2dARB; +PFNGLWINDOWPOS2DVARBPROC glad_glWindowPos2dvARB; +PFNGLWINDOWPOS2FARBPROC glad_glWindowPos2fARB; +PFNGLWINDOWPOS2FVARBPROC glad_glWindowPos2fvARB; +PFNGLWINDOWPOS2IARBPROC glad_glWindowPos2iARB; +PFNGLWINDOWPOS2IVARBPROC glad_glWindowPos2ivARB; +PFNGLWINDOWPOS2SARBPROC glad_glWindowPos2sARB; +PFNGLWINDOWPOS2SVARBPROC glad_glWindowPos2svARB; +PFNGLWINDOWPOS3DARBPROC glad_glWindowPos3dARB; +PFNGLWINDOWPOS3DVARBPROC glad_glWindowPos3dvARB; +PFNGLWINDOWPOS3FARBPROC glad_glWindowPos3fARB; +PFNGLWINDOWPOS3FVARBPROC glad_glWindowPos3fvARB; +PFNGLWINDOWPOS3IARBPROC glad_glWindowPos3iARB; +PFNGLWINDOWPOS3IVARBPROC glad_glWindowPos3ivARB; +PFNGLWINDOWPOS3SARBPROC glad_glWindowPos3sARB; +PFNGLWINDOWPOS3SVARBPROC glad_glWindowPos3svARB; +PFNGLGETINTERNALFORMATIVPROC glad_glGetInternalformativ; +PFNGLBINDIMAGETEXTUREEXTPROC glad_glBindImageTextureEXT; +PFNGLMEMORYBARRIEREXTPROC glad_glMemoryBarrierEXT; +PFNGLCOPYTEXIMAGE1DEXTPROC glad_glCopyTexImage1DEXT; +PFNGLCOPYTEXIMAGE2DEXTPROC glad_glCopyTexImage2DEXT; +PFNGLCOPYTEXSUBIMAGE1DEXTPROC glad_glCopyTexSubImage1DEXT; +PFNGLCOPYTEXSUBIMAGE2DEXTPROC glad_glCopyTexSubImage2DEXT; +PFNGLCOPYTEXSUBIMAGE3DEXTPROC glad_glCopyTexSubImage3DEXT; +PFNGLCOMBINERSTAGEPARAMETERFVNVPROC glad_glCombinerStageParameterfvNV; +PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC glad_glGetCombinerStageParameterfvNV; +PFNGLDRAWTEXTURENVPROC glad_glDrawTextureNV; +PFNGLDRAWARRAYSINSTANCEDEXTPROC glad_glDrawArraysInstancedEXT; +PFNGLDRAWELEMENTSINSTANCEDEXTPROC glad_glDrawElementsInstancedEXT; +PFNGLVIEWPORTARRAYVPROC glad_glViewportArrayv; +PFNGLVIEWPORTINDEXEDFPROC glad_glViewportIndexedf; +PFNGLVIEWPORTINDEXEDFVPROC glad_glViewportIndexedfv; +PFNGLSCISSORARRAYVPROC glad_glScissorArrayv; +PFNGLSCISSORINDEXEDPROC glad_glScissorIndexed; +PFNGLSCISSORINDEXEDVPROC glad_glScissorIndexedv; +PFNGLDEPTHRANGEARRAYVPROC glad_glDepthRangeArrayv; +PFNGLDEPTHRANGEINDEXEDPROC glad_glDepthRangeIndexed; +PFNGLGETFLOATI_VPROC glad_glGetFloati_v; +PFNGLGETDOUBLEI_VPROC glad_glGetDoublei_v; +PFNGLUSEPROGRAMSTAGESPROC glad_glUseProgramStages; +PFNGLACTIVESHADERPROGRAMPROC glad_glActiveShaderProgram; +PFNGLCREATESHADERPROGRAMVPROC glad_glCreateShaderProgramv; +PFNGLBINDPROGRAMPIPELINEPROC glad_glBindProgramPipeline; +PFNGLDELETEPROGRAMPIPELINESPROC glad_glDeleteProgramPipelines; +PFNGLGENPROGRAMPIPELINESPROC glad_glGenProgramPipelines; +PFNGLISPROGRAMPIPELINEPROC glad_glIsProgramPipeline; +PFNGLGETPROGRAMPIPELINEIVPROC glad_glGetProgramPipelineiv; +PFNGLPROGRAMUNIFORM1IPROC glad_glProgramUniform1i; +PFNGLPROGRAMUNIFORM1IVPROC glad_glProgramUniform1iv; +PFNGLPROGRAMUNIFORM1FPROC glad_glProgramUniform1f; +PFNGLPROGRAMUNIFORM1FVPROC glad_glProgramUniform1fv; +PFNGLPROGRAMUNIFORM1DPROC glad_glProgramUniform1d; +PFNGLPROGRAMUNIFORM1DVPROC glad_glProgramUniform1dv; +PFNGLPROGRAMUNIFORM1UIPROC glad_glProgramUniform1ui; +PFNGLPROGRAMUNIFORM1UIVPROC glad_glProgramUniform1uiv; +PFNGLPROGRAMUNIFORM2IPROC glad_glProgramUniform2i; +PFNGLPROGRAMUNIFORM2IVPROC glad_glProgramUniform2iv; +PFNGLPROGRAMUNIFORM2FPROC glad_glProgramUniform2f; +PFNGLPROGRAMUNIFORM2FVPROC glad_glProgramUniform2fv; +PFNGLPROGRAMUNIFORM2DPROC glad_glProgramUniform2d; +PFNGLPROGRAMUNIFORM2DVPROC glad_glProgramUniform2dv; +PFNGLPROGRAMUNIFORM2UIPROC glad_glProgramUniform2ui; +PFNGLPROGRAMUNIFORM2UIVPROC glad_glProgramUniform2uiv; +PFNGLPROGRAMUNIFORM3IPROC glad_glProgramUniform3i; +PFNGLPROGRAMUNIFORM3IVPROC glad_glProgramUniform3iv; +PFNGLPROGRAMUNIFORM3FPROC glad_glProgramUniform3f; +PFNGLPROGRAMUNIFORM3FVPROC glad_glProgramUniform3fv; +PFNGLPROGRAMUNIFORM3DPROC glad_glProgramUniform3d; +PFNGLPROGRAMUNIFORM3DVPROC glad_glProgramUniform3dv; +PFNGLPROGRAMUNIFORM3UIPROC glad_glProgramUniform3ui; +PFNGLPROGRAMUNIFORM3UIVPROC glad_glProgramUniform3uiv; +PFNGLPROGRAMUNIFORM4IPROC glad_glProgramUniform4i; +PFNGLPROGRAMUNIFORM4IVPROC glad_glProgramUniform4iv; +PFNGLPROGRAMUNIFORM4FPROC glad_glProgramUniform4f; +PFNGLPROGRAMUNIFORM4FVPROC glad_glProgramUniform4fv; +PFNGLPROGRAMUNIFORM4DPROC glad_glProgramUniform4d; +PFNGLPROGRAMUNIFORM4DVPROC glad_glProgramUniform4dv; +PFNGLPROGRAMUNIFORM4UIPROC glad_glProgramUniform4ui; +PFNGLPROGRAMUNIFORM4UIVPROC glad_glProgramUniform4uiv; +PFNGLPROGRAMUNIFORMMATRIX2FVPROC glad_glProgramUniformMatrix2fv; +PFNGLPROGRAMUNIFORMMATRIX3FVPROC glad_glProgramUniformMatrix3fv; +PFNGLPROGRAMUNIFORMMATRIX4FVPROC glad_glProgramUniformMatrix4fv; +PFNGLPROGRAMUNIFORMMATRIX2DVPROC glad_glProgramUniformMatrix2dv; +PFNGLPROGRAMUNIFORMMATRIX3DVPROC glad_glProgramUniformMatrix3dv; +PFNGLPROGRAMUNIFORMMATRIX4DVPROC glad_glProgramUniformMatrix4dv; +PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC glad_glProgramUniformMatrix2x3fv; +PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC glad_glProgramUniformMatrix3x2fv; +PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC glad_glProgramUniformMatrix2x4fv; +PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC glad_glProgramUniformMatrix4x2fv; +PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC glad_glProgramUniformMatrix3x4fv; +PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC glad_glProgramUniformMatrix4x3fv; +PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC glad_glProgramUniformMatrix2x3dv; +PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC glad_glProgramUniformMatrix3x2dv; +PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC glad_glProgramUniformMatrix2x4dv; +PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC glad_glProgramUniformMatrix4x2dv; +PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC glad_glProgramUniformMatrix3x4dv; +PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC glad_glProgramUniformMatrix4x3dv; +PFNGLVALIDATEPROGRAMPIPELINEPROC glad_glValidateProgramPipeline; +PFNGLGETPROGRAMPIPELINEINFOLOGPROC glad_glGetProgramPipelineInfoLog; +PFNGLDEPTHBOUNDSEXTPROC glad_glDepthBoundsEXT; +PFNGLBEGINVIDEOCAPTURENVPROC glad_glBeginVideoCaptureNV; +PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC glad_glBindVideoCaptureStreamBufferNV; +PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC glad_glBindVideoCaptureStreamTextureNV; +PFNGLENDVIDEOCAPTURENVPROC glad_glEndVideoCaptureNV; +PFNGLGETVIDEOCAPTUREIVNVPROC glad_glGetVideoCaptureivNV; +PFNGLGETVIDEOCAPTURESTREAMIVNVPROC glad_glGetVideoCaptureStreamivNV; +PFNGLGETVIDEOCAPTURESTREAMFVNVPROC glad_glGetVideoCaptureStreamfvNV; +PFNGLGETVIDEOCAPTURESTREAMDVNVPROC glad_glGetVideoCaptureStreamdvNV; +PFNGLVIDEOCAPTURENVPROC glad_glVideoCaptureNV; +PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC glad_glVideoCaptureStreamParameterivNV; +PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC glad_glVideoCaptureStreamParameterfvNV; +PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC glad_glVideoCaptureStreamParameterdvNV; +PFNGLCURRENTPALETTEMATRIXARBPROC glad_glCurrentPaletteMatrixARB; +PFNGLMATRIXINDEXUBVARBPROC glad_glMatrixIndexubvARB; +PFNGLMATRIXINDEXUSVARBPROC glad_glMatrixIndexusvARB; +PFNGLMATRIXINDEXUIVARBPROC glad_glMatrixIndexuivARB; +PFNGLMATRIXINDEXPOINTERARBPROC glad_glMatrixIndexPointerARB; +PFNGLTEXTURECOLORMASKSGISPROC glad_glTextureColorMaskSGIS; +PFNGLTANGENT3BEXTPROC glad_glTangent3bEXT; +PFNGLTANGENT3BVEXTPROC glad_glTangent3bvEXT; +PFNGLTANGENT3DEXTPROC glad_glTangent3dEXT; +PFNGLTANGENT3DVEXTPROC glad_glTangent3dvEXT; +PFNGLTANGENT3FEXTPROC glad_glTangent3fEXT; +PFNGLTANGENT3FVEXTPROC glad_glTangent3fvEXT; +PFNGLTANGENT3IEXTPROC glad_glTangent3iEXT; +PFNGLTANGENT3IVEXTPROC glad_glTangent3ivEXT; +PFNGLTANGENT3SEXTPROC glad_glTangent3sEXT; +PFNGLTANGENT3SVEXTPROC glad_glTangent3svEXT; +PFNGLBINORMAL3BEXTPROC glad_glBinormal3bEXT; +PFNGLBINORMAL3BVEXTPROC glad_glBinormal3bvEXT; +PFNGLBINORMAL3DEXTPROC glad_glBinormal3dEXT; +PFNGLBINORMAL3DVEXTPROC glad_glBinormal3dvEXT; +PFNGLBINORMAL3FEXTPROC glad_glBinormal3fEXT; +PFNGLBINORMAL3FVEXTPROC glad_glBinormal3fvEXT; +PFNGLBINORMAL3IEXTPROC glad_glBinormal3iEXT; +PFNGLBINORMAL3IVEXTPROC glad_glBinormal3ivEXT; +PFNGLBINORMAL3SEXTPROC glad_glBinormal3sEXT; +PFNGLBINORMAL3SVEXTPROC glad_glBinormal3svEXT; +PFNGLTANGENTPOINTEREXTPROC glad_glTangentPointerEXT; +PFNGLBINORMALPOINTEREXTPROC glad_glBinormalPointerEXT; +PFNGLCOMPRESSEDTEXIMAGE3DARBPROC glad_glCompressedTexImage3DARB; +PFNGLCOMPRESSEDTEXIMAGE2DARBPROC glad_glCompressedTexImage2DARB; +PFNGLCOMPRESSEDTEXIMAGE1DARBPROC glad_glCompressedTexImage1DARB; +PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC glad_glCompressedTexSubImage3DARB; +PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC glad_glCompressedTexSubImage2DARB; +PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC glad_glCompressedTexSubImage1DARB; +PFNGLGETCOMPRESSEDTEXIMAGEARBPROC glad_glGetCompressedTexImageARB; +PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC glad_glGetSubroutineUniformLocation; +PFNGLGETSUBROUTINEINDEXPROC glad_glGetSubroutineIndex; +PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC glad_glGetActiveSubroutineUniformiv; +PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC glad_glGetActiveSubroutineUniformName; +PFNGLGETACTIVESUBROUTINENAMEPROC glad_glGetActiveSubroutineName; +PFNGLUNIFORMSUBROUTINESUIVPROC glad_glUniformSubroutinesuiv; +PFNGLGETUNIFORMSUBROUTINEUIVPROC glad_glGetUniformSubroutineuiv; +PFNGLGETPROGRAMSTAGEIVPROC glad_glGetProgramStageiv; +PFNGLTEXSTORAGE2DMULTISAMPLEPROC glad_glTexStorage2DMultisample; +PFNGLTEXSTORAGE3DMULTISAMPLEPROC glad_glTexStorage3DMultisample; +PFNGLVERTEXATTRIBL1DEXTPROC glad_glVertexAttribL1dEXT; +PFNGLVERTEXATTRIBL2DEXTPROC glad_glVertexAttribL2dEXT; +PFNGLVERTEXATTRIBL3DEXTPROC glad_glVertexAttribL3dEXT; +PFNGLVERTEXATTRIBL4DEXTPROC glad_glVertexAttribL4dEXT; +PFNGLVERTEXATTRIBL1DVEXTPROC glad_glVertexAttribL1dvEXT; +PFNGLVERTEXATTRIBL2DVEXTPROC glad_glVertexAttribL2dvEXT; +PFNGLVERTEXATTRIBL3DVEXTPROC glad_glVertexAttribL3dvEXT; +PFNGLVERTEXATTRIBL4DVEXTPROC glad_glVertexAttribL4dvEXT; +PFNGLVERTEXATTRIBLPOINTEREXTPROC glad_glVertexAttribLPointerEXT; +PFNGLGETVERTEXATTRIBLDVEXTPROC glad_glGetVertexAttribLdvEXT; +PFNGLQUERYMATRIXXOESPROC glad_glQueryMatrixxOES; +PFNGLWINDOWPOS2DMESAPROC glad_glWindowPos2dMESA; +PFNGLWINDOWPOS2DVMESAPROC glad_glWindowPos2dvMESA; +PFNGLWINDOWPOS2FMESAPROC glad_glWindowPos2fMESA; +PFNGLWINDOWPOS2FVMESAPROC glad_glWindowPos2fvMESA; +PFNGLWINDOWPOS2IMESAPROC glad_glWindowPos2iMESA; +PFNGLWINDOWPOS2IVMESAPROC glad_glWindowPos2ivMESA; +PFNGLWINDOWPOS2SMESAPROC glad_glWindowPos2sMESA; +PFNGLWINDOWPOS2SVMESAPROC glad_glWindowPos2svMESA; +PFNGLWINDOWPOS3DMESAPROC glad_glWindowPos3dMESA; +PFNGLWINDOWPOS3DVMESAPROC glad_glWindowPos3dvMESA; +PFNGLWINDOWPOS3FMESAPROC glad_glWindowPos3fMESA; +PFNGLWINDOWPOS3FVMESAPROC glad_glWindowPos3fvMESA; +PFNGLWINDOWPOS3IMESAPROC glad_glWindowPos3iMESA; +PFNGLWINDOWPOS3IVMESAPROC glad_glWindowPos3ivMESA; +PFNGLWINDOWPOS3SMESAPROC glad_glWindowPos3sMESA; +PFNGLWINDOWPOS3SVMESAPROC glad_glWindowPos3svMESA; +PFNGLWINDOWPOS4DMESAPROC glad_glWindowPos4dMESA; +PFNGLWINDOWPOS4DVMESAPROC glad_glWindowPos4dvMESA; +PFNGLWINDOWPOS4FMESAPROC glad_glWindowPos4fMESA; +PFNGLWINDOWPOS4FVMESAPROC glad_glWindowPos4fvMESA; +PFNGLWINDOWPOS4IMESAPROC glad_glWindowPos4iMESA; +PFNGLWINDOWPOS4IVMESAPROC glad_glWindowPos4ivMESA; +PFNGLWINDOWPOS4SMESAPROC glad_glWindowPos4sMESA; +PFNGLWINDOWPOS4SVMESAPROC glad_glWindowPos4svMESA; +PFNGLOBJECTPURGEABLEAPPLEPROC glad_glObjectPurgeableAPPLE; +PFNGLOBJECTUNPURGEABLEAPPLEPROC glad_glObjectUnpurgeableAPPLE; +PFNGLGETOBJECTPARAMETERIVAPPLEPROC glad_glGetObjectParameterivAPPLE; +PFNGLGENQUERIESARBPROC glad_glGenQueriesARB; +PFNGLDELETEQUERIESARBPROC glad_glDeleteQueriesARB; +PFNGLISQUERYARBPROC glad_glIsQueryARB; +PFNGLBEGINQUERYARBPROC glad_glBeginQueryARB; +PFNGLENDQUERYARBPROC glad_glEndQueryARB; +PFNGLGETQUERYIVARBPROC glad_glGetQueryivARB; +PFNGLGETQUERYOBJECTIVARBPROC glad_glGetQueryObjectivARB; +PFNGLGETQUERYOBJECTUIVARBPROC glad_glGetQueryObjectuivARB; +PFNGLCOLORTABLESGIPROC glad_glColorTableSGI; +PFNGLCOLORTABLEPARAMETERFVSGIPROC glad_glColorTableParameterfvSGI; +PFNGLCOLORTABLEPARAMETERIVSGIPROC glad_glColorTableParameterivSGI; +PFNGLCOPYCOLORTABLESGIPROC glad_glCopyColorTableSGI; +PFNGLGETCOLORTABLESGIPROC glad_glGetColorTableSGI; +PFNGLGETCOLORTABLEPARAMETERFVSGIPROC glad_glGetColorTableParameterfvSGI; +PFNGLGETCOLORTABLEPARAMETERIVSGIPROC glad_glGetColorTableParameterivSGI; +PFNGLGETUNIFORMUIVEXTPROC glad_glGetUniformuivEXT; +PFNGLBINDFRAGDATALOCATIONEXTPROC glad_glBindFragDataLocationEXT; +PFNGLGETFRAGDATALOCATIONEXTPROC glad_glGetFragDataLocationEXT; +PFNGLUNIFORM1UIEXTPROC glad_glUniform1uiEXT; +PFNGLUNIFORM2UIEXTPROC glad_glUniform2uiEXT; +PFNGLUNIFORM3UIEXTPROC glad_glUniform3uiEXT; +PFNGLUNIFORM4UIEXTPROC glad_glUniform4uiEXT; +PFNGLUNIFORM1UIVEXTPROC glad_glUniform1uivEXT; +PFNGLUNIFORM2UIVEXTPROC glad_glUniform2uivEXT; +PFNGLUNIFORM3UIVEXTPROC glad_glUniform3uivEXT; +PFNGLUNIFORM4UIVEXTPROC glad_glUniform4uivEXT; +PFNGLPROGRAMVERTEXLIMITNVPROC glad_glProgramVertexLimitNV; +PFNGLFRAMEBUFFERTEXTUREEXTPROC glad_glFramebufferTextureEXT; +PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC glad_glFramebufferTextureFaceEXT; +PFNGLDEBUGMESSAGEENABLEAMDPROC glad_glDebugMessageEnableAMD; +PFNGLDEBUGMESSAGEINSERTAMDPROC glad_glDebugMessageInsertAMD; +PFNGLDEBUGMESSAGECALLBACKAMDPROC glad_glDebugMessageCallbackAMD; +PFNGLGETDEBUGMESSAGELOGAMDPROC glad_glGetDebugMessageLogAMD; +PFNGLACTIVETEXTUREARBPROC glad_glActiveTextureARB; +PFNGLCLIENTACTIVETEXTUREARBPROC glad_glClientActiveTextureARB; +PFNGLMULTITEXCOORD1DARBPROC glad_glMultiTexCoord1dARB; +PFNGLMULTITEXCOORD1DVARBPROC glad_glMultiTexCoord1dvARB; +PFNGLMULTITEXCOORD1FARBPROC glad_glMultiTexCoord1fARB; +PFNGLMULTITEXCOORD1FVARBPROC glad_glMultiTexCoord1fvARB; +PFNGLMULTITEXCOORD1IARBPROC glad_glMultiTexCoord1iARB; +PFNGLMULTITEXCOORD1IVARBPROC glad_glMultiTexCoord1ivARB; +PFNGLMULTITEXCOORD1SARBPROC glad_glMultiTexCoord1sARB; +PFNGLMULTITEXCOORD1SVARBPROC glad_glMultiTexCoord1svARB; +PFNGLMULTITEXCOORD2DARBPROC glad_glMultiTexCoord2dARB; +PFNGLMULTITEXCOORD2DVARBPROC glad_glMultiTexCoord2dvARB; +PFNGLMULTITEXCOORD2FARBPROC glad_glMultiTexCoord2fARB; +PFNGLMULTITEXCOORD2FVARBPROC glad_glMultiTexCoord2fvARB; +PFNGLMULTITEXCOORD2IARBPROC glad_glMultiTexCoord2iARB; +PFNGLMULTITEXCOORD2IVARBPROC glad_glMultiTexCoord2ivARB; +PFNGLMULTITEXCOORD2SARBPROC glad_glMultiTexCoord2sARB; +PFNGLMULTITEXCOORD2SVARBPROC glad_glMultiTexCoord2svARB; +PFNGLMULTITEXCOORD3DARBPROC glad_glMultiTexCoord3dARB; +PFNGLMULTITEXCOORD3DVARBPROC glad_glMultiTexCoord3dvARB; +PFNGLMULTITEXCOORD3FARBPROC glad_glMultiTexCoord3fARB; +PFNGLMULTITEXCOORD3FVARBPROC glad_glMultiTexCoord3fvARB; +PFNGLMULTITEXCOORD3IARBPROC glad_glMultiTexCoord3iARB; +PFNGLMULTITEXCOORD3IVARBPROC glad_glMultiTexCoord3ivARB; +PFNGLMULTITEXCOORD3SARBPROC glad_glMultiTexCoord3sARB; +PFNGLMULTITEXCOORD3SVARBPROC glad_glMultiTexCoord3svARB; +PFNGLMULTITEXCOORD4DARBPROC glad_glMultiTexCoord4dARB; +PFNGLMULTITEXCOORD4DVARBPROC glad_glMultiTexCoord4dvARB; +PFNGLMULTITEXCOORD4FARBPROC glad_glMultiTexCoord4fARB; +PFNGLMULTITEXCOORD4FVARBPROC glad_glMultiTexCoord4fvARB; +PFNGLMULTITEXCOORD4IARBPROC glad_glMultiTexCoord4iARB; +PFNGLMULTITEXCOORD4IVARBPROC glad_glMultiTexCoord4ivARB; +PFNGLMULTITEXCOORD4SARBPROC glad_glMultiTexCoord4sARB; +PFNGLMULTITEXCOORD4SVARBPROC glad_glMultiTexCoord4svARB; +PFNGLDEFORMATIONMAP3DSGIXPROC glad_glDeformationMap3dSGIX; +PFNGLDEFORMATIONMAP3FSGIXPROC glad_glDeformationMap3fSGIX; +PFNGLDEFORMSGIXPROC glad_glDeformSGIX; +PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC glad_glLoadIdentityDeformationMapSGIX; +PFNGLPROVOKINGVERTEXEXTPROC glad_glProvokingVertexEXT; +PFNGLPOINTPARAMETERFARBPROC glad_glPointParameterfARB; +PFNGLPOINTPARAMETERFVARBPROC glad_glPointParameterfvARB; +PFNGLBINDIMAGETEXTUREPROC glad_glBindImageTexture; +PFNGLMEMORYBARRIERPROC glad_glMemoryBarrier; +PFNGLTEXTUREBARRIERPROC glad_glTextureBarrier; +PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC glad_glMultiDrawArraysIndirectBindlessNV; +PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC glad_glMultiDrawElementsIndirectBindlessNV; +PFNGLBEGINTRANSFORMFEEDBACKEXTPROC glad_glBeginTransformFeedbackEXT; +PFNGLENDTRANSFORMFEEDBACKEXTPROC glad_glEndTransformFeedbackEXT; +PFNGLBINDBUFFERRANGEEXTPROC glad_glBindBufferRangeEXT; +PFNGLBINDBUFFEROFFSETEXTPROC glad_glBindBufferOffsetEXT; +PFNGLBINDBUFFERBASEEXTPROC glad_glBindBufferBaseEXT; +PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC glad_glTransformFeedbackVaryingsEXT; +PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC glad_glGetTransformFeedbackVaryingEXT; +PFNGLPROGRAMLOCALPARAMETERI4INVPROC glad_glProgramLocalParameterI4iNV; +PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC glad_glProgramLocalParameterI4ivNV; +PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC glad_glProgramLocalParametersI4ivNV; +PFNGLPROGRAMLOCALPARAMETERI4UINVPROC glad_glProgramLocalParameterI4uiNV; +PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC glad_glProgramLocalParameterI4uivNV; +PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC glad_glProgramLocalParametersI4uivNV; +PFNGLPROGRAMENVPARAMETERI4INVPROC glad_glProgramEnvParameterI4iNV; +PFNGLPROGRAMENVPARAMETERI4IVNVPROC glad_glProgramEnvParameterI4ivNV; +PFNGLPROGRAMENVPARAMETERSI4IVNVPROC glad_glProgramEnvParametersI4ivNV; +PFNGLPROGRAMENVPARAMETERI4UINVPROC glad_glProgramEnvParameterI4uiNV; +PFNGLPROGRAMENVPARAMETERI4UIVNVPROC glad_glProgramEnvParameterI4uivNV; +PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC glad_glProgramEnvParametersI4uivNV; +PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC glad_glGetProgramLocalParameterIivNV; +PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC glad_glGetProgramLocalParameterIuivNV; +PFNGLGETPROGRAMENVPARAMETERIIVNVPROC glad_glGetProgramEnvParameterIivNV; +PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC glad_glGetProgramEnvParameterIuivNV; +PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC glad_glProgramSubroutineParametersuivNV; +PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC glad_glGetProgramSubroutineParameteruivNV; +PFNGLPROGRAMPARAMETERIARBPROC glad_glProgramParameteriARB; +PFNGLFRAMEBUFFERTEXTUREARBPROC glad_glFramebufferTextureARB; +PFNGLFRAMEBUFFERTEXTURELAYERARBPROC glad_glFramebufferTextureLayerARB; +PFNGLFRAMEBUFFERTEXTUREFACEARBPROC glad_glFramebufferTextureFaceARB; +PFNGLSUBPIXELPRECISIONBIASNVPROC glad_glSubpixelPrecisionBiasNV; +PFNGLSPRITEPARAMETERFSGIXPROC glad_glSpriteParameterfSGIX; +PFNGLSPRITEPARAMETERFVSGIXPROC glad_glSpriteParameterfvSGIX; +PFNGLSPRITEPARAMETERISGIXPROC glad_glSpriteParameteriSGIX; +PFNGLSPRITEPARAMETERIVSGIXPROC glad_glSpriteParameterivSGIX; +PFNGLGETPROGRAMBINARYPROC glad_glGetProgramBinary; +PFNGLPROGRAMBINARYPROC glad_glProgramBinary; +PFNGLPROGRAMPARAMETERIPROC glad_glProgramParameteri; +PFNGLQUERYOBJECTPARAMETERUIAMDPROC glad_glQueryObjectParameteruiAMD; +PFNGLSAMPLEMASKSGISPROC glad_glSampleMaskSGIS; +PFNGLSAMPLEPATTERNSGISPROC glad_glSamplePatternSGIS; +PFNGLISRENDERBUFFEREXTPROC glad_glIsRenderbufferEXT; +PFNGLBINDRENDERBUFFEREXTPROC glad_glBindRenderbufferEXT; +PFNGLDELETERENDERBUFFERSEXTPROC glad_glDeleteRenderbuffersEXT; +PFNGLGENRENDERBUFFERSEXTPROC glad_glGenRenderbuffersEXT; +PFNGLRENDERBUFFERSTORAGEEXTPROC glad_glRenderbufferStorageEXT; +PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC glad_glGetRenderbufferParameterivEXT; +PFNGLISFRAMEBUFFEREXTPROC glad_glIsFramebufferEXT; +PFNGLBINDFRAMEBUFFEREXTPROC glad_glBindFramebufferEXT; +PFNGLDELETEFRAMEBUFFERSEXTPROC glad_glDeleteFramebuffersEXT; +PFNGLGENFRAMEBUFFERSEXTPROC glad_glGenFramebuffersEXT; +PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glad_glCheckFramebufferStatusEXT; +PFNGLFRAMEBUFFERTEXTURE1DEXTPROC glad_glFramebufferTexture1DEXT; +PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glad_glFramebufferTexture2DEXT; +PFNGLFRAMEBUFFERTEXTURE3DEXTPROC glad_glFramebufferTexture3DEXT; +PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glad_glFramebufferRenderbufferEXT; +PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glad_glGetFramebufferAttachmentParameterivEXT; +PFNGLGENERATEMIPMAPEXTPROC glad_glGenerateMipmapEXT; +PFNGLVERTEXARRAYRANGEAPPLEPROC glad_glVertexArrayRangeAPPLE; +PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC glad_glFlushVertexArrayRangeAPPLE; +PFNGLVERTEXARRAYPARAMETERIAPPLEPROC glad_glVertexArrayParameteriAPPLE; +PFNGLCOMBINERPARAMETERFVNVPROC glad_glCombinerParameterfvNV; +PFNGLCOMBINERPARAMETERFNVPROC glad_glCombinerParameterfNV; +PFNGLCOMBINERPARAMETERIVNVPROC glad_glCombinerParameterivNV; +PFNGLCOMBINERPARAMETERINVPROC glad_glCombinerParameteriNV; +PFNGLCOMBINERINPUTNVPROC glad_glCombinerInputNV; +PFNGLCOMBINEROUTPUTNVPROC glad_glCombinerOutputNV; +PFNGLFINALCOMBINERINPUTNVPROC glad_glFinalCombinerInputNV; +PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC glad_glGetCombinerInputParameterfvNV; +PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC glad_glGetCombinerInputParameterivNV; +PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC glad_glGetCombinerOutputParameterfvNV; +PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC glad_glGetCombinerOutputParameterivNV; +PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC glad_glGetFinalCombinerInputParameterfvNV; +PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC glad_glGetFinalCombinerInputParameterivNV; +PFNGLDRAWBUFFERSARBPROC glad_glDrawBuffersARB; +PFNGLCLEARTEXIMAGEPROC glad_glClearTexImage; +PFNGLCLEARTEXSUBIMAGEPROC glad_glClearTexSubImage; +PFNGLDEBUGMESSAGECONTROLARBPROC glad_glDebugMessageControlARB; +PFNGLDEBUGMESSAGEINSERTARBPROC glad_glDebugMessageInsertARB; +PFNGLDEBUGMESSAGECALLBACKARBPROC glad_glDebugMessageCallbackARB; +PFNGLGETDEBUGMESSAGELOGARBPROC glad_glGetDebugMessageLogARB; +PFNGLCULLPARAMETERDVEXTPROC glad_glCullParameterdvEXT; +PFNGLCULLPARAMETERFVEXTPROC glad_glCullParameterfvEXT; +PFNGLMULTIMODEDRAWARRAYSIBMPROC glad_glMultiModeDrawArraysIBM; +PFNGLMULTIMODEDRAWELEMENTSIBMPROC glad_glMultiModeDrawElementsIBM; +PFNGLBINDVERTEXARRAYAPPLEPROC glad_glBindVertexArrayAPPLE; +PFNGLDELETEVERTEXARRAYSAPPLEPROC glad_glDeleteVertexArraysAPPLE; +PFNGLGENVERTEXARRAYSAPPLEPROC glad_glGenVertexArraysAPPLE; +PFNGLISVERTEXARRAYAPPLEPROC glad_glIsVertexArrayAPPLE; +PFNGLDETAILTEXFUNCSGISPROC glad_glDetailTexFuncSGIS; +PFNGLGETDETAILTEXFUNCSGISPROC glad_glGetDetailTexFuncSGIS; +PFNGLDRAWARRAYSINSTANCEDARBPROC glad_glDrawArraysInstancedARB; +PFNGLDRAWELEMENTSINSTANCEDARBPROC glad_glDrawElementsInstancedARB; +PFNGLNAMEDSTRINGARBPROC glad_glNamedStringARB; +PFNGLDELETENAMEDSTRINGARBPROC glad_glDeleteNamedStringARB; +PFNGLCOMPILESHADERINCLUDEARBPROC glad_glCompileShaderIncludeARB; +PFNGLISNAMEDSTRINGARBPROC glad_glIsNamedStringARB; +PFNGLGETNAMEDSTRINGARBPROC glad_glGetNamedStringARB; +PFNGLGETNAMEDSTRINGIVARBPROC glad_glGetNamedStringivARB; +PFNGLBLENDFUNCSEPARATEINGRPROC glad_glBlendFuncSeparateINGR; +PFNGLGENPATHSNVPROC glad_glGenPathsNV; +PFNGLDELETEPATHSNVPROC glad_glDeletePathsNV; +PFNGLISPATHNVPROC glad_glIsPathNV; +PFNGLPATHCOMMANDSNVPROC glad_glPathCommandsNV; +PFNGLPATHCOORDSNVPROC glad_glPathCoordsNV; +PFNGLPATHSUBCOMMANDSNVPROC glad_glPathSubCommandsNV; +PFNGLPATHSUBCOORDSNVPROC glad_glPathSubCoordsNV; +PFNGLPATHSTRINGNVPROC glad_glPathStringNV; +PFNGLPATHGLYPHSNVPROC glad_glPathGlyphsNV; +PFNGLPATHGLYPHRANGENVPROC glad_glPathGlyphRangeNV; +PFNGLWEIGHTPATHSNVPROC glad_glWeightPathsNV; +PFNGLCOPYPATHNVPROC glad_glCopyPathNV; +PFNGLINTERPOLATEPATHSNVPROC glad_glInterpolatePathsNV; +PFNGLTRANSFORMPATHNVPROC glad_glTransformPathNV; +PFNGLPATHPARAMETERIVNVPROC glad_glPathParameterivNV; +PFNGLPATHPARAMETERINVPROC glad_glPathParameteriNV; +PFNGLPATHPARAMETERFVNVPROC glad_glPathParameterfvNV; +PFNGLPATHPARAMETERFNVPROC glad_glPathParameterfNV; +PFNGLPATHDASHARRAYNVPROC glad_glPathDashArrayNV; +PFNGLPATHSTENCILFUNCNVPROC glad_glPathStencilFuncNV; +PFNGLPATHSTENCILDEPTHOFFSETNVPROC glad_glPathStencilDepthOffsetNV; +PFNGLSTENCILFILLPATHNVPROC glad_glStencilFillPathNV; +PFNGLSTENCILSTROKEPATHNVPROC glad_glStencilStrokePathNV; +PFNGLSTENCILFILLPATHINSTANCEDNVPROC glad_glStencilFillPathInstancedNV; +PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC glad_glStencilStrokePathInstancedNV; +PFNGLPATHCOVERDEPTHFUNCNVPROC glad_glPathCoverDepthFuncNV; +PFNGLCOVERFILLPATHNVPROC glad_glCoverFillPathNV; +PFNGLCOVERSTROKEPATHNVPROC glad_glCoverStrokePathNV; +PFNGLCOVERFILLPATHINSTANCEDNVPROC glad_glCoverFillPathInstancedNV; +PFNGLCOVERSTROKEPATHINSTANCEDNVPROC glad_glCoverStrokePathInstancedNV; +PFNGLGETPATHPARAMETERIVNVPROC glad_glGetPathParameterivNV; +PFNGLGETPATHPARAMETERFVNVPROC glad_glGetPathParameterfvNV; +PFNGLGETPATHCOMMANDSNVPROC glad_glGetPathCommandsNV; +PFNGLGETPATHCOORDSNVPROC glad_glGetPathCoordsNV; +PFNGLGETPATHDASHARRAYNVPROC glad_glGetPathDashArrayNV; +PFNGLGETPATHMETRICSNVPROC glad_glGetPathMetricsNV; +PFNGLGETPATHMETRICRANGENVPROC glad_glGetPathMetricRangeNV; +PFNGLGETPATHSPACINGNVPROC glad_glGetPathSpacingNV; +PFNGLISPOINTINFILLPATHNVPROC glad_glIsPointInFillPathNV; +PFNGLISPOINTINSTROKEPATHNVPROC glad_glIsPointInStrokePathNV; +PFNGLGETPATHLENGTHNVPROC glad_glGetPathLengthNV; +PFNGLPOINTALONGPATHNVPROC glad_glPointAlongPathNV; +PFNGLMATRIXLOAD3X2FNVPROC glad_glMatrixLoad3x2fNV; +PFNGLMATRIXLOAD3X3FNVPROC glad_glMatrixLoad3x3fNV; +PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC glad_glMatrixLoadTranspose3x3fNV; +PFNGLMATRIXMULT3X2FNVPROC glad_glMatrixMult3x2fNV; +PFNGLMATRIXMULT3X3FNVPROC glad_glMatrixMult3x3fNV; +PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC glad_glMatrixMultTranspose3x3fNV; +PFNGLSTENCILTHENCOVERFILLPATHNVPROC glad_glStencilThenCoverFillPathNV; +PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC glad_glStencilThenCoverStrokePathNV; +PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC glad_glStencilThenCoverFillPathInstancedNV; +PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC glad_glStencilThenCoverStrokePathInstancedNV; +PFNGLPATHGLYPHINDEXRANGENVPROC glad_glPathGlyphIndexRangeNV; +PFNGLPATHGLYPHINDEXARRAYNVPROC glad_glPathGlyphIndexArrayNV; +PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC glad_glPathMemoryGlyphIndexArrayNV; +PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC glad_glProgramPathFragmentInputGenNV; +PFNGLGETPROGRAMRESOURCEFVNVPROC glad_glGetProgramResourcefvNV; +PFNGLPATHCOLORGENNVPROC glad_glPathColorGenNV; +PFNGLPATHTEXGENNVPROC glad_glPathTexGenNV; +PFNGLPATHFOGGENNVPROC glad_glPathFogGenNV; +PFNGLGETPATHCOLORGENIVNVPROC glad_glGetPathColorGenivNV; +PFNGLGETPATHCOLORGENFVNVPROC glad_glGetPathColorGenfvNV; +PFNGLGETPATHTEXGENIVNVPROC glad_glGetPathTexGenivNV; +PFNGLGETPATHTEXGENFVNVPROC glad_glGetPathTexGenfvNV; +PFNGLCONSERVATIVERASTERPARAMETERFNVPROC glad_glConservativeRasterParameterfNV; +PFNGLVERTEXSTREAM1SATIPROC glad_glVertexStream1sATI; +PFNGLVERTEXSTREAM1SVATIPROC glad_glVertexStream1svATI; +PFNGLVERTEXSTREAM1IATIPROC glad_glVertexStream1iATI; +PFNGLVERTEXSTREAM1IVATIPROC glad_glVertexStream1ivATI; +PFNGLVERTEXSTREAM1FATIPROC glad_glVertexStream1fATI; +PFNGLVERTEXSTREAM1FVATIPROC glad_glVertexStream1fvATI; +PFNGLVERTEXSTREAM1DATIPROC glad_glVertexStream1dATI; +PFNGLVERTEXSTREAM1DVATIPROC glad_glVertexStream1dvATI; +PFNGLVERTEXSTREAM2SATIPROC glad_glVertexStream2sATI; +PFNGLVERTEXSTREAM2SVATIPROC glad_glVertexStream2svATI; +PFNGLVERTEXSTREAM2IATIPROC glad_glVertexStream2iATI; +PFNGLVERTEXSTREAM2IVATIPROC glad_glVertexStream2ivATI; +PFNGLVERTEXSTREAM2FATIPROC glad_glVertexStream2fATI; +PFNGLVERTEXSTREAM2FVATIPROC glad_glVertexStream2fvATI; +PFNGLVERTEXSTREAM2DATIPROC glad_glVertexStream2dATI; +PFNGLVERTEXSTREAM2DVATIPROC glad_glVertexStream2dvATI; +PFNGLVERTEXSTREAM3SATIPROC glad_glVertexStream3sATI; +PFNGLVERTEXSTREAM3SVATIPROC glad_glVertexStream3svATI; +PFNGLVERTEXSTREAM3IATIPROC glad_glVertexStream3iATI; +PFNGLVERTEXSTREAM3IVATIPROC glad_glVertexStream3ivATI; +PFNGLVERTEXSTREAM3FATIPROC glad_glVertexStream3fATI; +PFNGLVERTEXSTREAM3FVATIPROC glad_glVertexStream3fvATI; +PFNGLVERTEXSTREAM3DATIPROC glad_glVertexStream3dATI; +PFNGLVERTEXSTREAM3DVATIPROC glad_glVertexStream3dvATI; +PFNGLVERTEXSTREAM4SATIPROC glad_glVertexStream4sATI; +PFNGLVERTEXSTREAM4SVATIPROC glad_glVertexStream4svATI; +PFNGLVERTEXSTREAM4IATIPROC glad_glVertexStream4iATI; +PFNGLVERTEXSTREAM4IVATIPROC glad_glVertexStream4ivATI; +PFNGLVERTEXSTREAM4FATIPROC glad_glVertexStream4fATI; +PFNGLVERTEXSTREAM4FVATIPROC glad_glVertexStream4fvATI; +PFNGLVERTEXSTREAM4DATIPROC glad_glVertexStream4dATI; +PFNGLVERTEXSTREAM4DVATIPROC glad_glVertexStream4dvATI; +PFNGLNORMALSTREAM3BATIPROC glad_glNormalStream3bATI; +PFNGLNORMALSTREAM3BVATIPROC glad_glNormalStream3bvATI; +PFNGLNORMALSTREAM3SATIPROC glad_glNormalStream3sATI; +PFNGLNORMALSTREAM3SVATIPROC glad_glNormalStream3svATI; +PFNGLNORMALSTREAM3IATIPROC glad_glNormalStream3iATI; +PFNGLNORMALSTREAM3IVATIPROC glad_glNormalStream3ivATI; +PFNGLNORMALSTREAM3FATIPROC glad_glNormalStream3fATI; +PFNGLNORMALSTREAM3FVATIPROC glad_glNormalStream3fvATI; +PFNGLNORMALSTREAM3DATIPROC glad_glNormalStream3dATI; +PFNGLNORMALSTREAM3DVATIPROC glad_glNormalStream3dvATI; +PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC glad_glClientActiveVertexStreamATI; +PFNGLVERTEXBLENDENVIATIPROC glad_glVertexBlendEnviATI; +PFNGLVERTEXBLENDENVFATIPROC glad_glVertexBlendEnvfATI; +PFNGLUNIFORM1I64ARBPROC glad_glUniform1i64ARB; +PFNGLUNIFORM2I64ARBPROC glad_glUniform2i64ARB; +PFNGLUNIFORM3I64ARBPROC glad_glUniform3i64ARB; +PFNGLUNIFORM4I64ARBPROC glad_glUniform4i64ARB; +PFNGLUNIFORM1I64VARBPROC glad_glUniform1i64vARB; +PFNGLUNIFORM2I64VARBPROC glad_glUniform2i64vARB; +PFNGLUNIFORM3I64VARBPROC glad_glUniform3i64vARB; +PFNGLUNIFORM4I64VARBPROC glad_glUniform4i64vARB; +PFNGLUNIFORM1UI64ARBPROC glad_glUniform1ui64ARB; +PFNGLUNIFORM2UI64ARBPROC glad_glUniform2ui64ARB; +PFNGLUNIFORM3UI64ARBPROC glad_glUniform3ui64ARB; +PFNGLUNIFORM4UI64ARBPROC glad_glUniform4ui64ARB; +PFNGLUNIFORM1UI64VARBPROC glad_glUniform1ui64vARB; +PFNGLUNIFORM2UI64VARBPROC glad_glUniform2ui64vARB; +PFNGLUNIFORM3UI64VARBPROC glad_glUniform3ui64vARB; +PFNGLUNIFORM4UI64VARBPROC glad_glUniform4ui64vARB; +PFNGLGETUNIFORMI64VARBPROC glad_glGetUniformi64vARB; +PFNGLGETUNIFORMUI64VARBPROC glad_glGetUniformui64vARB; +PFNGLGETNUNIFORMI64VARBPROC glad_glGetnUniformi64vARB; +PFNGLGETNUNIFORMUI64VARBPROC glad_glGetnUniformui64vARB; +PFNGLPROGRAMUNIFORM1I64ARBPROC glad_glProgramUniform1i64ARB; +PFNGLPROGRAMUNIFORM2I64ARBPROC glad_glProgramUniform2i64ARB; +PFNGLPROGRAMUNIFORM3I64ARBPROC glad_glProgramUniform3i64ARB; +PFNGLPROGRAMUNIFORM4I64ARBPROC glad_glProgramUniform4i64ARB; +PFNGLPROGRAMUNIFORM1I64VARBPROC glad_glProgramUniform1i64vARB; +PFNGLPROGRAMUNIFORM2I64VARBPROC glad_glProgramUniform2i64vARB; +PFNGLPROGRAMUNIFORM3I64VARBPROC glad_glProgramUniform3i64vARB; +PFNGLPROGRAMUNIFORM4I64VARBPROC glad_glProgramUniform4i64vARB; +PFNGLPROGRAMUNIFORM1UI64ARBPROC glad_glProgramUniform1ui64ARB; +PFNGLPROGRAMUNIFORM2UI64ARBPROC glad_glProgramUniform2ui64ARB; +PFNGLPROGRAMUNIFORM3UI64ARBPROC glad_glProgramUniform3ui64ARB; +PFNGLPROGRAMUNIFORM4UI64ARBPROC glad_glProgramUniform4ui64ARB; +PFNGLPROGRAMUNIFORM1UI64VARBPROC glad_glProgramUniform1ui64vARB; +PFNGLPROGRAMUNIFORM2UI64VARBPROC glad_glProgramUniform2ui64vARB; +PFNGLPROGRAMUNIFORM3UI64VARBPROC glad_glProgramUniform3ui64vARB; +PFNGLPROGRAMUNIFORM4UI64VARBPROC glad_glProgramUniform4ui64vARB; +PFNGLVDPAUINITNVPROC glad_glVDPAUInitNV; +PFNGLVDPAUFININVPROC glad_glVDPAUFiniNV; +PFNGLVDPAUREGISTERVIDEOSURFACENVPROC glad_glVDPAURegisterVideoSurfaceNV; +PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC glad_glVDPAURegisterOutputSurfaceNV; +PFNGLVDPAUISSURFACENVPROC glad_glVDPAUIsSurfaceNV; +PFNGLVDPAUUNREGISTERSURFACENVPROC glad_glVDPAUUnregisterSurfaceNV; +PFNGLVDPAUGETSURFACEIVNVPROC glad_glVDPAUGetSurfaceivNV; +PFNGLVDPAUSURFACEACCESSNVPROC glad_glVDPAUSurfaceAccessNV; +PFNGLVDPAUMAPSURFACESNVPROC glad_glVDPAUMapSurfacesNV; +PFNGLVDPAUUNMAPSURFACESNVPROC glad_glVDPAUUnmapSurfacesNV; +PFNGLGETINTERNALFORMATI64VPROC glad_glGetInternalformati64v; +PFNGLCOLOR4UBVERTEX2FSUNPROC glad_glColor4ubVertex2fSUN; +PFNGLCOLOR4UBVERTEX2FVSUNPROC glad_glColor4ubVertex2fvSUN; +PFNGLCOLOR4UBVERTEX3FSUNPROC glad_glColor4ubVertex3fSUN; +PFNGLCOLOR4UBVERTEX3FVSUNPROC glad_glColor4ubVertex3fvSUN; +PFNGLCOLOR3FVERTEX3FSUNPROC glad_glColor3fVertex3fSUN; +PFNGLCOLOR3FVERTEX3FVSUNPROC glad_glColor3fVertex3fvSUN; +PFNGLNORMAL3FVERTEX3FSUNPROC glad_glNormal3fVertex3fSUN; +PFNGLNORMAL3FVERTEX3FVSUNPROC glad_glNormal3fVertex3fvSUN; +PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC glad_glColor4fNormal3fVertex3fSUN; +PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC glad_glColor4fNormal3fVertex3fvSUN; +PFNGLTEXCOORD2FVERTEX3FSUNPROC glad_glTexCoord2fVertex3fSUN; +PFNGLTEXCOORD2FVERTEX3FVSUNPROC glad_glTexCoord2fVertex3fvSUN; +PFNGLTEXCOORD4FVERTEX4FSUNPROC glad_glTexCoord4fVertex4fSUN; +PFNGLTEXCOORD4FVERTEX4FVSUNPROC glad_glTexCoord4fVertex4fvSUN; +PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC glad_glTexCoord2fColor4ubVertex3fSUN; +PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC glad_glTexCoord2fColor4ubVertex3fvSUN; +PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC glad_glTexCoord2fColor3fVertex3fSUN; +PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC glad_glTexCoord2fColor3fVertex3fvSUN; +PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC glad_glTexCoord2fNormal3fVertex3fSUN; +PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC glad_glTexCoord2fNormal3fVertex3fvSUN; +PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC glad_glTexCoord2fColor4fNormal3fVertex3fSUN; +PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC glad_glTexCoord2fColor4fNormal3fVertex3fvSUN; +PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC glad_glTexCoord4fColor4fNormal3fVertex4fSUN; +PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC glad_glTexCoord4fColor4fNormal3fVertex4fvSUN; +PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC glad_glReplacementCodeuiVertex3fSUN; +PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC glad_glReplacementCodeuiVertex3fvSUN; +PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC glad_glReplacementCodeuiColor4ubVertex3fSUN; +PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC glad_glReplacementCodeuiColor4ubVertex3fvSUN; +PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC glad_glReplacementCodeuiColor3fVertex3fSUN; +PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC glad_glReplacementCodeuiColor3fVertex3fvSUN; +PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC glad_glReplacementCodeuiNormal3fVertex3fSUN; +PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC glad_glReplacementCodeuiNormal3fVertex3fvSUN; +PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC glad_glReplacementCodeuiColor4fNormal3fVertex3fSUN; +PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC glad_glReplacementCodeuiColor4fNormal3fVertex3fvSUN; +PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC glad_glReplacementCodeuiTexCoord2fVertex3fSUN; +PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC glad_glReplacementCodeuiTexCoord2fVertex3fvSUN; +PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC glad_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN; +PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC glad_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN; +PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC glad_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN; +PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC glad_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN; +PFNGLIGLOOINTERFACESGIXPROC glad_glIglooInterfaceSGIX; +PFNGLDRAWARRAYSINDIRECTPROC glad_glDrawArraysIndirect; +PFNGLDRAWELEMENTSINDIRECTPROC glad_glDrawElementsIndirect; +PFNGLVERTEXATTRIBI1IEXTPROC glad_glVertexAttribI1iEXT; +PFNGLVERTEXATTRIBI2IEXTPROC glad_glVertexAttribI2iEXT; +PFNGLVERTEXATTRIBI3IEXTPROC glad_glVertexAttribI3iEXT; +PFNGLVERTEXATTRIBI4IEXTPROC glad_glVertexAttribI4iEXT; +PFNGLVERTEXATTRIBI1UIEXTPROC glad_glVertexAttribI1uiEXT; +PFNGLVERTEXATTRIBI2UIEXTPROC glad_glVertexAttribI2uiEXT; +PFNGLVERTEXATTRIBI3UIEXTPROC glad_glVertexAttribI3uiEXT; +PFNGLVERTEXATTRIBI4UIEXTPROC glad_glVertexAttribI4uiEXT; +PFNGLVERTEXATTRIBI1IVEXTPROC glad_glVertexAttribI1ivEXT; +PFNGLVERTEXATTRIBI2IVEXTPROC glad_glVertexAttribI2ivEXT; +PFNGLVERTEXATTRIBI3IVEXTPROC glad_glVertexAttribI3ivEXT; +PFNGLVERTEXATTRIBI4IVEXTPROC glad_glVertexAttribI4ivEXT; +PFNGLVERTEXATTRIBI1UIVEXTPROC glad_glVertexAttribI1uivEXT; +PFNGLVERTEXATTRIBI2UIVEXTPROC glad_glVertexAttribI2uivEXT; +PFNGLVERTEXATTRIBI3UIVEXTPROC glad_glVertexAttribI3uivEXT; +PFNGLVERTEXATTRIBI4UIVEXTPROC glad_glVertexAttribI4uivEXT; +PFNGLVERTEXATTRIBI4BVEXTPROC glad_glVertexAttribI4bvEXT; +PFNGLVERTEXATTRIBI4SVEXTPROC glad_glVertexAttribI4svEXT; +PFNGLVERTEXATTRIBI4UBVEXTPROC glad_glVertexAttribI4ubvEXT; +PFNGLVERTEXATTRIBI4USVEXTPROC glad_glVertexAttribI4usvEXT; +PFNGLVERTEXATTRIBIPOINTEREXTPROC glad_glVertexAttribIPointerEXT; +PFNGLGETVERTEXATTRIBIIVEXTPROC glad_glGetVertexAttribIivEXT; +PFNGLGETVERTEXATTRIBIUIVEXTPROC glad_glGetVertexAttribIuivEXT; +PFNGLFOGFUNCSGISPROC glad_glFogFuncSGIS; +PFNGLGETFOGFUNCSGISPROC glad_glGetFogFuncSGIS; +PFNGLIMPORTSYNCEXTPROC glad_glImportSyncEXT; +PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC glad_glFramebufferSampleLocationsfvNV; +PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC glad_glNamedFramebufferSampleLocationsfvNV; +PFNGLRESOLVEDEPTHVALUESNVPROC glad_glResolveDepthValuesNV; +PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC glad_glDispatchComputeGroupSizeARB; +PFNGLALPHAFUNCXOESPROC glad_glAlphaFuncxOES; +PFNGLCLEARCOLORXOESPROC glad_glClearColorxOES; +PFNGLCLEARDEPTHXOESPROC glad_glClearDepthxOES; +PFNGLCLIPPLANEXOESPROC glad_glClipPlanexOES; +PFNGLCOLOR4XOESPROC glad_glColor4xOES; +PFNGLDEPTHRANGEXOESPROC glad_glDepthRangexOES; +PFNGLFOGXOESPROC glad_glFogxOES; +PFNGLFOGXVOESPROC glad_glFogxvOES; +PFNGLFRUSTUMXOESPROC glad_glFrustumxOES; +PFNGLGETCLIPPLANEXOESPROC glad_glGetClipPlanexOES; +PFNGLGETFIXEDVOESPROC glad_glGetFixedvOES; +PFNGLGETTEXENVXVOESPROC glad_glGetTexEnvxvOES; +PFNGLGETTEXPARAMETERXVOESPROC glad_glGetTexParameterxvOES; +PFNGLLIGHTMODELXOESPROC glad_glLightModelxOES; +PFNGLLIGHTMODELXVOESPROC glad_glLightModelxvOES; +PFNGLLIGHTXOESPROC glad_glLightxOES; +PFNGLLIGHTXVOESPROC glad_glLightxvOES; +PFNGLLINEWIDTHXOESPROC glad_glLineWidthxOES; +PFNGLLOADMATRIXXOESPROC glad_glLoadMatrixxOES; +PFNGLMATERIALXOESPROC glad_glMaterialxOES; +PFNGLMATERIALXVOESPROC glad_glMaterialxvOES; +PFNGLMULTMATRIXXOESPROC glad_glMultMatrixxOES; +PFNGLMULTITEXCOORD4XOESPROC glad_glMultiTexCoord4xOES; +PFNGLNORMAL3XOESPROC glad_glNormal3xOES; +PFNGLORTHOXOESPROC glad_glOrthoxOES; +PFNGLPOINTPARAMETERXVOESPROC glad_glPointParameterxvOES; +PFNGLPOINTSIZEXOESPROC glad_glPointSizexOES; +PFNGLPOLYGONOFFSETXOESPROC glad_glPolygonOffsetxOES; +PFNGLROTATEXOESPROC glad_glRotatexOES; +PFNGLSCALEXOESPROC glad_glScalexOES; +PFNGLTEXENVXOESPROC glad_glTexEnvxOES; +PFNGLTEXENVXVOESPROC glad_glTexEnvxvOES; +PFNGLTEXPARAMETERXOESPROC glad_glTexParameterxOES; +PFNGLTEXPARAMETERXVOESPROC glad_glTexParameterxvOES; +PFNGLTRANSLATEXOESPROC glad_glTranslatexOES; +PFNGLGETLIGHTXVOESPROC glad_glGetLightxvOES; +PFNGLGETMATERIALXVOESPROC glad_glGetMaterialxvOES; +PFNGLPOINTPARAMETERXOESPROC glad_glPointParameterxOES; +PFNGLSAMPLECOVERAGEXOESPROC glad_glSampleCoveragexOES; +PFNGLACCUMXOESPROC glad_glAccumxOES; +PFNGLBITMAPXOESPROC glad_glBitmapxOES; +PFNGLBLENDCOLORXOESPROC glad_glBlendColorxOES; +PFNGLCLEARACCUMXOESPROC glad_glClearAccumxOES; +PFNGLCOLOR3XOESPROC glad_glColor3xOES; +PFNGLCOLOR3XVOESPROC glad_glColor3xvOES; +PFNGLCOLOR4XVOESPROC glad_glColor4xvOES; +PFNGLCONVOLUTIONPARAMETERXOESPROC glad_glConvolutionParameterxOES; +PFNGLCONVOLUTIONPARAMETERXVOESPROC glad_glConvolutionParameterxvOES; +PFNGLEVALCOORD1XOESPROC glad_glEvalCoord1xOES; +PFNGLEVALCOORD1XVOESPROC glad_glEvalCoord1xvOES; +PFNGLEVALCOORD2XOESPROC glad_glEvalCoord2xOES; +PFNGLEVALCOORD2XVOESPROC glad_glEvalCoord2xvOES; +PFNGLFEEDBACKBUFFERXOESPROC glad_glFeedbackBufferxOES; +PFNGLGETCONVOLUTIONPARAMETERXVOESPROC glad_glGetConvolutionParameterxvOES; +PFNGLGETHISTOGRAMPARAMETERXVOESPROC glad_glGetHistogramParameterxvOES; +PFNGLGETLIGHTXOESPROC glad_glGetLightxOES; +PFNGLGETMAPXVOESPROC glad_glGetMapxvOES; +PFNGLGETMATERIALXOESPROC glad_glGetMaterialxOES; +PFNGLGETPIXELMAPXVPROC glad_glGetPixelMapxv; +PFNGLGETTEXGENXVOESPROC glad_glGetTexGenxvOES; +PFNGLGETTEXLEVELPARAMETERXVOESPROC glad_glGetTexLevelParameterxvOES; +PFNGLINDEXXOESPROC glad_glIndexxOES; +PFNGLINDEXXVOESPROC glad_glIndexxvOES; +PFNGLLOADTRANSPOSEMATRIXXOESPROC glad_glLoadTransposeMatrixxOES; +PFNGLMAP1XOESPROC glad_glMap1xOES; +PFNGLMAP2XOESPROC glad_glMap2xOES; +PFNGLMAPGRID1XOESPROC glad_glMapGrid1xOES; +PFNGLMAPGRID2XOESPROC glad_glMapGrid2xOES; +PFNGLMULTTRANSPOSEMATRIXXOESPROC glad_glMultTransposeMatrixxOES; +PFNGLMULTITEXCOORD1XOESPROC glad_glMultiTexCoord1xOES; +PFNGLMULTITEXCOORD1XVOESPROC glad_glMultiTexCoord1xvOES; +PFNGLMULTITEXCOORD2XOESPROC glad_glMultiTexCoord2xOES; +PFNGLMULTITEXCOORD2XVOESPROC glad_glMultiTexCoord2xvOES; +PFNGLMULTITEXCOORD3XOESPROC glad_glMultiTexCoord3xOES; +PFNGLMULTITEXCOORD3XVOESPROC glad_glMultiTexCoord3xvOES; +PFNGLMULTITEXCOORD4XVOESPROC glad_glMultiTexCoord4xvOES; +PFNGLNORMAL3XVOESPROC glad_glNormal3xvOES; +PFNGLPASSTHROUGHXOESPROC glad_glPassThroughxOES; +PFNGLPIXELMAPXPROC glad_glPixelMapx; +PFNGLPIXELSTOREXPROC glad_glPixelStorex; +PFNGLPIXELTRANSFERXOESPROC glad_glPixelTransferxOES; +PFNGLPIXELZOOMXOESPROC glad_glPixelZoomxOES; +PFNGLPRIORITIZETEXTURESXOESPROC glad_glPrioritizeTexturesxOES; +PFNGLRASTERPOS2XOESPROC glad_glRasterPos2xOES; +PFNGLRASTERPOS2XVOESPROC glad_glRasterPos2xvOES; +PFNGLRASTERPOS3XOESPROC glad_glRasterPos3xOES; +PFNGLRASTERPOS3XVOESPROC glad_glRasterPos3xvOES; +PFNGLRASTERPOS4XOESPROC glad_glRasterPos4xOES; +PFNGLRASTERPOS4XVOESPROC glad_glRasterPos4xvOES; +PFNGLRECTXOESPROC glad_glRectxOES; +PFNGLRECTXVOESPROC glad_glRectxvOES; +PFNGLTEXCOORD1XOESPROC glad_glTexCoord1xOES; +PFNGLTEXCOORD1XVOESPROC glad_glTexCoord1xvOES; +PFNGLTEXCOORD2XOESPROC glad_glTexCoord2xOES; +PFNGLTEXCOORD2XVOESPROC glad_glTexCoord2xvOES; +PFNGLTEXCOORD3XOESPROC glad_glTexCoord3xOES; +PFNGLTEXCOORD3XVOESPROC glad_glTexCoord3xvOES; +PFNGLTEXCOORD4XOESPROC glad_glTexCoord4xOES; +PFNGLTEXCOORD4XVOESPROC glad_glTexCoord4xvOES; +PFNGLTEXGENXOESPROC glad_glTexGenxOES; +PFNGLTEXGENXVOESPROC glad_glTexGenxvOES; +PFNGLVERTEX2XOESPROC glad_glVertex2xOES; +PFNGLVERTEX2XVOESPROC glad_glVertex2xvOES; +PFNGLVERTEX3XOESPROC glad_glVertex3xOES; +PFNGLVERTEX3XVOESPROC glad_glVertex3xvOES; +PFNGLVERTEX4XOESPROC glad_glVertex4xOES; +PFNGLVERTEX4XVOESPROC glad_glVertex4xvOES; +PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC glad_glRenderbufferStorageMultisampleEXT; +PFNGLTEXIMAGE4DSGISPROC glad_glTexImage4DSGIS; +PFNGLTEXSUBIMAGE4DSGISPROC glad_glTexSubImage4DSGIS; +PFNGLTEXIMAGE3DEXTPROC glad_glTexImage3DEXT; +PFNGLTEXSUBIMAGE3DEXTPROC glad_glTexSubImage3DEXT; +PFNGLSAMPLEMASKEXTPROC glad_glSampleMaskEXT; +PFNGLSAMPLEPATTERNEXTPROC glad_glSamplePatternEXT; +PFNGLSECONDARYCOLOR3BEXTPROC glad_glSecondaryColor3bEXT; +PFNGLSECONDARYCOLOR3BVEXTPROC glad_glSecondaryColor3bvEXT; +PFNGLSECONDARYCOLOR3DEXTPROC glad_glSecondaryColor3dEXT; +PFNGLSECONDARYCOLOR3DVEXTPROC glad_glSecondaryColor3dvEXT; +PFNGLSECONDARYCOLOR3FEXTPROC glad_glSecondaryColor3fEXT; +PFNGLSECONDARYCOLOR3FVEXTPROC glad_glSecondaryColor3fvEXT; +PFNGLSECONDARYCOLOR3IEXTPROC glad_glSecondaryColor3iEXT; +PFNGLSECONDARYCOLOR3IVEXTPROC glad_glSecondaryColor3ivEXT; +PFNGLSECONDARYCOLOR3SEXTPROC glad_glSecondaryColor3sEXT; +PFNGLSECONDARYCOLOR3SVEXTPROC glad_glSecondaryColor3svEXT; +PFNGLSECONDARYCOLOR3UBEXTPROC glad_glSecondaryColor3ubEXT; +PFNGLSECONDARYCOLOR3UBVEXTPROC glad_glSecondaryColor3ubvEXT; +PFNGLSECONDARYCOLOR3UIEXTPROC glad_glSecondaryColor3uiEXT; +PFNGLSECONDARYCOLOR3UIVEXTPROC glad_glSecondaryColor3uivEXT; +PFNGLSECONDARYCOLOR3USEXTPROC glad_glSecondaryColor3usEXT; +PFNGLSECONDARYCOLOR3USVEXTPROC glad_glSecondaryColor3usvEXT; +PFNGLSECONDARYCOLORPOINTEREXTPROC glad_glSecondaryColorPointerEXT; +PFNGLNEWOBJECTBUFFERATIPROC glad_glNewObjectBufferATI; +PFNGLISOBJECTBUFFERATIPROC glad_glIsObjectBufferATI; +PFNGLUPDATEOBJECTBUFFERATIPROC glad_glUpdateObjectBufferATI; +PFNGLGETOBJECTBUFFERFVATIPROC glad_glGetObjectBufferfvATI; +PFNGLGETOBJECTBUFFERIVATIPROC glad_glGetObjectBufferivATI; +PFNGLFREEOBJECTBUFFERATIPROC glad_glFreeObjectBufferATI; +PFNGLARRAYOBJECTATIPROC glad_glArrayObjectATI; +PFNGLGETARRAYOBJECTFVATIPROC glad_glGetArrayObjectfvATI; +PFNGLGETARRAYOBJECTIVATIPROC glad_glGetArrayObjectivATI; +PFNGLVARIANTARRAYOBJECTATIPROC glad_glVariantArrayObjectATI; +PFNGLGETVARIANTARRAYOBJECTFVATIPROC glad_glGetVariantArrayObjectfvATI; +PFNGLGETVARIANTARRAYOBJECTIVATIPROC glad_glGetVariantArrayObjectivATI; +PFNGLMAXSHADERCOMPILERTHREADSARBPROC glad_glMaxShaderCompilerThreadsARB; +PFNGLTEXPAGECOMMITMENTARBPROC glad_glTexPageCommitmentARB; +PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC glad_glFramebufferSampleLocationsfvARB; +PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC glad_glNamedFramebufferSampleLocationsfvARB; +PFNGLEVALUATEDEPTHVALUESARBPROC glad_glEvaluateDepthValuesARB; +PFNGLBUFFERPAGECOMMITMENTARBPROC glad_glBufferPageCommitmentARB; +PFNGLNAMEDBUFFERPAGECOMMITMENTEXTPROC glad_glNamedBufferPageCommitmentEXT; +PFNGLNAMEDBUFFERPAGECOMMITMENTARBPROC glad_glNamedBufferPageCommitmentARB; +PFNGLDRAWRANGEELEMENTSEXTPROC glad_glDrawRangeElementsEXT; +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_APPLE_element_array(GLADloadproc load) { + if(!GLAD_GL_APPLE_element_array) return; + glad_glElementPointerAPPLE = (PFNGLELEMENTPOINTERAPPLEPROC)load("glElementPointerAPPLE"); + glad_glDrawElementArrayAPPLE = (PFNGLDRAWELEMENTARRAYAPPLEPROC)load("glDrawElementArrayAPPLE"); + glad_glDrawRangeElementArrayAPPLE = (PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC)load("glDrawRangeElementArrayAPPLE"); + glad_glMultiDrawElementArrayAPPLE = (PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC)load("glMultiDrawElementArrayAPPLE"); + glad_glMultiDrawRangeElementArrayAPPLE = (PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC)load("glMultiDrawRangeElementArrayAPPLE"); +} +static void load_GL_AMD_multi_draw_indirect(GLADloadproc load) { + if(!GLAD_GL_AMD_multi_draw_indirect) return; + glad_glMultiDrawArraysIndirectAMD = (PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC)load("glMultiDrawArraysIndirectAMD"); + glad_glMultiDrawElementsIndirectAMD = (PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC)load("glMultiDrawElementsIndirectAMD"); +} +static void load_GL_SGIX_tag_sample_buffer(GLADloadproc load) { + if(!GLAD_GL_SGIX_tag_sample_buffer) return; + glad_glTagSampleBufferSGIX = (PFNGLTAGSAMPLEBUFFERSGIXPROC)load("glTagSampleBufferSGIX"); +} +static void load_GL_NV_point_sprite(GLADloadproc load) { + if(!GLAD_GL_NV_point_sprite) return; + glad_glPointParameteriNV = (PFNGLPOINTPARAMETERINVPROC)load("glPointParameteriNV"); + glad_glPointParameterivNV = (PFNGLPOINTPARAMETERIVNVPROC)load("glPointParameterivNV"); +} +static void load_GL_ATI_separate_stencil(GLADloadproc load) { + if(!GLAD_GL_ATI_separate_stencil) return; + glad_glStencilOpSeparateATI = (PFNGLSTENCILOPSEPARATEATIPROC)load("glStencilOpSeparateATI"); + glad_glStencilFuncSeparateATI = (PFNGLSTENCILFUNCSEPARATEATIPROC)load("glStencilFuncSeparateATI"); +} +static void load_GL_EXT_texture_buffer_object(GLADloadproc load) { + if(!GLAD_GL_EXT_texture_buffer_object) return; + glad_glTexBufferEXT = (PFNGLTEXBUFFEREXTPROC)load("glTexBufferEXT"); +} +static void load_GL_ARB_vertex_blend(GLADloadproc load) { + if(!GLAD_GL_ARB_vertex_blend) return; + glad_glWeightbvARB = (PFNGLWEIGHTBVARBPROC)load("glWeightbvARB"); + glad_glWeightsvARB = (PFNGLWEIGHTSVARBPROC)load("glWeightsvARB"); + glad_glWeightivARB = (PFNGLWEIGHTIVARBPROC)load("glWeightivARB"); + glad_glWeightfvARB = (PFNGLWEIGHTFVARBPROC)load("glWeightfvARB"); + glad_glWeightdvARB = (PFNGLWEIGHTDVARBPROC)load("glWeightdvARB"); + glad_glWeightubvARB = (PFNGLWEIGHTUBVARBPROC)load("glWeightubvARB"); + glad_glWeightusvARB = (PFNGLWEIGHTUSVARBPROC)load("glWeightusvARB"); + glad_glWeightuivARB = (PFNGLWEIGHTUIVARBPROC)load("glWeightuivARB"); + glad_glWeightPointerARB = (PFNGLWEIGHTPOINTERARBPROC)load("glWeightPointerARB"); + glad_glVertexBlendARB = (PFNGLVERTEXBLENDARBPROC)load("glVertexBlendARB"); +} +static void load_GL_OVR_multiview(GLADloadproc load) { + if(!GLAD_GL_OVR_multiview) return; + glad_glFramebufferTextureMultiviewOVR = (PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC)load("glFramebufferTextureMultiviewOVR"); +} +static void load_GL_ARB_program_interface_query(GLADloadproc load) { + if(!GLAD_GL_ARB_program_interface_query) return; + glad_glGetProgramInterfaceiv = (PFNGLGETPROGRAMINTERFACEIVPROC)load("glGetProgramInterfaceiv"); + glad_glGetProgramResourceIndex = (PFNGLGETPROGRAMRESOURCEINDEXPROC)load("glGetProgramResourceIndex"); + glad_glGetProgramResourceName = (PFNGLGETPROGRAMRESOURCENAMEPROC)load("glGetProgramResourceName"); + glad_glGetProgramResourceiv = (PFNGLGETPROGRAMRESOURCEIVPROC)load("glGetProgramResourceiv"); + glad_glGetProgramResourceLocation = (PFNGLGETPROGRAMRESOURCELOCATIONPROC)load("glGetProgramResourceLocation"); + glad_glGetProgramResourceLocationIndex = (PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC)load("glGetProgramResourceLocationIndex"); +} +static void load_GL_EXT_index_func(GLADloadproc load) { + if(!GLAD_GL_EXT_index_func) return; + glad_glIndexFuncEXT = (PFNGLINDEXFUNCEXTPROC)load("glIndexFuncEXT"); +} +static void load_GL_NV_shader_buffer_load(GLADloadproc load) { + if(!GLAD_GL_NV_shader_buffer_load) return; + glad_glMakeBufferResidentNV = (PFNGLMAKEBUFFERRESIDENTNVPROC)load("glMakeBufferResidentNV"); + glad_glMakeBufferNonResidentNV = (PFNGLMAKEBUFFERNONRESIDENTNVPROC)load("glMakeBufferNonResidentNV"); + glad_glIsBufferResidentNV = (PFNGLISBUFFERRESIDENTNVPROC)load("glIsBufferResidentNV"); + glad_glMakeNamedBufferResidentNV = (PFNGLMAKENAMEDBUFFERRESIDENTNVPROC)load("glMakeNamedBufferResidentNV"); + glad_glMakeNamedBufferNonResidentNV = (PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC)load("glMakeNamedBufferNonResidentNV"); + glad_glIsNamedBufferResidentNV = (PFNGLISNAMEDBUFFERRESIDENTNVPROC)load("glIsNamedBufferResidentNV"); + glad_glGetBufferParameterui64vNV = (PFNGLGETBUFFERPARAMETERUI64VNVPROC)load("glGetBufferParameterui64vNV"); + glad_glGetNamedBufferParameterui64vNV = (PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC)load("glGetNamedBufferParameterui64vNV"); + glad_glGetIntegerui64vNV = (PFNGLGETINTEGERUI64VNVPROC)load("glGetIntegerui64vNV"); + glad_glUniformui64NV = (PFNGLUNIFORMUI64NVPROC)load("glUniformui64NV"); + glad_glUniformui64vNV = (PFNGLUNIFORMUI64VNVPROC)load("glUniformui64vNV"); + glad_glGetUniformui64vNV = (PFNGLGETUNIFORMUI64VNVPROC)load("glGetUniformui64vNV"); + glad_glProgramUniformui64NV = (PFNGLPROGRAMUNIFORMUI64NVPROC)load("glProgramUniformui64NV"); + glad_glProgramUniformui64vNV = (PFNGLPROGRAMUNIFORMUI64VNVPROC)load("glProgramUniformui64vNV"); +} +static void load_GL_EXT_color_subtable(GLADloadproc load) { + if(!GLAD_GL_EXT_color_subtable) return; + glad_glColorSubTableEXT = (PFNGLCOLORSUBTABLEEXTPROC)load("glColorSubTableEXT"); + glad_glCopyColorSubTableEXT = (PFNGLCOPYCOLORSUBTABLEEXTPROC)load("glCopyColorSubTableEXT"); +} +static void load_GL_SUNX_constant_data(GLADloadproc load) { + if(!GLAD_GL_SUNX_constant_data) return; + glad_glFinishTextureSUNX = (PFNGLFINISHTEXTURESUNXPROC)load("glFinishTextureSUNX"); +} +static void load_GL_EXT_multi_draw_arrays(GLADloadproc load) { + if(!GLAD_GL_EXT_multi_draw_arrays) return; + glad_glMultiDrawArraysEXT = (PFNGLMULTIDRAWARRAYSEXTPROC)load("glMultiDrawArraysEXT"); + glad_glMultiDrawElementsEXT = (PFNGLMULTIDRAWELEMENTSEXTPROC)load("glMultiDrawElementsEXT"); +} +static void load_GL_ARB_shader_atomic_counters(GLADloadproc load) { + if(!GLAD_GL_ARB_shader_atomic_counters) return; + glad_glGetActiveAtomicCounterBufferiv = (PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC)load("glGetActiveAtomicCounterBufferiv"); +} +static void load_GL_NV_conditional_render(GLADloadproc load) { + if(!GLAD_GL_NV_conditional_render) return; + glad_glBeginConditionalRenderNV = (PFNGLBEGINCONDITIONALRENDERNVPROC)load("glBeginConditionalRenderNV"); + glad_glEndConditionalRenderNV = (PFNGLENDCONDITIONALRENDERNVPROC)load("glEndConditionalRenderNV"); +} +static void load_GL_MESA_resize_buffers(GLADloadproc load) { + if(!GLAD_GL_MESA_resize_buffers) return; + glad_glResizeBuffersMESA = (PFNGLRESIZEBUFFERSMESAPROC)load("glResizeBuffersMESA"); +} +static void load_GL_ARB_texture_view(GLADloadproc load) { + if(!GLAD_GL_ARB_texture_view) return; + glad_glTextureView = (PFNGLTEXTUREVIEWPROC)load("glTextureView"); +} +static void load_GL_ARB_map_buffer_range(GLADloadproc load) { + if(!GLAD_GL_ARB_map_buffer_range) return; + glad_glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC)load("glMapBufferRange"); + glad_glFlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC)load("glFlushMappedBufferRange"); +} +static void load_GL_EXT_convolution(GLADloadproc load) { + if(!GLAD_GL_EXT_convolution) return; + glad_glConvolutionFilter1DEXT = (PFNGLCONVOLUTIONFILTER1DEXTPROC)load("glConvolutionFilter1DEXT"); + glad_glConvolutionFilter2DEXT = (PFNGLCONVOLUTIONFILTER2DEXTPROC)load("glConvolutionFilter2DEXT"); + glad_glConvolutionParameterfEXT = (PFNGLCONVOLUTIONPARAMETERFEXTPROC)load("glConvolutionParameterfEXT"); + glad_glConvolutionParameterfvEXT = (PFNGLCONVOLUTIONPARAMETERFVEXTPROC)load("glConvolutionParameterfvEXT"); + glad_glConvolutionParameteriEXT = (PFNGLCONVOLUTIONPARAMETERIEXTPROC)load("glConvolutionParameteriEXT"); + glad_glConvolutionParameterivEXT = (PFNGLCONVOLUTIONPARAMETERIVEXTPROC)load("glConvolutionParameterivEXT"); + glad_glCopyConvolutionFilter1DEXT = (PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC)load("glCopyConvolutionFilter1DEXT"); + glad_glCopyConvolutionFilter2DEXT = (PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC)load("glCopyConvolutionFilter2DEXT"); + glad_glGetConvolutionFilterEXT = (PFNGLGETCONVOLUTIONFILTEREXTPROC)load("glGetConvolutionFilterEXT"); + glad_glGetConvolutionParameterfvEXT = (PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC)load("glGetConvolutionParameterfvEXT"); + glad_glGetConvolutionParameterivEXT = (PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC)load("glGetConvolutionParameterivEXT"); + glad_glGetSeparableFilterEXT = (PFNGLGETSEPARABLEFILTEREXTPROC)load("glGetSeparableFilterEXT"); + glad_glSeparableFilter2DEXT = (PFNGLSEPARABLEFILTER2DEXTPROC)load("glSeparableFilter2DEXT"); +} +static void load_GL_NV_vertex_attrib_integer_64bit(GLADloadproc load) { + if(!GLAD_GL_NV_vertex_attrib_integer_64bit) return; + glad_glVertexAttribL1i64NV = (PFNGLVERTEXATTRIBL1I64NVPROC)load("glVertexAttribL1i64NV"); + glad_glVertexAttribL2i64NV = (PFNGLVERTEXATTRIBL2I64NVPROC)load("glVertexAttribL2i64NV"); + glad_glVertexAttribL3i64NV = (PFNGLVERTEXATTRIBL3I64NVPROC)load("glVertexAttribL3i64NV"); + glad_glVertexAttribL4i64NV = (PFNGLVERTEXATTRIBL4I64NVPROC)load("glVertexAttribL4i64NV"); + glad_glVertexAttribL1i64vNV = (PFNGLVERTEXATTRIBL1I64VNVPROC)load("glVertexAttribL1i64vNV"); + glad_glVertexAttribL2i64vNV = (PFNGLVERTEXATTRIBL2I64VNVPROC)load("glVertexAttribL2i64vNV"); + glad_glVertexAttribL3i64vNV = (PFNGLVERTEXATTRIBL3I64VNVPROC)load("glVertexAttribL3i64vNV"); + glad_glVertexAttribL4i64vNV = (PFNGLVERTEXATTRIBL4I64VNVPROC)load("glVertexAttribL4i64vNV"); + glad_glVertexAttribL1ui64NV = (PFNGLVERTEXATTRIBL1UI64NVPROC)load("glVertexAttribL1ui64NV"); + glad_glVertexAttribL2ui64NV = (PFNGLVERTEXATTRIBL2UI64NVPROC)load("glVertexAttribL2ui64NV"); + glad_glVertexAttribL3ui64NV = (PFNGLVERTEXATTRIBL3UI64NVPROC)load("glVertexAttribL3ui64NV"); + glad_glVertexAttribL4ui64NV = (PFNGLVERTEXATTRIBL4UI64NVPROC)load("glVertexAttribL4ui64NV"); + glad_glVertexAttribL1ui64vNV = (PFNGLVERTEXATTRIBL1UI64VNVPROC)load("glVertexAttribL1ui64vNV"); + glad_glVertexAttribL2ui64vNV = (PFNGLVERTEXATTRIBL2UI64VNVPROC)load("glVertexAttribL2ui64vNV"); + glad_glVertexAttribL3ui64vNV = (PFNGLVERTEXATTRIBL3UI64VNVPROC)load("glVertexAttribL3ui64vNV"); + glad_glVertexAttribL4ui64vNV = (PFNGLVERTEXATTRIBL4UI64VNVPROC)load("glVertexAttribL4ui64vNV"); + glad_glGetVertexAttribLi64vNV = (PFNGLGETVERTEXATTRIBLI64VNVPROC)load("glGetVertexAttribLi64vNV"); + glad_glGetVertexAttribLui64vNV = (PFNGLGETVERTEXATTRIBLUI64VNVPROC)load("glGetVertexAttribLui64vNV"); + glad_glVertexAttribLFormatNV = (PFNGLVERTEXATTRIBLFORMATNVPROC)load("glVertexAttribLFormatNV"); +} +static void load_GL_EXT_paletted_texture(GLADloadproc load) { + if(!GLAD_GL_EXT_paletted_texture) return; + glad_glColorTableEXT = (PFNGLCOLORTABLEEXTPROC)load("glColorTableEXT"); + glad_glGetColorTableEXT = (PFNGLGETCOLORTABLEEXTPROC)load("glGetColorTableEXT"); + glad_glGetColorTableParameterivEXT = (PFNGLGETCOLORTABLEPARAMETERIVEXTPROC)load("glGetColorTableParameterivEXT"); + glad_glGetColorTableParameterfvEXT = (PFNGLGETCOLORTABLEPARAMETERFVEXTPROC)load("glGetColorTableParameterfvEXT"); +} +static void load_GL_ARB_texture_buffer_object(GLADloadproc load) { + if(!GLAD_GL_ARB_texture_buffer_object) return; + glad_glTexBufferARB = (PFNGLTEXBUFFERARBPROC)load("glTexBufferARB"); +} +static void load_GL_ATI_pn_triangles(GLADloadproc load) { + if(!GLAD_GL_ATI_pn_triangles) return; + glad_glPNTrianglesiATI = (PFNGLPNTRIANGLESIATIPROC)load("glPNTrianglesiATI"); + glad_glPNTrianglesfATI = (PFNGLPNTRIANGLESFATIPROC)load("glPNTrianglesfATI"); +} +static void load_GL_SGIX_flush_raster(GLADloadproc load) { + if(!GLAD_GL_SGIX_flush_raster) return; + glad_glFlushRasterSGIX = (PFNGLFLUSHRASTERSGIXPROC)load("glFlushRasterSGIX"); +} +static void load_GL_EXT_light_texture(GLADloadproc load) { + if(!GLAD_GL_EXT_light_texture) return; + glad_glApplyTextureEXT = (PFNGLAPPLYTEXTUREEXTPROC)load("glApplyTextureEXT"); + glad_glTextureLightEXT = (PFNGLTEXTURELIGHTEXTPROC)load("glTextureLightEXT"); + glad_glTextureMaterialEXT = (PFNGLTEXTUREMATERIALEXTPROC)load("glTextureMaterialEXT"); +} +static void load_GL_HP_image_transform(GLADloadproc load) { + if(!GLAD_GL_HP_image_transform) return; + glad_glImageTransformParameteriHP = (PFNGLIMAGETRANSFORMPARAMETERIHPPROC)load("glImageTransformParameteriHP"); + glad_glImageTransformParameterfHP = (PFNGLIMAGETRANSFORMPARAMETERFHPPROC)load("glImageTransformParameterfHP"); + glad_glImageTransformParameterivHP = (PFNGLIMAGETRANSFORMPARAMETERIVHPPROC)load("glImageTransformParameterivHP"); + glad_glImageTransformParameterfvHP = (PFNGLIMAGETRANSFORMPARAMETERFVHPPROC)load("glImageTransformParameterfvHP"); + glad_glGetImageTransformParameterivHP = (PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC)load("glGetImageTransformParameterivHP"); + glad_glGetImageTransformParameterfvHP = (PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC)load("glGetImageTransformParameterfvHP"); +} +static void load_GL_AMD_draw_buffers_blend(GLADloadproc load) { + if(!GLAD_GL_AMD_draw_buffers_blend) return; + glad_glBlendFuncIndexedAMD = (PFNGLBLENDFUNCINDEXEDAMDPROC)load("glBlendFuncIndexedAMD"); + glad_glBlendFuncSeparateIndexedAMD = (PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC)load("glBlendFuncSeparateIndexedAMD"); + glad_glBlendEquationIndexedAMD = (PFNGLBLENDEQUATIONINDEXEDAMDPROC)load("glBlendEquationIndexedAMD"); + glad_glBlendEquationSeparateIndexedAMD = (PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC)load("glBlendEquationSeparateIndexedAMD"); +} +static void load_GL_APPLE_texture_range(GLADloadproc load) { + if(!GLAD_GL_APPLE_texture_range) return; + glad_glTextureRangeAPPLE = (PFNGLTEXTURERANGEAPPLEPROC)load("glTextureRangeAPPLE"); + glad_glGetTexParameterPointervAPPLE = (PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC)load("glGetTexParameterPointervAPPLE"); +} +static void load_GL_EXT_texture_array(GLADloadproc load) { + if(!GLAD_GL_EXT_texture_array) return; + glad_glFramebufferTextureLayerEXT = (PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC)load("glFramebufferTextureLayerEXT"); +} +static void load_GL_NV_texture_barrier(GLADloadproc load) { + if(!GLAD_GL_NV_texture_barrier) return; + glad_glTextureBarrierNV = (PFNGLTEXTUREBARRIERNVPROC)load("glTextureBarrierNV"); +} +static void load_GL_ARB_vertex_type_2_10_10_10_rev(GLADloadproc load) { + if(!GLAD_GL_ARB_vertex_type_2_10_10_10_rev) return; + 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_3DFX_tbuffer(GLADloadproc load) { + if(!GLAD_GL_3DFX_tbuffer) return; + glad_glTbufferMask3DFX = (PFNGLTBUFFERMASK3DFXPROC)load("glTbufferMask3DFX"); +} +static void load_GL_GREMEDY_frame_terminator(GLADloadproc load) { + if(!GLAD_GL_GREMEDY_frame_terminator) return; + glad_glFrameTerminatorGREMEDY = (PFNGLFRAMETERMINATORGREMEDYPROC)load("glFrameTerminatorGREMEDY"); +} +static void load_GL_ARB_blend_func_extended(GLADloadproc load) { + if(!GLAD_GL_ARB_blend_func_extended) return; + glad_glBindFragDataLocationIndexed = (PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)load("glBindFragDataLocationIndexed"); + glad_glGetFragDataIndex = (PFNGLGETFRAGDATAINDEXPROC)load("glGetFragDataIndex"); +} +static void load_GL_EXT_separate_shader_objects(GLADloadproc load) { + if(!GLAD_GL_EXT_separate_shader_objects) return; + glad_glUseShaderProgramEXT = (PFNGLUSESHADERPROGRAMEXTPROC)load("glUseShaderProgramEXT"); + glad_glActiveProgramEXT = (PFNGLACTIVEPROGRAMEXTPROC)load("glActiveProgramEXT"); + glad_glCreateShaderProgramEXT = (PFNGLCREATESHADERPROGRAMEXTPROC)load("glCreateShaderProgramEXT"); + glad_glActiveShaderProgramEXT = (PFNGLACTIVESHADERPROGRAMEXTPROC)load("glActiveShaderProgramEXT"); + glad_glBindProgramPipelineEXT = (PFNGLBINDPROGRAMPIPELINEEXTPROC)load("glBindProgramPipelineEXT"); + glad_glCreateShaderProgramvEXT = (PFNGLCREATESHADERPROGRAMVEXTPROC)load("glCreateShaderProgramvEXT"); + glad_glDeleteProgramPipelinesEXT = (PFNGLDELETEPROGRAMPIPELINESEXTPROC)load("glDeleteProgramPipelinesEXT"); + glad_glGenProgramPipelinesEXT = (PFNGLGENPROGRAMPIPELINESEXTPROC)load("glGenProgramPipelinesEXT"); + glad_glGetProgramPipelineInfoLogEXT = (PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC)load("glGetProgramPipelineInfoLogEXT"); + glad_glGetProgramPipelineivEXT = (PFNGLGETPROGRAMPIPELINEIVEXTPROC)load("glGetProgramPipelineivEXT"); + glad_glIsProgramPipelineEXT = (PFNGLISPROGRAMPIPELINEEXTPROC)load("glIsProgramPipelineEXT"); + glad_glProgramParameteriEXT = (PFNGLPROGRAMPARAMETERIEXTPROC)load("glProgramParameteriEXT"); + glad_glProgramUniform1fEXT = (PFNGLPROGRAMUNIFORM1FEXTPROC)load("glProgramUniform1fEXT"); + glad_glProgramUniform1fvEXT = (PFNGLPROGRAMUNIFORM1FVEXTPROC)load("glProgramUniform1fvEXT"); + glad_glProgramUniform1iEXT = (PFNGLPROGRAMUNIFORM1IEXTPROC)load("glProgramUniform1iEXT"); + glad_glProgramUniform1ivEXT = (PFNGLPROGRAMUNIFORM1IVEXTPROC)load("glProgramUniform1ivEXT"); + glad_glProgramUniform2fEXT = (PFNGLPROGRAMUNIFORM2FEXTPROC)load("glProgramUniform2fEXT"); + glad_glProgramUniform2fvEXT = (PFNGLPROGRAMUNIFORM2FVEXTPROC)load("glProgramUniform2fvEXT"); + glad_glProgramUniform2iEXT = (PFNGLPROGRAMUNIFORM2IEXTPROC)load("glProgramUniform2iEXT"); + glad_glProgramUniform2ivEXT = (PFNGLPROGRAMUNIFORM2IVEXTPROC)load("glProgramUniform2ivEXT"); + glad_glProgramUniform3fEXT = (PFNGLPROGRAMUNIFORM3FEXTPROC)load("glProgramUniform3fEXT"); + glad_glProgramUniform3fvEXT = (PFNGLPROGRAMUNIFORM3FVEXTPROC)load("glProgramUniform3fvEXT"); + glad_glProgramUniform3iEXT = (PFNGLPROGRAMUNIFORM3IEXTPROC)load("glProgramUniform3iEXT"); + glad_glProgramUniform3ivEXT = (PFNGLPROGRAMUNIFORM3IVEXTPROC)load("glProgramUniform3ivEXT"); + glad_glProgramUniform4fEXT = (PFNGLPROGRAMUNIFORM4FEXTPROC)load("glProgramUniform4fEXT"); + glad_glProgramUniform4fvEXT = (PFNGLPROGRAMUNIFORM4FVEXTPROC)load("glProgramUniform4fvEXT"); + glad_glProgramUniform4iEXT = (PFNGLPROGRAMUNIFORM4IEXTPROC)load("glProgramUniform4iEXT"); + glad_glProgramUniform4ivEXT = (PFNGLPROGRAMUNIFORM4IVEXTPROC)load("glProgramUniform4ivEXT"); + glad_glProgramUniformMatrix2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC)load("glProgramUniformMatrix2fvEXT"); + glad_glProgramUniformMatrix3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC)load("glProgramUniformMatrix3fvEXT"); + glad_glProgramUniformMatrix4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC)load("glProgramUniformMatrix4fvEXT"); + glad_glUseProgramStagesEXT = (PFNGLUSEPROGRAMSTAGESEXTPROC)load("glUseProgramStagesEXT"); + glad_glValidateProgramPipelineEXT = (PFNGLVALIDATEPROGRAMPIPELINEEXTPROC)load("glValidateProgramPipelineEXT"); + glad_glProgramUniform1uiEXT = (PFNGLPROGRAMUNIFORM1UIEXTPROC)load("glProgramUniform1uiEXT"); + glad_glProgramUniform2uiEXT = (PFNGLPROGRAMUNIFORM2UIEXTPROC)load("glProgramUniform2uiEXT"); + glad_glProgramUniform3uiEXT = (PFNGLPROGRAMUNIFORM3UIEXTPROC)load("glProgramUniform3uiEXT"); + glad_glProgramUniform4uiEXT = (PFNGLPROGRAMUNIFORM4UIEXTPROC)load("glProgramUniform4uiEXT"); + glad_glProgramUniform1uivEXT = (PFNGLPROGRAMUNIFORM1UIVEXTPROC)load("glProgramUniform1uivEXT"); + glad_glProgramUniform2uivEXT = (PFNGLPROGRAMUNIFORM2UIVEXTPROC)load("glProgramUniform2uivEXT"); + glad_glProgramUniform3uivEXT = (PFNGLPROGRAMUNIFORM3UIVEXTPROC)load("glProgramUniform3uivEXT"); + glad_glProgramUniform4uivEXT = (PFNGLPROGRAMUNIFORM4UIVEXTPROC)load("glProgramUniform4uivEXT"); + glad_glProgramUniformMatrix4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC)load("glProgramUniformMatrix4fvEXT"); + glad_glProgramUniformMatrix2x3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC)load("glProgramUniformMatrix2x3fvEXT"); + glad_glProgramUniformMatrix3x2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC)load("glProgramUniformMatrix3x2fvEXT"); + glad_glProgramUniformMatrix2x4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC)load("glProgramUniformMatrix2x4fvEXT"); + glad_glProgramUniformMatrix4x2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC)load("glProgramUniformMatrix4x2fvEXT"); + glad_glProgramUniformMatrix3x4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC)load("glProgramUniformMatrix3x4fvEXT"); + glad_glProgramUniformMatrix4x3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC)load("glProgramUniformMatrix4x3fvEXT"); +} +static void load_GL_NV_texture_multisample(GLADloadproc load) { + if(!GLAD_GL_NV_texture_multisample) return; + glad_glTexImage2DMultisampleCoverageNV = (PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC)load("glTexImage2DMultisampleCoverageNV"); + glad_glTexImage3DMultisampleCoverageNV = (PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC)load("glTexImage3DMultisampleCoverageNV"); + glad_glTextureImage2DMultisampleNV = (PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC)load("glTextureImage2DMultisampleNV"); + glad_glTextureImage3DMultisampleNV = (PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC)load("glTextureImage3DMultisampleNV"); + glad_glTextureImage2DMultisampleCoverageNV = (PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC)load("glTextureImage2DMultisampleCoverageNV"); + glad_glTextureImage3DMultisampleCoverageNV = (PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC)load("glTextureImage3DMultisampleCoverageNV"); +} +static void load_GL_ARB_shader_objects(GLADloadproc load) { + if(!GLAD_GL_ARB_shader_objects) return; + glad_glDeleteObjectARB = (PFNGLDELETEOBJECTARBPROC)load("glDeleteObjectARB"); + glad_glGetHandleARB = (PFNGLGETHANDLEARBPROC)load("glGetHandleARB"); + glad_glDetachObjectARB = (PFNGLDETACHOBJECTARBPROC)load("glDetachObjectARB"); + glad_glCreateShaderObjectARB = (PFNGLCREATESHADEROBJECTARBPROC)load("glCreateShaderObjectARB"); + glad_glShaderSourceARB = (PFNGLSHADERSOURCEARBPROC)load("glShaderSourceARB"); + glad_glCompileShaderARB = (PFNGLCOMPILESHADERARBPROC)load("glCompileShaderARB"); + glad_glCreateProgramObjectARB = (PFNGLCREATEPROGRAMOBJECTARBPROC)load("glCreateProgramObjectARB"); + glad_glAttachObjectARB = (PFNGLATTACHOBJECTARBPROC)load("glAttachObjectARB"); + glad_glLinkProgramARB = (PFNGLLINKPROGRAMARBPROC)load("glLinkProgramARB"); + glad_glUseProgramObjectARB = (PFNGLUSEPROGRAMOBJECTARBPROC)load("glUseProgramObjectARB"); + glad_glValidateProgramARB = (PFNGLVALIDATEPROGRAMARBPROC)load("glValidateProgramARB"); + glad_glUniform1fARB = (PFNGLUNIFORM1FARBPROC)load("glUniform1fARB"); + glad_glUniform2fARB = (PFNGLUNIFORM2FARBPROC)load("glUniform2fARB"); + glad_glUniform3fARB = (PFNGLUNIFORM3FARBPROC)load("glUniform3fARB"); + glad_glUniform4fARB = (PFNGLUNIFORM4FARBPROC)load("glUniform4fARB"); + glad_glUniform1iARB = (PFNGLUNIFORM1IARBPROC)load("glUniform1iARB"); + glad_glUniform2iARB = (PFNGLUNIFORM2IARBPROC)load("glUniform2iARB"); + glad_glUniform3iARB = (PFNGLUNIFORM3IARBPROC)load("glUniform3iARB"); + glad_glUniform4iARB = (PFNGLUNIFORM4IARBPROC)load("glUniform4iARB"); + glad_glUniform1fvARB = (PFNGLUNIFORM1FVARBPROC)load("glUniform1fvARB"); + glad_glUniform2fvARB = (PFNGLUNIFORM2FVARBPROC)load("glUniform2fvARB"); + glad_glUniform3fvARB = (PFNGLUNIFORM3FVARBPROC)load("glUniform3fvARB"); + glad_glUniform4fvARB = (PFNGLUNIFORM4FVARBPROC)load("glUniform4fvARB"); + glad_glUniform1ivARB = (PFNGLUNIFORM1IVARBPROC)load("glUniform1ivARB"); + glad_glUniform2ivARB = (PFNGLUNIFORM2IVARBPROC)load("glUniform2ivARB"); + glad_glUniform3ivARB = (PFNGLUNIFORM3IVARBPROC)load("glUniform3ivARB"); + glad_glUniform4ivARB = (PFNGLUNIFORM4IVARBPROC)load("glUniform4ivARB"); + glad_glUniformMatrix2fvARB = (PFNGLUNIFORMMATRIX2FVARBPROC)load("glUniformMatrix2fvARB"); + glad_glUniformMatrix3fvARB = (PFNGLUNIFORMMATRIX3FVARBPROC)load("glUniformMatrix3fvARB"); + glad_glUniformMatrix4fvARB = (PFNGLUNIFORMMATRIX4FVARBPROC)load("glUniformMatrix4fvARB"); + glad_glGetObjectParameterfvARB = (PFNGLGETOBJECTPARAMETERFVARBPROC)load("glGetObjectParameterfvARB"); + glad_glGetObjectParameterivARB = (PFNGLGETOBJECTPARAMETERIVARBPROC)load("glGetObjectParameterivARB"); + glad_glGetInfoLogARB = (PFNGLGETINFOLOGARBPROC)load("glGetInfoLogARB"); + glad_glGetAttachedObjectsARB = (PFNGLGETATTACHEDOBJECTSARBPROC)load("glGetAttachedObjectsARB"); + glad_glGetUniformLocationARB = (PFNGLGETUNIFORMLOCATIONARBPROC)load("glGetUniformLocationARB"); + glad_glGetActiveUniformARB = (PFNGLGETACTIVEUNIFORMARBPROC)load("glGetActiveUniformARB"); + glad_glGetUniformfvARB = (PFNGLGETUNIFORMFVARBPROC)load("glGetUniformfvARB"); + glad_glGetUniformivARB = (PFNGLGETUNIFORMIVARBPROC)load("glGetUniformivARB"); + glad_glGetShaderSourceARB = (PFNGLGETSHADERSOURCEARBPROC)load("glGetShaderSourceARB"); +} +static void load_GL_ARB_framebuffer_object(GLADloadproc load) { + if(!GLAD_GL_ARB_framebuffer_object) return; + 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"); +} +static void load_GL_ATI_envmap_bumpmap(GLADloadproc load) { + if(!GLAD_GL_ATI_envmap_bumpmap) return; + glad_glTexBumpParameterivATI = (PFNGLTEXBUMPPARAMETERIVATIPROC)load("glTexBumpParameterivATI"); + glad_glTexBumpParameterfvATI = (PFNGLTEXBUMPPARAMETERFVATIPROC)load("glTexBumpParameterfvATI"); + glad_glGetTexBumpParameterivATI = (PFNGLGETTEXBUMPPARAMETERIVATIPROC)load("glGetTexBumpParameterivATI"); + glad_glGetTexBumpParameterfvATI = (PFNGLGETTEXBUMPPARAMETERFVATIPROC)load("glGetTexBumpParameterfvATI"); +} +static void load_GL_ATI_map_object_buffer(GLADloadproc load) { + if(!GLAD_GL_ATI_map_object_buffer) return; + glad_glMapObjectBufferATI = (PFNGLMAPOBJECTBUFFERATIPROC)load("glMapObjectBufferATI"); + glad_glUnmapObjectBufferATI = (PFNGLUNMAPOBJECTBUFFERATIPROC)load("glUnmapObjectBufferATI"); +} +static void load_GL_ARB_robustness(GLADloadproc load) { + if(!GLAD_GL_ARB_robustness) return; + glad_glGetGraphicsResetStatusARB = (PFNGLGETGRAPHICSRESETSTATUSARBPROC)load("glGetGraphicsResetStatusARB"); + glad_glGetnTexImageARB = (PFNGLGETNTEXIMAGEARBPROC)load("glGetnTexImageARB"); + glad_glReadnPixelsARB = (PFNGLREADNPIXELSARBPROC)load("glReadnPixelsARB"); + glad_glGetnCompressedTexImageARB = (PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC)load("glGetnCompressedTexImageARB"); + glad_glGetnUniformfvARB = (PFNGLGETNUNIFORMFVARBPROC)load("glGetnUniformfvARB"); + glad_glGetnUniformivARB = (PFNGLGETNUNIFORMIVARBPROC)load("glGetnUniformivARB"); + glad_glGetnUniformuivARB = (PFNGLGETNUNIFORMUIVARBPROC)load("glGetnUniformuivARB"); + glad_glGetnUniformdvARB = (PFNGLGETNUNIFORMDVARBPROC)load("glGetnUniformdvARB"); + glad_glGetnMapdvARB = (PFNGLGETNMAPDVARBPROC)load("glGetnMapdvARB"); + glad_glGetnMapfvARB = (PFNGLGETNMAPFVARBPROC)load("glGetnMapfvARB"); + glad_glGetnMapivARB = (PFNGLGETNMAPIVARBPROC)load("glGetnMapivARB"); + glad_glGetnPixelMapfvARB = (PFNGLGETNPIXELMAPFVARBPROC)load("glGetnPixelMapfvARB"); + glad_glGetnPixelMapuivARB = (PFNGLGETNPIXELMAPUIVARBPROC)load("glGetnPixelMapuivARB"); + glad_glGetnPixelMapusvARB = (PFNGLGETNPIXELMAPUSVARBPROC)load("glGetnPixelMapusvARB"); + glad_glGetnPolygonStippleARB = (PFNGLGETNPOLYGONSTIPPLEARBPROC)load("glGetnPolygonStippleARB"); + glad_glGetnColorTableARB = (PFNGLGETNCOLORTABLEARBPROC)load("glGetnColorTableARB"); + glad_glGetnConvolutionFilterARB = (PFNGLGETNCONVOLUTIONFILTERARBPROC)load("glGetnConvolutionFilterARB"); + glad_glGetnSeparableFilterARB = (PFNGLGETNSEPARABLEFILTERARBPROC)load("glGetnSeparableFilterARB"); + glad_glGetnHistogramARB = (PFNGLGETNHISTOGRAMARBPROC)load("glGetnHistogramARB"); + glad_glGetnMinmaxARB = (PFNGLGETNMINMAXARBPROC)load("glGetnMinmaxARB"); +} +static void load_GL_NV_pixel_data_range(GLADloadproc load) { + if(!GLAD_GL_NV_pixel_data_range) return; + glad_glPixelDataRangeNV = (PFNGLPIXELDATARANGENVPROC)load("glPixelDataRangeNV"); + glad_glFlushPixelDataRangeNV = (PFNGLFLUSHPIXELDATARANGENVPROC)load("glFlushPixelDataRangeNV"); +} +static void load_GL_EXT_framebuffer_blit(GLADloadproc load) { + if(!GLAD_GL_EXT_framebuffer_blit) return; + glad_glBlitFramebufferEXT = (PFNGLBLITFRAMEBUFFEREXTPROC)load("glBlitFramebufferEXT"); +} +static void load_GL_ARB_gpu_shader_fp64(GLADloadproc load) { + if(!GLAD_GL_ARB_gpu_shader_fp64) return; + 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"); +} +static void load_GL_NV_command_list(GLADloadproc load) { + if(!GLAD_GL_NV_command_list) return; + glad_glCreateStatesNV = (PFNGLCREATESTATESNVPROC)load("glCreateStatesNV"); + glad_glDeleteStatesNV = (PFNGLDELETESTATESNVPROC)load("glDeleteStatesNV"); + glad_glIsStateNV = (PFNGLISSTATENVPROC)load("glIsStateNV"); + glad_glStateCaptureNV = (PFNGLSTATECAPTURENVPROC)load("glStateCaptureNV"); + glad_glGetCommandHeaderNV = (PFNGLGETCOMMANDHEADERNVPROC)load("glGetCommandHeaderNV"); + glad_glGetStageIndexNV = (PFNGLGETSTAGEINDEXNVPROC)load("glGetStageIndexNV"); + glad_glDrawCommandsNV = (PFNGLDRAWCOMMANDSNVPROC)load("glDrawCommandsNV"); + glad_glDrawCommandsAddressNV = (PFNGLDRAWCOMMANDSADDRESSNVPROC)load("glDrawCommandsAddressNV"); + glad_glDrawCommandsStatesNV = (PFNGLDRAWCOMMANDSSTATESNVPROC)load("glDrawCommandsStatesNV"); + glad_glDrawCommandsStatesAddressNV = (PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC)load("glDrawCommandsStatesAddressNV"); + glad_glCreateCommandListsNV = (PFNGLCREATECOMMANDLISTSNVPROC)load("glCreateCommandListsNV"); + glad_glDeleteCommandListsNV = (PFNGLDELETECOMMANDLISTSNVPROC)load("glDeleteCommandListsNV"); + glad_glIsCommandListNV = (PFNGLISCOMMANDLISTNVPROC)load("glIsCommandListNV"); + glad_glListDrawCommandsStatesClientNV = (PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC)load("glListDrawCommandsStatesClientNV"); + glad_glCommandListSegmentsNV = (PFNGLCOMMANDLISTSEGMENTSNVPROC)load("glCommandListSegmentsNV"); + glad_glCompileCommandListNV = (PFNGLCOMPILECOMMANDLISTNVPROC)load("glCompileCommandListNV"); + glad_glCallCommandListNV = (PFNGLCALLCOMMANDLISTNVPROC)load("glCallCommandListNV"); +} +static void load_GL_EXT_vertex_weighting(GLADloadproc load) { + if(!GLAD_GL_EXT_vertex_weighting) return; + glad_glVertexWeightfEXT = (PFNGLVERTEXWEIGHTFEXTPROC)load("glVertexWeightfEXT"); + glad_glVertexWeightfvEXT = (PFNGLVERTEXWEIGHTFVEXTPROC)load("glVertexWeightfvEXT"); + glad_glVertexWeightPointerEXT = (PFNGLVERTEXWEIGHTPOINTEREXTPROC)load("glVertexWeightPointerEXT"); +} +static void load_GL_GREMEDY_string_marker(GLADloadproc load) { + if(!GLAD_GL_GREMEDY_string_marker) return; + glad_glStringMarkerGREMEDY = (PFNGLSTRINGMARKERGREMEDYPROC)load("glStringMarkerGREMEDY"); +} +static void load_GL_EXT_subtexture(GLADloadproc load) { + if(!GLAD_GL_EXT_subtexture) return; + glad_glTexSubImage1DEXT = (PFNGLTEXSUBIMAGE1DEXTPROC)load("glTexSubImage1DEXT"); + glad_glTexSubImage2DEXT = (PFNGLTEXSUBIMAGE2DEXTPROC)load("glTexSubImage2DEXT"); +} +static void load_GL_EXT_gpu_program_parameters(GLADloadproc load) { + if(!GLAD_GL_EXT_gpu_program_parameters) return; + glad_glProgramEnvParameters4fvEXT = (PFNGLPROGRAMENVPARAMETERS4FVEXTPROC)load("glProgramEnvParameters4fvEXT"); + glad_glProgramLocalParameters4fvEXT = (PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC)load("glProgramLocalParameters4fvEXT"); +} +static void load_GL_NV_evaluators(GLADloadproc load) { + if(!GLAD_GL_NV_evaluators) return; + glad_glMapControlPointsNV = (PFNGLMAPCONTROLPOINTSNVPROC)load("glMapControlPointsNV"); + glad_glMapParameterivNV = (PFNGLMAPPARAMETERIVNVPROC)load("glMapParameterivNV"); + glad_glMapParameterfvNV = (PFNGLMAPPARAMETERFVNVPROC)load("glMapParameterfvNV"); + glad_glGetMapControlPointsNV = (PFNGLGETMAPCONTROLPOINTSNVPROC)load("glGetMapControlPointsNV"); + glad_glGetMapParameterivNV = (PFNGLGETMAPPARAMETERIVNVPROC)load("glGetMapParameterivNV"); + glad_glGetMapParameterfvNV = (PFNGLGETMAPPARAMETERFVNVPROC)load("glGetMapParameterfvNV"); + glad_glGetMapAttribParameterivNV = (PFNGLGETMAPATTRIBPARAMETERIVNVPROC)load("glGetMapAttribParameterivNV"); + glad_glGetMapAttribParameterfvNV = (PFNGLGETMAPATTRIBPARAMETERFVNVPROC)load("glGetMapAttribParameterfvNV"); + glad_glEvalMapsNV = (PFNGLEVALMAPSNVPROC)load("glEvalMapsNV"); +} +static void load_GL_SGIS_texture_filter4(GLADloadproc load) { + if(!GLAD_GL_SGIS_texture_filter4) return; + glad_glGetTexFilterFuncSGIS = (PFNGLGETTEXFILTERFUNCSGISPROC)load("glGetTexFilterFuncSGIS"); + glad_glTexFilterFuncSGIS = (PFNGLTEXFILTERFUNCSGISPROC)load("glTexFilterFuncSGIS"); +} +static void load_GL_AMD_performance_monitor(GLADloadproc load) { + if(!GLAD_GL_AMD_performance_monitor) return; + glad_glGetPerfMonitorGroupsAMD = (PFNGLGETPERFMONITORGROUPSAMDPROC)load("glGetPerfMonitorGroupsAMD"); + glad_glGetPerfMonitorCountersAMD = (PFNGLGETPERFMONITORCOUNTERSAMDPROC)load("glGetPerfMonitorCountersAMD"); + glad_glGetPerfMonitorGroupStringAMD = (PFNGLGETPERFMONITORGROUPSTRINGAMDPROC)load("glGetPerfMonitorGroupStringAMD"); + glad_glGetPerfMonitorCounterStringAMD = (PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC)load("glGetPerfMonitorCounterStringAMD"); + glad_glGetPerfMonitorCounterInfoAMD = (PFNGLGETPERFMONITORCOUNTERINFOAMDPROC)load("glGetPerfMonitorCounterInfoAMD"); + glad_glGenPerfMonitorsAMD = (PFNGLGENPERFMONITORSAMDPROC)load("glGenPerfMonitorsAMD"); + glad_glDeletePerfMonitorsAMD = (PFNGLDELETEPERFMONITORSAMDPROC)load("glDeletePerfMonitorsAMD"); + glad_glSelectPerfMonitorCountersAMD = (PFNGLSELECTPERFMONITORCOUNTERSAMDPROC)load("glSelectPerfMonitorCountersAMD"); + glad_glBeginPerfMonitorAMD = (PFNGLBEGINPERFMONITORAMDPROC)load("glBeginPerfMonitorAMD"); + glad_glEndPerfMonitorAMD = (PFNGLENDPERFMONITORAMDPROC)load("glEndPerfMonitorAMD"); + glad_glGetPerfMonitorCounterDataAMD = (PFNGLGETPERFMONITORCOUNTERDATAAMDPROC)load("glGetPerfMonitorCounterDataAMD"); +} +static void load_GL_EXT_stencil_clear_tag(GLADloadproc load) { + if(!GLAD_GL_EXT_stencil_clear_tag) return; + glad_glStencilClearTagEXT = (PFNGLSTENCILCLEARTAGEXTPROC)load("glStencilClearTagEXT"); +} +static void load_GL_NV_present_video(GLADloadproc load) { + if(!GLAD_GL_NV_present_video) return; + glad_glPresentFrameKeyedNV = (PFNGLPRESENTFRAMEKEYEDNVPROC)load("glPresentFrameKeyedNV"); + glad_glPresentFrameDualFillNV = (PFNGLPRESENTFRAMEDUALFILLNVPROC)load("glPresentFrameDualFillNV"); + glad_glGetVideoivNV = (PFNGLGETVIDEOIVNVPROC)load("glGetVideoivNV"); + glad_glGetVideouivNV = (PFNGLGETVIDEOUIVNVPROC)load("glGetVideouivNV"); + glad_glGetVideoi64vNV = (PFNGLGETVIDEOI64VNVPROC)load("glGetVideoi64vNV"); + glad_glGetVideoui64vNV = (PFNGLGETVIDEOUI64VNVPROC)load("glGetVideoui64vNV"); +} +static void load_GL_SGIX_framezoom(GLADloadproc load) { + if(!GLAD_GL_SGIX_framezoom) return; + glad_glFrameZoomSGIX = (PFNGLFRAMEZOOMSGIXPROC)load("glFrameZoomSGIX"); +} +static void load_GL_ARB_draw_elements_base_vertex(GLADloadproc load) { + if(!GLAD_GL_ARB_draw_elements_base_vertex) return; + glad_glDrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEXPROC)load("glDrawElementsBaseVertex"); + glad_glDrawRangeElementsBaseVertex = (PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)load("glDrawRangeElementsBaseVertex"); + glad_glDrawElementsInstancedBaseVertex = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)load("glDrawElementsInstancedBaseVertex"); + glad_glMultiDrawElementsBaseVertex = (PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)load("glMultiDrawElementsBaseVertex"); +} +static void load_GL_NV_transform_feedback(GLADloadproc load) { + if(!GLAD_GL_NV_transform_feedback) return; + glad_glBeginTransformFeedbackNV = (PFNGLBEGINTRANSFORMFEEDBACKNVPROC)load("glBeginTransformFeedbackNV"); + glad_glEndTransformFeedbackNV = (PFNGLENDTRANSFORMFEEDBACKNVPROC)load("glEndTransformFeedbackNV"); + glad_glTransformFeedbackAttribsNV = (PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC)load("glTransformFeedbackAttribsNV"); + glad_glBindBufferRangeNV = (PFNGLBINDBUFFERRANGENVPROC)load("glBindBufferRangeNV"); + glad_glBindBufferOffsetNV = (PFNGLBINDBUFFEROFFSETNVPROC)load("glBindBufferOffsetNV"); + glad_glBindBufferBaseNV = (PFNGLBINDBUFFERBASENVPROC)load("glBindBufferBaseNV"); + glad_glTransformFeedbackVaryingsNV = (PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC)load("glTransformFeedbackVaryingsNV"); + glad_glActiveVaryingNV = (PFNGLACTIVEVARYINGNVPROC)load("glActiveVaryingNV"); + glad_glGetVaryingLocationNV = (PFNGLGETVARYINGLOCATIONNVPROC)load("glGetVaryingLocationNV"); + glad_glGetActiveVaryingNV = (PFNGLGETACTIVEVARYINGNVPROC)load("glGetActiveVaryingNV"); + glad_glGetTransformFeedbackVaryingNV = (PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC)load("glGetTransformFeedbackVaryingNV"); + glad_glTransformFeedbackStreamAttribsNV = (PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC)load("glTransformFeedbackStreamAttribsNV"); +} +static void load_GL_NV_fragment_program(GLADloadproc load) { + if(!GLAD_GL_NV_fragment_program) return; + glad_glProgramNamedParameter4fNV = (PFNGLPROGRAMNAMEDPARAMETER4FNVPROC)load("glProgramNamedParameter4fNV"); + glad_glProgramNamedParameter4fvNV = (PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC)load("glProgramNamedParameter4fvNV"); + glad_glProgramNamedParameter4dNV = (PFNGLPROGRAMNAMEDPARAMETER4DNVPROC)load("glProgramNamedParameter4dNV"); + glad_glProgramNamedParameter4dvNV = (PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC)load("glProgramNamedParameter4dvNV"); + glad_glGetProgramNamedParameterfvNV = (PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC)load("glGetProgramNamedParameterfvNV"); + glad_glGetProgramNamedParameterdvNV = (PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC)load("glGetProgramNamedParameterdvNV"); +} +static void load_GL_AMD_stencil_operation_extended(GLADloadproc load) { + if(!GLAD_GL_AMD_stencil_operation_extended) return; + glad_glStencilOpValueAMD = (PFNGLSTENCILOPVALUEAMDPROC)load("glStencilOpValueAMD"); +} +static void load_GL_ARB_instanced_arrays(GLADloadproc load) { + if(!GLAD_GL_ARB_instanced_arrays) return; + glad_glVertexAttribDivisorARB = (PFNGLVERTEXATTRIBDIVISORARBPROC)load("glVertexAttribDivisorARB"); +} +static void load_GL_EXT_polygon_offset(GLADloadproc load) { + if(!GLAD_GL_EXT_polygon_offset) return; + glad_glPolygonOffsetEXT = (PFNGLPOLYGONOFFSETEXTPROC)load("glPolygonOffsetEXT"); +} +static void load_GL_KHR_robustness(GLADloadproc load) { + if(!GLAD_GL_KHR_robustness) return; + glad_glGetGraphicsResetStatus = (PFNGLGETGRAPHICSRESETSTATUSPROC)load("glGetGraphicsResetStatus"); + glad_glReadnPixels = (PFNGLREADNPIXELSPROC)load("glReadnPixels"); + glad_glGetnUniformfv = (PFNGLGETNUNIFORMFVPROC)load("glGetnUniformfv"); + glad_glGetnUniformiv = (PFNGLGETNUNIFORMIVPROC)load("glGetnUniformiv"); + glad_glGetnUniformuiv = (PFNGLGETNUNIFORMUIVPROC)load("glGetnUniformuiv"); + glad_glGetGraphicsResetStatusKHR = (PFNGLGETGRAPHICSRESETSTATUSKHRPROC)load("glGetGraphicsResetStatusKHR"); + glad_glReadnPixelsKHR = (PFNGLREADNPIXELSKHRPROC)load("glReadnPixelsKHR"); + glad_glGetnUniformfvKHR = (PFNGLGETNUNIFORMFVKHRPROC)load("glGetnUniformfvKHR"); + glad_glGetnUniformivKHR = (PFNGLGETNUNIFORMIVKHRPROC)load("glGetnUniformivKHR"); + glad_glGetnUniformuivKHR = (PFNGLGETNUNIFORMUIVKHRPROC)load("glGetnUniformuivKHR"); +} +static void load_GL_AMD_sparse_texture(GLADloadproc load) { + if(!GLAD_GL_AMD_sparse_texture) return; + glad_glTexStorageSparseAMD = (PFNGLTEXSTORAGESPARSEAMDPROC)load("glTexStorageSparseAMD"); + glad_glTextureStorageSparseAMD = (PFNGLTEXTURESTORAGESPARSEAMDPROC)load("glTextureStorageSparseAMD"); +} +static void load_GL_ARB_clip_control(GLADloadproc load) { + if(!GLAD_GL_ARB_clip_control) return; + glad_glClipControl = (PFNGLCLIPCONTROLPROC)load("glClipControl"); +} +static void load_GL_NV_fragment_coverage_to_color(GLADloadproc load) { + if(!GLAD_GL_NV_fragment_coverage_to_color) return; + glad_glFragmentCoverageColorNV = (PFNGLFRAGMENTCOVERAGECOLORNVPROC)load("glFragmentCoverageColorNV"); +} +static void load_GL_NV_fence(GLADloadproc load) { + if(!GLAD_GL_NV_fence) return; + glad_glDeleteFencesNV = (PFNGLDELETEFENCESNVPROC)load("glDeleteFencesNV"); + glad_glGenFencesNV = (PFNGLGENFENCESNVPROC)load("glGenFencesNV"); + glad_glIsFenceNV = (PFNGLISFENCENVPROC)load("glIsFenceNV"); + glad_glTestFenceNV = (PFNGLTESTFENCENVPROC)load("glTestFenceNV"); + glad_glGetFenceivNV = (PFNGLGETFENCEIVNVPROC)load("glGetFenceivNV"); + glad_glFinishFenceNV = (PFNGLFINISHFENCENVPROC)load("glFinishFenceNV"); + glad_glSetFenceNV = (PFNGLSETFENCENVPROC)load("glSetFenceNV"); +} +static void load_GL_ARB_texture_buffer_range(GLADloadproc load) { + if(!GLAD_GL_ARB_texture_buffer_range) return; + glad_glTexBufferRange = (PFNGLTEXBUFFERRANGEPROC)load("glTexBufferRange"); +} +static void load_GL_SUN_mesh_array(GLADloadproc load) { + if(!GLAD_GL_SUN_mesh_array) return; + glad_glDrawMeshArraysSUN = (PFNGLDRAWMESHARRAYSSUNPROC)load("glDrawMeshArraysSUN"); +} +static void load_GL_ARB_vertex_attrib_binding(GLADloadproc load) { + if(!GLAD_GL_ARB_vertex_attrib_binding) return; + glad_glBindVertexBuffer = (PFNGLBINDVERTEXBUFFERPROC)load("glBindVertexBuffer"); + glad_glVertexAttribFormat = (PFNGLVERTEXATTRIBFORMATPROC)load("glVertexAttribFormat"); + glad_glVertexAttribIFormat = (PFNGLVERTEXATTRIBIFORMATPROC)load("glVertexAttribIFormat"); + glad_glVertexAttribLFormat = (PFNGLVERTEXATTRIBLFORMATPROC)load("glVertexAttribLFormat"); + glad_glVertexAttribBinding = (PFNGLVERTEXATTRIBBINDINGPROC)load("glVertexAttribBinding"); + glad_glVertexBindingDivisor = (PFNGLVERTEXBINDINGDIVISORPROC)load("glVertexBindingDivisor"); +} +static void load_GL_ARB_framebuffer_no_attachments(GLADloadproc load) { + if(!GLAD_GL_ARB_framebuffer_no_attachments) return; + glad_glFramebufferParameteri = (PFNGLFRAMEBUFFERPARAMETERIPROC)load("glFramebufferParameteri"); + glad_glGetFramebufferParameteriv = (PFNGLGETFRAMEBUFFERPARAMETERIVPROC)load("glGetFramebufferParameteriv"); +} +static void load_GL_ARB_cl_event(GLADloadproc load) { + if(!GLAD_GL_ARB_cl_event) return; + glad_glCreateSyncFromCLeventARB = (PFNGLCREATESYNCFROMCLEVENTARBPROC)load("glCreateSyncFromCLeventARB"); +} +static void load_GL_OES_single_precision(GLADloadproc load) { + if(!GLAD_GL_OES_single_precision) return; + glad_glClearDepthfOES = (PFNGLCLEARDEPTHFOESPROC)load("glClearDepthfOES"); + glad_glClipPlanefOES = (PFNGLCLIPPLANEFOESPROC)load("glClipPlanefOES"); + glad_glDepthRangefOES = (PFNGLDEPTHRANGEFOESPROC)load("glDepthRangefOES"); + glad_glFrustumfOES = (PFNGLFRUSTUMFOESPROC)load("glFrustumfOES"); + glad_glGetClipPlanefOES = (PFNGLGETCLIPPLANEFOESPROC)load("glGetClipPlanefOES"); + glad_glOrthofOES = (PFNGLORTHOFOESPROC)load("glOrthofOES"); +} +static void load_GL_NV_primitive_restart(GLADloadproc load) { + if(!GLAD_GL_NV_primitive_restart) return; + glad_glPrimitiveRestartNV = (PFNGLPRIMITIVERESTARTNVPROC)load("glPrimitiveRestartNV"); + glad_glPrimitiveRestartIndexNV = (PFNGLPRIMITIVERESTARTINDEXNVPROC)load("glPrimitiveRestartIndexNV"); +} +static void load_GL_SUN_global_alpha(GLADloadproc load) { + if(!GLAD_GL_SUN_global_alpha) return; + glad_glGlobalAlphaFactorbSUN = (PFNGLGLOBALALPHAFACTORBSUNPROC)load("glGlobalAlphaFactorbSUN"); + glad_glGlobalAlphaFactorsSUN = (PFNGLGLOBALALPHAFACTORSSUNPROC)load("glGlobalAlphaFactorsSUN"); + glad_glGlobalAlphaFactoriSUN = (PFNGLGLOBALALPHAFACTORISUNPROC)load("glGlobalAlphaFactoriSUN"); + glad_glGlobalAlphaFactorfSUN = (PFNGLGLOBALALPHAFACTORFSUNPROC)load("glGlobalAlphaFactorfSUN"); + glad_glGlobalAlphaFactordSUN = (PFNGLGLOBALALPHAFACTORDSUNPROC)load("glGlobalAlphaFactordSUN"); + glad_glGlobalAlphaFactorubSUN = (PFNGLGLOBALALPHAFACTORUBSUNPROC)load("glGlobalAlphaFactorubSUN"); + glad_glGlobalAlphaFactorusSUN = (PFNGLGLOBALALPHAFACTORUSSUNPROC)load("glGlobalAlphaFactorusSUN"); + glad_glGlobalAlphaFactoruiSUN = (PFNGLGLOBALALPHAFACTORUISUNPROC)load("glGlobalAlphaFactoruiSUN"); +} +static void load_GL_EXT_texture_object(GLADloadproc load) { + if(!GLAD_GL_EXT_texture_object) return; + glad_glAreTexturesResidentEXT = (PFNGLARETEXTURESRESIDENTEXTPROC)load("glAreTexturesResidentEXT"); + glad_glBindTextureEXT = (PFNGLBINDTEXTUREEXTPROC)load("glBindTextureEXT"); + glad_glDeleteTexturesEXT = (PFNGLDELETETEXTURESEXTPROC)load("glDeleteTexturesEXT"); + glad_glGenTexturesEXT = (PFNGLGENTEXTURESEXTPROC)load("glGenTexturesEXT"); + glad_glIsTextureEXT = (PFNGLISTEXTUREEXTPROC)load("glIsTextureEXT"); + glad_glPrioritizeTexturesEXT = (PFNGLPRIORITIZETEXTURESEXTPROC)load("glPrioritizeTexturesEXT"); +} +static void load_GL_AMD_name_gen_delete(GLADloadproc load) { + if(!GLAD_GL_AMD_name_gen_delete) return; + glad_glGenNamesAMD = (PFNGLGENNAMESAMDPROC)load("glGenNamesAMD"); + glad_glDeleteNamesAMD = (PFNGLDELETENAMESAMDPROC)load("glDeleteNamesAMD"); + glad_glIsNameAMD = (PFNGLISNAMEAMDPROC)load("glIsNameAMD"); +} +static void load_GL_ARB_buffer_storage(GLADloadproc load) { + if(!GLAD_GL_ARB_buffer_storage) return; + glad_glBufferStorage = (PFNGLBUFFERSTORAGEPROC)load("glBufferStorage"); +} +static void load_GL_APPLE_vertex_program_evaluators(GLADloadproc load) { + if(!GLAD_GL_APPLE_vertex_program_evaluators) return; + glad_glEnableVertexAttribAPPLE = (PFNGLENABLEVERTEXATTRIBAPPLEPROC)load("glEnableVertexAttribAPPLE"); + glad_glDisableVertexAttribAPPLE = (PFNGLDISABLEVERTEXATTRIBAPPLEPROC)load("glDisableVertexAttribAPPLE"); + glad_glIsVertexAttribEnabledAPPLE = (PFNGLISVERTEXATTRIBENABLEDAPPLEPROC)load("glIsVertexAttribEnabledAPPLE"); + glad_glMapVertexAttrib1dAPPLE = (PFNGLMAPVERTEXATTRIB1DAPPLEPROC)load("glMapVertexAttrib1dAPPLE"); + glad_glMapVertexAttrib1fAPPLE = (PFNGLMAPVERTEXATTRIB1FAPPLEPROC)load("glMapVertexAttrib1fAPPLE"); + glad_glMapVertexAttrib2dAPPLE = (PFNGLMAPVERTEXATTRIB2DAPPLEPROC)load("glMapVertexAttrib2dAPPLE"); + glad_glMapVertexAttrib2fAPPLE = (PFNGLMAPVERTEXATTRIB2FAPPLEPROC)load("glMapVertexAttrib2fAPPLE"); +} +static void load_GL_ARB_multi_bind(GLADloadproc load) { + if(!GLAD_GL_ARB_multi_bind) return; + glad_glBindBuffersBase = (PFNGLBINDBUFFERSBASEPROC)load("glBindBuffersBase"); + glad_glBindBuffersRange = (PFNGLBINDBUFFERSRANGEPROC)load("glBindBuffersRange"); + glad_glBindTextures = (PFNGLBINDTEXTURESPROC)load("glBindTextures"); + glad_glBindSamplers = (PFNGLBINDSAMPLERSPROC)load("glBindSamplers"); + glad_glBindImageTextures = (PFNGLBINDIMAGETEXTURESPROC)load("glBindImageTextures"); + glad_glBindVertexBuffers = (PFNGLBINDVERTEXBUFFERSPROC)load("glBindVertexBuffers"); +} +static void load_GL_SGIX_list_priority(GLADloadproc load) { + if(!GLAD_GL_SGIX_list_priority) return; + glad_glGetListParameterfvSGIX = (PFNGLGETLISTPARAMETERFVSGIXPROC)load("glGetListParameterfvSGIX"); + glad_glGetListParameterivSGIX = (PFNGLGETLISTPARAMETERIVSGIXPROC)load("glGetListParameterivSGIX"); + glad_glListParameterfSGIX = (PFNGLLISTPARAMETERFSGIXPROC)load("glListParameterfSGIX"); + glad_glListParameterfvSGIX = (PFNGLLISTPARAMETERFVSGIXPROC)load("glListParameterfvSGIX"); + glad_glListParameteriSGIX = (PFNGLLISTPARAMETERISGIXPROC)load("glListParameteriSGIX"); + glad_glListParameterivSGIX = (PFNGLLISTPARAMETERIVSGIXPROC)load("glListParameterivSGIX"); +} +static void load_GL_NV_vertex_buffer_unified_memory(GLADloadproc load) { + if(!GLAD_GL_NV_vertex_buffer_unified_memory) return; + glad_glBufferAddressRangeNV = (PFNGLBUFFERADDRESSRANGENVPROC)load("glBufferAddressRangeNV"); + glad_glVertexFormatNV = (PFNGLVERTEXFORMATNVPROC)load("glVertexFormatNV"); + glad_glNormalFormatNV = (PFNGLNORMALFORMATNVPROC)load("glNormalFormatNV"); + glad_glColorFormatNV = (PFNGLCOLORFORMATNVPROC)load("glColorFormatNV"); + glad_glIndexFormatNV = (PFNGLINDEXFORMATNVPROC)load("glIndexFormatNV"); + glad_glTexCoordFormatNV = (PFNGLTEXCOORDFORMATNVPROC)load("glTexCoordFormatNV"); + glad_glEdgeFlagFormatNV = (PFNGLEDGEFLAGFORMATNVPROC)load("glEdgeFlagFormatNV"); + glad_glSecondaryColorFormatNV = (PFNGLSECONDARYCOLORFORMATNVPROC)load("glSecondaryColorFormatNV"); + glad_glFogCoordFormatNV = (PFNGLFOGCOORDFORMATNVPROC)load("glFogCoordFormatNV"); + glad_glVertexAttribFormatNV = (PFNGLVERTEXATTRIBFORMATNVPROC)load("glVertexAttribFormatNV"); + glad_glVertexAttribIFormatNV = (PFNGLVERTEXATTRIBIFORMATNVPROC)load("glVertexAttribIFormatNV"); + glad_glGetIntegerui64i_vNV = (PFNGLGETINTEGERUI64I_VNVPROC)load("glGetIntegerui64i_vNV"); +} +static void load_GL_NV_blend_equation_advanced(GLADloadproc load) { + if(!GLAD_GL_NV_blend_equation_advanced) return; + glad_glBlendParameteriNV = (PFNGLBLENDPARAMETERINVPROC)load("glBlendParameteriNV"); + glad_glBlendBarrierNV = (PFNGLBLENDBARRIERNVPROC)load("glBlendBarrierNV"); +} +static void load_GL_SGIS_sharpen_texture(GLADloadproc load) { + if(!GLAD_GL_SGIS_sharpen_texture) return; + glad_glSharpenTexFuncSGIS = (PFNGLSHARPENTEXFUNCSGISPROC)load("glSharpenTexFuncSGIS"); + glad_glGetSharpenTexFuncSGIS = (PFNGLGETSHARPENTEXFUNCSGISPROC)load("glGetSharpenTexFuncSGIS"); +} +static void load_GL_ARB_vertex_program(GLADloadproc load) { + if(!GLAD_GL_ARB_vertex_program) return; + glad_glVertexAttrib1dARB = (PFNGLVERTEXATTRIB1DARBPROC)load("glVertexAttrib1dARB"); + glad_glVertexAttrib1dvARB = (PFNGLVERTEXATTRIB1DVARBPROC)load("glVertexAttrib1dvARB"); + glad_glVertexAttrib1fARB = (PFNGLVERTEXATTRIB1FARBPROC)load("glVertexAttrib1fARB"); + glad_glVertexAttrib1fvARB = (PFNGLVERTEXATTRIB1FVARBPROC)load("glVertexAttrib1fvARB"); + glad_glVertexAttrib1sARB = (PFNGLVERTEXATTRIB1SARBPROC)load("glVertexAttrib1sARB"); + glad_glVertexAttrib1svARB = (PFNGLVERTEXATTRIB1SVARBPROC)load("glVertexAttrib1svARB"); + glad_glVertexAttrib2dARB = (PFNGLVERTEXATTRIB2DARBPROC)load("glVertexAttrib2dARB"); + glad_glVertexAttrib2dvARB = (PFNGLVERTEXATTRIB2DVARBPROC)load("glVertexAttrib2dvARB"); + glad_glVertexAttrib2fARB = (PFNGLVERTEXATTRIB2FARBPROC)load("glVertexAttrib2fARB"); + glad_glVertexAttrib2fvARB = (PFNGLVERTEXATTRIB2FVARBPROC)load("glVertexAttrib2fvARB"); + glad_glVertexAttrib2sARB = (PFNGLVERTEXATTRIB2SARBPROC)load("glVertexAttrib2sARB"); + glad_glVertexAttrib2svARB = (PFNGLVERTEXATTRIB2SVARBPROC)load("glVertexAttrib2svARB"); + glad_glVertexAttrib3dARB = (PFNGLVERTEXATTRIB3DARBPROC)load("glVertexAttrib3dARB"); + glad_glVertexAttrib3dvARB = (PFNGLVERTEXATTRIB3DVARBPROC)load("glVertexAttrib3dvARB"); + glad_glVertexAttrib3fARB = (PFNGLVERTEXATTRIB3FARBPROC)load("glVertexAttrib3fARB"); + glad_glVertexAttrib3fvARB = (PFNGLVERTEXATTRIB3FVARBPROC)load("glVertexAttrib3fvARB"); + glad_glVertexAttrib3sARB = (PFNGLVERTEXATTRIB3SARBPROC)load("glVertexAttrib3sARB"); + glad_glVertexAttrib3svARB = (PFNGLVERTEXATTRIB3SVARBPROC)load("glVertexAttrib3svARB"); + glad_glVertexAttrib4NbvARB = (PFNGLVERTEXATTRIB4NBVARBPROC)load("glVertexAttrib4NbvARB"); + glad_glVertexAttrib4NivARB = (PFNGLVERTEXATTRIB4NIVARBPROC)load("glVertexAttrib4NivARB"); + glad_glVertexAttrib4NsvARB = (PFNGLVERTEXATTRIB4NSVARBPROC)load("glVertexAttrib4NsvARB"); + glad_glVertexAttrib4NubARB = (PFNGLVERTEXATTRIB4NUBARBPROC)load("glVertexAttrib4NubARB"); + glad_glVertexAttrib4NubvARB = (PFNGLVERTEXATTRIB4NUBVARBPROC)load("glVertexAttrib4NubvARB"); + glad_glVertexAttrib4NuivARB = (PFNGLVERTEXATTRIB4NUIVARBPROC)load("glVertexAttrib4NuivARB"); + glad_glVertexAttrib4NusvARB = (PFNGLVERTEXATTRIB4NUSVARBPROC)load("glVertexAttrib4NusvARB"); + glad_glVertexAttrib4bvARB = (PFNGLVERTEXATTRIB4BVARBPROC)load("glVertexAttrib4bvARB"); + glad_glVertexAttrib4dARB = (PFNGLVERTEXATTRIB4DARBPROC)load("glVertexAttrib4dARB"); + glad_glVertexAttrib4dvARB = (PFNGLVERTEXATTRIB4DVARBPROC)load("glVertexAttrib4dvARB"); + glad_glVertexAttrib4fARB = (PFNGLVERTEXATTRIB4FARBPROC)load("glVertexAttrib4fARB"); + glad_glVertexAttrib4fvARB = (PFNGLVERTEXATTRIB4FVARBPROC)load("glVertexAttrib4fvARB"); + glad_glVertexAttrib4ivARB = (PFNGLVERTEXATTRIB4IVARBPROC)load("glVertexAttrib4ivARB"); + glad_glVertexAttrib4sARB = (PFNGLVERTEXATTRIB4SARBPROC)load("glVertexAttrib4sARB"); + glad_glVertexAttrib4svARB = (PFNGLVERTEXATTRIB4SVARBPROC)load("glVertexAttrib4svARB"); + glad_glVertexAttrib4ubvARB = (PFNGLVERTEXATTRIB4UBVARBPROC)load("glVertexAttrib4ubvARB"); + glad_glVertexAttrib4uivARB = (PFNGLVERTEXATTRIB4UIVARBPROC)load("glVertexAttrib4uivARB"); + glad_glVertexAttrib4usvARB = (PFNGLVERTEXATTRIB4USVARBPROC)load("glVertexAttrib4usvARB"); + glad_glVertexAttribPointerARB = (PFNGLVERTEXATTRIBPOINTERARBPROC)load("glVertexAttribPointerARB"); + glad_glEnableVertexAttribArrayARB = (PFNGLENABLEVERTEXATTRIBARRAYARBPROC)load("glEnableVertexAttribArrayARB"); + glad_glDisableVertexAttribArrayARB = (PFNGLDISABLEVERTEXATTRIBARRAYARBPROC)load("glDisableVertexAttribArrayARB"); + glad_glProgramStringARB = (PFNGLPROGRAMSTRINGARBPROC)load("glProgramStringARB"); + glad_glBindProgramARB = (PFNGLBINDPROGRAMARBPROC)load("glBindProgramARB"); + glad_glDeleteProgramsARB = (PFNGLDELETEPROGRAMSARBPROC)load("glDeleteProgramsARB"); + glad_glGenProgramsARB = (PFNGLGENPROGRAMSARBPROC)load("glGenProgramsARB"); + glad_glProgramEnvParameter4dARB = (PFNGLPROGRAMENVPARAMETER4DARBPROC)load("glProgramEnvParameter4dARB"); + glad_glProgramEnvParameter4dvARB = (PFNGLPROGRAMENVPARAMETER4DVARBPROC)load("glProgramEnvParameter4dvARB"); + glad_glProgramEnvParameter4fARB = (PFNGLPROGRAMENVPARAMETER4FARBPROC)load("glProgramEnvParameter4fARB"); + glad_glProgramEnvParameter4fvARB = (PFNGLPROGRAMENVPARAMETER4FVARBPROC)load("glProgramEnvParameter4fvARB"); + glad_glProgramLocalParameter4dARB = (PFNGLPROGRAMLOCALPARAMETER4DARBPROC)load("glProgramLocalParameter4dARB"); + glad_glProgramLocalParameter4dvARB = (PFNGLPROGRAMLOCALPARAMETER4DVARBPROC)load("glProgramLocalParameter4dvARB"); + glad_glProgramLocalParameter4fARB = (PFNGLPROGRAMLOCALPARAMETER4FARBPROC)load("glProgramLocalParameter4fARB"); + glad_glProgramLocalParameter4fvARB = (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC)load("glProgramLocalParameter4fvARB"); + glad_glGetProgramEnvParameterdvARB = (PFNGLGETPROGRAMENVPARAMETERDVARBPROC)load("glGetProgramEnvParameterdvARB"); + glad_glGetProgramEnvParameterfvARB = (PFNGLGETPROGRAMENVPARAMETERFVARBPROC)load("glGetProgramEnvParameterfvARB"); + glad_glGetProgramLocalParameterdvARB = (PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC)load("glGetProgramLocalParameterdvARB"); + glad_glGetProgramLocalParameterfvARB = (PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC)load("glGetProgramLocalParameterfvARB"); + glad_glGetProgramivARB = (PFNGLGETPROGRAMIVARBPROC)load("glGetProgramivARB"); + glad_glGetProgramStringARB = (PFNGLGETPROGRAMSTRINGARBPROC)load("glGetProgramStringARB"); + glad_glGetVertexAttribdvARB = (PFNGLGETVERTEXATTRIBDVARBPROC)load("glGetVertexAttribdvARB"); + glad_glGetVertexAttribfvARB = (PFNGLGETVERTEXATTRIBFVARBPROC)load("glGetVertexAttribfvARB"); + glad_glGetVertexAttribivARB = (PFNGLGETVERTEXATTRIBIVARBPROC)load("glGetVertexAttribivARB"); + glad_glGetVertexAttribPointervARB = (PFNGLGETVERTEXATTRIBPOINTERVARBPROC)load("glGetVertexAttribPointervARB"); + glad_glIsProgramARB = (PFNGLISPROGRAMARBPROC)load("glIsProgramARB"); +} +static void load_GL_ARB_vertex_buffer_object(GLADloadproc load) { + if(!GLAD_GL_ARB_vertex_buffer_object) return; + glad_glBindBufferARB = (PFNGLBINDBUFFERARBPROC)load("glBindBufferARB"); + glad_glDeleteBuffersARB = (PFNGLDELETEBUFFERSARBPROC)load("glDeleteBuffersARB"); + glad_glGenBuffersARB = (PFNGLGENBUFFERSARBPROC)load("glGenBuffersARB"); + glad_glIsBufferARB = (PFNGLISBUFFERARBPROC)load("glIsBufferARB"); + glad_glBufferDataARB = (PFNGLBUFFERDATAARBPROC)load("glBufferDataARB"); + glad_glBufferSubDataARB = (PFNGLBUFFERSUBDATAARBPROC)load("glBufferSubDataARB"); + glad_glGetBufferSubDataARB = (PFNGLGETBUFFERSUBDATAARBPROC)load("glGetBufferSubDataARB"); + glad_glMapBufferARB = (PFNGLMAPBUFFERARBPROC)load("glMapBufferARB"); + glad_glUnmapBufferARB = (PFNGLUNMAPBUFFERARBPROC)load("glUnmapBufferARB"); + glad_glGetBufferParameterivARB = (PFNGLGETBUFFERPARAMETERIVARBPROC)load("glGetBufferParameterivARB"); + glad_glGetBufferPointervARB = (PFNGLGETBUFFERPOINTERVARBPROC)load("glGetBufferPointervARB"); +} +static void load_GL_NV_vertex_array_range(GLADloadproc load) { + if(!GLAD_GL_NV_vertex_array_range) return; + glad_glFlushVertexArrayRangeNV = (PFNGLFLUSHVERTEXARRAYRANGENVPROC)load("glFlushVertexArrayRangeNV"); + glad_glVertexArrayRangeNV = (PFNGLVERTEXARRAYRANGENVPROC)load("glVertexArrayRangeNV"); +} +static void load_GL_SGIX_fragment_lighting(GLADloadproc load) { + if(!GLAD_GL_SGIX_fragment_lighting) return; + glad_glFragmentColorMaterialSGIX = (PFNGLFRAGMENTCOLORMATERIALSGIXPROC)load("glFragmentColorMaterialSGIX"); + glad_glFragmentLightfSGIX = (PFNGLFRAGMENTLIGHTFSGIXPROC)load("glFragmentLightfSGIX"); + glad_glFragmentLightfvSGIX = (PFNGLFRAGMENTLIGHTFVSGIXPROC)load("glFragmentLightfvSGIX"); + glad_glFragmentLightiSGIX = (PFNGLFRAGMENTLIGHTISGIXPROC)load("glFragmentLightiSGIX"); + glad_glFragmentLightivSGIX = (PFNGLFRAGMENTLIGHTIVSGIXPROC)load("glFragmentLightivSGIX"); + glad_glFragmentLightModelfSGIX = (PFNGLFRAGMENTLIGHTMODELFSGIXPROC)load("glFragmentLightModelfSGIX"); + glad_glFragmentLightModelfvSGIX = (PFNGLFRAGMENTLIGHTMODELFVSGIXPROC)load("glFragmentLightModelfvSGIX"); + glad_glFragmentLightModeliSGIX = (PFNGLFRAGMENTLIGHTMODELISGIXPROC)load("glFragmentLightModeliSGIX"); + glad_glFragmentLightModelivSGIX = (PFNGLFRAGMENTLIGHTMODELIVSGIXPROC)load("glFragmentLightModelivSGIX"); + glad_glFragmentMaterialfSGIX = (PFNGLFRAGMENTMATERIALFSGIXPROC)load("glFragmentMaterialfSGIX"); + glad_glFragmentMaterialfvSGIX = (PFNGLFRAGMENTMATERIALFVSGIXPROC)load("glFragmentMaterialfvSGIX"); + glad_glFragmentMaterialiSGIX = (PFNGLFRAGMENTMATERIALISGIXPROC)load("glFragmentMaterialiSGIX"); + glad_glFragmentMaterialivSGIX = (PFNGLFRAGMENTMATERIALIVSGIXPROC)load("glFragmentMaterialivSGIX"); + glad_glGetFragmentLightfvSGIX = (PFNGLGETFRAGMENTLIGHTFVSGIXPROC)load("glGetFragmentLightfvSGIX"); + glad_glGetFragmentLightivSGIX = (PFNGLGETFRAGMENTLIGHTIVSGIXPROC)load("glGetFragmentLightivSGIX"); + glad_glGetFragmentMaterialfvSGIX = (PFNGLGETFRAGMENTMATERIALFVSGIXPROC)load("glGetFragmentMaterialfvSGIX"); + glad_glGetFragmentMaterialivSGIX = (PFNGLGETFRAGMENTMATERIALIVSGIXPROC)load("glGetFragmentMaterialivSGIX"); + glad_glLightEnviSGIX = (PFNGLLIGHTENVISGIXPROC)load("glLightEnviSGIX"); +} +static void load_GL_NV_framebuffer_multisample_coverage(GLADloadproc load) { + if(!GLAD_GL_NV_framebuffer_multisample_coverage) return; + glad_glRenderbufferStorageMultisampleCoverageNV = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC)load("glRenderbufferStorageMultisampleCoverageNV"); +} +static void load_GL_EXT_timer_query(GLADloadproc load) { + if(!GLAD_GL_EXT_timer_query) return; + glad_glGetQueryObjecti64vEXT = (PFNGLGETQUERYOBJECTI64VEXTPROC)load("glGetQueryObjecti64vEXT"); + glad_glGetQueryObjectui64vEXT = (PFNGLGETQUERYOBJECTUI64VEXTPROC)load("glGetQueryObjectui64vEXT"); +} +static void load_GL_NV_bindless_texture(GLADloadproc load) { + if(!GLAD_GL_NV_bindless_texture) return; + glad_glGetTextureHandleNV = (PFNGLGETTEXTUREHANDLENVPROC)load("glGetTextureHandleNV"); + glad_glGetTextureSamplerHandleNV = (PFNGLGETTEXTURESAMPLERHANDLENVPROC)load("glGetTextureSamplerHandleNV"); + glad_glMakeTextureHandleResidentNV = (PFNGLMAKETEXTUREHANDLERESIDENTNVPROC)load("glMakeTextureHandleResidentNV"); + glad_glMakeTextureHandleNonResidentNV = (PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC)load("glMakeTextureHandleNonResidentNV"); + glad_glGetImageHandleNV = (PFNGLGETIMAGEHANDLENVPROC)load("glGetImageHandleNV"); + glad_glMakeImageHandleResidentNV = (PFNGLMAKEIMAGEHANDLERESIDENTNVPROC)load("glMakeImageHandleResidentNV"); + glad_glMakeImageHandleNonResidentNV = (PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC)load("glMakeImageHandleNonResidentNV"); + glad_glUniformHandleui64NV = (PFNGLUNIFORMHANDLEUI64NVPROC)load("glUniformHandleui64NV"); + glad_glUniformHandleui64vNV = (PFNGLUNIFORMHANDLEUI64VNVPROC)load("glUniformHandleui64vNV"); + glad_glProgramUniformHandleui64NV = (PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC)load("glProgramUniformHandleui64NV"); + glad_glProgramUniformHandleui64vNV = (PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC)load("glProgramUniformHandleui64vNV"); + glad_glIsTextureHandleResidentNV = (PFNGLISTEXTUREHANDLERESIDENTNVPROC)load("glIsTextureHandleResidentNV"); + glad_glIsImageHandleResidentNV = (PFNGLISIMAGEHANDLERESIDENTNVPROC)load("glIsImageHandleResidentNV"); +} +static void load_GL_KHR_debug(GLADloadproc load) { + if(!GLAD_GL_KHR_debug) return; + glad_glDebugMessageControl = (PFNGLDEBUGMESSAGECONTROLPROC)load("glDebugMessageControl"); + glad_glDebugMessageInsert = (PFNGLDEBUGMESSAGEINSERTPROC)load("glDebugMessageInsert"); + glad_glDebugMessageCallback = (PFNGLDEBUGMESSAGECALLBACKPROC)load("glDebugMessageCallback"); + glad_glGetDebugMessageLog = (PFNGLGETDEBUGMESSAGELOGPROC)load("glGetDebugMessageLog"); + glad_glPushDebugGroup = (PFNGLPUSHDEBUGGROUPPROC)load("glPushDebugGroup"); + glad_glPopDebugGroup = (PFNGLPOPDEBUGGROUPPROC)load("glPopDebugGroup"); + glad_glObjectLabel = (PFNGLOBJECTLABELPROC)load("glObjectLabel"); + glad_glGetObjectLabel = (PFNGLGETOBJECTLABELPROC)load("glGetObjectLabel"); + glad_glObjectPtrLabel = (PFNGLOBJECTPTRLABELPROC)load("glObjectPtrLabel"); + glad_glGetObjectPtrLabel = (PFNGLGETOBJECTPTRLABELPROC)load("glGetObjectPtrLabel"); + glad_glGetPointerv = (PFNGLGETPOINTERVPROC)load("glGetPointerv"); + glad_glDebugMessageControlKHR = (PFNGLDEBUGMESSAGECONTROLKHRPROC)load("glDebugMessageControlKHR"); + glad_glDebugMessageInsertKHR = (PFNGLDEBUGMESSAGEINSERTKHRPROC)load("glDebugMessageInsertKHR"); + glad_glDebugMessageCallbackKHR = (PFNGLDEBUGMESSAGECALLBACKKHRPROC)load("glDebugMessageCallbackKHR"); + glad_glGetDebugMessageLogKHR = (PFNGLGETDEBUGMESSAGELOGKHRPROC)load("glGetDebugMessageLogKHR"); + glad_glPushDebugGroupKHR = (PFNGLPUSHDEBUGGROUPKHRPROC)load("glPushDebugGroupKHR"); + glad_glPopDebugGroupKHR = (PFNGLPOPDEBUGGROUPKHRPROC)load("glPopDebugGroupKHR"); + glad_glObjectLabelKHR = (PFNGLOBJECTLABELKHRPROC)load("glObjectLabelKHR"); + glad_glGetObjectLabelKHR = (PFNGLGETOBJECTLABELKHRPROC)load("glGetObjectLabelKHR"); + glad_glObjectPtrLabelKHR = (PFNGLOBJECTPTRLABELKHRPROC)load("glObjectPtrLabelKHR"); + glad_glGetObjectPtrLabelKHR = (PFNGLGETOBJECTPTRLABELKHRPROC)load("glGetObjectPtrLabelKHR"); + glad_glGetPointervKHR = (PFNGLGETPOINTERVKHRPROC)load("glGetPointervKHR"); +} +static void load_GL_ATI_vertex_attrib_array_object(GLADloadproc load) { + if(!GLAD_GL_ATI_vertex_attrib_array_object) return; + glad_glVertexAttribArrayObjectATI = (PFNGLVERTEXATTRIBARRAYOBJECTATIPROC)load("glVertexAttribArrayObjectATI"); + glad_glGetVertexAttribArrayObjectfvATI = (PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC)load("glGetVertexAttribArrayObjectfvATI"); + glad_glGetVertexAttribArrayObjectivATI = (PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC)load("glGetVertexAttribArrayObjectivATI"); +} +static void load_GL_EXT_geometry_shader4(GLADloadproc load) { + if(!GLAD_GL_EXT_geometry_shader4) return; + glad_glProgramParameteriEXT = (PFNGLPROGRAMPARAMETERIEXTPROC)load("glProgramParameteriEXT"); +} +static void load_GL_EXT_bindable_uniform(GLADloadproc load) { + if(!GLAD_GL_EXT_bindable_uniform) return; + glad_glUniformBufferEXT = (PFNGLUNIFORMBUFFEREXTPROC)load("glUniformBufferEXT"); + glad_glGetUniformBufferSizeEXT = (PFNGLGETUNIFORMBUFFERSIZEEXTPROC)load("glGetUniformBufferSizeEXT"); + glad_glGetUniformOffsetEXT = (PFNGLGETUNIFORMOFFSETEXTPROC)load("glGetUniformOffsetEXT"); +} +static void load_GL_KHR_blend_equation_advanced(GLADloadproc load) { + if(!GLAD_GL_KHR_blend_equation_advanced) return; + glad_glBlendBarrierKHR = (PFNGLBLENDBARRIERKHRPROC)load("glBlendBarrierKHR"); +} +static void load_GL_ATI_element_array(GLADloadproc load) { + if(!GLAD_GL_ATI_element_array) return; + glad_glElementPointerATI = (PFNGLELEMENTPOINTERATIPROC)load("glElementPointerATI"); + glad_glDrawElementArrayATI = (PFNGLDRAWELEMENTARRAYATIPROC)load("glDrawElementArrayATI"); + glad_glDrawRangeElementArrayATI = (PFNGLDRAWRANGEELEMENTARRAYATIPROC)load("glDrawRangeElementArrayATI"); +} +static void load_GL_SGIX_reference_plane(GLADloadproc load) { + if(!GLAD_GL_SGIX_reference_plane) return; + glad_glReferencePlaneSGIX = (PFNGLREFERENCEPLANESGIXPROC)load("glReferencePlaneSGIX"); +} +static void load_GL_EXT_stencil_two_side(GLADloadproc load) { + if(!GLAD_GL_EXT_stencil_two_side) return; + glad_glActiveStencilFaceEXT = (PFNGLACTIVESTENCILFACEEXTPROC)load("glActiveStencilFaceEXT"); +} +static void load_GL_NV_explicit_multisample(GLADloadproc load) { + if(!GLAD_GL_NV_explicit_multisample) return; + glad_glGetMultisamplefvNV = (PFNGLGETMULTISAMPLEFVNVPROC)load("glGetMultisamplefvNV"); + glad_glSampleMaskIndexedNV = (PFNGLSAMPLEMASKINDEXEDNVPROC)load("glSampleMaskIndexedNV"); + glad_glTexRenderbufferNV = (PFNGLTEXRENDERBUFFERNVPROC)load("glTexRenderbufferNV"); +} +static void load_GL_IBM_static_data(GLADloadproc load) { + if(!GLAD_GL_IBM_static_data) return; + glad_glFlushStaticDataIBM = (PFNGLFLUSHSTATICDATAIBMPROC)load("glFlushStaticDataIBM"); +} +static void load_GL_EXT_texture_perturb_normal(GLADloadproc load) { + if(!GLAD_GL_EXT_texture_perturb_normal) return; + glad_glTextureNormalEXT = (PFNGLTEXTURENORMALEXTPROC)load("glTextureNormalEXT"); +} +static void load_GL_EXT_point_parameters(GLADloadproc load) { + if(!GLAD_GL_EXT_point_parameters) return; + glad_glPointParameterfEXT = (PFNGLPOINTPARAMETERFEXTPROC)load("glPointParameterfEXT"); + glad_glPointParameterfvEXT = (PFNGLPOINTPARAMETERFVEXTPROC)load("glPointParameterfvEXT"); +} +static void load_GL_PGI_misc_hints(GLADloadproc load) { + if(!GLAD_GL_PGI_misc_hints) return; + glad_glHintPGI = (PFNGLHINTPGIPROC)load("glHintPGI"); +} +static void load_GL_ARB_vertex_shader(GLADloadproc load) { + if(!GLAD_GL_ARB_vertex_shader) return; + glad_glVertexAttrib1fARB = (PFNGLVERTEXATTRIB1FARBPROC)load("glVertexAttrib1fARB"); + glad_glVertexAttrib1sARB = (PFNGLVERTEXATTRIB1SARBPROC)load("glVertexAttrib1sARB"); + glad_glVertexAttrib1dARB = (PFNGLVERTEXATTRIB1DARBPROC)load("glVertexAttrib1dARB"); + glad_glVertexAttrib2fARB = (PFNGLVERTEXATTRIB2FARBPROC)load("glVertexAttrib2fARB"); + glad_glVertexAttrib2sARB = (PFNGLVERTEXATTRIB2SARBPROC)load("glVertexAttrib2sARB"); + glad_glVertexAttrib2dARB = (PFNGLVERTEXATTRIB2DARBPROC)load("glVertexAttrib2dARB"); + glad_glVertexAttrib3fARB = (PFNGLVERTEXATTRIB3FARBPROC)load("glVertexAttrib3fARB"); + glad_glVertexAttrib3sARB = (PFNGLVERTEXATTRIB3SARBPROC)load("glVertexAttrib3sARB"); + glad_glVertexAttrib3dARB = (PFNGLVERTEXATTRIB3DARBPROC)load("glVertexAttrib3dARB"); + glad_glVertexAttrib4fARB = (PFNGLVERTEXATTRIB4FARBPROC)load("glVertexAttrib4fARB"); + glad_glVertexAttrib4sARB = (PFNGLVERTEXATTRIB4SARBPROC)load("glVertexAttrib4sARB"); + glad_glVertexAttrib4dARB = (PFNGLVERTEXATTRIB4DARBPROC)load("glVertexAttrib4dARB"); + glad_glVertexAttrib4NubARB = (PFNGLVERTEXATTRIB4NUBARBPROC)load("glVertexAttrib4NubARB"); + glad_glVertexAttrib1fvARB = (PFNGLVERTEXATTRIB1FVARBPROC)load("glVertexAttrib1fvARB"); + glad_glVertexAttrib1svARB = (PFNGLVERTEXATTRIB1SVARBPROC)load("glVertexAttrib1svARB"); + glad_glVertexAttrib1dvARB = (PFNGLVERTEXATTRIB1DVARBPROC)load("glVertexAttrib1dvARB"); + glad_glVertexAttrib2fvARB = (PFNGLVERTEXATTRIB2FVARBPROC)load("glVertexAttrib2fvARB"); + glad_glVertexAttrib2svARB = (PFNGLVERTEXATTRIB2SVARBPROC)load("glVertexAttrib2svARB"); + glad_glVertexAttrib2dvARB = (PFNGLVERTEXATTRIB2DVARBPROC)load("glVertexAttrib2dvARB"); + glad_glVertexAttrib3fvARB = (PFNGLVERTEXATTRIB3FVARBPROC)load("glVertexAttrib3fvARB"); + glad_glVertexAttrib3svARB = (PFNGLVERTEXATTRIB3SVARBPROC)load("glVertexAttrib3svARB"); + glad_glVertexAttrib3dvARB = (PFNGLVERTEXATTRIB3DVARBPROC)load("glVertexAttrib3dvARB"); + glad_glVertexAttrib4fvARB = (PFNGLVERTEXATTRIB4FVARBPROC)load("glVertexAttrib4fvARB"); + glad_glVertexAttrib4svARB = (PFNGLVERTEXATTRIB4SVARBPROC)load("glVertexAttrib4svARB"); + glad_glVertexAttrib4dvARB = (PFNGLVERTEXATTRIB4DVARBPROC)load("glVertexAttrib4dvARB"); + glad_glVertexAttrib4ivARB = (PFNGLVERTEXATTRIB4IVARBPROC)load("glVertexAttrib4ivARB"); + glad_glVertexAttrib4bvARB = (PFNGLVERTEXATTRIB4BVARBPROC)load("glVertexAttrib4bvARB"); + glad_glVertexAttrib4ubvARB = (PFNGLVERTEXATTRIB4UBVARBPROC)load("glVertexAttrib4ubvARB"); + glad_glVertexAttrib4usvARB = (PFNGLVERTEXATTRIB4USVARBPROC)load("glVertexAttrib4usvARB"); + glad_glVertexAttrib4uivARB = (PFNGLVERTEXATTRIB4UIVARBPROC)load("glVertexAttrib4uivARB"); + glad_glVertexAttrib4NbvARB = (PFNGLVERTEXATTRIB4NBVARBPROC)load("glVertexAttrib4NbvARB"); + glad_glVertexAttrib4NsvARB = (PFNGLVERTEXATTRIB4NSVARBPROC)load("glVertexAttrib4NsvARB"); + glad_glVertexAttrib4NivARB = (PFNGLVERTEXATTRIB4NIVARBPROC)load("glVertexAttrib4NivARB"); + glad_glVertexAttrib4NubvARB = (PFNGLVERTEXATTRIB4NUBVARBPROC)load("glVertexAttrib4NubvARB"); + glad_glVertexAttrib4NusvARB = (PFNGLVERTEXATTRIB4NUSVARBPROC)load("glVertexAttrib4NusvARB"); + glad_glVertexAttrib4NuivARB = (PFNGLVERTEXATTRIB4NUIVARBPROC)load("glVertexAttrib4NuivARB"); + glad_glVertexAttribPointerARB = (PFNGLVERTEXATTRIBPOINTERARBPROC)load("glVertexAttribPointerARB"); + glad_glEnableVertexAttribArrayARB = (PFNGLENABLEVERTEXATTRIBARRAYARBPROC)load("glEnableVertexAttribArrayARB"); + glad_glDisableVertexAttribArrayARB = (PFNGLDISABLEVERTEXATTRIBARRAYARBPROC)load("glDisableVertexAttribArrayARB"); + glad_glBindAttribLocationARB = (PFNGLBINDATTRIBLOCATIONARBPROC)load("glBindAttribLocationARB"); + glad_glGetActiveAttribARB = (PFNGLGETACTIVEATTRIBARBPROC)load("glGetActiveAttribARB"); + glad_glGetAttribLocationARB = (PFNGLGETATTRIBLOCATIONARBPROC)load("glGetAttribLocationARB"); + glad_glGetVertexAttribdvARB = (PFNGLGETVERTEXATTRIBDVARBPROC)load("glGetVertexAttribdvARB"); + glad_glGetVertexAttribfvARB = (PFNGLGETVERTEXATTRIBFVARBPROC)load("glGetVertexAttribfvARB"); + glad_glGetVertexAttribivARB = (PFNGLGETVERTEXATTRIBIVARBPROC)load("glGetVertexAttribivARB"); + glad_glGetVertexAttribPointervARB = (PFNGLGETVERTEXATTRIBPOINTERVARBPROC)load("glGetVertexAttribPointervARB"); +} +static void load_GL_ARB_tessellation_shader(GLADloadproc load) { + if(!GLAD_GL_ARB_tessellation_shader) return; + glad_glPatchParameteri = (PFNGLPATCHPARAMETERIPROC)load("glPatchParameteri"); + glad_glPatchParameterfv = (PFNGLPATCHPARAMETERFVPROC)load("glPatchParameterfv"); +} +static void load_GL_EXT_draw_buffers2(GLADloadproc load) { + if(!GLAD_GL_EXT_draw_buffers2) return; + glad_glColorMaskIndexedEXT = (PFNGLCOLORMASKINDEXEDEXTPROC)load("glColorMaskIndexedEXT"); + glad_glGetBooleanIndexedvEXT = (PFNGLGETBOOLEANINDEXEDVEXTPROC)load("glGetBooleanIndexedvEXT"); + glad_glGetIntegerIndexedvEXT = (PFNGLGETINTEGERINDEXEDVEXTPROC)load("glGetIntegerIndexedvEXT"); + glad_glEnableIndexedEXT = (PFNGLENABLEINDEXEDEXTPROC)load("glEnableIndexedEXT"); + glad_glDisableIndexedEXT = (PFNGLDISABLEINDEXEDEXTPROC)load("glDisableIndexedEXT"); + glad_glIsEnabledIndexedEXT = (PFNGLISENABLEDINDEXEDEXTPROC)load("glIsEnabledIndexedEXT"); +} +static void load_GL_ARB_vertex_attrib_64bit(GLADloadproc load) { + if(!GLAD_GL_ARB_vertex_attrib_64bit) return; + 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"); +} +static void load_GL_EXT_texture_filter_minmax(GLADloadproc load) { + if(!GLAD_GL_EXT_texture_filter_minmax) return; + glad_glRasterSamplesEXT = (PFNGLRASTERSAMPLESEXTPROC)load("glRasterSamplesEXT"); +} +static void load_GL_AMD_interleaved_elements(GLADloadproc load) { + if(!GLAD_GL_AMD_interleaved_elements) return; + glad_glVertexAttribParameteriAMD = (PFNGLVERTEXATTRIBPARAMETERIAMDPROC)load("glVertexAttribParameteriAMD"); +} +static void load_GL_ARB_fragment_program(GLADloadproc load) { + if(!GLAD_GL_ARB_fragment_program) return; + glad_glProgramStringARB = (PFNGLPROGRAMSTRINGARBPROC)load("glProgramStringARB"); + glad_glBindProgramARB = (PFNGLBINDPROGRAMARBPROC)load("glBindProgramARB"); + glad_glDeleteProgramsARB = (PFNGLDELETEPROGRAMSARBPROC)load("glDeleteProgramsARB"); + glad_glGenProgramsARB = (PFNGLGENPROGRAMSARBPROC)load("glGenProgramsARB"); + glad_glProgramEnvParameter4dARB = (PFNGLPROGRAMENVPARAMETER4DARBPROC)load("glProgramEnvParameter4dARB"); + glad_glProgramEnvParameter4dvARB = (PFNGLPROGRAMENVPARAMETER4DVARBPROC)load("glProgramEnvParameter4dvARB"); + glad_glProgramEnvParameter4fARB = (PFNGLPROGRAMENVPARAMETER4FARBPROC)load("glProgramEnvParameter4fARB"); + glad_glProgramEnvParameter4fvARB = (PFNGLPROGRAMENVPARAMETER4FVARBPROC)load("glProgramEnvParameter4fvARB"); + glad_glProgramLocalParameter4dARB = (PFNGLPROGRAMLOCALPARAMETER4DARBPROC)load("glProgramLocalParameter4dARB"); + glad_glProgramLocalParameter4dvARB = (PFNGLPROGRAMLOCALPARAMETER4DVARBPROC)load("glProgramLocalParameter4dvARB"); + glad_glProgramLocalParameter4fARB = (PFNGLPROGRAMLOCALPARAMETER4FARBPROC)load("glProgramLocalParameter4fARB"); + glad_glProgramLocalParameter4fvARB = (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC)load("glProgramLocalParameter4fvARB"); + glad_glGetProgramEnvParameterdvARB = (PFNGLGETPROGRAMENVPARAMETERDVARBPROC)load("glGetProgramEnvParameterdvARB"); + glad_glGetProgramEnvParameterfvARB = (PFNGLGETPROGRAMENVPARAMETERFVARBPROC)load("glGetProgramEnvParameterfvARB"); + glad_glGetProgramLocalParameterdvARB = (PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC)load("glGetProgramLocalParameterdvARB"); + glad_glGetProgramLocalParameterfvARB = (PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC)load("glGetProgramLocalParameterfvARB"); + glad_glGetProgramivARB = (PFNGLGETPROGRAMIVARBPROC)load("glGetProgramivARB"); + glad_glGetProgramStringARB = (PFNGLGETPROGRAMSTRINGARBPROC)load("glGetProgramStringARB"); + glad_glIsProgramARB = (PFNGLISPROGRAMARBPROC)load("glIsProgramARB"); +} +static void load_GL_ARB_texture_storage(GLADloadproc load) { + if(!GLAD_GL_ARB_texture_storage) return; + glad_glTexStorage1D = (PFNGLTEXSTORAGE1DPROC)load("glTexStorage1D"); + glad_glTexStorage2D = (PFNGLTEXSTORAGE2DPROC)load("glTexStorage2D"); + glad_glTexStorage3D = (PFNGLTEXSTORAGE3DPROC)load("glTexStorage3D"); +} +static void load_GL_ARB_copy_image(GLADloadproc load) { + if(!GLAD_GL_ARB_copy_image) return; + glad_glCopyImageSubData = (PFNGLCOPYIMAGESUBDATAPROC)load("glCopyImageSubData"); +} +static void load_GL_SGIS_pixel_texture(GLADloadproc load) { + if(!GLAD_GL_SGIS_pixel_texture) return; + glad_glPixelTexGenParameteriSGIS = (PFNGLPIXELTEXGENPARAMETERISGISPROC)load("glPixelTexGenParameteriSGIS"); + glad_glPixelTexGenParameterivSGIS = (PFNGLPIXELTEXGENPARAMETERIVSGISPROC)load("glPixelTexGenParameterivSGIS"); + glad_glPixelTexGenParameterfSGIS = (PFNGLPIXELTEXGENPARAMETERFSGISPROC)load("glPixelTexGenParameterfSGIS"); + glad_glPixelTexGenParameterfvSGIS = (PFNGLPIXELTEXGENPARAMETERFVSGISPROC)load("glPixelTexGenParameterfvSGIS"); + glad_glGetPixelTexGenParameterivSGIS = (PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC)load("glGetPixelTexGenParameterivSGIS"); + glad_glGetPixelTexGenParameterfvSGIS = (PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC)load("glGetPixelTexGenParameterfvSGIS"); +} +static void load_GL_SGIX_instruments(GLADloadproc load) { + if(!GLAD_GL_SGIX_instruments) return; + glad_glGetInstrumentsSGIX = (PFNGLGETINSTRUMENTSSGIXPROC)load("glGetInstrumentsSGIX"); + glad_glInstrumentsBufferSGIX = (PFNGLINSTRUMENTSBUFFERSGIXPROC)load("glInstrumentsBufferSGIX"); + glad_glPollInstrumentsSGIX = (PFNGLPOLLINSTRUMENTSSGIXPROC)load("glPollInstrumentsSGIX"); + glad_glReadInstrumentsSGIX = (PFNGLREADINSTRUMENTSSGIXPROC)load("glReadInstrumentsSGIX"); + glad_glStartInstrumentsSGIX = (PFNGLSTARTINSTRUMENTSSGIXPROC)load("glStartInstrumentsSGIX"); + glad_glStopInstrumentsSGIX = (PFNGLSTOPINSTRUMENTSSGIXPROC)load("glStopInstrumentsSGIX"); +} +static void load_GL_ARB_shader_storage_buffer_object(GLADloadproc load) { + if(!GLAD_GL_ARB_shader_storage_buffer_object) return; + glad_glShaderStorageBlockBinding = (PFNGLSHADERSTORAGEBLOCKBINDINGPROC)load("glShaderStorageBlockBinding"); +} +static void load_GL_EXT_blend_minmax(GLADloadproc load) { + if(!GLAD_GL_EXT_blend_minmax) return; + glad_glBlendEquationEXT = (PFNGLBLENDEQUATIONEXTPROC)load("glBlendEquationEXT"); +} +static void load_GL_ARB_base_instance(GLADloadproc load) { + if(!GLAD_GL_ARB_base_instance) return; + glad_glDrawArraysInstancedBaseInstance = (PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC)load("glDrawArraysInstancedBaseInstance"); + glad_glDrawElementsInstancedBaseInstance = (PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC)load("glDrawElementsInstancedBaseInstance"); + glad_glDrawElementsInstancedBaseVertexBaseInstance = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC)load("glDrawElementsInstancedBaseVertexBaseInstance"); +} +static void load_GL_ARB_ES3_1_compatibility(GLADloadproc load) { + if(!GLAD_GL_ARB_ES3_1_compatibility) return; + glad_glMemoryBarrierByRegion = (PFNGLMEMORYBARRIERBYREGIONPROC)load("glMemoryBarrierByRegion"); +} +static void load_GL_EXT_texture_integer(GLADloadproc load) { + if(!GLAD_GL_EXT_texture_integer) return; + glad_glTexParameterIivEXT = (PFNGLTEXPARAMETERIIVEXTPROC)load("glTexParameterIivEXT"); + glad_glTexParameterIuivEXT = (PFNGLTEXPARAMETERIUIVEXTPROC)load("glTexParameterIuivEXT"); + glad_glGetTexParameterIivEXT = (PFNGLGETTEXPARAMETERIIVEXTPROC)load("glGetTexParameterIivEXT"); + glad_glGetTexParameterIuivEXT = (PFNGLGETTEXPARAMETERIUIVEXTPROC)load("glGetTexParameterIuivEXT"); + glad_glClearColorIiEXT = (PFNGLCLEARCOLORIIEXTPROC)load("glClearColorIiEXT"); + glad_glClearColorIuiEXT = (PFNGLCLEARCOLORIUIEXTPROC)load("glClearColorIuiEXT"); +} +static void load_GL_ARB_texture_multisample(GLADloadproc load) { + if(!GLAD_GL_ARB_texture_multisample) return; + glad_glTexImage2DMultisample = (PFNGLTEXIMAGE2DMULTISAMPLEPROC)load("glTexImage2DMultisample"); + glad_glTexImage3DMultisample = (PFNGLTEXIMAGE3DMULTISAMPLEPROC)load("glTexImage3DMultisample"); + glad_glGetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC)load("glGetMultisamplefv"); + glad_glSampleMaski = (PFNGLSAMPLEMASKIPROC)load("glSampleMaski"); +} +static void load_GL_AMD_gpu_shader_int64(GLADloadproc load) { + if(!GLAD_GL_AMD_gpu_shader_int64) return; + glad_glUniform1i64NV = (PFNGLUNIFORM1I64NVPROC)load("glUniform1i64NV"); + glad_glUniform2i64NV = (PFNGLUNIFORM2I64NVPROC)load("glUniform2i64NV"); + glad_glUniform3i64NV = (PFNGLUNIFORM3I64NVPROC)load("glUniform3i64NV"); + glad_glUniform4i64NV = (PFNGLUNIFORM4I64NVPROC)load("glUniform4i64NV"); + glad_glUniform1i64vNV = (PFNGLUNIFORM1I64VNVPROC)load("glUniform1i64vNV"); + glad_glUniform2i64vNV = (PFNGLUNIFORM2I64VNVPROC)load("glUniform2i64vNV"); + glad_glUniform3i64vNV = (PFNGLUNIFORM3I64VNVPROC)load("glUniform3i64vNV"); + glad_glUniform4i64vNV = (PFNGLUNIFORM4I64VNVPROC)load("glUniform4i64vNV"); + glad_glUniform1ui64NV = (PFNGLUNIFORM1UI64NVPROC)load("glUniform1ui64NV"); + glad_glUniform2ui64NV = (PFNGLUNIFORM2UI64NVPROC)load("glUniform2ui64NV"); + glad_glUniform3ui64NV = (PFNGLUNIFORM3UI64NVPROC)load("glUniform3ui64NV"); + glad_glUniform4ui64NV = (PFNGLUNIFORM4UI64NVPROC)load("glUniform4ui64NV"); + glad_glUniform1ui64vNV = (PFNGLUNIFORM1UI64VNVPROC)load("glUniform1ui64vNV"); + glad_glUniform2ui64vNV = (PFNGLUNIFORM2UI64VNVPROC)load("glUniform2ui64vNV"); + glad_glUniform3ui64vNV = (PFNGLUNIFORM3UI64VNVPROC)load("glUniform3ui64vNV"); + glad_glUniform4ui64vNV = (PFNGLUNIFORM4UI64VNVPROC)load("glUniform4ui64vNV"); + glad_glGetUniformi64vNV = (PFNGLGETUNIFORMI64VNVPROC)load("glGetUniformi64vNV"); + glad_glGetUniformui64vNV = (PFNGLGETUNIFORMUI64VNVPROC)load("glGetUniformui64vNV"); + glad_glProgramUniform1i64NV = (PFNGLPROGRAMUNIFORM1I64NVPROC)load("glProgramUniform1i64NV"); + glad_glProgramUniform2i64NV = (PFNGLPROGRAMUNIFORM2I64NVPROC)load("glProgramUniform2i64NV"); + glad_glProgramUniform3i64NV = (PFNGLPROGRAMUNIFORM3I64NVPROC)load("glProgramUniform3i64NV"); + glad_glProgramUniform4i64NV = (PFNGLPROGRAMUNIFORM4I64NVPROC)load("glProgramUniform4i64NV"); + glad_glProgramUniform1i64vNV = (PFNGLPROGRAMUNIFORM1I64VNVPROC)load("glProgramUniform1i64vNV"); + glad_glProgramUniform2i64vNV = (PFNGLPROGRAMUNIFORM2I64VNVPROC)load("glProgramUniform2i64vNV"); + glad_glProgramUniform3i64vNV = (PFNGLPROGRAMUNIFORM3I64VNVPROC)load("glProgramUniform3i64vNV"); + glad_glProgramUniform4i64vNV = (PFNGLPROGRAMUNIFORM4I64VNVPROC)load("glProgramUniform4i64vNV"); + glad_glProgramUniform1ui64NV = (PFNGLPROGRAMUNIFORM1UI64NVPROC)load("glProgramUniform1ui64NV"); + glad_glProgramUniform2ui64NV = (PFNGLPROGRAMUNIFORM2UI64NVPROC)load("glProgramUniform2ui64NV"); + glad_glProgramUniform3ui64NV = (PFNGLPROGRAMUNIFORM3UI64NVPROC)load("glProgramUniform3ui64NV"); + glad_glProgramUniform4ui64NV = (PFNGLPROGRAMUNIFORM4UI64NVPROC)load("glProgramUniform4ui64NV"); + glad_glProgramUniform1ui64vNV = (PFNGLPROGRAMUNIFORM1UI64VNVPROC)load("glProgramUniform1ui64vNV"); + glad_glProgramUniform2ui64vNV = (PFNGLPROGRAMUNIFORM2UI64VNVPROC)load("glProgramUniform2ui64vNV"); + glad_glProgramUniform3ui64vNV = (PFNGLPROGRAMUNIFORM3UI64VNVPROC)load("glProgramUniform3ui64vNV"); + glad_glProgramUniform4ui64vNV = (PFNGLPROGRAMUNIFORM4UI64VNVPROC)load("glProgramUniform4ui64vNV"); +} +static void load_GL_AMD_vertex_shader_tessellator(GLADloadproc load) { + if(!GLAD_GL_AMD_vertex_shader_tessellator) return; + glad_glTessellationFactorAMD = (PFNGLTESSELLATIONFACTORAMDPROC)load("glTessellationFactorAMD"); + glad_glTessellationModeAMD = (PFNGLTESSELLATIONMODEAMDPROC)load("glTessellationModeAMD"); +} +static void load_GL_ARB_invalidate_subdata(GLADloadproc load) { + if(!GLAD_GL_ARB_invalidate_subdata) return; + glad_glInvalidateTexSubImage = (PFNGLINVALIDATETEXSUBIMAGEPROC)load("glInvalidateTexSubImage"); + glad_glInvalidateTexImage = (PFNGLINVALIDATETEXIMAGEPROC)load("glInvalidateTexImage"); + glad_glInvalidateBufferSubData = (PFNGLINVALIDATEBUFFERSUBDATAPROC)load("glInvalidateBufferSubData"); + glad_glInvalidateBufferData = (PFNGLINVALIDATEBUFFERDATAPROC)load("glInvalidateBufferData"); + glad_glInvalidateFramebuffer = (PFNGLINVALIDATEFRAMEBUFFERPROC)load("glInvalidateFramebuffer"); + glad_glInvalidateSubFramebuffer = (PFNGLINVALIDATESUBFRAMEBUFFERPROC)load("glInvalidateSubFramebuffer"); +} +static void load_GL_EXT_index_material(GLADloadproc load) { + if(!GLAD_GL_EXT_index_material) return; + glad_glIndexMaterialEXT = (PFNGLINDEXMATERIALEXTPROC)load("glIndexMaterialEXT"); +} +static void load_GL_INTEL_parallel_arrays(GLADloadproc load) { + if(!GLAD_GL_INTEL_parallel_arrays) return; + glad_glVertexPointervINTEL = (PFNGLVERTEXPOINTERVINTELPROC)load("glVertexPointervINTEL"); + glad_glNormalPointervINTEL = (PFNGLNORMALPOINTERVINTELPROC)load("glNormalPointervINTEL"); + glad_glColorPointervINTEL = (PFNGLCOLORPOINTERVINTELPROC)load("glColorPointervINTEL"); + glad_glTexCoordPointervINTEL = (PFNGLTEXCOORDPOINTERVINTELPROC)load("glTexCoordPointervINTEL"); +} +static void load_GL_ATI_draw_buffers(GLADloadproc load) { + if(!GLAD_GL_ATI_draw_buffers) return; + glad_glDrawBuffersATI = (PFNGLDRAWBUFFERSATIPROC)load("glDrawBuffersATI"); +} +static void load_GL_SGIX_pixel_texture(GLADloadproc load) { + if(!GLAD_GL_SGIX_pixel_texture) return; + glad_glPixelTexGenSGIX = (PFNGLPIXELTEXGENSGIXPROC)load("glPixelTexGenSGIX"); +} +static void load_GL_ARB_timer_query(GLADloadproc load) { + if(!GLAD_GL_ARB_timer_query) return; + glad_glQueryCounter = (PFNGLQUERYCOUNTERPROC)load("glQueryCounter"); + glad_glGetQueryObjecti64v = (PFNGLGETQUERYOBJECTI64VPROC)load("glGetQueryObjecti64v"); + glad_glGetQueryObjectui64v = (PFNGLGETQUERYOBJECTUI64VPROC)load("glGetQueryObjectui64v"); +} +static void load_GL_NV_parameter_buffer_object(GLADloadproc load) { + if(!GLAD_GL_NV_parameter_buffer_object) return; + glad_glProgramBufferParametersfvNV = (PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC)load("glProgramBufferParametersfvNV"); + glad_glProgramBufferParametersIivNV = (PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC)load("glProgramBufferParametersIivNV"); + glad_glProgramBufferParametersIuivNV = (PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC)load("glProgramBufferParametersIuivNV"); +} +static void load_GL_ARB_direct_state_access(GLADloadproc load) { + if(!GLAD_GL_ARB_direct_state_access) return; + glad_glCreateTransformFeedbacks = (PFNGLCREATETRANSFORMFEEDBACKSPROC)load("glCreateTransformFeedbacks"); + glad_glTransformFeedbackBufferBase = (PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC)load("glTransformFeedbackBufferBase"); + glad_glTransformFeedbackBufferRange = (PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC)load("glTransformFeedbackBufferRange"); + glad_glGetTransformFeedbackiv = (PFNGLGETTRANSFORMFEEDBACKIVPROC)load("glGetTransformFeedbackiv"); + glad_glGetTransformFeedbacki_v = (PFNGLGETTRANSFORMFEEDBACKI_VPROC)load("glGetTransformFeedbacki_v"); + glad_glGetTransformFeedbacki64_v = (PFNGLGETTRANSFORMFEEDBACKI64_VPROC)load("glGetTransformFeedbacki64_v"); + glad_glCreateBuffers = (PFNGLCREATEBUFFERSPROC)load("glCreateBuffers"); + glad_glNamedBufferStorage = (PFNGLNAMEDBUFFERSTORAGEPROC)load("glNamedBufferStorage"); + glad_glNamedBufferData = (PFNGLNAMEDBUFFERDATAPROC)load("glNamedBufferData"); + glad_glNamedBufferSubData = (PFNGLNAMEDBUFFERSUBDATAPROC)load("glNamedBufferSubData"); + glad_glCopyNamedBufferSubData = (PFNGLCOPYNAMEDBUFFERSUBDATAPROC)load("glCopyNamedBufferSubData"); + glad_glClearNamedBufferData = (PFNGLCLEARNAMEDBUFFERDATAPROC)load("glClearNamedBufferData"); + glad_glClearNamedBufferSubData = (PFNGLCLEARNAMEDBUFFERSUBDATAPROC)load("glClearNamedBufferSubData"); + glad_glMapNamedBuffer = (PFNGLMAPNAMEDBUFFERPROC)load("glMapNamedBuffer"); + glad_glMapNamedBufferRange = (PFNGLMAPNAMEDBUFFERRANGEPROC)load("glMapNamedBufferRange"); + glad_glUnmapNamedBuffer = (PFNGLUNMAPNAMEDBUFFERPROC)load("glUnmapNamedBuffer"); + glad_glFlushMappedNamedBufferRange = (PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC)load("glFlushMappedNamedBufferRange"); + glad_glGetNamedBufferParameteriv = (PFNGLGETNAMEDBUFFERPARAMETERIVPROC)load("glGetNamedBufferParameteriv"); + glad_glGetNamedBufferParameteri64v = (PFNGLGETNAMEDBUFFERPARAMETERI64VPROC)load("glGetNamedBufferParameteri64v"); + glad_glGetNamedBufferPointerv = (PFNGLGETNAMEDBUFFERPOINTERVPROC)load("glGetNamedBufferPointerv"); + glad_glGetNamedBufferSubData = (PFNGLGETNAMEDBUFFERSUBDATAPROC)load("glGetNamedBufferSubData"); + glad_glCreateFramebuffers = (PFNGLCREATEFRAMEBUFFERSPROC)load("glCreateFramebuffers"); + glad_glNamedFramebufferRenderbuffer = (PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC)load("glNamedFramebufferRenderbuffer"); + glad_glNamedFramebufferParameteri = (PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC)load("glNamedFramebufferParameteri"); + glad_glNamedFramebufferTexture = (PFNGLNAMEDFRAMEBUFFERTEXTUREPROC)load("glNamedFramebufferTexture"); + glad_glNamedFramebufferTextureLayer = (PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC)load("glNamedFramebufferTextureLayer"); + glad_glNamedFramebufferDrawBuffer = (PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC)load("glNamedFramebufferDrawBuffer"); + glad_glNamedFramebufferDrawBuffers = (PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC)load("glNamedFramebufferDrawBuffers"); + glad_glNamedFramebufferReadBuffer = (PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC)load("glNamedFramebufferReadBuffer"); + glad_glInvalidateNamedFramebufferData = (PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC)load("glInvalidateNamedFramebufferData"); + glad_glInvalidateNamedFramebufferSubData = (PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC)load("glInvalidateNamedFramebufferSubData"); + glad_glClearNamedFramebufferiv = (PFNGLCLEARNAMEDFRAMEBUFFERIVPROC)load("glClearNamedFramebufferiv"); + glad_glClearNamedFramebufferuiv = (PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC)load("glClearNamedFramebufferuiv"); + glad_glClearNamedFramebufferfv = (PFNGLCLEARNAMEDFRAMEBUFFERFVPROC)load("glClearNamedFramebufferfv"); + glad_glClearNamedFramebufferfi = (PFNGLCLEARNAMEDFRAMEBUFFERFIPROC)load("glClearNamedFramebufferfi"); + glad_glBlitNamedFramebuffer = (PFNGLBLITNAMEDFRAMEBUFFERPROC)load("glBlitNamedFramebuffer"); + glad_glCheckNamedFramebufferStatus = (PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC)load("glCheckNamedFramebufferStatus"); + glad_glGetNamedFramebufferParameteriv = (PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC)load("glGetNamedFramebufferParameteriv"); + glad_glGetNamedFramebufferAttachmentParameteriv = (PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC)load("glGetNamedFramebufferAttachmentParameteriv"); + glad_glCreateRenderbuffers = (PFNGLCREATERENDERBUFFERSPROC)load("glCreateRenderbuffers"); + glad_glNamedRenderbufferStorage = (PFNGLNAMEDRENDERBUFFERSTORAGEPROC)load("glNamedRenderbufferStorage"); + glad_glNamedRenderbufferStorageMultisample = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC)load("glNamedRenderbufferStorageMultisample"); + glad_glGetNamedRenderbufferParameteriv = (PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC)load("glGetNamedRenderbufferParameteriv"); + glad_glCreateTextures = (PFNGLCREATETEXTURESPROC)load("glCreateTextures"); + glad_glTextureBuffer = (PFNGLTEXTUREBUFFERPROC)load("glTextureBuffer"); + glad_glTextureBufferRange = (PFNGLTEXTUREBUFFERRANGEPROC)load("glTextureBufferRange"); + glad_glTextureStorage1D = (PFNGLTEXTURESTORAGE1DPROC)load("glTextureStorage1D"); + glad_glTextureStorage2D = (PFNGLTEXTURESTORAGE2DPROC)load("glTextureStorage2D"); + glad_glTextureStorage3D = (PFNGLTEXTURESTORAGE3DPROC)load("glTextureStorage3D"); + glad_glTextureStorage2DMultisample = (PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC)load("glTextureStorage2DMultisample"); + glad_glTextureStorage3DMultisample = (PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC)load("glTextureStorage3DMultisample"); + glad_glTextureSubImage1D = (PFNGLTEXTURESUBIMAGE1DPROC)load("glTextureSubImage1D"); + glad_glTextureSubImage2D = (PFNGLTEXTURESUBIMAGE2DPROC)load("glTextureSubImage2D"); + glad_glTextureSubImage3D = (PFNGLTEXTURESUBIMAGE3DPROC)load("glTextureSubImage3D"); + glad_glCompressedTextureSubImage1D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC)load("glCompressedTextureSubImage1D"); + glad_glCompressedTextureSubImage2D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC)load("glCompressedTextureSubImage2D"); + glad_glCompressedTextureSubImage3D = (PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC)load("glCompressedTextureSubImage3D"); + glad_glCopyTextureSubImage1D = (PFNGLCOPYTEXTURESUBIMAGE1DPROC)load("glCopyTextureSubImage1D"); + glad_glCopyTextureSubImage2D = (PFNGLCOPYTEXTURESUBIMAGE2DPROC)load("glCopyTextureSubImage2D"); + glad_glCopyTextureSubImage3D = (PFNGLCOPYTEXTURESUBIMAGE3DPROC)load("glCopyTextureSubImage3D"); + glad_glTextureParameterf = (PFNGLTEXTUREPARAMETERFPROC)load("glTextureParameterf"); + glad_glTextureParameterfv = (PFNGLTEXTUREPARAMETERFVPROC)load("glTextureParameterfv"); + glad_glTextureParameteri = (PFNGLTEXTUREPARAMETERIPROC)load("glTextureParameteri"); + glad_glTextureParameterIiv = (PFNGLTEXTUREPARAMETERIIVPROC)load("glTextureParameterIiv"); + glad_glTextureParameterIuiv = (PFNGLTEXTUREPARAMETERIUIVPROC)load("glTextureParameterIuiv"); + glad_glTextureParameteriv = (PFNGLTEXTUREPARAMETERIVPROC)load("glTextureParameteriv"); + glad_glGenerateTextureMipmap = (PFNGLGENERATETEXTUREMIPMAPPROC)load("glGenerateTextureMipmap"); + glad_glBindTextureUnit = (PFNGLBINDTEXTUREUNITPROC)load("glBindTextureUnit"); + glad_glGetTextureImage = (PFNGLGETTEXTUREIMAGEPROC)load("glGetTextureImage"); + glad_glGetCompressedTextureImage = (PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC)load("glGetCompressedTextureImage"); + glad_glGetTextureLevelParameterfv = (PFNGLGETTEXTURELEVELPARAMETERFVPROC)load("glGetTextureLevelParameterfv"); + glad_glGetTextureLevelParameteriv = (PFNGLGETTEXTURELEVELPARAMETERIVPROC)load("glGetTextureLevelParameteriv"); + glad_glGetTextureParameterfv = (PFNGLGETTEXTUREPARAMETERFVPROC)load("glGetTextureParameterfv"); + glad_glGetTextureParameterIiv = (PFNGLGETTEXTUREPARAMETERIIVPROC)load("glGetTextureParameterIiv"); + glad_glGetTextureParameterIuiv = (PFNGLGETTEXTUREPARAMETERIUIVPROC)load("glGetTextureParameterIuiv"); + glad_glGetTextureParameteriv = (PFNGLGETTEXTUREPARAMETERIVPROC)load("glGetTextureParameteriv"); + glad_glCreateVertexArrays = (PFNGLCREATEVERTEXARRAYSPROC)load("glCreateVertexArrays"); + glad_glDisableVertexArrayAttrib = (PFNGLDISABLEVERTEXARRAYATTRIBPROC)load("glDisableVertexArrayAttrib"); + glad_glEnableVertexArrayAttrib = (PFNGLENABLEVERTEXARRAYATTRIBPROC)load("glEnableVertexArrayAttrib"); + glad_glVertexArrayElementBuffer = (PFNGLVERTEXARRAYELEMENTBUFFERPROC)load("glVertexArrayElementBuffer"); + glad_glVertexArrayVertexBuffer = (PFNGLVERTEXARRAYVERTEXBUFFERPROC)load("glVertexArrayVertexBuffer"); + glad_glVertexArrayVertexBuffers = (PFNGLVERTEXARRAYVERTEXBUFFERSPROC)load("glVertexArrayVertexBuffers"); + glad_glVertexArrayAttribBinding = (PFNGLVERTEXARRAYATTRIBBINDINGPROC)load("glVertexArrayAttribBinding"); + glad_glVertexArrayAttribFormat = (PFNGLVERTEXARRAYATTRIBFORMATPROC)load("glVertexArrayAttribFormat"); + glad_glVertexArrayAttribIFormat = (PFNGLVERTEXARRAYATTRIBIFORMATPROC)load("glVertexArrayAttribIFormat"); + glad_glVertexArrayAttribLFormat = (PFNGLVERTEXARRAYATTRIBLFORMATPROC)load("glVertexArrayAttribLFormat"); + glad_glVertexArrayBindingDivisor = (PFNGLVERTEXARRAYBINDINGDIVISORPROC)load("glVertexArrayBindingDivisor"); + glad_glGetVertexArrayiv = (PFNGLGETVERTEXARRAYIVPROC)load("glGetVertexArrayiv"); + glad_glGetVertexArrayIndexediv = (PFNGLGETVERTEXARRAYINDEXEDIVPROC)load("glGetVertexArrayIndexediv"); + glad_glGetVertexArrayIndexed64iv = (PFNGLGETVERTEXARRAYINDEXED64IVPROC)load("glGetVertexArrayIndexed64iv"); + glad_glCreateSamplers = (PFNGLCREATESAMPLERSPROC)load("glCreateSamplers"); + glad_glCreateProgramPipelines = (PFNGLCREATEPROGRAMPIPELINESPROC)load("glCreateProgramPipelines"); + glad_glCreateQueries = (PFNGLCREATEQUERIESPROC)load("glCreateQueries"); + glad_glGetQueryBufferObjecti64v = (PFNGLGETQUERYBUFFEROBJECTI64VPROC)load("glGetQueryBufferObjecti64v"); + glad_glGetQueryBufferObjectiv = (PFNGLGETQUERYBUFFEROBJECTIVPROC)load("glGetQueryBufferObjectiv"); + glad_glGetQueryBufferObjectui64v = (PFNGLGETQUERYBUFFEROBJECTUI64VPROC)load("glGetQueryBufferObjectui64v"); + glad_glGetQueryBufferObjectuiv = (PFNGLGETQUERYBUFFEROBJECTUIVPROC)load("glGetQueryBufferObjectuiv"); +} +static void load_GL_ARB_uniform_buffer_object(GLADloadproc load) { + if(!GLAD_GL_ARB_uniform_buffer_object) return; + 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_NV_transform_feedback2(GLADloadproc load) { + if(!GLAD_GL_NV_transform_feedback2) return; + glad_glBindTransformFeedbackNV = (PFNGLBINDTRANSFORMFEEDBACKNVPROC)load("glBindTransformFeedbackNV"); + glad_glDeleteTransformFeedbacksNV = (PFNGLDELETETRANSFORMFEEDBACKSNVPROC)load("glDeleteTransformFeedbacksNV"); + glad_glGenTransformFeedbacksNV = (PFNGLGENTRANSFORMFEEDBACKSNVPROC)load("glGenTransformFeedbacksNV"); + glad_glIsTransformFeedbackNV = (PFNGLISTRANSFORMFEEDBACKNVPROC)load("glIsTransformFeedbackNV"); + glad_glPauseTransformFeedbackNV = (PFNGLPAUSETRANSFORMFEEDBACKNVPROC)load("glPauseTransformFeedbackNV"); + glad_glResumeTransformFeedbackNV = (PFNGLRESUMETRANSFORMFEEDBACKNVPROC)load("glResumeTransformFeedbackNV"); + glad_glDrawTransformFeedbackNV = (PFNGLDRAWTRANSFORMFEEDBACKNVPROC)load("glDrawTransformFeedbackNV"); +} +static void load_GL_EXT_blend_color(GLADloadproc load) { + if(!GLAD_GL_EXT_blend_color) return; + glad_glBlendColorEXT = (PFNGLBLENDCOLOREXTPROC)load("glBlendColorEXT"); +} +static void load_GL_EXT_histogram(GLADloadproc load) { + if(!GLAD_GL_EXT_histogram) return; + glad_glGetHistogramEXT = (PFNGLGETHISTOGRAMEXTPROC)load("glGetHistogramEXT"); + glad_glGetHistogramParameterfvEXT = (PFNGLGETHISTOGRAMPARAMETERFVEXTPROC)load("glGetHistogramParameterfvEXT"); + glad_glGetHistogramParameterivEXT = (PFNGLGETHISTOGRAMPARAMETERIVEXTPROC)load("glGetHistogramParameterivEXT"); + glad_glGetMinmaxEXT = (PFNGLGETMINMAXEXTPROC)load("glGetMinmaxEXT"); + glad_glGetMinmaxParameterfvEXT = (PFNGLGETMINMAXPARAMETERFVEXTPROC)load("glGetMinmaxParameterfvEXT"); + glad_glGetMinmaxParameterivEXT = (PFNGLGETMINMAXPARAMETERIVEXTPROC)load("glGetMinmaxParameterivEXT"); + glad_glHistogramEXT = (PFNGLHISTOGRAMEXTPROC)load("glHistogramEXT"); + glad_glMinmaxEXT = (PFNGLMINMAXEXTPROC)load("glMinmaxEXT"); + glad_glResetHistogramEXT = (PFNGLRESETHISTOGRAMEXTPROC)load("glResetHistogramEXT"); + glad_glResetMinmaxEXT = (PFNGLRESETMINMAXEXTPROC)load("glResetMinmaxEXT"); +} +static void load_GL_ARB_get_texture_sub_image(GLADloadproc load) { + if(!GLAD_GL_ARB_get_texture_sub_image) return; + glad_glGetTextureSubImage = (PFNGLGETTEXTURESUBIMAGEPROC)load("glGetTextureSubImage"); + glad_glGetCompressedTextureSubImage = (PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC)load("glGetCompressedTextureSubImage"); +} +static void load_GL_SGIS_point_parameters(GLADloadproc load) { + if(!GLAD_GL_SGIS_point_parameters) return; + glad_glPointParameterfSGIS = (PFNGLPOINTPARAMETERFSGISPROC)load("glPointParameterfSGIS"); + glad_glPointParameterfvSGIS = (PFNGLPOINTPARAMETERFVSGISPROC)load("glPointParameterfvSGIS"); +} +static void load_GL_EXT_direct_state_access(GLADloadproc load) { + if(!GLAD_GL_EXT_direct_state_access) return; + glad_glMatrixLoadfEXT = (PFNGLMATRIXLOADFEXTPROC)load("glMatrixLoadfEXT"); + glad_glMatrixLoaddEXT = (PFNGLMATRIXLOADDEXTPROC)load("glMatrixLoaddEXT"); + glad_glMatrixMultfEXT = (PFNGLMATRIXMULTFEXTPROC)load("glMatrixMultfEXT"); + glad_glMatrixMultdEXT = (PFNGLMATRIXMULTDEXTPROC)load("glMatrixMultdEXT"); + glad_glMatrixLoadIdentityEXT = (PFNGLMATRIXLOADIDENTITYEXTPROC)load("glMatrixLoadIdentityEXT"); + glad_glMatrixRotatefEXT = (PFNGLMATRIXROTATEFEXTPROC)load("glMatrixRotatefEXT"); + glad_glMatrixRotatedEXT = (PFNGLMATRIXROTATEDEXTPROC)load("glMatrixRotatedEXT"); + glad_glMatrixScalefEXT = (PFNGLMATRIXSCALEFEXTPROC)load("glMatrixScalefEXT"); + glad_glMatrixScaledEXT = (PFNGLMATRIXSCALEDEXTPROC)load("glMatrixScaledEXT"); + glad_glMatrixTranslatefEXT = (PFNGLMATRIXTRANSLATEFEXTPROC)load("glMatrixTranslatefEXT"); + glad_glMatrixTranslatedEXT = (PFNGLMATRIXTRANSLATEDEXTPROC)load("glMatrixTranslatedEXT"); + glad_glMatrixFrustumEXT = (PFNGLMATRIXFRUSTUMEXTPROC)load("glMatrixFrustumEXT"); + glad_glMatrixOrthoEXT = (PFNGLMATRIXORTHOEXTPROC)load("glMatrixOrthoEXT"); + glad_glMatrixPopEXT = (PFNGLMATRIXPOPEXTPROC)load("glMatrixPopEXT"); + glad_glMatrixPushEXT = (PFNGLMATRIXPUSHEXTPROC)load("glMatrixPushEXT"); + glad_glClientAttribDefaultEXT = (PFNGLCLIENTATTRIBDEFAULTEXTPROC)load("glClientAttribDefaultEXT"); + glad_glPushClientAttribDefaultEXT = (PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC)load("glPushClientAttribDefaultEXT"); + glad_glTextureParameterfEXT = (PFNGLTEXTUREPARAMETERFEXTPROC)load("glTextureParameterfEXT"); + glad_glTextureParameterfvEXT = (PFNGLTEXTUREPARAMETERFVEXTPROC)load("glTextureParameterfvEXT"); + glad_glTextureParameteriEXT = (PFNGLTEXTUREPARAMETERIEXTPROC)load("glTextureParameteriEXT"); + glad_glTextureParameterivEXT = (PFNGLTEXTUREPARAMETERIVEXTPROC)load("glTextureParameterivEXT"); + glad_glTextureImage1DEXT = (PFNGLTEXTUREIMAGE1DEXTPROC)load("glTextureImage1DEXT"); + glad_glTextureImage2DEXT = (PFNGLTEXTUREIMAGE2DEXTPROC)load("glTextureImage2DEXT"); + glad_glTextureSubImage1DEXT = (PFNGLTEXTURESUBIMAGE1DEXTPROC)load("glTextureSubImage1DEXT"); + glad_glTextureSubImage2DEXT = (PFNGLTEXTURESUBIMAGE2DEXTPROC)load("glTextureSubImage2DEXT"); + glad_glCopyTextureImage1DEXT = (PFNGLCOPYTEXTUREIMAGE1DEXTPROC)load("glCopyTextureImage1DEXT"); + glad_glCopyTextureImage2DEXT = (PFNGLCOPYTEXTUREIMAGE2DEXTPROC)load("glCopyTextureImage2DEXT"); + glad_glCopyTextureSubImage1DEXT = (PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC)load("glCopyTextureSubImage1DEXT"); + glad_glCopyTextureSubImage2DEXT = (PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC)load("glCopyTextureSubImage2DEXT"); + glad_glGetTextureImageEXT = (PFNGLGETTEXTUREIMAGEEXTPROC)load("glGetTextureImageEXT"); + glad_glGetTextureParameterfvEXT = (PFNGLGETTEXTUREPARAMETERFVEXTPROC)load("glGetTextureParameterfvEXT"); + glad_glGetTextureParameterivEXT = (PFNGLGETTEXTUREPARAMETERIVEXTPROC)load("glGetTextureParameterivEXT"); + glad_glGetTextureLevelParameterfvEXT = (PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC)load("glGetTextureLevelParameterfvEXT"); + glad_glGetTextureLevelParameterivEXT = (PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC)load("glGetTextureLevelParameterivEXT"); + glad_glTextureImage3DEXT = (PFNGLTEXTUREIMAGE3DEXTPROC)load("glTextureImage3DEXT"); + glad_glTextureSubImage3DEXT = (PFNGLTEXTURESUBIMAGE3DEXTPROC)load("glTextureSubImage3DEXT"); + glad_glCopyTextureSubImage3DEXT = (PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC)load("glCopyTextureSubImage3DEXT"); + glad_glBindMultiTextureEXT = (PFNGLBINDMULTITEXTUREEXTPROC)load("glBindMultiTextureEXT"); + glad_glMultiTexCoordPointerEXT = (PFNGLMULTITEXCOORDPOINTEREXTPROC)load("glMultiTexCoordPointerEXT"); + glad_glMultiTexEnvfEXT = (PFNGLMULTITEXENVFEXTPROC)load("glMultiTexEnvfEXT"); + glad_glMultiTexEnvfvEXT = (PFNGLMULTITEXENVFVEXTPROC)load("glMultiTexEnvfvEXT"); + glad_glMultiTexEnviEXT = (PFNGLMULTITEXENVIEXTPROC)load("glMultiTexEnviEXT"); + glad_glMultiTexEnvivEXT = (PFNGLMULTITEXENVIVEXTPROC)load("glMultiTexEnvivEXT"); + glad_glMultiTexGendEXT = (PFNGLMULTITEXGENDEXTPROC)load("glMultiTexGendEXT"); + glad_glMultiTexGendvEXT = (PFNGLMULTITEXGENDVEXTPROC)load("glMultiTexGendvEXT"); + glad_glMultiTexGenfEXT = (PFNGLMULTITEXGENFEXTPROC)load("glMultiTexGenfEXT"); + glad_glMultiTexGenfvEXT = (PFNGLMULTITEXGENFVEXTPROC)load("glMultiTexGenfvEXT"); + glad_glMultiTexGeniEXT = (PFNGLMULTITEXGENIEXTPROC)load("glMultiTexGeniEXT"); + glad_glMultiTexGenivEXT = (PFNGLMULTITEXGENIVEXTPROC)load("glMultiTexGenivEXT"); + glad_glGetMultiTexEnvfvEXT = (PFNGLGETMULTITEXENVFVEXTPROC)load("glGetMultiTexEnvfvEXT"); + glad_glGetMultiTexEnvivEXT = (PFNGLGETMULTITEXENVIVEXTPROC)load("glGetMultiTexEnvivEXT"); + glad_glGetMultiTexGendvEXT = (PFNGLGETMULTITEXGENDVEXTPROC)load("glGetMultiTexGendvEXT"); + glad_glGetMultiTexGenfvEXT = (PFNGLGETMULTITEXGENFVEXTPROC)load("glGetMultiTexGenfvEXT"); + glad_glGetMultiTexGenivEXT = (PFNGLGETMULTITEXGENIVEXTPROC)load("glGetMultiTexGenivEXT"); + glad_glMultiTexParameteriEXT = (PFNGLMULTITEXPARAMETERIEXTPROC)load("glMultiTexParameteriEXT"); + glad_glMultiTexParameterivEXT = (PFNGLMULTITEXPARAMETERIVEXTPROC)load("glMultiTexParameterivEXT"); + glad_glMultiTexParameterfEXT = (PFNGLMULTITEXPARAMETERFEXTPROC)load("glMultiTexParameterfEXT"); + glad_glMultiTexParameterfvEXT = (PFNGLMULTITEXPARAMETERFVEXTPROC)load("glMultiTexParameterfvEXT"); + glad_glMultiTexImage1DEXT = (PFNGLMULTITEXIMAGE1DEXTPROC)load("glMultiTexImage1DEXT"); + glad_glMultiTexImage2DEXT = (PFNGLMULTITEXIMAGE2DEXTPROC)load("glMultiTexImage2DEXT"); + glad_glMultiTexSubImage1DEXT = (PFNGLMULTITEXSUBIMAGE1DEXTPROC)load("glMultiTexSubImage1DEXT"); + glad_glMultiTexSubImage2DEXT = (PFNGLMULTITEXSUBIMAGE2DEXTPROC)load("glMultiTexSubImage2DEXT"); + glad_glCopyMultiTexImage1DEXT = (PFNGLCOPYMULTITEXIMAGE1DEXTPROC)load("glCopyMultiTexImage1DEXT"); + glad_glCopyMultiTexImage2DEXT = (PFNGLCOPYMULTITEXIMAGE2DEXTPROC)load("glCopyMultiTexImage2DEXT"); + glad_glCopyMultiTexSubImage1DEXT = (PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC)load("glCopyMultiTexSubImage1DEXT"); + glad_glCopyMultiTexSubImage2DEXT = (PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC)load("glCopyMultiTexSubImage2DEXT"); + glad_glGetMultiTexImageEXT = (PFNGLGETMULTITEXIMAGEEXTPROC)load("glGetMultiTexImageEXT"); + glad_glGetMultiTexParameterfvEXT = (PFNGLGETMULTITEXPARAMETERFVEXTPROC)load("glGetMultiTexParameterfvEXT"); + glad_glGetMultiTexParameterivEXT = (PFNGLGETMULTITEXPARAMETERIVEXTPROC)load("glGetMultiTexParameterivEXT"); + glad_glGetMultiTexLevelParameterfvEXT = (PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC)load("glGetMultiTexLevelParameterfvEXT"); + glad_glGetMultiTexLevelParameterivEXT = (PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC)load("glGetMultiTexLevelParameterivEXT"); + glad_glMultiTexImage3DEXT = (PFNGLMULTITEXIMAGE3DEXTPROC)load("glMultiTexImage3DEXT"); + glad_glMultiTexSubImage3DEXT = (PFNGLMULTITEXSUBIMAGE3DEXTPROC)load("glMultiTexSubImage3DEXT"); + glad_glCopyMultiTexSubImage3DEXT = (PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC)load("glCopyMultiTexSubImage3DEXT"); + glad_glEnableClientStateIndexedEXT = (PFNGLENABLECLIENTSTATEINDEXEDEXTPROC)load("glEnableClientStateIndexedEXT"); + glad_glDisableClientStateIndexedEXT = (PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC)load("glDisableClientStateIndexedEXT"); + glad_glGetFloatIndexedvEXT = (PFNGLGETFLOATINDEXEDVEXTPROC)load("glGetFloatIndexedvEXT"); + glad_glGetDoubleIndexedvEXT = (PFNGLGETDOUBLEINDEXEDVEXTPROC)load("glGetDoubleIndexedvEXT"); + glad_glGetPointerIndexedvEXT = (PFNGLGETPOINTERINDEXEDVEXTPROC)load("glGetPointerIndexedvEXT"); + glad_glEnableIndexedEXT = (PFNGLENABLEINDEXEDEXTPROC)load("glEnableIndexedEXT"); + glad_glDisableIndexedEXT = (PFNGLDISABLEINDEXEDEXTPROC)load("glDisableIndexedEXT"); + glad_glIsEnabledIndexedEXT = (PFNGLISENABLEDINDEXEDEXTPROC)load("glIsEnabledIndexedEXT"); + glad_glGetIntegerIndexedvEXT = (PFNGLGETINTEGERINDEXEDVEXTPROC)load("glGetIntegerIndexedvEXT"); + glad_glGetBooleanIndexedvEXT = (PFNGLGETBOOLEANINDEXEDVEXTPROC)load("glGetBooleanIndexedvEXT"); + glad_glCompressedTextureImage3DEXT = (PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC)load("glCompressedTextureImage3DEXT"); + glad_glCompressedTextureImage2DEXT = (PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC)load("glCompressedTextureImage2DEXT"); + glad_glCompressedTextureImage1DEXT = (PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC)load("glCompressedTextureImage1DEXT"); + glad_glCompressedTextureSubImage3DEXT = (PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC)load("glCompressedTextureSubImage3DEXT"); + glad_glCompressedTextureSubImage2DEXT = (PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC)load("glCompressedTextureSubImage2DEXT"); + glad_glCompressedTextureSubImage1DEXT = (PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC)load("glCompressedTextureSubImage1DEXT"); + glad_glGetCompressedTextureImageEXT = (PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC)load("glGetCompressedTextureImageEXT"); + glad_glCompressedMultiTexImage3DEXT = (PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC)load("glCompressedMultiTexImage3DEXT"); + glad_glCompressedMultiTexImage2DEXT = (PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC)load("glCompressedMultiTexImage2DEXT"); + glad_glCompressedMultiTexImage1DEXT = (PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC)load("glCompressedMultiTexImage1DEXT"); + glad_glCompressedMultiTexSubImage3DEXT = (PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC)load("glCompressedMultiTexSubImage3DEXT"); + glad_glCompressedMultiTexSubImage2DEXT = (PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC)load("glCompressedMultiTexSubImage2DEXT"); + glad_glCompressedMultiTexSubImage1DEXT = (PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC)load("glCompressedMultiTexSubImage1DEXT"); + glad_glGetCompressedMultiTexImageEXT = (PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC)load("glGetCompressedMultiTexImageEXT"); + glad_glMatrixLoadTransposefEXT = (PFNGLMATRIXLOADTRANSPOSEFEXTPROC)load("glMatrixLoadTransposefEXT"); + glad_glMatrixLoadTransposedEXT = (PFNGLMATRIXLOADTRANSPOSEDEXTPROC)load("glMatrixLoadTransposedEXT"); + glad_glMatrixMultTransposefEXT = (PFNGLMATRIXMULTTRANSPOSEFEXTPROC)load("glMatrixMultTransposefEXT"); + glad_glMatrixMultTransposedEXT = (PFNGLMATRIXMULTTRANSPOSEDEXTPROC)load("glMatrixMultTransposedEXT"); + glad_glNamedBufferDataEXT = (PFNGLNAMEDBUFFERDATAEXTPROC)load("glNamedBufferDataEXT"); + glad_glNamedBufferSubDataEXT = (PFNGLNAMEDBUFFERSUBDATAEXTPROC)load("glNamedBufferSubDataEXT"); + glad_glMapNamedBufferEXT = (PFNGLMAPNAMEDBUFFEREXTPROC)load("glMapNamedBufferEXT"); + glad_glUnmapNamedBufferEXT = (PFNGLUNMAPNAMEDBUFFEREXTPROC)load("glUnmapNamedBufferEXT"); + glad_glGetNamedBufferParameterivEXT = (PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC)load("glGetNamedBufferParameterivEXT"); + glad_glGetNamedBufferPointervEXT = (PFNGLGETNAMEDBUFFERPOINTERVEXTPROC)load("glGetNamedBufferPointervEXT"); + glad_glGetNamedBufferSubDataEXT = (PFNGLGETNAMEDBUFFERSUBDATAEXTPROC)load("glGetNamedBufferSubDataEXT"); + glad_glProgramUniform1fEXT = (PFNGLPROGRAMUNIFORM1FEXTPROC)load("glProgramUniform1fEXT"); + glad_glProgramUniform2fEXT = (PFNGLPROGRAMUNIFORM2FEXTPROC)load("glProgramUniform2fEXT"); + glad_glProgramUniform3fEXT = (PFNGLPROGRAMUNIFORM3FEXTPROC)load("glProgramUniform3fEXT"); + glad_glProgramUniform4fEXT = (PFNGLPROGRAMUNIFORM4FEXTPROC)load("glProgramUniform4fEXT"); + glad_glProgramUniform1iEXT = (PFNGLPROGRAMUNIFORM1IEXTPROC)load("glProgramUniform1iEXT"); + glad_glProgramUniform2iEXT = (PFNGLPROGRAMUNIFORM2IEXTPROC)load("glProgramUniform2iEXT"); + glad_glProgramUniform3iEXT = (PFNGLPROGRAMUNIFORM3IEXTPROC)load("glProgramUniform3iEXT"); + glad_glProgramUniform4iEXT = (PFNGLPROGRAMUNIFORM4IEXTPROC)load("glProgramUniform4iEXT"); + glad_glProgramUniform1fvEXT = (PFNGLPROGRAMUNIFORM1FVEXTPROC)load("glProgramUniform1fvEXT"); + glad_glProgramUniform2fvEXT = (PFNGLPROGRAMUNIFORM2FVEXTPROC)load("glProgramUniform2fvEXT"); + glad_glProgramUniform3fvEXT = (PFNGLPROGRAMUNIFORM3FVEXTPROC)load("glProgramUniform3fvEXT"); + glad_glProgramUniform4fvEXT = (PFNGLPROGRAMUNIFORM4FVEXTPROC)load("glProgramUniform4fvEXT"); + glad_glProgramUniform1ivEXT = (PFNGLPROGRAMUNIFORM1IVEXTPROC)load("glProgramUniform1ivEXT"); + glad_glProgramUniform2ivEXT = (PFNGLPROGRAMUNIFORM2IVEXTPROC)load("glProgramUniform2ivEXT"); + glad_glProgramUniform3ivEXT = (PFNGLPROGRAMUNIFORM3IVEXTPROC)load("glProgramUniform3ivEXT"); + glad_glProgramUniform4ivEXT = (PFNGLPROGRAMUNIFORM4IVEXTPROC)load("glProgramUniform4ivEXT"); + glad_glProgramUniformMatrix2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC)load("glProgramUniformMatrix2fvEXT"); + glad_glProgramUniformMatrix3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC)load("glProgramUniformMatrix3fvEXT"); + glad_glProgramUniformMatrix4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC)load("glProgramUniformMatrix4fvEXT"); + glad_glProgramUniformMatrix2x3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC)load("glProgramUniformMatrix2x3fvEXT"); + glad_glProgramUniformMatrix3x2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC)load("glProgramUniformMatrix3x2fvEXT"); + glad_glProgramUniformMatrix2x4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC)load("glProgramUniformMatrix2x4fvEXT"); + glad_glProgramUniformMatrix4x2fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC)load("glProgramUniformMatrix4x2fvEXT"); + glad_glProgramUniformMatrix3x4fvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC)load("glProgramUniformMatrix3x4fvEXT"); + glad_glProgramUniformMatrix4x3fvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC)load("glProgramUniformMatrix4x3fvEXT"); + glad_glTextureBufferEXT = (PFNGLTEXTUREBUFFEREXTPROC)load("glTextureBufferEXT"); + glad_glMultiTexBufferEXT = (PFNGLMULTITEXBUFFEREXTPROC)load("glMultiTexBufferEXT"); + glad_glTextureParameterIivEXT = (PFNGLTEXTUREPARAMETERIIVEXTPROC)load("glTextureParameterIivEXT"); + glad_glTextureParameterIuivEXT = (PFNGLTEXTUREPARAMETERIUIVEXTPROC)load("glTextureParameterIuivEXT"); + glad_glGetTextureParameterIivEXT = (PFNGLGETTEXTUREPARAMETERIIVEXTPROC)load("glGetTextureParameterIivEXT"); + glad_glGetTextureParameterIuivEXT = (PFNGLGETTEXTUREPARAMETERIUIVEXTPROC)load("glGetTextureParameterIuivEXT"); + glad_glMultiTexParameterIivEXT = (PFNGLMULTITEXPARAMETERIIVEXTPROC)load("glMultiTexParameterIivEXT"); + glad_glMultiTexParameterIuivEXT = (PFNGLMULTITEXPARAMETERIUIVEXTPROC)load("glMultiTexParameterIuivEXT"); + glad_glGetMultiTexParameterIivEXT = (PFNGLGETMULTITEXPARAMETERIIVEXTPROC)load("glGetMultiTexParameterIivEXT"); + glad_glGetMultiTexParameterIuivEXT = (PFNGLGETMULTITEXPARAMETERIUIVEXTPROC)load("glGetMultiTexParameterIuivEXT"); + glad_glProgramUniform1uiEXT = (PFNGLPROGRAMUNIFORM1UIEXTPROC)load("glProgramUniform1uiEXT"); + glad_glProgramUniform2uiEXT = (PFNGLPROGRAMUNIFORM2UIEXTPROC)load("glProgramUniform2uiEXT"); + glad_glProgramUniform3uiEXT = (PFNGLPROGRAMUNIFORM3UIEXTPROC)load("glProgramUniform3uiEXT"); + glad_glProgramUniform4uiEXT = (PFNGLPROGRAMUNIFORM4UIEXTPROC)load("glProgramUniform4uiEXT"); + glad_glProgramUniform1uivEXT = (PFNGLPROGRAMUNIFORM1UIVEXTPROC)load("glProgramUniform1uivEXT"); + glad_glProgramUniform2uivEXT = (PFNGLPROGRAMUNIFORM2UIVEXTPROC)load("glProgramUniform2uivEXT"); + glad_glProgramUniform3uivEXT = (PFNGLPROGRAMUNIFORM3UIVEXTPROC)load("glProgramUniform3uivEXT"); + glad_glProgramUniform4uivEXT = (PFNGLPROGRAMUNIFORM4UIVEXTPROC)load("glProgramUniform4uivEXT"); + glad_glNamedProgramLocalParameters4fvEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC)load("glNamedProgramLocalParameters4fvEXT"); + glad_glNamedProgramLocalParameterI4iEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC)load("glNamedProgramLocalParameterI4iEXT"); + glad_glNamedProgramLocalParameterI4ivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC)load("glNamedProgramLocalParameterI4ivEXT"); + glad_glNamedProgramLocalParametersI4ivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC)load("glNamedProgramLocalParametersI4ivEXT"); + glad_glNamedProgramLocalParameterI4uiEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC)load("glNamedProgramLocalParameterI4uiEXT"); + glad_glNamedProgramLocalParameterI4uivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC)load("glNamedProgramLocalParameterI4uivEXT"); + glad_glNamedProgramLocalParametersI4uivEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC)load("glNamedProgramLocalParametersI4uivEXT"); + glad_glGetNamedProgramLocalParameterIivEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC)load("glGetNamedProgramLocalParameterIivEXT"); + glad_glGetNamedProgramLocalParameterIuivEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC)load("glGetNamedProgramLocalParameterIuivEXT"); + glad_glEnableClientStateiEXT = (PFNGLENABLECLIENTSTATEIEXTPROC)load("glEnableClientStateiEXT"); + glad_glDisableClientStateiEXT = (PFNGLDISABLECLIENTSTATEIEXTPROC)load("glDisableClientStateiEXT"); + glad_glGetFloati_vEXT = (PFNGLGETFLOATI_VEXTPROC)load("glGetFloati_vEXT"); + glad_glGetDoublei_vEXT = (PFNGLGETDOUBLEI_VEXTPROC)load("glGetDoublei_vEXT"); + glad_glGetPointeri_vEXT = (PFNGLGETPOINTERI_VEXTPROC)load("glGetPointeri_vEXT"); + glad_glNamedProgramStringEXT = (PFNGLNAMEDPROGRAMSTRINGEXTPROC)load("glNamedProgramStringEXT"); + glad_glNamedProgramLocalParameter4dEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC)load("glNamedProgramLocalParameter4dEXT"); + glad_glNamedProgramLocalParameter4dvEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC)load("glNamedProgramLocalParameter4dvEXT"); + glad_glNamedProgramLocalParameter4fEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC)load("glNamedProgramLocalParameter4fEXT"); + glad_glNamedProgramLocalParameter4fvEXT = (PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC)load("glNamedProgramLocalParameter4fvEXT"); + glad_glGetNamedProgramLocalParameterdvEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC)load("glGetNamedProgramLocalParameterdvEXT"); + glad_glGetNamedProgramLocalParameterfvEXT = (PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC)load("glGetNamedProgramLocalParameterfvEXT"); + glad_glGetNamedProgramivEXT = (PFNGLGETNAMEDPROGRAMIVEXTPROC)load("glGetNamedProgramivEXT"); + glad_glGetNamedProgramStringEXT = (PFNGLGETNAMEDPROGRAMSTRINGEXTPROC)load("glGetNamedProgramStringEXT"); + glad_glNamedRenderbufferStorageEXT = (PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC)load("glNamedRenderbufferStorageEXT"); + glad_glGetNamedRenderbufferParameterivEXT = (PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC)load("glGetNamedRenderbufferParameterivEXT"); + glad_glNamedRenderbufferStorageMultisampleEXT = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)load("glNamedRenderbufferStorageMultisampleEXT"); + glad_glNamedRenderbufferStorageMultisampleCoverageEXT = (PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC)load("glNamedRenderbufferStorageMultisampleCoverageEXT"); + glad_glCheckNamedFramebufferStatusEXT = (PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC)load("glCheckNamedFramebufferStatusEXT"); + glad_glNamedFramebufferTexture1DEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC)load("glNamedFramebufferTexture1DEXT"); + glad_glNamedFramebufferTexture2DEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC)load("glNamedFramebufferTexture2DEXT"); + glad_glNamedFramebufferTexture3DEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC)load("glNamedFramebufferTexture3DEXT"); + glad_glNamedFramebufferRenderbufferEXT = (PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC)load("glNamedFramebufferRenderbufferEXT"); + glad_glGetNamedFramebufferAttachmentParameterivEXT = (PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)load("glGetNamedFramebufferAttachmentParameterivEXT"); + glad_glGenerateTextureMipmapEXT = (PFNGLGENERATETEXTUREMIPMAPEXTPROC)load("glGenerateTextureMipmapEXT"); + glad_glGenerateMultiTexMipmapEXT = (PFNGLGENERATEMULTITEXMIPMAPEXTPROC)load("glGenerateMultiTexMipmapEXT"); + glad_glFramebufferDrawBufferEXT = (PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC)load("glFramebufferDrawBufferEXT"); + glad_glFramebufferDrawBuffersEXT = (PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC)load("glFramebufferDrawBuffersEXT"); + glad_glFramebufferReadBufferEXT = (PFNGLFRAMEBUFFERREADBUFFEREXTPROC)load("glFramebufferReadBufferEXT"); + glad_glGetFramebufferParameterivEXT = (PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC)load("glGetFramebufferParameterivEXT"); + glad_glNamedCopyBufferSubDataEXT = (PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC)load("glNamedCopyBufferSubDataEXT"); + glad_glNamedFramebufferTextureEXT = (PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC)load("glNamedFramebufferTextureEXT"); + glad_glNamedFramebufferTextureLayerEXT = (PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC)load("glNamedFramebufferTextureLayerEXT"); + glad_glNamedFramebufferTextureFaceEXT = (PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC)load("glNamedFramebufferTextureFaceEXT"); + glad_glTextureRenderbufferEXT = (PFNGLTEXTURERENDERBUFFEREXTPROC)load("glTextureRenderbufferEXT"); + glad_glMultiTexRenderbufferEXT = (PFNGLMULTITEXRENDERBUFFEREXTPROC)load("glMultiTexRenderbufferEXT"); + glad_glVertexArrayVertexOffsetEXT = (PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC)load("glVertexArrayVertexOffsetEXT"); + glad_glVertexArrayColorOffsetEXT = (PFNGLVERTEXARRAYCOLOROFFSETEXTPROC)load("glVertexArrayColorOffsetEXT"); + glad_glVertexArrayEdgeFlagOffsetEXT = (PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC)load("glVertexArrayEdgeFlagOffsetEXT"); + glad_glVertexArrayIndexOffsetEXT = (PFNGLVERTEXARRAYINDEXOFFSETEXTPROC)load("glVertexArrayIndexOffsetEXT"); + glad_glVertexArrayNormalOffsetEXT = (PFNGLVERTEXARRAYNORMALOFFSETEXTPROC)load("glVertexArrayNormalOffsetEXT"); + glad_glVertexArrayTexCoordOffsetEXT = (PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC)load("glVertexArrayTexCoordOffsetEXT"); + glad_glVertexArrayMultiTexCoordOffsetEXT = (PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC)load("glVertexArrayMultiTexCoordOffsetEXT"); + glad_glVertexArrayFogCoordOffsetEXT = (PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC)load("glVertexArrayFogCoordOffsetEXT"); + glad_glVertexArraySecondaryColorOffsetEXT = (PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC)load("glVertexArraySecondaryColorOffsetEXT"); + glad_glVertexArrayVertexAttribOffsetEXT = (PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC)load("glVertexArrayVertexAttribOffsetEXT"); + glad_glVertexArrayVertexAttribIOffsetEXT = (PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC)load("glVertexArrayVertexAttribIOffsetEXT"); + glad_glEnableVertexArrayEXT = (PFNGLENABLEVERTEXARRAYEXTPROC)load("glEnableVertexArrayEXT"); + glad_glDisableVertexArrayEXT = (PFNGLDISABLEVERTEXARRAYEXTPROC)load("glDisableVertexArrayEXT"); + glad_glEnableVertexArrayAttribEXT = (PFNGLENABLEVERTEXARRAYATTRIBEXTPROC)load("glEnableVertexArrayAttribEXT"); + glad_glDisableVertexArrayAttribEXT = (PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC)load("glDisableVertexArrayAttribEXT"); + glad_glGetVertexArrayIntegervEXT = (PFNGLGETVERTEXARRAYINTEGERVEXTPROC)load("glGetVertexArrayIntegervEXT"); + glad_glGetVertexArrayPointervEXT = (PFNGLGETVERTEXARRAYPOINTERVEXTPROC)load("glGetVertexArrayPointervEXT"); + glad_glGetVertexArrayIntegeri_vEXT = (PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC)load("glGetVertexArrayIntegeri_vEXT"); + glad_glGetVertexArrayPointeri_vEXT = (PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC)load("glGetVertexArrayPointeri_vEXT"); + glad_glMapNamedBufferRangeEXT = (PFNGLMAPNAMEDBUFFERRANGEEXTPROC)load("glMapNamedBufferRangeEXT"); + glad_glFlushMappedNamedBufferRangeEXT = (PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC)load("glFlushMappedNamedBufferRangeEXT"); + glad_glNamedBufferStorageEXT = (PFNGLNAMEDBUFFERSTORAGEEXTPROC)load("glNamedBufferStorageEXT"); + glad_glClearNamedBufferDataEXT = (PFNGLCLEARNAMEDBUFFERDATAEXTPROC)load("glClearNamedBufferDataEXT"); + glad_glClearNamedBufferSubDataEXT = (PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC)load("glClearNamedBufferSubDataEXT"); + glad_glNamedFramebufferParameteriEXT = (PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC)load("glNamedFramebufferParameteriEXT"); + glad_glGetNamedFramebufferParameterivEXT = (PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC)load("glGetNamedFramebufferParameterivEXT"); + glad_glProgramUniform1dEXT = (PFNGLPROGRAMUNIFORM1DEXTPROC)load("glProgramUniform1dEXT"); + glad_glProgramUniform2dEXT = (PFNGLPROGRAMUNIFORM2DEXTPROC)load("glProgramUniform2dEXT"); + glad_glProgramUniform3dEXT = (PFNGLPROGRAMUNIFORM3DEXTPROC)load("glProgramUniform3dEXT"); + glad_glProgramUniform4dEXT = (PFNGLPROGRAMUNIFORM4DEXTPROC)load("glProgramUniform4dEXT"); + glad_glProgramUniform1dvEXT = (PFNGLPROGRAMUNIFORM1DVEXTPROC)load("glProgramUniform1dvEXT"); + glad_glProgramUniform2dvEXT = (PFNGLPROGRAMUNIFORM2DVEXTPROC)load("glProgramUniform2dvEXT"); + glad_glProgramUniform3dvEXT = (PFNGLPROGRAMUNIFORM3DVEXTPROC)load("glProgramUniform3dvEXT"); + glad_glProgramUniform4dvEXT = (PFNGLPROGRAMUNIFORM4DVEXTPROC)load("glProgramUniform4dvEXT"); + glad_glProgramUniformMatrix2dvEXT = (PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC)load("glProgramUniformMatrix2dvEXT"); + glad_glProgramUniformMatrix3dvEXT = (PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC)load("glProgramUniformMatrix3dvEXT"); + glad_glProgramUniformMatrix4dvEXT = (PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC)load("glProgramUniformMatrix4dvEXT"); + glad_glProgramUniformMatrix2x3dvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC)load("glProgramUniformMatrix2x3dvEXT"); + glad_glProgramUniformMatrix2x4dvEXT = (PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC)load("glProgramUniformMatrix2x4dvEXT"); + glad_glProgramUniformMatrix3x2dvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC)load("glProgramUniformMatrix3x2dvEXT"); + glad_glProgramUniformMatrix3x4dvEXT = (PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC)load("glProgramUniformMatrix3x4dvEXT"); + glad_glProgramUniformMatrix4x2dvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC)load("glProgramUniformMatrix4x2dvEXT"); + glad_glProgramUniformMatrix4x3dvEXT = (PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC)load("glProgramUniformMatrix4x3dvEXT"); + glad_glTextureBufferRangeEXT = (PFNGLTEXTUREBUFFERRANGEEXTPROC)load("glTextureBufferRangeEXT"); + glad_glTextureStorage1DEXT = (PFNGLTEXTURESTORAGE1DEXTPROC)load("glTextureStorage1DEXT"); + glad_glTextureStorage2DEXT = (PFNGLTEXTURESTORAGE2DEXTPROC)load("glTextureStorage2DEXT"); + glad_glTextureStorage3DEXT = (PFNGLTEXTURESTORAGE3DEXTPROC)load("glTextureStorage3DEXT"); + glad_glTextureStorage2DMultisampleEXT = (PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC)load("glTextureStorage2DMultisampleEXT"); + glad_glTextureStorage3DMultisampleEXT = (PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC)load("glTextureStorage3DMultisampleEXT"); + glad_glVertexArrayBindVertexBufferEXT = (PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC)load("glVertexArrayBindVertexBufferEXT"); + glad_glVertexArrayVertexAttribFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC)load("glVertexArrayVertexAttribFormatEXT"); + glad_glVertexArrayVertexAttribIFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC)load("glVertexArrayVertexAttribIFormatEXT"); + glad_glVertexArrayVertexAttribLFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC)load("glVertexArrayVertexAttribLFormatEXT"); + glad_glVertexArrayVertexAttribBindingEXT = (PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC)load("glVertexArrayVertexAttribBindingEXT"); + glad_glVertexArrayVertexBindingDivisorEXT = (PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC)load("glVertexArrayVertexBindingDivisorEXT"); + glad_glVertexArrayVertexAttribLOffsetEXT = (PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC)load("glVertexArrayVertexAttribLOffsetEXT"); + glad_glTexturePageCommitmentEXT = (PFNGLTEXTUREPAGECOMMITMENTEXTPROC)load("glTexturePageCommitmentEXT"); + glad_glVertexArrayVertexAttribDivisorEXT = (PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC)load("glVertexArrayVertexAttribDivisorEXT"); +} +static void load_GL_AMD_sample_positions(GLADloadproc load) { + if(!GLAD_GL_AMD_sample_positions) return; + glad_glSetMultisamplefvAMD = (PFNGLSETMULTISAMPLEFVAMDPROC)load("glSetMultisamplefvAMD"); +} +static void load_GL_NV_vertex_program(GLADloadproc load) { + if(!GLAD_GL_NV_vertex_program) return; + glad_glAreProgramsResidentNV = (PFNGLAREPROGRAMSRESIDENTNVPROC)load("glAreProgramsResidentNV"); + glad_glBindProgramNV = (PFNGLBINDPROGRAMNVPROC)load("glBindProgramNV"); + glad_glDeleteProgramsNV = (PFNGLDELETEPROGRAMSNVPROC)load("glDeleteProgramsNV"); + glad_glExecuteProgramNV = (PFNGLEXECUTEPROGRAMNVPROC)load("glExecuteProgramNV"); + glad_glGenProgramsNV = (PFNGLGENPROGRAMSNVPROC)load("glGenProgramsNV"); + glad_glGetProgramParameterdvNV = (PFNGLGETPROGRAMPARAMETERDVNVPROC)load("glGetProgramParameterdvNV"); + glad_glGetProgramParameterfvNV = (PFNGLGETPROGRAMPARAMETERFVNVPROC)load("glGetProgramParameterfvNV"); + glad_glGetProgramivNV = (PFNGLGETPROGRAMIVNVPROC)load("glGetProgramivNV"); + glad_glGetProgramStringNV = (PFNGLGETPROGRAMSTRINGNVPROC)load("glGetProgramStringNV"); + glad_glGetTrackMatrixivNV = (PFNGLGETTRACKMATRIXIVNVPROC)load("glGetTrackMatrixivNV"); + glad_glGetVertexAttribdvNV = (PFNGLGETVERTEXATTRIBDVNVPROC)load("glGetVertexAttribdvNV"); + glad_glGetVertexAttribfvNV = (PFNGLGETVERTEXATTRIBFVNVPROC)load("glGetVertexAttribfvNV"); + glad_glGetVertexAttribivNV = (PFNGLGETVERTEXATTRIBIVNVPROC)load("glGetVertexAttribivNV"); + glad_glGetVertexAttribPointervNV = (PFNGLGETVERTEXATTRIBPOINTERVNVPROC)load("glGetVertexAttribPointervNV"); + glad_glIsProgramNV = (PFNGLISPROGRAMNVPROC)load("glIsProgramNV"); + glad_glLoadProgramNV = (PFNGLLOADPROGRAMNVPROC)load("glLoadProgramNV"); + glad_glProgramParameter4dNV = (PFNGLPROGRAMPARAMETER4DNVPROC)load("glProgramParameter4dNV"); + glad_glProgramParameter4dvNV = (PFNGLPROGRAMPARAMETER4DVNVPROC)load("glProgramParameter4dvNV"); + glad_glProgramParameter4fNV = (PFNGLPROGRAMPARAMETER4FNVPROC)load("glProgramParameter4fNV"); + glad_glProgramParameter4fvNV = (PFNGLPROGRAMPARAMETER4FVNVPROC)load("glProgramParameter4fvNV"); + glad_glProgramParameters4dvNV = (PFNGLPROGRAMPARAMETERS4DVNVPROC)load("glProgramParameters4dvNV"); + glad_glProgramParameters4fvNV = (PFNGLPROGRAMPARAMETERS4FVNVPROC)load("glProgramParameters4fvNV"); + glad_glRequestResidentProgramsNV = (PFNGLREQUESTRESIDENTPROGRAMSNVPROC)load("glRequestResidentProgramsNV"); + glad_glTrackMatrixNV = (PFNGLTRACKMATRIXNVPROC)load("glTrackMatrixNV"); + glad_glVertexAttribPointerNV = (PFNGLVERTEXATTRIBPOINTERNVPROC)load("glVertexAttribPointerNV"); + glad_glVertexAttrib1dNV = (PFNGLVERTEXATTRIB1DNVPROC)load("glVertexAttrib1dNV"); + glad_glVertexAttrib1dvNV = (PFNGLVERTEXATTRIB1DVNVPROC)load("glVertexAttrib1dvNV"); + glad_glVertexAttrib1fNV = (PFNGLVERTEXATTRIB1FNVPROC)load("glVertexAttrib1fNV"); + glad_glVertexAttrib1fvNV = (PFNGLVERTEXATTRIB1FVNVPROC)load("glVertexAttrib1fvNV"); + glad_glVertexAttrib1sNV = (PFNGLVERTEXATTRIB1SNVPROC)load("glVertexAttrib1sNV"); + glad_glVertexAttrib1svNV = (PFNGLVERTEXATTRIB1SVNVPROC)load("glVertexAttrib1svNV"); + glad_glVertexAttrib2dNV = (PFNGLVERTEXATTRIB2DNVPROC)load("glVertexAttrib2dNV"); + glad_glVertexAttrib2dvNV = (PFNGLVERTEXATTRIB2DVNVPROC)load("glVertexAttrib2dvNV"); + glad_glVertexAttrib2fNV = (PFNGLVERTEXATTRIB2FNVPROC)load("glVertexAttrib2fNV"); + glad_glVertexAttrib2fvNV = (PFNGLVERTEXATTRIB2FVNVPROC)load("glVertexAttrib2fvNV"); + glad_glVertexAttrib2sNV = (PFNGLVERTEXATTRIB2SNVPROC)load("glVertexAttrib2sNV"); + glad_glVertexAttrib2svNV = (PFNGLVERTEXATTRIB2SVNVPROC)load("glVertexAttrib2svNV"); + glad_glVertexAttrib3dNV = (PFNGLVERTEXATTRIB3DNVPROC)load("glVertexAttrib3dNV"); + glad_glVertexAttrib3dvNV = (PFNGLVERTEXATTRIB3DVNVPROC)load("glVertexAttrib3dvNV"); + glad_glVertexAttrib3fNV = (PFNGLVERTEXATTRIB3FNVPROC)load("glVertexAttrib3fNV"); + glad_glVertexAttrib3fvNV = (PFNGLVERTEXATTRIB3FVNVPROC)load("glVertexAttrib3fvNV"); + glad_glVertexAttrib3sNV = (PFNGLVERTEXATTRIB3SNVPROC)load("glVertexAttrib3sNV"); + glad_glVertexAttrib3svNV = (PFNGLVERTEXATTRIB3SVNVPROC)load("glVertexAttrib3svNV"); + glad_glVertexAttrib4dNV = (PFNGLVERTEXATTRIB4DNVPROC)load("glVertexAttrib4dNV"); + glad_glVertexAttrib4dvNV = (PFNGLVERTEXATTRIB4DVNVPROC)load("glVertexAttrib4dvNV"); + glad_glVertexAttrib4fNV = (PFNGLVERTEXATTRIB4FNVPROC)load("glVertexAttrib4fNV"); + glad_glVertexAttrib4fvNV = (PFNGLVERTEXATTRIB4FVNVPROC)load("glVertexAttrib4fvNV"); + glad_glVertexAttrib4sNV = (PFNGLVERTEXATTRIB4SNVPROC)load("glVertexAttrib4sNV"); + glad_glVertexAttrib4svNV = (PFNGLVERTEXATTRIB4SVNVPROC)load("glVertexAttrib4svNV"); + glad_glVertexAttrib4ubNV = (PFNGLVERTEXATTRIB4UBNVPROC)load("glVertexAttrib4ubNV"); + glad_glVertexAttrib4ubvNV = (PFNGLVERTEXATTRIB4UBVNVPROC)load("glVertexAttrib4ubvNV"); + glad_glVertexAttribs1dvNV = (PFNGLVERTEXATTRIBS1DVNVPROC)load("glVertexAttribs1dvNV"); + glad_glVertexAttribs1fvNV = (PFNGLVERTEXATTRIBS1FVNVPROC)load("glVertexAttribs1fvNV"); + glad_glVertexAttribs1svNV = (PFNGLVERTEXATTRIBS1SVNVPROC)load("glVertexAttribs1svNV"); + glad_glVertexAttribs2dvNV = (PFNGLVERTEXATTRIBS2DVNVPROC)load("glVertexAttribs2dvNV"); + glad_glVertexAttribs2fvNV = (PFNGLVERTEXATTRIBS2FVNVPROC)load("glVertexAttribs2fvNV"); + glad_glVertexAttribs2svNV = (PFNGLVERTEXATTRIBS2SVNVPROC)load("glVertexAttribs2svNV"); + glad_glVertexAttribs3dvNV = (PFNGLVERTEXATTRIBS3DVNVPROC)load("glVertexAttribs3dvNV"); + glad_glVertexAttribs3fvNV = (PFNGLVERTEXATTRIBS3FVNVPROC)load("glVertexAttribs3fvNV"); + glad_glVertexAttribs3svNV = (PFNGLVERTEXATTRIBS3SVNVPROC)load("glVertexAttribs3svNV"); + glad_glVertexAttribs4dvNV = (PFNGLVERTEXATTRIBS4DVNVPROC)load("glVertexAttribs4dvNV"); + glad_glVertexAttribs4fvNV = (PFNGLVERTEXATTRIBS4FVNVPROC)load("glVertexAttribs4fvNV"); + glad_glVertexAttribs4svNV = (PFNGLVERTEXATTRIBS4SVNVPROC)load("glVertexAttribs4svNV"); + glad_glVertexAttribs4ubvNV = (PFNGLVERTEXATTRIBS4UBVNVPROC)load("glVertexAttribs4ubvNV"); +} +static void load_GL_EXT_vertex_shader(GLADloadproc load) { + if(!GLAD_GL_EXT_vertex_shader) return; + glad_glBeginVertexShaderEXT = (PFNGLBEGINVERTEXSHADEREXTPROC)load("glBeginVertexShaderEXT"); + glad_glEndVertexShaderEXT = (PFNGLENDVERTEXSHADEREXTPROC)load("glEndVertexShaderEXT"); + glad_glBindVertexShaderEXT = (PFNGLBINDVERTEXSHADEREXTPROC)load("glBindVertexShaderEXT"); + glad_glGenVertexShadersEXT = (PFNGLGENVERTEXSHADERSEXTPROC)load("glGenVertexShadersEXT"); + glad_glDeleteVertexShaderEXT = (PFNGLDELETEVERTEXSHADEREXTPROC)load("glDeleteVertexShaderEXT"); + glad_glShaderOp1EXT = (PFNGLSHADEROP1EXTPROC)load("glShaderOp1EXT"); + glad_glShaderOp2EXT = (PFNGLSHADEROP2EXTPROC)load("glShaderOp2EXT"); + glad_glShaderOp3EXT = (PFNGLSHADEROP3EXTPROC)load("glShaderOp3EXT"); + glad_glSwizzleEXT = (PFNGLSWIZZLEEXTPROC)load("glSwizzleEXT"); + glad_glWriteMaskEXT = (PFNGLWRITEMASKEXTPROC)load("glWriteMaskEXT"); + glad_glInsertComponentEXT = (PFNGLINSERTCOMPONENTEXTPROC)load("glInsertComponentEXT"); + glad_glExtractComponentEXT = (PFNGLEXTRACTCOMPONENTEXTPROC)load("glExtractComponentEXT"); + glad_glGenSymbolsEXT = (PFNGLGENSYMBOLSEXTPROC)load("glGenSymbolsEXT"); + glad_glSetInvariantEXT = (PFNGLSETINVARIANTEXTPROC)load("glSetInvariantEXT"); + glad_glSetLocalConstantEXT = (PFNGLSETLOCALCONSTANTEXTPROC)load("glSetLocalConstantEXT"); + glad_glVariantbvEXT = (PFNGLVARIANTBVEXTPROC)load("glVariantbvEXT"); + glad_glVariantsvEXT = (PFNGLVARIANTSVEXTPROC)load("glVariantsvEXT"); + glad_glVariantivEXT = (PFNGLVARIANTIVEXTPROC)load("glVariantivEXT"); + glad_glVariantfvEXT = (PFNGLVARIANTFVEXTPROC)load("glVariantfvEXT"); + glad_glVariantdvEXT = (PFNGLVARIANTDVEXTPROC)load("glVariantdvEXT"); + glad_glVariantubvEXT = (PFNGLVARIANTUBVEXTPROC)load("glVariantubvEXT"); + glad_glVariantusvEXT = (PFNGLVARIANTUSVEXTPROC)load("glVariantusvEXT"); + glad_glVariantuivEXT = (PFNGLVARIANTUIVEXTPROC)load("glVariantuivEXT"); + glad_glVariantPointerEXT = (PFNGLVARIANTPOINTEREXTPROC)load("glVariantPointerEXT"); + glad_glEnableVariantClientStateEXT = (PFNGLENABLEVARIANTCLIENTSTATEEXTPROC)load("glEnableVariantClientStateEXT"); + glad_glDisableVariantClientStateEXT = (PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC)load("glDisableVariantClientStateEXT"); + glad_glBindLightParameterEXT = (PFNGLBINDLIGHTPARAMETEREXTPROC)load("glBindLightParameterEXT"); + glad_glBindMaterialParameterEXT = (PFNGLBINDMATERIALPARAMETEREXTPROC)load("glBindMaterialParameterEXT"); + glad_glBindTexGenParameterEXT = (PFNGLBINDTEXGENPARAMETEREXTPROC)load("glBindTexGenParameterEXT"); + glad_glBindTextureUnitParameterEXT = (PFNGLBINDTEXTUREUNITPARAMETEREXTPROC)load("glBindTextureUnitParameterEXT"); + glad_glBindParameterEXT = (PFNGLBINDPARAMETEREXTPROC)load("glBindParameterEXT"); + glad_glIsVariantEnabledEXT = (PFNGLISVARIANTENABLEDEXTPROC)load("glIsVariantEnabledEXT"); + glad_glGetVariantBooleanvEXT = (PFNGLGETVARIANTBOOLEANVEXTPROC)load("glGetVariantBooleanvEXT"); + glad_glGetVariantIntegervEXT = (PFNGLGETVARIANTINTEGERVEXTPROC)load("glGetVariantIntegervEXT"); + glad_glGetVariantFloatvEXT = (PFNGLGETVARIANTFLOATVEXTPROC)load("glGetVariantFloatvEXT"); + glad_glGetVariantPointervEXT = (PFNGLGETVARIANTPOINTERVEXTPROC)load("glGetVariantPointervEXT"); + glad_glGetInvariantBooleanvEXT = (PFNGLGETINVARIANTBOOLEANVEXTPROC)load("glGetInvariantBooleanvEXT"); + glad_glGetInvariantIntegervEXT = (PFNGLGETINVARIANTINTEGERVEXTPROC)load("glGetInvariantIntegervEXT"); + glad_glGetInvariantFloatvEXT = (PFNGLGETINVARIANTFLOATVEXTPROC)load("glGetInvariantFloatvEXT"); + glad_glGetLocalConstantBooleanvEXT = (PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC)load("glGetLocalConstantBooleanvEXT"); + glad_glGetLocalConstantIntegervEXT = (PFNGLGETLOCALCONSTANTINTEGERVEXTPROC)load("glGetLocalConstantIntegervEXT"); + glad_glGetLocalConstantFloatvEXT = (PFNGLGETLOCALCONSTANTFLOATVEXTPROC)load("glGetLocalConstantFloatvEXT"); +} +static void load_GL_EXT_blend_func_separate(GLADloadproc load) { + if(!GLAD_GL_EXT_blend_func_separate) return; + glad_glBlendFuncSeparateEXT = (PFNGLBLENDFUNCSEPARATEEXTPROC)load("glBlendFuncSeparateEXT"); +} +static void load_GL_APPLE_fence(GLADloadproc load) { + if(!GLAD_GL_APPLE_fence) return; + glad_glGenFencesAPPLE = (PFNGLGENFENCESAPPLEPROC)load("glGenFencesAPPLE"); + glad_glDeleteFencesAPPLE = (PFNGLDELETEFENCESAPPLEPROC)load("glDeleteFencesAPPLE"); + glad_glSetFenceAPPLE = (PFNGLSETFENCEAPPLEPROC)load("glSetFenceAPPLE"); + glad_glIsFenceAPPLE = (PFNGLISFENCEAPPLEPROC)load("glIsFenceAPPLE"); + glad_glTestFenceAPPLE = (PFNGLTESTFENCEAPPLEPROC)load("glTestFenceAPPLE"); + glad_glFinishFenceAPPLE = (PFNGLFINISHFENCEAPPLEPROC)load("glFinishFenceAPPLE"); + glad_glTestObjectAPPLE = (PFNGLTESTOBJECTAPPLEPROC)load("glTestObjectAPPLE"); + glad_glFinishObjectAPPLE = (PFNGLFINISHOBJECTAPPLEPROC)load("glFinishObjectAPPLE"); +} +static void load_GL_OES_byte_coordinates(GLADloadproc load) { + if(!GLAD_GL_OES_byte_coordinates) return; + glad_glMultiTexCoord1bOES = (PFNGLMULTITEXCOORD1BOESPROC)load("glMultiTexCoord1bOES"); + glad_glMultiTexCoord1bvOES = (PFNGLMULTITEXCOORD1BVOESPROC)load("glMultiTexCoord1bvOES"); + glad_glMultiTexCoord2bOES = (PFNGLMULTITEXCOORD2BOESPROC)load("glMultiTexCoord2bOES"); + glad_glMultiTexCoord2bvOES = (PFNGLMULTITEXCOORD2BVOESPROC)load("glMultiTexCoord2bvOES"); + glad_glMultiTexCoord3bOES = (PFNGLMULTITEXCOORD3BOESPROC)load("glMultiTexCoord3bOES"); + glad_glMultiTexCoord3bvOES = (PFNGLMULTITEXCOORD3BVOESPROC)load("glMultiTexCoord3bvOES"); + glad_glMultiTexCoord4bOES = (PFNGLMULTITEXCOORD4BOESPROC)load("glMultiTexCoord4bOES"); + glad_glMultiTexCoord4bvOES = (PFNGLMULTITEXCOORD4BVOESPROC)load("glMultiTexCoord4bvOES"); + glad_glTexCoord1bOES = (PFNGLTEXCOORD1BOESPROC)load("glTexCoord1bOES"); + glad_glTexCoord1bvOES = (PFNGLTEXCOORD1BVOESPROC)load("glTexCoord1bvOES"); + glad_glTexCoord2bOES = (PFNGLTEXCOORD2BOESPROC)load("glTexCoord2bOES"); + glad_glTexCoord2bvOES = (PFNGLTEXCOORD2BVOESPROC)load("glTexCoord2bvOES"); + glad_glTexCoord3bOES = (PFNGLTEXCOORD3BOESPROC)load("glTexCoord3bOES"); + glad_glTexCoord3bvOES = (PFNGLTEXCOORD3BVOESPROC)load("glTexCoord3bvOES"); + glad_glTexCoord4bOES = (PFNGLTEXCOORD4BOESPROC)load("glTexCoord4bOES"); + glad_glTexCoord4bvOES = (PFNGLTEXCOORD4BVOESPROC)load("glTexCoord4bvOES"); + glad_glVertex2bOES = (PFNGLVERTEX2BOESPROC)load("glVertex2bOES"); + glad_glVertex2bvOES = (PFNGLVERTEX2BVOESPROC)load("glVertex2bvOES"); + glad_glVertex3bOES = (PFNGLVERTEX3BOESPROC)load("glVertex3bOES"); + glad_glVertex3bvOES = (PFNGLVERTEX3BVOESPROC)load("glVertex3bvOES"); + glad_glVertex4bOES = (PFNGLVERTEX4BOESPROC)load("glVertex4bOES"); + glad_glVertex4bvOES = (PFNGLVERTEX4BVOESPROC)load("glVertex4bvOES"); +} +static void load_GL_ARB_transpose_matrix(GLADloadproc load) { + if(!GLAD_GL_ARB_transpose_matrix) return; + glad_glLoadTransposeMatrixfARB = (PFNGLLOADTRANSPOSEMATRIXFARBPROC)load("glLoadTransposeMatrixfARB"); + glad_glLoadTransposeMatrixdARB = (PFNGLLOADTRANSPOSEMATRIXDARBPROC)load("glLoadTransposeMatrixdARB"); + glad_glMultTransposeMatrixfARB = (PFNGLMULTTRANSPOSEMATRIXFARBPROC)load("glMultTransposeMatrixfARB"); + glad_glMultTransposeMatrixdARB = (PFNGLMULTTRANSPOSEMATRIXDARBPROC)load("glMultTransposeMatrixdARB"); +} +static void load_GL_ARB_provoking_vertex(GLADloadproc load) { + if(!GLAD_GL_ARB_provoking_vertex) return; + glad_glProvokingVertex = (PFNGLPROVOKINGVERTEXPROC)load("glProvokingVertex"); +} +static void load_GL_EXT_fog_coord(GLADloadproc load) { + if(!GLAD_GL_EXT_fog_coord) return; + glad_glFogCoordfEXT = (PFNGLFOGCOORDFEXTPROC)load("glFogCoordfEXT"); + glad_glFogCoordfvEXT = (PFNGLFOGCOORDFVEXTPROC)load("glFogCoordfvEXT"); + glad_glFogCoorddEXT = (PFNGLFOGCOORDDEXTPROC)load("glFogCoorddEXT"); + glad_glFogCoorddvEXT = (PFNGLFOGCOORDDVEXTPROC)load("glFogCoorddvEXT"); + glad_glFogCoordPointerEXT = (PFNGLFOGCOORDPOINTEREXTPROC)load("glFogCoordPointerEXT"); +} +static void load_GL_EXT_vertex_array(GLADloadproc load) { + if(!GLAD_GL_EXT_vertex_array) return; + glad_glArrayElementEXT = (PFNGLARRAYELEMENTEXTPROC)load("glArrayElementEXT"); + glad_glColorPointerEXT = (PFNGLCOLORPOINTEREXTPROC)load("glColorPointerEXT"); + glad_glDrawArraysEXT = (PFNGLDRAWARRAYSEXTPROC)load("glDrawArraysEXT"); + glad_glEdgeFlagPointerEXT = (PFNGLEDGEFLAGPOINTEREXTPROC)load("glEdgeFlagPointerEXT"); + glad_glGetPointervEXT = (PFNGLGETPOINTERVEXTPROC)load("glGetPointervEXT"); + glad_glIndexPointerEXT = (PFNGLINDEXPOINTEREXTPROC)load("glIndexPointerEXT"); + glad_glNormalPointerEXT = (PFNGLNORMALPOINTEREXTPROC)load("glNormalPointerEXT"); + glad_glTexCoordPointerEXT = (PFNGLTEXCOORDPOINTEREXTPROC)load("glTexCoordPointerEXT"); + glad_glVertexPointerEXT = (PFNGLVERTEXPOINTEREXTPROC)load("glVertexPointerEXT"); +} +static void load_GL_EXT_blend_equation_separate(GLADloadproc load) { + if(!GLAD_GL_EXT_blend_equation_separate) return; + glad_glBlendEquationSeparateEXT = (PFNGLBLENDEQUATIONSEPARATEEXTPROC)load("glBlendEquationSeparateEXT"); +} +static void load_GL_NV_framebuffer_mixed_samples(GLADloadproc load) { + if(!GLAD_GL_NV_framebuffer_mixed_samples) return; + glad_glRasterSamplesEXT = (PFNGLRASTERSAMPLESEXTPROC)load("glRasterSamplesEXT"); + glad_glCoverageModulationTableNV = (PFNGLCOVERAGEMODULATIONTABLENVPROC)load("glCoverageModulationTableNV"); + glad_glGetCoverageModulationTableNV = (PFNGLGETCOVERAGEMODULATIONTABLENVPROC)load("glGetCoverageModulationTableNV"); + glad_glCoverageModulationNV = (PFNGLCOVERAGEMODULATIONNVPROC)load("glCoverageModulationNV"); +} +static void load_GL_NVX_conditional_render(GLADloadproc load) { + if(!GLAD_GL_NVX_conditional_render) return; + glad_glBeginConditionalRenderNVX = (PFNGLBEGINCONDITIONALRENDERNVXPROC)load("glBeginConditionalRenderNVX"); + glad_glEndConditionalRenderNVX = (PFNGLENDCONDITIONALRENDERNVXPROC)load("glEndConditionalRenderNVX"); +} +static void load_GL_ARB_multi_draw_indirect(GLADloadproc load) { + if(!GLAD_GL_ARB_multi_draw_indirect) return; + glad_glMultiDrawArraysIndirect = (PFNGLMULTIDRAWARRAYSINDIRECTPROC)load("glMultiDrawArraysIndirect"); + glad_glMultiDrawElementsIndirect = (PFNGLMULTIDRAWELEMENTSINDIRECTPROC)load("glMultiDrawElementsIndirect"); +} +static void load_GL_EXT_raster_multisample(GLADloadproc load) { + if(!GLAD_GL_EXT_raster_multisample) return; + glad_glRasterSamplesEXT = (PFNGLRASTERSAMPLESEXTPROC)load("glRasterSamplesEXT"); +} +static void load_GL_NV_copy_image(GLADloadproc load) { + if(!GLAD_GL_NV_copy_image) return; + glad_glCopyImageSubDataNV = (PFNGLCOPYIMAGESUBDATANVPROC)load("glCopyImageSubDataNV"); +} +static void load_GL_INTEL_framebuffer_CMAA(GLADloadproc load) { + if(!GLAD_GL_INTEL_framebuffer_CMAA) return; + glad_glApplyFramebufferAttachmentCMAAINTEL = (PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC)load("glApplyFramebufferAttachmentCMAAINTEL"); +} +static void load_GL_ARB_transform_feedback2(GLADloadproc load) { + if(!GLAD_GL_ARB_transform_feedback2) return; + 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"); +} +static void load_GL_ARB_transform_feedback3(GLADloadproc load) { + if(!GLAD_GL_ARB_transform_feedback3) return; + glad_glDrawTransformFeedbackStream = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)load("glDrawTransformFeedbackStream"); + glad_glBeginQueryIndexed = (PFNGLBEGINQUERYINDEXEDPROC)load("glBeginQueryIndexed"); + glad_glEndQueryIndexed = (PFNGLENDQUERYINDEXEDPROC)load("glEndQueryIndexed"); + glad_glGetQueryIndexediv = (PFNGLGETQUERYINDEXEDIVPROC)load("glGetQueryIndexediv"); +} +static void load_GL_EXT_debug_marker(GLADloadproc load) { + if(!GLAD_GL_EXT_debug_marker) return; + glad_glInsertEventMarkerEXT = (PFNGLINSERTEVENTMARKEREXTPROC)load("glInsertEventMarkerEXT"); + glad_glPushGroupMarkerEXT = (PFNGLPUSHGROUPMARKEREXTPROC)load("glPushGroupMarkerEXT"); + glad_glPopGroupMarkerEXT = (PFNGLPOPGROUPMARKEREXTPROC)load("glPopGroupMarkerEXT"); +} +static void load_GL_EXT_pixel_transform(GLADloadproc load) { + if(!GLAD_GL_EXT_pixel_transform) return; + glad_glPixelTransformParameteriEXT = (PFNGLPIXELTRANSFORMPARAMETERIEXTPROC)load("glPixelTransformParameteriEXT"); + glad_glPixelTransformParameterfEXT = (PFNGLPIXELTRANSFORMPARAMETERFEXTPROC)load("glPixelTransformParameterfEXT"); + glad_glPixelTransformParameterivEXT = (PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC)load("glPixelTransformParameterivEXT"); + glad_glPixelTransformParameterfvEXT = (PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC)load("glPixelTransformParameterfvEXT"); + glad_glGetPixelTransformParameterivEXT = (PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC)load("glGetPixelTransformParameterivEXT"); + glad_glGetPixelTransformParameterfvEXT = (PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC)load("glGetPixelTransformParameterfvEXT"); +} +static void load_GL_ATI_fragment_shader(GLADloadproc load) { + if(!GLAD_GL_ATI_fragment_shader) return; + glad_glGenFragmentShadersATI = (PFNGLGENFRAGMENTSHADERSATIPROC)load("glGenFragmentShadersATI"); + glad_glBindFragmentShaderATI = (PFNGLBINDFRAGMENTSHADERATIPROC)load("glBindFragmentShaderATI"); + glad_glDeleteFragmentShaderATI = (PFNGLDELETEFRAGMENTSHADERATIPROC)load("glDeleteFragmentShaderATI"); + glad_glBeginFragmentShaderATI = (PFNGLBEGINFRAGMENTSHADERATIPROC)load("glBeginFragmentShaderATI"); + glad_glEndFragmentShaderATI = (PFNGLENDFRAGMENTSHADERATIPROC)load("glEndFragmentShaderATI"); + glad_glPassTexCoordATI = (PFNGLPASSTEXCOORDATIPROC)load("glPassTexCoordATI"); + glad_glSampleMapATI = (PFNGLSAMPLEMAPATIPROC)load("glSampleMapATI"); + glad_glColorFragmentOp1ATI = (PFNGLCOLORFRAGMENTOP1ATIPROC)load("glColorFragmentOp1ATI"); + glad_glColorFragmentOp2ATI = (PFNGLCOLORFRAGMENTOP2ATIPROC)load("glColorFragmentOp2ATI"); + glad_glColorFragmentOp3ATI = (PFNGLCOLORFRAGMENTOP3ATIPROC)load("glColorFragmentOp3ATI"); + glad_glAlphaFragmentOp1ATI = (PFNGLALPHAFRAGMENTOP1ATIPROC)load("glAlphaFragmentOp1ATI"); + glad_glAlphaFragmentOp2ATI = (PFNGLALPHAFRAGMENTOP2ATIPROC)load("glAlphaFragmentOp2ATI"); + glad_glAlphaFragmentOp3ATI = (PFNGLALPHAFRAGMENTOP3ATIPROC)load("glAlphaFragmentOp3ATI"); + glad_glSetFragmentShaderConstantATI = (PFNGLSETFRAGMENTSHADERCONSTANTATIPROC)load("glSetFragmentShaderConstantATI"); +} +static void load_GL_ARB_vertex_array_object(GLADloadproc load) { + if(!GLAD_GL_ARB_vertex_array_object) return; + glad_glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC)load("glBindVertexArray"); + glad_glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC)load("glDeleteVertexArrays"); + glad_glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)load("glGenVertexArrays"); + glad_glIsVertexArray = (PFNGLISVERTEXARRAYPROC)load("glIsVertexArray"); +} +static void load_GL_SUN_triangle_list(GLADloadproc load) { + if(!GLAD_GL_SUN_triangle_list) return; + glad_glReplacementCodeuiSUN = (PFNGLREPLACEMENTCODEUISUNPROC)load("glReplacementCodeuiSUN"); + glad_glReplacementCodeusSUN = (PFNGLREPLACEMENTCODEUSSUNPROC)load("glReplacementCodeusSUN"); + glad_glReplacementCodeubSUN = (PFNGLREPLACEMENTCODEUBSUNPROC)load("glReplacementCodeubSUN"); + glad_glReplacementCodeuivSUN = (PFNGLREPLACEMENTCODEUIVSUNPROC)load("glReplacementCodeuivSUN"); + glad_glReplacementCodeusvSUN = (PFNGLREPLACEMENTCODEUSVSUNPROC)load("glReplacementCodeusvSUN"); + glad_glReplacementCodeubvSUN = (PFNGLREPLACEMENTCODEUBVSUNPROC)load("glReplacementCodeubvSUN"); + glad_glReplacementCodePointerSUN = (PFNGLREPLACEMENTCODEPOINTERSUNPROC)load("glReplacementCodePointerSUN"); +} +static void load_GL_ARB_transform_feedback_instanced(GLADloadproc load) { + if(!GLAD_GL_ARB_transform_feedback_instanced) return; + glad_glDrawTransformFeedbackInstanced = (PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC)load("glDrawTransformFeedbackInstanced"); + glad_glDrawTransformFeedbackStreamInstanced = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC)load("glDrawTransformFeedbackStreamInstanced"); +} +static void load_GL_SGIX_async(GLADloadproc load) { + if(!GLAD_GL_SGIX_async) return; + glad_glAsyncMarkerSGIX = (PFNGLASYNCMARKERSGIXPROC)load("glAsyncMarkerSGIX"); + glad_glFinishAsyncSGIX = (PFNGLFINISHASYNCSGIXPROC)load("glFinishAsyncSGIX"); + glad_glPollAsyncSGIX = (PFNGLPOLLASYNCSGIXPROC)load("glPollAsyncSGIX"); + glad_glGenAsyncMarkersSGIX = (PFNGLGENASYNCMARKERSSGIXPROC)load("glGenAsyncMarkersSGIX"); + glad_glDeleteAsyncMarkersSGIX = (PFNGLDELETEASYNCMARKERSSGIXPROC)load("glDeleteAsyncMarkersSGIX"); + glad_glIsAsyncMarkerSGIX = (PFNGLISASYNCMARKERSGIXPROC)load("glIsAsyncMarkerSGIX"); +} +static void load_GL_INTEL_performance_query(GLADloadproc load) { + if(!GLAD_GL_INTEL_performance_query) return; + glad_glBeginPerfQueryINTEL = (PFNGLBEGINPERFQUERYINTELPROC)load("glBeginPerfQueryINTEL"); + glad_glCreatePerfQueryINTEL = (PFNGLCREATEPERFQUERYINTELPROC)load("glCreatePerfQueryINTEL"); + glad_glDeletePerfQueryINTEL = (PFNGLDELETEPERFQUERYINTELPROC)load("glDeletePerfQueryINTEL"); + glad_glEndPerfQueryINTEL = (PFNGLENDPERFQUERYINTELPROC)load("glEndPerfQueryINTEL"); + glad_glGetFirstPerfQueryIdINTEL = (PFNGLGETFIRSTPERFQUERYIDINTELPROC)load("glGetFirstPerfQueryIdINTEL"); + glad_glGetNextPerfQueryIdINTEL = (PFNGLGETNEXTPERFQUERYIDINTELPROC)load("glGetNextPerfQueryIdINTEL"); + glad_glGetPerfCounterInfoINTEL = (PFNGLGETPERFCOUNTERINFOINTELPROC)load("glGetPerfCounterInfoINTEL"); + glad_glGetPerfQueryDataINTEL = (PFNGLGETPERFQUERYDATAINTELPROC)load("glGetPerfQueryDataINTEL"); + glad_glGetPerfQueryIdByNameINTEL = (PFNGLGETPERFQUERYIDBYNAMEINTELPROC)load("glGetPerfQueryIdByNameINTEL"); + glad_glGetPerfQueryInfoINTEL = (PFNGLGETPERFQUERYINFOINTELPROC)load("glGetPerfQueryInfoINTEL"); +} +static void load_GL_NV_gpu_shader5(GLADloadproc load) { + if(!GLAD_GL_NV_gpu_shader5) return; + glad_glUniform1i64NV = (PFNGLUNIFORM1I64NVPROC)load("glUniform1i64NV"); + glad_glUniform2i64NV = (PFNGLUNIFORM2I64NVPROC)load("glUniform2i64NV"); + glad_glUniform3i64NV = (PFNGLUNIFORM3I64NVPROC)load("glUniform3i64NV"); + glad_glUniform4i64NV = (PFNGLUNIFORM4I64NVPROC)load("glUniform4i64NV"); + glad_glUniform1i64vNV = (PFNGLUNIFORM1I64VNVPROC)load("glUniform1i64vNV"); + glad_glUniform2i64vNV = (PFNGLUNIFORM2I64VNVPROC)load("glUniform2i64vNV"); + glad_glUniform3i64vNV = (PFNGLUNIFORM3I64VNVPROC)load("glUniform3i64vNV"); + glad_glUniform4i64vNV = (PFNGLUNIFORM4I64VNVPROC)load("glUniform4i64vNV"); + glad_glUniform1ui64NV = (PFNGLUNIFORM1UI64NVPROC)load("glUniform1ui64NV"); + glad_glUniform2ui64NV = (PFNGLUNIFORM2UI64NVPROC)load("glUniform2ui64NV"); + glad_glUniform3ui64NV = (PFNGLUNIFORM3UI64NVPROC)load("glUniform3ui64NV"); + glad_glUniform4ui64NV = (PFNGLUNIFORM4UI64NVPROC)load("glUniform4ui64NV"); + glad_glUniform1ui64vNV = (PFNGLUNIFORM1UI64VNVPROC)load("glUniform1ui64vNV"); + glad_glUniform2ui64vNV = (PFNGLUNIFORM2UI64VNVPROC)load("glUniform2ui64vNV"); + glad_glUniform3ui64vNV = (PFNGLUNIFORM3UI64VNVPROC)load("glUniform3ui64vNV"); + glad_glUniform4ui64vNV = (PFNGLUNIFORM4UI64VNVPROC)load("glUniform4ui64vNV"); + glad_glGetUniformi64vNV = (PFNGLGETUNIFORMI64VNVPROC)load("glGetUniformi64vNV"); + glad_glProgramUniform1i64NV = (PFNGLPROGRAMUNIFORM1I64NVPROC)load("glProgramUniform1i64NV"); + glad_glProgramUniform2i64NV = (PFNGLPROGRAMUNIFORM2I64NVPROC)load("glProgramUniform2i64NV"); + glad_glProgramUniform3i64NV = (PFNGLPROGRAMUNIFORM3I64NVPROC)load("glProgramUniform3i64NV"); + glad_glProgramUniform4i64NV = (PFNGLPROGRAMUNIFORM4I64NVPROC)load("glProgramUniform4i64NV"); + glad_glProgramUniform1i64vNV = (PFNGLPROGRAMUNIFORM1I64VNVPROC)load("glProgramUniform1i64vNV"); + glad_glProgramUniform2i64vNV = (PFNGLPROGRAMUNIFORM2I64VNVPROC)load("glProgramUniform2i64vNV"); + glad_glProgramUniform3i64vNV = (PFNGLPROGRAMUNIFORM3I64VNVPROC)load("glProgramUniform3i64vNV"); + glad_glProgramUniform4i64vNV = (PFNGLPROGRAMUNIFORM4I64VNVPROC)load("glProgramUniform4i64vNV"); + glad_glProgramUniform1ui64NV = (PFNGLPROGRAMUNIFORM1UI64NVPROC)load("glProgramUniform1ui64NV"); + glad_glProgramUniform2ui64NV = (PFNGLPROGRAMUNIFORM2UI64NVPROC)load("glProgramUniform2ui64NV"); + glad_glProgramUniform3ui64NV = (PFNGLPROGRAMUNIFORM3UI64NVPROC)load("glProgramUniform3ui64NV"); + glad_glProgramUniform4ui64NV = (PFNGLPROGRAMUNIFORM4UI64NVPROC)load("glProgramUniform4ui64NV"); + glad_glProgramUniform1ui64vNV = (PFNGLPROGRAMUNIFORM1UI64VNVPROC)load("glProgramUniform1ui64vNV"); + glad_glProgramUniform2ui64vNV = (PFNGLPROGRAMUNIFORM2UI64VNVPROC)load("glProgramUniform2ui64vNV"); + glad_glProgramUniform3ui64vNV = (PFNGLPROGRAMUNIFORM3UI64VNVPROC)load("glProgramUniform3ui64vNV"); + glad_glProgramUniform4ui64vNV = (PFNGLPROGRAMUNIFORM4UI64VNVPROC)load("glProgramUniform4ui64vNV"); +} +static void load_GL_NV_bindless_multi_draw_indirect_count(GLADloadproc load) { + if(!GLAD_GL_NV_bindless_multi_draw_indirect_count) return; + glad_glMultiDrawArraysIndirectBindlessCountNV = (PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC)load("glMultiDrawArraysIndirectBindlessCountNV"); + glad_glMultiDrawElementsIndirectBindlessCountNV = (PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC)load("glMultiDrawElementsIndirectBindlessCountNV"); +} +static void load_GL_ARB_ES2_compatibility(GLADloadproc load) { + if(!GLAD_GL_ARB_ES2_compatibility) 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"); +} +static void load_GL_ARB_indirect_parameters(GLADloadproc load) { + if(!GLAD_GL_ARB_indirect_parameters) return; + glad_glMultiDrawArraysIndirectCountARB = (PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC)load("glMultiDrawArraysIndirectCountARB"); + glad_glMultiDrawElementsIndirectCountARB = (PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC)load("glMultiDrawElementsIndirectCountARB"); +} +static void load_GL_NV_half_float(GLADloadproc load) { + if(!GLAD_GL_NV_half_float) return; + glad_glVertex2hNV = (PFNGLVERTEX2HNVPROC)load("glVertex2hNV"); + glad_glVertex2hvNV = (PFNGLVERTEX2HVNVPROC)load("glVertex2hvNV"); + glad_glVertex3hNV = (PFNGLVERTEX3HNVPROC)load("glVertex3hNV"); + glad_glVertex3hvNV = (PFNGLVERTEX3HVNVPROC)load("glVertex3hvNV"); + glad_glVertex4hNV = (PFNGLVERTEX4HNVPROC)load("glVertex4hNV"); + glad_glVertex4hvNV = (PFNGLVERTEX4HVNVPROC)load("glVertex4hvNV"); + glad_glNormal3hNV = (PFNGLNORMAL3HNVPROC)load("glNormal3hNV"); + glad_glNormal3hvNV = (PFNGLNORMAL3HVNVPROC)load("glNormal3hvNV"); + glad_glColor3hNV = (PFNGLCOLOR3HNVPROC)load("glColor3hNV"); + glad_glColor3hvNV = (PFNGLCOLOR3HVNVPROC)load("glColor3hvNV"); + glad_glColor4hNV = (PFNGLCOLOR4HNVPROC)load("glColor4hNV"); + glad_glColor4hvNV = (PFNGLCOLOR4HVNVPROC)load("glColor4hvNV"); + glad_glTexCoord1hNV = (PFNGLTEXCOORD1HNVPROC)load("glTexCoord1hNV"); + glad_glTexCoord1hvNV = (PFNGLTEXCOORD1HVNVPROC)load("glTexCoord1hvNV"); + glad_glTexCoord2hNV = (PFNGLTEXCOORD2HNVPROC)load("glTexCoord2hNV"); + glad_glTexCoord2hvNV = (PFNGLTEXCOORD2HVNVPROC)load("glTexCoord2hvNV"); + glad_glTexCoord3hNV = (PFNGLTEXCOORD3HNVPROC)load("glTexCoord3hNV"); + glad_glTexCoord3hvNV = (PFNGLTEXCOORD3HVNVPROC)load("glTexCoord3hvNV"); + glad_glTexCoord4hNV = (PFNGLTEXCOORD4HNVPROC)load("glTexCoord4hNV"); + glad_glTexCoord4hvNV = (PFNGLTEXCOORD4HVNVPROC)load("glTexCoord4hvNV"); + glad_glMultiTexCoord1hNV = (PFNGLMULTITEXCOORD1HNVPROC)load("glMultiTexCoord1hNV"); + glad_glMultiTexCoord1hvNV = (PFNGLMULTITEXCOORD1HVNVPROC)load("glMultiTexCoord1hvNV"); + glad_glMultiTexCoord2hNV = (PFNGLMULTITEXCOORD2HNVPROC)load("glMultiTexCoord2hNV"); + glad_glMultiTexCoord2hvNV = (PFNGLMULTITEXCOORD2HVNVPROC)load("glMultiTexCoord2hvNV"); + glad_glMultiTexCoord3hNV = (PFNGLMULTITEXCOORD3HNVPROC)load("glMultiTexCoord3hNV"); + glad_glMultiTexCoord3hvNV = (PFNGLMULTITEXCOORD3HVNVPROC)load("glMultiTexCoord3hvNV"); + glad_glMultiTexCoord4hNV = (PFNGLMULTITEXCOORD4HNVPROC)load("glMultiTexCoord4hNV"); + glad_glMultiTexCoord4hvNV = (PFNGLMULTITEXCOORD4HVNVPROC)load("glMultiTexCoord4hvNV"); + glad_glFogCoordhNV = (PFNGLFOGCOORDHNVPROC)load("glFogCoordhNV"); + glad_glFogCoordhvNV = (PFNGLFOGCOORDHVNVPROC)load("glFogCoordhvNV"); + glad_glSecondaryColor3hNV = (PFNGLSECONDARYCOLOR3HNVPROC)load("glSecondaryColor3hNV"); + glad_glSecondaryColor3hvNV = (PFNGLSECONDARYCOLOR3HVNVPROC)load("glSecondaryColor3hvNV"); + glad_glVertexWeighthNV = (PFNGLVERTEXWEIGHTHNVPROC)load("glVertexWeighthNV"); + glad_glVertexWeighthvNV = (PFNGLVERTEXWEIGHTHVNVPROC)load("glVertexWeighthvNV"); + glad_glVertexAttrib1hNV = (PFNGLVERTEXATTRIB1HNVPROC)load("glVertexAttrib1hNV"); + glad_glVertexAttrib1hvNV = (PFNGLVERTEXATTRIB1HVNVPROC)load("glVertexAttrib1hvNV"); + glad_glVertexAttrib2hNV = (PFNGLVERTEXATTRIB2HNVPROC)load("glVertexAttrib2hNV"); + glad_glVertexAttrib2hvNV = (PFNGLVERTEXATTRIB2HVNVPROC)load("glVertexAttrib2hvNV"); + glad_glVertexAttrib3hNV = (PFNGLVERTEXATTRIB3HNVPROC)load("glVertexAttrib3hNV"); + glad_glVertexAttrib3hvNV = (PFNGLVERTEXATTRIB3HVNVPROC)load("glVertexAttrib3hvNV"); + glad_glVertexAttrib4hNV = (PFNGLVERTEXATTRIB4HNVPROC)load("glVertexAttrib4hNV"); + glad_glVertexAttrib4hvNV = (PFNGLVERTEXATTRIB4HVNVPROC)load("glVertexAttrib4hvNV"); + glad_glVertexAttribs1hvNV = (PFNGLVERTEXATTRIBS1HVNVPROC)load("glVertexAttribs1hvNV"); + glad_glVertexAttribs2hvNV = (PFNGLVERTEXATTRIBS2HVNVPROC)load("glVertexAttribs2hvNV"); + glad_glVertexAttribs3hvNV = (PFNGLVERTEXATTRIBS3HVNVPROC)load("glVertexAttribs3hvNV"); + glad_glVertexAttribs4hvNV = (PFNGLVERTEXATTRIBS4HVNVPROC)load("glVertexAttribs4hvNV"); +} +static void load_GL_ARB_ES3_2_compatibility(GLADloadproc load) { + if(!GLAD_GL_ARB_ES3_2_compatibility) return; + glad_glPrimitiveBoundingBoxARB = (PFNGLPRIMITIVEBOUNDINGBOXARBPROC)load("glPrimitiveBoundingBoxARB"); +} +static void load_GL_EXT_polygon_offset_clamp(GLADloadproc load) { + if(!GLAD_GL_EXT_polygon_offset_clamp) return; + glad_glPolygonOffsetClampEXT = (PFNGLPOLYGONOFFSETCLAMPEXTPROC)load("glPolygonOffsetClampEXT"); +} +static void load_GL_EXT_compiled_vertex_array(GLADloadproc load) { + if(!GLAD_GL_EXT_compiled_vertex_array) return; + glad_glLockArraysEXT = (PFNGLLOCKARRAYSEXTPROC)load("glLockArraysEXT"); + glad_glUnlockArraysEXT = (PFNGLUNLOCKARRAYSEXTPROC)load("glUnlockArraysEXT"); +} +static void load_GL_NV_depth_buffer_float(GLADloadproc load) { + if(!GLAD_GL_NV_depth_buffer_float) return; + glad_glDepthRangedNV = (PFNGLDEPTHRANGEDNVPROC)load("glDepthRangedNV"); + glad_glClearDepthdNV = (PFNGLCLEARDEPTHDNVPROC)load("glClearDepthdNV"); + glad_glDepthBoundsdNV = (PFNGLDEPTHBOUNDSDNVPROC)load("glDepthBoundsdNV"); +} +static void load_GL_NV_occlusion_query(GLADloadproc load) { + if(!GLAD_GL_NV_occlusion_query) return; + glad_glGenOcclusionQueriesNV = (PFNGLGENOCCLUSIONQUERIESNVPROC)load("glGenOcclusionQueriesNV"); + glad_glDeleteOcclusionQueriesNV = (PFNGLDELETEOCCLUSIONQUERIESNVPROC)load("glDeleteOcclusionQueriesNV"); + glad_glIsOcclusionQueryNV = (PFNGLISOCCLUSIONQUERYNVPROC)load("glIsOcclusionQueryNV"); + glad_glBeginOcclusionQueryNV = (PFNGLBEGINOCCLUSIONQUERYNVPROC)load("glBeginOcclusionQueryNV"); + glad_glEndOcclusionQueryNV = (PFNGLENDOCCLUSIONQUERYNVPROC)load("glEndOcclusionQueryNV"); + glad_glGetOcclusionQueryivNV = (PFNGLGETOCCLUSIONQUERYIVNVPROC)load("glGetOcclusionQueryivNV"); + glad_glGetOcclusionQueryuivNV = (PFNGLGETOCCLUSIONQUERYUIVNVPROC)load("glGetOcclusionQueryuivNV"); +} +static void load_GL_APPLE_flush_buffer_range(GLADloadproc load) { + if(!GLAD_GL_APPLE_flush_buffer_range) return; + glad_glBufferParameteriAPPLE = (PFNGLBUFFERPARAMETERIAPPLEPROC)load("glBufferParameteriAPPLE"); + glad_glFlushMappedBufferRangeAPPLE = (PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC)load("glFlushMappedBufferRangeAPPLE"); +} +static void load_GL_ARB_imaging(GLADloadproc load) { + if(!GLAD_GL_ARB_imaging) return; + glad_glBlendColor = (PFNGLBLENDCOLORPROC)load("glBlendColor"); + glad_glBlendEquation = (PFNGLBLENDEQUATIONPROC)load("glBlendEquation"); + glad_glColorTable = (PFNGLCOLORTABLEPROC)load("glColorTable"); + glad_glColorTableParameterfv = (PFNGLCOLORTABLEPARAMETERFVPROC)load("glColorTableParameterfv"); + glad_glColorTableParameteriv = (PFNGLCOLORTABLEPARAMETERIVPROC)load("glColorTableParameteriv"); + glad_glCopyColorTable = (PFNGLCOPYCOLORTABLEPROC)load("glCopyColorTable"); + glad_glGetColorTable = (PFNGLGETCOLORTABLEPROC)load("glGetColorTable"); + glad_glGetColorTableParameterfv = (PFNGLGETCOLORTABLEPARAMETERFVPROC)load("glGetColorTableParameterfv"); + glad_glGetColorTableParameteriv = (PFNGLGETCOLORTABLEPARAMETERIVPROC)load("glGetColorTableParameteriv"); + glad_glColorSubTable = (PFNGLCOLORSUBTABLEPROC)load("glColorSubTable"); + glad_glCopyColorSubTable = (PFNGLCOPYCOLORSUBTABLEPROC)load("glCopyColorSubTable"); + glad_glConvolutionFilter1D = (PFNGLCONVOLUTIONFILTER1DPROC)load("glConvolutionFilter1D"); + glad_glConvolutionFilter2D = (PFNGLCONVOLUTIONFILTER2DPROC)load("glConvolutionFilter2D"); + glad_glConvolutionParameterf = (PFNGLCONVOLUTIONPARAMETERFPROC)load("glConvolutionParameterf"); + glad_glConvolutionParameterfv = (PFNGLCONVOLUTIONPARAMETERFVPROC)load("glConvolutionParameterfv"); + glad_glConvolutionParameteri = (PFNGLCONVOLUTIONPARAMETERIPROC)load("glConvolutionParameteri"); + glad_glConvolutionParameteriv = (PFNGLCONVOLUTIONPARAMETERIVPROC)load("glConvolutionParameteriv"); + glad_glCopyConvolutionFilter1D = (PFNGLCOPYCONVOLUTIONFILTER1DPROC)load("glCopyConvolutionFilter1D"); + glad_glCopyConvolutionFilter2D = (PFNGLCOPYCONVOLUTIONFILTER2DPROC)load("glCopyConvolutionFilter2D"); + glad_glGetConvolutionFilter = (PFNGLGETCONVOLUTIONFILTERPROC)load("glGetConvolutionFilter"); + glad_glGetConvolutionParameterfv = (PFNGLGETCONVOLUTIONPARAMETERFVPROC)load("glGetConvolutionParameterfv"); + glad_glGetConvolutionParameteriv = (PFNGLGETCONVOLUTIONPARAMETERIVPROC)load("glGetConvolutionParameteriv"); + glad_glGetSeparableFilter = (PFNGLGETSEPARABLEFILTERPROC)load("glGetSeparableFilter"); + glad_glSeparableFilter2D = (PFNGLSEPARABLEFILTER2DPROC)load("glSeparableFilter2D"); + glad_glGetHistogram = (PFNGLGETHISTOGRAMPROC)load("glGetHistogram"); + glad_glGetHistogramParameterfv = (PFNGLGETHISTOGRAMPARAMETERFVPROC)load("glGetHistogramParameterfv"); + glad_glGetHistogramParameteriv = (PFNGLGETHISTOGRAMPARAMETERIVPROC)load("glGetHistogramParameteriv"); + glad_glGetMinmax = (PFNGLGETMINMAXPROC)load("glGetMinmax"); + glad_glGetMinmaxParameterfv = (PFNGLGETMINMAXPARAMETERFVPROC)load("glGetMinmaxParameterfv"); + glad_glGetMinmaxParameteriv = (PFNGLGETMINMAXPARAMETERIVPROC)load("glGetMinmaxParameteriv"); + glad_glHistogram = (PFNGLHISTOGRAMPROC)load("glHistogram"); + glad_glMinmax = (PFNGLMINMAXPROC)load("glMinmax"); + glad_glResetHistogram = (PFNGLRESETHISTOGRAMPROC)load("glResetHistogram"); + glad_glResetMinmax = (PFNGLRESETMINMAXPROC)load("glResetMinmax"); +} +static void load_GL_ARB_draw_buffers_blend(GLADloadproc load) { + if(!GLAD_GL_ARB_draw_buffers_blend) return; + glad_glBlendEquationiARB = (PFNGLBLENDEQUATIONIARBPROC)load("glBlendEquationiARB"); + glad_glBlendEquationSeparateiARB = (PFNGLBLENDEQUATIONSEPARATEIARBPROC)load("glBlendEquationSeparateiARB"); + glad_glBlendFunciARB = (PFNGLBLENDFUNCIARBPROC)load("glBlendFunciARB"); + glad_glBlendFuncSeparateiARB = (PFNGLBLENDFUNCSEPARATEIARBPROC)load("glBlendFuncSeparateiARB"); +} +static void load_GL_ARB_clear_buffer_object(GLADloadproc load) { + if(!GLAD_GL_ARB_clear_buffer_object) return; + glad_glClearBufferData = (PFNGLCLEARBUFFERDATAPROC)load("glClearBufferData"); + glad_glClearBufferSubData = (PFNGLCLEARBUFFERSUBDATAPROC)load("glClearBufferSubData"); +} +static void load_GL_ARB_multisample(GLADloadproc load) { + if(!GLAD_GL_ARB_multisample) return; + glad_glSampleCoverageARB = (PFNGLSAMPLECOVERAGEARBPROC)load("glSampleCoverageARB"); +} +static void load_GL_EXT_debug_label(GLADloadproc load) { + if(!GLAD_GL_EXT_debug_label) return; + glad_glLabelObjectEXT = (PFNGLLABELOBJECTEXTPROC)load("glLabelObjectEXT"); + glad_glGetObjectLabelEXT = (PFNGLGETOBJECTLABELEXTPROC)load("glGetObjectLabelEXT"); +} +static void load_GL_ARB_sample_shading(GLADloadproc load) { + if(!GLAD_GL_ARB_sample_shading) return; + glad_glMinSampleShadingARB = (PFNGLMINSAMPLESHADINGARBPROC)load("glMinSampleShadingARB"); +} +static void load_GL_NV_internalformat_sample_query(GLADloadproc load) { + if(!GLAD_GL_NV_internalformat_sample_query) return; + glad_glGetInternalformatSampleivNV = (PFNGLGETINTERNALFORMATSAMPLEIVNVPROC)load("glGetInternalformatSampleivNV"); +} +static void load_GL_INTEL_map_texture(GLADloadproc load) { + if(!GLAD_GL_INTEL_map_texture) return; + glad_glSyncTextureINTEL = (PFNGLSYNCTEXTUREINTELPROC)load("glSyncTextureINTEL"); + glad_glUnmapTexture2DINTEL = (PFNGLUNMAPTEXTURE2DINTELPROC)load("glUnmapTexture2DINTEL"); + glad_glMapTexture2DINTEL = (PFNGLMAPTEXTURE2DINTELPROC)load("glMapTexture2DINTEL"); +} +static void load_GL_ARB_compute_shader(GLADloadproc load) { + if(!GLAD_GL_ARB_compute_shader) return; + glad_glDispatchCompute = (PFNGLDISPATCHCOMPUTEPROC)load("glDispatchCompute"); + glad_glDispatchComputeIndirect = (PFNGLDISPATCHCOMPUTEINDIRECTPROC)load("glDispatchComputeIndirect"); +} +static void load_GL_IBM_vertex_array_lists(GLADloadproc load) { + if(!GLAD_GL_IBM_vertex_array_lists) return; + glad_glColorPointerListIBM = (PFNGLCOLORPOINTERLISTIBMPROC)load("glColorPointerListIBM"); + glad_glSecondaryColorPointerListIBM = (PFNGLSECONDARYCOLORPOINTERLISTIBMPROC)load("glSecondaryColorPointerListIBM"); + glad_glEdgeFlagPointerListIBM = (PFNGLEDGEFLAGPOINTERLISTIBMPROC)load("glEdgeFlagPointerListIBM"); + glad_glFogCoordPointerListIBM = (PFNGLFOGCOORDPOINTERLISTIBMPROC)load("glFogCoordPointerListIBM"); + glad_glIndexPointerListIBM = (PFNGLINDEXPOINTERLISTIBMPROC)load("glIndexPointerListIBM"); + glad_glNormalPointerListIBM = (PFNGLNORMALPOINTERLISTIBMPROC)load("glNormalPointerListIBM"); + glad_glTexCoordPointerListIBM = (PFNGLTEXCOORDPOINTERLISTIBMPROC)load("glTexCoordPointerListIBM"); + glad_glVertexPointerListIBM = (PFNGLVERTEXPOINTERLISTIBMPROC)load("glVertexPointerListIBM"); +} +static void load_GL_ARB_color_buffer_float(GLADloadproc load) { + if(!GLAD_GL_ARB_color_buffer_float) return; + glad_glClampColorARB = (PFNGLCLAMPCOLORARBPROC)load("glClampColorARB"); +} +static void load_GL_ARB_bindless_texture(GLADloadproc load) { + if(!GLAD_GL_ARB_bindless_texture) return; + glad_glGetTextureHandleARB = (PFNGLGETTEXTUREHANDLEARBPROC)load("glGetTextureHandleARB"); + glad_glGetTextureSamplerHandleARB = (PFNGLGETTEXTURESAMPLERHANDLEARBPROC)load("glGetTextureSamplerHandleARB"); + glad_glMakeTextureHandleResidentARB = (PFNGLMAKETEXTUREHANDLERESIDENTARBPROC)load("glMakeTextureHandleResidentARB"); + glad_glMakeTextureHandleNonResidentARB = (PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC)load("glMakeTextureHandleNonResidentARB"); + glad_glGetImageHandleARB = (PFNGLGETIMAGEHANDLEARBPROC)load("glGetImageHandleARB"); + glad_glMakeImageHandleResidentARB = (PFNGLMAKEIMAGEHANDLERESIDENTARBPROC)load("glMakeImageHandleResidentARB"); + glad_glMakeImageHandleNonResidentARB = (PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC)load("glMakeImageHandleNonResidentARB"); + glad_glUniformHandleui64ARB = (PFNGLUNIFORMHANDLEUI64ARBPROC)load("glUniformHandleui64ARB"); + glad_glUniformHandleui64vARB = (PFNGLUNIFORMHANDLEUI64VARBPROC)load("glUniformHandleui64vARB"); + glad_glProgramUniformHandleui64ARB = (PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC)load("glProgramUniformHandleui64ARB"); + glad_glProgramUniformHandleui64vARB = (PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC)load("glProgramUniformHandleui64vARB"); + glad_glIsTextureHandleResidentARB = (PFNGLISTEXTUREHANDLERESIDENTARBPROC)load("glIsTextureHandleResidentARB"); + glad_glIsImageHandleResidentARB = (PFNGLISIMAGEHANDLERESIDENTARBPROC)load("glIsImageHandleResidentARB"); + glad_glVertexAttribL1ui64ARB = (PFNGLVERTEXATTRIBL1UI64ARBPROC)load("glVertexAttribL1ui64ARB"); + glad_glVertexAttribL1ui64vARB = (PFNGLVERTEXATTRIBL1UI64VARBPROC)load("glVertexAttribL1ui64vARB"); + glad_glGetVertexAttribLui64vARB = (PFNGLGETVERTEXATTRIBLUI64VARBPROC)load("glGetVertexAttribLui64vARB"); +} +static void load_GL_ARB_window_pos(GLADloadproc load) { + if(!GLAD_GL_ARB_window_pos) return; + glad_glWindowPos2dARB = (PFNGLWINDOWPOS2DARBPROC)load("glWindowPos2dARB"); + glad_glWindowPos2dvARB = (PFNGLWINDOWPOS2DVARBPROC)load("glWindowPos2dvARB"); + glad_glWindowPos2fARB = (PFNGLWINDOWPOS2FARBPROC)load("glWindowPos2fARB"); + glad_glWindowPos2fvARB = (PFNGLWINDOWPOS2FVARBPROC)load("glWindowPos2fvARB"); + glad_glWindowPos2iARB = (PFNGLWINDOWPOS2IARBPROC)load("glWindowPos2iARB"); + glad_glWindowPos2ivARB = (PFNGLWINDOWPOS2IVARBPROC)load("glWindowPos2ivARB"); + glad_glWindowPos2sARB = (PFNGLWINDOWPOS2SARBPROC)load("glWindowPos2sARB"); + glad_glWindowPos2svARB = (PFNGLWINDOWPOS2SVARBPROC)load("glWindowPos2svARB"); + glad_glWindowPos3dARB = (PFNGLWINDOWPOS3DARBPROC)load("glWindowPos3dARB"); + glad_glWindowPos3dvARB = (PFNGLWINDOWPOS3DVARBPROC)load("glWindowPos3dvARB"); + glad_glWindowPos3fARB = (PFNGLWINDOWPOS3FARBPROC)load("glWindowPos3fARB"); + glad_glWindowPos3fvARB = (PFNGLWINDOWPOS3FVARBPROC)load("glWindowPos3fvARB"); + glad_glWindowPos3iARB = (PFNGLWINDOWPOS3IARBPROC)load("glWindowPos3iARB"); + glad_glWindowPos3ivARB = (PFNGLWINDOWPOS3IVARBPROC)load("glWindowPos3ivARB"); + glad_glWindowPos3sARB = (PFNGLWINDOWPOS3SARBPROC)load("glWindowPos3sARB"); + glad_glWindowPos3svARB = (PFNGLWINDOWPOS3SVARBPROC)load("glWindowPos3svARB"); +} +static void load_GL_ARB_internalformat_query(GLADloadproc load) { + if(!GLAD_GL_ARB_internalformat_query) return; + glad_glGetInternalformativ = (PFNGLGETINTERNALFORMATIVPROC)load("glGetInternalformativ"); +} +static void load_GL_EXT_shader_image_load_store(GLADloadproc load) { + if(!GLAD_GL_EXT_shader_image_load_store) return; + glad_glBindImageTextureEXT = (PFNGLBINDIMAGETEXTUREEXTPROC)load("glBindImageTextureEXT"); + glad_glMemoryBarrierEXT = (PFNGLMEMORYBARRIEREXTPROC)load("glMemoryBarrierEXT"); +} +static void load_GL_EXT_copy_texture(GLADloadproc load) { + if(!GLAD_GL_EXT_copy_texture) return; + glad_glCopyTexImage1DEXT = (PFNGLCOPYTEXIMAGE1DEXTPROC)load("glCopyTexImage1DEXT"); + glad_glCopyTexImage2DEXT = (PFNGLCOPYTEXIMAGE2DEXTPROC)load("glCopyTexImage2DEXT"); + glad_glCopyTexSubImage1DEXT = (PFNGLCOPYTEXSUBIMAGE1DEXTPROC)load("glCopyTexSubImage1DEXT"); + glad_glCopyTexSubImage2DEXT = (PFNGLCOPYTEXSUBIMAGE2DEXTPROC)load("glCopyTexSubImage2DEXT"); + glad_glCopyTexSubImage3DEXT = (PFNGLCOPYTEXSUBIMAGE3DEXTPROC)load("glCopyTexSubImage3DEXT"); +} +static void load_GL_NV_register_combiners2(GLADloadproc load) { + if(!GLAD_GL_NV_register_combiners2) return; + glad_glCombinerStageParameterfvNV = (PFNGLCOMBINERSTAGEPARAMETERFVNVPROC)load("glCombinerStageParameterfvNV"); + glad_glGetCombinerStageParameterfvNV = (PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC)load("glGetCombinerStageParameterfvNV"); +} +static void load_GL_NV_draw_texture(GLADloadproc load) { + if(!GLAD_GL_NV_draw_texture) return; + glad_glDrawTextureNV = (PFNGLDRAWTEXTURENVPROC)load("glDrawTextureNV"); +} +static void load_GL_EXT_draw_instanced(GLADloadproc load) { + if(!GLAD_GL_EXT_draw_instanced) return; + glad_glDrawArraysInstancedEXT = (PFNGLDRAWARRAYSINSTANCEDEXTPROC)load("glDrawArraysInstancedEXT"); + glad_glDrawElementsInstancedEXT = (PFNGLDRAWELEMENTSINSTANCEDEXTPROC)load("glDrawElementsInstancedEXT"); +} +static void load_GL_ARB_viewport_array(GLADloadproc load) { + if(!GLAD_GL_ARB_viewport_array) return; + 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 void load_GL_ARB_separate_shader_objects(GLADloadproc load) { + if(!GLAD_GL_ARB_separate_shader_objects) return; + 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_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"); +} +static void load_GL_EXT_depth_bounds_test(GLADloadproc load) { + if(!GLAD_GL_EXT_depth_bounds_test) return; + glad_glDepthBoundsEXT = (PFNGLDEPTHBOUNDSEXTPROC)load("glDepthBoundsEXT"); +} +static void load_GL_NV_video_capture(GLADloadproc load) { + if(!GLAD_GL_NV_video_capture) return; + glad_glBeginVideoCaptureNV = (PFNGLBEGINVIDEOCAPTURENVPROC)load("glBeginVideoCaptureNV"); + glad_glBindVideoCaptureStreamBufferNV = (PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC)load("glBindVideoCaptureStreamBufferNV"); + glad_glBindVideoCaptureStreamTextureNV = (PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC)load("glBindVideoCaptureStreamTextureNV"); + glad_glEndVideoCaptureNV = (PFNGLENDVIDEOCAPTURENVPROC)load("glEndVideoCaptureNV"); + glad_glGetVideoCaptureivNV = (PFNGLGETVIDEOCAPTUREIVNVPROC)load("glGetVideoCaptureivNV"); + glad_glGetVideoCaptureStreamivNV = (PFNGLGETVIDEOCAPTURESTREAMIVNVPROC)load("glGetVideoCaptureStreamivNV"); + glad_glGetVideoCaptureStreamfvNV = (PFNGLGETVIDEOCAPTURESTREAMFVNVPROC)load("glGetVideoCaptureStreamfvNV"); + glad_glGetVideoCaptureStreamdvNV = (PFNGLGETVIDEOCAPTURESTREAMDVNVPROC)load("glGetVideoCaptureStreamdvNV"); + glad_glVideoCaptureNV = (PFNGLVIDEOCAPTURENVPROC)load("glVideoCaptureNV"); + glad_glVideoCaptureStreamParameterivNV = (PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC)load("glVideoCaptureStreamParameterivNV"); + glad_glVideoCaptureStreamParameterfvNV = (PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC)load("glVideoCaptureStreamParameterfvNV"); + glad_glVideoCaptureStreamParameterdvNV = (PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC)load("glVideoCaptureStreamParameterdvNV"); +} +static void load_GL_ARB_sampler_objects(GLADloadproc load) { + if(!GLAD_GL_ARB_sampler_objects) return; + 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"); +} +static void load_GL_ARB_matrix_palette(GLADloadproc load) { + if(!GLAD_GL_ARB_matrix_palette) return; + glad_glCurrentPaletteMatrixARB = (PFNGLCURRENTPALETTEMATRIXARBPROC)load("glCurrentPaletteMatrixARB"); + glad_glMatrixIndexubvARB = (PFNGLMATRIXINDEXUBVARBPROC)load("glMatrixIndexubvARB"); + glad_glMatrixIndexusvARB = (PFNGLMATRIXINDEXUSVARBPROC)load("glMatrixIndexusvARB"); + glad_glMatrixIndexuivARB = (PFNGLMATRIXINDEXUIVARBPROC)load("glMatrixIndexuivARB"); + glad_glMatrixIndexPointerARB = (PFNGLMATRIXINDEXPOINTERARBPROC)load("glMatrixIndexPointerARB"); +} +static void load_GL_SGIS_texture_color_mask(GLADloadproc load) { + if(!GLAD_GL_SGIS_texture_color_mask) return; + glad_glTextureColorMaskSGIS = (PFNGLTEXTURECOLORMASKSGISPROC)load("glTextureColorMaskSGIS"); +} +static void load_GL_EXT_coordinate_frame(GLADloadproc load) { + if(!GLAD_GL_EXT_coordinate_frame) return; + glad_glTangent3bEXT = (PFNGLTANGENT3BEXTPROC)load("glTangent3bEXT"); + glad_glTangent3bvEXT = (PFNGLTANGENT3BVEXTPROC)load("glTangent3bvEXT"); + glad_glTangent3dEXT = (PFNGLTANGENT3DEXTPROC)load("glTangent3dEXT"); + glad_glTangent3dvEXT = (PFNGLTANGENT3DVEXTPROC)load("glTangent3dvEXT"); + glad_glTangent3fEXT = (PFNGLTANGENT3FEXTPROC)load("glTangent3fEXT"); + glad_glTangent3fvEXT = (PFNGLTANGENT3FVEXTPROC)load("glTangent3fvEXT"); + glad_glTangent3iEXT = (PFNGLTANGENT3IEXTPROC)load("glTangent3iEXT"); + glad_glTangent3ivEXT = (PFNGLTANGENT3IVEXTPROC)load("glTangent3ivEXT"); + glad_glTangent3sEXT = (PFNGLTANGENT3SEXTPROC)load("glTangent3sEXT"); + glad_glTangent3svEXT = (PFNGLTANGENT3SVEXTPROC)load("glTangent3svEXT"); + glad_glBinormal3bEXT = (PFNGLBINORMAL3BEXTPROC)load("glBinormal3bEXT"); + glad_glBinormal3bvEXT = (PFNGLBINORMAL3BVEXTPROC)load("glBinormal3bvEXT"); + glad_glBinormal3dEXT = (PFNGLBINORMAL3DEXTPROC)load("glBinormal3dEXT"); + glad_glBinormal3dvEXT = (PFNGLBINORMAL3DVEXTPROC)load("glBinormal3dvEXT"); + glad_glBinormal3fEXT = (PFNGLBINORMAL3FEXTPROC)load("glBinormal3fEXT"); + glad_glBinormal3fvEXT = (PFNGLBINORMAL3FVEXTPROC)load("glBinormal3fvEXT"); + glad_glBinormal3iEXT = (PFNGLBINORMAL3IEXTPROC)load("glBinormal3iEXT"); + glad_glBinormal3ivEXT = (PFNGLBINORMAL3IVEXTPROC)load("glBinormal3ivEXT"); + glad_glBinormal3sEXT = (PFNGLBINORMAL3SEXTPROC)load("glBinormal3sEXT"); + glad_glBinormal3svEXT = (PFNGLBINORMAL3SVEXTPROC)load("glBinormal3svEXT"); + glad_glTangentPointerEXT = (PFNGLTANGENTPOINTEREXTPROC)load("glTangentPointerEXT"); + glad_glBinormalPointerEXT = (PFNGLBINORMALPOINTEREXTPROC)load("glBinormalPointerEXT"); +} +static void load_GL_ARB_texture_compression(GLADloadproc load) { + if(!GLAD_GL_ARB_texture_compression) return; + glad_glCompressedTexImage3DARB = (PFNGLCOMPRESSEDTEXIMAGE3DARBPROC)load("glCompressedTexImage3DARB"); + glad_glCompressedTexImage2DARB = (PFNGLCOMPRESSEDTEXIMAGE2DARBPROC)load("glCompressedTexImage2DARB"); + glad_glCompressedTexImage1DARB = (PFNGLCOMPRESSEDTEXIMAGE1DARBPROC)load("glCompressedTexImage1DARB"); + glad_glCompressedTexSubImage3DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC)load("glCompressedTexSubImage3DARB"); + glad_glCompressedTexSubImage2DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC)load("glCompressedTexSubImage2DARB"); + glad_glCompressedTexSubImage1DARB = (PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC)load("glCompressedTexSubImage1DARB"); + glad_glGetCompressedTexImageARB = (PFNGLGETCOMPRESSEDTEXIMAGEARBPROC)load("glGetCompressedTexImageARB"); +} +static void load_GL_ARB_shader_subroutine(GLADloadproc load) { + if(!GLAD_GL_ARB_shader_subroutine) return; + 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"); +} +static void load_GL_ARB_texture_storage_multisample(GLADloadproc load) { + if(!GLAD_GL_ARB_texture_storage_multisample) return; + glad_glTexStorage2DMultisample = (PFNGLTEXSTORAGE2DMULTISAMPLEPROC)load("glTexStorage2DMultisample"); + glad_glTexStorage3DMultisample = (PFNGLTEXSTORAGE3DMULTISAMPLEPROC)load("glTexStorage3DMultisample"); +} +static void load_GL_EXT_vertex_attrib_64bit(GLADloadproc load) { + if(!GLAD_GL_EXT_vertex_attrib_64bit) return; + glad_glVertexAttribL1dEXT = (PFNGLVERTEXATTRIBL1DEXTPROC)load("glVertexAttribL1dEXT"); + glad_glVertexAttribL2dEXT = (PFNGLVERTEXATTRIBL2DEXTPROC)load("glVertexAttribL2dEXT"); + glad_glVertexAttribL3dEXT = (PFNGLVERTEXATTRIBL3DEXTPROC)load("glVertexAttribL3dEXT"); + glad_glVertexAttribL4dEXT = (PFNGLVERTEXATTRIBL4DEXTPROC)load("glVertexAttribL4dEXT"); + glad_glVertexAttribL1dvEXT = (PFNGLVERTEXATTRIBL1DVEXTPROC)load("glVertexAttribL1dvEXT"); + glad_glVertexAttribL2dvEXT = (PFNGLVERTEXATTRIBL2DVEXTPROC)load("glVertexAttribL2dvEXT"); + glad_glVertexAttribL3dvEXT = (PFNGLVERTEXATTRIBL3DVEXTPROC)load("glVertexAttribL3dvEXT"); + glad_glVertexAttribL4dvEXT = (PFNGLVERTEXATTRIBL4DVEXTPROC)load("glVertexAttribL4dvEXT"); + glad_glVertexAttribLPointerEXT = (PFNGLVERTEXATTRIBLPOINTEREXTPROC)load("glVertexAttribLPointerEXT"); + glad_glGetVertexAttribLdvEXT = (PFNGLGETVERTEXATTRIBLDVEXTPROC)load("glGetVertexAttribLdvEXT"); +} +static void load_GL_OES_query_matrix(GLADloadproc load) { + if(!GLAD_GL_OES_query_matrix) return; + glad_glQueryMatrixxOES = (PFNGLQUERYMATRIXXOESPROC)load("glQueryMatrixxOES"); +} +static void load_GL_MESA_window_pos(GLADloadproc load) { + if(!GLAD_GL_MESA_window_pos) return; + glad_glWindowPos2dMESA = (PFNGLWINDOWPOS2DMESAPROC)load("glWindowPos2dMESA"); + glad_glWindowPos2dvMESA = (PFNGLWINDOWPOS2DVMESAPROC)load("glWindowPos2dvMESA"); + glad_glWindowPos2fMESA = (PFNGLWINDOWPOS2FMESAPROC)load("glWindowPos2fMESA"); + glad_glWindowPos2fvMESA = (PFNGLWINDOWPOS2FVMESAPROC)load("glWindowPos2fvMESA"); + glad_glWindowPos2iMESA = (PFNGLWINDOWPOS2IMESAPROC)load("glWindowPos2iMESA"); + glad_glWindowPos2ivMESA = (PFNGLWINDOWPOS2IVMESAPROC)load("glWindowPos2ivMESA"); + glad_glWindowPos2sMESA = (PFNGLWINDOWPOS2SMESAPROC)load("glWindowPos2sMESA"); + glad_glWindowPos2svMESA = (PFNGLWINDOWPOS2SVMESAPROC)load("glWindowPos2svMESA"); + glad_glWindowPos3dMESA = (PFNGLWINDOWPOS3DMESAPROC)load("glWindowPos3dMESA"); + glad_glWindowPos3dvMESA = (PFNGLWINDOWPOS3DVMESAPROC)load("glWindowPos3dvMESA"); + glad_glWindowPos3fMESA = (PFNGLWINDOWPOS3FMESAPROC)load("glWindowPos3fMESA"); + glad_glWindowPos3fvMESA = (PFNGLWINDOWPOS3FVMESAPROC)load("glWindowPos3fvMESA"); + glad_glWindowPos3iMESA = (PFNGLWINDOWPOS3IMESAPROC)load("glWindowPos3iMESA"); + glad_glWindowPos3ivMESA = (PFNGLWINDOWPOS3IVMESAPROC)load("glWindowPos3ivMESA"); + glad_glWindowPos3sMESA = (PFNGLWINDOWPOS3SMESAPROC)load("glWindowPos3sMESA"); + glad_glWindowPos3svMESA = (PFNGLWINDOWPOS3SVMESAPROC)load("glWindowPos3svMESA"); + glad_glWindowPos4dMESA = (PFNGLWINDOWPOS4DMESAPROC)load("glWindowPos4dMESA"); + glad_glWindowPos4dvMESA = (PFNGLWINDOWPOS4DVMESAPROC)load("glWindowPos4dvMESA"); + glad_glWindowPos4fMESA = (PFNGLWINDOWPOS4FMESAPROC)load("glWindowPos4fMESA"); + glad_glWindowPos4fvMESA = (PFNGLWINDOWPOS4FVMESAPROC)load("glWindowPos4fvMESA"); + glad_glWindowPos4iMESA = (PFNGLWINDOWPOS4IMESAPROC)load("glWindowPos4iMESA"); + glad_glWindowPos4ivMESA = (PFNGLWINDOWPOS4IVMESAPROC)load("glWindowPos4ivMESA"); + glad_glWindowPos4sMESA = (PFNGLWINDOWPOS4SMESAPROC)load("glWindowPos4sMESA"); + glad_glWindowPos4svMESA = (PFNGLWINDOWPOS4SVMESAPROC)load("glWindowPos4svMESA"); +} +static void load_GL_ARB_copy_buffer(GLADloadproc load) { + if(!GLAD_GL_ARB_copy_buffer) return; + glad_glCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)load("glCopyBufferSubData"); +} +static void load_GL_APPLE_object_purgeable(GLADloadproc load) { + if(!GLAD_GL_APPLE_object_purgeable) return; + glad_glObjectPurgeableAPPLE = (PFNGLOBJECTPURGEABLEAPPLEPROC)load("glObjectPurgeableAPPLE"); + glad_glObjectUnpurgeableAPPLE = (PFNGLOBJECTUNPURGEABLEAPPLEPROC)load("glObjectUnpurgeableAPPLE"); + glad_glGetObjectParameterivAPPLE = (PFNGLGETOBJECTPARAMETERIVAPPLEPROC)load("glGetObjectParameterivAPPLE"); +} +static void load_GL_ARB_occlusion_query(GLADloadproc load) { + if(!GLAD_GL_ARB_occlusion_query) return; + glad_glGenQueriesARB = (PFNGLGENQUERIESARBPROC)load("glGenQueriesARB"); + glad_glDeleteQueriesARB = (PFNGLDELETEQUERIESARBPROC)load("glDeleteQueriesARB"); + glad_glIsQueryARB = (PFNGLISQUERYARBPROC)load("glIsQueryARB"); + glad_glBeginQueryARB = (PFNGLBEGINQUERYARBPROC)load("glBeginQueryARB"); + glad_glEndQueryARB = (PFNGLENDQUERYARBPROC)load("glEndQueryARB"); + glad_glGetQueryivARB = (PFNGLGETQUERYIVARBPROC)load("glGetQueryivARB"); + glad_glGetQueryObjectivARB = (PFNGLGETQUERYOBJECTIVARBPROC)load("glGetQueryObjectivARB"); + glad_glGetQueryObjectuivARB = (PFNGLGETQUERYOBJECTUIVARBPROC)load("glGetQueryObjectuivARB"); +} +static void load_GL_SGI_color_table(GLADloadproc load) { + if(!GLAD_GL_SGI_color_table) return; + glad_glColorTableSGI = (PFNGLCOLORTABLESGIPROC)load("glColorTableSGI"); + glad_glColorTableParameterfvSGI = (PFNGLCOLORTABLEPARAMETERFVSGIPROC)load("glColorTableParameterfvSGI"); + glad_glColorTableParameterivSGI = (PFNGLCOLORTABLEPARAMETERIVSGIPROC)load("glColorTableParameterivSGI"); + glad_glCopyColorTableSGI = (PFNGLCOPYCOLORTABLESGIPROC)load("glCopyColorTableSGI"); + glad_glGetColorTableSGI = (PFNGLGETCOLORTABLESGIPROC)load("glGetColorTableSGI"); + glad_glGetColorTableParameterfvSGI = (PFNGLGETCOLORTABLEPARAMETERFVSGIPROC)load("glGetColorTableParameterfvSGI"); + glad_glGetColorTableParameterivSGI = (PFNGLGETCOLORTABLEPARAMETERIVSGIPROC)load("glGetColorTableParameterivSGI"); +} +static void load_GL_EXT_gpu_shader4(GLADloadproc load) { + if(!GLAD_GL_EXT_gpu_shader4) return; + glad_glGetUniformuivEXT = (PFNGLGETUNIFORMUIVEXTPROC)load("glGetUniformuivEXT"); + glad_glBindFragDataLocationEXT = (PFNGLBINDFRAGDATALOCATIONEXTPROC)load("glBindFragDataLocationEXT"); + glad_glGetFragDataLocationEXT = (PFNGLGETFRAGDATALOCATIONEXTPROC)load("glGetFragDataLocationEXT"); + glad_glUniform1uiEXT = (PFNGLUNIFORM1UIEXTPROC)load("glUniform1uiEXT"); + glad_glUniform2uiEXT = (PFNGLUNIFORM2UIEXTPROC)load("glUniform2uiEXT"); + glad_glUniform3uiEXT = (PFNGLUNIFORM3UIEXTPROC)load("glUniform3uiEXT"); + glad_glUniform4uiEXT = (PFNGLUNIFORM4UIEXTPROC)load("glUniform4uiEXT"); + glad_glUniform1uivEXT = (PFNGLUNIFORM1UIVEXTPROC)load("glUniform1uivEXT"); + glad_glUniform2uivEXT = (PFNGLUNIFORM2UIVEXTPROC)load("glUniform2uivEXT"); + glad_glUniform3uivEXT = (PFNGLUNIFORM3UIVEXTPROC)load("glUniform3uivEXT"); + glad_glUniform4uivEXT = (PFNGLUNIFORM4UIVEXTPROC)load("glUniform4uivEXT"); +} +static void load_GL_NV_geometry_program4(GLADloadproc load) { + if(!GLAD_GL_NV_geometry_program4) return; + glad_glProgramVertexLimitNV = (PFNGLPROGRAMVERTEXLIMITNVPROC)load("glProgramVertexLimitNV"); + glad_glFramebufferTextureEXT = (PFNGLFRAMEBUFFERTEXTUREEXTPROC)load("glFramebufferTextureEXT"); + glad_glFramebufferTextureLayerEXT = (PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC)load("glFramebufferTextureLayerEXT"); + glad_glFramebufferTextureFaceEXT = (PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC)load("glFramebufferTextureFaceEXT"); +} +static void load_GL_AMD_debug_output(GLADloadproc load) { + if(!GLAD_GL_AMD_debug_output) return; + glad_glDebugMessageEnableAMD = (PFNGLDEBUGMESSAGEENABLEAMDPROC)load("glDebugMessageEnableAMD"); + glad_glDebugMessageInsertAMD = (PFNGLDEBUGMESSAGEINSERTAMDPROC)load("glDebugMessageInsertAMD"); + glad_glDebugMessageCallbackAMD = (PFNGLDEBUGMESSAGECALLBACKAMDPROC)load("glDebugMessageCallbackAMD"); + glad_glGetDebugMessageLogAMD = (PFNGLGETDEBUGMESSAGELOGAMDPROC)load("glGetDebugMessageLogAMD"); +} +static void load_GL_ARB_multitexture(GLADloadproc load) { + if(!GLAD_GL_ARB_multitexture) return; + glad_glActiveTextureARB = (PFNGLACTIVETEXTUREARBPROC)load("glActiveTextureARB"); + glad_glClientActiveTextureARB = (PFNGLCLIENTACTIVETEXTUREARBPROC)load("glClientActiveTextureARB"); + glad_glMultiTexCoord1dARB = (PFNGLMULTITEXCOORD1DARBPROC)load("glMultiTexCoord1dARB"); + glad_glMultiTexCoord1dvARB = (PFNGLMULTITEXCOORD1DVARBPROC)load("glMultiTexCoord1dvARB"); + glad_glMultiTexCoord1fARB = (PFNGLMULTITEXCOORD1FARBPROC)load("glMultiTexCoord1fARB"); + glad_glMultiTexCoord1fvARB = (PFNGLMULTITEXCOORD1FVARBPROC)load("glMultiTexCoord1fvARB"); + glad_glMultiTexCoord1iARB = (PFNGLMULTITEXCOORD1IARBPROC)load("glMultiTexCoord1iARB"); + glad_glMultiTexCoord1ivARB = (PFNGLMULTITEXCOORD1IVARBPROC)load("glMultiTexCoord1ivARB"); + glad_glMultiTexCoord1sARB = (PFNGLMULTITEXCOORD1SARBPROC)load("glMultiTexCoord1sARB"); + glad_glMultiTexCoord1svARB = (PFNGLMULTITEXCOORD1SVARBPROC)load("glMultiTexCoord1svARB"); + glad_glMultiTexCoord2dARB = (PFNGLMULTITEXCOORD2DARBPROC)load("glMultiTexCoord2dARB"); + glad_glMultiTexCoord2dvARB = (PFNGLMULTITEXCOORD2DVARBPROC)load("glMultiTexCoord2dvARB"); + glad_glMultiTexCoord2fARB = (PFNGLMULTITEXCOORD2FARBPROC)load("glMultiTexCoord2fARB"); + glad_glMultiTexCoord2fvARB = (PFNGLMULTITEXCOORD2FVARBPROC)load("glMultiTexCoord2fvARB"); + glad_glMultiTexCoord2iARB = (PFNGLMULTITEXCOORD2IARBPROC)load("glMultiTexCoord2iARB"); + glad_glMultiTexCoord2ivARB = (PFNGLMULTITEXCOORD2IVARBPROC)load("glMultiTexCoord2ivARB"); + glad_glMultiTexCoord2sARB = (PFNGLMULTITEXCOORD2SARBPROC)load("glMultiTexCoord2sARB"); + glad_glMultiTexCoord2svARB = (PFNGLMULTITEXCOORD2SVARBPROC)load("glMultiTexCoord2svARB"); + glad_glMultiTexCoord3dARB = (PFNGLMULTITEXCOORD3DARBPROC)load("glMultiTexCoord3dARB"); + glad_glMultiTexCoord3dvARB = (PFNGLMULTITEXCOORD3DVARBPROC)load("glMultiTexCoord3dvARB"); + glad_glMultiTexCoord3fARB = (PFNGLMULTITEXCOORD3FARBPROC)load("glMultiTexCoord3fARB"); + glad_glMultiTexCoord3fvARB = (PFNGLMULTITEXCOORD3FVARBPROC)load("glMultiTexCoord3fvARB"); + glad_glMultiTexCoord3iARB = (PFNGLMULTITEXCOORD3IARBPROC)load("glMultiTexCoord3iARB"); + glad_glMultiTexCoord3ivARB = (PFNGLMULTITEXCOORD3IVARBPROC)load("glMultiTexCoord3ivARB"); + glad_glMultiTexCoord3sARB = (PFNGLMULTITEXCOORD3SARBPROC)load("glMultiTexCoord3sARB"); + glad_glMultiTexCoord3svARB = (PFNGLMULTITEXCOORD3SVARBPROC)load("glMultiTexCoord3svARB"); + glad_glMultiTexCoord4dARB = (PFNGLMULTITEXCOORD4DARBPROC)load("glMultiTexCoord4dARB"); + glad_glMultiTexCoord4dvARB = (PFNGLMULTITEXCOORD4DVARBPROC)load("glMultiTexCoord4dvARB"); + glad_glMultiTexCoord4fARB = (PFNGLMULTITEXCOORD4FARBPROC)load("glMultiTexCoord4fARB"); + glad_glMultiTexCoord4fvARB = (PFNGLMULTITEXCOORD4FVARBPROC)load("glMultiTexCoord4fvARB"); + glad_glMultiTexCoord4iARB = (PFNGLMULTITEXCOORD4IARBPROC)load("glMultiTexCoord4iARB"); + glad_glMultiTexCoord4ivARB = (PFNGLMULTITEXCOORD4IVARBPROC)load("glMultiTexCoord4ivARB"); + glad_glMultiTexCoord4sARB = (PFNGLMULTITEXCOORD4SARBPROC)load("glMultiTexCoord4sARB"); + glad_glMultiTexCoord4svARB = (PFNGLMULTITEXCOORD4SVARBPROC)load("glMultiTexCoord4svARB"); +} +static void load_GL_SGIX_polynomial_ffd(GLADloadproc load) { + if(!GLAD_GL_SGIX_polynomial_ffd) return; + glad_glDeformationMap3dSGIX = (PFNGLDEFORMATIONMAP3DSGIXPROC)load("glDeformationMap3dSGIX"); + glad_glDeformationMap3fSGIX = (PFNGLDEFORMATIONMAP3FSGIXPROC)load("glDeformationMap3fSGIX"); + glad_glDeformSGIX = (PFNGLDEFORMSGIXPROC)load("glDeformSGIX"); + glad_glLoadIdentityDeformationMapSGIX = (PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC)load("glLoadIdentityDeformationMapSGIX"); +} +static void load_GL_EXT_provoking_vertex(GLADloadproc load) { + if(!GLAD_GL_EXT_provoking_vertex) return; + glad_glProvokingVertexEXT = (PFNGLPROVOKINGVERTEXEXTPROC)load("glProvokingVertexEXT"); +} +static void load_GL_ARB_point_parameters(GLADloadproc load) { + if(!GLAD_GL_ARB_point_parameters) return; + glad_glPointParameterfARB = (PFNGLPOINTPARAMETERFARBPROC)load("glPointParameterfARB"); + glad_glPointParameterfvARB = (PFNGLPOINTPARAMETERFVARBPROC)load("glPointParameterfvARB"); +} +static void load_GL_ARB_shader_image_load_store(GLADloadproc load) { + if(!GLAD_GL_ARB_shader_image_load_store) return; + glad_glBindImageTexture = (PFNGLBINDIMAGETEXTUREPROC)load("glBindImageTexture"); + glad_glMemoryBarrier = (PFNGLMEMORYBARRIERPROC)load("glMemoryBarrier"); +} +static void load_GL_ARB_texture_barrier(GLADloadproc load) { + if(!GLAD_GL_ARB_texture_barrier) return; + glad_glTextureBarrier = (PFNGLTEXTUREBARRIERPROC)load("glTextureBarrier"); +} +static void load_GL_NV_bindless_multi_draw_indirect(GLADloadproc load) { + if(!GLAD_GL_NV_bindless_multi_draw_indirect) return; + glad_glMultiDrawArraysIndirectBindlessNV = (PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC)load("glMultiDrawArraysIndirectBindlessNV"); + glad_glMultiDrawElementsIndirectBindlessNV = (PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC)load("glMultiDrawElementsIndirectBindlessNV"); +} +static void load_GL_EXT_transform_feedback(GLADloadproc load) { + if(!GLAD_GL_EXT_transform_feedback) return; + glad_glBeginTransformFeedbackEXT = (PFNGLBEGINTRANSFORMFEEDBACKEXTPROC)load("glBeginTransformFeedbackEXT"); + glad_glEndTransformFeedbackEXT = (PFNGLENDTRANSFORMFEEDBACKEXTPROC)load("glEndTransformFeedbackEXT"); + glad_glBindBufferRangeEXT = (PFNGLBINDBUFFERRANGEEXTPROC)load("glBindBufferRangeEXT"); + glad_glBindBufferOffsetEXT = (PFNGLBINDBUFFEROFFSETEXTPROC)load("glBindBufferOffsetEXT"); + glad_glBindBufferBaseEXT = (PFNGLBINDBUFFERBASEEXTPROC)load("glBindBufferBaseEXT"); + glad_glTransformFeedbackVaryingsEXT = (PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC)load("glTransformFeedbackVaryingsEXT"); + glad_glGetTransformFeedbackVaryingEXT = (PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC)load("glGetTransformFeedbackVaryingEXT"); +} +static void load_GL_NV_gpu_program4(GLADloadproc load) { + if(!GLAD_GL_NV_gpu_program4) return; + glad_glProgramLocalParameterI4iNV = (PFNGLPROGRAMLOCALPARAMETERI4INVPROC)load("glProgramLocalParameterI4iNV"); + glad_glProgramLocalParameterI4ivNV = (PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC)load("glProgramLocalParameterI4ivNV"); + glad_glProgramLocalParametersI4ivNV = (PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC)load("glProgramLocalParametersI4ivNV"); + glad_glProgramLocalParameterI4uiNV = (PFNGLPROGRAMLOCALPARAMETERI4UINVPROC)load("glProgramLocalParameterI4uiNV"); + glad_glProgramLocalParameterI4uivNV = (PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC)load("glProgramLocalParameterI4uivNV"); + glad_glProgramLocalParametersI4uivNV = (PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC)load("glProgramLocalParametersI4uivNV"); + glad_glProgramEnvParameterI4iNV = (PFNGLPROGRAMENVPARAMETERI4INVPROC)load("glProgramEnvParameterI4iNV"); + glad_glProgramEnvParameterI4ivNV = (PFNGLPROGRAMENVPARAMETERI4IVNVPROC)load("glProgramEnvParameterI4ivNV"); + glad_glProgramEnvParametersI4ivNV = (PFNGLPROGRAMENVPARAMETERSI4IVNVPROC)load("glProgramEnvParametersI4ivNV"); + glad_glProgramEnvParameterI4uiNV = (PFNGLPROGRAMENVPARAMETERI4UINVPROC)load("glProgramEnvParameterI4uiNV"); + glad_glProgramEnvParameterI4uivNV = (PFNGLPROGRAMENVPARAMETERI4UIVNVPROC)load("glProgramEnvParameterI4uivNV"); + glad_glProgramEnvParametersI4uivNV = (PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC)load("glProgramEnvParametersI4uivNV"); + glad_glGetProgramLocalParameterIivNV = (PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC)load("glGetProgramLocalParameterIivNV"); + glad_glGetProgramLocalParameterIuivNV = (PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC)load("glGetProgramLocalParameterIuivNV"); + glad_glGetProgramEnvParameterIivNV = (PFNGLGETPROGRAMENVPARAMETERIIVNVPROC)load("glGetProgramEnvParameterIivNV"); + glad_glGetProgramEnvParameterIuivNV = (PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC)load("glGetProgramEnvParameterIuivNV"); +} +static void load_GL_NV_gpu_program5(GLADloadproc load) { + if(!GLAD_GL_NV_gpu_program5) return; + glad_glProgramSubroutineParametersuivNV = (PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC)load("glProgramSubroutineParametersuivNV"); + glad_glGetProgramSubroutineParameteruivNV = (PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC)load("glGetProgramSubroutineParameteruivNV"); +} +static void load_GL_ARB_geometry_shader4(GLADloadproc load) { + if(!GLAD_GL_ARB_geometry_shader4) return; + glad_glProgramParameteriARB = (PFNGLPROGRAMPARAMETERIARBPROC)load("glProgramParameteriARB"); + glad_glFramebufferTextureARB = (PFNGLFRAMEBUFFERTEXTUREARBPROC)load("glFramebufferTextureARB"); + glad_glFramebufferTextureLayerARB = (PFNGLFRAMEBUFFERTEXTURELAYERARBPROC)load("glFramebufferTextureLayerARB"); + glad_glFramebufferTextureFaceARB = (PFNGLFRAMEBUFFERTEXTUREFACEARBPROC)load("glFramebufferTextureFaceARB"); +} +static void load_GL_NV_conservative_raster(GLADloadproc load) { + if(!GLAD_GL_NV_conservative_raster) return; + glad_glSubpixelPrecisionBiasNV = (PFNGLSUBPIXELPRECISIONBIASNVPROC)load("glSubpixelPrecisionBiasNV"); +} +static void load_GL_SGIX_sprite(GLADloadproc load) { + if(!GLAD_GL_SGIX_sprite) return; + glad_glSpriteParameterfSGIX = (PFNGLSPRITEPARAMETERFSGIXPROC)load("glSpriteParameterfSGIX"); + glad_glSpriteParameterfvSGIX = (PFNGLSPRITEPARAMETERFVSGIXPROC)load("glSpriteParameterfvSGIX"); + glad_glSpriteParameteriSGIX = (PFNGLSPRITEPARAMETERISGIXPROC)load("glSpriteParameteriSGIX"); + glad_glSpriteParameterivSGIX = (PFNGLSPRITEPARAMETERIVSGIXPROC)load("glSpriteParameterivSGIX"); +} +static void load_GL_ARB_get_program_binary(GLADloadproc load) { + if(!GLAD_GL_ARB_get_program_binary) return; + glad_glGetProgramBinary = (PFNGLGETPROGRAMBINARYPROC)load("glGetProgramBinary"); + glad_glProgramBinary = (PFNGLPROGRAMBINARYPROC)load("glProgramBinary"); + glad_glProgramParameteri = (PFNGLPROGRAMPARAMETERIPROC)load("glProgramParameteri"); +} +static void load_GL_AMD_occlusion_query_event(GLADloadproc load) { + if(!GLAD_GL_AMD_occlusion_query_event) return; + glad_glQueryObjectParameteruiAMD = (PFNGLQUERYOBJECTPARAMETERUIAMDPROC)load("glQueryObjectParameteruiAMD"); +} +static void load_GL_SGIS_multisample(GLADloadproc load) { + if(!GLAD_GL_SGIS_multisample) return; + glad_glSampleMaskSGIS = (PFNGLSAMPLEMASKSGISPROC)load("glSampleMaskSGIS"); + glad_glSamplePatternSGIS = (PFNGLSAMPLEPATTERNSGISPROC)load("glSamplePatternSGIS"); +} +static void load_GL_EXT_framebuffer_object(GLADloadproc load) { + if(!GLAD_GL_EXT_framebuffer_object) return; + glad_glIsRenderbufferEXT = (PFNGLISRENDERBUFFEREXTPROC)load("glIsRenderbufferEXT"); + glad_glBindRenderbufferEXT = (PFNGLBINDRENDERBUFFEREXTPROC)load("glBindRenderbufferEXT"); + glad_glDeleteRenderbuffersEXT = (PFNGLDELETERENDERBUFFERSEXTPROC)load("glDeleteRenderbuffersEXT"); + glad_glGenRenderbuffersEXT = (PFNGLGENRENDERBUFFERSEXTPROC)load("glGenRenderbuffersEXT"); + glad_glRenderbufferStorageEXT = (PFNGLRENDERBUFFERSTORAGEEXTPROC)load("glRenderbufferStorageEXT"); + glad_glGetRenderbufferParameterivEXT = (PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC)load("glGetRenderbufferParameterivEXT"); + glad_glIsFramebufferEXT = (PFNGLISFRAMEBUFFEREXTPROC)load("glIsFramebufferEXT"); + glad_glBindFramebufferEXT = (PFNGLBINDFRAMEBUFFEREXTPROC)load("glBindFramebufferEXT"); + glad_glDeleteFramebuffersEXT = (PFNGLDELETEFRAMEBUFFERSEXTPROC)load("glDeleteFramebuffersEXT"); + glad_glGenFramebuffersEXT = (PFNGLGENFRAMEBUFFERSEXTPROC)load("glGenFramebuffersEXT"); + glad_glCheckFramebufferStatusEXT = (PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC)load("glCheckFramebufferStatusEXT"); + glad_glFramebufferTexture1DEXT = (PFNGLFRAMEBUFFERTEXTURE1DEXTPROC)load("glFramebufferTexture1DEXT"); + glad_glFramebufferTexture2DEXT = (PFNGLFRAMEBUFFERTEXTURE2DEXTPROC)load("glFramebufferTexture2DEXT"); + glad_glFramebufferTexture3DEXT = (PFNGLFRAMEBUFFERTEXTURE3DEXTPROC)load("glFramebufferTexture3DEXT"); + glad_glFramebufferRenderbufferEXT = (PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC)load("glFramebufferRenderbufferEXT"); + glad_glGetFramebufferAttachmentParameterivEXT = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC)load("glGetFramebufferAttachmentParameterivEXT"); + glad_glGenerateMipmapEXT = (PFNGLGENERATEMIPMAPEXTPROC)load("glGenerateMipmapEXT"); +} +static void load_GL_APPLE_vertex_array_range(GLADloadproc load) { + if(!GLAD_GL_APPLE_vertex_array_range) return; + glad_glVertexArrayRangeAPPLE = (PFNGLVERTEXARRAYRANGEAPPLEPROC)load("glVertexArrayRangeAPPLE"); + glad_glFlushVertexArrayRangeAPPLE = (PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC)load("glFlushVertexArrayRangeAPPLE"); + glad_glVertexArrayParameteriAPPLE = (PFNGLVERTEXARRAYPARAMETERIAPPLEPROC)load("glVertexArrayParameteriAPPLE"); +} +static void load_GL_NV_register_combiners(GLADloadproc load) { + if(!GLAD_GL_NV_register_combiners) return; + glad_glCombinerParameterfvNV = (PFNGLCOMBINERPARAMETERFVNVPROC)load("glCombinerParameterfvNV"); + glad_glCombinerParameterfNV = (PFNGLCOMBINERPARAMETERFNVPROC)load("glCombinerParameterfNV"); + glad_glCombinerParameterivNV = (PFNGLCOMBINERPARAMETERIVNVPROC)load("glCombinerParameterivNV"); + glad_glCombinerParameteriNV = (PFNGLCOMBINERPARAMETERINVPROC)load("glCombinerParameteriNV"); + glad_glCombinerInputNV = (PFNGLCOMBINERINPUTNVPROC)load("glCombinerInputNV"); + glad_glCombinerOutputNV = (PFNGLCOMBINEROUTPUTNVPROC)load("glCombinerOutputNV"); + glad_glFinalCombinerInputNV = (PFNGLFINALCOMBINERINPUTNVPROC)load("glFinalCombinerInputNV"); + glad_glGetCombinerInputParameterfvNV = (PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC)load("glGetCombinerInputParameterfvNV"); + glad_glGetCombinerInputParameterivNV = (PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC)load("glGetCombinerInputParameterivNV"); + glad_glGetCombinerOutputParameterfvNV = (PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC)load("glGetCombinerOutputParameterfvNV"); + glad_glGetCombinerOutputParameterivNV = (PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC)load("glGetCombinerOutputParameterivNV"); + glad_glGetFinalCombinerInputParameterfvNV = (PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC)load("glGetFinalCombinerInputParameterfvNV"); + glad_glGetFinalCombinerInputParameterivNV = (PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC)load("glGetFinalCombinerInputParameterivNV"); +} +static void load_GL_ARB_draw_buffers(GLADloadproc load) { + if(!GLAD_GL_ARB_draw_buffers) return; + glad_glDrawBuffersARB = (PFNGLDRAWBUFFERSARBPROC)load("glDrawBuffersARB"); +} +static void load_GL_ARB_clear_texture(GLADloadproc load) { + if(!GLAD_GL_ARB_clear_texture) return; + glad_glClearTexImage = (PFNGLCLEARTEXIMAGEPROC)load("glClearTexImage"); + glad_glClearTexSubImage = (PFNGLCLEARTEXSUBIMAGEPROC)load("glClearTexSubImage"); +} +static void load_GL_ARB_debug_output(GLADloadproc load) { + if(!GLAD_GL_ARB_debug_output) return; + glad_glDebugMessageControlARB = (PFNGLDEBUGMESSAGECONTROLARBPROC)load("glDebugMessageControlARB"); + glad_glDebugMessageInsertARB = (PFNGLDEBUGMESSAGEINSERTARBPROC)load("glDebugMessageInsertARB"); + glad_glDebugMessageCallbackARB = (PFNGLDEBUGMESSAGECALLBACKARBPROC)load("glDebugMessageCallbackARB"); + glad_glGetDebugMessageLogARB = (PFNGLGETDEBUGMESSAGELOGARBPROC)load("glGetDebugMessageLogARB"); +} +static void load_GL_EXT_cull_vertex(GLADloadproc load) { + if(!GLAD_GL_EXT_cull_vertex) return; + glad_glCullParameterdvEXT = (PFNGLCULLPARAMETERDVEXTPROC)load("glCullParameterdvEXT"); + glad_glCullParameterfvEXT = (PFNGLCULLPARAMETERFVEXTPROC)load("glCullParameterfvEXT"); +} +static void load_GL_IBM_multimode_draw_arrays(GLADloadproc load) { + if(!GLAD_GL_IBM_multimode_draw_arrays) return; + glad_glMultiModeDrawArraysIBM = (PFNGLMULTIMODEDRAWARRAYSIBMPROC)load("glMultiModeDrawArraysIBM"); + glad_glMultiModeDrawElementsIBM = (PFNGLMULTIMODEDRAWELEMENTSIBMPROC)load("glMultiModeDrawElementsIBM"); +} +static void load_GL_APPLE_vertex_array_object(GLADloadproc load) { + if(!GLAD_GL_APPLE_vertex_array_object) return; + glad_glBindVertexArrayAPPLE = (PFNGLBINDVERTEXARRAYAPPLEPROC)load("glBindVertexArrayAPPLE"); + glad_glDeleteVertexArraysAPPLE = (PFNGLDELETEVERTEXARRAYSAPPLEPROC)load("glDeleteVertexArraysAPPLE"); + glad_glGenVertexArraysAPPLE = (PFNGLGENVERTEXARRAYSAPPLEPROC)load("glGenVertexArraysAPPLE"); + glad_glIsVertexArrayAPPLE = (PFNGLISVERTEXARRAYAPPLEPROC)load("glIsVertexArrayAPPLE"); +} +static void load_GL_SGIS_detail_texture(GLADloadproc load) { + if(!GLAD_GL_SGIS_detail_texture) return; + glad_glDetailTexFuncSGIS = (PFNGLDETAILTEXFUNCSGISPROC)load("glDetailTexFuncSGIS"); + glad_glGetDetailTexFuncSGIS = (PFNGLGETDETAILTEXFUNCSGISPROC)load("glGetDetailTexFuncSGIS"); +} +static void load_GL_ARB_draw_instanced(GLADloadproc load) { + if(!GLAD_GL_ARB_draw_instanced) return; + glad_glDrawArraysInstancedARB = (PFNGLDRAWARRAYSINSTANCEDARBPROC)load("glDrawArraysInstancedARB"); + glad_glDrawElementsInstancedARB = (PFNGLDRAWELEMENTSINSTANCEDARBPROC)load("glDrawElementsInstancedARB"); +} +static void load_GL_ARB_shading_language_include(GLADloadproc load) { + if(!GLAD_GL_ARB_shading_language_include) return; + glad_glNamedStringARB = (PFNGLNAMEDSTRINGARBPROC)load("glNamedStringARB"); + glad_glDeleteNamedStringARB = (PFNGLDELETENAMEDSTRINGARBPROC)load("glDeleteNamedStringARB"); + glad_glCompileShaderIncludeARB = (PFNGLCOMPILESHADERINCLUDEARBPROC)load("glCompileShaderIncludeARB"); + glad_glIsNamedStringARB = (PFNGLISNAMEDSTRINGARBPROC)load("glIsNamedStringARB"); + glad_glGetNamedStringARB = (PFNGLGETNAMEDSTRINGARBPROC)load("glGetNamedStringARB"); + glad_glGetNamedStringivARB = (PFNGLGETNAMEDSTRINGIVARBPROC)load("glGetNamedStringivARB"); +} +static void load_GL_INGR_blend_func_separate(GLADloadproc load) { + if(!GLAD_GL_INGR_blend_func_separate) return; + glad_glBlendFuncSeparateINGR = (PFNGLBLENDFUNCSEPARATEINGRPROC)load("glBlendFuncSeparateINGR"); +} +static void load_GL_NV_path_rendering(GLADloadproc load) { + if(!GLAD_GL_NV_path_rendering) return; + glad_glGenPathsNV = (PFNGLGENPATHSNVPROC)load("glGenPathsNV"); + glad_glDeletePathsNV = (PFNGLDELETEPATHSNVPROC)load("glDeletePathsNV"); + glad_glIsPathNV = (PFNGLISPATHNVPROC)load("glIsPathNV"); + glad_glPathCommandsNV = (PFNGLPATHCOMMANDSNVPROC)load("glPathCommandsNV"); + glad_glPathCoordsNV = (PFNGLPATHCOORDSNVPROC)load("glPathCoordsNV"); + glad_glPathSubCommandsNV = (PFNGLPATHSUBCOMMANDSNVPROC)load("glPathSubCommandsNV"); + glad_glPathSubCoordsNV = (PFNGLPATHSUBCOORDSNVPROC)load("glPathSubCoordsNV"); + glad_glPathStringNV = (PFNGLPATHSTRINGNVPROC)load("glPathStringNV"); + glad_glPathGlyphsNV = (PFNGLPATHGLYPHSNVPROC)load("glPathGlyphsNV"); + glad_glPathGlyphRangeNV = (PFNGLPATHGLYPHRANGENVPROC)load("glPathGlyphRangeNV"); + glad_glWeightPathsNV = (PFNGLWEIGHTPATHSNVPROC)load("glWeightPathsNV"); + glad_glCopyPathNV = (PFNGLCOPYPATHNVPROC)load("glCopyPathNV"); + glad_glInterpolatePathsNV = (PFNGLINTERPOLATEPATHSNVPROC)load("glInterpolatePathsNV"); + glad_glTransformPathNV = (PFNGLTRANSFORMPATHNVPROC)load("glTransformPathNV"); + glad_glPathParameterivNV = (PFNGLPATHPARAMETERIVNVPROC)load("glPathParameterivNV"); + glad_glPathParameteriNV = (PFNGLPATHPARAMETERINVPROC)load("glPathParameteriNV"); + glad_glPathParameterfvNV = (PFNGLPATHPARAMETERFVNVPROC)load("glPathParameterfvNV"); + glad_glPathParameterfNV = (PFNGLPATHPARAMETERFNVPROC)load("glPathParameterfNV"); + glad_glPathDashArrayNV = (PFNGLPATHDASHARRAYNVPROC)load("glPathDashArrayNV"); + glad_glPathStencilFuncNV = (PFNGLPATHSTENCILFUNCNVPROC)load("glPathStencilFuncNV"); + glad_glPathStencilDepthOffsetNV = (PFNGLPATHSTENCILDEPTHOFFSETNVPROC)load("glPathStencilDepthOffsetNV"); + glad_glStencilFillPathNV = (PFNGLSTENCILFILLPATHNVPROC)load("glStencilFillPathNV"); + glad_glStencilStrokePathNV = (PFNGLSTENCILSTROKEPATHNVPROC)load("glStencilStrokePathNV"); + glad_glStencilFillPathInstancedNV = (PFNGLSTENCILFILLPATHINSTANCEDNVPROC)load("glStencilFillPathInstancedNV"); + glad_glStencilStrokePathInstancedNV = (PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC)load("glStencilStrokePathInstancedNV"); + glad_glPathCoverDepthFuncNV = (PFNGLPATHCOVERDEPTHFUNCNVPROC)load("glPathCoverDepthFuncNV"); + glad_glCoverFillPathNV = (PFNGLCOVERFILLPATHNVPROC)load("glCoverFillPathNV"); + glad_glCoverStrokePathNV = (PFNGLCOVERSTROKEPATHNVPROC)load("glCoverStrokePathNV"); + glad_glCoverFillPathInstancedNV = (PFNGLCOVERFILLPATHINSTANCEDNVPROC)load("glCoverFillPathInstancedNV"); + glad_glCoverStrokePathInstancedNV = (PFNGLCOVERSTROKEPATHINSTANCEDNVPROC)load("glCoverStrokePathInstancedNV"); + glad_glGetPathParameterivNV = (PFNGLGETPATHPARAMETERIVNVPROC)load("glGetPathParameterivNV"); + glad_glGetPathParameterfvNV = (PFNGLGETPATHPARAMETERFVNVPROC)load("glGetPathParameterfvNV"); + glad_glGetPathCommandsNV = (PFNGLGETPATHCOMMANDSNVPROC)load("glGetPathCommandsNV"); + glad_glGetPathCoordsNV = (PFNGLGETPATHCOORDSNVPROC)load("glGetPathCoordsNV"); + glad_glGetPathDashArrayNV = (PFNGLGETPATHDASHARRAYNVPROC)load("glGetPathDashArrayNV"); + glad_glGetPathMetricsNV = (PFNGLGETPATHMETRICSNVPROC)load("glGetPathMetricsNV"); + glad_glGetPathMetricRangeNV = (PFNGLGETPATHMETRICRANGENVPROC)load("glGetPathMetricRangeNV"); + glad_glGetPathSpacingNV = (PFNGLGETPATHSPACINGNVPROC)load("glGetPathSpacingNV"); + glad_glIsPointInFillPathNV = (PFNGLISPOINTINFILLPATHNVPROC)load("glIsPointInFillPathNV"); + glad_glIsPointInStrokePathNV = (PFNGLISPOINTINSTROKEPATHNVPROC)load("glIsPointInStrokePathNV"); + glad_glGetPathLengthNV = (PFNGLGETPATHLENGTHNVPROC)load("glGetPathLengthNV"); + glad_glPointAlongPathNV = (PFNGLPOINTALONGPATHNVPROC)load("glPointAlongPathNV"); + glad_glMatrixLoad3x2fNV = (PFNGLMATRIXLOAD3X2FNVPROC)load("glMatrixLoad3x2fNV"); + glad_glMatrixLoad3x3fNV = (PFNGLMATRIXLOAD3X3FNVPROC)load("glMatrixLoad3x3fNV"); + glad_glMatrixLoadTranspose3x3fNV = (PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC)load("glMatrixLoadTranspose3x3fNV"); + glad_glMatrixMult3x2fNV = (PFNGLMATRIXMULT3X2FNVPROC)load("glMatrixMult3x2fNV"); + glad_glMatrixMult3x3fNV = (PFNGLMATRIXMULT3X3FNVPROC)load("glMatrixMult3x3fNV"); + glad_glMatrixMultTranspose3x3fNV = (PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC)load("glMatrixMultTranspose3x3fNV"); + glad_glStencilThenCoverFillPathNV = (PFNGLSTENCILTHENCOVERFILLPATHNVPROC)load("glStencilThenCoverFillPathNV"); + glad_glStencilThenCoverStrokePathNV = (PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC)load("glStencilThenCoverStrokePathNV"); + glad_glStencilThenCoverFillPathInstancedNV = (PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC)load("glStencilThenCoverFillPathInstancedNV"); + glad_glStencilThenCoverStrokePathInstancedNV = (PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC)load("glStencilThenCoverStrokePathInstancedNV"); + glad_glPathGlyphIndexRangeNV = (PFNGLPATHGLYPHINDEXRANGENVPROC)load("glPathGlyphIndexRangeNV"); + glad_glPathGlyphIndexArrayNV = (PFNGLPATHGLYPHINDEXARRAYNVPROC)load("glPathGlyphIndexArrayNV"); + glad_glPathMemoryGlyphIndexArrayNV = (PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC)load("glPathMemoryGlyphIndexArrayNV"); + glad_glProgramPathFragmentInputGenNV = (PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC)load("glProgramPathFragmentInputGenNV"); + glad_glGetProgramResourcefvNV = (PFNGLGETPROGRAMRESOURCEFVNVPROC)load("glGetProgramResourcefvNV"); + glad_glPathColorGenNV = (PFNGLPATHCOLORGENNVPROC)load("glPathColorGenNV"); + glad_glPathTexGenNV = (PFNGLPATHTEXGENNVPROC)load("glPathTexGenNV"); + glad_glPathFogGenNV = (PFNGLPATHFOGGENNVPROC)load("glPathFogGenNV"); + glad_glGetPathColorGenivNV = (PFNGLGETPATHCOLORGENIVNVPROC)load("glGetPathColorGenivNV"); + glad_glGetPathColorGenfvNV = (PFNGLGETPATHCOLORGENFVNVPROC)load("glGetPathColorGenfvNV"); + glad_glGetPathTexGenivNV = (PFNGLGETPATHTEXGENIVNVPROC)load("glGetPathTexGenivNV"); + glad_glGetPathTexGenfvNV = (PFNGLGETPATHTEXGENFVNVPROC)load("glGetPathTexGenfvNV"); +} +static void load_GL_NV_conservative_raster_dilate(GLADloadproc load) { + if(!GLAD_GL_NV_conservative_raster_dilate) return; + glad_glConservativeRasterParameterfNV = (PFNGLCONSERVATIVERASTERPARAMETERFNVPROC)load("glConservativeRasterParameterfNV"); +} +static void load_GL_ATI_vertex_streams(GLADloadproc load) { + if(!GLAD_GL_ATI_vertex_streams) return; + glad_glVertexStream1sATI = (PFNGLVERTEXSTREAM1SATIPROC)load("glVertexStream1sATI"); + glad_glVertexStream1svATI = (PFNGLVERTEXSTREAM1SVATIPROC)load("glVertexStream1svATI"); + glad_glVertexStream1iATI = (PFNGLVERTEXSTREAM1IATIPROC)load("glVertexStream1iATI"); + glad_glVertexStream1ivATI = (PFNGLVERTEXSTREAM1IVATIPROC)load("glVertexStream1ivATI"); + glad_glVertexStream1fATI = (PFNGLVERTEXSTREAM1FATIPROC)load("glVertexStream1fATI"); + glad_glVertexStream1fvATI = (PFNGLVERTEXSTREAM1FVATIPROC)load("glVertexStream1fvATI"); + glad_glVertexStream1dATI = (PFNGLVERTEXSTREAM1DATIPROC)load("glVertexStream1dATI"); + glad_glVertexStream1dvATI = (PFNGLVERTEXSTREAM1DVATIPROC)load("glVertexStream1dvATI"); + glad_glVertexStream2sATI = (PFNGLVERTEXSTREAM2SATIPROC)load("glVertexStream2sATI"); + glad_glVertexStream2svATI = (PFNGLVERTEXSTREAM2SVATIPROC)load("glVertexStream2svATI"); + glad_glVertexStream2iATI = (PFNGLVERTEXSTREAM2IATIPROC)load("glVertexStream2iATI"); + glad_glVertexStream2ivATI = (PFNGLVERTEXSTREAM2IVATIPROC)load("glVertexStream2ivATI"); + glad_glVertexStream2fATI = (PFNGLVERTEXSTREAM2FATIPROC)load("glVertexStream2fATI"); + glad_glVertexStream2fvATI = (PFNGLVERTEXSTREAM2FVATIPROC)load("glVertexStream2fvATI"); + glad_glVertexStream2dATI = (PFNGLVERTEXSTREAM2DATIPROC)load("glVertexStream2dATI"); + glad_glVertexStream2dvATI = (PFNGLVERTEXSTREAM2DVATIPROC)load("glVertexStream2dvATI"); + glad_glVertexStream3sATI = (PFNGLVERTEXSTREAM3SATIPROC)load("glVertexStream3sATI"); + glad_glVertexStream3svATI = (PFNGLVERTEXSTREAM3SVATIPROC)load("glVertexStream3svATI"); + glad_glVertexStream3iATI = (PFNGLVERTEXSTREAM3IATIPROC)load("glVertexStream3iATI"); + glad_glVertexStream3ivATI = (PFNGLVERTEXSTREAM3IVATIPROC)load("glVertexStream3ivATI"); + glad_glVertexStream3fATI = (PFNGLVERTEXSTREAM3FATIPROC)load("glVertexStream3fATI"); + glad_glVertexStream3fvATI = (PFNGLVERTEXSTREAM3FVATIPROC)load("glVertexStream3fvATI"); + glad_glVertexStream3dATI = (PFNGLVERTEXSTREAM3DATIPROC)load("glVertexStream3dATI"); + glad_glVertexStream3dvATI = (PFNGLVERTEXSTREAM3DVATIPROC)load("glVertexStream3dvATI"); + glad_glVertexStream4sATI = (PFNGLVERTEXSTREAM4SATIPROC)load("glVertexStream4sATI"); + glad_glVertexStream4svATI = (PFNGLVERTEXSTREAM4SVATIPROC)load("glVertexStream4svATI"); + glad_glVertexStream4iATI = (PFNGLVERTEXSTREAM4IATIPROC)load("glVertexStream4iATI"); + glad_glVertexStream4ivATI = (PFNGLVERTEXSTREAM4IVATIPROC)load("glVertexStream4ivATI"); + glad_glVertexStream4fATI = (PFNGLVERTEXSTREAM4FATIPROC)load("glVertexStream4fATI"); + glad_glVertexStream4fvATI = (PFNGLVERTEXSTREAM4FVATIPROC)load("glVertexStream4fvATI"); + glad_glVertexStream4dATI = (PFNGLVERTEXSTREAM4DATIPROC)load("glVertexStream4dATI"); + glad_glVertexStream4dvATI = (PFNGLVERTEXSTREAM4DVATIPROC)load("glVertexStream4dvATI"); + glad_glNormalStream3bATI = (PFNGLNORMALSTREAM3BATIPROC)load("glNormalStream3bATI"); + glad_glNormalStream3bvATI = (PFNGLNORMALSTREAM3BVATIPROC)load("glNormalStream3bvATI"); + glad_glNormalStream3sATI = (PFNGLNORMALSTREAM3SATIPROC)load("glNormalStream3sATI"); + glad_glNormalStream3svATI = (PFNGLNORMALSTREAM3SVATIPROC)load("glNormalStream3svATI"); + glad_glNormalStream3iATI = (PFNGLNORMALSTREAM3IATIPROC)load("glNormalStream3iATI"); + glad_glNormalStream3ivATI = (PFNGLNORMALSTREAM3IVATIPROC)load("glNormalStream3ivATI"); + glad_glNormalStream3fATI = (PFNGLNORMALSTREAM3FATIPROC)load("glNormalStream3fATI"); + glad_glNormalStream3fvATI = (PFNGLNORMALSTREAM3FVATIPROC)load("glNormalStream3fvATI"); + glad_glNormalStream3dATI = (PFNGLNORMALSTREAM3DATIPROC)load("glNormalStream3dATI"); + glad_glNormalStream3dvATI = (PFNGLNORMALSTREAM3DVATIPROC)load("glNormalStream3dvATI"); + glad_glClientActiveVertexStreamATI = (PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC)load("glClientActiveVertexStreamATI"); + glad_glVertexBlendEnviATI = (PFNGLVERTEXBLENDENVIATIPROC)load("glVertexBlendEnviATI"); + glad_glVertexBlendEnvfATI = (PFNGLVERTEXBLENDENVFATIPROC)load("glVertexBlendEnvfATI"); +} +static void load_GL_ARB_gpu_shader_int64(GLADloadproc load) { + if(!GLAD_GL_ARB_gpu_shader_int64) return; + glad_glUniform1i64ARB = (PFNGLUNIFORM1I64ARBPROC)load("glUniform1i64ARB"); + glad_glUniform2i64ARB = (PFNGLUNIFORM2I64ARBPROC)load("glUniform2i64ARB"); + glad_glUniform3i64ARB = (PFNGLUNIFORM3I64ARBPROC)load("glUniform3i64ARB"); + glad_glUniform4i64ARB = (PFNGLUNIFORM4I64ARBPROC)load("glUniform4i64ARB"); + glad_glUniform1i64vARB = (PFNGLUNIFORM1I64VARBPROC)load("glUniform1i64vARB"); + glad_glUniform2i64vARB = (PFNGLUNIFORM2I64VARBPROC)load("glUniform2i64vARB"); + glad_glUniform3i64vARB = (PFNGLUNIFORM3I64VARBPROC)load("glUniform3i64vARB"); + glad_glUniform4i64vARB = (PFNGLUNIFORM4I64VARBPROC)load("glUniform4i64vARB"); + glad_glUniform1ui64ARB = (PFNGLUNIFORM1UI64ARBPROC)load("glUniform1ui64ARB"); + glad_glUniform2ui64ARB = (PFNGLUNIFORM2UI64ARBPROC)load("glUniform2ui64ARB"); + glad_glUniform3ui64ARB = (PFNGLUNIFORM3UI64ARBPROC)load("glUniform3ui64ARB"); + glad_glUniform4ui64ARB = (PFNGLUNIFORM4UI64ARBPROC)load("glUniform4ui64ARB"); + glad_glUniform1ui64vARB = (PFNGLUNIFORM1UI64VARBPROC)load("glUniform1ui64vARB"); + glad_glUniform2ui64vARB = (PFNGLUNIFORM2UI64VARBPROC)load("glUniform2ui64vARB"); + glad_glUniform3ui64vARB = (PFNGLUNIFORM3UI64VARBPROC)load("glUniform3ui64vARB"); + glad_glUniform4ui64vARB = (PFNGLUNIFORM4UI64VARBPROC)load("glUniform4ui64vARB"); + glad_glGetUniformi64vARB = (PFNGLGETUNIFORMI64VARBPROC)load("glGetUniformi64vARB"); + glad_glGetUniformui64vARB = (PFNGLGETUNIFORMUI64VARBPROC)load("glGetUniformui64vARB"); + glad_glGetnUniformi64vARB = (PFNGLGETNUNIFORMI64VARBPROC)load("glGetnUniformi64vARB"); + glad_glGetnUniformui64vARB = (PFNGLGETNUNIFORMUI64VARBPROC)load("glGetnUniformui64vARB"); + glad_glProgramUniform1i64ARB = (PFNGLPROGRAMUNIFORM1I64ARBPROC)load("glProgramUniform1i64ARB"); + glad_glProgramUniform2i64ARB = (PFNGLPROGRAMUNIFORM2I64ARBPROC)load("glProgramUniform2i64ARB"); + glad_glProgramUniform3i64ARB = (PFNGLPROGRAMUNIFORM3I64ARBPROC)load("glProgramUniform3i64ARB"); + glad_glProgramUniform4i64ARB = (PFNGLPROGRAMUNIFORM4I64ARBPROC)load("glProgramUniform4i64ARB"); + glad_glProgramUniform1i64vARB = (PFNGLPROGRAMUNIFORM1I64VARBPROC)load("glProgramUniform1i64vARB"); + glad_glProgramUniform2i64vARB = (PFNGLPROGRAMUNIFORM2I64VARBPROC)load("glProgramUniform2i64vARB"); + glad_glProgramUniform3i64vARB = (PFNGLPROGRAMUNIFORM3I64VARBPROC)load("glProgramUniform3i64vARB"); + glad_glProgramUniform4i64vARB = (PFNGLPROGRAMUNIFORM4I64VARBPROC)load("glProgramUniform4i64vARB"); + glad_glProgramUniform1ui64ARB = (PFNGLPROGRAMUNIFORM1UI64ARBPROC)load("glProgramUniform1ui64ARB"); + glad_glProgramUniform2ui64ARB = (PFNGLPROGRAMUNIFORM2UI64ARBPROC)load("glProgramUniform2ui64ARB"); + glad_glProgramUniform3ui64ARB = (PFNGLPROGRAMUNIFORM3UI64ARBPROC)load("glProgramUniform3ui64ARB"); + glad_glProgramUniform4ui64ARB = (PFNGLPROGRAMUNIFORM4UI64ARBPROC)load("glProgramUniform4ui64ARB"); + glad_glProgramUniform1ui64vARB = (PFNGLPROGRAMUNIFORM1UI64VARBPROC)load("glProgramUniform1ui64vARB"); + glad_glProgramUniform2ui64vARB = (PFNGLPROGRAMUNIFORM2UI64VARBPROC)load("glProgramUniform2ui64vARB"); + glad_glProgramUniform3ui64vARB = (PFNGLPROGRAMUNIFORM3UI64VARBPROC)load("glProgramUniform3ui64vARB"); + glad_glProgramUniform4ui64vARB = (PFNGLPROGRAMUNIFORM4UI64VARBPROC)load("glProgramUniform4ui64vARB"); +} +static void load_GL_NV_vdpau_interop(GLADloadproc load) { + if(!GLAD_GL_NV_vdpau_interop) return; + glad_glVDPAUInitNV = (PFNGLVDPAUINITNVPROC)load("glVDPAUInitNV"); + glad_glVDPAUFiniNV = (PFNGLVDPAUFININVPROC)load("glVDPAUFiniNV"); + glad_glVDPAURegisterVideoSurfaceNV = (PFNGLVDPAUREGISTERVIDEOSURFACENVPROC)load("glVDPAURegisterVideoSurfaceNV"); + glad_glVDPAURegisterOutputSurfaceNV = (PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC)load("glVDPAURegisterOutputSurfaceNV"); + glad_glVDPAUIsSurfaceNV = (PFNGLVDPAUISSURFACENVPROC)load("glVDPAUIsSurfaceNV"); + glad_glVDPAUUnregisterSurfaceNV = (PFNGLVDPAUUNREGISTERSURFACENVPROC)load("glVDPAUUnregisterSurfaceNV"); + glad_glVDPAUGetSurfaceivNV = (PFNGLVDPAUGETSURFACEIVNVPROC)load("glVDPAUGetSurfaceivNV"); + glad_glVDPAUSurfaceAccessNV = (PFNGLVDPAUSURFACEACCESSNVPROC)load("glVDPAUSurfaceAccessNV"); + glad_glVDPAUMapSurfacesNV = (PFNGLVDPAUMAPSURFACESNVPROC)load("glVDPAUMapSurfacesNV"); + glad_glVDPAUUnmapSurfacesNV = (PFNGLVDPAUUNMAPSURFACESNVPROC)load("glVDPAUUnmapSurfacesNV"); +} +static void load_GL_ARB_internalformat_query2(GLADloadproc load) { + if(!GLAD_GL_ARB_internalformat_query2) return; + glad_glGetInternalformati64v = (PFNGLGETINTERNALFORMATI64VPROC)load("glGetInternalformati64v"); +} +static void load_GL_SUN_vertex(GLADloadproc load) { + if(!GLAD_GL_SUN_vertex) return; + glad_glColor4ubVertex2fSUN = (PFNGLCOLOR4UBVERTEX2FSUNPROC)load("glColor4ubVertex2fSUN"); + glad_glColor4ubVertex2fvSUN = (PFNGLCOLOR4UBVERTEX2FVSUNPROC)load("glColor4ubVertex2fvSUN"); + glad_glColor4ubVertex3fSUN = (PFNGLCOLOR4UBVERTEX3FSUNPROC)load("glColor4ubVertex3fSUN"); + glad_glColor4ubVertex3fvSUN = (PFNGLCOLOR4UBVERTEX3FVSUNPROC)load("glColor4ubVertex3fvSUN"); + glad_glColor3fVertex3fSUN = (PFNGLCOLOR3FVERTEX3FSUNPROC)load("glColor3fVertex3fSUN"); + glad_glColor3fVertex3fvSUN = (PFNGLCOLOR3FVERTEX3FVSUNPROC)load("glColor3fVertex3fvSUN"); + glad_glNormal3fVertex3fSUN = (PFNGLNORMAL3FVERTEX3FSUNPROC)load("glNormal3fVertex3fSUN"); + glad_glNormal3fVertex3fvSUN = (PFNGLNORMAL3FVERTEX3FVSUNPROC)load("glNormal3fVertex3fvSUN"); + glad_glColor4fNormal3fVertex3fSUN = (PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC)load("glColor4fNormal3fVertex3fSUN"); + glad_glColor4fNormal3fVertex3fvSUN = (PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC)load("glColor4fNormal3fVertex3fvSUN"); + glad_glTexCoord2fVertex3fSUN = (PFNGLTEXCOORD2FVERTEX3FSUNPROC)load("glTexCoord2fVertex3fSUN"); + glad_glTexCoord2fVertex3fvSUN = (PFNGLTEXCOORD2FVERTEX3FVSUNPROC)load("glTexCoord2fVertex3fvSUN"); + glad_glTexCoord4fVertex4fSUN = (PFNGLTEXCOORD4FVERTEX4FSUNPROC)load("glTexCoord4fVertex4fSUN"); + glad_glTexCoord4fVertex4fvSUN = (PFNGLTEXCOORD4FVERTEX4FVSUNPROC)load("glTexCoord4fVertex4fvSUN"); + glad_glTexCoord2fColor4ubVertex3fSUN = (PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC)load("glTexCoord2fColor4ubVertex3fSUN"); + glad_glTexCoord2fColor4ubVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC)load("glTexCoord2fColor4ubVertex3fvSUN"); + glad_glTexCoord2fColor3fVertex3fSUN = (PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC)load("glTexCoord2fColor3fVertex3fSUN"); + glad_glTexCoord2fColor3fVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC)load("glTexCoord2fColor3fVertex3fvSUN"); + glad_glTexCoord2fNormal3fVertex3fSUN = (PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC)load("glTexCoord2fNormal3fVertex3fSUN"); + glad_glTexCoord2fNormal3fVertex3fvSUN = (PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)load("glTexCoord2fNormal3fVertex3fvSUN"); + glad_glTexCoord2fColor4fNormal3fVertex3fSUN = (PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)load("glTexCoord2fColor4fNormal3fVertex3fSUN"); + glad_glTexCoord2fColor4fNormal3fVertex3fvSUN = (PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)load("glTexCoord2fColor4fNormal3fVertex3fvSUN"); + glad_glTexCoord4fColor4fNormal3fVertex4fSUN = (PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC)load("glTexCoord4fColor4fNormal3fVertex4fSUN"); + glad_glTexCoord4fColor4fNormal3fVertex4fvSUN = (PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC)load("glTexCoord4fColor4fNormal3fVertex4fvSUN"); + glad_glReplacementCodeuiVertex3fSUN = (PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC)load("glReplacementCodeuiVertex3fSUN"); + glad_glReplacementCodeuiVertex3fvSUN = (PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC)load("glReplacementCodeuiVertex3fvSUN"); + glad_glReplacementCodeuiColor4ubVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC)load("glReplacementCodeuiColor4ubVertex3fSUN"); + glad_glReplacementCodeuiColor4ubVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC)load("glReplacementCodeuiColor4ubVertex3fvSUN"); + glad_glReplacementCodeuiColor3fVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC)load("glReplacementCodeuiColor3fVertex3fSUN"); + glad_glReplacementCodeuiColor3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC)load("glReplacementCodeuiColor3fVertex3fvSUN"); + glad_glReplacementCodeuiNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC)load("glReplacementCodeuiNormal3fVertex3fSUN"); + glad_glReplacementCodeuiNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC)load("glReplacementCodeuiNormal3fVertex3fvSUN"); + glad_glReplacementCodeuiColor4fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC)load("glReplacementCodeuiColor4fNormal3fVertex3fSUN"); + glad_glReplacementCodeuiColor4fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC)load("glReplacementCodeuiColor4fNormal3fVertex3fvSUN"); + glad_glReplacementCodeuiTexCoord2fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC)load("glReplacementCodeuiTexCoord2fVertex3fSUN"); + glad_glReplacementCodeuiTexCoord2fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC)load("glReplacementCodeuiTexCoord2fVertex3fvSUN"); + glad_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC)load("glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN"); + glad_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC)load("glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN"); + glad_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC)load("glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN"); + glad_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN = (PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC)load("glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN"); +} +static void load_GL_SGIX_igloo_interface(GLADloadproc load) { + if(!GLAD_GL_SGIX_igloo_interface) return; + glad_glIglooInterfaceSGIX = (PFNGLIGLOOINTERFACESGIXPROC)load("glIglooInterfaceSGIX"); +} +static void load_GL_ARB_draw_indirect(GLADloadproc load) { + if(!GLAD_GL_ARB_draw_indirect) return; + glad_glDrawArraysIndirect = (PFNGLDRAWARRAYSINDIRECTPROC)load("glDrawArraysIndirect"); + glad_glDrawElementsIndirect = (PFNGLDRAWELEMENTSINDIRECTPROC)load("glDrawElementsIndirect"); +} +static void load_GL_NV_vertex_program4(GLADloadproc load) { + if(!GLAD_GL_NV_vertex_program4) return; + glad_glVertexAttribI1iEXT = (PFNGLVERTEXATTRIBI1IEXTPROC)load("glVertexAttribI1iEXT"); + glad_glVertexAttribI2iEXT = (PFNGLVERTEXATTRIBI2IEXTPROC)load("glVertexAttribI2iEXT"); + glad_glVertexAttribI3iEXT = (PFNGLVERTEXATTRIBI3IEXTPROC)load("glVertexAttribI3iEXT"); + glad_glVertexAttribI4iEXT = (PFNGLVERTEXATTRIBI4IEXTPROC)load("glVertexAttribI4iEXT"); + glad_glVertexAttribI1uiEXT = (PFNGLVERTEXATTRIBI1UIEXTPROC)load("glVertexAttribI1uiEXT"); + glad_glVertexAttribI2uiEXT = (PFNGLVERTEXATTRIBI2UIEXTPROC)load("glVertexAttribI2uiEXT"); + glad_glVertexAttribI3uiEXT = (PFNGLVERTEXATTRIBI3UIEXTPROC)load("glVertexAttribI3uiEXT"); + glad_glVertexAttribI4uiEXT = (PFNGLVERTEXATTRIBI4UIEXTPROC)load("glVertexAttribI4uiEXT"); + glad_glVertexAttribI1ivEXT = (PFNGLVERTEXATTRIBI1IVEXTPROC)load("glVertexAttribI1ivEXT"); + glad_glVertexAttribI2ivEXT = (PFNGLVERTEXATTRIBI2IVEXTPROC)load("glVertexAttribI2ivEXT"); + glad_glVertexAttribI3ivEXT = (PFNGLVERTEXATTRIBI3IVEXTPROC)load("glVertexAttribI3ivEXT"); + glad_glVertexAttribI4ivEXT = (PFNGLVERTEXATTRIBI4IVEXTPROC)load("glVertexAttribI4ivEXT"); + glad_glVertexAttribI1uivEXT = (PFNGLVERTEXATTRIBI1UIVEXTPROC)load("glVertexAttribI1uivEXT"); + glad_glVertexAttribI2uivEXT = (PFNGLVERTEXATTRIBI2UIVEXTPROC)load("glVertexAttribI2uivEXT"); + glad_glVertexAttribI3uivEXT = (PFNGLVERTEXATTRIBI3UIVEXTPROC)load("glVertexAttribI3uivEXT"); + glad_glVertexAttribI4uivEXT = (PFNGLVERTEXATTRIBI4UIVEXTPROC)load("glVertexAttribI4uivEXT"); + glad_glVertexAttribI4bvEXT = (PFNGLVERTEXATTRIBI4BVEXTPROC)load("glVertexAttribI4bvEXT"); + glad_glVertexAttribI4svEXT = (PFNGLVERTEXATTRIBI4SVEXTPROC)load("glVertexAttribI4svEXT"); + glad_glVertexAttribI4ubvEXT = (PFNGLVERTEXATTRIBI4UBVEXTPROC)load("glVertexAttribI4ubvEXT"); + glad_glVertexAttribI4usvEXT = (PFNGLVERTEXATTRIBI4USVEXTPROC)load("glVertexAttribI4usvEXT"); + glad_glVertexAttribIPointerEXT = (PFNGLVERTEXATTRIBIPOINTEREXTPROC)load("glVertexAttribIPointerEXT"); + glad_glGetVertexAttribIivEXT = (PFNGLGETVERTEXATTRIBIIVEXTPROC)load("glGetVertexAttribIivEXT"); + glad_glGetVertexAttribIuivEXT = (PFNGLGETVERTEXATTRIBIUIVEXTPROC)load("glGetVertexAttribIuivEXT"); +} +static void load_GL_SGIS_fog_function(GLADloadproc load) { + if(!GLAD_GL_SGIS_fog_function) return; + glad_glFogFuncSGIS = (PFNGLFOGFUNCSGISPROC)load("glFogFuncSGIS"); + glad_glGetFogFuncSGIS = (PFNGLGETFOGFUNCSGISPROC)load("glGetFogFuncSGIS"); +} +static void load_GL_EXT_x11_sync_object(GLADloadproc load) { + if(!GLAD_GL_EXT_x11_sync_object) return; + glad_glImportSyncEXT = (PFNGLIMPORTSYNCEXTPROC)load("glImportSyncEXT"); +} +static void load_GL_ARB_sync(GLADloadproc load) { + if(!GLAD_GL_ARB_sync) return; + 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"); +} +static void load_GL_NV_sample_locations(GLADloadproc load) { + if(!GLAD_GL_NV_sample_locations) return; + glad_glFramebufferSampleLocationsfvNV = (PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)load("glFramebufferSampleLocationsfvNV"); + glad_glNamedFramebufferSampleLocationsfvNV = (PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC)load("glNamedFramebufferSampleLocationsfvNV"); + glad_glResolveDepthValuesNV = (PFNGLRESOLVEDEPTHVALUESNVPROC)load("glResolveDepthValuesNV"); +} +static void load_GL_ARB_compute_variable_group_size(GLADloadproc load) { + if(!GLAD_GL_ARB_compute_variable_group_size) return; + glad_glDispatchComputeGroupSizeARB = (PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC)load("glDispatchComputeGroupSizeARB"); +} +static void load_GL_OES_fixed_point(GLADloadproc load) { + if(!GLAD_GL_OES_fixed_point) return; + glad_glAlphaFuncxOES = (PFNGLALPHAFUNCXOESPROC)load("glAlphaFuncxOES"); + glad_glClearColorxOES = (PFNGLCLEARCOLORXOESPROC)load("glClearColorxOES"); + glad_glClearDepthxOES = (PFNGLCLEARDEPTHXOESPROC)load("glClearDepthxOES"); + glad_glClipPlanexOES = (PFNGLCLIPPLANEXOESPROC)load("glClipPlanexOES"); + glad_glColor4xOES = (PFNGLCOLOR4XOESPROC)load("glColor4xOES"); + glad_glDepthRangexOES = (PFNGLDEPTHRANGEXOESPROC)load("glDepthRangexOES"); + glad_glFogxOES = (PFNGLFOGXOESPROC)load("glFogxOES"); + glad_glFogxvOES = (PFNGLFOGXVOESPROC)load("glFogxvOES"); + glad_glFrustumxOES = (PFNGLFRUSTUMXOESPROC)load("glFrustumxOES"); + glad_glGetClipPlanexOES = (PFNGLGETCLIPPLANEXOESPROC)load("glGetClipPlanexOES"); + glad_glGetFixedvOES = (PFNGLGETFIXEDVOESPROC)load("glGetFixedvOES"); + glad_glGetTexEnvxvOES = (PFNGLGETTEXENVXVOESPROC)load("glGetTexEnvxvOES"); + glad_glGetTexParameterxvOES = (PFNGLGETTEXPARAMETERXVOESPROC)load("glGetTexParameterxvOES"); + glad_glLightModelxOES = (PFNGLLIGHTMODELXOESPROC)load("glLightModelxOES"); + glad_glLightModelxvOES = (PFNGLLIGHTMODELXVOESPROC)load("glLightModelxvOES"); + glad_glLightxOES = (PFNGLLIGHTXOESPROC)load("glLightxOES"); + glad_glLightxvOES = (PFNGLLIGHTXVOESPROC)load("glLightxvOES"); + glad_glLineWidthxOES = (PFNGLLINEWIDTHXOESPROC)load("glLineWidthxOES"); + glad_glLoadMatrixxOES = (PFNGLLOADMATRIXXOESPROC)load("glLoadMatrixxOES"); + glad_glMaterialxOES = (PFNGLMATERIALXOESPROC)load("glMaterialxOES"); + glad_glMaterialxvOES = (PFNGLMATERIALXVOESPROC)load("glMaterialxvOES"); + glad_glMultMatrixxOES = (PFNGLMULTMATRIXXOESPROC)load("glMultMatrixxOES"); + glad_glMultiTexCoord4xOES = (PFNGLMULTITEXCOORD4XOESPROC)load("glMultiTexCoord4xOES"); + glad_glNormal3xOES = (PFNGLNORMAL3XOESPROC)load("glNormal3xOES"); + glad_glOrthoxOES = (PFNGLORTHOXOESPROC)load("glOrthoxOES"); + glad_glPointParameterxvOES = (PFNGLPOINTPARAMETERXVOESPROC)load("glPointParameterxvOES"); + glad_glPointSizexOES = (PFNGLPOINTSIZEXOESPROC)load("glPointSizexOES"); + glad_glPolygonOffsetxOES = (PFNGLPOLYGONOFFSETXOESPROC)load("glPolygonOffsetxOES"); + glad_glRotatexOES = (PFNGLROTATEXOESPROC)load("glRotatexOES"); + glad_glScalexOES = (PFNGLSCALEXOESPROC)load("glScalexOES"); + glad_glTexEnvxOES = (PFNGLTEXENVXOESPROC)load("glTexEnvxOES"); + glad_glTexEnvxvOES = (PFNGLTEXENVXVOESPROC)load("glTexEnvxvOES"); + glad_glTexParameterxOES = (PFNGLTEXPARAMETERXOESPROC)load("glTexParameterxOES"); + glad_glTexParameterxvOES = (PFNGLTEXPARAMETERXVOESPROC)load("glTexParameterxvOES"); + glad_glTranslatexOES = (PFNGLTRANSLATEXOESPROC)load("glTranslatexOES"); + glad_glGetLightxvOES = (PFNGLGETLIGHTXVOESPROC)load("glGetLightxvOES"); + glad_glGetMaterialxvOES = (PFNGLGETMATERIALXVOESPROC)load("glGetMaterialxvOES"); + glad_glPointParameterxOES = (PFNGLPOINTPARAMETERXOESPROC)load("glPointParameterxOES"); + glad_glSampleCoveragexOES = (PFNGLSAMPLECOVERAGEXOESPROC)load("glSampleCoveragexOES"); + glad_glAccumxOES = (PFNGLACCUMXOESPROC)load("glAccumxOES"); + glad_glBitmapxOES = (PFNGLBITMAPXOESPROC)load("glBitmapxOES"); + glad_glBlendColorxOES = (PFNGLBLENDCOLORXOESPROC)load("glBlendColorxOES"); + glad_glClearAccumxOES = (PFNGLCLEARACCUMXOESPROC)load("glClearAccumxOES"); + glad_glColor3xOES = (PFNGLCOLOR3XOESPROC)load("glColor3xOES"); + glad_glColor3xvOES = (PFNGLCOLOR3XVOESPROC)load("glColor3xvOES"); + glad_glColor4xvOES = (PFNGLCOLOR4XVOESPROC)load("glColor4xvOES"); + glad_glConvolutionParameterxOES = (PFNGLCONVOLUTIONPARAMETERXOESPROC)load("glConvolutionParameterxOES"); + glad_glConvolutionParameterxvOES = (PFNGLCONVOLUTIONPARAMETERXVOESPROC)load("glConvolutionParameterxvOES"); + glad_glEvalCoord1xOES = (PFNGLEVALCOORD1XOESPROC)load("glEvalCoord1xOES"); + glad_glEvalCoord1xvOES = (PFNGLEVALCOORD1XVOESPROC)load("glEvalCoord1xvOES"); + glad_glEvalCoord2xOES = (PFNGLEVALCOORD2XOESPROC)load("glEvalCoord2xOES"); + glad_glEvalCoord2xvOES = (PFNGLEVALCOORD2XVOESPROC)load("glEvalCoord2xvOES"); + glad_glFeedbackBufferxOES = (PFNGLFEEDBACKBUFFERXOESPROC)load("glFeedbackBufferxOES"); + glad_glGetConvolutionParameterxvOES = (PFNGLGETCONVOLUTIONPARAMETERXVOESPROC)load("glGetConvolutionParameterxvOES"); + glad_glGetHistogramParameterxvOES = (PFNGLGETHISTOGRAMPARAMETERXVOESPROC)load("glGetHistogramParameterxvOES"); + glad_glGetLightxOES = (PFNGLGETLIGHTXOESPROC)load("glGetLightxOES"); + glad_glGetMapxvOES = (PFNGLGETMAPXVOESPROC)load("glGetMapxvOES"); + glad_glGetMaterialxOES = (PFNGLGETMATERIALXOESPROC)load("glGetMaterialxOES"); + glad_glGetPixelMapxv = (PFNGLGETPIXELMAPXVPROC)load("glGetPixelMapxv"); + glad_glGetTexGenxvOES = (PFNGLGETTEXGENXVOESPROC)load("glGetTexGenxvOES"); + glad_glGetTexLevelParameterxvOES = (PFNGLGETTEXLEVELPARAMETERXVOESPROC)load("glGetTexLevelParameterxvOES"); + glad_glIndexxOES = (PFNGLINDEXXOESPROC)load("glIndexxOES"); + glad_glIndexxvOES = (PFNGLINDEXXVOESPROC)load("glIndexxvOES"); + glad_glLoadTransposeMatrixxOES = (PFNGLLOADTRANSPOSEMATRIXXOESPROC)load("glLoadTransposeMatrixxOES"); + glad_glMap1xOES = (PFNGLMAP1XOESPROC)load("glMap1xOES"); + glad_glMap2xOES = (PFNGLMAP2XOESPROC)load("glMap2xOES"); + glad_glMapGrid1xOES = (PFNGLMAPGRID1XOESPROC)load("glMapGrid1xOES"); + glad_glMapGrid2xOES = (PFNGLMAPGRID2XOESPROC)load("glMapGrid2xOES"); + glad_glMultTransposeMatrixxOES = (PFNGLMULTTRANSPOSEMATRIXXOESPROC)load("glMultTransposeMatrixxOES"); + glad_glMultiTexCoord1xOES = (PFNGLMULTITEXCOORD1XOESPROC)load("glMultiTexCoord1xOES"); + glad_glMultiTexCoord1xvOES = (PFNGLMULTITEXCOORD1XVOESPROC)load("glMultiTexCoord1xvOES"); + glad_glMultiTexCoord2xOES = (PFNGLMULTITEXCOORD2XOESPROC)load("glMultiTexCoord2xOES"); + glad_glMultiTexCoord2xvOES = (PFNGLMULTITEXCOORD2XVOESPROC)load("glMultiTexCoord2xvOES"); + glad_glMultiTexCoord3xOES = (PFNGLMULTITEXCOORD3XOESPROC)load("glMultiTexCoord3xOES"); + glad_glMultiTexCoord3xvOES = (PFNGLMULTITEXCOORD3XVOESPROC)load("glMultiTexCoord3xvOES"); + glad_glMultiTexCoord4xvOES = (PFNGLMULTITEXCOORD4XVOESPROC)load("glMultiTexCoord4xvOES"); + glad_glNormal3xvOES = (PFNGLNORMAL3XVOESPROC)load("glNormal3xvOES"); + glad_glPassThroughxOES = (PFNGLPASSTHROUGHXOESPROC)load("glPassThroughxOES"); + glad_glPixelMapx = (PFNGLPIXELMAPXPROC)load("glPixelMapx"); + glad_glPixelStorex = (PFNGLPIXELSTOREXPROC)load("glPixelStorex"); + glad_glPixelTransferxOES = (PFNGLPIXELTRANSFERXOESPROC)load("glPixelTransferxOES"); + glad_glPixelZoomxOES = (PFNGLPIXELZOOMXOESPROC)load("glPixelZoomxOES"); + glad_glPrioritizeTexturesxOES = (PFNGLPRIORITIZETEXTURESXOESPROC)load("glPrioritizeTexturesxOES"); + glad_glRasterPos2xOES = (PFNGLRASTERPOS2XOESPROC)load("glRasterPos2xOES"); + glad_glRasterPos2xvOES = (PFNGLRASTERPOS2XVOESPROC)load("glRasterPos2xvOES"); + glad_glRasterPos3xOES = (PFNGLRASTERPOS3XOESPROC)load("glRasterPos3xOES"); + glad_glRasterPos3xvOES = (PFNGLRASTERPOS3XVOESPROC)load("glRasterPos3xvOES"); + glad_glRasterPos4xOES = (PFNGLRASTERPOS4XOESPROC)load("glRasterPos4xOES"); + glad_glRasterPos4xvOES = (PFNGLRASTERPOS4XVOESPROC)load("glRasterPos4xvOES"); + glad_glRectxOES = (PFNGLRECTXOESPROC)load("glRectxOES"); + glad_glRectxvOES = (PFNGLRECTXVOESPROC)load("glRectxvOES"); + glad_glTexCoord1xOES = (PFNGLTEXCOORD1XOESPROC)load("glTexCoord1xOES"); + glad_glTexCoord1xvOES = (PFNGLTEXCOORD1XVOESPROC)load("glTexCoord1xvOES"); + glad_glTexCoord2xOES = (PFNGLTEXCOORD2XOESPROC)load("glTexCoord2xOES"); + glad_glTexCoord2xvOES = (PFNGLTEXCOORD2XVOESPROC)load("glTexCoord2xvOES"); + glad_glTexCoord3xOES = (PFNGLTEXCOORD3XOESPROC)load("glTexCoord3xOES"); + glad_glTexCoord3xvOES = (PFNGLTEXCOORD3XVOESPROC)load("glTexCoord3xvOES"); + glad_glTexCoord4xOES = (PFNGLTEXCOORD4XOESPROC)load("glTexCoord4xOES"); + glad_glTexCoord4xvOES = (PFNGLTEXCOORD4XVOESPROC)load("glTexCoord4xvOES"); + glad_glTexGenxOES = (PFNGLTEXGENXOESPROC)load("glTexGenxOES"); + glad_glTexGenxvOES = (PFNGLTEXGENXVOESPROC)load("glTexGenxvOES"); + glad_glVertex2xOES = (PFNGLVERTEX2XOESPROC)load("glVertex2xOES"); + glad_glVertex2xvOES = (PFNGLVERTEX2XVOESPROC)load("glVertex2xvOES"); + glad_glVertex3xOES = (PFNGLVERTEX3XOESPROC)load("glVertex3xOES"); + glad_glVertex3xvOES = (PFNGLVERTEX3XVOESPROC)load("glVertex3xvOES"); + glad_glVertex4xOES = (PFNGLVERTEX4XOESPROC)load("glVertex4xOES"); + glad_glVertex4xvOES = (PFNGLVERTEX4XVOESPROC)load("glVertex4xvOES"); +} +static void load_GL_EXT_framebuffer_multisample(GLADloadproc load) { + if(!GLAD_GL_EXT_framebuffer_multisample) return; + glad_glRenderbufferStorageMultisampleEXT = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC)load("glRenderbufferStorageMultisampleEXT"); +} +static void load_GL_SGIS_texture4D(GLADloadproc load) { + if(!GLAD_GL_SGIS_texture4D) return; + glad_glTexImage4DSGIS = (PFNGLTEXIMAGE4DSGISPROC)load("glTexImage4DSGIS"); + glad_glTexSubImage4DSGIS = (PFNGLTEXSUBIMAGE4DSGISPROC)load("glTexSubImage4DSGIS"); +} +static void load_GL_EXT_texture3D(GLADloadproc load) { + if(!GLAD_GL_EXT_texture3D) return; + glad_glTexImage3DEXT = (PFNGLTEXIMAGE3DEXTPROC)load("glTexImage3DEXT"); + glad_glTexSubImage3DEXT = (PFNGLTEXSUBIMAGE3DEXTPROC)load("glTexSubImage3DEXT"); +} +static void load_GL_EXT_multisample(GLADloadproc load) { + if(!GLAD_GL_EXT_multisample) return; + glad_glSampleMaskEXT = (PFNGLSAMPLEMASKEXTPROC)load("glSampleMaskEXT"); + glad_glSamplePatternEXT = (PFNGLSAMPLEPATTERNEXTPROC)load("glSamplePatternEXT"); +} +static void load_GL_EXT_secondary_color(GLADloadproc load) { + if(!GLAD_GL_EXT_secondary_color) return; + glad_glSecondaryColor3bEXT = (PFNGLSECONDARYCOLOR3BEXTPROC)load("glSecondaryColor3bEXT"); + glad_glSecondaryColor3bvEXT = (PFNGLSECONDARYCOLOR3BVEXTPROC)load("glSecondaryColor3bvEXT"); + glad_glSecondaryColor3dEXT = (PFNGLSECONDARYCOLOR3DEXTPROC)load("glSecondaryColor3dEXT"); + glad_glSecondaryColor3dvEXT = (PFNGLSECONDARYCOLOR3DVEXTPROC)load("glSecondaryColor3dvEXT"); + glad_glSecondaryColor3fEXT = (PFNGLSECONDARYCOLOR3FEXTPROC)load("glSecondaryColor3fEXT"); + glad_glSecondaryColor3fvEXT = (PFNGLSECONDARYCOLOR3FVEXTPROC)load("glSecondaryColor3fvEXT"); + glad_glSecondaryColor3iEXT = (PFNGLSECONDARYCOLOR3IEXTPROC)load("glSecondaryColor3iEXT"); + glad_glSecondaryColor3ivEXT = (PFNGLSECONDARYCOLOR3IVEXTPROC)load("glSecondaryColor3ivEXT"); + glad_glSecondaryColor3sEXT = (PFNGLSECONDARYCOLOR3SEXTPROC)load("glSecondaryColor3sEXT"); + glad_glSecondaryColor3svEXT = (PFNGLSECONDARYCOLOR3SVEXTPROC)load("glSecondaryColor3svEXT"); + glad_glSecondaryColor3ubEXT = (PFNGLSECONDARYCOLOR3UBEXTPROC)load("glSecondaryColor3ubEXT"); + glad_glSecondaryColor3ubvEXT = (PFNGLSECONDARYCOLOR3UBVEXTPROC)load("glSecondaryColor3ubvEXT"); + glad_glSecondaryColor3uiEXT = (PFNGLSECONDARYCOLOR3UIEXTPROC)load("glSecondaryColor3uiEXT"); + glad_glSecondaryColor3uivEXT = (PFNGLSECONDARYCOLOR3UIVEXTPROC)load("glSecondaryColor3uivEXT"); + glad_glSecondaryColor3usEXT = (PFNGLSECONDARYCOLOR3USEXTPROC)load("glSecondaryColor3usEXT"); + glad_glSecondaryColor3usvEXT = (PFNGLSECONDARYCOLOR3USVEXTPROC)load("glSecondaryColor3usvEXT"); + glad_glSecondaryColorPointerEXT = (PFNGLSECONDARYCOLORPOINTEREXTPROC)load("glSecondaryColorPointerEXT"); +} +static void load_GL_ATI_vertex_array_object(GLADloadproc load) { + if(!GLAD_GL_ATI_vertex_array_object) return; + glad_glNewObjectBufferATI = (PFNGLNEWOBJECTBUFFERATIPROC)load("glNewObjectBufferATI"); + glad_glIsObjectBufferATI = (PFNGLISOBJECTBUFFERATIPROC)load("glIsObjectBufferATI"); + glad_glUpdateObjectBufferATI = (PFNGLUPDATEOBJECTBUFFERATIPROC)load("glUpdateObjectBufferATI"); + glad_glGetObjectBufferfvATI = (PFNGLGETOBJECTBUFFERFVATIPROC)load("glGetObjectBufferfvATI"); + glad_glGetObjectBufferivATI = (PFNGLGETOBJECTBUFFERIVATIPROC)load("glGetObjectBufferivATI"); + glad_glFreeObjectBufferATI = (PFNGLFREEOBJECTBUFFERATIPROC)load("glFreeObjectBufferATI"); + glad_glArrayObjectATI = (PFNGLARRAYOBJECTATIPROC)load("glArrayObjectATI"); + glad_glGetArrayObjectfvATI = (PFNGLGETARRAYOBJECTFVATIPROC)load("glGetArrayObjectfvATI"); + glad_glGetArrayObjectivATI = (PFNGLGETARRAYOBJECTIVATIPROC)load("glGetArrayObjectivATI"); + glad_glVariantArrayObjectATI = (PFNGLVARIANTARRAYOBJECTATIPROC)load("glVariantArrayObjectATI"); + glad_glGetVariantArrayObjectfvATI = (PFNGLGETVARIANTARRAYOBJECTFVATIPROC)load("glGetVariantArrayObjectfvATI"); + glad_glGetVariantArrayObjectivATI = (PFNGLGETVARIANTARRAYOBJECTIVATIPROC)load("glGetVariantArrayObjectivATI"); +} +static void load_GL_ARB_parallel_shader_compile(GLADloadproc load) { + if(!GLAD_GL_ARB_parallel_shader_compile) return; + glad_glMaxShaderCompilerThreadsARB = (PFNGLMAXSHADERCOMPILERTHREADSARBPROC)load("glMaxShaderCompilerThreadsARB"); +} +static void load_GL_ARB_sparse_texture(GLADloadproc load) { + if(!GLAD_GL_ARB_sparse_texture) return; + glad_glTexPageCommitmentARB = (PFNGLTEXPAGECOMMITMENTARBPROC)load("glTexPageCommitmentARB"); +} +static void load_GL_ARB_sample_locations(GLADloadproc load) { + if(!GLAD_GL_ARB_sample_locations) return; + glad_glFramebufferSampleLocationsfvARB = (PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC)load("glFramebufferSampleLocationsfvARB"); + glad_glNamedFramebufferSampleLocationsfvARB = (PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC)load("glNamedFramebufferSampleLocationsfvARB"); + glad_glEvaluateDepthValuesARB = (PFNGLEVALUATEDEPTHVALUESARBPROC)load("glEvaluateDepthValuesARB"); +} +static void load_GL_ARB_sparse_buffer(GLADloadproc load) { + if(!GLAD_GL_ARB_sparse_buffer) return; + glad_glBufferPageCommitmentARB = (PFNGLBUFFERPAGECOMMITMENTARBPROC)load("glBufferPageCommitmentARB"); + glad_glNamedBufferPageCommitmentEXT = (PFNGLNAMEDBUFFERPAGECOMMITMENTEXTPROC)load("glNamedBufferPageCommitmentEXT"); + glad_glNamedBufferPageCommitmentARB = (PFNGLNAMEDBUFFERPAGECOMMITMENTARBPROC)load("glNamedBufferPageCommitmentARB"); +} +static void load_GL_EXT_draw_range_elements(GLADloadproc load) { + if(!GLAD_GL_EXT_draw_range_elements) return; + glad_glDrawRangeElementsEXT = (PFNGLDRAWRANGEELEMENTSEXTPROC)load("glDrawRangeElementsEXT"); +} +static int find_extensionsGL(void) { + if (!get_exts()) return 0; + GLAD_GL_SGIX_pixel_tiles = has_ext("GL_SGIX_pixel_tiles"); + GLAD_GL_EXT_post_depth_coverage = has_ext("GL_EXT_post_depth_coverage"); + GLAD_GL_APPLE_element_array = has_ext("GL_APPLE_element_array"); + GLAD_GL_AMD_multi_draw_indirect = has_ext("GL_AMD_multi_draw_indirect"); + GLAD_GL_EXT_blend_subtract = has_ext("GL_EXT_blend_subtract"); + GLAD_GL_SGIX_tag_sample_buffer = has_ext("GL_SGIX_tag_sample_buffer"); + GLAD_GL_NV_point_sprite = has_ext("GL_NV_point_sprite"); + GLAD_GL_IBM_texture_mirrored_repeat = has_ext("GL_IBM_texture_mirrored_repeat"); + GLAD_GL_APPLE_transform_hint = has_ext("GL_APPLE_transform_hint"); + GLAD_GL_ATI_separate_stencil = has_ext("GL_ATI_separate_stencil"); + GLAD_GL_NV_shader_atomic_int64 = has_ext("GL_NV_shader_atomic_int64"); + GLAD_GL_NV_vertex_program2_option = has_ext("GL_NV_vertex_program2_option"); + GLAD_GL_EXT_texture_buffer_object = has_ext("GL_EXT_texture_buffer_object"); + GLAD_GL_ARB_vertex_blend = has_ext("GL_ARB_vertex_blend"); + GLAD_GL_OVR_multiview = has_ext("GL_OVR_multiview"); + GLAD_GL_NV_vertex_program2 = has_ext("GL_NV_vertex_program2"); + GLAD_GL_ARB_program_interface_query = has_ext("GL_ARB_program_interface_query"); + GLAD_GL_EXT_misc_attribute = has_ext("GL_EXT_misc_attribute"); + GLAD_GL_NV_multisample_coverage = has_ext("GL_NV_multisample_coverage"); + GLAD_GL_ARB_shading_language_packing = has_ext("GL_ARB_shading_language_packing"); + GLAD_GL_EXT_texture_cube_map = has_ext("GL_EXT_texture_cube_map"); + GLAD_GL_NV_viewport_array2 = has_ext("GL_NV_viewport_array2"); + GLAD_GL_ARB_texture_stencil8 = has_ext("GL_ARB_texture_stencil8"); + GLAD_GL_EXT_index_func = has_ext("GL_EXT_index_func"); + GLAD_GL_OES_compressed_paletted_texture = has_ext("GL_OES_compressed_paletted_texture"); + GLAD_GL_NV_depth_clamp = has_ext("GL_NV_depth_clamp"); + GLAD_GL_NV_shader_buffer_load = has_ext("GL_NV_shader_buffer_load"); + GLAD_GL_EXT_color_subtable = has_ext("GL_EXT_color_subtable"); + GLAD_GL_SUNX_constant_data = has_ext("GL_SUNX_constant_data"); + GLAD_GL_EXT_texture_compression_s3tc = has_ext("GL_EXT_texture_compression_s3tc"); + GLAD_GL_EXT_multi_draw_arrays = has_ext("GL_EXT_multi_draw_arrays"); + GLAD_GL_ARB_shader_atomic_counters = has_ext("GL_ARB_shader_atomic_counters"); + GLAD_GL_ARB_arrays_of_arrays = has_ext("GL_ARB_arrays_of_arrays"); + GLAD_GL_NV_conditional_render = has_ext("GL_NV_conditional_render"); + GLAD_GL_EXT_texture_env_combine = has_ext("GL_EXT_texture_env_combine"); + GLAD_GL_NV_fog_distance = has_ext("GL_NV_fog_distance"); + GLAD_GL_SGIX_async_histogram = has_ext("GL_SGIX_async_histogram"); + GLAD_GL_MESA_resize_buffers = has_ext("GL_MESA_resize_buffers"); + GLAD_GL_NV_light_max_exponent = has_ext("GL_NV_light_max_exponent"); + GLAD_GL_NV_texture_env_combine4 = has_ext("GL_NV_texture_env_combine4"); + GLAD_GL_ARB_texture_view = has_ext("GL_ARB_texture_view"); + GLAD_GL_ARB_texture_env_combine = has_ext("GL_ARB_texture_env_combine"); + GLAD_GL_ARB_map_buffer_range = has_ext("GL_ARB_map_buffer_range"); + GLAD_GL_EXT_convolution = has_ext("GL_EXT_convolution"); + GLAD_GL_NV_compute_program5 = has_ext("GL_NV_compute_program5"); + GLAD_GL_NV_vertex_attrib_integer_64bit = has_ext("GL_NV_vertex_attrib_integer_64bit"); + GLAD_GL_EXT_paletted_texture = has_ext("GL_EXT_paletted_texture"); + GLAD_GL_ARB_texture_buffer_object = has_ext("GL_ARB_texture_buffer_object"); + GLAD_GL_ATI_pn_triangles = has_ext("GL_ATI_pn_triangles"); + GLAD_GL_SGIX_resample = has_ext("GL_SGIX_resample"); + GLAD_GL_SGIX_flush_raster = has_ext("GL_SGIX_flush_raster"); + GLAD_GL_EXT_light_texture = has_ext("GL_EXT_light_texture"); + GLAD_GL_ARB_point_sprite = has_ext("GL_ARB_point_sprite"); + GLAD_GL_SUN_convolution_border_modes = has_ext("GL_SUN_convolution_border_modes"); + GLAD_GL_NV_parameter_buffer_object2 = has_ext("GL_NV_parameter_buffer_object2"); + GLAD_GL_ARB_half_float_pixel = has_ext("GL_ARB_half_float_pixel"); + GLAD_GL_NV_tessellation_program5 = has_ext("GL_NV_tessellation_program5"); + GLAD_GL_REND_screen_coordinates = has_ext("GL_REND_screen_coordinates"); + GLAD_GL_HP_image_transform = has_ext("GL_HP_image_transform"); + GLAD_GL_EXT_packed_float = has_ext("GL_EXT_packed_float"); + GLAD_GL_OML_subsample = has_ext("GL_OML_subsample"); + GLAD_GL_SGIX_vertex_preclip = has_ext("GL_SGIX_vertex_preclip"); + GLAD_GL_SGIX_texture_scale_bias = has_ext("GL_SGIX_texture_scale_bias"); + GLAD_GL_AMD_draw_buffers_blend = has_ext("GL_AMD_draw_buffers_blend"); + GLAD_GL_APPLE_texture_range = has_ext("GL_APPLE_texture_range"); + GLAD_GL_EXT_texture_array = has_ext("GL_EXT_texture_array"); + GLAD_GL_NV_texture_barrier = has_ext("GL_NV_texture_barrier"); + GLAD_GL_ARB_texture_query_levels = has_ext("GL_ARB_texture_query_levels"); + GLAD_GL_NV_texgen_emboss = has_ext("GL_NV_texgen_emboss"); + GLAD_GL_EXT_texture_swizzle = has_ext("GL_EXT_texture_swizzle"); + GLAD_GL_ARB_texture_rg = has_ext("GL_ARB_texture_rg"); + GLAD_GL_ARB_vertex_type_2_10_10_10_rev = has_ext("GL_ARB_vertex_type_2_10_10_10_rev"); + GLAD_GL_ARB_fragment_shader = has_ext("GL_ARB_fragment_shader"); + GLAD_GL_3DFX_tbuffer = has_ext("GL_3DFX_tbuffer"); + GLAD_GL_GREMEDY_frame_terminator = has_ext("GL_GREMEDY_frame_terminator"); + GLAD_GL_ARB_blend_func_extended = has_ext("GL_ARB_blend_func_extended"); + GLAD_GL_EXT_separate_shader_objects = has_ext("GL_EXT_separate_shader_objects"); + GLAD_GL_NV_texture_multisample = has_ext("GL_NV_texture_multisample"); + GLAD_GL_ARB_shader_objects = has_ext("GL_ARB_shader_objects"); + GLAD_GL_ARB_framebuffer_object = has_ext("GL_ARB_framebuffer_object"); + GLAD_GL_ATI_envmap_bumpmap = has_ext("GL_ATI_envmap_bumpmap"); + GLAD_GL_ARB_robust_buffer_access_behavior = has_ext("GL_ARB_robust_buffer_access_behavior"); + GLAD_GL_ARB_shader_stencil_export = has_ext("GL_ARB_shader_stencil_export"); + GLAD_GL_NV_texture_rectangle = has_ext("GL_NV_texture_rectangle"); + GLAD_GL_ARB_enhanced_layouts = has_ext("GL_ARB_enhanced_layouts"); + GLAD_GL_ARB_texture_rectangle = has_ext("GL_ARB_texture_rectangle"); + GLAD_GL_SGI_texture_color_table = has_ext("GL_SGI_texture_color_table"); + GLAD_GL_ATI_map_object_buffer = has_ext("GL_ATI_map_object_buffer"); + GLAD_GL_ARB_robustness = has_ext("GL_ARB_robustness"); + GLAD_GL_NV_pixel_data_range = has_ext("GL_NV_pixel_data_range"); + GLAD_GL_EXT_framebuffer_blit = has_ext("GL_EXT_framebuffer_blit"); + GLAD_GL_ARB_gpu_shader_fp64 = has_ext("GL_ARB_gpu_shader_fp64"); + GLAD_GL_NV_command_list = has_ext("GL_NV_command_list"); + GLAD_GL_SGIX_depth_texture = has_ext("GL_SGIX_depth_texture"); + GLAD_GL_EXT_vertex_weighting = has_ext("GL_EXT_vertex_weighting"); + GLAD_GL_GREMEDY_string_marker = has_ext("GL_GREMEDY_string_marker"); + GLAD_GL_ARB_texture_compression_bptc = has_ext("GL_ARB_texture_compression_bptc"); + GLAD_GL_EXT_subtexture = has_ext("GL_EXT_subtexture"); + GLAD_GL_EXT_pixel_transform_color_table = has_ext("GL_EXT_pixel_transform_color_table"); + GLAD_GL_EXT_texture_compression_rgtc = has_ext("GL_EXT_texture_compression_rgtc"); + GLAD_GL_ARB_shader_atomic_counter_ops = has_ext("GL_ARB_shader_atomic_counter_ops"); + GLAD_GL_SGIX_depth_pass_instrument = has_ext("GL_SGIX_depth_pass_instrument"); + GLAD_GL_EXT_gpu_program_parameters = has_ext("GL_EXT_gpu_program_parameters"); + GLAD_GL_NV_evaluators = has_ext("GL_NV_evaluators"); + GLAD_GL_SGIS_texture_filter4 = has_ext("GL_SGIS_texture_filter4"); + GLAD_GL_AMD_performance_monitor = has_ext("GL_AMD_performance_monitor"); + GLAD_GL_NV_geometry_shader4 = has_ext("GL_NV_geometry_shader4"); + GLAD_GL_EXT_stencil_clear_tag = has_ext("GL_EXT_stencil_clear_tag"); + GLAD_GL_NV_vertex_program1_1 = has_ext("GL_NV_vertex_program1_1"); + GLAD_GL_NV_present_video = has_ext("GL_NV_present_video"); + GLAD_GL_ARB_texture_compression_rgtc = has_ext("GL_ARB_texture_compression_rgtc"); + GLAD_GL_HP_convolution_border_modes = has_ext("GL_HP_convolution_border_modes"); + GLAD_GL_EXT_shader_integer_mix = has_ext("GL_EXT_shader_integer_mix"); + GLAD_GL_SGIX_framezoom = has_ext("GL_SGIX_framezoom"); + GLAD_GL_ARB_stencil_texturing = has_ext("GL_ARB_stencil_texturing"); + GLAD_GL_ARB_shader_clock = has_ext("GL_ARB_shader_clock"); + GLAD_GL_NV_shader_atomic_fp16_vector = has_ext("GL_NV_shader_atomic_fp16_vector"); + GLAD_GL_SGIX_fog_offset = has_ext("GL_SGIX_fog_offset"); + GLAD_GL_ARB_draw_elements_base_vertex = has_ext("GL_ARB_draw_elements_base_vertex"); + GLAD_GL_INGR_interlace_read = has_ext("GL_INGR_interlace_read"); + GLAD_GL_NV_transform_feedback = has_ext("GL_NV_transform_feedback"); + GLAD_GL_NV_fragment_program = has_ext("GL_NV_fragment_program"); + GLAD_GL_AMD_stencil_operation_extended = has_ext("GL_AMD_stencil_operation_extended"); + GLAD_GL_ARB_seamless_cubemap_per_texture = has_ext("GL_ARB_seamless_cubemap_per_texture"); + GLAD_GL_ARB_instanced_arrays = has_ext("GL_ARB_instanced_arrays"); + GLAD_GL_EXT_polygon_offset = has_ext("GL_EXT_polygon_offset"); + GLAD_GL_NV_vertex_array_range2 = has_ext("GL_NV_vertex_array_range2"); + GLAD_GL_KHR_robustness = has_ext("GL_KHR_robustness"); + GLAD_GL_AMD_sparse_texture = has_ext("GL_AMD_sparse_texture"); + GLAD_GL_ARB_clip_control = has_ext("GL_ARB_clip_control"); + GLAD_GL_NV_fragment_coverage_to_color = has_ext("GL_NV_fragment_coverage_to_color"); + GLAD_GL_NV_fence = has_ext("GL_NV_fence"); + GLAD_GL_ARB_texture_buffer_range = has_ext("GL_ARB_texture_buffer_range"); + GLAD_GL_SUN_mesh_array = has_ext("GL_SUN_mesh_array"); + GLAD_GL_ARB_vertex_attrib_binding = has_ext("GL_ARB_vertex_attrib_binding"); + GLAD_GL_ARB_framebuffer_no_attachments = has_ext("GL_ARB_framebuffer_no_attachments"); + GLAD_GL_ARB_cl_event = has_ext("GL_ARB_cl_event"); + GLAD_GL_ARB_derivative_control = has_ext("GL_ARB_derivative_control"); + GLAD_GL_NV_packed_depth_stencil = has_ext("GL_NV_packed_depth_stencil"); + GLAD_GL_OES_single_precision = has_ext("GL_OES_single_precision"); + GLAD_GL_NV_primitive_restart = has_ext("GL_NV_primitive_restart"); + GLAD_GL_SUN_global_alpha = has_ext("GL_SUN_global_alpha"); + GLAD_GL_ARB_fragment_shader_interlock = has_ext("GL_ARB_fragment_shader_interlock"); + GLAD_GL_EXT_texture_object = has_ext("GL_EXT_texture_object"); + GLAD_GL_AMD_name_gen_delete = has_ext("GL_AMD_name_gen_delete"); + GLAD_GL_NV_texture_compression_vtc = has_ext("GL_NV_texture_compression_vtc"); + GLAD_GL_NV_sample_mask_override_coverage = has_ext("GL_NV_sample_mask_override_coverage"); + GLAD_GL_NV_texture_shader3 = has_ext("GL_NV_texture_shader3"); + GLAD_GL_NV_texture_shader2 = has_ext("GL_NV_texture_shader2"); + GLAD_GL_EXT_texture = has_ext("GL_EXT_texture"); + GLAD_GL_ARB_buffer_storage = has_ext("GL_ARB_buffer_storage"); + GLAD_GL_AMD_shader_atomic_counter_ops = has_ext("GL_AMD_shader_atomic_counter_ops"); + GLAD_GL_APPLE_vertex_program_evaluators = has_ext("GL_APPLE_vertex_program_evaluators"); + GLAD_GL_ARB_multi_bind = has_ext("GL_ARB_multi_bind"); + GLAD_GL_ARB_explicit_uniform_location = has_ext("GL_ARB_explicit_uniform_location"); + GLAD_GL_ARB_depth_buffer_float = has_ext("GL_ARB_depth_buffer_float"); + GLAD_GL_NV_path_rendering_shared_edge = has_ext("GL_NV_path_rendering_shared_edge"); + GLAD_GL_SGIX_shadow_ambient = has_ext("GL_SGIX_shadow_ambient"); + GLAD_GL_ARB_texture_cube_map = has_ext("GL_ARB_texture_cube_map"); + GLAD_GL_AMD_vertex_shader_viewport_index = has_ext("GL_AMD_vertex_shader_viewport_index"); + GLAD_GL_SGIX_list_priority = has_ext("GL_SGIX_list_priority"); + GLAD_GL_NV_vertex_buffer_unified_memory = has_ext("GL_NV_vertex_buffer_unified_memory"); + GLAD_GL_NV_uniform_buffer_unified_memory = has_ext("GL_NV_uniform_buffer_unified_memory"); + GLAD_GL_EXT_texture_env_dot3 = has_ext("GL_EXT_texture_env_dot3"); + GLAD_GL_ATI_texture_env_combine3 = has_ext("GL_ATI_texture_env_combine3"); + GLAD_GL_ARB_map_buffer_alignment = has_ext("GL_ARB_map_buffer_alignment"); + GLAD_GL_NV_blend_equation_advanced = has_ext("GL_NV_blend_equation_advanced"); + GLAD_GL_SGIS_sharpen_texture = has_ext("GL_SGIS_sharpen_texture"); + GLAD_GL_KHR_robust_buffer_access_behavior = has_ext("GL_KHR_robust_buffer_access_behavior"); + GLAD_GL_ARB_pipeline_statistics_query = has_ext("GL_ARB_pipeline_statistics_query"); + GLAD_GL_ARB_vertex_program = has_ext("GL_ARB_vertex_program"); + GLAD_GL_ARB_texture_rgb10_a2ui = has_ext("GL_ARB_texture_rgb10_a2ui"); + GLAD_GL_OML_interlace = has_ext("GL_OML_interlace"); + GLAD_GL_ATI_pixel_format_float = has_ext("GL_ATI_pixel_format_float"); + GLAD_GL_NV_geometry_shader_passthrough = has_ext("GL_NV_geometry_shader_passthrough"); + GLAD_GL_ARB_vertex_buffer_object = has_ext("GL_ARB_vertex_buffer_object"); + GLAD_GL_EXT_shadow_funcs = has_ext("GL_EXT_shadow_funcs"); + GLAD_GL_ATI_text_fragment_shader = has_ext("GL_ATI_text_fragment_shader"); + GLAD_GL_NV_vertex_array_range = has_ext("GL_NV_vertex_array_range"); + GLAD_GL_SGIX_fragment_lighting = has_ext("GL_SGIX_fragment_lighting"); + GLAD_GL_NV_texture_expand_normal = has_ext("GL_NV_texture_expand_normal"); + GLAD_GL_NV_framebuffer_multisample_coverage = has_ext("GL_NV_framebuffer_multisample_coverage"); + GLAD_GL_EXT_timer_query = has_ext("GL_EXT_timer_query"); + GLAD_GL_EXT_vertex_array_bgra = has_ext("GL_EXT_vertex_array_bgra"); + GLAD_GL_NV_bindless_texture = has_ext("GL_NV_bindless_texture"); + GLAD_GL_KHR_debug = has_ext("GL_KHR_debug"); + GLAD_GL_SGIS_texture_border_clamp = has_ext("GL_SGIS_texture_border_clamp"); + GLAD_GL_ATI_vertex_attrib_array_object = has_ext("GL_ATI_vertex_attrib_array_object"); + GLAD_GL_SGIX_clipmap = has_ext("GL_SGIX_clipmap"); + GLAD_GL_EXT_geometry_shader4 = has_ext("GL_EXT_geometry_shader4"); + GLAD_GL_ARB_shader_texture_image_samples = has_ext("GL_ARB_shader_texture_image_samples"); + GLAD_GL_MESA_ycbcr_texture = has_ext("GL_MESA_ycbcr_texture"); + GLAD_GL_MESAX_texture_stack = has_ext("GL_MESAX_texture_stack"); + GLAD_GL_AMD_seamless_cubemap_per_texture = has_ext("GL_AMD_seamless_cubemap_per_texture"); + GLAD_GL_EXT_bindable_uniform = has_ext("GL_EXT_bindable_uniform"); + GLAD_GL_KHR_texture_compression_astc_hdr = has_ext("GL_KHR_texture_compression_astc_hdr"); + GLAD_GL_ARB_shader_ballot = has_ext("GL_ARB_shader_ballot"); + GLAD_GL_KHR_blend_equation_advanced = has_ext("GL_KHR_blend_equation_advanced"); + GLAD_GL_ARB_fragment_program_shadow = has_ext("GL_ARB_fragment_program_shadow"); + GLAD_GL_ATI_element_array = has_ext("GL_ATI_element_array"); + GLAD_GL_AMD_texture_texture4 = has_ext("GL_AMD_texture_texture4"); + GLAD_GL_SGIX_reference_plane = has_ext("GL_SGIX_reference_plane"); + GLAD_GL_EXT_stencil_two_side = has_ext("GL_EXT_stencil_two_side"); + GLAD_GL_ARB_transform_feedback_overflow_query = has_ext("GL_ARB_transform_feedback_overflow_query"); + GLAD_GL_SGIX_texture_lod_bias = has_ext("GL_SGIX_texture_lod_bias"); + GLAD_GL_KHR_no_error = has_ext("GL_KHR_no_error"); + GLAD_GL_NV_explicit_multisample = has_ext("GL_NV_explicit_multisample"); + GLAD_GL_IBM_static_data = has_ext("GL_IBM_static_data"); + GLAD_GL_EXT_clip_volume_hint = has_ext("GL_EXT_clip_volume_hint"); + GLAD_GL_EXT_texture_perturb_normal = has_ext("GL_EXT_texture_perturb_normal"); + GLAD_GL_NV_fragment_program2 = has_ext("GL_NV_fragment_program2"); + GLAD_GL_NV_fragment_program4 = has_ext("GL_NV_fragment_program4"); + GLAD_GL_EXT_point_parameters = has_ext("GL_EXT_point_parameters"); + GLAD_GL_PGI_misc_hints = has_ext("GL_PGI_misc_hints"); + GLAD_GL_SGIX_subsample = has_ext("GL_SGIX_subsample"); + GLAD_GL_AMD_shader_stencil_export = has_ext("GL_AMD_shader_stencil_export"); + GLAD_GL_ARB_shader_texture_lod = has_ext("GL_ARB_shader_texture_lod"); + GLAD_GL_ARB_vertex_shader = has_ext("GL_ARB_vertex_shader"); + GLAD_GL_ARB_depth_clamp = has_ext("GL_ARB_depth_clamp"); + GLAD_GL_SGIS_texture_select = has_ext("GL_SGIS_texture_select"); + GLAD_GL_NV_texture_shader = has_ext("GL_NV_texture_shader"); + GLAD_GL_ARB_tessellation_shader = has_ext("GL_ARB_tessellation_shader"); + GLAD_GL_EXT_draw_buffers2 = has_ext("GL_EXT_draw_buffers2"); + GLAD_GL_ARB_vertex_attrib_64bit = has_ext("GL_ARB_vertex_attrib_64bit"); + GLAD_GL_EXT_texture_filter_minmax = has_ext("GL_EXT_texture_filter_minmax"); + GLAD_GL_WIN_specular_fog = has_ext("GL_WIN_specular_fog"); + GLAD_GL_AMD_interleaved_elements = has_ext("GL_AMD_interleaved_elements"); + GLAD_GL_ARB_fragment_program = has_ext("GL_ARB_fragment_program"); + GLAD_GL_OML_resample = has_ext("GL_OML_resample"); + GLAD_GL_APPLE_ycbcr_422 = has_ext("GL_APPLE_ycbcr_422"); + GLAD_GL_SGIX_texture_add_env = has_ext("GL_SGIX_texture_add_env"); + GLAD_GL_ARB_shadow_ambient = has_ext("GL_ARB_shadow_ambient"); + GLAD_GL_ARB_texture_storage = has_ext("GL_ARB_texture_storage"); + GLAD_GL_EXT_pixel_buffer_object = has_ext("GL_EXT_pixel_buffer_object"); + GLAD_GL_ARB_copy_image = has_ext("GL_ARB_copy_image"); + GLAD_GL_SGIS_pixel_texture = has_ext("GL_SGIS_pixel_texture"); + GLAD_GL_SGIS_generate_mipmap = has_ext("GL_SGIS_generate_mipmap"); + GLAD_GL_SGIX_instruments = has_ext("GL_SGIX_instruments"); + GLAD_GL_HP_texture_lighting = has_ext("GL_HP_texture_lighting"); + GLAD_GL_ARB_shader_storage_buffer_object = has_ext("GL_ARB_shader_storage_buffer_object"); + GLAD_GL_EXT_sparse_texture2 = has_ext("GL_EXT_sparse_texture2"); + GLAD_GL_EXT_blend_minmax = has_ext("GL_EXT_blend_minmax"); + GLAD_GL_MESA_pack_invert = has_ext("GL_MESA_pack_invert"); + GLAD_GL_ARB_base_instance = has_ext("GL_ARB_base_instance"); + GLAD_GL_SGIX_convolution_accuracy = has_ext("GL_SGIX_convolution_accuracy"); + GLAD_GL_PGI_vertex_hints = has_ext("GL_PGI_vertex_hints"); + GLAD_GL_AMD_transform_feedback4 = has_ext("GL_AMD_transform_feedback4"); + GLAD_GL_ARB_ES3_1_compatibility = has_ext("GL_ARB_ES3_1_compatibility"); + GLAD_GL_EXT_texture_integer = has_ext("GL_EXT_texture_integer"); + GLAD_GL_ARB_texture_multisample = has_ext("GL_ARB_texture_multisample"); + GLAD_GL_AMD_gpu_shader_int64 = has_ext("GL_AMD_gpu_shader_int64"); + GLAD_GL_S3_s3tc = has_ext("GL_S3_s3tc"); + GLAD_GL_ARB_query_buffer_object = has_ext("GL_ARB_query_buffer_object"); + GLAD_GL_AMD_vertex_shader_tessellator = has_ext("GL_AMD_vertex_shader_tessellator"); + GLAD_GL_ARB_invalidate_subdata = has_ext("GL_ARB_invalidate_subdata"); + GLAD_GL_EXT_index_material = has_ext("GL_EXT_index_material"); + GLAD_GL_NV_blend_equation_advanced_coherent = has_ext("GL_NV_blend_equation_advanced_coherent"); + GLAD_GL_KHR_texture_compression_astc_sliced_3d = has_ext("GL_KHR_texture_compression_astc_sliced_3d"); + GLAD_GL_INTEL_parallel_arrays = has_ext("GL_INTEL_parallel_arrays"); + GLAD_GL_ATI_draw_buffers = has_ext("GL_ATI_draw_buffers"); + GLAD_GL_EXT_cmyka = has_ext("GL_EXT_cmyka"); + GLAD_GL_SGIX_pixel_texture = has_ext("GL_SGIX_pixel_texture"); + GLAD_GL_APPLE_specular_vector = has_ext("GL_APPLE_specular_vector"); + GLAD_GL_ARB_compatibility = has_ext("GL_ARB_compatibility"); + GLAD_GL_ARB_timer_query = has_ext("GL_ARB_timer_query"); + GLAD_GL_SGIX_interlace = has_ext("GL_SGIX_interlace"); + GLAD_GL_NV_parameter_buffer_object = has_ext("GL_NV_parameter_buffer_object"); + GLAD_GL_AMD_shader_trinary_minmax = has_ext("GL_AMD_shader_trinary_minmax"); + GLAD_GL_ARB_direct_state_access = has_ext("GL_ARB_direct_state_access"); + GLAD_GL_EXT_rescale_normal = has_ext("GL_EXT_rescale_normal"); + GLAD_GL_ARB_pixel_buffer_object = has_ext("GL_ARB_pixel_buffer_object"); + GLAD_GL_ARB_uniform_buffer_object = has_ext("GL_ARB_uniform_buffer_object"); + GLAD_GL_ARB_vertex_type_10f_11f_11f_rev = has_ext("GL_ARB_vertex_type_10f_11f_11f_rev"); + GLAD_GL_ARB_texture_swizzle = has_ext("GL_ARB_texture_swizzle"); + GLAD_GL_NV_transform_feedback2 = has_ext("GL_NV_transform_feedback2"); + GLAD_GL_SGIX_async_pixel = has_ext("GL_SGIX_async_pixel"); + GLAD_GL_NV_fragment_program_option = has_ext("GL_NV_fragment_program_option"); + GLAD_GL_ARB_explicit_attrib_location = has_ext("GL_ARB_explicit_attrib_location"); + GLAD_GL_EXT_blend_color = has_ext("GL_EXT_blend_color"); + GLAD_GL_NV_shader_thread_group = has_ext("GL_NV_shader_thread_group"); + GLAD_GL_EXT_stencil_wrap = has_ext("GL_EXT_stencil_wrap"); + GLAD_GL_EXT_index_array_formats = has_ext("GL_EXT_index_array_formats"); + GLAD_GL_OVR_multiview2 = has_ext("GL_OVR_multiview2"); + GLAD_GL_EXT_histogram = has_ext("GL_EXT_histogram"); + GLAD_GL_ARB_get_texture_sub_image = has_ext("GL_ARB_get_texture_sub_image"); + GLAD_GL_SGIS_point_parameters = has_ext("GL_SGIS_point_parameters"); + GLAD_GL_SGIX_ycrcb = has_ext("GL_SGIX_ycrcb"); + GLAD_GL_EXT_direct_state_access = has_ext("GL_EXT_direct_state_access"); + GLAD_GL_ARB_cull_distance = has_ext("GL_ARB_cull_distance"); + GLAD_GL_AMD_sample_positions = has_ext("GL_AMD_sample_positions"); + GLAD_GL_NV_vertex_program = has_ext("GL_NV_vertex_program"); + GLAD_GL_NV_shader_thread_shuffle = has_ext("GL_NV_shader_thread_shuffle"); + GLAD_GL_ARB_shader_precision = has_ext("GL_ARB_shader_precision"); + GLAD_GL_EXT_vertex_shader = has_ext("GL_EXT_vertex_shader"); + GLAD_GL_EXT_blend_func_separate = has_ext("GL_EXT_blend_func_separate"); + GLAD_GL_APPLE_fence = has_ext("GL_APPLE_fence"); + GLAD_GL_OES_byte_coordinates = has_ext("GL_OES_byte_coordinates"); + GLAD_GL_ARB_transpose_matrix = has_ext("GL_ARB_transpose_matrix"); + GLAD_GL_ARB_provoking_vertex = has_ext("GL_ARB_provoking_vertex"); + GLAD_GL_EXT_fog_coord = has_ext("GL_EXT_fog_coord"); + GLAD_GL_EXT_vertex_array = has_ext("GL_EXT_vertex_array"); + GLAD_GL_ARB_half_float_vertex = has_ext("GL_ARB_half_float_vertex"); + GLAD_GL_EXT_blend_equation_separate = has_ext("GL_EXT_blend_equation_separate"); + GLAD_GL_NV_framebuffer_mixed_samples = has_ext("GL_NV_framebuffer_mixed_samples"); + GLAD_GL_NVX_conditional_render = has_ext("GL_NVX_conditional_render"); + GLAD_GL_ARB_multi_draw_indirect = has_ext("GL_ARB_multi_draw_indirect"); + GLAD_GL_EXT_raster_multisample = has_ext("GL_EXT_raster_multisample"); + GLAD_GL_NV_copy_image = has_ext("GL_NV_copy_image"); + GLAD_GL_ARB_fragment_layer_viewport = has_ext("GL_ARB_fragment_layer_viewport"); + GLAD_GL_INTEL_framebuffer_CMAA = has_ext("GL_INTEL_framebuffer_CMAA"); + GLAD_GL_ARB_transform_feedback2 = has_ext("GL_ARB_transform_feedback2"); + GLAD_GL_ARB_transform_feedback3 = has_ext("GL_ARB_transform_feedback3"); + GLAD_GL_SGIX_ycrcba = has_ext("GL_SGIX_ycrcba"); + GLAD_GL_EXT_debug_marker = has_ext("GL_EXT_debug_marker"); + GLAD_GL_EXT_bgra = has_ext("GL_EXT_bgra"); + GLAD_GL_ARB_sparse_texture_clamp = has_ext("GL_ARB_sparse_texture_clamp"); + GLAD_GL_EXT_pixel_transform = has_ext("GL_EXT_pixel_transform"); + GLAD_GL_ARB_conservative_depth = has_ext("GL_ARB_conservative_depth"); + GLAD_GL_ATI_fragment_shader = has_ext("GL_ATI_fragment_shader"); + GLAD_GL_ARB_vertex_array_object = has_ext("GL_ARB_vertex_array_object"); + GLAD_GL_SUN_triangle_list = has_ext("GL_SUN_triangle_list"); + GLAD_GL_EXT_texture_env_add = has_ext("GL_EXT_texture_env_add"); + GLAD_GL_EXT_packed_depth_stencil = has_ext("GL_EXT_packed_depth_stencil"); + GLAD_GL_EXT_texture_mirror_clamp = has_ext("GL_EXT_texture_mirror_clamp"); + GLAD_GL_NV_multisample_filter_hint = has_ext("GL_NV_multisample_filter_hint"); + GLAD_GL_APPLE_float_pixels = has_ext("GL_APPLE_float_pixels"); + GLAD_GL_ARB_transform_feedback_instanced = has_ext("GL_ARB_transform_feedback_instanced"); + GLAD_GL_SGIX_async = has_ext("GL_SGIX_async"); + GLAD_GL_EXT_texture_compression_latc = has_ext("GL_EXT_texture_compression_latc"); + GLAD_GL_NV_shader_atomic_float = has_ext("GL_NV_shader_atomic_float"); + GLAD_GL_ARB_shading_language_100 = has_ext("GL_ARB_shading_language_100"); + GLAD_GL_INTEL_performance_query = has_ext("GL_INTEL_performance_query"); + GLAD_GL_ARB_texture_mirror_clamp_to_edge = has_ext("GL_ARB_texture_mirror_clamp_to_edge"); + GLAD_GL_NV_gpu_shader5 = has_ext("GL_NV_gpu_shader5"); + GLAD_GL_NV_bindless_multi_draw_indirect_count = has_ext("GL_NV_bindless_multi_draw_indirect_count"); + GLAD_GL_ARB_ES2_compatibility = has_ext("GL_ARB_ES2_compatibility"); + GLAD_GL_ARB_indirect_parameters = has_ext("GL_ARB_indirect_parameters"); + GLAD_GL_NV_half_float = has_ext("GL_NV_half_float"); + GLAD_GL_ARB_ES3_2_compatibility = has_ext("GL_ARB_ES3_2_compatibility"); + GLAD_GL_ATI_texture_mirror_once = has_ext("GL_ATI_texture_mirror_once"); + GLAD_GL_IBM_rasterpos_clip = has_ext("GL_IBM_rasterpos_clip"); + GLAD_GL_SGIX_shadow = has_ext("GL_SGIX_shadow"); + GLAD_GL_EXT_polygon_offset_clamp = has_ext("GL_EXT_polygon_offset_clamp"); + GLAD_GL_NV_deep_texture3D = has_ext("GL_NV_deep_texture3D"); + GLAD_GL_ARB_shader_draw_parameters = has_ext("GL_ARB_shader_draw_parameters"); + GLAD_GL_SGIX_calligraphic_fragment = has_ext("GL_SGIX_calligraphic_fragment"); + GLAD_GL_ARB_shader_bit_encoding = has_ext("GL_ARB_shader_bit_encoding"); + GLAD_GL_EXT_compiled_vertex_array = has_ext("GL_EXT_compiled_vertex_array"); + GLAD_GL_NV_depth_buffer_float = has_ext("GL_NV_depth_buffer_float"); + GLAD_GL_NV_occlusion_query = has_ext("GL_NV_occlusion_query"); + GLAD_GL_APPLE_flush_buffer_range = has_ext("GL_APPLE_flush_buffer_range"); + GLAD_GL_ARB_imaging = has_ext("GL_ARB_imaging"); + GLAD_GL_ARB_draw_buffers_blend = has_ext("GL_ARB_draw_buffers_blend"); + GLAD_GL_AMD_gcn_shader = has_ext("GL_AMD_gcn_shader"); + GLAD_GL_AMD_blend_minmax_factor = has_ext("GL_AMD_blend_minmax_factor"); + GLAD_GL_EXT_texture_sRGB_decode = has_ext("GL_EXT_texture_sRGB_decode"); + GLAD_GL_ARB_shading_language_420pack = has_ext("GL_ARB_shading_language_420pack"); + GLAD_GL_ARB_shader_viewport_layer_array = has_ext("GL_ARB_shader_viewport_layer_array"); + GLAD_GL_ATI_meminfo = has_ext("GL_ATI_meminfo"); + GLAD_GL_EXT_abgr = has_ext("GL_EXT_abgr"); + GLAD_GL_AMD_pinned_memory = has_ext("GL_AMD_pinned_memory"); + GLAD_GL_EXT_texture_snorm = has_ext("GL_EXT_texture_snorm"); + GLAD_GL_SGIX_texture_coordinate_clamp = has_ext("GL_SGIX_texture_coordinate_clamp"); + GLAD_GL_ARB_clear_buffer_object = has_ext("GL_ARB_clear_buffer_object"); + GLAD_GL_ARB_multisample = has_ext("GL_ARB_multisample"); + GLAD_GL_EXT_debug_label = has_ext("GL_EXT_debug_label"); + GLAD_GL_ARB_sample_shading = has_ext("GL_ARB_sample_shading"); + GLAD_GL_NV_internalformat_sample_query = has_ext("GL_NV_internalformat_sample_query"); + GLAD_GL_INTEL_map_texture = has_ext("GL_INTEL_map_texture"); + GLAD_GL_ARB_texture_env_crossbar = has_ext("GL_ARB_texture_env_crossbar"); + GLAD_GL_EXT_422_pixels = has_ext("GL_EXT_422_pixels"); + GLAD_GL_ARB_compute_shader = has_ext("GL_ARB_compute_shader"); + GLAD_GL_EXT_blend_logic_op = has_ext("GL_EXT_blend_logic_op"); + GLAD_GL_IBM_cull_vertex = has_ext("GL_IBM_cull_vertex"); + GLAD_GL_IBM_vertex_array_lists = has_ext("GL_IBM_vertex_array_lists"); + GLAD_GL_ARB_color_buffer_float = has_ext("GL_ARB_color_buffer_float"); + GLAD_GL_ARB_bindless_texture = has_ext("GL_ARB_bindless_texture"); + GLAD_GL_ARB_window_pos = has_ext("GL_ARB_window_pos"); + GLAD_GL_ARB_internalformat_query = has_ext("GL_ARB_internalformat_query"); + GLAD_GL_ARB_shadow = has_ext("GL_ARB_shadow"); + GLAD_GL_ARB_texture_mirrored_repeat = has_ext("GL_ARB_texture_mirrored_repeat"); + GLAD_GL_EXT_shader_image_load_store = has_ext("GL_EXT_shader_image_load_store"); + GLAD_GL_EXT_copy_texture = has_ext("GL_EXT_copy_texture"); + GLAD_GL_NV_register_combiners2 = has_ext("GL_NV_register_combiners2"); + GLAD_GL_SGIX_ycrcb_subsample = has_ext("GL_SGIX_ycrcb_subsample"); + GLAD_GL_SGIX_ir_instrument1 = has_ext("GL_SGIX_ir_instrument1"); + GLAD_GL_NV_draw_texture = has_ext("GL_NV_draw_texture"); + GLAD_GL_EXT_texture_shared_exponent = has_ext("GL_EXT_texture_shared_exponent"); + GLAD_GL_EXT_draw_instanced = has_ext("GL_EXT_draw_instanced"); + GLAD_GL_NV_copy_depth_to_color = has_ext("GL_NV_copy_depth_to_color"); + GLAD_GL_ARB_viewport_array = has_ext("GL_ARB_viewport_array"); + GLAD_GL_ARB_separate_shader_objects = has_ext("GL_ARB_separate_shader_objects"); + GLAD_GL_EXT_depth_bounds_test = has_ext("GL_EXT_depth_bounds_test"); + GLAD_GL_EXT_shared_texture_palette = has_ext("GL_EXT_shared_texture_palette"); + GLAD_GL_ARB_texture_env_add = has_ext("GL_ARB_texture_env_add"); + GLAD_GL_NV_video_capture = has_ext("GL_NV_video_capture"); + GLAD_GL_ARB_sampler_objects = has_ext("GL_ARB_sampler_objects"); + GLAD_GL_ARB_matrix_palette = has_ext("GL_ARB_matrix_palette"); + GLAD_GL_SGIS_texture_color_mask = has_ext("GL_SGIS_texture_color_mask"); + GLAD_GL_EXT_packed_pixels = has_ext("GL_EXT_packed_pixels"); + GLAD_GL_EXT_coordinate_frame = has_ext("GL_EXT_coordinate_frame"); + GLAD_GL_ARB_texture_compression = has_ext("GL_ARB_texture_compression"); + GLAD_GL_APPLE_aux_depth_stencil = has_ext("GL_APPLE_aux_depth_stencil"); + GLAD_GL_ARB_shader_subroutine = has_ext("GL_ARB_shader_subroutine"); + GLAD_GL_EXT_framebuffer_sRGB = has_ext("GL_EXT_framebuffer_sRGB"); + GLAD_GL_ARB_texture_storage_multisample = has_ext("GL_ARB_texture_storage_multisample"); + GLAD_GL_KHR_blend_equation_advanced_coherent = has_ext("GL_KHR_blend_equation_advanced_coherent"); + GLAD_GL_EXT_vertex_attrib_64bit = has_ext("GL_EXT_vertex_attrib_64bit"); + GLAD_GL_ARB_depth_texture = has_ext("GL_ARB_depth_texture"); + GLAD_GL_NV_shader_buffer_store = has_ext("GL_NV_shader_buffer_store"); + GLAD_GL_OES_query_matrix = has_ext("GL_OES_query_matrix"); + GLAD_GL_MESA_window_pos = has_ext("GL_MESA_window_pos"); + GLAD_GL_NV_fill_rectangle = has_ext("GL_NV_fill_rectangle"); + GLAD_GL_NV_shader_storage_buffer_object = has_ext("GL_NV_shader_storage_buffer_object"); + GLAD_GL_ARB_texture_query_lod = has_ext("GL_ARB_texture_query_lod"); + GLAD_GL_ARB_copy_buffer = has_ext("GL_ARB_copy_buffer"); + GLAD_GL_ARB_shader_image_size = has_ext("GL_ARB_shader_image_size"); + GLAD_GL_NV_shader_atomic_counters = has_ext("GL_NV_shader_atomic_counters"); + GLAD_GL_APPLE_object_purgeable = has_ext("GL_APPLE_object_purgeable"); + GLAD_GL_ARB_occlusion_query = has_ext("GL_ARB_occlusion_query"); + GLAD_GL_INGR_color_clamp = has_ext("GL_INGR_color_clamp"); + GLAD_GL_SGI_color_table = has_ext("GL_SGI_color_table"); + GLAD_GL_NV_gpu_program5_mem_extended = has_ext("GL_NV_gpu_program5_mem_extended"); + GLAD_GL_ARB_texture_cube_map_array = has_ext("GL_ARB_texture_cube_map_array"); + GLAD_GL_SGIX_scalebias_hint = has_ext("GL_SGIX_scalebias_hint"); + GLAD_GL_EXT_gpu_shader4 = has_ext("GL_EXT_gpu_shader4"); + GLAD_GL_NV_geometry_program4 = has_ext("GL_NV_geometry_program4"); + GLAD_GL_EXT_framebuffer_multisample_blit_scaled = has_ext("GL_EXT_framebuffer_multisample_blit_scaled"); + GLAD_GL_AMD_debug_output = has_ext("GL_AMD_debug_output"); + GLAD_GL_ARB_texture_border_clamp = has_ext("GL_ARB_texture_border_clamp"); + GLAD_GL_ARB_fragment_coord_conventions = has_ext("GL_ARB_fragment_coord_conventions"); + GLAD_GL_ARB_multitexture = has_ext("GL_ARB_multitexture"); + GLAD_GL_SGIX_polynomial_ffd = has_ext("GL_SGIX_polynomial_ffd"); + GLAD_GL_EXT_provoking_vertex = has_ext("GL_EXT_provoking_vertex"); + GLAD_GL_ARB_point_parameters = has_ext("GL_ARB_point_parameters"); + GLAD_GL_ARB_shader_image_load_store = has_ext("GL_ARB_shader_image_load_store"); + GLAD_GL_ARB_conditional_render_inverted = has_ext("GL_ARB_conditional_render_inverted"); + GLAD_GL_HP_occlusion_test = has_ext("GL_HP_occlusion_test"); + GLAD_GL_ARB_ES3_compatibility = has_ext("GL_ARB_ES3_compatibility"); + GLAD_GL_ARB_texture_barrier = has_ext("GL_ARB_texture_barrier"); + GLAD_GL_ARB_texture_buffer_object_rgb32 = has_ext("GL_ARB_texture_buffer_object_rgb32"); + GLAD_GL_NV_bindless_multi_draw_indirect = has_ext("GL_NV_bindless_multi_draw_indirect"); + GLAD_GL_SGIX_texture_multi_buffer = has_ext("GL_SGIX_texture_multi_buffer"); + GLAD_GL_EXT_transform_feedback = has_ext("GL_EXT_transform_feedback"); + GLAD_GL_KHR_texture_compression_astc_ldr = has_ext("GL_KHR_texture_compression_astc_ldr"); + GLAD_GL_3DFX_multisample = has_ext("GL_3DFX_multisample"); + GLAD_GL_INTEL_fragment_shader_ordering = has_ext("GL_INTEL_fragment_shader_ordering"); + GLAD_GL_ARB_texture_env_dot3 = has_ext("GL_ARB_texture_env_dot3"); + GLAD_GL_NV_gpu_program4 = has_ext("GL_NV_gpu_program4"); + GLAD_GL_NV_gpu_program5 = has_ext("GL_NV_gpu_program5"); + GLAD_GL_NV_float_buffer = has_ext("GL_NV_float_buffer"); + GLAD_GL_SGIS_texture_edge_clamp = has_ext("GL_SGIS_texture_edge_clamp"); + GLAD_GL_ARB_framebuffer_sRGB = has_ext("GL_ARB_framebuffer_sRGB"); + GLAD_GL_SUN_slice_accum = has_ext("GL_SUN_slice_accum"); + GLAD_GL_EXT_index_texture = has_ext("GL_EXT_index_texture"); + GLAD_GL_EXT_shader_image_load_formatted = has_ext("GL_EXT_shader_image_load_formatted"); + GLAD_GL_ARB_geometry_shader4 = has_ext("GL_ARB_geometry_shader4"); + GLAD_GL_EXT_separate_specular_color = has_ext("GL_EXT_separate_specular_color"); + GLAD_GL_AMD_depth_clamp_separate = has_ext("GL_AMD_depth_clamp_separate"); + GLAD_GL_NV_conservative_raster = has_ext("GL_NV_conservative_raster"); + GLAD_GL_ARB_sparse_texture2 = has_ext("GL_ARB_sparse_texture2"); + GLAD_GL_SGIX_sprite = has_ext("GL_SGIX_sprite"); + GLAD_GL_ARB_get_program_binary = has_ext("GL_ARB_get_program_binary"); + GLAD_GL_AMD_occlusion_query_event = has_ext("GL_AMD_occlusion_query_event"); + GLAD_GL_SGIS_multisample = has_ext("GL_SGIS_multisample"); + GLAD_GL_EXT_framebuffer_object = has_ext("GL_EXT_framebuffer_object"); + GLAD_GL_ARB_robustness_isolation = has_ext("GL_ARB_robustness_isolation"); + GLAD_GL_ARB_vertex_array_bgra = has_ext("GL_ARB_vertex_array_bgra"); + GLAD_GL_APPLE_vertex_array_range = has_ext("GL_APPLE_vertex_array_range"); + GLAD_GL_AMD_query_buffer_object = has_ext("GL_AMD_query_buffer_object"); + GLAD_GL_NV_register_combiners = has_ext("GL_NV_register_combiners"); + GLAD_GL_ARB_draw_buffers = has_ext("GL_ARB_draw_buffers"); + GLAD_GL_ARB_clear_texture = has_ext("GL_ARB_clear_texture"); + GLAD_GL_ARB_debug_output = has_ext("GL_ARB_debug_output"); + GLAD_GL_SGI_color_matrix = has_ext("GL_SGI_color_matrix"); + GLAD_GL_EXT_cull_vertex = has_ext("GL_EXT_cull_vertex"); + GLAD_GL_EXT_texture_sRGB = has_ext("GL_EXT_texture_sRGB"); + GLAD_GL_APPLE_row_bytes = has_ext("GL_APPLE_row_bytes"); + GLAD_GL_NV_texgen_reflection = has_ext("GL_NV_texgen_reflection"); + GLAD_GL_IBM_multimode_draw_arrays = has_ext("GL_IBM_multimode_draw_arrays"); + GLAD_GL_APPLE_vertex_array_object = has_ext("GL_APPLE_vertex_array_object"); + GLAD_GL_3DFX_texture_compression_FXT1 = has_ext("GL_3DFX_texture_compression_FXT1"); + GLAD_GL_NV_fragment_shader_interlock = has_ext("GL_NV_fragment_shader_interlock"); + GLAD_GL_AMD_conservative_depth = has_ext("GL_AMD_conservative_depth"); + GLAD_GL_ARB_texture_float = has_ext("GL_ARB_texture_float"); + GLAD_GL_ARB_compressed_texture_pixel_storage = has_ext("GL_ARB_compressed_texture_pixel_storage"); + GLAD_GL_SGIS_detail_texture = has_ext("GL_SGIS_detail_texture"); + GLAD_GL_ARB_draw_instanced = has_ext("GL_ARB_draw_instanced"); + GLAD_GL_OES_read_format = has_ext("GL_OES_read_format"); + GLAD_GL_ATI_texture_float = has_ext("GL_ATI_texture_float"); + GLAD_GL_ARB_texture_gather = has_ext("GL_ARB_texture_gather"); + GLAD_GL_AMD_vertex_shader_layer = has_ext("GL_AMD_vertex_shader_layer"); + GLAD_GL_ARB_shading_language_include = has_ext("GL_ARB_shading_language_include"); + GLAD_GL_APPLE_client_storage = has_ext("GL_APPLE_client_storage"); + GLAD_GL_WIN_phong_shading = has_ext("GL_WIN_phong_shading"); + GLAD_GL_INGR_blend_func_separate = has_ext("GL_INGR_blend_func_separate"); + GLAD_GL_NV_path_rendering = has_ext("GL_NV_path_rendering"); + GLAD_GL_NV_conservative_raster_dilate = has_ext("GL_NV_conservative_raster_dilate"); + GLAD_GL_ATI_vertex_streams = has_ext("GL_ATI_vertex_streams"); + GLAD_GL_ARB_post_depth_coverage = has_ext("GL_ARB_post_depth_coverage"); + GLAD_GL_ARB_texture_non_power_of_two = has_ext("GL_ARB_texture_non_power_of_two"); + GLAD_GL_APPLE_rgb_422 = has_ext("GL_APPLE_rgb_422"); + GLAD_GL_EXT_texture_lod_bias = has_ext("GL_EXT_texture_lod_bias"); + GLAD_GL_ARB_gpu_shader_int64 = has_ext("GL_ARB_gpu_shader_int64"); + GLAD_GL_ARB_seamless_cube_map = has_ext("GL_ARB_seamless_cube_map"); + GLAD_GL_ARB_shader_group_vote = has_ext("GL_ARB_shader_group_vote"); + GLAD_GL_NV_vdpau_interop = has_ext("GL_NV_vdpau_interop"); + GLAD_GL_ARB_occlusion_query2 = has_ext("GL_ARB_occlusion_query2"); + GLAD_GL_ARB_internalformat_query2 = has_ext("GL_ARB_internalformat_query2"); + GLAD_GL_EXT_texture_filter_anisotropic = has_ext("GL_EXT_texture_filter_anisotropic"); + GLAD_GL_SUN_vertex = has_ext("GL_SUN_vertex"); + GLAD_GL_SGIX_igloo_interface = has_ext("GL_SGIX_igloo_interface"); + GLAD_GL_SGIS_texture_lod = has_ext("GL_SGIS_texture_lod"); + GLAD_GL_NV_vertex_program3 = has_ext("GL_NV_vertex_program3"); + GLAD_GL_ARB_draw_indirect = has_ext("GL_ARB_draw_indirect"); + GLAD_GL_NV_vertex_program4 = has_ext("GL_NV_vertex_program4"); + GLAD_GL_AMD_transform_feedback3_lines_triangles = has_ext("GL_AMD_transform_feedback3_lines_triangles"); + GLAD_GL_SGIS_fog_function = has_ext("GL_SGIS_fog_function"); + GLAD_GL_EXT_x11_sync_object = has_ext("GL_EXT_x11_sync_object"); + GLAD_GL_ARB_sync = has_ext("GL_ARB_sync"); + GLAD_GL_NV_sample_locations = has_ext("GL_NV_sample_locations"); + GLAD_GL_ARB_compute_variable_group_size = has_ext("GL_ARB_compute_variable_group_size"); + GLAD_GL_OES_fixed_point = has_ext("GL_OES_fixed_point"); + GLAD_GL_NV_blend_square = has_ext("GL_NV_blend_square"); + GLAD_GL_EXT_framebuffer_multisample = has_ext("GL_EXT_framebuffer_multisample"); + GLAD_GL_ARB_gpu_shader5 = has_ext("GL_ARB_gpu_shader5"); + GLAD_GL_SGIS_texture4D = has_ext("GL_SGIS_texture4D"); + GLAD_GL_EXT_texture3D = has_ext("GL_EXT_texture3D"); + GLAD_GL_EXT_multisample = has_ext("GL_EXT_multisample"); + GLAD_GL_EXT_secondary_color = has_ext("GL_EXT_secondary_color"); + GLAD_GL_ARB_texture_filter_minmax = has_ext("GL_ARB_texture_filter_minmax"); + GLAD_GL_ATI_vertex_array_object = has_ext("GL_ATI_vertex_array_object"); + GLAD_GL_ARB_parallel_shader_compile = has_ext("GL_ARB_parallel_shader_compile"); + GLAD_GL_NVX_gpu_memory_info = has_ext("GL_NVX_gpu_memory_info"); + GLAD_GL_ARB_sparse_texture = has_ext("GL_ARB_sparse_texture"); + GLAD_GL_SGIS_point_line_texgen = has_ext("GL_SGIS_point_line_texgen"); + GLAD_GL_ARB_sample_locations = has_ext("GL_ARB_sample_locations"); + GLAD_GL_ARB_sparse_buffer = has_ext("GL_ARB_sparse_buffer"); + GLAD_GL_EXT_draw_range_elements = has_ext("GL_EXT_draw_range_elements"); + GLAD_GL_SGIX_blend_alpha_minmax = has_ext("GL_SGIX_blend_alpha_minmax"); + GLAD_GL_KHR_context_flush_control = has_ext("GL_KHR_context_flush_control"); + 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; + if (GLVersion.major > 3 || (GLVersion.major >= 3 && GLVersion.minor >= 3)) { + max_loaded_major = 3; + max_loaded_minor = 3; + } +} + +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); + + if (!find_extensionsGL()) return 0; + load_GL_APPLE_element_array(load); + load_GL_AMD_multi_draw_indirect(load); + load_GL_SGIX_tag_sample_buffer(load); + load_GL_NV_point_sprite(load); + load_GL_ATI_separate_stencil(load); + load_GL_EXT_texture_buffer_object(load); + load_GL_ARB_vertex_blend(load); + load_GL_OVR_multiview(load); + load_GL_ARB_program_interface_query(load); + load_GL_EXT_index_func(load); + load_GL_NV_shader_buffer_load(load); + load_GL_EXT_color_subtable(load); + load_GL_SUNX_constant_data(load); + load_GL_EXT_multi_draw_arrays(load); + load_GL_ARB_shader_atomic_counters(load); + load_GL_NV_conditional_render(load); + load_GL_MESA_resize_buffers(load); + load_GL_ARB_texture_view(load); + load_GL_ARB_map_buffer_range(load); + load_GL_EXT_convolution(load); + load_GL_NV_vertex_attrib_integer_64bit(load); + load_GL_EXT_paletted_texture(load); + load_GL_ARB_texture_buffer_object(load); + load_GL_ATI_pn_triangles(load); + load_GL_SGIX_flush_raster(load); + load_GL_EXT_light_texture(load); + load_GL_HP_image_transform(load); + load_GL_AMD_draw_buffers_blend(load); + load_GL_APPLE_texture_range(load); + load_GL_EXT_texture_array(load); + load_GL_NV_texture_barrier(load); + load_GL_ARB_vertex_type_2_10_10_10_rev(load); + load_GL_3DFX_tbuffer(load); + load_GL_GREMEDY_frame_terminator(load); + load_GL_ARB_blend_func_extended(load); + load_GL_EXT_separate_shader_objects(load); + load_GL_NV_texture_multisample(load); + load_GL_ARB_shader_objects(load); + load_GL_ARB_framebuffer_object(load); + load_GL_ATI_envmap_bumpmap(load); + load_GL_ATI_map_object_buffer(load); + load_GL_ARB_robustness(load); + load_GL_NV_pixel_data_range(load); + load_GL_EXT_framebuffer_blit(load); + load_GL_ARB_gpu_shader_fp64(load); + load_GL_NV_command_list(load); + load_GL_EXT_vertex_weighting(load); + load_GL_GREMEDY_string_marker(load); + load_GL_EXT_subtexture(load); + load_GL_EXT_gpu_program_parameters(load); + load_GL_NV_evaluators(load); + load_GL_SGIS_texture_filter4(load); + load_GL_AMD_performance_monitor(load); + load_GL_EXT_stencil_clear_tag(load); + load_GL_NV_present_video(load); + load_GL_SGIX_framezoom(load); + load_GL_ARB_draw_elements_base_vertex(load); + load_GL_NV_transform_feedback(load); + load_GL_NV_fragment_program(load); + load_GL_AMD_stencil_operation_extended(load); + load_GL_ARB_instanced_arrays(load); + load_GL_EXT_polygon_offset(load); + load_GL_KHR_robustness(load); + load_GL_AMD_sparse_texture(load); + load_GL_ARB_clip_control(load); + load_GL_NV_fragment_coverage_to_color(load); + load_GL_NV_fence(load); + load_GL_ARB_texture_buffer_range(load); + load_GL_SUN_mesh_array(load); + load_GL_ARB_vertex_attrib_binding(load); + load_GL_ARB_framebuffer_no_attachments(load); + load_GL_ARB_cl_event(load); + load_GL_OES_single_precision(load); + load_GL_NV_primitive_restart(load); + load_GL_SUN_global_alpha(load); + load_GL_EXT_texture_object(load); + load_GL_AMD_name_gen_delete(load); + load_GL_ARB_buffer_storage(load); + load_GL_APPLE_vertex_program_evaluators(load); + load_GL_ARB_multi_bind(load); + load_GL_SGIX_list_priority(load); + load_GL_NV_vertex_buffer_unified_memory(load); + load_GL_NV_blend_equation_advanced(load); + load_GL_SGIS_sharpen_texture(load); + load_GL_ARB_vertex_program(load); + load_GL_ARB_vertex_buffer_object(load); + load_GL_NV_vertex_array_range(load); + load_GL_SGIX_fragment_lighting(load); + load_GL_NV_framebuffer_multisample_coverage(load); + load_GL_EXT_timer_query(load); + load_GL_NV_bindless_texture(load); + load_GL_KHR_debug(load); + load_GL_ATI_vertex_attrib_array_object(load); + load_GL_EXT_geometry_shader4(load); + load_GL_EXT_bindable_uniform(load); + load_GL_KHR_blend_equation_advanced(load); + load_GL_ATI_element_array(load); + load_GL_SGIX_reference_plane(load); + load_GL_EXT_stencil_two_side(load); + load_GL_NV_explicit_multisample(load); + load_GL_IBM_static_data(load); + load_GL_EXT_texture_perturb_normal(load); + load_GL_EXT_point_parameters(load); + load_GL_PGI_misc_hints(load); + load_GL_ARB_vertex_shader(load); + load_GL_ARB_tessellation_shader(load); + load_GL_EXT_draw_buffers2(load); + load_GL_ARB_vertex_attrib_64bit(load); + load_GL_EXT_texture_filter_minmax(load); + load_GL_AMD_interleaved_elements(load); + load_GL_ARB_fragment_program(load); + load_GL_ARB_texture_storage(load); + load_GL_ARB_copy_image(load); + load_GL_SGIS_pixel_texture(load); + load_GL_SGIX_instruments(load); + load_GL_ARB_shader_storage_buffer_object(load); + load_GL_EXT_blend_minmax(load); + load_GL_ARB_base_instance(load); + load_GL_ARB_ES3_1_compatibility(load); + load_GL_EXT_texture_integer(load); + load_GL_ARB_texture_multisample(load); + load_GL_AMD_gpu_shader_int64(load); + load_GL_AMD_vertex_shader_tessellator(load); + load_GL_ARB_invalidate_subdata(load); + load_GL_EXT_index_material(load); + load_GL_INTEL_parallel_arrays(load); + load_GL_ATI_draw_buffers(load); + load_GL_SGIX_pixel_texture(load); + load_GL_ARB_timer_query(load); + load_GL_NV_parameter_buffer_object(load); + load_GL_ARB_direct_state_access(load); + load_GL_ARB_uniform_buffer_object(load); + load_GL_NV_transform_feedback2(load); + load_GL_EXT_blend_color(load); + load_GL_EXT_histogram(load); + load_GL_ARB_get_texture_sub_image(load); + load_GL_SGIS_point_parameters(load); + load_GL_EXT_direct_state_access(load); + load_GL_AMD_sample_positions(load); + load_GL_NV_vertex_program(load); + load_GL_EXT_vertex_shader(load); + load_GL_EXT_blend_func_separate(load); + load_GL_APPLE_fence(load); + load_GL_OES_byte_coordinates(load); + load_GL_ARB_transpose_matrix(load); + load_GL_ARB_provoking_vertex(load); + load_GL_EXT_fog_coord(load); + load_GL_EXT_vertex_array(load); + load_GL_EXT_blend_equation_separate(load); + load_GL_NV_framebuffer_mixed_samples(load); + load_GL_NVX_conditional_render(load); + load_GL_ARB_multi_draw_indirect(load); + load_GL_EXT_raster_multisample(load); + load_GL_NV_copy_image(load); + load_GL_INTEL_framebuffer_CMAA(load); + load_GL_ARB_transform_feedback2(load); + load_GL_ARB_transform_feedback3(load); + load_GL_EXT_debug_marker(load); + load_GL_EXT_pixel_transform(load); + load_GL_ATI_fragment_shader(load); + load_GL_ARB_vertex_array_object(load); + load_GL_SUN_triangle_list(load); + load_GL_ARB_transform_feedback_instanced(load); + load_GL_SGIX_async(load); + load_GL_INTEL_performance_query(load); + load_GL_NV_gpu_shader5(load); + load_GL_NV_bindless_multi_draw_indirect_count(load); + load_GL_ARB_ES2_compatibility(load); + load_GL_ARB_indirect_parameters(load); + load_GL_NV_half_float(load); + load_GL_ARB_ES3_2_compatibility(load); + load_GL_EXT_polygon_offset_clamp(load); + load_GL_EXT_compiled_vertex_array(load); + load_GL_NV_depth_buffer_float(load); + load_GL_NV_occlusion_query(load); + load_GL_APPLE_flush_buffer_range(load); + load_GL_ARB_imaging(load); + load_GL_ARB_draw_buffers_blend(load); + load_GL_ARB_clear_buffer_object(load); + load_GL_ARB_multisample(load); + load_GL_EXT_debug_label(load); + load_GL_ARB_sample_shading(load); + load_GL_NV_internalformat_sample_query(load); + load_GL_INTEL_map_texture(load); + load_GL_ARB_compute_shader(load); + load_GL_IBM_vertex_array_lists(load); + load_GL_ARB_color_buffer_float(load); + load_GL_ARB_bindless_texture(load); + load_GL_ARB_window_pos(load); + load_GL_ARB_internalformat_query(load); + load_GL_EXT_shader_image_load_store(load); + load_GL_EXT_copy_texture(load); + load_GL_NV_register_combiners2(load); + load_GL_NV_draw_texture(load); + load_GL_EXT_draw_instanced(load); + load_GL_ARB_viewport_array(load); + load_GL_ARB_separate_shader_objects(load); + load_GL_EXT_depth_bounds_test(load); + load_GL_NV_video_capture(load); + load_GL_ARB_sampler_objects(load); + load_GL_ARB_matrix_palette(load); + load_GL_SGIS_texture_color_mask(load); + load_GL_EXT_coordinate_frame(load); + load_GL_ARB_texture_compression(load); + load_GL_ARB_shader_subroutine(load); + load_GL_ARB_texture_storage_multisample(load); + load_GL_EXT_vertex_attrib_64bit(load); + load_GL_OES_query_matrix(load); + load_GL_MESA_window_pos(load); + load_GL_ARB_copy_buffer(load); + load_GL_APPLE_object_purgeable(load); + load_GL_ARB_occlusion_query(load); + load_GL_SGI_color_table(load); + load_GL_EXT_gpu_shader4(load); + load_GL_NV_geometry_program4(load); + load_GL_AMD_debug_output(load); + load_GL_ARB_multitexture(load); + load_GL_SGIX_polynomial_ffd(load); + load_GL_EXT_provoking_vertex(load); + load_GL_ARB_point_parameters(load); + load_GL_ARB_shader_image_load_store(load); + load_GL_ARB_texture_barrier(load); + load_GL_NV_bindless_multi_draw_indirect(load); + load_GL_EXT_transform_feedback(load); + load_GL_NV_gpu_program4(load); + load_GL_NV_gpu_program5(load); + load_GL_ARB_geometry_shader4(load); + load_GL_NV_conservative_raster(load); + load_GL_SGIX_sprite(load); + load_GL_ARB_get_program_binary(load); + load_GL_AMD_occlusion_query_event(load); + load_GL_SGIS_multisample(load); + load_GL_EXT_framebuffer_object(load); + load_GL_APPLE_vertex_array_range(load); + load_GL_NV_register_combiners(load); + load_GL_ARB_draw_buffers(load); + load_GL_ARB_clear_texture(load); + load_GL_ARB_debug_output(load); + load_GL_EXT_cull_vertex(load); + load_GL_IBM_multimode_draw_arrays(load); + load_GL_APPLE_vertex_array_object(load); + load_GL_SGIS_detail_texture(load); + load_GL_ARB_draw_instanced(load); + load_GL_ARB_shading_language_include(load); + load_GL_INGR_blend_func_separate(load); + load_GL_NV_path_rendering(load); + load_GL_NV_conservative_raster_dilate(load); + load_GL_ATI_vertex_streams(load); + load_GL_ARB_gpu_shader_int64(load); + load_GL_NV_vdpau_interop(load); + load_GL_ARB_internalformat_query2(load); + load_GL_SUN_vertex(load); + load_GL_SGIX_igloo_interface(load); + load_GL_ARB_draw_indirect(load); + load_GL_NV_vertex_program4(load); + load_GL_SGIS_fog_function(load); + load_GL_EXT_x11_sync_object(load); + load_GL_ARB_sync(load); + load_GL_NV_sample_locations(load); + load_GL_ARB_compute_variable_group_size(load); + load_GL_OES_fixed_point(load); + load_GL_EXT_framebuffer_multisample(load); + load_GL_SGIS_texture4D(load); + load_GL_EXT_texture3D(load); + load_GL_EXT_multisample(load); + load_GL_EXT_secondary_color(load); + load_GL_ATI_vertex_array_object(load); + load_GL_ARB_parallel_shader_compile(load); + load_GL_ARB_sparse_texture(load); + load_GL_ARB_sample_locations(load); + load_GL_ARB_sparse_buffer(load); + load_GL_EXT_draw_range_elements(load); + return GLVersion.major != 0 || GLVersion.minor != 0; +} + +#endif // GLAD_IMPLEMENTATION diff --git a/examples/oculus_glfw_sample/oculus_glfw_sample.c b/examples/oculus_glfw_sample/oculus_glfw_sample.c index b1fabbe97..5166bac64 100644 --- a/examples/oculus_glfw_sample/oculus_glfw_sample.c +++ b/examples/oculus_glfw_sample/oculus_glfw_sample.c @@ -4,11 +4,11 @@ * * NOTE: This example requires raylib module [rlgl] * -* Compile rlgl using: +* Compile rlgl module using: * gcc -c rlgl.c -Wall -std=c99 -DRLGL_STANDALONE -DRAYMATH_IMPLEMENTATION -DGRAPHICS_API_OPENGL_33 * * Compile example using: -* gcc -o oculus_glfw_sample.exe oculus_glfw_sample.c rlgl.o glad.o -L. -lLibOVRRT32_1 -lglfw3 -lopengl32 -lgdi32 -std=c99 +* gcc -o oculus_glfw_sample.exe oculus_glfw_sample.c rlgl.o -L. -lLibOVRRT32_1 -lglfw3 -lopengl32 -lgdi32 -std=c99 * * This example has been created using raylib 1.5 (www.raylib.com) * raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) @@ -21,72 +21,103 @@ #include #include #include +#include +#define GLAD_IMPLEMENTATION #include "glad.h" // Extensions loading library #include // Windows/Context and inputs management -#include "OculusSDK/LibOVR/Include/OVR_CAPI_GL.h" // Oculus SDK for OpenGL - #define RLGL_STANDALONE #include "rlgl.h" +//#define PLATFORM_OCULUS + +#if defined(PLATFORM_OCULUS) + #include "OculusSDK/LibOVR/Include/OVR_CAPI_GL.h" // Oculus SDK for OpenGL +#endif + +#if defined(PLATFORM_OCULUS) // OVR device variables ovrSession session; ovrHmdDesc hmdDesc; ovrGraphicsLuid luid; +#endif -// OVR OpenGL required variables -GLuint fbo = 0; -GLuint depthBuffer = 0; -ovrTextureSwapChain eyeTexture; +unsigned int frameIndex = 0; -GLuint mirrorFbo = 0; -ovrMirrorTexture mirrorTexture; -ovrEyeRenderDesc eyeRenderDescs[2]; -Matrix eyeProjections[2]; - -ovrLayerEyeFov eyeLayer; -ovrViewScaleDesc viewScaleDesc; - -Vector2 renderTargetSize = { 0, 0 }; -Vector2 mirrorSize; -unsigned int frame = 0; - -// GLFW variables -GLFWwindow *window = NULL; +#define RED (Color){ 230, 41, 55, 255 } // Red +#define MAROON (Color){ 190, 33, 55, 255 } // Maroon +#define RAYWHITE (Color){ 245, 245, 245, 255 } // My own White (raylib logo) +#define DARKGRAY (Color){ 80, 80, 80, 255 } // Dark Gray //---------------------------------------------------------------------------------- // Types and Structures Definition //---------------------------------------------------------------------------------- +#if defined(PLATFORM_OCULUS) +typedef struct OculusBuffer { + ovrTextureSwapChain textureChain; + GLuint depthId; + GLuint fboId; + int width; + int height; +} OculusBuffer; + +typedef struct OculusMirror { + ovrMirrorTexture texture; + GLuint fboId; + int width; + int height; +} OculusMirror; + +typedef struct OculusLayer { + ovrViewScaleDesc viewScaleDesc; + ovrLayerEyeFov eyeLayer; // layer 0 + //ovrLayerQuad quadLayer; // layer 1 + Matrix eyeProjections[2]; + int width; + int height; +} OculusLayer; +#endif + typedef enum { LOG_INFO = 0, LOG_ERROR, LOG_WARNING, LOG_DEBUG, LOG_OTHER } TraceLogType; //---------------------------------------------------------------------------------- // Module specific Functions Declaration //---------------------------------------------------------------------------------- -static void ErrorCallback(int error, const char* description) -{ - fputs(description, stderr); -} - -static void KeyCallback(GLFWwindow* window, int key, int scancode, int action, int mods) -{ - if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) - { - glfwSetWindowShouldClose(window, GL_TRUE); - } -} - -static void DrawRectangleV(Vector2 position, Vector2 size, Color color); +static void ErrorCallback(int error, const char* description); +static void KeyCallback(GLFWwindow* window, int key, int scancode, int action, int mods); static void TraceLog(int msgType, const char *text, ...); + +// Drawing functions (uses rlgl functionality) +static void DrawGrid(int slices, float spacing); +static void DrawCube(Vector3 position, float width, float height, float length, Color color); +static void DrawCubeWires(Vector3 position, float width, float height, float length, Color color); +static void DrawRectangleV(Vector2 position, Vector2 size, Color color); + +#if defined(PLATFORM_OCULUS) +// Oculus Rift functions static Matrix FromOvrMatrix(ovrMatrix4f ovrM); -void DrawGrid(int slices, float spacing); -void DrawCube(Vector3 position, float width, float height, float length, Color color); +static OculusBuffer LoadOculusBuffer(ovrSession session, int width, int height); +static void UnloadOculusBuffer(ovrSession session, OculusBuffer buffer); +static void SetOculusBuffer(ovrSession session, OculusBuffer buffer); +static void UnsetOculusBuffer(OculusBuffer buffer); +static OculusMirror LoadOculusMirror(ovrSession session, int width, int height); // Load Oculus mirror buffers +static void UnloadOculusMirror(ovrSession session, OculusMirror mirror); // Unload Oculus mirror buffers +static void BlitOculusMirror(ovrSession session, OculusMirror mirror); +static OculusLayer InitOculusLayer(ovrSession session); +#endif //---------------------------------------------------------------------------------- // Main Entry point //---------------------------------------------------------------------------------- -int main() +int main(void) { + // Initialization + //-------------------------------------------------------------------------------------- + int screenWidth = 1080; + int screenHeight = 600; + +#if defined(PLATFORM_OCULUS) ovrResult result = ovr_Initialize(NULL); if (OVR_FAILURE(result)) TraceLog(LOG_ERROR, "OVR: Could not initialize Oculus device"); @@ -106,37 +137,14 @@ int main() TraceLog(LOG_INFO, "OVR: Serian Number: %s", hmdDesc.SerialNumber); TraceLog(LOG_INFO, "OVR: Resolution: %ix%i", hmdDesc.Resolution.w, hmdDesc.Resolution.h); - - viewScaleDesc.HmdSpaceToWorldScaleInMeters = 1.0f; - memset(&eyeLayer, 0, sizeof(ovrLayerEyeFov)); - eyeLayer.Header.Type = ovrLayerType_EyeFov; - eyeLayer.Header.Flags = ovrLayerFlag_TextureOriginAtBottomLeft; - - for (int eye = 0; eye < 2; eye++) - { - eyeRenderDescs[eye] = ovr_GetRenderDesc(session, eye, hmdDesc.DefaultEyeFov[eye]); - ovrMatrix4f ovrPerspectiveProjection = ovrMatrix4f_Projection(eyeRenderDescs[eye].Fov, 0.01f, 1000.0f, ovrProjection_ClipRangeOpenGL); - // NOTE struct ovrMatrix4f { float M[4][4] } - eyeProjections[eye] = FromOvrMatrix(ovrPerspectiveProjection); - viewScaleDesc.HmdToEyeOffset[eye] = eyeRenderDescs[eye].HmdToEyeOffset; - - eyeLayer.Fov[eye] = eyeRenderDescs[eye].Fov; - ovrSizei eyeSize = ovr_GetFovTextureSize(session, eye, eyeLayer.Fov[eye], 1.0f); - eyeLayer.Viewport[eye].Size = eyeSize; - eyeLayer.Viewport[eye].Pos.x = renderTargetSize.x; - eyeLayer.Viewport[eye].Pos.y = 0; - - renderTargetSize.y = eyeSize.h; //std::max(renderTargetSize.y, (uint32_t)eyeSize.h); - renderTargetSize.x += eyeSize.w; - } - - // Make the on screen window 1/2 the resolution of the device - mirrorSize.x = hmdDesc.Resolution.w/2; - mirrorSize.y = hmdDesc.Resolution.h/2; - + screenWidth = hmdDesc.Resolution.w/2; + screenHeight = hmdDesc.Resolution.h/2; +#endif // GLFW3 Initialization + OpenGL 3.3 Context + Extensions //-------------------------------------------------------- + glfwSetErrorCallback(ErrorCallback); + if (!glfwInit()) { TraceLog(LOG_WARNING, "GLFW3: Can not initialize GLFW"); @@ -149,9 +157,8 @@ int main() glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); glfwWindowHint(GLFW_OPENGL_DEBUG_CONTEXT, GL_TRUE); - //glfwWindowHint(GLFW_DECORATED, GL_FALSE); // Mandatory on Oculus Rift to avoid program crash? --> NO - window = glfwCreateWindow(mirrorSize.x, mirrorSize.y, "raylib oculus sample", NULL, NULL); + GLFWwindow *window = glfwCreateWindow(screenWidth, screenHeight, "raylib oculus sample", NULL, NULL); if (!window) { @@ -160,146 +167,129 @@ int main() } else TraceLog(LOG_INFO, "GLFW3: Window created successfully"); - glfwSetErrorCallback(ErrorCallback); glfwSetKeyCallback(window, KeyCallback); glfwMakeContextCurrent(window); glfwSwapInterval(0); + // Load OpenGL 3.3 extensions if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) { TraceLog(LOG_WARNING, "GLAD: Cannot load OpenGL extensions"); exit(1); } else TraceLog(LOG_INFO, "GLAD: OpenGL extensions loaded successfully"); + //-------------------------------------------------------- - // Initialize OVR OpenGL swap chain textures - ovrTextureSwapChainDesc desc = {}; - desc.Type = ovrTexture_2D; - desc.ArraySize = 1; - desc.Width = renderTargetSize.x; - desc.Height = renderTargetSize.y; - desc.MipLevels = 1; - desc.Format = OVR_FORMAT_R8G8B8A8_UNORM_SRGB; - desc.SampleCount = 1; - desc.StaticImage = ovrFalse; - - result = ovr_CreateTextureSwapChainGL(session, &desc, &eyeTexture); - eyeLayer.ColorTexture[0] = eyeTexture; - - if (!OVR_SUCCESS(result)) TraceLog(LOG_WARNING, "Failed to create swap textures"); - - int length = 0; - result = ovr_GetTextureSwapChainLength(session, eyeTexture, &length); - - if (!OVR_SUCCESS(result) || !length) TraceLog(LOG_WARNING, "Unable to count swap chain textures"); - - for (int i = 0; i < length; ++i) - { - GLuint chainTexId; - ovr_GetTextureSwapChainBufferGL(session, eyeTexture, i, &chainTexId); - glBindTexture(GL_TEXTURE_2D, chainTexId); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - } - - glBindTexture(GL_TEXTURE_2D, 0); - - // Setup framebuffer object - glGenFramebuffers(1, &fbo); - glGenRenderbuffers(1, &depthBuffer); - glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbo); - glBindRenderbuffer(GL_RENDERBUFFER, depthBuffer); - glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, renderTargetSize.x, renderTargetSize.y); - glBindRenderbuffer(GL_RENDERBUFFER, 0); - glFramebufferRenderbuffer(GL_DRAW_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthBuffer); - glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); - - // Setup mirror texture - ovrMirrorTextureDesc mirrorDesc; - memset(&mirrorDesc, 0, sizeof(mirrorDesc)); - mirrorDesc.Format = OVR_FORMAT_R8G8B8A8_UNORM_SRGB; - mirrorDesc.Width = mirrorSize.x; - mirrorDesc.Height = mirrorSize.y; - - if (!OVR_SUCCESS(ovr_CreateMirrorTextureGL(session, &mirrorDesc, &mirrorTexture))) TraceLog(LOG_WARNING, "Could not create mirror texture"); - - glGenFramebuffers(1, &mirrorFbo); +#if defined(PLATFORM_OCULUS) + // Initialize Oculus Buffers + OculusLayer layer = InitOculusLayer(session); + OculusBuffer buffer = LoadOculusBuffer(session, layer.width, layer.height); + OculusMirror mirror = LoadOculusMirror(session, hmdDesc.Resolution.w/2, hmdDesc.Resolution.h/2); + layer.eyeLayer.ColorTexture[0] = buffer.textureChain; //SetOculusLayerTexture(eyeLayer, buffer.textureChain); // Recenter OVR tracking origin ovr_RecenterTrackingOrigin(session); - +#endif + // Initialize rlgl internal buffers and OpenGL state rlglInit(); - rlglInitGraphics(0, 0, mirrorSize.x, mirrorSize.y); - rlClearColor(245, 245, 245, 255); // Define clear color - glEnable(GL_DEPTH_TEST); + rlglInitGraphics(0, 0, screenWidth, screenHeight); + rlClearColor(245, 245, 245, 255); // Define clear color + rlEnableDepthTest(); // Enable DEPTH_TEST for 3D - Vector2 position = { mirrorSize.x/2 - 100, mirrorSize.y/2 - 100 }; Vector2 size = { 200, 200 }; - Color color = { 180, 20, 20, 255 }; Vector3 cubePosition = { 0.0f, 0.0f, 0.0f }; + + Camera camera; + camera.position = (Vector3){ 5.0f, 5.0f, 5.0f }; // Camera position + camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; // Camera looking at point + camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) + camera.fovy = 45.0f; // Camera field-of-view Y + //-------------------------------------------------------------------------------------- + // Main game loop while (!glfwWindowShouldClose(window)) { // Update //---------------------------------------------------------------------------------- - frame++; +#if defined(PLATFORM_OCULUS) + frameIndex++; ovrPosef eyePoses[2]; - ovr_GetEyePoses(session, frame, ovrTrue, viewScaleDesc.HmdToEyeOffset, eyePoses, &eyeLayer.SensorSampleTime); + ovr_GetEyePoses(session, frameIndex, ovrTrue, layer.viewScaleDesc.HmdToEyeOffset, eyePoses, &layer.eyeLayer.SensorSampleTime); + + layer.eyeLayer.RenderPose[0] = eyePoses[0]; + layer.eyeLayer.RenderPose[1] = eyePoses[1]; +#endif //---------------------------------------------------------------------------------- // Draw //---------------------------------------------------------------------------------- - int curIndex; - ovr_GetTextureSwapChainCurrentIndex(session, eyeTexture, &curIndex); - GLuint curTexId; - ovr_GetTextureSwapChainBufferGL(session, eyeTexture, curIndex, &curTexId); - glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbo); - glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, curTexId, 0); - - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - +#if defined(PLATFORM_OCULUS) + SetOculusBuffer(session, buffer); +#endif + + rlClearScreenBuffers(); // Clear current framebuffers + +#if defined(PLATFORM_OCULUS) for (int eye = 0; eye < 2; eye++) { - glViewport(eyeLayer.Viewport[eye].Pos.x, eyeLayer.Viewport[eye].Pos.y, - eyeLayer.Viewport[eye].Size.w, eyeLayer.Viewport[eye].Size.h); - eyeLayer.RenderPose[eye] = eyePoses[eye]; - - // Convert struct ovrPosef { ovrQuatf Orientation; ovrVector3f Position; } to Matrix - // TODO: Review maths! - Matrix eyeOrientation = QuaternionToMatrix((Quaternion){ -eyePoses[eye].Orientation.x, -eyePoses[eye].Orientation.y, -eyePoses[eye].Orientation.z, -eyePoses[eye].Orientation.w }); - Matrix eyePosition = MatrixTranslate(-eyePoses[eye].Position.x, -eyePoses[eye].Position.y, -eyePoses[eye].Position.z); - Matrix mvp = MatrixMultiply(eyeProjections[eye], MatrixMultiply(eyeOrientation, eyePosition)); + glViewport(layer.eyeLayer.Viewport[eye].Pos.x, layer.eyeLayer.Viewport[eye].Pos.y, layer.eyeLayer.Viewport[eye].Size.w, layer.eyeLayer.Viewport[eye].Size.h); - // NOTE: Nothing is drawn until rlglDraw() - DrawRectangleV(position, size, color); - //DrawCube(cubePosition, 2.0f, 2.0f, 2.0f, color); - //DrawGrid(10, 1.0f); - - // NOTE: rlglDraw() must be modified to support an external modelview-projection matrix - // TODO: Still working on it (now uses internal mvp) + Quaternion eyeRPose = (Quaternion){ eyePoses[eye].Orientation.x, eyePoses[eye].Orientation.y, eyePoses[eye].Orientation.z, eyePoses[eye].Orientation.w }; + QuaternionInvert(&eyeRPose); + Matrix eyeOrientation = QuaternionToMatrix(eyeRPose); + Matrix eyeTranslation = MatrixTranslate(-eyePoses[eye].Position.x, -eyePoses[eye].Position.y, -eyePoses[eye].Position.z); + + Matrix eyeView = MatrixMultiply(eyeTranslation, eyeOrientation); + Matrix modelview = MatrixMultiply(matView, eyeView); + Matrix mvp = MatrixMultiply(modelview, layer.eyeProjections[eye]); +#else + // Calculate projection matrix (from perspective) and view matrix from camera look at + Matrix matProj = MatrixPerspective(camera.fovy, (double)screenWidth/(double)screenHeight, 0.01, 1000.0); + MatrixTranspose(&matProj); + Matrix matView = MatrixLookAt(camera.position, camera.target, camera.up); + Matrix mvp = MatrixMultiply(matView, matProj); +#endif + DrawCube(cubePosition, 2.0f, 2.0f, 2.0f, RED); + DrawCubeWires(cubePosition, 2.0f, 2.0f, 2.0f, RAYWHITE); + DrawGrid(10, 1.0f); + + // NOTE: Internal buffers drawing (3D data) rlglDraw(mvp); + + matProj = MatrixOrtho(0.0, screenWidth, screenHeight, 0.0, 0.0, 1.0); + MatrixTranspose(&matProj); + matView = MatrixIdentity(); + mvp = MatrixMultiply(matView, matProj); + + // TODO: 2D drawing on Oculus Rift: requires an ovrLayerQuad layer + DrawRectangleV((Vector2){ 10.0f, 10.0f }, (Vector2){ 300.0f, 20.0f }, DARKGRAY); + + // NOTE: Internal buffers drawing (2D data) + rlglDraw(mvp); + +#if defined(PLATFORM_OCULUS) } - glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 0, 0); - glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); - ovr_CommitTextureSwapChain(session, eyeTexture); - ovrLayerHeader *headerList = &eyeLayer.Header; - ovr_SubmitFrame(session, frame, &viewScaleDesc, &headerList, 1); + UnsetOculusBuffer(buffer); + + ovr_CommitTextureSwapChain(session, buffer.textureChain); + + ovrLayerHeader *layers = &layer.eyeLayer.Header; + ovr_SubmitFrame(session, frameIndex, &layer.viewScaleDesc, &layers, 1); // Blit mirror texture to back buffer - GLuint mirrorTextureId; - ovr_GetMirrorTextureBufferGL(session, mirrorTexture, &mirrorTextureId); - glBindFramebuffer(GL_READ_FRAMEBUFFER, mirrorFbo); - glFramebufferTexture2D(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, mirrorTextureId, 0); - glBlitFramebuffer(0, 0, mirrorSize.x, mirrorSize.y, 0, mirrorSize.y, mirrorSize.x, 0, GL_COLOR_BUFFER_BIT, GL_NEAREST); - glBindFramebuffer(GL_READ_FRAMEBUFFER, 0); + BlitOculusMirror(session, mirror); + + // Get session status information + ovrSessionStatus sessionStatus; + ovr_GetSessionStatus(session, &sessionStatus); + if (sessionStatus.ShouldQuit) TraceLog(LOG_WARNING, "OVR: Session should quit..."); + if (sessionStatus.ShouldRecenter) ovr_RecenterTrackingOrigin(session); +#endif - glfwSwapBuffers(window); glfwPollEvents(); //---------------------------------------------------------------------------------- @@ -307,20 +297,20 @@ int main() // De-Initialization //-------------------------------------------------------------------------------------- - if (mirrorFbo) glDeleteFramebuffers(1, &mirrorFbo); - if (mirrorTexture) ovr_DestroyMirrorTexture(session, mirrorTexture); +#if defined(PLATFORM_OCULUS) + UnloadOculusMirror(session, mirror); // Unload Oculus mirror buffer + UnloadOculusBuffer(session, buffer); // Unload Oculus texture buffers +#endif - if (fbo) glDeleteFramebuffers(1, &fbo); - if (depthBuffer) glDeleteTextures(1, &depthBuffer); - if (eyeTexture) ovr_DestroyTextureSwapChain(session, eyeTexture); - - rlglClose(); + rlglClose(); // Unload rlgl internal buffers and default shader/texture glfwDestroyWindow(window); glfwTerminate(); +#if defined(PLATFORM_OCULUS) ovr_Destroy(session); // Must be called after glfwTerminate() ovr_Shutdown(); +#endif //-------------------------------------------------------------------------------------- return 0; @@ -330,24 +320,22 @@ int main() // Module specific Functions Definitions //---------------------------------------------------------------------------------- -// Draw rectangle using rlgl OpenGL 1.1 style coding (translated to OpenGL 3.3 internally) -static void DrawRectangleV(Vector2 position, Vector2 size, Color color) +// GLFW3: Error callback +static void ErrorCallback(int error, const char* description) { - rlBegin(RL_TRIANGLES); - rlColor4ub(color.r, color.g, color.b, color.a); + TraceLog(LOG_ERROR, description); +} - rlVertex2i(position.x, position.y); - rlVertex2i(position.x, position.y + size.y); - rlVertex2i(position.x + size.x, position.y + size.y); - - rlVertex2i(position.x, position.y); - rlVertex2i(position.x + size.x, position.y + size.y); - rlVertex2i(position.x + size.x, position.y); - rlEnd(); +// GLFW3: Keyboard callback +static void KeyCallback(GLFWwindow* window, int key, int scancode, int action, int mods) +{ + if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) + { + glfwSetWindowShouldClose(window, GL_TRUE); + } } // Output a trace log message -// NOTE: Expected msgType: (0)Info, (1)Error, (2)Warning static void TraceLog(int msgType, const char *text, ...) { va_list args; @@ -370,30 +358,52 @@ static void TraceLog(int msgType, const char *text, ...) //if (msgType == LOG_ERROR) exit(1); } -static Matrix FromOvrMatrix(ovrMatrix4f ovrmat) +// Draw rectangle using rlgl OpenGL 1.1 style coding (translated to OpenGL 3.3 internally) +static void DrawRectangleV(Vector2 position, Vector2 size, Color color) { - Matrix rmat; - - rmat.m0 = ovrmat.M[0][0]; - rmat.m1 = ovrmat.M[1][0]; - rmat.m2 = ovrmat.M[2][0]; - rmat.m3 = ovrmat.M[3][0]; - rmat.m4 = ovrmat.M[0][1]; - rmat.m5 = ovrmat.M[1][1]; - rmat.m6 = ovrmat.M[2][1]; - rmat.m7 = ovrmat.M[3][1]; - rmat.m8 = ovrmat.M[0][2]; - rmat.m9 = ovrmat.M[1][2]; - rmat.m10 = ovrmat.M[2][2]; - rmat.m11 = ovrmat.M[3][2]; - rmat.m12 = ovrmat.M[0][3]; - rmat.m13 = ovrmat.M[1][3]; - rmat.m14 = ovrmat.M[2][3]; - rmat.m15 = ovrmat.M[3][3]; - - //MatrixTranspose(&rmat); - - return rmat; + rlBegin(RL_TRIANGLES); + rlColor4ub(color.r, color.g, color.b, color.a); + + rlVertex2i(position.x, position.y); + rlVertex2i(position.x, position.y + size.y); + rlVertex2i(position.x + size.x, position.y + size.y); + + rlVertex2i(position.x, position.y); + rlVertex2i(position.x + size.x, position.y + size.y); + rlVertex2i(position.x + size.x, position.y); + rlEnd(); +} + +// Draw a grid centered at (0, 0, 0) +static void DrawGrid(int slices, float spacing) +{ + int halfSlices = slices / 2; + + rlBegin(RL_LINES); + for(int i = -halfSlices; i <= halfSlices; i++) + { + if (i == 0) + { + rlColor3f(0.5f, 0.5f, 0.5f); + rlColor3f(0.5f, 0.5f, 0.5f); + rlColor3f(0.5f, 0.5f, 0.5f); + rlColor3f(0.5f, 0.5f, 0.5f); + } + else + { + rlColor3f(0.75f, 0.75f, 0.75f); + rlColor3f(0.75f, 0.75f, 0.75f); + rlColor3f(0.75f, 0.75f, 0.75f); + rlColor3f(0.75f, 0.75f, 0.75f); + } + + rlVertex3f((float)i*spacing, 0.0f, (float)-halfSlices*spacing); + rlVertex3f((float)i*spacing, 0.0f, (float)halfSlices*spacing); + + rlVertex3f((float)-halfSlices*spacing, 0.0f, (float)i*spacing); + rlVertex3f((float)halfSlices*spacing, 0.0f, (float)i*spacing); + } + rlEnd(); } // Draw cube @@ -471,34 +481,279 @@ void DrawCube(Vector3 position, float width, float height, float length, Color c rlPopMatrix(); } -// Draw a grid centered at (0, 0, 0) -void DrawGrid(int slices, float spacing) +// Draw cube wires +void DrawCubeWires(Vector3 position, float width, float height, float length, Color color) { - int halfSlices = slices / 2; + float x = 0.0f; + float y = 0.0f; + float z = 0.0f; - rlBegin(RL_LINES); - for(int i = -halfSlices; i <= halfSlices; i++) - { - if (i == 0) - { - rlColor3f(0.5f, 0.5f, 0.5f); - rlColor3f(0.5f, 0.5f, 0.5f); - rlColor3f(0.5f, 0.5f, 0.5f); - rlColor3f(0.5f, 0.5f, 0.5f); - } - else - { - rlColor3f(0.75f, 0.75f, 0.75f); - rlColor3f(0.75f, 0.75f, 0.75f); - rlColor3f(0.75f, 0.75f, 0.75f); - rlColor3f(0.75f, 0.75f, 0.75f); - } + rlPushMatrix(); - rlVertex3f((float)i*spacing, 0.0f, (float)-halfSlices*spacing); - rlVertex3f((float)i*spacing, 0.0f, (float)halfSlices*spacing); + rlTranslatef(position.x, position.y, position.z); + //rlRotatef(45, 0, 1, 0); - rlVertex3f((float)-halfSlices*spacing, 0.0f, (float)i*spacing); - rlVertex3f((float)halfSlices*spacing, 0.0f, (float)i*spacing); - } - rlEnd(); + rlBegin(RL_LINES); + rlColor4ub(color.r, color.g, color.b, color.a); + + // Front Face ----------------------------------------------------- + // Bottom Line + rlVertex3f(x-width/2, y-height/2, z+length/2); // Bottom Left + rlVertex3f(x+width/2, y-height/2, z+length/2); // Bottom Right + + // Left Line + rlVertex3f(x+width/2, y-height/2, z+length/2); // Bottom Right + rlVertex3f(x+width/2, y+height/2, z+length/2); // Top Right + + // Top Line + rlVertex3f(x+width/2, y+height/2, z+length/2); // Top Right + rlVertex3f(x-width/2, y+height/2, z+length/2); // Top Left + + // Right Line + rlVertex3f(x-width/2, y+height/2, z+length/2); // Top Left + rlVertex3f(x-width/2, y-height/2, z+length/2); // Bottom Left + + // Back Face ------------------------------------------------------ + // Bottom Line + rlVertex3f(x-width/2, y-height/2, z-length/2); // Bottom Left + rlVertex3f(x+width/2, y-height/2, z-length/2); // Bottom Right + + // Left Line + rlVertex3f(x+width/2, y-height/2, z-length/2); // Bottom Right + rlVertex3f(x+width/2, y+height/2, z-length/2); // Top Right + + // Top Line + rlVertex3f(x+width/2, y+height/2, z-length/2); // Top Right + rlVertex3f(x-width/2, y+height/2, z-length/2); // Top Left + + // Right Line + rlVertex3f(x-width/2, y+height/2, z-length/2); // Top Left + rlVertex3f(x-width/2, y-height/2, z-length/2); // Bottom Left + + // Top Face ------------------------------------------------------- + // Left Line + rlVertex3f(x-width/2, y+height/2, z+length/2); // Top Left Front + rlVertex3f(x-width/2, y+height/2, z-length/2); // Top Left Back + + // Right Line + rlVertex3f(x+width/2, y+height/2, z+length/2); // Top Right Front + rlVertex3f(x+width/2, y+height/2, z-length/2); // Top Right Back + + // Bottom Face --------------------------------------------------- + // Left Line + rlVertex3f(x-width/2, y-height/2, z+length/2); // Top Left Front + rlVertex3f(x-width/2, y-height/2, z-length/2); // Top Left Back + + // Right Line + rlVertex3f(x+width/2, y-height/2, z+length/2); // Top Right Front + rlVertex3f(x+width/2, y-height/2, z-length/2); // Top Right Back + rlEnd(); + rlPopMatrix(); } + +#if defined(PLATFORM_OCULUS) +// Convert from Oculus ovrMatrix4f struct to raymath Matrix struct +static Matrix FromOvrMatrix(ovrMatrix4f ovrmat) +{ + Matrix rmat; + + rmat.m0 = ovrmat.M[0][0]; + rmat.m1 = ovrmat.M[1][0]; + rmat.m2 = ovrmat.M[2][0]; + rmat.m3 = ovrmat.M[3][0]; + rmat.m4 = ovrmat.M[0][1]; + rmat.m5 = ovrmat.M[1][1]; + rmat.m6 = ovrmat.M[2][1]; + rmat.m7 = ovrmat.M[3][1]; + rmat.m8 = ovrmat.M[0][2]; + rmat.m9 = ovrmat.M[1][2]; + rmat.m10 = ovrmat.M[2][2]; + rmat.m11 = ovrmat.M[3][2]; + rmat.m12 = ovrmat.M[0][3]; + rmat.m13 = ovrmat.M[1][3]; + rmat.m14 = ovrmat.M[2][3]; + rmat.m15 = ovrmat.M[3][3]; + + MatrixTranspose(&rmat); + + return rmat; +} + +// Load Oculus required buffers: texture-swap-chain, fbo, texture-depth +static OculusBuffer LoadOculusBuffer(ovrSession session, int width, int height) +{ + OculusBuffer buffer; + buffer.width = width; + buffer.height = height; + + // Create OVR texture chain + ovrTextureSwapChainDesc desc = {}; + desc.Type = ovrTexture_2D; + desc.ArraySize = 1; + desc.Width = width; + desc.Height = height; + desc.MipLevels = 1; + desc.Format = OVR_FORMAT_R8G8B8A8_UNORM_SRGB; + desc.SampleCount = 1; + desc.StaticImage = ovrFalse; + + ovrResult result = ovr_CreateTextureSwapChainGL(session, &desc, &buffer.textureChain); + + //eyeLayer.ColorTexture[0] = buffer.textureChain; // <------------------- ??? + + if (!OVR_SUCCESS(result)) TraceLog(LOG_WARNING, "OVR: Failed to create swap textures buffer"); + + int textureCount = 0; + ovr_GetTextureSwapChainLength(session, buffer.textureChain, &textureCount); + + if (!OVR_SUCCESS(result) || !textureCount) TraceLog(LOG_WARNING, "OVR: Unable to count swap chain textures"); + + for (int i = 0; i < textureCount; ++i) + { + GLuint chainTexId; + ovr_GetTextureSwapChainBufferGL(session, buffer.textureChain, i, &chainTexId); + glBindTexture(GL_TEXTURE_2D, chainTexId); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + } + + glBindTexture(GL_TEXTURE_2D, 0); + + /* + // Setup framebuffer object (using depth texture) + glGenFramebuffers(1, &buffer.fboId); + glGenTextures(1, &buffer.depthId); + glBindTexture(GL_TEXTURE_2D, buffer.depthId); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT16, buffer.width, buffer.height, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, NULL); + */ + + // Setup framebuffer object (using depth renderbuffer) + glGenFramebuffers(1, &buffer.fboId); + glGenRenderbuffers(1, &buffer.depthId); + glBindFramebuffer(GL_DRAW_FRAMEBUFFER, buffer.fboId); + glBindRenderbuffer(GL_RENDERBUFFER, buffer.depthId); + glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, buffer.width, buffer.height); + glBindRenderbuffer(GL_RENDERBUFFER, 0); + glFramebufferRenderbuffer(GL_DRAW_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, buffer.depthId); + glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); + + return buffer; +} + +// Unload texture required buffers +static void UnloadOculusBuffer(ovrSession session, OculusBuffer buffer) +{ + if (buffer.textureChain) + { + ovr_DestroyTextureSwapChain(session, buffer.textureChain); + buffer.textureChain = NULL; + } + + if (buffer.depthId != 0) glDeleteTextures(1, &buffer.depthId); + if (buffer.fboId != 0) glDeleteFramebuffers(1, &buffer.fboId); +} + +// Set current Oculus buffer +static void SetOculusBuffer(ovrSession session, OculusBuffer buffer) +{ + GLuint currentTexId; + int currentIndex; + + ovr_GetTextureSwapChainCurrentIndex(session, buffer.textureChain, ¤tIndex); + ovr_GetTextureSwapChainBufferGL(session, buffer.textureChain, currentIndex, ¤tTexId); + + glBindFramebuffer(GL_DRAW_FRAMEBUFFER, buffer.fboId); + glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, currentTexId, 0); + //glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, buffer.depthId, 0); // Already binded + + //glViewport(0, 0, buffer.width, buffer.height); + //glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + //glEnable(GL_FRAMEBUFFER_SRGB); +} + +// Unset Oculus buffer +static void UnsetOculusBuffer(OculusBuffer buffer) +{ + glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 0, 0); + glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); +} + +// Load Oculus mirror buffers +static OculusMirror LoadOculusMirror(ovrSession session, int width, int height) +{ + OculusMirror mirror; + mirror.width = width; + mirror.height = height; + + ovrMirrorTextureDesc mirrorDesc; + memset(&mirrorDesc, 0, sizeof(mirrorDesc)); + mirrorDesc.Format = OVR_FORMAT_R8G8B8A8_UNORM_SRGB; + mirrorDesc.Width = mirror.width; + mirrorDesc.Height = mirror.height; + + if (!OVR_SUCCESS(ovr_CreateMirrorTextureGL(session, &mirrorDesc, &mirror.texture))) TraceLog(LOG_WARNING, "Could not create mirror texture"); + + glGenFramebuffers(1, &mirror.fboId); + + return mirror; +} + +// Unload Oculus mirror buffers +static void UnloadOculusMirror(ovrSession session, OculusMirror mirror) +{ + if (mirror.fboId != 0) glDeleteFramebuffers(1, &mirror.fboId); + if (mirror.texture) ovr_DestroyMirrorTexture(session, mirror.texture); +} + +static void BlitOculusMirror(ovrSession session, OculusMirror mirror) +{ + GLuint mirrorTextureId; + + ovr_GetMirrorTextureBufferGL(session, mirror.texture, &mirrorTextureId); + + glBindFramebuffer(GL_READ_FRAMEBUFFER, mirror.fboId); + glFramebufferTexture2D(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, mirrorTextureId, 0); + glBlitFramebuffer(0, 0, mirror.width, mirror.height, 0, mirror.height, mirror.width, 0, GL_COLOR_BUFFER_BIT, GL_NEAREST); + glBindFramebuffer(GL_READ_FRAMEBUFFER, 0); +} + +// Requires: session, hmdDesc +static OculusLayer InitOculusLayer(ovrSession session) +{ + OculusLayer layer = { 0 }; + + layer.viewScaleDesc.HmdSpaceToWorldScaleInMeters = 1.0f; + + memset(&layer.eyeLayer, 0, sizeof(ovrLayerEyeFov)); + layer.eyeLayer.Header.Type = ovrLayerType_EyeFov; + layer.eyeLayer.Header.Flags = ovrLayerFlag_TextureOriginAtBottomLeft; + + ovrEyeRenderDesc eyeRenderDescs[2]; + + for (int eye = 0; eye < 2; eye++) + { + eyeRenderDescs[eye] = ovr_GetRenderDesc(session, eye, hmdDesc.DefaultEyeFov[eye]); + ovrMatrix4f ovrPerspectiveProjection = ovrMatrix4f_Projection(eyeRenderDescs[eye].Fov, 0.01f, 10000.0f, ovrProjection_None); //ovrProjection_ClipRangeOpenGL); + layer.eyeProjections[eye] = FromOvrMatrix(ovrPerspectiveProjection); // NOTE: struct ovrMatrix4f { float M[4][4] } --> struct Matrix + + layer.viewScaleDesc.HmdToEyeOffset[eye] = eyeRenderDescs[eye].HmdToEyeOffset; + layer.eyeLayer.Fov[eye] = eyeRenderDescs[eye].Fov; + + ovrSizei eyeSize = ovr_GetFovTextureSize(session, eye, layer.eyeLayer.Fov[eye], 1.0f); + layer.eyeLayer.Viewport[eye].Size = eyeSize; + layer.eyeLayer.Viewport[eye].Pos.x = layer.width; + layer.eyeLayer.Viewport[eye].Pos.y = 0; + + layer.height = eyeSize.h; //std::max(renderTargetSize.y, (uint32_t)eyeSize.h); + layer.width += eyeSize.w; + } + + return layer; +} +#endif \ No newline at end of file diff --git a/examples/oculus_glfw_sample/oculus_glfw_sample.old.c b/examples/oculus_glfw_sample/oculus_glfw_sample.old.c deleted file mode 100644 index c4997eae5..000000000 --- a/examples/oculus_glfw_sample/oculus_glfw_sample.old.c +++ /dev/null @@ -1,498 +0,0 @@ -/******************************************************************************************* -* -* raylib Oculus minimum sample (OpenGL 3.3 Core) -* -* NOTE: This example requires raylib module [rlgl] -* -* Compile rlgl using: -* gcc -c rlgl.c -Wall -std=c99 -DRLGL_STANDALONE -DRAYMATH_IMPLEMENTATION -DGRAPHICS_API_OPENGL_33 -* -* Compile example using: -* gcc -o oculus_glfw_sample.exe oculus_glfw_sample.c rlgl.o glad.o -L. -lLibOVRRT32_1 -lglfw3 -lopengl32 -lgdi32 -std=c99 -* -* This example has been created using raylib 1.5 (www.raylib.com) -* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) -* -* Copyright (c) 2015 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#if defined(_WIN32) - #define GLFW_EXPOSE_NATIVE_WIN32 - #define GLFW_EXPOSE_NATIVE_WGL - #define OVR_OS_WIN32 -#elif defined(__APPLE__) - #define GLFW_EXPOSE_NATIVE_COCOA - #define GLFW_EXPOSE_NATIVE_NSGL - #define OVR_OS_MAC -#elif defined(__linux__) - #define GLFW_EXPOSE_NATIVE_X11 - #define GLFW_EXPOSE_NATIVE_GLX - #define OVR_OS_LINUX -#endif - -#include "glad.h" // Extensions loading library - -#include -#include - -#include "OculusSDK/LibOVR/Include/OVR_CAPI_GL.h" // Oculus SDK for OpenGL - -//#include "GL/CAPI_GLE.h" // stripped-down GLEW/GLAD library to manage extensions (really required?) -//#include "Extras/OVR_Math.h" // math utilities C++ (really required?) - -#define RLGL_STANDALONE -#include "rlgl.h" - -#include -#include - -//---------------------------------------------------------------------------------- -// Types and Structures Definition -//---------------------------------------------------------------------------------- -typedef struct OculusBuffer { - ovrTextureSwapChain textureChain; - GLuint depthId; - GLuint fboId; - int width; - int height; -} OculusBuffer; - -typedef enum { LOG_INFO = 0, LOG_ERROR, LOG_WARNING, LOG_DEBUG, LOG_OTHER } TraceLogType; - -//---------------------------------------------------------------------------------- -// Module specific Functions Declaration -//---------------------------------------------------------------------------------- -static OculusBuffer LoadOculusBuffer(ovrSession session, int width, int height); -static void UnloadOculusBuffer(ovrSession session, OculusBuffer buffer); -static void SetOculusBuffer(ovrSession session, OculusBuffer buffer); -static void UnsetOculusBuffer(OculusBuffer buffer); - -static void ErrorCallback(int error, const char* description) -{ - fputs(description, stderr); -} - -static void KeyCallback(GLFWwindow* window, int key, int scancode, int action, int mods) -{ - if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) - { - glfwSetWindowShouldClose(window, GL_TRUE); - } -} - -static void DrawRectangleV(Vector2 position, Vector2 size, Color color); -static void TraceLog(int msgType, const char *text, ...); - -//---------------------------------------------------------------------------------- -// Main Entry point -//---------------------------------------------------------------------------------- -int main() -{ - // Initialization - //-------------------------------------------------------------------------------------- - ovrSession session; - ovrGraphicsLuid luid; // Useless for OpenGL since SDK 0.7 - ovrHmdDesc hmdDesc; - - ovrResult result = ovr_Initialize(NULL); - if (OVR_FAILURE(result)) TraceLog(LOG_ERROR, "OVR: Could not initialize Oculus device"); - - result = ovr_Create(&session, &luid); - if (OVR_FAILURE(result)) - { - TraceLog(LOG_WARNING, "OVR: Could not create Oculus session"); - ovr_Shutdown(); - } - - hmdDesc = ovr_GetHmdDesc(session); - - TraceLog(LOG_INFO, "OVR: Product Name: %s", hmdDesc.ProductName); - TraceLog(LOG_INFO, "OVR: Manufacturer: %s", hmdDesc.Manufacturer); - TraceLog(LOG_INFO, "OVR: Product ID: %i", hmdDesc.ProductId); - TraceLog(LOG_INFO, "OVR: Product Type: %i", hmdDesc.Type); - TraceLog(LOG_INFO, "OVR: Serian Number: %s", hmdDesc.SerialNumber); - TraceLog(LOG_INFO, "OVR: Resolution: %ix%i", hmdDesc.Resolution.w, hmdDesc.Resolution.h); - - int screenWidth = hmdDesc.Resolution.w/2 + 100; // Added 100 pixels for testing - int screenHeight = hmdDesc.Resolution.h/2 + 100; // Added 100 pixels for testing - - // GLFW3 Initialization + OpenGL 3.3 Context + Extensions - //-------------------------------------------------------- - GLFWwindow *window; - - glfwSetErrorCallback(ErrorCallback); - - if (!glfwInit()) - { - TraceLog(LOG_WARNING, "GLFW3: Can not initialize GLFW"); - exit(EXIT_FAILURE); - } - else TraceLog(LOG_INFO, "GLFW3: GLFW initialized successfully"); - - glfwWindowHint(GLFW_DEPTH_BITS, 16); - glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); - glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); - //glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); - glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); - glfwWindowHint(GLFW_OPENGL_DEBUG_CONTEXT, GL_TRUE); - glfwWindowHint(GLFW_DECORATED, GL_FALSE); // Mandatory on Oculus Rift to avoid program crash! - - window = glfwCreateWindow(screenWidth, screenHeight, "rlgl standalone", NULL, NULL); - - if (!window) - { - glfwTerminate(); - exit(EXIT_FAILURE); - } - else TraceLog(LOG_INFO, "GLFW3: Window created successfully"); - - glfwSetKeyCallback(window, KeyCallback); - - glfwMakeContextCurrent(window); - glfwSwapInterval(0); - - if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) - { - TraceLog(LOG_WARNING, "GLAD: Cannot load OpenGL extensions"); - exit(1); - } - else TraceLog(LOG_INFO, "GLAD: OpenGL extensions loaded successfully"); - - rlglInit(); - rlglInitGraphics(0, 0, screenWidth, screenHeight); - rlClearColor(245, 245, 245, 255); // Define clear color - - Vector2 position = { screenWidth/2 - 100, screenHeight/2 - 100 }; - Vector2 size = { 200, 200 }; - Color color = { 180, 20, 20, 255 }; - //--------------------------------------------------------------------------- - - OculusBuffer eyeRenderBuffer[2]; - - GLuint mirrorFBO = 0; - ovrMirrorTexture mirrorTexture = NULL; - - bool isVisible = true; - long long frameIndex = 0; - - // Make eyes render buffers - ovrSizei recommendedTexSizeLeft = ovr_GetFovTextureSize(session, ovrEye_Left, hmdDesc.DefaultEyeFov[0], 1.0f); - eyeRenderBuffer[0] = LoadOculusBuffer(session, recommendedTexSizeLeft.w, recommendedTexSizeLeft.h); - ovrSizei recommendedTexSizeRight = ovr_GetFovTextureSize(session, ovrEye_Right, hmdDesc.DefaultEyeFov[1], 1.0f); - eyeRenderBuffer[1] = LoadOculusBuffer(session, recommendedTexSizeRight.w, recommendedTexSizeRight.h); - - // Note: the mirror window can be any size, for this sample we use 1/2 the HMD resolution - ovrSizei windowSize = { hmdDesc.Resolution.w/2, hmdDesc.Resolution.h/2 }; - - // Define mirror texture descriptor - ovrMirrorTextureDesc mirrorDesc; - memset(&mirrorDesc, 0, sizeof(mirrorDesc)); - mirrorDesc.Width = windowSize.w; - mirrorDesc.Height = windowSize.h; - mirrorDesc.Format = OVR_FORMAT_R8G8B8A8_UNORM_SRGB; - - // Create mirror texture and an FBO used to copy mirror texture to back buffer - result = ovr_CreateMirrorTextureGL(session, &mirrorDesc, &mirrorTexture); - if (!OVR_SUCCESS(result)) TraceLog(LOG_WARNING, "OVR: Failed to create mirror texture"); - - // Configure the mirror read buffer - GLuint texId; - ovr_GetMirrorTextureBufferGL(session, mirrorTexture, &texId); - - glGenFramebuffers(1, &mirrorFBO); - glBindFramebuffer(GL_READ_FRAMEBUFFER, mirrorFBO); - glFramebufferTexture2D(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texId, 0); - glFramebufferRenderbuffer(GL_READ_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, 0); - glBindFramebuffer(GL_READ_FRAMEBUFFER, 0); - - if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) - { - glDeleteFramebuffers(1, &mirrorFBO); - TraceLog(LOG_WARNING, "OVR: Could not initialize mirror framebuffers"); - } - - glClearColor(1.0f, 0.1f, 0.1f, 0.0f); - glEnable(GL_DEPTH_TEST); - ovr_RecenterTrackingOrigin(session); - - // FloorLevel will give tracking poses where the floor height is 0 - ovr_SetTrackingOriginType(session, ovrTrackingOrigin_FloorLevel); - //-------------------------------------------------------------------------------------- - - // Main loop - while (!glfwWindowShouldClose(window)) - { - // Update - //---------------------------------------------------------------------------------- - frameIndex++; - - // TODO: Update game here! - - // Call ovr_GetRenderDesc each frame to get the ovrEyeRenderDesc, as the returned values (e.g. HmdToEyeOffset) may change at runtime. - ovrEyeRenderDesc eyeRenderDesc[2]; - eyeRenderDesc[0] = ovr_GetRenderDesc(session, ovrEye_Left, hmdDesc.DefaultEyeFov[0]); - eyeRenderDesc[1] = ovr_GetRenderDesc(session, ovrEye_Right, hmdDesc.DefaultEyeFov[1]); - - // Get eye poses, feeding in correct IPD offset - ovrPosef eyeRenderPose[2]; - ovrVector3f hmdToEyeOffset[2] = { eyeRenderDesc[0].HmdToEyeOffset, eyeRenderDesc[1].HmdToEyeOffset }; - - double sensorSampleTime; // sensorSampleTime is fed into the layer later - ovr_GetEyePoses(session, frameIndex, ovrTrue, hmdToEyeOffset, eyeRenderPose, &sensorSampleTime); - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - - // Clear screen to red color - glClearColor(1.0f, 0.1f, 0.1f, 0.0f); - //glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - if (isVisible) - { - for (int eye = 0; eye < 2; ++eye) - { - SetOculusBuffer(session, eyeRenderBuffer[eye]); - - // TODO: Get view and projection matrices for the eye - // Sample using Oculus OVR_Math.h (C++) - /* - Matrix4f projection[eye] = Matrix4f(ovrMatrix4f_Projection(eyeRenderDesc[eye].Fov, 0.01f, 10000.0f, ovrProjection_None)); - Matrix4f eyeOrientation[eye] = Matrix4f(Quatf(eyeRenderPose[eye].Orientation).Inverted()); - Matrix4f eyePose[eye] = Matrix4f::Translation(-Vector3f(eyeRenderPose[eye].Position)); - Matrix4f mvp = projection[eye]*eyeOrientation[eye]*eyePose[eye]; - */ - - // Sample using custom raymath.h (C) -INCOMPLETE- - /* - Matrix projection = MatrixPerspective(eyeRenderDesc[eye].Fov, ((double)screenWidth/(double)screenHeight), 0.01, 1000.0); - Matrix eyeOrientation = QuaternionToMatrix((Quaternion){ -eyeRenderPose[eye].Orientation.x, -eyeRenderPose[eye].Orientation.y, - -eyeRenderPose[eye].Orientation.z, -eyeRenderPose[eye].Orientation.w }); - Matrix eyePose = MatrixTranslate(-eyeRenderPose[eye].Position.x, -eyeRenderPose[eye].Position.y, -eyeRenderPose[eye].Position.z); - Matrix mvp = MatrixMultiply(projection, MatrixMultiply(eyeOrientation, eyePose)); - */ - - // Render everything - // TODO: Pass calculated mvp matrix to default shader to consider projection and orientation! - //DrawRectangleV(position, size, color); - //rlglDraw(); - - UnsetOculusBuffer(eyeRenderBuffer[eye]); - - // Commit changes to the textures so they get picked up frame - ovr_CommitTextureSwapChain(session, eyeRenderBuffer[eye].textureChain); - } - } - - // Set up positional data - ovrViewScaleDesc viewScaleDesc; - viewScaleDesc.HmdSpaceToWorldScaleInMeters = 1.0f; - viewScaleDesc.HmdToEyeOffset[0] = hmdToEyeOffset[0]; - viewScaleDesc.HmdToEyeOffset[1] = hmdToEyeOffset[1]; - - // Create the main eye layer - ovrLayerEyeFov eyeLayer; - eyeLayer.Header.Type = ovrLayerType_EyeFov; - eyeLayer.Header.Flags = ovrLayerFlag_TextureOriginAtBottomLeft; // Because OpenGL - - for (int eye = 0; eye < 2; eye++) - { - eyeLayer.ColorTexture[eye] = eyeRenderBuffer[eye].textureChain; - eyeLayer.Viewport[eye] = (ovrRecti){ eyeRenderBuffer[eye].width, eyeRenderBuffer[eye].height }; - eyeLayer.Fov[eye] = hmdDesc.DefaultEyeFov[eye]; - eyeLayer.RenderPose[eye] = eyeRenderPose[eye]; - eyeLayer.SensorSampleTime = sensorSampleTime; - } - - // Append all the layers to global list - ovrLayerHeader *layerList = &eyeLayer.Header; - ovrResult result = ovr_SubmitFrame(session, frameIndex, NULL, &layerList, 1); - - // exit the rendering loop if submit returns an error, will retry on ovrError_DisplayLost - if (!OVR_SUCCESS(result)) return 1; - - isVisible = (result == ovrSuccess); - - // Get session status information - ovrSessionStatus sessionStatus; - ovr_GetSessionStatus(session, &sessionStatus); - if (sessionStatus.ShouldQuit) TraceLog(LOG_WARNING, "OVR: Session should quit."); - if (sessionStatus.ShouldRecenter) ovr_RecenterTrackingOrigin(session); - - // Blit mirror texture to back buffer - glBindFramebuffer(GL_READ_FRAMEBUFFER, mirrorFBO); - glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); - GLint w = mirrorDesc.Width; - GLint h = mirrorDesc.Height; - glBlitFramebuffer(0, h, w, 0, 0, 0, w, h, GL_COLOR_BUFFER_BIT, GL_NEAREST); - glBindFramebuffer(GL_READ_FRAMEBUFFER, 0); - - glfwSwapBuffers(window); - glfwPollEvents(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - if (mirrorFBO) glDeleteFramebuffers(1, &mirrorFBO); - if (mirrorTexture) ovr_DestroyMirrorTexture(session, mirrorTexture); - for (int eye = 0; eye < 2; eye++) UnloadOculusBuffer(session, eyeRenderBuffer[eye]); - - rlglClose(); - - glfwDestroyWindow(window); - glfwTerminate(); - - ovr_Destroy(session); // Must be called after glfwTerminate() - ovr_Shutdown(); - //-------------------------------------------------------------------------------------- - - return 0; -} - -//---------------------------------------------------------------------------------- -// Module specific Functions Definitions -//---------------------------------------------------------------------------------- - -// Load Oculus required buffers: texture-swap-chain, fbo, texture-depth -static OculusBuffer LoadOculusBuffer(ovrSession session, int width, int height) -{ - OculusBuffer buffer; - buffer.width = width; - buffer.height = height; - - // Create OVR texture chain - ovrTextureSwapChainDesc desc = {}; - desc.Type = ovrTexture_2D; - desc.ArraySize = 1; - desc.Width = width; - desc.Height = height; - desc.MipLevels = 1; - desc.Format = OVR_FORMAT_R8G8B8A8_UNORM_SRGB; - desc.SampleCount = 1; - desc.StaticImage = ovrFalse; - - ovrResult result = ovr_CreateTextureSwapChainGL(session, &desc, &buffer.textureChain); - - int textureCount = 0; - ovr_GetTextureSwapChainLength(session, buffer.textureChain, &textureCount); - - if (OVR_SUCCESS(result)) - { - for (int i = 0; i < textureCount; ++i) - { - GLuint chainTexId; - ovr_GetTextureSwapChainBufferGL(session, buffer.textureChain, i, &chainTexId); - glBindTexture(GL_TEXTURE_2D, chainTexId); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - } - } - - // Generate framebuffer - glGenFramebuffers(1, &buffer.fboId); - - // Create Depth texture - glGenTextures(1, &buffer.depthId); - glBindTexture(GL_TEXTURE_2D, buffer.depthId); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - - glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT16, buffer.width, buffer.height, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, NULL); - - return buffer; -} - -// Unload texture required buffers -static void UnloadOculusBuffer(ovrSession session, OculusBuffer buffer) -{ - if (buffer.textureChain) - { - ovr_DestroyTextureSwapChain(session, buffer.textureChain); - buffer.textureChain = NULL; - } - - if (buffer.depthId) - { - glDeleteTextures(1, &buffer.depthId); - buffer.depthId = 0; - } - - if (buffer.fboId) - { - glDeleteFramebuffers(1, &buffer.fboId); - buffer.fboId = 0; - } -} - -// Set current Oculus buffer -static void SetOculusBuffer(ovrSession session, OculusBuffer buffer) -{ - GLuint currentTexId; - int currentIndex; - - ovr_GetTextureSwapChainCurrentIndex(session, buffer.textureChain, ¤tIndex); - ovr_GetTextureSwapChainBufferGL(session, buffer.textureChain, currentIndex, ¤tTexId); - - glBindFramebuffer(GL_FRAMEBUFFER, buffer.fboId); - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, currentTexId, 0); - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, buffer.depthId, 0); - - glViewport(0, 0, buffer.width, buffer.height); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glEnable(GL_FRAMEBUFFER_SRGB); -} - -// Unset Oculus buffer -static void UnsetOculusBuffer(OculusBuffer buffer) -{ - glBindFramebuffer(GL_FRAMEBUFFER, buffer.fboId); - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, 0, 0); - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, 0, 0); -} - -// Draw rectangle using rlgl OpenGL 1.1 style coding (translated to OpenGL 3.3 internally) -static void DrawRectangleV(Vector2 position, Vector2 size, Color color) -{ - rlBegin(RL_TRIANGLES); - rlColor4ub(color.r, color.g, color.b, color.a); - - rlVertex2i(position.x, position.y); - rlVertex2i(position.x, position.y + size.y); - rlVertex2i(position.x + size.x, position.y + size.y); - - rlVertex2i(position.x, position.y); - rlVertex2i(position.x + size.x, position.y + size.y); - rlVertex2i(position.x + size.x, position.y); - rlEnd(); -} - -// Output a trace log message -// NOTE: Expected msgType: (0)Info, (1)Error, (2)Warning -static void TraceLog(int msgType, const char *text, ...) -{ - va_list args; - va_start(args, text); - - switch(msgType) - { - case LOG_INFO: fprintf(stdout, "INFO: "); break; - case LOG_ERROR: fprintf(stdout, "ERROR: "); break; - case LOG_WARNING: fprintf(stdout, "WARNING: "); break; - case LOG_DEBUG: fprintf(stdout, "DEBUG: "); break; - default: break; - } - - vfprintf(stdout, text, args); - fprintf(stdout, "\n"); - - va_end(args); - - //if (msgType == LOG_ERROR) exit(1); -} \ No newline at end of file diff --git a/examples/oculus_glfw_sample/raylib_OculusRiftCV1.png b/examples/oculus_glfw_sample/raylib_OculusRiftCV1_test01.png similarity index 100% rename from examples/oculus_glfw_sample/raylib_OculusRiftCV1.png rename to examples/oculus_glfw_sample/raylib_OculusRiftCV1_test01.png diff --git a/examples/oculus_glfw_sample/raylib_OculusRiftCV1_test02.png b/examples/oculus_glfw_sample/raylib_OculusRiftCV1_test02.png new file mode 100644 index 0000000000000000000000000000000000000000..b683bf86509ce17d2f49fc2b6f1f778ff5b64dae GIT binary patch literal 348126 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