[]使用webgl之后toDataUrl返回黑色的图像

按照
https://stackoverflow.com/questions/12538193/why-does-my-canvas-go-blank-after-converting-to-image
这里的说法,两个方式可用
1. 创建时加入preserveDrawingBuffer,但是,这个参数导致乐视手机崩溃
2. 在每次绘图之后截图,但是laya里哪个函数是绘图?webgl里的renderSubmit?还是哪个?
已邀请:

cuixueying

赞同来自:

1、如果你的示例写的没问题,PC端正常运行,只是在手机端崩溃的话,请提供下Demo,我们安排测试下2、关于LayaAir下绘图的API,建议你学习下基础文档和引擎示例:引擎文档引擎示例
截图请参考:截图

hhh_DDD

赞同来自:

呃,http://ask.layabox.com/question/4150,按照这里的说法,以及http://layaair.ldc.layabox.com/api/index.html?category=Core&class=laya.display.Sprite#drawToCanvas()
这片文档,我使用以下代码应该ok
 

Laya.stage.getChildAt(0).drawToCanvas(100, 100, 0, 0).getCanvas().toDataURL();
但在WebGL的模式下,实现在laya.core.js的20644行,drawToCanvas返回的是pixels:Uint8Array,这东西怎么变成HTMLCanvas?
a.png

 
如果只能变成Texture,那么我需要存盘的问题仍然没有解决,而且我也没找到怎么把Sprite直接画到canvas上的方法

cuixueying

赞同来自:

1、请确定下你的引擎版本是否是最新1.7.5beta
2、我测试webGL下截屏是没有问题的,而且Laya.stage.getChildAt(0).drawToCanvas(100, 100, 0, 0)返回的是WebGLCanvas,你可以直接按照截屏分享里的Demo去测试,是没有问题的,附件是Demo,你可以测试看下,webGL模式下正常运行
333.png

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


 

要回复问题请先

商务合作
商务合作