博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cocos2d 3.X Shader 变暗和变灰
阅读量:6337 次
发布时间:2019-06-22

本文共 933 字,大约阅读时间需要 3 分钟。

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

我们注意到这个游戏其中常常使用一些button。美术会给两张图。一张略微暗点,表示按下的状态。

可是这种图一多起来。就比較占用资源。Sprite更改颜色无法表现出这种效果。想起来Shader能够。

2.变灰是比較常见

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

#ifdef GL_ESprecision mediump float;#endifvarying 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.变暗的原理

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

#ifdef GL_ESprecision mediump float;#endifvarying 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张我们须要的目标图了。这样就能够省下一半的图片了。不知道渲染速度会不会慢。

你可能感兴趣的文章
IP_VFR-4-FRAG_TABLE_OVERFLOW【cisco设备报错】碎片***
查看>>
Codeforces Round #256 (Div. 2) D. Multiplication Table 【二分】
查看>>
ARM汇编指令格式
查看>>
HDU-2044-一只小蜜蜂
查看>>
HDU-1394-Minimum Inversion Number
查看>>
df -h 卡住
查看>>
[转] createObjectURL方法 实现本地图片预览
查看>>
JavaScript—DOM编程核心.
查看>>
JavaScript碎片
查看>>
Bootstrap-下拉菜单
查看>>
soapUi 接口测试
查看>>
【c学习-12】
查看>>
工作中MySql的了解到的小技巧
查看>>
loadrunner-2-12日志解析
查看>>
C# Memcached缓存
查看>>
iOS开发NSLayoutConstraint代码自动布局
查看>>
正则表达式
查看>>
mysql [ERROR] Can't create IP socket: Permission denied
查看>>
PBRT笔记(4)——颜色和辐射度
查看>>
CustomView的手势缩放总结
查看>>