Я импортирую 3d-модель (используя FBX SDK) с C ++ и OpenGL.
Я сделал тип вершины:
struct Vertex {
Vec3 position;
Vec2 texCoord;
Vec3 normal;
Vec3 binormal;
Vec3 tangent;
SkinInfo skin;
}
В настоящее время я присваиваю std::numeric_limits<float>::infinity()
неиспользуемым компонентам при загрузке модели. И создайте класс сетки с std::vector<Vertex>
.
Ctor класса ячеек меняет список вершин на чередующийся массив и вычисляет смещение и шаг, пропуская неиспользуемые компоненты.
Проблема в том, что при загрузке модели. В случае простого объекта есть только информация о положении, УФ и нормальном состоянии; какая трата памяти.
Возможно, лучшим решением является экспорт файла fbx в удобный для игры формат, но мне не хватает времени.
Мне нужно использовать индексированный массив вершин для производительности (glDrawElements
), но я не могу найти лучшего решения без использования типа вершин для дедупликации и индексации. Есть идея получше?