用Armature渲染RenderTexture位置不正确有什么解决办法?

用RenderTexture,如果是个sprite,调用visit()后,将RenderTexture

auto callback = &](RenderTexture* rt, const std::string& path)
{
auto sprite = Sprite::create(path);
this->addChild(sprite);
sprite->setScale(0.9f);
sprite->setPosition(Vec2(100, 100));

};

_target->saveToFile(png, Image::Format::PNG, true, callback);

这样位置是正确的,会将新的图片显示到100,100位置。
但是如果换成Armature,无论如何setPosition,位置都是0,0。也就是在最左下角。这是什么原因呢?

试验了下,大致知道了什么原因,但是仍有疑惑,我是自定义了个精灵,继承Layer,然后在里面添加了Armature,这样导致Armature.visit()时候,位置错误。
但是,如果我直接Layer.visit()就不会有问题。

这个精灵类包含其它的东西(各种特效,阴影),我不能直接Visit(),我试验了下,在RenderTexture begin() 前,先Armature->setPosition(1,1);
然后end()后改回 0,0。这样Armature.visit() 就能正确渲染。

不过我还是没能理解这坐标到底是怎么计算的,因为我无论 begin() 前,将Armature->setPosition(1,1) 也好, Armature->setPosition(400,400); 也好,最后从RenderTexture 获取到图片后,加载到屏幕上的位置是一样的。