]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - cl_screen.c
significant surface renderer optimizations
[xonotic/darkplaces.git] / cl_screen.c
index 4e944b2338ddd3bf0d719aa683888111373b8eb9..4f5c56faf9ddc8e6f9d6e1b2a91ed5dce51d78e2 100644 (file)
@@ -8,11 +8,10 @@
 
 cvar_t scr_viewsize = {CVAR_SAVE, "viewsize","100", "how large the view should be, 110 disables inventory bar, 120 disables status bar"};
 cvar_t scr_fov = {CVAR_SAVE, "fov","90", "field of vision, 1-170 degrees, default 90, some players use 110-130"};      // 1 - 170
-cvar_t scr_conspeed = {CVAR_SAVE, "scr_conspeed","900", "speed of console open/close"}; // LordHavoc: quake used 300
 cvar_t scr_conalpha = {CVAR_SAVE, "scr_conalpha", "1", "opacity of console background"};
-cvar_t scr_conbrightness = {CVAR_SAVE, "scr_conbrightness", "0.2", "brightness of console background (0 = black, 1 = image)"};
+cvar_t scr_conbrightness = {CVAR_SAVE, "scr_conbrightness", "1", "brightness of console background (0 = black, 1 = image)"};
 cvar_t scr_conforcewhiledisconnected = {0, "scr_conforcewhiledisconnected", "1", "forces fullscreen console while disconnected"};
-cvar_t scr_menuforcewhiledisconnected = {0, "scr_menuforcewhiledisconnected", "1", "forces menu while disconnected"};
+cvar_t scr_menuforcewhiledisconnected = {0, "scr_menuforcewhiledisconnected", "0", "forces menu while disconnected"};
 cvar_t scr_centertime = {0, "scr_centertime","2", "how long centerprint messages show"};
 cvar_t scr_showram = {CVAR_SAVE, "showram","1", "show ram icon if low on surface cache memory (not used)"};
 cvar_t scr_showturtle = {CVAR_SAVE, "showturtle","0", "show turtle icon when framerate is too low (not used)"};
@@ -108,7 +107,7 @@ void SCR_DrawCenterString (void)
 
 // the finale prints the characters one at a time
        if (cl.intermission)
-               remaining = scr_printspeed.value * (cl.time - scr_centertime_start);
+               remaining = (int)(scr_printspeed.value * (cl.time - scr_centertime_start));
        else
                remaining = 9999;
 
@@ -119,7 +118,7 @@ void SCR_DrawCenterString (void)
                return;
 
        if (scr_center_lines <= 4)
-               y = vid_conheight.integer*0.35;
+               y = (int)(vid_conheight.integer*0.35);
        else
                y = 48;
 
@@ -157,7 +156,7 @@ void SCR_CheckDrawCenterString (void)
        if (scr_center_lines > scr_erase_lines)
                scr_erase_lines = scr_center_lines;
 
-       scr_centertime_off -= host_frametime;
+       scr_centertime_off -= cl.realframetime;
 
        // don't draw if this is a normal stats-screen intermission,
        // only if it is not an intermission, or a finale intermission
@@ -186,7 +185,7 @@ void SCR_DrawTurtle (void)
        if (!scr_showturtle.integer)
                return;
 
