mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-11-10 23:02:03 +00:00
Polymer: sanitize backface culling
Keep track of which side is getting culled, swap around mirrors, swap around model drawing. git-svn-id: https://svn.eduke32.com/eduke32@2032 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
6f4fedb7fe
commit
03429e8f2e
2 changed files with 14 additions and 4 deletions
|
@ -374,6 +374,8 @@ static void polymer_initrendertargets(int32_t count);
|
||||||
|
|
||||||
#define INDICE(n) ((p->indices) ? (p->indices[(i+n)%p->indicescount]*5) : (((i+n)%p->vertcount)*5))
|
#define INDICE(n) ((p->indices) ? (p->indices[(i+n)%p->indicescount]*5) : (((i+n)%p->vertcount)*5))
|
||||||
|
|
||||||
|
#define SWITCH_CULL_DIRECTION culledface = (culledface == GL_FRONT) ? GL_BACK : GL_FRONT; bglCullFace(culledface)
|
||||||
|
|
||||||
static inline GLfloat dot2f(GLfloat *v1, GLfloat *v2)
|
static inline GLfloat dot2f(GLfloat *v1, GLfloat *v2)
|
||||||
{
|
{
|
||||||
return v1[0]*v2[0] + v1[1]*v2[1];
|
return v1[0]*v2[0] + v1[1]*v2[1];
|
||||||
|
|
|
@ -629,6 +629,8 @@ _pranimatespritesinfo asi;
|
||||||
|
|
||||||
int32_t polymersearching;
|
int32_t polymersearching;
|
||||||
|
|
||||||
|
int32_t culledface;
|
||||||
|
|
||||||
// EXTERNAL FUNCTIONS
|
// EXTERNAL FUNCTIONS
|
||||||
int32_t polymer_init(void)
|
int32_t polymer_init(void)
|
||||||
{
|
{
|
||||||
|
@ -802,7 +804,7 @@ void polymer_glinit(void)
|
||||||
bglPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
|
bglPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
|
||||||
else
|
else
|
||||||
bglPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
|
bglPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
|
||||||
|
|
||||||
polymer_setaspect(pr_fov);
|
polymer_setaspect(pr_fov);
|
||||||
|
|
||||||
bglMatrixMode(GL_MODELVIEW);
|
bglMatrixMode(GL_MODELVIEW);
|
||||||
|
@ -813,8 +815,10 @@ void polymer_glinit(void)
|
||||||
|
|
||||||
bglDisable(GL_FOG);
|
bglDisable(GL_FOG);
|
||||||
|
|
||||||
bglEnable(GL_CULL_FACE);
|
culledface = GL_BACK;
|
||||||
bglCullFace(GL_BACK);
|
bglCullFace(GL_BACK);
|
||||||
|
|
||||||
|
bglEnable(GL_CULL_FACE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void polymer_resetlights(void)
|
void polymer_resetlights(void)
|
||||||
|
@ -1319,7 +1323,11 @@ void polymer_drawsprite(int32_t snum)
|
||||||
tile2model[Ptile2tile(tspr->picnum,tspr->pal)].framenum >= 0 &&
|
tile2model[Ptile2tile(tspr->picnum,tspr->pal)].framenum >= 0 &&
|
||||||
!(spriteext[tspr->owner].flags & SPREXT_NOTMD))
|
!(spriteext[tspr->owner].flags & SPREXT_NOTMD))
|
||||||
{
|
{
|
||||||
|
bglEnable(GL_CULL_FACE);
|
||||||
|
SWITCH_CULL_DIRECTION;
|
||||||
polymer_drawmdsprite(tspr);
|
polymer_drawmdsprite(tspr);
|
||||||
|
SWITCH_CULL_DIRECTION;
|
||||||
|
bglDisable(GL_CULL_FACE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1785,7 +1793,7 @@ static void polymer_displayrooms(int16_t dacursectnum)
|
||||||
|
|
||||||
bglClipPlane(GL_CLIP_PLANE0, plane);
|
bglClipPlane(GL_CLIP_PLANE0, plane);
|
||||||
polymer_inb4mirror(mirrorlist[i].plane->buffer, mirrorlist[i].plane->plane);
|
polymer_inb4mirror(mirrorlist[i].plane->buffer, mirrorlist[i].plane->plane);
|
||||||
bglCullFace(GL_FRONT);
|
SWITCH_CULL_DIRECTION;
|
||||||
//bglEnable(GL_CLIP_PLANE0);
|
//bglEnable(GL_CLIP_PLANE0);
|
||||||
|
|
||||||
if (mirrorlist[i].wallnum >= 0)
|
if (mirrorlist[i].wallnum >= 0)
|
||||||
|
@ -1833,7 +1841,7 @@ static void polymer_displayrooms(int16_t dacursectnum)
|
||||||
globalposz = gz;
|
globalposz = gz;
|
||||||
|
|
||||||
bglDisable(GL_CLIP_PLANE0);
|
bglDisable(GL_CLIP_PLANE0);
|
||||||
bglCullFace(GL_BACK);
|
SWITCH_CULL_DIRECTION;
|
||||||
bglMatrixMode(GL_MODELVIEW);
|
bglMatrixMode(GL_MODELVIEW);
|
||||||
bglPopMatrix();
|
bglPopMatrix();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue