我想基于粒子模拟在 OpenGL 中渲染火焰效果。我有数百个粒子,它们具有位置和温度(因此具有颜色)以及它们的所有其他属性。简单地solidSphere
使用 glut 渲染看起来不太现实,因为粒子散布得太宽了。如何根据粒子信息绘制火焰?
问问题
12035 次
2 回答
5
您可能想使用粒子系统来渲染火焰效果,这里有一个关于如何做到这一点的 NeHe 教程:http: //nehe.gamedev.net/data/lessons/lesson.asp ?lesson=19
于 2010-12-15T13:23:58.210 回答
5
如果您只是想创建一个逼真的火焰效果,我会使用其他答案中推荐的某种重新存在的库。但是在我看来,您似乎是在模拟显示之后。
一个值得尝试的直接解决方案可能是用广告牌(即始终面向相机的图形图像)替换您当前的球体,广告牌在中间是纯白色,向边缘逐渐变透明 - 显然是根据您的粒子定位和着色图像。
我觉得更好的解决方案是将火焰作为一组 2D 网格来处理,您可以在其上控制网格上每个顶点的透明度和颜色。可以在 OpenGL 中通过从四边形构造一个平面并使用您的粒子系统来计算(通过您拥有的最近粒子的插值)每个顶点的颜色和透明度。OpenGL 将为您在顶点之间插入每个像素,并为您提供“区域中的平均粒子”的平滑图像。
于 2010-12-15T13:43:06.310 回答