Example #1
0
/*
================
R_AliasPrepareUnclippedPoints
================
*/
void R_AliasPrepareUnclippedPoints (void)
{
	stvert_t	*pstverts;
	finalvert_t	*fv;

	GpError("R_AliasPrepareUnliccpedPoints A",12);

	pstverts = (stvert_t *)((byte *)paliashdr + paliashdr->stverts);
	r_anumverts = pmdl->numverts;
// FIXME: just use pfinalverts directly?
	fv = pfinalverts;

	GpError("R_AliasPrepareUnliccpedPoints B",12);
	R_AliasTransformAndProjectFinalVerts (fv, pstverts);

	if (r_affinetridesc.drawtype){
		GpError("R_AliasPrepareUnliccpedPoints B",13);
		D_PolysetDrawFinalVerts (fv, r_anumverts);
	}

	r_affinetridesc.pfinalverts = pfinalverts;
	r_affinetridesc.ptriangles = (mtriangle_t *)
			((byte *)paliashdr + paliashdr->triangles);
	r_affinetridesc.numtriangles = pmdl->numtris;

	GpError("R_AliasPrepareUnliccpedPoints C",13);
	D_PolysetDraw ();
	GpError("R_AliasPrepareUnliccpedPoints end",13);
}
Example #2
0
/*
================
R_AliasPrepareUnclippedPoints
================
*/
void R_AliasPrepareUnclippedPoints (void)
{
	stvert_t	*pstverts;
	finalvert_t	*fv;

	pstverts = (stvert_t *)((byte *)paliashdr + paliashdr->stverts);
	r_anumverts = pmdl->numverts;
// FIXME: just use pfinalverts directly?
	fv = pfinalverts;
#ifdef INTERPOL7
	R_AliasTransformAndProjectFinalVertsLerp (fv, pstverts);
#else
	R_AliasTransformAndProjectFinalVerts (fv, pstverts);
#endif

	if (r_affinetridesc.drawtype)
		D_PolysetDrawFinalVerts (fv, r_anumverts);

	r_affinetridesc.pfinalverts = pfinalverts;
	r_affinetridesc.ptriangles = (mtriangle_t *)
			((byte *)paliashdr + paliashdr->triangles);
	r_affinetridesc.numtriangles = pmdl->numtris;

	D_PolysetDraw ();
}
Example #3
0
void R_AliasPrepareUnclippedPointsFPM (void)
{
	stvert_t	*pstverts;
	finalvert_t	*fv;

	pstverts = (stvert_t *)((byte *)paliashdr + paliashdr->stverts);
	r_anumverts = pmdlFPM->numverts;
// FIXME: just use pfinalverts directly?
	fv = pfinalverts;

	R_AliasTransformAndProjectFinalVertsFPM (fv, pstverts);

	if (r_affinetridesc.drawtype)
	  //		D_PolysetDrawFinalVertsFPM (fv, r_anumverts); // FPM doesn't exist
		D_PolysetDrawFinalVerts (fv, r_anumverts);

	r_affinetridesc.pfinalverts = pfinalverts;
	r_affinetridesc.ptriangles = (mtriangle_t *)
			((byte *)paliashdr + paliashdr->triangles);
	r_affinetridesc.numtriangles = pmdlFPM->numtris;

	D_PolysetDraw ();
}
Example #4
0
static void
R_IQMPrepareUnclippedPoints (iqm_t *iqm, swiqm_t *sw, iqmframe_t *frame)
{
	int         i;

	R_IQMTransformAndProjectFinalVerts (iqm, sw, frame);

	if (r_affinetridesc.drawtype)
		D_PolysetDrawFinalVerts (pfinalverts, iqm->num_verts);

	r_affinetridesc.pfinalverts = pfinalverts;
	for (i = 0; i < iqm->num_meshes; i++) {
		iqmmesh    *mesh = &iqm->meshes[i];
		uint16_t   *tris;

		iqm_setup_skin (sw, i);

		tris = iqm->elements + mesh->first_triangle;
		r_affinetridesc.ptriangles = (mtriangle_t *) tris;
		r_affinetridesc.numtriangles = mesh->num_triangles;
		D_PolysetDraw ();
	}
}
Example #5
0
/*
================
R_AliasPrepareUnclippedPoints
================
*/
void R_AliasPrepareUnclippedPoints (void)
{
	stvert_t	*pstverts;
	finalvert_t	*fv;
	mtriangle_t	*ptri;
	int	i;

	pstverts = (stvert_t *)((byte *)paliashdr + paliashdr->stverts);
	r_anumverts = pmdl->numverts;
// FIXME: just use pfinalverts directly?
	fv = pfinalverts;

	R_AliasTransformAndProjectFinalVerts (fv, pstverts);

	r_affinetridesc.pfinalverts = pfinalverts;
	r_affinetridesc.ptriangles = (mtriangle_t *)
					((byte *)paliashdr + paliashdr->triangles);
	r_affinetridesc.numtriangles = 1;//pmdl->numtris;

	ptri = (mtriangle_t *)((byte *)paliashdr + paliashdr->triangles);
	for (i = 0 ; i < pmdl->numtris ; i++, ptri++)
	{
		finalvert_t	*pfv[3];

		pfv[0] = &pfinalverts[ptri->vertindex[0]];
		pfv[1] = &pfinalverts[ptri->vertindex[1]];
		pfv[2] = &pfinalverts[ptri->vertindex[2]];

		//jfm: fill in the triangles s and t into the finalvert
		pfv[0]->v[2] = pstverts[ptri->stindex[0]].s;
		pfv[0]->v[3] = pstverts[ptri->stindex[0]].t;
		pfv[0]->flags = pstverts[ptri->stindex[0]].onseam;

		pfv[1]->v[2] = pstverts[ptri->stindex[1]].s;
		pfv[1]->v[3] = pstverts[ptri->stindex[1]].t;
		pfv[1]->flags = pstverts[ptri->stindex[1]].onseam;

		pfv[2]->v[2] = pstverts[ptri->stindex[2]].s;
		pfv[2]->v[3] = pstverts[ptri->stindex[2]].t;
		pfv[2]->flags = pstverts[ptri->stindex[2]].onseam;

		r_affinetridesc.ptriangles = ptri;

		if (r_affinetridesc.drawtype)
		{
			if ((currententity->model->flags & EF_SPECIAL_TRANS))
			{
				D_PolysetDrawFinalVertsT5 (pfv[0],pfv[1],pfv[2]);
				D_PolysetDrawT5 ();
			}
			else if (currententity->drawflags & DRF_TRANSLUCENT)
			{
				D_PolysetDrawFinalVertsT (pfv[0],pfv[1],pfv[2]);
				D_PolysetDrawT ();
			}
			else if ((currententity->model->flags & EF_TRANSPARENT))
			{
				D_PolysetDrawFinalVertsT2 (pfv[0],pfv[1],pfv[2]);
				D_PolysetDrawT2 ();
			}
			else if ((currententity->model->flags & EF_HOLEY))
			{
				D_PolysetDrawFinalVertsT3 (pfv[0],pfv[1],pfv[2]);
				D_PolysetDrawT3 ();
			}
			else
			{
				D_PolysetDrawFinalVerts (pfv[0],pfv[1],pfv[2]);
				D_PolysetDraw ();
			}
		}
		else
		{
			if ((currententity->model->flags & EF_SPECIAL_TRANS))
				D_PolysetDrawT5 ();
			else if (currententity->drawflags & DRF_TRANSLUCENT)
				D_PolysetDrawT ();
			else if ((currententity->model->flags & EF_TRANSPARENT))
				D_PolysetDrawT2 ();
			else if ((currententity->model->flags & EF_HOLEY))
				D_PolysetDrawT3 ();
			else
				D_PolysetDraw ();
		}
	}
}