工作需要实现遮罩效果,之前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, 0)
__maskSprite:setBlendFunc(__mb)
local __picSprite = display.newSprite(__pic):align(display.LEFT_BOTTOM, 0, 0)
__picSprite:setBlendFunc(__pb)
local __maskSize = __maskSprite:getContentSize()
local __canva = CCRenderTexture:create(__maskSize.width,__maskSize.height)