- unsigned int msec = glutGet(GLUT_ELAPSED_TIME) - start_time;
- float dt = (float)(msec - prev_msec) / 1000.0f;
- prev_msec = msec;
-
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glTranslatef(0, 0, -cam_dist);
- glRotatef(cam_phi, 1, 0, 0);
- glRotatef(cam_theta, 0, 1, 0);
-
- set_light(0, Vec3(-50, 75, 100), Vec3(1.0, 0.8, 0.7) * 0.8);
- set_light(1, Vec3(100, 0, 30), Vec3(0.6, 0.7, 1.0) * 0.6);
- set_light(2, Vec3(-10, -10, 60), Vec3(0.8, 1.0, 0.8) * 0.3);
-
- update(dt);
-
- draw_gears();
-
- glutSwapBuffers();
- assert(glGetError() == GL_NO_ERROR);