]> git.rm.cloudns.org Git - xonotic/darkplaces.git/commitdiff
new cvar r_draw2d to turn off all 2D drawing (except for console, r_speeds and showfps)
authordivverent <divverent@d7cf8633-e32d-0410-b094-e92efae38249>
Thu, 1 Jul 2010 18:37:11 +0000 (18:37 +0000)
committerRudolf Polzer <divverent@alientrap.org>
Thu, 1 Jul 2010 18:40:24 +0000 (20:40 +0200)
git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@10259 d7cf8633-e32d-0410-b094-e92efae38249
::stable-branch::merge=9a6cc5c4aa4cfcc90d86050f91d684704698c872

cl_screen.c
console.c
gl_draw.c
gl_rmain.c
render.h
sbar.c

index 63e8eb3196e8d4b1f170646ddf491c6b04996fc1..414d26d4b69db99a14e06cf8d1dba9ca99bfc57a 100644 (file)
@@ -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;
        }
 }
 
index 5b5d0a09e5c25f99af154123e9f196b685546512..e23de5bba4bed7e0d5a11f54692462f74a214e6a 100644 (file)
--- 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;
 }
 
 /*
index b80d6fe371a3052b601945c544279ee783b84317..02a5ac322a595933f83624556fc20a3f7edcaebb 100644 (file)
--- 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);
 
index 85eacacd19f52066e3c765ede101193ea76f3938..7c4256b751ac9b2e0a235d1ae06866725c64a2b7 100644 (file)
@@ -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);
index 0a5ea298b49d88c2ef5f8fc000ed1e33bdc3615e..ea72d28229f7ca99577271d64a87505c6a158435 100644 (file)
--- 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 e4390b6b86c15da145b7d3648163c46420ce6ca5..8b722295c253fba57851b8776d7800d42b9938b1 100644 (file)
--- 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])
                {