您的位置:首页 > 编程语言 > Lua

2dx-lua精灵置灰

2016-05-10 17:23 411 查看
--直接上代码:

local sprite = cc.Sprite:create("icon/skill/30007.png")

sprite:setPosition(100, 200)

self:addChild(sprite)

self:graySprite(sprite)

----------------------

function graySprite(_sprite)

local program = cc.GLProgram:create("gray.vsh", "gray.fsh")

program:bindAttribLocation(cc.ATTRIBUTE_NAME_POSITION, cc.VERTEX_ATTRIB_POSITION)

program:bindAttribLocation(cc.ATTRIBUTE_NAME_COLOR, cc.VERTEX_ATTRIB_COLOR)

program:bindAttribLocation(cc.ATTRIBUTE_NAME_TEX_COORD, cc.VERTEX_ATTRIB_TEX_COORDS)

program:link()

program:updateUniforms()

GrayProgram = program

_sprite(GrayProgram)

end

-----其中gray.sh和gray.sh是两个文件,里面加入如下代码:

--gray.vsh

attribute vec4 a_position;

attribute vec2 a_texCoord;

attribute vec4 a_color;

varying vec4 v_fragmentColor;

varying vec2 v_texCoord;

void main()

{

gl_Position = CC_PMatrix * a_position;

v_fragmentColor = a_color;

v_texCoord = a_texCoord;

}

--gray.fsh

varying vec4 v_fragmentColor;

varying vec2 v_texCoord;

//uniform sampler2D CC_Texture0;

void main()

{

vec4 v_orColor = v_fragmentColor *
texture2D(CC_Texture0, v_texCoord);

float gray = dot(v_orColor.rgb,vec3(0.299,0.587,
0.114));

gl_FragColor =
vec4(gray, gray, gray, v_orColor.a);

}

------备注:注掉那句是因为加上会报错

cocos2d: ERROR: 0:18: Regular non-array variable 'CC_Texture0' may not be redeclared

cocos2d: ERROR: Failed to compile fragment shader
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  2dx lua sprite 精灵 置灰