I've been playing with OpenGL but am unable to get a steady framerate
due to GC.

When rendering 100 tiles each frame (in ortho mode), the GC needs to
recover ~22000 objects every 3 seconds or so. Each collection is taking
around 110 ms. Of course this means quite a framerate dip.

...
D/dalvikvm( 9837): GC freed 21841 objects / 524272 bytes in 113ms
D/dalvikvm( 9837): GC freed 21841 objects / 524272 bytes in 113ms
D/dalvikvm( 9837): GC freed 21841 objects / 524272 bytes in 113ms
D/dalvikvm( 9837): GC freed 21841 objects / 524272 bytes in 114ms
...


The rendering loop I tested with is not making any objects and is very
simple;

while (super.running) {
        gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
        gl.glBindTexture(GL10.GL_TEXTURE_2D, tex);
        for(x = 0 ; x < 100; x++) {
                gl.glVertexPointer(2, GL10.GL_FIXED, 0, tileCoords[x]);
                gl.glTexCoordPointer(2, GL10.GL_FIXED, 0, tileTexCoords[x]);
                gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4);
        }
        egl.eglSwapBuffers(dpy, surface);
}

The calls to gl.glVertexPointer(...); and gl.glTexCoordPointer(...);
seem to be ones creating the most objects.

When I take those two calls outside the for and while loop (so rendering
the same tile at the same position a 100 times each frame), GC didn't
occur at all for the three minutes I waited.

So, is this supposed to be the case ? 
I also could not find sources for the implementation which is
"com.google.android.jsr239.GLImpl"? Anyone knows where to find those?




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