cocos2d-x lua 3.10 在lua层使用RenderTexture复制纹理并绘制出图片<2>

上篇原文:http://www.jianshu.com/p/bc16bbb3f8fd
这里对图片锚点做出改变 导致不需要设置w/2 h/2 这样的坐标


local MainScene = class("MainScene", cc.load("mvc").ViewBase)

--MainScene.RESOURCE_FILENAME = "MainScene.csb"
function MainScene:onCreate()
    printf("resource node = %s", tostring(self:getResourceNode()))

    -- local bgColor = cc.LayerColor:create(cc.c4b(255,0,0,255));
    -- bgColor:setContentSize(50, 50)
    -- self:addChild(bgColor)
    -- bgColor:ignoreAnchorPointForPosition(false)
    -- bgColor:setAnchorPoint(0.5, 0.5)
    
    --绘制图片
    self.sprite = cc.Sprite:create("red2.png")
    self.sprite:setPosition(50, 50)
    self:addChild(self.sprite, 1)
    local size = self.sprite:getContentSize() -- 返回size
    self.sprite:setAnchorPoint(0, 0)--如果图片锚点是0的话

    --创建渲染
    local renderTexture1 = cc.RenderTexture:create(size.width, size.height, cc.TEXTURE2_D_PIXEL_FORMAT_RGB_A8888)
    -- renderTexture1:ignoreAnchorPointForPosition(false)
    -- renderTexture1:setAnchorPoint(0, 0)
    renderTexture1:begin()
    --这里可能是复制顶点数据等
    local pTempSpr = cc.Sprite:createWithSpriteFrame(self.sprite:getSpriteFrame())
    --pTempSpr:setPosition(cc.p(size.width/2, size.height/2))去掉坐标设置
    pTempSpr:setAnchorPoint(0, 0)--这里也要是0
    pTempSpr:visit()
    renderTexture1:endToLua()--这个之后必须隔帧取(或者加个定时器 当前帧取到的数据全是0)
    --renderTexture1:retain()--必须加这个 保存对象 否则下帧就被回收了 不需要了记得release

    local  photo_texture = renderTexture1:getSprite():getTexture()
    sprite_photo = cc.Sprite:createWithTexture(photo_texture)
    sprite_photo:addTo(self, 3)
    sprite_photo:setAnchorPoint(cc.p(0.5, 0.5))
    sprite_photo:setPosition(display.cx, display.cy)
end

return MainScene

cocos2d-x lua 3.10 在lua层使用RenderTexture复制纹理并绘制出图片<2>_第1张图片
image.png

你可能感兴趣的:(cocos2d-x lua 3.10 在lua层使用RenderTexture复制纹理并绘制出图片<2>)