我正在尝试读取gl_FragCoord x,y和z值,并根据它们为三角形着色。问题是我的三角形总是呈黄色。

据我了解,gl_FragCoord是一个向下传递到像素着色器以描述“播放头”位置的变量,因此我希望gl_FragCoord.x / y / z值发生变化,并且我的三角形将通过某种方式渲染渐变,但呈现黄色。我想念什么?

顶点着色器:

uniform    mat4        uMVPMatrix;
attribute  vec4        vPosition;

void main()
{
    gl_Position = uMVPMatrix * vPosition;
}


像素着色器:

precision mediump float ;

void main()
{
    gl_FragColor = vec4( gl_FragCoord.x, gl_FragCoord.y, gl_FragCoord.z, 1 );
}

最佳答案

gl_FragCoord给出片段在窗口像素坐标中的位置(窗口,而不是视口!)。这意味着,除了最左下方的像素外,该值均为>= 1

另一方面,gl_FragColor期望浮点值在0…1范围内,并裁剪超出该范围的值。

你把剩下的都弄明白了。

09-09 19:47