OpenGL ES performance outline

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’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 enabled :

  • TexCoords
  • Normals and GL_NORMALIZE
  • COLOR_ARRAY
  • VERTEX_ARRAY
  • I draw using glDrawElements(GL_TRIANGLES,..) using an unsigned short array for the indices
  • I issue a second draw command “glDrawArrays” for the UI, but switching this off doesn’t have any performance impact
  • Antialiasing/Multisampling is switched on using an msaabuffer with a samplesize of 4

My interleaved Array has the following structure and a size of 26 bytes:

typedef struct _iVertex3D
{
    short uv[2];
    shortVert n; //just short[3]
    unsigned int color;
    Vertex3 v; //just float[3]
} iVertex3D;

Ideas I haven’t tried to improve performance:

  • stripify all my geometrys and call glDraw(GL_TRIANGLES_STRIP,…) because then I’d have to add quite a lot of degenerate vertices to glue different parts of geometry together
  

Testing device:

Second Generation iPod Touch, that means MBX GPU and a ARM11 620 (533) Mhz CPU.

I tried painting using VBO’s but it didn’t change a single FPS, so I can confirm it doesn’t make a difference on MBX GPU’s!


FPS Results:

I tried different sizes of maps, that yielded different amount of vertices/triangles. I also added a column “triangles/second” to have a more stable metric of comparison against other devices/engines.

Please keep in mind I capped FPS at 30 to improve battery performance and omit unneccessary rendering!

map size FPS triangles vertices triangles/second vertices/second
5 30 10030 6318 300900 189540
6 30 12074 7665 362220 229950
7 25.5 16163 9523 412156.5 242836.5
7 24 18063 10519 433512 252456
8 22 19207 11561 422554 254342
8 20 22045 13043 440900 260860
9 14.7 30072 18964 442058.4 278770.8

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.
That would also suggest I can draw up to 14600 triangles without loosing framerate, that is without the framerate falling below 30.

Advertisements

One Response to “OpenGL ES performance outline”

  1. […] the old iPod 2G I own, I tested GPU performance in this post and also confirmed that there was no performance advantage for using […]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: