根据位置改变颜色

时间:2016-01-25 15:31:24

标签: android opengl-es opengl-es-2.0

我想绘制一个简单的方形并动态更改颜色,使其在中心最亮,边框最暗。

然而,当我渲染时,我看不到任何东西。

这是我的顶点着色器:

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);
}

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,而不是自己进行距离计算。