2015-04-22 180 views
0

使用three.js可以動態切換抗鋸齒/打開/關閉嗎?我想這完全不工作的情況如下:使用three.js動態切換抗鋸齒/關閉

` 
var rendererAA = new THREE.WebGLRenderer({{ antialias: true }}); 
rendererAA.setSize(window.innerWidth, window.innerHeight); 
document.body.appendChild(rendererAA.domElement); 

var rendererNA = new THREE.WebGLRenderer({{ antialias: false }}); 
rendererNA.setSize(window.innerWidth, window.innerHeight); 
rendererNA.domElement = rendererAA.domElement; 

var renderer = rendererAA; 

function render() { 

if (somePredicate) { 
    renderer = rendererAA; 
}else { 
    renderer = rendererNA; 
} 

requestAnimationFrame(render); 
renderer.render(scene, camera); 
}` 

如果活動渲染器是rendererNA(somePredicate = FALSE),現場只是凍結和抗鋸齒沒有變化。

我也嘗試將非活動渲染器domElement設置爲null,這沒有幫助。我的靈感來自於這樣一個問題:

Dynamically turn on/off antialiasing and shadows in WebGLRenderer

但是沒有確切的答案。

+0

[動態打開/關閉WebGLRenderer中的抗鋸齒和陰影]的副本(http://stackoverflow.com/questions/27554969/dynamically-turn-on-off-antialiasing-and-shadows-in-webglrenderer) – Atrahasis

回答

0

這是不可能與Three.js目前。

您需要重新創建整個上下文以允許AA開啓和關閉,並且不能在這之間切換。我建議你有布爾變量來決定AA在執行客戶端之前是否打開和關閉。 E.H. HD/SD,如果HD布爾值AA = true,則使用WebGLRenderer以允許AA和反向。但是你不能在運行時動態地改變它。