I've created a small sample class to show the problem: http://fedecarnales.googlepages.com/TextureTest.java
It simply creates a full screen GLSurfaceView, sets up an orthogonal 2D matrix, creates a 1024x1024 texture from the default icon file, and displays it as a 480x854 quad on screen. The time-per-frame is measured by counting the time it takes to render 100 frames, then dividing it by 100 and writing it to the Logcat. On my Motorola Milestone, it's taking 34ms per frame, which is outrageous. If I enable mipmapping it goes down to 20ms per frame, which seems to indicate that the problem is directly related to the texture size or dimensions. What's interesting is that if you convert the bitmap to ARGB_4444 before loading it as a texture, the rendering time goes down from 34ms to 24ms, which to me seems to show that it's a problem related to the size of the texture in bytes rather than the dimensions (although the dimensions will obviously change the byte size). Regards, Federico On Jan 31, 2:09 pm, Robert Green <rbgrn....@gmail.com> wrote: > Federico - are you using GLSurfaceView or did you init EGL yourself? > If you initialized it yourself, did you check to make sure the config > gave you 24 bits of depth and not 16? That would be one thing to > cause the slowdown. > > I usually get 40FPS on a Droid full-screen (not with a big quad but > with a 3D scene) so something is certainly up with your code. > > On Jan 31, 10:58 am, Lance Nanek <lna...@gmail.com> wrote: > > > > > I don't have a Droid to test on, but if you haven't tried it already, > > it might be worth dropping the various texture settings down to their > > fastest/lowest quality and enabling mipmaps to check if that's where > > the problem is. Something like this: > > > gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST); > > > if ( gl instanceof GL11 ) { > > gl.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_GENERATE_MIPMAP, > > GL11.GL_TRUE);} > > > gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, > > GL10.GL_NEAREST); > > gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, > > GL10.GL_NEAREST); > > > Some of the past threads have also stated that depth size 24 is faster > > than anything else on the Droid for some reason. So make sure you end > > up with that config. > > > On Jan 30, 11:58 pm, Federico Carnales <fedecarna...@gmail.com> wrote: > > > > Hi all, > > > > So I'm doing some simple 2D stuff with OpenGL on Android and found the > > > performance to be very, very poor. > > > > To give you an example, I made an app with a full screen > > > GLSurfaceView. I loaded a 512x1024 texture (containing a 480x854 > > > image), set up an orthogonal 2D matrix, and set it to draw a 480x854 > > > pixel quad with that texture, using vertex and texture arrays. > > > Lighting, dither, blending, etc. is disabled. > > > > I would expect this to run at 60fps without problem, but that simple > > > operation already drags the frame drawing time to 19ms/frame. > > > > If I add some more small textured quads around the screen, the drawing > > > time goes up to 22/24ms. If I enable blending it balloons to 28/30ms. > > > > This is testing on a Motorola Milestone, running 2.0.1. > > > > Is this normal? Am I doing something wrong or is it just a common > > > problem in Android? > > > > Any advice on how to attain 60fps drawing simple textured quads in 2D > > > using OpenGL? > > > > Thanks in advance! > > > > Regards, > > > Federico -- 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