V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kaminic
V2EX  ›  编程

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

  •  
  •   kaminic · 2018-04-23 10:49:30 +08:00 · 3342 次点击
    这是一个创建于 2407 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    第一种方式:

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

    这种方式有几个问题:

    1. 整个 FBO 使用高斯模糊效率比较低,虽然可以截取最小范围使用高斯模糊,但是没有从根本上解决问题
    
    2. FBO 需要预先有个底色,这样再使用高斯模糊时才会在粉红色的线边沿产生模糊效果,如果想实现绘制在透明的层上,然后在叠加到其他层就有问题了
    
    3. 同一个图层种可能有不同效果的线条,我是每次在全新的 FBO 中模糊一条线,然后再把所有模糊过的线条叠加到另一个 FBO 中上屏,线条多时效率很低,感觉这种方式是不靠谱的
    

    第二种方式:

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

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

    How to use OpenGL to achieve the effect of light curve

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

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2735 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 06:55 · PVG 14:55 · LAX 22:55 · JFK 01:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.