我正在尝试使用 OpenGL ES2.0 实现线条点画(虚线/虚线),并发现了许多关于此主题的线程。但是没有任何例子。以前有人这样做过,可以帮助我实施吗?
OpenGL ES 中没有对点缀线的直接支持,因此常见的方法是:
- 渲染多个不同的线段,每个线段渲染点图案的一个实心部分。
- 渲染由两个三角形组成的细四边形,并使用透明纹理应用线条点画效果。
从性能的角度来看,如果你在屏幕上有大量的台词,我会推荐后者。
除了 solidpixel 给出的选项之外,选项三是使用带纹理的线条;线条的片段着色器可以像任何其他片段着色器一样接收变化和采样纹理。因此,请提供一个纹理坐标作为从x = 0
到x = k * (length of line)
的变化,然后对纹理进行采样以产生片段颜色。
的行为与渲染四边形时的行为不同:对角线上的细四边形可能会错过片段中心,而线条将始终绘制连续的片段集合。
因此,这或多或少是动态计算点画与预先计算并查找点之间的区别。如果你可以像solidpixel倡导者一样随时计算它,那可能是可取的,因为它会消耗更少的带宽。