Hello everybody,

I've created a simple OpenGL app and created a rendering class which
implements GLSurfaceView.Renderer.  All it does is draw 100 triangles
(NUM_OBJECTS = 100) on the screen and move them about, bouncing off
the edges.  The projection is glOrtho2D and there is no z-buffer.  I'm
running this on a G1 with continuous redraw enabled.

Here is the onDrawFrame method:

public void onDrawFrame(GL10 gl) {
  gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
  for (n = 0; n < NUM_OBJECTS; n++) {
    gl.glPushMatrix();
    gl.glTranslatef(posX[n], posY[n], 0);
    gl.glVertexPointer(2, GL10.GL_FLOAT, 0, vBuffer);
    gl.glDrawElements(GL10.GL_TRIANGLES, 3, GL10.GL_UNSIGNED_SHORT,
iBuffer);
    gl.glPopMatrix();
    posX[n] += xa[n];
    posY[n] += ya[n];
    if (posX[n] > viewW || posX[n] < 0) {
      xa[n] = -xa[n];
    }
    if (posY[n] > viewH || posY[n] < 0) {
      ya[n] = -ya[n];
    }
  }
}

It's pretty simple stuff just to get an idea of the device
performance.  Note that I am not leaking any garbage in this method.

If we look at the logs while this is running,

D/dalvikvm( 3085): GC freed 21840 objects / 524256 bytes in 153ms
D/dalvikvm( 3085): GC freed 21842 objects / 524304 bytes in 156ms
D/dalvikvm( 3085): GC freed 21840 objects / 524256 bytes in 157ms
D/dalvikvm( 3085): GC freed 21842 objects / 524304 bytes in 155ms
D/dalvikvm( 3085): GC freed 21840 objects / 524256 bytes in 156ms
D/dalvikvm( 3085): GC freed 21842 objects / 524304 bytes in 156ms
D/dalvikvm( 3085): GC freed 21840 objects / 524256 bytes in 157ms
D/dalvikvm( 3085): GC freed 21842 objects / 524304 bytes in 155ms
D/dalvikvm( 3085): GC freed 21840 objects / 524256 bytes in 152ms
D/dalvikvm( 3085): GC freed 21842 objects / 524304 bytes in 155ms
D/dalvikvm( 3085): GC freed 21840 objects / 524256 bytes in 150ms
D/dalvikvm( 3085): GC freed 21842 objects / 524304 bytes in 155ms
D/dalvikvm( 3085): GC freed 21840 objects / 524256 bytes in 153ms
D/dalvikvm( 3085): GC freed 21842 objects / 524304 bytes in 155ms
D/dalvikvm( 3085): GC freed 21840 objects / 524256 bytes in 157ms
D/dalvikvm( 3085): GC freed 21842 objects / 524304 bytes in 155ms
D/dalvikvm( 3085): GC freed 21840 objects / 524256 bytes in 151ms
D/dalvikvm( 3085): GC freed 21842 objects / 524304 bytes in 159ms
D/dalvikvm( 3085): GC freed 21840 objects / 524256 bytes in 155ms
D/dalvikvm( 3085): GC freed 21842 objects / 524304 bytes in 156ms
D/dalvikvm( 3085): GC freed 21840 objects / 524256 bytes in 153ms
D/dalvikvm( 3085): GC freed 21842 objects / 524304 bytes in 158ms
D/dalvikvm( 3085): GC freed 21840 objects / 524256 bytes in 151ms

Every few seconds, the garbage collector has a bit of a tidy up.  If
we look at the frame rate, it is averaging out to be around 56Hz.  I
speculate that the system can keep up with the 60Hz vertical sync just
fine until it needs to collect garbage.

Nothing else is running so this stuff is definitely coming from this
app.  Unfortunately it causes the display to pause briefly (160ms is
about 10 frames) so would not be acceptable in an interactive game.
Does anybody know what causes this (something in the OpenGL code?) and
can it be avoided?

Thanks for any help.

Paul.

--~--~---------~--~----~------------~-------~--~----~
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