-
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;
}
}