RenderTexture 相机烘培,有一个像素的黑边

双线性插值纹理采样问题,把烘焙相机 backgroundColor 设置为和画布一样的颜色但透明度为 0, (255, 255, 255, 0),ClearFlags 设置 COLOR,先 render 一次,这样也有边,但是因为和画布一样颜色,所以看不太出来。

大佬能提供下源码嘛?我这边试了好像还是不行的

rendertexture 设置预乘。用来显示的 cc.Sprite 设置srcBlend 为 ONE。

        let rt = new cc.RenderTexture();
        rt.initWithSize(this.node.width, this.node.height, cc.RenderTexture.DepthStencilFormat.RB_FMT_D24S8);
        rt.setPremultiplyAlpha(true);

        this.gameFace.srcBlendFactor = cc.macro.BlendFactor.ONE;

好的,大佬,我试试

看起来烘焙之后没有那么高清。

台风天,顶顶顶,大佬们有没其他方案?

同问 顶一下

相机烘焙出来的 RenderTexture 是一个纹理,存在尺寸,不抗锯齿,当你再次渲染到屏幕上时,会受限于你RenderTexture和渲染空间大小,而存在清晰度不同的情况。

比如你的 RenderTexture 是100x100,然后设置到 Sprite 后,Sprite 的大小是 200x200,那相当于放大了,就会有模糊,即便 Sprite 大小是 100x100,在屏幕显示器上,可能也会有模糊

Graphics 则不同,Graphics 是画三角形的,并且Graphics默认的材质,在画三角形的时候,已经实现了抗锯齿/边缘清晰的

所以模糊和清晰都是合理的

这个模糊的有什么办法解决呢?或者有没有其他方案

最简单就是设置更大的 RenderTexture 尺寸

企业微信截图_20251011094136 大佬,不行呀,我这里用纹理绘制的,每次拍都会变一点点,导致之前的绘的会越来越深

不使用rt

勾选预乘alpha,然后设置精灵的混合方式为one就可以了。

相机擦除背景不要设置透明。

不使用rt是什么意思

this._rt.setPremultiplyAlpha(true);Sprite.srcBlendFactor = cc.macro.BlendFactor.ONE; 设置了的,效果还是那样

这个解决了,是相机没有清除

https://store-my.cocos.com/seller/resources/detail/8258
我这个商品的画图实现不是使用 graphic 节点来画的。而是直接将rgba数据写到一个Uint8Array里。然后填充到Texture上。如果使用我的这个方法。因为你画图的时候,直接就是拿到rgba去渲染。然后你可以拿这个rgba直接去渲染到第二个,第三个精灵上。完全不需要rt来做。这样子的话。我觉得应该就不会有rt之后和原来的东西不一致的问题。
(PS: 2.X 版本正在审核当中)

商品打不开还看不到,用你这个方法可以用纹理绘制吗?

不好意思。发错了自己内部的连接了。这个是实际链接
https://store.cocos.com/app/detail/3468