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

这个是截图效果, 在graphic 节点上画画然后通过相机烘培到history(sprite)效果跟画出来的有差异。就是会多一两个像素的黑边跟锯齿,不知道是啥问题,感觉项目工程也没问题,已经卡住我一两个星期了。 :sob: :sob: :sob: :sob: :sob:
引擎版本是2.4.3

下面是我的demo功能 painttingDemo.zip (922.5 KB)

求大佬指导指导,现在完全没思路从哪里入手解决。

双线性插值纹理采样问题,把烘焙相机 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 版本正在审核当中)

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