【问题标题】:reduce redundant webgl attribute data减少多余的 webgl 属性数据
【发布时间】:2016-07-31 13:34:34
【问题描述】:

如果我想在没有多次绘制调用的情况下使用三角形绘制一个红色和蓝色正方形,据我所知,形状顶点需要 12 个元素(有意义),但我还需要使用 12 个只有两种颜色的元素,因为我需要为每个顶点定义一种颜色,当我用于形状的顶点越多,这种颜色就越多。

有没有什么方法可以跳过一个属性,不管多少次,以使这些对齐

vertices = [0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1
            1, 1, 1, 2, 2, 1, 2, 1, 1, 2, 2, 2]
colors   = [1, 0, 0, 1,
            0, 0, 1, 1]

所以第一种颜色(colors 中的第一个 vec4)适用于顶点中的前六个点,第二种颜色适用于接下来的六个点。

这可能吗,还是我必须为形状中的每个顶点重新定义相同的颜色?

【问题讨论】:

标签: webgl


【解决方案1】:

你所追求的最重要的事情是绘制实例:http://blog.tojicode.com/2013/07/webgl-instancing-with.html

否则,如果你真的热衷于不重复顶点,你可以使用制服:

uploadAttrDataForOneShape();
setUniform("color", RED);
draw();
setUniform("color", BLUE);
draw();

实际上,GPU 上的内存很充足,因此过度强调顶点冗余可能不值得。

【讨论】:

  • 这实际上正是我正在寻找的,虽然很遗憾它在 WebGL 实现中看起来不太一致。
猜你喜欢
  • 2019-06-06
  • 2013-05-21
  • 2018-04-15
  • 2013-04-23
  • 1970-01-01
  • 1970-01-01
  • 2014-08-28
  • 1970-01-01
  • 2021-11-13
相关资源
最近更新 更多