properly render cloaked walls in OpenGL (fixes #1608)
This commit is contained in:
parent
5338acbdcc
commit
8a2ae9e813
|
@ -1,3 +1,11 @@
|
|||
2004-05-10 Dietfrid Mali <dietfrid.mali@q-dial.de>
|
||||
|
||||
* arch/ogl/ogl.c, include/3d.h: added g3_draw_transp_poly() for
|
||||
rendering transparent (e.g. cloaked) walls
|
||||
|
||||
* main/render.c: render_face now calls g3_draw_transp_poly() for
|
||||
cloaked walls in OpenGL
|
||||
|
||||
2004-05-08 Martin Schaffner <maschaffner@gmx.ch>
|
||||
|
||||
* arch/sdl/digi.c: fix bug on Mac OS X where all sound, including
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: ogl.c,v 1.11 2003-11-27 00:21:04 btb Exp $ */
|
||||
/* $Id: ogl.c,v 1.12 2004-05-11 01:53:34 btb Exp $ */
|
||||
/*
|
||||
*
|
||||
* Graphics support functions for OpenGL.
|
||||
|
@ -619,6 +619,22 @@ bool g3_draw_poly(int nv,g3s_point **pointlist)
|
|||
return 0;
|
||||
}
|
||||
|
||||
bool g3_draw_transp_poly(int nv, g3s_point **pointlist)
|
||||
{
|
||||
int c;
|
||||
|
||||
r_polyc++;
|
||||
OGL_DISABLE(TEXTURE_2D);
|
||||
glColor4f(0, 0, 0, (float)Gr_scanline_darkening_level / 31.0);
|
||||
glBegin(GL_TRIANGLE_FAN);
|
||||
for (c = 0; c < nv; c++)
|
||||
{
|
||||
glVertex3f(f2glf(pointlist[c]->p3_vec.x), f2glf(pointlist[c]->p3_vec.y), -f2glf(pointlist[c]->p3_vec.z));
|
||||
}
|
||||
glEnd();
|
||||
return 0;
|
||||
}
|
||||
|
||||
void gr_upoly_tmap(int nverts, int *vert ){
|
||||
mprintf((0,"gr_upoly_tmap: unhandled\n"));//should never get called
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: 3d.h,v 1.9 2003-01-02 23:13:21 btb Exp $ */
|
||||
/* $Id: 3d.h,v 1.10 2004-05-11 01:53:34 btb Exp $ */
|
||||
/*
|
||||
THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
|
||||
SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
|
||||
|
@ -291,6 +291,13 @@ ubyte g3_add_delta_vec(g3s_point *dest,g3s_point *src,vms_vector *deltav);
|
|||
//returns 1 if off screen, 0 if drew
|
||||
bool g3_draw_poly(int nv,g3s_point **pointlist);
|
||||
|
||||
#ifdef OGL
|
||||
// draw a transparent face.
|
||||
// returns 1 if off screen, 0 if drew
|
||||
// Currently implemented only for OpenGL, always returns 0.
|
||||
bool g3_draw_transp_poly(int nv, g3s_point **pointlist);
|
||||
#endif
|
||||
|
||||
//draw a texture-mapped face.
|
||||
//returns 1 if off screen, 0 if drew
|
||||
bool g3_draw_tmap(int nv,g3s_point **pointlist,g3s_uvl *uvl_list,grs_bitmap *bm);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: render.c,v 1.18 2003-10-10 09:36:35 btb Exp $ */
|
||||
/* $Id: render.c,v 1.19 2004-05-11 01:53:34 btb Exp $ */
|
||||
/*
|
||||
THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
|
||||
SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
|
||||
|
@ -619,9 +619,13 @@ void render_face(int segnum, int sidenum, int nv, short *vp, int tmap1, int tmap
|
|||
int wall_num = Segments[segnum].sides[sidenum].wall_num;
|
||||
Assert(wall_num != -1);
|
||||
Gr_scanline_darkening_level = Walls[wall_num].cloak_value;
|
||||
gr_setcolor(BM_XRGB(0,0,0)); //set to black (matters for s3)
|
||||
#ifdef OGL
|
||||
g3_draw_transp_poly(nv,pointlist); // draw as flat poly
|
||||
#else
|
||||
gr_setcolor(BM_XRGB(0,0,0)); // set to black (matters for s3)
|
||||
|
||||
g3_draw_poly(nv,pointlist); //draw as flat poly
|
||||
g3_draw_poly(nv,pointlist); // draw as flat poly
|
||||
#endif
|
||||
|
||||
Gr_scanline_darkening_level = GR_FADE_LEVELS;
|
||||
|
||||
|
|
Loading…
Reference in a new issue