cocos2dx-lua实现遮罩效果

cocos2dx-lua实现遮罩效果,第1张

概述工作需要实现遮罩效果,之前quick-cocos2dx 2.0的实现版本(纯象素在cpu中的 *** 作所以效率低),升级到quick cocos2dx 3.3版本后,shader功能有有强,所以利用shader实现遮罩效果。 quick coco2dx 2.2.6实现方法: function BasicMovie:buildMasked(__mask,__pic) local __mb = c

工作需要实现遮罩效果,之前quick-cocos2dx 2.0的实现版本(纯象素在cpu中的 *** 作所以效率低),升级到quick cocos2dx 3.3版本后,shader功能有有强,所以利用shader实现遮罩效果。

quick coco2dx 2.2.6实现方法:

    function BasicMovIE:buildMasked(__mask,__pic) local __mb = ccBlendFunc() __mb.src = GL_ONE __mb.dst = GL_ZERO local __pb = ccBlendFunc() __pb.src = GL_DST_Alpha __pb.dst = GL_ZERO local __maskSprite = display.newSprite(__mask):align(display.left_BottOM,0) __maskSprite:setBlendFunc(__mb) local __picSprite = display.newSprite(__pic):align(display.left_BottOM,0) __picSprite:setBlendFunc(__pb) local __maskSize = __maskSprite:getContentSize() local __canva = CCRenderTexture:create(__maskSize.wIDth,__maskSize.height) __canva:begin() __maskSprite:visit() __picSprite:visit() __canva:endTolua()     -- self:setScaleX(-1)     self:setDirc(self.dirc,false)     self:setFlipY(true)     self:setTexture(__canva:getSprite():getTexture())    end


该方法是官方提供的方法,是通过调用node的visit进行绘图的,自然效率低。

网上资料实现方法:

#ifdef GL_ESprecision mediump float;#endifvarying vec4 v_fragmentcolor;varying vec2 v_texCoord;uniform sampler2D u_mask_texture;voID main() {vec4 mask_Fragcolor = texture2D(u_mask_texture,v_texCoord);    gl_Fragcolor = v_fragmentcolor*texture2D(CC_Texture0,v_texCoord);    gl_Fragcolor.a = mask_Fragcolor.r;}


直接拿来用是有问题,并没有处理透明部分,自已改进方法如下:

#ifdef GL_ESprecision mediump float;#endifvarying vec4 v_fragmentcolor;varying vec2 v_texCoord;uniform sampler2D u_mask_texture;voID main() {    vec4 mask_Fragcolor = texture2D(u_mask_texture,v_texCoord);    if (mask_Fragcolor.a <= 0)    {        mask_Fragcolor.a=0;        gl_Fragcolor = mask_Fragcolor;        return;    }    gl_Fragcolor = v_fragmentcolor*texture2D(CC_Texture0,v_texCoord);}
总结

以上是内存溢出为你收集整理的cocos2dx-lua实现遮罩效果全部内容,希望文章能够帮你解决cocos2dx-lua实现遮罩效果所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1082821.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存