求问Sprite3D为啥不能画在rendertexture上

使用RenderTexture,可以把2D Sprite画上去,但是3D Sprite还是画在主场景上,画不到RenderTexture上。求解答。

代码如下:

auto _texture = CCRenderTexture::create(512, 512, Texture2D::PixelFormat::RGBA8888);
_texture->retain();

auto _sp3D = Sprite3D::create(“test.c3b”);
_sp3D ->setPosition(100, 100);
_sp3D->retain();

auto _sp2D = Sprite::create(“test.png”);
_sp2D ->setPosition(100, 100);
_sp2D->retain();

_texture->beginWithClear(0.f, 0.f, 0.f, 0.f);
_sp3D->visit(render, transform, flags);
_sp2D->visit(render, transform, flags);
_texture->end();

_texture->saveToFile(“texture.png”);

最后保存出来的图片上有test.png,但是没有模型.

Mark…

因为Texture2D内部的渲染命令属于2d命令,Sprite3D的渲染命令属于3d命令,两种命令不在同一个队列中,所以导致调用顺序不正确,3d命令会被先执行,也就是说Sprite3D先渲染了一次,然后Texture2D才开始绑定新的FrameBuffer,但是正确处理这个顺序关系之后,我还遇到了显示效果不正确的问题,还未找到解决方法。