From 65077f2c4d81f00e7940a996a11d5c18c2a8e910 Mon Sep 17 00:00:00 2001 From: Learn OpenGL ES Date: Tue, 6 Mar 2012 14:16:37 -0500 Subject: [PATCH] Added Lesson 7 - vertex buffer objects. --- android/AndroidOpenGLESLessons/.classpath | 3 +- .../AndroidOpenGLESLessons/AUTHORS-LIBGDX.TXT | 10 + .../AndroidManifest.xml | 5 +- .../libs/armeabi-v7a/libandroidgl20.so | Bin 0 -> 61381 bytes .../libs/armeabi/libandroidgl20.so | Bin 0 -> 61381 bytes android/AndroidOpenGLESLessons/lint.xml | 3 + android/AndroidOpenGLESLessons/proguard.cfg | 8 +- .../res/drawable-hdpi/ic_lesson_seven.png | Bin 0 -> 11974 bytes .../res/drawable-nodpi/usb_android.png | Bin 0 -> 10132 bytes .../res/layout/lesson_seven.xml | 41 + .../res/raw/lesson_seven_fragment_shader.glsl | 32 + .../res/raw/lesson_seven_vertex_shader.glsl | 27 + .../res/values/strings.xml | 10 +- .../gdx/backends/android/AndroidGL20.java | 324 +++++++ .../src/com/badlogic/gdx/graphics/GL20.java | 545 +++++++++++ .../com/badlogic/gdx/graphics/GLCommon.java | 114 +++ .../android/TableOfContents.java | 10 + .../android/lesson7/LessonSevenActivity.java | 157 ++++ .../lesson7/LessonSevenGLSurfaceView.java | 66 ++ .../android/lesson7/LessonSevenRenderer.java | 850 ++++++++++++++++++ 20 files changed, 2200 insertions(+), 5 deletions(-) create mode 100644 android/AndroidOpenGLESLessons/AUTHORS-LIBGDX.TXT create mode 100644 android/AndroidOpenGLESLessons/libs/armeabi-v7a/libandroidgl20.so create mode 100644 android/AndroidOpenGLESLessons/libs/armeabi/libandroidgl20.so create mode 100644 android/AndroidOpenGLESLessons/lint.xml create mode 100644 android/AndroidOpenGLESLessons/res/drawable-hdpi/ic_lesson_seven.png create mode 100644 android/AndroidOpenGLESLessons/res/drawable-nodpi/usb_android.png create mode 100644 android/AndroidOpenGLESLessons/res/layout/lesson_seven.xml create mode 100644 android/AndroidOpenGLESLessons/res/raw/lesson_seven_fragment_shader.glsl create mode 100644 android/AndroidOpenGLESLessons/res/raw/lesson_seven_vertex_shader.glsl create mode 100644 android/AndroidOpenGLESLessons/src/com/badlogic/gdx/backends/android/AndroidGL20.java create mode 100644 android/AndroidOpenGLESLessons/src/com/badlogic/gdx/graphics/GL20.java create mode 100644 android/AndroidOpenGLESLessons/src/com/badlogic/gdx/graphics/GLCommon.java create mode 100644 android/AndroidOpenGLESLessons/src/com/learnopengles/android/lesson7/LessonSevenActivity.java create mode 100644 android/AndroidOpenGLESLessons/src/com/learnopengles/android/lesson7/LessonSevenGLSurfaceView.java create mode 100644 android/AndroidOpenGLESLessons/src/com/learnopengles/android/lesson7/LessonSevenRenderer.java diff --git a/android/AndroidOpenGLESLessons/.classpath b/android/AndroidOpenGLESLessons/.classpath index 6e9239f..a4f1e40 100644 --- a/android/AndroidOpenGLESLessons/.classpath +++ b/android/AndroidOpenGLESLessons/.classpath @@ -3,5 +3,6 @@ - + + diff --git a/android/AndroidOpenGLESLessons/AUTHORS-LIBGDX.TXT b/android/AndroidOpenGLESLessons/AUTHORS-LIBGDX.TXT new file mode 100644 index 0000000..e55a032 --- /dev/null +++ b/android/AndroidOpenGLESLessons/AUTHORS-LIBGDX.TXT @@ -0,0 +1,10 @@ +# This is the official list of the AUTHORS of libgdx +# for copyright purposes. +# This file is distinct from the CONTRIBUTORS files. +# See the latter for an explanation. + +# Names should be added to this file as +# Name or Organization +# The email address is not required for organizations. +Mario Zechner +Nathan Sweet \ No newline at end of file diff --git a/android/AndroidOpenGLESLessons/AndroidManifest.xml b/android/AndroidOpenGLESLessons/AndroidManifest.xml index b5ad831..e48ba51 100644 --- a/android/AndroidOpenGLESLessons/AndroidManifest.xml +++ b/android/AndroidOpenGLESLessons/AndroidManifest.xml @@ -2,7 +2,7 @@ + android:versionCode="8" android:versionName="1.0.6"> @@ -41,5 +41,8 @@ + \ No newline at end of file diff --git a/android/AndroidOpenGLESLessons/libs/armeabi-v7a/libandroidgl20.so b/android/AndroidOpenGLESLessons/libs/armeabi-v7a/libandroidgl20.so new file mode 100644 index 0000000000000000000000000000000000000000..7a7cd7f10c216cde3766220e10c43571e873816b GIT binary patch literal 61381 zcmeHwe|%KMx&GN?10e)iAXY?bSBw}n;s#QUiZwt$qCr*?5fR-i$tGD{vTL$vuv8WZ zik8$MSh=?#+lno1sm7MJetW@Ur7g9#VvDVdZ;UDRn9S%#5QYPbz2(#9Ar zrbm|FV;Iu!$uSIiC-T#$xB* z^@#fv=$}Dvho6pc43w@2;oVlya3j1Bo~{z~HqdVPhu}+rZ-SqI@YSII4^+B-1m+Lr-A-MgeAEKyy?2&D-a$dFykg5TrTiiz?UO@KIrT4 z6XC1j{qS^Qi`^^g-hOH>1WW%s+*2A^h1&+(!jJ zqa;*{uxY;$zD`LySA@Mv+$RZ+6`3y(^aiDH6T;&aEQ51p0JKeniv&Fb^c)fXq@)oA zJX)bO3O*0vS@1si7We{q>1HBOBfvr#sn9PYe361>aD)ilEa>&1o$$p1>!e*o{7^~Q zj_?@x`$gOk(2ej@;4g>&5&TEF*&^W=f_@S7OcA~p^sDdz`2P}dBp1V1DR?cyR|tF; z=qd2S;P=5VgQt5H{<~%<^>03ci{L*8ABX=A{8!-VobcD0q4a-$5O8#QwDALhU(({Q z1ilP@HT((qCGe{IivWKDeHMNjd@lT>@HfHd!#@vC_j~xA@V_R2I}NtyPAh2SA$%(Q zJpxY$ErsXODhK|v2)_vb4frkaUxI%DJ_~7AgD!yoCH()uN8ryw{69hI9)y1zelh%S z;SHpn34erPxTh^*{2a6dz5)I{5$8g_ZzB9z&}{gBiFlG85q=8v0;C-jnB-FU2jJJk z7b2|>RJs!2E8&+SVmSQQ;BN$eS7ew2x>tmC!gVEGwlUPCOA-e}EJ@^eB-+ZI~mP5ifs z>G_`r|1#vK4lw-^jsH`5>G@wPz}o4SRQ}@>j&N+xMd05K1#}}!e!D@NAP?F&;%iag zSk&hd_)1nR9LtYHx)bTB#?0R=C#s1J)3OnVT58kYyMzEA1^ROiwpECZd>s55}+XZYzTP8Zo{V%J|-nintG;a~W^< z-=fHC6yoN)F^7Vw_Kd;!Nk{&F`m{t=`=EkG2ujIeVtuD+5+-$Q%rW2x~7Xzl+o#(yXDr%LeK#Rdq+_T75{?6A;p_HPH;KNk7r z_>Q5`7LNHloM@Xe{=3mW>6rc+##cJx|3-V(De|N}EywuC@!OB_ItDE3TcpYF(7BSE zrIY7^UoOT=>eufueih32-8dqZpY2N%~tSS zG7*l!pCV&KnU5Q_`gWkbvD;JpCZK)NvHWJF*GE$0(W{OBJ>cJ@@UMWrZ){4*>p6B@ zIP&wO{q;(F=jY(stk{E@=(luc`-dT2;XfSX*QCs^$F=#mU+dqGp`XrX>>t3C@_hHx z2sftM_iGH~c7@-5x2)aL|1H}1_N9`+54M{Bgfshx`isF2YG>AW<2cOk`jmZo;dJbs z73{@CIdM};{>_W$opk17K#MFHt4^!@6`X{7_S0cF!zb{F3p~Afj%9tO_jg( zY~;Vq+MiG!FKX>?`4sf)mel<9YV%_|>MK?BcRK8+bYwM@_6Ggg215P?=&y84--Pm; z??N3Y$MiiElyFQhMMoD2dqaEiIc>haiSa0cK1loWftJ2Wo4Rk>3U#G@gvU67ZQ=l^3sIHpI&W9*gje{O$S54!xBM)OZ!jhQU!ne;ihlhR z`nnzZD%UH2hy0?Ulsq082m4!}ns0rON1Gy#iwjY|l7AS+FB(I==oj0+#SMFi`YX^D z;{A|UL>Z6ApfA#y@d7lmWNXPu&hQ60WKGMD%$M{L-M&L*2pLERsHsm24 zaf@cp)?ofg$Mp8|(D%Dw?-6GEFC2=wg84zSO1vKWw`);q{yd5HPgUAK-HnXGk>8c5 zZ$H|bk1)%>2>D9K^fR^gU7^|2Uh1Q8%-=@E5{`H|#$%^49zB>ZUALyj^YSxMrZJ^o z{{jv*rS#(`Y?yH5*97^Np}nkz?X5(|H=(~0^W1b3^hwHN8024r^~xTRKLq_$ulEmQ zpj_Z5^A|whq+@+sG`voe&+gM@Zng(?Y4eR|+|n_9H~LqI{>?_1?KiaXeN@w@BJeM( zhfaz7t2KE%sLi*Du%|_k2h`f+--Yq$TKi3pVWZhTTuhoC0W}nZ4KCAnQk-&%Vws>%SR%-bRF#b6D) zFCFnC=fJitNwqH<@|KS2{bxa+ZcWv9re^Oxt*v(*TK^YMl-#WGJnF{!PtljV^3u~M zV7&IDz6wNBUOuh9FG62-HKpeJwW#kYMSuTzKITd+rGLXPp5uL~>(4WVxE~fu_4g0? z*uSE@oX=07ztXY)UqnJ2=~CZ=C@&q;H)`|u?C~hA*BuO{@zjcE4g5fmy{=EFLS zPhU7S{!gR+u}c2q!_xWnL0=Cj`gXMw`mc=t8yL@eWjwFSL;Dw|+J8io=hNE!bD;b& z$j2kvdo}b+I`+3tvp1t)Px@A;?9Fm*eyzrMsOMh+&7Q8r_2eM*U&?npOq_JAuMPcG z&l?t^eT7Q@CPTi`F@G`Sw@=ZpW7>Fq4)T(Y`KuuR0?2Q3V!GA5r z1I;kg--UhYROIgilVZjGbfA6Gk^gYiSAp??nwjN~z}}WA`V<+C@ly6%{|)(A(x6U` zH7>{aNk@KJ+WegWL$V$9mm-b(h0DNCI_7^A>woEpFVXbrS&WY>mXiNHNMEby%N-bx z3Sf$j@>!5Jej|*p;QA^Z`O|!QVBh3?x*zMk<>;^M{~GjXJNQZb1=tTS(q;Zp8o!;| z`lcBATMK=Wq3OroEZH0O7x$?lkC-Bld{lf4>rJVz zhR^2@_!kF#OPlWuHrM;=A`xGt#baFUzr*jV3or34_Sc8Pjlnu!V|^Py-ED#9`c|L6 zxxOVFtoKc`=v7sdJ-)`!{9xeDNVp|xvvi;(8fcpqjkW|Ad&9xzXrRUCtE{YCSXpU+ z_lHw6ucovia~@Mp0*}cjfk%m59{y0U-X9HkTf&Vk{w4MVa(!!t<(q>I;g%&hS+=Ek z*NfsdMIee#$*gv}iXdvAoLTL5RY=rcl3DF`m9Hky=JiAC0+{SJTcEPAIsVnrKyzI% zG&fQmh@dsmfITf7V3SetIsVq$PD(q-D5I9lTH0K9Qd&YrHe1rL%IbaaDAy^-6vNyJst*{)?r7bpx zwX)S32)mW5YGId0M&he%okhcIDW=^P%xv~A4h8D%7N2g;3VWqzV})q1-^DRxY;%zO9v{O8^TrLMy#bY8rzHTZ*}w1~!~{+9Z|m)j+_>z~=uV%N4o z3f5XXQz10NI7S0=f{`Wuh`o-?Y6&+-XZh`#ctwxJl%8B+w;=;FBJ=q|@++trRXJDC( zmA1L1vo|kI4yJ0`oK+@+8SF*|4X|0XDNuKtaz(6;`lCx*4d23RFY#S{ZRO17J0^Q( z_(NE_W93s<6>e^v6Nom2>t}i|@!eV%^0&5nOFX_?u_H%hWyM`-B`2p!&Ru+Kpf38K zmo2$8RkpJE;|kh31)3hhRx9&O>i`>j17H@PdHYgxVVT+XIgM2Yt;s+Wr{hpKqkR$? zWWJUn7e%RU$^uL>*>SKDCu7MB9vNQtr`1J+cLXvT7cBoR8=cAF3Ye(tC~<0khrQte zGjS1=`zc#ifE~jvgyu#&t-!iF$~~I6y@5L)xEo@7qdACd#2t;QTX}z_IT-d?3hA3{ zr?u&KMM@iN3SMpIl#{_^^2uOQVwZ{7+t2Ys3)*Z8C5?-1sibkSEf&G0G-z{xW%&#x zIwiyUGnL}x4C~KS{v{dKZ(E~J!qOfrQa4&`s*%dWt}1~?M%xSPnuRN|zs2T}#=L;P z-aNdvd48Z>^X%$`#>TEZ!A8vP3>qRhWY7jxH8N<3$|i%>SW4n;3EsJGO|zOk{^`eKUOTP0$^EH2jW#V(U(Oi$i0v)z|wbtc&7q9~tz zCYGkyEU%ton=AU0wVt;QL^G4K#p5K1+G3Qsv@Jdv37ogPp?IwU9!6w-%&9QTXf z3GJ!yNB#DumBqp=@4Mc525fW4G+NwA}o2&Y^%e~0p8s7 z`RdyIzQuvYV6(4|Mr~zWYJ*t}Fe1sG@x)GZ}Pvt%8P3y~6Ni{Qi$ zH+u(tWN@o89dJobLK4g2)<03kzQ&#?&C&VcuR6gU`btMS$Zl~6m@}mtE+~8F&}xf zK0z1Y`R%ML z@mx5{W&I1!b8p3aGw?fxv0L!YD?C3xo^%L)13-%BsS8Q*0C5p1p4ToW#dF~vQaqnr zN{R=f%SiEj_f*nP;kji}JYZcxirY zXYqHD2JxFL(%bNRTvGf7U>_;Q^Lf(S@w*YyR{TDK6l3x-DaPa=>79nrP5OEK9+7l8 zez!xq(lFj4#cvq;Nbkk--K1;rJ0{X~_&qRb2NdQJ&`vxHPr4q@fRk>(v*@G`;Td+) zhw*y?(yw6rNjGEsNx{QS`c;fS>7y8b(rp-j(#J6Vq+iGQlkULylYR%|Px?5=C%_>=w&<4^i?j6dl^Vf;y7!1$BCi18== z4aT4J0LGv6C5%7mA2I%=?55p(teCTDPB6WpA;{fJ3xvTs=Z8# zmz5nP#S6B&N%8WSL!@|#*I`n;6zwfiyeO=X6fe9vMv52V94Ey~X-<&39fpB<{VBY} z#z~5oiRF^w<#G9>c&V9-6fZz4AjQkj#*%s*#&}Y^IL%Fpm!%bw;$?0{q<9HgF)3a~ z=OLZ$FiJ`BGPyERyohZoDPDM2PKpkB*V@H!>ju7sB>;iwW0DdBo0yhsVxDB&t4T%m-gD&bNkT&#o( zmGF2aT%d&Wm9SF@pLj1N&tppXEhT(N2_IC#2bA#hN_ejl-lc?hD&ZYUc$*U5tb{iz z;dM&5T?sE&!ciq0Qo{90c##sWQNmS9xIzg}Rl=o8xL64nD&g@;xIhW#D`BS+KJiaQ z{z~{QC45K;A5_8zl<@OPc&`%PrG$4X;T=kNn-bovgf}YTbxOEh2`^W|Q6(Hw!u3jc zkrJ*^!c|JRLJ3b*!lg>MSP2&@;qgkiKndq7VW$#4aa@tV5`IewA5y{xmGA*2{Jaw0 ztAuwc;hjo&hZ5eVgf}bUjY@c(5^h(*%aw3c35S$$y%Jueglm*=l@hK{!c&!SsS++$ z!i7qByb>-@!ud+rsf16wtH@sozomo^DdB@k_<$0AUJ372!n>64P9?lU32#%vo0afJ zCA>}vw=3c0N;s;7LrS<_2`^H@HA=V&VORNuZyKJ?q~VVDj_i*2Z2Q}Wq${@jaF!A8 z$#%ti@{KKrU;Ci{h;z@YNn*z5d*VI0d$ynq{GN_vKEh7WZse2Yn8rL#kCkVmmd5y5 z{Z@YFCGUeup6f-pT;y4*q~*J|9A>?vMH^nlWqaU%SbRwiF7^J(A+#)^H--9IOh?ZsHsqTl85o{s+h zqq**mgwvRibhzTZLoh~$C*E87LH|)F!a0mGHCwvc_?@h^rTLr-+{;c+C^>a|D%rzf`0nhNR(nD4A`{!~8MEf);@0gT4+vpR`O^)LkVg`5W$6VJBWqJ}Ba3o|3dYmMw9KHv0s94tes83*Y3v zf;v{9^<8!0n{Roo`iw|tGRM2FJF64zc0ZIf z%HutbTF5zW*@MovA5IQIe~bwF$#mLeL#A!8(qfp4gQVp~8oN(JIhPCNBKMo+3XpGz zC*D&J`{0Ol(zfK$?i-%_l708WwtzSDj}`eEX-5n%P9^S3;wSrg;}Oqv@?hQ&(_R0S z$`Z8XKiUelfJL0Q+AVINXDu@`fFBl2xTzJia* z7e&4(@{RqNd^NXkP1Ydqc;p)zS<}tB-KcjcbU>}U4Rw2v&xw3YXTHJmxR8hCaz(w& z!~C-Ut{bvt~U$wsPC%Xhu?p{|Hy&MalQyUL3^_-r06HGN6n+u>a`G+s?ODn_MKTz_j(E{1s!*^+d_hL88Yn*1f~MK0tz-sniuUJL>6 z91rr8cO?6!?LK@Evg7>YwIr)N-t%MAzF2e5RlfUhIj$jU`VY1AA86@MXz2}F`Zu)n zbC4cE{RM14>d&r)Jw&^=AfF{uwAXF5CxZ4kKO+D7kH~)>`ZpN=H6M}xo%gK#F4-P$ zyyq_DHP^37JMI?kQ1e9w$#=e}U(MGrNWLou;kRgzd}{~c$Mv?}zCR4okJ*Fd`@tam zJ~v3d^@HRq9VFj4^rLSs)<;-Rl~aasjA<9bw~Wzf%IkZ+!W>#hg+BOS@&+K!~h+mS4Vt~#;y>YKa!@b*F4fj#Dj`oDdU{^t&o z?!454-rLa*UboEo6@%SHziAT-A%i0HzZd*WJ%^lzqVKN*(>`L2VCsD? z;@q68uyb+2%j1Gv!GmiScWg`2Y!tcKZ$@jq^`5qV~-`A1PT-Q==wU&+K z`e{7mwHo=ke&v|ZwyprCy`=o5y`-JIYLL3HU;B_OULPdit%Kw{_RkO78LZ(y#BUO0 zrrO^dkVmdlXrFhA`qJ&^mL&G?gWAu_HGVTRes>Jg{>uhw*A2+0wyQ+r^G&3Gl*}h0 zuPSrwI|h~cjo=Z-`aO>8Ki9F`FF0y9zp?T)oDIOf7~Nk^mW{=H@>+Y9g2Nq2&WWkB zwH7}8M0nP(3H+Wvaxh3XWuK|05Glk^c?{Pi*ka?YD8@aCJ`m>-2^?1IV zl;;EEVUM!J`M`;P_8&b|Vy$KEwzmiCUR5Tq0{8rVm1ed+`+ ze3hs-2kT<$Q4Z?h-XjZZb_5&qmufHVKjV!(4-MMhV)Vb5a)EttxZ1G~X*XrSa_k%Xe+2D!pw3>vb6M4TxKh*9;yRY0N_(t2f{plob@~98b*OUYxHbP!9d*NG7r7!MS0w0QSm=?Z(p#pS(`P{b17R zjtyQX>T#hy*6VZ^C$rH8SvO>Gbf8}Bn;ecYy;&uz$7Gc}i`TWrx}^+`W4%b-%j%5x zjDtKJ@o9;?7}_6+_YU>0?S9O+ru(Pfc+VPtd-o6{-g6Xu^Nj0pjmDX97wR+CBw~*C zZU@R9LYl)x2EkMhZ4d%8B|e7Ec6 zQL`~ubG>V`y5cX7a(dT}9*J>s#D3YE9b4OdJ7k5c7W6Q_+KE^8Iy}#r@wtYVarg{e ze2SxMc)}6SOMEeYKjgfy_f*t{ZRcfK2ya85uA~gnF68GYjqvJ8Z?7}9CUGzFabCnw zM_H`hv?a6$zkio?dU^k26l}vNv}eqN$lD_Ld^O`)yM>=xGBQM7X_A74+>Y#i^KnCvE#$<`;KhD|4 z6+uqf(3N2bv)$ZNQC5cA+B44pW?3gNb$u3i<)WW+*zOq4`yhj?mHYVGX0!d%QD45O z8!{f_>{^pGG#+=1Ks=5rj>tY7$GXI9yBqVT>x-O6W*^GX2ZsmuHqei3@XU_W7BB1> zjyC+YzyC6Z&qKWI&j%(STq`{7$s%t%&kK9qMtc%RY^grSHztoEAHGz{c{b2zJX1K% z=~A-?}W{ap)7UNyXL#OE7x=z@lD{nu-A*Z$+9k7qyCs>m}3Vyp@}zQtmE0kAv2Bz z^XvuRQxKNp@~Wtp=`PsjZrI&no;YL%I}e-Jhk1>8Zg4J*qHP8p3Cezs04>0I+$D0J zmt*dDrzJ2~P2F{(J%vJ-xF6sg#&Y+BCY}ws zyzMz?OZNHT_cY>WV?3zS4#etnt*guF0f;0-}kDF_V0T=?cc|^|EP<+ z&{p6i;^A>l3ERZ{ID7im*;8@t@r+3cd?yd4{%|Ut0RkN-!)S;

