X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=cl_screen.c;h=9625b6443bec916e258464a8bd236e6fde49e4a4;hp=d86c96866513e8a186a6e9df71f4361c6369f019;hb=2075ae43356d724bae305ce8fd36ea570718b14a;hpb=ea165f1fabf5482f920308899a606eef655dfa89 diff --git a/cl_screen.c b/cl_screen.c index d86c9686..9625b644 100644 --- a/cl_screen.c +++ b/cl_screen.c @@ -49,7 +49,8 @@ cvar_t scr_loadingscreen_barcolor = {0, "scr_loadingscreen_barcolor", "0 0 1", " cvar_t scr_loadingscreen_barheight = {0, "scr_loadingscreen_barheight", "8", "the height of the loadingscreen progress bar"}; cvar_t scr_loadingscreen_maxfps = {0, "scr_loadingscreen_maxfps", "10", "restrict maximal FPS for loading screen so it will not update very often (this will make lesser loading times on a maps loading large number of models)"}; cvar_t scr_infobar_height = {0, "scr_infobar_height", "8", "the height of the infobar items"}; -cvar_t vid_conwidth = {CVAR_SAVE, "vid_conwidth", "640", "virtual width of 2D graphics system"}; +cvar_t vid_conwidthauto = { CVAR_SAVE, "vid_conwidthauto", "1", "automatically update vid_conwidth to match aspect ratio" }; +cvar_t vid_conwidth = {CVAR_SAVE, "vid_conwidth", "640", "virtual width of 2D graphics system (note: changes may be overwritten, see vid_conwidthauto)"}; cvar_t vid_conheight = {CVAR_SAVE, "vid_conheight", "480", "virtual height of 2D graphics system"}; cvar_t vid_pixelheight = {CVAR_SAVE, "vid_pixelheight", "1", "adjusts vertical field of vision to account for non-square pixels (1280x1024 on a CRT monitor for example)"}; cvar_t scr_screenshot_jpeg = {CVAR_SAVE, "scr_screenshot_jpeg","1", "save jpeg instead of targa"}; @@ -1308,6 +1309,7 @@ void CL_Screen_Init(void) Cvar_RegisterVariable (&vid_conwidth); Cvar_RegisterVariable (&vid_conheight); Cvar_RegisterVariable (&vid_pixelheight); + Cvar_RegisterVariable (&vid_conwidthauto); Cvar_RegisterVariable (&scr_screenshot_jpeg); Cvar_RegisterVariable (&scr_screenshot_jpeg_quality); Cvar_RegisterVariable (&scr_screenshot_png); @@ -2153,6 +2155,9 @@ static void SCR_DrawScreen (void) } } + // Don't apply debugging stuff like r_showsurfaces to the UI + r_refdef.view.showdebug = false; + if (!r_stereo_sidebyside.integer && !r_stereo_horizontal.integer && !r_stereo_vertical.integer) { r_refdef.view.width = vid.width; @@ -2533,6 +2538,8 @@ static void SCR_DrawLoadingScreen_SharedFinish (qboolean clear) static double loadingscreen_lastupdate; +static void SCR_UpdateVars(void); + void SCR_UpdateLoadingScreen (qboolean clear, qboolean startup) { keydest_t old_key_dest; @@ -2551,6 +2558,8 @@ void SCR_UpdateLoadingScreen (qboolean clear, qboolean startup) loadingscreen_lastupdate = t; } + SCR_UpdateVars(); + // set up the r_texture_gammaramps texture which we need for rendering the loadingscreenpic VID_UpdateGamma(); R_UpdateVariables(); @@ -2590,10 +2599,9 @@ void SCR_UpdateLoadingScreen (qboolean clear, qboolean startup) SCR_DrawLoadingScreen_SharedSetup(clear); SCR_DrawLoadingScreen(clear); #else - if (qglDrawBuffer) - qglDrawBuffer(GL_BACK); + qglDrawBuffer(GL_BACK); SCR_DrawLoadingScreen_SharedSetup(clear); - if (vid.stereobuffer && qglDrawBuffer) + if (vid.stereobuffer) { qglDrawBuffer(GL_BACK_LEFT); SCR_DrawLoadingScreen(clear); @@ -2602,8 +2610,7 @@ void SCR_UpdateLoadingScreen (qboolean clear, qboolean startup) } else { - if (qglDrawBuffer) - qglDrawBuffer(GL_BACK); + qglDrawBuffer(GL_BACK); SCR_DrawLoadingScreen(clear); } #endif @@ -2629,6 +2636,43 @@ qboolean R_Stereo_Active(void) return (vid.stereobuffer || r_stereo_sidebyside.integer || r_stereo_horizontal.integer || r_stereo_vertical.integer || R_Stereo_ColorMasking()); } +void SCR_UpdateVars(void) +{ + float conwidth = bound(160, vid_conwidth.value, 32768); + float conheight = bound(90, vid_conheight.value, 24576); + if (vid_conwidthauto.integer) + conwidth = floor(conheight * vid.width / (vid.height * vid_pixelheight.value)); + if (vid_conwidth.value != conwidth) + Cvar_SetValue("vid_conwidth", conwidth); + if (vid_conheight.value != conheight) + Cvar_SetValue("vid_conheight", conheight); + + // bound viewsize + if (scr_viewsize.value < 30) + Cvar_Set("viewsize", "30"); + if (scr_viewsize.value > 120) + Cvar_Set("viewsize", "120"); + + // bound field of view + if (scr_fov.value < 1) + Cvar_Set("fov", "1"); + if (scr_fov.value > 170) + Cvar_Set("fov", "170"); + + // intermission is always full screen + if (cl.intermission) + sb_lines = 0; + else + { + if (scr_viewsize.value >= 120) + sb_lines = 0; // no status bar at all + else if (scr_viewsize.value >= 110) + sb_lines = 24; // no inventory + else + sb_lines = 24 + 16 + 8; + } +} + extern cvar_t cl_minfps; extern cvar_t cl_minfps_fade; extern cvar_t cl_minfps_qualitymax; @@ -2643,7 +2687,6 @@ void CL_UpdateScreen(void) vec3_t vieworigin; static double drawscreenstart = 0.0; double drawscreendelta; - float conwidth, conheight; r_viewport_t viewport; if(drawscreenstart) @@ -2743,37 +2786,7 @@ void CL_UpdateScreen(void) return; } - conwidth = bound(160, vid_conwidth.value, 32768); - conheight = bound(90, vid_conheight.value, 24576); - if (vid_conwidth.value != conwidth) - Cvar_SetValue("vid_conwidth", conwidth); - if (vid_conheight.value != conheight) - Cvar_SetValue("vid_conheight", conheight); - - // bound viewsize - if (scr_viewsize.value < 30) - Cvar_Set ("viewsize","30"); - if (scr_viewsize.value > 120) - Cvar_Set ("viewsize","120"); - - // bound field of view - if (scr_fov.value < 1) - Cvar_Set ("fov","1"); - if (scr_fov.value > 170) - Cvar_Set ("fov","170"); - - // intermission is always full screen - if (cl.intermission) - sb_lines = 0; - else - { - if (scr_viewsize.value >= 120) - sb_lines = 0; // no status bar at all - else if (scr_viewsize.value >= 110) - sb_lines = 24; // no inventory - else - sb_lines = 24+16+8; - } + SCR_UpdateVars(); R_FrameData_NewFrame(); R_BufferData_NewFrame(); @@ -2788,20 +2801,8 @@ void CL_UpdateScreen(void) SCR_SetUpToDrawConsole(); #ifndef USE_GLES2 - if (qglDrawBuffer) - { - CHECKGLERROR - qglDrawBuffer(GL_BACK);CHECKGLERROR - // set dithering mode - if (gl_dither.integer) - { - qglEnable(GL_DITHER);CHECKGLERROR - } - else - { - qglDisable(GL_DITHER);CHECKGLERROR - } - } + CHECKGLERROR + qglDrawBuffer(GL_BACK);CHECKGLERROR #endif R_Viewport_InitOrtho(&viewport, &identitymatrix, 0, 0, vid.width, vid.height, 0, 0, vid_conwidth.integer, vid_conheight.integer, -10, 100, NULL); @@ -2818,34 +2819,11 @@ void CL_UpdateScreen(void) // calculate r_refdef.view.quality r_refdef.view.quality = cl_updatescreen_quality; -#ifndef USE_GLES2 - if (qglPolygonStipple) + if(scr_stipple.integer) { - if(scr_stipple.integer) - { - GLubyte stipple[128]; - int i, s, width, parts; - static int frame = 0; - ++frame; - - s = scr_stipple.integer; - parts = (s & 007); - width = (s & 070) >> 3; - - qglEnable(GL_POLYGON_STIPPLE);CHECKGLERROR // 0x0B42 - for(i = 0; i < 128; ++i) - { - int line = i/4; - stipple[i] = (((line >> width) + frame) & ((1 << parts) - 1)) ? 0x00 : 0xFF; - } - qglPolygonStipple(stipple);CHECKGLERROR - } - else - { - qglDisable(GL_POLYGON_STIPPLE);CHECKGLERROR - } + Con_Print("FIXME: scr_stipple not implemented\n"); + Cvar_SetValueQuick(&scr_stipple, 0); } -#endif #ifndef USE_GLES2 if (R_Stereo_Active()) @@ -2891,8 +2869,7 @@ void CL_UpdateScreen(void) SCR_CaptureVideo(); #endif - if (qglFlush) - qglFlush(); // FIXME: should we really be using qglFlush here? + qglFlush(); // ensure that the commands are submitted to the GPU before we do other things if (!vid_activewindow) VID_SetMouse(false, false, false);