From f250e486bce922b700b8f4d31114a2ee44cc2285 Mon Sep 17 00:00:00 2001 From: Andreas Eversberg Date: Sat, 28 Apr 2018 07:37:34 +0200 Subject: [PATCH] Render images (game/benson/osd) with uniform size in VR --- src/mercenary/main.c | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/src/mercenary/main.c b/src/mercenary/main.c index 631bb15..698368a 100644 --- a/src/mercenary/main.c +++ b/src/mercenary/main.c @@ -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 */ -- 2.13.6