Утилита индексных буферов, как и утилита всех функций спецификации вершин, зависит от данных вашей сетки.
Большинство мешей, которые используются в высокопроизводительной графике, особенно со значительной плотностью многоугольников, являются гладкими. Нормы в таких сетках в основном гладкие, поскольку модельер обычно аппроксимирует в основном изогнутую поверхность. О, да, здесь и там могут быть некоторые острые края, но по большей части каждая позиция в таких моделях имеет одну нормаль.
Координаты текстуры, как правило, также плавно меняются в разных сетках. Конечно, есть текстурные координаты ребер; хорошо оптимизированная УФ-распаковка часто приводит к подобным вещам. Но если у вас есть сетка реального размера (10K + вершины), большинство позиций имеют одну текстурную координату. А касательные / битангенты основаны на изменениях координат текстуры, поэтому они будут соответствовать топологии текстуры.
Существуют ли сетки, в которых нормальная топология сильно не пересекается с топологией позиции? Да. Кубики, являющиеся очевидным примером. Но часто возникает необходимость в сильно ограненной геометрии, либо для достижения особого вида, либо для использования с низкими полигонами. В этих случаях нормальный индексированный рендеринг может не принести вам пользы.
Но это не меняет того факта, что эти случаи являются исключением , вообще говоря, а не правилом. Даже если ваш код всегда включает эти случаи, это просто неверно для большинства высокопроизводительных графических приложений.