Когда я запускаю свою программу, просто просматривая ось xyz, иногда перспектива меняется.
Чаще всего это выглядит как this. Но иногда это выглядит как this.
На первом изображении все, что находится на переднем плане, намного меньше. Если во втором изображении все выглядит примерно того же размера. Я предпочитаю второй образ, но я не знаю, что происходит!
Вот мой код:Ось OpenGL, представляющая разные
GLvoid ReSizeGLScene(GLsizei width, GLsizei height) // Resize And Initialize The GL Window
{
if (height == 0) // Prevent A Divide By Zero By
{
height = 1; // Making Height Equal One
}
glViewport(0, 0, width, height); // Reset The Current Viewport
aspectRatio = (GLfloat)width/(GLfloat)height;
screenHeight = (GLfloat)height;
screenWidth = (GLfloat)width;
}
int InitGL(GLvoid) // All Setup For OpenGL Goes Here
{
glShadeModel(GL_SMOOTH); // Enable Smooth Shading
glClearColor(1.0f, 1.0f, 1.0f, 0.5f); // Black Background
glClearDepth(1.0f); // Depth Buffer Setup
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // Really Nice Perspective Calculations
return TRUE; // Initialization Went OK
}
int DrawGLScene(GLvoid) // Here's Where We Do All The Drawing
{
//3D setup
glDepthMask(GL_TRUE);
glEnable(GL_DEPTH_TEST); // Enables Depth Testing
glDepthFunc(GL_LEQUAL); // The Type Of Depth Testing To Do
glMatrixMode(GL_PROJECTION); // Select The Projection Matrix
glLoadIdentity(); // Reset The Projection Matrix
gluPerspective(45.0f, aspectRatio, 0.1f, 500.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer
//3D stuff
glTranslatef(-8.0f*aspectRatio, 0.0f, -zoomInOut); // Move and zoom axes
glRotatef(rotateLeftRight, 0.0f, 1.0f, 0.0f); // Rotations
glRotatef(rotateUpDown, 1.0f, 0.0f, 0.0f);
//axes
glLineWidth(1.0);
glColor3f(0.0, 0.0, 1.0);
glBegin(GL_LINES);//x axis
glVertex3f(-20.0, 0.0, 0.0);
glVertex3f(20.0, 0, 0);
glEnd();
glBegin(GL_LINES);//y axis
glVertex3f(0.0, 20.0, 0.0);
glVertex3f(0.0, -20.0, 0);
glEnd();
glBegin(GL_LINES);//z axis
glVertex3f(0.0, 0.0, 20.0);
glVertex3f(0.0, 0.0, -20.0);
glEnd();
//2D setup
glDepthMask(GL_FALSE);
glDisable(GL_DEPTH_TEST);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0, screenWidth, 0, screenHeight); //left,right,bottom,top
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
//2D overlay goes here
return TRUE; // Keep Going
}
Что я сделал это изменение, как ось выглядеть?