2010-06-22 4 views
2

Если вы вычисляете нормали многоугольника для рендеринга его на WebGL, используете ли вы обычный для каждого индекса в массиве индексов или для каждой вершины массива вершин?Сколько нормалей?

ответ

1

Каждая вершина. Вершина, в смысле WebGL (которая аналогична OpenGL ES и другим предшественникам), на самом деле не является точкой в ​​пространстве, а скорее сочетанием атрибутов. Один из них - это почти всегда место (хотя в необычных случаях у вас может не быть этого), а другие - это, как правило, обычный вектор, цвет, координаты текстуры и т. Д.

Индексный массив, напротив, является смещением в массивах атрибутов вершин. Поэтому, когда вы указываете индекс (скажем) 1 в массиве индексов, это сокращает «вершину, состоящую из объединения первого местоположения в буфере местоположения, первого нормального в нормальном буфере, первого цвета в цветовом буфере и первого текстурной координаты в буфере координат текстуры ".

Самая противоречивая вещь для меня, когда мы изучали это, заключалась в отделении вершин от местоположений, которые они занимают. Нет причин, по которым две вершины не могут иметь одно и то же местоположение.

+0

Я думаю, что я решил это уже, но только для того, чтобы закрыть дискуссию ... Хорошо, другими словами, индекс извлекает любую информацию, имеющуюся в других буферах: цвет, нормали, текстуру и т. Д. Таким образом, вы определяете все это на вершинном пространстве. Спасибо Джайлсу. – Diego

+0

Да, это так. Индексный нуль относится к нулевому элементу во всех этих буферах. –

2

В notes here пользователь вычисляет их для каждой вершины.