Ejemplo n.º 1
0
extern "C" void R_DrawMasked()
{
	R_SortVisSprites();
	for (Link <vissprite_t> *it = Vissprites.Front;it;it = it->Next)
	{
		R_DrawSprite(&it->Value);
	}
	for (drawseg_t *ds = ds_p - 1;ds >= drawsegs;ds--)
	{
		if (ds->maskedtexturecol)
		{
			R_RenderMaskedSegRange(ds,ds->x1,ds->x2);
		}
	}
	if (!viewangleoffset)
	{
		R_DrawPlayerSprites();
	}
}
Ejemplo n.º 2
0
/**
 * @note No need to reset the blend mode - R_Setup2D will do this
 * @sa R_Setup2D
 */
void R_DrawParticles (void)
{
	ptl_t *p;
	int i;

	if (!r_particles->integer)
		return;

	for (i = 0, p = r_particleArray; i < r_numParticles; i++, p++)
		if (p->inuse && !p->invis) {
			/* test for visibility */
			if (p->levelFlags && !((1 << refdef.worldlevel) & p->levelFlags))
				continue;

			if (p->program != NULL)
				R_UseProgram(p->program);

			/* set blend mode and draw gfx */
			R_SetBlendMode(p->blend);
			switch (p->style) {
			case STYLE_LINE:
				R_DrawPtlLine(p);
				break;
			case STYLE_CIRCLE:
				R_DrawPtlCircle(p);
				break;
			default:
				break;
			}
			if (p->pic)
				R_DrawSprite(p);
			if (p->model)
				R_DrawParticleModel(p);
			R_TexEnv(GL_MODULATE);

			R_UseProgram(NULL);
		}

	R_BlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

	R_Color(NULL);
}