void Mesh::build() { GLuint points_vbo = create_vbo(vp, point_count * 3); GLuint normals_vbo = create_vbo(vn, point_count * 3); GLuint text_coord_vbo = create_vbo(vt, point_count * 2); vao = create_vao({ points_vbo, normals_vbo, text_coord_vbo }); model_uniform = Uniform::createUniformMatrix4fv("model", model.m); }
void startup(int argc, char* argv[]) { GLenum glew_init_result; create_window(argc, argv); glewExperimental = GL_TRUE; glew_init_result = glewInit(); check_gl_error(glew_init_result, ""); fprintf(stdout, "INFO: OpenGL Version: %s\n", glGetString(GL_VERSION)); rendering_program = create_shaders(); create_vao(); // glEnable(GL_CULL_FACE); // glCullFace(GL_BACK); }
void House::init(GLuint shader) { if (initialised) return; // init once shader_programme = shader; // Load objects std::vector<glm::vec3> vertices; std::vector<glm::vec2> uvs; std::vector<glm::vec3> normals; bool res; // body res = loadOBJ("assets/house.obj", vertices, uvs, normals); point_count = vertices.size(); assert(res); std::cout << "loaded assets/house.obj. point count: " << point_count << std::endl; vao = create_vao(vertices, uvs, normals); // Get uniforms locations M_loc = glGetUniformLocation (shader_programme, "M"); assert (M_loc > -1); V_loc = glGetUniformLocation (shader_programme, "V"); assert (V_loc > -1); P_loc = glGetUniformLocation (shader_programme, "P"); assert (P_loc > -1); light_pos_loc = glGetUniformLocation (shader_programme, "light_pos"); assert (light_pos_loc > -1); // Load textures texture = load_texture("assets/house_texture.png"); initialised = true; }