halo

08-29-2005, 06:34 PM

I am writing some 2D commands, and need to draw pixel-perfect lines, points, and rectangles.

Let's say the client area is 400x300, and I want to draw a line (0,0,400,0), across the very top of the viewport.

1) I set glViewport to 0,0,400,300.

2) I set glOrtho to -200,200,-150,150.

3) I draw a line ((Ax-200),(300-Ay-150),(Bx-200),(300-By-150)) or ((0-200),(300-0-150),(400-200),(300-0-150)).

The line is one pixel too high, and lies offscreen. If I make a line across the very bottom, it lies right on the bottom edge. What is the correct mathematical change I need to make so that I can draw an arbitrary size window and get pixel-perfect results?

Thanks.

Let's say the client area is 400x300, and I want to draw a line (0,0,400,0), across the very top of the viewport.

1) I set glViewport to 0,0,400,300.

2) I set glOrtho to -200,200,-150,150.

3) I draw a line ((Ax-200),(300-Ay-150),(Bx-200),(300-By-150)) or ((0-200),(300-0-150),(400-200),(300-0-150)).

The line is one pixel too high, and lies offscreen. If I make a line across the very bottom, it lies right on the bottom edge. What is the correct mathematical change I need to make so that I can draw an arbitrary size window and get pixel-perfect results?

Thanks.