我需要在每个渲染帧完成后拍摄屏幕截图,但我发现某些屏幕截图是重复的,所以我想知道是否可以在渲染完成之前保存屏幕截图。因此...
- renderer.render() 会阻塞直到完成渲染吗?
- 如果没有,有没有办法通过回调或事件知道它何时完成?
最佳答案
我创建了一个包含 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/