2017-06-13 155 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