#include GLfloat light_position[] = {100.0f, 100.0f, 100.0f, 0.0f}; GLfloat diffuse_light[] = {0.9f, 0.9, 0.9f, 0.0f}; float x, y, z; float degree = 0.0f; void display () { glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix(); glTranslatef (x, y, z); glPushMatrix(); glRotatef(degree, 0.0f, 1.0f, 0.0f); glutSolidCube(2.0); glPopMatrix(); glPopMatrix(); glFlush(); glutSwapBuffers(); degree += 0.1f; glutPostRedisplay(); } void keyPressed (unsigned char c, int i, int j) { if (c == 27) { exit(1); } else if (c == 'w') z++; else if (c == 's') z--; else if (c == 'a') x++; else if (c == 'd') x--; else if (c == 'y') y++; else if (c == 'h') y--; } int main (int argv, char** argc) { glutInit (&argv, argc); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH); glutCreateWindow ("Bob"); glutDisplayFunc (display); // Setup viewing glMatrixMode (GL_PROJECTION); glLoadIdentity(); gluPerspective (60.0f, 1.5, 0.1, 1000); glMatrixMode (GL_MODELVIEW); glutFullScreen(); glutKeyboardFunc (keyPressed); glEnable (GL_DEPTH_TEST); glEnable (GL_LIGHTING); glEnable (GL_LIGHT0); glLightfv (GL_LIGHT0, GL_POSITION, light_position); glLightfv (GL_LIGHT0, GL_DIFFUSE, diffuse_light); x = y = z = 0; z = -10; glutMainLoop(); }