For compleateness.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@628 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
f43b24da6b
commit
f6255c4713
1 changed files with 81 additions and 2 deletions
|
@ -940,6 +940,82 @@ static void R_DrawShadowVolume(mesh_t *mesh)
|
||||||
glEnd();
|
glEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GL_DrawAliasMesh_Sketch (mesh_t *mesh, int texnum)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
extern int gldepthfunc;
|
||||||
|
#ifdef Q3SHADERS
|
||||||
|
R_UnlockArrays();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
glDepthFunc(gldepthfunc);
|
||||||
|
glDepthMask(1);
|
||||||
|
|
||||||
|
if (gldepthmin == 0.5)
|
||||||
|
qglCullFace ( GL_BACK );
|
||||||
|
else
|
||||||
|
qglCullFace ( GL_FRONT );
|
||||||
|
|
||||||
|
GL_TexEnv(GL_MODULATE);
|
||||||
|
|
||||||
|
glDisable(GL_TEXTURE_2D);
|
||||||
|
|
||||||
|
glVertexPointer(3, GL_FLOAT, 16, mesh->xyz_array);
|
||||||
|
glEnableClientState( GL_VERTEX_ARRAY );
|
||||||
|
|
||||||
|
if (mesh->normals_array && glNormalPointer) //d3d wrapper doesn't support normals, and this is only really needed for truform
|
||||||
|
{
|
||||||
|
glNormalPointer(GL_FLOAT, 0, mesh->normals_array);
|
||||||
|
glEnableClientState( GL_NORMAL_ARRAY );
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mesh->colors_array)
|
||||||
|
{
|
||||||
|
glColorPointer(4, GL_UNSIGNED_BYTE, 0, mesh->colors_array);
|
||||||
|
glEnableClientState( GL_COLOR_ARRAY );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
glDisableClientState( GL_COLOR_ARRAY );
|
||||||
|
|
||||||
|
glEnableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||||
|
glTexCoordPointer(2, GL_FLOAT, 0, mesh->st_array);
|
||||||
|
|
||||||
|
glDrawElements(GL_TRIANGLES, mesh->numindexes, GL_UNSIGNED_INT, mesh->indexes);
|
||||||
|
|
||||||
|
glDisableClientState( GL_VERTEX_ARRAY );
|
||||||
|
glDisableClientState( GL_COLOR_ARRAY );
|
||||||
|
glDisableClientState( GL_NORMAL_ARRAY );
|
||||||
|
glDisableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||||
|
|
||||||
|
glColor3f(0, 0, 0);
|
||||||
|
glBegin(GL_LINES);
|
||||||
|
for (i = 0; i < mesh->numindexes; i+=3)
|
||||||
|
{
|
||||||
|
float *v1, *v2, *v3;
|
||||||
|
int n;
|
||||||
|
v1 = mesh->xyz_array[mesh->indexes[i+0]];
|
||||||
|
v2 = mesh->xyz_array[mesh->indexes[i+1]];
|
||||||
|
v3 = mesh->xyz_array[mesh->indexes[i+2]];
|
||||||
|
for (n = 0; n < 3; n++) //rember we do this triangle AND the neighbours
|
||||||
|
{
|
||||||
|
glVertex3f( v1[0]+0.5*(rand()/(float)RAND_MAX-0.5),
|
||||||
|
v1[1]+0.5*(rand()/(float)RAND_MAX-0.5),
|
||||||
|
v1[2]+0.5*(rand()/(float)RAND_MAX-0.5));
|
||||||
|
glVertex3f( v2[0]+0.5*(rand()/(float)RAND_MAX-0.5),
|
||||||
|
v2[1]+0.5*(rand()/(float)RAND_MAX-0.5),
|
||||||
|
v2[2]+0.5*(rand()/(float)RAND_MAX-0.5));
|
||||||
|
glVertex3f( v3[0]+0.5*(rand()/(float)RAND_MAX-0.5),
|
||||||
|
v3[1]+0.5*(rand()/(float)RAND_MAX-0.5),
|
||||||
|
v3[2]+0.5*(rand()/(float)RAND_MAX-0.5));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
glEnd();
|
||||||
|
|
||||||
|
#ifdef Q3SHADERS
|
||||||
|
R_IBrokeTheArrays();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
void GL_DrawAliasMesh (mesh_t *mesh, int texnum)
|
void GL_DrawAliasMesh (mesh_t *mesh, int texnum)
|
||||||
{
|
{
|
||||||
extern int gldepthfunc;
|
extern int gldepthfunc;
|
||||||
|
@ -992,6 +1068,7 @@ void GL_DrawAliasMesh (mesh_t *mesh, int texnum)
|
||||||
|
|
||||||
void R_DrawGAliasModel (entity_t *e)
|
void R_DrawGAliasModel (entity_t *e)
|
||||||
{
|
{
|
||||||
|
extern cvar_t r_drawflat;
|
||||||
model_t *clmodel;
|
model_t *clmodel;
|
||||||
vec3_t mins, maxs;
|
vec3_t mins, maxs;
|
||||||
vec3_t dist;
|
vec3_t dist;
|
||||||
|
@ -1316,10 +1393,12 @@ void R_DrawGAliasModel (entity_t *e)
|
||||||
skin = GL_ChooseSkin(inf, clmodel->name, e);
|
skin = GL_ChooseSkin(inf, clmodel->name, e);
|
||||||
c_alias_polys += mesh.numindexes/3;
|
c_alias_polys += mesh.numindexes/3;
|
||||||
|
|
||||||
if (!skin)
|
if (r_drawflat.value == 2)
|
||||||
|
GL_DrawAliasMesh_Sketch(&mesh, skin->base);
|
||||||
|
else if (!skin)
|
||||||
{
|
{
|
||||||
glEnable(GL_TEXTURE_2D);
|
glEnable(GL_TEXTURE_2D);
|
||||||
GL_DrawAliasMesh(&mesh, 1);
|
GL_DrawAliasMesh_Sketch(&mesh, 1);
|
||||||
}
|
}
|
||||||
#ifdef Q3SHADERS
|
#ifdef Q3SHADERS
|
||||||
else if (skin->shader)
|
else if (skin->shader)
|
||||||
|
|
Loading…
Reference in a new issue