cocos使用RenderTexture截图渲染出来的纹理是倒着的

  • Creator 版本: 3.6.0

  • 目标平台: 谷歌浏览器 / 编辑器

  • 重现方式:必现

使用官方的示例使用官方的RenderTexture测试了一下,发现渲染出来的纹理纵向发生了旋转,开始用的3.5.1测试发现有这个问题,换成3.6.0测试还是一样,如下图所示,第一张是代码,第二张是正常渲染的,第三张是通过RenderTexture渲染的


又重新仔细看了下文档,新创建一个材质使用默认的UIshader开启SAMPLE_FROM_RT这个宏定义就可以了,帖子留在这给后来人提个醒

我改了没什么用,单独重新读取一次像素才可以

大佬,劳烦请问一下这个怎么使用,没整明白

材质里面 启用 SAMPLE_FROM_RT

1赞

大佬,请问一哈cocos creator 3.7.2版本监听相机上的 pipeline 的 AFTER_DRAW应该怎么操作啊,一直没找到方法

SAMPLE FROM RT启用了也无效

我直接用代码操作的,使用的是cocos creator3.8, sprite 渲染其实有默认material 的,我们只需要获取material, 设置一下 SAMPLE_FROM_RT 即可。

    let renderTexture = new RenderTexture();
    renderTexture.initialize({ width: *yourView*.width, height: *yourView*.height});
    const camera = *yourCameraNode*.getComponent(Camera);
    camera.targetTexture = renderTexture;

    const sp = new SpriteFrame();
    sp.reset({
       originalSize: size(renderTexture.width, renderTexture.height),
       rect: new Rect(0, 0, renderTexture.width, renderTexture.height),
       offset: new Vec2(0, 0),
       isRotate: true,
   });
   sp.texture = renderTexture;

   const sprite = node.addComponent(Sprite)
   sprite.spriteFrame = sp;
   
   const mat = new Material();
   mat.copy(sprite.getRenderMaterial(0), {
        defines: {
            SAMPLE_FROM_RT: true,
        }
   })
   sprite.customMaterial = mat;