[]使用webgl之后toDataUrl返回黑色的图像
按照
https://stackoverflow.com/questions/12538193/why-does-my-canvas-go-blank-after-converting-to-image
这里的说法,两个方式可用
1. 创建时加入preserveDrawingBuffer,但是,这个参数导致乐视手机崩溃
2. 在每次绘图之后截图,但是laya里哪个函数是绘图?webgl里的renderSubmit?还是哪个?
https://stackoverflow.com/questions/12538193/why-does-my-canvas-go-blank-after-converting-to-image
这里的说法,两个方式可用
1. 创建时加入preserveDrawingBuffer,但是,这个参数导致乐视手机崩溃
2. 在每次绘图之后截图,但是laya里哪个函数是绘图?webgl里的renderSubmit?还是哪个?
没有找到相关结果
已邀请:
要回复问题请先登录
3 个回复
cuixueying
赞同来自:
截图请参考:截图
hhh_DDD
赞同来自:
这片文档,我使用以下代码应该ok
Laya.stage.getChildAt(0).drawToCanvas(100, 100, 0, 0).getCanvas().toDataURL();
但在WebGL的模式下,实现在laya.core.js的20644行,drawToCanvas返回的是pixels:Uint8Array,这东西怎么变成HTMLCanvas?
如果只能变成Texture,那么我需要存盘的问题仍然没有解决,而且我也没找到怎么把Sprite直接画到canvas上的方法
cuixueying
赞同来自:
2、我测试webGL下截屏是没有问题的,而且Laya.stage.getChildAt(0).drawToCanvas(100, 100, 0, 0)返回的是WebGLCanvas,你可以直接按照截屏分享里的Demo去测试,是没有问题的,附件是Demo,你可以测试看下,webGL模式下正常运行
3、(Laya.stage.getChildAt(0) as Sprite).drawToCanvas(100,100,0,0).getCanvas().toDataURL();返回的是base64,你可以把这串base64当作url传给loadImage,也是OK的,请参考以下代码
package {
import laya.display.Sprite;
import laya.events.Event;
import laya.utils.Browser;
import laya.utils.Stat;
import laya.webgl.WebGL;
public class LayaAirDemo {
private var sp:Sprite ;
public function LayaAirDemo() {
//初始化引擎
Laya.init(Browser.width, Browser.height,WebGL);
Stat.show();
Laya.stage.bgColor = "#ffcccc";
Laya.stage.on(Event.CLICK,this,onClick);
sp= new Sprite();
sp.name='base';
sp.loadImage("logo.png");
Laya.stage.addChild(sp);
}
private function onClick():void
{
var htmlsss:String=(Laya.stage.getChildAt(0) as Sprite).drawToCanvas(100,100,0,0).getCanvas().toDataURL();
var sp2:Sprite = new Sprite();
sp2.name='drawCanvas';
sp2.x = 300;
sp2.loadImage(htmlsss);
Laya.stage.addChild(sp2);
}
}
}