void opengl_before_loop(t_opengl *o) { o->m_projection = matrice_projection(60.0f, 1.0f, 100.0f); o->m_view = matrice_init(); o->m_view.mat[3][2] = 10; o->m_view.mat[3][1] = -3; o->m_model = matrice_init(); o->m_rotate = matrice_rotate_y(3); o->program = load_program(); o->m_view_location = glGetUniformLocation(o->program, "view"); o->m_model_location = glGetUniformLocation(o->program, "model"); o->m_projection_location = glGetUniformLocation(o->program, "projection"); glGenBuffers(1, &(o->vertex_buffer)); glBindBuffer(GL_ARRAY_BUFFER, o->vertex_buffer); glBufferData(GL_ARRAY_BUFFER, listvertex_size(o->listvertex) * sizeof(float), o->buffvertex, GL_STATIC_DRAW); glGenBuffers(1, &(o->element_buffer)); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, o->element_buffer); glBufferData(GL_ELEMENT_ARRAY_BUFFER, listfragment_size(o->listfragment) * sizeof(int), o->bufffragment, GL_STATIC_DRAW); glGenBuffers(1, &o->normal_buffer); glBindBuffer(GL_ARRAY_BUFFER, o->normal_buffer); glBufferData(GL_ARRAY_BUFFER, listvertex_size(o->listvertex) * sizeof(float), &o->buffnormal[0].x, GL_STATIC_DRAW); init_texture(o); }
t_mat matrice_rotate_z(float angle) { t_mat m; float theta; m = matrice_init(); theta = (angle * M_PI) / 180; m.mat[0][0] = cos(theta); m.mat[0][1] = sin(theta); m.mat[1][0] = -sin(theta); m.mat[2][2] = cos(theta); return (m); }
static int matrice_visit0(t_lem_env *env, int *i, int *j, int *k) { if (env->r.start == 0 || env->r.end == 0) return (ft_error(env, 1)); if (env->r.state == 1) { env->room = ft_strsplit(env->str, '\n'); room_swap(env); if (test_room(env) == 0) return (ft_error(env, 1)); matrice_init(env); matrice_zero(env); visit_init(env); } *i = 0; *j = -1; *k = -1; return (1); }