int main(){ initializeScreen(SCREEN_WIDTH,SCREEN_HEIGHT); initializeOpenGl(SCREEN_WIDTH,SCREEN_HEIGHT); mesh *malha = NULL; malha = New_Mesh(); mesh malha2; malha2 = Load_Mesh(malha,"bun_zipper.off"); malha = &malha2; calculaDeltas(malha); Resize_Mesh(malha,3); centralizaMesh(malha); while(1){ processEvents(); Render_Mesh(malha,TRIANGLES); SDL_Delay(500); } Del_Mesh(malha); return 0; }
int Load_Mesh(Mesh *mesh, FILE *fp) { double x, y, z; int r, g, b, a; for (int i=0; i<mesh->nvertex; i++) { fscanf(fp, "%lf %lf %lf %d %d %d %d", &x,&y,&z,&r,&g,&b,&a); mesh->list_vertex[i].x = x; mesh->list_vertex[i].y = y; mesh->list_vertex[i].z = z; mesh->list_color[i].R = r; mesh->list_color[i].G = g; mesh->list_color[i].B = b; if (!i) { mesh->XMax = mesh->list_vertex[i].x; mesh->YMax = mesh->list_vertex[i].y; mesh->ZMax = mesh->list_vertex[i].z; mesh->XMin = mesh->list_vertex[i].x; mesh->YMin = mesh->list_vertex[i].y; mesh->ZMin = mesh->list_vertex[i].z; continue; } if (mesh->XMax < mesh->list_vertex[i].x) mesh->XMax = mesh->list_vertex[i].x; if (mesh->YMax < mesh->list_vertex[i].y) mesh->YMax = mesh->list_vertex[i].y; if (mesh->ZMax < mesh->list_vertex[i].z) mesh->ZMax = mesh->list_vertex[i].z; if (mesh->XMin > mesh->list_vertex[i].x) mesh->XMin = mesh->list_vertex[i].x; if (mesh->YMin > mesh->list_vertex[i].y) mesh->YMin = mesh->list_vertex[i].y; if (mesh->ZMin > mesh->list_vertex[i].z) mesh->ZMin = mesh->list_vertex[i].z; } Resize_Mesh(mesh); int indexPointA, indexPointB, indexPointC, trash; for (int i=0; i<mesh->nface; i++) { fscanf(fp, "%d %d %d %d", &trash, &indexPointA, &indexPointB, &indexPointC); mesh->list_faces[i].v1 = indexPointA; mesh->list_faces[i].v2 = indexPointB; mesh->list_faces[i].v3 = indexPointC; } }