#include<windows.h>
#include<gl.h>
#include<glu.h>
#include<glut.h>
#include <math.h>
#include<stdio.h>
char title[] = "3D Shapes";
void initGL() {
glClearColor(0.0f,
0.0f, 0.0f, 1.0f);
glClearDepth(1.0f);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
glShadeModel(GL_SMOOTH);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(1.5f,
0.0f, -7.0f);
glBegin(GL_QUADS);
glColor3f(0.0f,
1.0f, 0.0f); // Green
glVertex3f(
1.0f, 1.0f, -1.0f);
glVertex3f(-1.0f, 1.0f, -1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f);
glVertex3f(
1.0f, 1.0f, 1.0f);
glColor3f(1.0f,
0.5f, 0.0f); // Orange
glVertex3f(
1.0f, -1.0f, 1.0f);
glVertex3f(-1.0f, -1.0f, 1.0f);
glVertex3f(-1.0f, -1.0f, -1.0f);
glVertex3f(
1.0f, -1.0f, -1.0f);
glColor3f(1.0f,
0.0f, 0.0f); // Red
glVertex3f(
1.0f, 1.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f);
glVertex3f(-1.0f, -1.0f, 1.0f);
glVertex3f(
1.0f, -1.0f, 1.0f);
glColor3f(1.0f,
1.0f, 0.0f); // Yellow
glVertex3f(
1.0f, -1.0f, -1.0f);
glVertex3f(-1.0f, -1.0f, -1.0f);
glVertex3f(-1.0f, 1.0f, -1.0f);
glVertex3f(
1.0f, 1.0f, -1.0f);
glColor3f(0.0f,
0.0f, 1.0f); // Blue
glVertex3f(-1.0f, 1.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, -1.0f);
glVertex3f(-1.0f, -1.0f, -1.0f);
glVertex3f(-1.0f,
-1.0f, 1.0f);
glColor3f(1.0f,
0.0f, 1.0f); // Magenta
glVertex3f(1.0f, 1.0f, -1.0f);
glVertex3f(1.0f, 1.0f, 1.0f);
glVertex3f(1.0f,
-1.0f, 1.0f);
glVertex3f(1.0f,
-1.0f, -1.0f);
glEnd();
glLoadIdentity();
glTranslatef(-1.5f,
0.0f, -6.0f);
glutSwapBuffers(); }
void reshape(GLsizei width, GLsizei height) {
if (height == 0)
height = 1;
GLfloat aspect =
(GLfloat)width / (GLfloat)height;
glViewport(0, 0,
width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0f, aspect, 0.1f, 100.0f);
if (width >=
height) {
// aspect >=
1, set the height from -1 to 1, with larger width
glOrtho(-3.0 *
aspect, 3.0 * aspect, -3.0, 3.0, 0.1, 100);
} else {
// aspect <
1, set the width to -1 to 1, with larger height
glOrtho(-3.0,
3.0, -3.0 / aspect, 3.0 / aspect, 0.1, 100);
}
}
int main(int argc, char** argv) {
glutInit(&argc,
argv);
glutInitDisplayMode(GLUT_DOUBLE);
glutInitWindowSize(640, 480);
glutInitWindowPosition(50, 50);
glutCreateWindow(title);
glutDisplayFunc(display);
glutReshapeFunc(reshape);
initGL();
glutMainLoop();
return 0;
}
No comments:
Post a Comment