From 71cf9fb2f2272696b0a31f9aa5280b9dbc213366 Mon Sep 17 00:00:00 2001 From: pelya Date: Tue, 25 Jan 2011 13:26:14 +0000 Subject: [PATCH] Added OepnGL "Hello World" project --- .../opengl_hello/AndroidAppSettings.cfg | 34 ++++ .../opengl_hello/AndroidData/data2.zip | Bin 0 -> 24948 bytes project/jni/application/opengl_hello/Makefile | 3 + project/jni/application/opengl_hello/icon.png | Bin 0 -> 14646 bytes .../application/opengl_hello/sdl_hello.cpp | 151 ++++++++++++++++++ 5 files changed, 188 insertions(+) create mode 100644 project/jni/application/opengl_hello/AndroidAppSettings.cfg create mode 100644 project/jni/application/opengl_hello/AndroidData/data2.zip create mode 100644 project/jni/application/opengl_hello/Makefile create mode 100644 project/jni/application/opengl_hello/icon.png create mode 100644 project/jni/application/opengl_hello/sdl_hello.cpp diff --git a/project/jni/application/opengl_hello/AndroidAppSettings.cfg b/project/jni/application/opengl_hello/AndroidAppSettings.cfg new file mode 100644 index 000000000..8352ab7ed --- /dev/null +++ b/project/jni/application/opengl_hello/AndroidAppSettings.cfg @@ -0,0 +1,34 @@ +# The application settings for Android libSDL port +AppSettingVersion=16 +LibSdlVersion=1.2 +AppName="OpenGL SDL test" +AppFullName=org.opengl.sdl.test +ScreenOrientation=h +InhibitSuspend=n +AppDataDownloadUrl="Gamedata|data2.zip" +SdlVideoResize=n +SdlVideoResizeKeepAspect=n +NeedDepthBuffer=y +AppUsesMouse=n +AppNeedsTwoButtonMouse=n +AppNeedsArrowKeys=n +AppNeedsTextInput=n +AppUsesJoystick=n +AppHandlesJoystickSensitivity=n +AppUsesMultitouch=n +NonBlockingSwapBuffers=n +RedefinedKeys="RETURN" +AppTouchscreenKeyboardKeysAmount=0 +AppTouchscreenKeyboardKeysAmountAutoFire=0 +RedefinedKeysScreenKb="RETURN" +MultiABI=n +AppVersionCode=1 +AppVersionName="1" +CompiledLibraries="sdl_image" +CustomBuildScript=n +AppCflags='-finline-functions -O2' +AppLdflags='' +AppSubdirsBuild='' +AppUseCrystaXToolchain=n +AppCmdline='' +ReadmeText='^text' diff --git a/project/jni/application/opengl_hello/AndroidData/data2.zip b/project/jni/application/opengl_hello/AndroidData/data2.zip new file mode 100644 index 0000000000000000000000000000000000000000..8c8d8210976cc63aa81be9b2aba429810f7cfa1e GIT binary patch literal 24948 zcmWIWW@Zs#U|`^2aLX{Yo9fD&b1s2_p*s;IBEwLUT3n)6ke41B!pXpVx!KYegi9;9 z85mh!Ff%ZKiMiFx)he-9a*uDzy}j*hXKr;&xp~7uM%@#3(80h@W1c*tN1}3=PlU$C!GTZY}m{oIY1QaA!w@h^2cdPexMc#TN`; zT)d)$BvNj2OgiMtGu2Uqle1t?XA{SU9XlE%ctopyXx!jkp*(5Pjt7rAR;>J9`#$OR z)_Kz>-&}vK^x)-L$L~C=T)~*}!z9y8w2$G3SD@3By$?Q4-1t}7?V&?NkvfA>$!5vU z*XoiS53cslpWj!)u!^7I(M}$AUWtGcatX)y|GVuHID3VelY>#R!28LxWQW zyXUQxG;iQHI`D6G$0N2orx?~fc<#N$Rd`Z?_JRk0wm(~ZxqjP34WAcx?%3E_-I^dP zc-3^?r7wRs$r#C8__O8r^W*NtrZxI6Luvd_J84^}h^F&oTzAh+nqu@)_xMDu{+>jZ^G;in_99xFHc^(@YrHQ#cKDC-hzpX z-MTggm8vzIGMTnQf1#eIp5=;3b1#RdZT5aVN!9seF5GQG-B>jhzRH%&Zh>1LN^-)3??LG)+foTa~(FA9)tRgQDtvTcL!);QHY zOuc{8#m?s#EbEEM%nf{Hv`%!|)$Y>2Go!^%%@1)p`i1rE(wD_6H-9nSpw3^>V$k#8 zBZqg^oSYnu9B&!^H@|p(8qIl{F{iLJO>f%ip36QjkaH$nPuX+AU2)16+66v}6U*Oc$H7nber$wF&7mQ1de7Hg{ z>+%~<|D^5!*>A=Zl3O+vmR&wRcboO&$qTHb z7OdJd!M(?Kn(yYwuZBmRI9?eX{%LyLSMb@CT{eF&>SwY4o%XDOZGBJdzR5>p&TrGw zwe?*cwJU0A)T>R?H^19uvwcnYqUhhY0)Z(p)4ck* zZ1U7x&A7zvJKXm>|MYc>oA2l_Z%^{izVP=irT6JyUjA$O-{_y4MfQlL7~5Dr5&I)! z_FtoYv$8$oO7L3E7gBom9j=9sORg9dx}37{+;nR!cbL3 zm2>HwL#>B=r>$~Im-LmKZ!`bTk2hy>F20FUbKk~r+Uj-Yx6E%<-|}`(>|4%P8|@n1 zzSHOOM8BEee53oFSMc?ht-QuB`#0_6tvgX&Ti@M!S2X35-_ew#ulAUpe%SVV+sSRG z%I35^<~^}?m)UQ#_+)Qkozveg?s_=;$-R{OdiQVmGitPa@I8{nB+F!fT}-?rj`!Z& zH9O}>E8f4jd`q#K_u9%QKY6zuHrtXpOYn8f);Fn|-a4oKu0J^5@xo*0g3Mzjj>mHL zY_u2N>%J-P{JCGh_fMNwym|KK_I29ZUgcZlugO2O{d4+_&zYaL+>8-#Q$O-8q))u{ z!KdJvx#ih^rW~2Vq#Nyja)!@LA=B*Z(zm>ASH<<@Z)Ew;wd;vIm)xh~w;SGNNS`a< z-QvH+Uz^wZnPl6$uAh@@XV?D!6~{7#J)j|?$(5~(S7Ozh@@?A~QfrcAY~Qf^i%Q9@l2j9U zF0!z7_lZg89&X&B`)rr?Kec&k`zGg}Ty!M(yuxWm?TDiphyTxB-M!a4qvxViby}!) zxc4zXzWMDFxAk2=; z^;18VncJ9*+a58VZC2vDmfewXV$zh%iN%IV&OZIq0zNv<3VRrSDKv?{UHqp;wC3N! zbdJzer+%BJKl5|$*__cSPpS@Mycaj^!IC2^=@+$xTA!Gm<~}XV{r#oX=L^f$2e!W` zQ#%y0!t?gC7AcNgwi{*_HyM}8zABAcq2^ue+x_q63C($1UfJxr`FiHFm1|kn&AI*O zefAZ_D}R@4yJTSL%f_^J@;xc(d1`g(>veB9^Kk4k;5{MruWyA})bG%xud>g6vDzPZ zDxPawBU^K@WAj>tZPN?v6Z)NN^|xPN|8?q?8C%Mud+#4A`p9CawD{G9?Heu`{xM&% z-M0VZA=%}>jJF3zX{~m*I{Qp_n$9`@GKo(mf|pla^1mb~D_~Z?UExjEmKgj0Q*R`B z&0l)&6nRmh7IA#v*=QudJ@tBUe!I>4wkQ)hF#%`A7Y?Cl$9_-)!5j@=><-)b+#W%fDZE`0c`$(w=2E7tRbl zpPf9;FCuik$3_M@jV`u*AO&Ihl*Zu{)}tt`3z1M}}4 zkMGl8tbcy@jQT$@E9{;x+ih;UA}_0YN)^ximi4Y?NB^~~=XzO}n|~+o_idgE5gWZc z@4XIfZ0GA$?T#yVIvz`_l&*j-560>Zf#{oqaa=Sz@hdt?%{3M5CX3 z*Tt&UcaAp@6(e9lnwkY-CD=M zAakoeU%(-Z&+LQ3l-WH^ELX%h*qAuHV|Vq6GdS=}5EKvm{-^fo>xYYf-}&iUmRFjs zcl}!NTTj91XJmQ&b=IWz=tXPrq|dvwOy~5Ky4?5oZ_hjTyf*v&+qJp-U#>mIIr+ex zDTSrBMeon~FT8za*Sr_szSzB)lR7v4y_?+p;!`Rb`;OJ#GXC#m@c*8;%RGiYmlO8t z%zyp!6ePSj54^A3&MwTrYQt8v-CV+lRe?p0k$s-iDP{(L-bIWJ%WWJRm;bZ3o5L7+ z;1}m1KgB!$m6!R6u!;NsU8nUV$0}0dcuv0Qq6euws+@f)lblqfm>zt&*q_Mrayr*t z%XVG9`wyP+-}O9Zlq{{;lNiKs{+nZgiANj5*;9?v0@&(~&Ddc6cg4G(eBKMbb59fO zIqjayscqsqu|$Tsi{}pq>!!_pySw_&oZ>3Gv1pIL!*>}96*jDq7I*8O>HRn6Wu2(I zrD?9dVGet4O~#EK&x$o`W_`XZT$(>YXSPektRjVrtj}K;xcA2vGeugidU>{Fwz%2; zxSJ&nB0>|`-&LA7atbA}-MYL|F#qL=m;l|g(OMy)TJp=5M6TTADse;2U`saN7JZG* zXE(n8+HyO4-*)et-(K(7oGw#iG503>!IKI%jegu+rFHE3(vat|OOJf={IOZ@=u81M zoeOm-Ne{UDG}?Qkjmtyhj1)XtmcLNo)?`p>782YVRFU#xQ|OXszOQ*}rs*F!zSl+K z0+W=0Uz4!$O`TY6=35K_TaxVP0S`(VfEov2F1arUYC4g z)scKqRCQRr@Vol*zV#CVC#djrzpuZ)L4IABy>#d7soyXAbH<+%m5Ep=9j?@F>dh{; zc+vuCXFl&kY!me}CU~u2I^x|l>+lC7L&y1B-Q)UeEI!@470|FI=hd~+^!AG0zh{5O zIiGMnztc%X?$6@NLtA(%9~?XV^fBY<(_L*nyJjj?GU;c;nE`-E*5N8efYn1MLxZ%Dr{DF-0{*z{Utw_UbCuuZ{E~+&s%j$TPmL@ zhhnrr!-wk*0XvngjgDTwBX+Mtz~0*<;%2Omy1Dhy1LAu8iSOr6F!bP>+$>od=W{M# zd8Lif+V2-C9)xdIO_@4RC^A#%{bp5u+wT=C^d6-Zc@>pNw%xnD_T99<%a55pt$VQH zC!^VqDNLRF_BgUsZ#l4uFN5jWO-;tHn*{6SE@t!0d=wGKzFP8S<%G=-MMo(&F-(lxwR##P2I{#jlS`}8Emi-ObL z!UA8<;XiV^IoQ|R>%q+}cUBzS%xckJ{&=ZDB3nV!8WT&)QEe zWM*fJ-|+B7pTPxQOO1%;W3J`vkC$I9zzlCCs$^8Eq*ThLCfw^PwbU5DsN4` zoI2EYVPnlhtJ~(Q@@u>z{%_xLqA%txKns z6RY=>q(_;OUn}Nvc(a#Hwl~|X`jutQsrA(>u4~3^Ib9#OKVITy#X~RiA1>#L7p>r0 zcyr6I9ZH*8=kQh6xUTS2KfjdWiQuLO=~p}#wR?C?|HIt8#b*Cvb!U+)Kb0+${@Sh6 z>J6SJmi>ok?}Q}Y{d*R0MlbxhrGDk16Koo1Gv)SKAB&9n|BHXeFV)4@Ur#^r%;m8# z*8%e_r@v>}UtFJc<=d^+Wo)nisRo~wTgJc=z3_AKtK)|ZalO5?pmTYklUzgV|c=^tUzMdc^iT=uUpR`>}oXPt|Up-@S0&{S_QPrkMYb zbCrvHy+f(;pjdsv$1989`IRP%-{ZHMb8P;qg|)j<4(<`WZ_R9da!&2O`NGj6m8n0J zf0lh@pZO=~`F$DQUC)>v+*%m%x9yLOv|{OHt&scMR>(wt)1OgOWO8s4!-5Seu?0`0 zb=n$P3N#(Avz?r@x?;ld3x)rZ*F8_zy58yA)r5leJ>4K$-nJ=YJDoA<;-TwK# z{DtHt-K7hoe=}JB*fw9aYu$gwwVy8=W$4u&n2a44zjap0GI6^CjCV)np_W z$_a+i&xhXYH|wcTnuQuXQx01`un{G zyFVCo-(u%6J8|U8CGS5CnkK6P;}6cglkwGNqRQhn6ZguhM1;QFklpA1>{)~6i>qC~ z{;40D@qKQYe6o&ki&a2>)Qy$mVGE=tel1s0t$a{0{qU5T-T6BoU0``KU3QgpTggFg zZeOJXGd(RP=)Adm!Lww+5!;`8#jY+7wYzpdU9sc+ZmG(;+g>-!CjGsny~4pnN%2|n zzWeHuorlV;#dhCbE4i|Bm-QTHmSqd$l>46+Yxvuf68kxBjfT+q!1W%aEI& zug<=-+_7j@+0(o7*Vxd$M}6--mWvZC zg{Ag?PqN)xZY;4sJ=`j0kI0LYYK8>~DJ%#7iGErxxqn{d*-%f#F4w2mPhWYLAbQ8E zrMYl&nhfWfDl3yWeKJbB<{IjWKHm3TxMrKWc6(yzR^t_drkzfASEk5J>SVcaz3~2z zsz(0K{f>NYJqsUMzY6F3|1w>|;O$8>Yo z^P|@!cq8{&U902#-+44^?#jl3pl!2?`Aia@7x-*pJZy34`}_?NR;4dA&9)hzQ^6*xmV?(!VprCKk~>OFA!J8#*7aJKXlUs-oAS)6bG zdcp7ip-vh*%HG^tpY8vIG3JYO@`=ld3wQ=p9@XD7 zJEfql&XK9GsMYIhB;Q*1)z_W}w>CXWpE&VgT)B_v^%vK=QUre2%-gN?%|^_+X3yQp zFSh#j?f+Qtc;%~hmGw(sZMnp1@k^HF6Z`3J#aGwLvb~ersnyifnEuaC=!xp$8Gf%8 zx3%87k-EPBRa=$0S8ri2JFCa8iThUVeI{wN>aDo@_K5S+Hw@35yOZYF-C}ihgX&bV zGanZ7&3;`M@c7u9|6eEUxqs{Kp80}Rx85Hd-7I}N?-CshrE`~sQi0d{*>2EXI*-AuVu;1 zsx!B@x!#G0*e>|@cC_%tuzD96kC^ir>3N6rPMit7dGW;ejNRR86&hbdj!sr9NaF8a z=V+%lqb+{@KdoOoGK22^c<<8I)_v`QSHX?<%NhQ@w?4&Ca`bNgi}kN7T=woeS#m9* zb&IWB=&^^#W6PGSY}x#5g~ypSqMy6g@8T#DRX!a(VRQdmWg(Z|ldjc9&s2;eoFtJYQ{Z z^8fWeg@^@@!ybvKmvxKR->|v8{BdoWV1=XK3Ikf9s$!|KYsX=Q`c#_oxy<$ z-q}05G8tDjmM+M@|N3$3O_xV%UK<-KEFM>$dS!4gU{#k!J7Y@5_Osku43kO$~B z>6}@G`_^u--M4T?%SOSIv-8_{vVMDhoqtWE;l$f8?MEAy*sV5ndX%(k&ylY-Ebk|; zbiLSCDi~9|yfS(di{_jD%%!)a7G93rH9soWNm1gS<1{;ICNmW_2iM7Q`(I@pP+#ID zxysW}`E}x@|ISlt9Cr6=DtSC%^kF)`;=sQv`S;_BR&L?4tgxQAJMVYKo`17#pWHm0 zYk%p((UQ&m5&M4ZbDhS)@l&C z_9+YB@69cF%RIHI@c3-4rtiCVH%zPD?pGQ4;>RAhMB6K?Bmy5F3S4E>F|k|y)nDPu z2i{BVkB;M=(_1lVwGv00-Qh!D7J9bt-1^vI^<*ulSF5LVyj;z8YTMgTOYId;w#I!v zv$FB)OzVFgHes{gvd(muvn_1V&gFU2U-{|YcV5G2@%%oP)m89P$%z}=^NzD{HL}4xTJUAEPBalzIma3Tbf>J7`et@dT>8K zD4_2BU8VmoCGIFx@CRnh5Brv0u*q}gn%Q3Yet%|7`Fp5FR(I7_Lz9=M8jL>l%9U~& zZ&!Vl5bL--vHW7l*GhKp&c(QkKRRTy{fy|cJw<}Pmh5~#~%tug=Wlqk*wNhXN{27j(k zQ0iGO!n<(o%V4f=+Y(Ek|Ib!@^}F?LP`A8AdMg2nTinZBj1o*#F4;fuKi?(WC-vCH`$|CMVZtaM{B$gu z=QtsvG15RuV!7nS14@Es@A=No`TncyOvvZ?L9r!~Z{PR0C#L%^@nUe(+h1J#=w`6> zqaSmgNB?;^X^DW&6_pl654Zh#zG}ke zvdHC3Hw`u=U+W7CdYAq`=kJ#ty^j}U3+zqrsF%Lpbn(W=e~%S89htOdcyLGQx#@X@ z+wN7meLnd@%if*g^JlZHH2M4_`V-1b5D3i@y|=QiQgS~W}WP``uvSZ@dxLRN{v5yha_&%(ka_J& z23MTCDi$Bp6xB`r`#FW^u_a&Pn#`T^6Pj!bAPdJ?uoX$%@@BFXqra+tekxQ z@AhXAGg>0;W|r++CwN}DT8n2P>!J%2eR5PkuRZm}{>>LH)vr%Ccvs&Pm-U|gCSLMP zWVKB(=jO|+zKJP^MB2~sUX`@$<0qb+<%(%$Jwm_s>TbCFR-omxf1Ccln6SPYWOOqpMMP-W4`Y*s{QD)%d&qBU+$TuX}LS*{JbxBGD`K-Vq$*mg8Hm*7*(R;&(`}OpnyKlVS|KuUpapCTe zxa=*GwZ~^nnxFqOOmd3cg8GmDn}ppr@4NRwlsQ}J^3!z(XU&mVw^PjL>cJn<8+rAm zZx*~`{WQl~KT8+ul2*XSj3{(5J; z^F)#Dbj<@x4T}QU<1|fgn>sax$G$1)YTNa|;+>Xr(X&sNR13aTNm!iu$jI$E_3yQH zu}fsH|BB(0m)`up%HfC09qY!01%LErJ$`MM-fHiiAJOYk_kB@|iB9%Z!&VuYsqVTf zQ$Oxfjox%|iRi0{>RavcjB8zE{B>G;AU#x^dOz)-P^Z zHN`S;k3smS`CNL5Iwk^|vRMn|7aTma_2KVSWu=CX$GMaR6_egI)>U!Geo*bL)j2TF zDM_*V()-MYYm#L@>`VeN2iL%U)n7wyHx1IO2)}b zML~@4qO)vPZPw2b}rWko5oH>a|G1wQG_df2%CwW+-K_3r@@LiL{-@9oN5 zd)-V*KjLpx@@2_V=DXJ|X1oo0;-eiTVqbX1cc$5-IUCR2+LpK}{=}Kc#c?s3uaE0r zu9_4$H?%!e&hcH%8qJL5;Tn|{8;s2U2nUy46j~g^X8-;5-RXhdQqjA9yB4U{_IQ7oxFN35kLTY?{yUot zF3z$Q$UnP#;SGhtOubFt1!Y&56`2~G>C0!Z-gWdDQ+S&2r=?tbvbq>-_w1X0C(+^F zy~4aMmXg(G-qVeU$0zg$>X2(6lQ zGE3HQ!sEi#>HnUknw`1jHTml{Hoa8dntsb&7Z;l5RGuv3O?#k{bYW4=PeBvUXB>%F zUe0d~xcl9!An3m6ytv5dwKnV%?%w!jFUdc_>r`soRUfhKQu`ujxb9F(l+}8}D#)_z zfP|s<(>Ys?y=}J@t~(HD zf}33ON~L)-4(D_1SJRDmHmzigi#@VPEmbzyrATcS<%IOw@Rk+?rCf3 zRPGODJ$ojAb;rE+H=Ao#t$EDHrv35mb!F2hr+3YbmUuN|%7Tdj5eIiZ4!Ls0=;`6^ zI^B1hUs#=;CnfTAQPEXdt3MBB`8d3tF8i{Fdoh#1yifn%A3O8pg{yY>+3t&4kI%+; zNLFt;uAuVuCgPpEPVgT(8x4v%e%Ic{On1WS{0*oA*X_b4=YCCacyj-E{Zd zgq=GiZ$F%`$)!H|XBFGdKlQU8EZVp3hJAKmgW{4sEuyEaCVvi&lCyaC^2@8&x))D6 z*cv(3v3!_(tc7Lz^m*yW0yGT%-}abNWjk;E*FVR#)n5CDcPxIVxNcMUgFP~SGd?M; zbBSVQIXAsrTx_|?2PK7~kiU$Iu6Ko*1wIwCuYJT4{QP9};tR$LWH^pLa=t0Ech}NK zlcKIjbUi%XnKVN|+gX2EaH`c;Y1W1BEL#sbhss_(z_RDh^{p-M?B(7qJ+jLm1c|1w$ zgq?tB89S{=7N}Wpg6r7Dd);n^|4ltkJ2ZZ~d+TRr=C-Ea>tu?Ugc(HR zHGdrznsfTUPtk=J`IgM*wi(-g@43%2Pw~k`1<4r)83ZI#)s@zWEw z<1yKssh;t^uL(~|NL8e?lTFVP~~z_W?8-Q zt8-}dr4;ed6Yj0AH@wvhIeB#H+U$RplOt6E?@zJLXWZFoeDK+wo~>8vorSo*92Sm9 z$k}}$WyY(vb!thAcQ?Mvt6Z48vsC1W?To&vb3be{`y&jO%J#%5C78QdOn>qt&75KN zt?N$5?%OVSIAi}(V=Jq*B>^pud6~+2Z!TOQ7qv9;`Ilu^m-<+(k!^j|vSY4@FuRpW z^sl<+WvAIpGa9>9TT)N3oHSCOknF6^eVns#7h4bS&%&!;98Y(rY&Cz#!qVX;^1^k3 z?CL}5eFfUV9-5O|bhx{Fo_x7*YB@tzTjZ7^-}^VG8_llFTKGM!{^8S?k}RPWawS$3 zZw-X^g$cS;|94EwzBYG{SNOdRG55~b^ccm>cR1F=*6=~JEtp?y$3$mq_D+>gjsFw+ zCx1|Nc`uM%p`82gSM7X7ro1JVwdQkrGne=!|NCR674WBOU8V0|k))ed_t(#qyH}U^ z-o-qqc|yN{u}7@vw~2~d)D^?}+cP=xCbx#z9#`C-J^RC-|L<5&q}?@M*Jg6yqg#RR z^v)2UZIRBr1|p`@PPgowJD=~`+%Khbdjfh_P1nAA!H{#Izwo=qU7DghEbnmg1gR`@ z;yV+#XY$1}%o~2~|C+Du-s0hH&-f>_c(FHY*Hrg_+4;wI+>E?=xgf$zZT&hcuNG!0 zCzr!plLh6CZ4;gq{9`+9r0p&1CQ#xn+rXag;aq*O`N`?S|5floCtlI2aeHP}Ji#j5^C%RkQ6X29Le-g|Z z<$iHVbKB(!Yu3Jcvr=UN=k)A$Ew$YlZxY(Q54Cx7&HDCx`RSHp%gU;vtS7(NvCidy z!2~JePnvt_F>!ar)|sCOkOpXUc0ev=8w+>;a8J9gbz2xmOst& zdbz&Q!e&NUkB3HdL$2A9t_yOWcXzDo@0xbr?wl!$U8sWAttjqC%0C!x9r)R{O|txJ zF29{Quht|Cjs8DRISVb=hx>Gl?}!I@hq{Zit*bqu*@i zMdx_0$*^1~jBV|k!l1`-r}OJ|;We>Gr<_^Z(0BUO+!$A%>+hYl>@WLFx#>51Mpv(k zYiN>!t8{gJje}pn+YMWuZgS17P`!HV3FF&oCGoo-xhti3GtcN~;z+yU)sZG4u*vI? z&aBn5YD5b}`)lVnJo>omtdH(;2kBMvlC`W${=d=Cvc3}aG}C%z)|}1!sgGJ{J_>@C}=MJXyfQ z=+S!9H4#fok4%r1jVw&MzJb+Q!fn2d)V~L_WTKx6D16zjcg*Nx#fC`z2BS^OtPJud zAGKApikvn}*iC=ksutS^sr!O*?6anyc3BiqFtx8$!@VNL&SYC(%ANAkHA#(2qzvCC z2P8!EZVV8&4E{XF^y2@Pf=N4F-o0MucbtipP5N8(YVQC3%+umO+)frXYCN)xjX|>h z!rD0(pJZAlib?(|o^zAuagV~c$@lk3_nq#&cS7=s`Tp{x)f3G;btcWp(2&YGYnC&; zU3+rR7KsBV*iu4z?-^Y%fA*AVuY>V}-c;oVu~IcNpX)dFY%QL(?7}6JyU&k1`4t(x z+5KR_zWG{Awx6Vy9dk6;f9lXHq1BCw%Z}dJ|F5^4n3S zc}ah3lNDvI`%nJZvP|+t(iCPEg*w~VvTJG4x90dtgeO~F3T8i%T2{1T*>(lKWa+QY zRoQ_aE1oXhdiWWml^b&{2M^CyhR7Aqv>9rnBw{RE=WP7S{^Ls38z+bIE5dy2aVJ z7WS8|nb{?Ed6yqM8GB1%)(3qBzdd3Tg95MA<#!wW-23myBz7hzS;Gq%rt1{mh&UH6 zVVd^WK|v@?KJ7@WBQLw@l@l3j!p`~Em{(2P_4@48t~Zhu?3kw~{&w1Ar{D2-XP`;u(@7?N{+uuPC95_!{yv{o=e%RjN;kjg;>y$F?FY1N z9^PAWoBwe_X>r?T@ckn|7Z5b90TFm+gdQUCSPd<(H{+UfnsfXRSbGy4)+%G~OQ$PY)bF z`rG#O!<4TKOb70;UU+uKY|lQ?X|>;aqTCq$569iQR2}t8(Cl6_?}KQjvb6<2bIo7> zWjmm98qld9pP75UIgzttizanTjE@K)Z{yh!ftb#op6)s+8|JnwDzpugsixQIpSA%*gplz zOb}ZudcNw|?P`+2)6TMSo=fT@ZY0x{Lgp4LYqyQoL^oeNnjR;~dH0lFK*e&ojn^+`PNaC8sxp z);#8tZ)VwdFVe+0CD8cM3HMY1cCX-XL8?yYuL)nDZTW3ue%ZCO)n&i5p0)30)ATUp zHg8W;&OKq=$2WQLBY#2DTR%fYgm*1W)lMp^UbMyGa%X`@;z6B79PC`u+|qB;)*k=k zS($FJ=0$1j_VcGEdEE;7Qm?z$BJyTnZJM;&*CvDK6-*KpIZ=JuO3P|p4>MT?wl9py zw$!P!Y)swAl zVz1)oO z2Tojifo!dO+!w1H6MsD26qssj{3K!Vrxg+pRE&xWci5$D51%qs_rib4Jz|S=T|eH| zTVS=v_8Le1;!Q`sL>}S@jG4{1{07TXZMER*dsiluTj-}P)m-L!MpW^ZU_+*c$liZ8 zH4WRhOFFW1u_V4}UHR#8u?hpf#noI7+4B$HetE3ktY{?lX5K0t&ZTj({?jVIM0~S@yo=s{h$bSN=V9DRWTdWtnC*^W)z`y!Wf7TwES4 z@icY+tZx1ahe+K`p?)Vt-%T@b}#XGBDw}--w{i*Ncjaerp_8i@i$XT;h-yq{k zh5qvC-%s{sfBaU{)%as+?}JSSH5-hSmXz%;&2h6hwEpIy2A7nwNYQEW@om$XzWA*( zYJGK>hgVH7GJX=%_uNjN14b{tsXN)YNSSZ4beH%mIB9K_!Tj7~?<<`DF@@FMT<;XW zYE6othp(Df*_YDoMOAxhwoZP#pul-;g2lJmn_Dj}dEphOS4Im4Hi=v#GVNRsOs^S|DJf^^=X$a zY#STbK32cf!1J`hw1$sa*7liw$4VFgbLWqx_jIXFKcKx_B*$-yf)t~xpHxck!nvFp-JUhGP{=c!(`-Wb}~{qF_q z^4!mP+if>3IKKP-MD>6x?uiX86DI%K(DPh}^=!)iKeBr)Qgt@Zk2+TV#^m^i&oM@C zJbhyB%(mGzUGRcRhV-%i4L>B;%s62_iSP+%8#6O%4u~#4`0{mq-NSar ze_s~|F*|d+TEwb`tejPMWW&M9HcWZi=FeaEY_xd!ym*05acec_#Anjm8HJYW7@NwS zIe2I56t3%Wc|rHAHxy+^@>y4e?#T(cv-0uMoB}>ZwuS;!)&a-}fAj_hpyMrRM8* z<;0&%dOLaA5#A+?JkO@E%hvBc(6n>r0lD?v2U1zS>^z>5lJ=Z?VS|@M$E2>cZ`vyy zLyQyFFFEtz=z|BWllR+pWfqiu`t!4_WX^&wDSwx+X`dIn%&%tHa;S9e=Xp_Y{p${Y zG0I%CRwDXLe@BqpEba+=z4WC2y4_9VHc{?daL~?&bHdDn{j>V{1p?wJA1zWezT-yajEl4+ZewEO+VL3w48{we?CB9zxo&W3`|-%=yL>Zj{oH@QOHE8O|CY9p`K(1v)-skEM(L@C zCN7ZZo@u-yKc^131x0tkz<{rMCnWY|ZwC~8{GV>7Mcw+?US$Byx~gIdiPm=y&}KQ z1*UyUq6Q}4mo0uVr}J;>vb_2?bD!((nQb%s>|FiN@9iKn7&Sp)STyjPF|M>IUj?dE* zvY7sQ+Y+7Iu}?h$-w6GAxADWjt)D+zEl){#!8+^fp@&8S%dSkg>a##A_0ACkJF9QU zxc(pgW2NpibI%*0ikyo|i%hht#SRy{YN!7nd#NOPk+7C z{nY-VMOpV?^jxo{3w{|GAAOylazg&kS})jhu&8VtiW-QOJAKHq&t+YO0g2Hx)$i{+n|EOVZr zwZ`C=pxA1zD_v)D`zW%2Iwx9snft*&n0FTX&iBJFdO`)d~SiA|r6OP#K}ZM)n=Q1Ss=oBzJ9y2lj-+b0$Av6x5m z|GXmCGBelukfi5PnQ1*cE@!*_+RP!iN{{=6{<8Dp6XcGz>Q6U1u5J2_R!_xo<;i96}gqE#9sR34j&&CefYq}64OyB`wwvp#uky0(_qLhEw*$OiPIO-8HsOMT z^}==9tve$&ecdX*YK5}k3|Z#`Dybhzgn5@L7R@FgYj&mBI;>wL5I@3Gp|7cv)^gujdyL{KVGep z$vZP&f5DQ?PCJh)RotF0mHo6$xa(og?g_1HD_mV}fx5m(U7(*1laWFkjopCY4(iNK$jvyys>-cg6w$MySX>)OX3 z*i%yVONwEm;$Deq@9KTx!w;J@WZ9nF`)QqR>|K}n3#0eM1pL}icP}yOR(7Z7(uyeC zFHa98mgK!Sem8~P&vNle$3rVJT7?xiI9wP1AsKj*-|t)61a_4UXNExLi=vDbOYd;L zz0tBzuUA5WUpVo$$7ec&8AZIncf<@&)Ob5neIG;Vb?O2t5SD=Tyx2D zW4AeJvrIupM@M+6gX3p=X2Df~_kaCTc)7}P?dC$wC(7;7j%r_aZGG>*q1cl%qxr>; zWUlv>Li3rs?4s^vG)cNsitW69x9%0?&k z6{_R=kDI)iVe#F{+kKvXJxXIoTfSs!@l zXZxYd=WTc3{~X<4rEDjRYn-)jsi!JmI9;!6KTXMGCClS$B8j3k^OYxb-7$5UXxx>| zy+A-?TAM8Q>BS+dUE0}>Uz-rUC7Q>;bI~z(hlPo;*RNdd+I~5vY30tsO%-B29!=Ay z{#m=}xNz%=V;3KPy17VycCSaBfA2fCjQw95>mU9(wCZu?qf)cZjqTJleZ$SAM^TgQAs}+M>Q6`!W^=-dohl_n|P6ak`$=A;aI3FW%Z? zAW$lHfy0SeME0iZJ?A5@odjc>>xE9NjWWuu{O~BkV8vXUp3gNC|Lk*X<@>i-Nx9xA zTruN^*^siB{Y{lYrQ|;$eH@-=qkvjdB zj<}kXx2f7IXJvQ!yvqI4?Y~BfN}kzr&&wz3V`#@=Z^eWS7rQcUzH?(1e6r8nyv{z8 z*R%DjIfwTrb&tjTSxhYNZf|>j@$2*Y*lxei7eBtwZ(3U+Jn>(_HfKeVuB1u*U2YaL z91et)yx~}ru|p-PVn%-OoSU~At9XRvZ(X$geCMh7E9EJ>JFjz3yE^49!_`;2R`ad? zvvb!Wj*UGPk5niA_$ce?!nS?3p|~}d_=Yy#_?UC*@8c4(+}@Mx|vtK|{+ z{gk~oe8M`Wj2X@mrcX<9etc$__i57tr?T)xjWvcbGxl#?r<*-TLAkE>U%=1m_;)NP zWwV_)Gwp?V7>`{~NMU*U;kj`4?75qtW~?oUl;vm$_0wU;gvFts?W?d;OmO zzH;k{V6G#->2I}M1t-SPE{o%y#7qTx0{P?Qz z|V1b z)yVOSb%BG2!pRPe^v!LV>RNA=xPQDq>64fK+V24aYlcH*Sg_xfd4H3c-2TYRoi;cr zDD1K4^PUwQ!GSiWKigRZP8@sN6x74_uFQe+54)}7_lQkXQ)jN<+0oy^C;a_B=l1L8$-UvLIk3eyqUBVF(9ff~#z)%?7%Y5@Su&io zG(x()&o~QwtbZ)9>T|7v`Ab826?gq<+4mA}IzlZIT~|0885lajg+oXvJ#Ln5H0Z!TpK!X!PVD^ z&px%C+3<1sfxtBmet#05z4ZJ4K}uHsc7DVEeXP219EbGo0&eP1AyviDC<;^{Owi4R?CUfleoV|VI!lYVZt&0pTK zD5JvVCoO~)G}rB3;k^3ig{bTb=5@LTb>}Z-S?uG}ow-8!@8xatPi=j6twb@eRDBnV zCgZa8g(_RTCoIxXjOJmGpUx&f{rRNV{qv4G@+{D)GBjuAc|P~!!IJ4pY}Y33nBsc= zoJVn0e&VBd=_*_tye`|>mWbPS@KtiC*BPjxDJH*80r| zm@Ts)D)?^Ig3jgHk(*~!zsn6bG~My_&NiFW1g_(?R~$s<-u$WdNhOqw=ny{|7}Bq2&cT-lf9X8-LtgCC(g9C^5W(aSo?oh z_OT^CM}FN|xxzMAw4sJK*Y&Q59J_gZTt|^7zu$uG@z&QWdee8eXRG)c2R7WPJ!qb(?aezPeymMPTus{2dH+5i=HvJP9@2 zzeup>^XK<()h27Vu?o%eJazwq$fC}gM{l0`d@}g`QY-9>&hLdwh1U0nuF2yyerp-{ ze|hPwbwW3n9sl^Cx#&w&PtT{_D$dI|G%kKvc9uJpi?L_rg9A$26keV*aQx4raMq&5 z{F0A~rO6Vt<0jvFTN4(gZ>XpfzU)wNd>6wsA^j-Xs@d9AWl57{{-rj~I&y4oq4(LB z|7WfJwN+s69)Uevn~J4=oz}dtc?L)2p05w|`JO-8dN{~#&Feez>%)59zm}`eOg~+6 zD&3%8N+$ZkA+E<0H!*q66K{8QIGQ$nvQF8Tqd)K0tv$#aJV)lNLafP~x=mhw_cc9D zRfNTNZ8UM#2;Fc_T2iekA@%kF&NCZ+NS@TW7~7~`>9TQ&wX;2^?+dAaS-xk(&na6l zED(B{ecyiaFY9%xj@m~aKlu`1ssHv(nEUS4SxfHN^If0UUe>#6rkMHdP7Qer@i{Re z&M&)W`!5T*`B%eE`dRVz&4%;0^)vrjbaiI7ajHYwoY(!6cj_FNdhUMeVV;tIzMmRQ zYkIa#S<{hUzV@cSag0LvCZFRHVOj;r%=Y>FEVrbt-WP2puyyf61y32A-HWRqtnrn7 z@x%2x14G)&`tM8%*Do7S+V}BiT2G?K!|CO2wXZ(ZYzGw?x#( z`1+J`-dg>{s8EzqDlXb@&dYFyX>JoLPa3t%z1e$e@3dFO6U3v=t~zshk(4IGiSF(d zt~<5dyN~TESnjOR@~Uc*^7kvL@3+nNsIGgWZCg2^jW7A%_W!!_@Mlr9Hya;1pavrL<}?_QN!SLJan!JzQt zE1xbpCi?D`(W7IQ0!0~4i~ooOR%R*lEW7dU^m;e0lR^|U&^Ct3ZZ_#{y@zA74Z47TKwlDFVZb;<-gpU z8{`nQnv26XqsgLL^(#m4%elMPCx|(Rb)S_xKmF?ajqj~H9`lM?e-b}v{LV_wc%`q@ zJpqM-Gt(0`yx3Z-x>WoD@1ft_DNAhY)q*WjD}GkgUoBB!R;=z=t5j`n#TmIxy0Q4vuEpvtg5PQm1^VnNxt==QY;`TJ7tdirRrBkAx|3qO;Ox8 z|9@Ps42S;0xVK75S6X@|`mKI9UoN1LTerR{v-JK}x4S0-_ySfXZSadf@K^Qenh8D( zJqb%+w!JETXBD^mV{o|m@~KS9E13c&#QSgXPnWoMcY4NV!5c5lwwrLbf44t#+vgM9%wo-*opfM}gUoT3xGo zv!8rk-XO}kNY>Bn{clnPxRe-zr&4$4;`tvlm&@qSg-M1^1CWp$@(Yfq=;s!Y7l zw({o0zb7pV+f(<=m(_iCLEwSje)nqG8}oNbWxK0An-sWEyeHKAKhJxs43Qv>hKwT% zW?8TawOxO3D127=74uE8lbBylo_vtIR9dXhY~qs(7q2R5Y~fj4mG~{aAbsbC`u-#F zAOBBMv9`U#D0o=O+bZqx*WC-dr##$nKc07$--X`t4?lSxZ*4XIyGFcj!mahoMS5R< zo7404^vukB-vi-y94uqif*LM|r`PT_D9kVt6o^&Zw{WV|-oDPvYt}(wWgIF6oKMzE zzhWx3;9^kN+0e`<9HVgexS{UW##i;tnk(OZ|5vcu$)Je2K21o&L+s1Ps7isZ$;qwC%C=@Q zF`I2PX6o=*RQ%9aFvy?G$ROInpQOyYu40+yiRg(8d=Yzv*eKh5MwMV{KE7eB29udkYxdO}8Ki==z6IL#5bAe#oJX0`+8o9H9Ux&t?qB?b)b93VOG_DtXkTvRv$H1rfP07b^h(uxbIQh z`_rcnegd&e|v(>zPo3iq<>59t<1H3+at{Nd;jKy zZ~N|jt1xML5V>Vz0Mk*^dmA{`3LHyWu;=AcPqSqydY*UwUp~seI%i*nIf??H$=Gk2S?E;5f0`k=J8JV_$HGQJ+rRk{6TaTmAXD zUA*Z!&v|||5s6NDbM|1(v-4-P-S8+AXO`Gpcy`C%Up$AeUfdvPtsj|m@XBxDoiB2X zOs}yl$-jAi_0)R`dlQXUI=_2i!P~nggvVpygLjS_7|$3i@tXcfR&#}I*2{-KZ=d?- z`8|Po-Q~dVCo9BzeVp#jS(LZ%__+xOY93sjwp7Y5$?<`&(y?1A{_7+~H@2`cZpx2i zjgo)%Q-k&M zd+m2|wUEMI!}RYf=57k;y=qmsXzzc9*u0&*y?lC6tDehW`uJKQ_U5XMkN&MZ*%CWF zYu)$98gIn^AHKg{O8X=f{ud=3F+`iX7+#mr|*XToOiBiZyvpPY5y_ECYpQZ z`sXt_5@)ge?|uFK%lW`mVT)L+9b1GBHmo|N#kO+Na-m?+jV6os?ic@@HD`l!ME>`> zpxZ_V7~V)k=u{Q7y6Rr2vedlTt0V0AYxi1#+d*Ee_t!P9j5x;{RCum-*UpvcKjh!a zzBH7b?6kGFH1dR}jjP3;x5kBkBrXU|UeEtV_u?_FBC~JXE^OJfJki-wt$Wg}mRCQj zD?<(+|2vt*{MTFU+=Zu}UY$|%@b2Lrwm7NN{c0xnmVNsge5h1$Y23Q1AIm-VKh-y3 zaFG2tm!0p;3EumUyM9m4O4YGk98;ZloQJP`$$2+HSF75D=)-vh4yUfTJ>k4yyD8yT z6Z@m~C*Nf+b=`N&2xW1YbBy;A_k^S+Z)V?iVR`A)@bvxKgMHV7!&KOxJAbYg54%eG#Z#;T0D71IK~ZPs3LX^OCcD68O_Y?HwGf0z>4_17IxRkeCF@viZ*{RL;A zFDbsI>CmOS^vaI%YeKGuHe0#>zF*c~zWe>ZxLp~)53gJFA#-`k%N0`uI~SRL+{(;) zbG6{n!@U;4TIGMYkA>-mw7s~$c&F#3j<+*^`=z>gvefuK>6msYnB%k4!?U(>*7x))@9_y(TYEqF ztCSL4pPm|Od%k|L@UpCjs)dbaDvRt_zFr_dZ~kBByC-UQt`4+H{itI5<&sh2e{TMZ z5B3Yx9h|#**%^=91ylUG;uv@n4fj6!Vm+<8d|89f4+SGbWA*E$Cs~(sh+mm>{oU7% z6&h~$m^qmaiKU)Yoh+fFyXNzX6UnbF@*H+-nYn3~QqH4EGCv#Cj0Km>IbXJ)wfx|P zkQnc-8Hq0<(=OcPN<8!P@qu8&s7k@8ihT-uzz!<)I{`|s6DBX`zwe~G&pAiJ33{N3XGJAGnY z$EMr7SS5F5UidksJzi6r&zc>!U`$IZ(J%WcLHFTeSlcbBuVWhSB3k}SIsZ@v?org(Z<=rr&N%=#g7K-*ki6&d4QC)OGs0WeS$x zI3WLDr(>6C8sqINtzPr**=0&h)?!<2mv#31~^d0+AV$axT5#MWn7zfa8xyH_;GH@-1WCTEVDN3 zy;uD)-n*{tT;+>2ntp>C5)b4KbTg-dep-wML-ovfQTaN6)=mdr8&##v(PtduLk% z7wtFWQGOM|cgJ16>Z+2FLvzk#Hl}bk)~Az~grA?G{4c{ji+k4rulx(Ar6RRYwYhou zocsOUBJcgpsb?LFyTc&Sz|Iuf867M#=a9_$Iy5Q1`F1G)VX71=X@-qEJ+$M)> z0mU2S?Y_k>>1AiNGHBm$HEq$O8OJU(`#YV_i#^B^?Zg+S-#&kCojt2-vSh~_|Gf9-5ulN_UAX>X^zDcnb$?AbFQipcQB4rn4x^i*g9pW)BKb_)l750H?!`a zZ9l1D%?5Wrq0{%<3uaDAn4Ndn?SaO*74vixx@35qR{T3Bmgh3l!!RIO%dqg)($1N^ zr?~#VNv(ez@oW{p`<*$W58G3YOj%IgS6ZF;J?7M}(<-KJY|kw>JF4DzQ0uyH&WgGN zkL~Lhb*(&iI6BU~VCB1_DOXQTepDVP8R})gnw7?W>|vYy#~q#rzILq?P|n)=iLs|l z@3+NnfBD?TN?aZ}f>fJ4T`e6fr8 zyw4u%ubx%%OlfO_=bnx=8diDVK736K;0bVM@!Va>sU^-^|1d^#LmJPV(A)1n%3p83 zaC}1J5+N0#$&354nU|g1&UQ<`hG*WjILlqh%kO_!f4)@8Ht(Bw<-U-==N|ZN^Sxm* zqr&dVob|%?byoklq;sRc{3@*IT4MLb`TqLqZK`4WCNS0h*{~y0?`)l(d4-p6aFSV(W!?+0-l|t1C{kuPVK($apH?2NzdRBde@}ru$im zotjs7oKIz)CmFzOeC@^Avw1t_JEk8yRjYgRa*U_Nxg`}}d<4D~XWYE`ZL-b#_^=cm z$^5;ywYdMDlh@s)HGQ}G#`*L5k~Uv=p4ugMTI_Np=w3UDUhAFF8LT(&S|G49b4zQjNp0d8X!Tf`wo6 z+2zf#J6OuecW?eqPtC_CMXYWwj>^005WhxDcj^kUtqp;bU4$8&-um90a#rf0jlRwV z{}Zv#m3xz>o40&xo5~XVy>Ui_V*Qg3TPjZKTxQE=WH-#q>W|12Em@(o?9|`Wa@Q}O zclW(%z#^*Rdh@N$=lOg4CCZoI?SFJ-QtM}rhwo;rZP}9iAYBks*;qWewg)Zg%{#rBt&SUQsE$#?#QOmev)vf8Ul6&r&32yKFmh6yvzND*2q+Int z{l#Bp*X7sU&A%42!D5ZqgYU-KYv#n=Q4M#w_VTEg>63uXOUq_YIxHQtQ~ug7WsyJ! z%f8rz-^#O#zlpU&TWl`yi#ASxSYH%$p+8f6n4Ux`E8Me*N;zy2VM3A>^lDF zhZAF%+InTCgA=O{|C!Fd=7dPYY_(-kQbDm#jWfk36yL}=E3N!2dx2gqn;Yx419R<^ zUUr-l>eiC*iJU7a7*!O`lb+S8l0D0*n&Z;(drI!UnNHq{96U#S%dObgroZ(#E%asL zgs>0m=YDSdklj0BerR-tR&xKDRPO^@tz>H=BxjU9n*YahcK+qkyxFb2;V<OBkd#cgSW*v{cB^`Q*q^^ zo7{?peVX*w%J$XktX#3o{!F~|zn0pEO>=!#x`(*uE&N)%;PtkvQ#+V7?07mQFL`Q( z_GZocz$$Q3;%5Du`5jenjy`kz?^>}qLVn$ImD)qe?JJfob`)$|_<=KQCX;WV+@nMP z*qC2VH`r=*D~_F^K1D_3=xdkWrhn`K-i%Cg%pwe+`wuX0M37*Bfrds9t0Wb6KLRV{ ceuPrgyAcAsS=m797#SED{1_M*1QJ0!08+)Nl>h($ literal 0 HcmV?d00001 diff --git a/project/jni/application/opengl_hello/Makefile b/project/jni/application/opengl_hello/Makefile new file mode 100644 index 000000000..204680d27 --- /dev/null +++ b/project/jni/application/opengl_hello/Makefile @@ -0,0 +1,3 @@ + +sdl_hello: *.cpp + g++ -o $@ $? `sdl-config --cflags` `sdl-config --libs` -lGL diff --git a/project/jni/application/opengl_hello/icon.png b/project/jni/application/opengl_hello/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ad30aedf682d20f308972fa37de16b6e45ba5e2d GIT binary patch literal 14646 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≠=G0ciX1p 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 +#include +#include + +GLuint texture; + +// I've tweaked coordinates a bit to my taste +GLfloat textureCoordinates[] = { 0.0f, 1.0f, + 0.0f, 0.0f, + 1.0f, 0.0f, + 1.0f, 1.0f }; +GLfloat vertices[] = { + 100, 100, + 100, 300, + 300, 300, + 300, 100 }; + +int loadImage() { + SDL_Surface *pic; + SDL_Surface *tmp; + + glGenTextures(1, &texture); + + glBindTexture(GL_TEXTURE_2D, texture); + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + + glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST); + + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + + pic = IMG_Load("test.png"); + + // check power of 2 + if (!pic || !pic->w || !pic->h || (pic->w & 1) || (pic->h & 1)) { + + return -1; + } + + tmp = SDL_CreateRGBSurface(0, pic->w, pic->h, 16, 0xF800, 0x7E0, 0x1F, 0); // Correct bits of RGB565 color format + SDL_BlitSurface(pic, NULL, tmp, NULL); + + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, pic->w, pic->h, 0, GL_RGB, GL_UNSIGNED_SHORT_5_6_5, tmp->pixels); + + SDL_FreeSurface(pic); + SDL_FreeSurface(tmp); + + return 0; +} + + +int width = 640; +int height = 480; + + +static void +initGL() +{ + + glViewport(0, 0, width, height); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + + glOrthof(0.0f, width, 0.0f, height, -1.0f, 1.0f); + glMatrixMode(GL_MODELVIEW); + + glClearColor(0.0f, 0.0f, 0.0f, 1.0f); + glDisable(GL_DEPTH_TEST); + glEnable(GL_TEXTURE_2D); + + glEnableClientState(GL_VERTEX_ARRAY); + glEnableClientState(GL_TEXTURE_COORD_ARRAY); + glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + +} + +static void +draw() +{ + glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); // Always clear your scene before rendering, unless you're sure that you'll fill whole screen with textures/models etc + + // You have to this each frame, because SDL messes up with your GL context when drawing on-screen keyboard, however is taves/restores your matrices + glColor4f(1.0f, 1.0f, 1.0f, 1.0f); // Just to be sure + glEnable(GL_TEXTURE_2D); + glDisable(GL_BLEND); + glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + + glBindTexture(GL_TEXTURE_2D, texture); + glEnableClientState(GL_VERTEX_ARRAY); + glEnableClientState(GL_TEXTURE_COORD_ARRAY); + glVertexPointer(2, GL_FLOAT, 0, vertices); + glTexCoordPointer(2, GL_FLOAT, 0, textureCoordinates); + glDrawArrays(GL_TRIANGLE_FAN, 0, 4); // You may just replace all your GL_QUADS with GL_TRIANGLE_FAN and it will draw absolutely identically with same coordinates, if you have just 4 coords. + glDisableClientState(GL_VERTEX_ARRAY); + glDisableClientState(GL_TEXTURE_COORD_ARRAY); +} + + + + +int +main(int argc, char *argv[]) +{ + + SDL_Surface *screen; + int done; + Uint8 *keys; + + SDL_Init(SDL_INIT_VIDEO); + + // Set native device screen resolution, if you want 640x480 select SdlVideoResize=y in AndroidAppSettings.cfg + width = SDL_ListModes(NULL, 0)[0]->w; + height = SDL_ListModes(NULL, 0)[0]->h; + + screen = SDL_SetVideoMode(width, height, 16, SDL_OPENGL|SDL_DOUBLEBUF); + if ( ! screen ) { + fprintf(stderr, "Couldn't set GL video mode: %s\n", SDL_GetError()); + SDL_Quit(); + exit(2); + } + SDL_WM_SetCaption("test", "test"); + + initGL(); + loadImage(); + while ( ! SDL_GetKeyState(NULL)[SDLK_ESCAPE] ) // Exit by pressing Back button + { + draw(); + SDL_GL_SwapBuffers(); + SDL_Event event; + while( SDL_PollEvent(&event) ) ; // Do nothing, just process keyboard/mouse events internally + // Some kinda animation + //SDL_Delay(200); + static float diff = 1.0f; + vertices[0] += diff; + vertices[2] += diff; + vertices[4] += diff; + vertices[6] += diff; + if( vertices[4] > width ) + diff = -1.0f; + if( vertices[0] < 0 ) + diff = 1.0f; + } + + SDL_Quit(); + return 0; +}