使用shader 出现错误,求指点

对一个精灵做灰度效果,结果一直是黑色,由于对shader不懂,求各位大小指点。谢谢

function graySprite(sprite)

local pProgram = cc.GLProgram:create("shader/ccShader_PositionTextureColor.vsh", "shader/alphaSprite.fsh")
pProgram:bindAttribLocation(cc.ATTRIBUTE_NAME_POSITION,cc.VERTEX_ATTRIB_POSITION)
pProgram:bindAttribLocation(cc.ATTRIBUTE_NAME_COLOR,cc.VERTEX_ATTRIB_COLOR)
pProgram:bindAttribLocation(cc.ATTRIBUTE_NAME_TEX_COORD,cc.VERTEX_ATTRIB_TEX_COORD)
pProgram:link()
pProgram:updateUniforms()
sprite:setGLProgram(pProgram)

end


ccShader_PositionTextureColor.vsh 文件内容

attribute vec4 a_position;
attribute vec2 a_texCoord;
attribute vec4 a_color;

#ifdef GL_ES
varying lowp vec4 v_fragmentColor;
varying mediump vec2 v_texCoord;
#else
varying vec4 v_fragmentColor;
varying vec2 v_texCoord;
#endif

void main()
{
gl_Position = CC_MVPMatrix * a_position;
v_fragmentColor = a_color;
v_texCoord = a_texCoord;
}


alphaSprite.fsh 文件内容

#ifdef GL_ES
precision mediump float;
#endif
varying vec2 v_texCoord;
varying vec4 v_fragmentColor;

uniform vec4 u_grayParam;

void main(void)
{
vec4 texColor = texture2D(CC_Texture0, v_texCoord);
float grey = dot(texColor.rgba, u_grayParam);
gl_FragColor = vec4(vec3(grey), texColor.a) * v_fragmentColor;

}

没有使用CustomCommand 渲染?

我也正在弄这里 为什么只有图片能变灰 widget就不能呢