我想在基于粒子模拟的 OpenGL 中渲染火焰效果。我有数百个粒子,它们具有位置和温度(因此具有颜色)以及所有其他属性。简单地使用 glut 渲染一个 solidSphere
看起来不太真实,因为粒子散布得太宽了。如何根据粒子信息绘制火?
最佳答案
如果您只是想创建逼真的火焰效果,我会按照其他答案中的建议使用某种重新存在的库。但在我看来,您似乎是在进行模拟显示。
一个值得尝试的直接解决方案可能是用广告牌(即始终面向相机的图形图像)替换您当前的球体,这些球体在中间是纯白色并逐渐向边缘透明 - 显然根据以下方式定位和着色图像你的粒子。
我觉得更好的解决方案是将火焰作为一组 2D 网格来处理,您可以在这些网格上控制网格上每个顶点的透明度和颜色。人们可以在 OpenGL 中通过从四边形构建一个平面并使用您的粒子系统来计算(通过您拥有的最近粒子的插值)每个顶点的颜色和透明度。 OpenGL 将为您在顶点之间插入每个像素,并为您提供“该区域的平均粒子”的平滑图片。
关于c++ - 在 OpenGL 中渲染火焰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4450171/