gpt4 book ai didi

c++ - GL_POINTS 在粒子模拟中相互遮挡

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:22:52 24 4
gpt4 key购买 nike

我有一个火灾模拟,包含大量带纹理的GL_POINTS。每个粒子都有一个透明的背景,当从特定角度面对火焰时,混合工作正常。然而,从其他角度查看它会显示背景,这些背景应该是透明的,遮挡了在其他人后面渲染的粒子。见下图。

enter image description here

如您所见,粒子的路径上似乎有很多黑框。我怎样才能避免这种情况?我使用的混合函数是 GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA。使用 GL_ONE 作为 glBlendFunc 的第二个参数给出非常相似的结果。

最佳答案

http://www.opengl-tutorial.org/intermediate-tutorials/billboards-particles/particles-instancing/#The_main_simulation_loop

您可以在那里找到完全相同的问题及其解决方案。您确实必须按照 Gigo 的建议对粒子进行排序。原因是只有当颜色从后向前混合时,alpha 混合才看起来正确。

你可以,但是如果你真的想避免排序。有一些更有效的 3d 透明度算法。请参阅:http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-10-transparency/#Order_Independent_Transparency

关于c++ - GL_POINTS 在粒子模拟中相互遮挡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25868949/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com