cocos2d-js 图片灰度处理
发布时间:2020-12-14 17:11:13 所属栏目:百科 来源:网络整理
导读:使用shader把图片进行灰度处理,并支持切回原色 潜在bug:如果调用两次灰度处理,则无法进行色彩还原 LayoutConfig.setWidgetEffectWithEnabled = function (widget,enable) { if(!widget){return;} widget.setTouchEnabled(enable); LayoutConfig.setWidget
使用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; }; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |