]> git.xonotic.org Git - xonotic/darkplaces.git/commitdiff
added r_showtris
authorhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Wed, 3 Mar 2004 06:00:42 +0000 (06:00 +0000)
committerhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Wed, 3 Mar 2004 06:00:42 +0000 (06:00 +0000)
git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@3958 d7cf8633-e32d-0410-b094-e92efae38249

gl_backend.c
gl_backend.h
gl_rmain.c
render.h
todo

index 9b2ad26a74f3c1ba889dc7f08ebb3c4f86b13490..b20f7344e3d05a76629e65a700c00119b0a29bae 100644 (file)
@@ -484,6 +484,8 @@ void GL_BlendFunc(int blendfunc1, int blendfunc2)
 {
        if (gl_state.blendfunc1 != blendfunc1 || gl_state.blendfunc2 != blendfunc2)
        {
+               if (r_showtrispass)
+                       return;
                qglBlendFunc(gl_state.blendfunc1 = blendfunc1, gl_state.blendfunc2 = blendfunc2);CHECKGLERROR
                if (gl_state.blendfunc2 == GL_ZERO)
                {
@@ -519,6 +521,8 @@ void GL_DepthMask(int state)
 {
        if (gl_state.depthmask != state)
        {
+               if (r_showtrispass)
+                       return;
                qglDepthMask(gl_state.depthmask = state);CHECKGLERROR
        }
 }
@@ -527,6 +531,8 @@ void GL_DepthTest(int state)
 {
        if (gl_state.depthtest != state)
        {
+               if (r_showtrispass)
+                       return;
                gl_state.depthtest = state;
                if (gl_state.depthtest)
                {
@@ -554,6 +560,8 @@ void GL_ColorPointer(const float *p)
 {
        if (gl_state.pointer_color != p)
        {
+               if (r_showtrispass)
+                       return;
                CHECKGLERROR
                if (!gl_state.pointer_color)
                {
@@ -575,6 +583,8 @@ void GL_Color(float cr, float cg, float cb, float ca)
 {
        if (gl_state.pointer_color || gl_state.color4f[0] != cr || gl_state.color4f[1] != cg || gl_state.color4f[2] != cb || gl_state.color4f[3] != ca)
        {
+               if (r_showtrispass)
+                       return;
                GL_ColorPointer(NULL);
                gl_state.color4f[0] = cr;
                gl_state.color4f[1] = cg;
@@ -672,6 +682,11 @@ void R_Mesh_Draw(int numverts, int numtriangles, const int *elements)
                Con_Printf("R_Mesh_Draw(%d, %d, %08p);\n", numverts, numtriangles, elements);
                return;
        }
+       if (r_showtrispass)
+       {
+               R_Mesh_Draw_ShowTris(numverts, numtriangles, elements);
+               return;
+       }
        c_meshs++;
        c_meshelements += numelements;
        CHECKGLERROR
@@ -797,9 +812,9 @@ void R_Mesh_Finish(void)
 {
        int i;
        BACKENDACTIVECHECK
-               CHECKGLERROR
+       CHECKGLERROR
        GL_LockArrays(0, 0);
-               CHECKGLERROR
+       CHECKGLERROR
 
        for (i = backendunits - 1;i >= 0;i--)
        {
@@ -872,6 +887,8 @@ void R_Mesh_State_Texture(const rmeshstate_t *m)
                GL_SetupTextureState();
        }
 
+       if (r_showtrispass)
+               return;
        for (i = 0, unit = gl_state.units;i < backendunits;i++, unit++)
        {
                if (unit->t1d != m->tex1d[i])
@@ -1005,7 +1022,7 @@ void R_Mesh_State_Texture(const rmeshstate_t *m)
        }
 }
 
-void R_Mesh_Draw_ShowTris(int numverts, int numtriangles, int *elements)
+void R_Mesh_Draw_ShowTris(int numverts, int numtriangles, const int *elements)
 {
        qglBegin(GL_LINES);
        for (;numtriangles;numtriangles--, elements += 3)
index cf828683c9848c68cddf2353d2249c44141b233b..1bec4133e58a227628c2de9e1bb25f602d4d4dbc 100644 (file)
@@ -72,7 +72,7 @@ void R_Mesh_State_Texture(const rmeshstate_t *m);
 // renders a mesh
 void R_Mesh_Draw(int numverts, int numtriangles, const int *elements);
 // renders a mesh as lines
-void R_Mesh_Draw_ShowTris(int numverts, int numtriangles, int *elements);
+void R_Mesh_Draw_ShowTris(int numverts, int numtriangles, const int *elements);
 
 // saves a section of the rendered frame to a .tga or .jpg file
 qboolean SCR_ScreenShot(char *filename, int x, int y, int width, int height, qboolean jpeg);
index 61aafc21f096f3d5941cf6c2881533aca897c504..9c0dfd0d027413989bf2c6981e84a7d34829712f 100644 (file)
@@ -39,6 +39,9 @@ qboolean envmap;
 
 float r_farclip;
 
+// forces all rendering to draw triangle outlines
+int r_showtrispass;
+
 // view origin
 vec3_t r_vieworigin;
 vec3_t r_viewforward;
@@ -61,6 +64,7 @@ refdef_t r_refdef;
 // 8.8 fraction of base light value
 unsigned short d_lightstylevalue[256];
 
+cvar_t r_showtris = {0, "r_showtris", "0"};
 cvar_t r_drawentities = {0, "r_drawentities","1"};
 cvar_t r_drawviewmodel = {0, "r_drawviewmodel","1"};
 cvar_t r_speeds = {0, "r_speeds","0"};
@@ -253,6 +257,7 @@ void GL_Main_Init(void)
 // FIXME: move this to client?
        FOG_registercvars();
        Cmd_AddCommand("timerefresh", R_TimeRefresh_f);
+       Cvar_RegisterVariable(&r_showtris);
        Cvar_RegisterVariable(&r_drawentities);
        Cvar_RegisterVariable(&r_drawviewmodel);
        Cvar_RegisterVariable(&r_speeds);
@@ -632,6 +637,19 @@ void R_RenderView(void)
        qglEnable(GL_POLYGON_OFFSET_FILL);
 
        R_RenderScene();
+       if (r_showtris.integer)
+       {
+               rmeshstate_t m;
+               GL_Color(1,1,1,1);
+               GL_BlendFunc(GL_ONE, GL_ZERO);
+               GL_DepthTest(GL_FALSE);
+               GL_DepthMask(GL_FALSE);
+               memset(&m, 0, sizeof(m));
+               R_Mesh_State_Texture(&m);
+               r_showtrispass = true;
+               R_RenderScene();
+               r_showtrispass = false;
+       }
 
        qglPolygonOffset(0, 0);
        qglDisable(GL_POLYGON_OFFSET_FILL);
@@ -650,7 +668,7 @@ extern void R_DrawLightningBeams (void);
 void R_RenderScene(void)
 {
        entity_render_t *world;
-
+       
        // don't let sound skip if going slow
        if (!intimerefresh && !r_speeds.integer)
                S_ExtraUpdate ();
index eac7795ea8d88200a7a3f9541380e47e022e0773..0e47172b9ec048c80d2f050d171530a55b418639 100644 (file)
--- a/render.h
+++ b/render.h
@@ -86,6 +86,8 @@ extern        int                     r_framecount;
 extern mplane_t        frustum[4];
 extern int             c_alias_polys, c_light_polys, c_faces, c_nodes, c_leafs, c_models, c_bmodels, c_sprites, c_particles, c_dlights;
 
+// forces all rendering to draw triangle outlines
+extern int r_showtrispass;
 
 //
 // view origin
diff --git a/todo b/todo
index cf4fcb54ebdfa1760ebafb7e8b36a250ccda2821..223691e28d87b368d2882dda84d4ded955abc1d3 100644 (file)
--- a/todo
+++ b/todo
@@ -36,6 +36,7 @@ d darkplaces: revert noclip movement to match nq for compatibility with mods tha
 -n darkplaces: typing ip in join game menu should show 'trying' and 'no response' after a while, or 'no network' if networking is not initialized (yummyluv)
 d darkplaces: make light_lev dlights from qc require PFLAGS_FULLDYNAMIC flag
 d darkplaces: improve tenebrae compatibility by handling EF_FULLDYNAMIC flag in tenebrae mode, also make all sprites render additive
+d darkplaces: add r_showtris cvar (Riot)
 3 darkplaces: figure out BoxOnPlaneSide crash that happens in dpmod dpdm2 deathmatch 7 occasionally
 2 darkplaces: add q2 sprite support sometime
 0 dpmod: fix tilted corpse bug