I followed the shadow volume algorithms given in numerous website, but it doesnt work. There are no shadowing at all. Does anybody know what i have done wrongly?
glClearStencil(0);//clear stencil buffer to 0
glClearDepth(1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
glPushMatrix();
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(55,1,1,200.0);
glMatrixMode(GL_MODELVIEW);
DisplayImage(); //this is a background image
Lighting();
DrawObjects();
//My objects are a polygon, a teapot and a cube below the teapot
//disable color buffer and depth buffer
glColorMask(GL_FALSE,GL_FALSE,GL_FALSE,GL_FALSE); glDepthMask(GL_FALSE);
glClearStencil(0);
glClear(GL_STENCIL_BUFFER_BIT);
//Increment when depth test passes
glStencilFunc(GL_ALWAYS, 1, 1);
glStencilOp(GL_KEEP, GL_KEEP, GL_INCR);
glEnable(GL_STENCIL_TEST);
glCullFace(GL_BACK);
glEnable(GL_CULL_FACE );
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(55,1,1,200.0);
glMatrixMode(GL_MODELVIEW);
DrawObjects();
glDisable(GL_CULL_FACE );
glDisable(GL_STENCIL_TEST);
glCullFace(GL_FRONT);
glEnable(GL_CULL_FACE );
//decrement with front face culling
glStencilFunc(GL_ALWAYS, 1, 1);
glStencilOp(GL_KEEP, GL_KEEP, GL_DECR);
glEnable(GL_STENCIL_TEST);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(55,1,1,200.0);
glMatrixMode(GL_MODELVIEW);
DrawObjects();
glDisable(GL_CULL_FACE );
glStencilFunc(GL_GREATER, 0, 1);
glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
glClear(GL_DEPTH_BUFFER_BIT);
//Enable color buffer and depth buffer
glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_TRUE); //dun update color
glDepthMask(GL_TRUE);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
glColor4f(0.0,0.0,0.0,0.5); //50% black
DrawObjects();
glDisable(GL_STENCIL_TEST);
glDisable(GL_BLEND);
glPopMatrix();
ps: Thanx a lot Descenterace for your explanation.
pps: forgot to say, any help wld be very welcome, and thanks!
[This message has been edited by Lanfear (edited 02-29-2004).]
[This message has been edited by Lanfear (edited 02-29-2004).]