У меня есть метод, который читает файл obj, и я распечатал его. чтобы дважды проверить, соответствуют ли выходные данные файлу obj и все ли они верны.
Вот мой код для draw(), и я думаю, что проблема здесь < /p>
Код: Выделить всё
glBegin(GL_TRIANGLES);
for(int i = 0; i < f_count; i++){
if(f[i].type == 'c'){
GLfloat * color = new GLfloat[4];
color[0] = f[i].x;
color[1] = f[i].y;
color[2] = f[i].z;
color[3] = 1;
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color);
}
else{
glVertex3f(vn[(f[i].vn1-1)].x, vn[(f[i].vn1-1)].y, vn[(f[i].vn1-1)].z); // normals
glVertex3f(vn[(f[i].vn2-1)].x, vn[(f[i].vn2-1)].y, vn[(f[i].vn2-1)].z); // normals
glVertex3f(vn[(f[i].vn3-1)].x, vn[(f[i].vn3-1)].y, vn[(f[i].vn3-1)].z); // normals
glVertex3f(v[(f[i].v1-1)].x, v[(f[i].v1-1)].y, v[(f[i].v1-1)].z);
glVertex3f(v[(f[i].v2-1)].x, v[(f[i].v2-1)].y, v[(f[i].v2-1)].z);
glVertex3f(v[(f[i].v3-1)].x, v[(f[i].v3-1)].y, v[(f[i].v3-1)].z);
}
}
glEnd();
Вот мой заголовочный файл с моими структурами
Код: Выделить всё
struct NormalVector
{
GLfloat x, y, z;
};
struct Vertex
{
GLfloat x, y, z, w;
};
struct Faces
{
int v1,v2,v3, vn1,vn2,vn3;
char type;
GLfloat x,y,z;
};
ОБЪЯСНЕНИЕ:
Вершина *v — указатель вершины
VectorNormal *vn — нормаль векторный указатель
Грани *f — грани указатель
в методе draw() он проходит через указатель структуры f и проверяет тип, если это цветовой тип, он добавляет glMaterialfv(..,. .,..); Если это не так, то он захватывает значение индекса граней и передает его через указатель структуры Vertex и указатель структуры Vector Normal.
Вот мой чайник

Вот как должен выглядеть чайник

Подробнее здесь: https://stackoverflow.com/questions/200 ... ith-opengl
Мобильная версия