0% found this document useful (0 votes)
37 views2 pages

Putf

The document defines functions for drawing a color cube in OpenGL with vertices and colors defined in arrays. It includes functions for drawing polygons, drawing the full cube, and rotating the cube in response to user input.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
37 views2 pages

Putf

The document defines functions for drawing a color cube in OpenGL with vertices and colors defined in arrays. It includes functions for drawing polygons, drawing the full cube, and rotating the cube in response to user input.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 2

#include<GL/glut.

h>
GLfloat vertices[][3]=
{
{-1.0,-1.0,-1.0}, //0
{ 1.0,-1.0,-1.0}, //1
{ 1.0, 1.0,-1.0}, //2
{-1.0, 1.0,-1.0}, //3
{-1.0,-1.0, 1.0}, //4
{ 1.0,-1.0, 1.0}, //5
{ 1.0, 1.0, 1.0}, //6
{-1.0, 1.0, 1.0} //7
};
GLfloat colors[][3]=
{
{ 0.0, 0.0, 0.0}, //black
{ 0.0, 0.0, 1.0}, //blue
{ 0.0, 1.0, 0.0}, //green
{ 0.0, 1.0, 1.0}, //cyan
{ 1.0, 0.0, 0.0}, //red
{ 1.0, 0.0, 1.0}, //magenta
{ 1.0, 1.0, 0.0}, //yellow
{ 1.0, 1.0, 1.0} //white
};

void polygon(int a,int b,int c,int d)


{
glBegin(GL_POLYGON);
glColor3fv(colors[a]);
glVertex3fv(vertices[a]);
glColor3fv(colors[b]);
glVertex3fv(vertices[b]);
glColor3fv(colors[c]);
glVertex3fv(vertices[c]);
glColor3fv(colors[d]);
glVertex3fv(vertices[d]);
glEnd();
}

void colorcube(void)
{
polygon(0,3,2,1);
polygon(2,3,7,6);
polygon(0,4,7,3);
polygon(1,2,6,5);
polygon(4,5,6,7);
polygon(0,1,5,4);
}
static GLfloat theta[]={0.0,0.0,0.0};
static GLint axis=2;

void display(void)
/* Display callback, clear frame buffer and Z buffer, rotate cube and draw,
swap buffers
*/
{
glClear(GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glRotatef(theta[0],1.0,0.0,0.0);
glRotatef(theta[1],0.0,1.0,0.0);
glRotatef(theta[2],0.0,0.0,1.0);
colorcube();
glFlush();
glutSwapBuffers();
}
void spinCube()
/* Idle callback, spin cube 1 degrees about selected axis */
{
theta[axis]+=1.0;
if(theta[axis]>360.0)theta[axis]-=360.0;
glutPostRedisplay();
}
void mouse(int btn,int state,int x,int y)
/* mouse callback, selects an axis about which to rotate */
{
if(btn==GLUT_LEFT_BUTTON && state==GLUT_DOWN)
axis=0;
if(btn==GLUT_MIDDLE_BUTTON && state==GLUT_DOWN)
axis=1;
if(btn==GLUT_RIGHT_BUTTON && state==GLUT_DOWN)
axis=2;
}
void myReshape(int w,int h)
{
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if(w<=h)
glOrtho(-2.0,2.0,-2.0 *(GLfloat) h/(GLfloat) w, 2.0*(GLfloat) h/
(GLfloat) w, -10.0,10.0);
else
glOrtho(-2.0 *(GLfloat) w/(GLfloat) h, 2.0*(GLfloat) w/ (GLfloat) h,
-2.0,2.0,-10.0,10.0);
glMatrixMode(GL_MODELVIEW);
glutPostRedisplay();
}
void main(int argc, char **argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB |GLUT_DEPTH);
glutInitWindowSize(500,500);
glutCreateWindow("Rotating a Color Cube");
glutReshapeFunc(myReshape);
glutDisplayFunc(display);
glutIdleFunc(spinCube);
glutMouseFunc(mouse);
glEnable(GL_DEPTH_TEST); /* Enable hidden – surface—removal */
glutMainLoop();
}

You might also like