Cocos2d-x   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Cocos2d-x 3.x Shader变暗和变灰大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

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

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

2.变灰是比较常见

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

1
2
3
4
5
6
7
8
9
10
11
12
13
@H_944_49@
#ifdefGL_ES
precisionmediump float ;
#endif
@H_607_66@
varyingvec4v_fragmentColor;
varyingvec2v_texCoord;
void @H_182_55@main( )
{
vec4c=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小的数,就会有变暗的效果了!

13
14
15
16
17
18
greyNum=0.75;
vec4final=c;
final.r=c.r*greyNum;
final.g=c.g*greyNum;
final.b=c.b*greyNum;
gl_FragColor=final;
}

我这里设置的是0.75

最终效果图:

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

大佬总结

以上是大佬教程为你收集整理的Cocos2d-x 3.x Shader变暗和变灰全部内容,希望文章能够帮你解决Cocos2d-x 3.x Shader变暗和变灰所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。