У меня есть треугольная сетка, и я пытаюсь вычислить нормали, чтобы применить их при рисовании сетки. Я использую немедленный режим (вероятно, перейду на массивы вершин, когда у меня будет время, чтобы понять, как они работают) и рисую сетку с помощью GL_TRIANGLE_STRIP.
У меня проблемы с вычислением нормалей вершин. Более точное решение, какие соседние вершины использовать в вычислениях, а затем решение, когда устанавливать эти нормали. Учти это:
1_2
|/| Supposedly a square where the numbers represent the vertex number in a
3 4 triangle strip.
Я знаю, что вам нужно вычислить перекрестное произведение двух векторов, принадлежащих плоскости, чтобы получить нормаль к плоскости. Итак, в этом примере нормаль верхнего треугольника может быть вычислена путем выполнения (2-1) x (3-1), а второго - путем выполнения (2-4) x (3-4). Как затем применить нормали при рисовании полосы треугольников в непосредственном режиме?
Что я делал, так это устанавливал первую нормаль, когда установлен vtx 1, вторую, когда установлен vtx 4, третью, когда установлен vtx 5, и т.д. вершины треугольника (когда все они должны быть одинаковыми). Например, треугольник | 2,3,4 | будет иметь только вершину 4 с правильной нормалью (поскольку для вершин 2 и 3 нормаль будет одной из первого треугольника).
Так как же это сделать? Есть ли способ или мне нужно перейти на GL_TRIANGLES
? (Я не хочу пока прекращать использование немедленного режима, потому что у меня нет времени).