使用three.js动态切换抗锯齿打开/关闭

时间:2015-04-22 15:37:01

标签: javascript 3d three.js webgl antialiasing

是否可以使用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

但是没有明确的答案。

1 个答案:

答案 0 :(得分:0)

目前使用Three.js是不可能的。

您需要重新创建整个上下文以允许AA打开和关闭,并且不能在此之间切换。我建议您使用布尔变量来确定在执行客户端之前AA是否打开和关闭。 E.H. HD / SD,如果HD boolean AA = true,则使用WebGLRenderer来允许AA和反向。但是你不能在运行时动态地改变它。