- 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);
-
- view_matrix = Mat4::identity;
- view_matrix.pre_translate(0, 0, -cam_dist);
- view_matrix.pre_rotate(deg_to_rad(cam_phi), 1, 0, 0);
- view_matrix.pre_rotate(deg_to_rad(cam_theta), 0, 1, 0);
-
- glMatrixMode(GL_MODELVIEW);
- glLoadMatrixf(view_matrix[0]);
-
- static const Vec3 lpos[] = { Vec3(-50, 75, 100), Vec3(100, 0, 30), Vec3(-10, -10, 60) };
- set_light(0, lpos[0], Vec3(1.0, 0.8, 0.7) * 0.8);
- set_light(1, lpos[1], Vec3(0.6, 0.7, 1.0) * 0.6);
- set_light(2, lpos[2], Vec3(0.8, 1.0, 0.8) * 0.3);
-
- update(dt);
-
- draw_scene();
-
- glutSwapBuffers();
- assert(glGetError() == GL_NO_ERROR);