用OpenGL ES划线

时间:2017-01-23 13:54:24

标签: graphics opengl-es opengl-es-2.0

我正在尝试用OpenGL ES2.0实现一个行点画(虚线/虚线),并找到了很多关于这个主题的线程。但是没有任何例子。有人曾经这样做过,可以帮助我实施吗?

2 个答案:

答案 0 :(得分:1)

OpenGL ES中没有直接支持点画线,所以常见的方法是:

  • 渲染多个不同的线段,每个线段渲染点画图案的一个实体部分。
  • 渲染由两个三角形组成的薄四边形,并使用透明纹理应用线条点画效果。

从性能的角度来看,如果屏幕上有大量的行,我建议使用后者。

答案 1 :(得分:0)

选项三,超过solidpixel给出的选项,是使用纹理线;线条的片段着色器可以像任何其他片段着色器一样接收变化和样本纹理。因此,提供纹理坐标作为从x = 0x = k * (length of line)的变化运行,然后对纹理进行采样以生成片段颜色。

渲染线时OpenGL上的行为与渲染四边形时的行为不同:对角线上的薄四边形可能会错过片段中心,而一条线总是会绘制连续的片段集合。

所以它或多或少地计算了飞行中的点画与预计算和查找它之间的区别。如果你可以随心所欲地计算它,就像solidpixel所倡导的那样,这可能更好,因为它会消耗更少的带宽。