我正在尝试读取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范围内,并裁剪超出该范围的值。
你把剩下的都弄明白了。