示例#1
0
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);
}
示例#2
0
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);
}
示例#3
0
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);
}