有没有之间的差异显著depthWrite: false
和depthTest: false
?使用是否depthTest
提供了性能优势?是否有任何牺牲功能选择其中一个?
我想渲染一个THREE.Points
半透明圆圈作为每个点的对象.我使用了一个THREE.Texture
从canvas
元素加载并传递给它的map
属性THREE.PointsMaterial
.
透明度并没有完全发挥作用,有些圆圈重叠得很好,但其他圆圈表现得好像是坚固的.
我了解后固定它depthWrite: false
和depthTest: false
上THREE.PointsMaterial
.
我有一个代码示例(嵌入在底部),显示重叠点错误,并可以使用depthTest
或depthWrite
修复它:
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)
我对这一切都很陌生,但是我试着阅读这个主题,并且从我所知道的(如果我错了,请纠正我)深度缓冲区用于确定哪些片段被遮挡而不需要渲染.关闭此过程中的任何一个depthWrite
或depthTest
将免除对象.他们的不同之处在于:
depthWrite: false
仍然计算深度,但无论如何渲染整个对象
depthTest: false
甚至没有计算深度
所以听起来我会通过关闭depthTest
代替而失去一些对象质量depthWrite
,但可能通过完全跳过计算来获得性能提升?但是,我会失去什么品质?实际上是否存在性能差异?在这里,我的无知一闪而过.
// Sizes
var sceneWidth = …
Run Code Online (Sandbox Code Playgroud)