Code:
#include <windows.h>
#include <gl/glut.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <gl\gl.h>
#include <gl\glu.h>
#include <gl\glaux.h>
int lp;
int cran;
static GLfloat rotatey = 0.0;
float clvl[3][3]={{0.0,0.0,0.0},{0.0,0.0,0.0},{0.0,0.0,0.0}};
void glutTimerFunc(int value)
{
rotatey = rotatey + 2.0;
if (rotatey > 360.0)
{
rotatey = rotatey - 360.0;
}
lp=0;
while(lp!=3)
{
if(lp==3)
{
break;
}
cran=rand()%3;
if(clvl[lp][cran]<1.0)
{
clvl[lp][cran]=clvl[lp][cran]+.1;
}
else
{
clvl[lp][cran]=0.0;
}
lp++;
}
glutPostRedisplay();
glutTimerFunc(33,glutTimerFunc,1);
}
void RenderScene(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
gluLookAt(0.0, 0.0, -14.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.0);
glRotatef(rotatey,0.0,0.5,0.0);
glBegin(GL_TRIANGLES);
//Front Side
glColor3f(clvl[0][1],clvl[0][2],clvl[0][3]);
glVertex3f(0,5,0);
glColor3f(clvl[1][1],clvl[1][2],clvl[1][3]);
glVertex3f(-5,-5,0);
glColor3f(clvl[2][1],clvl[2][2],clvl[2][3]);
glVertex3f(5,-5,0);
//Right Side
glColor3f(clvl[0][1],clvl[0][2],clvl[0][3]);
glVertex3f(0,5,0);
glColor3f(clvl[1][1],clvl[1][2],clvl[1][3]);
glVertex3f(0,-5,-5);
glColor3f(clvl[2][1],clvl[2][2],clvl[2][3]);
glVertex3f(5,-5,0);
//Left Side
glColor3f(clvl[0][1],clvl[0][2],clvl[0][3]);
glVertex3f(0,5,0);
glColor3f(clvl[1][1],clvl[1][2],clvl[1][3]);
glVertex3f(0,-5,-5);
glColor3f(clvl[2][1],clvl[2][2],clvl[2][3]);
glVertex3f(-5,-5,0);
glEnd();
glFlush();
glPopMatrix();
glutSwapBuffers();
}
void init(void)
{
glEnable(GL_DEPTH_TEST);
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glShadeModel(GL_SMOOTH);
}
void reshape(int w, int h)
{
glViewport(0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum (-1.0, 1.0, -0.5, 0.5, 1.0, 20.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void main(void)
{
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutCreateWindow("Multi Colors 3D");
glutDisplayFunc(RenderScene);
glutReshapeFunc(reshape);
glutTimerFunc(33, glutTimerFunc, 1);
init();
glutMainLoop();
}