- glCullFace(GL_BACK);
- glPushAttrib(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT or GL_ENABLE_BIT
- or GL_POLYGON_BIT or GL_STENCIL_BUFFER_BIT);
- glDisable(GL_LIGHTING);
- glDepthMask(false);
- glDepthFunc(GL_LEQUAL);
- glEnable(GL_STENCIL_TEST);
- glColorMask(false, false, false, false);
- glStencilFunc(GL_ALWAYS, 1, $FFFFFFFF);
- glEnable(GL_CULL_FACE);
- // Pass 1
- glFrontFace(GL_CCW);
- glStencilOp(GL_KEEP, GL_KEEP, GL_INCR);
- RenderShadowVolume;
- // Pass 2
- glFrontFace(GL_CW);
- glStencilOp(GL_KEEP, GL_KEEP, GL_DECR);
- RenderShadowVolume;
- glFrontFace(GL_CCW);
- glColorMask(true, TRUE, TRUE, TRUE);
- glStencilFunc(GL_NOTEQUAL, 0, $FFFFFFFF);
- glColor4f(0.0, 0.0, 0.0, 0.4);
- glEnable(GL_BLEND);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- glLoadIdentity;
- glPushMatrix;
- glBegin(GL_TRIANGLE_STRIP);
- glVertex3f(-0.1, 0.1,-0.10);
- glVertex3f(-0.1,-0.1,-0.10);
- glVertex3f( 0.1, 0.1,-0.10);
- glVertex3f( 0.1,-0.1,-0.10);
- glEnd;
- glPopMatrix;
- glPopAttrib;