three.js(七) 繪製到WebGLRenderTarget

WebGLRenderTarget 是GPU 內部對象, 主要做用是存儲繪製結果,一般繪製結果直接顯示到屏幕上,可是也能夠暫時存儲在GPU內部,以便於再次利用。對於OpenGL 來說, RenderTarget就是一個FrameBuffer, 在這個FrameBuffer之下附帶有一個顏色buffer一般便是一個Texture,  還有一個renderBuffer 一般能夠是存儲深度浮點信息,或者其它浮點信息。    target = new THREE.WebGLRenderTarget(WINDOW_W*0.5, WINDOW_H);這裏聲明一個半個屏幕寬度, 整個高度的RenderTarget.接着在繪製場景的函數中:    renderer.setRenderTarget(target);    renderer.clear();    renderer.render(scene, camera, target);首先設定繪製目標,清理目標, 將場景繪製到目標上。接着咱們就能夠使用繪製的數據了, 例如最簡單的是,將繪製的場景顯示在另一個場景中的某個平面上。    scene2 = new THREE.Scene();    m2 = new THREE.Mesh(new THREE.PlaneGeometry(2, 2), new THREE.MeshBasicMaterial());    m2.rotation.x = -Math.PI/4;    m2.rotation.y = -Math.PI/4;    normalCamera = new THREE.PerspectiveCamera(90, WINDOW_W*0.5/WINDOW_H, 0.5, 2000);    normalCamera.position.z = 3;    scene2.add(normalCamera);    scene2.add(m2);這裏構建另一個場景, 場景中有一個平面, 平面的紋理是上面的繪製結果,    m2.material.map = target;    m2.material.map.needUpdate = true;接着將這個新場景繪製到屏幕上, 只須要設定繪製目標爲null, 就能夠了。    renderer.setRenderTarget(null);    renderer.clear();    renderer.render(scene2, normalCamera);這樣就能夠製做出相似於 顯示器的效果了。函數

相關文章
相關標籤/搜索