代码之家  ›  专栏  ›  技术社区  ›  Daniel Pinto Coutinho

访问碎片着色器内的重心坐标

  •  6
  • Daniel Pinto Coutinho  · 技术社区  · 11 年前

    在片段着色器中,值是自然插值的。例如,如果我有三个顶点,每个顶点都有一种颜色,第一个顶点为红色,第二个顶点为绿色,第三个顶点为蓝色。如果我用它们渲染一个三角形,预期的结果是 triangle .

    显然,OpenGL计算三角形内每个点的插值系数(a,b,c)。是否有任何方法可以显式访问这些值,或者我需要计算三个顶点的碎片坐标,并自己找到该点的重心坐标? 我知道这是完全可行的,但我认为OpenGL可以提供一些东西。

    2 回复  |  直到 11 年前
        1
  •  11
  •   Reto Koradi    11 年前

    我不知道有任何内置的重心坐标。但不需要在片段着色器中进行任何计算。

    可以将三角形顶点的重心坐标作为属性传递到顶点着色器中。3个顶点的属性值简单地为(1,0,0)、(0,1,0)和(0,0,1)。然后将属性值传递给片段着色器(使用 varying 传统OpenGL中的变量, out 在顶点着色器和 in 在核心OpenGL中的片段着色器中)。然后,碎片着色器接收的变量的值就是碎片的重心坐标。

    这非常类似于通常将纹理坐标传递到顶点着色器,然后将其传递到片段着色器,片段着色器接收插值。

        2
  •  2
  •   Anton Duzenko    5 年前
    推荐文章