2017-06-13 160 views
0

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

  1. 是否renderer.render()阻塞,直到它完成呈现?
  2. 如果不是,有没有办法通过回调或事件知道它是否完成?
+0

是否有每个渲染的帧之间的变化显著,或者你怎么知道它并没有渲染下一帧时的截图看起来是一样的? – Arg0n

+0

动画是一个以固定速率在屏幕上水平移动的对象,具体为'object.position.x - = 40'。该变化是几个像素,因此它是显着的。 – Jonas

回答

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); 
+0

这里有两次投票权。如果有更好的方法回答这个问题,我真的很好奇。谢谢! – Radio

+0

您的回答对其权威性非常有帮助。谢谢! – Jonas