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 [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---