【问题标题】:Three.js disable depth test三.js禁用深度测试
【发布时间】:2018-04-30 17:29:35
【问题描述】:

我使用 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));

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

谢谢。

【问题讨论】:

    标签: javascript webgl three.js


    【解决方案1】:

    我意识到这是三年后的事了,但我在研究 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),但实际上并没有加载。我没有深入研究这是否只是与我现有项目的交互、实际错误或可能已删除,但目前我建议仅使用上述工作方法。

    【讨论】:

    • renderer.setDepthTest(false) 不起作用;相反,使用gl.disable(gl.DEPTH_TEST) 将禁用深度测试。
    【解决方案2】:

    你可以试试

    gl.disable(gl.DEPTH_TEST);
    

    【讨论】:

    • 我试过了,但是在 composer.render() 中似乎调用了 gl.disable(gl.DEPTH_TEST) 或 gl.enable(gl.DEPTH_TEST)
    猜你喜欢
    • 1970-01-01
    • 2013-11-10
    • 2021-02-25
    • 2017-01-17
    • 1970-01-01
    • 2015-03-28
    • 2012-01-12
    • 2015-10-12
    • 1970-01-01
    相关资源
    最近更新 更多