Android: OpenGL Finger Paint App

Started by
1 comment, last by Tom Pennetta 12 years, 1 month ago
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.
Advertisement
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.
[size=2]My Projects:
[size=2]Portfolio Map for Android - Free Visual Portfolio Tracker
[size=2]Electron Flux for Android - Free Puzzle/Logic Game
This is true, glClear would solve the issue of clearing the framebuffer, but if in the future I would want to implement an erase, or undo functionality, it would be impossible correct? Thanks for the reply.

This topic is closed to new replies.

Advertisement