gl_FragCoord 值始终保持静态

use*_*847 3 android opengl-es glsl

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

据我所知,gl_FragCoord 是一个传递给像素着色器以描述“播放头”位置的变量,所以我期待 gl_FragCoord.x/y/z 值发生变化,我的三角形将被渲染为某种渐变,但它呈现黄色。我错过了什么?

顶点着色器:

uniform    mat4        uMVPMatrix;
attribute  vec4        vPosition;

void main() 
{
    gl_Position = uMVPMatrix * vPosition;
}
Run Code Online (Sandbox Code Playgroud)

像素着色器:

precision mediump float ;        

void main() 
{
    gl_FragColor = vec4( gl_FragCoord.x, gl_FragCoord.y, gl_FragCoord.z, 1 );
}
Run Code Online (Sandbox Code Playgroud)

dat*_*olf 5

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

另一方面,gl_FragColor 期望在 0…1 范围内的浮点值并剪辑该范围之外的值。

剩下的你自己想办法。