我想绘制一个简单的方形并动态更改颜色,使其在中心最亮,边框最暗。
然而,当我渲染时,我看不到任何东西。
这是我的顶点着色器:
uniform mat4 u_Matrix;
attribute vec4 a_Position;
attribute vec4 a_Color;
varying vec4 v_Color;
varying vec4 pos;
void main()
{
v_Color = a_Color;
pos = u_Matrix * a_Position;
gl_Position = pos;
}
这是我的片段着色器:
precision mediump float;
varying vec4 v_Color;
varying vec4 pos;
void main()
{
float len = length(normalize(pos));
gl_FragColor = vec4(1-len , 1-len , 1-len , 1);
}
答案 0 :(得分:0)
您无法在片段着色器中引用gl_Position
。
将gl_Position
交给片段着色器
attribute vec4 a_Position;
varying vec4 pos;
void main()
{
pos = a_Position;
gl_Position = a_Position;
}
如果您想在窗口坐标中工作,请在片段着色器gl_FragCoord
中使用float dist = length( gl_FragCoord - viewPortCenter );
。
也可以使用更快的length
,而不是自己进行距离计算。