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

时间:2014-08-20 05:52:48

标签: opengl glsl fragment-shader

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

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

2 个答案:

答案 0 :(得分:7)

我不知道任何用于获得重心坐标的内置函数。但是你不应该在片段着色器中进行任何计算。

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

这与通常将纹理坐标传递到顶点着色器的方式非常相似,并且它们将它们传递给片段着色器,片段着色器接收插值。

答案 1 :(得分:0)