怎样使用 OpenGL 实现发光画笔的效果?

2018-04-23 10:49:30 +08:00
 kaminic

我尝试着使用两种方式实现,但效果都不太好

第一种方式:

先在一个 FBO 中画一条粉红色的背景线,然后使用高斯模糊,然后在叠加画上白色的线。

这种方式有几个问题:

1. 整个 FBO 使用高斯模糊效率比较低,虽然可以截取最小范围使用高斯模糊,但是没有从根本上解决问题

2. FBO 需要预先有个底色,这样再使用高斯模糊时才会在粉红色的线边沿产生模糊效果,如果想实现绘制在透明的层上,然后在叠加到其他层就有问题了

3. 同一个图层种可能有不同效果的线条,我是每次在全新的 FBO 中模糊一条线,然后再把所有模糊过的线条叠加到另一个 FBO 中上屏,线条多时效率很低,感觉这种方式是不靠谱的

第二种方式:

预先准备一个发光的 1px 宽的纹理,然后在绘制线条时绑定纹理,使用这个纹理填充曲线,使用这种方式在计算纹理坐标映射时遇到了难以解决的问题

1. 我无法避免重叠部分的多次绘制
2. 在有透明度时,会出现透明区域颜色变深的现象。我在 stackoverflow 上专门描述了这个问题

How to use OpenGL to achieve the effect of light curve

我没有计算机图形学的基础,只是突击了一段时间的 OpenGL 使用,对于实现这个效果感觉走在一条错误的道路上,请教各位大神能够指点一二

3341 次点击
所在节点    编程
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/449042

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX