在我的应用程序中,我遇到了 z 缓冲区的问题。我有一个粒子系统,其中的点具有看起来像球体的纹理。但有两个问题我无法同时解决......
球体要么在 z 缓冲区中正确排序但不透明,要么它们是透明的但排序不正确!
请看看我的JSfiddle http://jsfiddle.net/DS9U2/。 (基于这个例子 http://mrdoob.github.io/three.js/examples/webgl_particles_billboards_colors.html来自 先生杜布)
在原来的例子中,一切看起来都很好。但正如您在我的小提琴中看到的,纹理不透明,因此将部分粒子隐藏在其后面。我只是从Geometry
to BufferGeometry
,因为在我的应用程序中我必须使用它来避免性能问题。您可以通过更改我在小提琴中的评论来在这两者之间切换。并且通过在之间切换Geometry
and BufferGeometry
您可以看到 z 缓冲区已损坏。
我在互联网上的某个地方找到了这个“解决方案”:
depthWrite : false
我将其添加到材料中。然后粒子看起来很棒,但 z 缓冲区不正确。
这让我发疯......无论如何我发现我的几何类型是问题所在。
那么为什么 mrdoob 的例子不能使用BufferGeometry
?我该怎么做才能在我的系统中获得正确排序和透明的颗粒?
你很困惑。纹理是透明的,并且在切换到BufferGeometry
.
正在发生的事情是BufferGeometry
,粒子不会按排序顺序渲染 - 它们会按照您在缓冲区中指定的顺序渲染。
如果你想使用BufferGeometry
,你可以设置
material.alphaTest = 0.5.
那么,就你而言,事情看起来应该很好。
三.js r.60
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)