Archived

This topic is now archived and is closed to further replies.

gluPerspective and glOrtho

This topic is 5159 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hey, simply put, what is the difference between: gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,100.0f); and glOrtho(0.0f,800,600,0.0f,-51.0f,1.0f); I use glOrtho to display text but when i call gluPerspective to disply 3d objects, my text disappears. what should i send these function calls so that i am looking at the same place in space? thanks!

Share this post


Link to post
Share on other sites
In Ortho, distance from camera doesnt make a difference to the size of the object.

In Perspective, it appears as we humans see the world around us, objects further away become smaller.

You should render your 3d objects first, then switch to ortho and render your text with depth testing off so that your text will show even if it is behind your 3d objects. Also, while changing, remember not to call glClear.

Share this post


Link to post
Share on other sites
thanks gamersg

i''ve tried that but i think i have a parameter or two wrong, possibly fovy of gluPerspective. what angle should i set this parameter to so i can see all of my output?

thanks!

Share this post


Link to post
Share on other sites
Depends on how you want your focus to be like. the larger the angle, the more your camera will see. Something like a camera lens. Anything from 45 - 140. You will have to play around with it to get it right.

Also, this angle should not affect your text at all.
Try this

glClear();

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(//whatever);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
drawModels();

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(//whatever);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
drawText();


SwapBuffers();

Share this post


Link to post
Share on other sites
Hmm....still having problems. The text prints normally when I just call glOrtho and just draw text but doesn''t show up at all when i try to draw 3d objects.
Exact code (cut and paste):

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(1.0,1.0,1.0);
glViewport(0,0,width,height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,100.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();


glLoadIdentity(); glTranslatef(-1.5f,-5.0f,a); glBegin(GL_TRIANGLES); glVertex3f( 0.0f, 1.0f, 0.0f); glVertex3f(-1.0f,-1.0f, 0.0f); glVertex3f( 1.0f,-1.0f, 0.0f);
glEnd();
glTranslatef(3.0f,0.0f,0.0f); glBegin(GL_QUADS); glVertex3f(-1.0f, 1.0f, 0.0f); glVertex3f( 1.0f, 1.0f, 0.0f); glVertex3f( 1.0f,-1.0f, 0.0f);
glVertex3f(-1.0f,-1.0f, 0.0f); glEnd();
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0f,800,600,0.0f,50.0f,-50.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glPrint(0,0,1,"text");
SwapBuffers(hDC);

Share this post


Link to post
Share on other sites
I think it''s your glOrtho. Im not sure of the parameters, but i use this instead.


gluOrtho2D(0, width, 0, height);

Share this post


Link to post
Share on other sites
msdn.microsoft.com:
The gluOrtho2D function sets up a two-dimensional orthographic viewing region. This is equivalent to calling glOrtho with near = 1 and far = 1.

opengl.org and pyopengl.sourceforge.net:

gluOrtho2D sets up a two-dimensional orthographic viewing
region. This is equivalent to calling glOrtho with near=-1
and far=1.

pike.ida.liu.se:
This is equivalent to calling
glOrtho(left, right, bottom, top, -1.0, 1.0);
FIXME
The GLU manual says glOrtho(a,b,c,d, 0, 1).

eecs.harvard.edu:
This is equivalent to calling glOrtho with near = 0 and far = 1.

tc1.chemie.uni-bielefeld.de:
This is equivalent to calling glOrtho with near = 1 and far = 1.

Hmmm....

Share this post


Link to post
Share on other sites