From a71c37f77a8877e6581b70d9021c5f10690dc221 Mon Sep 17 00:00:00 2001 From: divverent Date: Thu, 1 Jul 2010 18:37:11 +0000 Subject: [PATCH] new cvar r_draw2d to turn off all 2D drawing (except for console, r_speeds and showfps) git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@10259 d7cf8633-e32d-0410-b094-e92efae38249 ::stable-branch::merge=9a6cc5c4aa4cfcc90d86050f91d684704698c872 --- cl_screen.c | 2 ++ console.c | 4 ++++ gl_draw.c | 22 ++++++++++++++++++++++ gl_rmain.c | 2 ++ render.h | 2 ++ sbar.c | 2 ++ 6 files changed, 34 insertions(+) diff --git a/cl_screen.c b/cl_screen.c index 63e8eb31..414d26d4 100644 --- a/cl_screen.c +++ b/cl_screen.c @@ -809,6 +809,7 @@ void R_TimeReport_EndFrame(void) lines++; y = vid_conheight.integer - sb_lines - lines * 8; i = j = 0; + r_draw2d_force = true; DrawQ_Fill(0, y, vid_conwidth.integer, lines * 8, 0, 0, 0, 0.5, 0); while (string[i]) { @@ -821,6 +822,7 @@ void R_TimeReport_EndFrame(void) i++; y += 8; } + r_draw2d_force = false; } } diff --git a/console.c b/console.c index 5b5d0a09..e23de5bb 100644 --- a/console.c +++ b/console.c @@ -1836,6 +1836,8 @@ void Con_DrawConsole (int lines) con_vislines = lines; + r_draw2d_force = true; + // draw the background alpha0 = cls.signon == SIGNONS ? scr_conalpha.value : 1.0f; // always full alpha when not in game if((alpha = alpha0 * scr_conalphafactor.value) > 0) @@ -1933,6 +1935,8 @@ void Con_DrawConsole (int lines) // draw the input prompt, user text, and cursor if desired Con_DrawInput (); + + r_draw2d_force = false; } /* diff --git a/gl_draw.c b/gl_draw.c index b80d6fe3..02a5ac32 100644 --- a/gl_draw.c +++ b/gl_draw.c @@ -983,10 +983,13 @@ void _DrawQ_Setup(void) GL_BlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); } +qboolean r_draw2d_force = false; static void _DrawQ_ProcessDrawFlag(int flags) { _DrawQ_Setup(); CHECKGLERROR + if(!r_draw2d.integer && !r_draw2d_force) + return; if(flags == DRAWFLAG_ADDITIVE) GL_BlendFunc(GL_SRC_ALPHA, GL_ONE); else if(flags == DRAWFLAG_MODULATE) @@ -1004,6 +1007,9 @@ void DrawQ_Pic(float x, float y, cachepic_t *pic, float width, float height, flo float floats[20]; _DrawQ_ProcessDrawFlag(flags); + if(!r_draw2d.integer && !r_draw2d_force) + return; + GL_Color(red, green, blue, alpha); R_Mesh_VertexPointer(floats, 0, 0); @@ -1059,6 +1065,9 @@ void DrawQ_RotPic(float x, float y, cachepic_t *pic, float width, float height, float cosar = cos(ar); _DrawQ_ProcessDrawFlag(flags); + if(!r_draw2d.integer && !r_draw2d_force) + return; + GL_Color(red, green, blue, alpha); R_Mesh_VertexPointer(floats, 0, 0); @@ -1107,6 +1116,9 @@ void DrawQ_Fill(float x, float y, float width, float height, float red, float gr float floats[12]; _DrawQ_ProcessDrawFlag(flags); + if(!r_draw2d.integer && !r_draw2d_force) + return; + GL_Color(red, green, blue, alpha); R_Mesh_VertexPointer(floats, 0, 0); @@ -1424,6 +1436,8 @@ float DrawQ_String_Scale(float startx, float starty, const char *text, size_t ma maxlen = 1<<30; _DrawQ_ProcessDrawFlag(flags); + if(!r_draw2d.integer && !r_draw2d_force) + return startx + DrawQ_TextWidth_UntilWidth_TrackColors_Scale(text, &maxlen, w, h, sw, sh, NULL, ignorecolorcodes, fnt, 1000000000); R_Mesh_ColorPointer(color4f, 0, 0); R_Mesh_ResetTextureState(); @@ -1762,6 +1776,8 @@ void DrawQ_SuperPic(float x, float y, cachepic_t *pic, float width, float height float floats[36]; _DrawQ_ProcessDrawFlag(flags); + if(!r_draw2d.integer && !r_draw2d_force) + return; R_Mesh_VertexPointer(floats, 0, 0); R_Mesh_ColorPointer(floats + 20, 0, 0); @@ -1798,6 +1814,8 @@ void DrawQ_SuperPic(float x, float y, cachepic_t *pic, float width, float height void DrawQ_Mesh (drawqueuemesh_t *mesh, int flags) { _DrawQ_ProcessDrawFlag(flags); + if(!r_draw2d.integer && !r_draw2d_force) + return; R_Mesh_VertexPointer(mesh->data_vertex3f, 0, 0); R_Mesh_ColorPointer(mesh->data_color4f, 0, 0); @@ -1813,6 +1831,8 @@ void DrawQ_LineLoop (drawqueuemesh_t *mesh, int flags) int num; _DrawQ_ProcessDrawFlag(flags); + if(!r_draw2d.integer && !r_draw2d_force) + return; GL_Color(1,1,1,1); CHECKGLERROR @@ -1831,6 +1851,8 @@ void DrawQ_LineLoop (drawqueuemesh_t *mesh, int flags) void DrawQ_Line (float width, float x1, float y1, float x2, float y2, float r, float g, float b, float alpha, int flags) { _DrawQ_ProcessDrawFlag(flags); + if(!r_draw2d.integer && !r_draw2d_force) + return; R_SetupShader_Generic(NULL, NULL, GL_MODULATE, 1); diff --git a/gl_rmain.c b/gl_rmain.c index 85eacacd..7c4256b7 100644 --- a/gl_rmain.c +++ b/gl_rmain.c @@ -76,6 +76,7 @@ cvar_t r_showcollisionbrushes_polygonoffset = {0, "r_showcollisionbrushes_polygo cvar_t r_showdisabledepthtest = {0, "r_showdisabledepthtest", "0", "disables depth testing on r_show* cvars, allowing you to see what hidden geometry the graphics card is processing"}; cvar_t r_drawportals = {0, "r_drawportals", "0", "shows portals (separating polygons) in world interior in quake1 maps"}; cvar_t r_drawentities = {0, "r_drawentities","1", "draw entities (doors, players, projectiles, etc)"}; +cvar_t r_draw2d = {0, "r_draw2d","1", "draw 2D stuff (dangerous to turn off)"}; cvar_t r_drawworld = {0, "r_drawworld","1", "draw world (most static stuff)"}; cvar_t r_drawviewmodel = {0, "r_drawviewmodel","1", "draw your weapon model"}; cvar_t r_drawexteriormodel = {0, "r_drawexteriormodel","1", "draw your player model (e.g. in chase cam, reflections)"}; @@ -6458,6 +6459,7 @@ void GL_Main_Init(void) Cvar_RegisterVariable(&r_showdisabledepthtest); Cvar_RegisterVariable(&r_drawportals); Cvar_RegisterVariable(&r_drawentities); + Cvar_RegisterVariable(&r_draw2d); Cvar_RegisterVariable(&r_drawworld); Cvar_RegisterVariable(&r_cullentities_trace); Cvar_RegisterVariable(&r_cullentities_trace_samples); diff --git a/render.h b/render.h index 0a5ea298..ea72d282 100644 --- a/render.h +++ b/render.h @@ -114,6 +114,8 @@ extern cvar_t r_showdisabledepthtest; // view origin // extern cvar_t r_drawentities; +extern cvar_t r_draw2d; +extern qboolean r_draw2d_force; extern cvar_t r_drawviewmodel; extern cvar_t r_drawworld; extern cvar_t r_speeds; diff --git a/sbar.c b/sbar.c index e4390b6b..8b722295 100644 --- a/sbar.c +++ b/sbar.c @@ -1203,6 +1203,7 @@ void Sbar_ShowFPS(void) } if (fpsstring[0]) { + r_draw2d_force = true; fps_x = vid_conwidth.integer - DrawQ_TextWidth(fpsstring, 0, fps_scalex, fps_scaley, true, FONT_INFOBAR); DrawQ_Fill(fps_x, fps_y, vid_conwidth.integer - fps_x, fps_scaley, 0, 0, 0, 0.5, 0); if (red) @@ -1210,6 +1211,7 @@ void Sbar_ShowFPS(void) else DrawQ_String(fps_x, fps_y, fpsstring, 0, fps_scalex, fps_scaley, 1, 1, 1, 1, 0, NULL, true, FONT_INFOBAR); fps_y += fps_scaley; + r_draw2d_force = false; } if (timedemostring1[0]) { -- 2.39.2