// Enable stencil test
glEnable(GL_STENCIL_TEST);
// Clear stencil buffer
glClearStencil(0x0);
// Disable drawing to color buffer + depth buffer
glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
glDepthMask(GL_FALSE);
// Draw masking object, setting stencil = 1 wherever it draws
glStencilFunc(GL_ALWAYS, 0x1, 0x1);
glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE);
***draw masking object***
// Re-enable drawing to color buffer + depth buffer
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
glDepthMask(GL_TRUE);
// Draw rest of objects, only where stencil = 1
glStencilFunc(GL_EQUAL, 0x1, 0x1);
glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
***draw rest of objects***
// Disable stencil test
glDisable(GL_STENCIL_TEST);