【第22期】观点:IT 行业加班,到底有没有价值?

cocos2d-js 图片灰度处理

原创 2016年08月30日 10:31:35

使用shader把图片进行灰度处理,并支持切回原色

潜在bug:如果调用两次灰度处理,则无法进行色彩还原

LayoutConfig.setWidgetEffectWithEnabled = function (widget,enable) {
    if(!widget){return;}
    widget.setTouchEnabled(enable);
    LayoutConfig.setWidgetGrayEffect(widget,!enable);
}
LayoutConfig.setWidgetGrayEffect = function (widget,enable) {
    var shader = LayoutConfig.getShaderMap(enable ? "ui_gray" : "ui_normal");
    if (widget) {
        var children = widget.getChildren();
        for (var i in children) {
            LayoutConfig.setWidgetGrayEffect(children[i], enable);
        }

        if (!widget.getString) {
            widget.setShaderProgram(shader);
        }

        if (widget.getVirtualRenderer) {
            var children = widget.getVirtualRenderer().getChildren();
            for (var i in children) {
                LayoutConfig.setWidgetGrayEffect(children[i], enable);
            }

            if (!widget.getVirtualRenderer().getString) {
                widget.getVirtualRenderer().setShaderProgram(shader);
            }
        }
    }
};
LayoutConfig.getShaderMap = function (n) {
    var _s = this._shaderMap[n];
    if (_s) {
        //cc.log("LayoutConfig.getShaderMap: " + n + " Cache");
        return _s;
    }

    var b_n = "res/shader/" + n;
    var v_n = b_n + ".vsh";
    var f_n = b_n + ".fsh";

    _s = new cc.GLProgram(v_n, f_n);
    _s.addAttribute(cc.ATTRIBUTE_NAME_POSITION, cc.VERTEX_ATTRIB_POSITION);
    _s.addAttribute(cc.ATTRIBUTE_NAME_COLOR, cc.VERTEX_ATTRIB_COLOR);
    _s.addAttribute(cc.ATTRIBUTE_NAME_TEX_COORD, cc.VERTEX_ATTRIB_TEX_COORDS);
    _s.link();
    _s.updateUniforms();

    this._shaderMap[n] = _s;

    //cc.log("LayoutConfig.getShaderMap: " + n + " New");
    return _s;
};



版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

cocos2d-js 获取网络图片cc.loader.loadImg

1.获取网络图片 var imgUrl = "http://www.cocos2d-x.org/images/logo.png";//图片地址         var self = this;    ...

Android Cocos2d实现:一个图片围绕一个圆心做圆运动

转载自:http://www.longhaiqiang.com/android-cocos2d实现:一个图片围绕一个圆心做圆运动/ 实现效果:

cocos2d-js v3.6 关于处理图片锯齿、不清楚的处理方法

1. cocos2d-js v3.6 关于处理图片锯齿、不清楚的处理方法 (1)由于cocos2d-js的main.js多了对retina屏的控制,而且默认是false,这就有可能导致画质不清楚。 c...

Cocos2d-JS事件处理机制

在很多图形用户技术中,事件处理机制一般都有三个重要的角色:事件、事件源和事件处理者。事件源是事件发生的场所,通常就是各个视图或控件,事件处理者是接收事件并对其进行处理的一段程序。事件处理机制中三个角色在Cocos2d-JS引擎事件处理机制中也有这三个角色。1、事件事件类是cc.Event,它

cocos2d js 如何动态加载外部图片

官网没有具体例子,只有看api,研究成果如下 var that = this; var url = "http://xxxxxx"; cc.l...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)