2016-08-17 53 views
1

三個渲染器可以在多個畫布中渲染相同的場景,所以我想渲染一次並在兩個畫布中顯示它。請注意,我不想渲染它兩次,我只需要將一個畫布反射到其他畫布。謝謝。三個相同的渲染器在多個畫布中顯示

回答

2

這很簡單,它不再涉及three.js,而只是將一個畫布輸出複製到另一個畫布。

https://jsfiddle.net/VsWb9/5357/

// copy source canvas to the other canvas after each render iteration 
    pipctx.drawImage(renderer.domElement, 0, 0, 200, 200); 

更新

這裏有更好的性能的解決方案(適用於Chrome和Firefox,但不是邊緣還):從三的canvas元素

  1. 捕獲流

    dataUrl = URL.createObjectURL(renderer.domElement.captureStream(45)); 
    
  2. 附上流<video>的src屬性

    pip = document.createElement('video'); 
    pip.style.width = pip.style.height = '200px'; 
    document.body.appendChild(pip); 
    pip.src = dataUrl; 
    pip.play(); 
    

這樣你就不必刷新鏡像元素每一幀渲染後。他們會自動跟上從源畫布捕獲的流。此解決方案需要回退到captureStream不可用的瀏覽器以上版本。實例顯示100項的視頻內容反映什麼在三個主要的畫布:

https://jsfiddle.net/VsWb9/5359/

+0

謝謝帕維爾,你可以請說我,會不會改變FPS率是多少? – Gor

+0

@取決於副本數量及其分辨率。兩個副本不會有太大的影響,但會有100個。另請參閱我的更新。它顯示瞭如何擁有多個畫布副本,而無需手動刷新它們。 – Pawel

+0

非常感謝Pawel – Gor