#include "quakedef.h"
+#include "cl_video.h"
cvar_t scr_viewsize = {CVAR_SAVE, "viewsize","100"};
cvar_t scr_fov = {CVAR_SAVE, "fov","90"}; // 10 - 170
"org:'%+8.2f %+8.2f %+8.2f' ang:'%+4.0f %+4.0f %+4.0f' dir:'%+2.3f %+2.3f %+2.3f'\n"
"world:%6i faces%6i nodes%6i leafs%6i walls%6i dlitwalls\n"
"%5i models%5i bmodels%5i sprites%6i particles%4i dlights\n"
- "%6i modeltris%6i transmeshs%6i transtris%6i meshs%6i meshtris\n",
+ "%6i modeltris%6i meshs%6i meshtris\n",
r_refdef.vieworg[0], r_refdef.vieworg[1], r_refdef.vieworg[2], r_refdef.viewangles[0], r_refdef.viewangles[1], r_refdef.viewangles[2], vpn[0], vpn[1], vpn[2],
c_faces, c_nodes, c_leafs, c_brush_polys, c_light_polys,
c_models, c_bmodels, c_sprites, c_particles, c_dlights,
- c_alias_polys, c_transmeshs, c_transtris, c_meshs, c_meshtris);
+ c_alias_polys, c_meshs, c_meshtris);
c_brush_polys = 0;
c_alias_polys = 0;
if (alpha < (1.0f / 255.0f))
return;
size = sizeof(*dq) + ((strlen(picname) + 1 + 3) & ~3);
- if (r_refdef.drawqueuesize + size > MAX_DRAWQUEUE)
+ if (r_refdef.drawqueuesize + size > r_refdef.maxdrawqueuesize)
return;
red = bound(0, red, 1);
green = bound(0, green, 1);
if (x >= vid.conwidth || y >= vid.conheight || x < (-scalex * maxlen) || y < (-scaley))
return;
size = sizeof(*dq) + ((len + 1 + 3) & ~3);
- if (r_refdef.drawqueuesize + size > MAX_DRAWQUEUE)
+ if (r_refdef.drawqueuesize + size > r_refdef.maxdrawqueuesize)
return;
red = bound(0, red, 1);
green = bound(0, green, 1);
if (alpha < (1.0f / 255.0f))
return;
size = sizeof(*dq) + 4;
- if (r_refdef.drawqueuesize + size > MAX_DRAWQUEUE)
+ if (r_refdef.drawqueuesize + size > r_refdef.maxdrawqueuesize)
return;
red = bound(0, red, 1);
green = bound(0, green, 1);
r_refdef.drawqueuesize += dq->size;
}
-//only used for the player color selection menu
-void DrawQ_PicTranslate (int x, int y, char *picname, qbyte *translation)
+void DrawQ_Mesh (drawqueuemesh_t *mesh, int flags)
{
- int i, c;
- unsigned int trans[4096];
- cachepic_t *pic;
-
- pic = Draw_CachePic(picname);
- if (pic == NULL)
- return;
-
- c = pic->width * pic->height;
- if (c > 4096)
- {
- Con_Printf("DrawQ_PicTranslate: image larger than 4k buffer\n");
+ int size;
+ void *p;
+ drawqueue_t *dq;
+ drawqueuemesh_t *m;
+ size = sizeof(*dq);
+ size += sizeof(drawqueuemesh_t);
+ size += sizeof(int) * mesh->numindices;
+ size += sizeof(float[3]) * mesh->numvertices;
+ size += sizeof(float[2]) * mesh->numvertices;
+ size += sizeof(float[4]) * mesh->numvertices;
+ if (r_refdef.drawqueuesize + size > r_refdef.maxdrawqueuesize)
return;
- }
-
- for (i = 0;i < c;i++)
- trans[i] = d_8to24table[translation[menuplyr_pixels[i]]];
-
- // FIXME: this is renderer stuff?
- R_UpdateTexture (pic->tex, (qbyte *)trans);
-
- DrawQ_Pic(x, y, picname, 0, 0, 1, 1, 1, 1, 0);
+ dq = (void *)(r_refdef.drawqueue + r_refdef.drawqueuesize);
+ dq->size = size;
+ dq->command = DRAWQUEUE_MESH;
+ dq->flags = flags;
+ dq->color = 0;
+ dq->x = 0;
+ dq->y = 0;
+ dq->scalex = 0;
+ dq->scaley = 0;
+ p = (void *)(dq + 1);
+ m = p;(qbyte *)p += sizeof(drawqueuemesh_t);
+ m->numindices = mesh->numindices;
+ m->numvertices = mesh->numvertices;
+ m->texture = mesh->texture;
+ m->indices = p;memcpy(m->indices , mesh->indices , m->numindices * sizeof(int ));(qbyte *)p += m->numindices * sizeof(int );
+ m->vertices = p;memcpy(m->vertices , mesh->vertices , m->numvertices * sizeof(float[3]));(qbyte *)p += m->numvertices * sizeof(float[3]);
+ m->texcoords = p;memcpy(m->texcoords, mesh->texcoords, m->numvertices * sizeof(float[2]));(qbyte *)p += m->numvertices * sizeof(float[2]);
+ m->colors = p;memcpy(m->colors , mesh->colors , m->numvertices * sizeof(float[4]));(qbyte *)p += m->numvertices * sizeof(float[4]);
+ r_refdef.drawqueuesize += dq->size;
}
-
/*
====================
CalcFov
*/
void SCR_ScreenShot_f (void)
{
- int i;
+ static int i = 0;
char filename[16];
char checkname[MAX_OSPATH];
//
// find a file name to save it to
//
- strcpy(filename, "dp0000.tga");
-
- for (i=0 ; i<=9999 ; i++)
+ for (; i<=9999 ; i++)
{
- filename[2] = (i/1000)%10 + '0';
- filename[3] = (i/ 100)%10 + '0';
- filename[4] = (i/ 10)%10 + '0';
- filename[5] = (i/ 1)%10 + '0';
+ sprintf (filename, "dp%04i.tga", i);
sprintf (checkname, "%s/%s", com_gamedir, filename);
if (Sys_FileTime(checkname) == -1)
break; // file doesn't exist
void CL_UpdateScreen(void)
{
- if (!scr_initialized || !con_initialized)
+ if (!scr_initialized || !con_initialized || vid_hidden)
return; // not initialized yet
if (cl_avidemo.integer)
SCR_DrawLoading();
}
+ CL_DrawVideo();
+
R_TimeReport("2d");
// add r_speeds text to queue