我有一大组线,我使用glMultiDrawArrays(GL_LINE_STRIP,...)从顶点缓冲区对象渲染;
这非常有效。现在我有很多顶点对,我也必须可视化。每对由两条不同线上的两个顶点组成,顶点之间的距离很小。但是,我希望能够在距离小于某个值的所有顶点对之间画一条线。
我喜欢的是具有以下结构的缓冲区对象:
i1, j1, r1,
i2, j2, r2,
i3, j3, r3,
...
其中i和j是指向顶点的索引,r是这些顶点之间的距离。因此,每个顶点对都存储为(i,j,r)元组。然后我想要一个(顶点)着色器,它只绘制r<顶点对的顶点对。 SOME_VALUE为一行。
所以我的问题是,实现这一目标的最佳方法是什么?
答案 0 :(得分:0)
我猜经典是将额外的数据存储在纹理中,并在着色器中进行查找。但是如果它确实是固定的,你可以将距离本身存储为分配给顶点的纹理坐标,并直接使用它。无论你如何解决它,我认为你必须将它存储在每个顶点(着色器通常不喜欢使用对)。
这假设您没有重复使用顶点多行。
修改:
好的,所以,既然你正在重复使用顶点,我想你需要做的很聪明。如果它是最多两行(或固定数量)行(如行条)的一部分,则可以进行两次调用,第一次使用第一个纹理坐标调用,依此类推。我会看看我是否能想到另一种方式。