I have a vertex/fragment shader that draws a rectangle performing many calculations based on a texture. (It blends pixels, modifies them, etc). The thing is that each rectangle and the pixels it contains will not change. I only move the entire rectangle(s) around and zoom them.
Is there any way to optimize the fragment shader since the rectangles do not really need to be recomputed?
So, if I understood you correctly you compute those rectangles once and then want to reuse them? This kind of task is solved by rendering to a texture and then use the generated textures further on.
Render to texture is easiest done through Framebuffer Objects.
EDIT: A simple example for using FBO to render to texture