#include "cl_video.h"
-cvar_t r_textshadow = {0, "r_textshadow", "0" "draws a shadow on all text to improve readability"};
+cvar_t r_textshadow = {0, "r_textshadow", "0", "draws a shadow on all text to improve readability"};
static rtexture_t *char_texture;
cachepic_t *r_crosshairs[NUMCROSSHAIRS+1];
void DrawQ_Begin(void)
{
- r_view_width = bound(0, r_refdef.width, vid.width);
- r_view_height = bound(0, r_refdef.height, vid.height);
- r_view_depth = 1;
- r_view_x = bound(0, r_refdef.x, vid.width - r_refdef.width);
- r_view_y = bound(0, r_refdef.y, vid.height - r_refdef.height);
- r_view_z = 0;
- r_view_matrix = r_refdef.viewentitymatrix;
- GL_ColorMask(r_refdef.colormask[0], r_refdef.colormask[1], r_refdef.colormask[2], 1);
+ GL_ColorMask(r_view.colormask[0], r_view.colormask[1], r_view.colormask[2], 1);
CHECKGLERROR
- qglViewport(r_view_x, vid.height - (r_view_y + r_view_height), r_view_width, r_view_height);CHECKGLERROR
+ qglViewport(r_view.x, vid.height - (r_view.y + r_view.height), r_view.width, r_view.height);CHECKGLERROR
GL_SetupView_Mode_Ortho(0, 0, vid_conwidth.integer, vid_conheight.integer, -10, 100);
qglDepthFunc(GL_LEQUAL);CHECKGLERROR
R_Mesh_Matrix(&identitymatrix);
GL_DepthMask(true);
GL_DepthTest(false);
GL_Color(1,1,1,1);
+ GL_AlphaTest(false);
+ GL_BlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
r_refdef.draw2dstage = true;
}
+static void _DrawQ_ProcessDrawFlag(int flags)
+{
+ CHECKGLERROR
+ if(flags == DRAWFLAG_ADDITIVE)
+ GL_BlendFunc(GL_SRC_ALPHA, GL_ONE);
+ else if(flags == DRAWFLAG_MODULATE)
+ GL_BlendFunc(GL_DST_COLOR, GL_ZERO);
+ else if(flags == DRAWFLAG_2XMODULATE)
+ GL_BlendFunc(GL_DST_COLOR,GL_SRC_COLOR);
+ else
+ GL_BlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+}
+
void DrawQ_Pic(float x, float y, cachepic_t *pic, float width, float height, float red, float green, float blue, float alpha, int flags)
{
if (!r_refdef.draw2dstage)
return;
}
- if (!r_render.integer)
- return;
-
if (alpha < (1.0f / 255.0f))
return;
- if(flags == DRAWFLAG_ADDITIVE)
- GL_BlendFunc(GL_SRC_ALPHA, GL_ONE);
- else if(flags == DRAWFLAG_MODULATE)
- GL_BlendFunc(GL_DST_COLOR, GL_ZERO);
- else if(flags == DRAWFLAG_2XMODULATE)
- GL_BlendFunc(GL_DST_COLOR,GL_SRC_COLOR);
- else
- GL_BlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ _DrawQ_ProcessDrawFlag(flags);
GL_Color(red, green, blue, alpha);
return;
}
- if (!r_render.integer)
- return;
-
- if(flags == DRAWFLAG_ADDITIVE)
- GL_BlendFunc(GL_SRC_ALPHA, GL_ONE);
- else if(flags == DRAWFLAG_MODULATE)
- GL_BlendFunc(GL_DST_COLOR, GL_ZERO);
- else if(flags == DRAWFLAG_2XMODULATE)
- GL_BlendFunc(GL_DST_COLOR,GL_SRC_COLOR);
- else
- GL_BlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ _DrawQ_ProcessDrawFlag(flags);
R_Mesh_VertexPointer(floats);
R_Mesh_ColorPointer(floats + 20);
return;
}
- if (!r_render.integer)
- return;
-
- if(flags == DRAWFLAG_ADDITIVE)
- GL_BlendFunc(GL_SRC_ALPHA, GL_ONE);
- else if(flags == DRAWFLAG_MODULATE)
- GL_BlendFunc(GL_DST_COLOR, GL_ZERO);
- else if(flags == DRAWFLAG_2XMODULATE)
- GL_BlendFunc(GL_DST_COLOR,GL_SRC_COLOR);
- else
- GL_BlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ _DrawQ_ProcessDrawFlag(flags);
R_Mesh_VertexPointer(mesh->data_vertex3f);
R_Mesh_ColorPointer(mesh->data_color4f);
return;
}
- if (!r_render.integer)
- return;
-
- CHECKGLERROR
- if(flags == DRAWFLAG_ADDITIVE)
- GL_BlendFunc(GL_SRC_ALPHA, GL_ONE);
- else if(flags == DRAWFLAG_MODULATE)
- GL_BlendFunc(GL_DST_COLOR, GL_ZERO);
- else if(flags == DRAWFLAG_2XMODULATE)
- GL_BlendFunc(GL_DST_COLOR,GL_SRC_COLOR);
- else
- GL_BlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ _DrawQ_ProcessDrawFlag(flags);
GL_Color(1,1,1,1);
CHECKGLERROR
return;
}
- if (!r_render.integer)
- return;
-
CHECKGLERROR
if(width > 0)
DrawQ_LineWidth(width);
- if(flags == DRAWFLAG_ADDITIVE)
- GL_BlendFunc(GL_SRC_ALPHA, GL_ONE);
- else if(flags == DRAWFLAG_MODULATE)
- GL_BlendFunc(GL_DST_COLOR, GL_ZERO);
- else if(flags == DRAWFLAG_2XMODULATE)
- GL_BlendFunc(GL_DST_COLOR,GL_SRC_COLOR);
- else
- GL_BlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ _DrawQ_ProcessDrawFlag(flags);
GL_Color(r,g,b,alpha);
CHECKGLERROR