Exemplo n.º 1
0
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;
}
Exemplo n.º 2
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;
	}
}