I am wondering if anyone can provide some references to the “geometric” performance of the ipad.
I have been running a couple of simple tests in which I am passing just the vertex and normal to the gpu and have very little code in the vertex and fragment programs:
attribute vec4 vertices;
attribute vec4 normals;
uniform mat4 ModelViewProjMatrix;
varying vec3 normal;
void main(void)
{
gl_Position = ModelViewProjMatrix * vertices;
normal = normals.xyz;
}
precision highp float;
varying vec3 normal;
varying vec3 v;
void main(void)
{
gl_FragColor.rgb = normal;
gl_FragColor.a = 1.0;
}
I am finding that for both interleaved and non interleaved vertex and normal data I am seeing the following frames per second (roughly) in instruments:
18 fps - 100,000 vertices and normals
18 fps - 75,000
19 fps - 60,000
22 fps - 55,000
25 fps - 50,000
25 fps - 45,000
60 fps - 40,000
When I reduce my shader to just use the vertex and to output a solid color (no normal) I find that I get similiar performance.
32 fps - 100,000 vertices
23 fps - 110,000 vertices
18 fps - 120,000 vertices
All of my vertices and normals are stored in vbos as floats. I am drawing with indexed triangle strips which are not in vbos (just yet).
I am wondering if anyone has run similiar tests and has ideas on whether I am hitting a memory limit or whether I should invest some time in moving my indexed strips into vbos or avoid using indices and duplicating the data to improve memory access?
Thanks in advance for any feedback.