Альтернатива glMultiDrawArrays при использовании равномерного шага?

Фон: Я разрабатываю приложение, которое по существу рисует огромный трехмерный график узлов и ребер. Узлы отрисовываются в виде экземпляров кубов, а края — с GL_LINE и расширен с помощью геометрического шейдера в трехмерные объемные «линии» из треугольных полос. В настоящее время я выполняю это расширение каждый раз, когда перерисовываю края. Однако, поскольку мой график полностью статичен (узлы не могут двигаться, а следовательно, и края не могут), я считаю, что мне нужно только расширить GL_LINE Определения в треугольные полосы один раз, захватывать расширенные вершины в буфер (используя Tranform Feedback), а затем с этой точки рисовать края, используя эти захваченные вершины с glMutliDrawArrays используя примитивный тип GL_TRIANGLE_STRIP,

Вопрос: Все эти объемные линии, которые я рисую, содержат 10 вершин. Тем не мение, glMultiDrawArrays требуется массив начальных индексов и размеров счетчиков, которые по существу описывают начальную точку и количество (в элементах) каждого примитива. Поскольку ни один из моих примитивов не различается по размеру, я бы составил, казалось бы, ненужный список начальных индексов. & на счет. Существует ли какая-либо функциональность, предоставляемая OpenGL, которая позволила бы мне просто указать шаг (в элементах), при котором произойдет перезапуск примитива?

3

Решение

Нет такой функции, но для ваших нужд она вам не нужна. Преобразование обратной связи не могу Выходные треугольные полоски. Выводит только основной примитивы: отдельные точки, линии или треугольники. Вот почему glBeginTransformFeedback только занимает GL_POINTS, GL_LINES, или же GL_TRIANGLES,

Все, что вам нужно сделать, это визуализировать все ваши ребра одновременно, собрать результаты в единый буфер с помощью обратной связи, а затем визуализировать все это с помощью одного вызова glDrawArrays,

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]