+ screen->update(dt);
+}
+
+void game_display(void)
+{
+ static long prev_msec;
+ float dt = (float)(time_msec - prev_msec) / 1000.0f;
+ prev_msec = time_msec;
+
+ update(dt);
+
+#ifdef BUILD_VR
+ if(opt.flags & OPT_VR) {
+ int i;
+ goatvr_draw_start();
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ for(i=0; i<2; i++) {
+ /* for each eye */
+ goatvr_draw_eye(i);
+
+ cgm_mcopy(proj_matrix, goatvr_projection_matrix(i, 0.5, 500.0));
+ glMatrixMode(GL_PROJECTION);
+ glLoadMatrixf(proj_matrix);
+
+ cgm_mcopy(view_matrix, goatvr_view_matrix(i));
+ glMatrixMode(GL_MODELVIEW);
+ glLoadMatrixf(view_matrix);
+
+ screen->draw();
+ print_framerate();
+ draw_osd();
+ }
+
+ goatvr_draw_done();
+
+ if(should_swap) {
+ game_swap_buffers();
+ }
+
+ } else
+#endif /* BUILD_VR */
+ {
+ /* non-VR mode */
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ cgm_mperspective(proj_matrix, cgm_deg_to_rad(40.0), win_aspect, 0.5, 500.0);
+ glMatrixMode(GL_PROJECTION);
+ glLoadMatrixf(proj_matrix);
+
+ cgm_midentity(view_matrix);
+ glMatrixMode(GL_MODELVIEW);
+ glLoadMatrixf(view_matrix);
+
+ screen->draw();
+ print_framerate();
+ draw_osd();
+
+ game_swap_buffers();
+ }