Hi all:
I have a problem when I am drawing the reflections. My code is like following:
void Reflection(){
glDisable(GL_DEPTH_TEST);
glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
glEnable(GL_STENCIL_TEST);
glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE);
glStencilFunc(GL_ALWAYS, 1, 0xffffffff);
DrawCheckerBoard();
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
glEnable(GL_DEPTH_TEST);
glStencilFunc(GL_EQUAL, 1, 0xffffffff); /* draw if ==1 */
glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
glPushMatrix();
glScalef(1.0f, -1.0f, 1.0f);
DrawObject();
glPopMatrix();
glDisable(GL_STENCIL_TEST);
}
Outside this function I have enabled GL_BLEND and drawn the floor. The problem is that the object under the floor plane is always drawn as well. And I don’t know how to remove it to just remain the reflection. I tried the method in NeHe’s tutorial which uses
glEnable(GL_CLIP_PLANE0);
glClipPlane(GL_CLIP_PLANE0, eqr);
glDisable(GL_CLIP_PLANE0);
around the push and pop matrix. But it removed the reflection at the same time when I used it. Does anybody know where’s the mistake please???
Thanks very much!!!