Возможно ли добиться плоского затенения в OpenGL при использовании glDrawElements для рисования объектов, и если да, то как? Идеальным способом было бы вычисление нормали для каждого треугольника только один раз, если это возможно.
Решение должно использовать только программируемый конвейер (профиль ядра).
Действительно, есть способы обойти это без дублирования вершин, с некоторыми ограничениями для каждой из них (по крайней мере, те, которые я могу придумать из-за моего ограниченного опыта OpenGL).
Я вижу два решения, которые дадут вампостоянное значение для нормали по каждому треугольнику:
flat
К сожалению, единственный способ сделать это - дублировать все ваши вершины, поскольку атрибуты для каждой вершины, а не для каждого треугольника
Когда вы думаете об этом, это то, что мы сделали в непосредственном режиме ...