6

我使用一个 EffectComposer :

renderer = new THREE.WebGLRenderer();
renderer.setDepthTest(false);
...
composer = new THREE.EffectComposer( renderer);

所以我想禁用深度测试,但是当我这样做时:

composer.render();
var gl = renderer.context;
alert(gl.getParameter(gl.DEPTH_TEST));

该值为真而不是假。如何禁用深度测试?

谢谢你。

4

2 回答 2

7

我意识到这是三年后的事了,但我在研究 Three.js(版本 r73)中的 z-buffer 时遇到了它。为了在渲染器中禁用 DEPTH_TEST,我最终执行了以下操作(Google Chrome 版本 47.0.2526.106 m):

var renderer = new THREE.WebGLRenderer( { antialias: true });
renderer.setClearColor(0xaaaaaa);
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.context.disable(renderer.context.DEPTH_TEST);
document.body.appendChild(renderer.domElement);

var render = function () {
    requestAnimationFrame(render);
    renderer.render(scene, camera);
};

render();
var gl = renderer.context;
alert(gl.getParameter(gl.DEPTH_TEST));

关键是renderer.context.disable(renderer.context.DEPTH_TEST)在创建渲染器时。

我一开始尝试使用renderer.setDepthTest(false),但实际上并没有加载。我没有深入研究这是否只是与我现有项目的交互、实际错误或可能已删除,但现在我建议只使用上述工作方法。

于 2015-12-31T10:14:21.387 回答
1

你可以试试

gl.disable(gl.DEPTH_TEST);
于 2012-07-11T14:04:40.820 回答