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

これは 3 年後のことだと思いますが、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 に答える