【问题标题】:webGL - Draw a line on a surfacewebGL - 在表面上画一条线
【发布时间】:2016-07-05 11:05:49
【问题描述】:

我有一个三维纹理表面,我需要在上面画一条彩色线。这类似于在球体上绘制纬度/经度线。有没有一种简单的方法可以在这个表面上画一条线?到目前为止,我得到的最好结果是计算曲面上的点并将这些点设为我的线顶点,但这似乎有点问题,因为有些地方的线显示得很好,有些地方显示得不好。另外,如果我使用这种方法,我是否需要将线从表面偏移或做其他事情,以便它们不会“重叠”并显示表面而不是线?

【问题讨论】:

  • 我也应该补充一点,我没有使用任何 webGL 库。

标签: 3d webgl


【解决方案1】:

使用您当前的方法,您需要偏移线(可能沿表面法线),您看到的效果称为z-fighting,由具有相同光栅深度值的线和表面引起。

如果您不想或不能偏移线,您可以将线渲染到单独的帧缓冲区中,将其纹理映射到全屏四边形并将它们混合在一起。

如果您不需要更新线条,您可以使用 2D 画布将其绘制到纹理中。根据您的需要和“表面”的属性,您还可以使用片段着色器直接在 gpu 上绘制线条。

【讨论】:

    【解决方案2】:

    经过大量的试验和错误(以及时间 - 这是非常古老的),我发现最好的方法是在纹理上创建我想要的线条并在表面上使用该纹理。完美运行!

    【讨论】:

      猜你喜欢
      • 2014-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多