Есть ли способ указать атрибуты для индекса элемента в WebGL? Вот что я имею в виду.
Я хочу рисовать фигуры с линиями по краям и жирными точками в вершинах. Итак, вот структура данных для треугольника:
Вершины: [0,0,0, 1,0,0, 0,1,0]
Ребра: [0,1, 1,2, 2,0]
Вершины — это ARRAY_BUFFER, а ребра — это ELEMENT_ARRAY_BUFFER. Поэтому, когда я вызываю drawElements
на ребрах, используя LINES
, я получаю контур треугольника. Теперь я также могу привязать цветовые атрибуты к вершинам. Предположим, я делаю их все красными:
Цвета: [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]
и располагались два из них рядом в буфере, чтобы ребро могло указывать на обычную или выделенную версию одной и той же вершины).