Объект буфера индекса OpenGL с дополнительными данными - PullRequest
1 голос
/ 08 апреля 2010

У меня есть большой набор строк, которые я отрисовываю из буфера вершин, используя glMultiDrawArrays (GL_LINE_STRIP, ...);

Это прекрасно работает.Теперь у меня есть много пар вершин, которые я также должен визуализировать.Каждая пара состоит из двух вершин на двух разных линиях, и расстояние между вершинами мало.Однако мне нравится иметь возможность рисовать линию между всеми парами вершин с расстоянием, меньшим определенного значения.

Мне нравится иметь что-то вроде буферного объекта со следующей структурой:

i1, j1, r1,
i2, j2, r2,
i3, j3, r3,
...

где i и j - индексы, указывающие на вершины, а r - расстояния между этими вершинами.Таким образом, каждая пара вершин сохраняется в виде кортежа (i, j, r).Тогда мне нравится иметь (вершинный) шейдер, который рисует только пары вершин с r

Итак, мой вопрос, как лучше всего добиться этого?

1 Ответ

0 голосов
/ 08 апреля 2010

Полагаю, классическим было бы сохранить дополнительные данные в текстуре и выполнить поиск в вашем шейдере. Но если оно действительно фиксированное, вы можете сохранить само расстояние как координату текстуры, назначенную вершине, и использовать ее напрямую. Я думаю, вам придется хранить его с каждой вершиной (шейдеры обычно не любят работать с парами) независимо от того, как вы решаете эту проблему.

Предполагается, что вы не повторно используете вершины для нескольких строк.

EDIT:
Итак, поскольку вы повторно используете вершины, я думаю, вам нужно быть умным в этом. Если это часть максимум двух (или фиксированного количества) линий (например, линейной полосы), вы можете сделать два вызова, первый вызов с использованием первой координаты текстуры и так далее. Я посмотрю, смогу ли я придумать другой путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...