您的位置:首页 > 移动开发 > Cocos引擎

Cocos2dx-JS 在 Sprite 上使用 Shader

2016-01-19 15:34 766 查看
//例如如下一个简单的变色程序,蓝色变红色 ,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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cocos2dx js shader