如何为OpenGL添加发光效果?

我怎样才能把一个发光的效果添加到我画的线? 我正在使用OpenGL for Linux。

Solutions Collecting From Web of "如何为OpenGL添加发光效果?"

您可以实现Nehe第36课中描述的径向模糊效果。 主要思想是将绘图渲染到纹理,并在每次渲染之后用一个小的偏移量执行N次,直到绘制准备好被复制到帧缓冲区。

我写了一个使用Qt和OpenGL的小型演示程序。 您可以看到下面的原始绘图 (没有模糊):

在这里输入图像说明

下一张图像显示打开模糊效果的图形

在这里输入图像说明

我知道这并不多,但这是一个开始。

我也曾经希望有一个非常简单的解决方案,但不幸的是,这有点复杂,至少对于一个初学者来说。

不管API(D3D,OpenGL)是使用像素/片段着色器,今天实现发光效果的方式。 它通常涉及渲染场景的多个渲染通道,然后渲染只有“发光物体”可见的通道,然后应用bloom bloom pixelshader并将它们组合在一起。

有关详细信息,请参阅@Valmond提供的链接

编辑:

应该补充的是,这可以通过延迟渲染来实现,其中法线,位置和其他信息(例如“发光标志”)被渲染为纹理,即存储在纹理的不同组件中。 然后着色器将从纹理中读取数据,并在一次扫描中进行闪电计算和后期处理,因为所需的所有数据都可以从渲染的纹理中获得。

看看这个: http : //developer.download.nvidia.com/books/HTML/gpugems/gpugems_ch21.html

它很容易解释如何使发光效果。

不使用着色器,你也可以尝试渲染纹理和做一个径向模糊。 作为一个起点检查NeHe教程 。