我需要在每个渲染帧完成后拍摄一个屏幕截图,但是我发现某些屏幕截图是重复的,所以我想知道在渲染完成之前是否可以保存屏幕截图。因此...是renderer.render()阻塞还是非阻塞?
- 是否renderer.render()阻塞,直到它完成呈现?
- 如果不是,有没有办法通过回调或事件知道它是否完成?
我需要在每个渲染帧完成后拍摄一个屏幕截图,但是我发现某些屏幕截图是重复的,所以我想知道在渲染完成之前是否可以保存屏幕截图。因此...是renderer.render()阻塞还是非阻塞?
我创建了一个渲染测试,包含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);
是否有每个渲染的帧之间的变化显著,或者你怎么知道它并没有渲染下一帧时的截图看起来是一样的? – Arg0n
动画是一个以固定速率在屏幕上水平移动的对象,具体为'object.position.x - = 40'。该变化是几个像素,因此它是显着的。 – Jonas