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"};
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);
}
}
+ // 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;
static double loadingscreen_lastupdate;
+static void SCR_UpdateVars(void);
+
void SCR_UpdateLoadingScreen (qboolean clear, qboolean startup)
{
keydest_t old_key_dest;
loadingscreen_lastupdate = t;
}
+ SCR_UpdateVars();
+
// set up the r_texture_gammaramps texture which we need for rendering the loadingscreenpic
VID_UpdateGamma();
R_UpdateVariables();
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);
}
else
{
- if (qglDrawBuffer)
- qglDrawBuffer(GL_BACK);
+ qglDrawBuffer(GL_BACK);
SCR_DrawLoadingScreen(clear);
}
#endif
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;
vec3_t vieworigin;
static double drawscreenstart = 0.0;
double drawscreendelta;
- float conwidth, conheight;
r_viewport_t viewport;
if(drawscreenstart)
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();
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);
// 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())
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);