我希望在OpenGL中基于粒子模拟来呈现火焰效果。我有数百个具有位置和温度(因此也有颜色)以及所有其他属性的粒子。简单地使用glut渲染一个solidSphere看起来不太真实,因为粒子分散得太宽。我该如何根据粒子信息绘制火焰?
如果你想渲染火焰效果,你可能需要使用粒子系统。这里有一个NeHe教程,可以教你如何做到这一点:http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=19
如果你只是想制作一个逼真的火效果,我建议使用一些现有的库,就像其他答案中推荐的那样。但我觉得你更想展示模拟过程。一个值得尝试的直接解决方案可能是用广告牌(即始终面向相机的图形图像)替换当前的球体,广告牌在中间是纯白色的,向边缘渐变透明——根据你的粒子定位和着色显然需要调整图像。我认为更好的解决方案是将火焰视为一组二维网格,你可以控制网格上每个顶点的透明度和颜色。在OpenGL中,可以通过从四边形构造平面,并使用你的粒子系统计算(通过插值从最近的粒子)每个顶点的颜色和透明度来实现此目的。OpenGL会为你在顶点之间插值每个像素,给你一个看起来平滑的“区域内平均粒子”的图片。