深度传递模板阴影与旧gl

时间:2017-01-08 16:00:56

标签: c opengl

我正在尝试实现深度传递模板阴影。 我现在正在工作的项目是古老的gl,所以我不能使用着色器等。 我找到了一个很棒的example,我试图转移到我的项目中。 但相反深度失败我现在尝试深度传递阴影。

    glCullFace(GL_FRONT);
    glStencilFunc(GL_ALWAYS, 0x0, 0xff);
    glStencilOp(GL_KEEP, GL_KEEP, GL_DECR);-->Decrease the stencil buffer 
    render_surface_shadow_volume(c->surfaces[i], c->position, light_pos);

    glCullFace(GL_BACK);
    glStencilFunc(GL_ALWAYS, 0x0, 0xff);
    glStencilOp(GL_KEEP, GL_KEEP, GL_INCR); ---> Increase the stencil buffer 
    render_surface_shadow_volume(c->surfaces[i], c->position, light_pos);

以下使用模板测试来替换不等于零的碎片。

    glStencilFunc(GL_NOTEQUAL, 0x0, 0xff);
    glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE);
    draw_shadow();

我的第一个问题原因  glStencilOp(GL_REPLACE, GL_REPLACE GL_REPLACE );为什么最后两个参数是GL_REPLACE而不是GL_KEEP不应该全部关于模板故障而不是深度失败?

更重要的问题是我拥有的阴影体积甚至我想要的只是表面上的阴影。 having a shadow volume

0 个答案:

没有答案