pic->lastusedframe = draw_frame;
// load high quality image (this falls back to low quality too)
- pic->skinframe = R_SkinFrame_LoadExternal(pic->name, texflags, (cachepicflags & CACHEPICFLAG_QUIET) == 0, (cachepicflags & CACHEPICFLAG_FAILONMISSING) == 0);
+ pic->skinframe = R_SkinFrame_LoadExternal(pic->name, texflags | TEXF_FORCE_RELOAD, (cachepicflags & CACHEPICFLAG_QUIET) == 0, (cachepicflags & CACHEPICFLAG_FAILONMISSING) == 0);
// get the dimensions of the image we loaded (if it was successful)
if (pic->skinframe && pic->skinframe->base)
if (pic == NULL)
return false;
if (pic->autoload && (!pic->skinframe || !pic->skinframe->base))
- pic->skinframe = R_SkinFrame_LoadExternal(pic->name, pic->texflags, false, true);
+ pic->skinframe = R_SkinFrame_LoadExternal(pic->name, pic->texflags | TEXF_FORCE_RELOAD, false, true);
// skinframe will only be NULL if the pic was created with CACHEPICFLAG_FAILONMISSING and not found
return pic->skinframe != NULL && pic->skinframe->base != NULL;
}
if (pic == NULL)
return NULL;
if (pic->autoload && (!pic->skinframe || !pic->skinframe->base))
- pic->skinframe = R_SkinFrame_LoadExternal(pic->name, pic->texflags, false, true);
+ pic->skinframe = R_SkinFrame_LoadExternal(pic->name, pic->texflags | TEXF_FORCE_RELOAD, false, true);
pic->lastusedframe = draw_frame;
return pic->skinframe ? pic->skinframe->base : NULL;
}
pic->flags |= (texflags & TEXF_FORCENEAREST) ? CACHEPICFLAG_NEAREST : 0;
pic->width = width;
pic->height = height;
- pic->skinframe = R_SkinFrame_LoadInternalBGRA(picname, texflags, pixels_bgra, width, height, vid.sRGB2D);
+ pic->skinframe = R_SkinFrame_LoadInternalBGRA(picname, texflags | TEXF_FORCE_RELOAD, pixels_bgra, width, height, vid.sRGB2D);
pic->lastusedframe = draw_frame;
return pic;
}
R_RegisterModule("GL_Draw", gl_draw_start, gl_draw_shutdown, gl_draw_newmap, NULL, NULL);
}
-static void _DrawQ_Setup(void) // see R_ResetViewRendering2D
+void DrawQ_Start(void)
{
- if (r_refdef.draw2dstage == 1)
- return;
- DrawQ_FlushUI();
r_refdef.draw2dstage = 1;
R_ResetViewRendering2D_Common(0, NULL, NULL, 0, 0, vid.width, vid.height, vid_conwidth.integer, vid_conheight.integer);
}
dp_model_t *mod = CL_Mesh_UI();
msurface_t *surf;
int e0, e1, e2, e3;
- _DrawQ_Setup();
if (!pic)
pic = Draw_CachePic("white");
if (width == 0)
dp_model_t *mod = CL_Mesh_UI();
msurface_t *surf;
int e0, e1, e2, e3;
- _DrawQ_Setup();
if (!pic)
pic = Draw_CachePic("white");
if (width == 0)
if (height == 0)
height = pic->height;
surf = Mod_Mesh_AddSurface(mod, Mod_Mesh_GetTexture(mod, pic->name, flags, pic->texflags, MATERIALFLAG_VERTEXCOLOR), true);
- e0 = Mod_Mesh_IndexForVertex(mod, surf, x - cosaf * org_x - cosar * org_y, y - sinaf * org_x - sinar * org_y, 0, 0, 0, -1, 0, 0, 0, 0, red, green, blue, alpha);
- e1 = Mod_Mesh_IndexForVertex(mod, surf, x + cosaf * (width - org_x) - cosar * org_y, y + sinaf * (width - org_x) - sinar * org_y, 0, 0, 0, -1, 1, 0, 0, 0, red, green, blue, alpha);
- e2 = Mod_Mesh_IndexForVertex(mod, surf, x + cosaf * (width - org_x) + cosar * (height - org_y), sinaf*(width - org_x) + sinar * (height - org_y), 0, 0, 0, -1, 1, 1, 0, 0, red, green, blue, alpha);
- e3 = Mod_Mesh_IndexForVertex(mod, surf, x - cosaf * org_x + cosar * (height - org_y), y - sinaf * org_x + sinar * (height - org_y), 0, 0, 0, -1, 0, 1, 0, 0, red, green, blue, alpha);
+ e0 = Mod_Mesh_IndexForVertex(mod, surf, x - cosaf * org_x - cosar * org_y , y - sinaf * org_x - sinar * org_y , 0, 0, 0, -1, 0, 0, 0, 0, red, green, blue, alpha);
+ e1 = Mod_Mesh_IndexForVertex(mod, surf, x + cosaf * (width - org_x) - cosar * org_y , y + sinaf * (width - org_x) - sinar * org_y , 0, 0, 0, -1, 1, 0, 0, 0, red, green, blue, alpha);
+ e2 = Mod_Mesh_IndexForVertex(mod, surf, x + cosaf * (width - org_x) + cosar * (height - org_y), y + sinaf * (width - org_x) + sinar * (height - org_y), 0, 0, 0, -1, 1, 1, 0, 0, red, green, blue, alpha);
+ e3 = Mod_Mesh_IndexForVertex(mod, surf, x - cosaf * org_x + cosar * (height - org_y), y - sinaf * org_x + sinar * (height - org_y), 0, 0, 0, -1, 0, 1, 0, 0, red, green, blue, alpha);
Mod_Mesh_AddTriangle(mod, surf, e0, e1, e2);
Mod_Mesh_AddTriangle(mod, surf, e0, e2, e3);
}
tw = Draw_GetPicWidth(fnt->pic);
th = Draw_GetPicHeight(fnt->pic);
- _DrawQ_Setup();
-
if (!h) h = w;
if (!h) {
h = w = 1;
dp_model_t *mod = CL_Mesh_UI();
msurface_t *surf;
int e0, e1, e2, e3;
- _DrawQ_Setup();
if (!pic)
pic = Draw_CachePic("white");
if (width == 0)
msurface_t *surf;
int e0, e1, e2, e3;
float offsetx, offsety;
- _DrawQ_Setup();
// width is measured in real pixels
if (fabs(x2 - x1) > fabs(y2 - y1))
{
offsetx = 0;
- offsety = width * vid_conheight.value / vid.height;
+ offsety = 0.5f * width * vid_conheight.value / vid.height;
}
else
{
- offsetx = width * vid_conwidth.value / vid.width;
+ offsetx = 0.5f * width * vid_conwidth.value / vid.width;
offsety = 0;
}
surf = Mod_Mesh_AddSurface(mod, Mod_Mesh_GetTexture(mod, "white", 0, 0, MATERIALFLAG_VERTEXCOLOR), true);
void DrawQ_SetClipArea(float x, float y, float width, float height)
{
int ix, iy, iw, ih;
- _DrawQ_Setup();
DrawQ_FlushUI();
// We have to convert the con coords into real coords
ih = (int)(0.5 + height * ((float)r_refdef.view.height / vid_conheight.integer));
switch(vid.renderpath)
{
- case RENDERPATH_GL11:
- case RENDERPATH_GL13:
case RENDERPATH_GL20:
- case RENDERPATH_GLES1:
case RENDERPATH_GLES2:
- case RENDERPATH_SOFT:
GL_Scissor(ix, vid.height - iy - ih, iw, ih);
break;
- case RENDERPATH_D3D9:
- GL_Scissor(ix, iy, iw, ih);
- break;
- case RENDERPATH_D3D10:
- Con_DPrintf("FIXME D3D10 %s:%i %s\n", __FILE__, __LINE__, __FUNCTION__);
- break;
- case RENDERPATH_D3D11:
- Con_DPrintf("FIXME D3D11 %s:%i %s\n", __FILE__, __LINE__, __FUNCTION__);
- break;
}
GL_ScissorTest(true);
void DrawQ_ResetClipArea(void)
{
DrawQ_FlushUI();
- _DrawQ_Setup();
GL_ScissorTest(false);
}