Cocos2dx 使用Shader使精灵变灰
2017-06-16 11:21
274 查看
使用方法:
gray.vsh:
gray.fsh:
原理比较简单,gl_FragColor是shader的内建变量,表示当前片段的颜色,代码中是把从采样器中(CC_Texture0)拿到的颜色值进行一个变灰处理后,最后得到的颜色值再赋值给gl_FragColor
auto spr = Sprite::create("spr.png"); auto program = CCGLProgram::createWithFilenames("gray.vsh", "gray.fsh"); //装配一个shader文件 program->link(); program->updateUniforms(); spr->setShaderProgram(program); this->addChild(spr);
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; void main(void) { vec4 c = texture2D(CC_Texture0, v_texCoord); gl_FragColor.xyz = vec3(0.2126*c.r + 0.7152*c.g + 0.0722*c.b); gl_FragColor.w = c.w; }
原理比较简单,gl_FragColor是shader的内建变量,表示当前片段的颜色,代码中是把从采样器中(CC_Texture0)拿到的颜色值进行一个变灰处理后,最后得到的颜色值再赋值给gl_FragColor
相关文章推荐
- 如何使用 Cocos2dx 来绘制异形精灵
- 【Cocos2dX(2.x)_Lua开发之三】★重要必看篇★在Lua中使用自定义精灵(Lua脚本与自创建类之间的访问)及Lua基础讲解
- Cocos2dx-JS 在 Sprite 上使用 Shader
- 在Cocos2dx 3.10中第一次使用shader
- Cocos2dx Shader 使用系列之一:OpenGL Shader Language介绍
- 【Cocos2dX(2.x)_Lua开发之三】★重要必看篇★在Lua中使用自定义精灵(Lua脚本与自创建类之间的访问)及Lua基础讲解
- quick3.3final精灵使用shader心得记录
- cocos2dx创建精灵的五种方法(包括使用图片名获取图片)
- cocos2dx 如何制作一个使用世界坐标系的精灵
- cocos2dx(3.X)中使用shader
- cocos2dx创建精灵的五种方法(包括使用图片名获取图片)
- 【Cocos2dX(2.x)_Lua开发之三】在Lua中使用自定义精灵(Lua脚本与自创建类之间的访问)及Lua基础讲解
- Cocos2dx - CCSprite使用 shader生成自己想要的颜色的图片
- [iuud8]基于cocos2dx3.2精灵变灰的shader效果
- Cocos2dx - CCSprite使用 shader生成自己想要的颜色的图片
- cocos2dx创建精灵的五种方法(包括使用图片名获取图片)
- Cocos2dx - CCSprite使用 shader生成自己想要的颜色的图片
- 【Cocos2dX(2.x)_Lua开发之三】★重要必看篇★在Lua中使用自定义精灵(Lua脚本与自创建类之间的访问)及Lua基础讲解
- cocos2dx中 Node 在shader使用v_texCoord
- 【Unity&2.5D&Shader】2D2.5D精灵实时阴影怎么使用