如何在OpenGL ES中绘制"发光"线

mic*_*ael 8 opengl-es line

在此输入图像描述

你能否分享一些代码(任何语言)如何使用OpenGL ES 1.0绘制纹理线条(光滑或具有发光效果,蓝线,四个点),包括许多点,如附加图像.

我正在尝试使用纹理16x16或1x16像素纹理GL_LINE_STRIP,但没有任何成功.

Tom*_*mmy 5

在ES 1.0中,您可以创造性地使用渲染到纹理来实现您想要的效果,但在填充率方面可能会很昂贵.Gamasutra有一篇关于如何在Tron 2.0游戏中实现发光的(旧)文章 - 你需要特别注意DirectX 7.0评论,因为那就像ES 1.0一样,是一个固定的管道.在您的情况下,您可能只想显示高斯图像而不是将其与原始图像混合,因为您只需要对光线感兴趣.

我对这篇文章的总结是:

  • 将所有线条渲染为纹理,为正常的实线细线.将此纹理称为源纹理.
  • 通过获取刚刚渲染的源纹理并将其绘制到另一个纹理(我将其称为水平模糊纹理)五次,将线性水平模糊应用于此.在x = 0的偏移处绘制一个副本,不透明度为1.0,绘制另外两个副本 - 一个在x = +1,一个在x = -1 - 不透明度为0.63,最后两个副本 - 一个在x = +2和一个在x = -2时,不透明度为0.17.使用添加剂混合.
  • 通过采用水平模糊纹理并执行基本相同的步骤但使用y偏移而不是x偏移来应用线性垂直模糊.

这些不透明度数字来源于此页面上的2d高斯内核.与它们一起玩耍以影响线条外部的脱落.

请注意这里涉及的额外费用:你表面上添加了10个全屏纹理绘图加上一些帧缓冲交换.通过使用多重纹理,您可以减少绘图.着色器方法可能会在一次通过中执行水平和垂直步骤.