转自http://www.waitingfy.com/archives/1741

1.为了节约一张图引发的Shader使用 

我们注意到这个游戏当中经常使用一些按钮,美术会给两张图,一张稍微暗点,表示按下的状态。但是这样的图一多起来,就比较占用资源。Sprite更改颜色无法表现出这样的效果。想起来Shader可以。

2.变灰是比较常见

Cocos2d-x中有一个变灰的例子,这里就列出shader代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
#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;
}

那几个系数相加会等于1,不同的调整会有不同的效果。效果图:

第一张就是变灰的效果图,但是离第3张的效果还有距离啊。

3.变暗的原理

搞过图形学的应该会比较容易知道,我也是搜索了才知道,我们知道白色是1或者255,黑色是0. 当一个颜色越接近0表示越接近黑色。也就是说,只要把每个像素的颜色乘以一个比1小的数,就会有变暗的效果了!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#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);
    float greyNum = 0.75;
    vec4 final = c;
    final.r = c.r * greyNum;
    final.g = c.g * greyNum;
    final.b = c.b * greyNum;
  
    gl_FragColor = final;
}

我这里设置的是0.75

最终效果图:

已经非常接近第3张我们需要的目标图了。这样就可以省下一半的图片了。不知道渲染速度会不会慢。

来源网址:http://www.waitingfy.com/archives/1741

最新文章

  1. sqlalchemy(一)基本操作
  2. Revolving Digits(hdu 4333)
  3. 深入理解JPEG图像格式Jphide隐写
  4. Android官方数据绑定框架DataBinding
  5. 查找Safari相关迹证
  6. Jquery 遍历表单 AJAX提交
  7. WIN7中因为服务进程是运行在session0下面的~~第一个登录的用户session为1(WTSGetActiveConsoleSessionId取得session的Id,OpenProcessToken取得进程的令牌)
  8. 工作经常使用的SQL整理,实战篇(二)
  9. 怎样把echarts图表做成响应式的
  10. 关于EasyUI中DataGrid控件的一些使用方法总结
  11. 【Unity3D与23种设计模式】工厂方法模式(Factory Method)
  12. bzoj4447[Scoi2015]小凸解密码
  13. 亲密接触Redis-第一天
  14. P3805 【模板】manacher算法
  15. spring cloud学习(五) 配置中心
  16. XmlSerializer的GenerateTempAssembly性能问题例外
  17. spring cloud kubernetes之serviceaccount permisson报错
  18. 关于html中的doctype的重要性的认知以及IE的浏览器模式与文档模式
  19. oracle日期合并 分别用逗号或者分号隔开
  20. VUE递归树形目录(vue递归组件)的使用

热门文章

  1. vim安装不上
  2. 【NoSql】Redis
  3. centos7 install 安装mysql
  4. DDR控制
  5. yii2 pjax使用
  6. 如何取消MSSQL自带智能提示步骤,使用第三方智能提示插件
  7. perl 引用
  8. CDN系统对网站的性能有极大的提升
  9. vs2010 A selected drive is no longer valid
  10. JavaScript 常用函数总结