如何获取到精灵帧spriteFrame中的纹理数据buffer

  • Creator 版本: 3.8.3

  • 目标平台:Android (目前测试在edge浏览器中)

  • 问题描述:
    通过RenderTexture捕捉到相机中的纹理数据,并将该数据挂载到2D中的Sprite精灵中,但是想要获取sprite.spriteFrame中的纹理数据buffer,查阅了API并没有发现相应的函数。目的是保存该纹理数据到本地或者将其存储到一个变量buffer中,将数据供给Android调用使用。请问是否有大佬知道如何获取该数据,谢谢!!!

当前代码是这样的,但是buffer中没有数据:

    const currentTexture = this.mSprite.spriteFrame.texture;

    const renderTexture = new RenderTexture();

    renderTexture.reset({

        width: currentTexture.width,

        height: currentTexture.height

    });

   

    const buffer = new Uint8Array(renderTexture.width*renderTexture.height*4);

    renderTexture.readPixels(0,0,currentTexture.width,currentTexture.height,buffer);

    console.log(buffer);

看上去只是创建了一个 renderTexture 并没有和相机绑定,也没有填充任何数据?

试试这个

camera.targetTexture = renderTexture;
camera.scheduleOnce(()=>{
    // 在此读取像素值及进行其他操作
});

手动拖拽绑定的相机

看了官方的例子,更换了一种写法,已经解决了,非常感谢
@ccclass(‘Buffer’)

export class Buffer extends Component {

@property(RenderTexture)

public renderTexture: RenderTexture;

@property(Sprite)

sprite:Sprite = null;

start() {

   

}

update(deltaTime: number) {

    const width = this.renderTexture.width;

    const height = this.renderTexture.height;

    const texPixels = new Uint8Array(width*height*4);

    this.renderTexture.readPixels(0,0,width,height,texPixels);

    // console.log(texPixels);

    this.sprite.spriteFrame.texture = this.renderTexture;

}

}