Pixel precise

I ended up programming a windows-like window system for my opengl engine. Every window gets a new glViewport as well as a call to glOrtho to setup a plain 2d resolution with the size of the window.
For example: The window has 100x100 pixels.
I set up glViewport with the correct window size. Now I do a call to glOrtho, with parameters 0 for left, 0 for top and width and height for the remaining viewport planes.
Now, I end up creating some rectangles for the window-frames, but some lines simply draw over the others even if I specify their coordinates with 1 distance (which should be 1 Pixel - theoretically?).
Any ideas are appreciated!

Michael Steinberg

welcome back michael!

i didn’t tried any of these ideas… let me know if they work.

try to specify pixel-centered coordinates, like (0.5,0.5) for the bottom-left pixel.

or else, try to pass coordinates as integers.


Hey dmy!
I think I know you from the old board!
Cool to see some known faces here, because the nicks I see here now are all a bit confusing and they make the board look somewhat unprofessional…
I’ll try your thoughts! The pixel centering with 0.5 in each direction didn’t work when I tried but I’ll try that integer one. If that doesn’t help, that destroys my view of actual accelerators/vendors. BTW: I’ve got still my Viper550 with RivaTNT on Detonator 2.08. Is that known to be unprecise?


Hi Michael!

Glad to see you back!

Well, I have the same gfx card as you, but I still remenber that the texel midpoint was set to something like 0.2 to 0.3 in older versions of the driver.

Well, just a thought!



Cool man!
Gonna try that.


Hi there.

This may sound a bit silly or extreme, but did you changed the mode of the fpu?

By default it internaly works with:
64bit/round to nearest/exections

You could try 32Bit/truncate/execptions

to see what comes out (should give you a little speedboost as well)

Don’t panic, the other programms are not affected by this change (a context change also safes the cpu/fpu states)

Just a thougt.



Hey man!
Oh my god! Trying to change FPU mode? Isn’t that a bit dirty? Oh well, anyway. How to do that? Is it bad to drop the precision? I mean, my C manual told me that the float type would take 4 bytes, why does the compiler use 8 then? Wouldn’t that be the double type? I’m not too much into the theories of pc’s/cpu’s so can anybody tell me?

thnx -Michael

Hehehe, somebody may call it dirty, I think it is cool

Well, let me explain, it doesn’t have anything to do with your compiler (it still generates 4bytes for a float).

It is only affecting the internal behavior of the fpu. By default a float (32bit) is converted into a double (64bit) when loaded into the fpu then your operations are excuted and when you store the result as a float again, it is converted back to 32bit acordinf to the rounding mode you specified.

And the good think this converion is for free (means takes no extra cycles).

I can send you some code to do it, If you really want “dirty code”



Hi Michael !

It’s been a long time since we heard something from you !!!
I am a bit curious and I wondered if you tried your code on various machines/graphics cards to see if the behaviour was the same in every case…
Well, this is of no help to you but, as I said, I was a bit curious !



Hey guys! Well it has been a long time… I’m still havin’ that problem, and I have no other graphics cards here (tell my parents my allowances would not be enough if you like).
But more basically, I wanted to say hello to all I know!!!