【发布时间】:2011-11-28 09:30:36
【问题描述】:
如何为我绘制的线条添加发光效果?我正在使用适用于 Linux 的 OpenGL。
【问题讨论】:
如何为我绘制的线条添加发光效果?我正在使用适用于 Linux 的 OpenGL。
【问题讨论】:
您可以实现Nehe Lesson 36 中描述的径向模糊效果。主要思想是将绘图渲染为纹理,并在每次渲染后使用小的偏移量执行 N 次,直到绘图准备好复制到帧缓冲区。
我编写了一个使用Qt and OpenGL 的小演示。您可以在下面看到原图(没有模糊):
下一张图片显示了开启了模糊效果的绘图:
我知道这并不多,但这是一个开始。
【讨论】:
我也曾经希望有一个非常简单的解决方案,但不幸的是它有点复杂,至少对于初学者来说。
现在实现发光效果的方式,无论 API(D3D、OpenGL)是使用像素/片段着色器。它通常涉及渲染场景的多个渲染通道,然后渲染只有“发光对象”可见的通道,然后应用绽放像素着色器并将它们组合在一起。
详情请查看@Valmond 提供的链接
编辑:
应该补充一点,这可以通过延迟渲染来实现,其中法线、位置和其他信息(如“发光标志”)被渲染到纹理,即存储在纹理的不同组件中。然后着色器将从纹理中读取并在单次通过中进行闪电计算和后处理效果,因为它需要的所有数据都可以从该渲染纹理中获得。
【讨论】:
看看这个:http://developer.download.nvidia.com/books/HTML/gpugems/gpugems_ch21.html
它很容易解释如何制作发光效果。
【讨论】:
不使用着色器,您也可以尝试渲染到纹理并进行径向模糊。 作为起点,请查看NeHe-Tutorials。
【讨论】: