PDA

View Full Version : Stencil buffer problem



Stuart McDonald
07-11-2012, 02:11 AM
Just trying to use the stencil buffer for the first and and my first test worked straight away. To write to the stencil I used


// Clear the stencil to 0
glEnable(GL_STENCIL_TEST);
glClearStencil(0);
glClear(GL_STENCIL_BUFFER_BIT);
// INCRease stencil to non-zero when draw
glStencilOp(GL_INCR, GL_INCR, GL_INCR);
// NEVER pass so nothing appears on screen
glStencilFunc(GL_NEVER, 0x0, 0x0);

// Single glDrawArrays call to draw the stencil shape I want.

glDisable(GL_STENCIL_TEST);
glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);


Then to render my image


glEnable(GL_STENCIL_TEST);
// Only show parts which where stencil is ZERO
glStencilFunc(GL_EQUAL, 0, 0xffffffff);
glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);

and I got no image for the parts where I drew to the stencil.

However, I then changed the GL_EQUAL to GL_NOTEQUAL and my entire image was visible. I thought it would invert the result i.e. I'd only see the image for where I drew to the stencil.

I'm obviously not unstanding something fundemental about the stencil test.

Stuart McDonald
07-13-2012, 06:36 AM
Solved. Like an idiot I'd put the call to turn off the stencil test in the wrong place. What I don't understand though is why it worked at all.