(9SB 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 YYL$xlZ1)Er+5-u;Bn*?T{!rxq1CK<+NdN!< literal 0 HcmV?d00001 diff --git a/android/AndroidOpenGLESLessons/libs/armeabi/libandroidgl20.so b/android/AndroidOpenGLESLessons/libs/armeabi/libandroidgl20.so new file mode 100644 index 0000000000000000000000000000000000000000..7a7cd7f10c216cde3766220e10c43571e873816b GIT binary patch literal 61381 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

(9SB z408`L)r0F#_o_s>XO+2kcGRNJ#?yzt{`#B*)&Pl-#*V|p>GYAq!)|8Uy2B&TM)O*M zG2)p-4*EyC#PP~^L69t?LR@^Kv)+lBK$^lNqk`xw-*cJ!8H73#y?$=+e{cy?YqKE~9) z`2AyIlee5o`?hv6)&Ll9_HEdOxUQmH>>s?2QfIAo5Bufn+n6k;-HOF~)=h@Iayt%l zkK{n#oo?!RyysHLh4R3>M4zwkh4Py7cc|cfEBNLb3wnRw-=Bv!FPme(VPr=Fj|3ha z=8Z#U;ElQI;Qk5oGv5`%{f}63s(VAS+`T%P4L+FPy-#9(a(}?Jouk~^pO?EfCNYoE zSFc%bxo0E#wFYwvd{K^VwEFQ7&WpXhZ<}r4{S+hb0kq2r9h``E^nveG&wA+9O6b+f zB>A%*>e2d-)2k(xUQwsYCr?bWKh&$EoI|LSwoB@b+7=@c?|BF9p?+M5J`CYCgL#2D z2G1gH82YiEI)nL_@8&$`TF@Bx8^~g+dp+c{5^L^w@2#|5n1^h8KBy@t&UN&|fqsB* zo&))6!SfX8Wfu6d4(hxd=b>mT^HENm! z*NJtc+@#7=b~?{Undth`ebWw2#GLff7Kj~rKZ0%h=|Yc<+gJ?2UBYokt9 z_nr$n0X$t;f4B{-m3dx{d-&VAoHLQHN|@-!gFkMJon(9U3D+kZ};=s!)ph5=R$^EC9y*_ zD7zN+k$t@m;d{{5HP_wSUB)r1MZ0nRgxoL(HoTF|dq}mjuufl{V88zfeRG_(s(Y=` zL7hu_P@e0IGmxJ;0sY;8HSaj{nkVXYpUwc>^zJg031GR zc;{Q(mz*^`W>UAn?g6}C#P2a_mZR^jtWof1!I!{KgTD^m4}UxSO8E8gUxj}X{u%fe z;d|iU?h`z^!2|v*_!9VO@Ylin;ctgu3BMlxtME_4KLh_Fd=LEF-6jvm%B~ZR_3&SX zf3oWY``}m^M;!cD;h&6~aYi@#`We_5$j^Mf0&6ck({i-DdrNXQt`#gdSROpj^s#w% zd|Vz+M}p5c{M)+R9f?O9>6x+r5_Z76&S%K?Pd8{XESWWMvun!w2;H(DuozrnWbUV9Q2kX2B zW6kR{Z1uRTVFkU8NPNssAh%AzZ=~BujKG-U9ENK<^ZM}s?G5_GdsAj#(atZSos1*K z8qu`BZ2x13e;oYc;0HTC&Tx1448`95#tGcRxqAC2WhETvts29&EkIwokPr4?+>>Y% zt`lZ|8qpua?M>W{diz|XX&>{Nk@vgEb2@pVtgKVEC#yW(8${id2khgKvF)(`;aFmKYci}ak;U7LBCM`$S;rw7c#S6Jo9Mgk$q;{azuUmQ6Jkk zRMdxlT6Lk`98bL0JQD}6^Re#Z+Rg=A#^-bT`VE8gnsYQ8@w65B#;=lDumw23d^7F1{Ig!tLtt{{$`K*#5 z{OqUV$>qsjnUOi5BgO$f+)G#99)}Z+VW&$`f5;PQCg12fPs<(l?AbOIxGvrL6(C-`$L&cLdzw7Q7PP zT_407N}_HdeS8Zqu*8q@&5cFpxu?2Y!NX*0tokmlp1yV*T^R;u)XJ{>C(VS93ak0= zvC3w%fExZ9X-GUYgS}N#NK`R8EEohaXHG(b@v|iAVpb?F>2^=H+mLvAOzy}0#{75}z>McD`aEB1j>PJ2zdBbIx>!a6Mw@#6&@E2xausmxa>^69il#24G7 zvV4swAJgbMfpxk`#H)1bzxr3~MSMAEA7};W_?Ij>6bf1-Xt74i1fD8rxu6w-&Nk_e z*gAnb)9Cit9usem^_leX*x}#xuh@U0e?|N6S^xIfHj_RcbN-QdM{I|nhfKOXc0$mC zSFHTSf>xOHTd|O!8wK4Z=s`hG2s-{C%YQ32RnSF(E*EsOpu0$)Fk%I-TKP)_tszDH z4ii5f>l4)Tnw8HhXhhIXLAwOqFKC}hp`Wi?<*Eb?3A)atkc+_23w%gmXE)1jkBv9! zj@Sawb?^7DFnan|bb@XNW%?dLUlz1a(A^l_x`dKa<=W!nlb;JFKamo4a}f=(0k8c?jejjw{b zK_`5Cm}x~QYko7&aGZ%?&Sz_88bh49j?vBn$El9fvd213cZ|zAGs~FNx@<|* zzZf*yV$miUYVzar4wLGaH6x2fqb0POXkB*M@(DDIB7eM69~tA^fTbu1}2TgX593}0Kzd3T_rs8 zamDXxw|uv3JmT0kLa3-o*&f$DmJcB;o#eL&5y&4|1bkEFp zF%yK7X{&+3i`AR%5%A-fODFS|>jk5rC1lWUMEc8+yjc@LO)y-9cnebOvC)ntD4U5@~XI2!~BlCnjX_|r-nCcc$3ObuhRf~n8jG`wBI{0^+;EPX$rVSeXaP3L!}Rm|_MtGHOh9u4!m!D@bf z$5zGsj;@MpHQc1(h=%!{UbXyM4R>mIlZN9O-mc*;4L_yfT^jDwFuxW1l=6B-N^m+}4G#u41zq72CKd52XE$QiQ4Hs*;OvB|GuF){Rd#u(U(r}xG`CWN6 z|9%bgyW48|Aq8_jxP0m9{EoWih8j$tt>7Zy8e&`+)xJdY%!}S_&*YGwCJ8>h;a#nk56wLnQ zhSSpv6wLJf8s<9MawCj;5FmDfI*bwK8aJfiM-d-U@DspM1^*nlO~J1KFIVu}z%d2q zz;3lG_%pz36^z%o8S4~$1#qW=@meKQ#8vjgZmG4vVxu{Q`RXVcX?)Lz5|4m2C@#Fb}<%XE+508SGUaDZ`0QN ztl>w1xn7p}U)9pz2Ilq1E%=o>(O*o)@dCF2bHDBq_=mvKvA_F(ok*vBW_yNOLuzJW zdI2!k+p_-awe-ar4g+(4CHub{nCq7!!M|V2KYj?_N2|2=CSd7Ue^A41z=dMIv%Oye zu29BzJ220%=v>Cz{X3QNqY(EqV6K;Bdq!9)YUXEsXKT0=nD$rp=Nc{j7GPfgYf+Z% z`8F{3k5XQL2IhXL6zLO?el8f*$5P|*IbgN@3xT;GuM+&e#)^ew`@RRfajO-<{yh!M z^9wn??`!#oVT$p5MW$C-Q_f^SehW3+2)s^_=Q3cPPZc3A`}Z6$&xa(xVZwHhA^DxA zU^nmuz_ia&zpezXP{yxT$R~_|DQ}(_)mq&<9UTFzf3WKwgKD`#srS zJj89Tf0>8+e>O1JFZ+O5-(|qkvHVrQ+%L=W_b~r$)_$1zpV#ug0?hLRIUa5r4dKYI z47gO$U$2(Fh#39Z215Q{)6#zc%=JwOcAM!x)6#zj%=IAUL3{CME&W~KBItu`-{owS zaAtq;Po2LvY3Yr?-0w@N2;GdQJJi1w316&qZUb{aY8>#QsHrr6a4D zh93gvc_sVH{0D$fK)!_n{~4I))zW?xBf#@Fng2E>2uJ?61G^RbwMt9h0L=3S5Aw3U zKLGQ5LCWLwQ?dS4?Dafg>B#?P4F`d1YE$Fg1ze@*$1j0-o+0@U|CHp$`f;7s@I+vq zuR4*&_SFOP{F-V?{Fs*ie>D68Fwgs?d`6y@Uf&tOJRgzmxk*cJ0p@v})UVxI`mcdK ziu}(Qi}NYqQqeviFwehb`8cq2>~EKbpVM#xnCEq}{DjldR>fX50Cy_&KL#uv`F|I9 zyefY!{dEl=)o{Ot3&vqQZcNGlW?)snLcrYrxluRAryZF4LpgpA0rPxH%KIf^;n?0@ z4Zow|{4-!LP`@0{Il#Q%BjvLmSUU3C0?hNPT7=o2ZeX5YmI-{$cm#xF{!(CdJyEWu z&j;rDkZk`ZVBTMn?RgcL=l@mU#rg_AjrC3_C653w&;R6n`!+Do-z2}Iz#EnPC1;|1 z3^qpC$63HU&#DmoHv;qikem;%087XI{293TZYzfE$^DE>W&5BT8a@x0=gTw`%pX+J z-H5wO!7RT6C8X!8FFaOuKS`-h_vp6|=~GY@#G(*8SurDOf~yKz2* z_U0qZ_C60R9n)WTOJw!;&%mlZb)J=;K1#!%0p6*MM?Eml^T?LI? z1D1~Ub!qrn4Zoz}H#B@q!#Rbx7NLK$!JF-w2`nA!yFtT^z-9H&DWoy~FSPWRfYtf- zDsU0x;S~ADo`dz7GCvjoOUL?_0P}vLl;7jPJP$5H8teNzFwbW&EloUfBHDj*D*rrS z-hY$&z8P3LQ+^uW3(WhwQr_9;%G~5{7^egC{*mN&BQVc*+(=`4+O+)lYxv6whAJ43 zE13L$q~TuxtNV#pfDhk|jBu>)9W8%01oKpVsy(xTc|TpYcO5bGsY;YTKtT$}`jfzI zO8N88gFFH$dlmua{b?zmCxCNfDS7`4SUU3iorVtsS1d`jujG80+mi1Uz&wBVAe#OA zvX;J0!{5>HQySg}%=-cCCixA!AicfhCe&*|C)V z6%-@vOI?5bzz0I9{(cpBEXqsy{RLP$%IjaiynmXDFxy*xp-i>pQ?22fG~5Kt`xS0c z{u{u&A1e913EUS>jsHJ^dH+M^zid)^eOCh?Q1mST>{Z5pJ8=DyRQWz&-hY?%O}Z$Z z-{l&<8u%FGBggwuE&T}%?*is|VL8}RJ}+qLuK}y)U+)lawc0>?`W`Uvcgpr%!HR{W z{I3O8?Nv2!q0+yHwfwt*d4H)0W!at)C6b#pUVOoUbmTt~nD;;SAraBC19Snv;W+0y#;I`>f}h{ z9TPLoYJb0mM@_-{2ley%&GK`Ar5lYvt%jFqxDD79OUeHM;I)dr{2G|go5=ZfIx0$y z-w0zOD;AFRT@1|Ui(Ck^zfoX5zaabnecSi{*DLsymht^t;g?Y~*WL0~@r!tr5$z5~qXOC&aY3#%^04~MGpQTFCW z?}<55>%#f{fan^TDo4qjC?clxv{ z-`rWVs%O^tYNk!En#u3v$zEz73sgRisC|2}F{FO1)o2WfFX>JWB3#+Z4+-LvwyF3z zeyC%c?N7y9U;C{NFU1EU?R^lmven{&Ch^Oj17AJO=tHHV(#v){q^{oVX)5ESlAoNXZu5Sqk>+yRxkFPN_J%q$rOPlM! z1xjaqTevD*XZ||Q9!u-XrPegI`Dxzy0sQQ-&1y_(gS}>`DsokznLqdo%n3%8_#+wd zo6-PDLE$nQ$?5p8YD#I9kJ&4lZS$km6~R{80#$<6Z#-?O2UJ4H5npmQHAMX+amJtM z7Q8XU@D&5Znb{9Tv>6~z`#Ie z=^tg4cK^d8W~=WhOBxLG3$50-SZ&o&T^DR^4Yy#tX5gdCEfx40bCXSj zl%_vmX!4qeUsngH{-zGeW>_g zpQe`UjMN%q&}poG^0_fIE3_29sj<;r{$yJ;q)z+NwGD0d^ zvDO2@5Ps|K$Ir*@bTxg&gKu;PAu_2mm=pZ0xcuI=SWfZ-)cpAPfYm9rYj3K8&4C+& z^-)`cWSVtVElo2zuml+}qV`6N^V6O@g)-0ax863;28ar8QD_M_;_K1&xK_3*`eToU zxR`Uknd*XdgC9%y#?Z{>lX#I&yM|=6u1Pa-cCTnlL!nvxX1l2^R=>S?$3n0b?`y!0 z0bjZwkcU{Jr(1nf()?2YgQ5 zo?;GM3b?=-_#nFZ;d5mdm%4yi8#r?zYSW0quvy0r_8N@h)9U!z4$*R`kZG31)VIf! z%XoE;i>vs|+n1W#rvY2?5f?tRLCVqQl7d1p4MSyfL%1s3$knE`z4KuQ=!@V?23JMp zBH#^2P;1&WWto6~aZqmU>mm^poQ!PJ`q-KP)&3=sP+&&*4s5)jWn#HQ6N?IElT-x} zqL^$`6rwoi8kP|-+5zh%Mpb#FSliMHf7EX_DHMnf7ZZ9q}2-7i{cE(%S-q506bld(syY_+Z++#kuo(9T?JwO)(@9{RIY+*}fyUG*=< zn~&7SnVURBq;_)+{$R*nHKLUno)XEvLgSRZQpu&My;5a!^kcS4xN-#pck(Sy80gB@ zjMf{_98o@H4HRRHO&5=gd^gOQv!Eg)xs_sD%hqaBOKz2HjXWA}y|l?zX>~V}z8DZ2 zAG8-Wq}e^2%M)c)*ci%iH7qn}vMEor&oWNx>47b2m<#F;U4+u*V%N-`+eV|dchR)u!Qq>ZwU~9}x%PG!r zg<5gNn6~ne7GVA?uQeak^`&{;gbvOMh5b>^Z?S?-6B^QS^}!iYpxzRk&BdHDUsH=D zu}ncLahx}>YOzj}Q}1b$S1S$~uio~=rHE+YEJIvk(?)}GIEg0#%0|;(yVViH>DIsk z688jbsZIK}Q8|I*B9LRIUN~%O5NZ_{JG(PxK3?#LH?j;Y|Lk`D zWGu(jvu|7N5c+JbXlx(u2readMT%~u53OZ>#BIbtTc8dvu(7A816rmZ1=tdon1^#C z1J=h{S}Xg8k2IaW3QW7f7-T9v^#s^FQH?H(1bjH|sB1!v5P-EnGJ{xI1{wn`w9}SB zwx(dpAYcWq+kRSAThda;G^1044_{LBHkvC`T%XcUh0*skt8DWcIk==!b4EFE!VHiX z8f{xNU~+kP*<1nMmf@KS86A~jgw#tD#Fw@S2YcS2pKNpA zk+z__uH26(r$6QofR zKF#$wxwKWQ?fX@l8NvJ!mydy4nYP-44QZz4NH?`Ipi+x{BMnmwjrscf~F+3uFr zm()3m)eCj0ZJV{QR%oX!nWs;9xeUfgRN+~brMQ_>9l_n$hG3n!h_O`#n5i>HT(51m z7rV}k23Aq9H1V5OH^V~)OYfxdBu8zBEY@1kRxxT*><$~Jigk8pYe>@WhRQ+bb0gqu zPmfSg*`}sH4Uu-ulIN1v6~|WVG5b>{!CrH%p;DB=rkxnD4AzVmX2Mja3@4`g47B+q z*Ptugl>HyjDK7IZiHoC{2Hqcq&RKmHivl_5X=^-R0B2-=dlI!)EGfgR-4f=y+a6=9 z*@AH^`a#`K-SQp$GGR-vz*w~jDIMc3NijT%sO@#hQWN_Y)fz*rZ}@zW-L6`VP&=76 zPpkcRWOVyby^*aAp{*8+>4bA|TgAmXVbI4PN(}2pGe$Xet2}+7WZqs;o{^oLy6_-!+vk5+;rGjC*{g!7t#+v2u5 zsXkh3i-G+gRM1F^=bUf>P<~yJZVhd51}Nr}2KD6rir_;Ru1d># YYL$xlZ1)Er+5-u;Bn*?T{!rxq1CK<+NdN!< literal 0 HcmV?d00001 diff --git a/android/AndroidOpenGLESLessons/lint.xml b/android/AndroidOpenGLESLessons/lint.xml new file mode 100644 index 0000000..ee0eead --- /dev/null +++ b/android/AndroidOpenGLESLessons/lint.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/android/AndroidOpenGLESLessons/proguard.cfg b/android/AndroidOpenGLESLessons/proguard.cfg index 12dd039..b1cdf17 100644 --- a/android/AndroidOpenGLESLessons/proguard.cfg +++ b/android/AndroidOpenGLESLessons/proguard.cfg @@ -18,14 +18,18 @@ native ; } --keepclasseswithmembernames class * { +-keepclasseswithmembers class * { public (android.content.Context, android.util.AttributeSet); } --keepclasseswithmembernames class * { +-keepclasseswithmembers class * { public (android.content.Context, android.util.AttributeSet, int); } +-keepclassmembers class * extends android.app.Activity { + public void *(android.view.View); +} + -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); diff --git a/android/AndroidOpenGLESLessons/res/drawable-hdpi/ic_lesson_seven.png b/android/AndroidOpenGLESLessons/res/drawable-hdpi/ic_lesson_seven.png new file mode 100644 index 0000000000000000000000000000000000000000..10bb8f4e4e0353e1f4a9bdb18015a668789c8104 GIT binary patch literal 11974 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 bK7u%`5-DEBQpTeW%>gP38ZWBkEJFVm9IM$# literal 0 HcmV?d00001 diff --git a/android/AndroidOpenGLESLessons/res/layout/lesson_seven.xml b/android/AndroidOpenGLESLessons/res/layout/lesson_seven.xml new file mode 100644 index 0000000..efef8e7 --- /dev/null +++ b/android/AndroidOpenGLESLessons/res/layout/lesson_seven.xml @@ -0,0 +1,41 @@ + + + + +