c++ - 在 OpenGL 中渲染火焰

标签 c++ opengl graphics glut particles

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

最佳答案

如果您只是想创建逼真的火焰效果,我会按照其他答案中的建议使用某种重新存在的库。但在我看来,您似乎是在进行模拟显示。

一个值得尝试的直接解决方案可能是用广告牌(即始终面向相机的图形图像)替换您当前的球体,这些球体在中间是纯白色并逐渐向边缘透明 - 显然根据以下方式定位和着色图像你的粒子。

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

关于c++ - 在 OpenGL 中渲染火焰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4450171/

相关文章:

c++ - 无法读入由空格分隔的两个字符串

c++ - 压力-ng : Writing an application program using execv to invoke stress-ng commands and return if it is success or failure

c++ - 将转换应用于边界框

java - 为什么我的形状和图像在我的面板上消失了?

C# 库节点边图

c++ - 使用 3 个位置和法线进行光线追踪的内插三角形表面的最佳方法

c++ - 仅在基于范围的循环中迭代奇数(偶数)元素

c++ - 无法导出 DLL 中的函数

opengl - VAO 和 GL_ELEMENT_ARRAY_BUFFER 关联

C++ GLFW3 输入处理