У меня есть список вершин и их расположение в треугольники, а также нормализованные нормальные векторы, зависящие от треугольника.Используйте нормали треугольника в OpenGL, чтобы получить нормали вершин
В идеале, я хотел бы сделать как можно меньше работы, превратив пары (треугольные, нормальные) в пары (вершины, вершины_нормальные), которые я могу вставить в мое VAO. Есть ли способ OpenGL напрямую разобраться с нормалями лица? Или мне нужно отслеживать каждое лицо, в которое вовлечена данная вершина (что более или менее происходит при вычислении буферов индекса), а затем вручную вычислять усредненный нормаль в вершине?
Кроме того, есть ли способ пропустить обычный вычисление по вершинам в целом и просто найти способ проинформировать осколочный шейдер лица-нормальный напрямую?
Edit: Я использую то, что должно быть портативным ES устройств, поэтому фиксированная функция материал является непригодным для использования
Вы спрашиваете, как вычислить нормальные вершины в шейдере или как использовать нормали лица для треугольников без дублирования данных позиции? –
Ну, у меня в настоящее время есть куча нормалей лица, и я бы предпочел не вычислять нормали вершин на ЦП, если я могу помочь. Кроме того, поскольку у меня есть нормали лица (и я не делаю нормального отображения), интерполирование нормалей вершин, чтобы найти нормали фрагмента, кажется пустой тратой. – nimish
"* Я бы предпочел не вычислять нормали вершин на ЦП, если я могу помочь. *« Почему бы и нет? Они не меняются, если позиции не меняются. ЦП - лучшее место для расчета статических данных. Кроме того, неясно, хотите ли вы использовать нормали на лицевые вершины на вершинах или если вы хотите вычислить * реальные * вершинные нормали для создания гладкой поверхности. Вы затенены или нет? –