Если вы вычисляете нормали многоугольника для рендеринга его на WebGL, используете ли вы обычный для каждого индекса в массиве индексов или для каждой вершины массива вершин?Сколько нормалей?
ответ
Каждая вершина. Вершина, в смысле WebGL (которая аналогична OpenGL ES и другим предшественникам), на самом деле не является точкой в пространстве, а скорее сочетанием атрибутов. Один из них - это почти всегда место (хотя в необычных случаях у вас может не быть этого), а другие - это, как правило, обычный вектор, цвет, координаты текстуры и т. Д.
Индексный массив, напротив, является смещением в массивах атрибутов вершин. Поэтому, когда вы указываете индекс (скажем) 1 в массиве индексов, это сокращает «вершину, состоящую из объединения первого местоположения в буфере местоположения, первого нормального в нормальном буфере, первого цвета в цветовом буфере и первого текстурной координаты в буфере координат текстуры ".
Самая противоречивая вещь для меня, когда мы изучали это, заключалась в отделении вершин от местоположений, которые они занимают. Нет причин, по которым две вершины не могут иметь одно и то же местоположение.
В notes here пользователь вычисляет их для каждой вершины.
Я думаю, что я решил это уже, но только для того, чтобы закрыть дискуссию ... Хорошо, другими словами, индекс извлекает любую информацию, имеющуюся в других буферах: цвет, нормали, текстуру и т. Д. Таким образом, вы определяете все это на вершинном пространстве. Спасибо Джайлсу. – Diego
Да, это так. Индексный нуль относится к нулевому элементу во всех этих буферах. –