代码之家  ›  专栏  ›  技术社区  ›  pailhead

使用gl.polygonoffset时为什么需要因子?

  •  0
  • pailhead  · 技术社区  · 6 年前

    我不明白 polygonOffset 使用WebGL。我经常发现自己在尝试 factor units 论据。

    我认为我得到了更一致的结果:

    gl_Position.z += someEpsilon;
    

    我知道在文档中提到了一个导数,它的行为看起来确实不同,这取决于三角形的角度。

    1 回复  |  直到 6 年前
        1
  •  2
  •   derhass    6 年前

    为什么我不能以某种方式将深度值增加一些单位,一个单位是深度缓冲区可以容纳的最小数字?

    好吧,你可以。根据 OpenGL ES 2.0 specification, section 3.5.2 "Depth Offset", page 59 ,应用的多边形偏移 o 是:

    o = m ∗ factor + r ∗ units

    在哪里?

    最小可分辨差 r 是依赖于实现的常量。它是窗口坐标的最小差别 z 有保证的价值 在整个多边形光栅化和深度缓冲区中保持不同。

    所以如果你想的话 o 要保持不变,只需设置 factor 为零,并使用适当的值 units ,即1.0。