Атрибут делителя без инстансинга?

я знаю это glVertexAttribDivisor может использоваться для изменения скорости, с которой общие атрибуты вершин продвигаются во время рендеринга экземпляра, но мне было интересно, есть ли способ продвинуть атрибуты с определенной скоростью БЕЗ экземпляра.

Вот пример того, что я имею в виду:

Допустим, вы определяете список позиций вершин, которые составляют серию линий, и с каждой строкой вы хотите связать идентификатор. Таким образом, вы создаете два виртуальных объекта, в каждом из которых находятся данные, относящиеся к одному из этих атрибутов (либо все позиции вершин, либо все идентификаторы вершин). Традиционно это означает, что каждый vbo должен иметь размер (в элементах) количества строк X 2 (поскольку каждая точка содержит две строки). Это, конечно, означает, что я дублирую одно и то же значение идентификатора для каждой точки линии.

Вместо этого я хотел бы указать, что идентификаторы продвигаются на 1 элемент на каждые 2 элемента, которые продвигает буфер позиции вершины. Я знаю, что это требует, чтобы мой буфер положения вершины был объявлен первым (чтобы я мог ссылаться на него, чтобы сообщить OpenGL, как часто следует расширять буфер идентификатора), но все равно кажется, что это возможно. Тем не менее, я не могу найти никаких функций в спецификации OpenGL, которые позволяют такой маневр.

7

Решение

То, что вы хотите, не всегда возможно в OpenGL. Это эффективно сдержанная форма многоиндексный рендеринг, поэтому вам придется использовать один из этих методов, чтобы получить его.

2

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

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

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