+ int num_vr_sticks;
+
+ if((num_vr_sticks = goatvr_num_sticks()) > 0) {
+ float p[2];
+ goatvr_stick_pos(0, p);
+ /* TODO */
+ }
+
+ screen->update(dt);
+}
+
+void game_display(void)
+{
+ static long prev_msec;
+ int i;
+ float dt = (float)(time_msec - prev_msec) / 1000.0f;
+ prev_msec = time_msec;
+
+ update(dt);
+
+ if(opt.flags & OPT_VR) {
+ 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 {
+ /* non-VR mode */
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ cgm_mperspective(proj_matrix, cgm_deg_to_rad(50.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();
+ }