我尝试创建包含两个发射器(控制器)的简单粒子系统:一个用于火灾,一个用于烟雾。我这样做是有问题的,并且没有使用编辑器。我从fire开始,创建了BilboardParticleBatch set纹理,结果一点也不好。原因是批次内部的混合函数不正确。因此,我在自己的批处理中覆盖了它,并将其更改为GL_SRC_ALPHA,GL_ONE -这样会产生更好的结果。所以现在使用我的批次,火看起来很好。然后我想添加烟雾,所以我想在这里使用非预乘混合,所以我再次创建了新的批处理扩展BillboardparticleBath,并使其使用SRC_ALPHA,ONE_MINUS_SRC_ALPHA,并为其分配烟雾纹理。所以烟雾是完美的。
主要的问题是如何合并两个控制器。如果我将它们都放到ParticleEffect中,并将这个效果放在ParticleSystem中,那么我可以将它们渲染在一起,但问题是,当来自两个发射器的粒子重叠时,有时它们会有错误的混合。这是因为它们可能没有被排序在一起,因为它们使用了两个批次。排序不是按效果级别应用的,而是按批处理级别应用的。所以这不是一个解决方案:
我可以尝试只使用一个批次,并使用TextureRegion influencer,以便在一个批次内使用不同的烟和火的纹理,但如何解决不同的混合问题,因为它将是一个和相同的批次。
这是一种以某种方式将两个批次合并为一个,并告诉它使用添加物渲染火焰和使用alpha渲染烟雾的方法。
提前感谢!
发布于 2014-11-27 22:53:40
问题解决了。现在它在两个批次上工作得很好。我只是在覆盖粒子批次时为材质添加了深度测试功能。
https://stackoverflow.com/questions/27147418
复制相似问题