Members - Reputation: 103
Posted 20 February 2012 - 08:28 PM
First post for me, hopefully I can explain this fully and clearly.
I am creating a fingerpaint style application for the Android OS. I am targeting OS version 2.2 for backwards compatbility, but has full support for OpenGL ES 1.1 and 2.0. The application will draw using a greyscale brush, similar to Photoshop brush drawing.
When I started writing the application, I tried using the OS native Canvas and SurfaceView to draw to the screen where the finger has been depressed or dragged, however the framerate is too slow and the drawing is choppy.
I switched to OpenGL and I am running into a methodology issue related directly to my inexperience with OpenGL. When my finger is pressed I have a quad drawn to the location of where the finger is depressed no problem. However, when I click a new location or drag, the quad with the texture of the brush used to draw is moving not being added to the scene (which makes sense as it is a quad object which is just changing its X and Y).
I don't see it efficient to create many of these quad objects as the more drawing the more efficiency loss and just bad design pattern.
The only thing I can think of is after every draw to take the whole screen and draw it to an offscreen buffer and re-draw it on next paint.
I have no clue if this is the right way to go about doing it, but any insight on this would be greatly appreciated. The more details the better as if I knew nothing of OpenGL (which is close to true).
Members - Reputation: 840
Posted 21 February 2012 - 12:48 AM
Unfortunately I'm not sure if the glSurfaceView uses double buffering or how to disable it if it does. This might cause some problems but I'm not sure, you can try without calling glClear and see how far you get.
Portfolio Map for Android - Free Visual Portfolio Tracker
Electron Flux for Android - Free Puzzle/Logic Game