在我的应用程序中,我遇到了z-buffer的麻烦。我有一个粒子系统,其中点的纹理看起来像球体。但是有两个问题我无法同时解决....
这些球体是在z缓冲区中正确排序但是不透明或它们是透明的但是没有正确排序!
请查看我的JSfiddle。 (基于mrdoob的this example)
在最初的例子中,一切看起来都很好。但正如你可以在我的小提琴中看到的那样,纹理不是透明的,所以隐藏了粒子的一部分。我只是从Geometry
更改为BufferGeometry
,因为在我的应用程序中,我必须使用它来避免性能问题。你可以通过改变我在小提琴中的评论来切换这两者。通过在Geometry
和BufferGeometry
之间切换,您可以看到z缓冲区正在崩溃。
在互联网的某个地方,我找到了这个“解决方案”:
depthWrite : false
我添加到材料中。然后粒子看起来很棒但是z缓冲区不正确。 这让我发疯了......无论如何,我发现我的几何类型就是问题。
那么为什么mrdoob的例子不适用于BufferGeometry
?我该怎么做才能在我的系统中获得正确的排序和透明粒子?
答案 0 :(得分:0)
BufferGeometry
时保持不变。
发生了什么,是BufferGeometry
,粒子不按排序顺序呈现 - 它们按照您在缓冲区中指定的顺序呈现。
如果您想使用BufferGeometry
,可以设置
material.alphaTest = 0.5.
然后,在你的情况下,事情应该看起来很好。
three.js r.60