Dan*_*nho 4 opengl glsl fragment-shader
在片段着色器中,值是自然插值的.例如,如果我有三个顶点,每个顶点都有一个颜色,第一个顶点是红色,第二个顶点是绿色,第三个是蓝色.如果我用它们渲染一个三角形,预期的结果就是普通的 三角形.
显然,OpenGL计算三角形内每个点的插值系数(a,b,c).有没有办法明确访问这些值,还是我需要计算三个顶点的片段坐标,并自己找到该点的重心坐标?我知道这是完全可行的,但我认为OpenGL可以提供一些东西.
我不知道任何内置的重心坐标.但是你不应该在片段着色器中进行任何计算.
您可以将三角形顶点的重心坐标作为属性传递到顶点着色器中.3个顶点的属性值只是(1,0,0),(0,1,0)和(0,0,1).然后将属性值传递给片段着色器(使用varying传统OpenGL中的变量,out顶点着色器和in核心OpenGL中的片段着色器).然后,片段着色器接收的变量的值是片段的重心坐标.
这与通常将纹理坐标传递到顶点着色器的方式非常相似,并且它们将它们传递给片段着色器,片段着色器接收插值.