opengl-es - 如何在 OpenGL ES 中绘制 "glowing"线

标签 opengl-es line

enter image description here

您能否分享一些关于如何绘制纹理线(平滑或具有发光效果,蓝线,四点)的代码(任何语言),该线由许多点组成,如使用 OpenGL ES 1.0 的附加图像。

我正在尝试使用纹理 16x16 或 1x16 像素对 GL_LINE_STRIP 进行纹理处理,但没有成功。

最佳答案

在 ES 1.0 中,您可以创造性地使用渲染到纹理来实现您想要的效果,但在填充率方面可能代价高昂。 Gamasutra 有 an (old) article关于如何在 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 偏移来应用线性垂直模糊。

  • 这些不透明度数来自于 this page 上的二维高斯核。 .玩弄它们以影响向线外侧的下降。

    请注意此处涉及的额外成本:您表面上添加了 10 个全屏纹理绘制以及一些帧缓冲区交换。通过使用多重纹理,您可能可以减少绘制次数。着色器方法可能会在一次通过中完成水平和垂直步骤。

    关于opengl-es - 如何在 OpenGL ES 中绘制 "glowing"线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7706077/

    相关文章:

    python - 从线中查找点距离 - python

    Android - OpenGL ES 的追踪器抛出 "Broken pipe"

    objective-c - iPad(第一代)的着色器文件警告

    graphics - 用于绘制线条和图形的 Lisp 库

    javascript - 将 xkey morris 折线图更改为字符串

    dynamic - OpenGL (ES 2.0) 动态改变线宽

    java - 显示每帧变化的文本(如乐谱)

    android - OpenGL ES 2.0 方法的 Javadoc 注释源文件

    iphone - glFramebufferTexture2D 性能

    delphi - FireMonkey - 在 Windows 中绘制 1 像素线而不进行抗锯齿