OpenGL предполагает, что нормали индексируются так же, как позиции вершин.Необходимо понимать, что сама вершина является вектором векторов атрибутов или, другими словами, вектором всех значений атрибутов (положение, нормаль, цвет, координата (ы) текстуры и т. Д.).Массив индекса glDrawElements обращается к массиву вершин, где каждая вершина является таким вектором более высокой размерности.
Теперь, что могло бы произойти, - то, что Milkshape смешивает наматывание лица и дает вам нормали, некоторые из которых были перевернутыпротивоположное направление (внутрь, а не наружу).Я не знаю, как это делается в Milkshape, но в Blender есть функция «Пересчитать нормали» (доступ по сочетанию клавиш CTRL + N), которая исправляет это.
Если выне хотите исправлять нормали, вы должны включить двустороннее освещение (это влияет на производительность).
glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);