And yes, the touch slowdown also sucks a lot. I use 30ms for the racer
i linked to above and it is still noticeable.

On 26 Jan., 19:44, Mario Zechner <badlogicga...@gmail.com> wrote:
> I can share your experience on the Droid/Nexus One. Interestingly the
> HTC Hero performs better than the droid on the scene above.
>
> As for the background: yes, depth tests/writes and lighting are
> disabled, only alpha testing is enabled (which is a bit faster than
> alpha blending). A single fullscreen quad performs as you said with
> 60fps on MSM7200 hardware. That's probably the optimization in the
> chip. I was however suspecting that this optimization would also kick
> in for the tiles of the scene above but it doesn't seem so. Never the
> less i get a framerate between 40 and 50fps on the hero, while the
> droid struggles at ~40fps now.
>
> Lowering the texture resolution helped on the PowerVR as well as on
> the MSM7200, around 5fps increase. Setting the filters to near and
> linear yields similar relative results to yours on the PowerVR. The
> effect with nearest filtering is much more pronounced on the MSM7200.
> Which should be expected as the PowerVR has a way higher nominal fill-
> rate. However, only getting not even 10% of the fill-rate kinda sucks.
> I don't suspect that it's a bandwidth problem in the CPU->GPU
> direction as the textures should be stored on the graphics chip
> itself. I might be wrong though, that's how it works on the desktop at
> least. If the textures are indeed stored in system RAM than that might
> explain the poor sampling rates.
>
> The triangle cap at 2000 is something i tried to achieve already. It
> helped a bit on the MSM7200, no real difference on the PowerVR. I
> think i read somewhere that the vertex transforms are performed on the
> CPU on G1 hardware. The PowerVR should have it's own FPU or ALU. I
> have all my VBOs in dynamic mode at the moment, i will try to use
> static ones and see if that helps. There's also no difference between
> using fixed and floating point vertex attributes from some
> microbenchmarks i did (small untextured triangles, depth buffer off,
> lighting on, no alpha blending/testing). The bottle neck in my case is
> not the transformation and lighting though as far as i can tell, at
> least not on the PowerVR.
>
> Here's another interesting case study. I wrote a tutorial on Android
> Game Development for the german Android community over 
> athttp://www.androidpit.de.
> You can find it 
> athttp://www.androidpit.de/android/de/de/wiki/view/Spieleentwicklung_101.
> The end result of the tutorial is a small Space Invaders clone. The
> scene is pretty simple:
>
> http://www.androidpit.de/android/de/de/wiki/view/Datei:gameworld.png
>
> There's a total of 4x8=32 saucers displayed, each using a mesh with
> ~50 triangles, unindexed. That's 1600 triangles. The blocks are also
> rendered seperately, there's 3x5=15 of them each having 12 triangles
> that's another 180 triangles. The ship in the front has another 50
> triangles. The background is not moving and a fullscreen quad rendered
> with ortho projection, depth test/write off, lighting off, alpha
> blending/testing off and min/mag filter set to mipmap-nearest and
> linear. The saucers, blocks and ship are rendered with depth test/
> write on, lighting on, and for the blocks alpha blending is also on.
> The saucers share one texture which is bound once for rendering all of
> them, min/mag filter mipmap-nearest and linear. The same for the ship.
> The text is a couple of quads in a single VBO with a glyph texture,
> ortho projection, and nearest for both filters. All meshes are dynamic
> VBOs. For each object i do a push and pop of the model-view matrix,
> one glRotatef and glTranslatef call per object (saucer, block, ship).
> That's a shitload of JNI calls.
>
> Now, on the droid i get between 47-50fps with the above setting. My
> Hero can do 32fps max when all saucers are on screen. The more saucers
> you kill, and thus the less saucers are on the screen the better the
> framerate gets on the Hero. With one saucer left it's roughly
> 55-58fps. I got a little suspicious and disabled lighting on the Hero.
> Instant 60fps. So i suspect the rumor that T&L is done on the CPU is
> true. Interestingly the matrix operations are not a problem. I can
> happily draw 100 objects the way i described above and still get
> 100fps (good for my RTS i'm working on :p). Lighting on the MSM7200
> seems to be a no go. And the worst part is that i can't precalculate
> the vertex colors and thus the lighting for rotating objects. Sucks
> big times. You can find the full source code for the Space Invaders
> clone athttp://code.google.com/p/android-gamedev/.
>
> Now the performance on the Droid is also a little strange. So seeing
> that turning of the lighting didn't affect the framerate on the droid
> i suspected the fill-rate to be the sucker. I turned off rendering the
> background image, and tada instant 60fps again. This is really
> troublesome, especially since a friend of mine, an iphone game dev,
> has no problem achieving 60fps rendering the above scene on his 3GS.
> So maybe the bandwidth of the RAM is really the culprit here as you
> stated.
>
> Another problem in that regard is that time based movement depends on
> more or less steady framerates in order to not feel jerky. Well, try
> this herehttp://file-pasta.com/file/104641723/spaceracer-android.apk.
> Control the thrusters by any key/trackball except the home, back,
> search and menu key, controll the rotation of the ship by the onscreen
> buttons. If you are as sensible as me you will see a bit of stuttering
> when the ship moves in a single direction and more stuttering when the
> ship rotates. I draw the ship in total white so the effect is more
> pronounced. Now all the calculations are based on the delta time
> between frames. It does not matter wheter i put the physics in a
> seperate thread with double buffering as proposed 
> athttp://replicaisland.blogspot.com/2009/10/rendering-with-two-threads....
> or do them in the GL rendering thread, the stuttering is always there.
> It's not the first time that i write a game using time-based movement,
> hell i can't even count the number of times i did that in the past
> already. On any Android devices i tested is the stuttering is there,
> leaving me with the suspicion that the multi-tasking is taking it's
> toll. On further inspection the delta times vary between 16 and 30
> milliseconds which is the cause of the stuttering.
>
> I love Android and i was used to working with shitty hardware in my
> DOS days. But some things just make me go crazy. Maybe we can use this
> discussion thread to share best practices concerning fill-rate and
> other issues.
>
> On 25 Jan., 19:55, Robert Green <rbgrn....@gmail.com> wrote:
>
> > Seems like no matter what I do with the Droid/Nexus One, I don't get
> > much over 40FPS.  I'm multitexturing and drawing a full screen level
> > with HUD on top.  If I drop the texture resolutions down to crap and
> > use all nearest neighbor filtering, I get about 40FPS.  If I crank the
> > texture resolutions (all 1K) and pop it up to trilinear filtering, I
> > get 30-32FPS.  G1 is more extreme - 35FPS on all low/nearest, 7FPS on
> > high/trilinear.  It seems then that most of these chips (MSM7200, PVR
> > SGX530, Snapdragon) are all fill-bound in the same way.  Perhaps it's
> > a memory bandwidth issue of some sort.
>
> > Are you rendering your background in an orthographic projection with
> > the obvious stuff like lights, depth check and blend shut off?  That
> > should go really fast - much faster than what you're getting.  I
> > remember getting 60FPS on both the G1 and Droid rendering a full
> > screen quad orthographically.
>
> > BTW - I don't let my scenes get much over 2000 triangles.  The MSM7200
> > seems to start to get vert processing slow-down around there.  The SGX
> > and Snapdragon don't seem to mind it.  I'd be comfortable pushing
> > those up to 10k triangles.  Static VBOs do help a lot with the memory
> > bottleneck.  Since I can't use a vertex shader to do mesh animations,
> > I can't use a static vbo on those but I keep the vert count super low
> > on my animated characters so performance isn't too bad.
>
> > To be honest, my biggest performance problem is simply the touch slow-
> > down issue on Android 1.5/1.6.
>
> > On Jan 24, 7:44 pm, Mario Zechner <badlogicga...@gmail.com> wrote:
>
> > > Hi,
>
> > > i'm currently writting a small game that uses a tile based approach to
> > > render the background. Additionally i want to zoom in and out so using
> > > the 2D texture blit extension is out of the window.
>
> > > The tile map is split up into different cells i use for frustum
> > > culling, similar to a quadtree but with fixed size. I really only
> > > render what can be seen from the camera (and a bit outside the borders
> > > of the view). Here's an image that should give you an idea:
>
> > >http://file-pasta.com/file/0/device.png
>
> > > Each tile is mapped to a 32x32 region in a texture atlas of size
> > > 256x256. The texture minification filter is set to mipmap-nearest, the
> > > magnification filter is set to linear. At the zoom level above the
> > > mipmap filter kicks in which should lower the pressure during
> > > sampling.
>
> > > The mesh for the scene above is actually several meshes (here 4, one
> > > for each partition) each containing 8x8 tiles, using 2 triangles per
> > > tile that makes 8x8x6=384 vertices. That's 384x4=1536 vertices to be
> > > transformed, which the powervr sgx 530 in my trusty milestone should
> > > handle easily. The meshes are stored in static VBOs of course.
>
> > > The following settings are used for the above scene: depth test
> > > disabled, dithering disabled, lighting disabled, texturing enabled,
> > > blending enabled. i even bound the texture only once in the setup code
> > > for the screenshot above.
>
> > > I get 35fps on my milestone in native resolution, and 36fps in
> > > compatibility mode. If i don't fill up the full screen with tiles but
> > > only half of the screen i get 50fps. again, all i do is:
>
> > > bind texture atlas
>
> > > render partition 1
> > > render partition 2
> > > render partition 3
> > > render partition 4
>
> > > where each partition consists of 8x8x2=96 lousy triangles.
>
> > > According to the specs of the chip it's capable of roughly 200mp/s.
> > > The scene above has 8x8x32x32x4=262144
>
> ...
>
> Erfahren Sie mehr »

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to