#include GLsizei winWidth = 640, winHeight = 480; float sqx = 200.0; float sqy = 50.0; float sqwid = 100; bool littleSquare = false; void displayFcn (void) { glClear (GL_COLOR_BUFFER_BIT); glColor3f (1.0, 1.0, 0.0); glRectf (sqx, sqy, sqx+sqwid, sqy+sqwid); if (littleSquare) { glColor3f(1.0, 1.0, 1.0); glRectf (sqx, sqy, sqx+sqwid, sqy+sqwid); } glutSwapBuffers ( ); } void init(void) { glClearColor (0.0, 0.0, 1.0, 0.0); glMatrixMode (GL_PROJECTION); gluOrtho2D (0.0, winWidth, winHeight, 0.0); glMatrixMode (GL_MODELVIEW); } void moveRect(void) { } void timer(int id){ littleSquare = !littleSquare; glutTimerFunc(1000, timer, 1); glutPostRedisplay(); } bool insideRect(int x, int y) { return 1; } void mouseButtons(int button, int state, int x, int y) { if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) { sqx = x + 20; sqy = y + 20; } glutPostRedisplay(); } void mouseDrag(int x, int y) { } void keyboard(unsigned char key, int x, int y) { if (key == '2') { sqwid = sqwid * 2; } } void main (int argc, char** argv) { glutInit (&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); glutInitWindowPosition (50, 100); glutInitWindowSize (winWidth, winHeight); glutCreateWindow ("Interactive Rectangle Program"); init(); glutDisplayFunc (displayFcn); glutMouseFunc (mouseButtons); glutKeyboardFunc (keyboard); glutMotionFunc (mouseDrag); glutIdleFunc(moveRect); glutTimerFunc(1000, timer, 1); glutMainLoop ( ); }