I’m using glReadPixels/glDrawPixels, or WGL_ARB_buffer_region (depending on availability) to fill the background of an OpenGL context: I render some complex static background, save it, and later on, for each frame, I restore it and start rendering a dynamic layer.
However, if this works perfectly when the window does not move, when it is dragged around, a small gray border of 0-10 (or so) pixels appears on the left or right (either, not both), and a smaller border on the top/bottom, like if the drawing was aligning itself to some block boundary…
Apparently, on nVidia drivers (on a GF2), this is the case with both methods (DrawPixels and buffer_region), and if the window is partly out of the screen (to the left), the rendered pixels are offset as if the screen’s left edge was the window’s left edge.
I’ve tried with MS Software OpenGL and Mesa4 (with the glDrawPixel method only), and the previous two problems do not seem to happen, neither gray borders nor offset… Any ideas?
(yes, I explicitly specify the RasterPos before drawing the pixels to a constant [0, 0], and I reset the modelview and projection matrices)