a different world/screen coordinate question

Is there a way to “re-scale” the world coordinate system so that, on the plane Z=0, the WCS would map one X or Y unit to one screen pixel?

That is, on a 640x480 screen, screen coordinate ( 0,0 ) would map to WCS ( 0,480 ) and screen coordinate ( 0,1 ) would map to WCS ( 0, 479 ) and SC ( 1, 0 ) would map to WCS ( 1, 480 ), etc…

Do I have to do the translation myself using gluUnproject or something similar?

Use an orthographic projection.
Look up glOrtho.

use glUnproject along with your viewport size and you should have the answer to it…

ae97004

Is there a way to accomplish this using the
glPushMatrix(), glPopMatrix() functions?
How would the performance of that approach compare to the other solutions?

You can do it this way:

glViewport (0, 0, 640, 640);

glOrtho(0, 640, 640,0 ,-1, 1);

This should give you a equal drawing area for view and openGL world space.

Here is the def for glOrtho

glOrtho( GLdouble left,
GLdouble right,
GLdouble bottom,
GLdouble top,
GLdouble zNear,
GLdouble zFar )

Originally posted by bluephysics@excite.com:
[b]Is there a way to “re-scale” the world coordinate system so that, on the plane Z=0, the WCS would map one X or Y unit to one screen pixel?

That is, on a 640x480 screen, screen coordinate ( 0,0 ) would map to WCS ( 0,480 ) and screen coordinate ( 0,1 ) would map to WCS ( 0, 479 ) and SC ( 1, 0 ) would map to WCS ( 1, 480 ), etc…

Do I have to do the translation myself using gluUnproject or something similar?

[/b]

Could someone write a complete compilable example using glOrtho that just draws a 10 pixel line?

Thanks
-dufus1097