gluPerspective and glOrtho

Started by
5 comments, last by aperry 20 years, 4 months ago
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!
Advertisement
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.
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!
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();
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);
I think it''s your glOrtho. Im not sure of the parameters, but i use this instead.


gluOrtho2D(0, width, 0, height);
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....
PM Times change...Excuse my poor english!

This topic is closed to new replies.

Advertisement