Cocos2dx-JS 在 Sprite 上使用 Shader

//例如如下一个简单的变色程序,蓝色变红色 ,js 代码:
        var url = "res/sb.jpg";
        var sp = new cc.Sprite(url);
        sp.setAnchorPoint(0,0);
        this.addChild(sp);
        this.shader = new cc.GLProgram("res/Shaders/example_Flower.vsh", "res/Shaders/example_Flower.fsh");
        this.shader.retain();
        this.shader.link();
        this.shader.updateUniforms();
        var program = this.shader.getProgram();
        sp.shaderProgram = this.shader;


VertexShader

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_PMatrix * a_position;
    v_fragmentColor = a_color;
    v_texCoord = a_texCoord;
}


FragmentShader

#ifdef GL_ES
    precision lowp float;
#endif

varying vec4 v_fragmentColor;
varying vec2 v_texCoord;

void main()
{
    gl_FragColor = v_fragmentColor * texture2D(CC_Texture0, v_texCoord);
    float r = gl_FragColor[0];
    float g = gl_FragColor[1];
    float b = gl_FragColor[2];
    float a = gl_FragColor[3];
    if(b > r && b > g && b > (r*0.5 + g*0.5)*1.5) {
        gl_FragColor[0] = b;
        gl_FragColor[2] = r;
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值