在cocos 3.17 中使用renderTexture截图,在web上正常,但在真机上截图不完整还被放大
js版没有看过,研究过c++的。renderTexture有自动渲染和手动两种,自动问题很大,基本都是渲染矩阵重复乘了,偏移和缩放等等都有问题,建议手动。如果不是这个问题建议贴代码。
ps:cocos 3.+的渲染树是有问题的,这些效果做起来很累,期待4.0
代码如下:这个在web上正常的,但到微信小游戏中截屏就截不全,整个图片还被放大了
var width = cc.winSize.width
var height = cc.winSize.height
//创建renderTexture
var rt = cc.RenderTexture.create(width, height, cc.Texture2D.PIXEL_FORMAT_RGBA8888,gl.DEPTH24_STENCIL8_OES);
//使用render截图
//rt.beginWithClear(0,0,0,0)
rt.begin();
//将需要渲染节点渲染
node.visit();
rt.end();
var spr = new cc.Sprite(rt.getSprite().getTexture());
node.getParent().addChild(spr);
node.setVisible(false);
spr.setFlippedY(true)
spr.x = width / 2;
spr.y = height / 2;
这个手动截屏渲染代码应该是没有问题的,应该是本身引擎的毛病,我也遇到过,不过和你的情形有点不同,我最后换个方式略过了。RenderTexture的截屏范围并不是理解中的那样,如果渲染的节点本身有变换或者裁剪,可能会有问题
mark
如果节点里有裁剪的节点,在做end这一步操作的时候,要把屏幕缩放值设置为1,不然裁剪区域会出错。这个bug是真恶心。
你那个是截图是怎么处理的?我自己写的在苹果手机是正常的, 在安卓手机上就变暗了许多,不知道问题出在哪里!