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