cc.Class({
extends: cc.Component,
properties: {
camera: cc.Camera,
_canvas: null
},
init () {
let texture = new cc.RenderTexture();
texture.initWithSize(cc.visibleRect.width, cc.visibleRect.height, cc.gfx.RB_FMT_S8);
this.camera.targetTexture = texture;
this.texture = texture;
},
dostart () {
if(!this.__init){
this.__init = true;
this.init();
}
this.camera.render();
return this.texture;
},
// 下面这一段放进要使用这个纹理的脚本里去
// update(dt){
// let tex = this.seekChild('test').getComponent('textureRenderUtils').dostart();
// let sp = this.seekChild('testspr').getComponent(cc.Sprite);
// sp.spriteFrame.setTexture(tex);
// 这里测试必须使用new SpriteFrame 否则纹理不会更新
// let spriteFrame = new cc.SpriteFrame();
// spriteFrame.setTexture(tex);
// sp.spriteFrame = spriteFrame;
// }
});
摄像机要注意跟被拍摄物体同一个Group,
CullingMask选择当前要渲染的物体的Group
clearFlags必须勾选color,否则重影,即上一帧的纹理跟当前帧的纹理叠加出现,BackgroundColor.a设置成0就可以渲染出透明背景