#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);
// Render a
color-cube consisting of 6 quads with different colors
glLoadIdentity();
// Reset the model-view matrix
glTranslatef(1.5f,
0.0f, -7.0f); // Move right and into the
screen
glBegin(GL_QUADS);
// Begin drawing the color cube with 6 quads
// Top face (y =
1.0f)
// Define
vertices in counter-clockwise (CCW) order with normal pointing out
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);
// Bottom face
(y = -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);
// Front
face (z = 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);
// Back face (z
= -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);
// Left face (x
= -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);
// Right face
(x = 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(); // End of drawing color-cube
glLoadIdentity();
// Reset the model-view matrix
glTranslatef(-1.5f,
0.0f, -6.0f); // Move left and into the
screen
glutSwapBuffers(); // Swap the front and back frame buffers
(double buffering)
}
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); //
To operate on the Projection matrix
glLoadIdentity(); //
Reset
gluPerspective(45.0f, aspect, 0.1f, 100.0f);
}
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