Sign in to follow this  
Tom Pennetta

Android: OpenGL Finger Paint App

Recommended Posts

Hi all,

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).

Thanks.

Share this post


Link to post
Share on other sites
Are you calling glClear during onDrawFrame or similar function? If you don't call it it should never clear the screen, thus allowing you to continually "add" to the image on every frame.

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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this