是renderer.render()阻塞还是非阻塞?

时间:2017-06-13 13:34:28

标签: javascript three.js

我需要在每个渲染帧完成后拍摄一个屏幕截图,但我发现有些屏幕截图是重复的,所以我想知道在渲染完成之前我是否可以保存屏幕截图。因此...

  1. renderer.render()会阻止它完成渲染吗?
  2. 如果没有,是否有办法通过回调或事件完成后知道?

1 个答案:

答案 0 :(得分:1)

我创建了一个带有50k立方体的渲染测试,在我的笔记本电脑上大约需要6-10秒。

小提琴在这里:http://jsfiddle.net/1ma18gLf/

该功能根据测试进行阻止。使用浏览器控制台观看结果并查看base64图像。

然后问题就变成了无论JavaScript正在做什么,webGL都会单独绘制到画布上。

您可以在渲染之前尝试手动清除:

var renderer = new THREE.WebGLRenderer( { preserveDrawingBuffer: true } );
renderer.autoClear = false;

//In your render loop:

renderer.clear();
renderer.render( scene, camera );