在Three.js中是否可以将网格始终渲染在场景的顶部,即使它的位置在所有对象后面?我正在使用网格实现套索选择,我需要在场景的其余部分上渲染选择框.
有没有之间的差异显著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)