Part of the Khronos Group
OpenGL.org

The Industry's Foundation for High Performance Graphics

from games to virtual reality, mobile phones to supercomputers

Results 1 to 3 of 3

Thread: shadow volumes

  1. #1
    Intern Newbie
    Join Date
    Mar 2003
    Location
    Austria
    Posts
    35

    shadow volumes

    i´m implementing shadow volumes. but the problem is the shadows don´t appear.

    first i create the shadow volume which is stored in dList.

    Insel is my terrain on which the shadow should appear.

    then i use the following code snippet to render the scence.

    does anybody know what i´m making wrong?


    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);

    Insel->configRendering();
    Insel->render();
    Insel->recoverContext();

    //glColorMask(GL_FALSE,GL_FALSE,GL_FALSE,GL_FALSE);
    //glDepthMask(GL_FALSE);

    glEnable(GL_STENCIL_TEST);
    //glDepthMask(GL_FALSE);
    glStencilFunc(GL_ALWAYS,0,0);

    glStencilOp(GL_KEEP,GL_KEEP,GL_INCR);
    glCullFace(GL_BACK);
    glCallList(dList);

    glStencilOp(GL_KEEP,GL_KEEP,GL_DECR);
    glCullFace(GL_FRONT);
    glCallList(dList);

    glDepthMask(GL_TRUE);
    glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_TRUE);
    //glCullFace(GL_BACK);
    glDepthFunc(GL_LESS);
    glStencilOp(GL_KEEP,GL_KEEP,GL_KEEP);

    //glStencilFunc(GL_EQUAL,1,1);
    glDisable(GL_LIGHTING);

    /*
    glEnableClientState(GL_VERTEX_ARRAY);
    glVertexPointer(3,GL_FLOAT,0,Insel->terrainData);
    glDisable(GL_TEXTURE_2D);
    glColor3f(0.0f,0.0f,0.0f);
    for (int i=0;i<Insel->width-1;i++)
    {
    glDrawElements(GL_TRIANGLE_STRIP,Insel->width*2,GL_UNSIGNED_INT,Insel->indexes+i*Insel->width*2);
    }
    glDisableClientState(GL_VERTEX_ARRAY);
    Insel->configRendering();
    Insel->render();
    Insel->recoverContext();*/

    glStencilFunc(GL_EQUAL,0,1);

    Insel->configRendering();
    Insel->render();
    Insel->recoverContext();

    glDepthFunc(GL_LESS);
    glDisable(GL_STENCIL_TEST);

    i`m glad about every suggestion!

    Poons

  2. #2
    Super Moderator OpenGL Guru dorbie's Avatar
    Join Date
    Jul 2000
    Location
    Bay Area, CA, USA
    Posts
    4,388

    Re: shadow volumes

    You should disable depth and color writes when drawing the stencil volume (you have the right calls there but it's commented out). If you don't disable depth writes on the volume the second terrain pass and parts of your stencil volume rendering will fail the depth test. By definition all fragments inside the shadow volume would fail the depth test and no shadowing will occur.

    Apart from that it looks OK, but I just skimmed.

    [This message has been edited by dorbie (edited 05-08-2003).]

  3. #3
    Intern Newbie
    Join Date
    Mar 2003
    Location
    Austria
    Posts
    35

    Re: shadow volumes

    i have commented it out to see if the shadow volume is correct. i have forgotten to comment it in but when i disable it, the shadow does not appear.

    thanks, for looking over the code.

    Poons

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •