Cocos2dx 变暗和变灰

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

变灰较常见

Cocos2d 中有一个变灰的例子,这里就列出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,不同的调整会有不同的效果。效果图:

第一张就是变灰的效果图

变暗的原理

搞过图形学的应该会比较容易知道,我也是搜索了才知道,我们知道白色是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

最终效果图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值