2015-04-22 41 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和反向。但是你不能在运行时动态地改变它。