OpenGL - El índice amortigua las dificultades

Tengo un formato de archivo personalizado que tiene toda la información necesaria para una malla 3D (exportada desde 3ds Max). Extraje los datos de vértices, índices de vértices y normales.

Paso a OpenGL los datos de vértice, los índices de vértice y los datos normales y renderizo la malla con una llamada aglDrawElements(GL_TRIANGLES,...)

Todo se ve bien, excepto lo normal. El problema es que las normales tienen índices diferentes. Y como OpenGL solo puede usar un búfer de índice, usa ese búfer de índice tanto para los vértices como para los normales.

Le agradecería mucho que me sugiriera cómo solucionar ese problema.

Es importante tener en cuenta que los datos de vértice / normal no están "ordenados" y, por lo tanto, no puedo usar la funcionalidad deglDrawArrays(GL_TRIANGLES,...) - la malla no se procesa correctamente.

¿Hay alguna forma / algoritmo que pueda usar para ordenar los datos para que la malla se pueda dibujar correctamente conglDrawArrays(GL_TRIANGLES,..) ? Pero incluso si hay un algoritmo, hay un problema más: tendré que duplicar algunos vértices (porque mi búfer de vértices consta de vértices únicos; por ejemplo, si tiene un cubo, mi búfer solo tendrá 8 vértices) y no estoy seguro como hacer eso.

Respuestas a la pregunta(2)

Su respuesta a la pregunta