【Cocos2d-x游戏开发】彩色Sprite设置黑白,还有
2015-10-22 16:18
851 查看
很常用的功能,比如说RPG游戏里,某个角色挂了,Ta的头像变成黑白的,加了复活魔法又变回彩色的了。如果把所有图片都准备一张黑白的,又麻烦也挺占空间的。其实,图片灰阶用Cocos自带的方法就可以实现,不止如此,除了灰阶还有各种其他效果,甚至完全通过参数调整自己想要的都可以。
方法如下:
里面的文件gray.fsh是可以自己编辑的,直接用记事本打开即可,里面的内容是这样的:
若要知道每个参数的含义,可以看这个帖子http://blog.sina.com.cn/s/blog_923fdd9b0101ew6e.html
另外,Cocos的示例程序里有好多已经编辑好的.fsh文件,直接考过来用即可。变回原来色调的.fsh如下:
方法如下:
auto fileUtiles = FileUtils::getInstance(); auto fragmentGrayFullPath = fileUtiles->fullPathForFilename("gray.fsh"); auto fragSource = fileUtiles->getStringFromFile(fragmentGrayFullPath); auto glprogram = GLProgram::createWithByteArrays(ccPositionTextureColor_noMVP_vert, fragSource.c_str()); grayGLProgrameState = GLProgramState::getOrCreateWithGLProgram(glprogram); grayGLProgrameState->retain(); 想要变黑白的Sprite->setGLProgramState(grayGLProgrameState);
里面的文件gray.fsh是可以自己编辑的,直接用记事本打开即可,里面的内容是这样的:
#ifdef GL_ES precision mediump float; #endif 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; }
若要知道每个参数的含义,可以看这个帖子http://blog.sina.com.cn/s/blog_923fdd9b0101ew6e.html
另外,Cocos的示例程序里有好多已经编辑好的.fsh文件,直接考过来用即可。变回原来色调的.fsh如下:
#ifdef GL_ES precision mediump float; #endif varying vec4 v_fragmentColor; varying vec2 v_texCoord; void main(void) { gl_FragColor = texture2D(CC_Texture0, v_texCoord); }
相关文章推荐
- cocos2d-x 3.0 开发环境搭建(win7/win8)
- COCOS2DX3.0的3种触摸响应机制
- 程序员需要有多懒 ?- cocos2d-x 数学函数、常用宏粗整理 - by Glede
- cocos2dx 3.x ClippingNode裁剪图形
- cocos2d-html5 让图层阻挡下层触碰事件
- 剖析iOS开发中Cocos2d-x的内存管理相关操作
- cocos2d-js项目发布
- Cocos2d入门--1--初涉相关属性或代码
- Windows 7(64bits)+虚拟机运行Cocos2d-x 3.8.1 cpp-tests项目
- Windows 7(64bits)+虚拟机运行Cocos2d-x 3.8.1 cpp-tests项目
- cocos2dx JAVA,C++互相调用函数
- 关于Cocos2d-x-2.2.0的Win32和Android平台的环境配置
- Cocos2d-x-----------------------------------------------ActionManager
- Cocos2d-x 3.X, Android Studio版添加广点通广告平台
- cocos2dx 3.6 关于场景间传值(UserDefault)、本地存储的基本方法(tinyxml2)
- 对Cocos2d-JS程序的简单剖析
- Cocos2d-x 2.x android 集成admob广告(三)banner+interstitial
- cocos如何在cmd里创建工程
- Cocos2d-JS项目结构介绍
- 小小菜之Cocos2d-x游戏开发旅程——项目实例:飞机大战(5)