   Painting Program?
  Let me start off by saying this is -not- for a school assignment.  I've been interested in creating a cross-platform painting program and if I can get that done I'd like to add network capabilities similar to the semi-popular older versions of open canvas.I've decided to go with opengl and sdl which should have input and graphics covered for the most part.  I've been thinking of a few approaches to getting drawing information onto the screen.  What it comes down to is if the user clicks on their mouse button or uses a tablet (I plan on implementing tablet functionality later) I need to somehow lay down a pixel (or a series of pixels) I've even been thinking that a good idea might be to allow for an entire texture to be laid down instead similar to custom brushes in photoshop.  But how?Should I do individual pixels and manage all of this myself?  I think that would be a shame as opengl has a lot to offer with resizing and free rotations and all that other stuff already sorted out.  I -can- handle the pixel info myself, but I don't think that's the best idea.So if I want to make use of opengl's resizing, mipmapping, rotations and various functions how should I go about that?  I figured if there was an easy way to texture a rectangle and then to alter the texture information during realtime that would be ideal.  But I can't find much on that, I don't really know what to look for.I've found this: http://www.paulsprojects.net/opengl/rtotex/rtotex.html but I haven't looked too much into the pbuffer.My question is, where should I start looking?  Does anyone have some good links to tutorials?  Maybe some procedural texture generation tutorials will have the info I need.I plan on being able to save the information somehow (ideally to a png, bmp, tga, jpg, gif, whatever) later and I want to get multiple layers involved.  Is there an easy way to get this to work?   
  Here is a wiki site for procedural generation. And another off hand one I’ve found here Once, along time ago I was interested in the same thing you are. I gave up and just stuck with Photoshop. I figured, if I needed something that badly, I could always write a plug-in.You will need to learn the image file formats that your program will support. Depending on which API you choose, some of them may help you out here. Try Wotsits’s for the file formats you need. That site is full of good documents describing various file formats.You will most like need to learn some form of image convolution. This article here on GameDev gives a good introduction to the topic. You should really Google for Image Convolution for other papers or tutorials on the topic. Using brushes as you described (or Photoshop uses) is more or less a pattern that is applied like a stamp or tile with a specific filter (i.e. brush).Most of the time you wouldn’t want to manage each pixel of an image, unless you are performing a filter as described above. Hope this helps!;  Thanks for the links, ++I'll check them out.  You've provided exactly what I wanted, just a poke in a direction.   ;  I’m interested to see what program you come up with. I’d like to try it out, if you don’t mind. I’m always willing to help a guy out.   