cocos2d 3.X Shader 变暗和变灰
2015-07-20 10:27
337 查看
转自http://www.waitingfy.com/archives/1741
1.为了节约一张图引发的Shader使用
我们注意到这个游戏当中经常使用一些按钮,美术会给两张图,一张稍微暗点,表示按下的状态。但是这样的图一多起来,就比较占用资源。Sprite更改颜色无法表现出这样的效果。想起来Shader可以。
2.变灰是比较常见
Cocos2d-x中有一个变灰的例子,这里就列出shader代码:
那几个系数相加会等于1,不同的调整会有不同的效果。效果图:
![](http://api.cocoachina.com/uploads/20150717/1437127837761883.jpg)
第一张就是变灰的效果图,但是离第3张的效果还有距离啊。
3.变暗的原理
搞过图形学的应该会比较容易知道,我也是搜索了才知道,我们知道白色是1或者255,黑色是0. 当一个颜色越接近0表示越接近黑色。也就是说,只要把每个像素的颜色乘以一个比1小的数,就会有变暗的效果了!
我这里设置的是0.75
最终效果图:
![](http://api.cocoachina.com/uploads/20150717/1437127865694577.jpg)
已经非常接近第3张我们需要的目标图了。这样就可以省下一半的图片了。不知道渲染速度会不会慢。
来源网址:http://www.waitingfy.com/archives/1741
1.为了节约一张图引发的Shader使用
我们注意到这个游戏当中经常使用一些按钮,美术会给两张图,一张稍微暗点,表示按下的状态。但是这样的图一多起来,就比较占用资源。Sprite更改颜色无法表现出这样的效果。想起来Shader可以。
2.变灰是比较常见
Cocos2d-x中有一个变灰的例子,这里就列出shader代码:
![](http://api.cocoachina.com/uploads/20150717/1437127837761883.jpg)
第一张就是变灰的效果图,但是离第3张的效果还有距离啊。
3.变暗的原理
搞过图形学的应该会比较容易知道,我也是搜索了才知道,我们知道白色是1或者255,黑色是0. 当一个颜色越接近0表示越接近黑色。也就是说,只要把每个像素的颜色乘以一个比1小的数,就会有变暗的效果了!
最终效果图:
![](http://api.cocoachina.com/uploads/20150717/1437127865694577.jpg)
已经非常接近第3张我们需要的目标图了。这样就可以省下一半的图片了。不知道渲染速度会不会慢。
来源网址:http://www.waitingfy.com/archives/1741
相关文章推荐
- cocos2dx APP图标文件更改(xcoder上传Archive ITMS-90032错误)
- cocos2d-x百分比读取进度及资源加载
- CREATE_FUNC
- cocos2d-x 3.2 它 2048 —— 第三
- 基于cocos2dx-js开发的仿《英雄难过棍子关》
- 【cocos2d-js公文】十八、Cocos2d-JS v3.0物业风格API
- 记录一下cocos2d-x——开发环境安装
- 我对自己提的几个关于cocos2dx的几个问题
- 3.cocos2dx它Menu,由menu为了实现场景切换
- Cocos2d-x使用UserDefault数据持久化实例
- quick cocos工程编译到手机上
- 记录一下cocos2d-x——开发环境安装
- cocos2d-x-3.1.1工程创建
- Cocos2d-x 2.0 渲染到纹理深入分析
- 深入分析Cocos2d-x 2.0中的“纹理”
- Cocos2d-x中图字原理之深入分析
- [cocos2dx]抽象元素——CCAction动作类
- Cocos2d-x制作跳棋第四步:胜负判断、AI具体实现及实现特殊组合动作的小技巧
- [cocos2dx]可视元素——CCSprite精灵类
- [cocos2dx]可视元素——CCLayer图层类