Я загрузил файл Wavefront .obj и нарисовал его в немедленном режиме, и он отлично работает.
Я сейчас пытаюсь нарисовать ту же модель с буфером вершин, но у меня есть вопрос.
Данные моей модели организованы в следующих структурах:
struct Vert
{
double x;
double y;
double z;
};
struct Norm
{
double x;
double y;
double z;
};
struct Texcoord
{
double u;
double v;
double w;
};
struct Face
{
unsigned int v[3];
unsigned int n[3];
unsigned int t[3];
};
struct Model
{
unsigned int vertNumber;
unsigned int normNumber;
unsigned int texcoordNumber;
unsigned int faceNumber;
Vert * vertArray;
Norm * normArray;
Texcoord * texcoordArray;
Face * faceArray;
};
Как и сейчас, я не думаю, что есть какие-либо избыточные данные, поскольку несколько структур граней могут указывать на одну и ту же вершину, нормаль или координату текстуры.
Когда я делаю vbo для позиций вершин, нормалей и координат текстуры и назначаю им данные с помощью glBufferData, нужно ли мне создавать массивы с избыточными данными, чтобы у всех них было одинаковое количество элементов в одном и том же порядок? Я хотел бы знать, есть ли более простой способ заполнить буферы способом, которым я уже организовал данные модели.