如何为OpenGL的线条添加发光效果?

时间:2011-11-28 09:30:37

标签: c++ linux opengl bloom

如何为我绘制的线条添加发光效果?我正在使用OpenGL for Linux。

4 个答案:

答案 0 :(得分:8)

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

我写过一个使用Qt and OpenGL的小型演示。你可以在下面看到原始图纸(没有模糊):

enter image description here

下一张图片显示绘制时带有模糊效果:

enter image description here

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

答案 1 :(得分:7)

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

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

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

编辑:

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

答案 2 :(得分:4)

检查出来:http://developer.download.nvidia.com/books/HTML/gpugems/gpugems_ch21.html

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

答案 3 :(得分:1)

不使用着色器,您也可以尝试渲染纹理并进行径向模糊。 作为起点,请查看NeHe-Tutorials