2

我正在尝试拍摄 babylon3d 场景的“快照”……换句话说:我试图在用户按下按钮时克隆 babylon3d 画布,然后将新的画布附加<canvas><body>.. 有时它可以工作,但其他次它没有。

但是,如果我使用简单的画布(即使用 fillRect),克隆/附加总是按预期工作。

我已经在 plunker 上设置了一个测试来证明我的问题:plunker:一遍又一遍地按下按钮,看看当有巴比伦场景时它的行为是多么零星。和注意:您可以在 _jquery(document).ready(...) 处理程序中在简单画布和巴比伦画布之间切换。

thanks, Shannon
4

1 回答 1

0

这是因为从Babylonjs 的 2.3.0 版本开始

引擎现在默认使用 preserveDrawingBuffer = false 初始化 WebGL。

您需要通过将{preserveDrawingBuffer: true}对象作为第三个参数传递来初始化引擎。

分叉的 plnkr

但不幸的是,这会扼杀你画布的表现。

在这里查看更多信息。

我并不是真正的 Babylonjs 专家,而且我没有找到一种方法来调用scene.render我们可以使用 @CapsE 提出的标志方法的方法。但是有一种BABYLON.Tools.CreateScreenshot(engine, camera, size)方法可以从您的场景中制作一个可下载的 png;也许这可以帮助你。

于 2016-02-07T13:12:46.147 回答