Render images (game/benson/osd) with uniform size in VR
authorAndreas Eversberg <jolly@eversberg.eu>
Sat, 28 Apr 2018 05:37:34 +0000 (07:37 +0200)
committerAndreas Eversberg <jolly@eversberg.eu>
Sat, 28 Apr 2018 05:37:34 +0000 (07:37 +0200)
src/mercenary/main.c

index 631bb15..698368a 100644 (file)
@@ -64,13 +64,18 @@ static int config_audio_filter = 1;
 static int config_render = 1; /* opengl render */
 static int config_skip_intro = 0;
 static int config_multisampling = 8;
+#ifdef HAVE_OVR
+static double config_benson_size = 0.5;
+static double config_fov = FOV_JOLLY;
+#else
+static double config_benson_size = 1.0;
 static double config_fov = FOV_NOVAGEN;
+#endif
 static double config_monitor_distance = 31.5; /* inch */
 #ifdef HAVE_OVR
 static double config_keyboard_distance = 28.5; /* inch */
 static double config_keyboard_height = 10.0; /* inch */
 #endif
-static double config_benson_size = 1.0;
 static int config_debug_transparent = 0;
 static int config_debug_opengl = 0;
 /* render improvements */
@@ -703,9 +708,17 @@ static void main_loop(void)
                                opengl_blit_image(image, config_video_filter, (double_pixel_size) ? BENSON_AT_LINE * 2 : BENSON_AT_LINE, 1, config_fov, config_monitor_distance, benson_size, 0);
 #endif
                                if (help_view)
+#ifdef HAVE_OVR
+                                       opengl_blit_osd(0, help_osd[help_view - 1], config_video_filter, (double_pixel_size) ? BENSON_AT_LINE * 2 : BENSON_AT_LINE, FOV_NOVAGEN, config_monitor_distance, 1.0, 1.0, 1.0, 0.0, 0.0);
+#else
                                        opengl_blit_osd(0, help_osd[help_view - 1], config_video_filter, (double_pixel_size) ? BENSON_AT_LINE * 2 : BENSON_AT_LINE, config_fov, config_monitor_distance, benson_size, 1.0, 1.0, 0.0, 0.0);
+#endif
                                if (osd_timer) {
+#ifdef HAVE_OVR
+                                       opengl_blit_osd(1, info_osd, config_video_filter, (double_pixel_size) ? BENSON_AT_LINE * 2 : BENSON_AT_LINE, FOV_NOVAGEN, config_monitor_distance, 1.0, 0.5, 0.04, 0.5, -0.95);
+#else
                                        opengl_blit_osd(1, info_osd, config_video_filter, (double_pixel_size) ? BENSON_AT_LINE * 2 : BENSON_AT_LINE, config_fov, config_monitor_distance, benson_size, 0.5, 0.04, 0.5, -0.95);
+#endif
                                        if (osd_timer - (int32_t)ticks_sdl() < 0)
                                                osd_timer = 0;
                                }
@@ -721,13 +734,13 @@ static void main_loop(void)
                                        emul_video(image, memory, palette, IMAGE_WIDTH, IMAGE_HEIGHT, IMAGE_DIWSTART, chipreg, 0, BENSON_AT_LINE, double_pixel_size);
 #ifndef HAVE_OVR
                                /* viewport and frustum is set here */
-                               opengl_viewport(window_width, window_height, (debug_opengl) ? 1 : 0, (double_pixel_size) ? BENSON_AT_LINE * 2 : BENSON_AT_LINE, config_fov, 1.0);
+                               opengl_viewport(window_width, window_height, (debug_opengl) ? 1 : 0, (double_pixel_size) ? BENSON_AT_LINE * 2 : BENSON_AT_LINE, FOV_NOVAGEN, 1.0);
 #endif
-                               opengl_blit_image(image, config_video_filter, (double_pixel_size) ? BENSON_AT_LINE * 2 : BENSON_AT_LINE, 0, config_fov, config_monitor_distance, 1.0, 0);
+                               opengl_blit_image(image, config_video_filter, (double_pixel_size) ? BENSON_AT_LINE * 2 : BENSON_AT_LINE, 0, FOV_NOVAGEN, config_monitor_distance, 1.0, 0);
                                if (help_view)
-                                       opengl_blit_osd(0, help_osd[help_view - 1], config_video_filter, (double_pixel_size) ? BENSON_AT_LINE * 2 : BENSON_AT_LINE, config_fov, config_monitor_distance, 1.0, 1.0, 1.0, 0.0, 0.0);
+                                       opengl_blit_osd(0, help_osd[help_view - 1], config_video_filter, (double_pixel_size) ? BENSON_AT_LINE * 2 : BENSON_AT_LINE, FOV_NOVAGEN, config_monitor_distance, 1.0, 1.0, 1.0, 0.0, 0.0);
                                if (osd_timer) {
-                                       opengl_blit_osd(1, info_osd, config_video_filter, (double_pixel_size) ? BENSON_AT_LINE * 2 : BENSON_AT_LINE, config_fov, config_monitor_distance, 1.0, 0.5, 0.04, 0.5, -0.95);
+                                       opengl_blit_osd(1, info_osd, config_video_filter, (double_pixel_size) ? BENSON_AT_LINE * 2 : BENSON_AT_LINE, FOV_NOVAGEN, config_monitor_distance, 1.0, 0.5, 0.04, 0.5, -0.95);
                                        if (osd_timer - (int32_t)ticks_sdl() < 0)
                                                osd_timer = 0;
                                }
@@ -1011,6 +1024,9 @@ static void keyboard_sdl(int down, enum keycode keycode)
 #endif
                        break;
                case KEYCODE_KP_PLUS:
+#ifdef HAVE_OVR
+                       osd_info("", "not applicable");
+#else
                        if (config_fov / 1.2 >= FOV_MIN)
                                config_fov /= 1.2;
                        disp_fov:
@@ -1019,11 +1035,17 @@ static void keyboard_sdl(int down, enum keycode keycode)
                                sprintf(text, "%.2f", config_fov);
                                osd_info("FOV", text);
                        }
+#endif
                        break;
                case KEYCODE_KP_MINUS:
+#ifdef HAVE_OVR
+                       osd_info("", "not applicable");
+#else
                        if (config_fov * 1.2 <= FOV_MAX)
                                config_fov *= 1.2;
                        goto disp_fov;
+#endif
+                       break;
                default: break;
                }
                /* do not pass keys to game while holding CTRL */