-       if (host_frametime < 0.1)
+       if (cl.realframetime < 0.1)
        {
                count = 0;
                return;
@@ -352,24 +351,7 @@ void SCR_SetUpToDrawConsole (void)
        else
                conlines = 0;                           // none visible
 
-       if (scr_conspeed.value)
-       {
-               if (scr_con_current > conlines)
-               {
-                       scr_con_current -= scr_conspeed.value*host_realframetime;
-                       if (scr_con_current < conlines)
-                               scr_con_current = conlines;
-
-               }
-               else if (scr_con_current < conlines)
-               {
-                       scr_con_current += scr_conspeed.value*host_realframetime;
-                       if (scr_con_current > conlines)
-                               scr_con_current = conlines;
-               }
-       }
-       else
-               scr_con_current = conlines;
+       scr_con_current = conlines;
 }
 
 /*
@@ -385,7 +367,7 @@ void SCR_DrawConsole (void)
                Con_DrawConsole (vid_conheight.integer);
        }
        else if (scr_con_current)
-               Con_DrawConsole (scr_con_current);
+               Con_DrawConsole ((int)scr_con_current);
        else
        {
                con_vislines = 0;
@@ -528,7 +510,6 @@ void CL_Screen_Init(void)
 {
        Cvar_RegisterVariable (&scr_fov);
        Cvar_RegisterVariable (&scr_viewsize);
-       Cvar_RegisterVariable (&scr_conspeed);
        Cvar_RegisterVariable (&scr_conalpha);
        Cvar_RegisterVariable (&scr_conbrightness);
        Cvar_RegisterVariable (&scr_conforcewhiledisconnected);
@@ -891,7 +872,7 @@ void SCR_CaptureVideo(void)
                if (cls.capturevideo_soundfile)
                {
                        // preserve sound sync by duplicating frames when running slow
-                       newframenum = (Sys_DoubleTime() - cls.capturevideo_starttime) * cls.capturevideo_framerate;
+                       newframenum = (int)((Sys_DoubleTime() - cls.capturevideo_starttime) * cls.capturevideo_framerate);
                }
                else
                        newframenum = cls.capturevideo_frame + 1;
@@ -1183,19 +1164,19 @@ void SCR_DrawScreen (void)
 
                if (r_stereo_sidebyside.integer)
                {
-                       r_refdef.width = vid.width * size / 2.5;
-                       r_refdef.height = vid.height * size / 2.5 * (1 - bound(0, r_letterbox.value, 100) / 100);
-                       r_refdef.x = (vid.width - r_refdef.width * 2.5) * 0.5;
-                       r_refdef.y = (vid.height - r_refdef.height)/2;
+                       r_refdef.width = (int)(vid.width * size / 2.5);
+                       r_refdef.height = (int)(vid.height * size / 2.5 * (1 - bound(0, r_letterbox.value, 100) / 100));
+                       r_refdef.x = (int)((vid.width - r_refdef.width * 2.5) * 0.5);
+                       r_refdef.y = (int)((vid.height - r_refdef.height)/2);
                        if (r_stereo_side)
-                               r_refdef.x += r_refdef.width * 1.5;
+                               r_refdef.x += (int)(r_refdef.width * 1.5);
                }
                else
                {
-                       r_refdef.width = vid.width * size;
-                       r_refdef.height = vid.height * size * (1 - bound(0, r_letterbox.value, 100) / 100);
-                       r_refdef.x = (vid.width - r_refdef.width)/2;
-                       r_refdef.y = (vid.height - r_refdef.height)/2;
+                       r_refdef.width = (int)(vid.width * size);
+                       r_refdef.height = (int)(vid.height * size * (1 - bound(0, r_letterbox.value, 100) / 100));
+                       r_refdef.x = (int)((vid.width - r_refdef.width)/2);
+                       r_refdef.y = (int)((vid.height - r_refdef.height)/2);
                }
 
                // LordHavoc: viewzoom (zoom in for sniper rifles, etc)
@@ -1219,9 +1200,9 @@ void SCR_DrawScreen (void)
                {
                        float sizex = bound(10, scr_zoomwindow_viewsizex.value, 100) / 100.0;
                        float sizey = bound(10, scr_zoomwindow_viewsizey.value, 100) / 100.0;
-                       r_refdef.width = vid.width * sizex;
-                       r_refdef.height = vid.height * sizey;
-                       r_refdef.x = (vid.width - r_refdef.width)/2;
+                       r_refdef.width = (int)(vid.width * sizex);
+                       r_refdef.height = (int)(vid.height * sizey);
+                       r_refdef.x = (int)((vid.width - r_refdef.width)/2);
                        r_refdef.y = 0;
 
                        r_refdef.frustum_y = tan(scr_zoomwindow_fov.value * cl.viewzoom * M_PI / 360.0) * (3.0/4.0);
@@ -1290,7 +1271,6 @@ void SCR_UpdateLoadingScreen (void)
 {
        float x, y;
        cachepic_t *pic;
-       rmeshstate_t m;
        float vertex3f[12];
        float texcoord2f[8];
        // don't do anything if not initialized yet
@@ -1316,11 +1296,11 @@ void SCR_UpdateLoadingScreen (void)
        GL_Color(1,1,1,1);
        GL_BlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
        GL_DepthTest(false);
-       memset(&m, 0, sizeof(m));
-       m.pointer_vertex = vertex3f;
-       m.pointer_texcoord[0] = texcoord2f;
-       m.tex[0] = R_GetTexture(pic->tex);
-       R_Mesh_State(&m);
+       R_Mesh_VertexPointer(vertex3f);
+       R_Mesh_ColorPointer(NULL);
+       R_Mesh_ResetTextureState();
+       R_Mesh_TexBind(0, R_GetTexture(pic->tex));
+       R_Mesh_TexCoordPointer(0, 2, texcoord2f);
        vertex3f[2] = vertex3f[5] = vertex3f[8] = vertex3f[11] = 0;
        vertex3f[0] = vertex3f[9] = x;
        vertex3f[1] = vertex3f[4] = y;