小编abu*_*ner的帖子

Three.js - THREE.Points上透明画布纹理贴图的depthWrite与depthTest

有没有之间的差异显著depthWrite: falsedepthTest: false?使用是否depthTest提供了性能优势?是否有任何牺牲功能选择其中一个?

原来的问题

我想渲染一个THREE.Points半透明圆圈作为每个点的对象.我使用了一个THREE.Texturecanvas元素加载并传递给它的map属性THREE.PointsMaterial.

透明度并没有完全发挥作用,有些圆圈重叠得很好,但其他圆圈表现得好像是坚固的.

我了解后固定它depthWrite: falsedepthTest: falseTHREE.PointsMaterial.

我在哪里

我有一个代码示例(嵌入在底部),显示重叠点错误,并可以使用depthTestdepthWrite修复它:

var points = new THREE.Points(
    new THREE.Geometry(),
    new THREE.PointsMaterial({
        //depthTest: false,
        //depthWrite: false,
        map: circleTexture,
        size: circleDiameter,
        transparent: true
    })
);
Run Code Online (Sandbox Code Playgroud)

我对这一切都很陌生,但是我试着阅读这个主题,并且从我所知道的(如果我错了,请纠正我)深度缓冲区用于确定哪些片段被遮挡而不需要渲染.关闭此过程中的任何一个depthWritedepthTest将免除对象.他们的不同之处在于:

  • depthWrite: false 仍然计算深度,但无论如何渲染整个对象

  • depthTest: false 甚至没有计算深度

所以听起来我会通过关闭depthTest代替而失去一些对象质量depthWrite,但可能通过完全跳过计算来获得性能提升?但是,我会失去什么品质?实际上是否存在性能差异?在这里,我的无知一闪而过.

// Sizes
var sceneWidth = …
Run Code Online (Sandbox Code Playgroud)

javascript webgl three.js

7
推荐指数
1
解决办法
5301
查看次数

标签 统计

javascript ×1

three.js ×1

webgl ×1