<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Developing Tactica</title>
	<atom:link href="http://tacticadev.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://tacticadev.wordpress.com</link>
	<description>Blog about a dev trying to make a good strategy game for the iPhone</description>
	<lastBuildDate>Sun, 13 Nov 2011 09:06:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='tacticadev.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/023338c7f4083264b85286c71d98af23?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Developing Tactica</title>
		<link>http://tacticadev.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://tacticadev.wordpress.com/osd.xml" title="Developing Tactica" />
	<atom:link rel='hub' href='http://tacticadev.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Simulating Windows with Refraction</title>
		<link>http://tacticadev.wordpress.com/2011/09/02/simulating-windows-with-refraction/</link>
		<comments>http://tacticadev.wordpress.com/2011/09/02/simulating-windows-with-refraction/#comments</comments>
		<pubDate>Fri, 02 Sep 2011 11:25:41 +0000</pubDate>
		<dc:creator>bersaelor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tacticadev.wordpress.com/?p=438</guid>
		<description><![CDATA[Some months ago I was approached by the Berlin-based Window-Manufacturing-Company &#8220;ISOGON&#8221; to help them program an app that let&#8217;s you configure orders for new windows (In case you want to build a house or modernize your current windows to waist less energy). Get it for free on the app-store. So, for people mostly interested in [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tacticadev.wordpress.com&amp;blog=11854652&amp;post=438&amp;subd=tacticadev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Some months ago I was approached by the Berlin-based Window-Manufacturing-Company &#8220;<a title="ISOGON" href="http://www.isogonfenster.de/">ISOGON</a>&#8221; to help them program an app that let&#8217;s you configure orders for new windows (In case you want to build a house or modernize your current windows to waist less energy). Get it for free on the <a href="http://itunes.apple.com/de/app/fenster/id455902895?mt=8&amp;ls=1">app-store</a>.</p>
<p><span id="more-438"></span>So, for people mostly interested in 3D-Gems, I did some shader-programming in this app.</p>
<p>We were able to scan our structured windows so I could get some 3D-Meshes of those. Then I had a look into OpenGL ES 2.0 Shader-Programming and the &#8220;refract(vec3, vec3, float)&#8221; function to calculate the refraction of the scanned surface.</p>
<p>Later I just had to set the iPhone&#8217;s Camera Video Images as the current background texture and the result looks like this:</p>
<p><a href="http://tacticadev.files.wordpress.com/2011/09/refracted.png"><img class="aligncenter size-full wp-image-440" title="refracted" src="http://tacticadev.files.wordpress.com/2011/09/refracted.png?w=450" alt=""   /></a></p>
<p>And the corresponding undistorted picture (featuring my beautiful Hagström Super Swede <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  )</p>
<p><a href="http://tacticadev.files.wordpress.com/2011/09/clear.jpg"><img class="aligncenter size-full wp-image-441" title="clear" src="http://tacticadev.files.wordpress.com/2011/09/clear.jpg?w=450" alt=""   /></a></p>
<p>If you guys are interested in the technical details I highly recommend <a href="http://www.imgtec.com/powervr/insider/sdk/KhronosOpenGLES2xSGX.asp">PowerVR&#8217;s OpenGL programming SDK</a>. They have some tutorials on how to program Shaders, and a C++-framework to import Blender-exports into your iOS project that were really helpful to me.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tacticadev.wordpress.com/438/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tacticadev.wordpress.com/438/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tacticadev.wordpress.com/438/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tacticadev.wordpress.com/438/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tacticadev.wordpress.com/438/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tacticadev.wordpress.com/438/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tacticadev.wordpress.com/438/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tacticadev.wordpress.com/438/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tacticadev.wordpress.com/438/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tacticadev.wordpress.com/438/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tacticadev.wordpress.com/438/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tacticadev.wordpress.com/438/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tacticadev.wordpress.com/438/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tacticadev.wordpress.com/438/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tacticadev.wordpress.com&amp;blog=11854652&amp;post=438&amp;subd=tacticadev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tacticadev.wordpress.com/2011/09/02/simulating-windows-with-refraction/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0fd70f0e37ab418e86035c1ccad58eee?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bersaelor</media:title>
		</media:content>

		<media:content url="http://tacticadev.files.wordpress.com/2011/09/refracted.png" medium="image">
			<media:title type="html">refracted</media:title>
		</media:content>

		<media:content url="http://tacticadev.files.wordpress.com/2011/09/clear.jpg" medium="image">
			<media:title type="html">clear</media:title>
		</media:content>
	</item>
		<item>
		<title>Bug in Version 1.21 of iBeat for iOS Version 4.0-4.1</title>
		<link>http://tacticadev.wordpress.com/2011/02/20/bug-in-version-1-21-of-ibeat-for-ios-version-4-0-4-1/</link>
		<comments>http://tacticadev.wordpress.com/2011/02/20/bug-in-version-1-21-of-ibeat-for-ios-version-4-0-4-1/#comments</comments>
		<pubDate>Sun, 20 Feb 2011 14:58:22 +0000</pubDate>
		<dc:creator>bersaelor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tacticadev.wordpress.com/?p=434</guid>
		<description><![CDATA[If iBeat crashes at startup on your iPhone or iPod Touch with iOS Version 4.0 or 4.1 please upgrade your iOS to Version 4.2. The App should then work correctly! EDIT: Version 1.3 of iBeat fixes this, now it should work with all iOS Versions 3.1 to 4.3.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tacticadev.wordpress.com&amp;blog=11854652&amp;post=434&amp;subd=tacticadev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>If iBeat crashes at startup on your iPhone or iPod Touch with iOS Version 4.0 or 4.1 please upgrade your iOS to Version 4.2. The App should then work correctly!</p>
<p>EDIT: Version 1.3 of iBeat fixes this, now it should work with all iOS Versions 3.1 to 4.3.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tacticadev.wordpress.com/434/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tacticadev.wordpress.com/434/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tacticadev.wordpress.com/434/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tacticadev.wordpress.com/434/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tacticadev.wordpress.com/434/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tacticadev.wordpress.com/434/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tacticadev.wordpress.com/434/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tacticadev.wordpress.com/434/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tacticadev.wordpress.com/434/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tacticadev.wordpress.com/434/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tacticadev.wordpress.com/434/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tacticadev.wordpress.com/434/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tacticadev.wordpress.com/434/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tacticadev.wordpress.com/434/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tacticadev.wordpress.com&amp;blog=11854652&amp;post=434&amp;subd=tacticadev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tacticadev.wordpress.com/2011/02/20/bug-in-version-1-21-of-ibeat-for-ios-version-4-0-4-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0fd70f0e37ab418e86035c1ccad58eee?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bersaelor</media:title>
		</media:content>
	</item>
		<item>
		<title>Howto set up shouldAutorotateToInterfaceOrientation</title>
		<link>http://tacticadev.wordpress.com/2011/02/18/howto-set-up-shouldautorotatetointerfaceorientation/</link>
		<comments>http://tacticadev.wordpress.com/2011/02/18/howto-set-up-shouldautorotatetointerfaceorientation/#comments</comments>
		<pubDate>Fri, 18 Feb 2011 13:02:34 +0000</pubDate>
		<dc:creator>bersaelor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[UiKit]]></category>

		<guid isPermaLink="false">http://tacticadev.wordpress.com/?p=424</guid>
		<description><![CDATA[Now here I have a bone to pick with many iOS Developers! Please set up your UIViewController&#8217;s "- (BOOL)shouldAutorotateToInterfaceOrientation:" correctly, so you support both your Orientation and its UpsideDown-Version. Yes, it&#8217;s fine to just support Portrait or Landscape mode, but please support both directions! You see UIInterfaceOrientation has 4 directions: typedef enum { UIInterfaceOrientationPortrait        [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tacticadev.wordpress.com&amp;blog=11854652&amp;post=424&amp;subd=tacticadev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Now here I have a bone to pick with many iOS Developers!</p>
<p>Please set up your UIViewController&#8217;s</p>
<pre><strong>"- (BOOL)shouldAutorotateToInterfaceOrientation:"</strong></pre>
<p>correctly, so you support both your Orientation and its UpsideDown-Version. Yes, it&#8217;s fine to just support Portrait or Landscape mode, but please support both directions!</p>
<p><span id="more-424"></span></p>
<p>You see UIInterfaceOrientation has 4 directions:</p>
<p><span style="color:#00ff00;"><code>typedef enum {<br />
UIInterfaceOrientationPortrait           = UIDeviceOrientationPortrait,<br />
UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,<br />
UIInterfaceOrientationLandscapeLeft      = UIDeviceOrientationLandscapeRight,<br />
UIInterfaceOrientationLandscapeRight     = UIDeviceOrientationLandscapeLeft<br />
} UIInterfaceOrientation;</code></span></p>
<p>Now I&#8217;m fine if you just want to support Portrait or Landscape and don&#8217;t wnat to resize everything between the two form-factors. Still for each direction there exist two entrys in this enum, and if you just do</p>
<p><span style="color:#00ff00;"><code>(interfaceOrientation == UIDeviceOrientationPortrait)</code></span></p>
<p>you are just testing for one direction, not its variant turned around 180°. So please do the following instead:</p>
<p><span style="color:#00ff00;"><code>UIInterfaceOrientationIsPortrait(interfaceOrientation);<br />
//or<br />
UIInterfaceOrientationIsLandscape(interfaceOrientation);</code></span></p>
<p>so finally your &#8220;shouldAutorotateToInterfaceOrientation&#8221; could look like this if you plan to show your App in Portrait Mode:</p>
<p><span style="color:#00ff00;"><code>- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {<br />
return UIInterfaceOrientationIsLandscape(interfaceOrientation);<br />
}</code></span></p>
<h3>This is not adding any extra work!</h3>
<p>UIViews get rotated by 180° by UIKit, so allowing the user to turn the iPhone or iPad around can be achieved by changing one simple line per ViewController! There&#8217;s really no extra work in setting up all the frames because the formfactor stays the same, everything just turned upside down.</p>
<p>I understand this is completely obvious for all seasoned iOS Developers and was probably covered in depth on many times. Yet it still seems to happen in many Apps that I downloaded, so I thought I&#8217;d have to mention it.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tacticadev.wordpress.com/424/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tacticadev.wordpress.com/424/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tacticadev.wordpress.com/424/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tacticadev.wordpress.com/424/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tacticadev.wordpress.com/424/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tacticadev.wordpress.com/424/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tacticadev.wordpress.com/424/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tacticadev.wordpress.com/424/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tacticadev.wordpress.com/424/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tacticadev.wordpress.com/424/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tacticadev.wordpress.com/424/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tacticadev.wordpress.com/424/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tacticadev.wordpress.com/424/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tacticadev.wordpress.com/424/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tacticadev.wordpress.com&amp;blog=11854652&amp;post=424&amp;subd=tacticadev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tacticadev.wordpress.com/2011/02/18/howto-set-up-shouldautorotatetointerfaceorientation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0fd70f0e37ab418e86035c1ccad58eee?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bersaelor</media:title>
		</media:content>
	</item>
		<item>
		<title>Call for Help &#8211; Crashlogs for iOS 3.2 [Fixed]</title>
		<link>http://tacticadev.wordpress.com/2011/02/06/418/</link>
		<comments>http://tacticadev.wordpress.com/2011/02/06/418/#comments</comments>
		<pubDate>Sun, 06 Feb 2011 13:16:36 +0000</pubDate>
		<dc:creator>bersaelor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tacticadev.wordpress.com/?p=418</guid>
		<description><![CDATA[Hey there! This time I have an urgent problem, that I can only fix with your help! Unfortunately the App iBeat seems to crash at the start on all iPads running iOS 3.2, while running perfectly fine on iPhones with iOS 3.1. (A friend has an old iPod I can use for testing) I updated [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tacticadev.wordpress.com&amp;blog=11854652&amp;post=418&amp;subd=tacticadev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hey there!</p>
<p>This time I have an urgent problem, that I can only fix with your help!<br />
Unfortunately the App  <a href="http://www.ibeat.us">iBeat</a> seems to crash at the start on all iPads running iOS 3.2, while running perfectly fine on iPhones with iOS 3.1. (A friend has an old iPod I can use for testing)</p>
<p>I updated my own iPad to iOS 4.2 and since It isn&#8217;t possible to go back, I can&#8217;t test this problem on my own.<br />
So If you have an iPad running iOS 3.2, please download (<a href="http://www.ibeat.us">http://www.ibeat.us</a> &#8211; its free) , start it, sync it with iTunes and finally send me the crashreport (ibeat@tactica.de). You may read about which folder the crashreports are in on your Computer <a href="http://www.anoshkin.net/blog/2008/09/09/iphone-crash-logs/">here.</a></p>
<p>Thank you all in advance!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tacticadev.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tacticadev.wordpress.com/418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tacticadev.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tacticadev.wordpress.com/418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tacticadev.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tacticadev.wordpress.com/418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tacticadev.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tacticadev.wordpress.com/418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tacticadev.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tacticadev.wordpress.com/418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tacticadev.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tacticadev.wordpress.com/418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tacticadev.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tacticadev.wordpress.com/418/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tacticadev.wordpress.com&amp;blog=11854652&amp;post=418&amp;subd=tacticadev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tacticadev.wordpress.com/2011/02/06/418/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0fd70f0e37ab418e86035c1ccad58eee?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bersaelor</media:title>
		</media:content>
	</item>
		<item>
		<title>Beware alien vegetation!</title>
		<link>http://tacticadev.wordpress.com/2010/08/09/beware-the-alien-vegetation/</link>
		<comments>http://tacticadev.wordpress.com/2010/08/09/beware-the-alien-vegetation/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 14:12:38 +0000</pubDate>
		<dc:creator>bersaelor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Alpha Centauri]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPhone App]]></category>
		<category><![CDATA[Sci-Fi]]></category>

		<guid isPermaLink="false">http://tacticadev.wordpress.com/?p=337</guid>
		<description><![CDATA[So, at first I thought I&#8217;d just add a 3D Model of a thorned vine (still visible in the screenshot), but appearently, a little less 3D and a nice veined texture for the infected tile might do a much better job. You can also see the new Interface-Element in the lower right, that always has [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tacticadev.wordpress.com&amp;blog=11854652&amp;post=337&amp;subd=tacticadev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>So, at first I thought I&#8217;d just add a 3D Model of a thorned vine (still visible in the screenshot), but appearently, a little less 3D and a nice veined texture for the infected tile might do a much better job.</p>
<p>You can also see the new Interface-Element in the lower right, that always has the color of the active player!</p>
<p><a href="http://tacticadev.files.wordpress.com/2010/07/highresscreenshot2.png"><img class="aligncenter size-full wp-image-391" title="highResScreenShot" src="http://tacticadev.files.wordpress.com/2010/07/highresscreenshot2.png?w=450&#038;h=300" alt="" width="450" height="300" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tacticadev.wordpress.com/337/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tacticadev.wordpress.com/337/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tacticadev.wordpress.com/337/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tacticadev.wordpress.com/337/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tacticadev.wordpress.com/337/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tacticadev.wordpress.com/337/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tacticadev.wordpress.com/337/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tacticadev.wordpress.com/337/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tacticadev.wordpress.com/337/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tacticadev.wordpress.com/337/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tacticadev.wordpress.com/337/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tacticadev.wordpress.com/337/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tacticadev.wordpress.com/337/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tacticadev.wordpress.com/337/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tacticadev.wordpress.com&amp;blog=11854652&amp;post=337&amp;subd=tacticadev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tacticadev.wordpress.com/2010/08/09/beware-the-alien-vegetation/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0fd70f0e37ab418e86035c1ccad58eee?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bersaelor</media:title>
		</media:content>

		<media:content url="http://tacticadev.files.wordpress.com/2010/07/highresscreenshot2.png" medium="image">
			<media:title type="html">highResScreenShot</media:title>
		</media:content>
	</item>
		<item>
		<title>Saving Battery Power in a turn-based game</title>
		<link>http://tacticadev.wordpress.com/2010/08/02/saving-battery-power-in-a-turn-based-game/</link>
		<comments>http://tacticadev.wordpress.com/2010/08/02/saving-battery-power-in-a-turn-based-game/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 11:24:52 +0000</pubDate>
		<dc:creator>bersaelor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Battery]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPhone App]]></category>
		<category><![CDATA[OpenGL]]></category>
		<category><![CDATA[OpenGL ES]]></category>
		<category><![CDATA[Power Saving]]></category>

		<guid isPermaLink="false">http://tacticadev.wordpress.com/?p=378</guid>
		<description><![CDATA[I got inspired by a post on the toucharcade-forums by ed_welch who describes how he throttles FPS manually to the minimum value any animation needs to run. Now I figured, I could render my game with 1 FPS as long as nothing happens, so I changed my code the following way: I start the game [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tacticadev.wordpress.com&amp;blog=11854652&amp;post=378&amp;subd=tacticadev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I got inspired by <a href="http://forums.toucharcade.com/showthread.php?t=61806">a post</a> on the toucharcade-forums by ed_welch who <a href="http://www.gamedev.net/reference/programming/features/iPhoneBatSave">describes</a> how he throttles FPS manually to the minimum value any animation needs to run.</p>
<p>Now I figured, I could render my game with 1 FPS as long as nothing happens, so I changed my code the following way:</p>
<ul>
<li>I start the game with a frameInterval of 60.</li>
<li>Once I get a &#8220;touchesBegan&#8221; I go up to 2, that is 30FPS.</li>
<li>Once I get a &#8220;touchesEnded&#8221;, I check whether there is any animation going on (the spinning arrows above a selected unit for example) or whether there is still another touch going on. This was pretty straight forward, since I store the points each finger started touching at in a CFDictionary, so I just needed to get its count and check if it&#8217;s zero. Then I set the frameInterval to 60 again</li>
<li>My games main logic-class conforms to a &#8220;AnimationResponder&#8221; -protocol and the drawing classes store it as a &#8220;id&lt;AnimationResponder&gt; delegate&#8221;. So once an animation ended, I send this information to the main class and it throttles the FPS back to 1.</li>
</ul>
<p><strong>The result was so good, I could even feel a difference in the heat of my iPod!</strong></p>
<p><strong>Thank you <a href="http://www.gamedev.net/reference/programming/features/iPhoneBatSave/">Ed Welch</a>!</strong></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tacticadev.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tacticadev.wordpress.com/378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tacticadev.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tacticadev.wordpress.com/378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tacticadev.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tacticadev.wordpress.com/378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tacticadev.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tacticadev.wordpress.com/378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tacticadev.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tacticadev.wordpress.com/378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tacticadev.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tacticadev.wordpress.com/378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tacticadev.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tacticadev.wordpress.com/378/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tacticadev.wordpress.com&amp;blog=11854652&amp;post=378&amp;subd=tacticadev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tacticadev.wordpress.com/2010/08/02/saving-battery-power-in-a-turn-based-game/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0fd70f0e37ab418e86035c1ccad58eee?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bersaelor</media:title>
		</media:content>
	</item>
		<item>
		<title>To VBO or not to VBO ?</title>
		<link>http://tacticadev.wordpress.com/2010/08/02/to-vbo-or-not-to-vbo/</link>
		<comments>http://tacticadev.wordpress.com/2010/08/02/to-vbo-or-not-to-vbo/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 11:01:03 +0000</pubDate>
		<dc:creator>bersaelor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[3G vs 2G]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPhone App]]></category>
		<category><![CDATA[OpenGL]]></category>
		<category><![CDATA[OpenGL ES]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[PowerVr SGX]]></category>
		<category><![CDATA[VBO]]></category>
		<category><![CDATA[Vertex Buffer Objects]]></category>

		<guid isPermaLink="false">http://tacticadev.wordpress.com/?p=371</guid>
		<description><![CDATA[As I mentioned in the last post, a friend lend me an iPod 3G to test its hardware. I already compared CPU for its performance in filling the interleaved vertex array. Now I&#8217;m going to have a look at the GPU, specifically the advantages of using Vertex Buffer Objects on the new PowerVR SGX chip. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tacticadev.wordpress.com&amp;blog=11854652&amp;post=371&amp;subd=tacticadev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As I mentioned in the <a href="http://tacticadev.wordpress.com/2010/07/26/vdsp-on-ipod-3g-arm11/">last post</a>, a friend lend me an iPod 3G to test its hardware. I already compared CPU for its performance in filling the interleaved vertex array.</p>
<p>Now I&#8217;m going to have a look at the GPU, specifically the advantages of using Vertex Buffer Objects on the new PowerVR SGX chip.</p>
<p><span id="more-371"></span>On the old iPod 2G I own, I tested GPU performance in <a href="http://tacticadev.wordpress.com/2010/07/23/opengl-es-performance-outline/">this post</a> and also confirmed that there was no performance advantage for using VBO&#8217;s.</p>
<p>Now the Analysis of my Engine on the SGX: (First without using VBO&#8217;s)</p>
<table border="”2″" cellspacing="”2″" cellpadding="”2″" width="”400″" summary="”&quot;">
<tbody>
<tr>
<td>triangles</td>
<td>FPS</td>
<td>triangles/second</td>
</tr>
<tr>
<td>22558</td>
<td>23.3</td>
<td>525k</td>
</tr>
<tr>
<td>23554</td>
<td>23.3</td>
<td>548k</td>
</tr>
<tr>
<td>27046</td>
<td>22.2</td>
<td>600k</td>
</tr>
<tr>
<td>28750</td>
<td>21.9</td>
<td>629k</td>
</tr>
<tr>
<td>33423</td>
<td>20.5</td>
<td>685k</td>
</tr>
<tr>
<td>37087</td>
<td>14.8</td>
<td>548k</td>
</tr>
<tr>
<td>39917</td>
<td>14.8</td>
<td>590k</td>
</tr>
</tbody>
</table>
<p>Whats interesting to note here is the appearent drop of FPS after I cross 35k triangles. I must have hit some bottleneck at this size of the matrix.</p>
<h2>VBO&#8217;s:</h2>
<p>Using Vertex Buffer Objects yields a huge performance increase, I am able to draw the same amount of triangles that used 15fps before at 30 fps!<br />
So I doubled the fps for the appropriate map size!</p>
<table border="”2″" cellspacing="”2″" cellpadding="”2″" width="”400″" summary="”&quot;">
<tbody>
<tr>
<td>triangles</td>
<td>FPS</td>
<td>triangles/second</td>
</tr>
<tr>
<td>37031</td>
<td>30</td>
<td>1110k</td>
</tr>
</tbody>
</table>
<h3>Comparison of 2G vs 3G:</h3>
<table border="”2″" cellspacing="”2″" cellpadding="”2″" width="”400″" summary="”&quot;">
<tbody>
<tr>
<td>triangles/second</td>
<td>no VBO&#8217;s</td>
<td>VBO</td>
</tr>
<tr>
<td>iPod 2G</td>
<td>~440k</td>
<td>~440k</td>
</tr>
<tr>
<td>iPod 3G</td>
<td>~600k</td>
<td>&gt;1000k</td>
</tr>
</tbody>
</table>
<p>Now this performance increase obviously only happens, because my geometry array is static as long as the player doesn&#8217;t move a unit. But even this movement is just a discrete one-time update of the VBO and therefore doesn&#8217;t change user-feeling.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tacticadev.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tacticadev.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tacticadev.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tacticadev.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tacticadev.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tacticadev.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tacticadev.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tacticadev.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tacticadev.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tacticadev.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tacticadev.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tacticadev.wordpress.com/371/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tacticadev.wordpress.com/371/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tacticadev.wordpress.com/371/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tacticadev.wordpress.com&amp;blog=11854652&amp;post=371&amp;subd=tacticadev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tacticadev.wordpress.com/2010/08/02/to-vbo-or-not-to-vbo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0fd70f0e37ab418e86035c1ccad58eee?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bersaelor</media:title>
		</media:content>
	</item>
		<item>
		<title>vDSP on iPod 3G, ARM11</title>
		<link>http://tacticadev.wordpress.com/2010/07/26/vdsp-on-ipod-3g-arm11/</link>
		<comments>http://tacticadev.wordpress.com/2010/07/26/vdsp-on-ipod-3g-arm11/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 16:06:43 +0000</pubDate>
		<dc:creator>bersaelor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[3G vs 2G]]></category>
		<category><![CDATA[ARM8-Cortex]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPhone App]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[SIMD]]></category>
		<category><![CDATA[vDSP]]></category>

		<guid isPermaLink="false">http://tacticadev.wordpress.com/?p=360</guid>
		<description><![CDATA[Thanks to the generous creator of Bowmaster, I now have an iPod Touch 3G at my disposal to test the hardware for one week. Here I&#8217;m gonna start to compare the interleaved-array fillrate using sequential loops vs. the performance of vectorized operations with vDSP. I did this for my iPod 2G in another post. The [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tacticadev.wordpress.com&amp;blog=11854652&amp;post=360&amp;subd=tacticadev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Thanks to the generous creator of <a href="http://itunes.apple.com/us/app/bowmaster/id352217158?mt=8">Bowmaster</a>, I now have an iPod Touch 3G at my disposal to test the hardware for one week.</p>
<p>Here I&#8217;m gonna start to compare the interleaved-array fillrate using sequential loops vs. the performance of vectorized operations with vDSP. I did this for my iPod 2G in <a href="http://tacticadev.wordpress.com/2010/07/04/speeding-up-vertex-array-fillrates-sequential-loop-vs-vdsp/">another post</a>.</p>
<p><span id="more-360"></span></p>
<h3>The Hardware:</h3>
<p>The operation I want to compare is done by the CPU. On the iPod Touch 3G thats an ARM Cortex-A8 833Mhz (underclocked at 600Mhz). The iPod Touch 2G only had an ARM11 620Mhz(533Mhz) and in the WWDC Session 202 &#8211; The Accelerate framework for iPhone (available on iTunes for registered Developers) they said, the Cortex has superior vector-operation capabilities.</p>
<p>So let&#8217;s test them and see for ourselves <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Again I&#8217;m putting 10000 scrub-geometries into the interleaved array, each consisting of 486 vertices. The code is pretty much the same as in the <a href="http://tacticadev.wordpress.com/2010/07/04/speeding-up-vertex-array-fillrates-sequential-loop-vs-vdsp/">old post</a>, except that I don&#8217;t move the normals around anymore.</p>
<p>I changed the normals  datatype to &#8220;short&#8221; to decrease the size of the interleaved array and they don&#8217;t really look worse if you don&#8217;t turn their normals. Therefore the times on the old iPod 2G changed a little so I&#8217;m going to test there again, too.</p>
<p>So the sequential code looks very straight-forward now:</p>
<pre><span style="color:#888888;"><span style="color:#00ff00;">for (int k=0; k&lt;scrubVertexCount; k++) {
 _interleavedVerts[_vertexCount+k].v.x = xc + co*scrubX[k] - si*scrubY[k];
 _interleavedVerts[_vertexCount+k].v.y = yc + si*scrubX[k] + co*scrubY[k];
 }</span>
</span>
</pre>
<p>The vDSP-Code was:</p>
<p><span style="color:#00ff00;">//tempVecX = co* x + xc;<br />
vDSP_vsmsa(scrubX, 1, &amp;co, &amp;xc, tempVecX, 1, scrubVertexCount);<br />
//tempVecY = si* x + yc;<br />
vDSP_vsmsa(scrubX, 1, &amp;si, &amp;yc, tempVecY, 1, scrubVertexCount);<br />
// x = -si*y + tempVecX<br />
vDSP_vsma(scrubY, 1, &amp;msi, tempVecX, 1, &amp;_interleavedVerts[_vertexCount].v.x, stride, scrubVertexCount);<br />
// y = co*y  + tempVecY<br />
vDSP_vsma(scrubY, 1, &amp;co, tempVecY, 1, &amp;_interleavedVerts[_vertexCount].v.y, stride, scrubVertexCount);</span></p>
<h3>Results:</h3>
<p><a href="http://tacticadev.files.wordpress.com/2010/07/graph2gvs3g1.png"><img class="aligncenter size-full wp-image-367" title="graph2Gvs3G" src="http://tacticadev.files.wordpress.com/2010/07/graph2gvs3g1.png?w=450&#038;h=540" alt="" width="450" height="540" /></a></p>
<p><a href="http://tacticadev.files.wordpress.com/2010/07/graph2gvs3g.png"><br />
</a></p>
<p>So , what do we make of this data?</p>
<p>On 3G, the advantage of using vDSP stays roughly the same, at about 2.5 as before (Remember we had more complicated sequential code).</p>
<p>Things that spring to mind are:</p>
<ul>
<li>even though the ARM Cortex-A8 has only 77 more Mhz, for vector-operations it seems to be 5 times as fast. I suspect that some pipeline that gets the data to the processor from memory is bigger (or just more cache)</li>
<li>the advantage of using vDSP is still about 2, so compared to the advantage on 2G we lost a little.</li>
</ul>
<p>I also think that maybe the 3G runs a little code optimization of the sequential code, maybe even some vectorization of its own!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tacticadev.wordpress.com/360/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tacticadev.wordpress.com/360/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tacticadev.wordpress.com/360/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tacticadev.wordpress.com/360/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tacticadev.wordpress.com/360/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tacticadev.wordpress.com/360/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tacticadev.wordpress.com/360/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tacticadev.wordpress.com/360/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tacticadev.wordpress.com/360/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tacticadev.wordpress.com/360/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tacticadev.wordpress.com/360/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tacticadev.wordpress.com/360/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tacticadev.wordpress.com/360/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tacticadev.wordpress.com/360/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tacticadev.wordpress.com&amp;blog=11854652&amp;post=360&amp;subd=tacticadev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tacticadev.wordpress.com/2010/07/26/vdsp-on-ipod-3g-arm11/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0fd70f0e37ab418e86035c1ccad58eee?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bersaelor</media:title>
		</media:content>

		<media:content url="http://tacticadev.files.wordpress.com/2010/07/graph2gvs3g1.png" medium="image">
			<media:title type="html">graph2Gvs3G</media:title>
		</media:content>
	</item>
		<item>
		<title>OpenGL ES performance outline</title>
		<link>http://tacticadev.wordpress.com/2010/07/23/opengl-es-performance-outline/</link>
		<comments>http://tacticadev.wordpress.com/2010/07/23/opengl-es-performance-outline/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 10:45:54 +0000</pubDate>
		<dc:creator>bersaelor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Geometry]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPhone App]]></category>
		<category><![CDATA[OpenGL]]></category>
		<category><![CDATA[OpenGL ES]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://tacticadev.wordpress.com/?p=344</guid>
		<description><![CDATA[For comparison against other 3D Engines, I wanted to publish my frames per second and triangles per second results. I just want to be sure I didn&#8217;t miss any important trick I could have used to speed everything up. 3D Engine Feature Outline: I already explained my engine in this post. To recoup: I have [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tacticadev.wordpress.com&amp;blog=11854652&amp;post=344&amp;subd=tacticadev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>For comparison against other 3D Engines, I wanted to publish my frames per second and triangles per second results.<br />
I just want to be sure I didn&#8217;t miss any important trick I could have used to speed everything up.</p>
<h2><span id="more-344"></span>3D Engine Feature Outline:</h2>
<p>I already explained my engine in <a href="http://tacticadev.wordpress.com/2010/02/06/weird-ways-of-using-opengl-es-on-the-iphone/">this post</a>. To recoup:<br />
I have enabled :</p>
<ul>
<li>TexCoords</li>
<li>Normals and GL_NORMALIZE</li>
<li>COLOR_ARRAY</li>
<li>VERTEX_ARRAY</li>
<li>I draw using glDrawElements(GL_TRIANGLES,..) using an unsigned short array for the indices</li>
<li>I issue a second draw command &#8220;glDrawArrays&#8221; for the UI, but switching this off doesn&#8217;t have any performance impact</li>
<li><strong>Antialiasing/Multisampling </strong>is switched on using an msaabuffer with a samplesize of 4</li>
</ul>
<p>My interleaved Array has the following structure and a size of 26 bytes:</p>
<pre><span style="color:#00ff00;">typedef struct _iVertex3D
{
    short uv[2];
    shortVert n; //just short[3]
    unsigned int color;
    Vertex3 v; //just float[3]
} iVertex3D;

</span></pre>
<h4>Ideas I haven&#8217;t tried to improve performance:</h4>
<ul>
<li>stripify all my geometrys and call glDraw(GL_TRIANGLES_STRIP,&#8230;) because then I&#8217;d have to add quite a lot of degenerate vertices to glue different parts of geometry together</li>
</ul>
<pre><span style="color:#00ff00;"> </span><span style="color:#00ff00;"> </span></pre>
<h2>Testing device:</h2>
<p>Second Generation iPod Touch, that means MBX GPU and a ARM11 620 (533) Mhz CPU.</p>
<p><strong>I tried painting using VBO&#8217;s but it didn&#8217;t change a single FPS, so I can confirm it doesn&#8217;t make a difference on MBX GPU&#8217;s!</strong></p>
<p><strong><br />
</strong></p>
<h2>FPS Results:</h2>
<p>I tried different sizes of maps, that yielded different amount of vertices/triangles. I also added a column &#8220;triangles/second&#8221; to have a more stable metric of comparison against other devices/engines.</p>
<p>Please keep in mind I capped FPS at 30 to improve battery performance and omit unneccessary rendering!</p>
<table border="”2″" cellspacing="”2″" cellpadding="”2″" width="”400″" summary="”&quot;">
<tbody>
<tr>
<td>map size</td>
<td>FPS</td>
<td>triangles</td>
<td>vertices</td>
<td>triangles/second</td>
<td>vertices/second</td>
</tr>
<tr>
<td>5</td>
<td>30</td>
<td>10030</td>
<td>6318</td>
<td>300900</td>
<td>189540</td>
</tr>
<tr>
<td>6</td>
<td>30</td>
<td>12074</td>
<td>7665</td>
<td>362220</td>
<td>229950</td>
</tr>
<tr>
<td>7</td>
<td>25.5</td>
<td>16163</td>
<td>9523</td>
<td>412156.5</td>
<td>242836.5</td>
</tr>
<tr>
<td>7</td>
<td>24</td>
<td>18063</td>
<td>10519</td>
<td>433512</td>
<td>252456</td>
</tr>
<tr>
<td>8</td>
<td>22</td>
<td>19207</td>
<td>11561</td>
<td>422554</td>
<td>254342</td>
</tr>
<tr>
<td>8</td>
<td>20</td>
<td>22045</td>
<td>13043</td>
<td>440900</td>
<td>260860</td>
</tr>
<tr>
<td>9</td>
<td>14.7</td>
<td>30072</td>
<td>18964</td>
<td>442058.4</td>
<td>278770.8</td>
</tr>
</tbody>
</table>
<p>So appearently the limit here is imposed by the triangles/second, that is the amount of triangles the MBX GPU running my 3D Engine is roughly at 440000.<br />
That would also suggest I can draw up to 14600 triangles without loosing framerate, that is without the framerate falling below 30.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tacticadev.wordpress.com/344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tacticadev.wordpress.com/344/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tacticadev.wordpress.com/344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tacticadev.wordpress.com/344/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tacticadev.wordpress.com/344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tacticadev.wordpress.com/344/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tacticadev.wordpress.com/344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tacticadev.wordpress.com/344/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tacticadev.wordpress.com/344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tacticadev.wordpress.com/344/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tacticadev.wordpress.com/344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tacticadev.wordpress.com/344/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tacticadev.wordpress.com/344/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tacticadev.wordpress.com/344/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tacticadev.wordpress.com&amp;blog=11854652&amp;post=344&amp;subd=tacticadev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tacticadev.wordpress.com/2010/07/23/opengl-es-performance-outline/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0fd70f0e37ab418e86035c1ccad58eee?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bersaelor</media:title>
		</media:content>
	</item>
		<item>
		<title>Rejoyce: 1.5 will have ambient music</title>
		<link>http://tacticadev.wordpress.com/2010/07/21/rejoyce-1-5-will-have-ambient-music/</link>
		<comments>http://tacticadev.wordpress.com/2010/07/21/rejoyce-1-5-will-have-ambient-music/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 08:31:00 +0000</pubDate>
		<dc:creator>bersaelor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Indie Developer]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPhone App]]></category>
		<category><![CDATA[soundtrack]]></category>

		<guid isPermaLink="false">http://tacticadev.wordpress.com/?p=339</guid>
		<description><![CDATA[Yesterday I got a message by Markus Illko, telling me he liked tactica and that he wanted to make ambient sound tracks for it. The samples he has on his homepage sound really promising, so now I&#8217;m looking forward to an awesome score. Given I&#8217;ll also add some new animations to version 1.5, the media [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tacticadev.wordpress.com&amp;blog=11854652&amp;post=339&amp;subd=tacticadev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Yesterday I got a message by <a href="http://www.markusillko.com/">Markus Illko</a>, telling me he liked tactica and that he wanted to make ambient sound tracks for it.</p>
<p>The samples he has on his homepage sound really promising, so now I&#8217;m looking forward to an awesome score.</p>
<p>Given I&#8217;ll also add some new animations to version 1.5, the media experience will have a whole new depth <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/tacticadev.wordpress.com/339/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/tacticadev.wordpress.com/339/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/tacticadev.wordpress.com/339/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/tacticadev.wordpress.com/339/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/tacticadev.wordpress.com/339/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/tacticadev.wordpress.com/339/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/tacticadev.wordpress.com/339/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/tacticadev.wordpress.com/339/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/tacticadev.wordpress.com/339/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/tacticadev.wordpress.com/339/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/tacticadev.wordpress.com/339/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/tacticadev.wordpress.com/339/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/tacticadev.wordpress.com/339/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/tacticadev.wordpress.com/339/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=tacticadev.wordpress.com&amp;blog=11854652&amp;post=339&amp;subd=tacticadev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://tacticadev.wordpress.com/2010/07/21/rejoyce-1-5-will-have-ambient-music/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0fd70f0e37ab418e86035c1ccad58eee?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bersaelor</media:title>
		</media:content>
	</item>
	</channel>
</rss>
