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

标签 javascript three.js

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

  1. renderer.render() 会阻塞直到完成渲染吗?
  2. 如果没有,有没有办法通过回调或事件知道它何时完成?

最佳答案

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

fiddle 在这里:http://jsfiddle.net/1ma18gLf/

该函数根据测试确实会阻塞。使用浏览器控制台观看结果并查看 Base64 图像。

接下来的问题是,无论 JavaScript 在做什么,webGL 是否都会单独绘制到 Canvas 上。

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

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

//In your render loop:

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

关于javascript - renderer.render() 是阻塞还是非阻塞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44523130/

相关文章:

javascript - 覆盖多个先前的终端输出

javascript - THREE.js 代码仅在存在断点时运行

react-native - 如何释放react-native webview内存

javascript - THREE.js FXAA 着色器无法与 CopyShader 一起使用 - 呈现空白

javascript - 在 Threejs 中画一条线3

javascript - 尝试从 Grails 填充 jQuery FullCalendar

javascript - 当禁用字段集的子项时确定禁用状态元素

Javascript 随机不在 Ruby on Rails 5.2.3 生产模式上加载

javascript - 我的前端 javascript 文件无法访问其他 javascript 文件中的变量

javascript - 三个 js 自定义几何体 - 光照不工作