Jump to content

  • Log In with Google      Sign In   
  • Create Account

We're offering banner ads on our site from just $5!

1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


Android: OpenGL Finger Paint App


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
2 replies to this topic

#1 Tom Pennetta   Members   -  Reputation: 103

Like
0Likes
Like

Posted 20 February 2012 - 08:28 PM

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.

Sponsor:

#2 karwosts   Members   -  Reputation: 840

Like
1Likes
Like

Posted 21 February 2012 - 12:48 AM

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.
My Projects:
Portfolio Map for Android - Free Visual Portfolio Tracker
Electron Flux for Android - Free Puzzle/Logic Game

#3 Tom Pennetta   Members   -  Reputation: 103

Like
0Likes
Like

Posted 21 February 2012 - 02:58 PM

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.




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS