我需要在每個渲染幀完成後拍攝一個屏幕截圖,但是我發現某些屏幕截圖是重複的,所以我想知道在渲染完成之前是否可以保存屏幕截圖。因此...是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