(转)Cocos2dx-JS 在 Sprite 上使用 Shader
Posted 程序喵星人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(转)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;
-
-
-
varying lowp vec4 v_fragmentColor;
-
varying mediump vec2 v_texCoord;
-
-
varying vec4 v_fragmentColor;
-
varying vec2 v_texCoord;
-
-
-
void main()
-
{
-
gl_Position = CC_PMatrix * a_position;
-
v_fragmentColor = a_color;
-
v_texCoord = a_texCoord;
-
}
FragmentShader
-
-
precision lowp float;
-
-
-
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;
-
}
-
}原文地址:https://blog.csdn.net/jiexiaopei_2004/article/details/50542860
以上是关于(转)Cocos2dx-JS 在 Sprite 上使用 Shader的主要内容,如果未能解决你的问题,请参考以下文章