Добрый день
Собсно никакого отношения к железяке OpenGL эта тема не имеет, это чисто "фундаментальные" (не побоюсь этого слова) структуры данных. Формально индексы - это просто вектор/контейнер int, напр
std::vector<int> idx = { 0, 2, 3, 3, 2, 1, 4, 3, 5 };
Самый частый случай: здесь 3 треугольника, первый юзает вертексы/точки (0, 2, 3), второй (3, 2, 1) и последний (4. 3, 5). Сами по себе вертексы - облако точек в пр-ве, оно еще не образует поверхность, вот для этого и нужны индексы которые подаются в команды рисования glDrawElements и.т.п. Однако такой расклад совсем не единственный, может быть напр так
std::vector<int> idx = { (0, 2, 3), (3, 2), (1, 4, 3, 5) };
Треугольник + отрезок + 4-угольник. Разумеется нужны доп данные чтобы определить сколько вертексов в каждом примитиве, и одной командой рисования здесь уже не отделаться.
Малодушные натуры часто стремятся обойтись без индексов, ну это плохо хотя бы потому что требует интенсивного дублирования вертексов. Другая возможность проскочить - песенка "только треугольники", это все резко упрощает.
Требуется: предложить эффективные структуры данных/контейнеры для работы с "подмножествами" индексов. Пример: пусть есть 3 треугольника исходного примера, юзер выбирает мышей один из них. В рез-те выбранный рисуется др цветом (напр красным).
Наверно это кажется совсем простым?