在OpenGL中渲染火焰

时间:2010-12-15 13:04:59

标签: c++ opengl graphics glut particles

我想基于粒子模拟在OpenGL中渲染火焰效果。我有数百个具有位置和温度(因此颜色)以及所有其他属性的粒子。简单地使用过剩渲染solidSphere看起来不太现实,因为粒子传播得太宽。如何根据粒子信息绘制火焰?

2 个答案:

答案 0 :(得分:5)

您可能希望使用粒子系统来渲染火焰效果,这是关于如何做到这一点的NeHe教程:http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=19

答案 1 :(得分:5)

如果你只是想创造一个真实的火焰效果,我会使用其他答案中推荐的某种重新存在的库。但在我看来,你是在展示模拟之后。

值得尝试的直接解决方案可能是用广告牌(即总是朝向相机的图形图像)替换当前的球体,中间是纯白色,并且朝向边缘淡化为透明 - 显然根据图像定位和着色图像你的粒子。

我觉得更好的解决方案是将火焰作为一组2D网格接近,您可以在其上控制网格上每个顶点的透明度和颜色。可以在OpenGL中通过从四边形构造一个平面并使用粒子系统来计算(通过从最近的粒子插值)每个顶点的颜色和透明度。 OpenGL将为您在顶点之间插入每个像素,并为您提供“区域内平均粒子”的平滑图像。