Индексы внутри obj против индексов в OpenGL - довольно длинная тема. Основная веская причина наличия единого набора данных вершин и единого списка индексов заключается в том, что весь файл OBJ можно извлечь из одной пары VBO.
Индексы OBJ обычно нужно несколько массировать. Тот факт, что они начинаются с 1, немного раздражает (хотя вы можете обойти это, указав указатель вершины как элемент перед или уменьшив каждый индекс). Тот факт, что они могут индексировать треугольники / квадраты / полисы, означает, что вам, вероятно, потребуется триангулировать данные. Тот факт, что индексы НЕ разделяются между UV / normal / vertex, означает, что вы, вероятно, в конечном итоге создадите свой собственный набор индексов (вы можете использовать буферы хранения шейдеров для использования отдельных индексов, если вам нужно, но это может быть не самый быстрый подход),
В конечном счете, файлы obj довольно ужасны, как формат файла OpenGL во время выполнения. Вам было бы гораздо лучше написать простой инструмент для нанесения вреда файлам obj, массировать данные по мере необходимости, а затем выплевывать гораздо более простые для чтения двоичные файлы.