Looking at the example:

I am able to get this working with the glReadPixels/glDrawPixels method, but not with the glCopyPixels method. It seems like the glCopyPixels method is trying to read and write into the same frame-buffer, is that legal?

Well it worked for me when I wrote it. It should be supported AFAIK.

OTOH it’s not too surprising that this doesn’t work on your system, it’s not exactly on the beaten path, experiment with your implementation and see if any copying works with non overlapping from, to regions.

These days the fast way to do this on the best PC hardware is to render to texture and use multiple texture taps to convolve the image when transferring to the framebuffer, but this can cause problems getting an AA visual if you need one. It is unlikely that ARB imaging will be as optimised as the texture approach, but you never know until you measure it I suppose.

Tell Jesse Angus says hello.