pop(stencil) for EXT_stencil_two_side

This commit is contained in:
Daniel Borca 2004-11-12 09:56:33 +00:00
parent a2c2393d91
commit 79a98dea91
1 changed files with 16 additions and 7 deletions

View File

@ -1060,17 +1060,26 @@ _mesa_PopAttrib(void)
break;
case GL_STENCIL_BUFFER_BIT:
{
const GLint face = 0; /* XXX stencil two side */
GLint face;
const struct gl_stencil_attrib *stencil;
stencil = (const struct gl_stencil_attrib *) attr->data;
_mesa_set_enable(ctx, GL_STENCIL_TEST, stencil->Enabled);
_mesa_ClearStencil(stencil->Clear);
_mesa_StencilFunc(stencil->Function[face], stencil->Ref[face],
stencil->ValueMask[face]);
_mesa_StencilMask(stencil->WriteMask[face]);
_mesa_StencilOp(stencil->FailFunc[face],
stencil->ZFailFunc[face],
stencil->ZPassFunc[face]);
face = stencil->ActiveFace;
if (ctx->Extensions.EXT_stencil_two_side) {
_mesa_set_enable(ctx, GL_STENCIL_TEST_TWO_SIDE_EXT, stencil->TestTwoSide);
face ^= 1;
}
do {
_mesa_ActiveStencilFaceEXT(face);
_mesa_StencilFunc(stencil->Function[face], stencil->Ref[face],
stencil->ValueMask[face]);
_mesa_StencilMask(stencil->WriteMask[face]);
_mesa_StencilOp(stencil->FailFunc[face],
stencil->ZFailFunc[face],
stencil->ZPassFunc[face]);
face ^= 1;
} while (face != stencil->ActiveFace ^ 1);
}
break;
case GL_TRANSFORM_BIT: