解决方案 »

  1.   

    zbuffer精度不够,在和深度图比较的时候加上个偏移量
      

  2.   

    1 添加个偏移值
    2 换种比较思路,比如用esm:
        float c = 4.0;//自己用ui改改c试试
        float d = texture2D(DepthMap, depth.xy);
        shadow = clamp(exp(-c * (depth.z - d)), 0.0, 1.0);http://devmaster.net/posts/3002/shader-effects-shadow-mapping
      

  3.   

    多谢各位了,后来查找原因了,是因为我在第一步渲染的时候没有剔除掉前表面。加上了下面几句话就好了。glEnable(GL_CULL_FACE);
    glFrontFace(GL_CCW);
    glCullFace(GL_FRONT);