int objLoader::load(const char * filename) { int no_error = 1; no_error = parse_obj_scene(&data, filename); if(no_error) { populate(data); } return no_error; }
int objLoader::loadFromString(std::string objText) { int no_error = 1; no_error = parse_obj_scene(&data, objText); if(no_error) { populate(data); } return no_error; }
int objLoader:: load(char *filename) { int no_error = 1; no_error = parse_obj_scene(&data, filename); if(no_error) { this->vertexCount = data.vertex_count; this->normalCount = data.vertex_normal_count; this->textureCount = data.vertex_texture_count; this->faceCount = data.face_count; this->sphereCount = data.sphere_count; this->planeCount = data.plane_count; this->lightPointCount = data.light_point_count; this->lightDiscCount = data.light_disc_count; this->lightQuadCount = data.light_quad_count; this->materialCount = data.material_count; this->vertexList = data.vertex_list; this->normalList = data.vertex_normal_list; this->textureList = data.vertex_texture_list; this->faceList = data.face_list; this->sphereList = data.sphere_list; this->planeList = data.plane_list; this->lightPointList = data.light_point_list; this->lightDiscList = data.light_disc_list; this->lightQuadList = data.light_quad_list; this->materialList = data.material_list; this->camera = data.camera; } return no_error; }
void Initialize() { int k, i; int success; int vert, indx; /* Load OBJ models */ char* filename[15]; filename[0] = "models/ring.obj"; filename[1] = "models/bar_01.obj"; filename[2] = "models/bar_02.obj"; filename[3] = "models/bar_03.obj"; filename[4] = "models/bar_04.obj"; filename[5] = "models/cone.obj"; filename[6] = "models_n/ball_01.obj"; filename[7] = "models_n/ball_02.obj"; filename[8] = "models/cone_small.obj"; filename[9] = "models/rectangle_small.obj"; filename[10] = "models/rectangle_big.obj"; filename[11] = "models_n/elliptic_ring.obj"; filename[12] = "models/ellipse.obj"; filename[13] = "models_n/stand.obj"; filename[14] = "models_n/surrounding.obj"; for(k=0; k<model_count; ++k){ success = parse_obj_scene(&data[k], filename[k]); if(!success) printf("Could not load file. Exiting.\n"); } /* Copy mesh data from structs into appropriate arrays */ for(k=0; k<model_count; ++k){ vert = data[k].vertex_count; indx = data[k].face_count; vertex_buffer_data[k] = (GLfloat*) calloc (vert*3, sizeof(GLfloat)); index_buffer_data[k] = (GLushort*) calloc (indx*3, sizeof(GLushort)); /* Vertices */ for(i=0; i<vert; i++) { vertex_buffer_data[k][i*3] = (GLfloat)(*data[k].vertex_list[i]).e[0] ; vertex_buffer_data[k][i*3+1] = (GLfloat)(*data[k].vertex_list[i]).e[1]; vertex_buffer_data[k][i*3+2] = (GLfloat)(*data[k].vertex_list[i]).e[2]; } /* Indices */ for(i=0; i<indx; i++){ index_buffer_data[k][i*3] = (GLushort)(*data[k].face_list[i]).vertex_index[0]; index_buffer_data[k][i*3+1] = (GLushort)(*data[k].face_list[i]).vertex_index[1]; index_buffer_data[k][i*3+2] = (GLushort)(*data[k].face_list[i]).vertex_index[2]; } } /* Set background (clear) color to blue */ glClearColor(0.1, 0.2, 0.5, 0.0); /* Setup Vertex array object - INTEL FIX*/ GLuint VAO; glGenVertexArrays(1, &VAO); glBindVertexArray(VAO); /* Enable depth testing */ glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LESS); /* Setup vertex, color, and index buffer objects */ SetupDataBuffers(); /* Setup shaders and shader program */ CreateShaderProgram(); /* Initialize matrices */ SetIdentityMatrix(ProjectionMatrix); SetIdentityMatrix(ViewMatrix); // set all Model matrices for(k=0; k<model_count; ++k){ SetIdentityMatrix(ModelMatrix[k]); } /* Initialize animation matrices */ SetIdentityMatrix(RotationMatrixAnimX); SetIdentityMatrix(RotationMatrixAnimY); SetIdentityMatrix(RotationMatrixAnimZ); SetIdentityMatrix(RotationMatrixAnim); /* Set projection transform */ SetPerspectiveMatrix(fovy, aspect, nearPlane, farPlane, ProjectionMatrix); /* Set initial viewing transform */ SetTranslation(0.0, 0.0, camera_disp, ViewMatrix); // camera_disp == z coordinate of camera }