У меня есть треугольная сетка, и я пытаюсь вычислить нормали, чтобы применить их при рисовании сетки.Я использую немедленный режим (вероятно, изменится на массив вершин, когда у меня будет время понять, как они работают) и рисую сетку с помощью 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
?(Я не хочу сейчас прекращать использование немедленного режима, так как у меня нет времени).