Attributes 抽屉元素中每个元素的WebGL属性

Attributes 抽屉元素中每个元素的WebGL属性,attributes,buffer,webgl,elements,Attributes,Buffer,Webgl,Elements,有没有一种方法可以在WebGL中指定每个元素索引的属性?这就是我的意思 我想在边上画线,在顶点画胖点。这是三角形的数据结构: 顶点:[0,0,0,1,0,0,0,1,0] 边缘:[0,1,1,2,2,0] 顶点是数组缓冲区,边是元素数组缓冲区。因此,当我使用线调用边上的drawerelements时,我得到一个三角形的轮廓。现在,我还可以将颜色属性绑定到顶点。假设我把它们都做成红色: 颜色:[1,0,0,1,0,0,1,0,0] 如果我想突出显示一个特定的顶点,我只需在绘制顶点的胖点之前在颜色上

有没有一种方法可以在WebGL中指定每个元素索引的属性?这就是我的意思

我想在边上画线,在顶点画胖点。这是三角形的数据结构:

顶点:
[0,0,0,1,0,0,0,1,0]
边缘:
[0,1,1,2,2,0]

顶点是数组缓冲区,边是元素数组缓冲区。因此,当我使用线调用边上的
drawerelements
时,我得到一个三角形的轮廓。现在,我还可以将颜色属性绑定到顶点。假设我把它们都做成红色:

颜色:
[1,0,0,1,0,0,1,0,0]

如果我想突出显示一个特定的顶点,我只需在绘制顶点的胖点之前在颜色上写下
bufferSubData
,然后在绘制边之前将其更改回去。但如果我想突出一个优势呢?我将颜色更改为
[1,1,1,1,1,1,1,0,0]
,祝一切顺利。边(0,1)将为白色,但其他两条边将使用渐变着色:顶点2处为红色,另一条边(0或1)处为白色


那么,我可以指定我想要为索引0和1处的元素使用一种特定的颜色,为索引2、3、4和5处的元素使用不同的颜色吗?所有这些都不需要在每个顶点上叠加(例如,使每个顶点数据看起来像
[x,y,z,r,g,b]
,并在缓冲区中并排放置两个顶点,这样一条边就可以指向同一顶点的常规或高亮版本)。

抱歉,但不,它的工作原理不是必须在某个地方复制数据。顶点不仅仅是一个位置,它是与该位置相关联的所有属性的集合,因此在WebGL/OpenGL的视图中,它们是不同的顶点

最简单的解决方案是使用更新的颜色复制顶点。您可以做更复杂的事情,比如拥有一个颜色数组,传入一个枚举顶点的属性(例如,顶点0得到“0”,顶点1得到“1”,等等),然后在顶点着色器中使用逻辑进行补偿。这需要大量的工作和复杂性,可能不会更简单或更快