OpenGL - индекс буферизует трудности

У меня есть пользовательский формат файла, в котором есть вся необходимая информация для трехмерной сетки (экспортирована из 3ds Max). Я извлек данные для вершин, индексов вершин и нормалей.

Я передаю в OpenGL данные вершин, индексы вершин и данные нормалей и отрисовываю сетку с вызовомglDrawElements(GL_TRIANGLES,...)

Все выглядит правильно, но нормальные. Проблема в том, что у нормалей разные показатели. И поскольку OpenGL может использовать только один индексный буфер, он использует этот индексный буфер как для вершин, так и для нормалей.

Я был бы очень признателен, если бы вы могли предложить мне, как решить эту проблему.

Важно отметить, что данные вершин / нормалей не «отсортированы», и поэтому я не могу использовать функциональностьglDrawArrays(GL_TRIANGLES,...) - сетка не отображается правильно.

Есть ли способ / алгоритм, который я могу использовать для сортировки данных, чтобы сетка могла быть правильно нарисована сglDrawArrays(GL_TRIANGLES,..) ? Но даже если есть алгоритм, есть еще одна проблема - мне придется дублировать некоторые вершины (потому что мой буфер вершин состоит из уникальных вершин - например, если у вас есть куб, мой буфер будет иметь только 8 вершин), и я не уверен как это сделать.

Ответы на вопрос(2)

Ваш ответ на вопрос