I was one of the first to receive an OUYA and I've been trying various development environments and graphics techniques to find what performs the best and I'm still stumped.
Adobe AIR + Stage 3D - Crashes OUYA
Adobe AIR w/o Stage 3D - Goes Slow even in GPU mode.
Java + Canvas = Goes really slow (100 circles < 30fps)
Java + Open GL ES = Rotating triangle going slower than 60fps
I'm starting to think there is something wrong with my OUYA. Perhaps there is just some key piece of information I am just missing.
How is everyone else achieving such performance?
Comments
Im using open gl es as well and calling functions to draw walls/floors in 3d world with camera on a 1024x1024 grid and only getting about 45-48 fps as well. I also had a 2d sprite test program with two for loops to create sprites/objects and i was only able to throw around about 250 moving animated 32x32 sprites at 1080p and 250 non moving non animated sprites (500 sprites total) and still only got about 50 fps... im not sure what the deal is and this is only a BASIC bare bones 2d test program with nothing fancy...
Im actually kind of dissapointed... I REALLY dont want to have to lock in a game at 30 fps when i know it can run alot better on the same hardware most likely later on...
Im hoping that when the system goes live they'll release and update that overclocks the dev units hopefully to the 2ghz range and maybe opens us up to using a bit more of the system ram maybe?
Im not even currently sure how much of the system ram we can use at the moment. i THOUGHT i heard we were capped at 512 right now... I could just be crazy though...
For comparison with other android devices, it does a little worse on the Kindle Fire (about 75 - 100 fps) and about 20-35fps on my ZTE Blade.
This is all using OpenGL ES 1.1 and Java
Website
[Edit: with same base code in our test, Nexus 7 in 1280*720 hits around 1800 sprites - when OUYA hits around 2300 sprites in 1920*1080 (and fan starts) - so roughly a 25% performance difference].
www.yummycircus.com
There's an area of the Xbox graphics unit designed specifically for holding render textures in memory. The issue is that it's actually pretty small in size, and it's actually really quite easy to exceed this size with more than one render target (for example, using a deferred rendering pipeline as most games do these days at the full 1080 resolution is guaranteed to exceed this limit).
So the entire reason they render at lower than 1080 is just so they can fit their render targets in memory. In fact I believe Call of Duty renders at just 1024x600
However, I think it does serve to highlight that games running at say 720p aren't going to get bad reviews (especially if it means you can squeeze more out of the graphics, you'll make players happier)
It's not my game as such. If I build the example ODK scenes it happens on those too.
Requires more investigation, but too busy writing the game for existing platforms at the moment.