Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- glPushAttrib( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_ENABLE_BIT | GL_POLYGON_BIT | GL_STENCIL_BUFFER_BIT );
- glDisable( GL_LIGHTING ); /* Turn Off Lighting*/
- glDepthMask( GL_FALSE ); /* Turn Off Writing To The Depth-Buffer*/
- glDepthFunc( GL_LEQUAL );
- glEnable( GL_STENCIL_TEST ); /* Turn On Stencil Buffer Testing*/
- glColorMask( GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE ); /* Don't Draw Into The Colour Buffer*/
- glStencilFunc( GL_ALWAYS, 1, 0xFFFFFFFFL );
- /* First Pass. Increase Stencil Value In The Shadow*/
- glFrontFace( GL_CCW );
- glStencilOp( GL_KEEP, GL_KEEP, GL_INCR );
- doShadowPass( object, lightPosition );
- /* Second Pass. Decrease Stencil Value In The Shadow*/
- glFrontFace( GL_CW );
- glStencilOp( GL_KEEP, GL_KEEP, GL_DECR );
- //glDepthFunc(GL_GEQUAL);
- doShadowPass( object, lightPosition );
- //glDepthFunc( GL_LEQUAL );
- glFrontFace( GL_CCW );
- glColorMask( GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE ); /* Enable Rendering To Colour Buffer For All Components*/
- /* Draw A Shadowing Rectangle Covering The Entire Screen*/
- glColor4f( 0.0f, 0.0f, 0.0f, 0.4f );
- glEnable( GL_BLEND );
- glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
- glStencilFunc( GL_NOTEQUAL, 0, 0xFFFFFFFFL );
- glStencilOp( GL_KEEP, GL_KEEP, GL_KEEP );
- glPushMatrix();
- glLoadIdentity();
- glBegin( GL_TRIANGLE_STRIP );
- glVertex3f(-0.1f, 0.1f,-0.10f);
- glVertex3f(-0.1f,-0.1f,-0.10f);
- glVertex3f( 0.1f, 0.1f,-0.10f);
- glVertex3f( 0.1f,-0.1f,-0.10f);
- glEnd();
- glPopMatrix();
- glPopAttrib();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement