I am working in a situation where model coordinates are mapped directly to pixels. (ie. doing something like glRecti(0,0,1,1) will reliably fill the lower left pixel of the viewport.) The viewport itself is set up by doing something like
gluOrtho2D(0, width, 0, height);
where width and height are the dimensions of the viewport.
Here is my question…
When the scissor test is enabled, I have to draw lines at half-integer values to draw exactly on one row of pixels (a line from (x1, 0.5) to (x2, 0.5) will draw exactly on the bottom row). However, if I disable the scissor test, I have to use exact integer values to draw exactly on one row. (the same line has to go from (x1, 0) to (x2, 0))
Any ideas what’s going on here? Is there any reason why the scissor test would/could shift coordinates?