gluPerspective doesn’t work in this code, Just shows a white Blank screen, If I change it to glOrtho and it will work.
Any suggestions why perspective doesn’t work?
here is the code:
#include "stdafx.h"
#include "glut.h"
#include "math.h"
#include <stdio.h>
const double Xmin = 0.0, Xmax = 800.0;
const double Ymin = 0.0, Ymax = 600.0;
/*---------------- Resize Function ---------------*/
void resize(int w, int h)
{
double scale, center;
double windowXmin, windowXmax, windowYmin, windowYmax;
glViewport( 0, 0, w, h ); // View port uses whole window
w = (w==0) ? 1 : w;
h = (h==0) ? 1 : h;
if ( (Xmax-Xmin)/w < (Ymax-Ymin)/h ) {
scale = ((Ymax-Ymin)/h)/((Xmax-Xmin)/w);
center = (Xmax+Xmin)/2;
windowXmin = center - (center-Xmin)*scale;
windowXmax = center + (Xmax-center)*scale;
windowYmin = Ymin;
windowYmax = Ymax;
}
else {
scale = ((Xmax-Xmin)/w)/((Ymax-Ymin)/h);
center = (Ymax+Ymin)/2;
windowYmin = center - (center-Ymin)*scale;
windowYmax = center + (Ymax-center)*scale;
windowXmin = Xmin;
windowXmax = Xmax;
}
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
//glOrtho( windowXmin, windowXmax, windowYmin, windowYmax, -1200, 1200 );
gluPerspective(60.0f,(float)w/(float)h,0,600);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
/*--------------------- show function -------------------*/
void show (){
float v[3][3];
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glShadeModel(GL_SMOOTH);
glEnable(GL_DEPTH_TEST);
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glClearColor(1,1,1,1);
glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST);
//glDepthFunc(GL_ALWAYS);
glColor4f(1,0,1,0.5);
glBegin(GL_QUADS);
// Front
glVertex3f(200,500,0);
glColor4f(0,0,1,1);
glVertex3f(200,200,0);
glColor4f(1,1,0,1);
glVertex3f(500,200,0);
glColor4f(0,1,1,1);
glVertex3f(500,500,0);
glEnd();
glBegin(GL_QUADS);
glColor4f(0,1,0,1);
// Top
glVertex3f(200,500,300);
glColor4f(0.4,0.7,0.3,1);
glVertex3f(200,500,0);
glColor4f(1,0.6,0,1);
glVertex3f(500,500,0);
glColor4f(0.8,0.1,0.4,1);
glVertex3f(500,500,300);
glEnd();
glBegin(GL_QUADS);
// Right
glColor4f(0,0,1,1);
glVertex3f(500,500,0);
glColor4f(0.6,0.7,0.6,1);
glVertex3f(500,200,0);
glColor4f(0.2,0.5,0.1,1);
glVertex3f(500,200,300);
glColor4f(0,0.5,0.7,1);
glVertex3f(500,500,300);
glEnd();
// glDepthFunc(GL_LEQUAL);
glBegin(GL_QUADS);
// Left
glColor4f(0.4,1,1,1);
glVertex3f(200,500,300);
glColor4f(0.4,1,0.7,1);
glVertex3f(200,200,300);
glColor4f(0.2,1,0.8,1);
glVertex3f(200,200,0);
glColor4f(1,0,1,1);
glVertex3f(200,500,0);
glEnd();
// glDepthFunc(GL_LEQUAL);
glBegin(GL_QUADS);
// Back
glColor4f(1,0,0,1);
glVertex3f(200,500,300);
// glColor4f(0.7,0,1,1);
glVertex3f(200,200,300);
// glColor4f(0.4,1,1,1);
glVertex3f(500,200,300);
// glColor4f(1,0.2,1,1);
glVertex3f(500,500,300);
glEnd();
//glDepthFunc(GL_LEQUAL);
glBegin(GL_QUADS);
// Bottem
glColor4f(0.5,0,0.5,1);
glVertex3f(200,200,0);
glColor4f(1,1,0,1);
glVertex3f(200,200,300);
glColor4f(0,1,0,1);
glVertex3f(500,200,300);
glColor4f(0,1,0.7,1);
glVertex3f(500,200,0);
glEnd();
glPopMatrix();
glutSwapBuffers();
glFlush();
}
int main(int argc, char *argv[])
{
glutInit(&argc,argv);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE |GLUT_DEPTH );
glutInitWindowPosition( 0, 0 );
glutInitWindowSize( 1024, 768 );
glutCreateWindow("My Window");
glutReshapeFunc( resize );
glutDisplayFunc(show);
glutTimerFunc(0,Timer,0);
glutMainLoop();
return 0;
}