Cocos2dx-JS 在 Sprite 上使用 Shader
2016-01-19 15:34
766 查看
//例如如下一个简单的变色程序,蓝色变红色 ,js 代码:
VertexShader
FragmentShader
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; } }
相关文章推荐
- Extjs4.0 最新最全视频教程
- Javascript中toFixed方法的改进
- 5个常见可用性错误和解决方案
- js可突破windows弹退效果代码
- JSP脚本漏洞面面观
- 使用BAT一句话命令实现快速合并JS、CSS
- js显示当前星期的起止日期的脚本
- 爆炸式的JS圆形浮动菜单特效代码
- js select常用操作控制代码
- JS实现不使用图片仿Windows右键菜单效果代码
- 从jsp发送动态图像
- 原生js结合html5制作小飞龙的简易跳球
- js 页面模块自由拖动实例
- js实现小鱼吐泡泡在页面游动特效
- js 提交和设置表单的值
- PHP VBS JS 函数 对照表
- node.js抓取并分析网页内容有无特殊内容的js文件
- PHP+JS实现大规模数据提交的方法
- 仿51JOB的地区选择效果(可选择多个地区)
- js身份证验证超强脚本